{"version":3,"file":"axiom-shared-components.mjs","sources":["../../../projects/axiom-shared-components/src/lib/address-autocomplete/address-autocomplete.component.ts","../../../projects/axiom-shared-components/src/lib/address-autocomplete/address-autocomplete.component.html","../../../projects/axiom-shared-components/src/lib/address-autocomplete/address-autocomplete.module.ts","../../../projects/axiom-shared-components/src/lib/axiom-shared-components.component.ts","../../../projects/axiom-shared-components/src/lib/enums/custom-calc-types.enum.ts","../../../projects/axiom-shared-components/src/lib/pipes/underline-to-space/underline-to-space.pipe.ts","../../../projects/axiom-shared-components/src/lib/utils/get-size-display-value.ts","../../../projects/axiom-shared-components/src/lib/utils/get-phone-masked.ts","../../../projects/axiom-shared-components/src/lib/pipes/size-label.pipe.ts","../../../projects/axiom-shared-components/src/lib/components/estimate-view/estimate-view.component.ts","../../../projects/axiom-shared-components/src/lib/components/estimate-view/estimate-view.component.html","../../../projects/axiom-shared-components/src/lib/enums/payment-terms.enum.ts","../../../projects/axiom-shared-components/src/lib/pipes/date-by-payment-terms/date-by-payment-terms.pipe.ts","../../../projects/axiom-shared-components/src/lib/components/invoice-view/invoice-view.component.ts","../../../projects/axiom-shared-components/src/lib/components/invoice-view/invoice-view.component.html","../../../projects/axiom-shared-components/src/lib/axiom-shared-components.module.ts","../../../projects/axiom-shared-components/src/lib/address-autocomplete/objects/formattedAddress.ts","../../../projects/axiom-shared-components/src/lib/address-autocomplete/objects/autocompleteEvent.ts","../../../projects/axiom-shared-components/src/public_api.ts","../../../projects/axiom-shared-components/src/axiom-shared-components.ts"],"sourcesContent":["import {\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Input,\r\n  OnChanges,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  SimpleChanges,\r\n  ViewChild,\r\n} from '@angular/core';\r\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime, takeUntil } from 'rxjs/operators';\r\n\r\nimport { AutocompleteEvent } from './objects';\r\n\r\n@Component({\r\n  selector: 'app-address-autocomplete',\r\n  templateUrl: './address-autocomplete.component.html',\r\n})\r\n\r\nexport class AddressAutocompleteComponent implements OnInit, OnChanges, OnDestroy {\r\n  @ViewChild('placeInput') placeInput: ElementRef;\r\n  @Input() existingAddress: string;\r\n  @Input() reset: number;\r\n  @Output() handleAddressChange = new EventEmitter<AutocompleteEvent>();\r\n\r\n  form: UntypedFormGroup;\r\n  isViewMode = false;\r\n  private ngUnsubscribe: Subject<boolean> = new Subject();\r\n\r\n  constructor(private fb: UntypedFormBuilder) {\r\n  }\r\n\r\n  // =============== Angular Lifecycle ===============\r\n\r\n  ngOnInit() {\r\n    this.formInit();\r\n    this.viewInputWatcher();\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    this.formInit();\r\n    if (changes.existingAddress && changes.existingAddress.currentValue) {\r\n      this.isViewMode = true;\r\n      this.form.patchValue({\r\n        address: changes.existingAddress.currentValue,\r\n      }, {emitEvent: false});\r\n    }\r\n    if (changes.reset && changes.reset.currentValue) {\r\n      this.isViewMode = false;\r\n      this.form.patchValue({\r\n        address: '',\r\n        fullAddress: '',\r\n      }, {emitEvent: false});\r\n    }\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.ngUnsubscribe.next(true);\r\n    this.ngUnsubscribe.complete();\r\n  }\r\n\r\n  // =============== Initialization ===============\r\n\r\n  private formInit(): void {\r\n    if (!this.form) {\r\n      this.form = this.fb.group({\r\n        address: '',\r\n        fullAddress: '',\r\n      });\r\n    }\r\n  }\r\n\r\n  // =============== UI Events ===============\r\n\r\n  public addressInputChange(inputValue: string): void {\r\n    const data = {\r\n      address: inputValue,\r\n      addressFull: '',\r\n      city: '',\r\n      state: '',\r\n      postalCode: '',\r\n    };\r\n    this.handleAddressChange.emit({data, isOnlyAddress: true});\r\n  }\r\n\r\n  public onAddressChange(event: google.maps.places.PlaceResult): void {\r\n    const [city, state, postalCode] = this.locationDetect(event.address_components);\r\n    const address = event.name;\r\n    const addressFull = event.formatted_address;\r\n    const data = {\r\n      address,\r\n      addressFull,\r\n      city,\r\n      state,\r\n      postalCode,\r\n    };\r\n    this.handleAddressChange.emit({data, isOnlyAddress: false});\r\n    this.isViewMode = true;\r\n    this.form.patchValue({\r\n      address: event.name,\r\n      fullAddress: '',\r\n    }, {emitEvent: false});\r\n  }\r\n\r\n  // =============== Helper functions ===============\r\n\r\n  private viewInputWatcher(): void {\r\n    this.form.get('address')\r\n      .valueChanges\r\n      .pipe(\r\n        debounceTime(100),\r\n        takeUntil(this.ngUnsubscribe),\r\n      )\r\n      .subscribe(i => {\r\n        if (!i) {\r\n          this.addressInputChange(i);\r\n        }\r\n        this.isViewMode = false;\r\n        this.form.patchValue({\r\n          fullAddress: i,\r\n        });\r\n        setTimeout(() => {\r\n          if (this.placeInput) {\r\n            this.placeInput.nativeElement.focus();\r\n          }\r\n        });\r\n      });\r\n  }\r\n\r\n  private locationDetect(data: google.maps.GeocoderAddressComponent[]): string[] {\r\n    let city = '';\r\n    let state = '';\r\n    let zip = '';\r\n    let postal_code_suffix = '';\r\n    for (const i of data) {\r\n      if (i.types.includes('locality')) {\r\n        city = i.long_name;\r\n      }\r\n      if (i.types.includes('administrative_area_level_1')) {\r\n        state = i.short_name;\r\n      }\r\n      if (i.types.includes('postal_code')) {\r\n        zip = i.long_name;\r\n      }\r\n      if (i.types.includes('postal_code_suffix')) {\r\n        postal_code_suffix = i.long_name;\r\n      }\r\n    }\r\n    const postalCode = postal_code_suffix && zip ?\r\n      (zip + '-' + postal_code_suffix) : (zip + postal_code_suffix);\r\n    return [city, state, postalCode];\r\n  }\r\n\r\n  // private setOptions() {\r\n  //   this.isExternalScriptLoading = false;\r\n  //   const longLat = new google.maps.LatLng(34.1425, -118.2551); // default bounds for Glendale, CA\r\n  //   const bounds: google.maps.LatLngBounds = new google.maps.LatLngBounds(longLat, longLat);\r\n  //   this.options = {\r\n  //     bounds,\r\n  //     componentRestrictions: {country: 'US'},\r\n  //     types: ['address'],\r\n  //   };\r\n  // }\r\n}\r\n","<form [formGroup]=\"form\">\r\n  <input *ngIf=\"isViewMode; else editMode\"\r\n         formControlName=\"address\"\r\n         type=\"text\">\r\n\r\n  <ng-template #editMode>\r\n    <input ngx-gp-autocomplete\r\n           formControlName=\"fullAddress\"\r\n           #placeInput\r\n           (keyup)=\"addressInputChange(placeInput.value)\"\r\n           (onAddressChange)=\"onAddressChange($event)\"/>\r\n  </ng-template>\r\n</form>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { NgxGpAutocompleteModule } from '@angular-magic/ngx-gp-autocomplete';\r\nimport { Loader } from \"@googlemaps/js-api-loader\";\r\n\r\nimport { AddressAutocompleteComponent } from './address-autocomplete.component';\r\n\r\n@NgModule({\r\n  declarations: [AddressAutocompleteComponent],\r\n  imports: [\r\n    CommonModule,\r\n    ReactiveFormsModule,\r\n    NgxGpAutocompleteModule,\r\n  ],\r\n  exports: [AddressAutocompleteComponent],\r\n  providers: [\r\n    {\r\n      provide: Loader,\r\n      useValue: new Loader({\r\n        apiKey: 'AIzaSyDahDcdVwd1vckXvugOywx_dGX8wnIEB4k',\r\n        libraries: ['places'],\r\n        language: 'en',\r\n\r\n      }),\r\n    },\r\n  ],\r\n})\r\n\r\nexport class AddressAutocompleteModule { }\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'lib-axiom-shared-components',\r\n  template: `\r\n    <p>\r\n      axiom-shared-components works!\r\n    </p>\r\n  `,\r\n  styles: [],\r\n})\r\nexport class AxiomSharedComponentsComponent {\r\n}\r\n","export enum CustomCalcTypes {\r\n  Text = 'text',\r\n  Number = 'number',\r\n  Quantity = 'quantity',\r\n  QuantityList = 'quantity_list',\r\n  List = 'list',\r\n  Turnaround = 'turnaround',\r\n  SizeNew = 'size_new',\r\n  Size3D = 'size_3D',\r\n  MaterialList = 'material_list',\r\n  PunchList = 'punch_list',\r\n  RadiusList = 'radius_list',\r\n  FoldingList = 'folding_list',\r\n  PerfList = 'perf_list',\r\n  ShapeList = 'shape_list',\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n  name: 'UnderlineToSpace',\r\n})\r\nexport class UnderlineToSpacePipe implements PipeTransform {\r\n\r\n  transform(value: string, args?: any): any {\r\n    if (typeof value !== 'string') {\r\n      return '';\r\n    }\r\n    return value.replace( /_/g, ' ');\r\n  }\r\n\r\n}\r\n","// =============== Helper functions ===============\r\n\r\nconst roundNum = (num: number, decimalCount = 3): number => {\r\n  const powed = Math.pow(10, decimalCount) || 1;\r\n  return Math.round(num * powed) / powed;\r\n};\r\n\r\nconst getSizeSymbol = (metric): string => {\r\n  return metric === 'ft' ? '\\'' : '\"';\r\n};\r\n\r\nconst roundSizeValue = (size, coefficient): number => {\r\n  return roundNum(parseFloat(size) / coefficient);\r\n};\r\n\r\n// =============== Label constructor ===============\r\nconst labelConstructor = (sizeArray: string[], metric: string, name: string, showLetters: boolean): string => {\r\n  const [width, height, depth] = sizeArray;\r\n  const coefficient = metric === 'ft' ? 12 : 1;\r\n  const symb = getSizeSymbol(metric);\r\n  const _width = roundSizeValue(width, coefficient);\r\n  const _height = roundSizeValue(height, coefficient);\r\n  const _depth =  roundSizeValue(depth, coefficient);\r\n  if (_depth) {\r\n    return `${_width}${symb} ${showLetters ? 'w' : ''} x ${_height}${symb} ${showLetters ? 'h' : ''} x ${_depth}${symb} ${showLetters ? 'd' : ''} ${name ? '(' + name + ')' : ''}`;\r\n  }\r\n  return `${_width}${symb} ${showLetters ? 'w' : ''} x ${_height}${symb} ${showLetters ? 'h' : ''} ${name ? '(' + name + ')' : ''}`;\r\n};\r\n\r\nexport function getSizeDisplayValue(label: string, metric: string, showLetters = true): string {\r\n  // regexp matches everything in brackets and returns it as a first element of array\r\n  const regex = /\\(([^)]+)\\)/;\r\n  const matches = label.match(regex);\r\n  let name = '';\r\n  if (matches && matches.length > 1) {\r\n    name = matches[1];\r\n    label = label.replace(regex, '');\r\n  }\r\n  const sizesArr = label.split('x');\r\n  if (sizesArr.length > 1 && metric) {\r\n    return labelConstructor(sizesArr, metric, name, showLetters);\r\n  }\r\n  return label;\r\n}\r\n","export function getPhoneMasked(value): string {\r\n  if (!value) {\r\n    return '';\r\n  }\r\n  return `${value.slice(0, 3)}-${value.slice(3, 6)}-${value.slice(6, 10)}`;\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { getSizeDisplayValue } from '../utils';\r\n\r\n@Pipe({\r\n  name: 'sizeLabel',\r\n})\r\nexport class SizeLabelPipe implements PipeTransform {\r\n\r\n  transform(label: string, metric: string, showLetters = true): any {\r\n    return getSizeDisplayValue(label, metric, showLetters);\r\n  }\r\n\r\n}\r\n","import { Component, Input, OnChanges, Inject } from '@angular/core';\r\nimport { CustomCalcTypes } from '../../enums/custom-calc-types.enum';\r\n\r\n@Component({\r\n  selector: 'lib-estimate-view',\r\n  templateUrl: './estimate-view.component.html',\r\n  styleUrls: ['../../styles/materialize-base.scss', './estimate-view.component.scss'],\r\n})\r\nexport class EstimateViewComponent implements OnChanges {\r\n\r\n  // eslint-disable-next-line @angular-eslint/no-input-rename\r\n  @Input('invoiceestimate') estimateObj: any;\r\n  @Input() replaceWithCustom = true;\r\n  @Input() showHighlightedOptions = false;\r\n  @Input() customBoldText = false;\r\n  @Input() showPrice = false;\r\n  @Input() alignCenter = true;\r\n  @Input() showShippingInfo = false;\r\n  @Input() showVariablePreview = false;\r\n  @Input() showDescription = true;\r\n  @Input() rowDescription = false;\r\n  @Input() showOnlyHandlingData = false;\r\n  @Input() showHiddenOptions = true;\r\n\r\n  public calcTypes = CustomCalcTypes;\r\n  public estOptionObj: any;\r\n  public optionsOrderForView: any;\r\n  public invoiceestimate: {estimate: any, estimate_options: any[]};\r\n  public AllSides: { [key: string]: { key: string, label: string }[] } = {\r\n    'fix': [\r\n      {key: 'side1', label: 'One Side'},\r\n      {key: 'side2', label: 'Two Side'},\r\n    ],\r\n    'bwfix': [\r\n      {key: '10', label: 'BW 1 sided'},\r\n      {key: '11', label: 'BW 2 sided'},\r\n      {key: '40', label: 'Full Color 1 sided'},\r\n      {key: '44', label: 'Full Color 2 sided'},\r\n      {key: '1PMS', label: '1 PMS Colors'},\r\n      {key: '2PMS', label: '2 PMS Colors'},\r\n    ],\r\n  };\r\n\r\n  private newEstimateReleaseDate: Date;\r\n  private createdInPrevRelease = false;\r\n\r\n  constructor(@Inject('config') public orgConfig) {\r\n    this.optionsOrderForView = {\r\n      simple: ['Paper Option', 'Paper Size', 'Print Sides', 'Print Bleed', 'turnaround', 'Turnaround'],\r\n      fix: ['paperid', 'Paper', 'sizeid', 'Size', 'sides', 'Side', 'turnaround', 'Turnaround'],\r\n      bwfix: ['paperid', 'Paper', 'sizeid', 'Size', 'sides', 'Side', 'turnaround', 'Turnaround'],\r\n      catalog: ['sizeid', 'Size', 'pages', 'Pages', 'paperid', 'Paper', 'turnaround', 'Turnaround'],\r\n    };\r\n  }\r\n\r\n  ngOnChanges(changes) {\r\n    if (changes && changes.estimateObj) {\r\n      this.invoiceestimate = null;\r\n      if (this.estimateObj) {\r\n        this.invoiceestimate = JSON.parse(JSON.stringify(this.estimateObj));\r\n      }\r\n      this.newEstimateReleaseDate = this.orgConfig.newEstimateReleaseDate;\r\n      this.createdInPrevRelease = new Date(this.invoiceestimate.estimate.created) < this.newEstimateReleaseDate;\r\n      this.createEstimateOptionsObject();\r\n      for (let p1 = 0; p1 < this.invoiceestimate['estimate_options'].length; p1++) {\r\n        if (this.invoiceestimate['estimate_options'][p1].estimate_option_name === 'paperid') {\r\n          this.invoiceestimate['estimate_options'][p1].estimate_option_name = 'Paper';\r\n        }\r\n        if (this.invoiceestimate['estimate_options'][p1].estimate_option_name === 'sizeid') {\r\n          this.invoiceestimate['estimate_options'][p1].estimate_option_name = 'Size';\r\n        }\r\n        if (this.invoiceestimate['estimate_options'][p1].estimate_option_name === 'sides') {\r\n          this.invoiceestimate['estimate_options'][p1].estimate_option_name = 'Sides';\r\n        }\r\n        if (this.invoiceestimate['estimate_options'][p1].estimate_option_name === 'coverid') {\r\n          this.invoiceestimate['estimate_options'][p1].estimate_option_name = 'Cover';\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  public createEstimateOptionsObject() {\r\n    this.estOptionObj = {};\r\n    // const type = this.invoiceestimate.estimate.productname.type;\r\n    this.invoiceestimate.estimate_options.forEach((item) => {\r\n      this.estOptionObj[item.estimate_option_name] = item;\r\n    });\r\n    if (this.createdInPrevRelease) {\r\n      this.createSizeOptions();\r\n    }\r\n  }\r\n\r\n  public createSizeOptions() {\r\n    // old sq.ft type handle\r\n    if (this.estOptionObj.width && this.estOptionObj.width_inc && this.estOptionObj.height && this.estOptionObj.height_inc) {\r\n      const sizeProps = ['width', 'width_inc', 'height', 'height_inc'];\r\n      const {width, height, width_inc, height_inc} = this.estOptionObj;\r\n      const sizeTxt = `${width.estimate_option_value}ft ${width_inc.estimate_option_value}in x ${height.estimate_option_value}ft ${height_inc.estimate_option_value}in`;\r\n      const newEstOptions = this.invoiceestimate.estimate_options.filter(i => !sizeProps.includes(i.estimate_option_name));\r\n      newEstOptions.unshift(this.generateOption('Size', sizeTxt));\r\n      this.invoiceestimate.estimate_options = newEstOptions;\r\n    }\r\n  }\r\n\r\n  public getCorrectName(str: string): string {\r\n    return !str ? '' : str.replace(/id$/, '');\r\n  }\r\n\r\n  getCorrectSide(val): string {\r\n    const type = this.invoiceestimate.estimate.productname.type.toLowerCase();\r\n    const foundElem = this.AllSides[type].find(item => item.key === val) || {label: ''};\r\n    return foundElem.label;\r\n  }\r\n\r\n  private generateOption(estimate_option_name: string, selected: any) {\r\n    return { estimate_option_name, estimate_option_value: selected, selected };\r\n  }\r\n\r\n}\r\n","<div class=\"row\" *ngIf=\"invoiceestimate && !showOnlyHandlingData\" >\r\n  <div *ngIf=\"invoiceestimate.estimate.estimate_productid>0\" class=\"width_100\">\r\n    <div class=\"no-margin\">\r\n      <div>\r\n        <div class=\"flex\"\r\n              *ngIf=\"invoiceestimate.estimate.productname!='N/A' && invoiceestimate.estimate.productname!='null'\">\r\n          <span class=\"prod_label col s4 ellips less-padding-right show_with_bold no-padding\" [class.right-align]=\"alignCenter\">Product: </span>\r\n          <span\r\n            class=\"prod_name col s8 ellips less-padding-left show_with_bold\">{{invoiceestimate.estimate.productname.title}}</span>\r\n        </div>\r\n      </div>\r\n      <div class=\"flex\"\r\n            *ngIf=\"invoiceestimate.estimate.productname=='N/A' || invoiceestimate.estimate.productname=='null'\">\r\n        <span class=\"prod_label col s4 ellips less-padding-right show_with_bold no-padding\" [class.right-align]=\"alignCenter\">Product: </span>\r\n        <span class=\"prod_name col s8 ellips less-padding-left show_with_bold\">Custom Estimate</span>\r\n      </div>\r\n\r\n      <ng-container\r\n        *ngIf='invoiceestimate.estimate.productname.type===\"square_fit\" || invoiceestimate.estimate.productname.type===\"custom\"'>\r\n        <ng-container *ngFor=\"let estimateoption of invoiceestimate.estimate_options\">\r\n          <div class=\"flex estimate_options\" *ngIf=\"!estimateoption.hidden || showHiddenOptions\">\r\n            <span class=\"opt_name col s4 ellips less-padding-right no-padding\" [class.right-align]=\"alignCenter\" [class.hidden_option_lbl]=\"estimateoption.hidden\">\r\n               {{estimateoption.estimate_option_name | titlecase | UnderlineToSpace}}:\r\n              <img *ngIf=\"estimateoption.hidden\" src=\"assets/svg/hidden-field.svg\" alt=\"Hidden\" class=\"hidden-icon\">\r\n            </span>\r\n            <span *ngIf=\"estimateoption.estimate_option_name === 'Size' && estimateoption.estimate_option_config; else otherOption\"\r\n                  [class.highlighted-option]=\"showHighlightedOptions && estimateoption.estimate_option_highlighted\"\r\n                  class=\"opt_value col s8 ellips less-padding-left\"\r\n                  [class.hidden_option_val]=\"estimateoption.hidden\">\r\n              <span class=\"optionPreviewImageWrapper\" *ngIf=\"showVariablePreview && estimateoption.selected_image\">\r\n                <img [src]=\"estimateoption.selected_image\" alt=\"\">\r\n              </span>\r\n              {{estimateoption.selected | sizeLabel: estimateoption.estimate_option_config.metric}}\r\n            </span>\r\n            <ng-template #otherOption>\r\n              <span class=\"opt_value col s8 ellips less-padding-left\"\r\n                    [class.hidden_option_val]=\"estimateoption.hidden\"\r\n                    [class.show_with_bold]=\"replaceWithCustom && customBoldText && estimateoption.estimate_option_custom_value\">\r\n                <ng-container *ngIf=\"estimateoption.variabletype === calcTypes.QuantityList; else otherTypes\">\r\n                  <span class=\"optionPreviewImageWrapper\" *ngIf=\"showVariablePreview && estimateoption.selected_image\">\r\n                    <img [src]=\"estimateoption.selected_image\" alt=\"\">\r\n                  </span>\r\n                  <span [class.highlighted-option]=\"showHighlightedOptions && estimateoption.estimate_option_highlighted\">\r\n                    {{estimateoption.estimate_option_custom_value || (estimateoption.selected || estimateoption.estimate_option_value)}}\r\n                  </span>\r\n                </ng-container>\r\n                <ng-template #otherTypes>\r\n                  <span class=\"optionPreviewImageWrapper\" *ngIf=\"showVariablePreview && estimateoption.selected_image\">\r\n                    <img [src]=\"estimateoption.selected_image\" alt=\"\">\r\n                  </span>\r\n                 <span [class.highlighted-option]=\"showHighlightedOptions && estimateoption.estimate_option_highlighted\"\r\n                       [class.line-through]=\"!replaceWithCustom && estimateoption.estimate_option_custom_value\">\r\n                    {{\r\n                      (replaceWithCustom && estimateoption.estimate_option_custom_value) ||\r\n                      (invoiceestimate.estimate.productname.type === \"custom\" ? (estimateoption.selected || estimateoption.estimate_option_value) : estimateoption.estimate_option_value)\r\n                    }}\r\n                 </span>\r\n                  <ng-container\r\n                    [ngTemplateOutlet]=\"customOption\"\r\n                    [ngTemplateOutletContext]=\"{value: estimateoption.estimate_option_custom_value}\">\r\n                  </ng-container>\r\n                </ng-template>\r\n              </span>\r\n            </ng-template>\r\n          </div>\r\n          <ng-container *ngIf=\"estimateoption.variabletype === calcTypes.QuantityList && estimateoption.estimate_option_config\">\r\n            <div class=\"flex estimate_options\" *ngFor=\"let version of estimateoption.estimate_option_config.versions; let i = index\">\r\n            <span class=\"opt_name col s4 ellips less-padding-right no-padding\" [class.right-align]=\"alignCenter\">\r\n               Version {{i + 1}}:\r\n            </span>\r\n              <span class=\"opt_value col s8 ellips less-padding-left\">\r\n                <span>{{version.version}} <span *ngIf=\"version.value\">- {{version.value}}</span></span>\r\n              </span>\r\n            </div>\r\n          </ng-container>\r\n        </ng-container>\r\n\r\n      </ng-container>\r\n\r\n      <div class=\"flex\" *ngIf=\"showPrice\">\r\n          <span class=\"price_label col s4 ellips less-padding-right show_with_bold no-padding\" [class.right-align]=\"alignCenter\">Price: </span>\r\n          <span class=\"price_value col s8 ellips less-padding-left show_with_bold\"> ${{(+invoiceestimate.estimate.new_total || +invoiceestimate.estimate.estimate_price) | number : '1.2-2'}}</span>\r\n      </div>\r\n      <ng-container *ngIf='showShippingInfo && invoiceestimate.estimate.shipping_method'>\r\n        <br>\r\n        <div class=\"flex\">\r\n          <span class=\"handling_method col s4 ellips less-padding-right no-padding\" [class.right-align]=\"alignCenter\">Handling Method: </span>\r\n          <div class=\"col s8 ellips less-padding-left relative-position\">\r\n              <p class=\"margin_0 shipping_method\">\r\n                <span class=\"ship_meth_lbl\">{{invoiceestimate.estimate.shipping_method | UnderlineToSpace | titlecase }}</span>\r\n                <span class=\"ship_price show_on_mobile\">${{(invoiceestimate.estimate.shipping_price || 0)  | number : '1.2-2'}}</span>\r\n              </p>\r\n              <ng-container *ngIf=\"invoiceestimate.estimate?.shipping_address as shipAddr\">\r\n                <ng-container *ngTemplateOutlet=\"address_block; context:{$implicit:shipAddr}\"></ng-container>\r\n                <span class=\"ship_price ship_price_left hide_on_mobile\">${{(invoiceestimate.estimate.shipping_price || 0)  | number : '1.2-2'}}</span>\r\n              </ng-container>\r\n          </div>\r\n          <span *ngIf=\"invoiceestimate.estimate?.shipping_address\" class=\"ship_price ship_price_right hide_on_mobile\">${{(invoiceestimate.estimate.shipping_price || 0) | number : '1.2-2'}}</span>\r\n        </div>\r\n        <div class=\"flex\" *ngIf=\"invoiceestimate.estimate.shipping_notes\">\r\n          <br>\r\n          <span class=\"ship_notes_lbl col s4 ellips less-padding-right no-padding\" [class.right-align]=\"alignCenter\">Shipping Notes: </span>\r\n          <p class=\"ship_notes_val prod_description col s8 less-padding-left\">{{invoiceestimate.estimate.shipping_notes}}</p>\r\n        </div>\r\n      </ng-container>\r\n      <div class=\"flex\" *ngIf='invoiceestimate.estimate.estimate_description && showDescription'>\r\n        <br>\r\n        <span class=\"desc_lbl col s4 ellips less-padding-right no-padding\"\r\n              [class.right-align]=\"alignCenter\"\r\n              [class.width_100]=\"rowDescription\">Description:\r\n        </span>\r\n        <span class=\"desc_val prod_description col s8 less-padding-left\"\r\n              [class.width_100]=\"rowDescription\">{{invoiceestimate.estimate.estimate_description}}\r\n        </span>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</div>\r\n\r\n<ng-template #customOption let-value='value'>\r\n  <span class=\"custom_value\" *ngIf=\"!replaceWithCustom && value\" [class.show_with_bold]=\"customBoldText\">\r\n      ({{value}})\r\n  </span>\r\n</ng-template>\r\n\r\n<ng-template #address_block let-shipObj>\r\n  <ng-container *ngIf=\"shipObj.id!==-1; else compName\">\r\n    <p class=\"ship_comp margin_0\"><span>{{shipObj.company_name}}</span></p>\r\n    <p class=\"ship_name margin_0\"><span>{{shipObj.name}}</span>&nbsp;<span>{{shipObj.last_name}}</span></p>\r\n  </ng-container>\r\n  <p class=\"ship_address margin_0\">\r\n    <span>{{shipObj.address}}</span>&nbsp;\r\n    <span class=\"ship_city\" *ngIf=\"shipObj.unit\">{{shipObj.unit}}</span>\r\n  </p>\r\n  <p class=\"margin_0\">\r\n    <span class=\"ship_city\">{{shipObj.city}} </span>\r\n    <span class=\"ship_state\">{{shipObj.state}} </span>\r\n    <span class=\"ship_zip\">{{shipObj.zip}} </span>\r\n  </p>\r\n  <ng-container *ngIf=\"shipObj.id!==-1; else compPhone\">\r\n    <p class=\"ship_phone margin_0\" *ngIf=\"shipObj.phone\">\r\n      +{{shipObj.country_code}} {{ shipObj.phone | mask: shipObj.phone_mask }}\r\n    </p>\r\n    <p class=\"ship_email margin_0\">{{shipObj.email}}</p>\r\n  </ng-container>\r\n  <ng-template #compPhone>\r\n    <p class=\"ship_phone margin_0\" *ngIf=\"invoiceestimate.estimate?.clientdetail.phone\">\r\n      +{{invoiceestimate.estimate?.clientdetail.country_code}} {{ invoiceestimate.estimate?.clientdetail.phone | mask: invoiceestimate.estimate?.clientdetail.phone_mask }}\r\n    </p>\r\n    <p class=\"ship_email margin_0\">{{invoiceestimate.estimate?.clientdetail.email}}</p>\r\n  </ng-template>\r\n\r\n  <ng-template #compName>\r\n    <p class=\"ship_comp margin_0\"><span>{{invoiceestimate.estimate?.clientdetail.company_name}}</span></p>\r\n    <p class=\"ship_name margin_0\">\r\n      <span>\r\n      {{invoiceestimate.estimate?.clientdetail.name}}&nbsp;{{invoiceestimate.estimate?.clientdetail.last_name}}\r\n    </span>\r\n    </p>\r\n  </ng-template>\r\n</ng-template>\r\n\r\n\r\n<div class=\"flex\" *ngIf=\"showOnlyHandlingData\">\r\n  <span class=\"handling_method col s4 ellips less-padding-right no-padding\" [class.right-align]=\"alignCenter\">Handling Method: </span>\r\n  <div class=\"col s8 ellips less-padding-left relative-position\" style=\"padding-right: unset\">\r\n      <p class=\"margin_0 shipping_method\">\r\n        <span class=\"ship_meth_lbl\">{{invoiceestimate.estimate.shipping_method | UnderlineToSpace | titlecase }}</span>\r\n        <span *ngIf=\"showPrice\" class=\"ship_price show_on_mobile\">${{(invoiceestimate.estimate.shipping_price || 0)  | number : '1.2-2'}}</span>\r\n      </p>\r\n      <ng-container *ngIf=\"invoiceestimate.estimate?.shipping_address as shipAddr\">\r\n        <ng-container *ngTemplateOutlet=\"address_block; context:{$implicit:shipAddr}\"></ng-container>\r\n        <!-- <span class=\"ship_price_left hide_on_mobile\">${{(invoiceestimate.estimate.shipping_price || 0)  | number : '1.2-2'}}</span> -->\r\n      </ng-container>\r\n  </div>\r\n  <span *ngIf=\"showPrice && invoiceestimate.estimate?.shipping_address\" class=\"ship_price ship_price_right hide_on_mobile\">\r\n    ${{(invoiceestimate.estimate.shipping_price || 0) | number : '1.2-2'}}\r\n  </span>\r\n</div>\r\n","export enum PaymentTerms {\r\n    EOD = 10,\r\n    NET_15 = 20,\r\n    NET_30 = 30,\r\n    NET_45 = 40,\r\n    NET_60 = 50,\r\n    DOR = 60,\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { PaymentTerms } from '../../enums/payment-terms.enum';\r\n\r\n@Pipe({\r\n  name: 'dateByPaymentTerms',\r\n})\r\nexport class DateByPaymentTermsPipe implements PipeTransform {\r\n\r\n  transform(value: any, args: string): any {\r\n    if (!value || !args) {\r\n      return '';\r\n    }\r\n    const date = new Date(value);\r\n    const clientPaymentTerm: number = PaymentTerms[args];\r\n    if (!date || !clientPaymentTerm) {\r\n      return '';\r\n    }\r\n    switch (clientPaymentTerm) {\r\n      case PaymentTerms.EOD:\r\n      case PaymentTerms.DOR:\r\n        break;\r\n      case PaymentTerms.NET_15:\r\n        date.setDate(date.getDate() + 15);\r\n        break;\r\n      case PaymentTerms.NET_30:\r\n        date.setDate(date.getDate() + 30);\r\n        break;\r\n      case PaymentTerms.NET_45:\r\n        date.setDate(date.getDate() + 45);\r\n        break;\r\n      case PaymentTerms.NET_60:\r\n        date.setDate(date.getDate() + 60);\r\n        break;\r\n    }\r\n    return date.toString();\r\n  }\r\n\r\n}\r\n","import { Component, Input, SimpleChanges, OnChanges, Output, EventEmitter, Inject } from '@angular/core';\r\nimport { DecimalPipe } from '@angular/common';\r\n\r\n@Component({\r\n  selector: 'lib-invoice-preview',\r\n  templateUrl: './invoice-view.component.html',\r\n  styleUrls: ['../../styles/materialize-base.scss', './invoice-view.component.scss'],\r\n})\r\nexport class InvoiceViewComponent implements OnChanges {\r\n\r\n  @Input() invoicedata: any;\r\n  @Input() showPayButton = false;\r\n  @Input() showHiddenOptions = false;\r\n  @Output() invoicePayClicked = new EventEmitter();\r\n\r\n  public invoice: any;\r\n  public estimates: any;\r\n  public additionalcharge: any;\r\n  public sales_tax_amount;\r\n  public totalAmount = 0;\r\n  public amountDue = 0;\r\n  public customerContacts: any[] = null;\r\n  public billToClient: any = null;\r\n  private client: any;\r\n\r\n  constructor(\r\n    private decimalPipe: DecimalPipe,\r\n    @Inject('config') public orgConfig,\r\n  ) {\r\n  }\r\n\r\n\r\n  ngOnChanges(changes: SimpleChanges) {\r\n    if (changes && changes.invoicedata) {\r\n      this.invoice = this.invoicedata.invoice[0];\r\n      this.client = this.invoicedata.client[0];\r\n      this.customerContacts = this.invoicedata.customerusers || [];\r\n      this.estimates = this.invoicedata.estimates;\r\n      this.additionalcharge = this.invoicedata.invoiceadditionalcharge || [];\r\n      this.sales_tax_amount = +this.invoice.invoice_new_tax_value || 0;\r\n      this.totalAmount = +this.invoice.invoice_subtotal_payment + this.sales_tax_amount + +this.invoice.invoice_additionalvalue -\r\n                          +this.invoice.invoice_discount - +this.invoice.invoice_promo_code_discount_value;\r\n      this.amountDue = this.totalAmount - +this.invoice.invoice_total_payment_done;\r\n      this.findBillToContact();\r\n    }\r\n  }\r\n\r\n  public hasBalance(balance) {\r\n    return parseFloat(this.correctFloatNum(balance)) > 0;\r\n  }\r\n\r\n  public onInvoicePayClicked() {\r\n    this.invoicePayClicked.emit(parseFloat(this.correctFloatNum(this.decimalPipe.transform(this.amountDue, '1.2-2'))));\r\n  }\r\n\r\n  public correctDate(date: string) {\r\n    return date.replace(/-/g, '/');\r\n  }\r\n\r\n  public getNumber(str) {\r\n    if (isNaN(str)) {\r\n      return 0;\r\n    }\r\n    return +str;\r\n  }\r\n\r\n  private findBillToContact() {\r\n    if (!this.invoice.invoice_client_user_id) {\r\n      return;\r\n    }\r\n\r\n    if (this.invoice.invoice_client_user_id === -1) {\r\n      this.billToClient = {\r\n        email: this.client.email,\r\n        name: this.client.name,\r\n        last_name: this.client.last_name,\r\n        company_name: this.client.company_name,\r\n        phone: this.client.phone,\r\n        country_code: this.client.country_code,\r\n        phone_mask: this.client.phone_mask,\r\n        ...(this.client.company_address || {}),\r\n      };\r\n    } else {\r\n      this.billToClient = this.customerContacts.find(item => item.id === this.invoice.invoice_client_user_id);\r\n    }\r\n  }\r\n\r\n  private correctFloatNum(str: string): string {\r\n    return str.replace(/,/g, '');\r\n  }\r\n\r\n\r\n}\r\n","<div class=\"row\" *ngIf=\"invoicedata\">\r\n  <div class=\"col s12 padding_0\">\r\n    <div class=\"invoiceViewWrapper row\">\r\n\r\n      <div class=\"addressHeader\">\r\n        <div class=\"col m8 s5\">\r\n          <img class=\"ax-logo\" src=\"assets/img/logo.png\" [alt]=\"orgConfig.shortName\">\r\n        </div>\r\n        <div class=\"col m4 s7\">\r\n          <p class=\"margin_0 axiom-title bold blue-text\">{{orgConfig.officialName}}</p>\r\n          <p class=\"margin_0 d-flex\"><strong class=\"bold width-100\">\r\n            <span class=\"hide_on_mobile\">ADDRESS: </span>\r\n            <span class=\"show_on_mobile\">A: </span>\r\n          </strong>\r\n            <span>{{orgConfig.addressConfig.address}}</span>&nbsp;\r\n            <span *ngIf=\"orgConfig.addressConfig.unit\">{{orgConfig.addressConfig.unit}}</span></p>\r\n          <p class=\"address\">{{orgConfig.addressConfig.city}}, {{orgConfig.addressConfig.state}} {{orgConfig.addressConfig.zip}}</p>\r\n          <p class=\"margin_0 d-flex\"><strong class=\"bold width-100\">\r\n            <span class=\"hide_on_mobile\">TELEPHONE: </span>\r\n            <span class=\"show_on_mobile\">T: </span>\r\n          </strong>\r\n            <span>\r\n              +{{ orgConfig.country_code }} {{orgConfig.phone | mask: orgConfig.phone_mask }}\r\n            </span>\r\n          </p>\r\n          <p class=\"margin_0 d-flex\" *ngIf=\"invoice?.manager?.email\"><strong class=\"bold width-100\">\r\n            <span class=\"hide_on_mobile\">EMAIL: </span>\r\n            <span class=\"show_on_mobile\">E: </span>\r\n          </strong><span>{{invoice.manager.email}}</span></p>\r\n        </div>\r\n\r\n      </div><!-- @END ADDRESS HEADER-->\r\n      <div class=\"bg_gradient\"></div>\r\n      <div class=\"contentSection white clearfix\">\r\n        <div class=\"sendToInfo\">\r\n          <div class=\"col m8 s6 bold\" *ngIf=\"billToClient\">\r\n            <p class=\"margin_0 blue-text\" style=\"font-size: 22px;\">Bill To:</p>\r\n            <div class=\"client_info\">\r\n              <p class=\"margin_0 company_name\">{{billToClient.company_name}}</p>\r\n              <p class=\"margin_0 client_name\">{{billToClient.name}}&nbsp;{{billToClient.last_name}}</p>\r\n              <p class=\"margin_0\">\r\n                <span>{{billToClient?.address}}</span>&nbsp;\r\n                <span *ngIf=\"billToClient?.unit\">{{billToClient?.unit}}</span>\r\n              </p>\r\n              <p class=\"margin_0\">\r\n                {{billToClient?.city}} {{billToClient?.state}} {{billToClient?.zip}}\r\n              </p>\r\n              <p class=\"margin_0\">+{{ billToClient.country_code }} {{billToClient.phone | mask: billToClient.phone_mask }}</p>\r\n              <p class=\"margin_0\">{{billToClient.email}}</p>\r\n            </div>\r\n          </div>\r\n          <div class=\"col m4 s6 right-align\">\r\n            <ul class=\"infoInvoice margin_0\">\r\n\r\n              <li class=\"clearfix\" *ngIf=\"invoice\">\r\n                <span class=\"left\">Date</span>\r\n                <span class=\"right bold\">{{correctDate(invoice.invoice_creation_date) | date}}</span>\r\n              </li>\r\n              <li class=\"clearfix\">\r\n                <span class=\"left\">Invoice</span>\r\n                <span class=\"right bold\" *ngIf=\"invoice\">INV{{invoice.id}}</span>\r\n              </li>\r\n              <li class=\"clearfix\">\r\n                <span class=\"left\">Balance</span>\r\n                <span\r\n                  class=\"right bold\">${{ amountDue | number : '1.2-2' }}</span>\r\n              </li>\r\n              <li class=\"clearfix\" *ngIf=\"invoice.PO_number\">\r\n                <span class=\"left\">PO#</span>\r\n                <span class=\"right bold\" *ngIf=\"invoice\">{{invoice.PO_number}}</span>\r\n              </li>\r\n            </ul>\r\n            <button *ngIf=\"showPayButton && hasBalance(amountDue | number : '1.2-2')\"\r\n                  class=\"pay_invoice_btn margin_top_10\" (click)=\"onInvoicePayClicked()\">PAY INVOICE</button>\r\n          </div>\r\n\r\n        </div><!-- @END SEND INFO-->\r\n        <div class=\"clear50\"></div>\r\n        <div class=\"orderList\">\r\n          <!-- desktop view start-->\r\n          <div class=\"bordered hide_on_mobile relative-position\">\r\n            <div>\r\n              <div class=\"bg_gradient alignment padding-5\" style=\"height: 53px;margin-bottom: unset;\">\r\n                <div class=\"bold\" style=\"padding-right: 100px\">DESCRIPTION</div>\r\n                <div class=\"bold\">PRICE</div>\r\n              </div>\r\n            </div>\r\n\r\n            <div style=\"padding: 5px;\">\r\n              <div *ngFor=\"let invoiceestimate of estimates; let ind = index\" class=\"border-bottom-color\">\r\n              <div class=\"alignment\">\r\n                <div class=\"vertical-baseline bold\">\r\n                  <span>E{{invoiceestimate.estimate.id}}</span>\r\n                  <span class=\"estimate_name\">{{invoiceestimate.estimate.estimate_name}}</span>\r\n                </div>\r\n                <div class=\"estimate-price\">\r\n                  ${{(invoiceestimate.estimate.new_total || invoiceestimate.estimate.estimate_price) | number : '1.2-2'}}\r\n                </div>\r\n              </div>\r\n              <div class=\"alignment \" style=\"align-items: unset;\">\r\n                <div class=\"width-100-percent\">\r\n                  <lib-estimate-view\r\n                    [showDescription]=\"false\"\r\n                    [alignCenter]=\"false\"\r\n                    [invoiceestimate]='invoiceestimate'\r\n                    [showHiddenOptions]=\"showHiddenOptions\">\r\n                  </lib-estimate-view>\r\n                </div>\r\n                <div class=\"width-100-percent\">\r\n                  <div class=\"flex\" *ngIf='invoiceestimate.estimate.estimate_description'>\r\n\r\n                    <span class=\"prod_description col s12 less-padding-left\">\r\n                      <span class=\"less-padding-right no-padding description-label\">Description:</span>\r\n                      <span>\r\n                        {{invoiceestimate.estimate.estimate_description}}</span>\r\n                      </span>\r\n                  </div>\r\n                </div>\r\n              </div>\r\n              <div class=\"alignment\" style=\"align-items: unset;position: relative;\">\r\n                <div class=\"width-100-percent\">\r\n                  <lib-estimate-view [showOnlyHandlingData]=\"true\" [showPrice]=\"true\" [alignCenter]=\"false\" [invoiceestimate]='invoiceestimate'></lib-estimate-view>\r\n                </div>\r\n                <div class=\"width-100-percent\">\r\n                  <div class=\"flex\" *ngIf=\"invoiceestimate.estimate.shipping_notes\">\r\n                    <span class=\"col s12 less-padding-right\">Shipping Notes: </span>\r\n                    <span class=\"ship_notes prod_description col s9 less-padding-left\">{{invoiceestimate.estimate.shipping_notes}}</span>\r\n                  </div>\r\n                </div>\r\n              </div>\r\n            </div>\r\n              <div *ngFor=\"let addsetg of additionalcharge\" class=\"border-bottom-color\">\r\n                <div class=\"alignment\" style=\"align-items: unset;\">\r\n                  <div class=\"width-100-percent\">\r\n                    <div class=\"row\">\r\n                      <div class=\"col s4 less-padding-right no-padding\">Additional:</div>\r\n                      <div class=\"col s8 no-padding\">\r\n                        <div class=\"row margin_0\">\r\n                          <div class=\"col s4\">{{addsetg.invoice_additional_title}}</div>\r\n                          <div class=\"col s8\">{{addsetg.invoice_additional_for_estimate}}</div>\r\n                        </div>\r\n                      </div>\r\n                    </div>\r\n                  </div>\r\n                  <div class=\"width-100-percent\">\r\n                    <div class=\"row\" style=\"display: flex;margin-bottom: unset;\" *ngIf=\"addsetg.invoice_additional_description\">\r\n                      <div class=\"col s3 less-padding-right no-padding\" style=\"margin: unset;\">Description:</div>\r\n                      <div *ngIf=\"addsetg.invoice_additional_description\" class=\"col s6\">\r\n                        <p class=\"prod_description\">{{addsetg.invoice_additional_description}}</p>\r\n                      </div>\r\n                      <div *ngIf=\"addsetg.invoice_additional_price\" class=\"col s3 right-align\" style=\"padding: unset;\">${{addsetg.invoice_additional_price}}</div>\r\n                    </div>\r\n                  </div>\r\n                </div>\r\n              </div>\r\n            </div>\r\n          </div>\r\n          <!-- desktop view end-->\r\n\r\n          <!-- mobile view start-->\r\n          <div class=\"order_table show_on_mobile\">\r\n            <div>\r\n              <div class=\"bg_gradient alignment\" style=\"height: 53px;margin-bottom: unset;padding: 5px 10px;\">\r\n                <div class=\"bold\" style=\"padding-right: 100px\">DESCRIPTION</div>\r\n                <div class=\"bold\">PRICE</div>\r\n              </div>\r\n            </div>\r\n\r\n            <div style=\"padding: 5px;\">\r\n              <div *ngFor=\"let invoiceestimate of estimates; let ind = index\" class=\"border-bottom-color\">\r\n              <div class=\"alignment\" style=\"padding: 5px 0px;\">\r\n                <div class=\"vertical-baseline bold\">\r\n                  <span>E{{invoiceestimate.estimate.id}}</span>\r\n                  <span class=\"estimate_name\">{{invoiceestimate.estimate.estimate_name}}</span>\r\n                </div>\r\n                <div class=\"estimate-price\">\r\n                  ${{(invoiceestimate.estimate.new_total || invoiceestimate.estimate.estimate_price) | number : '1.2-2'}}\r\n                </div>\r\n              </div>\r\n              <div class=\"alignment\" style=\"align-items: unset;flex-flow: column;\">\r\n                <div class=\"width-100-percent\">\r\n\r\n                  <lib-estimate-view\r\n                    [showDescription]=\"false\"\r\n                    [alignCenter]=\"false\"\r\n                    [invoiceestimate]='invoiceestimate'\r\n                    [showHiddenOptions]=\"showHiddenOptions\">\r\n                  </lib-estimate-view>\r\n                </div>\r\n                <div class=\"width-100-percent\">\r\n                  <div class=\"flex\" *ngIf='invoiceestimate.estimate.estimate_description'>\r\n                    <span class=\"col s4 less-padding-right no-padding\">Description: </span>\r\n                    <span\r\n                      class=\"prod_description col s8 less-padding-left\">{{invoiceestimate.estimate.estimate_description}}</span>\r\n                  </div>\r\n                </div>\r\n              </div>\r\n              <div class=\"alignment\" style=\"align-items: unset;flex-flow: column;\">\r\n                <div class=\"width-100-percent\">\r\n                  <lib-estimate-view [showOnlyHandlingData]=\"true\" [showPrice]=\"true\" [alignCenter]=\"false\" [invoiceestimate]='invoiceestimate'></lib-estimate-view>\r\n                </div>\r\n                <div class=\"width-100-percent\">\r\n                  <div class=\"flex\" *ngIf=\"invoiceestimate.estimate.shipping_notes\">\r\n                    <br>\r\n                    <span class=\"col s4 less-padding-right no-padding\">Shipping Notes: </span>\r\n                    <p class=\"prod_description col s8 less-padding-left\">{{invoiceestimate.estimate.shipping_notes}}</p>\r\n                  </div>\r\n                </div>\r\n              </div>\r\n            </div>\r\n            <div class=\"table_item\" *ngFor=\"let addsetg of additionalcharge\">\r\n              <div class=\"row\">\r\n                <div class=\"table_item_header bg_gradient\">\r\n                  <div class=\"col s9\">ADDITIONAL</div>\r\n                  <div class=\"col s3\">AMOUNT</div>\r\n                </div>\r\n                <div class=\"est_info\">\r\n                  <div class=\"col s9\">{{addsetg.invoice_additional_title}}</div>\r\n                  <div class=\"col s3\">${{addsetg.invoice_additional_price}}</div>\r\n                </div>\r\n                <div class=\"est_info\">\r\n                  <div class=\"col s12\">{{addsetg.invoice_additional_for_estimate}}</div>\r\n                </div>\r\n              </div>\r\n              <div class=\"table_item_content\">\r\n                <div class=\"table_content_head\">ADDITIONAL DESCRIPTION</div>\r\n                <div class=\"est_lib_wrap\">\r\n                    <p class=\"prod_description\">{{addsetg.invoice_additional_description}}</p>\r\n                </div>\r\n              </div>\r\n            </div>\r\n          </div>\r\n\r\n          </div>\r\n          <!-- mobile view end-->\r\n\r\n          <!-- @END ORDER LIST -->\r\n\r\n        <div class=\"totalSection\">\r\n          <div class=\"col m7 s12 payment_terms\">\r\n            <ul>\r\n              <li class=\"col m12 s12\">\r\n                <span>Payment terms: </span>\r\n                <span style=\"padding-right: 10%;\" class=\"bold right\">{{invoice.clientdetail?.payment_terms}}</span>\r\n              </li>\r\n              <li class=\"col m12 s12\">\r\n                <span>Payment due: </span>\r\n                <span style=\"padding-right: 10%;\" class=\"bold pink-text right\">{{correctDate(invoice.invoice_creation_date) | dateByPaymentTerms: invoice.clientdetail?.payment_terms | date}}</span>\r\n              </li>\r\n            </ul>\r\n          </div>\r\n          <div class=\"col m5 s12 right-align\">\r\n            <ul class=\"totalList\">\r\n\r\n              <li class=\"clearfix\">\r\n                <span class=\"left\">Sub Total : </span>\r\n                <span class=\"right bold\">${{ getNumber(invoice.invoice_subtotal_payment) | number : '1.2-2' }}</span>\r\n              </li>\r\n              <li *ngIf=\"getNumber(invoice.invoice_discount)\" class=\"clearfix\">\r\n                <span class=\"left\">Discount :</span>\r\n                <span class=\"right bold\">${{ getNumber(invoice.invoice_discount) | number : '1.2-2' }}</span>\r\n              </li>\r\n              <li *ngIf=\"getNumber(invoice.invoice_promo_code_discount_value)\" class=\"clearfix\">\r\n                <span class=\"left\">Promo Code : <i class=\"promocode\">{{invoice?.promocode.promo_code}}</i></span>\r\n                <span class=\"right bold\">-${{ getNumber(invoice.invoice_promo_code_discount_value) | number : '1.2-2' }}</span>\r\n              </li>\r\n              <li class=\"clearfix\">\r\n                <span class=\"left\">Sales Tax :</span>\r\n                <span class=\"right bold\">  ${{getNumber(sales_tax_amount) | number : '1.2-2'}}</span>\r\n              </li>\r\n\r\n              <li class=\"clearfix\">\r\n                <span class=\"left\">Additional Cost : </span>\r\n                <span class=\"right bold\">${{getNumber(invoice.invoice_additionalvalue) | number : '1.2-2'}}</span>\r\n              </li>\r\n              <li class=\"clearfix\">\r\n                <span class=\"left bold\">TOTAL: </span>\r\n                <span class=\"right bold blue-text\">\r\n                  ${{ getNumber(totalAmount) | number : '1.2-2' }}</span>\r\n              </li>\r\n              <li class=\"clearfix\">\r\n                <span class=\"left\">Paid : </span>\r\n                <span class=\"right bold\">${{ getNumber(invoice.invoice_total_payment_done) | number : '1.2-2' }}</span>\r\n              </li>\r\n\r\n              <li class=\"clearfix\">\r\n                <span class=\"left bold\">AMOUNT DUE :  </span>\r\n                <span class=\"right bold pink-text\">\r\n                      ${{ amountDue | number : '1.2-2' }}</span>\r\n              </li>\r\n            </ul>\r\n            <div class=\"margin_top_10 margin_bottom_10 proceed\" *ngIf=\"showPayButton && hasBalance(amountDue | number : '1.2-2')\">\r\n              <div class=\"pay_label\">\r\n                Proceed to Payment\r\n              </div>\r\n              <button (click)=\"onInvoicePayClicked()\" class=\"pay_invoice_btn\">PAY INVOICE</button>\r\n            </div>\r\n          </div>\r\n        </div>\r\n\r\n      </div>\r\n\r\n    </div>\r\n  </div>\r\n\r\n</div>\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule, DecimalPipe } from '@angular/common';\r\nimport { AddressAutocompleteModule } from './address-autocomplete/address-autocomplete.module';\r\n\r\nimport { AxiomSharedComponentsComponent } from './axiom-shared-components.component';\r\nimport { InvoiceViewComponent } from './components/invoice-view/invoice-view.component';\r\nimport { EstimateViewComponent } from './components/estimate-view/estimate-view.component';\r\nimport { UnderlineToSpacePipe } from './pipes/underline-to-space/underline-to-space.pipe';\r\nimport { DateByPaymentTermsPipe } from './pipes/date-by-payment-terms/date-by-payment-terms.pipe';\r\nimport { SizeLabelPipe } from './pipes/size-label.pipe';\r\nimport { NgxMaskDirective, NgxMaskPipe } from 'ngx-mask';\r\n\r\n\r\n@NgModule({\r\n  declarations: [\r\n    AxiomSharedComponentsComponent,\r\n    InvoiceViewComponent,\r\n    EstimateViewComponent,\r\n    UnderlineToSpacePipe,\r\n    DateByPaymentTermsPipe,\r\n    SizeLabelPipe,\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    AddressAutocompleteModule,\r\n    NgxMaskDirective,\r\n    NgxMaskPipe,\r\n  ],\r\n  exports: [\r\n    InvoiceViewComponent,\r\n    EstimateViewComponent,\r\n    DateByPaymentTermsPipe,\r\n    SizeLabelPipe,\r\n    AddressAutocompleteModule,\r\n  ],\r\n  providers: [\r\n    DecimalPipe,\r\n    NgxMaskPipe,\r\n  ],\r\n})\r\nexport class AxiomSharedComponentsModule {\r\n  static forRoot(config): ModuleWithProviders<AxiomSharedComponentsModule> {\r\n    return {\r\n      ngModule: AxiomSharedComponentsModule,\r\n      providers: [DecimalPipe, {provide: 'config', useValue: config}],\r\n    };\r\n  }\r\n}\r\n","export class FormattedAddress {\r\n  address: string;\r\n  addressFull: string;\r\n  city: string;\r\n  state: string;\r\n  postalCode: string;\r\n}\r\n","import { FormattedAddress } from './formattedAddress';\r\n\r\nexport class AutocompleteEvent {\r\n  data: FormattedAddress;\r\n  isOnlyAddress: boolean;\r\n}\r\n","/*\r\n * Public API Surface of axiom-shared-components\r\n */\r\n\r\nexport * from './lib/axiom-shared-components.module';\r\nexport * from './lib/address-autocomplete/objects';\r\nexport * from './lib/enums/custom-calc-types.enum';\r\nexport * from './lib/utils';\r\nexport * from './lib/pipes/size-label.pipe';\r\nexport * from './lib/components/invoice-view/invoice-view.component';\r\nexport * from './lib/components/estimate-view/estimate-view.component';\r\nexport * from './lib/pipes/date-by-payment-terms/date-by-payment-terms.pipe';\r\nexport * from './lib/address-autocomplete/address-autocomplete.module';\r\nexport * from './lib/address-autocomplete/address-autocomplete.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2","i1","i3.UnderlineToSpacePipe","i4.SizeLabelPipe","i2.EstimateViewComponent","i3","i4.DateByPaymentTermsPipe"],"mappings":"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"}