@senior-gestao-empresarial/erpx-components 3.3.2 → 3.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/senior-gestao-empresarial-erpx-components.umd.js +28 -3
- package/bundles/senior-gestao-empresarial-erpx-components.umd.js.map +1 -1
- package/bundles/senior-gestao-empresarial-erpx-components.umd.min.js +1 -1
- package/bundles/senior-gestao-empresarial-erpx-components.umd.min.js.map +1 -1
- package/components/tributos/erp-tributos.types.d.ts +2 -0
- package/esm2015/components/tributos/erp-tributos.component.js +28 -4
- package/esm2015/components/tributos/erp-tributos.types.js +2 -1
- package/esm5/components/tributos/erp-tributos.component.js +28 -4
- package/esm5/components/tributos/erp-tributos.types.js +2 -1
- package/fesm2015/senior-gestao-empresarial-erpx-components.js +28 -3
- package/fesm2015/senior-gestao-empresarial-erpx-components.js.map +1 -1
- package/fesm5/senior-gestao-empresarial-erpx-components.js +28 -3
- package/fesm5/senior-gestao-empresarial-erpx-components.js.map +1 -1
- package/package.json +1 -1
- package/senior-gestao-empresarial-erpx-components.metadata.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"senior-gestao-empresarial-erpx-components.js","sources":["ng://@senior-gestao-empresarial/erpx-components/components/breadcrumb/breadcrumb.component.ts","ng://@senior-gestao-empresarial/erpx-components/components/breadcrumb/breadcrumb.module.ts","ng://@senior-gestao-empresarial/erpx-components/components/resumo/erp-resumo.service.ts","ng://@senior-gestao-empresarial/erpx-components/components/resumo/erp-resumo.component.ts","ng://@senior-gestao-empresarial/erpx-components/components/resumo/erp-resumo.module.ts","ng://@senior-gestao-empresarial/erpx-components/components/utils/breakpoints.ts","ng://@senior-gestao-empresarial/erpx-components/components/utils/export-utils.ts","ng://@senior-gestao-empresarial/erpx-components/components/utils/utils.ts","ng://@senior-gestao-empresarial/erpx-components/components/focus/focus.service.ts","ng://@senior-gestao-empresarial/erpx-components/components/tributos/erp-tributos.service.ts","ng://@senior-gestao-empresarial/erpx-components/components/tributos/erp-tributos.types.ts","ng://@senior-gestao-empresarial/erpx-components/components/tributos/erp-tributos.component.ts","ng://@senior-gestao-empresarial/erpx-components/components/tributos/erp-tributos.module.ts","ng://@senior-gestao-empresarial/erpx-components/core/entities/entity-service.ts","ng://@senior-gestao-empresarial/erpx-components/core/entities/quantidade-disponivel-demanda/quantidade-disponivel-demanda.service.ts","ng://@senior-gestao-empresarial/erpx-components/core/entities/quantidade-disponivel-demanda/quantidade-disponivel-demanda.module.ts","ng://@senior-gestao-empresarial/erpx-components/core/enums/enum-tipo-documento-parametros.ts","ng://@senior-gestao-empresarial/erpx-components/components/lote-serie/erp-lote-serie.service.ts","ng://@senior-gestao-empresarial/erpx-components/components/lote-serie/erp-lote-serie.component.ts","ng://@senior-gestao-empresarial/erpx-components/components/lote-serie/erp-lote-serie.module.ts","ng://@senior-gestao-empresarial/erpx-components/senior-gestao-empresarial-erpx-components.ts"],"sourcesContent":["import { Component, Input, OnDestroy } from '@angular/core';\nimport { ActivatedRoute, NavigationEnd, PRIMARY_OUTLET, Router } from '@angular/router';\nimport { MenuItem } from 'primeng/api';\nimport { Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: `s-breadcrumb`,\n templateUrl: `./breadcrumb.component.html`,\n})\nexport class BreadcrumbComponent implements OnDestroy {\n @Input() public homeUrl: string;\n public home: MenuItem;\n public items: MenuItem[];\n public title: string;\n\n private ngUnsubscribe = new Subject<any>();\n\n constructor(private activatedRoute: ActivatedRoute, private router: Router) {\n this.router.events\n .pipe(takeUntil(this.ngUnsubscribe), filter(event => event instanceof NavigationEnd))\n .subscribe(() => this.onNavigationEnd());\n }\n\n private onNavigationEnd() {\n const currentRoute = this.activatedRoute.root;\n const validRoutes: ActivatedRoute[] = this.getValidChildren(currentRoute);\n\n this.title = this.getCurrentTitle(validRoutes);\n this.home = this.getCurrentHome(validRoutes);\n this.items = this.getCurrentItems(validRoutes);\n }\n\n private getValidChildren(route: ActivatedRoute): ActivatedRoute[] {\n const valid = route.routeConfig && route.routeConfig.path && route.routeConfig.component && route.outlet === PRIMARY_OUTLET;\n return route.children.reduce((validRoutes, child) => [...validRoutes, ...this.getValidChildren(child)], valid ? [route] : []);\n }\n\n private getCurrentTitle(routes: ActivatedRoute[]) {\n const last = routes[routes.length - 1];\n if (last && last.routeConfig) return this.getTitle(last);\n }\n\n private getCurrentHome(routes: ActivatedRoute[]) {\n let home;\n if (this.homeUrl) home = { url: this.homeUrl, icon: 'far fa-home' };\n else if (routes.length) home = { ...this.getMenuItem(routes[0], routes.length === 1), icon: 'far fa-home' };\n\n return home;\n }\n\n private getCurrentItems(routes: ActivatedRoute[]) {\n if (!routes.length) return;\n const items = this.homeUrl ? routes : routes.slice(1);\n if (items.length) return items.map((route, i) => this.getMenuItem(route, i === routes.length - 1));\n }\n\n private getMenuItem(route: ActivatedRoute, disabled = false) {\n const label = this.getTitle(route);\n const routes = route.pathFromRoot;\n const routerLink = routes\n .slice(0, routes.indexOf(route) + 1)\n .reduce((result, item) => [...result, ...item.snapshot.url.map(url => url.path)], ['/']);\n\n return {\n label,\n routerLink,\n queryParams: route.snapshot.queryParams,\n routerLinkActiveOptions: { exact: true },\n disabled,\n };\n }\n\n private getTitle(route: ActivatedRoute) {\n const { snapshot, routeConfig } = route;\n const title = snapshot.data.routeTitle;\n if (!title) throw new Error(`No routeTitle defined for the route /${routeConfig.path}`);\n return title;\n }\n\n public ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BreadcrumbModule as PrimeBreadcrumbModule } from 'primeng/breadcrumb';\n\nimport { BreadcrumbComponent } from './breadcrumb.component';\nimport { RouterModule } from '@angular/router';\n\n@NgModule({\n imports: [CommonModule, PrimeBreadcrumbModule, RouterModule],\n declarations: [BreadcrumbComponent],\n exports: [BreadcrumbComponent, RouterModule],\n})\nexport class BreadcrumbModule {}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ErpResumoService {\n\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'erp-resumo[summary]',\n templateUrl: './erp-resumo.component.html',\n styleUrls: ['./erp-resumo.component.scss']\n})\nexport class ErpResumoComponent {\n\n @Input() summary: Summary;\n\n public getProp(obj: any, path: any) {\n return path.split('.').reduce((result: any, prop: any) => (result[prop] === undefined ? ' ' : result[prop]), obj);\n }\n\n}\n\nexport interface Summary {\n total?: SummaryItem;\n sections: Array<SummarySectionItem>;\n}\n\nexport interface SummarySectionItem {\n title?: string;\n items: Array<Array<SummaryItem>>;\n subtotal?: SummaryItem;\n}\n\nexport interface SummaryItem {\n label?: string;\n value?: string | number;\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ErpResumoService } from './erp-resumo.service';\nimport { ErpResumoComponent } from './erp-resumo.component';\n\n@NgModule({\n declarations: [\n ErpResumoComponent\n ],\n imports: [\n CommonModule\n ],\n providers: [\n ErpResumoService\n ],\n exports: [\n ErpResumoComponent\n ]\n})\nexport class ErpResumoModule { }\n","export const Breakpoints = {\n SM_MIN: 0,\n SM_MAX: 640,\n MD_MIN: 641,\n MD_MAX: 1024,\n LG_MIN: 1025,\n LG_MAX: 1440,\n XL_MIN: 1441,\n XL_MAX: Infinity,\n};\n","export class ExportUtils {\n constructor() {\n throw new Error('Classe não deve ser instanciada.');\n }\n\n public static exportCSV(\n columns: Partial<any>[] = [],\n data: any[] = [],\n csvSeparator: string = ';',\n documentName: string = 'download'\n ) {\n let csv = '\\ufeff';\n\n columns.filter((column: any) => column.exportable && column.field).forEach((column: any, i: number) => {\n csv += `\"${column.header || column.field}\"`;\n\n if (i < columns.length - 1) csv += csvSeparator;\n });\n\n data.forEach((record: any) => {\n csv += '\\n';\n\n columns.filter((column: any) => column.exportable && column.field).forEach((column: any, i: number) => {\n let cellData = this.resolveFieldData(record, column.field);\n\n if (cellData != null) cellData = String(cellData).replace(/\"/g, `\"\"`);\n else cellData = '';\n\n csv += `\"${cellData}\"`;\n\n if (i < columns.length - 1) csv += csvSeparator;\n });\n });\n\n const blob = new Blob([csv], {\n type: 'text/csv;charset=utf-8;',\n });\n\n if (window.navigator.msSaveOrOpenBlob) navigator.msSaveOrOpenBlob(blob, documentName + '.csv');\n else {\n const link = document.createElement('a');\n link.style.display = 'none';\n document.body.appendChild(link);\n if (link.download !== undefined) {\n link.setAttribute('href', URL.createObjectURL(blob));\n link.setAttribute('download', documentName + '.csv');\n link.click();\n } else {\n csv = 'data:text/csv;charset=utf-8,' + csv;\n window.open(encodeURI(csv));\n }\n document.body.removeChild(link);\n }\n }\n\n private static resolveFieldData(data: any, field: any): any {\n if (data && field) {\n if (this.isFunction(field)) return field(data);\n else if (field.indexOf('.') == -1) return data[field];\n else {\n const fields: string[] = field.split('.');\n let value = data;\n for (let i = 0, len = fields.length; i < len; ++i) {\n if (value == null) {\n return null;\n }\n value = value[fields[i]];\n }\n return value;\n }\n } else return null;\n }\n\n private static isFunction(obj: any) {\n return !!(obj && obj.constructor && obj.call && obj.apply);\n }\n}\n","export const isEmpty = (target: any) => {\n if (target === null || target === \"\" || target === undefined) {\n return true;\n }\n if (Array.isArray(target) && !target.length) {\n return true;\n }\n if (Object.keys(target).filter((key) => target[key] !== null || target[key] !== \"\" || target[key] !== undefined).length === 0) {\n return true;\n }\n return false;\n};\n\nexport const isNotEmpty = (value: any) => {\n return !isEmpty(value);\n};\n","import { Injectable } from '@angular/core';\n@Injectable()\nexport class FocusService {\n public focusFirstInvalidInput() {\n const invalidFields = Array.from(document.getElementsByClassName('ng-invalid'));\n const firstField: any = invalidFields.find((f: any) => ((f.nodeName !== 'FORM') && (f.nodeName !== 'DIV')));\n if (firstField.nodeName === 'P-CALENDAR') {\n const firstInputId = firstField.getAttribute('ng-reflect-input-id');\n const firstInvalidInput = document.getElementById(firstInputId);\n if (firstInvalidInput) firstInvalidInput.focus();\n } else if (firstField.nodeName === 'S-LOOKUP') {\n const nestedInput = this.getNestedInput(firstField.firstElementChild);\n if (nestedInput) nestedInput.focus();\n } else firstField.focus();\n }\n\n private getNestedInput(element: any): any {\n if (element.nodeName === 'INPUT') {\n return element;\n }\n return this.getNestedInput(element.firstElementChild);\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Identifiers } from '@angular/compiler';\nimport { Injectable } from '@angular/core';\nimport { MessageService } from 'primeng';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class ErpTributosService {\n constructor(protected http: HttpClient, protected messageService: MessageService) { }\n\n public getFrontend(params: Identifiers): Observable<any> {\n const url = `platform/frontend_updater/queries/getFrontend`;\n return this.http.post<any>(url, params).pipe();\n }\n}\n","import { FormGroup } from \"@angular/forms\";\nimport { FormField } from \"@seniorsistemas/angular-components\";\n\nexport interface CampoTributo {\n campo: EnumCampoTributo;\n}\n\nexport interface Tributo {\n\n tipoImposto: EnumTipoTributo;\n id?: string;\n baseCalculo?: number;\n aliquota?: number;\n valor?: number;\n valorIsentas?: number;\n valorOutras?: number;\n percentualReducao?: number;\n percentualMargemValorAdicionado: number;\n percentualDiferimento?: number;\n aliquotaInterna?: number;\n}\n\nexport interface Sugestao {\n [nomeCampo: string]: any;\n tipoTributo: EnumTipoTributo;\n}\n\nexport enum EnumCampoTributo {\n BaseCalculo = 'base_calculo',\n Aliquota = 'aliquota',\n Valor = 'valor',\n SituacaoTributaria = 'situacao_tributaria',\n ValorIsentas = 'valor_isentas',\n ValorOutras = 'valor_outras',\n EnquadramentoIpi = 'enquadramento_ipi',\n PercentualReducao = 'percentual_reducao',\n PercentualMargemValorAdicionado = 'percentual_mva',\n PercentualDiferimento = 'percentual_diferimento',\n PercentualSuportadoConsumidorFinal = 'percentual_suportado_consumidor_final',\n ValorRecolhidoPeloSubstituto = 'valor_recolhido_pelo_substituto',\n ValorIcmsStRetido = 'valor_icms_retido',\n MotivoDesoneracaoIcms = 'motivo_desoneracao_icms',\n Origem = 'origem',\n ModalidadeBC = 'modalidade_bc',\n AliquotaInterna = 'aliquota_interna',\n AliquotaInternaDestino = 'aliquotaInternaDestino',\n NaturezaReceita = 'natureza_receita',\n Observacao = 'observacao',\n ValorDeducao = 'valor_deducao',\n CodigoArrecadacao = 'codigo_arrecadacao',\n ImpostoNaoRecuperado = 'imposto_nao_recuperado',\n baseCalculoCredito = 'baseCalculoCredito',\n CodigoTributacao = 'codigo_tributacao',\n RegimeTributarioPisCofins = 'regime_tributario_pis_cofins',\n IndicativoAquisicao = 'indicativo_aquisicao'\n}\n\nexport enum EnumGrupoTributo {\n ICMS = 'icms',\n ICMS_ST = 'icms_st',\n IPI = 'ipi',\n PIS = 'pis',\n ISS = 'iss',\n COFINS = 'cofins',\n RETENCOES = 'retencoes',\n IMPORTACOES = 'importacoes',\n CIDE_TECNOLOGIA = 'cide_tecnologia',\n FUNRURAL = 'funrural'\n}\n\nexport enum EnumTipoTributo {\n PIS_FATURAMENTO = 'PIS_FATURAMENTO',\n PIS_RECUPERAR = 'PIS_RECUPERAR',\n PIS_DEVOLVIDO = 'PIS_DEVOLVIDO',\n COFINS_RECUPERAR = 'COFINS_RECUPERAR',\n COFINS_DEVOLVIDO = 'COFINS_DEVOLVIDO',\n IPI = 'IPI',\n IPI_CREDITADO = 'IPI_CREDITADO',\n IPI_PRESUMIDO = 'IPI_PRESUMIDO',\n IPI_DEVOLVIDO = 'IPI_DEVOLVIDO',\n IPI_OUTRAS_DESPESAS = 'IPI_OUTRAS_DESPESAS',\n ISS = 'ISS',\n ISS_RETIDO = 'ISS_RETIDO',\n IMPOSTO_IMPORTACAO = 'IMPOSTO_IMPORTACAO',\n PIS_RECUPERAR_IMPORTACAO = 'PIS_RECUPERAR_IMPORTACAO',\n COFINS_RECUPERAR_IMPORTACAO = 'COFINS_RECUPERAR_IMPORTACAO',\n PIS_RETIDO = 'PIS_RETIDO',\n COFINS_RETIDO = 'COFINS_RETIDO',\n CSLL = 'CSLL',\n IRRF = 'IRRF',\n INSS = 'INSS',\n INSS_PATRONAL = 'INSS_PATRONAL',\n ICMS_ST = 'ICMS_ST',\n FCP_ST = 'FCP_ST',\n ICMS_COBRADO_ANTERIORMENTE_ST = 'ICMS_COBRADO_ANTERIORMENTE_ST',\n FCP_COBRADO_ANTERIORMENTE_ST = 'FCP_COBRADO_ANTERIORMENTE_ST',\n ICMS = 'ICMS',\n ICMS_FUTURO = 'ICMS_FUTURO',\n ICMS_SIMPLES = 'ICMS_SIMPLES',\n ICMS_CREDITADO = 'ICMS_CREDITADO',\n FCP = 'FCP',\n ICMS_DIFERIDO = 'ICMS_DIFERIDO',\n ICMS_DESONERADO = 'ICMS_DESONERADO',\n DIFAL = 'DIFAL',\n ICMS_UF_DESTINO = 'ICMS_UF_DESTINO',\n FCP_UF_DESTINO = 'FCP_UF_DESTINO',\n ICMS_ST_SOLIDARIO = 'ICMS_ST_SOLIDARIO',\n ICMS_ST_FUTURO = 'ICMS_ST_FUTURO',\n ICMS_ST_RETIDO_ANT = 'ICMS_ST_RETIDO_ANT',\n FCP_ST_RETIDO_ANT = 'FCP_ST_RETIDO_ANT',\n ICMS_EFETIVO = 'ICMS_EFETIVO',\n PIS = 'PIS',\n COFINS = 'COFINS',\n CIDE_TECNOLOGIA = 'CIDE_TECNOLOGIA',\n DIFAL_DEVOLVIDO = 'DIFAL_DEVOLVIDO',\n ICMS_UF_DESTINO_DEVOLVIDO = 'ICMS_UF_DESTINO_DEVOLVIDO',\n FCP_UF_DESTINO_DEVOLVIDO = 'FCP_UF_DESTINO_DEVOLVIDO',\n IMPOSTO_NAO_RECUPERADO = 'IMPOSTO_NAO_RECUPERADO',\n BASE_CALCULO_CREDITO = 'BASE_CALCULO_CREDITO',\n PERCENTUAL_REDUCAO = 'PERCENTUAL_REDUCAO',\n FUNRURAL_INSS = 'FUNRURAL_INSS',\n FUNRURAL_RAT = 'FUNRURAL_RAT',\n FUNRURAL_SENAR = 'FUNRURAL_SENAR',\n FUNRURAL_TOTAL = 'FUNRURAL_TOTAL'\n}\n\nexport enum EnumTipoDocumento {\n NF_ENTRADA = 'nf_entrada',\n NF_SAIDA = 'nf_saida',\n PEDIDO_COMPRA = 'pedido_compra',\n PEDIDO_VENDA = 'pedido_venda',\n NF_SAIDA_CONTROLADORIA = 'nf_saida_controladoria',\n NF_ENTRADA_CONTROLADORIA = 'nf_entrada_controladoria'\n}\n\nexport enum EnumModBc {\n\n V0 = 'V0',\n V1 = 'V1',\n V2 = 'V2',\n V3 = 'V3'\n}\n\nexport enum EnumOriMer {\n\n V0 = 'V0',\n V1 = 'V1',\n V2 = 'V2',\n V3 = 'V3',\n V4 = 'V4',\n V5 = 'V5',\n V6 = 'V6',\n V7 = 'V7',\n V8 = 'V8'\n}\n\nexport enum EnumMotDes {\n\n V0 = 'V0',\n V1 = 'V1',\n V2 = 'V2',\n V3 = 'V3',\n V4 = 'V4',\n V5 = 'V5',\n V6 = 'V6',\n V7 = 'V7',\n V8 = 'V8',\n V9 = 'V9',\n V10 = 'V10',\n V11 = 'V11',\n V12 = 'V12',\n V16 = 'V16',\n V90 = 'V90'\n}\n\nexport enum EnumTipoItem {\n\n Produto = 'Produto',\n Servico = 'Servico',\n}\n\nexport enum EnumTipImpCst {\n PIS_COFINS = 'PIS_COFINS',\n IPI = 'IPI',\n ICMS = 'ICMS',\n ISS = 'ISS',\n}\n\nexport enum EnumTipOpe {\n VSAIDA = 'VSAIDA',\n VENTRADA = 'VENTRADA',\n VAMBOS = 'VAMBOS'\n}\n\nexport enum enumTipCredRecup {\n V1 = 'V1',\n V2 = 'V2',\n V3 = 'V3',\n V4 = 'V4',\n V5 = 'V5',\n V6 = 'V6',\n V7 = 'V7',\n V8 = 'V8',\n V9 = 'V9',\n V10 = 'V10',\n V11 = 'V11',\n V12 = 'V12',\n V13 = 'V13',\n V14 = 'V14',\n V15 = 'V15',\n V16 = 'V16',\n V17 = 'V17',\n V18 = 'V18',\n}\n\nexport interface Item {\n formField: FormField[];\n formGroup: FormGroup;\n label: string;\n name: string;\n}\n\nexport enum EnumRegimeTributarioPisCofins {\n CUMULATIVO = 'CUMULATIVO',\n NAO_CUMULATIVO = 'NAO_CUMULATIVO'\n}\n\n// \"Indicativo de aquisição para o FUNRURAL\"\nexport enum EnumFunruralIndicativoAquisicao {\n // \"Aquisição de produção de produtor rural pessoa fÃsica ou segurado especial em geral.\"\n V1 = 'V1',\n // \"Aquisição de produção de produtor rural pessoa fÃsica ou segurado especial em geral por entidade executora do Programa de Aquisição de Alimentos PAA.\"\n V2 = 'V2',\n // \"Aquisição de produção de produtor rural pessoa jurÃdica por entidade executora do PAA.\"\n V3 = 'V3',\n // \"Aquisição de produção de produtor rural pessoa fÃsica ou segurado especial em geral Produção isenta (Lei 13.606/2018).\"\n V4 = 'V4',\n // \"Aquisição de produção de produtor rural pessoa fÃsica ou segurado especial em geral por entidade executora do PAA Produção isenta (Lei 13.606/2018).\"\n V5 = 'V5',\n // \"Aquisição de produção de produtor rural pessoa jurÃdica por entidade executora do PAA Produção isenta (Lei 13.606/2018).\"\n V6 = 'V6',\n // \"Aquisição de produção de produtor rural pessoa fÃsica ou segurado especial para fins de exportação.\"\n V7 = 'V7'\n}\n","import { Identifiers } from '@angular/compiler';\nimport { ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n CplTriNotaSaidaNaturezaReceitaPisCofinsLookup,\n E027EqiLookup,\n E027StrLookup,\n EnumLogicalOperator,\n LookupRequestValidator,\n LookupValidationUtils\n} from '@senior-gestao-empresarial/angular-components';\nimport { FieldType, FormField, LookupField } from '@seniorsistemas/angular-components';\nimport { MenuItem, MessageService } from 'primeng/api';\nimport { Observable, of, Subject } from 'rxjs';\nimport { switchMap, takeUntil } from 'rxjs/operators';\nimport { ErpTributosService } from './erp-tributos.service';\nimport { FeatureToggleService } from '@seniorsistemas/platform-components';\nimport { GTagService } from '@seniorsistemas/platform-utils';\nimport {\n CampoTributo,\n EnumCampoTributo,\n EnumFunruralIndicativoAquisicao,\n EnumGrupoTributo,\n EnumModBc,\n EnumMotDes,\n EnumOriMer,\n EnumRegimeTributarioPisCofins,\n enumTipCredRecup,\n EnumTipImpCst,\n EnumTipoDocumento,\n EnumTipoItem,\n EnumTipOpe,\n EnumTipoTributo,\n Item,\n Sugestao\n} from './erp-tributos.types';\n\n@Component({\n selector: 'erp-tributos',\n templateUrl: './erp-tributos.component.html'\n})\nexport class ErpTributosComponent implements OnInit, OnChanges, OnDestroy {\n\n public grupos: any[] = [];\n public tributosValue: any[] = [];\n public reload = true;\n public indexAccordion: number[] = [];\n public prefixLabel: string;\n\n isLoading = false;\n\n private menuItemPis = false;\n private menuItemCofins = false;\n private menuItemIpi = false;\n private menuItemIss = false;\n private menuItemImportacoes = false;\n private menuItemRetencoes = false;\n private menuItemRetencoesFunrural = false;\n private menuItemIcms = false;\n private menuItemCideTecnologia = false;\n private requiredItemCideTecnologia = false;\n private requiredItemPisRecuperar = false;\n private requiredItemPisDevolvido = false;\n private requiredItemCofinsRecuperar = false;\n private requiredItemCofinsDevolvido = false;\n private requiredItemIpi = false;\n private requiredItemIpiCreditado = false;\n private requiredItemIpiDevolvido = false;\n private requiredItemIpiPresumido = false;\n private requiredItemIpiOutrasDespesas = false;\n private requiredItemIss = false;\n private requiredItemIssRetido = false;\n private requiredItemImpostoImportacao = false;\n private requiredItemPisRecuperarImportacao = false;\n private requiredItemCofinsRecuperarImportacao = false;\n private requiredItemPisRetido = false;\n private requiredItemCofinsRetido = false;\n private requiredItemCsllRetido = false;\n private requiredItemIrrfRetido = false;\n private requiredItemInssRetido = false;\n private requiredItemInssPatronal = false;\n private requiredItemIcmsSt = false;\n private requiredItemFcpSt = false;\n private requiredItemIcmsCobradoAnteriormente = false;\n private requiredItemFcpCobradoAnteriormente = false;\n private requiredItemIcms = false;\n private requiredItemIcmsEfetivamenteCreditado = false;\n private requiredItemFcp = false;\n private requiredItemIcmsDiferido = false;\n private requiredItemIcmsDesonerado = false;\n private requiredItemDiferencialAlicota = false;\n private requiredItemPisFaturemento = false;\n private requiredItemCofinsFaturemento = false;\n private requiredItemFcpUfDestino = false;\n private requiredItemIcmsUfDestino = false;\n private requiredSituacaoTributaria = false;\n private requiredIcmsFuturo = false;\n private requiredIcmsSimples = false;\n private requiredDifalDevolvido = false;\n private requiredICMS_UF_Destino_Devolvido = false;\n private requiredFCP_UF_Destino_Devolvido = false;\n private requiredItemPisFaturamento = false;\n private requiredImpostoNaoRecuperado = false;\n private requiredbaseCalculoCredito = true;\n private requiredPercentualReducao = true;\n private requiredIcmsStSolidario = false;\n private requiredIcmsStRetidoAnt = false;\n private requiredFcpStReditoAnt = false;\n\n private ngUnsubscribe = new Subject();\n\n @Input() sugestoes!: Sugestao[];\n @Input() camposBloqueados = false;\n @Input() devolvido = false;\n @Input() documento: EnumTipoDocumento;\n @Input() tipoItem: EnumTipoItem;\n @Input() habilitaOpcaoCide = false;\n @Output() tributosChange = new EventEmitter<any>();\n @Input()\n get tributos() {\n return this.tributosValue;\n }\n @Input() dominio?: string;\n @Input() servico?: string;\n @Input() currencyLocaleOptions?: any = { currencySymbol: '', decimalSeparator: ',', thousandsSeparator: '.' };\n @Input() idsTaxesMemoriaCalculo?: [{ idParametro: string, idParametroEstado: string, idPerfilTributario: string, tipoTributo: EnumTipoTributo, fromScreen?: string, idParametroSt: string }];\n @Input() permissionMemoriaCalculo?: boolean;\n\n set tributos(val) {\n this.tributosValue = val;\n }\n\n constructor(\n private formBuilder: FormBuilder,\n private changeDetector: ChangeDetectorRef,\n private translate: TranslateService,\n private e027StrLookup: E027StrLookup,\n private e027eqiLookup: E027EqiLookup,\n private naturezaReceitaLookup: CplTriNotaSaidaNaturezaReceitaPisCofinsLookup,\n private lookupUtils: LookupValidationUtils,\n protected messageService: MessageService,\n private erpTributosService: ErpTributosService,\n private gtag: GTagService,\n private readonly featureToggleService: FeatureToggleService\n ) { }\n\n ngOnInit() {\n\n this.grupos = [];\n this.menuItemPis = false;\n this.menuItemCofins = false;\n this.menuItemIpi = false;\n this.menuItemIss = false;\n this.menuItemImportacoes = false;\n this.menuItemRetencoes = false;\n this.menuItemIcms = false;\n this.menuItemCideTecnologia = false;\n\n this.dominio = this.dominio ? this.dominio : 'erpx_cpl_imp';\n this.servico = this.servico ? this.servico : 'cadastros';\n\n this.prefixLabel = `${this.dominio}.${this.servico}`\n if (Object.keys(this.currencyLocaleOptions).length == 0)\n this.currencyLocaleOptions = { currencySymbol: '', decimalSeparator: ',', thousandsSeparator: '.' };\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const variaveisAlteradas = Object.keys(changes);\n if (!variaveisAlteradas.includes('sugestoes') || variaveisAlteradas.length > 1) {\n this.clearVariables();\n this.getActions();\n if ((this.tributosValue == undefined) || (this.tributosValue.length == 0)) {\n this.grupos = [];\n this.tributosValue = [];\n } else if (this.reload) {\n this.grupos = [];\n this.createTributos();\n this.setTributos();\n } else {\n this.reload = true;\n }\n\n if (this.camposBloqueados == true) {\n this.readOnlyTributos();\n }\n }\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n this.lookupUtils.resetStoredKeys();\n }\n\n public memoriaCalculo(imposto: any) {\n let tributo = this.idsTaxesMemoriaCalculo.find((element: any) => { return element.tipoTributo == imposto.name });\n this.abrirWindowUrlMemoriaCalculo(tributo);\n }\n\n private makeUrlWindow(params: Identifiers, tributo?: any) {\n this.erpTributosService.getFrontend(params).subscribe((response: any) => {\n window.open(`${response.frontends[0].embeddedURL}`, '_blank');\n })\n\n this.gtag.sendButtonClick('Botão acessar parametrização' , {impostos: tributo.tipoTributo})\n }\n\n public disabledButton(imposto: EnumTipoTributo) {\n return this.idsTaxesMemoriaCalculo == undefined || !this.idsTaxesMemoriaCalculo.find((element: any) => {\n return element.tipoTributo == imposto && element.idParametro != undefined;\n });\n }\n\n public hideButton(imposto: any) {\n switch (imposto) {\n case EnumTipoTributo.IPI_DEVOLVIDO:\n return false;\n default:\n return true;\n }\n }\n\n private abrirWindowUrlMemoriaCalculo(tributo: any) {\n if (!tributo?.idPerfilTributario && !tributo?.idParametro) {\n this.messageService.add({\n severity: 'error',\n summary: this.translate.instant('error_memoria_calculo_message_title'),\n detail: this.translate.instant('error_memoria_calculo_message_content')\n });\n return;\n };\n const params = {\n identifiers: [{\n \"domainName\": \"erpx_cpl_imp\",\n \"serviceName\": \"impostos\",\n \"appName\": \"erpx-cpl-imp-impostos\",\n \"route\": `${this.validaTela(tributo)}`\n }]\n };\n\n this.makeUrlWindow(params, tributo);\n }\n\n validaTela(taxes: any) {\n if (this.isStTaxes(taxes.tipoTributo)) {\n if(taxes.idParametroEstado){\n return `icmsst/${taxes.idParametroSt}/icmsst-parametros/${taxes.idParametroEstado}?perfilTributarioId=${taxes.idPerfilTributario}¶metroImpostosId=${taxes.idParametro}`\n } else {\n return `icmsst/${taxes.idParametro}/icmsst-parametros/${taxes.idParametroSt}`\n }\n }\n return `perfil-tributario/${taxes.idPerfilTributario}/parametrizacao-impostos/${this.getTributoPai(taxes.tipoTributo)}/${taxes.idParametro}`\n }\n\n private isStTaxes(taxes: any) {\n switch (taxes) {\n case EnumTipoTributo.ICMS_ST:\n case EnumTipoTributo.ICMS_ST_FUTURO:\n case EnumTipoTributo.ICMS_ST_RETIDO_ANT:\n case EnumTipoTributo.ICMS_ST_SOLIDARIO:\n case EnumTipoTributo.ICMS_COBRADO_ANTERIORMENTE_ST:\n return true;\n default:\n break;\n }\n }\n\n private getTributoPai(tributo: EnumTipoTributo) {\n switch (tributo) {\n case EnumTipoTributo.PIS_RECUPERAR:\n case EnumTipoTributo.PIS_DEVOLVIDO:\n case EnumTipoTributo.PIS_RECUPERAR_IMPORTACAO:\n case EnumTipoTributo.PIS:\n return 'pis';\n case EnumTipoTributo.COFINS_RECUPERAR_IMPORTACAO:\n case EnumTipoTributo.COFINS_DEVOLVIDO:\n case EnumTipoTributo.COFINS_RECUPERAR:\n case EnumTipoTributo.COFINS:\n return 'cofins';\n case EnumTipoTributo.IPI:\n case EnumTipoTributo.IPI_CREDITADO:\n case EnumTipoTributo.IPI_PRESUMIDO:\n case EnumTipoTributo.IPI_DEVOLVIDO:\n case EnumTipoTributo.IPI_OUTRAS_DESPESAS:\n return 'ipi';\n case EnumTipoTributo.ISS:\n case EnumTipoTributo.ISS_RETIDO:\n return 'iss';\n case EnumTipoTributo.IMPOSTO_IMPORTACAO:\n return 'ii';\n case EnumTipoTributo.PIS_RETIDO:\n case EnumTipoTributo.COFINS_RETIDO:\n case EnumTipoTributo.CSLL:\n case EnumTipoTributo.IRRF:\n case EnumTipoTributo.INSS:\n case EnumTipoTributo.INSS_PATRONAL:\n case EnumTipoTributo.FUNRURAL_INSS:\n case EnumTipoTributo.FUNRURAL_RAT:\n case EnumTipoTributo.FUNRURAL_SENAR:\n case EnumTipoTributo.FUNRURAL_TOTAL:\n return 'retencoes';\n case EnumTipoTributo.ICMS:\n case EnumTipoTributo.ICMS_CREDITADO:\n case EnumTipoTributo.FCP:\n case EnumTipoTributo.ICMS_DIFERIDO:\n case EnumTipoTributo.ICMS_DESONERADO:\n case EnumTipoTributo.ICMS_EFETIVO:\n case EnumTipoTributo.DIFAL:\n case EnumTipoTributo.DIFAL_DEVOLVIDO:\n case EnumTipoTributo.ICMS_UF_DESTINO_DEVOLVIDO:\n case EnumTipoTributo.FCP_UF_DESTINO_DEVOLVIDO:\n case EnumTipoTributo.ICMS_SIMPLES:\n case EnumTipoTributo.ICMS_FUTURO:\n case EnumTipoTributo.ICMS_UF_DESTINO:\n case EnumTipoTributo.FCP_UF_DESTINO:\n case EnumTipoTributo.FCP_COBRADO_ANTERIORMENTE_ST:\n case EnumTipoTributo.FCP_ST_RETIDO_ANT:\n case EnumTipoTributo.FCP_ST:\n return 'icms';\n case EnumTipoTributo.CIDE_TECNOLOGIA:\n return 'cide';\n default:\n break;\n }\n }\n\n private clearVariables() {\n if (this.reload) {\n this.indexAccordion = [-1];\n this.menuItemPis = false;\n this.menuItemCofins = false;\n this.menuItemIpi = false;\n this.menuItemIss = false;\n this.menuItemImportacoes = false;\n this.menuItemRetencoes = false;\n this.menuItemIcms = false;\n this.menuItemCideTecnologia = false;\n this.menuItemRetencoesFunrural = false;\n\n this.requiredItemCideTecnologia = false;\n this.requiredItemPisRecuperar = false;\n this.requiredItemPisDevolvido = false;\n this.requiredItemCofinsRecuperar = false;\n this.requiredItemCofinsDevolvido = false;\n this.requiredItemIpi = false;\n this.requiredItemIpiCreditado = false;\n this.requiredItemIpiDevolvido = false;\n this.requiredItemIpiPresumido = false;\n this.requiredItemIpiOutrasDespesas = false;\n this.requiredItemIss = false;\n this.requiredItemIssRetido = false;\n this.requiredItemImpostoImportacao = false;\n this.requiredItemPisRecuperarImportacao = false;\n this.requiredItemCofinsRecuperarImportacao = false;\n this.requiredItemPisRetido = false;\n this.requiredItemCofinsRetido = false;\n this.requiredItemCsllRetido = false;\n this.requiredItemIrrfRetido = false;\n this.requiredItemInssRetido = false;\n this.requiredItemInssPatronal = false;\n this.requiredItemIcmsSt = false;\n this.requiredItemFcpSt = false;\n this.requiredItemIcmsCobradoAnteriormente = false;\n this.requiredItemFcpCobradoAnteriormente = false;\n this.requiredItemIcms = false;\n this.requiredItemIcmsEfetivamenteCreditado = false;\n this.requiredItemFcp = false;\n this.requiredItemIcmsDiferido = false;\n this.requiredItemIcmsDesonerado = false;\n this.requiredItemDiferencialAlicota = false;\n this.requiredItemPisFaturemento = false;\n this.requiredItemCofinsFaturemento = false;\n this.requiredItemIcmsUfDestino = false;\n this.requiredItemFcpUfDestino = false;\n this.requiredSituacaoTributaria = false;\n this.requiredIcmsFuturo = false;\n this.requiredIcmsSimples = false;\n this.requiredItemPisFaturamento = false;\n this.requiredIcmsStSolidario = false;\n this.requiredIcmsStRetidoAnt = false;\n this.requiredFcpStReditoAnt = false;\n }\n }\n\n private createTributos() {\n\n this.tributosValue.map(it => {\n\n switch (it.tipoImposto) {\n case EnumTipoTributo.PIS_RECUPERAR:\n case EnumTipoTributo.PIS_DEVOLVIDO:\n case EnumTipoTributo.PIS:\n this.montaPis();\n break;\n case EnumTipoTributo.COFINS_DEVOLVIDO:\n case EnumTipoTributo.COFINS_RECUPERAR:\n case EnumTipoTributo.COFINS:\n this.montaCofins();\n break;\n case EnumTipoTributo.IPI:\n case EnumTipoTributo.IPI_CREDITADO:\n case EnumTipoTributo.IPI_PRESUMIDO:\n case EnumTipoTributo.IPI_DEVOLVIDO:\n case EnumTipoTributo.IPI_OUTRAS_DESPESAS:\n this.montaIpi();\n break;\n case EnumTipoTributo.ISS:\n case EnumTipoTributo.ISS_RETIDO:\n this.montaIss();\n break;\n case EnumTipoTributo.IMPOSTO_IMPORTACAO:\n case EnumTipoTributo.PIS_RECUPERAR_IMPORTACAO:\n case EnumTipoTributo.COFINS_RECUPERAR_IMPORTACAO:\n this.montaImportacoes();\n break;\n case EnumTipoTributo.PIS_RETIDO:\n case EnumTipoTributo.COFINS_RETIDO:\n case EnumTipoTributo.CSLL:\n case EnumTipoTributo.IRRF:\n case EnumTipoTributo.INSS:\n case EnumTipoTributo.INSS_PATRONAL:\n this.montaRetencoes();\n break;\n case EnumTipoTributo.ICMS:\n case EnumTipoTributo.ICMS_CREDITADO:\n case EnumTipoTributo.FCP:\n case EnumTipoTributo.ICMS_DIFERIDO:\n case EnumTipoTributo.ICMS_DESONERADO:\n case EnumTipoTributo.ICMS_ST_FUTURO:\n case EnumTipoTributo.ICMS_ST_RETIDO_ANT:\n case EnumTipoTributo.ICMS_ST_SOLIDARIO:\n case EnumTipoTributo.ICMS_EFETIVO:\n case EnumTipoTributo.DIFAL:\n case EnumTipoTributo.DIFAL_DEVOLVIDO:\n case EnumTipoTributo.ICMS_UF_DESTINO_DEVOLVIDO:\n case EnumTipoTributo.FCP_UF_DESTINO_DEVOLVIDO:\n case EnumTipoTributo.ICMS_SIMPLES:\n case EnumTipoTributo.ICMS_FUTURO:\n this.montaIcms();\n break;\n case EnumTipoTributo.CIDE_TECNOLOGIA:\n this.montaCide();\n break;\n case EnumTipoTributo.FUNRURAL_INSS:\n case EnumTipoTributo.FUNRURAL_RAT:\n case EnumTipoTributo.FUNRURAL_SENAR:\n case EnumTipoTributo.FUNRURAL_TOTAL:\n this.montaRetencoesFunrural();\n break;\n default:\n break;\n }\n\n });\n\n }\n\n private readOnlyTributos() {\n if (this.grupos && this.grupos != undefined && this.grupos.length > 0) {\n this.grupos.map(grupo => grupo.item.map(\n (item: any) => {\n item.formGroup.disable();\n })\n );\n }\n }\n\n private setTributos() {\n if (this.grupos && this.grupos != undefined && this.grupos.length > 0) {\n this.grupos.map(grupo => grupo.item.map(\n (item: Item) => {\n this.tributosValue.map(it => {\n if (item.name === it.tipoImposto) {\n item.formGroup.patchValue(it);\n this.setValidators(it.tipoImposto);\n this.storageValuesOnLookupValidator(item);\n }\n });\n })\n );\n\n this.grupos.map(grupo => grupo.item.map(\n (item: any) => {\n this.setSubs(item);\n })\n );\n }\n }\n\n private setValidators(tributo: EnumTipoTributo) {\n if (this.grupos && this.grupos != undefined && this.grupos.length > 0) {\n this.grupos.map(\n grupo => {\n grupo.item\n .filter((it: any) => it.name == tributo)\n .map((it: any) => {\n let hasValue = false;\n Object.keys(it.formGroup.value).forEach((item: any) => {\n if (item != 'impostoManual') {\n if (it.formGroup.value[item] != undefined && it.formGroup.value[item] !== '') {\n hasValue = true;\n return;\n }\n }\n });\n\n if (hasValue)\n Object.keys(it.formGroup.value).forEach((item: any) => {\n if ((item == 'percentualReducao') ||\n (item == 'percentualDiferimento') ||\n (item == 'percentualMargemValorAdicionado')) {\n it.formGroup.controls[item].setValidators(Validators.compose(\n [\n Validators.required\n , Validators.max(1000)\n ]\n ));\n it.formGroup.controls[item].updateValueAndValidity({ emitEvent: false });\n this.setRequired(tributo, true);\n } else if (item === 'valor') {\n it.formGroup.controls[item].setValidators(Validators.compose([\n Validators.required,\n Validators.max(9999999999999.99)\n ]));\n it.formGroup.controls[item].updateValueAndValidity({ emitEvent: false });\n this.setRequired(tributo, true);\n } else if (item === 'observacao') {\n it.formGroup.controls[item].setValidators(Validators.compose([Validators.maxLength(120)]));\n it.formGroup.controls[item].updateValueAndValidity({ emitEvent: false });\n this.setRequired(tributo, true);\n } else if (item === 'codigoArrecadacao') {\n it.formGroup.controls[item].setValidators(Validators.compose([Validators.maxLength(5)]));\n it.formGroup.controls[item].updateValueAndValidity({ emitEvent: false });\n this.setRequired(tributo, true);\n } else if (item === 'indicativoAquisicao') {\n it.formGroup.controls[item].setValidators(Validators.compose([]));\n it.formGroup.controls[item].updateValueAndValidity({ emitEvent: false });\n } else if (item === 'codigoTributacao') {\n it.formGroup.controls[item].setValidators(Validators.compose([Validators.maxLength(5)]));\n it.formGroup.controls[item].updateValueAndValidity({ emitEvent: false });\n this.setRequired(tributo, true);\n } else if (item === 'ImpostoNaoRecuperado') {\n it.formGroup.controls[item].setValidators(Validators.compose([Validators.max(9999999999999.99)]));\n it.formGroup.controls[item].updateValueAndValidity({ emitEvent: false });\n this.setRequired(tributo, true);\n } else if (item === 'baseCalculoCredito') {\n it.formGroup.controls[item].clearValidators();\n it.formGroup.controls[item].updateValueAndValidity({ emitEvent: false });\n this.setRequired(tributo, true);\n } else if (item !== 'impostoManual'\n && item !== 'naturezaReceita'\n && item !== 'valorDeducao'\n && item !== 'regimeTributarioPisCofins') {\n it.formGroup.controls[item].setValidators(Validators.compose([Validators.required]));\n it.formGroup.controls[item].updateValueAndValidity({ emitEvent: false });\n this.setRequired(tributo, true);\n }\n });\n else\n Object.keys(it.formGroup.value).forEach((item: any) => {\n if ((item == 'percentualReducao') ||\n (item == 'percentualDiferimento') ||\n (item == 'percentualMargemValorAdicionado')) {\n it.formGroup.controls[item].setValidators(Validators.compose([Validators.max(1000)]));\n it.formGroup.controls[item].updateValueAndValidity({ emitEvent: false });\n this.setRequired(tributo, true);\n\n } else if (item === 'valor') {\n it.formGroup.controls[item].setValidators(Validators.compose([Validators.max(9999999999999.99)]));\n it.formGroup.controls[item].updateValueAndValidity({ emitEvent: false });\n this.setRequired(tributo, true);\n } else if (item === 'observacao') {\n it.formGroup.controls[item].setValidators(Validators.compose([Validators.maxLength(120)]));\n it.formGroup.controls[item].updateValueAndValidity({ emitEvent: false });\n this.setRequired(tributo, true);\n\n } else if (item === 'codigoArrecadacao') {\n it.formGroup.controls[item].setValidators(Validators.compose([Validators.maxLength(6)]));\n it.formGroup.controls[item].updateValueAndValidity({ emitEvent: false });\n this.setRequired(tributo, true);\n\n } else if (item === 'indicativoAquisicao') {\n it.formGroup.controls[item].setValidators(Validators.compose([]));\n it.formGroup.controls[item].updateValueAndValidity({ emitEvent: false });\n } else if (item === 'ImpostoNaoRecuperado') {\n it.formGroup.controls[item].setValidators(Validators.compose([Validators.max(9999999999999.99)]));\n it.formGroup.controls[item].updateValueAndValidity({ emitEvent: false });\n this.setRequired(tributo, true);\n } else {\n it.formGroup.controls[item].clearValidators();\n it.formGroup.controls[item].updateValueAndValidity({ emitEvent: false });\n this.setRequired(tributo, false);\n }\n });\n });\n }\n );\n }\n }\n\n private validateAllFormFields(formGroup: FormGroup) {\n Object.keys(formGroup.controls).forEach(field => {\n const control = formGroup.get(field);\n if (control instanceof FormControl) control.markAsDirty({ onlySelf: true });\n else if (control instanceof FormGroup) this.validateAllFormFields(control);\n });\n }\n\n public validateAllFieldsTributos(): boolean {\n let valueValid = true;\n if (this.grupos && this.grupos != undefined && this.grupos.length > 0) {\n this.grupos.map(\n grupo => {\n grupo.item\n .map((it: any) => {\n Object.keys(it.formGroup.controls).forEach(field => {\n const control = it.formGroup.get(field);\n if (control instanceof FormControl) control.markAsDirty({ onlySelf: true });\n else if (control instanceof FormGroup) this.validateAllFieldsTributos();\n });\n\n if (it.formGroup.invalid) {\n valueValid = false;\n }\n });\n }\n );\n }\n return valueValid;\n }\n\n private backValue() {\n const arrItens: any = [];\n if (this.grupos && this.grupos != undefined && this.grupos.length > 0) {\n this.grupos.map(\n grupo => {\n grupo.item.map(\n (item: any) => {\n this.validateAllFormFields(item.formGroup);\n if (this.tributosValue.length > 0) {\n const deuMath = this.tributosValue\n .filter(tributo => tributo.tipoImposto == item.name)\n .map((tributo: any) => {\n return {\n ...tributo,\n ...item.formGroup.getRawValue()\n };\n });\n if (deuMath && deuMath.length) {\n arrItens.push(deuMath[0]);\n } else {\n arrItens.push({ 'tipoImposto': item.name, ...item.formGroup.getRawValue() });\n }\n } else {\n arrItens.push({ 'tipoImposto': item.name, ...item.formGroup.getRawValue() });\n }\n }\n );\n }\n );\n }\n\n this.reload = false;\n this.tributosChange.emit(arrItens);\n }\n\n private novoImpostoManual(value: any, singleChange?: boolean) {\n value.formField.forEach((field: FormField) => field.onBlur?.call(this));\n value.formGroup.controls.impostoManual.patchValue(true);\n if (!singleChange) { this.setSubs(value); }\n }\n\n public getActions(): MenuItem[] {\n const menu: MenuItem[] = [];\n menu.push(\n {\n id: 'retencaoFunrural',\n label: this.translate.instant('erpx.tributos.actions_retencao_funrural_label'),\n disabled: this.menuItemRetencoesFunrural,\n command: () => {\n this.montaRetencoesFunrural().forEach(value => {\n this.novoImpostoManual(value);\n }), this.indexAccordion = [0];\n\n this.changeDetector.detectChanges();\n }\n },\n {\n id: 'pis',\n label: this.translate.instant('erpx.tributos.actions_pis_label'),\n disabled: this.menuItemPis,\n command: () => {\n this.montaPis().forEach(value => {\n this.novoImpostoManual(value);\n }), this.indexAccordion = [0];\n\n this.changeDetector.detectChanges();\n }\n }, {\n id: 'cofins',\n label: this.translate.instant('erpx.tributos.actions_cofins_label'),\n disabled: this.menuItemCofins,\n command: () => {\n this.montaCofins().forEach(value => {\n this.novoImpostoManual(value);\n }), this.indexAccordion = [0];\n\n this.changeDetector.detectChanges();\n }\n }, {\n id: 'ipi',\n label: this.translate.instant('erpx.tributos.actions_ipi_label'),\n disabled: this.menuItemIpi,\n command: () => {\n this.montaIpi().forEach(value => {\n this.novoImpostoManual(value);\n }), this.indexAccordion = [0];\n\n this.changeDetector.detectChanges();\n }\n }, {\n id: 'icms',\n label: this.translate.instant('erpx.tributos.actions_icms_label'),\n disabled: this.menuItemIcms,\n command: () => {\n this.montaIcms().forEach(value => {\n this.novoImpostoManual(value);\n }), this.indexAccordion = [0];\n\n this.changeDetector.detectChanges();\n }\n }\n );\n\n if (this.documento != EnumTipoDocumento.PEDIDO_VENDA) {\n menu.push(\n {\n id: 'importacoes',\n label: this.translate.instant('erpx.tributos.actions_importacoes_label'),\n disabled: this.menuItemImportacoes,\n command: () => {\n this.montaImportacoes().forEach(value => {\n this.novoImpostoManual(value, true);\n }), this.indexAccordion = [0];\n\n this.changeDetector.detectChanges();\n }\n }\n );\n }\n\n if (this.tipoItem == EnumTipoItem.Servico || this.documento == EnumTipoDocumento.NF_ENTRADA_CONTROLADORIA) {\n menu.push(\n {\n id: 'iss',\n label: this.translate.instant('erpx.tributos.actions_iss_label'),\n disabled: this.menuItemIss,\n command: () => {\n this.montaIss().forEach(value => {\n this.novoImpostoManual(value);\n }), this.indexAccordion = [0];\n\n this.changeDetector.detectChanges();\n }\n },\n {\n id: 'retencoes',\n label: this.translate.instant('erpx.tributos.actions_retencoes_label'),\n disabled: this.menuItemRetencoes,\n command: () => {\n this.montaRetencoes().forEach(value => {\n this.novoImpostoManual(value);\n }), this.indexAccordion = [0];\n\n this.changeDetector.detectChanges();\n }\n },\n );\n }\n\n if (this.tipoItem == EnumTipoItem.Servico && this.habilitaOpcaoCide) {\n menu.push(\n {\n id: 'cide',\n label: this.translate.instant('erpx.tributos.actions_cide_label'),\n disabled: this.menuItemCideTecnologia,\n command: () => {\n this.montaCide().forEach(value => {\n this.novoImpostoManual(value);\n }), this.indexAccordion = [0];\n\n this.changeDetector.detectChanges();\n }\n }\n );\n }\n\n return menu;\n }\n\n private montaCide(): any[] {\n if (this.menuItemCideTecnologia == false) {\n this.menuItemCideTecnologia = true;\n const item: any[] = [];\n switch (this.documento) {\n case EnumTipoDocumento.NF_ENTRADA:\n item.unshift({\n name: EnumTipoTributo.CIDE_TECNOLOGIA,\n label: 'erpx.tributos.enum_tipo_tributo_cide_tecnologia',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.CIDE_TECNOLOGIA)\n }\n );\n break;\n\n case EnumTipoDocumento.PEDIDO_COMPRA:\n item.unshift({\n name: EnumTipoTributo.CIDE_TECNOLOGIA,\n label: 'erpx.tributos.enum_tipo_tributo_cide_tecnologia',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.CIDE_TECNOLOGIA)\n }\n );\n break;\n\n default:\n break;\n }\n\n this.grupos.unshift(\n {\n grupo: `${'erpx.tributos.enum_grupo_tributo_' + EnumGrupoTributo.CIDE_TECNOLOGIA + '_label'}`, item\n });\n return item;\n }\n }\n\n private montaIcms(): any[] {\n if (this.menuItemIcms == false) {\n this.menuItemIcms = true;\n const item: any[] = [];\n switch (this.documento) {\n case EnumTipoDocumento.NF_ENTRADA:\n item.unshift({\n name: EnumTipoTributo.ICMS,\n label: 'erpx.tributos.enum_tipo_tributo_icms',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.ValorOutras },\n { campo: EnumCampoTributo.ValorIsentas },\n { campo: EnumCampoTributo.SituacaoTributaria },\n { campo: EnumCampoTributo.Origem },\n ], EnumTipoTributo.ICMS)\n }, {\n name: EnumTipoTributo.ICMS_CREDITADO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_creditado',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_CREDITADO)\n }, {\n name: EnumTipoTributo.ICMS_FUTURO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_futuro',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_FUTURO)\n }, {\n name: EnumTipoTributo.ICMS_SIMPLES,\n label: 'erpx.tributos.enum_tipo_tributo_icms_simples',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_SIMPLES)\n }, {\n name: EnumTipoTributo.FCP,\n label: 'erpx.tributos.enum_tipo_tributo_fcp',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP)\n }, {\n name: EnumTipoTributo.ICMS_DESONERADO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_desonerado',\n ...this.montaCampos([\n { campo: EnumCampoTributo.MotivoDesoneracaoIcms },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_DESONERADO)\n }, {\n name: EnumTipoTributo.ICMS_DIFERIDO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_diferido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualDiferimento },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_DIFERIDO)\n }, {\n name: EnumTipoTributo.DIFAL,\n label: 'erpx.tributos.enum_tipo_tributo_difal',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.DIFAL)\n },\n /** @ICMS_ST */\n {\n name: EnumTipoTributo.ICMS_ST,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.PercentualMargemValorAdicionado },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_ST)\n },\n {\n name: EnumTipoTributo.ICMS_ST_SOLIDARIO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st_solidario',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_ST_SOLIDARIO)\n },\n {\n name: EnumTipoTributo.ICMS_ST_FUTURO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st_futuro',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_ST_FUTURO)\n },\n {\n name: EnumTipoTributo.FCP_ST,\n label: 'erpx.tributos.enum_tipo_tributo_fcp_st',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP_ST)\n },\n {\n name: EnumTipoTributo.ICMS_ST_RETIDO_ANT,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st_retido_ant',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualSuportadoConsumidorFinal },\n { campo: EnumCampoTributo.ValorRecolhidoPeloSubstituto },\n { campo: EnumCampoTributo.ValorIcmsStRetido }\n ], EnumTipoTributo.ICMS_ST_RETIDO_ANT)\n },\n {\n name: EnumTipoTributo.FCP_ST_RETIDO_ANT,\n label: 'erpx.tributos.enum_tipo_tributo_fcp_st_retido_ant',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP_ST_RETIDO_ANT)\n },\n /* DIFAL DEVOLVIDO */\n {\n name: EnumTipoTributo.ICMS_UF_DESTINO_DEVOLVIDO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_uf_destino_devolvido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.AliquotaInternaDestino },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_UF_DESTINO_DEVOLVIDO)\n },\n {\n name: EnumTipoTributo.FCP_UF_DESTINO_DEVOLVIDO,\n label: 'erpx.tributos.enum_tipo_tributo_fcp_uf_destino_devolvido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP_UF_DESTINO_DEVOLVIDO)\n }\n );\n break;\n\n case EnumTipoDocumento.PEDIDO_COMPRA:\n item.unshift({\n name: EnumTipoTributo.ICMS,\n label: 'erpx.tributos.enum_tipo_tributo_icms',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.ICMS)\n }, {\n name: EnumTipoTributo.ICMS_CREDITADO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_creditado',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_CREDITADO)\n }, {\n name: EnumTipoTributo.ICMS_FUTURO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_futuro',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_FUTURO)\n }, {\n name: EnumTipoTributo.ICMS_SIMPLES,\n label: 'erpx.tributos.enum_tipo_tributo_icms_simples',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_SIMPLES)\n }, {\n name: EnumTipoTributo.FCP,\n label: 'erpx.tributos.enum_tipo_tributo_fcp',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP)\n }, {\n name: EnumTipoTributo.ICMS_DESONERADO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_desonerado',\n ...this.montaCampos([\n { campo: EnumCampoTributo.MotivoDesoneracaoIcms },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_DESONERADO)\n }, {\n name: EnumTipoTributo.ICMS_DIFERIDO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_diferido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualDiferimento },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_DIFERIDO)\n }, {\n name: EnumTipoTributo.DIFAL,\n label: 'erpx.tributos.enum_tipo_tributo_difal',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.DIFAL)\n },\n /** @ICMS_ST */\n {\n name: EnumTipoTributo.ICMS_ST,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.PercentualMargemValorAdicionado },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_ST)\n },\n {\n name: EnumTipoTributo.ICMS_ST_SOLIDARIO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st_solidario',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_ST_SOLIDARIO)\n },\n {\n name: EnumTipoTributo.ICMS_ST_FUTURO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st_futuro',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_ST_FUTURO)\n },\n {\n name: EnumTipoTributo.FCP_ST,\n label: 'erpx.tributos.enum_tipo_tributo_fcp_st',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP_ST)\n },\n {\n name: EnumTipoTributo.ICMS_ST_RETIDO_ANT,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st_retido_ant',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualSuportadoConsumidorFinal },\n { campo: EnumCampoTributo.ValorRecolhidoPeloSubstituto },\n { campo: EnumCampoTributo.ValorIcmsStRetido }\n ], EnumTipoTributo.ICMS_ST_RETIDO_ANT)\n },\n {\n name: EnumTipoTributo.FCP_ST_RETIDO_ANT,\n label: 'erpx.tributos.enum_tipo_tributo_fcp_st_retido_ant',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP_ST_RETIDO_ANT)\n }\n );\n break;\n\n case EnumTipoDocumento.NF_SAIDA:\n item.unshift({\n name: EnumTipoTributo.ICMS,\n label: 'erpx.tributos.enum_tipo_tributo_icms',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.ValorOutras },\n { campo: EnumCampoTributo.ValorIsentas },\n { campo: EnumCampoTributo.SituacaoTributaria },\n { campo: EnumCampoTributo.Origem },\n ], EnumTipoTributo.ICMS)\n },\n {\n name: EnumTipoTributo.ICMS_FUTURO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_futuro',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.ICMS_FUTURO)\n },\n {\n name: EnumTipoTributo.ICMS_SIMPLES,\n label: 'erpx.tributos.enum_tipo_tributo_icms_simples',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.ICMS_SIMPLES)\n }, {\n name: EnumTipoTributo.FCP,\n label: 'erpx.tributos.enum_tipo_tributo_fcp',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP)\n }, {\n name: EnumTipoTributo.ICMS_DESONERADO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_desonerado',\n ...this.montaCampos([\n { campo: EnumCampoTributo.MotivoDesoneracaoIcms },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_DESONERADO)\n }, {\n name: EnumTipoTributo.ICMS_DIFERIDO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_diferido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualDiferimento },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_DIFERIDO)\n },\n {\n name: EnumTipoTributo.DIFAL,\n label: 'erpx.tributos.enum_tipo_tributo_difal',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.DIFAL)\n }, {\n name: EnumTipoTributo.ICMS_UF_DESTINO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_uf_destino',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.AliquotaInterna },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.ICMS_UF_DESTINO)\n }, {\n name: EnumTipoTributo.FCP_UF_DESTINO,\n label: 'erpx.tributos.enum_tipo_tributo_fcp_uf_destino',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP_UF_DESTINO)\n },\n\n /** @ICMS_ST */\n {\n name: EnumTipoTributo.ICMS_ST,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.PercentualMargemValorAdicionado },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_ST)\n },\n {\n name: EnumTipoTributo.ICMS_ST_SOLIDARIO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st_solidario',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_ST_SOLIDARIO)\n },\n {\n name: EnumTipoTributo.ICMS_ST_FUTURO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st_futuro',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_ST_FUTURO)\n },\n {\n name: EnumTipoTributo.FCP_ST,\n label: 'erpx.tributos.enum_tipo_tributo_fcp_st',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP_ST)\n },\n {\n name: EnumTipoTributo.ICMS_ST_RETIDO_ANT,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st_retido_ant',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualSuportadoConsumidorFinal },\n { campo: EnumCampoTributo.ValorRecolhidoPeloSubstituto },\n { campo: EnumCampoTributo.ValorIcmsStRetido }\n ], EnumTipoTributo.ICMS_ST_RETIDO_ANT)\n },\n {\n name: EnumTipoTributo.FCP_ST_RETIDO_ANT,\n label: 'erpx.tributos.enum_tipo_tributo_fcp_st_retido_ant',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP_ST_RETIDO_ANT)\n },\n {\n name: EnumTipoTributo.ICMS_EFETIVO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_efetivo',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_EFETIVO)\n }\n );\n break;\n\n case EnumTipoDocumento.PEDIDO_VENDA:\n item.unshift({\n name: EnumTipoTributo.ICMS,\n label: 'erpx.tributos.enum_tipo_tributo_icms',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.ICMS)\n }, {\n name: EnumTipoTributo.ICMS_FUTURO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_futuro',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.ICMS_FUTURO)\n }, {\n name: EnumTipoTributo.ICMS_SIMPLES,\n label: 'erpx.tributos.enum_tipo_tributo_icms_simples',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.ICMS_SIMPLES)\n }, {\n name: EnumTipoTributo.FCP,\n label: 'erpx.tributos.enum_tipo_tributo_fcp',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP)\n }, {\n name: EnumTipoTributo.ICMS_DESONERADO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_desonerado',\n ...this.montaCampos([\n { campo: EnumCampoTributo.MotivoDesoneracaoIcms },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_DESONERADO)\n }, {\n name: EnumTipoTributo.ICMS_DIFERIDO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_diferido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualDiferimento },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_DIFERIDO)\n }, {\n name: EnumTipoTributo.ICMS_UF_DESTINO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_uf_destino',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.AliquotaInterna },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.ICMS_UF_DESTINO)\n }, {\n name: EnumTipoTributo.FCP_UF_DESTINO,\n label: 'erpx.tributos.enum_tipo_tributo_fcp_uf_destino',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP_UF_DESTINO)\n },\n\n /** @ICMS_ST */\n {\n name: EnumTipoTributo.ICMS_ST,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.PercentualMargemValorAdicionado },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_ST)\n },\n {\n name: EnumTipoTributo.ICMS_ST_SOLIDARIO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st_solidario',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_ST_SOLIDARIO)\n },\n {\n name: EnumTipoTributo.ICMS_ST_FUTURO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st_futuro',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_ST_FUTURO)\n },\n {\n name: EnumTipoTributo.FCP_ST,\n label: 'erpx.tributos.enum_tipo_tributo_fcp_st',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP_ST)\n },\n {\n name: EnumTipoTributo.ICMS_ST_RETIDO_ANT,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st_retido_ant',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualSuportadoConsumidorFinal },\n { campo: EnumCampoTributo.ValorRecolhidoPeloSubstituto },\n { campo: EnumCampoTributo.ValorIcmsStRetido }\n ], EnumTipoTributo.ICMS_ST_RETIDO_ANT)\n },\n {\n name: EnumTipoTributo.FCP_ST_RETIDO_ANT,\n label: 'erpx.tributos.enum_tipo_tributo_fcp_st_retido_ant',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP_ST_RETIDO_ANT)\n }\n );\n break;\n\n case EnumTipoDocumento.NF_SAIDA_CONTROLADORIA:\n item.unshift(\n {\n name: EnumTipoTributo.ICMS,\n label: 'erpx.tributos.enum_tipo_tributo_icms',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.ValorOutras },\n { campo: EnumCampoTributo.ValorIsentas },\n { campo: EnumCampoTributo.SituacaoTributaria },\n { campo: EnumCampoTributo.Origem },\n { campo: EnumCampoTributo.Observacao }\n ], EnumTipoTributo.ICMS)\n },\n {\n name: EnumTipoTributo.FCP,\n label: 'erpx.tributos.enum_tipo_tributo_fcp',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP)\n },\n {\n name: EnumTipoTributo.ICMS_DESONERADO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_desonerado',\n ...this.montaCampos([\n { campo: EnumCampoTributo.MotivoDesoneracaoIcms },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_DESONERADO)\n },\n {\n name: EnumTipoTributo.ICMS_UF_DESTINO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_uf_destino',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.AliquotaInterna },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.ICMS_UF_DESTINO)\n },\n {\n name: EnumTipoTributo.FCP_UF_DESTINO,\n label: 'erpx.tributos.enum_tipo_tributo_fcp_uf_destino',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP_UF_DESTINO)\n },\n {\n name: EnumTipoTributo.ICMS_ST,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.PercentualMargemValorAdicionado },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_ST)\n },\n {\n name: EnumTipoTributo.ICMS_ST_SOLIDARIO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st_solidario',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_ST_SOLIDARIO)\n },\n {\n name: EnumTipoTributo.FCP_ST,\n label: 'erpx.tributos.enum_tipo_tributo_fcp_st',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP_ST)\n },\n {\n name: EnumTipoTributo.ICMS_ST_RETIDO_ANT,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st_retido_ant',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.ValorIcmsStRetido }\n ], EnumTipoTributo.ICMS_ST_RETIDO_ANT)\n },\n {\n name: EnumTipoTributo.FCP_ST_RETIDO_ANT,\n label: 'erpx.tributos.enum_tipo_tributo_fcp_st_retido_ant',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP_ST_RETIDO_ANT)\n }\n );\n break;\n case EnumTipoDocumento.NF_ENTRADA_CONTROLADORIA:\n item.unshift(\n {\n name: EnumTipoTributo.ICMS,\n label: 'erpx.tributos.enum_tipo_tributo_icms',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.ValorOutras },\n { campo: EnumCampoTributo.ValorIsentas },\n { campo: EnumCampoTributo.SituacaoTributaria },\n { campo: EnumCampoTributo.Origem },\n { campo: EnumCampoTributo.Observacao }\n ], EnumTipoTributo.ICMS)\n },\n {\n name: EnumTipoTributo.ICMS_SIMPLES,\n label: 'erpx.tributos.enum_tipo_tributo_icms_simples',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_SIMPLES)\n },\n {\n name: EnumTipoTributo.FCP,\n label: 'erpx.tributos.enum_tipo_tributo_fcp',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP)\n },\n {\n name: EnumTipoTributo.ICMS_DESONERADO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_desonerado',\n ...this.montaCampos([\n { campo: EnumCampoTributo.MotivoDesoneracaoIcms },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_DESONERADO)\n },\n {\n name: EnumTipoTributo.DIFAL,\n label: 'erpx.tributos.enum_tipo_tributo_difal',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.DIFAL)\n },\n {\n name: EnumTipoTributo.ICMS_ST,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.PercentualMargemValorAdicionado },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.ImpostoNaoRecuperado },\n ], EnumTipoTributo.ICMS_ST)\n },\n {\n name: EnumTipoTributo.ICMS_ST_SOLIDARIO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st_solidario',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_ST_SOLIDARIO)\n },\n {\n name: EnumTipoTributo.FCP_ST,\n label: 'erpx.tributos.enum_tipo_tributo_fcp_st',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP_ST)\n },\n {\n name: EnumTipoTributo.ICMS_ST_RETIDO_ANT,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st_retido_ant',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.ValorIcmsStRetido }\n ], EnumTipoTributo.ICMS_ST_RETIDO_ANT)\n },\n {\n name: EnumTipoTributo.FCP_ST_RETIDO_ANT,\n label: 'erpx.tributos.enum_tipo_tributo_fcp_st_retido_ant',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP_ST_RETIDO_ANT)\n },\n {\n name: EnumTipoTributo.ICMS_UF_DESTINO_DEVOLVIDO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_uf_destino_devolvido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.AliquotaInternaDestino },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_UF_DESTINO_DEVOLVIDO)\n },\n {\n name: EnumTipoTributo.FCP_UF_DESTINO_DEVOLVIDO,\n label: 'erpx.tributos.enum_tipo_tributo_fcp_uf_destino_devolvido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP_UF_DESTINO_DEVOLVIDO)\n },\n );\n break;\n\n default:\n break;\n }\n\n this.grupos.unshift({ grupo: `${'erpx.tributos.enum_grupo_tributo_' + EnumGrupoTributo.ICMS + '_label'}`, item });\n return item;\n }\n }\n\n private montaRetencoes(): any[] {\n if (this.menuItemRetencoes == false) {\n this.menuItemRetencoes = true;\n const item: any[] = [];\n\n switch (this.documento) {\n case EnumTipoDocumento.NF_ENTRADA:\n item.unshift(\n {\n name: EnumTipoTributo.PIS_RETIDO,\n label: 'erpx.tributos.enum_tipo_tributo_pis_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.CodigoTributacao }\n ], EnumTipoTributo.PIS_RETIDO)\n }, {\n name: EnumTipoTributo.COFINS_RETIDO,\n label: 'erpx.tributos.enum_tipo_tributo_cofins_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.CodigoTributacao }\n ], EnumTipoTributo.COFINS_RETIDO)\n }, {\n name: EnumTipoTributo.CSLL,\n label: 'erpx.tributos.enum_tipo_tributo_csll_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.CodigoTributacao }\n ], EnumTipoTributo.CSLL)\n }, {\n name: EnumTipoTributo.IRRF,\n label: 'erpx.tributos.enum_tipo_tributo_irrf_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.CodigoTributacao }\n ], EnumTipoTributo.IRRF)\n }, {\n name: EnumTipoTributo.INSS,\n label: 'erpx.tributos.enum_tipo_tributo_inss_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.INSS)\n }, {\n name: EnumTipoTributo.INSS_PATRONAL,\n label: 'erpx.tributos.enum_tipo_tributo_inss_patronal',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.INSS_PATRONAL)\n }\n );\n break;\n case EnumTipoDocumento.PEDIDO_COMPRA:\n item.unshift(\n {\n name: EnumTipoTributo.PIS_RETIDO,\n label: 'erpx.tributos.enum_tipo_tributo_pis_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.PIS_RETIDO)\n }, {\n name: EnumTipoTributo.COFINS_RETIDO,\n label: 'erpx.tributos.enum_tipo_tributo_cofins_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.COFINS_RETIDO)\n }, {\n name: EnumTipoTributo.CSLL,\n label: 'erpx.tributos.enum_tipo_tributo_csll_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.CSLL)\n }, {\n name: EnumTipoTributo.IRRF,\n label: 'erpx.tributos.enum_tipo_tributo_irrf_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.IRRF)\n }, {\n name: EnumTipoTributo.INSS,\n label: 'erpx.tributos.enum_tipo_tributo_inss_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.INSS)\n }, {\n name: EnumTipoTributo.INSS_PATRONAL,\n label: 'erpx.tributos.enum_tipo_tributo_inss_patronal',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.INSS_PATRONAL)\n }\n );\n break;\n case EnumTipoDocumento.NF_SAIDA:\n item.unshift(\n {\n name: EnumTipoTributo.PIS_RETIDO,\n label: 'erpx.tributos.enum_tipo_tributo_pis_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.CodigoTributacao }\n ], EnumTipoTributo.PIS_RETIDO)\n }, {\n name: EnumTipoTributo.COFINS_RETIDO,\n label: 'erpx.tributos.enum_tipo_tributo_cofins_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.CodigoTributacao }\n ], EnumTipoTributo.COFINS_RETIDO)\n }, {\n name: EnumTipoTributo.CSLL,\n label: 'erpx.tributos.enum_tipo_tributo_csll_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.CodigoTributacao }\n ], EnumTipoTributo.CSLL)\n }, {\n name: EnumTipoTributo.IRRF,\n label: 'erpx.tributos.enum_tipo_tributo_irrf_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.CodigoTributacao }\n ], EnumTipoTributo.IRRF)\n }, {\n name: EnumTipoTributo.INSS,\n label: 'erpx.tributos.enum_tipo_tributo_inss_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.INSS)\n }\n );\n break;\n\n case EnumTipoDocumento.PEDIDO_VENDA:\n item.unshift(\n {\n name: EnumTipoTributo.PIS_RETIDO,\n label: 'erpx.tributos.enum_tipo_tributo_pis_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.PIS_RETIDO)\n }, {\n name: EnumTipoTributo.COFINS_RETIDO,\n label: 'erpx.tributos.enum_tipo_tributo_cofins_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.COFINS_RETIDO)\n }, {\n name: EnumTipoTributo.CSLL,\n label: 'erpx.tributos.enum_tipo_tributo_csll_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.CSLL)\n }, {\n name: EnumTipoTributo.IRRF,\n label: 'erpx.tributos.enum_tipo_tributo_irrf_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.IRRF)\n }, {\n name: EnumTipoTributo.INSS,\n label: 'erpx.tributos.enum_tipo_tributo_inss_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.INSS)\n }\n );\n break;\n case EnumTipoDocumento.NF_SAIDA_CONTROLADORIA:\n item.unshift(\n {\n name: EnumTipoTributo.PIS_RETIDO,\n label: 'erpx.tributos.enum_tipo_tributo_pis_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.CodigoArrecadacao }\n ], EnumTipoTributo.PIS_RETIDO)\n },\n {\n name: EnumTipoTributo.COFINS_RETIDO,\n label: 'erpx.tributos.enum_tipo_tributo_cofins_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.CodigoArrecadacao }\n ], EnumTipoTributo.COFINS_RETIDO)\n },\n {\n name: EnumTipoTributo.CSLL,\n label: 'erpx.tributos.enum_tipo_tributo_csll_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.CodigoArrecadacao }\n ], EnumTipoTributo.CSLL)\n },\n {\n name: EnumTipoTributo.IRRF,\n label: 'erpx.tributos.enum_tipo_tributo_irrf_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.CodigoArrecadacao }\n ], EnumTipoTributo.IRRF)\n },\n {\n name: EnumTipoTributo.INSS,\n label: 'erpx.tributos.enum_tipo_tributo_inss_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.INSS)\n }\n );\n break;\n case EnumTipoDocumento.NF_ENTRADA_CONTROLADORIA:\n item.unshift(\n {\n name: EnumTipoTributo.PIS_RETIDO,\n label: 'erpx.tributos.enum_tipo_tributo_pis_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.CodigoArrecadacao }\n ], EnumTipoTributo.PIS_RETIDO)\n },\n {\n name: EnumTipoTributo.COFINS_RETIDO,\n label: 'erpx.tributos.enum_tipo_tributo_cofins_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.CodigoArrecadacao }\n ], EnumTipoTributo.COFINS_RETIDO)\n },\n {\n name: EnumTipoTributo.CSLL,\n label: 'erpx.tributos.enum_tipo_tributo_csll_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.CodigoArrecadacao }\n ], EnumTipoTributo.CSLL)\n },\n {\n name: EnumTipoTributo.IRRF,\n label: 'erpx.tributos.enum_tipo_tributo_irrf_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.CodigoArrecadacao }\n ], EnumTipoTributo.IRRF)\n },\n {\n name: EnumTipoTributo.INSS,\n label: 'erpx.tributos.enum_tipo_tributo_inss_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.INSS)\n },\n {\n name: EnumTipoTributo.INSS_PATRONAL,\n label: 'erpx.tributos.enum_tipo_tributo_inss_patronal',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.INSS_PATRONAL)\n }\n );\n break;\n\n default:\n break;\n }\n\n this.grupos.unshift(\n {\n grupo: `${'erpx.tributos.enum_grupo_tributo_' + EnumGrupoTributo.RETENCOES + '_label'}`, item\n });\n return item;\n }\n }\n\n private montaRetencoesFunrural(): any[] {\n if (this.menuItemRetencoesFunrural == false) {\n this.menuItemRetencoesFunrural = true;\n const item: any[] = [];\n\n item.unshift(\n {\n name: EnumTipoTributo.FUNRURAL_INSS,\n label: 'erpx.tributos.enum_tipo_tributo_funrural_inss',\n ...this.montaCampos(\n [\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.IndicativoAquisicao },\n { campo: EnumCampoTributo.CodigoArrecadacao },\n ],\n EnumTipoTributo.FUNRURAL_INSS\n )\n },\n {\n name: EnumTipoTributo.FUNRURAL_RAT,\n label: 'erpx.tributos.enum_tipo_tributo_funrural_rat',\n ...this.montaCampos(\n [\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.IndicativoAquisicao },\n { campo: EnumCampoTributo.CodigoArrecadacao },\n ],\n EnumTipoTributo.FUNRURAL_RAT\n )\n },\n {\n name: EnumTipoTributo.FUNRURAL_SENAR,\n label: 'erpx.tributos.enum_tipo_tributo_funrural_senar',\n ...this.montaCampos(\n [\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.IndicativoAquisicao },\n { campo: EnumCampoTributo.CodigoArrecadacao },\n ],\n EnumTipoTributo.FUNRURAL_SENAR\n )\n },\n {\n name: EnumTipoTributo.FUNRURAL_TOTAL,\n label: 'erpx.tributos.enum_tipo_tributo_funrural_total',\n ...this.montaCampos(\n [\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Valor }\n ],\n EnumTipoTributo.FUNRURAL_TOTAL\n )\n }\n );\n\n this.grupos.unshift(\n {\n grupo: `${'erpx.tributos.enum_grupo_tributo_' + EnumGrupoTributo.FUNRURAL + '_label'}`, item\n });\n\n const funruralTotal = item.find(item => item.name === \"FUNRURAL_TOTAL\");\n funruralTotal.formGroup.disable({ emitEvent: false });\n\n return item;\n }\n }\n\n private montaImportacoes(): any[] {\n if (this.menuItemImportacoes == false) {\n this.menuItemImportacoes = true;\n const item: any[] = [];\n\n switch (this.documento) {\n case EnumTipoDocumento.NF_SAIDA_CONTROLADORIA:\n item.unshift(\n {\n name: EnumTipoTributo.IMPOSTO_IMPORTACAO,\n label: 'erpx.tributos.enum_tipo_tributo_imposto_importacao',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.IMPOSTO_IMPORTACAO)\n }\n );\n break;\n case EnumTipoDocumento.NF_ENTRADA_CONTROLADORIA:\n item.unshift(\n {\n name: EnumTipoTributo.IMPOSTO_IMPORTACAO,\n label: 'erpx.tributos.enum_tipo_tributo_imposto_importacao',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.IMPOSTO_IMPORTACAO)\n },\n {\n name: EnumTipoTributo.PIS_RECUPERAR_IMPORTACAO,\n label: 'erpx.tributos.enum_tipo_tributo_pis_recuperar_importacao',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.PIS_RECUPERAR_IMPORTACAO)\n },\n {\n name: EnumTipoTributo.COFINS_RECUPERAR_IMPORTACAO,\n label: 'erpx.tributos.enum_tipo_tributo_cofins_recuperar_importacao',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.COFINS_RECUPERAR_IMPORTACAO)\n }\n );\n break;\n default:\n item.unshift({\n name: EnumTipoTributo.IMPOSTO_IMPORTACAO,\n label: 'erpx.tributos.enum_tipo_tributo_imposto_importacao',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.IMPOSTO_IMPORTACAO)\n }, {\n name: EnumTipoTributo.PIS_RECUPERAR_IMPORTACAO,\n label: 'erpx.tributos.enum_tipo_tributo_pis_recuperar_importacao',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.PIS_RECUPERAR_IMPORTACAO)\n }, {\n name: EnumTipoTributo.COFINS_RECUPERAR_IMPORTACAO,\n label: 'erpx.tributos.enum_tipo_tributo_cofins_recuperar_importacao',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.COFINS_RECUPERAR_IMPORTACAO)\n }\n );\n break;\n }\n\n this.grupos.unshift(\n {\n grupo: `${'erpx.tributos.enum_grupo_tributo_' + EnumGrupoTributo.IMPORTACOES + '_label'}`, item\n });\n return item;\n }\n }\n\n private montaIss(): any[] {\n if (this.menuItemIss == false) {\n this.menuItemIss = true;\n const item: any[] = [];\n switch (this.documento) {\n case EnumTipoDocumento.NF_ENTRADA:\n case EnumTipoDocumento.PEDIDO_COMPRA:\n case EnumTipoDocumento.NF_SAIDA:\n case EnumTipoDocumento.PEDIDO_VENDA:\n item.unshift({\n name: EnumTipoTributo.ISS,\n label: 'erpx.tributos.enum_tipo_tributo_iss',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.ISS)\n }, {\n name: EnumTipoTributo.ISS_RETIDO,\n label: 'erpx.tributos.enum_tipo_tributo_iss_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.ISS_RETIDO)\n }\n );\n break;\n\n case EnumTipoDocumento.NF_SAIDA_CONTROLADORIA:\n item.unshift(\n {\n name: EnumTipoTributo.ISS,\n label: 'erpx.tributos.enum_tipo_tributo_iss',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.ValorDeducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.ISS)\n },\n {\n name: EnumTipoTributo.ISS_RETIDO,\n label: 'erpx.tributos.enum_tipo_tributo_iss_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.ValorDeducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.ISS_RETIDO)\n }\n );\n break;\n\n case EnumTipoDocumento.NF_ENTRADA_CONTROLADORIA:\n item.unshift(\n {\n name: EnumTipoTributo.ISS,\n label: 'erpx.tributos.enum_tipo_tributo_iss',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.ValorDeducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.ISS)\n },\n {\n name: EnumTipoTributo.ISS_RETIDO,\n label: 'erpx.tributos.enum_tipo_tributo_iss_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.ValorDeducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.ISS_RETIDO)\n }\n );\n break;\n\n default:\n break;\n }\n\n this.grupos.unshift({ grupo: `${'erpx.tributos.enum_grupo_tributo_' + EnumGrupoTributo.ISS + '_label'}`, item });\n return item;\n }\n }\n\n private montaPis(): any[] {\n if (this.menuItemPis == false) {\n this.menuItemPis = true;\n const item: any[] = [];\n switch (this.documento) {\n case EnumTipoDocumento.NF_ENTRADA:\n item.unshift({\n name: EnumTipoTributo.PIS_RECUPERAR,\n label: 'erpx.tributos.enum_tipo_tributo_pis_recuperar',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.SituacaoTributaria },\n { campo: EnumCampoTributo.baseCalculoCredito },\n { campo: EnumCampoTributo.RegimeTributarioPisCofins }\n ], EnumTipoTributo.PIS_RECUPERAR)\n }, {\n name: EnumTipoTributo.PIS_DEVOLVIDO,\n label: 'erpx.tributos.enum_tipo_tributo_pis_devolvido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.PIS_DEVOLVIDO)\n }\n );\n break;\n\n case EnumTipoDocumento.PEDIDO_COMPRA:\n item.unshift({\n name: EnumTipoTributo.PIS_RECUPERAR,\n label: 'erpx.tributos.enum_tipo_tributo_pis_recuperar',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.PIS_RECUPERAR)\n }\n );\n break;\n\n case EnumTipoDocumento.NF_SAIDA:\n item.unshift({\n name: EnumTipoTributo.PIS,\n label: 'erpx.tributos.enum_tipo_tributo_pis',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.SituacaoTributaria },\n { campo: EnumCampoTributo.NaturezaReceita },\n { campo: EnumCampoTributo.RegimeTributarioPisCofins }\n ], EnumTipoTributo.PIS)\n }, {\n name: EnumTipoTributo.PIS_DEVOLVIDO,\n label: 'erpx.tributos.enum_tipo_tributo_pis_devolvido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.PIS_DEVOLVIDO)\n }\n );\n break;\n\n case EnumTipoDocumento.PEDIDO_VENDA:\n item.unshift({\n name: EnumTipoTributo.PIS,\n label: 'erpx.tributos.enum_tipo_tributo_pis',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.PIS)\n }\n );\n break;\n\n case EnumTipoDocumento.NF_SAIDA_CONTROLADORIA:\n item.unshift(\n {\n name: EnumTipoTributo.PIS,\n label: 'erpx.tributos.enum_tipo_tributo_pis_faturamento',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.SituacaoTributaria },\n { campo: EnumCampoTributo.NaturezaReceita },\n { campo: EnumCampoTributo.RegimeTributarioPisCofins }\n\n ], EnumTipoTributo.PIS)\n },\n {\n name: EnumTipoTributo.PIS_DEVOLVIDO,\n label: 'erpx.tributos.enum_tipo_tributo_pis_devolvido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.RegimeTributarioPisCofins }\n ], EnumTipoTributo.PIS_DEVOLVIDO)\n }\n );\n break;\n case EnumTipoDocumento.NF_ENTRADA_CONTROLADORIA:\n item.unshift(\n {\n name: EnumTipoTributo.PIS_RECUPERAR,\n label: 'erpx.tributos.enum_tipo_tributo_pis_recuperar',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.SituacaoTributaria },\n { campo: EnumCampoTributo.baseCalculoCredito },\n { campo: EnumCampoTributo.RegimeTributarioPisCofins }\n\n ], EnumTipoTributo.PIS_RECUPERAR)\n },\n {\n name: EnumTipoTributo.PIS_DEVOLVIDO,\n label: 'erpx.tributos.enum_tipo_tributo_pis_devolvido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.RegimeTributarioPisCofins }\n ], EnumTipoTributo.PIS_DEVOLVIDO)\n }\n );\n break;\n\n default:\n break;\n }\n\n this.grupos.unshift({ grupo: `${'erpx.tributos.enum_grupo_tributo_' + EnumGrupoTributo.PIS + '_label'}`, item });\n return item;\n }\n }\n\n private montaCofins(): any[] {\n if (this.menuItemCofins == false) {\n this.menuItemCofins = true;\n const item: any[] = [];\n switch (this.documento) {\n case EnumTipoDocumento.NF_ENTRADA:\n item.unshift({\n name: EnumTipoTributo.COFINS_RECUPERAR,\n label: 'erpx.tributos.enum_tipo_tributo_cofins_recuperar',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.SituacaoTributaria },\n { campo: EnumCampoTributo.baseCalculoCredito },\n { campo: EnumCampoTributo.RegimeTributarioPisCofins }\n ], EnumTipoTributo.COFINS_RECUPERAR)\n }, {\n name: EnumTipoTributo.COFINS_DEVOLVIDO,\n label: 'erpx.tributos.enum_tipo_tributo_cofins_devolvido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.COFINS_DEVOLVIDO)\n }\n );\n break;\n\n case EnumTipoDocumento.PEDIDO_COMPRA:\n item.unshift({\n name: EnumTipoTributo.COFINS_RECUPERAR,\n label: 'erpx.tributos.enum_tipo_tributo_cofins_recuperar',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.COFINS_RECUPERAR)\n }\n );\n break;\n\n case EnumTipoDocumento.NF_SAIDA:\n item.unshift({\n name: EnumTipoTributo.COFINS,\n label: 'erpx.tributos.enum_tipo_tributo_cofins',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.SituacaoTributaria },\n { campo: EnumCampoTributo.NaturezaReceita },\n { campo: EnumCampoTributo.RegimeTributarioPisCofins }\n ], EnumTipoTributo.COFINS)\n }, {\n name: EnumTipoTributo.COFINS_DEVOLVIDO,\n label: 'erpx.tributos.enum_tipo_tributo_cofins_devolvido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.COFINS_DEVOLVIDO)\n }\n );\n break;\n\n case EnumTipoDocumento.PEDIDO_VENDA:\n item.unshift({\n name: EnumTipoTributo.COFINS,\n label: 'erpx.tributos.enum_tipo_tributo_cofins',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.COFINS)\n }\n );\n break;\n\n case EnumTipoDocumento.NF_SAIDA_CONTROLADORIA:\n item.unshift(\n {\n name: EnumTipoTributo.COFINS,\n label: 'erpx.tributos.enum_tipo_tributo_cofins',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.SituacaoTributaria },\n { campo: EnumCampoTributo.NaturezaReceita },\n { campo: EnumCampoTributo.RegimeTributarioPisCofins }\n ], EnumTipoTributo.COFINS)\n },\n {\n name: EnumTipoTributo.COFINS_DEVOLVIDO,\n label: 'erpx.tributos.enum_tipo_tributo_cofins_devolvido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.RegimeTributarioPisCofins }\n ], EnumTipoTributo.COFINS_DEVOLVIDO)\n }\n );\n break;\n\n case EnumTipoDocumento.NF_ENTRADA_CONTROLADORIA:\n item.unshift(\n {\n name: EnumTipoTributo.COFINS_RECUPERAR,\n label: 'erpx.tributos.enum_tipo_tributo_cofins',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.SituacaoTributaria },\n { campo: EnumCampoTributo.baseCalculoCredito },\n { campo: EnumCampoTributo.RegimeTributarioPisCofins }\n ], EnumTipoTributo.COFINS_RECUPERAR)\n },\n {\n name: EnumTipoTributo.COFINS_DEVOLVIDO,\n label: 'erpx.tributos.enum_tipo_tributo_cofins_devolvido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.RegimeTributarioPisCofins }\n ], EnumTipoTributo.COFINS_DEVOLVIDO)\n }\n );\n break;\n\n default:\n break;\n }\n\n this.grupos.unshift(\n {\n grupo: `${'erpx.tributos.enum_grupo_tributo_' + EnumGrupoTributo.COFINS + '_label'}`, item\n });\n return item;\n }\n\n }\n\n private montaIpi(): any[] {\n if (this.menuItemIpi == false) {\n this.menuItemIpi = true;\n const item: any[] = [];\n switch (this.documento) {\n case EnumTipoDocumento.NF_ENTRADA:\n item.unshift({\n name: EnumTipoTributo.IPI,\n label: 'erpx.tributos.enum_tipo_tributo_ipi',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.ValorIsentas },\n { campo: EnumCampoTributo.ValorOutras },\n { campo: EnumCampoTributo.SituacaoTributaria },\n { campo: EnumCampoTributo.EnquadramentoIpi }\n ], EnumTipoTributo.IPI)\n }, {\n name: EnumTipoTributo.IPI_CREDITADO,\n label: 'erpx.tributos.enum_tipo_tributo_ipi_creditado',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.IPI_CREDITADO)\n }, {\n name: EnumTipoTributo.IPI_DEVOLVIDO,\n label: 'erpx.tributos.enum_tipo_tributo_ipi_devolvido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.IPI_DEVOLVIDO)\n }, {\n name: EnumTipoTributo.IPI_OUTRAS_DESPESAS,\n label: 'erpx.tributos.enum_tipo_tributo_ipi_outras_despesas',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.IPI_OUTRAS_DESPESAS)\n }, {\n name: EnumTipoTributo.IPI_PRESUMIDO,\n label: 'erpx.tributos.enum_tipo_tributo_ipi_presumido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.IPI_PRESUMIDO)\n }\n );\n break;\n\n case EnumTipoDocumento.PEDIDO_COMPRA:\n item.unshift({\n name: EnumTipoTributo.IPI,\n label: 'erpx.tributos.enum_tipo_tributo_ipi',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.IPI)\n }, {\n name: EnumTipoTributo.IPI_CREDITADO,\n label: 'erpx.tributos.enum_tipo_tributo_ipi_creditado',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.IPI_CREDITADO)\n }, {\n name: EnumTipoTributo.IPI_PRESUMIDO,\n label: 'erpx.tributos.enum_tipo_tributo_ipi_presumido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.IPI_PRESUMIDO)\n }\n );\n break;\n\n case EnumTipoDocumento.NF_SAIDA:\n if (this.devolvido)\n item.unshift({\n name: EnumTipoTributo.IPI_PRESUMIDO,\n label: 'erpx.tributos.enum_tipo_tributo_ipi_presumido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.IPI_PRESUMIDO)\n });\n item.unshift({\n name: EnumTipoTributo.IPI,\n label: 'erpx.tributos.enum_tipo_tributo_ipi',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.ValorIsentas },\n { campo: EnumCampoTributo.ValorOutras },\n { campo: EnumCampoTributo.SituacaoTributaria },\n { campo: EnumCampoTributo.EnquadramentoIpi }\n ], EnumTipoTributo.IPI)\n }, {\n name: EnumTipoTributo.IPI_DEVOLVIDO,\n label: 'erpx.tributos.enum_tipo_tributo_ipi_devolvido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.IPI_DEVOLVIDO)\n }\n );\n break;\n\n case EnumTipoDocumento.PEDIDO_VENDA:\n item.unshift({\n name: EnumTipoTributo.IPI,\n label: 'erpx.tributos.enum_tipo_tributo_ipi',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.IPI)\n }\n );\n break;\n\n case EnumTipoDocumento.NF_SAIDA_CONTROLADORIA:\n item.unshift(\n {\n name: EnumTipoTributo.IPI,\n label: 'erpx.tributos.enum_tipo_tributo_ipi',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.ValorIsentas },\n { campo: EnumCampoTributo.ValorOutras },\n { campo: EnumCampoTributo.SituacaoTributaria },\n { campo: EnumCampoTributo.EnquadramentoIpi },\n { campo: EnumCampoTributo.Observacao }\n ], EnumTipoTributo.IPI)\n },\n {\n name: EnumTipoTributo.IPI_PRESUMIDO,\n label: 'erpx.tributos.enum_tipo_tributo_ipi_presumido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.IPI_PRESUMIDO)\n },\n {\n name: EnumTipoTributo.IPI_DEVOLVIDO,\n label: 'erpx.tributos.enum_tipo_tributo_ipi_devolvido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.IPI_DEVOLVIDO)\n }\n );\n break;\n\n case EnumTipoDocumento.NF_ENTRADA_CONTROLADORIA:\n item.unshift(\n {\n name: EnumTipoTributo.IPI,\n label: 'erpx.tributos.enum_tipo_tributo_ipi',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.ValorIsentas },\n { campo: EnumCampoTributo.ValorOutras },\n { campo: EnumCampoTributo.ImpostoNaoRecuperado },\n { campo: EnumCampoTributo.SituacaoTributaria },\n { campo: EnumCampoTributo.EnquadramentoIpi },\n { campo: EnumCampoTributo.Observacao }\n ], EnumTipoTributo.IPI)\n },\n {\n name: EnumTipoTributo.IPI_PRESUMIDO,\n label: 'erpx.tributos.enum_tipo_tributo_ipi_presumido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.IPI_PRESUMIDO)\n },\n );\n break;\n\n default:\n break;\n }\n\n this.grupos.unshift({ grupo: `${'erpx.tributos.enum_grupo_tributo_' + EnumGrupoTributo.IPI + '_label'}`, item });\n return item;\n }\n }\n\n private setVariableRequired(tributo: EnumTipoTributo) {\n switch (tributo) {\n case EnumTipoTributo.CIDE_TECNOLOGIA:\n return this.requiredItemCideTecnologia;\n case EnumTipoTributo.PIS_RECUPERAR:\n return this.requiredItemPisRecuperar;\n case EnumTipoTributo.PIS_DEVOLVIDO:\n return this.requiredItemPisDevolvido;\n case EnumTipoTributo.COFINS_RECUPERAR:\n return this.requiredItemCofinsRecuperar;\n case EnumTipoTributo.COFINS_DEVOLVIDO:\n return this.requiredItemCofinsDevolvido;\n case EnumTipoTributo.IPI:\n return this.requiredItemIpi;\n case EnumTipoTributo.IPI_CREDITADO:\n return this.requiredItemIpiCreditado;\n case EnumTipoTributo.IPI_DEVOLVIDO:\n return this.requiredItemIpiDevolvido;\n case EnumTipoTributo.IPI_OUTRAS_DESPESAS:\n return this.requiredItemIpiOutrasDespesas;\n case EnumTipoTributo.IPI_PRESUMIDO:\n return this.requiredItemIpiPresumido;\n case EnumTipoTributo.ISS:\n return this.requiredItemIss;\n case EnumTipoTributo.ISS_RETIDO:\n return this.requiredItemIssRetido;\n case EnumTipoTributo.IMPOSTO_IMPORTACAO:\n return this.requiredItemImpostoImportacao;\n case EnumTipoTributo.PIS_RECUPERAR_IMPORTACAO:\n return this.requiredItemPisRecuperarImportacao;\n case EnumTipoTributo.COFINS_RECUPERAR_IMPORTACAO:\n return this.requiredItemCofinsRecuperarImportacao;\n case EnumTipoTributo.PIS_RETIDO:\n return this.requiredItemPisRetido;\n case EnumTipoTributo.COFINS_RETIDO:\n return this.requiredItemCofinsRetido;\n case EnumTipoTributo.CSLL:\n return this.requiredItemCsllRetido;\n case EnumTipoTributo.IRRF:\n return this.requiredItemIrrfRetido;\n case EnumTipoTributo.INSS:\n return this.requiredItemInssRetido;\n case EnumTipoTributo.INSS_PATRONAL:\n return this.requiredItemInssPatronal;\n case EnumTipoTributo.ICMS_ST:\n return this.requiredItemIcmsSt;\n case EnumTipoTributo.FCP_ST:\n return this.requiredItemFcpSt;\n case EnumTipoTributo.ICMS_COBRADO_ANTERIORMENTE_ST:\n return this.requiredItemIcmsCobradoAnteriormente;\n case EnumTipoTributo.FCP_COBRADO_ANTERIORMENTE_ST:\n return this.requiredItemFcpCobradoAnteriormente;\n case EnumTipoTributo.ICMS:\n return this.requiredItemIcms;\n case EnumTipoTributo.ICMS_CREDITADO:\n return this.requiredItemIcmsEfetivamenteCreditado;\n case EnumTipoTributo.FCP:\n return this.requiredItemFcp;\n case EnumTipoTributo.ICMS_DIFERIDO:\n return this.requiredItemIcmsDiferido;\n case EnumTipoTributo.ICMS_DESONERADO:\n return this.requiredItemIcmsDesonerado;\n case EnumTipoTributo.DIFAL:\n return this.requiredItemDiferencialAlicota;\n case EnumTipoTributo.PIS:\n return this.requiredItemPisFaturemento;\n case EnumTipoTributo.COFINS:\n return this.requiredItemCofinsFaturemento;\n case EnumTipoTributo.ICMS_UF_DESTINO:\n return this.requiredItemIcmsUfDestino;\n case EnumTipoTributo.FCP_UF_DESTINO:\n return this.requiredItemFcpUfDestino;\n case EnumTipoTributo.ICMS_ST:\n return this.requiredSituacaoTributaria;\n case EnumTipoTributo.ICMS_FUTURO:\n return this.requiredIcmsFuturo;\n case EnumTipoTributo.ICMS_SIMPLES:\n return this.requiredIcmsSimples;\n case EnumTipoTributo.DIFAL_DEVOLVIDO:\n return this.requiredDifalDevolvido;\n case EnumTipoTributo.ICMS_UF_DESTINO_DEVOLVIDO:\n return this.requiredICMS_UF_Destino_Devolvido;\n case EnumTipoTributo.FCP_UF_DESTINO_DEVOLVIDO:\n return this.requiredFCP_UF_Destino_Devolvido;\n case EnumTipoTributo.PIS_FATURAMENTO:\n return this.requiredItemPisFaturamento;\n case EnumTipoTributo.IMPOSTO_NAO_RECUPERADO:\n return this.requiredImpostoNaoRecuperado;\n case EnumTipoTributo.BASE_CALCULO_CREDITO:\n return this.requiredbaseCalculoCredito;\n case EnumTipoTributo.PERCENTUAL_REDUCAO:\n return this.requiredPercentualReducao;\n case EnumTipoTributo.ICMS_ST_SOLIDARIO:\n return this.requiredIcmsStSolidario;\n case EnumTipoTributo.ICMS_ST_RETIDO_ANT:\n return this.requiredIcmsStRetidoAnt;\n case EnumTipoTributo.FCP_ST_RETIDO_ANT:\n return this.requiredFcpStReditoAnt;\n default:\n break;\n }\n }\n\n private setRequired(tributo: EnumTipoTributo, value: boolean) {\n switch (tributo) {\n case EnumTipoTributo.CIDE_TECNOLOGIA: {\n this.requiredItemCideTecnologia = value;\n break;\n }\n case EnumTipoTributo.PIS_RECUPERAR: {\n this.requiredItemPisRecuperar = value;\n break;\n }\n case EnumTipoTributo.PIS_DEVOLVIDO: {\n this.requiredItemPisDevolvido = value;\n break;\n }\n case EnumTipoTributo.COFINS_RECUPERAR: {\n this.requiredItemCofinsRecuperar = value;\n break;\n }\n case EnumTipoTributo.COFINS_DEVOLVIDO: {\n this.requiredItemCofinsDevolvido = value;\n break;\n }\n case EnumTipoTributo.IPI: {\n this.requiredItemIpi = value;\n break;\n }\n case EnumTipoTributo.IPI_CREDITADO: {\n this.requiredItemIpiCreditado = value;\n break;\n }\n case EnumTipoTributo.IPI_DEVOLVIDO: {\n this.requiredItemIpiDevolvido = value;\n break;\n }\n case EnumTipoTributo.IPI_OUTRAS_DESPESAS: {\n this.requiredItemIpiOutrasDespesas = value;\n break;\n }\n case EnumTipoTributo.IPI_PRESUMIDO: {\n this.requiredItemIpiPresumido = value;\n break;\n }\n case EnumTipoTributo.ISS: {\n this.requiredItemIss = value;\n break;\n }\n case EnumTipoTributo.ISS_RETIDO: {\n this.requiredItemIssRetido = value;\n break;\n }\n case EnumTipoTributo.IMPOSTO_IMPORTACAO: {\n this.requiredItemImpostoImportacao = value;\n break;\n }\n case EnumTipoTributo.PIS_RECUPERAR_IMPORTACAO: {\n this.requiredItemPisRecuperarImportacao = value;\n break;\n }\n case EnumTipoTributo.COFINS_RECUPERAR_IMPORTACAO: {\n this.requiredItemCofinsRecuperarImportacao = value;\n break;\n }\n case EnumTipoTributo.PIS_RETIDO: {\n this.requiredItemPisRetido = value;\n break;\n }\n case EnumTipoTributo.COFINS_RETIDO: {\n this.requiredItemCofinsRetido = value;\n break;\n }\n case EnumTipoTributo.CSLL: {\n this.requiredItemCsllRetido = value;\n break;\n }\n case EnumTipoTributo.IRRF: {\n this.requiredItemIrrfRetido = value;\n break;\n }\n case EnumTipoTributo.INSS: {\n this.requiredItemInssRetido = value;\n break;\n }\n case EnumTipoTributo.INSS_PATRONAL: {\n this.requiredItemInssPatronal = value;\n break;\n }\n case EnumTipoTributo.ICMS_ST: {\n this.requiredItemIcmsSt = value;\n break;\n }\n case EnumTipoTributo.FCP_ST: {\n this.requiredItemFcpSt = value;\n break;\n }\n case EnumTipoTributo.ICMS_COBRADO_ANTERIORMENTE_ST: {\n this.requiredItemIcmsCobradoAnteriormente = value;\n break;\n }\n case EnumTipoTributo.FCP_COBRADO_ANTERIORMENTE_ST: {\n this.requiredItemFcpCobradoAnteriormente = value;\n break;\n }\n case EnumTipoTributo.ICMS: {\n this.requiredItemIcms = value;\n break;\n }\n case EnumTipoTributo.ICMS_CREDITADO: {\n this.requiredItemIcmsEfetivamenteCreditado = value;\n break;\n }\n case EnumTipoTributo.FCP: {\n this.requiredItemFcp = value;\n break;\n }\n case EnumTipoTributo.ICMS_DIFERIDO: {\n this.requiredItemIcmsDiferido = value;\n break;\n }\n case EnumTipoTributo.ICMS_DESONERADO: {\n this.requiredItemIcmsDesonerado = value;\n break;\n }\n case EnumTipoTributo.DIFAL: {\n this.requiredItemDiferencialAlicota = value;\n break;\n }\n case EnumTipoTributo.PIS: {\n this.requiredItemPisFaturemento = value;\n break;\n }\n case EnumTipoTributo.COFINS: {\n this.requiredItemCofinsFaturemento = value;\n break;\n }\n case EnumTipoTributo.FCP_UF_DESTINO: {\n this.requiredItemFcpUfDestino = value;\n break;\n }\n case EnumTipoTributo.ICMS_UF_DESTINO: {\n this.requiredItemIcmsUfDestino = value;\n break;\n }\n case EnumTipoTributo.ICMS_ST: {\n this.requiredSituacaoTributaria = value;\n break;\n }\n case EnumTipoTributo.ICMS_FUTURO: {\n this.requiredIcmsFuturo = value;\n break;\n }\n case EnumTipoTributo.ICMS_SIMPLES: {\n this.requiredIcmsSimples = value;\n break;\n }\n case EnumTipoTributo.ICMS_ST_SOLIDARIO: {\n this.requiredIcmsStSolidario = value;\n break;\n }\n case EnumTipoTributo.ICMS_ST_RETIDO_ANT: {\n this.requiredIcmsStRetidoAnt = value;\n break;\n }\n case EnumTipoTributo.FCP_ST_RETIDO_ANT: {\n this.requiredFcpStReditoAnt = value;\n break;\n }\n case EnumTipoTributo.DIFAL_DEVOLVIDO: {\n this.requiredDifalDevolvido = value;\n break;\n }\n case EnumTipoTributo.ICMS_UF_DESTINO_DEVOLVIDO: {\n this.requiredICMS_UF_Destino_Devolvido = value;\n break;\n }\n case EnumTipoTributo.FCP_UF_DESTINO_DEVOLVIDO: {\n this.requiredFCP_UF_Destino_Devolvido = value;\n break;\n }\n case EnumTipoTributo.PIS_FATURAMENTO: {\n this.requiredItemPisFaturamento = value;\n break;\n }\n\n default:\n break;\n }\n this.requiredSituacaoTributaria = value;\n }\n\n private impostoCalculado(imposto: EnumTipoTributo): boolean {\n return imposto != EnumTipoTributo.DIFAL &&\n imposto != EnumTipoTributo.ICMS_ST &&\n imposto != EnumTipoTributo.ICMS_ST_SOLIDARIO &&\n imposto != EnumTipoTributo.FCP_ST &&\n imposto != EnumTipoTributo.ICMS_ST_FUTURO &&\n imposto != EnumTipoTributo.DIFAL_DEVOLVIDO &&\n imposto != EnumTipoTributo.ICMS_DIFERIDO &&\n imposto != EnumTipoTributo.ICMS_UF_DESTINO &&\n imposto != EnumTipoTributo.ICMS_COBRADO_ANTERIORMENTE_ST &&\n imposto != EnumTipoTributo.FCP_COBRADO_ANTERIORMENTE_ST &&\n imposto != EnumTipoTributo.FCP_ST_RETIDO_ANT &&\n imposto != EnumTipoTributo.FUNRURAL_TOTAL;\n }\n\n private roundImposto(number: any, decimals: any) {\n const x = Math.pow(10, Number(decimals) + 1);\n return (Number(number) + (1 / x)).toFixed(decimals);\n }\n\n private calcularValor(tributo: EnumTipoTributo) {\n if (this.grupos && this.grupos != undefined && this.grupos.length > 0) {\n this.grupos.map(\n grupo => {\n grupo.item\n .filter((it: any) => it.name == tributo)\n .map((it: any) => {\n let hasValue = false;\n Object.keys(it.formGroup.value).forEach((item: any) => {\n if (it.formGroup.value[item] != undefined) {\n hasValue = true;\n return;\n }\n });\n\n if (hasValue && this.impostoCalculado(tributo)) {\n if ((it.formGroup.controls.baseCalculo != undefined) &&\n (it.formGroup.controls.aliquota != undefined)) {\n\n if (tributo != EnumTipoTributo.ICMS_UF_DESTINO) {\n if ((tributo == EnumTipoTributo.ICMS) &&\n ((it.formGroup.controls.situacaoTributaria == undefined) ||\n (it.formGroup.controls.situacaoTributaria.value == undefined))) {\n\n const base = it.formGroup.controls.baseCalculo.value;\n const aliquota = it.formGroup.controls.aliquota.value;\n\n if ((base != undefined) && (aliquota != undefined))\n it.formGroup.controls.valor.patchValue(this.roundImposto(((base * aliquota) / 100), 2));\n\n } else if ((tributo == EnumTipoTributo.ICMS) &&\n (it.formGroup.controls.situacaoTributaria.value.codStr != '51')) {\n\n const base = it.formGroup.controls.baseCalculo.value;\n const aliquota = it.formGroup.controls.aliquota.value;\n\n if ((base != undefined) && (aliquota != undefined))\n it.formGroup.controls.valor.patchValue(this.roundImposto(((base * aliquota) / 100), 2));\n\n } else if (\n tributo === EnumTipoTributo.FUNRURAL_INSS ||\n tributo === EnumTipoTributo.FUNRURAL_RAT ||\n tributo === EnumTipoTributo.FUNRURAL_SENAR\n ) {\n const base = it.formGroup.get(\"baseCalculo\").value ?? null;\n const aliquota = it.formGroup.get(\"aliquota\").value ?? null;\n\n it.formGroup.controls.valor.patchValue(Math.floor((base * aliquota)) / 100);\n\n } else if (tributo != EnumTipoTributo.ICMS) {\n const base = it.formGroup.controls.baseCalculo.value;\n const aliquota = it.formGroup.controls.aliquota.value;\n\n if ((base != undefined) && (aliquota != undefined))\n it.formGroup.controls.valor.patchValue(this.roundImposto(((base * aliquota) / 100), 2));\n\n }\n }\n\n if (\n tributo === EnumTipoTributo.FUNRURAL_INSS ||\n tributo === EnumTipoTributo.FUNRURAL_RAT ||\n tributo === EnumTipoTributo.FUNRURAL_SENAR\n ) {\n let impostos = ['FUNRURAL_INSS', 'FUNRURAL_RAT', 'FUNRURAL_SENAR'];\n let controleFunrural = this.calcularFunruralTotal(impostos, grupo)\n\n if (controleFunrural.baseDiferente) {\n this.messageService.add({\n severity: \"warn\",\n summary: this.translate.instant(\n \"erpx.tributos.error_base_funrural_diferente_summary\"\n ),\n detail: this.translate.instant(\n \"erpx.tributos.error_base_funrural_diferente_detail\"\n ),\n });\n }\n\n const funruralTotal = grupo.item.find(\n (item) => item.name === \"FUNRURAL_TOTAL\"\n );\n\n funruralTotal.formGroup.setValue(\n {\n baseCalculo: controleFunrural.funBase,\n valor: controleFunrural.funValor,\n impostoManual: true\n },\n { emitEvent: false }\n );\n }\n\n }\n }\n });\n }\n );\n }\n }\n\n private calcularFunruralTotal(impostos: any, grupo) {\n let valores = {\n funBase: 0,\n funValor: 0,\n baseDiferente: false,\n };\n\n for (let index = 0; index < impostos.length; index++) {\n const funruralImposto = grupo.item.find(item => item.name === impostos[index]);\n\n if (funruralImposto.formGroup.value.baseCalculo != undefined) {\n if (valores.funBase > 0 && valores.funBase != funruralImposto.formGroup.value.baseCalculo) {\n valores.baseDiferente = true;\n }\n\n valores.funBase = funruralImposto.formGroup.value.baseCalculo > valores.funBase ? funruralImposto.formGroup.value.baseCalculo : valores.funBase;\n }\n\n if (funruralImposto.formGroup.value.valor != undefined) {\n valores.funValor = Number(this.roundImposto(Number(valores.funValor) + Number(funruralImposto.formGroup.value.valor), 2));\n }\n }\n\n return valores;\n }\n\n private montaCampos(campos: CampoTributo[], tributo: EnumTipoTributo) {\n const retorno: any = {};\n const formField: FormField[] = [];\n let formGroup: any = {};\n let movimento = '';\n\n if (this.documento == EnumTipoDocumento.NF_ENTRADA ||\n this.documento == EnumTipoDocumento.PEDIDO_COMPRA ||\n this.documento == EnumTipoDocumento.NF_ENTRADA_CONTROLADORIA)\n movimento = 'VENTRADA';\n else\n movimento = 'VSAIDA';\n\n campos.map(it => {\n\n if (it.campo == EnumCampoTributo.BaseCalculo) {\n formGroup = {\n ...formGroup,\n baseCalculo: [\n {\n value: undefined,\n disabled: false\n }, Validators.compose([Validators.max(9999999999999.99)])]\n };\n\n formField.push(\n new FormField({\n id: tributo + 'BaseCalculo',\n name: 'baseCalculo',\n label: this.translate.instant('erpx.tributos.fields_base_label'),\n type: FieldType.Money,\n precision: 15,\n scale: 2,\n numberLocaleOptions: this.currencyLocaleOptions,\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onBlur: () => {\n this.calcularValor(tributo);\n this.backValue();\n this.setValidators(tributo);\n },\n errorMessages: () => ({\n required: this.translate.instant('erpx.tributos.fields_required_validator')\n }),\n required: () => this.setVariableRequired(tributo)\n })\n );\n } else if (it.campo == EnumCampoTributo.Aliquota) {\n formGroup = {\n ...formGroup,\n aliquota: [\n {\n value: undefined,\n disabled: false\n }, Validators.compose([Validators.max(999.9999)])\n ]\n };\n\n formField.push(\n new FormField({\n id: tributo + 'Aliquota',\n name: 'aliquota',\n label: this.getLabelAliquota(tributo),\n type: FieldType.Money,\n precision: 7,\n scale: 4,\n numberLocaleOptions: { currencySymbol: '%', decimalSeparator: ',', thousandsSeparator: '.' },\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onBlur: () => {\n this.calcularValor(tributo);\n this.backValue();\n this.setValidators(tributo);\n },\n errorMessages: () => ({\n required: this.translate.instant('erpx.tributos.fields_required_validator')\n }),\n required: () => this.setVariableRequired(tributo)\n })\n );\n } else if (it.campo == EnumCampoTributo.AliquotaInterna) {\n formGroup = {\n ...formGroup,\n aliquotaInterna: [\n {\n value: undefined,\n disabled: false\n }, Validators.compose([Validators.max(999.9999)])\n ]\n };\n\n formField.push(\n new FormField({\n id: tributo + 'AliquotaInterna',\n name: 'aliquotaInterna',\n label: this.translate.instant('erpx.tributos.fields_aliquota_interna_label'),\n type: FieldType.Money,\n precision: 7,\n scale: 4,\n numberLocaleOptions: { currencySymbol: '%', decimalSeparator: ',', thousandsSeparator: '.' },\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onBlur: () => {\n // this.calcularValor(tributo);\n this.backValue();\n this.setValidators(tributo);\n },\n errorMessages: () => ({\n required: this.translate.instant('erpx.tributos.fields_required_validator')\n }),\n required: () => this.setVariableRequired(tributo)\n })\n );\n } else if (it.campo == EnumCampoTributo.AliquotaInternaDestino) {\n formGroup = {\n ...formGroup,\n aliquotaInternaDestino: [\n {\n value: undefined, disabled: false\n }, Validators.compose([Validators.max(999.9999)])\n ]\n };\n\n formField.push(\n new FormField({\n id: tributo + 'AliquotaInternaDestino',\n name: 'aliquotaInternaDestino',\n label: this.translate.instant('erpx.tributos.fields_aliquota_interna_destino_label'),\n type: FieldType.Money,\n precision: 7,\n scale: 4,\n numberLocaleOptions: { currencySymbol: '%', decimalSeparator: ',', thousandsSeparator: '.' },\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onBlur: () => {\n // this.calcularValor(tributo);\n this.backValue();\n this.setValidators(tributo);\n },\n errorMessages: () => ({\n required: this.translate.instant('erpx.tributos.fields_required_validator')\n }),\n required: () => this.setVariableRequired(tributo)\n })\n );\n } else if (it.campo == EnumCampoTributo.Valor) {\n formGroup = {\n ...formGroup,\n valor: [\n {\n value: undefined,\n disabled: false\n }, Validators.compose([Validators.max(9999999999999.99)])\n ]\n };\n\n formField.push(\n new FormField({\n id: tributo + 'Valor',\n name: 'valor',\n label: this.translate.instant('erpx.tributos.fields_valor_label'),\n type: FieldType.Money,\n precision: 15,\n scale: 2,\n numberLocaleOptions: this.currencyLocaleOptions,\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onBlur: () => {\n this.backValue();\n this.setValidators(tributo);\n },\n errorMessages: () => ({\n required: this.translate.instant('erpx.tributos.fields_required_validator'),\n max: this.translate.instant('erpx.tributos.fields_max_validator')\n }),\n required: () => this.setVariableRequired(tributo)\n })\n );\n } else if (it.campo == EnumCampoTributo.ValorIsentas) {\n formGroup = {\n ...formGroup,\n valorIsentas: [\n {\n value: undefined,\n disabled: false\n }, Validators.compose([Validators.max(9999999999999.99)])\n ]\n };\n\n formField.push(\n new FormField({\n id: tributo + 'ValorIsentas',\n name: 'valorIsentas',\n label: this.translate.instant('erpx.tributos.fields_valor_isentas_label'),\n type: FieldType.Money,\n precision: 15,\n scale: 2,\n numberLocaleOptions: this.currencyLocaleOptions,\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onBlur: () => {\n this.backValue();\n this.setValidators(tributo);\n },\n errorMessages: () => ({\n required: this.translate.instant('erpx.tributos.fields_required_validator')\n }),\n required: () => this.setVariableRequired(tributo)\n })\n );\n } else if (it.campo == EnumCampoTributo.ValorOutras) {\n formGroup = {\n ...formGroup,\n valorOutras: [\n {\n value: undefined,\n disabled: false\n }, Validators.compose([Validators.max(9999999999999.99)])\n ]\n };\n\n formField.push(\n new FormField({\n id: tributo + 'ValorOutras',\n name: 'valorOutras',\n label: this.translate.instant('erpx.tributos.fields_valor_outras_label'),\n type: FieldType.Money,\n precision: 15,\n scale: 2,\n numberLocaleOptions: this.currencyLocaleOptions,\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onBlur: () => {\n this.backValue();\n this.setValidators(tributo);\n },\n errorMessages: () => ({\n required: this.translate.instant('erpx.tributos.fields_required_validator')\n }),\n required: () => this.setVariableRequired(tributo)\n })\n );\n } else if (it.campo == EnumCampoTributo.SituacaoTributaria) {\n formGroup = { ...formGroup, situacaoTributaria: [{ value: undefined, disabled: false }, Validators.compose([])] };\n\n let searchGridFields!: FormField[];\n if (this.documento === EnumTipoDocumento.NF_SAIDA_CONTROLADORIA) {\n searchGridFields = [\n {\n name: 'codStr',\n type: FieldType.String\n }, {\n name: 'desStr',\n type: FieldType.String\n },\n {\n name: 'tipImp',\n type: FieldType.Enum,\n options: [\n {\n label: this.translate.instant('erpx.tributos.enum.tip_imp_pis_cofins'),\n value: EnumTipImpCst.PIS_COFINS\n },\n {\n label: this.translate.instant('erpx.tributos.enum.tip_imp_ipi'),\n value: EnumTipImpCst.IPI\n },\n {\n label: this.translate.instant('erpx.tributos.enum.tip_imp_icms'),\n value: EnumTipImpCst.ICMS\n },\n {\n label: this.translate.instant('erpx.tributos.enum.tip_imp_iss'),\n value: EnumTipImpCst.ISS\n }\n ]\n },\n {\n name: 'tipOpe',\n type: FieldType.Enum,\n options: [\n {\n label: this.translate.instant('erpx.tributos.enum.tip_ope_v_saida'),\n value: EnumTipOpe.VSAIDA\n },\n {\n label: this.translate.instant('erpx.tributos.enum.tip_ope_v_entrada'),\n value: EnumTipOpe.VENTRADA\n },\n {\n label: this.translate.instant('erpx.tributos.enum.tip_ope_v_ambos'),\n value: EnumTipOpe.VAMBOS\n }\n ]\n }\n ];\n }\n\n formField.push(\n new FormField({\n ...this.e027StrLookup.mountOptions({\n multiple: false,\n domain: this.dominio,\n service: this.servico,\n searchGridFields,\n formGroup: 'situacaoTributaria',\n defaultFilter: [{ field: 'excluido', operator: EnumLogicalOperator.Eq, values: ['false'] },\n { field: 'tipImp', operator: EnumLogicalOperator.Eq, values: [this.filterByImposto(tributo)] },\n { field: 'tipOpe', operator: EnumLogicalOperator.Eq, values: [movimento, 'VAMBOS'] },\n { field: 'situacao', operator: EnumLogicalOperator.Eq, values: ['VATIVO'] }]\n }),\n onBlur: () => {\n this.backValue();\n this.setValidators(tributo);\n },\n id: tributo + 'SituacaoTributaria',\n label: this.translate.instant('erpx.tributos.fields_situacao_tributaria_label'),\n size: { sm: 12, md: 6, lg: 6, xl: 3 },\n required: () => this.setVariableRequired(tributo)\n }),\n\n );\n } else if (it.campo == EnumCampoTributo.EnquadramentoIpi) {\n formGroup = { ...formGroup, enquadramentoIpi: [{ value: undefined, disabled: false }, Validators.compose([])] };\n\n formField.push(\n new FormField({\n ...this.e027eqiLookup.mountOptions({\n multiple: false,\n domain: this.dominio,\n service: this.servico,\n entity: 'e027eqi',\n formGroup: 'enquadramentoIpi',\n defaultFilter: [{ field: 'situacao', operator: EnumLogicalOperator.Eq, values: ['VATIVO'] },\n { field: 'excluido', operator: EnumLogicalOperator.Eq, values: ['false'] },\n ]\n }),\n id: tributo + 'EnquadramentoIpi',\n label: this.translate.instant('erpx.tributos.fields_enquadramento_ipi_label'),\n size: { sm: 12, md: 6, lg: 6, xl: 3 },\n onBlur: () => {\n this.backValue();\n this.setValidators(tributo);\n },\n errorMessages: () => ({\n required: this.translate.instant('erpx.tributos.fields_required_validator')\n }),\n required: () => this.setVariableRequired(tributo)\n })\n );\n } else if (it.campo == EnumCampoTributo.PercentualReducao) {\n formGroup = {\n ...formGroup,\n percentualReducao: [\n {\n value: undefined,\n disabled: false\n }, Validators.compose([Validators.max(100)])\n ]\n };\n\n formField.push(\n new FormField({\n id: tributo + 'PercentualReducao',\n name: 'percentualReducao',\n label: this.translate.instant('erpx.tributos.fields_percentual_reducao_label'),\n type: FieldType.Money,\n precision: 7,\n scale: 4,\n numberLocaleOptions: { currencySymbol: '%', decimalSeparator: ',', thousandsSeparator: '.' },\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onBlur: () => {\n this.backValue();\n this.setValidators(tributo);\n },\n errorMessages: () => ({\n max: this.translate.instant('erpx.tributos.fields_max_validator', { value: 100 }),\n required: this.translate.instant('erpx.tributos.fields_required_validator')\n }),\n required: () => this.setVariableRequired(tributo)\n })\n );\n } else if (it.campo == EnumCampoTributo.PercentualMargemValorAdicionado) {\n formGroup = {\n ...formGroup,\n percentualMargemValorAdicionado: [\n {\n value: undefined,\n disabled: false\n }, Validators.compose([Validators.max(1000)])\n ]\n };\n\n formField.push(\n new FormField({\n id: tributo + 'PercentualMargemValorAdicionado',\n name: 'percentualMargemValorAdicionado',\n label: this.translate.instant('erpx.tributos.fields_percentual_mva_label'),\n type: FieldType.Money,\n precision: 7,\n scale: 4,\n numberLocaleOptions: { currencySymbol: '%', decimalSeparator: ',', thousandsSeparator: '.' },\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onBlur: () => {\n this.backValue();\n this.setValidators(tributo);\n },\n errorMessages: () => ({\n max: this.translate.instant('erpx.tributos.fields_max_validator', { value: 1000 }),\n required: this.translate.instant('erpx.tributos.fields_required_validator')\n }),\n required: () => this.setVariableRequired(tributo)\n })\n );\n } else if (it.campo == EnumCampoTributo.MotivoDesoneracaoIcms) {\n formGroup = { ...formGroup, desoneracaoIcms: [{ value: undefined, disabled: false }, Validators.compose([])] };\n\n formField.push(\n new FormField({\n id: tributo + 'MotivoDesoneracaoIcms',\n name: 'desoneracaoIcms',\n label: this.translate.instant('erpx.tributos.fields_desoneracao_icms_label'),\n type: FieldType.Enum,\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n options: [\n { label: this.translate.instant('erpx.tributos.enum_mot_des_v_0'), value: EnumMotDes.V0 },\n { label: this.translate.instant('erpx.tributos.enum_mot_des_v_1'), value: EnumMotDes.V1 },\n { label: this.translate.instant('erpx.tributos.enum_mot_des_v_2'), value: EnumMotDes.V2 },\n { label: this.translate.instant('erpx.tributos.enum_mot_des_v_3'), value: EnumMotDes.V3 },\n { label: this.translate.instant('erpx.tributos.enum_mot_des_v_4'), value: EnumMotDes.V4 },\n { label: this.translate.instant('erpx.tributos.enum_mot_des_v_5'), value: EnumMotDes.V5 },\n { label: this.translate.instant('erpx.tributos.enum_mot_des_v_6'), value: EnumMotDes.V6 },\n { label: this.translate.instant('erpx.tributos.enum_mot_des_v_7'), value: EnumMotDes.V7 },\n { label: this.translate.instant('erpx.tributos.enum_mot_des_v_8'), value: EnumMotDes.V8 },\n { label: this.translate.instant('erpx.tributos.enum_mot_des_v_9'), value: EnumMotDes.V9 },\n { label: this.translate.instant('erpx.tributos.enum_mot_des_v_10'), value: EnumMotDes.V10 },\n { label: this.translate.instant('erpx.tributos.enum_mot_des_v_11'), value: EnumMotDes.V11 },\n { label: this.translate.instant('erpx.tributos.enum_mot_des_v_12'), value: EnumMotDes.V12 },\n { label: this.translate.instant('erpx.tributos.enum_mot_des_v_16'), value: EnumMotDes.V16 },\n { label: this.translate.instant('erpx.tributos.enum_mot_des_v_90'), value: EnumMotDes.V90 },\n ],\n placeholder: this.translate.instant('erpx.tributos.fields_desoneracao_icms_placeholder'),\n showClear: true,\n multiple: false,\n onChange: (event: any) => {\n if (!event)\n return;\n this.backValue();\n this.setValidators(tributo);\n },\n errorMessages: () => ({\n required: this.translate.instant('erpx.tributos.fields_required_validator')\n }),\n required: () => this.setVariableRequired(tributo)\n }),\n );\n } else if (it.campo == EnumCampoTributo.Origem) {\n formGroup = { ...formGroup, origem: [{ value: undefined, disabled: false }, Validators.compose([])] };\n\n formField.push(\n new FormField({\n id: tributo + 'Origem',\n name: 'origem',\n type: FieldType.Enum,\n options: [\n { label: this.translate.instant('erpx.tributos.enum_ori_mer_v_0'), value: EnumOriMer.V0 },\n { label: this.translate.instant('erpx.tributos.enum_ori_mer_v_1'), value: EnumOriMer.V1 },\n { label: this.translate.instant('erpx.tributos.enum_ori_mer_v_2'), value: EnumOriMer.V2 },\n { label: this.translate.instant('erpx.tributos.enum_ori_mer_v_3'), value: EnumOriMer.V3 },\n { label: this.translate.instant('erpx.tributos.enum_ori_mer_v_4'), value: EnumOriMer.V4 },\n { label: this.translate.instant('erpx.tributos.enum_ori_mer_v_5'), value: EnumOriMer.V5 },\n { label: this.translate.instant('erpx.tributos.enum_ori_mer_v_6'), value: EnumOriMer.V6 },\n { label: this.translate.instant('erpx.tributos.enum_ori_mer_v_7'), value: EnumOriMer.V7 },\n { label: this.translate.instant('erpx.tributos.enum_ori_mer_v_8'), value: EnumOriMer.V8 },\n ],\n placeholder: this.translate.instant('erpx.tributos.fields_origem_icms_placeholder'),\n showClear: true,\n multiple: false,\n label: this.translate.instant('erpx.tributos.fields_origem_icms_label'),\n size: { sm: 12, md: 6, lg: 6, xl: 3 },\n onChange: (event: any) => {\n if (!event)\n return;\n this.backValue();\n this.setValidators(tributo);\n },\n errorMessages: () => ({\n required: this.translate.instant('erpx.tributos.fields_required_validator')\n }),\n required: () => this.setVariableRequired(tributo)\n }),\n );\n } else if (it.campo == EnumCampoTributo.PercentualDiferimento) {\n formGroup = { ...formGroup, aliquota: [{ value: undefined, disabled: false }, Validators.compose([Validators.max(100)])] };\n\n formField.push(\n new FormField({\n id: tributo + 'PercentualDiferimento',\n name: 'aliquota',\n label: this.translate.instant('erpx.tributos.fields_percentual_diferimento_label'),\n type: FieldType.Money,\n precision: 7,\n scale: 4,\n numberLocaleOptions: { currencySymbol: '%', decimalSeparator: ',', thousandsSeparator: '.' },\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onBlur: () => {\n this.backValue();\n this.setValidators(tributo);\n },\n errorMessages: () => ({\n max: this.translate.instant('erpx.tributos.fields_max_validator', { value: 100 }),\n required: this.translate.instant('erpx.tributos.fields_required_validator')\n }),\n required: () => this.setVariableRequired(tributo)\n })\n );\n } else if (it.campo == EnumCampoTributo.PercentualSuportadoConsumidorFinal) {\n formGroup = {\n ...formGroup,\n percentualSuportadoConsumidorFinal: [\n {\n value: undefined,\n disabled: false\n }, Validators.compose([Validators.max(100)])\n ]\n };\n\n formField.push(\n new FormField({\n id: tributo + 'PercentualSuportadoConsumidorFinal',\n name: 'percentualSuportadoConsumidorFinal',\n label: this.translate.instant('erpx.tributos.fields_percentual_suportado_consumidor_final_label'),\n type: FieldType.Money,\n precision: 7,\n scale: 4,\n numberLocaleOptions: { currencySymbol: '%', decimalSeparator: ',', thousandsSeparator: '.' },\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onBlur: () => {\n this.backValue();\n this.setValidators(tributo);\n },\n errorMessages: () => ({\n max: this.translate.instant('erpx.tributos.fields_max_validator', { value: 100 }),\n required: this.translate.instant('erpx.tributos.fields_required_validator')\n }),\n required: () => this.setVariableRequired(tributo)\n })\n );\n } else if (it.campo == EnumCampoTributo.ValorRecolhidoPeloSubstituto) {\n formGroup = {\n ...formGroup,\n valorRecolhidoIcmsSt: [\n {\n value: undefined,\n disabled: false\n }, Validators.compose([Validators.max(9999999999999.99)])\n ]\n };\n\n formField.push(\n new FormField({\n id: tributo + 'ValorRecolhidoPeloSubstituto',\n name: 'valorRecolhidoIcmsSt',\n label: this.translate.instant('erpx.tributos.fields_valor_recolhido_pelo_substituto_label'),\n type: FieldType.Money,\n precision: 15,\n scale: 2,\n numberLocaleOptions: this.currencyLocaleOptions,\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onBlur: () => {\n this.backValue();\n this.setValidators(tributo);\n },\n errorMessages: () => ({\n required: this.translate.instant('erpx.tributos.fields_required_validator')\n }),\n required: () => this.setVariableRequired(tributo)\n })\n );\n } else if (it.campo == EnumCampoTributo.ValorIcmsStRetido) {\n formGroup = {\n ...formGroup,\n valorIcmsStRetido: [\n {\n value: undefined,\n disabled: false\n }, Validators.compose([Validators.max(99999999999.99)])\n ]\n };\n\n formField.push(\n new FormField({\n id: tributo + 'ValorIcmsStRetido',\n name: 'valorIcmsStRetido',\n label: this.translate.instant('erpx.tributos.fields_valor_icms_st_retido_label'),\n type: FieldType.Money,\n precision: 13,\n scale: 2,\n numberLocaleOptions: this.currencyLocaleOptions,\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onBlur: () => {\n this.backValue();\n this.setValidators(tributo);\n },\n errorMessages: () => ({\n required: this.translate.instant('erpx.tributos.fields_required_validator')\n }),\n required: () => this.setVariableRequired(tributo)\n })\n );\n } else if (it.campo == EnumCampoTributo.ModalidadeBC) {\n formGroup = { ...formGroup, modalidadeBC: [{ value: undefined, disabled: false }, Validators.compose([])] };\n\n formField.push(\n new FormField({\n id: tributo + 'ModalidadeBc',\n name: 'modalidadeBC',\n type: FieldType.Enum,\n options: [\n { label: this.translate.instant('erpx.tributos.enum_modalidade_bc_v_0'), value: EnumModBc.V0 },\n { label: this.translate.instant('erpx.tributos.enum_modalidade_bc_v_1'), value: EnumModBc.V1 },\n { label: this.translate.instant('erpx.tributos.enum_modalidade_bc_v_2'), value: EnumModBc.V2 },\n { label: this.translate.instant('erpx.tributos.enum_modalidade_bc_v_3'), value: EnumModBc.V3 }\n ],\n placeholder: this.translate.instant('erpx.tributos.fields_modalidade_bc_placeholder'),\n showClear: true,\n multiple: false,\n label: this.translate.instant('erpx.tributos.fields_modalidade_bc_label'),\n size: { sm: 12, md: 6, lg: 6, xl: 3 },\n onChange: (event: any) => {\n if (!event)\n return;\n this.backValue();\n this.setValidators(tributo);\n },\n errorMessages: () => ({\n required: this.translate.instant('erpx.tributos.fields_required_validator')\n }),\n required: () => this.setVariableRequired(tributo)\n }),\n );\n } else if (it.campo === EnumCampoTributo.NaturezaReceita) {\n formGroup = { ...formGroup, naturezaReceita: [{ value: undefined, disabled: false }, Validators.compose([])] };\n\n formField.push(\n new FormField({\n ...this.naturezaReceitaLookup.mountOptions({\n multiple: false,\n domain: this.dominio,\n service: this.servico,\n formGroup: 'naturezaReceita',\n lookupSort: [\n { field: 'codigo', order: 1 }\n ],\n searchSort: [\n { field: 'codigo', order: 1 }\n ],\n }),\n onBlur: () => {\n this.backValue();\n this.setValidators(tributo);\n },\n id: tributo + 'NaturezaReceita',\n label: this.translate.instant('erpx.tributos.fields_natureza_receita_label'),\n size: { sm: 12, md: 6, lg: 6, xl: 3 },\n required: () => false\n })\n );\n } else if (it.campo === EnumCampoTributo.Observacao) {\n formGroup = {\n ...formGroup, observacao: [{ value: undefined, disabled: false }, Validators.compose([\n Validators.maxLength(120)\n ])]\n };\n\n formField.push(\n new FormField({\n id: tributo + 'Observacao',\n name: 'observacao',\n label: this.translate.instant('erpx.tributos.fields_observacao_label'),\n type: FieldType.String,\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onBlur: () => {\n this.backValue();\n this.setValidators(tributo);\n },\n errorMessages: () => ({\n maxlength: this.translate.instant('erpx.tributos.fields_max_length_validator')\n }),\n required: () => false\n })\n );\n } else if (it.campo === EnumCampoTributo.ValorDeducao) {\n formGroup = {\n ...formGroup, valorDeducao: [{ value: undefined, disabled: false }, Validators.compose([\n Validators.max(9999999999999.99)\n ])]\n };\n\n formField.push(\n new FormField({\n id: tributo + 'valorDeducao',\n name: 'valorDeducao',\n label: this.translate.instant('erpx.tributos.fields_valor_deducao_label'),\n type: FieldType.Money,\n precision: 15,\n scale: 2,\n numberLocaleOptions: this.currencyLocaleOptions,\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onBlur: () => {\n this.backValue();\n this.setValidators(tributo);\n },\n required: () => false\n })\n );\n } else if (it.campo === EnumCampoTributo.IndicativoAquisicao) {\n formGroup = {\n ...formGroup,\n indicativoAquisicao: [\n { value: null, disabled: false },\n Validators.compose([])\n ]\n };\n\n formField.push(\n new FormField({\n id: tributo + 'IndicativoAquisicao',\n name: 'indicativoAquisicao',\n label: this.translate.instant(\n 'erpx.tributos.fields_indicativo_aquisicao_label'\n ),\n showClear: true,\n type: FieldType.Enum,\n options: [\n {\n value: EnumFunruralIndicativoAquisicao.V1,\n label: this.translate.instant(\n 'erpx.tributos.enum_funrural_indicativo_aquisicao_v1'\n )\n },\n {\n value: EnumFunruralIndicativoAquisicao.V2,\n label: this.translate.instant(\n 'erpx.tributos.enum_funrural_indicativo_aquisicao_v2'\n )\n },\n {\n value: EnumFunruralIndicativoAquisicao.V3,\n label: this.translate.instant(\n 'erpx.tributos.enum_funrural_indicativo_aquisicao_v3'\n )\n },\n {\n value: EnumFunruralIndicativoAquisicao.V4,\n label: this.translate.instant(\n 'erpx.tributos.enum_funrural_indicativo_aquisicao_v4'\n )\n },\n {\n value: EnumFunruralIndicativoAquisicao.V5,\n label: this.translate.instant(\n 'erpx.tributos.enum_funrural_indicativo_aquisicao_v5'\n )\n },\n {\n value: EnumFunruralIndicativoAquisicao.V6,\n label: this.translate.instant(\n 'erpx.tributos.enum_funrural_indicativo_aquisicao_v6'\n )\n },\n {\n value: EnumFunruralIndicativoAquisicao.V7,\n label: this.translate.instant(\n 'erpx.tributos.enum_funrural_indicativo_aquisicao_v7'\n )\n }\n ],\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onChange: () => {\n this.backValue();\n this.setValidators(tributo);\n }\n })\n );\n } else if (it.campo === EnumCampoTributo.CodigoArrecadacao) {\n formGroup = {\n ...formGroup, codigoArrecadacao: [{ value: undefined, disabled: false }, Validators.compose([\n Validators.maxLength(6)\n ])]\n };\n\n formField.push(\n new FormField({\n id: tributo + 'CodigoArrecadacao',\n name: 'codigoArrecadacao',\n label: this.translate.instant('erpx.tributos.fields_codigo_arrecadacao_label'),\n type: FieldType.String,\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onBlur: () => {\n this.backValue();\n this.setValidators(tributo);\n },\n errorMessages: () => ({\n maxlength: this.translate.instant('erpx.tributos.fields_max_length_validator')\n }),\n required: () => false,\n })\n );\n } else if (it.campo === EnumCampoTributo.CodigoTributacao) {\n formGroup = {\n ...formGroup, codigoTributacao: [{ value: undefined, disabled: false }, Validators.compose([\n Validators.maxLength(5)\n ])]\n };\n\n formField.push(\n new FormField({\n id: tributo + 'CodigoTributacao',\n name: 'codigoTributacao',\n label: this.translate.instant('erpx.tributos.fields_codigo_tributacao_label'),\n type: FieldType.String,\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onBlur: () => {\n this.backValue();\n this.setValidators(tributo);\n },\n errorMessages: () => ({\n maxlength: this.translate.instant('erpx.tributos.fields_max_length_validator')\n }),\n required: () => false,\n })\n );\n } else if (it.campo == EnumCampoTributo.ImpostoNaoRecuperado) {\n formGroup = {\n ...formGroup,\n ImpostoNaoRecuperado: [\n {\n value: undefined,\n disabled: false\n }, Validators.compose([Validators.max(9999999999999.99)])\n ]\n };\n\n formField.push(\n new FormField({\n id: tributo + 'ImpostoNaoRecuperado',\n name: 'ImpostoNaoRecuperado',\n label: this.translate.instant('erpx.tributos.fields_imposto_nao_recuperado'),\n type: FieldType.Money,\n precision: 15,\n scale: 2,\n numberLocaleOptions: this.currencyLocaleOptions,\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onBlur: () => {\n this.backValue();\n this.setValidators(tributo);\n }\n })\n );\n } else if (it.campo == EnumCampoTributo.baseCalculoCredito) {\n formGroup = { ...formGroup, baseCalculoCredito: [{ value: undefined, disabled: false }] };\n formField.push(\n new FormField({\n id: tributo + 'baseCalculoCredito',\n name: 'baseCalculoCredito',\n type: FieldType.Enum,\n options: [\n { label: this.translate.instant('erpx.tributos.enum_tip_cred_recup_v_1'), value: enumTipCredRecup.V1 },\n { label: this.translate.instant('erpx.tributos.enum_tip_cred_recup_v_2'), value: enumTipCredRecup.V2 },\n { label: this.translate.instant('erpx.tributos.enum_tip_cred_recup_v_3'), value: enumTipCredRecup.V3 },\n { label: this.translate.instant('erpx.tributos.enum_tip_cred_recup_v_4'), value: enumTipCredRecup.V4 },\n { label: this.translate.instant('erpx.tributos.enum_tip_cred_recup_v_5'), value: enumTipCredRecup.V5 },\n { label: this.translate.instant('erpx.tributos.enum_tip_cred_recup_v_6'), value: enumTipCredRecup.V6 },\n { label: this.translate.instant('erpx.tributos.enum_tip_cred_recup_v_7'), value: enumTipCredRecup.V7 },\n { label: this.translate.instant('erpx.tributos.enum_tip_cred_recup_v_8'), value: enumTipCredRecup.V8 },\n { label: this.translate.instant('erpx.tributos.enum_tip_cred_recup_v_9'), value: enumTipCredRecup.V9 },\n { label: this.translate.instant('erpx.tributos.enum_tip_cred_recup_v_10'), value: enumTipCredRecup.V10 },\n { label: this.translate.instant('erpx.tributos.enum_tip_cred_recup_v_11'), value: enumTipCredRecup.V11 },\n { label: this.translate.instant('erpx.tributos.enum_tip_cred_recup_v_12'), value: enumTipCredRecup.V12 },\n { label: this.translate.instant('erpx.tributos.enum_tip_cred_recup_v_13'), value: enumTipCredRecup.V13 },\n { label: this.translate.instant('erpx.tributos.enum_tip_cred_recup_v_14'), value: enumTipCredRecup.V14 },\n { label: this.translate.instant('erpx.tributos.enum_tip_cred_recup_v_15'), value: enumTipCredRecup.V15 },\n { label: this.translate.instant('erpx.tributos.enum_tip_cred_recup_v_16'), value: enumTipCredRecup.V16 },\n { label: this.translate.instant('erpx.tributos.enum_tip_cred_recup_v_17'), value: enumTipCredRecup.V17 },\n { label: this.translate.instant('erpx.tributos.enum_tip_cred_recup_v_18'), value: enumTipCredRecup.V18 },\n ],\n placeholder: this.translate.instant('erpx.tributos.fields_base_calculo_credito_placeholder'),\n showClear: true,\n multiple: false,\n label: this.translate.instant('erpx.tributos.fields_base_calculo_credito_label'),\n size: { sm: 12, md: 6, lg: 6, xl: 3 },\n onChange: (event: any) => {\n if (!event)\n return;\n this.backValue();\n this.setValidators(tributo);\n },\n required: false\n }),\n );\n } else if (it.campo === EnumCampoTributo.RegimeTributarioPisCofins) {\n formGroup = { ...formGroup, regimeTributarioPisCofins: [{ value: undefined, disabled: false }, Validators.compose([])] };\n\n formField.push(\n new FormField({\n id: tributo + 'regimeTributarioPisCofins',\n name: 'regimeTributarioPisCofins',\n type: FieldType.Enum,\n options: [\n {\n label: this.translate.instant('erpx.tributos.enum_reg_tribut_pis_cofins_cumulativo'),\n value: EnumRegimeTributarioPisCofins.CUMULATIVO\n },\n {\n label: this.translate.instant('erpx.tributos.enum_reg_tribut_pis_cofins_nao_cumulativo'),\n value: EnumRegimeTributarioPisCofins.NAO_CUMULATIVO\n }\n ],\n placeholder: this.translate.instant('erpx.tributos.fields_regime_tributario_pis_cofins_placeholder'),\n showClear: true,\n multiple: false,\n label: this.translate.instant('erpx.tributos.fields_regime_tributario_pis_cofins_label'),\n size: { sm: 12, md: 6, lg: 6, xl: 3 },\n onChange: (event: any) => {\n if (!event)\n return;\n this.backValue();\n this.setValidators(tributo);\n },\n required: () => false\n }),\n );\n }\n });\n\n if (this.sugestoes) {\n this.sugestoes\n .filter(sugestao => sugestao.tipoTributo === tributo)\n .forEach(sugestao => {\n Object\n .entries(sugestao)\n .filter(atributos => atributos[0] !== 'tipoTributo')\n .forEach(atributos => {\n formGroup[atributos[0]][0].value = atributos[1];\n });\n });\n }\n\n formGroup = { ...formGroup, impostoManual: [{ value: undefined, disabled: false }, Validators.compose([])] };\n retorno.formField = formField;\n retorno.formGroup = this.formBuilder.group({\n ...formGroup\n });\n\n return retorno;\n }\n\n private setSubs(item: Item) {\n Object\n .entries(item.formGroup.controls)\n .forEach(control => {\n const [controlName, controlObject] = control;\n if (controlName !== 'impostoManual' && !item.formGroup.controls.impostoManual.value) {\n const formField = item.formField.find(field => field.name === controlName);\n controlObject\n .valueChanges\n .pipe(\n switchMap(val => this.getFormControlSubscriptionValue(val, formField instanceof LookupField, `${item.name}_${formField.name}`)),\n takeUntil(this.ngUnsubscribe)\n )\n .subscribe((val: LookupRequestValidator) => {\n if (!val.cancelSubscription) {\n item.formGroup.controls.impostoManual.patchValue(true);\n this.setImpostoManualGroup();\n }\n });\n }\n });\n }\n\n private getFormControlSubscriptionValue(fieldValue: any, isFieldLookup: boolean, fieldIdentifier: string): Observable<LookupRequestValidator> {\n if (isFieldLookup) {\n return this.lookupUtils.getValidatedRepeatedLookupValues(fieldValue, fieldIdentifier);\n }\n return of({\n cancelSubscription: false,\n value: fieldValue\n });\n }\n\n private storageValuesOnLookupValidator(item: Item): void {\n Object\n .entries(item.formGroup.controls)\n .forEach(control => {\n const [controlName, controlObject] = control;\n const formField = item.formField.find(field => field.name === controlName);\n if (formField) {\n this.getFormControlSubscriptionValue(controlObject.value, formField instanceof LookupField, `${item.name}_${formField.name}`);\n }\n });\n }\n\n private setImpostoManualGroup() {\n if (this.grupos && this.grupos != undefined && this.grupos.length > 0) {\n this.grupos\n .filter((it: any) => (it.grupo == 'erpx.tributos.enum_grupo_tributo_' + EnumGrupoTributo.ICMS + '_label')\n || (it.grupo == 'erpx.tributos.enum_grupo_tributo_' + EnumGrupoTributo.ICMS_ST + '_label')\n || (it.grupo == 'erpx.tributos.enum_grupo_tributo_' + EnumGrupoTributo.PIS + '_label')\n || (it.grupo == 'erpx.tributos.enum_grupo_tributo_' + EnumGrupoTributo.COFINS + '_label')\n || (it.grupo == 'erpx.tributos.enum_grupo_tributo_' + EnumGrupoTributo.RETENCOES + '_label')\n || (it.grupo == 'erpx.tributos.enum_grupo_tributo_' + EnumGrupoTributo.FUNRURAL + '_label')\n || (it.grupo == 'erpx.tributos.enum_grupo_tributo_' + EnumGrupoTributo.ISS + '_label')\n || (it.grupo == 'erpx.tributos.enum_grupo_tributo_' + EnumGrupoTributo.CIDE_TECNOLOGIA + '_label')\n || (it.grupo == 'erpx.tributos.enum_grupo_tributo_' + EnumGrupoTributo.IPI + '_label'))\n .map(grupo => grupo.item.map(\n (item: any) => {\n if (item.formGroup.controls.impostoManual.value == true) {\n grupo.item.map(\n (it: any) => {\n it.formGroup.controls.impostoManual.patchValue(true);\n }\n );\n }\n })\n );\n }\n }\n\n private filterByImposto(imposto: EnumTipoTributo): string {\n if (imposto) {\n switch (imposto) {\n case EnumTipoTributo.PIS:\n return 'PIS_COFINS';\n case EnumTipoTributo.IPI:\n return 'IPI';\n case EnumTipoTributo.ICMS:\n return 'ICMS';\n case EnumTipoTributo.COFINS:\n return 'PIS_COFINS';\n default:\n return 'PIS_COFINS';\n }\n }\n }\n\n private getLabelAliquota(tributo: EnumTipoTributo) {\n if (tributo == EnumTipoTributo.ICMS_UF_DESTINO || tributo == EnumTipoTributo.ICMS_UF_DESTINO_DEVOLVIDO)\n return this.translate.instant('erpx.tributos.fields_aliquota_interestadual_label');\n\n return this.translate.instant('erpx.tributos.fields_aliquota_label');\n }\n\n public getTranslateButton(value: any) {\n let translate = '.button_memoria_calculo_empty_label';\n if (this.idsTaxesMemoriaCalculo.find((element: any) => { return element.tipoTributo == value && element.idParametro != undefined })) {\n translate = '.button_memoria_calculo_label';\n }\n\n return this.prefixLabel + translate;\n }\n\n isGroupInvalid(group: {\n grupo: string;\n item: {\n formField: FormField[];\n formGroup: FormGroup;\n label: string;\n name: string;\n }[];\n }): boolean {\n return group?.item?.some((item) => item?.formGroup?.invalid);\n }\n}\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { TranslateModule } from \"@ngx-translate/core\";\r\nimport { ErpLookupsModule, LookupValidationUtils } from \"@senior-gestao-empresarial/angular-components\";\r\nimport { ButtonModule, DynamicFormModule, LoadingStateModule } from \"@seniorsistemas/angular-components\";\r\nimport { AccordionModule } from \"primeng/accordion\";\r\nimport { FocusService } from \"../focus/focus.service\";\r\nimport { ErpTributosComponent } from \"./erp-tributos.component\";\r\nimport { ErpTributosService } from \"./erp-tributos.service\";\r\n\r\n@NgModule({\r\n declarations: [ErpTributosComponent],\r\n imports: [CommonModule, TranslateModule, ButtonModule, AccordionModule, DynamicFormModule, ErpLookupsModule, LoadingStateModule],\r\n providers: [ErpTributosService, FocusService, LookupValidationUtils],\r\n exports: [ErpTributosComponent],\r\n})\r\nexport class ErpTributosModule {}\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { TranslateService } from '@ngx-translate/core';\nimport { MessageService, SortMeta } from 'primeng/api';\nimport { throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\n\nexport class EntityService<T> {\n constructor(\n protected http: HttpClient,\n protected translateService: TranslateService,\n protected messageService: MessageService,\n protected entityUrl: string,\n protected entityAction?: string\n ) {\n this.http = http;\n this.translateService = translateService;\n this.messageService = messageService;\n this.entityUrl = entityUrl;\n\n this.defaultCatch = this.defaultCatch.bind(this);\n }\n\n public getListQueryParams(listParams: ListParams) {\n const { page = 0, size = 10, sort = [], filterQuery = '', displayFields = [] } = listParams;\n\n let params = new HttpParams();\n params = params.append('size', String(size));\n params = params.append('offset', String(page));\n\n if (sort && sort.length) {\n params = params.append(\n 'orderby',\n sort\n .map((s) => {\n let order = '';\n if (s.order === 1) order = ' asc';\n else if (s.order === -1) order = ' desc';\n return `${s.field}${order}`;\n })\n .join(', ')\n );\n }\n\n if (filterQuery) params = params.append('filter', filterQuery);\n\n if (displayFields && displayFields.length) {\n params = params.append('displayfields', displayFields.join());\n }\n\n return params;\n }\n\n public defaultCatch(): any {\n return catchError((err: any) => {\n if (err) {\n if (err.status === 401) {\n const summary = this.translateService.instant('erpx_com_ven.pedido.error_unauthorized_title');\n const detail = this.translateService.instant('erpx_com_ven.pedido.error_unauthorized_description');\n\n this.messageService.add({\n severity: 'error',\n summary,\n detail,\n sticky: true\n });\n } else {\n const summary = err.status ? String(err.status) : 'Error';\n const detail =\n (err.error && err.error.message) || err.statusText || err.message || 'Error';\n\n this.messageService.add({\n severity: 'error',\n summary,\n detail,\n sticky: true\n });\n }\n }\n\n return throwError(err);\n });\n }\n\n public list(listParams: ListParams) {\n return this.http\n .get<T[]>(this.entityUrl, { params: this.getListQueryParams(listParams) })\n .pipe(this.defaultCatch());\n }\n\n public get(id: any, displayFields?: string) {\n if (displayFields) {\n return this.http.get<T>(`${this.entityUrl}/${id}?displayfields=${displayFields}`).pipe(this.defaultCatch());\n }\n return this.http.get<T>(`${this.entityUrl}/${id}`).pipe(this.defaultCatch());\n }\n\n public insert(entity: T) {\n return this.http.post<T>(`${this.entityUrl}`, entity).pipe(this.defaultCatch());\n }\n\n public update(id: any, entity: T) {\n return this.http.put<T>(`${this.entityUrl}/${id}`, entity).pipe(this.defaultCatch());\n }\n\n public delete(id: any) {\n return this.http.delete<T>(`${this.entityUrl}/${id}`).pipe(this.defaultCatch());\n }\n}\n\nexport interface ListParams {\n page?: number;\n size?: number;\n sort?: SortMeta[];\n filterQuery?: string;\n displayFields?: string[];\n}\n\nexport interface TotalElements {\n totalElements: number;\n}\n\nexport class LookupForm {\n id?: string;\n label?: string;\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { MessageService } from 'primeng/api';\nimport { TranslateService } from '@ngx-translate/core';\nimport { QuantidadeDisponivelDemandaDto } from './quantidade-disponivel-demanda-dto';\nimport { EntityService } from '../entity-service';\n\n@Injectable()\nexport class QuantidadeDisponivelDemandaService extends EntityService<QuantidadeDisponivelDemandaDto> {\n constructor(protected http: HttpClient, protected translateService: TranslateService, protected messageService: MessageService) {\n super(\n http,\n translateService,\n messageService,\n `erpx_sup/demandas/entities/quantidadeDisponivelDemanda`,\n `erpx_sup/demandas/actions`\n );\n }\n}\n","import { NgModule } from '@angular/core';\nimport { PermissionsModule } from '@seniorsistemas/platform-components';\nimport { QuantidadeDisponivelDemandaService } from './quantidade-disponivel-demanda.service';\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: 'quantidadeDisponivelDemanda',\n actions: ['Visualizar', 'Incluir', 'Editar', 'Excluir'],\n uri: `res://senior.com.br/erpx_sup/demandas/entities/quantidadeDisponivelDemanda`,\n },\n ]),\n ],\n providers: [QuantidadeDisponivelDemandaService],\n declarations: [],\n exports: [],\n})\nexport class QuantidadeDisponivelDemandaModule {}\n","export enum EnumTipoDocumentoParametros {\r\n PedidoVenda = 'PedidoVenda',\r\n AnaliseReposicao = 'AnaliseReposicao',\r\n RequisicaoMateriais = 'RequisicaoMateriais',\r\n DemandaDependente = 'DemandaDependente',\r\n AcertoInventario = 'AcertoInventario',\r\n}\r\n","import { HttpClient, HttpParams } from \"@angular/common/http\";\nimport { catchError, take } from \"rxjs/operators\";\nimport { Observable, throwError } from \"rxjs\";\nimport { MessageService } from \"primeng/api\";\nimport { Injectable } from \"@angular/core\";\nimport { SortMeta } from \"primeng/api\";\n\nexport interface ObterNecessidadesInput {\n e070empId?: string;\n e070filId?: string;\n e012famId?: string[];\n itensId?: string[];\n tipo?: string;\n documentoId?: string;\n dataInicial?: string;\n dataFinal?: string;\n situacao?: string[];\n numeroDocumentoPai?: string[];\n codigoDemanda?: number;\n somenteUrgentes?: boolean;\n pageRequest?: {\n offset?: number;\n size?: number;\n orderyBy?: [\n {\n field: string;\n order: string;\n }\n ];\n };\n}\n\nexport interface ObterNecessidadesOutput {\n total: number;\n necessidades: {\n documento: {\n id: string;\n e070emp: {\n id: string;\n codigo: number;\n descricao: string;\n label: string;\n };\n e070fil: {\n id: string;\n codigo: number;\n descricao: string;\n label: string;\n };\n idExterno: string;\n numeroDocumento: string;\n tipoDocumento: string;\n numeroDocumentoPai: number;\n };\n filial: {\n id: string;\n codigo: number;\n descricao: string;\n label: string;\n };\n id: string;\n item: {\n id: string;\n codigo: string;\n descricao: string;\n label: string;\n tipoItem: string;\n unidadeMedida: {\n id: string;\n uniMed: string;\n desMed: string;\n qtdDec: number;\n familia: {\n id: string;\n codigo: string;\n descricao: string;\n label: string;\n };\n };\n quantidadeOriginal: number;\n quantidadePlanejada: number;\n quantidadeAtendida: number;\n dataEntregaPrevista: string;\n situacao: string;\n demanda: {\n id: string;\n codigo: number;\n empresa: string;\n filial: string;\n quantidade: number;\n dataEntregaPrevista: string;\n documento: string;\n situacao: string;\n realizarReserva: boolean;\n };\n };\n }[];\n}\nexport interface GetUrlInput {\n identifiers: {\n domainName: string;\n serviceName: string;\n appName: string;\n route: string;\n }[];\n}\n\nexport interface GetUrlOutput {\n frontends: {\n appName: string;\n currentVersion: string;\n domainName: string;\n embeddedURL: string;\n route: string;\n serviceName: string;\n url: string;\n }[];\n}\n\n@Injectable()\nexport class ErpLoteSeriesService {\n constructor(protected http: HttpClient, protected messageService: MessageService) {}\n\n private foundationEntitiesUrl = \"erpx_sup/foundation/entities\";\n private supEntitiesUrl = \"erpx_sup/estoque/entities\";\n private queryUrl = \"erpx_sup/estoque/queries\";\n\n public getProductFamily(productID: string) {\n return this.http.get(`${this.foundationEntitiesUrl}/e075der/${productID}`).pipe(this.defaultCatch());\n }\n\n public getProductFamilySupplyInfo(familyID: string) {\n const filter = `id eq '${familyID}'`;\n return this.http\n .get(`${this.foundationEntitiesUrl}/e012famSupGer`, { params: { filter, displayfields: \"ctrVld\" } })\n .pipe(this.defaultCatch());\n }\n\n public listBatch(params: any) {\n return this.http.post(`${this.queryUrl}/consultarSaldoPorLote`, params).pipe(this.defaultCatch());\n }\n\n public listSeries(params: any) {\n return this.http.post(`${this.queryUrl}/consultarSaldoPorSerie`, params).pipe(this.defaultCatch());\n }\n\n public getBatch(listParams: ListParams) {\n return this.http.get(`${this.supEntitiesUrl}/e200lot`, { params: this.getListQueryParams(listParams) }).pipe(this.defaultCatch());\n }\n\n public getSerie(listParams: ListParams) {\n return this.http.get(`${this.supEntitiesUrl}/e200ser`, { params: this.getListQueryParams(listParams) }).pipe(this.defaultCatch());\n }\n\n public consultarSaldoEstoque(balancePayload: any) {\n return this.http.post(`${this.queryUrl}/consultarSaldoEstoque`, balancePayload);\n }\n\n public defaultCatch(): any {\n return catchError((err: any) => {\n if (err) {\n const summary = err.status ? String(err.status) : \"Error\";\n const detail = (err.error && err.error.message) || err.statusText || err.message || \"Error\";\n\n this.messageService.add({\n severity: \"error\",\n summary,\n detail,\n });\n }\n\n return throwError(err);\n });\n }\n\n public getListQueryParams(listParams: ListParams) {\n const { page = 0, size = 10, sort = [], filterQuery = \"\", displayFields = [] } = listParams;\n\n let params = new HttpParams();\n params = params.append(\"size\", String(size));\n params = params.append(\"offset\", String(page));\n\n if (sort && sort.length) {\n params = params.append(\n \"orderby\",\n sort\n .map(s => {\n let order = \"\";\n if (s.order === 1) order = \" asc\";\n else if (s.order === -1) order = \" desc\";\n return `${s.field}${order}`;\n })\n .join(\", \")\n );\n }\n\n if (filterQuery) params = params.append(\"filter\", filterQuery);\n\n if (displayFields && displayFields.length) {\n params = params.append(\"displayfields\", displayFields.join());\n }\n\n return params;\n }\n\n public getUrl(getUrlInput: GetUrlInput) {\n const url = `platform/frontend_updater/queries/getFrontend`;\n return this.http.post<any>(url, getUrlInput).pipe(this.defaultCatch());\n }\n\n public obterNecessidades(obterNecessidadesInput: ObterNecessidadesInput): Observable<ObterNecessidadesOutput> {\n const url = `erpx_sup/demandas/queries/obterNecessidades`;\n return this.http.post(url, obterNecessidadesInput).pipe(this.defaultCatch());\n }\n}\n\nexport interface ListParams {\n page?: number;\n size?: number;\n sort?: SortMeta[];\n filterQuery?: string;\n displayFields?: string[];\n}\n","import { Component, Input, OnChanges } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { E210DxpLookup, EnumLogicalOperator } from '@senior-gestao-empresarial/angular-components';\nimport { EnumColumnFieldType, FieldType, FormField } from '@seniorsistemas/angular-components';\nimport * as moment from 'moment';\nimport { MessageService } from 'primeng/api';\nimport { Subject } from 'rxjs';\nimport { first, map, takeUntil } from 'rxjs/operators';\nimport {\n QuantidadeDisponivelDemanda\n} from '../../core/entities/quantidade-disponivel-demanda/quantidade-disponivel-demanda';\nimport {\n QuantidadeDisponivelDemandaService\n} from '../../core/entities/quantidade-disponivel-demanda/quantidade-disponivel-demanda.service';\nimport { EnumTipoDocumentoParametros } from '../../core/enums/enum-tipo-documento-parametros';\nimport { ErpLoteSeriesService, GetUrlInput, GetUrlOutput, ListParams } from './erp-lote-serie.service';\nimport { isNotEmpty, isEmpty } from \"../utils/utils\";\nimport { compare } from \"@seniorsistemas/platform-components/modules/advanced-filter/utils/comparator\";\n\n@Component({\n selector: 'erp-lote-serie',\n templateUrl: './erp-lote-serie.component.html'\n})\n\nexport class ErpLoteSerieComponent implements OnChanges {\n\n public readonly EnumTipoMovimentacao = EnumTipoMovimentacao;\n\n public gridData: any = [];\n public selection: any = [];\n public gridColumns: any[];\n public localeConfig: any = {};\n public locale: any = {};\n\n @Input() loteSerieParams: LoteSerieParams;\n @Input() blockedFields = false;\n @Input() showHeader = true;\n @Input() validateInvalidChars = false;\n\n private e200lotLookupSuggestionsObservable = new Subject<any>();\n private e200lotlookupSearchObservable = new Subject<any>();\n private e200serLookupSuggestionsObservable = new Subject<any>();\n private e200serlookupSearchObservable = new Subject<any>();\n private ngUnsubscribe = new Subject<any>();\n\n private quantidadeDisponivelDemandaLookupSuggestionsObservable = new Subject<QuantidadeDisponivelDemanda>();\n private quantidadeDisponivelDemandalookupSearchObservable = new Subject<QuantidadeDisponivelDemanda>();\n\n public formGroupBatchOrSeries: FormGroup;\n public batchOrSeriesFields: any[];\n public loteLookupDisplayFields = [ 'e200lot.codLote' ];\n public serieLookupDisplayFields = [ 'e200ser.numSep' ];\n\n public titleLoteOrSerie: string;\n public titleGridLoteOrSerie: string;\n public isSerie = false;\n public qtdAdistribuir = 0;\n public qtdDistribuida = 0;\n public qtdRestante = 0;\n public maxLength = 50;\n public obrigaValidade = false;\n public isSaida = false;\n public disableDataValidade = false;\n public prefix = 'erpx.lote_serie.';\n\n constructor(\n private translate: TranslateService,\n private route: ActivatedRoute,\n private e210DxpLookup: E210DxpLookup,\n private formBuilder: FormBuilder,\n private messageService: MessageService,\n private batchSeriesService: ErpLoteSeriesService,\n private quantidadeDisponivelDemandaService: QuantidadeDisponivelDemandaService\n ) {\n }\n\n ngOnChanges() {\n if (this.loteSerieParams) {\n this.route.data.pipe(takeUntil(this.ngUnsubscribe)).subscribe((data: any) => this.onRouteDataChange(data));\n this.formGroupBatchOrSeries = this.getFormGroupDados();\n this.validaDados();\n this.gridColumns = this.getGridColumns();\n }\n\n if (this.blockedFields == true)\n this.formGroupBatchOrSeries.disable();\n\n this.formGroupBatchOrSeries.controls.lote.valueChanges.subscribe(value => {\n if (value) {\n if (this.validateInvalidChars && /\\t|\\r|\\n/g.exec(value)) {\n this.formGroupBatchOrSeries.controls.lote.setErrors({ 'existsInvalidChar': true });\n return;\n }\n }\n });\n\n this.formGroupBatchOrSeries.controls.serie.valueChanges.subscribe(value => {\n if (value) {\n if (this.validateInvalidChars && /\\t|\\r|\\n/g.exec(value)) {\n this.formGroupBatchOrSeries.controls.serie.setErrors({ 'existsInvalidChar': true });\n return;\n }\n }\n });\n }\n\n private validaDados() {\n\n this.processFamilySupplyInfo(this.loteSerieParams.dadosProduto.e012fam);\n\n if (this.loteSerieParams.tipoControleProduto == 'Serie') {\n this.titleLoteOrSerie = this.translate.instant(`${ this.prefix }serie_title`);\n this.titleGridLoteOrSerie = this.translate.instant(`${ this.prefix }serie_title_grid`);\n this.isSerie = true;\n\n } else {\n this.titleLoteOrSerie = this.translate.instant(`${ this.prefix }lote_title`);\n this.titleGridLoteOrSerie = this.translate.instant(`${ this.prefix }lote_title_grid`);\n this.isSerie = false;\n }\n\n if (this.loteSerieParams.tipoMovimentacao == 'Entrada') {\n this.batchOrSeriesFields = this.getFieldsEntrada();\n\n if (this.isSerie) {\n this.formGroupBatchOrSeries.controls.serie.clearValidators();\n this.formGroupBatchOrSeries.controls.serie.setValidators([\n Validators.required, Validators.maxLength(50)\n ]);\n this.formGroupBatchOrSeries.controls.serie.updateValueAndValidity({ emitEvent: false });\n\n } else {\n this.formGroupBatchOrSeries.controls.lote.clearValidators();\n this.formGroupBatchOrSeries.controls.quantidade.clearValidators();\n\n this.formGroupBatchOrSeries.controls.lote.setValidators([\n Validators.required, Validators.maxLength(50)\n ]);\n\n this.formGroupBatchOrSeries.controls.quantidade.setValidators([\n Validators.required\n ]);\n\n this.formGroupBatchOrSeries.controls.lote.updateValueAndValidity({ emitEvent: false });\n this.formGroupBatchOrSeries.controls.quantidade.updateValueAndValidity({ emitEvent: false });\n }\n\n this.formGroupBatchOrSeries.controls.bulkVisible.valueChanges.subscribe(value => {\n if (value) {\n this.formGroupBatchOrSeries.controls.batchSerieBulk.setValidators([ Validators.required ]);\n this.formGroupBatchOrSeries.controls.batchSerieBulk.updateValueAndValidity({ emitEvent: false });\n return;\n }\n this.formGroupBatchOrSeries.controls.batchSerieBulk.clearValidators();\n this.formGroupBatchOrSeries.controls.batchSerieBulk.updateValueAndValidity({ emitEvent: false });\n });\n\n } else {\n this.isSaida = true;\n\n if (this.isSerie) {\n this.formGroupBatchOrSeries.controls.serie.clearValidators();\n this.formGroupBatchOrSeries.controls.serie.setValidators([ Validators.required ]);\n this.formGroupBatchOrSeries.controls.serie.updateValueAndValidity({ emitEvent: false });\n } else {\n this.formGroupBatchOrSeries.controls.lote.clearValidators();\n this.formGroupBatchOrSeries.controls.lote.setValidators([ Validators.required ]);\n this.formGroupBatchOrSeries.controls.lote.updateValueAndValidity({ emitEvent: false });\n this.formGroupBatchOrSeries.controls.quantidade.clearValidators();\n this.formGroupBatchOrSeries.controls.quantidade.setValidators([ Validators.required ]);\n this.formGroupBatchOrSeries.controls.quantidade.updateValueAndValidity({ emitEvent: false });\n }\n this.batchOrSeriesFields = this.getFieldsSaida();\n this.formGroupBatchOrSeries.controls.dataFabricacao.disable();\n this.formGroupBatchOrSeries.controls.dataValidade.disable();\n }\n\n this.formGroupBatchOrSeries.controls.dataFabricacao.valueChanges.subscribe(val => {\n if (val) {\n this.formGroupBatchOrSeries.controls.dataValidade.clearValidators();\n this.formGroupBatchOrSeries.controls.dataValidade.setValidators([]);\n this.formGroupBatchOrSeries.controls.dataValidade.updateValueAndValidity({ emitEvent: false });\n } else {\n this.formGroupBatchOrSeries.controls.dataValidade.clearValidators();\n this.formGroupBatchOrSeries.controls.dataValidade.updateValueAndValidity({ emitEvent: false });\n }\n\n });\n\n this.qtdDistribuida = 0;\n this.qtdAdistribuir = this.loteSerieParams.quantidadeDistribuir;\n\n if (this.loteSerieParams.lotesOrSeries) {\n this.gridData = this.loteSerieParams.lotesOrSeries;\n this.qtdDistribuida = this.getQuantidadeDistribuida();\n this.qtdRestante = this.qtdAdistribuir - this.qtdDistribuida;\n } else {\n this.qtdRestante = this.qtdAdistribuir;\n }\n }\n\n private getFormGroupDados() {\n const formGroup = this.formBuilder.group({\n deposito: [ { value: undefined, disabled: false }, Validators.compose([]) ],\n lote: [ { value: undefined, disabled: false }, Validators.compose([]) ],\n dataValidade: [ { value: undefined, disabled: false }, Validators.compose([]) ],\n dataFabricacao: [ { value: undefined, disabled: false }, Validators.compose([]) ],\n serie: [ { value: undefined, disabled: false }, Validators.compose([]) ],\n saldo: [ { value: undefined, disabled: true }, Validators.compose([]) ],\n quantidade: [ { value: undefined, disabled: false }, Validators.compose([]) ],\n batchSerieBulk: [ { value: undefined, disabled: false }, Validators.compose([]) ],\n bulkVisible: [ { value: false, disabled: false }, Validators.compose([]) ],\n });\n\n return formGroup;\n }\n\n public getProp(obj: any, path: any) {\n return path.split('.').reduce((result: any, prop: any) => (result[prop] === undefined ? '' : result[prop]), obj);\n }\n\n private getFieldsEntrada() {\n\n let dadosFieldsEntrada: any[] = [];\n\n if (!this.loteSerieParams.dadosProduto.e205dep) {\n dadosFieldsEntrada = [\n new FormField({\n ...this.e210DxpLookup.mountOptions({\n multiple: false,\n domain: 'erpx_sup',\n service: 'estoque',\n formGroup: 'deposito',\n searchFields: [\n { name: 'e205dep.codDep', type: FieldType.String }, {\n name: 'e205dep.desDep',\n type: FieldType.String\n },\n { name: 'e205dep.abrDep', type: FieldType.String }, {\n name: 'e205dep.e070fil.codFil',\n type: FieldType.Integer\n }\n ],\n\n searchGridFields: [\n { name: 'e205dep.codDep', type: FieldType.String }, {\n name: 'e205dep.desDep',\n type: FieldType.String\n },\n { name: 'e205dep.abrDep', type: FieldType.String }, {\n name: 'e205dep.e070fil.codFil',\n type: FieldType.Integer\n },\n { name: 'e205dep.e070fil.nomFil', type: FieldType.String }\n ],\n\n defaultFilter: [ { field: 'excluido', operator: EnumLogicalOperator.Eq, values: [ 'false' ] },\n {\n field: 'e070emp.id',\n operator: EnumLogicalOperator.Eq,\n values: [ this.loteSerieParams.dadosProduto.e070emp ]\n },\n { field: 'sitEst', operator: EnumLogicalOperator.Eq, values: [ 'VA' ] },\n { field: 'e205dep.sitDep', operator: EnumLogicalOperator.Eq, values: [ 'VA' ] },\n {\n field: 'e075der.id',\n operator: EnumLogicalOperator.Eq,\n values: [ this.loteSerieParams.dadosProduto.e075der ]\n } ]\n\n }),\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n visible: () => !this.formGroupBatchOrSeries.controls.bulkVisible.value,\n })\n ];\n }\n\n\n dadosFieldsEntrada.push(\n new FormField({\n name: 'bulkVisible',\n label: this.translate.instant(`${ this.prefix }bulk_visible`),\n size: { sm: 12, md: 4, lg: 4, xl: 12 },\n type: FieldType.Boolean,\n representedBy: \"switch\"\n }),\n new FormField({\n name: 'batchSerieBulk',\n label: this.translate.instant(`${ this.prefix }batch_serie_bulk`),\n size: { sm: 12, md: 4, lg: 4, xl: 6 },\n type: FieldType.Text,\n rows: 5,\n onBlur: (event: any) => this.onBlurValidaLoteorSerie(event.target.value),\n required: () => true,\n errorMessages: () => ({\n existsInvalidChar: this.translate.instant(`${ this.prefix }exists_invalid_char`)\n }),\n visible: () => this.formGroupBatchOrSeries.controls.bulkVisible.value\n }),\n new FormField({\n name: this.isSerie ? 'serie' : 'lote',\n label: this.isSerie ? this.translate.instant(`${ this.prefix }serie`) : this.translate.instant(`${ this.prefix }lote`),\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n type: FieldType.String,\n onBlur: (event: any) => this.onBlurValidaLoteorSerie(event.target.value),\n required: () => true,\n errorMessages: () => ({\n existsInvalidChar: this.translate.instant(`${ this.prefix }exists_invalid_char`)\n }),\n visible: () => !this.formGroupBatchOrSeries.controls.bulkVisible.value,\n }),\n new FormField({\n name: 'dataFabricacao',\n label: this.translate.instant(`${ this.prefix }data_fabricacao`),\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n type: FieldType.Date,\n appendTo: 'body',\n visible: () => !this.formGroupBatchOrSeries.controls.bulkVisible.value,\n }),\n new FormField({\n name: 'dataValidade',\n label: this.translate.instant(`${ this.prefix }data_validade`),\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n type: FieldType.Date,\n appendTo: 'body',\n required: () => this.obrigaValidade,\n visible: () => !this.formGroupBatchOrSeries.controls.bulkVisible.value,\n }),\n new FormField({\n name: 'saldo',\n label: this.translate.instant(`${ this.prefix }saldo`),\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n type: FieldType.Double,\n scale: this.loteSerieParams.dadosProduto.qtdDec,\n visible: () => !this.formGroupBatchOrSeries.controls.bulkVisible.value,\n }),\n );\n\n if (!this.isSerie) {\n dadosFieldsEntrada.push(\n new FormField({\n name: 'quantidade',\n label: this.translate.instant(`${ this.prefix }quantidade`),\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n type: FieldType.Double,\n scale: this.loteSerieParams.dadosProduto.qtdDec,\n required: () => true,\n onBlur: () => this.onBlurQuantity(),\n visible: () => !this.formGroupBatchOrSeries.controls.bulkVisible.value,\n }),\n );\n }\n\n return dadosFieldsEntrada;\n }\n\n private getFieldsSaida() {\n let dadosFieldsSaida: any[] = [];\n\n if (!this.loteSerieParams.dadosProduto.e205dep) {\n dadosFieldsSaida = [\n\n new FormField({\n ...this.e210DxpLookup.mountOptions({\n multiple: false,\n domain: 'erpx_sup',\n service: 'estoque',\n formGroup: 'deposito',\n searchFields: [\n { name: 'e205dep.codDep', type: FieldType.String }, {\n name: 'e205dep.desDep',\n type: FieldType.String\n },\n { name: 'e205dep.abrDep', type: FieldType.String }, {\n name: 'e205dep.e070fil.codFil',\n type: FieldType.Integer\n }\n ],\n\n searchGridFields: [\n { name: 'e205dep.codDep', type: FieldType.String }, {\n name: 'e205dep.desDep',\n type: FieldType.String\n },\n { name: 'e205dep.abrDep', type: FieldType.String }, {\n name: 'e205dep.e070fil.codFil',\n type: FieldType.Integer\n },\n { name: 'e205dep.e070fil.nomFil', type: FieldType.String }\n ],\n\n defaultFilter: [ { field: 'excluido', operator: EnumLogicalOperator.Eq, values: [ 'false' ] },\n {\n field: 'e070emp.id',\n operator: EnumLogicalOperator.Eq,\n values: [ this.loteSerieParams.dadosProduto.e070emp ]\n },\n { field: 'sitEst', operator: EnumLogicalOperator.Eq, values: [ 'VA' ] },\n { field: 'e205dep.sitDep', operator: EnumLogicalOperator.Eq, values: [ 'VA' ] },\n {\n field: 'e075der.id',\n operator: EnumLogicalOperator.Eq,\n values: [ this.loteSerieParams.dadosProduto.e075der ]\n } ]\n\n }),\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n }),\n ];\n }\n\n if (this.isSerie) {\n dadosFieldsSaida.push(\n new FormField({\n name: 'serie',\n label: this.translate.instant(`${ this.prefix }lookup_e200ser`),\n type: FieldType.Lookup,\n searchTitle: this.translate.instant(\n `${ this.prefix }lookup_e200ser_search_title`\n ),\n searchEmptyTitle: this.translate.instant(\n `${ this.prefix }nothing_found`\n ),\n filterLabel: this.translate.instant(`${ this.prefix }filter`),\n clearLabel: this.translate.instant(`${ this.prefix }clear`),\n cancelLabel: this.translate.instant(`${ this.prefix }cancel`),\n selectLabel: this.translate.instant(`${ this.prefix }select`),\n onSelect: (event: any) => {\n if (\n this.loteSerieParams?.invoiceInformation?.origin !==\n EnumInvoiceOrigin.V2\n )\n this.validaLoteorSerie(event);\n },\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onSearchRequest: (event: any) =>\n this.loteSerieParams?.invoiceInformation?.origin ===\n EnumInvoiceOrigin.V2\n ? this.onQuantidadeDisponivelDemandaRequest(event)\n : this.onE200SerSearchRequest(event),\n onLookupRequest: (value: string) =>\n this.loteSerieParams?.invoiceInformation?.origin ===\n EnumInvoiceOrigin.V2\n ? this.onQuantidadeDisponivelDemandaRequest(value)\n : this.onE200SerLookupRequest(value),\n suggestionsObservable:\n this.loteSerieParams?.invoiceInformation?.origin ===\n EnumInvoiceOrigin.V2\n ? this\n .quantidadeDisponivelDemandaLookupSuggestionsObservable\n : this.e200serLookupSuggestionsObservable,\n searchObservable:\n this.loteSerieParams?.invoiceInformation?.origin ===\n EnumInvoiceOrigin.V2\n ? this.quantidadeDisponivelDemandalookupSearchObservable\n : this.e200serlookupSearchObservable,\n lookupDisplayField: 'label',\n searchFields:\n this.loteSerieParams?.invoiceInformation?.origin ===\n EnumInvoiceOrigin.V2\n ? this.getQuantidadeDisponivelDemandaSearchFields()\n : this.getE200SerSearchFields(),\n searchGridFields:\n this.loteSerieParams?.invoiceInformation?.origin ===\n EnumInvoiceOrigin.V2\n ? this.getQuantidadeDisponivelDemandaSearchGridFields()\n : this.getE200SerSearchGridFields(),\n multiple:\n this.loteSerieParams?.invoiceInformation?.origin ===\n EnumInvoiceOrigin.V2,\n dataKey:\n this.loteSerieParams?.invoiceInformation?.origin ===\n EnumInvoiceOrigin.V2\n ? 'id'\n : 'e200ser.id',\n required: () => true\n }),\n\n new FormField({\n name: 'dataFabricacao',\n label: this.translate.instant(`${ this.prefix }data_fabricacao`),\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n type: FieldType.Date,\n appendTo: 'body',\n visible: () => !this.isDistributeSeriesButtonVisible()\n }),\n\n new FormField({\n name: 'dataValidade',\n label: this.translate.instant(`${ this.prefix }data_validade`),\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n type: FieldType.Date,\n appendTo: 'body',\n required: () => this.obrigaValidade,\n visible: () => !this.isDistributeSeriesButtonVisible()\n }),\n\n new FormField({\n name: 'saldo',\n label: this.translate.instant(`${ this.prefix }saldo`),\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n type: FieldType.Double,\n scale: this.loteSerieParams.dadosProduto.qtdDec,\n visible: () => !this.isDistributeSeriesButtonVisible()\n }),\n );\n } else {\n dadosFieldsSaida.push(\n new FormField({\n name: 'lote',\n label: this.translate.instant(`${ this.prefix }lookup_e200lot`),\n type: FieldType.Lookup,\n searchTitle: this.translate.instant(`${ this.prefix }lookup_e200lot_search_title`),\n searchEmptyTitle: this.translate.instant(`${ this.prefix }nothing_found`),\n filterLabel: this.translate.instant(`${ this.prefix }filter`),\n clearLabel: this.translate.instant(`${ this.prefix }clear`),\n cancelLabel: this.translate.instant(`${ this.prefix }cancel`),\n selectLabel: this.translate.instant(`${ this.prefix }select`),\n onSelect: (event: any) => this.validaLoteorSerie(event),\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onSearchRequest: (event: any) => this.onE200LotSearchRequest(event),\n onLookupRequest: (value: string) => this.onE200LotLookupRequest(value),\n suggestionsObservable: this.e200lotLookupSuggestionsObservable,\n searchObservable: this.e200lotlookupSearchObservable,\n lookupDisplayField: 'label',\n searchFields: this.getE200LotSearchFields(),\n searchGridFields: this.getE200LotSearchGridFields(),\n required: () => true\n }),\n\n new FormField({\n name: 'dataFabricacao',\n label: this.translate.instant(`${ this.prefix }data_fabricacao`),\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n type: FieldType.Date,\n appendTo: 'body'\n }),\n\n new FormField({\n name: 'dataValidade',\n label: this.translate.instant(`${ this.prefix }data_validade`),\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n type: FieldType.Date,\n appendTo: 'body',\n required: () => this.obrigaValidade\n }),\n\n new FormField({\n name: 'saldo',\n label: this.translate.instant(`${ this.prefix }saldo`),\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n type: FieldType.Double,\n scale: this.loteSerieParams.dadosProduto.qtdDec\n }),\n\n new FormField({\n name: 'quantidade',\n label: this.translate.instant(`${ this.prefix }quantidade`),\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n type: FieldType.Double,\n scale: this.loteSerieParams.dadosProduto.qtdDec,\n required: () => true,\n onBlur: () => this.onBlurQuantity()\n }),\n );\n }\n return dadosFieldsSaida;\n }\n\n private getGridColumns() {\n\n let gridColumns: any;\n\n if (this.isSerie) {\n gridColumns = [\n {\n field: 'serie',\n header: this.translate.instant(`${ this.prefix }serie`),\n attributes: [ \"codigo\" ],\n type: EnumColumnFieldType.STRING,\n },\n { field: 'dataFabricacao', header: this.translate.instant(`${ this.prefix }data_fabricacao`) },\n { field: 'dataValidade', header: this.translate.instant(`${ this.prefix }data_validade`) },\n ];\n } else {\n gridColumns = [\n {\n field: 'lote',\n header: this.translate.instant(`${ this.prefix }lote`),\n attributes: [ \"codigo\" ],\n type: EnumColumnFieldType.STRING,\n },\n { field: 'quantidade', header: this.translate.instant(`${ this.prefix }quantidade`) },\n { field: 'dataFabricacao', header: this.translate.instant(`${ this.prefix }data_fabricacao`) },\n { field: 'dataValidade', header: this.translate.instant(`${ this.prefix }data_validade`) }\n ];\n }\n\n return gridColumns;\n }\n\n public getE200LotSearchFields() {\n const searchFields = [\n new FormField({\n name: 'e200lot.codLote',\n label: this.translate.instant(`${ this.prefix }lookup_e200lot_cod_dep`),\n type: FieldType.String,\n })\n ];\n\n return searchFields;\n }\n\n public getE200SerSearchFields() {\n const searchFields = [\n new FormField({\n name: 'e200ser.numSep',\n label: this.translate.instant(`${ this.prefix }lookup_e200ser_num_sep`),\n type: FieldType.String,\n })\n ];\n\n return searchFields;\n }\n\n private onE200LotSearchRequest(event: any) {\n\n let filterQuery: any;\n let deposito = '';\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const displayFields = [ 'e200lot.codLote' ];\n\n if (this.loteSerieParams.dadosProduto.e205dep) {\n deposito = this.loteSerieParams.dadosProduto.e205dep;\n } else {\n if (this.formGroupBatchOrSeries.controls.deposito.value)\n deposito = this.formGroupBatchOrSeries.controls.deposito.value.e205dep.id;\n }\n\n const orderBy: any = multiSortMeta ? multiSortMeta.map((s: any) => ({\n field: s.field == 'e200lot.codLote' ? 'e200lot.codLot' : s.field,\n order: s.order == 1 ? 'ASC' : 'DESC'\n })) : [ { field: 'e200lot.codLot', order: 'ASC' } ];\n\n filterQuery = {\n e070emp: {\n id: this.loteSerieParams.dadosProduto.e070emp\n },\n e205dep: {\n id: deposito\n },\n e075der: {\n id: this.loteSerieParams.dadosProduto.e075der\n },\n lotLike: true,\n lotSal: true,\n offset: page,\n lotDis: true,\n size: rows\n };\n\n if (filterData['e200lot.codLote']) {\n filterQuery.e200lot = [ {\n codLot: filterData['e200lot.codLote']\n } ];\n }\n\n if (orderBy) {\n filterQuery.orderBy = orderBy;\n }\n\n this.batchSeriesService\n .listBatch(filterQuery)\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n gridData: list.lotes.map((item: any) => ({\n ...item,\n label: displayFields\n .map((field: any) => {\n if (field.indexOf('.') > 0) return this.getProp(item, field);\n return item[field];\n }),\n })),\n totalRecords: list.totalElements\n\n }))\n )\n .subscribe((data: any) => {\n this.e200lotlookupSearchObservable.next(data);\n });\n }\n\n public getQuantidadeDisponivelDemandaSearchFields(): FormField[] {\n return [\n new FormField({\n name: 'numSep',\n label: this.translate.instant(`${ this.prefix }lookup_e200ser_num_sep`),\n type: FieldType.String,\n })\n ];\n }\n\n public getQuantidadeDisponivelDemandaSearchGridFields() {\n return [\n new FormField({\n name: 'numSep',\n label: this.translate.instant(`${ this.prefix }lookup_e200ser_num_sep`),\n type: FieldType.String,\n }),\n new FormField({\n name: 'datFabSep',\n label: this.translate.instant(`${ this.prefix }lookup_e200ser_dat_fab`),\n type: FieldType.Date,\n }),\n new FormField({\n name: 'datVltSep',\n label: this.translate.instant(`${ this.prefix }lookup_e200ser_dat_vlt`),\n type: FieldType.Date,\n })\n ];\n }\n\n private onQuantidadeDisponivelDemandaRequest(event: any): void {\n const listParams: ListParams = {\n filterQuery: `idExterno eq '${ this.loteSerieParams.orderInformation.item.id }' and qtdDisponivel > 0 and numSep is not null`\n };\n\n if (event instanceof String || typeof event === 'string') {\n listParams.page = 0;\n listParams.size = 10;\n listParams.filterQuery += ` and containing(lower(numSep), lower('${ event\n .replace(/\\\\/g, '')\n .replace(/'/g, '\\\\\\'') }'))`;\n } else {\n const { filterData, rows, multiSortMeta } = event;\n\n listParams.page = event.first / rows;\n listParams.sort = multiSortMeta ? multiSortMeta : null;\n\n if (filterData.numSep !== null && filterData.numSep !== undefined) {\n listParams.filterQuery += ` and containing(lower(numSep), lower('${ filterData.numSep\n .replace(/\\\\/g, '')\n .replace(/'/g, '\\\\\\'') }'))`;\n }\n }\n\n this.quantidadeDisponivelDemandaService\n .list(listParams)\n .pipe(\n takeUntil(this.ngUnsubscribe),\n map((list: any) => ({\n gridData: list.contents.map((item: QuantidadeDisponivelDemanda) => ({\n ...item,\n id: item.e200serId,\n label: `${ item.numSep }`\n })),\n totalRecords: list.totalElements\n })))\n .subscribe((data: any) => {\n this.quantidadeDisponivelDemandaLookupSuggestionsObservable.next(data.gridData);\n this.quantidadeDisponivelDemandalookupSearchObservable.next(data);\n });\n }\n\n private onE200SerSearchRequest(event: any) {\n\n let filterQuery: any;\n let deposito = '';\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const displayFields = [ 'e200ser.numSep' ];\n\n if (this.loteSerieParams.dadosProduto.e205dep) {\n deposito = this.loteSerieParams.dadosProduto.e205dep;\n } else {\n if (this.formGroupBatchOrSeries.controls.deposito.value)\n deposito = this.formGroupBatchOrSeries.controls.deposito.value.e205dep.id;\n }\n\n const orderBy: any = multiSortMeta ? multiSortMeta.map((s: any) => ({\n ...s,\n order: s.order == 1 ? 'ASC' : 'DESC'\n })) : [ { field: 'e200ser.numSep', order: 'ASC' } ];\n\n filterQuery = {\n e070emp: {\n id: this.loteSerieParams.dadosProduto.e070emp\n },\n e205dep: {\n id: deposito\n },\n e075der: {\n id: this.loteSerieParams.dadosProduto.e075der\n },\n serLike: true,\n serSal: true,\n offset: page,\n serDis: true,\n size: rows\n };\n\n if (filterData['e200ser.numSep']) {\n filterQuery.e200ser = [ {\n numSep: filterData['e200ser.numSep']\n } ];\n }\n\n if (orderBy) {\n filterQuery.orderBy = orderBy;\n }\n\n this.batchSeriesService\n .listSeries(filterQuery)\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n gridData: list.series.map((item: any) => ({\n ...item,\n label: displayFields\n .map((field: any) => {\n if (field.indexOf('.') > 0) return this.getProp(item, field);\n return item[field];\n }),\n })),\n totalRecords: list.totalElements\n\n }))\n )\n .subscribe((data: any) => {\n this.e200serlookupSearchObservable.next(data);\n });\n }\n\n public removeBatchOrSeries(rowData: any) {\n if (this.blockedFields == false) {\n this.qtdDistribuida -= this.isSerie ? 1 : Number(rowData.quantidade);\n this.qtdRestante += this.isSerie ? 1 : Number(rowData.quantidade);\n\n this.gridData = this.gridData.filter((batchOrSeries: any) => {\n return batchOrSeries.codigo != rowData.codigo;\n });\n\n this.loteSerieParams.lotesOrSeries = this.gridData;\n }\n }\n\n private sum = (a, b, positions) => { const factor = Math.pow(10, positions); return (a.toFixed(positions) * factor + b.toFixed(positions) * factor) / factor}\n private sub = (a, b, positions) => { const factor = Math.pow(10, positions); return (a.toFixed(positions) * factor - b.toFixed(positions) * factor) / factor}\n\n public addBatchOrSeries() {\n let codigo: string;\n let id = '';\n\n this.validateAllFormFields(this.formGroupBatchOrSeries);\n\n if (this.formGroupBatchOrSeries.controls.bulkVisible.value) {\n if (isEmpty(this.formGroupBatchOrSeries.controls.batchSerieBulk.value)) {\n return;\n }\n const convertedArray = this.formGroupBatchOrSeries.controls.batchSerieBulk.value.split('\\n');\n this.gridData = [];\n this.qtdDistribuida = 0;\n this.qtdAdistribuir = this.loteSerieParams.quantidadeDistribuir;\n this.qtdRestante = 0;\n let linhaAtual = 0;\n if (convertedArray.length == 0) {\n const msgError = this.translate.instant(`${ this.prefix }invalid_layout`);\n this.messageService.add({\n severity: 'error',\n summary: this.translate.instant(`${ this.prefix }invalid_layout`),\n detail: msgError,\n life: 20000\n });\n this.gridData = [];\n throw msgError;\n }\n convertedArray.forEach((value: any) => {\n linhaAtual++;\n const currentValue = value.split(';');\n if ((this.isSerie && currentValue.length > 3) || (!this.isSerie && currentValue.length > 4)) {\n const msgError = this.translate.instant(`${ this.prefix }invalid_layout`);\n this.messageService.add({\n severity: 'error',\n summary: this.translate.instant(`${ this.prefix }invalid_layout`),\n detail: msgError,\n life: 20000\n });\n this.gridData = [];\n throw msgError;\n }\n const convertedValue: BulkImport = (this.isSerie) ? {\n codigo: this.toCode(currentValue[0], this.translate.instant(`${ this.prefix }codigo_not_informed_batch`, { line: linhaAtual })),\n dataFabricacao: this.toDate(currentValue[1], this.translate.instant(`${ this.prefix }manufacturing_date_invalid_batch`, { line: linhaAtual })),\n dataValidade: this.toDate(currentValue[2], this.translate.instant(`${ this.prefix }validate_date_invalid_batch`, { line: linhaAtual })),\n quantidade: 1\n } : {\n codigo: this.toCode(currentValue[0], this.translate.instant(`${ this.prefix }codigo_not_informed_batch`, { line: linhaAtual })),\n quantidade: this.toAmount(currentValue[1], linhaAtual),\n dataFabricacao: this.toDate(currentValue[2], this.translate.instant(`${ this.prefix }manufacturing_date_invalid_batch`, { line: linhaAtual })),\n dataValidade: this.toDate(currentValue[3], this.translate.instant(`${ this.prefix }validate_date_invalid_batch`, { line: linhaAtual }))\n };\n\n // valida se a familia obriga a informar validade\n if (this.obrigaValidade && !convertedValue.dataValidade) {\n const msgError = this.translate.instant(`${ this.prefix }error_selected_dates_batch`, { line: linhaAtual });\n this.messageService.add({\n severity: 'error',\n summary: this.translate.instant(`${ this.prefix }error_expiry_date`),\n detail: msgError,\n life: 20000\n });\n this.gridData = [];\n throw msgError;\n }\n // valida se existe código duplicado\n if (this.gridData.some((value: BulkImport) => value.codigo === convertedValue.codigo)) {\n const msgError = (this.isSerie) ? this.translate.instant(`${ this.prefix }duplicated_series_msg_batch`, { line: linhaAtual }) : this.translate.instant(`${ this.prefix }duplicated_batch_msg_batch`, { line: linhaAtual });\n this.messageService.add({\n severity: 'error',\n summary: this.translate.instant(`${ this.prefix }batch_distribution_error`),\n detail: msgError,\n life: 20000\n });\n this.gridData = [];\n throw msgError;\n }\n // valida se a data de fabricação é maior que a validade\n if (convertedValue.dataValidade && convertedValue.dataFabricacao &&\n convertedValue.dataValidade < convertedValue.dataFabricacao) {\n const msgError = this.translate.instant(`${ this.prefix }expiry_lower_than_manufacturing_batch`, { line: linhaAtual });\n this.messageService.add({\n severity: 'error',\n summary: this.translate.instant(`${ this.prefix }error_selected_dates`),\n detail: msgError,\n life: 20000\n });\n this.gridData = [];\n throw msgError;\n }\n this.qtdDistribuida += convertedValue.quantidade;\n // valida se a quantidade distribuida é maior que a quantidade a distribuir\n if (this.qtdDistribuida > this.qtdAdistribuir) {\n const msgError = this.translate.instant(`${ this.prefix }invalid_qty_msg_batch`, { line: linhaAtual });\n this.messageService.add({\n severity: 'error',\n summary: this.translate.instant(`${ this.prefix }distribution_error`),\n detail: msgError,\n life: 20000\n });\n this.gridData = [];\n throw msgError;\n }\n this.gridData.push(convertedValue);\n this.qtdRestante = this.qtdAdistribuir - this.qtdDistribuida;\n });\n this.loteSerieParams.lotesOrSeries = this.gridData;\n this.formGroupBatchOrSeries.controls.batchSerieBulk.reset();\n this.messageService.clear();\n return;\n }\n\n if (this.formGroupBatchOrSeries.valid &&\n (this.formGroupBatchOrSeries.controls.serie.value || this.formGroupBatchOrSeries.controls.lote.value)) {\n\n if (this.isSerie)\n this.formGroupBatchOrSeries.controls.quantidade.patchValue(1);\n\n if (this.formGroupBatchOrSeries.controls.dataValidade.value && this.formGroupBatchOrSeries.controls.dataFabricacao.value &&\n this.formGroupBatchOrSeries.controls.dataValidade.value < this.formGroupBatchOrSeries.controls.dataFabricacao.value) {\n this.messageService.add({\n severity: 'error',\n summary: this.translate.instant(`${ this.prefix }error_selected_dates`),\n detail: this.translate.instant(`${ this.prefix }expiry_lower_than_manufacturing`)\n });\n return;\n }\n\n if (this.obrigaValidade) {\n if (!this.formGroupBatchOrSeries.controls.dataValidade.value) {\n this.messageService.add({\n severity: 'error',\n summary: this.translate.instant(`${ this.prefix }error_selected_dates`),\n detail: this.translate.instant(`${ this.prefix }error_expiry_date`)\n });\n return;\n }\n }\n\n const distributedQuantity = this.formGroupBatchOrSeries.get('quantidade').value ? Number(this.formGroupBatchOrSeries.get('quantidade').value) : 0;\n \n if (distributedQuantity > 0) {\n if (this.sum(this.qtdDistribuida, distributedQuantity, this.locale.number.scale) > this.qtdAdistribuir) {\n this.messageService.add({\n severity: 'error',\n summary: this.translate.instant(`${ this.prefix }distribution_error`),\n detail: this.translate.instant(`${ this.prefix }invalid_qty_msg`)\n });\n return;\n }\n } else {\n this.messageService.add({\n severity: 'error',\n summary: this.translate.instant(`${ this.prefix }distribution_error`),\n detail: this.translate.instant(`${ this.prefix }invalid_qtd`)\n });\n return;\n }\n\n if (this.isSerie) {\n if (this.isSaida) {\n if (this.formGroupBatchOrSeries.controls.serie.value.e200ser) {\n codigo = this.formGroupBatchOrSeries.controls.serie.value.e200ser.numSep;\n id = this.formGroupBatchOrSeries.controls.serie.value.e200ser.id;\n } else {\n codigo = this.formGroupBatchOrSeries.controls.serie.value.numSep;\n id = this.formGroupBatchOrSeries.controls.serie.value.id;\n }\n } else {\n codigo = this.formGroupBatchOrSeries.controls.serie.value.toUpperCase();\n this.formGroupBatchOrSeries.controls.serie.patchValue(this.formGroupBatchOrSeries.controls.serie.value.toUpperCase());\n }\n } else {\n if (this.isSaida) {\n if (this.formGroupBatchOrSeries.controls.lote.value.e200lot) {\n codigo = this.formGroupBatchOrSeries.controls.lote.value.e200lot.codLote;\n id = this.formGroupBatchOrSeries.controls.lote.value.e200lot.id;\n } else {\n codigo = this.formGroupBatchOrSeries.controls.lote.value.codLot;\n id = this.formGroupBatchOrSeries.controls.lote.value.id;\n }\n } else {\n codigo = this.formGroupBatchOrSeries.controls.lote.value.toUpperCase();\n this.formGroupBatchOrSeries.controls.lote.patchValue(this.formGroupBatchOrSeries.controls.lote.value.toUpperCase());\n }\n }\n\n if (this.isDuplicateBatchSeries()) {\n if (!this.isSerie) {\n this.messageService.add({\n severity: 'error',\n summary: this.translate.instant(`${ this.prefix }batch_distribution_error`),\n detail: this.translate.instant(`${ this.prefix }duplicated_batch_msg`)\n });\n } else {\n this.messageService.add({\n severity: 'error',\n summary: this.translate.instant(`${ this.prefix }series_distribution_error`),\n detail: this.translate.instant(`${ this.prefix }duplicated_series_msg`)\n });\n }\n return;\n }\n\n let loteOrSerieValues = this.formGroupBatchOrSeries.getRawValue();\n\n loteOrSerieValues = this.formatDates(loteOrSerieValues, [ 'dataFabricacao', 'dataValidade' ]);\n\n if (this.loteSerieParams?.invoiceInformation?.origin === EnumInvoiceOrigin.V2 && loteOrSerieValues.serie) {\n if (Array.isArray(loteOrSerieValues.serie)) {\n for (const value of loteOrSerieValues.serie) {\n this.gridData.push({\n id: value.id,\n codigo: value.numSep,\n quantidade: value.qtdDisponivel,\n dataFabricacao: value.datFabSep,\n dataValidade: value.datVltSep\n });\n this.qtdDistribuida = this.sum(this.qtdDistribuida, value.qtdDisponivel, this.locale.number.scale)\n this.qtdRestante = this.sub(this.qtdRestante, value.qtdDisponivel, this.locale.number.scale) \n }\n } else {\n this.gridData.push({\n id: loteOrSerieValues.serie.id,\n codigo: loteOrSerieValues.serie.numSep,\n quantidade: loteOrSerieValues.serie.qtdDisponivel,\n dataFabricacao: loteOrSerieValues.serie.datFabSep,\n dataValidade: loteOrSerieValues.serie.datVltSep\n });\n\n this.qtdDistribuida = this.sum(this.qtdDistribuida, Number(loteOrSerieValues.serie.qtdDisponivel), this.locale.number.scale)\n this.qtdRestante = this.sub(this.qtdRestante, Number(loteOrSerieValues.serie.qtdDisponivel), this.locale.number.scale)\n\n }\n } else {\n this.gridData.push({\n id: id,\n codigo: codigo,\n quantidade: loteOrSerieValues.quantidade,\n dataFabricacao: loteOrSerieValues.dataFabricacao,\n dataValidade: loteOrSerieValues.dataValidade\n });\n\n this.qtdDistribuida = this.sum(this.qtdDistribuida, Number(loteOrSerieValues.quantidade), this.locale.number.scale)\n this.qtdRestante = this.sub(this.qtdRestante, Number(loteOrSerieValues.quantidade), this.locale.number.scale)\n }\n\n this.clearBatchSeries();\n this.loteSerieParams.lotesOrSeries = this.gridData;\n } else {\n return this.validateAllFormFields(this.formGroupBatchOrSeries);\n }\n }\n\n private toCode(currentValue: string, msgError: string) {\n currentValue = String(currentValue).trim().toUpperCase()\n if (isEmpty(currentValue)) {\n this.messageService.add({\n severity: 'error',\n summary: this.translate.instant(`${ this.prefix }codigo_not_informed`),\n detail: msgError,\n life: 20000\n });\n this.gridData = [];\n throw msgError;\n }\n return currentValue;\n }\n\n private toAmount(currentValue: string, linhaAtual: number) {\n const convertedValue = this.toNumber(currentValue);\n if (!currentValue || !convertedValue && convertedValue != 0) {\n const msgError = this.translate.instant(`${ this.prefix }amount_not_informed_batch`, { line: linhaAtual });\n this.messageService.add({\n severity: 'error',\n summary: this.translate.instant(`${ this.prefix }amount_not_informed`),\n detail: msgError,\n life: 20000\n });\n this.gridData = [];\n throw msgError;\n }\n if (String(currentValue).indexOf(this.locale.number.thousandsSeparator) > 0) {\n const msgError = this.translate.instant(`${ this.prefix }format_number_invalid_batch`, { line: linhaAtual });\n this.messageService.add({\n severity: 'error',\n summary: this.translate.instant(`${ this.prefix }amount_invalid_batch`),\n detail: msgError,\n life: 20000\n });\n this.gridData = [];\n throw msgError;\n }\n\n if (convertedValue <= 0) {\n const msgError = this.translate.instant(`${ this.prefix }amount_quantity_that_zero_batch`, { line: linhaAtual });\n this.messageService.add({\n severity: 'error',\n summary: this.translate.instant(`${ this.prefix }amount_invalid_batch`),\n detail: msgError,\n life: 20000\n });\n this.gridData = [];\n throw msgError;\n }\n const temDecimal = String(convertedValue).split('.');\n\n if (temDecimal.length > 1 && this.locale.number.scale != String(convertedValue).split('.')[1].length) {\n const msgError = this.translate.instant(`${ this.prefix }invalid_decimals_batch`, { line: linhaAtual });\n this.messageService.add({\n severity: 'error',\n summary: this.translate.instant(`${ this.prefix }amount_invalid_batch`),\n detail: msgError,\n life: 20000\n });\n this.gridData = [];\n throw msgError;\n }\n return convertedValue;\n }\n\n private toNumber(currentValue: string) {\n return (isNotEmpty(currentValue)) ? Number(currentValue.replace(this.locale.number.thousandsSeparator, '').replace(this.locale.number.decimalSeparator, '.')) : undefined;\n }\n\n private toDate(currentValue: string, msgError: string) {\n if (isNotEmpty(currentValue) && !moment(currentValue.trim(), 'L', true).isValid()) {\n this.messageService.add({\n severity: 'error',\n summary: this.translate.instant(`${ this.prefix }invalid_date_batch`),\n detail: msgError,\n life: 20000\n });\n this.gridData = [];\n throw msgError;\n }\n return (isNotEmpty(currentValue)) ? moment(currentValue.trim(), 'L', true).format('YYYY-MM-DD') : undefined;\n }\n\n private isDuplicateBatchSeries(): boolean {\n let codigo: string;\n\n if (!this.isSerie) {\n if (this.isSaida) {\n codigo = this.formGroupBatchOrSeries.controls.lote.value.e200lot ?\n this.formGroupBatchOrSeries.controls.lote.value.e200lot.codLote :\n this.formGroupBatchOrSeries.controls.lote.value.codLot;\n } else {\n codigo = this.formGroupBatchOrSeries.controls.lote.value.toUpperCase();\n }\n return this.gridData.find((element: any) => {\n if (element.codigo === codigo)\n return true;\n\n return false;\n });\n } else {\n if (this.isSaida && Array.isArray(this.formGroupBatchOrSeries?.controls?.serie?.value)) {\n for (const series of this.formGroupBatchOrSeries?.controls?.serie?.value) {\n for (const addedSeries of this.gridData) {\n if (series.numSep === addedSeries.codigo) return true;\n }\n }\n\n return false;\n }\n return this.gridData.find((element: any) => {\n if (this.isSaida) {\n codigo = this.formGroupBatchOrSeries.controls.serie.value.e200ser ?\n this.formGroupBatchOrSeries.controls.serie.value.e200ser.numSep :\n this.formGroupBatchOrSeries.controls.serie.value.numSep;\n } else {\n codigo = this.formGroupBatchOrSeries.controls.serie.value.toUpperCase();\n }\n\n if (element.codigo === codigo)\n return true;\n\n return false;\n });\n }\n }\n\n private clearBatchSeries() {\n this.formGroupBatchOrSeries.reset();\n if (this.isSaida) {\n this.formGroupBatchOrSeries.controls.dataFabricacao.disable();\n this.formGroupBatchOrSeries.controls.dataValidade.disable();\n } else {\n if (this.blockedFields == false)\n this.formGroupBatchOrSeries.controls.dataFabricacao.enable();\n if ((!this.disableDataValidade) && (this.blockedFields == false)) {\n this.formGroupBatchOrSeries.controls.dataValidade.enable();\n }\n }\n }\n\n private validaLoteorSerie(event: any) {\n\n this.formGroupBatchOrSeries.controls.dataFabricacao.disable();\n this.formGroupBatchOrSeries.controls.dataValidade.disable();\n\n if (!this.isSerie) {\n this.getDatas(event.codLot ? event.codLot : event.e200lot.codLote);\n this.consultaSaldoEstoque(event.codLot ? event.codLot : event.e200lot.codLote);\n } else {\n this.getDatas(event.numSep ? event.numSep : event.e200ser.numSep);\n this.consultaSaldoEstoque(event.numSep ? event.numSep : event.e200ser.numSep);\n }\n }\n\n private onBlurValidaLoteorSerie(value: any) {\n // Quando realiza o tab, abre o calendar, por isso é necessário desabilitar antes\n if (value) {\n if (this.validateInvalidChars) {\n const newValue = value.trim();\n if (value !== newValue) {\n if (this.loteSerieParams.tipoControleProduto == EnumTipoControleProduto.Serie) {\n this.formGroupBatchOrSeries.controls.serie.patchValue(newValue);\n } else {\n this.formGroupBatchOrSeries.controls.lote.patchValue(newValue);\n }\n }\n\n }\n this.getDatas(value.toUpperCase());\n this.consultaSaldoEstoque(value.toUpperCase());\n }\n }\n\n private getDatas(value: any) {\n\n this.formGroupBatchOrSeries.controls.dataFabricacao.reset();\n this.formGroupBatchOrSeries.controls.dataValidade.reset();\n this.formGroupBatchOrSeries.controls.saldo.reset();\n this.formGroupBatchOrSeries.controls.dataFabricacao.disable();\n this.formGroupBatchOrSeries.controls.dataValidade.disable();\n\n let filterQuery: any;\n let deposito = '';\n\n if (this.isSerie) {\n if (this.loteSerieParams.dadosProduto.e205dep) {\n deposito = this.loteSerieParams.dadosProduto.e205dep;\n } else {\n if (this.formGroupBatchOrSeries.controls.deposito.value)\n deposito = this.formGroupBatchOrSeries.controls.deposito.value.e205dep.id;\n }\n\n filterQuery = {\n e070emp: {\n id: this.loteSerieParams.dadosProduto.e070emp\n },\n e205dep: {\n id: deposito\n },\n e075der: {\n id: this.loteSerieParams.dadosProduto.e075der\n },\n serLike: false,\n serSal: true,\n serDis: true,\n offset: 0,\n size: 10,\n orderBy: [ {\n field: 'e200ser.numSep',\n order: 'ASC'\n } ]\n };\n\n if (value) {\n filterQuery.e200ser = [ {\n numSep: value\n } ];\n }\n\n this.batchSeriesService\n .listSeries(filterQuery)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((response: any) => {\n if (response.series.length > 0) {\n const dates = this.formatDatesToCalendar(response.series[0], [ 'datFab', 'datVlt' ]);\n\n if (dates.e200ser.datFab) {\n this.formGroupBatchOrSeries.controls.dataFabricacao.patchValue(moment(dates.e200ser.datFab).toDate());\n }\n if (dates.e200ser.datVlt) {\n this.formGroupBatchOrSeries.controls.dataValidade.patchValue(moment(dates.e200ser.datVlt).toDate());\n }\n } else {\n if (!this.isSaida) {\n this.formGroupBatchOrSeries.controls.dataFabricacao.enable();\n }\n\n if ((!this.disableDataValidade) && (this.blockedFields == false) && !this.isSaida)\n this.formGroupBatchOrSeries.controls.dataValidade.enable();\n }\n });\n } else {\n if (this.loteSerieParams.dadosProduto.e205dep) {\n deposito = this.loteSerieParams.dadosProduto.e205dep;\n } else {\n if (this.formGroupBatchOrSeries.controls.deposito.value)\n deposito = this.formGroupBatchOrSeries.controls.deposito.value.e205dep.id;\n }\n\n filterQuery = {\n e070emp: {\n id: this.loteSerieParams.dadosProduto.e070emp\n },\n e205dep: {\n id: deposito\n },\n e075der: {\n id: this.loteSerieParams.dadosProduto.e075der\n },\n lotLike: false,\n lotSal: true,\n lotDis: true,\n offset: 0,\n size: 10,\n orderBy: [ {\n field: 'e200lot.codLot',\n order: 'ASC'\n } ]\n };\n\n if (value) {\n filterQuery.e200lot = [ {\n codLot: value\n } ];\n }\n\n this.batchSeriesService\n .listBatch(filterQuery)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((response: any) => {\n if (response.lotes.length > 0) {\n const dates = this.formatDatesToCalendar(response.lotes[0], [ 'datFab', 'datVlt' ]);\n\n if (dates.e200lot.datFab) {\n this.formGroupBatchOrSeries.controls.dataFabricacao.patchValue(moment(dates.e200lot.datFab).toDate());\n }\n if (dates.e200lot.datVlt) {\n this.formGroupBatchOrSeries.controls.dataValidade.patchValue(moment(dates.e200lot.datVlt).toDate());\n }\n } else {\n if (!this.isSaida) {\n this.formGroupBatchOrSeries.controls.dataFabricacao.enable();\n }\n\n if ((!this.disableDataValidade) && (this.blockedFields == false) && !this.isSaida)\n this.formGroupBatchOrSeries.controls.dataValidade.enable();\n }\n });\n }\n }\n\n private processFamilySupplyInfo(familyID: string) {\n this.batchSeriesService\n .getProductFamilySupplyInfo(familyID)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((response: any) => {\n const supplyInfo = response.contents[0];\n\n this.obrigaValidade = false;\n this.formGroupBatchOrSeries.controls.dataValidade.setValidators([]);\n\n switch (supplyInfo?.ctrVld) {\n case 'VO':\n this.formGroupBatchOrSeries.controls.dataValidade.clearValidators();\n this.formGroupBatchOrSeries.controls.dataValidade.setValidators([ Validators.required ]);\n if (this.blockedFields == false && !this.isSaida)\n this.formGroupBatchOrSeries.controls.dataValidade.enable();\n this.obrigaValidade = true;\n break;\n case 'VD':\n this.formGroupBatchOrSeries.controls.dataValidade.disable();\n this.disableDataValidade = true;\n break;\n case 'VL':\n if (this.blockedFields == false && !this.isSaida)\n this.formGroupBatchOrSeries.controls.dataValidade.enable();\n break;\n }\n });\n\n this.formGroupBatchOrSeries.controls.dataValidade.updateValueAndValidity({ emitEvent: false });\n }\n\n public consultaSaldoEstoque(value: string) {\n\n let balancePayload = {};\n\n if (this.isSerie) {\n balancePayload = {\n e205dep: {\n id: this.loteSerieParams.dadosProduto.e205dep ?\n this.loteSerieParams.dadosProduto.e205dep :\n this.formGroupBatchOrSeries.controls.deposito.value.e205dep.id\n },\n e075der: { id: this.loteSerieParams.dadosProduto.e075der },\n e200ser: { numSep: value }\n };\n } else {\n balancePayload = {\n e205dep: {\n id: this.loteSerieParams.dadosProduto.e205dep ?\n this.loteSerieParams.dadosProduto.e205dep :\n this.formGroupBatchOrSeries.controls.deposito.value.e205dep.id\n },\n e075der: { id: this.loteSerieParams.dadosProduto.e075der },\n e200lot: { codLot: value }\n };\n }\n\n this.batchSeriesService\n .consultarSaldoEstoque(balancePayload)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((response: any) => {\n if (!response.saldo) {\n this.formGroupBatchOrSeries.controls.saldo.patchValue(0);\n } else {\n this.formGroupBatchOrSeries.controls.saldo.patchValue(response.saldo);\n }\n });\n }\n\n public getQuantidadeDistribuida() {\n let qtd = 0;\n\n this.loteSerieParams.lotesOrSeries.forEach((val: any) => {\n if (!this.isSerie)\n qtd = this.sum(qtd, val.quantidade, this.locale.number.scale);\n else\n qtd = this.sum(qtd, 1, this.locale.number.scale);\n });\n\n return qtd;\n }\n\n private validateAllFormFields(formGroup: FormGroup) {\n Object.keys(formGroup.controls).forEach(field => {\n const control = formGroup.get(field);\n if (control instanceof FormControl) control.markAsDirty({ onlySelf: true });\n else if (control instanceof FormGroup) this.validateAllFormFields(control);\n });\n }\n\n public onRouteDataChange(data: any) {\n this.localeConfig = data.localeConfig;\n this.locale = this.localeConfig;\n this.locale.number.scale = this.loteSerieParams.dadosProduto.qtdDec ? this.loteSerieParams.dadosProduto.qtdDec : 0;\n }\n\n public getE200LotSearchGridFields() {\n const searchGridFields = [\n new FormField({\n name: 'e200lot.codLote',\n label: this.translate.instant(`${ this.prefix }lookup_e200lot_cod_dep`),\n type: FieldType.String,\n }),\n new FormField({\n name: 'e200lot.datFab',\n label: this.translate.instant(`${ this.prefix }lookup_e200lot_dat_fab`),\n type: FieldType.Date,\n }),\n new FormField({\n name: 'e200lot.datVlt',\n label: this.translate.instant(`${ this.prefix }lookup_e200lot_dat_vlt`),\n type: FieldType.Date,\n }),\n new FormField({\n name: 'qtdDis',\n label: this.translate.instant(`${ this.prefix }lookup_e200lot_qtd_dis`),\n type: FieldType.Double,\n }),\n ];\n\n return searchGridFields;\n }\n\n public getE200SerSearchGridFields() {\n const searchGridFields = [\n new FormField({\n name: 'e200ser.numSep',\n label: this.translate.instant(`${ this.prefix }lookup_e200ser_num_sep`),\n type: FieldType.String,\n }),\n new FormField({\n name: 'e200ser.datFab',\n label: this.translate.instant(`${ this.prefix }lookup_e200ser_dat_fab`),\n type: FieldType.Date,\n }),\n new FormField({\n name: 'e200ser.datVlt',\n label: this.translate.instant(`${ this.prefix }lookup_e200ser_dat_vlt`),\n type: FieldType.Date,\n }),\n new FormField({\n name: 'qtdDis',\n label: this.translate.instant(`${ this.prefix }lookup_e200ser_qtd_dis`),\n type: FieldType.Double,\n }),\n ];\n\n return searchGridFields;\n }\n\n public onE200LotLookupRequest(value: string) {\n let deposito = '';\n const displayFields = this.loteLookupDisplayFields;\n\n if (this.loteSerieParams.dadosProduto.e205dep) {\n deposito = this.loteSerieParams.dadosProduto.e205dep;\n } else {\n if (this.formGroupBatchOrSeries.controls.deposito.value)\n deposito = this.formGroupBatchOrSeries.controls.deposito.value.e205dep.id;\n }\n\n const filterQuery: any = {\n e070emp: {\n id: this.loteSerieParams.dadosProduto.e070emp\n },\n e205dep: {\n id: deposito\n },\n e075der: {\n id: this.loteSerieParams.dadosProduto.e075der\n },\n lotLike: true,\n lotSal: true,\n lotDis: true,\n offset: 0,\n size: 10,\n orderBy: [ {\n field: 'e200lot.codLot',\n order: 'ASC'\n } ]\n };\n\n if (value) {\n filterQuery.e200lot = [ {\n codLot: value\n } ];\n }\n\n this.batchSeriesService\n .listBatch(filterQuery)\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n lotes: list.lotes.map((item: any) => ({\n ...item,\n label: displayFields\n .map(field => {\n if (field.indexOf('.') > 0) return this.getProp(item, field);\n return item[field];\n }),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.e200lotLookupSuggestionsObservable.next(list.lotes);\n });\n\n }\n\n public onE200SerLookupRequest(value: string) {\n let deposito = '';\n const displayFields = this.serieLookupDisplayFields;\n\n if (this.loteSerieParams.dadosProduto.e205dep) {\n deposito = this.loteSerieParams.dadosProduto.e205dep;\n } else {\n if (this.formGroupBatchOrSeries.controls.deposito.value)\n deposito = this.formGroupBatchOrSeries.controls.deposito.value.e205dep.id;\n }\n\n const filterQuery: any = {\n e070emp: {\n id: this.loteSerieParams.dadosProduto.e070emp\n },\n e205dep: {\n id: deposito\n },\n e075der: {\n id: this.loteSerieParams.dadosProduto.e075der\n },\n serLike: true,\n serSal: true,\n serDis: true,\n offset: 0,\n size: 10,\n orderBy: [ {\n field: 'e200ser.numSep',\n order: 'ASC'\n } ]\n };\n\n if (value) {\n filterQuery.e200ser = [ {\n numSep: value\n } ];\n }\n\n this.batchSeriesService\n .listSeries(filterQuery)\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n series: list.series.map((item: any) => ({\n ...item,\n label: displayFields\n .map(field => {\n if (field.indexOf('.') > 0) return this.getProp(item, field);\n return item[field];\n }),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.e200serLookupSuggestionsObservable.next(list.series);\n });\n\n }\n\n public formatDates(requestBody: any, properties: string[]) {\n return Object.keys(requestBody).reduce((prev: any, value: any) => {\n if (properties.indexOf(value) > -1 && requestBody[value]) {\n prev[value] = moment(requestBody[value]).format('YYYY-MM-DD');\n } else {\n prev[value] = requestBody[value];\n }\n return prev;\n }, {});\n }\n\n public formatDatesToCalendar(requestBody: any, properties: string[]) {\n return Object.keys(requestBody).reduce((prev: any, value: any) => {\n if (properties.indexOf(value) > -1 && requestBody[value]) {\n if ((requestBody[value] != undefined) && (requestBody[value] != null)) {\n prev[value] = moment(requestBody[value]).toDate();\n } else {\n prev[value] = '';\n }\n } else {\n prev[value] = requestBody[value];\n }\n return prev;\n }, {});\n }\n\n public translateHtml(text: string, value: any = null, shortcut: string = null): string {\n const ret = this.translate.instant(`${ this.prefix }${ text }`, { value: value });\n return shortcut ? `${ ret } ${ shortcut }` : ret;\n }\n\n public onDistributeSeries(): void {\n this.batchSeriesService\n .obterNecessidades({\n e070empId: this.loteSerieParams.invoiceInformation.company.id,\n e070filId: this.loteSerieParams.invoiceInformation.branch.id,\n itensId: [\n this.loteSerieParams.invoiceInformation.item.product.id\n ],\n tipo: EnumTipoDocumentoParametros.PedidoVenda,\n documentoId: null,\n numeroDocumentoPai: [\n this.loteSerieParams?.orderInformation?.number.toString()\n ],\n dataInicial: null,\n dataFinal: null,\n situacao: null,\n codigoDemanda: null,\n somenteUrgentes: false,\n pageRequest: {\n offset: 0,\n size: 10\n }\n })\n .pipe(first())\n .subscribe(({ necessidades }) => {\n const itemId =\n this.loteSerieParams?.orderInformation?.item.id;\n const atendimento = necessidades.find(\n (necessidade) => necessidade.documento?.idExterno === itemId\n );\n\n const getUrlInput: GetUrlInput = {\n identifiers: [\n {\n domainName: 'erpx_sup',\n serviceName: 'demandas',\n appName: 'erpx-sup-demandas',\n route: `demandas/atendimentos/${ atendimento.id }?isSeriesDistributionVisible=true`\n }\n ]\n };\n\n this.batchSeriesService\n .getUrl(getUrlInput)\n .pipe(first())\n .subscribe((getUrlOutput: GetUrlOutput) => {\n window.open(\n `${ getUrlOutput.frontends[0].embeddedURL }`,\n '_blank'\n );\n });\n });\n }\n\n public onDelete() {\n this.selection.forEach(value => this.removeBatchOrSeries(value));\n this.selection = [];\n }\n\n public isDistributeSeriesButtonVisible(): boolean {\n return (\n this.loteSerieParams?.invoiceInformation?.item?.product\n ?.isSerialControlled &&\n this.loteSerieParams?.invoiceInformation?.origin ===\n EnumInvoiceOrigin.V2\n );\n }\n\n private onBlurQuantity(): void {\n if (!this.isSaida) return;\n\n const quantity = Number(this.formGroupBatchOrSeries.controls.quantidade.value);\n const balance = Number(this.formGroupBatchOrSeries.controls.saldo.value);\n\n if (quantity > balance)\n this.messageService.add({\n severity: 'warn',\n summary: this.translate.instant(`${ this.prefix }warn`),\n detail: this.translate.instant(`${ this.prefix }invalid_batch_distribution_quantity`)\n });\n }\n}\n\n/*Parâmetros para utilizar o componente de lote-série */\nexport interface LoteSerieParams {\n\n /* Informa se a movimentação é do tipo entrada ou saida. */\n tipoMovimentacao: EnumTipoMovimentacao;\n\n /* Informa se o produto é controlado por lote ou série. */\n tipoControleProduto: EnumTipoControleProduto;\n\n /* Informa a quantidade a ser distribuÃda. */\n quantidadeDistribuir: number;\n\n /* Informa os dados do produto. */\n dadosProduto: DadosProduto;\n\n /* Informa os lotes ou séries ja distribuÃdos.*/\n lotesOrSeries?: Array<LotesOrSeries>;\n\n /* Informações da nota .*/\n invoiceInformation?: InvoiceInformation;\n\n /* Informações do pedido de venda .*/\n orderInformation?: OrderInformation;\n}\n\n/** Enum para tipo de movimento */\nexport enum EnumTipoMovimentacao {\n /** Tipo movimentação igual a Entrada */\n Entrada = 'Entrada',\n /** Tipo movimentação igual a SaÃda */\n Saida = 'Saida'\n}\n\n/** Enum para tipo de controle de produto */\nexport enum EnumTipoControleProduto {\n /** Tipo de controle igual a Lote */\n Lote = 'Lote',\n /** Tipo de controle igual a Série */\n Serie = 'Serie'\n}\n\n/** Interface para dados do produto */\nexport interface DadosProduto {\n /** ID do produto */\n e075der: string;\n\n /** ID do depósito */\n e205dep?: string;\n\n /** ID da famÃlia do produto */\n e012fam: string;\n\n /** Entidade empresa */\n e070emp: string;\n\n /** Quantidade de casas decimais */\n qtdDec?: number;\n}\n\n/** Interface para dados da grid dos lotes/séries distribuÃdos */\nexport interface LotesOrSeries {\n /** ID do Lote ou Série */\n id?: string;\n\n /** Código do Lote ou Série */\n codigo: string;\n\n /** Data de validade do lote/série */\n dataValidade?: string;\n\n /** Data de fabricação do lote/série */\n dataFabricacao?: string;\n\n /** Quantidade **/\n quantidade?: number;\n\n}\n\nexport enum EnumInvoiceOrigin {\n V1 = 'V1',\n V2 = 'V2',\n V3 = 'V3',\n V4 = 'V4',\n V5 = 'V5',\n V99 = 'V99'\n}\n\nexport interface InvoiceItem {\n id: string;\n product: {\n id: string;\n isSerialControlled: boolean;\n };\n}\n\nexport interface InvoiceInformation {\n company: {\n id: string;\n };\n branch: {\n id: string;\n };\n origin: EnumInvoiceOrigin;\n item?: InvoiceItem;\n}\n\nexport interface OrderItem {\n id: string;\n}\n\nexport interface OrderInformation {\n number: number;\n item: OrderItem;\n}\n\ninterface BulkImport {\n codigo: string,\n dataFabricacao: string,\n dataValidade: string,\n quantidade?: number\n}\n\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ErpLookupsModule } from '@senior-gestao-empresarial/angular-components';\nimport {\n ButtonModule,\n DynamicFormModule,\n EmptyStateModule,\n LoadingStateModule,\n LocaleModule,\n SidebarModule,\n StatsCardModule, TableModule as STableModule,\n} from '@seniorsistemas/angular-components';\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\nimport { MessagesModule } from 'primeng/messages';\nimport { PanelModule } from 'primeng/panel';\nimport { TableModule } from 'primeng/table';\nimport { TabViewModule } from 'primeng/tabview';\nimport { QuantidadeDisponivelDemandaModule } from '../../core/entities/quantidade-disponivel-demanda/quantidade-disponivel-demanda.module';\nimport { ErpLoteSerieComponent } from './erp-lote-serie.component';\nimport { ErpLoteSeriesService } from './erp-lote-serie.service';\n\n@NgModule({\n declarations: [ErpLoteSerieComponent],\n imports: [\n CommonModule,\n TranslateModule,\n ButtonModule,\n DynamicFormModule,\n LocaleModule.forChild(),\n ErpLookupsModule,\n PanelModule,\n TabViewModule,\n ConfirmDialogModule,\n FormsModule,\n ReactiveFormsModule,\n StatsCardModule,\n EmptyStateModule,\n TableModule,\n LoadingStateModule,\n MessagesModule,\n SidebarModule,\n QuantidadeDisponivelDemandaModule,\n STableModule\n ],\n providers: [ErpLoteSeriesService],\n exports: [ErpLoteSerieComponent],\n})\nexport class ErpLoteSerieModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {FocusService as ɵd} from './components/focus/focus.service';\nexport {ErpLoteSeriesService as ɵe} from './components/lote-serie/erp-lote-serie.service';\nexport {ErpResumoComponent as ɵa} from './components/resumo/erp-resumo.component';\nexport {ErpResumoService as ɵb} from './components/resumo/erp-resumo.service';\nexport {ErpTributosService as ɵc} from './components/tributos/erp-tributos.service';\nexport {EntityService as ɵg} from './core/entities/entity-service';\nexport {QuantidadeDisponivelDemandaModule as ɵh} from './core/entities/quantidade-disponivel-demanda/quantidade-disponivel-demanda.module';\nexport {QuantidadeDisponivelDemandaService as ɵf} from './core/entities/quantidade-disponivel-demanda/quantidade-disponivel-demanda.service';"],"names":["PrimeBreadcrumbModule","MessageService","STableModule"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"senior-gestao-empresarial-erpx-components.js","sources":["ng://@senior-gestao-empresarial/erpx-components/components/breadcrumb/breadcrumb.component.ts","ng://@senior-gestao-empresarial/erpx-components/components/breadcrumb/breadcrumb.module.ts","ng://@senior-gestao-empresarial/erpx-components/components/resumo/erp-resumo.service.ts","ng://@senior-gestao-empresarial/erpx-components/components/resumo/erp-resumo.component.ts","ng://@senior-gestao-empresarial/erpx-components/components/resumo/erp-resumo.module.ts","ng://@senior-gestao-empresarial/erpx-components/components/utils/breakpoints.ts","ng://@senior-gestao-empresarial/erpx-components/components/utils/export-utils.ts","ng://@senior-gestao-empresarial/erpx-components/components/utils/utils.ts","ng://@senior-gestao-empresarial/erpx-components/components/focus/focus.service.ts","ng://@senior-gestao-empresarial/erpx-components/components/tributos/erp-tributos.service.ts","ng://@senior-gestao-empresarial/erpx-components/components/tributos/erp-tributos.types.ts","ng://@senior-gestao-empresarial/erpx-components/components/tributos/erp-tributos.component.ts","ng://@senior-gestao-empresarial/erpx-components/components/tributos/erp-tributos.module.ts","ng://@senior-gestao-empresarial/erpx-components/core/entities/entity-service.ts","ng://@senior-gestao-empresarial/erpx-components/core/entities/quantidade-disponivel-demanda/quantidade-disponivel-demanda.service.ts","ng://@senior-gestao-empresarial/erpx-components/core/entities/quantidade-disponivel-demanda/quantidade-disponivel-demanda.module.ts","ng://@senior-gestao-empresarial/erpx-components/core/enums/enum-tipo-documento-parametros.ts","ng://@senior-gestao-empresarial/erpx-components/components/lote-serie/erp-lote-serie.service.ts","ng://@senior-gestao-empresarial/erpx-components/components/lote-serie/erp-lote-serie.component.ts","ng://@senior-gestao-empresarial/erpx-components/components/lote-serie/erp-lote-serie.module.ts","ng://@senior-gestao-empresarial/erpx-components/senior-gestao-empresarial-erpx-components.ts"],"sourcesContent":["import { Component, Input, OnDestroy } from '@angular/core';\nimport { ActivatedRoute, NavigationEnd, PRIMARY_OUTLET, Router } from '@angular/router';\nimport { MenuItem } from 'primeng/api';\nimport { Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: `s-breadcrumb`,\n templateUrl: `./breadcrumb.component.html`,\n})\nexport class BreadcrumbComponent implements OnDestroy {\n @Input() public homeUrl: string;\n public home: MenuItem;\n public items: MenuItem[];\n public title: string;\n\n private ngUnsubscribe = new Subject<any>();\n\n constructor(private activatedRoute: ActivatedRoute, private router: Router) {\n this.router.events\n .pipe(takeUntil(this.ngUnsubscribe), filter(event => event instanceof NavigationEnd))\n .subscribe(() => this.onNavigationEnd());\n }\n\n private onNavigationEnd() {\n const currentRoute = this.activatedRoute.root;\n const validRoutes: ActivatedRoute[] = this.getValidChildren(currentRoute);\n\n this.title = this.getCurrentTitle(validRoutes);\n this.home = this.getCurrentHome(validRoutes);\n this.items = this.getCurrentItems(validRoutes);\n }\n\n private getValidChildren(route: ActivatedRoute): ActivatedRoute[] {\n const valid = route.routeConfig && route.routeConfig.path && route.routeConfig.component && route.outlet === PRIMARY_OUTLET;\n return route.children.reduce((validRoutes, child) => [...validRoutes, ...this.getValidChildren(child)], valid ? [route] : []);\n }\n\n private getCurrentTitle(routes: ActivatedRoute[]) {\n const last = routes[routes.length - 1];\n if (last && last.routeConfig) return this.getTitle(last);\n }\n\n private getCurrentHome(routes: ActivatedRoute[]) {\n let home;\n if (this.homeUrl) home = { url: this.homeUrl, icon: 'far fa-home' };\n else if (routes.length) home = { ...this.getMenuItem(routes[0], routes.length === 1), icon: 'far fa-home' };\n\n return home;\n }\n\n private getCurrentItems(routes: ActivatedRoute[]) {\n if (!routes.length) return;\n const items = this.homeUrl ? routes : routes.slice(1);\n if (items.length) return items.map((route, i) => this.getMenuItem(route, i === routes.length - 1));\n }\n\n private getMenuItem(route: ActivatedRoute, disabled = false) {\n const label = this.getTitle(route);\n const routes = route.pathFromRoot;\n const routerLink = routes\n .slice(0, routes.indexOf(route) + 1)\n .reduce((result, item) => [...result, ...item.snapshot.url.map(url => url.path)], ['/']);\n\n return {\n label,\n routerLink,\n queryParams: route.snapshot.queryParams,\n routerLinkActiveOptions: { exact: true },\n disabled,\n };\n }\n\n private getTitle(route: ActivatedRoute) {\n const { snapshot, routeConfig } = route;\n const title = snapshot.data.routeTitle;\n if (!title) throw new Error(`No routeTitle defined for the route /${routeConfig.path}`);\n return title;\n }\n\n public ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BreadcrumbModule as PrimeBreadcrumbModule } from 'primeng/breadcrumb';\n\nimport { BreadcrumbComponent } from './breadcrumb.component';\nimport { RouterModule } from '@angular/router';\n\n@NgModule({\n imports: [CommonModule, PrimeBreadcrumbModule, RouterModule],\n declarations: [BreadcrumbComponent],\n exports: [BreadcrumbComponent, RouterModule],\n})\nexport class BreadcrumbModule {}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ErpResumoService {\n\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'erp-resumo[summary]',\n templateUrl: './erp-resumo.component.html',\n styleUrls: ['./erp-resumo.component.scss']\n})\nexport class ErpResumoComponent {\n\n @Input() summary: Summary;\n\n public getProp(obj: any, path: any) {\n return path.split('.').reduce((result: any, prop: any) => (result[prop] === undefined ? ' ' : result[prop]), obj);\n }\n\n}\n\nexport interface Summary {\n total?: SummaryItem;\n sections: Array<SummarySectionItem>;\n}\n\nexport interface SummarySectionItem {\n title?: string;\n items: Array<Array<SummaryItem>>;\n subtotal?: SummaryItem;\n}\n\nexport interface SummaryItem {\n label?: string;\n value?: string | number;\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ErpResumoService } from './erp-resumo.service';\nimport { ErpResumoComponent } from './erp-resumo.component';\n\n@NgModule({\n declarations: [\n ErpResumoComponent\n ],\n imports: [\n CommonModule\n ],\n providers: [\n ErpResumoService\n ],\n exports: [\n ErpResumoComponent\n ]\n})\nexport class ErpResumoModule { }\n","export const Breakpoints = {\n SM_MIN: 0,\n SM_MAX: 640,\n MD_MIN: 641,\n MD_MAX: 1024,\n LG_MIN: 1025,\n LG_MAX: 1440,\n XL_MIN: 1441,\n XL_MAX: Infinity,\n};\n","export class ExportUtils {\n constructor() {\n throw new Error('Classe não deve ser instanciada.');\n }\n\n public static exportCSV(\n columns: Partial<any>[] = [],\n data: any[] = [],\n csvSeparator: string = ';',\n documentName: string = 'download'\n ) {\n let csv = '\\ufeff';\n\n columns.filter((column: any) => column.exportable && column.field).forEach((column: any, i: number) => {\n csv += `\"${column.header || column.field}\"`;\n\n if (i < columns.length - 1) csv += csvSeparator;\n });\n\n data.forEach((record: any) => {\n csv += '\\n';\n\n columns.filter((column: any) => column.exportable && column.field).forEach((column: any, i: number) => {\n let cellData = this.resolveFieldData(record, column.field);\n\n if (cellData != null) cellData = String(cellData).replace(/\"/g, `\"\"`);\n else cellData = '';\n\n csv += `\"${cellData}\"`;\n\n if (i < columns.length - 1) csv += csvSeparator;\n });\n });\n\n const blob = new Blob([csv], {\n type: 'text/csv;charset=utf-8;',\n });\n\n if (window.navigator.msSaveOrOpenBlob) navigator.msSaveOrOpenBlob(blob, documentName + '.csv');\n else {\n const link = document.createElement('a');\n link.style.display = 'none';\n document.body.appendChild(link);\n if (link.download !== undefined) {\n link.setAttribute('href', URL.createObjectURL(blob));\n link.setAttribute('download', documentName + '.csv');\n link.click();\n } else {\n csv = 'data:text/csv;charset=utf-8,' + csv;\n window.open(encodeURI(csv));\n }\n document.body.removeChild(link);\n }\n }\n\n private static resolveFieldData(data: any, field: any): any {\n if (data && field) {\n if (this.isFunction(field)) return field(data);\n else if (field.indexOf('.') == -1) return data[field];\n else {\n const fields: string[] = field.split('.');\n let value = data;\n for (let i = 0, len = fields.length; i < len; ++i) {\n if (value == null) {\n return null;\n }\n value = value[fields[i]];\n }\n return value;\n }\n } else return null;\n }\n\n private static isFunction(obj: any) {\n return !!(obj && obj.constructor && obj.call && obj.apply);\n }\n}\n","export const isEmpty = (target: any) => {\n if (target === null || target === \"\" || target === undefined) {\n return true;\n }\n if (Array.isArray(target) && !target.length) {\n return true;\n }\n if (Object.keys(target).filter((key) => target[key] !== null || target[key] !== \"\" || target[key] !== undefined).length === 0) {\n return true;\n }\n return false;\n};\n\nexport const isNotEmpty = (value: any) => {\n return !isEmpty(value);\n};\n","import { Injectable } from '@angular/core';\n@Injectable()\nexport class FocusService {\n public focusFirstInvalidInput() {\n const invalidFields = Array.from(document.getElementsByClassName('ng-invalid'));\n const firstField: any = invalidFields.find((f: any) => ((f.nodeName !== 'FORM') && (f.nodeName !== 'DIV')));\n if (firstField.nodeName === 'P-CALENDAR') {\n const firstInputId = firstField.getAttribute('ng-reflect-input-id');\n const firstInvalidInput = document.getElementById(firstInputId);\n if (firstInvalidInput) firstInvalidInput.focus();\n } else if (firstField.nodeName === 'S-LOOKUP') {\n const nestedInput = this.getNestedInput(firstField.firstElementChild);\n if (nestedInput) nestedInput.focus();\n } else firstField.focus();\n }\n\n private getNestedInput(element: any): any {\n if (element.nodeName === 'INPUT') {\n return element;\n }\n return this.getNestedInput(element.firstElementChild);\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Identifiers } from '@angular/compiler';\nimport { Injectable } from '@angular/core';\nimport { MessageService } from 'primeng';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class ErpTributosService {\n constructor(protected http: HttpClient, protected messageService: MessageService) { }\n\n public getFrontend(params: Identifiers): Observable<any> {\n const url = `platform/frontend_updater/queries/getFrontend`;\n return this.http.post<any>(url, params).pipe();\n }\n}\n","import { FormGroup } from \"@angular/forms\";\nimport { FormField } from \"@seniorsistemas/angular-components\";\n\nexport interface CampoTributo {\n campo: EnumCampoTributo;\n}\n\nexport interface Tributo {\n\n tipoImposto: EnumTipoTributo;\n id?: string;\n baseCalculo?: number;\n aliquota?: number;\n valor?: number;\n valorIsentas?: number;\n valorOutras?: number;\n percentualReducao?: number;\n percentualMargemValorAdicionado: number;\n percentualDiferimento?: number;\n PercentualSuspensaoParcial?: number;\n aliquotaInterna?: number;\n}\n\nexport interface Sugestao {\n [nomeCampo: string]: any;\n tipoTributo: EnumTipoTributo;\n}\n\nexport enum EnumCampoTributo {\n BaseCalculo = 'base_calculo',\n Aliquota = 'aliquota',\n Valor = 'valor',\n SituacaoTributaria = 'situacao_tributaria',\n ValorIsentas = 'valor_isentas',\n ValorOutras = 'valor_outras',\n EnquadramentoIpi = 'enquadramento_ipi',\n PercentualReducao = 'percentual_reducao',\n PercentualMargemValorAdicionado = 'percentual_mva',\n PercentualDiferimento = 'percentual_diferimento',\n PercentualSuportadoConsumidorFinal = 'percentual_suportado_consumidor_final',\n PercentualSuspensaoParcial = 'percentual_suspensao_parcial',\n ValorRecolhidoPeloSubstituto = 'valor_recolhido_pelo_substituto',\n ValorIcmsStRetido = 'valor_icms_retido',\n MotivoDesoneracaoIcms = 'motivo_desoneracao_icms',\n Origem = 'origem',\n ModalidadeBC = 'modalidade_bc',\n AliquotaInterna = 'aliquota_interna',\n AliquotaInternaDestino = 'aliquotaInternaDestino',\n NaturezaReceita = 'natureza_receita',\n Observacao = 'observacao',\n ValorDeducao = 'valor_deducao',\n CodigoArrecadacao = 'codigo_arrecadacao',\n ImpostoNaoRecuperado = 'imposto_nao_recuperado',\n baseCalculoCredito = 'baseCalculoCredito',\n CodigoTributacao = 'codigo_tributacao',\n RegimeTributarioPisCofins = 'regime_tributario_pis_cofins',\n IndicativoAquisicao = 'indicativo_aquisicao'\n}\n\nexport enum EnumGrupoTributo {\n ICMS = 'icms',\n ICMS_ST = 'icms_st',\n IPI = 'ipi',\n PIS = 'pis',\n ISS = 'iss',\n COFINS = 'cofins',\n RETENCOES = 'retencoes',\n IMPORTACOES = 'importacoes',\n CIDE_TECNOLOGIA = 'cide_tecnologia',\n FUNRURAL = 'funrural'\n}\n\nexport enum EnumTipoTributo {\n PIS_FATURAMENTO = 'PIS_FATURAMENTO',\n PIS_RECUPERAR = 'PIS_RECUPERAR',\n PIS_DEVOLVIDO = 'PIS_DEVOLVIDO',\n COFINS_RECUPERAR = 'COFINS_RECUPERAR',\n COFINS_DEVOLVIDO = 'COFINS_DEVOLVIDO',\n IPI = 'IPI',\n IPI_CREDITADO = 'IPI_CREDITADO',\n IPI_PRESUMIDO = 'IPI_PRESUMIDO',\n IPI_DEVOLVIDO = 'IPI_DEVOLVIDO',\n IPI_OUTRAS_DESPESAS = 'IPI_OUTRAS_DESPESAS',\n ISS = 'ISS',\n ISS_RETIDO = 'ISS_RETIDO',\n IMPOSTO_IMPORTACAO = 'IMPOSTO_IMPORTACAO',\n PIS_RECUPERAR_IMPORTACAO = 'PIS_RECUPERAR_IMPORTACAO',\n COFINS_RECUPERAR_IMPORTACAO = 'COFINS_RECUPERAR_IMPORTACAO',\n PIS_RETIDO = 'PIS_RETIDO',\n COFINS_RETIDO = 'COFINS_RETIDO',\n CSLL = 'CSLL',\n IRRF = 'IRRF',\n INSS = 'INSS',\n INSS_PATRONAL = 'INSS_PATRONAL',\n ICMS_ST = 'ICMS_ST',\n FCP_ST = 'FCP_ST',\n ICMS_COBRADO_ANTERIORMENTE_ST = 'ICMS_COBRADO_ANTERIORMENTE_ST',\n FCP_COBRADO_ANTERIORMENTE_ST = 'FCP_COBRADO_ANTERIORMENTE_ST',\n ICMS = 'ICMS',\n ICMS_FUTURO = 'ICMS_FUTURO',\n ICMS_SIMPLES = 'ICMS_SIMPLES',\n ICMS_CREDITADO = 'ICMS_CREDITADO',\n FCP = 'FCP',\n ICMS_DIFERIDO = 'ICMS_DIFERIDO',\n ICMS_DESONERADO = 'ICMS_DESONERADO',\n DIFAL = 'DIFAL',\n ICMS_UF_DESTINO = 'ICMS_UF_DESTINO',\n FCP_UF_DESTINO = 'FCP_UF_DESTINO',\n ICMS_ST_SOLIDARIO = 'ICMS_ST_SOLIDARIO',\n ICMS_ST_FUTURO = 'ICMS_ST_FUTURO',\n ICMS_ST_RETIDO_ANT = 'ICMS_ST_RETIDO_ANT',\n FCP_ST_RETIDO_ANT = 'FCP_ST_RETIDO_ANT',\n ICMS_EFETIVO = 'ICMS_EFETIVO',\n PIS = 'PIS',\n COFINS = 'COFINS',\n CIDE_TECNOLOGIA = 'CIDE_TECNOLOGIA',\n DIFAL_DEVOLVIDO = 'DIFAL_DEVOLVIDO',\n ICMS_UF_DESTINO_DEVOLVIDO = 'ICMS_UF_DESTINO_DEVOLVIDO',\n FCP_UF_DESTINO_DEVOLVIDO = 'FCP_UF_DESTINO_DEVOLVIDO',\n IMPOSTO_NAO_RECUPERADO = 'IMPOSTO_NAO_RECUPERADO',\n BASE_CALCULO_CREDITO = 'BASE_CALCULO_CREDITO',\n PERCENTUAL_REDUCAO = 'PERCENTUAL_REDUCAO',\n FUNRURAL_INSS = 'FUNRURAL_INSS',\n FUNRURAL_RAT = 'FUNRURAL_RAT',\n FUNRURAL_SENAR = 'FUNRURAL_SENAR',\n FUNRURAL_TOTAL = 'FUNRURAL_TOTAL'\n}\n\nexport enum EnumTipoDocumento {\n NF_ENTRADA = 'nf_entrada',\n NF_SAIDA = 'nf_saida',\n PEDIDO_COMPRA = 'pedido_compra',\n PEDIDO_VENDA = 'pedido_venda',\n NF_SAIDA_CONTROLADORIA = 'nf_saida_controladoria',\n NF_ENTRADA_CONTROLADORIA = 'nf_entrada_controladoria'\n}\n\nexport enum EnumModBc {\n\n V0 = 'V0',\n V1 = 'V1',\n V2 = 'V2',\n V3 = 'V3'\n}\n\nexport enum EnumOriMer {\n\n V0 = 'V0',\n V1 = 'V1',\n V2 = 'V2',\n V3 = 'V3',\n V4 = 'V4',\n V5 = 'V5',\n V6 = 'V6',\n V7 = 'V7',\n V8 = 'V8'\n}\n\nexport enum EnumMotDes {\n\n V0 = 'V0',\n V1 = 'V1',\n V2 = 'V2',\n V3 = 'V3',\n V4 = 'V4',\n V5 = 'V5',\n V6 = 'V6',\n V7 = 'V7',\n V8 = 'V8',\n V9 = 'V9',\n V10 = 'V10',\n V11 = 'V11',\n V12 = 'V12',\n V16 = 'V16',\n V90 = 'V90'\n}\n\nexport enum EnumTipoItem {\n\n Produto = 'Produto',\n Servico = 'Servico',\n}\n\nexport enum EnumTipImpCst {\n PIS_COFINS = 'PIS_COFINS',\n IPI = 'IPI',\n ICMS = 'ICMS',\n ISS = 'ISS',\n}\n\nexport enum EnumTipOpe {\n VSAIDA = 'VSAIDA',\n VENTRADA = 'VENTRADA',\n VAMBOS = 'VAMBOS'\n}\n\nexport enum enumTipCredRecup {\n V1 = 'V1',\n V2 = 'V2',\n V3 = 'V3',\n V4 = 'V4',\n V5 = 'V5',\n V6 = 'V6',\n V7 = 'V7',\n V8 = 'V8',\n V9 = 'V9',\n V10 = 'V10',\n V11 = 'V11',\n V12 = 'V12',\n V13 = 'V13',\n V14 = 'V14',\n V15 = 'V15',\n V16 = 'V16',\n V17 = 'V17',\n V18 = 'V18',\n}\n\nexport interface Item {\n formField: FormField[];\n formGroup: FormGroup;\n label: string;\n name: string;\n}\n\nexport enum EnumRegimeTributarioPisCofins {\n CUMULATIVO = 'CUMULATIVO',\n NAO_CUMULATIVO = 'NAO_CUMULATIVO'\n}\n\n// \"Indicativo de aquisição para o FUNRURAL\"\nexport enum EnumFunruralIndicativoAquisicao {\n // \"Aquisição de produção de produtor rural pessoa fÃsica ou segurado especial em geral.\"\n V1 = 'V1',\n // \"Aquisição de produção de produtor rural pessoa fÃsica ou segurado especial em geral por entidade executora do Programa de Aquisição de Alimentos PAA.\"\n V2 = 'V2',\n // \"Aquisição de produção de produtor rural pessoa jurÃdica por entidade executora do PAA.\"\n V3 = 'V3',\n // \"Aquisição de produção de produtor rural pessoa fÃsica ou segurado especial em geral Produção isenta (Lei 13.606/2018).\"\n V4 = 'V4',\n // \"Aquisição de produção de produtor rural pessoa fÃsica ou segurado especial em geral por entidade executora do PAA Produção isenta (Lei 13.606/2018).\"\n V5 = 'V5',\n // \"Aquisição de produção de produtor rural pessoa jurÃdica por entidade executora do PAA Produção isenta (Lei 13.606/2018).\"\n V6 = 'V6',\n // \"Aquisição de produção de produtor rural pessoa fÃsica ou segurado especial para fins de exportação.\"\n V7 = 'V7'\n}\n","import { Identifiers } from '@angular/compiler';\nimport { ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n CplTriNotaSaidaNaturezaReceitaPisCofinsLookup,\n E027EqiLookup,\n E027StrLookup,\n EnumLogicalOperator,\n LookupRequestValidator,\n LookupValidationUtils\n} from '@senior-gestao-empresarial/angular-components';\nimport { FieldType, FormField, LookupField } from '@seniorsistemas/angular-components';\nimport { MenuItem, MessageService } from 'primeng/api';\nimport { Observable, of, Subject } from 'rxjs';\nimport { switchMap, takeUntil } from 'rxjs/operators';\nimport { ErpTributosService } from './erp-tributos.service';\nimport { FeatureToggleService } from '@seniorsistemas/platform-components';\nimport { GTagService } from '@seniorsistemas/platform-utils';\nimport {\n CampoTributo,\n EnumCampoTributo,\n EnumFunruralIndicativoAquisicao,\n EnumGrupoTributo,\n EnumModBc,\n EnumMotDes,\n EnumOriMer,\n EnumRegimeTributarioPisCofins,\n enumTipCredRecup,\n EnumTipImpCst,\n EnumTipoDocumento,\n EnumTipoItem,\n EnumTipOpe,\n EnumTipoTributo,\n Item,\n Sugestao\n} from './erp-tributos.types';\n\n@Component({\n selector: 'erp-tributos',\n templateUrl: './erp-tributos.component.html'\n})\nexport class ErpTributosComponent implements OnInit, OnChanges, OnDestroy {\n\n public grupos: any[] = [];\n public tributosValue: any[] = [];\n public reload = true;\n public indexAccordion: number[] = [];\n public prefixLabel: string;\n\n isLoading = false;\n\n private menuItemPis = false;\n private menuItemCofins = false;\n private menuItemIpi = false;\n private menuItemIss = false;\n private menuItemImportacoes = false;\n private menuItemRetencoes = false;\n private menuItemRetencoesFunrural = false;\n private menuItemIcms = false;\n private menuItemCideTecnologia = false;\n private requiredItemCideTecnologia = false;\n private requiredItemPisRecuperar = false;\n private requiredItemPisDevolvido = false;\n private requiredItemCofinsRecuperar = false;\n private requiredItemCofinsDevolvido = false;\n private requiredItemIpi = false;\n private requiredItemIpiCreditado = false;\n private requiredItemIpiDevolvido = false;\n private requiredItemIpiPresumido = false;\n private requiredItemIpiOutrasDespesas = false;\n private requiredItemIss = false;\n private requiredItemIssRetido = false;\n private requiredItemImpostoImportacao = false;\n private requiredItemPisRecuperarImportacao = false;\n private requiredItemCofinsRecuperarImportacao = false;\n private requiredItemPisRetido = false;\n private requiredItemCofinsRetido = false;\n private requiredItemCsllRetido = false;\n private requiredItemIrrfRetido = false;\n private requiredItemInssRetido = false;\n private requiredItemInssPatronal = false;\n private requiredItemIcmsSt = false;\n private requiredItemFcpSt = false;\n private requiredItemIcmsCobradoAnteriormente = false;\n private requiredItemFcpCobradoAnteriormente = false;\n private requiredItemIcms = false;\n private requiredItemIcmsEfetivamenteCreditado = false;\n private requiredItemFcp = false;\n private requiredItemIcmsDiferido = false;\n private requiredItemIcmsDesonerado = false;\n private requiredItemDiferencialAlicota = false;\n private requiredItemPisFaturemento = false;\n private requiredItemCofinsFaturemento = false;\n private requiredItemFcpUfDestino = false;\n private requiredItemIcmsUfDestino = false;\n private requiredSituacaoTributaria = false;\n private requiredIcmsFuturo = false;\n private requiredIcmsSimples = false;\n private requiredDifalDevolvido = false;\n private requiredICMS_UF_Destino_Devolvido = false;\n private requiredFCP_UF_Destino_Devolvido = false;\n private requiredItemPisFaturamento = false;\n private requiredImpostoNaoRecuperado = false;\n private requiredbaseCalculoCredito = true;\n private requiredPercentualReducao = true;\n private requiredIcmsStSolidario = false;\n private requiredIcmsStRetidoAnt = false;\n private requiredFcpStReditoAnt = false;\n\n private ngUnsubscribe = new Subject();\n\n @Input() sugestoes!: Sugestao[];\n @Input() camposBloqueados = false;\n @Input() devolvido = false;\n @Input() documento: EnumTipoDocumento;\n @Input() tipoItem: EnumTipoItem;\n @Input() habilitaOpcaoCide = false;\n @Output() tributosChange = new EventEmitter<any>();\n @Input()\n get tributos() {\n return this.tributosValue;\n }\n @Input() dominio?: string;\n @Input() servico?: string;\n @Input() currencyLocaleOptions?: any = { currencySymbol: '', decimalSeparator: ',', thousandsSeparator: '.' };\n @Input() idsTaxesMemoriaCalculo?: [{ idParametro: string, idParametroEstado: string, idPerfilTributario: string, tipoTributo: EnumTipoTributo, fromScreen?: string, idParametroSt: string }];\n @Input() permissionMemoriaCalculo?: boolean;\n\n set tributos(val) {\n this.tributosValue = val;\n }\n\n constructor(\n private formBuilder: FormBuilder,\n private changeDetector: ChangeDetectorRef,\n private translate: TranslateService,\n private e027StrLookup: E027StrLookup,\n private e027eqiLookup: E027EqiLookup,\n private naturezaReceitaLookup: CplTriNotaSaidaNaturezaReceitaPisCofinsLookup,\n private lookupUtils: LookupValidationUtils,\n protected messageService: MessageService,\n private erpTributosService: ErpTributosService,\n private gtag: GTagService,\n private readonly featureToggleService: FeatureToggleService\n ) { }\n\n ngOnInit() {\n\n this.grupos = [];\n this.menuItemPis = false;\n this.menuItemCofins = false;\n this.menuItemIpi = false;\n this.menuItemIss = false;\n this.menuItemImportacoes = false;\n this.menuItemRetencoes = false;\n this.menuItemIcms = false;\n this.menuItemCideTecnologia = false;\n\n this.dominio = this.dominio ? this.dominio : 'erpx_cpl_imp';\n this.servico = this.servico ? this.servico : 'cadastros';\n\n this.prefixLabel = `${this.dominio}.${this.servico}`\n if (Object.keys(this.currencyLocaleOptions).length == 0)\n this.currencyLocaleOptions = { currencySymbol: '', decimalSeparator: ',', thousandsSeparator: '.' };\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const variaveisAlteradas = Object.keys(changes);\n if (!variaveisAlteradas.includes('sugestoes') || variaveisAlteradas.length > 1) {\n this.clearVariables();\n this.getActions();\n if ((this.tributosValue == undefined) || (this.tributosValue.length == 0)) {\n this.grupos = [];\n this.tributosValue = [];\n } else if (this.reload) {\n this.grupos = [];\n this.createTributos();\n this.setTributos();\n } else {\n this.reload = true;\n }\n\n if (this.camposBloqueados == true) {\n this.readOnlyTributos();\n }\n }\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n this.lookupUtils.resetStoredKeys();\n }\n\n public memoriaCalculo(imposto: any) {\n let tributo = this.idsTaxesMemoriaCalculo.find((element: any) => { return element.tipoTributo == imposto.name });\n this.abrirWindowUrlMemoriaCalculo(tributo);\n }\n\n private makeUrlWindow(params: Identifiers, tributo?: any) {\n this.erpTributosService.getFrontend(params).subscribe((response: any) => {\n window.open(`${response.frontends[0].embeddedURL}`, '_blank');\n })\n\n this.gtag.sendButtonClick('Botão acessar parametrização' , {impostos: tributo.tipoTributo})\n }\n\n public disabledButton(imposto: EnumTipoTributo) {\n return this.idsTaxesMemoriaCalculo == undefined || !this.idsTaxesMemoriaCalculo.find((element: any) => {\n return element.tipoTributo == imposto && element.idParametro != undefined;\n });\n }\n\n public hideButton(imposto: any) {\n switch (imposto) {\n case EnumTipoTributo.IPI_DEVOLVIDO:\n return false;\n default:\n return true;\n }\n }\n\n private abrirWindowUrlMemoriaCalculo(tributo: any) {\n if (!tributo?.idPerfilTributario && !tributo?.idParametro) {\n this.messageService.add({\n severity: 'error',\n summary: this.translate.instant('error_memoria_calculo_message_title'),\n detail: this.translate.instant('error_memoria_calculo_message_content')\n });\n return;\n };\n const params = {\n identifiers: [{\n \"domainName\": \"erpx_cpl_imp\",\n \"serviceName\": \"impostos\",\n \"appName\": \"erpx-cpl-imp-impostos\",\n \"route\": `${this.validaTela(tributo)}`\n }]\n };\n\n this.makeUrlWindow(params, tributo);\n }\n\n validaTela(taxes: any) {\n if (this.isStTaxes(taxes.tipoTributo)) {\n if(taxes.idParametroEstado){\n return `icmsst/${taxes.idParametroSt}/icmsst-parametros/${taxes.idParametroEstado}?perfilTributarioId=${taxes.idPerfilTributario}¶metroImpostosId=${taxes.idParametro}`\n } else {\n return `icmsst/${taxes.idParametro}/icmsst-parametros/${taxes.idParametroSt}`\n }\n }\n return `perfil-tributario/${taxes.idPerfilTributario}/parametrizacao-impostos/${this.getTributoPai(taxes.tipoTributo)}/${taxes.idParametro}`\n }\n\n private isStTaxes(taxes: any) {\n switch (taxes) {\n case EnumTipoTributo.ICMS_ST:\n case EnumTipoTributo.ICMS_ST_FUTURO:\n case EnumTipoTributo.ICMS_ST_RETIDO_ANT:\n case EnumTipoTributo.ICMS_ST_SOLIDARIO:\n case EnumTipoTributo.ICMS_COBRADO_ANTERIORMENTE_ST:\n return true;\n default:\n break;\n }\n }\n\n private getTributoPai(tributo: EnumTipoTributo) {\n switch (tributo) {\n case EnumTipoTributo.PIS_RECUPERAR:\n case EnumTipoTributo.PIS_DEVOLVIDO:\n case EnumTipoTributo.PIS_RECUPERAR_IMPORTACAO:\n case EnumTipoTributo.PIS:\n return 'pis';\n case EnumTipoTributo.COFINS_RECUPERAR_IMPORTACAO:\n case EnumTipoTributo.COFINS_DEVOLVIDO:\n case EnumTipoTributo.COFINS_RECUPERAR:\n case EnumTipoTributo.COFINS:\n return 'cofins';\n case EnumTipoTributo.IPI:\n case EnumTipoTributo.IPI_CREDITADO:\n case EnumTipoTributo.IPI_PRESUMIDO:\n case EnumTipoTributo.IPI_DEVOLVIDO:\n case EnumTipoTributo.IPI_OUTRAS_DESPESAS:\n return 'ipi';\n case EnumTipoTributo.ISS:\n case EnumTipoTributo.ISS_RETIDO:\n return 'iss';\n case EnumTipoTributo.IMPOSTO_IMPORTACAO:\n return 'ii';\n case EnumTipoTributo.PIS_RETIDO:\n case EnumTipoTributo.COFINS_RETIDO:\n case EnumTipoTributo.CSLL:\n case EnumTipoTributo.IRRF:\n case EnumTipoTributo.INSS:\n case EnumTipoTributo.INSS_PATRONAL:\n case EnumTipoTributo.FUNRURAL_INSS:\n case EnumTipoTributo.FUNRURAL_RAT:\n case EnumTipoTributo.FUNRURAL_SENAR:\n case EnumTipoTributo.FUNRURAL_TOTAL:\n return 'retencoes';\n case EnumTipoTributo.ICMS:\n case EnumTipoTributo.ICMS_CREDITADO:\n case EnumTipoTributo.FCP:\n case EnumTipoTributo.ICMS_DIFERIDO:\n case EnumTipoTributo.ICMS_DESONERADO:\n case EnumTipoTributo.ICMS_EFETIVO:\n case EnumTipoTributo.DIFAL:\n case EnumTipoTributo.DIFAL_DEVOLVIDO:\n case EnumTipoTributo.ICMS_UF_DESTINO_DEVOLVIDO:\n case EnumTipoTributo.FCP_UF_DESTINO_DEVOLVIDO:\n case EnumTipoTributo.ICMS_SIMPLES:\n case EnumTipoTributo.ICMS_FUTURO:\n case EnumTipoTributo.ICMS_UF_DESTINO:\n case EnumTipoTributo.FCP_UF_DESTINO:\n case EnumTipoTributo.FCP_COBRADO_ANTERIORMENTE_ST:\n case EnumTipoTributo.FCP_ST_RETIDO_ANT:\n case EnumTipoTributo.FCP_ST:\n return 'icms';\n case EnumTipoTributo.CIDE_TECNOLOGIA:\n return 'cide';\n default:\n break;\n }\n }\n\n private clearVariables() {\n if (this.reload) {\n this.indexAccordion = [-1];\n this.menuItemPis = false;\n this.menuItemCofins = false;\n this.menuItemIpi = false;\n this.menuItemIss = false;\n this.menuItemImportacoes = false;\n this.menuItemRetencoes = false;\n this.menuItemIcms = false;\n this.menuItemCideTecnologia = false;\n this.menuItemRetencoesFunrural = false;\n\n this.requiredItemCideTecnologia = false;\n this.requiredItemPisRecuperar = false;\n this.requiredItemPisDevolvido = false;\n this.requiredItemCofinsRecuperar = false;\n this.requiredItemCofinsDevolvido = false;\n this.requiredItemIpi = false;\n this.requiredItemIpiCreditado = false;\n this.requiredItemIpiDevolvido = false;\n this.requiredItemIpiPresumido = false;\n this.requiredItemIpiOutrasDespesas = false;\n this.requiredItemIss = false;\n this.requiredItemIssRetido = false;\n this.requiredItemImpostoImportacao = false;\n this.requiredItemPisRecuperarImportacao = false;\n this.requiredItemCofinsRecuperarImportacao = false;\n this.requiredItemPisRetido = false;\n this.requiredItemCofinsRetido = false;\n this.requiredItemCsllRetido = false;\n this.requiredItemIrrfRetido = false;\n this.requiredItemInssRetido = false;\n this.requiredItemInssPatronal = false;\n this.requiredItemIcmsSt = false;\n this.requiredItemFcpSt = false;\n this.requiredItemIcmsCobradoAnteriormente = false;\n this.requiredItemFcpCobradoAnteriormente = false;\n this.requiredItemIcms = false;\n this.requiredItemIcmsEfetivamenteCreditado = false;\n this.requiredItemFcp = false;\n this.requiredItemIcmsDiferido = false;\n this.requiredItemIcmsDesonerado = false;\n this.requiredItemDiferencialAlicota = false;\n this.requiredItemPisFaturemento = false;\n this.requiredItemCofinsFaturemento = false;\n this.requiredItemIcmsUfDestino = false;\n this.requiredItemFcpUfDestino = false;\n this.requiredSituacaoTributaria = false;\n this.requiredIcmsFuturo = false;\n this.requiredIcmsSimples = false;\n this.requiredItemPisFaturamento = false;\n this.requiredIcmsStSolidario = false;\n this.requiredIcmsStRetidoAnt = false;\n this.requiredFcpStReditoAnt = false;\n }\n }\n\n private createTributos() {\n\n this.tributosValue.map(it => {\n\n switch (it.tipoImposto) {\n case EnumTipoTributo.PIS_RECUPERAR:\n case EnumTipoTributo.PIS_DEVOLVIDO:\n case EnumTipoTributo.PIS:\n this.montaPis();\n break;\n case EnumTipoTributo.COFINS_DEVOLVIDO:\n case EnumTipoTributo.COFINS_RECUPERAR:\n case EnumTipoTributo.COFINS:\n this.montaCofins();\n break;\n case EnumTipoTributo.IPI:\n case EnumTipoTributo.IPI_CREDITADO:\n case EnumTipoTributo.IPI_PRESUMIDO:\n case EnumTipoTributo.IPI_DEVOLVIDO:\n case EnumTipoTributo.IPI_OUTRAS_DESPESAS:\n this.montaIpi();\n break;\n case EnumTipoTributo.ISS:\n case EnumTipoTributo.ISS_RETIDO:\n this.montaIss();\n break;\n case EnumTipoTributo.IMPOSTO_IMPORTACAO:\n case EnumTipoTributo.PIS_RECUPERAR_IMPORTACAO:\n case EnumTipoTributo.COFINS_RECUPERAR_IMPORTACAO:\n this.montaImportacoes();\n break;\n case EnumTipoTributo.PIS_RETIDO:\n case EnumTipoTributo.COFINS_RETIDO:\n case EnumTipoTributo.CSLL:\n case EnumTipoTributo.IRRF:\n case EnumTipoTributo.INSS:\n case EnumTipoTributo.INSS_PATRONAL:\n this.montaRetencoes();\n break;\n case EnumTipoTributo.ICMS:\n case EnumTipoTributo.ICMS_CREDITADO:\n case EnumTipoTributo.FCP:\n case EnumTipoTributo.ICMS_DIFERIDO:\n case EnumTipoTributo.ICMS_DESONERADO:\n case EnumTipoTributo.ICMS_ST_FUTURO:\n case EnumTipoTributo.ICMS_ST_RETIDO_ANT:\n case EnumTipoTributo.ICMS_ST_SOLIDARIO:\n case EnumTipoTributo.ICMS_EFETIVO:\n case EnumTipoTributo.DIFAL:\n case EnumTipoTributo.DIFAL_DEVOLVIDO:\n case EnumTipoTributo.ICMS_UF_DESTINO_DEVOLVIDO:\n case EnumTipoTributo.FCP_UF_DESTINO_DEVOLVIDO:\n case EnumTipoTributo.ICMS_SIMPLES:\n case EnumTipoTributo.ICMS_FUTURO:\n this.montaIcms();\n break;\n case EnumTipoTributo.CIDE_TECNOLOGIA:\n this.montaCide();\n break;\n case EnumTipoTributo.FUNRURAL_INSS:\n case EnumTipoTributo.FUNRURAL_RAT:\n case EnumTipoTributo.FUNRURAL_SENAR:\n case EnumTipoTributo.FUNRURAL_TOTAL:\n this.montaRetencoesFunrural();\n break;\n default:\n break;\n }\n\n });\n\n }\n\n private readOnlyTributos() {\n if (this.grupos && this.grupos != undefined && this.grupos.length > 0) {\n this.grupos.map(grupo => grupo.item.map(\n (item: any) => {\n item.formGroup.disable();\n })\n );\n }\n }\n\n private setTributos() {\n if (this.grupos && this.grupos != undefined && this.grupos.length > 0) {\n this.grupos.map(grupo => grupo.item.map(\n (item: Item) => {\n this.tributosValue.map(it => {\n if (item.name === it.tipoImposto) {\n item.formGroup.patchValue(it);\n this.setValidators(it.tipoImposto);\n this.storageValuesOnLookupValidator(item);\n }\n });\n })\n );\n\n this.grupos.map(grupo => grupo.item.map(\n (item: any) => {\n this.setSubs(item);\n })\n );\n }\n }\n\n private setValidators(tributo: EnumTipoTributo) {\n if (this.grupos && this.grupos != undefined && this.grupos.length > 0) {\n this.grupos.map(\n grupo => {\n grupo.item\n .filter((it: any) => it.name == tributo)\n .map((it: any) => {\n let hasValue = false;\n Object.keys(it.formGroup.value).forEach((item: any) => {\n if (item != 'impostoManual') {\n if (it.formGroup.value[item] != undefined && it.formGroup.value[item] !== '') {\n hasValue = true;\n return;\n }\n }\n });\n\n if (hasValue)\n Object.keys(it.formGroup.value).forEach((item: any) => {\n if ((item == 'percentualReducao') ||\n (item == 'percentualDiferimento') ||\n (item == 'percentualMargemValorAdicionado')) {\n it.formGroup.controls[item].setValidators(Validators.compose(\n [\n Validators.required\n , Validators.max(1000)\n ]\n ));\n it.formGroup.controls[item].updateValueAndValidity({ emitEvent: false });\n this.setRequired(tributo, true);\n } else if (item === 'valor') {\n it.formGroup.controls[item].setValidators(Validators.compose([\n Validators.required,\n Validators.max(9999999999999.99)\n ]));\n it.formGroup.controls[item].updateValueAndValidity({ emitEvent: false });\n this.setRequired(tributo, true);\n } else if (item === 'observacao') {\n it.formGroup.controls[item].setValidators(Validators.compose([Validators.maxLength(120)]));\n it.formGroup.controls[item].updateValueAndValidity({ emitEvent: false });\n this.setRequired(tributo, true);\n } else if (item === 'codigoArrecadacao') {\n it.formGroup.controls[item].setValidators(Validators.compose([Validators.maxLength(5)]));\n it.formGroup.controls[item].updateValueAndValidity({ emitEvent: false });\n this.setRequired(tributo, true);\n } else if (item === 'indicativoAquisicao') {\n it.formGroup.controls[item].setValidators(Validators.compose([]));\n it.formGroup.controls[item].updateValueAndValidity({ emitEvent: false });\n } else if (item === 'codigoTributacao') {\n it.formGroup.controls[item].setValidators(Validators.compose([Validators.maxLength(5)]));\n it.formGroup.controls[item].updateValueAndValidity({ emitEvent: false });\n this.setRequired(tributo, true);\n } else if (item === 'ImpostoNaoRecuperado') {\n it.formGroup.controls[item].setValidators(Validators.compose([Validators.max(9999999999999.99)]));\n it.formGroup.controls[item].updateValueAndValidity({ emitEvent: false });\n this.setRequired(tributo, true);\n } else if (item === 'baseCalculoCredito') {\n it.formGroup.controls[item].clearValidators();\n it.formGroup.controls[item].updateValueAndValidity({ emitEvent: false });\n this.setRequired(tributo, true);\n } else if (item !== 'impostoManual'\n && item !== 'naturezaReceita'\n && item !== 'valorDeducao'\n && item !== 'regimeTributarioPisCofins') {\n it.formGroup.controls[item].setValidators(Validators.compose([Validators.required]));\n it.formGroup.controls[item].updateValueAndValidity({ emitEvent: false });\n this.setRequired(tributo, true);\n }\n });\n else\n Object.keys(it.formGroup.value).forEach((item: any) => {\n if ((item == 'percentualReducao') ||\n (item == 'percentualDiferimento') ||\n (item == 'percentualMargemValorAdicionado')) {\n it.formGroup.controls[item].setValidators(Validators.compose([Validators.max(1000)]));\n it.formGroup.controls[item].updateValueAndValidity({ emitEvent: false });\n this.setRequired(tributo, true);\n\n } else if (item === 'valor') {\n it.formGroup.controls[item].setValidators(Validators.compose([Validators.max(9999999999999.99)]));\n it.formGroup.controls[item].updateValueAndValidity({ emitEvent: false });\n this.setRequired(tributo, true);\n } else if (item === 'observacao') {\n it.formGroup.controls[item].setValidators(Validators.compose([Validators.maxLength(120)]));\n it.formGroup.controls[item].updateValueAndValidity({ emitEvent: false });\n this.setRequired(tributo, true);\n\n } else if (item === 'codigoArrecadacao') {\n it.formGroup.controls[item].setValidators(Validators.compose([Validators.maxLength(6)]));\n it.formGroup.controls[item].updateValueAndValidity({ emitEvent: false });\n this.setRequired(tributo, true);\n\n } else if (item === 'indicativoAquisicao') {\n it.formGroup.controls[item].setValidators(Validators.compose([]));\n it.formGroup.controls[item].updateValueAndValidity({ emitEvent: false });\n } else if (item === 'ImpostoNaoRecuperado') {\n it.formGroup.controls[item].setValidators(Validators.compose([Validators.max(9999999999999.99)]));\n it.formGroup.controls[item].updateValueAndValidity({ emitEvent: false });\n this.setRequired(tributo, true);\n } else {\n it.formGroup.controls[item].clearValidators();\n it.formGroup.controls[item].updateValueAndValidity({ emitEvent: false });\n this.setRequired(tributo, false);\n }\n });\n });\n }\n );\n }\n }\n\n private validateAllFormFields(formGroup: FormGroup) {\n Object.keys(formGroup.controls).forEach(field => {\n const control = formGroup.get(field);\n if (control instanceof FormControl) control.markAsDirty({ onlySelf: true });\n else if (control instanceof FormGroup) this.validateAllFormFields(control);\n });\n }\n\n public validateAllFieldsTributos(): boolean {\n let valueValid = true;\n if (this.grupos && this.grupos != undefined && this.grupos.length > 0) {\n this.grupos.map(\n grupo => {\n grupo.item\n .map((it: any) => {\n Object.keys(it.formGroup.controls).forEach(field => {\n const control = it.formGroup.get(field);\n if (control instanceof FormControl) control.markAsDirty({ onlySelf: true });\n else if (control instanceof FormGroup) this.validateAllFieldsTributos();\n });\n\n if (it.formGroup.invalid) {\n valueValid = false;\n }\n });\n }\n );\n }\n return valueValid;\n }\n\n private backValue() {\n const arrItens: any = [];\n if (this.grupos && this.grupos != undefined && this.grupos.length > 0) {\n this.grupos.map(\n grupo => {\n grupo.item.map(\n (item: any) => {\n this.validateAllFormFields(item.formGroup);\n if (this.tributosValue.length > 0) {\n const deuMath = this.tributosValue\n .filter(tributo => tributo.tipoImposto == item.name)\n .map((tributo: any) => {\n return {\n ...tributo,\n ...item.formGroup.getRawValue()\n };\n });\n if (deuMath && deuMath.length) {\n arrItens.push(deuMath[0]);\n } else {\n arrItens.push({ 'tipoImposto': item.name, ...item.formGroup.getRawValue() });\n }\n } else {\n arrItens.push({ 'tipoImposto': item.name, ...item.formGroup.getRawValue() });\n }\n }\n );\n }\n );\n }\n\n this.reload = false;\n this.tributosChange.emit(arrItens);\n }\n\n private novoImpostoManual(value: any, singleChange?: boolean) {\n value.formField.forEach((field: FormField) => field.onBlur?.call(this));\n value.formGroup.controls.impostoManual.patchValue(true);\n if (!singleChange) { this.setSubs(value); }\n }\n\n public getActions(): MenuItem[] {\n const menu: MenuItem[] = [];\n menu.push(\n {\n id: 'retencaoFunrural',\n label: this.translate.instant('erpx.tributos.actions_retencao_funrural_label'),\n disabled: this.menuItemRetencoesFunrural,\n command: () => {\n this.montaRetencoesFunrural().forEach(value => {\n this.novoImpostoManual(value);\n }), this.indexAccordion = [0];\n\n this.changeDetector.detectChanges();\n }\n },\n {\n id: 'pis',\n label: this.translate.instant('erpx.tributos.actions_pis_label'),\n disabled: this.menuItemPis,\n command: () => {\n this.montaPis().forEach(value => {\n this.novoImpostoManual(value);\n }), this.indexAccordion = [0];\n\n this.changeDetector.detectChanges();\n }\n }, {\n id: 'cofins',\n label: this.translate.instant('erpx.tributos.actions_cofins_label'),\n disabled: this.menuItemCofins,\n command: () => {\n this.montaCofins().forEach(value => {\n this.novoImpostoManual(value);\n }), this.indexAccordion = [0];\n\n this.changeDetector.detectChanges();\n }\n }, {\n id: 'ipi',\n label: this.translate.instant('erpx.tributos.actions_ipi_label'),\n disabled: this.menuItemIpi,\n command: () => {\n this.montaIpi().forEach(value => {\n this.novoImpostoManual(value);\n }), this.indexAccordion = [0];\n\n this.changeDetector.detectChanges();\n }\n }, {\n id: 'icms',\n label: this.translate.instant('erpx.tributos.actions_icms_label'),\n disabled: this.menuItemIcms,\n command: () => {\n this.montaIcms().forEach(value => {\n this.novoImpostoManual(value);\n }), this.indexAccordion = [0];\n\n this.changeDetector.detectChanges();\n }\n }\n );\n\n if (this.documento != EnumTipoDocumento.PEDIDO_VENDA) {\n menu.push(\n {\n id: 'importacoes',\n label: this.translate.instant('erpx.tributos.actions_importacoes_label'),\n disabled: this.menuItemImportacoes,\n command: () => {\n this.montaImportacoes().forEach(value => {\n this.novoImpostoManual(value, true);\n }), this.indexAccordion = [0];\n\n this.changeDetector.detectChanges();\n }\n }\n );\n }\n\n if (this.tipoItem == EnumTipoItem.Servico || this.documento == EnumTipoDocumento.NF_ENTRADA_CONTROLADORIA) {\n menu.push(\n {\n id: 'iss',\n label: this.translate.instant('erpx.tributos.actions_iss_label'),\n disabled: this.menuItemIss,\n command: () => {\n this.montaIss().forEach(value => {\n this.novoImpostoManual(value);\n }), this.indexAccordion = [0];\n\n this.changeDetector.detectChanges();\n }\n },\n {\n id: 'retencoes',\n label: this.translate.instant('erpx.tributos.actions_retencoes_label'),\n disabled: this.menuItemRetencoes,\n command: () => {\n this.montaRetencoes().forEach(value => {\n this.novoImpostoManual(value);\n }), this.indexAccordion = [0];\n\n this.changeDetector.detectChanges();\n }\n },\n );\n }\n\n if (this.tipoItem == EnumTipoItem.Servico && this.habilitaOpcaoCide) {\n menu.push(\n {\n id: 'cide',\n label: this.translate.instant('erpx.tributos.actions_cide_label'),\n disabled: this.menuItemCideTecnologia,\n command: () => {\n this.montaCide().forEach(value => {\n this.novoImpostoManual(value);\n }), this.indexAccordion = [0];\n\n this.changeDetector.detectChanges();\n }\n }\n );\n }\n\n return menu;\n }\n\n private montaCide(): any[] {\n if (this.menuItemCideTecnologia == false) {\n this.menuItemCideTecnologia = true;\n const item: any[] = [];\n switch (this.documento) {\n case EnumTipoDocumento.NF_ENTRADA:\n item.unshift({\n name: EnumTipoTributo.CIDE_TECNOLOGIA,\n label: 'erpx.tributos.enum_tipo_tributo_cide_tecnologia',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.CIDE_TECNOLOGIA)\n }\n );\n break;\n\n case EnumTipoDocumento.PEDIDO_COMPRA:\n item.unshift({\n name: EnumTipoTributo.CIDE_TECNOLOGIA,\n label: 'erpx.tributos.enum_tipo_tributo_cide_tecnologia',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.CIDE_TECNOLOGIA)\n }\n );\n break;\n\n default:\n break;\n }\n\n this.grupos.unshift(\n {\n grupo: `${'erpx.tributos.enum_grupo_tributo_' + EnumGrupoTributo.CIDE_TECNOLOGIA + '_label'}`, item\n });\n return item;\n }\n }\n\n private montaIcms(): any[] {\n if (this.menuItemIcms == false) {\n this.menuItemIcms = true;\n const item: any[] = [];\n switch (this.documento) {\n case EnumTipoDocumento.NF_ENTRADA:\n item.unshift({\n name: EnumTipoTributo.ICMS,\n label: 'erpx.tributos.enum_tipo_tributo_icms',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.ValorOutras },\n { campo: EnumCampoTributo.ValorIsentas },\n { campo: EnumCampoTributo.SituacaoTributaria },\n { campo: EnumCampoTributo.Origem },\n ], EnumTipoTributo.ICMS)\n }, {\n name: EnumTipoTributo.ICMS_CREDITADO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_creditado',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_CREDITADO)\n }, {\n name: EnumTipoTributo.ICMS_FUTURO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_futuro',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_FUTURO)\n }, {\n name: EnumTipoTributo.ICMS_SIMPLES,\n label: 'erpx.tributos.enum_tipo_tributo_icms_simples',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_SIMPLES)\n }, {\n name: EnumTipoTributo.FCP,\n label: 'erpx.tributos.enum_tipo_tributo_fcp',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP)\n }, {\n name: EnumTipoTributo.ICMS_DESONERADO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_desonerado',\n ...this.montaCampos([\n { campo: EnumCampoTributo.MotivoDesoneracaoIcms },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.PercentualSuspensaoParcial }\n ], EnumTipoTributo.ICMS_DESONERADO)\n }, {\n name: EnumTipoTributo.ICMS_DIFERIDO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_diferido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualDiferimento },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_DIFERIDO)\n }, {\n name: EnumTipoTributo.DIFAL,\n label: 'erpx.tributos.enum_tipo_tributo_difal',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.DIFAL)\n },\n /** @ICMS_ST */\n {\n name: EnumTipoTributo.ICMS_ST,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.PercentualMargemValorAdicionado },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_ST)\n },\n {\n name: EnumTipoTributo.ICMS_ST_SOLIDARIO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st_solidario',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_ST_SOLIDARIO)\n },\n {\n name: EnumTipoTributo.ICMS_ST_FUTURO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st_futuro',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_ST_FUTURO)\n },\n {\n name: EnumTipoTributo.FCP_ST,\n label: 'erpx.tributos.enum_tipo_tributo_fcp_st',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP_ST)\n },\n {\n name: EnumTipoTributo.ICMS_ST_RETIDO_ANT,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st_retido_ant',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualSuportadoConsumidorFinal },\n { campo: EnumCampoTributo.ValorRecolhidoPeloSubstituto },\n { campo: EnumCampoTributo.ValorIcmsStRetido }\n ], EnumTipoTributo.ICMS_ST_RETIDO_ANT)\n },\n {\n name: EnumTipoTributo.FCP_ST_RETIDO_ANT,\n label: 'erpx.tributos.enum_tipo_tributo_fcp_st_retido_ant',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP_ST_RETIDO_ANT)\n },\n /* DIFAL DEVOLVIDO */\n {\n name: EnumTipoTributo.ICMS_UF_DESTINO_DEVOLVIDO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_uf_destino_devolvido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.AliquotaInternaDestino },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_UF_DESTINO_DEVOLVIDO)\n },\n {\n name: EnumTipoTributo.FCP_UF_DESTINO_DEVOLVIDO,\n label: 'erpx.tributos.enum_tipo_tributo_fcp_uf_destino_devolvido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP_UF_DESTINO_DEVOLVIDO)\n }\n );\n break;\n\n case EnumTipoDocumento.PEDIDO_COMPRA:\n item.unshift({\n name: EnumTipoTributo.ICMS,\n label: 'erpx.tributos.enum_tipo_tributo_icms',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.ICMS)\n }, {\n name: EnumTipoTributo.ICMS_CREDITADO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_creditado',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_CREDITADO)\n }, {\n name: EnumTipoTributo.ICMS_FUTURO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_futuro',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_FUTURO)\n }, {\n name: EnumTipoTributo.ICMS_SIMPLES,\n label: 'erpx.tributos.enum_tipo_tributo_icms_simples',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_SIMPLES)\n }, {\n name: EnumTipoTributo.FCP,\n label: 'erpx.tributos.enum_tipo_tributo_fcp',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP)\n }, {\n name: EnumTipoTributo.ICMS_DESONERADO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_desonerado',\n ...this.montaCampos([\n { campo: EnumCampoTributo.MotivoDesoneracaoIcms },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.PercentualSuspensaoParcial }\n ], EnumTipoTributo.ICMS_DESONERADO)\n }, {\n name: EnumTipoTributo.ICMS_DIFERIDO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_diferido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualDiferimento },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_DIFERIDO)\n }, {\n name: EnumTipoTributo.DIFAL,\n label: 'erpx.tributos.enum_tipo_tributo_difal',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.DIFAL)\n },\n /** @ICMS_ST */\n {\n name: EnumTipoTributo.ICMS_ST,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.PercentualMargemValorAdicionado },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_ST)\n },\n {\n name: EnumTipoTributo.ICMS_ST_SOLIDARIO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st_solidario',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_ST_SOLIDARIO)\n },\n {\n name: EnumTipoTributo.ICMS_ST_FUTURO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st_futuro',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_ST_FUTURO)\n },\n {\n name: EnumTipoTributo.FCP_ST,\n label: 'erpx.tributos.enum_tipo_tributo_fcp_st',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP_ST)\n },\n {\n name: EnumTipoTributo.ICMS_ST_RETIDO_ANT,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st_retido_ant',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualSuportadoConsumidorFinal },\n { campo: EnumCampoTributo.ValorRecolhidoPeloSubstituto },\n { campo: EnumCampoTributo.ValorIcmsStRetido }\n ], EnumTipoTributo.ICMS_ST_RETIDO_ANT)\n },\n {\n name: EnumTipoTributo.FCP_ST_RETIDO_ANT,\n label: 'erpx.tributos.enum_tipo_tributo_fcp_st_retido_ant',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP_ST_RETIDO_ANT)\n }\n );\n break;\n\n case EnumTipoDocumento.NF_SAIDA:\n item.unshift({\n name: EnumTipoTributo.ICMS,\n label: 'erpx.tributos.enum_tipo_tributo_icms',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.ValorOutras },\n { campo: EnumCampoTributo.ValorIsentas },\n { campo: EnumCampoTributo.SituacaoTributaria },\n { campo: EnumCampoTributo.Origem },\n ], EnumTipoTributo.ICMS)\n },\n {\n name: EnumTipoTributo.ICMS_FUTURO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_futuro',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.ICMS_FUTURO)\n },\n {\n name: EnumTipoTributo.ICMS_SIMPLES,\n label: 'erpx.tributos.enum_tipo_tributo_icms_simples',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.ICMS_SIMPLES)\n }, {\n name: EnumTipoTributo.FCP,\n label: 'erpx.tributos.enum_tipo_tributo_fcp',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP)\n }, {\n name: EnumTipoTributo.ICMS_DESONERADO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_desonerado',\n ...this.montaCampos([\n { campo: EnumCampoTributo.MotivoDesoneracaoIcms },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.PercentualSuspensaoParcial }\n ], EnumTipoTributo.ICMS_DESONERADO)\n }, {\n name: EnumTipoTributo.ICMS_DIFERIDO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_diferido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualDiferimento },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_DIFERIDO)\n },\n {\n name: EnumTipoTributo.DIFAL,\n label: 'erpx.tributos.enum_tipo_tributo_difal',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.DIFAL)\n }, {\n name: EnumTipoTributo.ICMS_UF_DESTINO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_uf_destino',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.AliquotaInterna },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.ICMS_UF_DESTINO)\n }, {\n name: EnumTipoTributo.FCP_UF_DESTINO,\n label: 'erpx.tributos.enum_tipo_tributo_fcp_uf_destino',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP_UF_DESTINO)\n },\n\n /** @ICMS_ST */\n {\n name: EnumTipoTributo.ICMS_ST,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.PercentualMargemValorAdicionado },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_ST)\n },\n {\n name: EnumTipoTributo.ICMS_ST_SOLIDARIO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st_solidario',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_ST_SOLIDARIO)\n },\n {\n name: EnumTipoTributo.ICMS_ST_FUTURO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st_futuro',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_ST_FUTURO)\n },\n {\n name: EnumTipoTributo.FCP_ST,\n label: 'erpx.tributos.enum_tipo_tributo_fcp_st',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP_ST)\n },\n {\n name: EnumTipoTributo.ICMS_ST_RETIDO_ANT,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st_retido_ant',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualSuportadoConsumidorFinal },\n { campo: EnumCampoTributo.ValorRecolhidoPeloSubstituto },\n { campo: EnumCampoTributo.ValorIcmsStRetido }\n ], EnumTipoTributo.ICMS_ST_RETIDO_ANT)\n },\n {\n name: EnumTipoTributo.FCP_ST_RETIDO_ANT,\n label: 'erpx.tributos.enum_tipo_tributo_fcp_st_retido_ant',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP_ST_RETIDO_ANT)\n },\n {\n name: EnumTipoTributo.ICMS_EFETIVO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_efetivo',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_EFETIVO)\n }\n );\n break;\n\n case EnumTipoDocumento.PEDIDO_VENDA:\n item.unshift({\n name: EnumTipoTributo.ICMS,\n label: 'erpx.tributos.enum_tipo_tributo_icms',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.ICMS)\n }, {\n name: EnumTipoTributo.ICMS_FUTURO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_futuro',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.ICMS_FUTURO)\n }, {\n name: EnumTipoTributo.ICMS_SIMPLES,\n label: 'erpx.tributos.enum_tipo_tributo_icms_simples',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.ICMS_SIMPLES)\n }, {\n name: EnumTipoTributo.FCP,\n label: 'erpx.tributos.enum_tipo_tributo_fcp',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP)\n }, {\n name: EnumTipoTributo.ICMS_DESONERADO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_desonerado',\n ...this.montaCampos([\n { campo: EnumCampoTributo.MotivoDesoneracaoIcms },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_DESONERADO)\n }, {\n name: EnumTipoTributo.ICMS_DIFERIDO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_diferido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualDiferimento },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_DIFERIDO)\n }, {\n name: EnumTipoTributo.ICMS_UF_DESTINO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_uf_destino',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.AliquotaInterna },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.ICMS_UF_DESTINO)\n }, {\n name: EnumTipoTributo.FCP_UF_DESTINO,\n label: 'erpx.tributos.enum_tipo_tributo_fcp_uf_destino',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP_UF_DESTINO)\n },\n\n /** @ICMS_ST */\n {\n name: EnumTipoTributo.ICMS_ST,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.PercentualMargemValorAdicionado },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_ST)\n },\n {\n name: EnumTipoTributo.ICMS_ST_SOLIDARIO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st_solidario',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_ST_SOLIDARIO)\n },\n {\n name: EnumTipoTributo.ICMS_ST_FUTURO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st_futuro',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_ST_FUTURO)\n },\n {\n name: EnumTipoTributo.FCP_ST,\n label: 'erpx.tributos.enum_tipo_tributo_fcp_st',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP_ST)\n },\n {\n name: EnumTipoTributo.ICMS_ST_RETIDO_ANT,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st_retido_ant',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualSuportadoConsumidorFinal },\n { campo: EnumCampoTributo.ValorRecolhidoPeloSubstituto },\n { campo: EnumCampoTributo.ValorIcmsStRetido }\n ], EnumTipoTributo.ICMS_ST_RETIDO_ANT)\n },\n {\n name: EnumTipoTributo.FCP_ST_RETIDO_ANT,\n label: 'erpx.tributos.enum_tipo_tributo_fcp_st_retido_ant',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP_ST_RETIDO_ANT)\n }\n );\n break;\n\n case EnumTipoDocumento.NF_SAIDA_CONTROLADORIA:\n item.unshift(\n {\n name: EnumTipoTributo.ICMS,\n label: 'erpx.tributos.enum_tipo_tributo_icms',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.ValorOutras },\n { campo: EnumCampoTributo.ValorIsentas },\n { campo: EnumCampoTributo.SituacaoTributaria },\n { campo: EnumCampoTributo.Origem },\n { campo: EnumCampoTributo.Observacao }\n ], EnumTipoTributo.ICMS)\n },\n {\n name: EnumTipoTributo.FCP,\n label: 'erpx.tributos.enum_tipo_tributo_fcp',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP)\n },\n {\n name: EnumTipoTributo.ICMS_DESONERADO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_desonerado',\n ...this.montaCampos([\n { campo: EnumCampoTributo.MotivoDesoneracaoIcms },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_DESONERADO)\n },\n {\n name: EnumTipoTributo.ICMS_UF_DESTINO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_uf_destino',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.AliquotaInterna },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.ICMS_UF_DESTINO)\n },\n {\n name: EnumTipoTributo.FCP_UF_DESTINO,\n label: 'erpx.tributos.enum_tipo_tributo_fcp_uf_destino',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP_UF_DESTINO)\n },\n {\n name: EnumTipoTributo.ICMS_ST,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.PercentualMargemValorAdicionado },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_ST)\n },\n {\n name: EnumTipoTributo.ICMS_ST_SOLIDARIO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st_solidario',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_ST_SOLIDARIO)\n },\n {\n name: EnumTipoTributo.FCP_ST,\n label: 'erpx.tributos.enum_tipo_tributo_fcp_st',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP_ST)\n },\n {\n name: EnumTipoTributo.ICMS_ST_RETIDO_ANT,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st_retido_ant',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.ValorIcmsStRetido }\n ], EnumTipoTributo.ICMS_ST_RETIDO_ANT)\n },\n {\n name: EnumTipoTributo.FCP_ST_RETIDO_ANT,\n label: 'erpx.tributos.enum_tipo_tributo_fcp_st_retido_ant',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP_ST_RETIDO_ANT)\n }\n );\n break;\n case EnumTipoDocumento.NF_ENTRADA_CONTROLADORIA:\n item.unshift(\n {\n name: EnumTipoTributo.ICMS,\n label: 'erpx.tributos.enum_tipo_tributo_icms',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.ValorOutras },\n { campo: EnumCampoTributo.ValorIsentas },\n { campo: EnumCampoTributo.SituacaoTributaria },\n { campo: EnumCampoTributo.Origem },\n { campo: EnumCampoTributo.Observacao }\n ], EnumTipoTributo.ICMS)\n },\n {\n name: EnumTipoTributo.ICMS_SIMPLES,\n label: 'erpx.tributos.enum_tipo_tributo_icms_simples',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_SIMPLES)\n },\n {\n name: EnumTipoTributo.FCP,\n label: 'erpx.tributos.enum_tipo_tributo_fcp',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP)\n },\n {\n name: EnumTipoTributo.ICMS_DESONERADO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_desonerado',\n ...this.montaCampos([\n { campo: EnumCampoTributo.MotivoDesoneracaoIcms },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_DESONERADO)\n },\n {\n name: EnumTipoTributo.DIFAL,\n label: 'erpx.tributos.enum_tipo_tributo_difal',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.DIFAL)\n },\n {\n name: EnumTipoTributo.ICMS_ST,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.PercentualMargemValorAdicionado },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.ImpostoNaoRecuperado },\n ], EnumTipoTributo.ICMS_ST)\n },\n {\n name: EnumTipoTributo.ICMS_ST_SOLIDARIO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st_solidario',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_ST_SOLIDARIO)\n },\n {\n name: EnumTipoTributo.FCP_ST,\n label: 'erpx.tributos.enum_tipo_tributo_fcp_st',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP_ST)\n },\n {\n name: EnumTipoTributo.ICMS_ST_RETIDO_ANT,\n label: 'erpx.tributos.enum_tipo_tributo_icms_st_retido_ant',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.ValorIcmsStRetido }\n ], EnumTipoTributo.ICMS_ST_RETIDO_ANT)\n },\n {\n name: EnumTipoTributo.FCP_ST_RETIDO_ANT,\n label: 'erpx.tributos.enum_tipo_tributo_fcp_st_retido_ant',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP_ST_RETIDO_ANT)\n },\n {\n name: EnumTipoTributo.ICMS_UF_DESTINO_DEVOLVIDO,\n label: 'erpx.tributos.enum_tipo_tributo_icms_uf_destino_devolvido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.AliquotaInternaDestino },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.ICMS_UF_DESTINO_DEVOLVIDO)\n },\n {\n name: EnumTipoTributo.FCP_UF_DESTINO_DEVOLVIDO,\n label: 'erpx.tributos.enum_tipo_tributo_fcp_uf_destino_devolvido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.FCP_UF_DESTINO_DEVOLVIDO)\n },\n );\n break;\n\n default:\n break;\n }\n\n this.grupos.unshift({ grupo: `${'erpx.tributos.enum_grupo_tributo_' + EnumGrupoTributo.ICMS + '_label'}`, item });\n return item;\n }\n }\n\n private montaRetencoes(): any[] {\n if (this.menuItemRetencoes == false) {\n this.menuItemRetencoes = true;\n const item: any[] = [];\n\n switch (this.documento) {\n case EnumTipoDocumento.NF_ENTRADA:\n item.unshift(\n {\n name: EnumTipoTributo.PIS_RETIDO,\n label: 'erpx.tributos.enum_tipo_tributo_pis_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.CodigoTributacao }\n ], EnumTipoTributo.PIS_RETIDO)\n }, {\n name: EnumTipoTributo.COFINS_RETIDO,\n label: 'erpx.tributos.enum_tipo_tributo_cofins_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.CodigoTributacao }\n ], EnumTipoTributo.COFINS_RETIDO)\n }, {\n name: EnumTipoTributo.CSLL,\n label: 'erpx.tributos.enum_tipo_tributo_csll_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.CodigoTributacao }\n ], EnumTipoTributo.CSLL)\n }, {\n name: EnumTipoTributo.IRRF,\n label: 'erpx.tributos.enum_tipo_tributo_irrf_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.CodigoTributacao }\n ], EnumTipoTributo.IRRF)\n }, {\n name: EnumTipoTributo.INSS,\n label: 'erpx.tributos.enum_tipo_tributo_inss_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.INSS)\n }, {\n name: EnumTipoTributo.INSS_PATRONAL,\n label: 'erpx.tributos.enum_tipo_tributo_inss_patronal',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.INSS_PATRONAL)\n }\n );\n break;\n case EnumTipoDocumento.PEDIDO_COMPRA:\n item.unshift(\n {\n name: EnumTipoTributo.PIS_RETIDO,\n label: 'erpx.tributos.enum_tipo_tributo_pis_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.PIS_RETIDO)\n }, {\n name: EnumTipoTributo.COFINS_RETIDO,\n label: 'erpx.tributos.enum_tipo_tributo_cofins_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.COFINS_RETIDO)\n }, {\n name: EnumTipoTributo.CSLL,\n label: 'erpx.tributos.enum_tipo_tributo_csll_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.CSLL)\n }, {\n name: EnumTipoTributo.IRRF,\n label: 'erpx.tributos.enum_tipo_tributo_irrf_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.IRRF)\n }, {\n name: EnumTipoTributo.INSS,\n label: 'erpx.tributos.enum_tipo_tributo_inss_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.INSS)\n }, {\n name: EnumTipoTributo.INSS_PATRONAL,\n label: 'erpx.tributos.enum_tipo_tributo_inss_patronal',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.INSS_PATRONAL)\n }\n );\n break;\n case EnumTipoDocumento.NF_SAIDA:\n item.unshift(\n {\n name: EnumTipoTributo.PIS_RETIDO,\n label: 'erpx.tributos.enum_tipo_tributo_pis_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.CodigoTributacao }\n ], EnumTipoTributo.PIS_RETIDO)\n }, {\n name: EnumTipoTributo.COFINS_RETIDO,\n label: 'erpx.tributos.enum_tipo_tributo_cofins_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.CodigoTributacao }\n ], EnumTipoTributo.COFINS_RETIDO)\n }, {\n name: EnumTipoTributo.CSLL,\n label: 'erpx.tributos.enum_tipo_tributo_csll_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.CodigoTributacao }\n ], EnumTipoTributo.CSLL)\n }, {\n name: EnumTipoTributo.IRRF,\n label: 'erpx.tributos.enum_tipo_tributo_irrf_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.CodigoTributacao }\n ], EnumTipoTributo.IRRF)\n }, {\n name: EnumTipoTributo.INSS,\n label: 'erpx.tributos.enum_tipo_tributo_inss_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.INSS)\n }\n );\n break;\n\n case EnumTipoDocumento.PEDIDO_VENDA:\n item.unshift(\n {\n name: EnumTipoTributo.PIS_RETIDO,\n label: 'erpx.tributos.enum_tipo_tributo_pis_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.PIS_RETIDO)\n }, {\n name: EnumTipoTributo.COFINS_RETIDO,\n label: 'erpx.tributos.enum_tipo_tributo_cofins_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.COFINS_RETIDO)\n }, {\n name: EnumTipoTributo.CSLL,\n label: 'erpx.tributos.enum_tipo_tributo_csll_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.CSLL)\n }, {\n name: EnumTipoTributo.IRRF,\n label: 'erpx.tributos.enum_tipo_tributo_irrf_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.IRRF)\n }, {\n name: EnumTipoTributo.INSS,\n label: 'erpx.tributos.enum_tipo_tributo_inss_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.INSS)\n }\n );\n break;\n case EnumTipoDocumento.NF_SAIDA_CONTROLADORIA:\n item.unshift(\n {\n name: EnumTipoTributo.PIS_RETIDO,\n label: 'erpx.tributos.enum_tipo_tributo_pis_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.CodigoArrecadacao }\n ], EnumTipoTributo.PIS_RETIDO)\n },\n {\n name: EnumTipoTributo.COFINS_RETIDO,\n label: 'erpx.tributos.enum_tipo_tributo_cofins_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.CodigoArrecadacao }\n ], EnumTipoTributo.COFINS_RETIDO)\n },\n {\n name: EnumTipoTributo.CSLL,\n label: 'erpx.tributos.enum_tipo_tributo_csll_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.CodigoArrecadacao }\n ], EnumTipoTributo.CSLL)\n },\n {\n name: EnumTipoTributo.IRRF,\n label: 'erpx.tributos.enum_tipo_tributo_irrf_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.CodigoArrecadacao }\n ], EnumTipoTributo.IRRF)\n },\n {\n name: EnumTipoTributo.INSS,\n label: 'erpx.tributos.enum_tipo_tributo_inss_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.INSS)\n }\n );\n break;\n case EnumTipoDocumento.NF_ENTRADA_CONTROLADORIA:\n item.unshift(\n {\n name: EnumTipoTributo.PIS_RETIDO,\n label: 'erpx.tributos.enum_tipo_tributo_pis_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.CodigoArrecadacao }\n ], EnumTipoTributo.PIS_RETIDO)\n },\n {\n name: EnumTipoTributo.COFINS_RETIDO,\n label: 'erpx.tributos.enum_tipo_tributo_cofins_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.CodigoArrecadacao }\n ], EnumTipoTributo.COFINS_RETIDO)\n },\n {\n name: EnumTipoTributo.CSLL,\n label: 'erpx.tributos.enum_tipo_tributo_csll_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.CodigoArrecadacao }\n ], EnumTipoTributo.CSLL)\n },\n {\n name: EnumTipoTributo.IRRF,\n label: 'erpx.tributos.enum_tipo_tributo_irrf_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.CodigoArrecadacao }\n ], EnumTipoTributo.IRRF)\n },\n {\n name: EnumTipoTributo.INSS,\n label: 'erpx.tributos.enum_tipo_tributo_inss_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.INSS)\n },\n {\n name: EnumTipoTributo.INSS_PATRONAL,\n label: 'erpx.tributos.enum_tipo_tributo_inss_patronal',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.INSS_PATRONAL)\n }\n );\n break;\n\n default:\n break;\n }\n\n this.grupos.unshift(\n {\n grupo: `${'erpx.tributos.enum_grupo_tributo_' + EnumGrupoTributo.RETENCOES + '_label'}`, item\n });\n return item;\n }\n }\n\n private montaRetencoesFunrural(): any[] {\n if (this.menuItemRetencoesFunrural == false) {\n this.menuItemRetencoesFunrural = true;\n const item: any[] = [];\n\n item.unshift(\n {\n name: EnumTipoTributo.FUNRURAL_INSS,\n label: 'erpx.tributos.enum_tipo_tributo_funrural_inss',\n ...this.montaCampos(\n [\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.IndicativoAquisicao },\n { campo: EnumCampoTributo.CodigoArrecadacao },\n ],\n EnumTipoTributo.FUNRURAL_INSS\n )\n },\n {\n name: EnumTipoTributo.FUNRURAL_RAT,\n label: 'erpx.tributos.enum_tipo_tributo_funrural_rat',\n ...this.montaCampos(\n [\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.IndicativoAquisicao },\n { campo: EnumCampoTributo.CodigoArrecadacao },\n ],\n EnumTipoTributo.FUNRURAL_RAT\n )\n },\n {\n name: EnumTipoTributo.FUNRURAL_SENAR,\n label: 'erpx.tributos.enum_tipo_tributo_funrural_senar',\n ...this.montaCampos(\n [\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.IndicativoAquisicao },\n { campo: EnumCampoTributo.CodigoArrecadacao },\n ],\n EnumTipoTributo.FUNRURAL_SENAR\n )\n },\n {\n name: EnumTipoTributo.FUNRURAL_TOTAL,\n label: 'erpx.tributos.enum_tipo_tributo_funrural_total',\n ...this.montaCampos(\n [\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Valor }\n ],\n EnumTipoTributo.FUNRURAL_TOTAL\n )\n }\n );\n\n this.grupos.unshift(\n {\n grupo: `${'erpx.tributos.enum_grupo_tributo_' + EnumGrupoTributo.FUNRURAL + '_label'}`, item\n });\n\n const funruralTotal = item.find(item => item.name === \"FUNRURAL_TOTAL\");\n funruralTotal.formGroup.disable({ emitEvent: false });\n\n return item;\n }\n }\n\n private montaImportacoes(): any[] {\n if (this.menuItemImportacoes == false) {\n this.menuItemImportacoes = true;\n const item: any[] = [];\n\n switch (this.documento) {\n case EnumTipoDocumento.NF_SAIDA_CONTROLADORIA:\n item.unshift(\n {\n name: EnumTipoTributo.IMPOSTO_IMPORTACAO,\n label: 'erpx.tributos.enum_tipo_tributo_imposto_importacao',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.IMPOSTO_IMPORTACAO)\n }\n );\n break;\n case EnumTipoDocumento.NF_ENTRADA_CONTROLADORIA:\n item.unshift(\n {\n name: EnumTipoTributo.IMPOSTO_IMPORTACAO,\n label: 'erpx.tributos.enum_tipo_tributo_imposto_importacao',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.IMPOSTO_IMPORTACAO)\n },\n {\n name: EnumTipoTributo.PIS_RECUPERAR_IMPORTACAO,\n label: 'erpx.tributos.enum_tipo_tributo_pis_recuperar_importacao',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.PIS_RECUPERAR_IMPORTACAO)\n },\n {\n name: EnumTipoTributo.COFINS_RECUPERAR_IMPORTACAO,\n label: 'erpx.tributos.enum_tipo_tributo_cofins_recuperar_importacao',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.COFINS_RECUPERAR_IMPORTACAO)\n }\n );\n break;\n default:\n item.unshift({\n name: EnumTipoTributo.IMPOSTO_IMPORTACAO,\n label: 'erpx.tributos.enum_tipo_tributo_imposto_importacao',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.IMPOSTO_IMPORTACAO)\n }, {\n name: EnumTipoTributo.PIS_RECUPERAR_IMPORTACAO,\n label: 'erpx.tributos.enum_tipo_tributo_pis_recuperar_importacao',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.PIS_RECUPERAR_IMPORTACAO)\n }, {\n name: EnumTipoTributo.COFINS_RECUPERAR_IMPORTACAO,\n label: 'erpx.tributos.enum_tipo_tributo_cofins_recuperar_importacao',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.COFINS_RECUPERAR_IMPORTACAO)\n }\n );\n break;\n }\n\n this.grupos.unshift(\n {\n grupo: `${'erpx.tributos.enum_grupo_tributo_' + EnumGrupoTributo.IMPORTACOES + '_label'}`, item\n });\n return item;\n }\n }\n\n private montaIss(): any[] {\n if (this.menuItemIss == false) {\n this.menuItemIss = true;\n const item: any[] = [];\n switch (this.documento) {\n case EnumTipoDocumento.NF_ENTRADA:\n case EnumTipoDocumento.PEDIDO_COMPRA:\n case EnumTipoDocumento.NF_SAIDA:\n case EnumTipoDocumento.PEDIDO_VENDA:\n item.unshift({\n name: EnumTipoTributo.ISS,\n label: 'erpx.tributos.enum_tipo_tributo_iss',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.ISS)\n }, {\n name: EnumTipoTributo.ISS_RETIDO,\n label: 'erpx.tributos.enum_tipo_tributo_iss_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.ISS_RETIDO)\n }\n );\n break;\n\n case EnumTipoDocumento.NF_SAIDA_CONTROLADORIA:\n item.unshift(\n {\n name: EnumTipoTributo.ISS,\n label: 'erpx.tributos.enum_tipo_tributo_iss',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.ValorDeducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.ISS)\n },\n {\n name: EnumTipoTributo.ISS_RETIDO,\n label: 'erpx.tributos.enum_tipo_tributo_iss_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.ValorDeducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.ISS_RETIDO)\n }\n );\n break;\n\n case EnumTipoDocumento.NF_ENTRADA_CONTROLADORIA:\n item.unshift(\n {\n name: EnumTipoTributo.ISS,\n label: 'erpx.tributos.enum_tipo_tributo_iss',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.ValorDeducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.ISS)\n },\n {\n name: EnumTipoTributo.ISS_RETIDO,\n label: 'erpx.tributos.enum_tipo_tributo_iss_retido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.PercentualReducao },\n { campo: EnumCampoTributo.ValorDeducao },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.ISS_RETIDO)\n }\n );\n break;\n\n default:\n break;\n }\n\n this.grupos.unshift({ grupo: `${'erpx.tributos.enum_grupo_tributo_' + EnumGrupoTributo.ISS + '_label'}`, item });\n return item;\n }\n }\n\n private montaPis(): any[] {\n if (this.menuItemPis == false) {\n this.menuItemPis = true;\n const item: any[] = [];\n switch (this.documento) {\n case EnumTipoDocumento.NF_ENTRADA:\n item.unshift({\n name: EnumTipoTributo.PIS_RECUPERAR,\n label: 'erpx.tributos.enum_tipo_tributo_pis_recuperar',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.SituacaoTributaria },\n { campo: EnumCampoTributo.baseCalculoCredito },\n { campo: EnumCampoTributo.RegimeTributarioPisCofins }\n ], EnumTipoTributo.PIS_RECUPERAR)\n }, {\n name: EnumTipoTributo.PIS_DEVOLVIDO,\n label: 'erpx.tributos.enum_tipo_tributo_pis_devolvido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.PIS_DEVOLVIDO)\n }\n );\n break;\n\n case EnumTipoDocumento.PEDIDO_COMPRA:\n item.unshift({\n name: EnumTipoTributo.PIS_RECUPERAR,\n label: 'erpx.tributos.enum_tipo_tributo_pis_recuperar',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.PIS_RECUPERAR)\n }\n );\n break;\n\n case EnumTipoDocumento.NF_SAIDA:\n item.unshift({\n name: EnumTipoTributo.PIS,\n label: 'erpx.tributos.enum_tipo_tributo_pis',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.SituacaoTributaria },\n { campo: EnumCampoTributo.NaturezaReceita },\n { campo: EnumCampoTributo.RegimeTributarioPisCofins }\n ], EnumTipoTributo.PIS)\n }, {\n name: EnumTipoTributo.PIS_DEVOLVIDO,\n label: 'erpx.tributos.enum_tipo_tributo_pis_devolvido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.PIS_DEVOLVIDO)\n }\n );\n break;\n\n case EnumTipoDocumento.PEDIDO_VENDA:\n item.unshift({\n name: EnumTipoTributo.PIS,\n label: 'erpx.tributos.enum_tipo_tributo_pis',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.PIS)\n }\n );\n break;\n\n case EnumTipoDocumento.NF_SAIDA_CONTROLADORIA:\n item.unshift(\n {\n name: EnumTipoTributo.PIS,\n label: 'erpx.tributos.enum_tipo_tributo_pis_faturamento',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.SituacaoTributaria },\n { campo: EnumCampoTributo.NaturezaReceita },\n { campo: EnumCampoTributo.RegimeTributarioPisCofins }\n\n ], EnumTipoTributo.PIS)\n },\n {\n name: EnumTipoTributo.PIS_DEVOLVIDO,\n label: 'erpx.tributos.enum_tipo_tributo_pis_devolvido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.RegimeTributarioPisCofins }\n ], EnumTipoTributo.PIS_DEVOLVIDO)\n }\n );\n break;\n case EnumTipoDocumento.NF_ENTRADA_CONTROLADORIA:\n item.unshift(\n {\n name: EnumTipoTributo.PIS_RECUPERAR,\n label: 'erpx.tributos.enum_tipo_tributo_pis_recuperar',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.SituacaoTributaria },\n { campo: EnumCampoTributo.baseCalculoCredito },\n { campo: EnumCampoTributo.RegimeTributarioPisCofins }\n\n ], EnumTipoTributo.PIS_RECUPERAR)\n },\n {\n name: EnumTipoTributo.PIS_DEVOLVIDO,\n label: 'erpx.tributos.enum_tipo_tributo_pis_devolvido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.RegimeTributarioPisCofins }\n ], EnumTipoTributo.PIS_DEVOLVIDO)\n }\n );\n break;\n\n default:\n break;\n }\n\n this.grupos.unshift({ grupo: `${'erpx.tributos.enum_grupo_tributo_' + EnumGrupoTributo.PIS + '_label'}`, item });\n return item;\n }\n }\n\n private montaCofins(): any[] {\n if (this.menuItemCofins == false) {\n this.menuItemCofins = true;\n const item: any[] = [];\n switch (this.documento) {\n case EnumTipoDocumento.NF_ENTRADA:\n item.unshift({\n name: EnumTipoTributo.COFINS_RECUPERAR,\n label: 'erpx.tributos.enum_tipo_tributo_cofins_recuperar',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.SituacaoTributaria },\n { campo: EnumCampoTributo.baseCalculoCredito },\n { campo: EnumCampoTributo.RegimeTributarioPisCofins }\n ], EnumTipoTributo.COFINS_RECUPERAR)\n }, {\n name: EnumTipoTributo.COFINS_DEVOLVIDO,\n label: 'erpx.tributos.enum_tipo_tributo_cofins_devolvido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.COFINS_DEVOLVIDO)\n }\n );\n break;\n\n case EnumTipoDocumento.PEDIDO_COMPRA:\n item.unshift({\n name: EnumTipoTributo.COFINS_RECUPERAR,\n label: 'erpx.tributos.enum_tipo_tributo_cofins_recuperar',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.COFINS_RECUPERAR)\n }\n );\n break;\n\n case EnumTipoDocumento.NF_SAIDA:\n item.unshift({\n name: EnumTipoTributo.COFINS,\n label: 'erpx.tributos.enum_tipo_tributo_cofins',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.SituacaoTributaria },\n { campo: EnumCampoTributo.NaturezaReceita },\n { campo: EnumCampoTributo.RegimeTributarioPisCofins }\n ], EnumTipoTributo.COFINS)\n }, {\n name: EnumTipoTributo.COFINS_DEVOLVIDO,\n label: 'erpx.tributos.enum_tipo_tributo_cofins_devolvido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n ], EnumTipoTributo.COFINS_DEVOLVIDO)\n }\n );\n break;\n\n case EnumTipoDocumento.PEDIDO_VENDA:\n item.unshift({\n name: EnumTipoTributo.COFINS,\n label: 'erpx.tributos.enum_tipo_tributo_cofins',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.COFINS)\n }\n );\n break;\n\n case EnumTipoDocumento.NF_SAIDA_CONTROLADORIA:\n item.unshift(\n {\n name: EnumTipoTributo.COFINS,\n label: 'erpx.tributos.enum_tipo_tributo_cofins',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.SituacaoTributaria },\n { campo: EnumCampoTributo.NaturezaReceita },\n { campo: EnumCampoTributo.RegimeTributarioPisCofins }\n ], EnumTipoTributo.COFINS)\n },\n {\n name: EnumTipoTributo.COFINS_DEVOLVIDO,\n label: 'erpx.tributos.enum_tipo_tributo_cofins_devolvido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.RegimeTributarioPisCofins }\n ], EnumTipoTributo.COFINS_DEVOLVIDO)\n }\n );\n break;\n\n case EnumTipoDocumento.NF_ENTRADA_CONTROLADORIA:\n item.unshift(\n {\n name: EnumTipoTributo.COFINS_RECUPERAR,\n label: 'erpx.tributos.enum_tipo_tributo_cofins',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.SituacaoTributaria },\n { campo: EnumCampoTributo.baseCalculoCredito },\n { campo: EnumCampoTributo.RegimeTributarioPisCofins }\n ], EnumTipoTributo.COFINS_RECUPERAR)\n },\n {\n name: EnumTipoTributo.COFINS_DEVOLVIDO,\n label: 'erpx.tributos.enum_tipo_tributo_cofins_devolvido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.RegimeTributarioPisCofins }\n ], EnumTipoTributo.COFINS_DEVOLVIDO)\n }\n );\n break;\n\n default:\n break;\n }\n\n this.grupos.unshift(\n {\n grupo: `${'erpx.tributos.enum_grupo_tributo_' + EnumGrupoTributo.COFINS + '_label'}`, item\n });\n return item;\n }\n\n }\n\n private montaIpi(): any[] {\n if (this.menuItemIpi == false) {\n this.menuItemIpi = true;\n const item: any[] = [];\n switch (this.documento) {\n case EnumTipoDocumento.NF_ENTRADA:\n item.unshift({\n name: EnumTipoTributo.IPI,\n label: 'erpx.tributos.enum_tipo_tributo_ipi',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.ValorIsentas },\n { campo: EnumCampoTributo.ValorOutras },\n { campo: EnumCampoTributo.SituacaoTributaria },\n { campo: EnumCampoTributo.EnquadramentoIpi }\n ], EnumTipoTributo.IPI)\n }, {\n name: EnumTipoTributo.IPI_CREDITADO,\n label: 'erpx.tributos.enum_tipo_tributo_ipi_creditado',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.IPI_CREDITADO)\n }, {\n name: EnumTipoTributo.IPI_DEVOLVIDO,\n label: 'erpx.tributos.enum_tipo_tributo_ipi_devolvido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.IPI_DEVOLVIDO)\n }, {\n name: EnumTipoTributo.IPI_OUTRAS_DESPESAS,\n label: 'erpx.tributos.enum_tipo_tributo_ipi_outras_despesas',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.IPI_OUTRAS_DESPESAS)\n }, {\n name: EnumTipoTributo.IPI_PRESUMIDO,\n label: 'erpx.tributos.enum_tipo_tributo_ipi_presumido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.IPI_PRESUMIDO)\n }\n );\n break;\n\n case EnumTipoDocumento.PEDIDO_COMPRA:\n item.unshift({\n name: EnumTipoTributo.IPI,\n label: 'erpx.tributos.enum_tipo_tributo_ipi',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.IPI)\n }, {\n name: EnumTipoTributo.IPI_CREDITADO,\n label: 'erpx.tributos.enum_tipo_tributo_ipi_creditado',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.IPI_CREDITADO)\n }, {\n name: EnumTipoTributo.IPI_PRESUMIDO,\n label: 'erpx.tributos.enum_tipo_tributo_ipi_presumido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.IPI_PRESUMIDO)\n }\n );\n break;\n\n case EnumTipoDocumento.NF_SAIDA:\n if (this.devolvido)\n item.unshift({\n name: EnumTipoTributo.IPI_PRESUMIDO,\n label: 'erpx.tributos.enum_tipo_tributo_ipi_presumido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.IPI_PRESUMIDO)\n });\n item.unshift({\n name: EnumTipoTributo.IPI,\n label: 'erpx.tributos.enum_tipo_tributo_ipi',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.ValorIsentas },\n { campo: EnumCampoTributo.ValorOutras },\n { campo: EnumCampoTributo.SituacaoTributaria },\n { campo: EnumCampoTributo.EnquadramentoIpi }\n ], EnumTipoTributo.IPI)\n }, {\n name: EnumTipoTributo.IPI_DEVOLVIDO,\n label: 'erpx.tributos.enum_tipo_tributo_ipi_devolvido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.IPI_DEVOLVIDO)\n }\n );\n break;\n\n case EnumTipoDocumento.PEDIDO_VENDA:\n item.unshift({\n name: EnumTipoTributo.IPI,\n label: 'erpx.tributos.enum_tipo_tributo_ipi',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.IPI)\n }\n );\n break;\n\n case EnumTipoDocumento.NF_SAIDA_CONTROLADORIA:\n item.unshift(\n {\n name: EnumTipoTributo.IPI,\n label: 'erpx.tributos.enum_tipo_tributo_ipi',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.ValorIsentas },\n { campo: EnumCampoTributo.ValorOutras },\n { campo: EnumCampoTributo.SituacaoTributaria },\n { campo: EnumCampoTributo.EnquadramentoIpi },\n { campo: EnumCampoTributo.Observacao }\n ], EnumTipoTributo.IPI)\n },\n {\n name: EnumTipoTributo.IPI_PRESUMIDO,\n label: 'erpx.tributos.enum_tipo_tributo_ipi_presumido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.IPI_PRESUMIDO)\n },\n {\n name: EnumTipoTributo.IPI_DEVOLVIDO,\n label: 'erpx.tributos.enum_tipo_tributo_ipi_devolvido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.IPI_DEVOLVIDO)\n }\n );\n break;\n\n case EnumTipoDocumento.NF_ENTRADA_CONTROLADORIA:\n item.unshift(\n {\n name: EnumTipoTributo.IPI,\n label: 'erpx.tributos.enum_tipo_tributo_ipi',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor },\n { campo: EnumCampoTributo.ValorIsentas },\n { campo: EnumCampoTributo.ValorOutras },\n { campo: EnumCampoTributo.ImpostoNaoRecuperado },\n { campo: EnumCampoTributo.SituacaoTributaria },\n { campo: EnumCampoTributo.EnquadramentoIpi },\n { campo: EnumCampoTributo.Observacao }\n ], EnumTipoTributo.IPI)\n },\n {\n name: EnumTipoTributo.IPI_PRESUMIDO,\n label: 'erpx.tributos.enum_tipo_tributo_ipi_presumido',\n ...this.montaCampos([\n { campo: EnumCampoTributo.BaseCalculo },\n { campo: EnumCampoTributo.Aliquota },\n { campo: EnumCampoTributo.Valor }\n ], EnumTipoTributo.IPI_PRESUMIDO)\n },\n );\n break;\n\n default:\n break;\n }\n\n this.grupos.unshift({ grupo: `${'erpx.tributos.enum_grupo_tributo_' + EnumGrupoTributo.IPI + '_label'}`, item });\n return item;\n }\n }\n\n private setVariableRequired(tributo: EnumTipoTributo) {\n switch (tributo) {\n case EnumTipoTributo.CIDE_TECNOLOGIA:\n return this.requiredItemCideTecnologia;\n case EnumTipoTributo.PIS_RECUPERAR:\n return this.requiredItemPisRecuperar;\n case EnumTipoTributo.PIS_DEVOLVIDO:\n return this.requiredItemPisDevolvido;\n case EnumTipoTributo.COFINS_RECUPERAR:\n return this.requiredItemCofinsRecuperar;\n case EnumTipoTributo.COFINS_DEVOLVIDO:\n return this.requiredItemCofinsDevolvido;\n case EnumTipoTributo.IPI:\n return this.requiredItemIpi;\n case EnumTipoTributo.IPI_CREDITADO:\n return this.requiredItemIpiCreditado;\n case EnumTipoTributo.IPI_DEVOLVIDO:\n return this.requiredItemIpiDevolvido;\n case EnumTipoTributo.IPI_OUTRAS_DESPESAS:\n return this.requiredItemIpiOutrasDespesas;\n case EnumTipoTributo.IPI_PRESUMIDO:\n return this.requiredItemIpiPresumido;\n case EnumTipoTributo.ISS:\n return this.requiredItemIss;\n case EnumTipoTributo.ISS_RETIDO:\n return this.requiredItemIssRetido;\n case EnumTipoTributo.IMPOSTO_IMPORTACAO:\n return this.requiredItemImpostoImportacao;\n case EnumTipoTributo.PIS_RECUPERAR_IMPORTACAO:\n return this.requiredItemPisRecuperarImportacao;\n case EnumTipoTributo.COFINS_RECUPERAR_IMPORTACAO:\n return this.requiredItemCofinsRecuperarImportacao;\n case EnumTipoTributo.PIS_RETIDO:\n return this.requiredItemPisRetido;\n case EnumTipoTributo.COFINS_RETIDO:\n return this.requiredItemCofinsRetido;\n case EnumTipoTributo.CSLL:\n return this.requiredItemCsllRetido;\n case EnumTipoTributo.IRRF:\n return this.requiredItemIrrfRetido;\n case EnumTipoTributo.INSS:\n return this.requiredItemInssRetido;\n case EnumTipoTributo.INSS_PATRONAL:\n return this.requiredItemInssPatronal;\n case EnumTipoTributo.ICMS_ST:\n return this.requiredItemIcmsSt;\n case EnumTipoTributo.FCP_ST:\n return this.requiredItemFcpSt;\n case EnumTipoTributo.ICMS_COBRADO_ANTERIORMENTE_ST:\n return this.requiredItemIcmsCobradoAnteriormente;\n case EnumTipoTributo.FCP_COBRADO_ANTERIORMENTE_ST:\n return this.requiredItemFcpCobradoAnteriormente;\n case EnumTipoTributo.ICMS:\n return this.requiredItemIcms;\n case EnumTipoTributo.ICMS_CREDITADO:\n return this.requiredItemIcmsEfetivamenteCreditado;\n case EnumTipoTributo.FCP:\n return this.requiredItemFcp;\n case EnumTipoTributo.ICMS_DIFERIDO:\n return this.requiredItemIcmsDiferido;\n case EnumTipoTributo.ICMS_DESONERADO:\n return this.requiredItemIcmsDesonerado;\n case EnumTipoTributo.DIFAL:\n return this.requiredItemDiferencialAlicota;\n case EnumTipoTributo.PIS:\n return this.requiredItemPisFaturemento;\n case EnumTipoTributo.COFINS:\n return this.requiredItemCofinsFaturemento;\n case EnumTipoTributo.ICMS_UF_DESTINO:\n return this.requiredItemIcmsUfDestino;\n case EnumTipoTributo.FCP_UF_DESTINO:\n return this.requiredItemFcpUfDestino;\n case EnumTipoTributo.ICMS_ST:\n return this.requiredSituacaoTributaria;\n case EnumTipoTributo.ICMS_FUTURO:\n return this.requiredIcmsFuturo;\n case EnumTipoTributo.ICMS_SIMPLES:\n return this.requiredIcmsSimples;\n case EnumTipoTributo.DIFAL_DEVOLVIDO:\n return this.requiredDifalDevolvido;\n case EnumTipoTributo.ICMS_UF_DESTINO_DEVOLVIDO:\n return this.requiredICMS_UF_Destino_Devolvido;\n case EnumTipoTributo.FCP_UF_DESTINO_DEVOLVIDO:\n return this.requiredFCP_UF_Destino_Devolvido;\n case EnumTipoTributo.PIS_FATURAMENTO:\n return this.requiredItemPisFaturamento;\n case EnumTipoTributo.IMPOSTO_NAO_RECUPERADO:\n return this.requiredImpostoNaoRecuperado;\n case EnumTipoTributo.BASE_CALCULO_CREDITO:\n return this.requiredbaseCalculoCredito;\n case EnumTipoTributo.PERCENTUAL_REDUCAO:\n return this.requiredPercentualReducao;\n case EnumTipoTributo.ICMS_ST_SOLIDARIO:\n return this.requiredIcmsStSolidario;\n case EnumTipoTributo.ICMS_ST_RETIDO_ANT:\n return this.requiredIcmsStRetidoAnt;\n case EnumTipoTributo.FCP_ST_RETIDO_ANT:\n return this.requiredFcpStReditoAnt;\n default:\n break;\n }\n }\n\n private setRequired(tributo: EnumTipoTributo, value: boolean) {\n switch (tributo) {\n case EnumTipoTributo.CIDE_TECNOLOGIA: {\n this.requiredItemCideTecnologia = value;\n break;\n }\n case EnumTipoTributo.PIS_RECUPERAR: {\n this.requiredItemPisRecuperar = value;\n break;\n }\n case EnumTipoTributo.PIS_DEVOLVIDO: {\n this.requiredItemPisDevolvido = value;\n break;\n }\n case EnumTipoTributo.COFINS_RECUPERAR: {\n this.requiredItemCofinsRecuperar = value;\n break;\n }\n case EnumTipoTributo.COFINS_DEVOLVIDO: {\n this.requiredItemCofinsDevolvido = value;\n break;\n }\n case EnumTipoTributo.IPI: {\n this.requiredItemIpi = value;\n break;\n }\n case EnumTipoTributo.IPI_CREDITADO: {\n this.requiredItemIpiCreditado = value;\n break;\n }\n case EnumTipoTributo.IPI_DEVOLVIDO: {\n this.requiredItemIpiDevolvido = value;\n break;\n }\n case EnumTipoTributo.IPI_OUTRAS_DESPESAS: {\n this.requiredItemIpiOutrasDespesas = value;\n break;\n }\n case EnumTipoTributo.IPI_PRESUMIDO: {\n this.requiredItemIpiPresumido = value;\n break;\n }\n case EnumTipoTributo.ISS: {\n this.requiredItemIss = value;\n break;\n }\n case EnumTipoTributo.ISS_RETIDO: {\n this.requiredItemIssRetido = value;\n break;\n }\n case EnumTipoTributo.IMPOSTO_IMPORTACAO: {\n this.requiredItemImpostoImportacao = value;\n break;\n }\n case EnumTipoTributo.PIS_RECUPERAR_IMPORTACAO: {\n this.requiredItemPisRecuperarImportacao = value;\n break;\n }\n case EnumTipoTributo.COFINS_RECUPERAR_IMPORTACAO: {\n this.requiredItemCofinsRecuperarImportacao = value;\n break;\n }\n case EnumTipoTributo.PIS_RETIDO: {\n this.requiredItemPisRetido = value;\n break;\n }\n case EnumTipoTributo.COFINS_RETIDO: {\n this.requiredItemCofinsRetido = value;\n break;\n }\n case EnumTipoTributo.CSLL: {\n this.requiredItemCsllRetido = value;\n break;\n }\n case EnumTipoTributo.IRRF: {\n this.requiredItemIrrfRetido = value;\n break;\n }\n case EnumTipoTributo.INSS: {\n this.requiredItemInssRetido = value;\n break;\n }\n case EnumTipoTributo.INSS_PATRONAL: {\n this.requiredItemInssPatronal = value;\n break;\n }\n case EnumTipoTributo.ICMS_ST: {\n this.requiredItemIcmsSt = value;\n break;\n }\n case EnumTipoTributo.FCP_ST: {\n this.requiredItemFcpSt = value;\n break;\n }\n case EnumTipoTributo.ICMS_COBRADO_ANTERIORMENTE_ST: {\n this.requiredItemIcmsCobradoAnteriormente = value;\n break;\n }\n case EnumTipoTributo.FCP_COBRADO_ANTERIORMENTE_ST: {\n this.requiredItemFcpCobradoAnteriormente = value;\n break;\n }\n case EnumTipoTributo.ICMS: {\n this.requiredItemIcms = value;\n break;\n }\n case EnumTipoTributo.ICMS_CREDITADO: {\n this.requiredItemIcmsEfetivamenteCreditado = value;\n break;\n }\n case EnumTipoTributo.FCP: {\n this.requiredItemFcp = value;\n break;\n }\n case EnumTipoTributo.ICMS_DIFERIDO: {\n this.requiredItemIcmsDiferido = value;\n break;\n }\n case EnumTipoTributo.ICMS_DESONERADO: {\n this.requiredItemIcmsDesonerado = value;\n break;\n }\n case EnumTipoTributo.DIFAL: {\n this.requiredItemDiferencialAlicota = value;\n break;\n }\n case EnumTipoTributo.PIS: {\n this.requiredItemPisFaturemento = value;\n break;\n }\n case EnumTipoTributo.COFINS: {\n this.requiredItemCofinsFaturemento = value;\n break;\n }\n case EnumTipoTributo.FCP_UF_DESTINO: {\n this.requiredItemFcpUfDestino = value;\n break;\n }\n case EnumTipoTributo.ICMS_UF_DESTINO: {\n this.requiredItemIcmsUfDestino = value;\n break;\n }\n case EnumTipoTributo.ICMS_ST: {\n this.requiredSituacaoTributaria = value;\n break;\n }\n case EnumTipoTributo.ICMS_FUTURO: {\n this.requiredIcmsFuturo = value;\n break;\n }\n case EnumTipoTributo.ICMS_SIMPLES: {\n this.requiredIcmsSimples = value;\n break;\n }\n case EnumTipoTributo.ICMS_ST_SOLIDARIO: {\n this.requiredIcmsStSolidario = value;\n break;\n }\n case EnumTipoTributo.ICMS_ST_RETIDO_ANT: {\n this.requiredIcmsStRetidoAnt = value;\n break;\n }\n case EnumTipoTributo.FCP_ST_RETIDO_ANT: {\n this.requiredFcpStReditoAnt = value;\n break;\n }\n case EnumTipoTributo.DIFAL_DEVOLVIDO: {\n this.requiredDifalDevolvido = value;\n break;\n }\n case EnumTipoTributo.ICMS_UF_DESTINO_DEVOLVIDO: {\n this.requiredICMS_UF_Destino_Devolvido = value;\n break;\n }\n case EnumTipoTributo.FCP_UF_DESTINO_DEVOLVIDO: {\n this.requiredFCP_UF_Destino_Devolvido = value;\n break;\n }\n case EnumTipoTributo.PIS_FATURAMENTO: {\n this.requiredItemPisFaturamento = value;\n break;\n }\n\n default:\n break;\n }\n this.requiredSituacaoTributaria = value;\n }\n\n private impostoCalculado(imposto: EnumTipoTributo): boolean {\n return imposto != EnumTipoTributo.DIFAL &&\n imposto != EnumTipoTributo.ICMS_ST &&\n imposto != EnumTipoTributo.ICMS_ST_SOLIDARIO &&\n imposto != EnumTipoTributo.FCP_ST &&\n imposto != EnumTipoTributo.ICMS_ST_FUTURO &&\n imposto != EnumTipoTributo.DIFAL_DEVOLVIDO &&\n imposto != EnumTipoTributo.ICMS_DIFERIDO &&\n imposto != EnumTipoTributo.ICMS_UF_DESTINO &&\n imposto != EnumTipoTributo.ICMS_COBRADO_ANTERIORMENTE_ST &&\n imposto != EnumTipoTributo.FCP_COBRADO_ANTERIORMENTE_ST &&\n imposto != EnumTipoTributo.FCP_ST_RETIDO_ANT &&\n imposto != EnumTipoTributo.FUNRURAL_TOTAL;\n }\n\n private roundImposto(number: any, decimals: any) {\n const x = Math.pow(10, Number(decimals) + 1);\n return (Number(number) + (1 / x)).toFixed(decimals);\n }\n\n private calcularValor(tributo: EnumTipoTributo) {\n if (this.grupos && this.grupos != undefined && this.grupos.length > 0) {\n this.grupos.map(\n grupo => {\n grupo.item\n .filter((it: any) => it.name == tributo)\n .map((it: any) => {\n let hasValue = false;\n Object.keys(it.formGroup.value).forEach((item: any) => {\n if (it.formGroup.value[item] != undefined) {\n hasValue = true;\n return;\n }\n });\n\n if (hasValue && this.impostoCalculado(tributo)) {\n if ((it.formGroup.controls.baseCalculo != undefined) &&\n (it.formGroup.controls.aliquota != undefined)) {\n\n if (tributo != EnumTipoTributo.ICMS_UF_DESTINO) {\n if ((tributo == EnumTipoTributo.ICMS) &&\n ((it.formGroup.controls.situacaoTributaria == undefined) ||\n (it.formGroup.controls.situacaoTributaria.value == undefined))) {\n\n const base = it.formGroup.controls.baseCalculo.value;\n const aliquota = it.formGroup.controls.aliquota.value;\n\n if ((base != undefined) && (aliquota != undefined))\n it.formGroup.controls.valor.patchValue(this.roundImposto(((base * aliquota) / 100), 2));\n\n } else if ((tributo == EnumTipoTributo.ICMS) &&\n (it.formGroup.controls.situacaoTributaria.value.codStr != '51')) {\n\n const base = it.formGroup.controls.baseCalculo.value;\n const aliquota = it.formGroup.controls.aliquota.value;\n\n if ((base != undefined) && (aliquota != undefined))\n it.formGroup.controls.valor.patchValue(this.roundImposto(((base * aliquota) / 100), 2));\n\n } else if (\n tributo === EnumTipoTributo.FUNRURAL_INSS ||\n tributo === EnumTipoTributo.FUNRURAL_RAT ||\n tributo === EnumTipoTributo.FUNRURAL_SENAR\n ) {\n const base = it.formGroup.get(\"baseCalculo\").value ?? null;\n const aliquota = it.formGroup.get(\"aliquota\").value ?? null;\n\n it.formGroup.controls.valor.patchValue(Math.floor((base * aliquota)) / 100);\n\n } else if (tributo != EnumTipoTributo.ICMS) {\n const base = it.formGroup.controls.baseCalculo.value;\n const aliquota = it.formGroup.controls.aliquota.value;\n\n if ((base != undefined) && (aliquota != undefined))\n it.formGroup.controls.valor.patchValue(this.roundImposto(((base * aliquota) / 100), 2));\n\n }\n }\n\n if (\n tributo === EnumTipoTributo.FUNRURAL_INSS ||\n tributo === EnumTipoTributo.FUNRURAL_RAT ||\n tributo === EnumTipoTributo.FUNRURAL_SENAR\n ) {\n let impostos = ['FUNRURAL_INSS', 'FUNRURAL_RAT', 'FUNRURAL_SENAR'];\n let controleFunrural = this.calcularFunruralTotal(impostos, grupo)\n\n if (controleFunrural.baseDiferente) {\n this.messageService.add({\n severity: \"warn\",\n summary: this.translate.instant(\n \"erpx.tributos.error_base_funrural_diferente_summary\"\n ),\n detail: this.translate.instant(\n \"erpx.tributos.error_base_funrural_diferente_detail\"\n ),\n });\n }\n\n const funruralTotal = grupo.item.find(\n (item) => item.name === \"FUNRURAL_TOTAL\"\n );\n\n funruralTotal.formGroup.setValue(\n {\n baseCalculo: controleFunrural.funBase,\n valor: controleFunrural.funValor,\n impostoManual: true\n },\n { emitEvent: false }\n );\n }\n\n }\n }\n });\n }\n );\n }\n }\n\n private calcularFunruralTotal(impostos: any, grupo) {\n let valores = {\n funBase: 0,\n funValor: 0,\n baseDiferente: false,\n };\n\n for (let index = 0; index < impostos.length; index++) {\n const funruralImposto = grupo.item.find(item => item.name === impostos[index]);\n\n if (funruralImposto.formGroup.value.baseCalculo != undefined) {\n if (valores.funBase > 0 && valores.funBase != funruralImposto.formGroup.value.baseCalculo) {\n valores.baseDiferente = true;\n }\n\n valores.funBase = funruralImposto.formGroup.value.baseCalculo > valores.funBase ? funruralImposto.formGroup.value.baseCalculo : valores.funBase;\n }\n\n if (funruralImposto.formGroup.value.valor != undefined) {\n valores.funValor = Number(this.roundImposto(Number(valores.funValor) + Number(funruralImposto.formGroup.value.valor), 2));\n }\n }\n\n return valores;\n }\n\n private montaCampos(campos: CampoTributo[], tributo: EnumTipoTributo) {\n const retorno: any = {};\n const formField: FormField[] = [];\n let formGroup: any = {};\n let movimento = '';\n\n if (this.documento == EnumTipoDocumento.NF_ENTRADA ||\n this.documento == EnumTipoDocumento.PEDIDO_COMPRA ||\n this.documento == EnumTipoDocumento.NF_ENTRADA_CONTROLADORIA)\n movimento = 'VENTRADA';\n else\n movimento = 'VSAIDA';\n\n campos.map(it => {\n\n if (it.campo == EnumCampoTributo.BaseCalculo) {\n formGroup = {\n ...formGroup,\n baseCalculo: [\n {\n value: undefined,\n disabled: false\n }, Validators.compose([Validators.max(9999999999999.99)])]\n };\n\n formField.push(\n new FormField({\n id: tributo + 'BaseCalculo',\n name: 'baseCalculo',\n label: this.translate.instant('erpx.tributos.fields_base_label'),\n type: FieldType.Money,\n precision: 15,\n scale: 2,\n numberLocaleOptions: this.currencyLocaleOptions,\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onBlur: () => {\n this.calcularValor(tributo);\n this.backValue();\n this.setValidators(tributo);\n },\n errorMessages: () => ({\n required: this.translate.instant('erpx.tributos.fields_required_validator')\n }),\n required: () => this.setVariableRequired(tributo)\n })\n );\n } else if (it.campo == EnumCampoTributo.Aliquota) {\n formGroup = {\n ...formGroup,\n aliquota: [\n {\n value: undefined,\n disabled: false\n }, Validators.compose([Validators.max(999.9999)])\n ]\n };\n\n formField.push(\n new FormField({\n id: tributo + 'Aliquota',\n name: 'aliquota',\n label: this.getLabelAliquota(tributo),\n type: FieldType.Money,\n precision: 7,\n scale: 4,\n numberLocaleOptions: { currencySymbol: '%', decimalSeparator: ',', thousandsSeparator: '.' },\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onBlur: () => {\n this.calcularValor(tributo);\n this.backValue();\n this.setValidators(tributo);\n },\n errorMessages: () => ({\n required: this.translate.instant('erpx.tributos.fields_required_validator')\n }),\n required: () => this.setVariableRequired(tributo)\n })\n );\n } else if (it.campo == EnumCampoTributo.AliquotaInterna) {\n formGroup = {\n ...formGroup,\n aliquotaInterna: [\n {\n value: undefined,\n disabled: false\n }, Validators.compose([Validators.max(999.9999)])\n ]\n };\n\n formField.push(\n new FormField({\n id: tributo + 'AliquotaInterna',\n name: 'aliquotaInterna',\n label: this.translate.instant('erpx.tributos.fields_aliquota_interna_label'),\n type: FieldType.Money,\n precision: 7,\n scale: 4,\n numberLocaleOptions: { currencySymbol: '%', decimalSeparator: ',', thousandsSeparator: '.' },\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onBlur: () => {\n // this.calcularValor(tributo);\n this.backValue();\n this.setValidators(tributo);\n },\n errorMessages: () => ({\n required: this.translate.instant('erpx.tributos.fields_required_validator')\n }),\n required: () => this.setVariableRequired(tributo)\n })\n );\n } else if (it.campo == EnumCampoTributo.AliquotaInternaDestino) {\n formGroup = {\n ...formGroup,\n aliquotaInternaDestino: [\n {\n value: undefined, disabled: false\n }, Validators.compose([Validators.max(999.9999)])\n ]\n };\n\n formField.push(\n new FormField({\n id: tributo + 'AliquotaInternaDestino',\n name: 'aliquotaInternaDestino',\n label: this.translate.instant('erpx.tributos.fields_aliquota_interna_destino_label'),\n type: FieldType.Money,\n precision: 7,\n scale: 4,\n numberLocaleOptions: { currencySymbol: '%', decimalSeparator: ',', thousandsSeparator: '.' },\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onBlur: () => {\n // this.calcularValor(tributo);\n this.backValue();\n this.setValidators(tributo);\n },\n errorMessages: () => ({\n required: this.translate.instant('erpx.tributos.fields_required_validator')\n }),\n required: () => this.setVariableRequired(tributo)\n })\n );\n } else if (it.campo == EnumCampoTributo.Valor) {\n formGroup = {\n ...formGroup,\n valor: [\n {\n value: undefined,\n disabled: false\n }, Validators.compose([Validators.max(9999999999999.99)])\n ]\n };\n\n formField.push(\n new FormField({\n id: tributo + 'Valor',\n name: 'valor',\n label: this.translate.instant('erpx.tributos.fields_valor_label'),\n type: FieldType.Money,\n precision: 15,\n scale: 2,\n numberLocaleOptions: this.currencyLocaleOptions,\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onBlur: () => {\n this.backValue();\n this.setValidators(tributo);\n },\n errorMessages: () => ({\n required: this.translate.instant('erpx.tributos.fields_required_validator'),\n max: this.translate.instant('erpx.tributos.fields_max_validator')\n }),\n required: () => this.setVariableRequired(tributo)\n })\n );\n } else if (it.campo == EnumCampoTributo.ValorIsentas) {\n formGroup = {\n ...formGroup,\n valorIsentas: [\n {\n value: undefined,\n disabled: false\n }, Validators.compose([Validators.max(9999999999999.99)])\n ]\n };\n\n formField.push(\n new FormField({\n id: tributo + 'ValorIsentas',\n name: 'valorIsentas',\n label: this.translate.instant('erpx.tributos.fields_valor_isentas_label'),\n type: FieldType.Money,\n precision: 15,\n scale: 2,\n numberLocaleOptions: this.currencyLocaleOptions,\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onBlur: () => {\n this.backValue();\n this.setValidators(tributo);\n },\n errorMessages: () => ({\n required: this.translate.instant('erpx.tributos.fields_required_validator')\n }),\n required: () => this.setVariableRequired(tributo)\n })\n );\n } else if (it.campo == EnumCampoTributo.ValorOutras) {\n formGroup = {\n ...formGroup,\n valorOutras: [\n {\n value: undefined,\n disabled: false\n }, Validators.compose([Validators.max(9999999999999.99)])\n ]\n };\n\n formField.push(\n new FormField({\n id: tributo + 'ValorOutras',\n name: 'valorOutras',\n label: this.translate.instant('erpx.tributos.fields_valor_outras_label'),\n type: FieldType.Money,\n precision: 15,\n scale: 2,\n numberLocaleOptions: this.currencyLocaleOptions,\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onBlur: () => {\n this.backValue();\n this.setValidators(tributo);\n },\n errorMessages: () => ({\n required: this.translate.instant('erpx.tributos.fields_required_validator')\n }),\n required: () => this.setVariableRequired(tributo)\n })\n );\n } else if (it.campo == EnumCampoTributo.SituacaoTributaria) {\n formGroup = { ...formGroup, situacaoTributaria: [{ value: undefined, disabled: false }, Validators.compose([])] };\n\n let searchGridFields!: FormField[];\n if (this.documento === EnumTipoDocumento.NF_SAIDA_CONTROLADORIA) {\n searchGridFields = [\n {\n name: 'codStr',\n type: FieldType.String\n }, {\n name: 'desStr',\n type: FieldType.String\n },\n {\n name: 'tipImp',\n type: FieldType.Enum,\n options: [\n {\n label: this.translate.instant('erpx.tributos.enum.tip_imp_pis_cofins'),\n value: EnumTipImpCst.PIS_COFINS\n },\n {\n label: this.translate.instant('erpx.tributos.enum.tip_imp_ipi'),\n value: EnumTipImpCst.IPI\n },\n {\n label: this.translate.instant('erpx.tributos.enum.tip_imp_icms'),\n value: EnumTipImpCst.ICMS\n },\n {\n label: this.translate.instant('erpx.tributos.enum.tip_imp_iss'),\n value: EnumTipImpCst.ISS\n }\n ]\n },\n {\n name: 'tipOpe',\n type: FieldType.Enum,\n options: [\n {\n label: this.translate.instant('erpx.tributos.enum.tip_ope_v_saida'),\n value: EnumTipOpe.VSAIDA\n },\n {\n label: this.translate.instant('erpx.tributos.enum.tip_ope_v_entrada'),\n value: EnumTipOpe.VENTRADA\n },\n {\n label: this.translate.instant('erpx.tributos.enum.tip_ope_v_ambos'),\n value: EnumTipOpe.VAMBOS\n }\n ]\n }\n ];\n }\n\n formField.push(\n new FormField({\n ...this.e027StrLookup.mountOptions({\n multiple: false,\n domain: this.dominio,\n service: this.servico,\n searchGridFields,\n formGroup: 'situacaoTributaria',\n defaultFilter: [{ field: 'excluido', operator: EnumLogicalOperator.Eq, values: ['false'] },\n { field: 'tipImp', operator: EnumLogicalOperator.Eq, values: [this.filterByImposto(tributo)] },\n { field: 'tipOpe', operator: EnumLogicalOperator.Eq, values: [movimento, 'VAMBOS'] },\n { field: 'situacao', operator: EnumLogicalOperator.Eq, values: ['VATIVO'] }]\n }),\n onBlur: () => {\n this.backValue();\n this.setValidators(tributo);\n },\n id: tributo + 'SituacaoTributaria',\n label: this.translate.instant('erpx.tributos.fields_situacao_tributaria_label'),\n size: { sm: 12, md: 6, lg: 6, xl: 3 },\n required: () => this.setVariableRequired(tributo)\n }),\n\n );\n } else if (it.campo == EnumCampoTributo.EnquadramentoIpi) {\n formGroup = { ...formGroup, enquadramentoIpi: [{ value: undefined, disabled: false }, Validators.compose([])] };\n\n formField.push(\n new FormField({\n ...this.e027eqiLookup.mountOptions({\n multiple: false,\n domain: this.dominio,\n service: this.servico,\n entity: 'e027eqi',\n formGroup: 'enquadramentoIpi',\n defaultFilter: [{ field: 'situacao', operator: EnumLogicalOperator.Eq, values: ['VATIVO'] },\n { field: 'excluido', operator: EnumLogicalOperator.Eq, values: ['false'] },\n ]\n }),\n id: tributo + 'EnquadramentoIpi',\n label: this.translate.instant('erpx.tributos.fields_enquadramento_ipi_label'),\n size: { sm: 12, md: 6, lg: 6, xl: 3 },\n onBlur: () => {\n this.backValue();\n this.setValidators(tributo);\n },\n errorMessages: () => ({\n required: this.translate.instant('erpx.tributos.fields_required_validator')\n }),\n required: () => this.setVariableRequired(tributo)\n })\n );\n } else if (it.campo == EnumCampoTributo.PercentualReducao) {\n formGroup = {\n ...formGroup,\n percentualReducao: [\n {\n value: undefined,\n disabled: false\n }, Validators.compose([Validators.max(100)])\n ]\n };\n\n formField.push(\n new FormField({\n id: tributo + 'PercentualReducao',\n name: 'percentualReducao',\n label: this.translate.instant('erpx.tributos.fields_percentual_reducao_label'),\n type: FieldType.Money,\n precision: 7,\n scale: 4,\n numberLocaleOptions: { currencySymbol: '%', decimalSeparator: ',', thousandsSeparator: '.' },\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onBlur: () => {\n this.backValue();\n this.setValidators(tributo);\n },\n errorMessages: () => ({\n max: this.translate.instant('erpx.tributos.fields_max_validator', { value: 100 }),\n required: this.translate.instant('erpx.tributos.fields_required_validator')\n }),\n required: () => this.setVariableRequired(tributo)\n })\n );\n } else if (it.campo == EnumCampoTributo.PercentualMargemValorAdicionado) {\n formGroup = {\n ...formGroup,\n percentualMargemValorAdicionado: [\n {\n value: undefined,\n disabled: false\n }, Validators.compose([Validators.max(1000)])\n ]\n };\n\n formField.push(\n new FormField({\n id: tributo + 'PercentualMargemValorAdicionado',\n name: 'percentualMargemValorAdicionado',\n label: this.translate.instant('erpx.tributos.fields_percentual_mva_label'),\n type: FieldType.Money,\n precision: 7,\n scale: 4,\n numberLocaleOptions: { currencySymbol: '%', decimalSeparator: ',', thousandsSeparator: '.' },\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onBlur: () => {\n this.backValue();\n this.setValidators(tributo);\n },\n errorMessages: () => ({\n max: this.translate.instant('erpx.tributos.fields_max_validator', { value: 1000 }),\n required: this.translate.instant('erpx.tributos.fields_required_validator')\n }),\n required: () => this.setVariableRequired(tributo)\n })\n );\n } else if (it.campo == EnumCampoTributo.MotivoDesoneracaoIcms) {\n formGroup = { ...formGroup, desoneracaoIcms: [{ value: undefined, disabled: false }, Validators.compose([])] };\n\n formField.push(\n new FormField({\n id: tributo + 'MotivoDesoneracaoIcms',\n name: 'desoneracaoIcms',\n label: this.translate.instant('erpx.tributos.fields_desoneracao_icms_label'),\n type: FieldType.Enum,\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n options: [\n { label: this.translate.instant('erpx.tributos.enum_mot_des_v_0'), value: EnumMotDes.V0 },\n { label: this.translate.instant('erpx.tributos.enum_mot_des_v_1'), value: EnumMotDes.V1 },\n { label: this.translate.instant('erpx.tributos.enum_mot_des_v_2'), value: EnumMotDes.V2 },\n { label: this.translate.instant('erpx.tributos.enum_mot_des_v_3'), value: EnumMotDes.V3 },\n { label: this.translate.instant('erpx.tributos.enum_mot_des_v_4'), value: EnumMotDes.V4 },\n { label: this.translate.instant('erpx.tributos.enum_mot_des_v_5'), value: EnumMotDes.V5 },\n { label: this.translate.instant('erpx.tributos.enum_mot_des_v_6'), value: EnumMotDes.V6 },\n { label: this.translate.instant('erpx.tributos.enum_mot_des_v_7'), value: EnumMotDes.V7 },\n { label: this.translate.instant('erpx.tributos.enum_mot_des_v_8'), value: EnumMotDes.V8 },\n { label: this.translate.instant('erpx.tributos.enum_mot_des_v_9'), value: EnumMotDes.V9 },\n { label: this.translate.instant('erpx.tributos.enum_mot_des_v_10'), value: EnumMotDes.V10 },\n { label: this.translate.instant('erpx.tributos.enum_mot_des_v_11'), value: EnumMotDes.V11 },\n { label: this.translate.instant('erpx.tributos.enum_mot_des_v_12'), value: EnumMotDes.V12 },\n { label: this.translate.instant('erpx.tributos.enum_mot_des_v_16'), value: EnumMotDes.V16 },\n { label: this.translate.instant('erpx.tributos.enum_mot_des_v_90'), value: EnumMotDes.V90 },\n ],\n placeholder: this.translate.instant('erpx.tributos.fields_desoneracao_icms_placeholder'),\n showClear: true,\n multiple: false,\n onChange: (event: any) => {\n if (!event)\n return;\n this.backValue();\n this.setValidators(tributo);\n },\n errorMessages: () => ({\n required: this.translate.instant('erpx.tributos.fields_required_validator')\n }),\n required: () => this.setVariableRequired(tributo)\n }),\n );\n } else if (it.campo == EnumCampoTributo.Origem) {\n formGroup = { ...formGroup, origem: [{ value: undefined, disabled: false }, Validators.compose([])] };\n\n formField.push(\n new FormField({\n id: tributo + 'Origem',\n name: 'origem',\n type: FieldType.Enum,\n options: [\n { label: this.translate.instant('erpx.tributos.enum_ori_mer_v_0'), value: EnumOriMer.V0 },\n { label: this.translate.instant('erpx.tributos.enum_ori_mer_v_1'), value: EnumOriMer.V1 },\n { label: this.translate.instant('erpx.tributos.enum_ori_mer_v_2'), value: EnumOriMer.V2 },\n { label: this.translate.instant('erpx.tributos.enum_ori_mer_v_3'), value: EnumOriMer.V3 },\n { label: this.translate.instant('erpx.tributos.enum_ori_mer_v_4'), value: EnumOriMer.V4 },\n { label: this.translate.instant('erpx.tributos.enum_ori_mer_v_5'), value: EnumOriMer.V5 },\n { label: this.translate.instant('erpx.tributos.enum_ori_mer_v_6'), value: EnumOriMer.V6 },\n { label: this.translate.instant('erpx.tributos.enum_ori_mer_v_7'), value: EnumOriMer.V7 },\n { label: this.translate.instant('erpx.tributos.enum_ori_mer_v_8'), value: EnumOriMer.V8 },\n ],\n placeholder: this.translate.instant('erpx.tributos.fields_origem_icms_placeholder'),\n showClear: true,\n multiple: false,\n label: this.translate.instant('erpx.tributos.fields_origem_icms_label'),\n size: { sm: 12, md: 6, lg: 6, xl: 3 },\n onChange: (event: any) => {\n if (!event)\n return;\n this.backValue();\n this.setValidators(tributo);\n },\n errorMessages: () => ({\n required: this.translate.instant('erpx.tributos.fields_required_validator')\n }),\n required: () => this.setVariableRequired(tributo)\n }),\n );\n } else if (it.campo == EnumCampoTributo.PercentualDiferimento) {\n formGroup = { ...formGroup, aliquota: [{ value: undefined, disabled: false }, Validators.compose([Validators.max(100)])] };\n\n formField.push(\n new FormField({\n id: tributo + 'PercentualDiferimento',\n name: 'aliquota',\n label: this.translate.instant('erpx.tributos.fields_percentual_diferimento_label'),\n type: FieldType.Money,\n precision: 7,\n scale: 4,\n numberLocaleOptions: { currencySymbol: '%', decimalSeparator: ',', thousandsSeparator: '.' },\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onBlur: () => {\n this.backValue();\n this.setValidators(tributo);\n },\n errorMessages: () => ({\n max: this.translate.instant('erpx.tributos.fields_max_validator', { value: 100 }),\n required: this.translate.instant('erpx.tributos.fields_required_validator')\n }),\n required: () => this.setVariableRequired(tributo)\n })\n );\n } else if (it.campo == EnumCampoTributo.PercentualSuportadoConsumidorFinal) {\n formGroup = {\n ...formGroup,\n percentualSuportadoConsumidorFinal: [\n {\n value: undefined,\n disabled: false\n }, Validators.compose([Validators.max(100)])\n ]\n };\n\n formField.push(\n new FormField({\n id: tributo + 'PercentualSuportadoConsumidorFinal',\n name: 'percentualSuportadoConsumidorFinal',\n label: this.translate.instant('erpx.tributos.fields_percentual_suportado_consumidor_final_label'),\n type: FieldType.Money,\n precision: 7,\n scale: 4,\n numberLocaleOptions: { currencySymbol: '%', decimalSeparator: ',', thousandsSeparator: '.' },\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onBlur: () => {\n this.backValue();\n this.setValidators(tributo);\n },\n errorMessages: () => ({\n max: this.translate.instant('erpx.tributos.fields_max_validator', { value: 100 }),\n required: this.translate.instant('erpx.tributos.fields_required_validator')\n }),\n required: () => this.setVariableRequired(tributo)\n })\n );\n } else if (it.campo == EnumCampoTributo.ValorRecolhidoPeloSubstituto) {\n formGroup = {\n ...formGroup,\n valorRecolhidoIcmsSt: [\n {\n value: undefined,\n disabled: false\n }, Validators.compose([Validators.max(9999999999999.99)])\n ]\n };\n\n formField.push(\n new FormField({\n id: tributo + 'ValorRecolhidoPeloSubstituto',\n name: 'valorRecolhidoIcmsSt',\n label: this.translate.instant('erpx.tributos.fields_valor_recolhido_pelo_substituto_label'),\n type: FieldType.Money,\n precision: 15,\n scale: 2,\n numberLocaleOptions: this.currencyLocaleOptions,\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onBlur: () => {\n this.backValue();\n this.setValidators(tributo);\n },\n errorMessages: () => ({\n required: this.translate.instant('erpx.tributos.fields_required_validator')\n }),\n required: () => this.setVariableRequired(tributo)\n })\n );\n } else if (it.campo == EnumCampoTributo.ValorIcmsStRetido) {\n formGroup = {\n ...formGroup,\n valorIcmsStRetido: [\n {\n value: undefined,\n disabled: false\n }, Validators.compose([Validators.max(99999999999.99)])\n ]\n };\n\n formField.push(\n new FormField({\n id: tributo + 'ValorIcmsStRetido',\n name: 'valorIcmsStRetido',\n label: this.translate.instant('erpx.tributos.fields_valor_icms_st_retido_label'),\n type: FieldType.Money,\n precision: 13,\n scale: 2,\n numberLocaleOptions: this.currencyLocaleOptions,\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onBlur: () => {\n this.backValue();\n this.setValidators(tributo);\n },\n errorMessages: () => ({\n required: this.translate.instant('erpx.tributos.fields_required_validator')\n }),\n required: () => this.setVariableRequired(tributo)\n })\n );\n } else if (it.campo == EnumCampoTributo.ModalidadeBC) {\n formGroup = { ...formGroup, modalidadeBC: [{ value: undefined, disabled: false }, Validators.compose([])] };\n\n formField.push(\n new FormField({\n id: tributo + 'ModalidadeBc',\n name: 'modalidadeBC',\n type: FieldType.Enum,\n options: [\n { label: this.translate.instant('erpx.tributos.enum_modalidade_bc_v_0'), value: EnumModBc.V0 },\n { label: this.translate.instant('erpx.tributos.enum_modalidade_bc_v_1'), value: EnumModBc.V1 },\n { label: this.translate.instant('erpx.tributos.enum_modalidade_bc_v_2'), value: EnumModBc.V2 },\n { label: this.translate.instant('erpx.tributos.enum_modalidade_bc_v_3'), value: EnumModBc.V3 }\n ],\n placeholder: this.translate.instant('erpx.tributos.fields_modalidade_bc_placeholder'),\n showClear: true,\n multiple: false,\n label: this.translate.instant('erpx.tributos.fields_modalidade_bc_label'),\n size: { sm: 12, md: 6, lg: 6, xl: 3 },\n onChange: (event: any) => {\n if (!event)\n return;\n this.backValue();\n this.setValidators(tributo);\n },\n errorMessages: () => ({\n required: this.translate.instant('erpx.tributos.fields_required_validator')\n }),\n required: () => this.setVariableRequired(tributo)\n }),\n );\n } else if (it.campo === EnumCampoTributo.NaturezaReceita) {\n formGroup = { ...formGroup, naturezaReceita: [{ value: undefined, disabled: false }, Validators.compose([])] };\n\n formField.push(\n new FormField({\n ...this.naturezaReceitaLookup.mountOptions({\n multiple: false,\n domain: this.dominio,\n service: this.servico,\n formGroup: 'naturezaReceita',\n lookupSort: [\n { field: 'codigo', order: 1 }\n ],\n searchSort: [\n { field: 'codigo', order: 1 }\n ],\n }),\n onBlur: () => {\n this.backValue();\n this.setValidators(tributo);\n },\n id: tributo + 'NaturezaReceita',\n label: this.translate.instant('erpx.tributos.fields_natureza_receita_label'),\n size: { sm: 12, md: 6, lg: 6, xl: 3 },\n required: () => false\n })\n );\n } else if (it.campo === EnumCampoTributo.Observacao) {\n formGroup = {\n ...formGroup, observacao: [{ value: undefined, disabled: false }, Validators.compose([\n Validators.maxLength(120)\n ])]\n };\n\n formField.push(\n new FormField({\n id: tributo + 'Observacao',\n name: 'observacao',\n label: this.translate.instant('erpx.tributos.fields_observacao_label'),\n type: FieldType.String,\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onBlur: () => {\n this.backValue();\n this.setValidators(tributo);\n },\n errorMessages: () => ({\n maxlength: this.translate.instant('erpx.tributos.fields_max_length_validator')\n }),\n required: () => false\n })\n );\n } else if (it.campo === EnumCampoTributo.ValorDeducao) {\n formGroup = {\n ...formGroup, valorDeducao: [{ value: undefined, disabled: false }, Validators.compose([\n Validators.max(9999999999999.99)\n ])]\n };\n\n formField.push(\n new FormField({\n id: tributo + 'valorDeducao',\n name: 'valorDeducao',\n label: this.translate.instant('erpx.tributos.fields_valor_deducao_label'),\n type: FieldType.Money,\n precision: 15,\n scale: 2,\n numberLocaleOptions: this.currencyLocaleOptions,\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onBlur: () => {\n this.backValue();\n this.setValidators(tributo);\n },\n required: () => false\n })\n );\n } else if (it.campo === EnumCampoTributo.IndicativoAquisicao) {\n formGroup = {\n ...formGroup,\n indicativoAquisicao: [\n { value: null, disabled: false },\n Validators.compose([])\n ]\n };\n\n formField.push(\n new FormField({\n id: tributo + 'IndicativoAquisicao',\n name: 'indicativoAquisicao',\n label: this.translate.instant(\n 'erpx.tributos.fields_indicativo_aquisicao_label'\n ),\n showClear: true,\n type: FieldType.Enum,\n options: [\n {\n value: EnumFunruralIndicativoAquisicao.V1,\n label: this.translate.instant(\n 'erpx.tributos.enum_funrural_indicativo_aquisicao_v1'\n )\n },\n {\n value: EnumFunruralIndicativoAquisicao.V2,\n label: this.translate.instant(\n 'erpx.tributos.enum_funrural_indicativo_aquisicao_v2'\n )\n },\n {\n value: EnumFunruralIndicativoAquisicao.V3,\n label: this.translate.instant(\n 'erpx.tributos.enum_funrural_indicativo_aquisicao_v3'\n )\n },\n {\n value: EnumFunruralIndicativoAquisicao.V4,\n label: this.translate.instant(\n 'erpx.tributos.enum_funrural_indicativo_aquisicao_v4'\n )\n },\n {\n value: EnumFunruralIndicativoAquisicao.V5,\n label: this.translate.instant(\n 'erpx.tributos.enum_funrural_indicativo_aquisicao_v5'\n )\n },\n {\n value: EnumFunruralIndicativoAquisicao.V6,\n label: this.translate.instant(\n 'erpx.tributos.enum_funrural_indicativo_aquisicao_v6'\n )\n },\n {\n value: EnumFunruralIndicativoAquisicao.V7,\n label: this.translate.instant(\n 'erpx.tributos.enum_funrural_indicativo_aquisicao_v7'\n )\n }\n ],\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onChange: () => {\n this.backValue();\n this.setValidators(tributo);\n }\n })\n );\n } else if (it.campo === EnumCampoTributo.CodigoArrecadacao) {\n formGroup = {\n ...formGroup, codigoArrecadacao: [{ value: undefined, disabled: false }, Validators.compose([\n Validators.maxLength(6)\n ])]\n };\n\n formField.push(\n new FormField({\n id: tributo + 'CodigoArrecadacao',\n name: 'codigoArrecadacao',\n label: this.translate.instant('erpx.tributos.fields_codigo_arrecadacao_label'),\n type: FieldType.String,\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onBlur: () => {\n this.backValue();\n this.setValidators(tributo);\n },\n errorMessages: () => ({\n maxlength: this.translate.instant('erpx.tributos.fields_max_length_validator')\n }),\n required: () => false,\n })\n );\n } else if (it.campo === EnumCampoTributo.CodigoTributacao) {\n formGroup = {\n ...formGroup, codigoTributacao: [{ value: undefined, disabled: false }, Validators.compose([\n Validators.maxLength(5)\n ])]\n };\n\n formField.push(\n new FormField({\n id: tributo + 'CodigoTributacao',\n name: 'codigoTributacao',\n label: this.translate.instant('erpx.tributos.fields_codigo_tributacao_label'),\n type: FieldType.String,\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onBlur: () => {\n this.backValue();\n this.setValidators(tributo);\n },\n errorMessages: () => ({\n maxlength: this.translate.instant('erpx.tributos.fields_max_length_validator')\n }),\n required: () => false,\n })\n );\n } else if (it.campo == EnumCampoTributo.ImpostoNaoRecuperado) {\n formGroup = {\n ...formGroup,\n ImpostoNaoRecuperado: [\n {\n value: undefined,\n disabled: false\n }, Validators.compose([Validators.max(9999999999999.99)])\n ]\n };\n\n formField.push(\n new FormField({\n id: tributo + 'ImpostoNaoRecuperado',\n name: 'ImpostoNaoRecuperado',\n label: this.translate.instant('erpx.tributos.fields_imposto_nao_recuperado'),\n type: FieldType.Money,\n precision: 15,\n scale: 2,\n numberLocaleOptions: this.currencyLocaleOptions,\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onBlur: () => {\n this.backValue();\n this.setValidators(tributo);\n }\n })\n );\n } else if (it.campo == EnumCampoTributo.baseCalculoCredito) {\n formGroup = { ...formGroup, baseCalculoCredito: [{ value: undefined, disabled: false }] };\n formField.push(\n new FormField({\n id: tributo + 'baseCalculoCredito',\n name: 'baseCalculoCredito',\n type: FieldType.Enum,\n options: [\n { label: this.translate.instant('erpx.tributos.enum_tip_cred_recup_v_1'), value: enumTipCredRecup.V1 },\n { label: this.translate.instant('erpx.tributos.enum_tip_cred_recup_v_2'), value: enumTipCredRecup.V2 },\n { label: this.translate.instant('erpx.tributos.enum_tip_cred_recup_v_3'), value: enumTipCredRecup.V3 },\n { label: this.translate.instant('erpx.tributos.enum_tip_cred_recup_v_4'), value: enumTipCredRecup.V4 },\n { label: this.translate.instant('erpx.tributos.enum_tip_cred_recup_v_5'), value: enumTipCredRecup.V5 },\n { label: this.translate.instant('erpx.tributos.enum_tip_cred_recup_v_6'), value: enumTipCredRecup.V6 },\n { label: this.translate.instant('erpx.tributos.enum_tip_cred_recup_v_7'), value: enumTipCredRecup.V7 },\n { label: this.translate.instant('erpx.tributos.enum_tip_cred_recup_v_8'), value: enumTipCredRecup.V8 },\n { label: this.translate.instant('erpx.tributos.enum_tip_cred_recup_v_9'), value: enumTipCredRecup.V9 },\n { label: this.translate.instant('erpx.tributos.enum_tip_cred_recup_v_10'), value: enumTipCredRecup.V10 },\n { label: this.translate.instant('erpx.tributos.enum_tip_cred_recup_v_11'), value: enumTipCredRecup.V11 },\n { label: this.translate.instant('erpx.tributos.enum_tip_cred_recup_v_12'), value: enumTipCredRecup.V12 },\n { label: this.translate.instant('erpx.tributos.enum_tip_cred_recup_v_13'), value: enumTipCredRecup.V13 },\n { label: this.translate.instant('erpx.tributos.enum_tip_cred_recup_v_14'), value: enumTipCredRecup.V14 },\n { label: this.translate.instant('erpx.tributos.enum_tip_cred_recup_v_15'), value: enumTipCredRecup.V15 },\n { label: this.translate.instant('erpx.tributos.enum_tip_cred_recup_v_16'), value: enumTipCredRecup.V16 },\n { label: this.translate.instant('erpx.tributos.enum_tip_cred_recup_v_17'), value: enumTipCredRecup.V17 },\n { label: this.translate.instant('erpx.tributos.enum_tip_cred_recup_v_18'), value: enumTipCredRecup.V18 },\n ],\n placeholder: this.translate.instant('erpx.tributos.fields_base_calculo_credito_placeholder'),\n showClear: true,\n multiple: false,\n label: this.translate.instant('erpx.tributos.fields_base_calculo_credito_label'),\n size: { sm: 12, md: 6, lg: 6, xl: 3 },\n onChange: (event: any) => {\n if (!event)\n return;\n this.backValue();\n this.setValidators(tributo);\n },\n required: false\n }),\n );\n } else if (it.campo === EnumCampoTributo.RegimeTributarioPisCofins) {\n formGroup = { ...formGroup, regimeTributarioPisCofins: [{ value: undefined, disabled: false }, Validators.compose([])] };\n\n formField.push(\n new FormField({\n id: tributo + 'regimeTributarioPisCofins',\n name: 'regimeTributarioPisCofins',\n type: FieldType.Enum,\n options: [\n {\n label: this.translate.instant('erpx.tributos.enum_reg_tribut_pis_cofins_cumulativo'),\n value: EnumRegimeTributarioPisCofins.CUMULATIVO\n },\n {\n label: this.translate.instant('erpx.tributos.enum_reg_tribut_pis_cofins_nao_cumulativo'),\n value: EnumRegimeTributarioPisCofins.NAO_CUMULATIVO\n }\n ],\n placeholder: this.translate.instant('erpx.tributos.fields_regime_tributario_pis_cofins_placeholder'),\n showClear: true,\n multiple: false,\n label: this.translate.instant('erpx.tributos.fields_regime_tributario_pis_cofins_label'),\n size: { sm: 12, md: 6, lg: 6, xl: 3 },\n onChange: (event: any) => {\n if (!event)\n return;\n this.backValue();\n this.setValidators(tributo);\n },\n required: () => false\n }),\n );\n } else if (it.campo == EnumCampoTributo.PercentualSuspensaoParcial) {\n formGroup = { ...formGroup, percentualSuspensaoParcial: [{ value: null, disabled: false }, Validators.compose([Validators.max(100)])] };\n\n formField.push(\n new FormField({\n id: tributo + 'percentualSuspensaoParcial',\n name: 'percentualSuspensaoParcial',\n label: this.translate.instant('erpx.tributos.fields_percentual_suspensao_parcial_label'),\n type: FieldType.Money,\n precision: 7,\n scale: 4,\n numberLocaleOptions: { currencySymbol: '%', decimalSeparator: ',', thousandsSeparator: '.' },\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onBlur: () => {\n this.backValue();\n this.setValidators(tributo);\n },\n errorMessages: () => ({\n max: this.translate.instant('erpx.tributos.fields_max_validator', { value: 100 })\n }),\n required: () => this.setVariableRequired(tributo)\n })\n );\n }\n });\n\n if (this.sugestoes) {\n this.sugestoes\n .filter(sugestao => sugestao.tipoTributo === tributo)\n .forEach(sugestao => {\n Object\n .entries(sugestao)\n .filter(atributos => atributos[0] !== 'tipoTributo')\n .forEach(atributos => {\n formGroup[atributos[0]][0].value = atributos[1];\n });\n });\n }\n\n formGroup = { ...formGroup, impostoManual: [{ value: undefined, disabled: false }, Validators.compose([])] };\n retorno.formField = formField;\n retorno.formGroup = this.formBuilder.group({\n ...formGroup\n });\n\n return retorno;\n }\n\n private setSubs(item: Item) {\n Object\n .entries(item.formGroup.controls)\n .forEach(control => {\n const [controlName, controlObject] = control;\n if (controlName !== 'impostoManual' && !item.formGroup.controls.impostoManual.value) {\n const formField = item.formField.find(field => field.name === controlName);\n controlObject\n .valueChanges\n .pipe(\n switchMap(val => this.getFormControlSubscriptionValue(val, formField instanceof LookupField, `${item.name}_${formField.name}`)),\n takeUntil(this.ngUnsubscribe)\n )\n .subscribe((val: LookupRequestValidator) => {\n if (!val.cancelSubscription) {\n item.formGroup.controls.impostoManual.patchValue(true);\n this.setImpostoManualGroup();\n }\n });\n }\n });\n }\n\n private getFormControlSubscriptionValue(fieldValue: any, isFieldLookup: boolean, fieldIdentifier: string): Observable<LookupRequestValidator> {\n if (isFieldLookup) {\n return this.lookupUtils.getValidatedRepeatedLookupValues(fieldValue, fieldIdentifier);\n }\n return of({\n cancelSubscription: false,\n value: fieldValue\n });\n }\n\n private storageValuesOnLookupValidator(item: Item): void {\n Object\n .entries(item.formGroup.controls)\n .forEach(control => {\n const [controlName, controlObject] = control;\n const formField = item.formField.find(field => field.name === controlName);\n if (formField) {\n this.getFormControlSubscriptionValue(controlObject.value, formField instanceof LookupField, `${item.name}_${formField.name}`);\n }\n });\n }\n\n private setImpostoManualGroup() {\n if (this.grupos && this.grupos != undefined && this.grupos.length > 0) {\n this.grupos\n .filter((it: any) => (it.grupo == 'erpx.tributos.enum_grupo_tributo_' + EnumGrupoTributo.ICMS + '_label')\n || (it.grupo == 'erpx.tributos.enum_grupo_tributo_' + EnumGrupoTributo.ICMS_ST + '_label')\n || (it.grupo == 'erpx.tributos.enum_grupo_tributo_' + EnumGrupoTributo.PIS + '_label')\n || (it.grupo == 'erpx.tributos.enum_grupo_tributo_' + EnumGrupoTributo.COFINS + '_label')\n || (it.grupo == 'erpx.tributos.enum_grupo_tributo_' + EnumGrupoTributo.RETENCOES + '_label')\n || (it.grupo == 'erpx.tributos.enum_grupo_tributo_' + EnumGrupoTributo.FUNRURAL + '_label')\n || (it.grupo == 'erpx.tributos.enum_grupo_tributo_' + EnumGrupoTributo.ISS + '_label')\n || (it.grupo == 'erpx.tributos.enum_grupo_tributo_' + EnumGrupoTributo.CIDE_TECNOLOGIA + '_label')\n || (it.grupo == 'erpx.tributos.enum_grupo_tributo_' + EnumGrupoTributo.IPI + '_label'))\n .map(grupo => grupo.item.map(\n (item: any) => {\n if (item.formGroup.controls.impostoManual.value == true) {\n grupo.item.map(\n (it: any) => {\n it.formGroup.controls.impostoManual.patchValue(true);\n }\n );\n }\n })\n );\n }\n }\n\n private filterByImposto(imposto: EnumTipoTributo): string {\n if (imposto) {\n switch (imposto) {\n case EnumTipoTributo.PIS:\n return 'PIS_COFINS';\n case EnumTipoTributo.IPI:\n return 'IPI';\n case EnumTipoTributo.ICMS:\n return 'ICMS';\n case EnumTipoTributo.COFINS:\n return 'PIS_COFINS';\n default:\n return 'PIS_COFINS';\n }\n }\n }\n\n private getLabelAliquota(tributo: EnumTipoTributo) {\n if (tributo == EnumTipoTributo.ICMS_UF_DESTINO || tributo == EnumTipoTributo.ICMS_UF_DESTINO_DEVOLVIDO)\n return this.translate.instant('erpx.tributos.fields_aliquota_interestadual_label');\n\n return this.translate.instant('erpx.tributos.fields_aliquota_label');\n }\n\n public getTranslateButton(value: any) {\n let translate = '.button_memoria_calculo_empty_label';\n if (this.idsTaxesMemoriaCalculo.find((element: any) => { return element.tipoTributo == value && element.idParametro != undefined })) {\n translate = '.button_memoria_calculo_label';\n }\n\n return this.prefixLabel + translate;\n }\n\n isGroupInvalid(group: {\n grupo: string;\n item: {\n formField: FormField[];\n formGroup: FormGroup;\n label: string;\n name: string;\n }[];\n }): boolean {\n return group?.item?.some((item) => item?.formGroup?.invalid);\n }\n}\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { TranslateModule } from \"@ngx-translate/core\";\r\nimport { ErpLookupsModule, LookupValidationUtils } from \"@senior-gestao-empresarial/angular-components\";\r\nimport { ButtonModule, DynamicFormModule, LoadingStateModule } from \"@seniorsistemas/angular-components\";\r\nimport { AccordionModule } from \"primeng/accordion\";\r\nimport { FocusService } from \"../focus/focus.service\";\r\nimport { ErpTributosComponent } from \"./erp-tributos.component\";\r\nimport { ErpTributosService } from \"./erp-tributos.service\";\r\n\r\n@NgModule({\r\n declarations: [ErpTributosComponent],\r\n imports: [CommonModule, TranslateModule, ButtonModule, AccordionModule, DynamicFormModule, ErpLookupsModule, LoadingStateModule],\r\n providers: [ErpTributosService, FocusService, LookupValidationUtils],\r\n exports: [ErpTributosComponent],\r\n})\r\nexport class ErpTributosModule {}\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { TranslateService } from '@ngx-translate/core';\nimport { MessageService, SortMeta } from 'primeng/api';\nimport { throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\n\nexport class EntityService<T> {\n constructor(\n protected http: HttpClient,\n protected translateService: TranslateService,\n protected messageService: MessageService,\n protected entityUrl: string,\n protected entityAction?: string\n ) {\n this.http = http;\n this.translateService = translateService;\n this.messageService = messageService;\n this.entityUrl = entityUrl;\n\n this.defaultCatch = this.defaultCatch.bind(this);\n }\n\n public getListQueryParams(listParams: ListParams) {\n const { page = 0, size = 10, sort = [], filterQuery = '', displayFields = [] } = listParams;\n\n let params = new HttpParams();\n params = params.append('size', String(size));\n params = params.append('offset', String(page));\n\n if (sort && sort.length) {\n params = params.append(\n 'orderby',\n sort\n .map((s) => {\n let order = '';\n if (s.order === 1) order = ' asc';\n else if (s.order === -1) order = ' desc';\n return `${s.field}${order}`;\n })\n .join(', ')\n );\n }\n\n if (filterQuery) params = params.append('filter', filterQuery);\n\n if (displayFields && displayFields.length) {\n params = params.append('displayfields', displayFields.join());\n }\n\n return params;\n }\n\n public defaultCatch(): any {\n return catchError((err: any) => {\n if (err) {\n if (err.status === 401) {\n const summary = this.translateService.instant('erpx_com_ven.pedido.error_unauthorized_title');\n const detail = this.translateService.instant('erpx_com_ven.pedido.error_unauthorized_description');\n\n this.messageService.add({\n severity: 'error',\n summary,\n detail,\n sticky: true\n });\n } else {\n const summary = err.status ? String(err.status) : 'Error';\n const detail =\n (err.error && err.error.message) || err.statusText || err.message || 'Error';\n\n this.messageService.add({\n severity: 'error',\n summary,\n detail,\n sticky: true\n });\n }\n }\n\n return throwError(err);\n });\n }\n\n public list(listParams: ListParams) {\n return this.http\n .get<T[]>(this.entityUrl, { params: this.getListQueryParams(listParams) })\n .pipe(this.defaultCatch());\n }\n\n public get(id: any, displayFields?: string) {\n if (displayFields) {\n return this.http.get<T>(`${this.entityUrl}/${id}?displayfields=${displayFields}`).pipe(this.defaultCatch());\n }\n return this.http.get<T>(`${this.entityUrl}/${id}`).pipe(this.defaultCatch());\n }\n\n public insert(entity: T) {\n return this.http.post<T>(`${this.entityUrl}`, entity).pipe(this.defaultCatch());\n }\n\n public update(id: any, entity: T) {\n return this.http.put<T>(`${this.entityUrl}/${id}`, entity).pipe(this.defaultCatch());\n }\n\n public delete(id: any) {\n return this.http.delete<T>(`${this.entityUrl}/${id}`).pipe(this.defaultCatch());\n }\n}\n\nexport interface ListParams {\n page?: number;\n size?: number;\n sort?: SortMeta[];\n filterQuery?: string;\n displayFields?: string[];\n}\n\nexport interface TotalElements {\n totalElements: number;\n}\n\nexport class LookupForm {\n id?: string;\n label?: string;\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { MessageService } from 'primeng/api';\nimport { TranslateService } from '@ngx-translate/core';\nimport { QuantidadeDisponivelDemandaDto } from './quantidade-disponivel-demanda-dto';\nimport { EntityService } from '../entity-service';\n\n@Injectable()\nexport class QuantidadeDisponivelDemandaService extends EntityService<QuantidadeDisponivelDemandaDto> {\n constructor(protected http: HttpClient, protected translateService: TranslateService, protected messageService: MessageService) {\n super(\n http,\n translateService,\n messageService,\n `erpx_sup/demandas/entities/quantidadeDisponivelDemanda`,\n `erpx_sup/demandas/actions`\n );\n }\n}\n","import { NgModule } from '@angular/core';\nimport { PermissionsModule } from '@seniorsistemas/platform-components';\nimport { QuantidadeDisponivelDemandaService } from './quantidade-disponivel-demanda.service';\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: 'quantidadeDisponivelDemanda',\n actions: ['Visualizar', 'Incluir', 'Editar', 'Excluir'],\n uri: `res://senior.com.br/erpx_sup/demandas/entities/quantidadeDisponivelDemanda`,\n },\n ]),\n ],\n providers: [QuantidadeDisponivelDemandaService],\n declarations: [],\n exports: [],\n})\nexport class QuantidadeDisponivelDemandaModule {}\n","export enum EnumTipoDocumentoParametros {\r\n PedidoVenda = 'PedidoVenda',\r\n AnaliseReposicao = 'AnaliseReposicao',\r\n RequisicaoMateriais = 'RequisicaoMateriais',\r\n DemandaDependente = 'DemandaDependente',\r\n AcertoInventario = 'AcertoInventario',\r\n}\r\n","import { HttpClient, HttpParams } from \"@angular/common/http\";\nimport { catchError, take } from \"rxjs/operators\";\nimport { Observable, throwError } from \"rxjs\";\nimport { MessageService } from \"primeng/api\";\nimport { Injectable } from \"@angular/core\";\nimport { SortMeta } from \"primeng/api\";\n\nexport interface ObterNecessidadesInput {\n e070empId?: string;\n e070filId?: string;\n e012famId?: string[];\n itensId?: string[];\n tipo?: string;\n documentoId?: string;\n dataInicial?: string;\n dataFinal?: string;\n situacao?: string[];\n numeroDocumentoPai?: string[];\n codigoDemanda?: number;\n somenteUrgentes?: boolean;\n pageRequest?: {\n offset?: number;\n size?: number;\n orderyBy?: [\n {\n field: string;\n order: string;\n }\n ];\n };\n}\n\nexport interface ObterNecessidadesOutput {\n total: number;\n necessidades: {\n documento: {\n id: string;\n e070emp: {\n id: string;\n codigo: number;\n descricao: string;\n label: string;\n };\n e070fil: {\n id: string;\n codigo: number;\n descricao: string;\n label: string;\n };\n idExterno: string;\n numeroDocumento: string;\n tipoDocumento: string;\n numeroDocumentoPai: number;\n };\n filial: {\n id: string;\n codigo: number;\n descricao: string;\n label: string;\n };\n id: string;\n item: {\n id: string;\n codigo: string;\n descricao: string;\n label: string;\n tipoItem: string;\n unidadeMedida: {\n id: string;\n uniMed: string;\n desMed: string;\n qtdDec: number;\n familia: {\n id: string;\n codigo: string;\n descricao: string;\n label: string;\n };\n };\n quantidadeOriginal: number;\n quantidadePlanejada: number;\n quantidadeAtendida: number;\n dataEntregaPrevista: string;\n situacao: string;\n demanda: {\n id: string;\n codigo: number;\n empresa: string;\n filial: string;\n quantidade: number;\n dataEntregaPrevista: string;\n documento: string;\n situacao: string;\n realizarReserva: boolean;\n };\n };\n }[];\n}\nexport interface GetUrlInput {\n identifiers: {\n domainName: string;\n serviceName: string;\n appName: string;\n route: string;\n }[];\n}\n\nexport interface GetUrlOutput {\n frontends: {\n appName: string;\n currentVersion: string;\n domainName: string;\n embeddedURL: string;\n route: string;\n serviceName: string;\n url: string;\n }[];\n}\n\n@Injectable()\nexport class ErpLoteSeriesService {\n constructor(protected http: HttpClient, protected messageService: MessageService) {}\n\n private foundationEntitiesUrl = \"erpx_sup/foundation/entities\";\n private supEntitiesUrl = \"erpx_sup/estoque/entities\";\n private queryUrl = \"erpx_sup/estoque/queries\";\n\n public getProductFamily(productID: string) {\n return this.http.get(`${this.foundationEntitiesUrl}/e075der/${productID}`).pipe(this.defaultCatch());\n }\n\n public getProductFamilySupplyInfo(familyID: string) {\n const filter = `id eq '${familyID}'`;\n return this.http\n .get(`${this.foundationEntitiesUrl}/e012famSupGer`, { params: { filter, displayfields: \"ctrVld\" } })\n .pipe(this.defaultCatch());\n }\n\n public listBatch(params: any) {\n return this.http.post(`${this.queryUrl}/consultarSaldoPorLote`, params).pipe(this.defaultCatch());\n }\n\n public listSeries(params: any) {\n return this.http.post(`${this.queryUrl}/consultarSaldoPorSerie`, params).pipe(this.defaultCatch());\n }\n\n public getBatch(listParams: ListParams) {\n return this.http.get(`${this.supEntitiesUrl}/e200lot`, { params: this.getListQueryParams(listParams) }).pipe(this.defaultCatch());\n }\n\n public getSerie(listParams: ListParams) {\n return this.http.get(`${this.supEntitiesUrl}/e200ser`, { params: this.getListQueryParams(listParams) }).pipe(this.defaultCatch());\n }\n\n public consultarSaldoEstoque(balancePayload: any) {\n return this.http.post(`${this.queryUrl}/consultarSaldoEstoque`, balancePayload);\n }\n\n public defaultCatch(): any {\n return catchError((err: any) => {\n if (err) {\n const summary = err.status ? String(err.status) : \"Error\";\n const detail = (err.error && err.error.message) || err.statusText || err.message || \"Error\";\n\n this.messageService.add({\n severity: \"error\",\n summary,\n detail,\n });\n }\n\n return throwError(err);\n });\n }\n\n public getListQueryParams(listParams: ListParams) {\n const { page = 0, size = 10, sort = [], filterQuery = \"\", displayFields = [] } = listParams;\n\n let params = new HttpParams();\n params = params.append(\"size\", String(size));\n params = params.append(\"offset\", String(page));\n\n if (sort && sort.length) {\n params = params.append(\n \"orderby\",\n sort\n .map(s => {\n let order = \"\";\n if (s.order === 1) order = \" asc\";\n else if (s.order === -1) order = \" desc\";\n return `${s.field}${order}`;\n })\n .join(\", \")\n );\n }\n\n if (filterQuery) params = params.append(\"filter\", filterQuery);\n\n if (displayFields && displayFields.length) {\n params = params.append(\"displayfields\", displayFields.join());\n }\n\n return params;\n }\n\n public getUrl(getUrlInput: GetUrlInput) {\n const url = `platform/frontend_updater/queries/getFrontend`;\n return this.http.post<any>(url, getUrlInput).pipe(this.defaultCatch());\n }\n\n public obterNecessidades(obterNecessidadesInput: ObterNecessidadesInput): Observable<ObterNecessidadesOutput> {\n const url = `erpx_sup/demandas/queries/obterNecessidades`;\n return this.http.post(url, obterNecessidadesInput).pipe(this.defaultCatch());\n }\n}\n\nexport interface ListParams {\n page?: number;\n size?: number;\n sort?: SortMeta[];\n filterQuery?: string;\n displayFields?: string[];\n}\n","import { Component, Input, OnChanges } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { E210DxpLookup, EnumLogicalOperator } from '@senior-gestao-empresarial/angular-components';\nimport { EnumColumnFieldType, FieldType, FormField } from '@seniorsistemas/angular-components';\nimport * as moment from 'moment';\nimport { MessageService } from 'primeng/api';\nimport { Subject } from 'rxjs';\nimport { first, map, takeUntil } from 'rxjs/operators';\nimport {\n QuantidadeDisponivelDemanda\n} from '../../core/entities/quantidade-disponivel-demanda/quantidade-disponivel-demanda';\nimport {\n QuantidadeDisponivelDemandaService\n} from '../../core/entities/quantidade-disponivel-demanda/quantidade-disponivel-demanda.service';\nimport { EnumTipoDocumentoParametros } from '../../core/enums/enum-tipo-documento-parametros';\nimport { ErpLoteSeriesService, GetUrlInput, GetUrlOutput, ListParams } from './erp-lote-serie.service';\nimport { isNotEmpty, isEmpty } from \"../utils/utils\";\nimport { compare } from \"@seniorsistemas/platform-components/modules/advanced-filter/utils/comparator\";\n\n@Component({\n selector: 'erp-lote-serie',\n templateUrl: './erp-lote-serie.component.html'\n})\n\nexport class ErpLoteSerieComponent implements OnChanges {\n\n public readonly EnumTipoMovimentacao = EnumTipoMovimentacao;\n\n public gridData: any = [];\n public selection: any = [];\n public gridColumns: any[];\n public localeConfig: any = {};\n public locale: any = {};\n\n @Input() loteSerieParams: LoteSerieParams;\n @Input() blockedFields = false;\n @Input() showHeader = true;\n @Input() validateInvalidChars = false;\n\n private e200lotLookupSuggestionsObservable = new Subject<any>();\n private e200lotlookupSearchObservable = new Subject<any>();\n private e200serLookupSuggestionsObservable = new Subject<any>();\n private e200serlookupSearchObservable = new Subject<any>();\n private ngUnsubscribe = new Subject<any>();\n\n private quantidadeDisponivelDemandaLookupSuggestionsObservable = new Subject<QuantidadeDisponivelDemanda>();\n private quantidadeDisponivelDemandalookupSearchObservable = new Subject<QuantidadeDisponivelDemanda>();\n\n public formGroupBatchOrSeries: FormGroup;\n public batchOrSeriesFields: any[];\n public loteLookupDisplayFields = [ 'e200lot.codLote' ];\n public serieLookupDisplayFields = [ 'e200ser.numSep' ];\n\n public titleLoteOrSerie: string;\n public titleGridLoteOrSerie: string;\n public isSerie = false;\n public qtdAdistribuir = 0;\n public qtdDistribuida = 0;\n public qtdRestante = 0;\n public maxLength = 50;\n public obrigaValidade = false;\n public isSaida = false;\n public disableDataValidade = false;\n public prefix = 'erpx.lote_serie.';\n\n constructor(\n private translate: TranslateService,\n private route: ActivatedRoute,\n private e210DxpLookup: E210DxpLookup,\n private formBuilder: FormBuilder,\n private messageService: MessageService,\n private batchSeriesService: ErpLoteSeriesService,\n private quantidadeDisponivelDemandaService: QuantidadeDisponivelDemandaService\n ) {\n }\n\n ngOnChanges() {\n if (this.loteSerieParams) {\n this.route.data.pipe(takeUntil(this.ngUnsubscribe)).subscribe((data: any) => this.onRouteDataChange(data));\n this.formGroupBatchOrSeries = this.getFormGroupDados();\n this.validaDados();\n this.gridColumns = this.getGridColumns();\n }\n\n if (this.blockedFields == true)\n this.formGroupBatchOrSeries.disable();\n\n this.formGroupBatchOrSeries.controls.lote.valueChanges.subscribe(value => {\n if (value) {\n if (this.validateInvalidChars && /\\t|\\r|\\n/g.exec(value)) {\n this.formGroupBatchOrSeries.controls.lote.setErrors({ 'existsInvalidChar': true });\n return;\n }\n }\n });\n\n this.formGroupBatchOrSeries.controls.serie.valueChanges.subscribe(value => {\n if (value) {\n if (this.validateInvalidChars && /\\t|\\r|\\n/g.exec(value)) {\n this.formGroupBatchOrSeries.controls.serie.setErrors({ 'existsInvalidChar': true });\n return;\n }\n }\n });\n }\n\n private validaDados() {\n\n this.processFamilySupplyInfo(this.loteSerieParams.dadosProduto.e012fam);\n\n if (this.loteSerieParams.tipoControleProduto == 'Serie') {\n this.titleLoteOrSerie = this.translate.instant(`${ this.prefix }serie_title`);\n this.titleGridLoteOrSerie = this.translate.instant(`${ this.prefix }serie_title_grid`);\n this.isSerie = true;\n\n } else {\n this.titleLoteOrSerie = this.translate.instant(`${ this.prefix }lote_title`);\n this.titleGridLoteOrSerie = this.translate.instant(`${ this.prefix }lote_title_grid`);\n this.isSerie = false;\n }\n\n if (this.loteSerieParams.tipoMovimentacao == 'Entrada') {\n this.batchOrSeriesFields = this.getFieldsEntrada();\n\n if (this.isSerie) {\n this.formGroupBatchOrSeries.controls.serie.clearValidators();\n this.formGroupBatchOrSeries.controls.serie.setValidators([\n Validators.required, Validators.maxLength(50)\n ]);\n this.formGroupBatchOrSeries.controls.serie.updateValueAndValidity({ emitEvent: false });\n\n } else {\n this.formGroupBatchOrSeries.controls.lote.clearValidators();\n this.formGroupBatchOrSeries.controls.quantidade.clearValidators();\n\n this.formGroupBatchOrSeries.controls.lote.setValidators([\n Validators.required, Validators.maxLength(50)\n ]);\n\n this.formGroupBatchOrSeries.controls.quantidade.setValidators([\n Validators.required\n ]);\n\n this.formGroupBatchOrSeries.controls.lote.updateValueAndValidity({ emitEvent: false });\n this.formGroupBatchOrSeries.controls.quantidade.updateValueAndValidity({ emitEvent: false });\n }\n\n this.formGroupBatchOrSeries.controls.bulkVisible.valueChanges.subscribe(value => {\n if (value) {\n this.formGroupBatchOrSeries.controls.batchSerieBulk.setValidators([ Validators.required ]);\n this.formGroupBatchOrSeries.controls.batchSerieBulk.updateValueAndValidity({ emitEvent: false });\n return;\n }\n this.formGroupBatchOrSeries.controls.batchSerieBulk.clearValidators();\n this.formGroupBatchOrSeries.controls.batchSerieBulk.updateValueAndValidity({ emitEvent: false });\n });\n\n } else {\n this.isSaida = true;\n\n if (this.isSerie) {\n this.formGroupBatchOrSeries.controls.serie.clearValidators();\n this.formGroupBatchOrSeries.controls.serie.setValidators([ Validators.required ]);\n this.formGroupBatchOrSeries.controls.serie.updateValueAndValidity({ emitEvent: false });\n } else {\n this.formGroupBatchOrSeries.controls.lote.clearValidators();\n this.formGroupBatchOrSeries.controls.lote.setValidators([ Validators.required ]);\n this.formGroupBatchOrSeries.controls.lote.updateValueAndValidity({ emitEvent: false });\n this.formGroupBatchOrSeries.controls.quantidade.clearValidators();\n this.formGroupBatchOrSeries.controls.quantidade.setValidators([ Validators.required ]);\n this.formGroupBatchOrSeries.controls.quantidade.updateValueAndValidity({ emitEvent: false });\n }\n this.batchOrSeriesFields = this.getFieldsSaida();\n this.formGroupBatchOrSeries.controls.dataFabricacao.disable();\n this.formGroupBatchOrSeries.controls.dataValidade.disable();\n }\n\n this.formGroupBatchOrSeries.controls.dataFabricacao.valueChanges.subscribe(val => {\n if (val) {\n this.formGroupBatchOrSeries.controls.dataValidade.clearValidators();\n this.formGroupBatchOrSeries.controls.dataValidade.setValidators([]);\n this.formGroupBatchOrSeries.controls.dataValidade.updateValueAndValidity({ emitEvent: false });\n } else {\n this.formGroupBatchOrSeries.controls.dataValidade.clearValidators();\n this.formGroupBatchOrSeries.controls.dataValidade.updateValueAndValidity({ emitEvent: false });\n }\n\n });\n\n this.qtdDistribuida = 0;\n this.qtdAdistribuir = this.loteSerieParams.quantidadeDistribuir;\n\n if (this.loteSerieParams.lotesOrSeries) {\n this.gridData = this.loteSerieParams.lotesOrSeries;\n this.qtdDistribuida = this.getQuantidadeDistribuida();\n this.qtdRestante = this.qtdAdistribuir - this.qtdDistribuida;\n } else {\n this.qtdRestante = this.qtdAdistribuir;\n }\n }\n\n private getFormGroupDados() {\n const formGroup = this.formBuilder.group({\n deposito: [ { value: undefined, disabled: false }, Validators.compose([]) ],\n lote: [ { value: undefined, disabled: false }, Validators.compose([]) ],\n dataValidade: [ { value: undefined, disabled: false }, Validators.compose([]) ],\n dataFabricacao: [ { value: undefined, disabled: false }, Validators.compose([]) ],\n serie: [ { value: undefined, disabled: false }, Validators.compose([]) ],\n saldo: [ { value: undefined, disabled: true }, Validators.compose([]) ],\n quantidade: [ { value: undefined, disabled: false }, Validators.compose([]) ],\n batchSerieBulk: [ { value: undefined, disabled: false }, Validators.compose([]) ],\n bulkVisible: [ { value: false, disabled: false }, Validators.compose([]) ],\n });\n\n return formGroup;\n }\n\n public getProp(obj: any, path: any) {\n return path.split('.').reduce((result: any, prop: any) => (result[prop] === undefined ? '' : result[prop]), obj);\n }\n\n private getFieldsEntrada() {\n\n let dadosFieldsEntrada: any[] = [];\n\n if (!this.loteSerieParams.dadosProduto.e205dep) {\n dadosFieldsEntrada = [\n new FormField({\n ...this.e210DxpLookup.mountOptions({\n multiple: false,\n domain: 'erpx_sup',\n service: 'estoque',\n formGroup: 'deposito',\n searchFields: [\n { name: 'e205dep.codDep', type: FieldType.String }, {\n name: 'e205dep.desDep',\n type: FieldType.String\n },\n { name: 'e205dep.abrDep', type: FieldType.String }, {\n name: 'e205dep.e070fil.codFil',\n type: FieldType.Integer\n }\n ],\n\n searchGridFields: [\n { name: 'e205dep.codDep', type: FieldType.String }, {\n name: 'e205dep.desDep',\n type: FieldType.String\n },\n { name: 'e205dep.abrDep', type: FieldType.String }, {\n name: 'e205dep.e070fil.codFil',\n type: FieldType.Integer\n },\n { name: 'e205dep.e070fil.nomFil', type: FieldType.String }\n ],\n\n defaultFilter: [ { field: 'excluido', operator: EnumLogicalOperator.Eq, values: [ 'false' ] },\n {\n field: 'e070emp.id',\n operator: EnumLogicalOperator.Eq,\n values: [ this.loteSerieParams.dadosProduto.e070emp ]\n },\n { field: 'sitEst', operator: EnumLogicalOperator.Eq, values: [ 'VA' ] },\n { field: 'e205dep.sitDep', operator: EnumLogicalOperator.Eq, values: [ 'VA' ] },\n {\n field: 'e075der.id',\n operator: EnumLogicalOperator.Eq,\n values: [ this.loteSerieParams.dadosProduto.e075der ]\n } ]\n\n }),\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n visible: () => !this.formGroupBatchOrSeries.controls.bulkVisible.value,\n })\n ];\n }\n\n\n dadosFieldsEntrada.push(\n new FormField({\n name: 'bulkVisible',\n label: this.translate.instant(`${ this.prefix }bulk_visible`),\n size: { sm: 12, md: 4, lg: 4, xl: 12 },\n type: FieldType.Boolean,\n representedBy: \"switch\"\n }),\n new FormField({\n name: 'batchSerieBulk',\n label: this.translate.instant(`${ this.prefix }batch_serie_bulk`),\n size: { sm: 12, md: 4, lg: 4, xl: 6 },\n type: FieldType.Text,\n rows: 5,\n onBlur: (event: any) => this.onBlurValidaLoteorSerie(event.target.value),\n required: () => true,\n errorMessages: () => ({\n existsInvalidChar: this.translate.instant(`${ this.prefix }exists_invalid_char`)\n }),\n visible: () => this.formGroupBatchOrSeries.controls.bulkVisible.value\n }),\n new FormField({\n name: this.isSerie ? 'serie' : 'lote',\n label: this.isSerie ? this.translate.instant(`${ this.prefix }serie`) : this.translate.instant(`${ this.prefix }lote`),\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n type: FieldType.String,\n onBlur: (event: any) => this.onBlurValidaLoteorSerie(event.target.value),\n required: () => true,\n errorMessages: () => ({\n existsInvalidChar: this.translate.instant(`${ this.prefix }exists_invalid_char`)\n }),\n visible: () => !this.formGroupBatchOrSeries.controls.bulkVisible.value,\n }),\n new FormField({\n name: 'dataFabricacao',\n label: this.translate.instant(`${ this.prefix }data_fabricacao`),\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n type: FieldType.Date,\n appendTo: 'body',\n visible: () => !this.formGroupBatchOrSeries.controls.bulkVisible.value,\n }),\n new FormField({\n name: 'dataValidade',\n label: this.translate.instant(`${ this.prefix }data_validade`),\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n type: FieldType.Date,\n appendTo: 'body',\n required: () => this.obrigaValidade,\n visible: () => !this.formGroupBatchOrSeries.controls.bulkVisible.value,\n }),\n new FormField({\n name: 'saldo',\n label: this.translate.instant(`${ this.prefix }saldo`),\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n type: FieldType.Double,\n scale: this.loteSerieParams.dadosProduto.qtdDec,\n visible: () => !this.formGroupBatchOrSeries.controls.bulkVisible.value,\n }),\n );\n\n if (!this.isSerie) {\n dadosFieldsEntrada.push(\n new FormField({\n name: 'quantidade',\n label: this.translate.instant(`${ this.prefix }quantidade`),\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n type: FieldType.Double,\n scale: this.loteSerieParams.dadosProduto.qtdDec,\n required: () => true,\n onBlur: () => this.onBlurQuantity(),\n visible: () => !this.formGroupBatchOrSeries.controls.bulkVisible.value,\n }),\n );\n }\n\n return dadosFieldsEntrada;\n }\n\n private getFieldsSaida() {\n let dadosFieldsSaida: any[] = [];\n\n if (!this.loteSerieParams.dadosProduto.e205dep) {\n dadosFieldsSaida = [\n\n new FormField({\n ...this.e210DxpLookup.mountOptions({\n multiple: false,\n domain: 'erpx_sup',\n service: 'estoque',\n formGroup: 'deposito',\n searchFields: [\n { name: 'e205dep.codDep', type: FieldType.String }, {\n name: 'e205dep.desDep',\n type: FieldType.String\n },\n { name: 'e205dep.abrDep', type: FieldType.String }, {\n name: 'e205dep.e070fil.codFil',\n type: FieldType.Integer\n }\n ],\n\n searchGridFields: [\n { name: 'e205dep.codDep', type: FieldType.String }, {\n name: 'e205dep.desDep',\n type: FieldType.String\n },\n { name: 'e205dep.abrDep', type: FieldType.String }, {\n name: 'e205dep.e070fil.codFil',\n type: FieldType.Integer\n },\n { name: 'e205dep.e070fil.nomFil', type: FieldType.String }\n ],\n\n defaultFilter: [ { field: 'excluido', operator: EnumLogicalOperator.Eq, values: [ 'false' ] },\n {\n field: 'e070emp.id',\n operator: EnumLogicalOperator.Eq,\n values: [ this.loteSerieParams.dadosProduto.e070emp ]\n },\n { field: 'sitEst', operator: EnumLogicalOperator.Eq, values: [ 'VA' ] },\n { field: 'e205dep.sitDep', operator: EnumLogicalOperator.Eq, values: [ 'VA' ] },\n {\n field: 'e075der.id',\n operator: EnumLogicalOperator.Eq,\n values: [ this.loteSerieParams.dadosProduto.e075der ]\n } ]\n\n }),\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n }),\n ];\n }\n\n if (this.isSerie) {\n dadosFieldsSaida.push(\n new FormField({\n name: 'serie',\n label: this.translate.instant(`${ this.prefix }lookup_e200ser`),\n type: FieldType.Lookup,\n searchTitle: this.translate.instant(\n `${ this.prefix }lookup_e200ser_search_title`\n ),\n searchEmptyTitle: this.translate.instant(\n `${ this.prefix }nothing_found`\n ),\n filterLabel: this.translate.instant(`${ this.prefix }filter`),\n clearLabel: this.translate.instant(`${ this.prefix }clear`),\n cancelLabel: this.translate.instant(`${ this.prefix }cancel`),\n selectLabel: this.translate.instant(`${ this.prefix }select`),\n onSelect: (event: any) => {\n if (\n this.loteSerieParams?.invoiceInformation?.origin !==\n EnumInvoiceOrigin.V2\n )\n this.validaLoteorSerie(event);\n },\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onSearchRequest: (event: any) =>\n this.loteSerieParams?.invoiceInformation?.origin ===\n EnumInvoiceOrigin.V2\n ? this.onQuantidadeDisponivelDemandaRequest(event)\n : this.onE200SerSearchRequest(event),\n onLookupRequest: (value: string) =>\n this.loteSerieParams?.invoiceInformation?.origin ===\n EnumInvoiceOrigin.V2\n ? this.onQuantidadeDisponivelDemandaRequest(value)\n : this.onE200SerLookupRequest(value),\n suggestionsObservable:\n this.loteSerieParams?.invoiceInformation?.origin ===\n EnumInvoiceOrigin.V2\n ? this\n .quantidadeDisponivelDemandaLookupSuggestionsObservable\n : this.e200serLookupSuggestionsObservable,\n searchObservable:\n this.loteSerieParams?.invoiceInformation?.origin ===\n EnumInvoiceOrigin.V2\n ? this.quantidadeDisponivelDemandalookupSearchObservable\n : this.e200serlookupSearchObservable,\n lookupDisplayField: 'label',\n searchFields:\n this.loteSerieParams?.invoiceInformation?.origin ===\n EnumInvoiceOrigin.V2\n ? this.getQuantidadeDisponivelDemandaSearchFields()\n : this.getE200SerSearchFields(),\n searchGridFields:\n this.loteSerieParams?.invoiceInformation?.origin ===\n EnumInvoiceOrigin.V2\n ? this.getQuantidadeDisponivelDemandaSearchGridFields()\n : this.getE200SerSearchGridFields(),\n multiple:\n this.loteSerieParams?.invoiceInformation?.origin ===\n EnumInvoiceOrigin.V2,\n dataKey:\n this.loteSerieParams?.invoiceInformation?.origin ===\n EnumInvoiceOrigin.V2\n ? 'id'\n : 'e200ser.id',\n required: () => true\n }),\n\n new FormField({\n name: 'dataFabricacao',\n label: this.translate.instant(`${ this.prefix }data_fabricacao`),\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n type: FieldType.Date,\n appendTo: 'body',\n visible: () => !this.isDistributeSeriesButtonVisible()\n }),\n\n new FormField({\n name: 'dataValidade',\n label: this.translate.instant(`${ this.prefix }data_validade`),\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n type: FieldType.Date,\n appendTo: 'body',\n required: () => this.obrigaValidade,\n visible: () => !this.isDistributeSeriesButtonVisible()\n }),\n\n new FormField({\n name: 'saldo',\n label: this.translate.instant(`${ this.prefix }saldo`),\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n type: FieldType.Double,\n scale: this.loteSerieParams.dadosProduto.qtdDec,\n visible: () => !this.isDistributeSeriesButtonVisible()\n }),\n );\n } else {\n dadosFieldsSaida.push(\n new FormField({\n name: 'lote',\n label: this.translate.instant(`${ this.prefix }lookup_e200lot`),\n type: FieldType.Lookup,\n searchTitle: this.translate.instant(`${ this.prefix }lookup_e200lot_search_title`),\n searchEmptyTitle: this.translate.instant(`${ this.prefix }nothing_found`),\n filterLabel: this.translate.instant(`${ this.prefix }filter`),\n clearLabel: this.translate.instant(`${ this.prefix }clear`),\n cancelLabel: this.translate.instant(`${ this.prefix }cancel`),\n selectLabel: this.translate.instant(`${ this.prefix }select`),\n onSelect: (event: any) => this.validaLoteorSerie(event),\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n onSearchRequest: (event: any) => this.onE200LotSearchRequest(event),\n onLookupRequest: (value: string) => this.onE200LotLookupRequest(value),\n suggestionsObservable: this.e200lotLookupSuggestionsObservable,\n searchObservable: this.e200lotlookupSearchObservable,\n lookupDisplayField: 'label',\n searchFields: this.getE200LotSearchFields(),\n searchGridFields: this.getE200LotSearchGridFields(),\n required: () => true\n }),\n\n new FormField({\n name: 'dataFabricacao',\n label: this.translate.instant(`${ this.prefix }data_fabricacao`),\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n type: FieldType.Date,\n appendTo: 'body'\n }),\n\n new FormField({\n name: 'dataValidade',\n label: this.translate.instant(`${ this.prefix }data_validade`),\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n type: FieldType.Date,\n appendTo: 'body',\n required: () => this.obrigaValidade\n }),\n\n new FormField({\n name: 'saldo',\n label: this.translate.instant(`${ this.prefix }saldo`),\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n type: FieldType.Double,\n scale: this.loteSerieParams.dadosProduto.qtdDec\n }),\n\n new FormField({\n name: 'quantidade',\n label: this.translate.instant(`${ this.prefix }quantidade`),\n size: { sm: 12, md: 4, lg: 4, xl: 3 },\n type: FieldType.Double,\n scale: this.loteSerieParams.dadosProduto.qtdDec,\n required: () => true,\n onBlur: () => this.onBlurQuantity()\n }),\n );\n }\n return dadosFieldsSaida;\n }\n\n private getGridColumns() {\n\n let gridColumns: any;\n\n if (this.isSerie) {\n gridColumns = [\n {\n field: 'serie',\n header: this.translate.instant(`${ this.prefix }serie`),\n attributes: [ \"codigo\" ],\n type: EnumColumnFieldType.STRING,\n },\n { field: 'dataFabricacao', header: this.translate.instant(`${ this.prefix }data_fabricacao`) },\n { field: 'dataValidade', header: this.translate.instant(`${ this.prefix }data_validade`) },\n ];\n } else {\n gridColumns = [\n {\n field: 'lote',\n header: this.translate.instant(`${ this.prefix }lote`),\n attributes: [ \"codigo\" ],\n type: EnumColumnFieldType.STRING,\n },\n { field: 'quantidade', header: this.translate.instant(`${ this.prefix }quantidade`) },\n { field: 'dataFabricacao', header: this.translate.instant(`${ this.prefix }data_fabricacao`) },\n { field: 'dataValidade', header: this.translate.instant(`${ this.prefix }data_validade`) }\n ];\n }\n\n return gridColumns;\n }\n\n public getE200LotSearchFields() {\n const searchFields = [\n new FormField({\n name: 'e200lot.codLote',\n label: this.translate.instant(`${ this.prefix }lookup_e200lot_cod_dep`),\n type: FieldType.String,\n })\n ];\n\n return searchFields;\n }\n\n public getE200SerSearchFields() {\n const searchFields = [\n new FormField({\n name: 'e200ser.numSep',\n label: this.translate.instant(`${ this.prefix }lookup_e200ser_num_sep`),\n type: FieldType.String,\n })\n ];\n\n return searchFields;\n }\n\n private onE200LotSearchRequest(event: any) {\n\n let filterQuery: any;\n let deposito = '';\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const displayFields = [ 'e200lot.codLote' ];\n\n if (this.loteSerieParams.dadosProduto.e205dep) {\n deposito = this.loteSerieParams.dadosProduto.e205dep;\n } else {\n if (this.formGroupBatchOrSeries.controls.deposito.value)\n deposito = this.formGroupBatchOrSeries.controls.deposito.value.e205dep.id;\n }\n\n const orderBy: any = multiSortMeta ? multiSortMeta.map((s: any) => ({\n field: s.field == 'e200lot.codLote' ? 'e200lot.codLot' : s.field,\n order: s.order == 1 ? 'ASC' : 'DESC'\n })) : [ { field: 'e200lot.codLot', order: 'ASC' } ];\n\n filterQuery = {\n e070emp: {\n id: this.loteSerieParams.dadosProduto.e070emp\n },\n e205dep: {\n id: deposito\n },\n e075der: {\n id: this.loteSerieParams.dadosProduto.e075der\n },\n lotLike: true,\n lotSal: true,\n offset: page,\n lotDis: true,\n size: rows\n };\n\n if (filterData['e200lot.codLote']) {\n filterQuery.e200lot = [ {\n codLot: filterData['e200lot.codLote']\n } ];\n }\n\n if (orderBy) {\n filterQuery.orderBy = orderBy;\n }\n\n this.batchSeriesService\n .listBatch(filterQuery)\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n gridData: list.lotes.map((item: any) => ({\n ...item,\n label: displayFields\n .map((field: any) => {\n if (field.indexOf('.') > 0) return this.getProp(item, field);\n return item[field];\n }),\n })),\n totalRecords: list.totalElements\n\n }))\n )\n .subscribe((data: any) => {\n this.e200lotlookupSearchObservable.next(data);\n });\n }\n\n public getQuantidadeDisponivelDemandaSearchFields(): FormField[] {\n return [\n new FormField({\n name: 'numSep',\n label: this.translate.instant(`${ this.prefix }lookup_e200ser_num_sep`),\n type: FieldType.String,\n })\n ];\n }\n\n public getQuantidadeDisponivelDemandaSearchGridFields() {\n return [\n new FormField({\n name: 'numSep',\n label: this.translate.instant(`${ this.prefix }lookup_e200ser_num_sep`),\n type: FieldType.String,\n }),\n new FormField({\n name: 'datFabSep',\n label: this.translate.instant(`${ this.prefix }lookup_e200ser_dat_fab`),\n type: FieldType.Date,\n }),\n new FormField({\n name: 'datVltSep',\n label: this.translate.instant(`${ this.prefix }lookup_e200ser_dat_vlt`),\n type: FieldType.Date,\n })\n ];\n }\n\n private onQuantidadeDisponivelDemandaRequest(event: any): void {\n const listParams: ListParams = {\n filterQuery: `idExterno eq '${ this.loteSerieParams.orderInformation.item.id }' and qtdDisponivel > 0 and numSep is not null`\n };\n\n if (event instanceof String || typeof event === 'string') {\n listParams.page = 0;\n listParams.size = 10;\n listParams.filterQuery += ` and containing(lower(numSep), lower('${ event\n .replace(/\\\\/g, '')\n .replace(/'/g, '\\\\\\'') }'))`;\n } else {\n const { filterData, rows, multiSortMeta } = event;\n\n listParams.page = event.first / rows;\n listParams.sort = multiSortMeta ? multiSortMeta : null;\n\n if (filterData.numSep !== null && filterData.numSep !== undefined) {\n listParams.filterQuery += ` and containing(lower(numSep), lower('${ filterData.numSep\n .replace(/\\\\/g, '')\n .replace(/'/g, '\\\\\\'') }'))`;\n }\n }\n\n this.quantidadeDisponivelDemandaService\n .list(listParams)\n .pipe(\n takeUntil(this.ngUnsubscribe),\n map((list: any) => ({\n gridData: list.contents.map((item: QuantidadeDisponivelDemanda) => ({\n ...item,\n id: item.e200serId,\n label: `${ item.numSep }`\n })),\n totalRecords: list.totalElements\n })))\n .subscribe((data: any) => {\n this.quantidadeDisponivelDemandaLookupSuggestionsObservable.next(data.gridData);\n this.quantidadeDisponivelDemandalookupSearchObservable.next(data);\n });\n }\n\n private onE200SerSearchRequest(event: any) {\n\n let filterQuery: any;\n let deposito = '';\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const displayFields = [ 'e200ser.numSep' ];\n\n if (this.loteSerieParams.dadosProduto.e205dep) {\n deposito = this.loteSerieParams.dadosProduto.e205dep;\n } else {\n if (this.formGroupBatchOrSeries.controls.deposito.value)\n deposito = this.formGroupBatchOrSeries.controls.deposito.value.e205dep.id;\n }\n\n const orderBy: any = multiSortMeta ? multiSortMeta.map((s: any) => ({\n ...s,\n order: s.order == 1 ? 'ASC' : 'DESC'\n })) : [ { field: 'e200ser.numSep', order: 'ASC' } ];\n\n filterQuery = {\n e070emp: {\n id: this.loteSerieParams.dadosProduto.e070emp\n },\n e205dep: {\n id: deposito\n },\n e075der: {\n id: this.loteSerieParams.dadosProduto.e075der\n },\n serLike: true,\n serSal: true,\n offset: page,\n serDis: true,\n size: rows\n };\n\n if (filterData['e200ser.numSep']) {\n filterQuery.e200ser = [ {\n numSep: filterData['e200ser.numSep']\n } ];\n }\n\n if (orderBy) {\n filterQuery.orderBy = orderBy;\n }\n\n this.batchSeriesService\n .listSeries(filterQuery)\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n gridData: list.series.map((item: any) => ({\n ...item,\n label: displayFields\n .map((field: any) => {\n if (field.indexOf('.') > 0) return this.getProp(item, field);\n return item[field];\n }),\n })),\n totalRecords: list.totalElements\n\n }))\n )\n .subscribe((data: any) => {\n this.e200serlookupSearchObservable.next(data);\n });\n }\n\n public removeBatchOrSeries(rowData: any) {\n if (this.blockedFields == false) {\n this.qtdDistribuida -= this.isSerie ? 1 : Number(rowData.quantidade);\n this.qtdRestante += this.isSerie ? 1 : Number(rowData.quantidade);\n\n this.gridData = this.gridData.filter((batchOrSeries: any) => {\n return batchOrSeries.codigo != rowData.codigo;\n });\n\n this.loteSerieParams.lotesOrSeries = this.gridData;\n }\n }\n\n private sum = (a, b, positions) => { const factor = Math.pow(10, positions); return (a.toFixed(positions) * factor + b.toFixed(positions) * factor) / factor}\n private sub = (a, b, positions) => { const factor = Math.pow(10, positions); return (a.toFixed(positions) * factor - b.toFixed(positions) * factor) / factor}\n\n public addBatchOrSeries() {\n let codigo: string;\n let id = '';\n\n this.validateAllFormFields(this.formGroupBatchOrSeries);\n\n if (this.formGroupBatchOrSeries.controls.bulkVisible.value) {\n if (isEmpty(this.formGroupBatchOrSeries.controls.batchSerieBulk.value)) {\n return;\n }\n const convertedArray = this.formGroupBatchOrSeries.controls.batchSerieBulk.value.split('\\n');\n this.gridData = [];\n this.qtdDistribuida = 0;\n this.qtdAdistribuir = this.loteSerieParams.quantidadeDistribuir;\n this.qtdRestante = 0;\n let linhaAtual = 0;\n if (convertedArray.length == 0) {\n const msgError = this.translate.instant(`${ this.prefix }invalid_layout`);\n this.messageService.add({\n severity: 'error',\n summary: this.translate.instant(`${ this.prefix }invalid_layout`),\n detail: msgError,\n life: 20000\n });\n this.gridData = [];\n throw msgError;\n }\n convertedArray.forEach((value: any) => {\n linhaAtual++;\n const currentValue = value.split(';');\n if ((this.isSerie && currentValue.length > 3) || (!this.isSerie && currentValue.length > 4)) {\n const msgError = this.translate.instant(`${ this.prefix }invalid_layout`);\n this.messageService.add({\n severity: 'error',\n summary: this.translate.instant(`${ this.prefix }invalid_layout`),\n detail: msgError,\n life: 20000\n });\n this.gridData = [];\n throw msgError;\n }\n const convertedValue: BulkImport = (this.isSerie) ? {\n codigo: this.toCode(currentValue[0], this.translate.instant(`${ this.prefix }codigo_not_informed_batch`, { line: linhaAtual })),\n dataFabricacao: this.toDate(currentValue[1], this.translate.instant(`${ this.prefix }manufacturing_date_invalid_batch`, { line: linhaAtual })),\n dataValidade: this.toDate(currentValue[2], this.translate.instant(`${ this.prefix }validate_date_invalid_batch`, { line: linhaAtual })),\n quantidade: 1\n } : {\n codigo: this.toCode(currentValue[0], this.translate.instant(`${ this.prefix }codigo_not_informed_batch`, { line: linhaAtual })),\n quantidade: this.toAmount(currentValue[1], linhaAtual),\n dataFabricacao: this.toDate(currentValue[2], this.translate.instant(`${ this.prefix }manufacturing_date_invalid_batch`, { line: linhaAtual })),\n dataValidade: this.toDate(currentValue[3], this.translate.instant(`${ this.prefix }validate_date_invalid_batch`, { line: linhaAtual }))\n };\n\n // valida se a familia obriga a informar validade\n if (this.obrigaValidade && !convertedValue.dataValidade) {\n const msgError = this.translate.instant(`${ this.prefix }error_selected_dates_batch`, { line: linhaAtual });\n this.messageService.add({\n severity: 'error',\n summary: this.translate.instant(`${ this.prefix }error_expiry_date`),\n detail: msgError,\n life: 20000\n });\n this.gridData = [];\n throw msgError;\n }\n // valida se existe código duplicado\n if (this.gridData.some((value: BulkImport) => value.codigo === convertedValue.codigo)) {\n const msgError = (this.isSerie) ? this.translate.instant(`${ this.prefix }duplicated_series_msg_batch`, { line: linhaAtual }) : this.translate.instant(`${ this.prefix }duplicated_batch_msg_batch`, { line: linhaAtual });\n this.messageService.add({\n severity: 'error',\n summary: this.translate.instant(`${ this.prefix }batch_distribution_error`),\n detail: msgError,\n life: 20000\n });\n this.gridData = [];\n throw msgError;\n }\n // valida se a data de fabricação é maior que a validade\n if (convertedValue.dataValidade && convertedValue.dataFabricacao &&\n convertedValue.dataValidade < convertedValue.dataFabricacao) {\n const msgError = this.translate.instant(`${ this.prefix }expiry_lower_than_manufacturing_batch`, { line: linhaAtual });\n this.messageService.add({\n severity: 'error',\n summary: this.translate.instant(`${ this.prefix }error_selected_dates`),\n detail: msgError,\n life: 20000\n });\n this.gridData = [];\n throw msgError;\n }\n this.qtdDistribuida += convertedValue.quantidade;\n // valida se a quantidade distribuida é maior que a quantidade a distribuir\n if (this.qtdDistribuida > this.qtdAdistribuir) {\n const msgError = this.translate.instant(`${ this.prefix }invalid_qty_msg_batch`, { line: linhaAtual });\n this.messageService.add({\n severity: 'error',\n summary: this.translate.instant(`${ this.prefix }distribution_error`),\n detail: msgError,\n life: 20000\n });\n this.gridData = [];\n throw msgError;\n }\n this.gridData.push(convertedValue);\n this.qtdRestante = this.qtdAdistribuir - this.qtdDistribuida;\n });\n this.loteSerieParams.lotesOrSeries = this.gridData;\n this.formGroupBatchOrSeries.controls.batchSerieBulk.reset();\n this.messageService.clear();\n return;\n }\n\n if (this.formGroupBatchOrSeries.valid &&\n (this.formGroupBatchOrSeries.controls.serie.value || this.formGroupBatchOrSeries.controls.lote.value)) {\n\n if (this.isSerie)\n this.formGroupBatchOrSeries.controls.quantidade.patchValue(1);\n\n if (this.formGroupBatchOrSeries.controls.dataValidade.value && this.formGroupBatchOrSeries.controls.dataFabricacao.value &&\n this.formGroupBatchOrSeries.controls.dataValidade.value < this.formGroupBatchOrSeries.controls.dataFabricacao.value) {\n this.messageService.add({\n severity: 'error',\n summary: this.translate.instant(`${ this.prefix }error_selected_dates`),\n detail: this.translate.instant(`${ this.prefix }expiry_lower_than_manufacturing`)\n });\n return;\n }\n\n if (this.obrigaValidade) {\n if (!this.formGroupBatchOrSeries.controls.dataValidade.value) {\n this.messageService.add({\n severity: 'error',\n summary: this.translate.instant(`${ this.prefix }error_selected_dates`),\n detail: this.translate.instant(`${ this.prefix }error_expiry_date`)\n });\n return;\n }\n }\n\n const distributedQuantity = this.formGroupBatchOrSeries.get('quantidade').value ? Number(this.formGroupBatchOrSeries.get('quantidade').value) : 0;\n \n if (distributedQuantity > 0) {\n if (this.sum(this.qtdDistribuida, distributedQuantity, this.locale.number.scale) > this.qtdAdistribuir) {\n this.messageService.add({\n severity: 'error',\n summary: this.translate.instant(`${ this.prefix }distribution_error`),\n detail: this.translate.instant(`${ this.prefix }invalid_qty_msg`)\n });\n return;\n }\n } else {\n this.messageService.add({\n severity: 'error',\n summary: this.translate.instant(`${ this.prefix }distribution_error`),\n detail: this.translate.instant(`${ this.prefix }invalid_qtd`)\n });\n return;\n }\n\n if (this.isSerie) {\n if (this.isSaida) {\n if (this.formGroupBatchOrSeries.controls.serie.value.e200ser) {\n codigo = this.formGroupBatchOrSeries.controls.serie.value.e200ser.numSep;\n id = this.formGroupBatchOrSeries.controls.serie.value.e200ser.id;\n } else {\n codigo = this.formGroupBatchOrSeries.controls.serie.value.numSep;\n id = this.formGroupBatchOrSeries.controls.serie.value.id;\n }\n } else {\n codigo = this.formGroupBatchOrSeries.controls.serie.value.toUpperCase();\n this.formGroupBatchOrSeries.controls.serie.patchValue(this.formGroupBatchOrSeries.controls.serie.value.toUpperCase());\n }\n } else {\n if (this.isSaida) {\n if (this.formGroupBatchOrSeries.controls.lote.value.e200lot) {\n codigo = this.formGroupBatchOrSeries.controls.lote.value.e200lot.codLote;\n id = this.formGroupBatchOrSeries.controls.lote.value.e200lot.id;\n } else {\n codigo = this.formGroupBatchOrSeries.controls.lote.value.codLot;\n id = this.formGroupBatchOrSeries.controls.lote.value.id;\n }\n } else {\n codigo = this.formGroupBatchOrSeries.controls.lote.value.toUpperCase();\n this.formGroupBatchOrSeries.controls.lote.patchValue(this.formGroupBatchOrSeries.controls.lote.value.toUpperCase());\n }\n }\n\n if (this.isDuplicateBatchSeries()) {\n if (!this.isSerie) {\n this.messageService.add({\n severity: 'error',\n summary: this.translate.instant(`${ this.prefix }batch_distribution_error`),\n detail: this.translate.instant(`${ this.prefix }duplicated_batch_msg`)\n });\n } else {\n this.messageService.add({\n severity: 'error',\n summary: this.translate.instant(`${ this.prefix }series_distribution_error`),\n detail: this.translate.instant(`${ this.prefix }duplicated_series_msg`)\n });\n }\n return;\n }\n\n let loteOrSerieValues = this.formGroupBatchOrSeries.getRawValue();\n\n loteOrSerieValues = this.formatDates(loteOrSerieValues, [ 'dataFabricacao', 'dataValidade' ]);\n\n if (this.loteSerieParams?.invoiceInformation?.origin === EnumInvoiceOrigin.V2 && loteOrSerieValues.serie) {\n if (Array.isArray(loteOrSerieValues.serie)) {\n for (const value of loteOrSerieValues.serie) {\n this.gridData.push({\n id: value.id,\n codigo: value.numSep,\n quantidade: value.qtdDisponivel,\n dataFabricacao: value.datFabSep,\n dataValidade: value.datVltSep\n });\n this.qtdDistribuida = this.sum(this.qtdDistribuida, value.qtdDisponivel, this.locale.number.scale)\n this.qtdRestante = this.sub(this.qtdRestante, value.qtdDisponivel, this.locale.number.scale) \n }\n } else {\n this.gridData.push({\n id: loteOrSerieValues.serie.id,\n codigo: loteOrSerieValues.serie.numSep,\n quantidade: loteOrSerieValues.serie.qtdDisponivel,\n dataFabricacao: loteOrSerieValues.serie.datFabSep,\n dataValidade: loteOrSerieValues.serie.datVltSep\n });\n\n this.qtdDistribuida = this.sum(this.qtdDistribuida, Number(loteOrSerieValues.serie.qtdDisponivel), this.locale.number.scale)\n this.qtdRestante = this.sub(this.qtdRestante, Number(loteOrSerieValues.serie.qtdDisponivel), this.locale.number.scale)\n\n }\n } else {\n this.gridData.push({\n id: id,\n codigo: codigo,\n quantidade: loteOrSerieValues.quantidade,\n dataFabricacao: loteOrSerieValues.dataFabricacao,\n dataValidade: loteOrSerieValues.dataValidade\n });\n\n this.qtdDistribuida = this.sum(this.qtdDistribuida, Number(loteOrSerieValues.quantidade), this.locale.number.scale)\n this.qtdRestante = this.sub(this.qtdRestante, Number(loteOrSerieValues.quantidade), this.locale.number.scale)\n }\n\n this.clearBatchSeries();\n this.loteSerieParams.lotesOrSeries = this.gridData;\n } else {\n return this.validateAllFormFields(this.formGroupBatchOrSeries);\n }\n }\n\n private toCode(currentValue: string, msgError: string) {\n currentValue = String(currentValue).trim().toUpperCase()\n if (isEmpty(currentValue)) {\n this.messageService.add({\n severity: 'error',\n summary: this.translate.instant(`${ this.prefix }codigo_not_informed`),\n detail: msgError,\n life: 20000\n });\n this.gridData = [];\n throw msgError;\n }\n return currentValue;\n }\n\n private toAmount(currentValue: string, linhaAtual: number) {\n const convertedValue = this.toNumber(currentValue);\n if (!currentValue || !convertedValue && convertedValue != 0) {\n const msgError = this.translate.instant(`${ this.prefix }amount_not_informed_batch`, { line: linhaAtual });\n this.messageService.add({\n severity: 'error',\n summary: this.translate.instant(`${ this.prefix }amount_not_informed`),\n detail: msgError,\n life: 20000\n });\n this.gridData = [];\n throw msgError;\n }\n if (String(currentValue).indexOf(this.locale.number.thousandsSeparator) > 0) {\n const msgError = this.translate.instant(`${ this.prefix }format_number_invalid_batch`, { line: linhaAtual });\n this.messageService.add({\n severity: 'error',\n summary: this.translate.instant(`${ this.prefix }amount_invalid_batch`),\n detail: msgError,\n life: 20000\n });\n this.gridData = [];\n throw msgError;\n }\n\n if (convertedValue <= 0) {\n const msgError = this.translate.instant(`${ this.prefix }amount_quantity_that_zero_batch`, { line: linhaAtual });\n this.messageService.add({\n severity: 'error',\n summary: this.translate.instant(`${ this.prefix }amount_invalid_batch`),\n detail: msgError,\n life: 20000\n });\n this.gridData = [];\n throw msgError;\n }\n const temDecimal = String(convertedValue).split('.');\n\n if (temDecimal.length > 1 && this.locale.number.scale != String(convertedValue).split('.')[1].length) {\n const msgError = this.translate.instant(`${ this.prefix }invalid_decimals_batch`, { line: linhaAtual });\n this.messageService.add({\n severity: 'error',\n summary: this.translate.instant(`${ this.prefix }amount_invalid_batch`),\n detail: msgError,\n life: 20000\n });\n this.gridData = [];\n throw msgError;\n }\n return convertedValue;\n }\n\n private toNumber(currentValue: string) {\n return (isNotEmpty(currentValue)) ? Number(currentValue.replace(this.locale.number.thousandsSeparator, '').replace(this.locale.number.decimalSeparator, '.')) : undefined;\n }\n\n private toDate(currentValue: string, msgError: string) {\n if (isNotEmpty(currentValue) && !moment(currentValue.trim(), 'L', true).isValid()) {\n this.messageService.add({\n severity: 'error',\n summary: this.translate.instant(`${ this.prefix }invalid_date_batch`),\n detail: msgError,\n life: 20000\n });\n this.gridData = [];\n throw msgError;\n }\n return (isNotEmpty(currentValue)) ? moment(currentValue.trim(), 'L', true).format('YYYY-MM-DD') : undefined;\n }\n\n private isDuplicateBatchSeries(): boolean {\n let codigo: string;\n\n if (!this.isSerie) {\n if (this.isSaida) {\n codigo = this.formGroupBatchOrSeries.controls.lote.value.e200lot ?\n this.formGroupBatchOrSeries.controls.lote.value.e200lot.codLote :\n this.formGroupBatchOrSeries.controls.lote.value.codLot;\n } else {\n codigo = this.formGroupBatchOrSeries.controls.lote.value.toUpperCase();\n }\n return this.gridData.find((element: any) => {\n if (element.codigo === codigo)\n return true;\n\n return false;\n });\n } else {\n if (this.isSaida && Array.isArray(this.formGroupBatchOrSeries?.controls?.serie?.value)) {\n for (const series of this.formGroupBatchOrSeries?.controls?.serie?.value) {\n for (const addedSeries of this.gridData) {\n if (series.numSep === addedSeries.codigo) return true;\n }\n }\n\n return false;\n }\n return this.gridData.find((element: any) => {\n if (this.isSaida) {\n codigo = this.formGroupBatchOrSeries.controls.serie.value.e200ser ?\n this.formGroupBatchOrSeries.controls.serie.value.e200ser.numSep :\n this.formGroupBatchOrSeries.controls.serie.value.numSep;\n } else {\n codigo = this.formGroupBatchOrSeries.controls.serie.value.toUpperCase();\n }\n\n if (element.codigo === codigo)\n return true;\n\n return false;\n });\n }\n }\n\n private clearBatchSeries() {\n this.formGroupBatchOrSeries.reset();\n if (this.isSaida) {\n this.formGroupBatchOrSeries.controls.dataFabricacao.disable();\n this.formGroupBatchOrSeries.controls.dataValidade.disable();\n } else {\n if (this.blockedFields == false)\n this.formGroupBatchOrSeries.controls.dataFabricacao.enable();\n if ((!this.disableDataValidade) && (this.blockedFields == false)) {\n this.formGroupBatchOrSeries.controls.dataValidade.enable();\n }\n }\n }\n\n private validaLoteorSerie(event: any) {\n\n this.formGroupBatchOrSeries.controls.dataFabricacao.disable();\n this.formGroupBatchOrSeries.controls.dataValidade.disable();\n\n if (!this.isSerie) {\n this.getDatas(event.codLot ? event.codLot : event.e200lot.codLote);\n this.consultaSaldoEstoque(event.codLot ? event.codLot : event.e200lot.codLote);\n } else {\n this.getDatas(event.numSep ? event.numSep : event.e200ser.numSep);\n this.consultaSaldoEstoque(event.numSep ? event.numSep : event.e200ser.numSep);\n }\n }\n\n private onBlurValidaLoteorSerie(value: any) {\n // Quando realiza o tab, abre o calendar, por isso é necessário desabilitar antes\n if (value) {\n if (this.validateInvalidChars) {\n const newValue = value.trim();\n if (value !== newValue) {\n if (this.loteSerieParams.tipoControleProduto == EnumTipoControleProduto.Serie) {\n this.formGroupBatchOrSeries.controls.serie.patchValue(newValue);\n } else {\n this.formGroupBatchOrSeries.controls.lote.patchValue(newValue);\n }\n }\n\n }\n this.getDatas(value.toUpperCase());\n this.consultaSaldoEstoque(value.toUpperCase());\n }\n }\n\n private getDatas(value: any) {\n\n this.formGroupBatchOrSeries.controls.dataFabricacao.reset();\n this.formGroupBatchOrSeries.controls.dataValidade.reset();\n this.formGroupBatchOrSeries.controls.saldo.reset();\n this.formGroupBatchOrSeries.controls.dataFabricacao.disable();\n this.formGroupBatchOrSeries.controls.dataValidade.disable();\n\n let filterQuery: any;\n let deposito = '';\n\n if (this.isSerie) {\n if (this.loteSerieParams.dadosProduto.e205dep) {\n deposito = this.loteSerieParams.dadosProduto.e205dep;\n } else {\n if (this.formGroupBatchOrSeries.controls.deposito.value)\n deposito = this.formGroupBatchOrSeries.controls.deposito.value.e205dep.id;\n }\n\n filterQuery = {\n e070emp: {\n id: this.loteSerieParams.dadosProduto.e070emp\n },\n e205dep: {\n id: deposito\n },\n e075der: {\n id: this.loteSerieParams.dadosProduto.e075der\n },\n serLike: false,\n serSal: true,\n serDis: true,\n offset: 0,\n size: 10,\n orderBy: [ {\n field: 'e200ser.numSep',\n order: 'ASC'\n } ]\n };\n\n if (value) {\n filterQuery.e200ser = [ {\n numSep: value\n } ];\n }\n\n this.batchSeriesService\n .listSeries(filterQuery)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((response: any) => {\n if (response.series.length > 0) {\n const dates = this.formatDatesToCalendar(response.series[0], [ 'datFab', 'datVlt' ]);\n\n if (dates.e200ser.datFab) {\n this.formGroupBatchOrSeries.controls.dataFabricacao.patchValue(moment(dates.e200ser.datFab).toDate());\n }\n if (dates.e200ser.datVlt) {\n this.formGroupBatchOrSeries.controls.dataValidade.patchValue(moment(dates.e200ser.datVlt).toDate());\n }\n } else {\n if (!this.isSaida) {\n this.formGroupBatchOrSeries.controls.dataFabricacao.enable();\n }\n\n if ((!this.disableDataValidade) && (this.blockedFields == false) && !this.isSaida)\n this.formGroupBatchOrSeries.controls.dataValidade.enable();\n }\n });\n } else {\n if (this.loteSerieParams.dadosProduto.e205dep) {\n deposito = this.loteSerieParams.dadosProduto.e205dep;\n } else {\n if (this.formGroupBatchOrSeries.controls.deposito.value)\n deposito = this.formGroupBatchOrSeries.controls.deposito.value.e205dep.id;\n }\n\n filterQuery = {\n e070emp: {\n id: this.loteSerieParams.dadosProduto.e070emp\n },\n e205dep: {\n id: deposito\n },\n e075der: {\n id: this.loteSerieParams.dadosProduto.e075der\n },\n lotLike: false,\n lotSal: true,\n lotDis: true,\n offset: 0,\n size: 10,\n orderBy: [ {\n field: 'e200lot.codLot',\n order: 'ASC'\n } ]\n };\n\n if (value) {\n filterQuery.e200lot = [ {\n codLot: value\n } ];\n }\n\n this.batchSeriesService\n .listBatch(filterQuery)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((response: any) => {\n if (response.lotes.length > 0) {\n const dates = this.formatDatesToCalendar(response.lotes[0], [ 'datFab', 'datVlt' ]);\n\n if (dates.e200lot.datFab) {\n this.formGroupBatchOrSeries.controls.dataFabricacao.patchValue(moment(dates.e200lot.datFab).toDate());\n }\n if (dates.e200lot.datVlt) {\n this.formGroupBatchOrSeries.controls.dataValidade.patchValue(moment(dates.e200lot.datVlt).toDate());\n }\n } else {\n if (!this.isSaida) {\n this.formGroupBatchOrSeries.controls.dataFabricacao.enable();\n }\n\n if ((!this.disableDataValidade) && (this.blockedFields == false) && !this.isSaida)\n this.formGroupBatchOrSeries.controls.dataValidade.enable();\n }\n });\n }\n }\n\n private processFamilySupplyInfo(familyID: string) {\n this.batchSeriesService\n .getProductFamilySupplyInfo(familyID)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((response: any) => {\n const supplyInfo = response.contents[0];\n\n this.obrigaValidade = false;\n this.formGroupBatchOrSeries.controls.dataValidade.setValidators([]);\n\n switch (supplyInfo?.ctrVld) {\n case 'VO':\n this.formGroupBatchOrSeries.controls.dataValidade.clearValidators();\n this.formGroupBatchOrSeries.controls.dataValidade.setValidators([ Validators.required ]);\n if (this.blockedFields == false && !this.isSaida)\n this.formGroupBatchOrSeries.controls.dataValidade.enable();\n this.obrigaValidade = true;\n break;\n case 'VD':\n this.formGroupBatchOrSeries.controls.dataValidade.disable();\n this.disableDataValidade = true;\n break;\n case 'VL':\n if (this.blockedFields == false && !this.isSaida)\n this.formGroupBatchOrSeries.controls.dataValidade.enable();\n break;\n }\n });\n\n this.formGroupBatchOrSeries.controls.dataValidade.updateValueAndValidity({ emitEvent: false });\n }\n\n public consultaSaldoEstoque(value: string) {\n\n let balancePayload = {};\n\n if (this.isSerie) {\n balancePayload = {\n e205dep: {\n id: this.loteSerieParams.dadosProduto.e205dep ?\n this.loteSerieParams.dadosProduto.e205dep :\n this.formGroupBatchOrSeries.controls.deposito.value.e205dep.id\n },\n e075der: { id: this.loteSerieParams.dadosProduto.e075der },\n e200ser: { numSep: value }\n };\n } else {\n balancePayload = {\n e205dep: {\n id: this.loteSerieParams.dadosProduto.e205dep ?\n this.loteSerieParams.dadosProduto.e205dep :\n this.formGroupBatchOrSeries.controls.deposito.value.e205dep.id\n },\n e075der: { id: this.loteSerieParams.dadosProduto.e075der },\n e200lot: { codLot: value }\n };\n }\n\n this.batchSeriesService\n .consultarSaldoEstoque(balancePayload)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((response: any) => {\n if (!response.saldo) {\n this.formGroupBatchOrSeries.controls.saldo.patchValue(0);\n } else {\n this.formGroupBatchOrSeries.controls.saldo.patchValue(response.saldo);\n }\n });\n }\n\n public getQuantidadeDistribuida() {\n let qtd = 0;\n\n this.loteSerieParams.lotesOrSeries.forEach((val: any) => {\n if (!this.isSerie)\n qtd = this.sum(qtd, val.quantidade, this.locale.number.scale);\n else\n qtd = this.sum(qtd, 1, this.locale.number.scale);\n });\n\n return qtd;\n }\n\n private validateAllFormFields(formGroup: FormGroup) {\n Object.keys(formGroup.controls).forEach(field => {\n const control = formGroup.get(field);\n if (control instanceof FormControl) control.markAsDirty({ onlySelf: true });\n else if (control instanceof FormGroup) this.validateAllFormFields(control);\n });\n }\n\n public onRouteDataChange(data: any) {\n this.localeConfig = data.localeConfig;\n this.locale = this.localeConfig;\n this.locale.number.scale = this.loteSerieParams.dadosProduto.qtdDec ? this.loteSerieParams.dadosProduto.qtdDec : 0;\n }\n\n public getE200LotSearchGridFields() {\n const searchGridFields = [\n new FormField({\n name: 'e200lot.codLote',\n label: this.translate.instant(`${ this.prefix }lookup_e200lot_cod_dep`),\n type: FieldType.String,\n }),\n new FormField({\n name: 'e200lot.datFab',\n label: this.translate.instant(`${ this.prefix }lookup_e200lot_dat_fab`),\n type: FieldType.Date,\n }),\n new FormField({\n name: 'e200lot.datVlt',\n label: this.translate.instant(`${ this.prefix }lookup_e200lot_dat_vlt`),\n type: FieldType.Date,\n }),\n new FormField({\n name: 'qtdDis',\n label: this.translate.instant(`${ this.prefix }lookup_e200lot_qtd_dis`),\n type: FieldType.Double,\n }),\n ];\n\n return searchGridFields;\n }\n\n public getE200SerSearchGridFields() {\n const searchGridFields = [\n new FormField({\n name: 'e200ser.numSep',\n label: this.translate.instant(`${ this.prefix }lookup_e200ser_num_sep`),\n type: FieldType.String,\n }),\n new FormField({\n name: 'e200ser.datFab',\n label: this.translate.instant(`${ this.prefix }lookup_e200ser_dat_fab`),\n type: FieldType.Date,\n }),\n new FormField({\n name: 'e200ser.datVlt',\n label: this.translate.instant(`${ this.prefix }lookup_e200ser_dat_vlt`),\n type: FieldType.Date,\n }),\n new FormField({\n name: 'qtdDis',\n label: this.translate.instant(`${ this.prefix }lookup_e200ser_qtd_dis`),\n type: FieldType.Double,\n }),\n ];\n\n return searchGridFields;\n }\n\n public onE200LotLookupRequest(value: string) {\n let deposito = '';\n const displayFields = this.loteLookupDisplayFields;\n\n if (this.loteSerieParams.dadosProduto.e205dep) {\n deposito = this.loteSerieParams.dadosProduto.e205dep;\n } else {\n if (this.formGroupBatchOrSeries.controls.deposito.value)\n deposito = this.formGroupBatchOrSeries.controls.deposito.value.e205dep.id;\n }\n\n const filterQuery: any = {\n e070emp: {\n id: this.loteSerieParams.dadosProduto.e070emp\n },\n e205dep: {\n id: deposito\n },\n e075der: {\n id: this.loteSerieParams.dadosProduto.e075der\n },\n lotLike: true,\n lotSal: true,\n lotDis: true,\n offset: 0,\n size: 10,\n orderBy: [ {\n field: 'e200lot.codLot',\n order: 'ASC'\n } ]\n };\n\n if (value) {\n filterQuery.e200lot = [ {\n codLot: value\n } ];\n }\n\n this.batchSeriesService\n .listBatch(filterQuery)\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n lotes: list.lotes.map((item: any) => ({\n ...item,\n label: displayFields\n .map(field => {\n if (field.indexOf('.') > 0) return this.getProp(item, field);\n return item[field];\n }),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.e200lotLookupSuggestionsObservable.next(list.lotes);\n });\n\n }\n\n public onE200SerLookupRequest(value: string) {\n let deposito = '';\n const displayFields = this.serieLookupDisplayFields;\n\n if (this.loteSerieParams.dadosProduto.e205dep) {\n deposito = this.loteSerieParams.dadosProduto.e205dep;\n } else {\n if (this.formGroupBatchOrSeries.controls.deposito.value)\n deposito = this.formGroupBatchOrSeries.controls.deposito.value.e205dep.id;\n }\n\n const filterQuery: any = {\n e070emp: {\n id: this.loteSerieParams.dadosProduto.e070emp\n },\n e205dep: {\n id: deposito\n },\n e075der: {\n id: this.loteSerieParams.dadosProduto.e075der\n },\n serLike: true,\n serSal: true,\n serDis: true,\n offset: 0,\n size: 10,\n orderBy: [ {\n field: 'e200ser.numSep',\n order: 'ASC'\n } ]\n };\n\n if (value) {\n filterQuery.e200ser = [ {\n numSep: value\n } ];\n }\n\n this.batchSeriesService\n .listSeries(filterQuery)\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n series: list.series.map((item: any) => ({\n ...item,\n label: displayFields\n .map(field => {\n if (field.indexOf('.') > 0) return this.getProp(item, field);\n return item[field];\n }),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.e200serLookupSuggestionsObservable.next(list.series);\n });\n\n }\n\n public formatDates(requestBody: any, properties: string[]) {\n return Object.keys(requestBody).reduce((prev: any, value: any) => {\n if (properties.indexOf(value) > -1 && requestBody[value]) {\n prev[value] = moment(requestBody[value]).format('YYYY-MM-DD');\n } else {\n prev[value] = requestBody[value];\n }\n return prev;\n }, {});\n }\n\n public formatDatesToCalendar(requestBody: any, properties: string[]) {\n return Object.keys(requestBody).reduce((prev: any, value: any) => {\n if (properties.indexOf(value) > -1 && requestBody[value]) {\n if ((requestBody[value] != undefined) && (requestBody[value] != null)) {\n prev[value] = moment(requestBody[value]).toDate();\n } else {\n prev[value] = '';\n }\n } else {\n prev[value] = requestBody[value];\n }\n return prev;\n }, {});\n }\n\n public translateHtml(text: string, value: any = null, shortcut: string = null): string {\n const ret = this.translate.instant(`${ this.prefix }${ text }`, { value: value });\n return shortcut ? `${ ret } ${ shortcut }` : ret;\n }\n\n public onDistributeSeries(): void {\n this.batchSeriesService\n .obterNecessidades({\n e070empId: this.loteSerieParams.invoiceInformation.company.id,\n e070filId: this.loteSerieParams.invoiceInformation.branch.id,\n itensId: [\n this.loteSerieParams.invoiceInformation.item.product.id\n ],\n tipo: EnumTipoDocumentoParametros.PedidoVenda,\n documentoId: null,\n numeroDocumentoPai: [\n this.loteSerieParams?.orderInformation?.number.toString()\n ],\n dataInicial: null,\n dataFinal: null,\n situacao: null,\n codigoDemanda: null,\n somenteUrgentes: false,\n pageRequest: {\n offset: 0,\n size: 10\n }\n })\n .pipe(first())\n .subscribe(({ necessidades }) => {\n const itemId =\n this.loteSerieParams?.orderInformation?.item.id;\n const atendimento = necessidades.find(\n (necessidade) => necessidade.documento?.idExterno === itemId\n );\n\n const getUrlInput: GetUrlInput = {\n identifiers: [\n {\n domainName: 'erpx_sup',\n serviceName: 'demandas',\n appName: 'erpx-sup-demandas',\n route: `demandas/atendimentos/${ atendimento.id }?isSeriesDistributionVisible=true`\n }\n ]\n };\n\n this.batchSeriesService\n .getUrl(getUrlInput)\n .pipe(first())\n .subscribe((getUrlOutput: GetUrlOutput) => {\n window.open(\n `${ getUrlOutput.frontends[0].embeddedURL }`,\n '_blank'\n );\n });\n });\n }\n\n public onDelete() {\n this.selection.forEach(value => this.removeBatchOrSeries(value));\n this.selection = [];\n }\n\n public isDistributeSeriesButtonVisible(): boolean {\n return (\n this.loteSerieParams?.invoiceInformation?.item?.product\n ?.isSerialControlled &&\n this.loteSerieParams?.invoiceInformation?.origin ===\n EnumInvoiceOrigin.V2\n );\n }\n\n private onBlurQuantity(): void {\n if (!this.isSaida) return;\n\n const quantity = Number(this.formGroupBatchOrSeries.controls.quantidade.value);\n const balance = Number(this.formGroupBatchOrSeries.controls.saldo.value);\n\n if (quantity > balance)\n this.messageService.add({\n severity: 'warn',\n summary: this.translate.instant(`${ this.prefix }warn`),\n detail: this.translate.instant(`${ this.prefix }invalid_batch_distribution_quantity`)\n });\n }\n}\n\n/*Parâmetros para utilizar o componente de lote-série */\nexport interface LoteSerieParams {\n\n /* Informa se a movimentação é do tipo entrada ou saida. */\n tipoMovimentacao: EnumTipoMovimentacao;\n\n /* Informa se o produto é controlado por lote ou série. */\n tipoControleProduto: EnumTipoControleProduto;\n\n /* Informa a quantidade a ser distribuÃda. */\n quantidadeDistribuir: number;\n\n /* Informa os dados do produto. */\n dadosProduto: DadosProduto;\n\n /* Informa os lotes ou séries ja distribuÃdos.*/\n lotesOrSeries?: Array<LotesOrSeries>;\n\n /* Informações da nota .*/\n invoiceInformation?: InvoiceInformation;\n\n /* Informações do pedido de venda .*/\n orderInformation?: OrderInformation;\n}\n\n/** Enum para tipo de movimento */\nexport enum EnumTipoMovimentacao {\n /** Tipo movimentação igual a Entrada */\n Entrada = 'Entrada',\n /** Tipo movimentação igual a SaÃda */\n Saida = 'Saida'\n}\n\n/** Enum para tipo de controle de produto */\nexport enum EnumTipoControleProduto {\n /** Tipo de controle igual a Lote */\n Lote = 'Lote',\n /** Tipo de controle igual a Série */\n Serie = 'Serie'\n}\n\n/** Interface para dados do produto */\nexport interface DadosProduto {\n /** ID do produto */\n e075der: string;\n\n /** ID do depósito */\n e205dep?: string;\n\n /** ID da famÃlia do produto */\n e012fam: string;\n\n /** Entidade empresa */\n e070emp: string;\n\n /** Quantidade de casas decimais */\n qtdDec?: number;\n}\n\n/** Interface para dados da grid dos lotes/séries distribuÃdos */\nexport interface LotesOrSeries {\n /** ID do Lote ou Série */\n id?: string;\n\n /** Código do Lote ou Série */\n codigo: string;\n\n /** Data de validade do lote/série */\n dataValidade?: string;\n\n /** Data de fabricação do lote/série */\n dataFabricacao?: string;\n\n /** Quantidade **/\n quantidade?: number;\n\n}\n\nexport enum EnumInvoiceOrigin {\n V1 = 'V1',\n V2 = 'V2',\n V3 = 'V3',\n V4 = 'V4',\n V5 = 'V5',\n V99 = 'V99'\n}\n\nexport interface InvoiceItem {\n id: string;\n product: {\n id: string;\n isSerialControlled: boolean;\n };\n}\n\nexport interface InvoiceInformation {\n company: {\n id: string;\n };\n branch: {\n id: string;\n };\n origin: EnumInvoiceOrigin;\n item?: InvoiceItem;\n}\n\nexport interface OrderItem {\n id: string;\n}\n\nexport interface OrderInformation {\n number: number;\n item: OrderItem;\n}\n\ninterface BulkImport {\n codigo: string,\n dataFabricacao: string,\n dataValidade: string,\n quantidade?: number\n}\n\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ErpLookupsModule } from '@senior-gestao-empresarial/angular-components';\nimport {\n ButtonModule,\n DynamicFormModule,\n EmptyStateModule,\n LoadingStateModule,\n LocaleModule,\n SidebarModule,\n StatsCardModule, TableModule as STableModule,\n} from '@seniorsistemas/angular-components';\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\nimport { MessagesModule } from 'primeng/messages';\nimport { PanelModule } from 'primeng/panel';\nimport { TableModule } from 'primeng/table';\nimport { TabViewModule } from 'primeng/tabview';\nimport { QuantidadeDisponivelDemandaModule } from '../../core/entities/quantidade-disponivel-demanda/quantidade-disponivel-demanda.module';\nimport { ErpLoteSerieComponent } from './erp-lote-serie.component';\nimport { ErpLoteSeriesService } from './erp-lote-serie.service';\n\n@NgModule({\n declarations: [ErpLoteSerieComponent],\n imports: [\n CommonModule,\n TranslateModule,\n ButtonModule,\n DynamicFormModule,\n LocaleModule.forChild(),\n ErpLookupsModule,\n PanelModule,\n TabViewModule,\n ConfirmDialogModule,\n FormsModule,\n ReactiveFormsModule,\n StatsCardModule,\n EmptyStateModule,\n TableModule,\n LoadingStateModule,\n MessagesModule,\n SidebarModule,\n QuantidadeDisponivelDemandaModule,\n STableModule\n ],\n providers: [ErpLoteSeriesService],\n exports: [ErpLoteSerieComponent],\n})\nexport class ErpLoteSerieModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {FocusService as ɵd} from './components/focus/focus.service';\nexport {ErpLoteSeriesService as ɵe} from './components/lote-serie/erp-lote-serie.service';\nexport {ErpResumoComponent as ɵa} from './components/resumo/erp-resumo.component';\nexport {ErpResumoService as ɵb} from './components/resumo/erp-resumo.service';\nexport {ErpTributosService as ɵc} from './components/tributos/erp-tributos.service';\nexport {EntityService as ɵg} from './core/entities/entity-service';\nexport {QuantidadeDisponivelDemandaModule as ɵh} from './core/entities/quantidade-disponivel-demanda/quantidade-disponivel-demanda.module';\nexport {QuantidadeDisponivelDemandaService as ɵf} from './core/entities/quantidade-disponivel-demanda/quantidade-disponivel-demanda.service';"],"names":["PrimeBreadcrumbModule","MessageService","STableModule"],"mappings":"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"}
|