@seniorsistemas/yms-integration 1.9.0 → 2.0.0
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/seniorsistemas-yms-integration.umd.js +48 -2
- package/bundles/seniorsistemas-yms-integration.umd.js.map +1 -1
- package/bundles/seniorsistemas-yms-integration.umd.min.js +1 -1
- package/bundles/seniorsistemas-yms-integration.umd.min.js.map +1 -1
- package/esm2015/src/erp-senior/core/erp-process-data/erp-process-data.js +1 -1
- package/esm2015/src/erp-senior/core/erp-process-data/erp-process-service.js +45 -1
- package/esm2015/src/erp-senior/recebimento/form/recebimento-form.component.js +2 -2
- package/esm2015/src/erp-senior/recebimento-ordem-compra/form/recebimento-ordem-compra-form.component.js +2 -2
- package/esm5/src/erp-senior/core/erp-process-data/erp-process-data.js +1 -1
- package/esm5/src/erp-senior/core/erp-process-data/erp-process-service.js +47 -1
- package/esm5/src/erp-senior/recebimento/form/recebimento-form.component.js +2 -2
- package/esm5/src/erp-senior/recebimento-ordem-compra/form/recebimento-ordem-compra-form.component.js +2 -2
- package/fesm2015/seniorsistemas-yms-integration.js +46 -2
- package/fesm2015/seniorsistemas-yms-integration.js.map +1 -1
- package/fesm5/seniorsistemas-yms-integration.js +48 -2
- package/fesm5/seniorsistemas-yms-integration.js.map +1 -1
- package/package.json +1 -1
- package/seniorsistemas-yms-integration.metadata.json +1 -1
- package/src/erp-senior/core/erp-process-data/erp-process-data.d.ts +1 -0
- package/src/erp-senior/core/erp-process-data/erp-process-service.d.ts +6 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seniorsistemas-yms-integration.js","sources":["ng://@seniorsistemas/yms-integration/src/websocket.ts","ng://@seniorsistemas/yms-integration/src/service.ts","ng://@seniorsistemas/yms-integration/src/devices/cancelas/cancelas.service.ts","ng://@seniorsistemas/yms-integration/src/devices/cancelas/controlador-cancela/controlador-cancela.component.ts","ng://@seniorsistemas/yms-integration/src/devices/cancelas/cancelas.module.ts","ng://@seniorsistemas/yms-integration/src/devices/balancas/balancas.service.ts","ng://@seniorsistemas/yms-integration/src/devices/balancas/visualiar-balanca/visualizar-balanca.component.ts","ng://@seniorsistemas/yms-integration/src/stomp.config.ts","ng://@seniorsistemas/yms-integration/src/devices/balancas/balancas.module.ts","ng://@seniorsistemas/yms-integration/src/devices/cameras/cameras.service.ts","ng://@seniorsistemas/yms-integration/src/devices/cameras/view-image/view-image.component.ts","ng://@seniorsistemas/yms-integration/src/devices/cameras/snapshot/snapshot.component.ts","ng://@seniorsistemas/yms-integration/src/devices/cameras/cameras.module.ts","ng://@seniorsistemas/yms-integration/src/devices/lpr/lpr.service.ts","ng://@seniorsistemas/yms-integration/src/devices/lpr/lpr.module.ts","ng://@seniorsistemas/yms-integration/src/devices/logs/logs.service.ts","ng://@seniorsistemas/yms-integration/src/devices/logs/logs.component.ts","ng://@seniorsistemas/yms-integration/src/devices/logs/logs.module.ts","ng://@seniorsistemas/yms-integration/src/devices/portarias/portarias.service.ts","ng://@seniorsistemas/yms-integration/src/devices/portarias/portarias.component.ts","ng://@seniorsistemas/yms-integration/src/devices/portarias/agendas/agendas.component.ts","ng://@seniorsistemas/yms-integration/src/devices/portarias/confirmacao/confirmacao.component.ts","ng://@seniorsistemas/yms-integration/src/devices/portarias/entrada/entrada.component.ts","ng://@seniorsistemas/yms-integration/src/devices/portarias/portarias.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/entity-service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/injectors.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/agenda/agenda.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/recebimento-contrato/recebimento.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/recebimento/recebimento-chegada-veiculo.override.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/expedicao/expedicao.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/expedicao/expedicao-chegada-veiculo.override.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/integration.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/form/form.component.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/info/info.component.ts","ng://@seniorsistemas/yms-integration/src/utils/field-customization.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/verifica-nota-fiscal/verificaNotaFiscal.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/ordem-compra/ordem-compra.service.ts","ng://@seniorsistemas/yms-integration/src/utils/utils.ts","ng://@seniorsistemas/yms-integration/src/utils/lookup-utils.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/empresa/empresa.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/pessoa/pessoa.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/pessoa-juridica/pessoa-juridica.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/pais/pais.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/estado/estado.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/cidade/cidade.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/pessoa-endereco/pessoa-endereco.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/filial/filial.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/ordem-compra/ordem-compra.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/recebimento-ordem-compra/ordem-compra-form/ordem-compra-form.component.ts","ng://@seniorsistemas/yms-integration/src/utils/focus.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/nota-validator.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/components/nota-form/nota-form.component.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/components/nota-form/nota-form.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/agenda/agenda.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/cidade/cidade.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/cidade/cidade.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/contrato-compra-item/contrato-compra-item.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/contrato-compra-item/contrato-compra-item.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/contrato-compra/contrato-compra.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/contrato-compra/contrato-compra.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/derivacao/derivacao.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/derivacao/derivacao.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/empresa/empresa.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/empresa/empresa.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/estado/estado.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/estado/estado.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/familia-produto/familia-produto.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/familia-produto/familia-produto.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/filial/filial.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/filial/filial.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/pais/pais.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/pais/pais.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/pedido-venda-item/pedido-venda-item.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/pedido-venda-item/pedido-venda-item.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/pedido-venda/pedido-venda.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/pedido-venda/pedido-venda.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/pessoa-endereco/pessoa-endereco.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/pessoa-endereco/pessoa-endereco.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/pessoa-fisica/pessoa-fisica.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/pessoa-fisica/pessoa-fisica.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/pessoa-juridica/pessoa-juridica.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/pessoa-juridica/pessoa-juridica.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/pessoa/pessoa.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/pessoa/pessoa.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/produto/produto.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/produto/produto.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/has-change/has-change-service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/erp-process-data/erp-process-data.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/erp-process-data/erp-process-service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/erp-form-config/erp-form-config-service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/recebimento-contrato/recebimento.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/royalty/royalty.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/royalty/royalty.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/safra/safra.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/safra/safra.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/transportadora/transportadora.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/transportadora/transportadora.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/unidade-medida/unidade-medida.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/unidade-medida/unidade-medida.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/expedicao/expedicao.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/devolucao/devolucao.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/devolucao/devolucao.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/ordem-compra/ordem-compra.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/recebimento-ordem-compra/recebimento-ordem-compra.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/recebimento-ordem-compra/recebimento-ordem-compra.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/transgenia/transgenia.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/transgenia/transgenia.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/processo-avulso/processo-avulso.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/processo-avulso/processo-avulso.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/log-integracao/log-integracao.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/log-integracao/log-integracao.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/core.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/devolucao/devolucao-chegada-veiculo.override.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/agenda/agenda.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/unidade-medida/unidade-medida.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/royalty/royalty.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/familia-produto/familia-produto.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/produto/produto.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/derivacao/derivacao.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/transportadora/transportadora.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/devolucao/devolucao.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/enums/status-agenda.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/devolucao/form/devolucao-form.component.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/devolucao/info/info/devolucao-info.component.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/expedicao/expedicao.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/expedicao/form/expedicao-form.component.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/expedicao/info/expedicao-info.component.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/log-integracao/log-integracao.component.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/processo-avulso/processo-avulso.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/processo-avulso/processo-avulso-chegada-veiculo.override.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/processo-avulso/form/processo-avulso-form.component.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/processo-avulso/info/processo-avulso-info.component.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/safra/safra.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/recebimento-ordem-compra/recebimento-ordem-compra.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/recebimento-ordem-compra/recebimento-ordem-compra-chegada-veiculo.override.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/recebimento-ordem-compra/form/recebimento-ordem-compra-form.component.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/recebimento-ordem-compra/info/recebimento-ordem-compra-info.component.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/contrato-compra/contrato-compra.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/contrato-compra-item/contrato-compra-item.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/recebimento/contrato-form/contrato-form.component.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/transgenia/transgenia.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/recebimento-contrato/recebimento.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/enums/tipo-nota-fiscal.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/enums/tipo-participante-transgenia.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/recebimento/form/recebimento-form.component.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/recebimento/info/recebimento-info.component.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/erp-senior.module.ts"],"sourcesContent":["import { StompService, StompState } from \"@stomp/ng2-stompjs\";\nimport { CookieService } from \"ngx-cookie-service\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\n\nexport class IntegrationWebSocket {\n private _subscriptionUrl: string;\n private _unsubscribe$: Subject<void>;\n constructor(private _client: StompService, _cookieService: CookieService, _service: string) {\n const tokenObject = JSON.parse(_cookieService.get(\"com.senior.token\")); \n const token = tokenObject.access_token;\n const tenant = tokenObject.username.split(\"@\")[1];\n this._subscriptionUrl = `/topic/${tenant}/${token}/yms/${_service}/`;\n this._unsubscribe$ = new Subject();\n }\n\n public connect(callback: (url: string, client: StompService, state?: StompState) => void): void {\n this._client.connectObservable\n .pipe(takeUntil(this._unsubscribe$))\n .subscribe((state) => callback(this._subscriptionUrl, this._client, state));\n }\n\n public dispose() {\n this._unsubscribe$.next();\n this._unsubscribe$.complete();\n }\n}","import { catchError } from \"rxjs/operators\";\nimport { HttpParams } from \"@angular/common/http\";\nimport { throwError } from \"rxjs\";\nimport { MessageService } from \"primeng/api\";\nexport class Service {\n constructor(protected messageService: MessageService) {}\n protected getListQueryParams(listParams: ListParams) {\n const { page = 0, size = 10, sort = [], filterQuery = \"\", displayFields = [] } = listParams;\n let params = new HttpParams();\n params = params.append(\"size\", String(size));\n params = params.append(\"offset\", String(page));\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 if (filterQuery) params = params.append(\"filter\", filterQuery);\n if (displayFields && displayFields.length) params = params.append(\"displayfields\", displayFields.join());\n return params;\n }\n protected defaultCatch() {\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 this.messageService.add({\n severity: \"error\",\n summary,\n detail,\n });\n }\n return throwError(err);\n });\n }\n}\nexport interface ListParams {\n page?: number;\n size?: number;\n sort?: any[];\n filterQuery?: string;\n displayFields?: string[];\n}","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/api\";\nimport { Service } from \"../../service\";\n\n@Injectable()\nexport class ControladorCancelasService extends Service {\n private readonly url = 'yms/integration/';\n \n constructor(private http: HttpClient, protected messageService: MessageService) {\n super(messageService);\n }\n public listGateByArea(areaId: string) {\n const params = this.getListQueryParams({\n size: 1000,\n page: 0,\n displayFields: [\"*\"],\n filterQuery: `area.id eq '${areaId}'`\n });\n return this.http.get(`${this.url}entities/gate`, { params })\n }\n public openGate(ip: string) {\n return this.http.post(`${this.url}actions/openGate`, { ip }).pipe(this.defaultCatch());\n }\n public closeGate(ip: string) {\n return this.http.post(`${this.url}actions/closeGate`, { ip }).pipe(this.defaultCatch());\n }\n}\n","import { Component, Input, OnChanges, OnInit, SimpleChanges, OnDestroy } from \"@angular/core\";\nimport { ControleCircuito, ControleOperacao } from \"@seniorsistemas/yms-routines\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil, finalize, map } from \"rxjs/operators\";\nimport { ControladorCancelasService } from \"../cancelas.service\";\nimport { Gate } from \"../gate\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { trigger, state, style, transition, animate } from \"@angular/animations\";\nimport { PermissionsService } from \"@seniorsistemas/platform-components\";\n@ControleCircuito({\n header: \"Cancelas\",\n name: \"yms.integracao.devices\"\n})\n@ControleOperacao({\n header: 'Cancelas',\n name: 'yms.integracao.devices'\n})\nexport class ControladorCancelaDescritor{}\n@Component({\n selector: 'controlador-cancela-component',\n templateUrl: \"./controlador-cancela.component.html\",\n animations: [\n trigger('success', [\n state('*', style({\n backgroundColor: '#0C9348',\n opacity: 0.5\n })),\n state('default', style({\n backgroundColor: '#FFF',\n opacity: 1\n })),\n transition('* => default', animate('1.2s ease-in')),\n transition('default => *', animate('0s'))\n ])\n ]\n})\nexport class ControladorCancelaComponent extends ControladorCancelaDescritor implements OnInit, OnDestroy {\n @Input() sequenciaCircuito: any;\n gates$: Subject<Gate[]>;\n loading: string;\n successState: string = 'default';\n canOpenGate:boolean = false;\n canCloseGate:boolean = false;\n private readonly unsubscribe$: Subject<void>;\n constructor(private service: ControladorCancelasService, private translate: TranslateService, private permissionsService: PermissionsService) {\n super();\n this.unsubscribe$ = new Subject();\n this.gates$ = new Subject();\n }\n public ngOnInit() {\n this.service\n .listGateByArea(this.sequenciaCircuito.area.id)\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((res: any) => this.gates$.next(res.contents));\n\n this.permissionsService\n .get(\"gate\")\n .pipe(map((permissions: any) => {\n if (permissions.Open) {\n this.canOpenGate = true;\n }\n if (permissions.Close) {\n this.canCloseGate = true;\n }\n }))\n .toPromise();\n\n }\n public ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n public model(gate: Gate) {\n return [\n {\n label: this.translate.instant('yms.integration.open_gate'),\n visible: this.canOpenGate,\n command: () => this.openGate(gate)\n },\n {\n label: this.translate.instant('yms.integration.close_gate'),\n visible: this.canCloseGate,\n command: () => this.closeGate(gate)\n }\n ]\n }\n private openGate(gate: Gate) {\n this.loading = gate.id;\n this.service.openGate(gate.ip)\n .pipe(takeUntil(this.unsubscribe$), finalize(() => this.loading = undefined))\n .subscribe(_ => this.successState = gate.id);\n }\n private closeGate(gate: Gate) {\n this.loading = gate.id;\n this.service.closeGate(gate.ip)\n .pipe(takeUntil(this.unsubscribe$), finalize(() => this.loading = undefined))\n .subscribe(res => this.successState = gate.id);\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { ButtonModule, LoadingStateModule } from \"@seniorsistemas/angular-components\";\nimport { MessageModule } from \"primeng/message\";\nimport { TableModule } from \"primeng/table\";\nimport { ControladorCancelasService } from \"./cancelas.service\";\nimport { ControladorCancelaComponent } from \"./controlador-cancela/controlador-cancela.component\";\nimport { IntegrationDispatcher } from \"@seniorsistemas/yms-routines\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n@NgModule({\n imports: [\n CommonModule, \n TableModule, \n TranslateModule,\n MessageModule,\n ButtonModule,\n LoadingStateModule,\n PermissionsModule.forChild([\n {\n name: \"gate\",\n actions: [\"Open\", \"Close\"],\n uri: `res://senior.com.br/yms/devices/gate`,\n },\n ]),\n\n ],\n declarations: [ControladorCancelaComponent],\n entryComponents: [ControladorCancelaComponent],\n exports: [ControladorCancelaComponent],\n providers: [ControladorCancelasService]\n})\nexport class CancelasModule {\n constructor(private dispatcher: IntegrationDispatcher) {\n this.dispatcher.dispatch(ControladorCancelaComponent);\n }\n}","import { HttpClient } from \"@angular/common/http\";\nimport { Service, ListParams } from \"../../service\";\nimport { MessageService } from \"primeng/api\";\nimport { Injectable } from \"@angular/core\";\n\n@Injectable()\nexport class BalancasService extends Service {\n private readonly urlIntegration = `yms/integration/`;\n private readonly urlBalanca = `yms/balanca/`;\n constructor(private http: HttpClient, protected messageService: MessageService) {\n super(messageService);\n }\n getWeightScaleByArea(areaId: string) {\n const params: ListParams = {\n displayFields: [\"description\", \"code\"],\n page: 0,\n size: 1000,\n filterQuery: `area.id eq '${areaId}'`\n }\n return this.http.get(`${this.urlIntegration}entities/weightScale`,\n { params: this.getListQueryParams(params) }).pipe(this.defaultCatch())\n }\n\n fallbackCall(balanca: string, peso: number) {\n return this.http.post(`${this.urlBalanca}actions/manualWeight`, { code: balanca, weight: peso }).pipe(this.defaultCatch());\n }\n\n getWeightScaleByCode(code: string) {\n const params: ListParams = {\n displayFields: [\"description\", \"code\"],\n page: 0,\n size: 10,\n filterQuery: `code eq '${code}'`\n };\n return this.http.get(`${this.urlIntegration}entities/weightScale`, { params: this.getListQueryParams(params) }).pipe(this.defaultCatch());\n }\n}","import { Component, OnInit, OnDestroy, Input } from \"@angular/core\";\nimport { ControleCircuito, ControleOperacao } from \"@seniorsistemas/yms-routines\";\nimport { BalancasService } from \"../balancas.service\";\nimport { Subject, BehaviorSubject } from \"rxjs\";\nimport { takeUntil, finalize, map } from \"rxjs/operators\";\nimport { WeightScale } from \"../weightScale\";\nimport { StompService } from \"@stomp/ng2-stompjs\";\nimport { CookieService } from \"ngx-cookie-service\";\nimport { Message } from \"@stomp/stompjs\";\nimport { IntegrationWebSocket } from \"../../../websocket\";\n\n@ControleCircuito({\n header: 'Balanças',\n name: 'yms.integracao.devices'\n})\n@ControleOperacao({\n header: 'Balanças',\n name: 'yms.integracao.devices'\n})\nexport class VisualizarBalancaDescritor {}\n\n@Component({\n selector: 'visualizar-balanca-component',\n templateUrl: './visualizar-balanca.component.html'\n})\nexport class VisualizarBalancaComponent extends VisualizarBalancaDescritor \n implements OnInit, OnDestroy {\n @Input() sequenciaCircuito: any;\n loading = false;\n weightScales$: BehaviorSubject<WeightScale[]>;\n weightScaleValues: Map<string, number>;\n private readonly unsubscribe$: Subject<void>;\n private websocket: IntegrationWebSocket;\n\n constructor(private service: BalancasService, \n private client: StompService, \n private cookieService: CookieService) {\n super();\n this.websocket = new IntegrationWebSocket(this.client, this.cookieService, 'integration');\n this.unsubscribe$ = new Subject();\n this.weightScales$ = new BehaviorSubject([]);\n this.weightScaleValues = new Map();\n }\n ngOnInit() {\n if (!this.sequenciaCircuito) return;\n this.loading = true;\n this.service.getWeightScaleByArea(this.sequenciaCircuito.area.id)\n .pipe(takeUntil(this.unsubscribe$), finalize(() => this.loading = false))\n .subscribe(({ contents }: any) => {\n this.weightScales$.next(contents);\n contents.forEach((value: WeightScale) => {\n this.weightScaleValues.set(value.id, 0);\n });\n });\n\n this.websocket.connect((url, client) => {\n client.subscribe(`${url}wsWeightScale`)\n .pipe(\n map((message: Message) => message.body),\n map((body: string) => JSON.parse(body).data),\n takeUntil(this.unsubscribe$)\n )\n .subscribe((payload: WsWeightScalePayload) => {\n if (!this.weightScales$.value.length) return;\n \n const index = this.weightScales$.value.findIndex(value => value.id === payload.weightScale.id);\n if (index < 0) return;\n const find = this.weightScales$.value[index];\n this.weightScaleValues.set(find.id, payload.weight);\n });\n });\n }\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n \n}\nexport interface WsWeightScalePayload {\n weight: number;\n weightScale: WeightScale;\n}","import * as SockJS from \"sockjs-client\";\nimport { StompConfig } from \"@stomp/ng2-stompjs\";\n\nexport class CustomStompConfig extends StompConfig {\n socketProvider: any;\n \n constructor() {\n super();\n const token = this.getCookieObject('com.senior.token').access_token;\n const url = `${this.getCookie('com.senior.base.url')}/websocket/subscription`;\n this.socketProvider = () => new SockJS(url);\n this.configureConfig(token);\n }\n private getCookieObject(cname: string) {\n const cookie = this.getCookie(cname);\n if (!cookie) return cookie;\n return JSON.parse(cookie);\n }\n private getCookie(cname: string) {\n try {\n let name = cname + \"=\";\n let decodedCookie = decodeURIComponent(document.cookie);\n let ca = decodedCookie.split(';');\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n while (c.charAt(0) == ' ') {\n c = c.substring(1);\n }\n if (c.indexOf(name) == 0) {\n return c.substring(name.length, c.length);\n }\n }\n return null;\n } catch(e) {\n return null;\n }\n }\n private configureConfig (token: string) {\n this.url = this.socketProvider,\n this.headers = {\n \"content-type\": \"application/json\",\n \"Authorization\": \"Bearer \" + token,\n \"Access-Control-Allow-Origin\": \"*\"\n },\n this.heartbeat_in = 10000,\n this.heartbeat_out = 10000,\n this.reconnect_delay = 15000, \n this.debug = false\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { VisualizarBalancaComponent } from \"./visualiar-balanca/visualizar-balanca.component\";\nimport { CommonModule } from \"@angular/common\";\nimport { TableModule } from \"primeng/table\";\nimport { LoadingStateModule } from \"@seniorsistemas/angular-components\";\nimport { BalancasService } from \"./balancas.service\";\nimport { MessageModule } from \"primeng/message\";\nimport { IntegrationDispatcher } from \"@seniorsistemas/yms-routines\";\nimport { StompConfig, StompService } from \"@stomp/ng2-stompjs\";\nimport { CustomStompConfig } from \"../../stomp.config\";\nimport { CookieService } from \"ngx-cookie-service\";\n@NgModule({\n imports: [\n CommonModule,\n TableModule,\n MessageModule,\n LoadingStateModule,\n ],\n declarations: [VisualizarBalancaComponent],\n entryComponents: [VisualizarBalancaComponent],\n exports: [VisualizarBalancaComponent],\n providers: [\n BalancasService,\n CookieService,\n StompService,\n {\n provide: StompConfig,\n useClass: CustomStompConfig\n }\n ]\n})\nexport class BalancaModule {\n constructor(private dispatcher: IntegrationDispatcher) {\n this.dispatcher.dispatch(VisualizarBalancaComponent);\n }\n}","import { Injectable } from \"@angular/core\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { Service, ListParams } from \"../../service\";\nimport { MessageService } from \"primeng/api\";\nimport { Camera } from \"./camera\";\n\n@Injectable()\nexport class CamerasService extends Service {\n\n private readonly url = 'yms/integration/';\n private readonly patioUrl = 'yms/patio/'\n\n constructor(private http: HttpClient, messageService: MessageService) { \n super(messageService);\n }\n\n public getCamerasByArea(areaId: string) {\n const params: ListParams = {\n page: 0,\n size: 1000,\n filterQuery: `area.id eq '${areaId}'`,\n displayFields: [\"id\", \"description\", \"ip\"]\n }\n\n return this.http\n .get(`${this.url}entities/camera`, { params: this.getListQueryParams(params) })\n .pipe(this.defaultCatch());\n }\n\n public takeSnapshot(camera: Camera) {\n return this.http.get(`${this.url}queries/fetchSnapshot`, { params: {ip: camera.ip }}).pipe(this.defaultCatch());\n }\n\n public saveSnapshotInCircuit(payload: SaveSnapshotInCircuitPayload) {\n return this.http.post(`${this.patioUrl}actions/adicionaImagemExecucaoCircuito`, payload).pipe(this.defaultCatch());\n }\n}\n\nexport interface SaveSnapshotInCircuitPayload {\n execucaoCircuitoId: string;\n alvoId: string;\n cameraIp: string;\n imagemUrl: string;\n}","import { Component, OnInit } from \"@angular/core\";\nimport { DynamicDialogConfig, DynamicDialogRef, MessageService } from \"primeng/api\";\nimport { Subject } from \"rxjs\";\nimport { finalize, takeUntil } from \"rxjs/operators\";\nimport { CamerasService } from \"../cameras.service\";\n\n@Component({\n selector: 'view-image-component',\n template: `\n <s-loading-state [loading]=\"loading\">\n <img [src]=\"imageUrl\" width=\"100%\">\n <br>\n </s-loading-state>\n\n <div style=\"position: absolute; bottom: 0; width: 670px; padding-top: 10px; border-top: 1px solid #ccc;\" [style.pointer-events]=\"loading ? 'none' : 'all'\">\n <s-button priority=\"primary\" label=\"Salvar\" (onClick)=\"save()\"></s-button>\n <s-button priority=\"link\" label=\"Cancelar\" (onClick)=\"close()\"></s-button>\n </div> \n `,\n})\nexport class ViewImageComponent implements OnInit {\n imageUrl: string;\n loading = false;\n\n private readonly unsubscribe$: Subject<boolean>;\n constructor(private dialogRef: DynamicDialogRef, \n private dialogConfig: DynamicDialogConfig,\n private service: CamerasService,\n private messageService: MessageService) {\n this.unsubscribe$ = new Subject();\n }\n\n ngOnInit() {\n this.imageUrl = this.dialogConfig.data.url;\n }\n\n save() {\n this.loading = true;\n const execucaoCircuito = this.dialogConfig.data.execucaoCircuito;\n let cameraIp = this.dialogConfig.data.cameraIp;\n\n this.service.saveSnapshotInCircuit({\n execucaoCircuitoId: execucaoCircuito.id,\n alvoId: execucaoCircuito.sequenciaCircuito.id,\n cameraIp,\n imagemUrl: this.imageUrl\n })\n .pipe(\n takeUntil(this.unsubscribe$),\n finalize(() => this.loading = false)\n )\n .subscribe(() => {\n this.messageService.add({\n severity: 'success',\n summary: 'Salvo com sucesso!',\n detail: 'Imagem salva com sucesso'\n });\n this.dialogRef.close();\n });\n }\n\n close(data?: any) {\n this.dialogRef.close(data);\n }\n}","import { Component, Input, OnInit, OnDestroy } from \"@angular/core\";\nimport { ControleOperacao, ControleCircuito } from \"@seniorsistemas/yms-routines\";\nimport { Subject } from \"rxjs\";\nimport { Camera } from \"../camera\";\nimport { CamerasService } from \"../cameras.service\";\nimport { takeUntil, finalize } from \"rxjs/operators\";\nimport { DialogService } from \"primeng/api\";\nimport { ViewImageComponent } from \"../view-image/view-image.component\";\n\n@ControleOperacao({\n header: 'Câmeras',\n name: 'yms.integracao.devices'\n})\n@ControleCircuito({\n header: 'Câmeras',\n name: 'yms.integracao.devices'\n})\nexport class SnapshotDescritor {}\n\n@Component({\n selector: 'snapshot-component',\n templateUrl: './snapshot.component.html',\n styleUrls: ['./snapshot.component.scss'],\n providers: [DialogService]\n})\nexport class SnapshotComponent extends SnapshotDescritor implements OnInit, OnDestroy {\n @Input() sequenciaCircuito: any;\n @Input() execucaoCircuito: any;\n cameras$: Subject<Camera>;\n\n loadingAll = false;\n loading: string[] = [];\n\n private readonly unsubscribe$: Subject<void>;\n constructor(private service: CamerasService, private dialogService: DialogService) {\n super();\n this.unsubscribe$ = new Subject();\n this.cameras$ = new Subject();\n }\n\n public ngOnInit() {\n this.loadingAll = true;\n this.service.getCamerasByArea(this.sequenciaCircuito.area.id)\n .pipe(takeUntil(this.unsubscribe$), finalize(() => this.loadingAll = false))\n .subscribe(({ contents }: any) => this.cameras$.next(contents));\n }\n\n public ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n\n public takeSnapshot(camera: Camera) {\n this.loading.push(camera.id);\n this.service.takeSnapshot(camera)\n .pipe(\n takeUntil(this.unsubscribe$),\n finalize(() => {\n const index = this.loading.indexOf(camera.id);\n this.loading.splice(index, 1);\n })\n )\n .subscribe(({ url }: any) => {\n this.dialogService.open(ViewImageComponent, {\n header: camera.description,\n width: \"700px\",\n height: \"600px\",\n contentStyle: {\n 'height': '500px',\n overflow: 'hidden'\n },\n data: { \n url,\n cameraIp: camera.ip,\n execucaoCircuito: this.execucaoCircuito\n }\n });\n });\n }\n\n}","import { NgModule } from \"@angular/core\";\nimport { SnapshotComponent } from \"./snapshot/snapshot.component\";\nimport { CommonModule } from \"@angular/common\";\nimport { LoadingStateModule, ButtonModule } from \"@seniorsistemas/angular-components\";\nimport { IntegrationDispatcher } from \"@seniorsistemas/yms-routines\";\nimport { CamerasService } from \"./cameras.service\";\nimport { DynamicDialogModule } from \"primeng/components/dynamicdialog/dynamicdialog\";\nimport { ViewImageComponent } from \"./view-image/view-image.component\";\n\n@NgModule({\n imports: [\n CommonModule,\n ButtonModule,\n LoadingStateModule,\n DynamicDialogModule\n ],\n declarations: [SnapshotComponent, ViewImageComponent],\n entryComponents: [SnapshotComponent, ViewImageComponent],\n exports: [SnapshotComponent],\n providers: [CamerasService]\n})\nexport class CamerasModule {\n constructor(private dispatcher: IntegrationDispatcher) {\n this.dispatcher.dispatch(SnapshotComponent);\n }\n}","import { Injectable } from \"@angular/core\";\nimport { Service, ListParams } from \"../../service\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { MessageService } from \"primeng/api\";\n\n@Injectable()\nexport class LprService extends Service {\n\n private readonly url = `yms/integration/`;\n constructor(private http: HttpClient, protected messageService: MessageService) {\n super(messageService);\n }\n\n getLprByArea(areaId: string) {\n const params: ListParams = {\n page: 0,\n size: 1000,\n filterQuery: `area.id eq '${areaId}'`,\n displayFields: [\"id\", \"stream\", \"description\", \"area.*\"]\n }\n\n return this.http\n .get(`${this.url}entities/lprConfiguration`, { params: this.getListQueryParams(params) })\n .pipe(this.defaultCatch());\n }\n\n fallbackCall(stream: string, licencePlate: string) {\n return this.http.post(`${this.url}actions/lprEventPublish`, { stream, licencePlate }).pipe(this.defaultCatch());\n }\n\n getLprByCode(code: string) {\n const params: ListParams = {\n page: 0,\n size: 10,\n filterQuery: `stream eq '${code}'`,\n displayFields: [\"id\", \"stream\", \"description\", \"locked\"]\n };\n\n return this.http.get(`${this.url}entities/lprConfiguration`, { params: this.getListQueryParams(params) }).pipe(this.defaultCatch());\n }\n}","import { NgModule } from \"@angular/core\";\nimport { LprService } from \"./lpr.service\";\n\n@NgModule({\n providers: [ LprService ]\n})\nexport class LprModule {}","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/api\";\nimport { ListParams, Service } from \"../../service\";\n\n@Injectable()\nexport class LogsService extends Service {\n private readonly url = `yms/integration/`;\n constructor (private http: HttpClient, protected messageService: MessageService) {\n super(messageService);\n }\n\n listLogByCircuit(execucaoCircuitoId: string, params: ListParams) {\n params.filterQuery = `execucaoCircuitoId eq '${execucaoCircuitoId}'`;\n return this.http.get(`${this.url}entities/logCircuit`, { params: this.getListQueryParams(params) }).pipe(this.defaultCatch());\n }\n}\n","import { Component, Input, OnDestroy, OnInit } from \"@angular/core\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { CircuitoFinalizado } from \"@seniorsistemas/yms-routines\";\nimport { LazyLoadEvent, SortMeta } from \"primeng/api\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { LogCircuit } from \"./log-circuit\";\nimport { LogsService } from \"./logs.service\";\n\n@CircuitoFinalizado({\n header: 'Logs com dispositivos',\n name: \"yms.integracao.devices\"\n})\nexport class LogDescritor { }\n\n@Component({\n templateUrl: './logs.component.html'\n})\nexport class LogsComponent extends LogDescritor implements OnInit, OnDestroy {\n @Input() execucaoCircuito: any;\n columns: any[];\n logsData: LogCircuit[];\n totalRecords: number;\n\n loading: boolean;\n\n private readonly unsubscribe$ = new Subject<void>();\n constructor(\n private logsService: LogsService,\n private translate: TranslateService\n ) {\n super();\n }\n\n ngOnInit() {\n this.columns = [\n { field: \"username\", header: this.translate.instant(\"yms.integration.usuario\") },\n { field: \"log\", header: this.translate.instant(\"yms.integration.log\") },\n { field: \"createdDate\", header: this.translate.instant(\"yms.integration.created_date\") }\n ];\n }\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n\n onGridChange(event: LazyLoadEvent) {\n const size = event.rows;\n const page = event.first / size;\n const sort: SortMeta[] = [{ field: 'createdDate', order: -1 }];\n this.updateGrid({ size, page, sort });\n }\n\n private updateGrid(params: { size: number, page: number, sort: any[] }) {\n this.loading = true;\n const { page, size, sort } = params;\n\n this.logsService.listLogByCircuit(this.execucaoCircuito.id, { page, size, sort })\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(({ contents, totalElements }: any) => {\n this.logsData = contents;\n this.totalRecords = totalElements;\n });\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { LoadingStateModule } from \"@seniorsistemas/angular-components\";\nimport { IntegrationDispatcher } from \"@seniorsistemas/yms-routines\";\nimport { TooltipModule } from \"primeng/primeng\";\nimport { TableModule } from \"primeng/table\";\nimport { LogsComponent } from \"./logs.component\";\nimport { LogsService } from \"./logs.service\";\n\n@NgModule({\n declarations: [ LogsComponent ],\n entryComponents: [ LogsComponent ],\n providers: [ LogsService ],\n imports: [\n CommonModule,\n TableModule,\n TranslateModule,\n TooltipModule,\n LoadingStateModule\n ]\n})\nexport class LogsModule {\n constructor(integrationDispatcher: IntegrationDispatcher) {\n integrationDispatcher.dispatch(LogsComponent);\n }\n}","import { Injectable } from \"@angular/core\";\nimport { Service, ListParams } from \"../../service\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { MessageService } from \"primeng/api\";\n\n@Injectable()\nexport class PortariasService extends Service {\n constructor(private http: HttpClient, messageService: MessageService) {\n super(messageService);\n }\n\n agendas(params: ListParams) {\n return this.http.get(`yms/patio/entities/agenda`, { params: this.getListQueryParams(params) }).pipe(this.defaultCatch());\n }\n \n ultimaPlacaLida(stream: string) {\n return this.http.post(`yms/integration/queries/getLastValidPlateByLpr`, { stream }).pipe(this.defaultCatch());\n }\n\n getPortarias(plantaId: string) {\n return this.http.get(`yms/integration/entities/lobby`, { params: this.getListQueryParams({ page: 0, size: 100, filterQuery: `planta.id eq '${plantaId}'`, displayFields: [ 'description', 'entranceLpr.*', 'lprs.*', 'planta.*' ] }) }).pipe(this.defaultCatch());\n }\n\n executarEntrada(lobbyId: string, placa: string) {\n return this.http.post(`yms/integration/actions/executeLobby`, { lobbyId, plate: placa }).pipe(this.defaultCatch());\n }\n}","import { Component, OnInit, OnDestroy } from \"@angular/core\";\nimport { ControleUnificado } from \"@seniorsistemas/yms-routines\";\nimport { Subject } from \"rxjs\";\nimport { SelectPlantService } from \"@seniorsistemas/yms-components\";\nimport { PortariasService } from \"./portarias.service\";\nimport { takeUntil } from \"rxjs/operators\";\n\n@ControleUnificado({\n header: 'Periféricos',\n name: \"yms.integracao.devices\"\n})\nexport class PortariasDescritor {}\n\n@Component({\n selector: 'portarias',\n template: `\n <h3>Portarias</h3>\n <div class=\"separator\"></div>\n <div class=\"ui-g\">\n <portaria-entrada *ngFor=\"let portaria of portarias\" class=\"ui-md-4\" [portaria]=\"portaria\"></portaria-entrada>\n </div>\n `,\n\n})\nexport class PortariasComponent extends PortariasDescritor implements OnInit, OnDestroy {\n portarias: any[];\n unsubscribe$ = new Subject<void>();\n constructor(private selectPlantService: SelectPlantService, private portariaService: PortariasService) {\n super();\n }\n\n ngOnInit() {\n const planta = this.selectPlantService.getPlant();\n this.portariaService.getPortarias(planta.id)\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(({ contents }) => this.portarias = contents);\n }\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n\n}","import { Component, OnInit, OnDestroy } from \"@angular/core\";\nimport { DynamicDialogRef, DynamicDialogConfig } from \"primeng/api\";\nimport { Subject } from \"rxjs\";\nimport { PortariasService } from \"../portarias.service\";\nimport { takeUntil, finalize } from \"rxjs/operators\";\nimport { Router } from \"@angular/router\";\n\n@Component({\n template: `\n <div style=\"width: 100%; height: calc(100% - 50px); overflow: auto;\">\n <div *sLoadingState=\"loading\">\n <p-table [value]=\"agendas\" [columns]=\"getColumns()\" selectionMode=\"single\" [(selection)]=\"selected\" dataKey=\"id\">\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th style=\"width: 50px;\"></th>\n <th *ngFor=\"let column of columns\">{{column.label}}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-rowData>\n <tr [pSelectableRow]=\"rowData\">\n <td style=\"width: 50px;\">\n <p-tableRadioButton [value]=\"rowData\"></p-tableRadioButton>\n </td>\n <td>{{rowData['descricao']}}</td>\n <td>{{rowData['dataEsperadaAgendamento'] | date: 'dd/MM/yyyy HH:mm'}}</td>\n <td>{{rowData['tipoAgendamento']?.descricao}}</td>\n <td>{{rowData['externalTenant']?.descricao}}</td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n </div>\n <div style=\"position: absolute; left: 0; right: 0; bottom: 0; display: flex; justify-content: flex-end; height: 40px; align-items: center;\">\n <s-button priority=\"primary\" label=\"Registrar chegada\" [disabled]=\"!selected\" (onClick)=\"chegada()\"></s-button>\n <s-button priority=\"primary\" label=\"Registrar chegada simplificada\" (onClick)=\"chegadaSimplificada()\"></s-button>\n </div>\n `\n})\nexport class AgendasComponent implements OnInit, OnDestroy {\n agendas: any;\n selected: any;\n veiculo: string;\n portaria: any;\n loading: boolean;\n private readonly unsubscribe$ = new Subject<void>();\n constructor(private dialogRef: DynamicDialogRef, \n private dialogConfig: DynamicDialogConfig,\n private portariaService: PortariasService,\n private router: Router) { }\n\n ngOnInit() {\n this.veiculo = this.dialogConfig.data.veiculo;\n this.portaria = this.dialogConfig.data.portaria;\n this.loading = true;\n this.portariaService\n .agendas({ \n size: 100, \n page: 0, \n displayFields: ['veiculo.primario.*', 'tipoAgendamento.*', 'descricao', 'externalTenant', 'dataEsperadaAgendamento'], \n filterQuery: `veiculo.primario.placa eq '${this.veiculo}' and status eq 'AGENDADO' and planta eq '${this.portaria.planta.id}'` \n })\n .pipe(takeUntil(this.unsubscribe$), finalize(() => this.loading = false))\n .subscribe(({ contents }) => {\n this.agendas = contents;\n if (!this.agendas.length) {\n this.chegadaSimplificada();\n return;\n }\n if (this.agendas.length === 1) {\n this.selected = this.agendas[0];\n }\n });\n \n }\n\n chegadaSimplificada() {\n this.router.navigate(['execucao-circuito/new'], { queryParams: { veiculo: this.veiculo, navigateTo: \"processo-entrada\" } });\n this.dialogRef.close();\n }\n\n chegada() {\n if (!this.selected) return;\n this.router.navigate([`execucao-circuito/${this.selected.id}`]);\n this.dialogRef.close();\n }\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n\n getColumns() {\n return [\n { field: 'descricao', label: 'Descrição' },\n { field: 'dataEsperadaAgendamento', label: 'Data' },\n { field: 'tipoAgendamento', label: 'Tipo de Agendamento' },\n { field: 'externalTenant', label: 'Parceiro' }\n ]\n }\n}","import { Component } from \"@angular/core\";\nimport { DynamicDialogRef } from \"primeng/api\";\n\n@Component({\n template: `\n <p>Não foi encontrada uma leitura de placa. Deseja informar a placa para realizar a entrada?</p>\n <div class=\"separator\"></div>\n <input pInputText type=\"text\" pattern=\"[A-Z0-9]{6,10}\" maxlength=\"10\" placeholder=\"Digite a placa\" [(ngModel)]=\"placa\" #placaInput>\n \n <div style=\"position: absolute; left: 0; right: 0; bottom: 0; display: flex; justify-content: flex-end; height: 40px; align-items: center;\">\n <s-button priority=\"primary\" label=\"Continuar\" [disabled]=\"!placa || !placaInput.validity.valid\" (onClick)=\"continue()\"></s-button>\n </div>\n `\n})\nexport class ConfirmacaoComponent {\n placa: string;\n\n constructor(private dialogRef: DynamicDialogRef) {}\n\n continue() {\n this.dialogRef.close({ placa: this.placa });\n }\n}","import { Component, OnInit, OnDestroy, Input } from \"@angular/core\";\nimport { DialogService } from \"primeng/api\";\nimport { filter, map, takeUntil, finalize, catchError, mergeMap } from \"rxjs/operators\";\nimport { AgendasComponent } from \"../agendas/agendas.component\";\nimport { ConfirmacaoComponent } from \"../confirmacao/confirmacao.component\";\nimport { IntegrationWebSocket } from \"../../../websocket\";\nimport { StompService } from \"@stomp/ng2-stompjs\";\nimport { CookieService } from \"ngx-cookie-service\";\nimport { Subject, throwError } from \"rxjs\";\nimport { Message } from \"@stomp/stompjs\";\nimport { PortariasService } from \"../portarias.service\";\nimport { Lpr } from \"../../lpr/lpr\";\n\n@Component({\n selector: 'portaria-entrada',\n template: `\n <div class=\"card-entrada\" *sLoadingState=\"loading\">\n <div class=\"portaria-card\">\n <h4>{{portaria?.description}}</h4>\n <s-button style=\"float: right\" [auxiliary]=\"true\" iconClass=\"fas fa-camera\" priority=\"default\" (onClick)=\"readPlaque()\"></s-button>\n </div>\n <div class=\"portaria-card\" *ngFor=\"let lpr of portaria.lprs\">\n <h4>{{lpr.description || lpr.stream}}</h4>\n <p-inputSwitch styleClass=\"lprInputSwitch\" [ngModel]=\"lpr.locked\" [readonly]=\"true\"></p-inputSwitch>\n </div>\n </div>\n `,\n styleUrls: ['./entrada.component.scss'],\n providers: [ DialogService ]\n})\nexport class EntradaComponent implements OnInit, OnDestroy {\n\n @Input() portaria: any;\n\n loading = false;\n\n websocket: IntegrationWebSocket;\n unsubscribe$ = new Subject<void>();\n constructor(private dialogService: DialogService, private portariaService: PortariasService, stompService: StompService, cookieService: CookieService) {\n this.websocket = new IntegrationWebSocket(stompService, cookieService, 'integration');\n }\n\n ngOnInit() {\n this.websocket.connect((url, client) => {\n client.subscribe(`${url}wsLprLockUnlocked`)\n .pipe(\n map((message: Message) => message.body),\n map((body: string) => JSON.parse(body).data),\n takeUntil(this.unsubscribe$)\n )\n .subscribe((response: WsLprLockUnlocked) => this.portaria.lprs = this.portaria.lprs.map((lpr: Lpr) => lpr.stream === response.stream ? { ...lpr, locked: response.locked } : lpr ))\n })\n }\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n\n readPlaque() {\n this.loading = true;\n this.portariaService.ultimaPlacaLida(this.portaria.entranceLpr.stream)\n .pipe(\n takeUntil(this.unsubscribe$),\n finalize(() => this.loading = false)\n )\n .subscribe(({ plate }) => {\n if (!plate) {\n return this.placaNaoEncontrada();\n }\n this.openAgendas(plate);\n })\n }\n\n placaNaoEncontrada() {\n this.dialogService.open(ConfirmacaoComponent, {\n header: 'Placa não encontrada',\n style: {\n \"display\": \"flex\",\n \"flex-direction\": \"column\",\n },\n height: \"80%\",\n styleClass: \"ui-g-12 ui-md-8\",\n contentStyle: {\n \"overflow-y\": \"auto\",\n \"height\": \"100%\",\n \"max-height\": \"100%\",\n \"flex\": 1\n }\n })\n .onClose\n .pipe(\n filter(data => !!data),\n )\n .subscribe(data => this.openAgendas(data.placa))\n }\n\n openAgendas(placa: string) {\n this.portariaService.executarEntrada(this.portaria.id, placa)\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(() => {\n this.dialogService.open(AgendasComponent, {\n header: `Agendamentos | ${placa.toUpperCase()}`,\n style: {\n \"display\": \"flex\",\n \"flex-direction\": \"column\",\n },\n height: \"80%\",\n styleClass: \"ui-g-12 ui-md-8\",\n contentStyle: {\n \"overflow-y\": \"auto\",\n \"height\": \"100%\",\n \"max-height\": \"100%\",\n \"flex\": 1\n },\n data: {\n veiculo: placa,\n portaria: this.portaria\n }\n })\n });\n }\n\n}\n\nexport interface WsLprLockUnlocked {\n stream: string;\n locked: boolean;\n}","import { NgModule } from \"@angular/core\";\nimport { PortariasComponent } from \"./portarias.component\";\nimport { IntegrationDispatcher } from \"@seniorsistemas/yms-routines\";\nimport { EntradaComponent } from \"./entrada/entrada.component\";\nimport { ButtonModule, LoadingStateModule } from \"@seniorsistemas/angular-components\";\nimport { AgendasComponent } from \"./agendas/agendas.component\";\nimport { TableModule } from \"primeng/table\";\nimport { HttpClientModule } from \"@angular/common/http\";\nimport { DynamicDialogModule } from \"primeng/components/dynamicdialog/dynamicdialog\";\nimport { MessageModule } from \"primeng/message\";\nimport { InputSwitchModule } from \"primeng/inputswitch\";\nimport { PortariasService } from \"./portarias.service\";\nimport { CommonModule } from \"@angular/common\";\nimport { RouterModule } from \"@angular/router\";\nimport { SelectPlantModule } from \"@seniorsistemas/yms-components\";\nimport { InputTextModule } from \"primeng/inputtext\";\nimport { ConfirmacaoComponent } from \"./confirmacao/confirmacao.component\";\nimport { FormsModule } from \"@angular/forms\";\nimport { CookieService } from \"ngx-cookie-service\";\nimport { StompService, StompConfig } from \"@stomp/ng2-stompjs\";\nimport { CustomStompConfig } from \"../../stomp.config\";\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n RouterModule,\n ButtonModule,\n TableModule,\n LoadingStateModule,\n InputSwitchModule,\n InputTextModule,\n DynamicDialogModule,\n HttpClientModule,\n SelectPlantModule,\n MessageModule\n ],\n declarations: [ PortariasComponent, EntradaComponent, AgendasComponent, ConfirmacaoComponent ],\n entryComponents: [ PortariasComponent, AgendasComponent, ConfirmacaoComponent ],\n providers: [ \n PortariasService,\n CookieService,\n StompService,\n {\n provide: StompConfig,\n useClass: CustomStompConfig\n }\n ]\n})\nexport class PortariasModule {\n constructor(dispatcher: IntegrationDispatcher) {\n dispatcher.dispatch(PortariasComponent);\n }\n}","import { HttpParams, HttpClient } from \"@angular/common/http\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { SortMeta } from \"primeng/components/common/api\";\nimport { throwError } from \"rxjs\";\nimport { catchError } from \"rxjs/operators\";\n\nexport class EntityService<T> {\n\n constructor(\n protected http: HttpClient,\n protected messageService: MessageService,\n protected entityUrl: string,\n protected actionsUrl: string\n ) {\n this.http = http;\n this.messageService = messageService;\n this.entityUrl = entityUrl;\n this.actionsUrl = actionsUrl;\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) params = params.append(\"displayfields\", displayFields.join());\n\n return params;\n }\n\n private getBodyParams(listParams: ListParams): BodyParams {\n const { page = 0, size = 10, sort = [], filterQuery = \"\", displayFields = [] } = listParams;\n const bodyParams: BodyParams = {};\n\n bodyParams.size = size;\n bodyParams.offset = page;\n\n if (sort && sort.length) {\n bodyParams.orderBy = 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 if (filterQuery) bodyParams.filter = filterQuery;\n\n if (displayFields && displayFields.length) bodyParams.displayfields = displayFields.join();\n\n return bodyParams;\n }\n\n public defaultCatch() {\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 list(listParams: ListParams) {\n return this.http.get<T[]>(this.entityUrl, { params: this.getListQueryParams(listParams) }).pipe(this.defaultCatch());\n }\n\n public get(id: any) {\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 public listCustomFilter(listParams: ListParams, action: string) {\n return this.http.post<T[]>(`${this.actionsUrl}/${action}`, this.getBodyParams(listParams)).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 BodyParams {\n offset?: number;\n size?: number;\n orderBy?: string;\n filter?: string;\n displayfields?: string;\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const ERP_ENVIRONMENT = new InjectionToken('integration_environment');","import { Injectable, Inject } from \"@angular/core\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\n\nimport { AgendaDto } from \"./agenda-dto\";\nimport { EntityService, ListParams } from \"../entity-service\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { ErpProcessData } from \"../../erp-process-data/erp-process-data\";\n\n@Injectable()\nexport class AgendaService extends EntityService<AgendaDto> {\n private readonly _agendaUrl: string;\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService, \n @Inject(ERP_ENVIRONMENT) environment: any ) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/agenda`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n this._agendaUrl = `${environment.project.domain}/patio`;\n }\n\n public atualizarAgenda(agenda: any) {\n return this.http.post(`${this._agendaUrl}/actions/atualizarAgenda`, {agenda}).pipe(this.defaultCatch());\n }\n\n public retornaModelosValidacao(tipoAgendamentoId: string) {\n return this.http.post(`yms/agenda/queries/retornaModelosDeValidacao`, {tipoAgendamentoId}).pipe(this.defaultCatch());\n }\n\n public checarRevalidacao(erpProcessData: ErpProcessData) {\n return this.http.post(`yms/agenda/actions/checarRevalidacao`, erpProcessData).pipe(this.defaultCatch());\n }\n\n public listExternalAgenda(listParams: ListParams) {\n return this.http\n .get<AgendaDto>(\"yms/agenda/entities/agenda\", {\n params: this.getListQueryParams(listParams),\n })\n .pipe(this.defaultCatch());\n }\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { RecebimentoContratoDto, ContratoRecebimento, ContratoRecebimentoItem } from \"./recebimento-dto\";\nimport { RecebimentoContrato } from \"./recebimento\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class RecebimentoContratoService extends EntityService<RecebimentoContratoDto> {\n private readonly _baseUrl: string;\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/recebimentoContrato`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n \n this._baseUrl = `${environment.project.domain}/${environment.project.service}`;\n }\n\n public registrarChegadaVeiculoComRecebimento(payload: RegistrarChegadaVeiculoComRecebimentoPayload) {\n return this.http.post(`${this._baseUrl}/actions/registrarChegadaDeVeiculoComRecebimento`, payload).pipe(this.defaultCatch());\n } \n\n public insertContratoRecebimento(recebimentoId: string, contratoRecebimento: ContratoRecebimento) {\n return this.http.post(`${this.entityUrl}/recebimento/${recebimentoId}/contratos`, contratoRecebimento).pipe(this.defaultCatch());\n }\n\n public insertContratoRecebimentoItem(contratoRecebimentoId: string, contratoRecebimentoItem: ContratoRecebimentoItem) {\n return this.http.post(`${this.entityUrl}/contratoRecebimento/${contratoRecebimentoId}/itens`, contratoRecebimentoItem).pipe(this.defaultCatch());\n }\n}\n\nexport interface RegistrarChegadaVeiculoComRecebimentoPayload {\n recebimento: RecebimentoContrato,\n circuito: string;\n sequenciaInicial: string;\n vagaInicial: string;\n}\n","import { Injectable } from \"@angular/core\";\nimport { ChegadaVeiculoOverride, OverrideParams } from \"@seniorsistemas/yms-routines\";\nimport { throwError } from \"rxjs\";\nimport { map, mergeMap } from \"rxjs/operators\";\nimport { AgendaService } from \"../core/entities/agenda/agenda.service\";\nimport { RecebimentoContrato } from \"../core/entities/recebimento-contrato/recebimento\";\nimport { RecebimentoContratoService } from \"../core/entities/recebimento-contrato/recebimento.service\";\n\n@Injectable()\nexport class RecebimentoChegadaVeiculoOverride {\n private readonly RECEBIMENTO_KEY = \"ERP_SENIOR_RECEBIMENTO\"\n constructor(\n private override: ChegadaVeiculoOverride,\n private agendaService: AgendaService,\n private recebimentoService: RecebimentoContratoService) {\n }\n\n public initialize() {\n this.override.addOverride(this.RECEBIMENTO_KEY, (params) => this.functionToOverride(params));\n }\n\n public remove() {\n this.override.disposeOverride(this.RECEBIMENTO_KEY);\n } \n\n private functionToOverride(params: OverrideParams) {\n return this.agendaService.atualizarAgenda(params.agenda)\n .pipe(\n mergeMap(_ => this.recebimentoService.list({\n filterQuery: `agenda.id eq '${params.agenda.id}'`,\n page: 0,\n size: 1\n })),\n map(({contents}) => contents.length ? contents[0] : null),\n mergeMap((recebimento: RecebimentoContrato) => {\n if (!recebimento) return throwError(\"Os dados da guia ERP Senior não foram informados\");\n\n return this.recebimentoService.registrarChegadaVeiculoComRecebimento({\n recebimento: recebimento,\n circuito: params.circuito.id,\n sequenciaInicial: params.sequencia.id,\n vagaInicial: (params.vaga || {}).id\n })\n })\n )\n }\n}","import { Injectable, Inject } from \"@angular/core\";\nimport { EntityService } from \"../entity-service\";\nimport { ExpedicaoDto } from \"./expedicao-dto\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { MessageService } from \"primeng/api\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { Expedicao } from \"./expedicao\";\n\n@Injectable()\nexport class ExpedicaoService extends EntityService<ExpedicaoDto> {\n\n private readonly _baseUrl: string;\n constructor(protected http: HttpClient, protected messageService: MessageService, @Inject(ERP_ENVIRONMENT) environment: any) {\n super(http, \n messageService, \n `${environment.project.domain}/${environment.project.service}/entities/expedicao`, \n `${environment.project.domain}/${environment.project.service}/actions`);\n this._baseUrl = `${environment.project.domain}/${environment.project.service}`;\n }\n\n public registrarChegadaVeiculoComExpedicao(payload: RegistrarChegadaVeiculoComExpedicaoPayload) {\n return this.http.post(`${this._baseUrl}/actions/registrarChegadaDeVeiculoComExpedicao`, payload).pipe(this.defaultCatch());\n }\n}\n\nexport interface RegistrarChegadaVeiculoComExpedicaoPayload {\n expedicao: Expedicao;\n circuito: string;\n sequenciaInicial: string;\n vagaInicial?: string;\n}","import { Injectable } from \"@angular/core\";\nimport { ChegadaVeiculoOverride, OverrideParams } from \"@seniorsistemas/yms-routines\";\nimport { throwError } from \"rxjs\";\nimport { map, mergeMap } from \"rxjs/operators\";\nimport { AgendaService } from \"../core/entities/agenda/agenda.service\";\nimport { Expedicao } from \"../core/entities/expedicao/expedicao\";\nimport { ExpedicaoService } from \"../core/entities/expedicao/expedicao.service\";\n\n@Injectable()\nexport class ExpedicaoChegadaVeiculoOverride {\n private readonly EXPEDICAO_KEY = \"ERP_SENIOR_EXPEDICAO\";\n constructor(\n private override: ChegadaVeiculoOverride,\n private agendaService: AgendaService,\n private expedicaoService: ExpedicaoService\n ){}\n\n public initialize() {\n this.override.addOverride(this.EXPEDICAO_KEY, (params) => this.functionToOverride(params));\n }\n\n public remove() {\n this.override.disposeOverride(this.EXPEDICAO_KEY);\n }\n\n private functionToOverride(params: OverrideParams){\n return this.agendaService.atualizarAgenda(params.agenda)\n .pipe(\n mergeMap(_ => this.expedicaoService.list({\n filterQuery: `agenda.id eq '${params.agenda.id}'`,\n page: 0,\n size: 1\n })),\n map(({ contents }) => contents.length ? contents[0] : null),\n mergeMap((expedicao: Expedicao) => {\n if (!expedicao) return throwError(\"Não foi possÃvel encontrar os dados de expedição\");\n\n return this.expedicaoService.registrarChegadaVeiculoComExpedicao({\n expedicao,\n circuito: params.circuito.id,\n sequenciaInicial: params.sequencia.id,\n vagaInicial: (params.vaga || {}).id\n });\n })\n );\n }\n\n}","import { Injectable } from \"@angular/core\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { catchError } from \"rxjs/operators\";\nimport { MessageService } from \"primeng/api\";\nimport { throwError } from \"rxjs\";\n\n@Injectable()\nexport class IntegrationService {\n private readonly baseUrl: string = `yms/integration/`;\n constructor(private http: HttpClient, private messageService: MessageService) { }\n\n getProcessConfigurationErp(idTipoAgendamento: string) {\n return this.http.get(`${this.baseUrl}queries/getErpProcessConfigurationByTipoAgendamento`, { params: { idTipoAgendamento } }).pipe(this.defaultCatch());\n }\n\n public defaultCatch() {\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}","import { Component, OnInit, OnDestroy } from \"@angular/core\";\nimport { Agendamento, ChegadaVeiculo, IntegrationEventsCallback } from \"@seniorsistemas/yms-routines\";\nimport { takeUntil, mergeMap, finalize } from \"rxjs/operators\";\nimport { Agenda } from \"../core/entities/agenda/agenda\";\nimport { Subject, empty } from \"rxjs\";\nimport { IntegrationService } from \"../core/integration.service\";\n\nexport const ERP_SENIOR_HEADER = \"ERP Senior\";\n\n@Agendamento({\n header: ERP_SENIOR_HEADER,\n name: 'yms.integracao.erpagrox'\n})\n@ChegadaVeiculo({\n header: ERP_SENIOR_HEADER,\n name: 'yms.integracao.erpagrox',\n icon: 'fal fa-book'\n})\nexport class FormDescritor { }\n\n@Component({\n template: `\n <div *ngIf=\"agenda\">\n <div [ngSwitch]=\"tipoProcessoErpAtual\">\n <recebimento-form *ngSwitchCase=\"'RECEBIMENTO_CONTRATO'\" [agenda]=\"agenda\"></recebimento-form>\n <expedicao-form *ngSwitchCase=\"'EXPEDICAO'\" [agenda]=\"agenda\"></expedicao-form>\n <devolucao-form *ngSwitchCase=\"'DEVOLUCAO'\" [agenda]=\"agenda\"></devolucao-form>\n <recebimento-ordem-compra-form *ngSwitchCase=\"'RECEBIMENTO_ORDEM_COMPRA'\" [agenda]=\"agenda\"></recebimento-ordem-compra-form>\n <processo-avulso-form *ngSwitchCase=\"'PROCESSO_AVULSO'\" [agenda]=\"agenda\"></processo-avulso-form>\n <div *ngSwitchDefault>\n <s-loading-state [loading]=\"loading\">\n <h3 *ngIf=\"!loading\" style=\"text-align: center;\">\n ATENÃÃO, não existe Tipo de Processo configurado para esse tipo de agendamento.\n </h3>\n <h3 *ngIf=\"loading\" style=\"text-align: center;\"> Carregando configurações </h3>\n </s-loading-state>\n </div>\n </div>\n </div>\n `\n})\nexport class FormComponent extends FormDescritor implements OnInit, OnDestroy {\n header: string = ERP_SENIOR_HEADER;\n agenda: Agenda;\n tipoProcessoErpAtual: string;\n loading = false;\n\n private readonly unsubscribe$: Subject<void> = new Subject();\n constructor(private integrationCallback: IntegrationEventsCallback, private integrationService: IntegrationService) { \n super();\n }\n\n ngOnInit() {\n this.integrationCallback.onAgendamentoSaved()\n .pipe(\n takeUntil(this.unsubscribe$),\n mergeMap(agenda => {\n this.agenda = agenda;\n this.loading = true;\n if (!!this.agenda) {\n return this.integrationService.getProcessConfigurationErp(this.agenda.tipoAgendamento.id).pipe(finalize(() => this.loading = false))\n }\n return empty();\n })\n )\n .subscribe((erpProcessConfiguration: any) => this.tipoProcessoErpAtual = erpProcessConfiguration.id);\n }\n\n ngOnChanges() {\n }\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n\n}","import { Component, Input, OnInit, OnDestroy } from \"@angular/core\";\nimport { CircuitoFinalizado, ControleCircuito, ControleOperacao } from \"@seniorsistemas/yms-routines\";\nimport { IntegrationService } from \"../core/integration.service\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\n\nconst HEADER = 'Informações fiscais';\n\n@ControleCircuito({\n header: HEADER,\n name: 'yms.integracao.erpagrox'\n})\n@ControleOperacao({\n header: HEADER,\n name: 'yms.integracao.erpagrox'\n})\n@CircuitoFinalizado({\n header: HEADER,\n name: 'yms.integracao.erpagrox'\n})\nexport class InfoDescritor {\n\n}\n\n@Component({\n template: `\n <div *ngIf=\"agenda\">\n <div [ngSwitch]=\"tipoProcessoErpAtual\">\n <recebimento-info *ngSwitchCase=\"'RECEBIMENTO_CONTRATO'\" [agenda]=\"agenda\"></recebimento-info>\n <expedicao-info *ngSwitchCase=\"'EXPEDICAO'\" [agenda]=\"agenda\"></expedicao-info>\n <devolucao-info *ngSwitchCase=\"'DEVOLUCAO'\" [agenda]=\"agenda\"></devolucao-info> \n <recebimento-ordem-compra-info *ngSwitchCase=\"'RECEBIMENTO_ORDEM_COMPRA'\" [agenda]=\"agenda\"></recebimento-ordem-compra-info>\n <processo-avulso-info *ngSwitchCase=\"'PROCESSO_AVULSO'\" [agenda]=\"agenda\"></processo-avulso-info>\n </div>\n </div>\n `,\n})\nexport class InfoComponent extends InfoDescritor implements OnInit, OnDestroy {\n @Input() agenda: any;\n\n tipoProcessoErpAtual: string;\n\n private ngUnsubscribe = new Subject<void>();\n\n constructor(\n private integrationService: IntegrationService\n ) {\n super();\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n ngOnInit(): void {\n this.integrationService.getProcessConfigurationErp(this.agenda.tipoAgendamento.id)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((erpProcessConfiguration: any) => this.tipoProcessoErpAtual = erpProcessConfiguration.id);\n }\n}","import { Injectable } from \"@angular/core\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { throwError } from \"rxjs\";\nimport { catchError } from \"rxjs/operators\";\nimport { FormGroup } from \"@angular/forms\";\n\n@Injectable()\nexport class FieldCustomizationService {\n constructor(protected http: HttpClient, protected messageService: MessageService) {\n this.http = http;\n this.messageService = messageService;\n this.defaultCatch = this.defaultCatch.bind(this);\n }\n\n public commitFiles(objects: any[]) {\n return this.http.post(\"platform/field_customization/actions/commitObject\", { objects }).pipe(this.defaultCatch());\n }\n\n public deleteFiles(objects: any) {\n return this.http.post(\"platform/field_customization/actions/deleteObjects\", objects).pipe(this.defaultCatch());\n }\n\n public getFiles(formGroup: FormGroup) {\n let fieldCustomization = [];\n\n if (formGroup.value.custom) {\n fieldCustomization = formGroup.value.custom.fieldCustomization || [];\n delete formGroup.value.custom.fieldCustomization;\n }\n\n const filesToCommit: any[] = [];\n let filesToDelete: any = {};\n\n fieldCustomization.forEach(({ domain, service, entity, toDelete, toInsert }: any) => {\n if (!this.isEmpty(toInsert)) {\n const files = Object.keys(toInsert).map((key: string) => {\n const version = toInsert[key].version;\n const fileName = toInsert[key].name;\n const objectId = toInsert[key].objectId;\n return { version, fileName, objectId };\n });\n\n if (!this.isEmpty(files)) {\n filesToCommit.push(...files);\n }\n }\n\n if (!this.isEmpty(toDelete)) {\n const objects: any[] = [];\n Object.keys(toDelete).forEach((key: string) => {\n const fields = toDelete[key] || [];\n const files = fields.map((file: string) => {\n return {\n field: key,\n objectId: file,\n };\n });\n objects.push(...files);\n });\n filesToDelete = { domain, service, entityName: entity, objects };\n }\n });\n\n return { filesToCommit, filesToDelete };\n }\n\n public isEmpty(object: any) {\n if (Array.isArray(object)) {\n return object.length === 0;\n }\n return Object.entries(object).length === 0 && object.constructor === Object;\n }\n\n public defaultCatch() {\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","import { MessageService } from 'primeng/components/common/messageservice';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Injectable } from '@angular/core';\n@Injectable()\nexport class VerificaNotafiscal{\n constructor (\n private messageService: MessageService,\n private translate: TranslateService\n ) {}\n\n public verificaSeNotaFiscalEstaDuplicada(chaveNotaFiscal: any, contratos: any, fornecedorNotasTokens: any) {\n if (chaveNotaFiscal == \"\") {\n return false;\n }\n \n let notaFicalDuplicadas = fornecedorNotasTokens.filter(nota => {\n return nota.id == chaveNotaFiscal;\n });\n\n if (typeof contratos !== \"undefined\" && notaFicalDuplicadas.length <= 0) {\n contratos = contratos.value;\n \n if (contratos.length > 0) {\n notaFicalDuplicadas = contratos.filter(contrato => {\n if (contrato.notas.length <= 0) {\n return false;\n }\n let result = contrato.notas.filter(nota => {\n return nota.chaveNotaFiscal == chaveNotaFiscal;\n })\n return result.length > 0;\n });\n }\n }\n\n if (notaFicalDuplicadas.length > 0){\n this.messageService.add({\n severity: \"error\",\n summary: this.translate.instant(\"yms.integration.titulo_nota_fical_ja_exite\"),\n detail: this.translate.instant(\"yms.integration.conteudo_nota_fical_ja_exite\"),\n });\n\n return true;\n }\n return false;\n }\n\n}","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { OrdemCompraDto } from \"./ordem-compra-dto\";\n\n@Injectable()\nexport class OrdemCompraService extends EntityService<OrdemCompraDto> {\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) private environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/ordemCompra`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n }\n\n public listOrdensCompra(params: PesquisaOrdensCompraParams) {\n return this.http.post(`${this.environment.project.domain}/${this.environment.project.service}/queries/pesquisarOrdensCompra`, params).pipe(this.defaultCatch());\n }\n}\n\nexport interface PesquisaOrdensCompraParams {\n pessoaId?: string;\n codigo?: number;\n pagina?: {\n offset?: number;\n limit?: number;\n listaOrdenacao: {\n campo: string;\n ordenacao: 'Asc' | 'Desc'\n }[]\n }\n}\n","import { FieldType } from \"@seniorsistemas/angular-components\";\nimport { FormGroup } from \"@angular/forms\";\n\nconst numberTypes = [FieldType.Integer, FieldType.Double];\nconst numberPattern = /^\\d+\\b$/;\n\nexport const mergeUnique = (array: Array<string>, otherArray: Array<string>) =>\n array.concat(otherArray.filter(item => !array.includes(item)));\n\nexport const isValidFilter = (type: FieldType, value: any) => {\n const { isValidValue, typeExists } = getTypeInformation(type, value);\n return !(typeExists && !isValidValue);\n};\n\nexport const getTypeInformation = (type: FieldType, value: any) => {\n switch (type) {\n case FieldType.Time:\n case FieldType.Date:\n case FieldType.DateTime:\n return { isValidValue: false, typeExists: true };\n case FieldType.Integer:\n case FieldType.Double:\n return {\n isValidValue: value.match(numberPattern),\n typeExists: numberTypes.includes(type),\n };\n default:\n return {\n isValidValue: value.match(numberPattern),\n typeExists: numberTypes.includes(type),\n };\n }\n};\n\nexport const userCanVisualize = (formGroup: FormGroup, allPermissions: any) => {\n return (\n Object.keys(formGroup.controls).filter(field => {\n const errors = formGroup.get(field).errors ? formGroup.get(field).errors.required : formGroup.get(field).errors;\n return allPermissions[field] && !allPermissions[field].visualizar && errors;\n }).length === 0\n );\n};\n\nexport const getProp = (obj: any, path: any) => \n path.split(\".\").reduce((result: any, prop: any) => (result[prop] === undefined ? \"\" : result[prop]), obj);\n\nexport const dialogConfig = {\n style: {\n \"display\": \"flex\",\n \"flex-direction\": \"column\",\n },\n height: \"80%\",\n styleClass: \"ui-g-12 ui-md-4\",\n contentStyle: {\n \"overflow-y\": \"auto\",\n \"height\": \"auto\",\n \"max-height\": \"none\",\n \"margin-bottom\": \"0\",\n \"flex\": 1\n },\n};","import { FieldType, FormField } from \"@seniorsistemas/angular-components\";\nimport * as _moment from \"moment\";\nimport { map } from \"rxjs/operators\";\nimport { EntityService } from \"../erp-senior/core/entities/entity-service\";\nimport { getProp, isValidFilter, mergeUnique } from \"./utils\";\nconst moment = _moment;\n\nexport function getLookupLabel(data: any = {}, fields: any = [], separator: string, translation?: boolean) {\n const concatenateLabelsLookup = (texto: string) => {\n const splitedLabel = texto.split('-');\n const concatenate = (p: string = ' ', c: string = ' ') => {\n if (p.trim() && c.trim()) return `${p} - ${c}`;\n if (p.trim() && !c.trim()) return `${p}`;\n if (!p.trim() && c.trim()) return `${c}`;\n };\n return splitedLabel.reduce(concatenate);\n };\n return concatenateLabelsLookup(fields.map((field: any) => {\n if (field.indexOf(\".\") > 0) return getProp(data, field);\n return data[field];\n }).join(separator))\n || (translation ? 'yms.erp.sem_descricao' : ' - ');\n}\n\nexport const onLookupRequest = <T> (searchFields: FormField[], lookupDisplayFields: string[], advancedDisplayFields: string[], lookupSeparator: string, service: EntityService<T>, value: string, customFilter = '') => {\n const sort = lookupDisplayFields.map((field: any) => ({ field, order: 1 }));\n\n let filterQuery = (searchFields)\n .filter(({ type }) => isValidFilter(type, value))\n .map(({ name, type }) => {\n if (typeof value == \"number\" || type === FieldType.Integer) return `${name} eq ${value}`;\n else if (type == FieldType.Date) return `${name} eq '${moment(value).format(\"YYYY-MM-DD\")}'`;\n else if (type == FieldType.Time) return `${name} eq '${moment(value).format(\"HH:mm:ss\")}'`;\n else if (type == FieldType.DateTime) return `${name} eq '${moment(value).format()}'`;\n else if (type == FieldType.String) return `containing(lower(${name}), lower('${value.replace(/'/g, \"\\\\'\")}'))`;\n else return `${name} eq '${value}'`;\n })\n .join(\" or \");\n\n if (customFilter && customFilter.trim()) {\n filterQuery = filterQuery ? `(${filterQuery}) and ${customFilter}` : customFilter;\n }\n\n const displayFields = mergeUnique(lookupDisplayFields, advancedDisplayFields);\n return service\n .list({ sort, filterQuery, displayFields })\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: getLookupLabel(item, lookupDisplayFields, lookupSeparator),\n })),\n }))\n );\n};\n\nexport const onSearchRequest = <T> (searchFields: FormField[], lookupDisplayFields: string[], advancedDisplayFields: string[], lookupSeparator: string, service: EntityService<T>, event: any, customFilter = '') => {\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const sort = multiSortMeta;\n\n let filterQuery = searchFields\n .filter(({ name }) => filterData[name] != undefined && filterData[name] != \"\")\n .map(({ name, type }) => {\n const value = filterData[name];\n\n if (typeof value == \"number\" || type === FieldType.Integer) return `${name} eq ${value}`;\n else if (type == FieldType.Date) return `${name} eq '${moment(value).format(\"YYYY-MM-DD\")}'`;\n else if (type == FieldType.Time) return `${name} eq '${moment(value).format(\"HH:mm:ss\")}'`;\n else if (type == FieldType.DateTime) return `${name} eq '${moment(value).format()}'`;\n else if (type == FieldType.Enum) return `${name} eq '${value}'`;\n else if (type == FieldType.Lookup) return `${name} eq '${value.id}'`;\n else if (type == FieldType.String && name.indexOf('.') !== -1) {\n return `containing(${name}, '${value.replace(/'/g, \"\\\\'\")}')`;\n } else if (type == FieldType.String && name.indexOf('.') === -1) {\n return `containing(lower(${name}),lower('${value.replace(/'/g, \"\\\\'\")}'))`;\n } else return `${name} eq '${value}'`;\n })\n .join(\" and \");\n\n filterQuery = customFilter && customFilter.trim() ? filterQuery.concat(filterQuery ? ' and ' : '').concat(customFilter) : filterQuery;\n\n const displayFields = mergeUnique(lookupDisplayFields, advancedDisplayFields);\n return service\n .list({ page, sort, filterQuery, displayFields })\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: getLookupLabel(item, lookupDisplayFields, lookupSeparator),\n })),\n }))\n );\n};\n","import * as _moment from \"moment\";const moment = _moment\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { EmpresaDto } from \"./empresa-dto\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\nimport { getLookupLabel } from \"../../../../utils/lookup-utils\";\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport class Empresa {\n public id?: string;\n public codigo: string;\n public nome: string;\n public fantasia?: string;\n public createdBy?: string;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n public static fromDto(empresaDto: EmpresaDto, originEntity?: string): Empresa {\n const model: any = { ...empresaDto };\n\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n const lookupSeparator = \" - \";\n const displayFields = [\n \"codigo\",\n \"nome\",\n \"fantasia\"\n ];\n\n model.label = getLookupLabel(model, displayFields, lookupSeparator);\n\n return model as Empresa;\n }\n\n public static toDto(empresa: Empresa, originEntity?: string): EmpresaDto {\n const dto: any = { ...empresa };\n\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n return dto;\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import * as _moment from \"moment\"; const moment = _moment;\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { PessoaDto } from \"./pessoa-dto\";\nimport { SituacaoPessoa } from \"../../enums/situacao-pessoa\";\nimport { getLookupLabel } from \"../../../../utils/lookup-utils\";\nimport { TipoParticipanteTransgenia } from \"../../enums/tipo-participante-transgenia\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport class Pessoa {\n public id?: string;\n public codigo: number;\n public nome: string;\n public cpfCnpj: string;\n public nomeFantasia: string;\n public label?: string;\n public site?: string;\n public situacao?: SituacaoPessoa;\n public cliente?: boolean;\n public fornecedor?: boolean;\n public representante?: boolean;\n public createdBy?: string;\n public createdDate?: Date;\n public tipoParticipante?: TipoParticipanteTransgenia;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n public static fromDto(pessoaDto: PessoaDto, originEntity?: string): Pessoa {\n const model: any = { ...pessoaDto };\n\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n const lookupSeparator = \" - \";\n const displayFields = [\n \"codigo\",\n \"nome\",\n \"cpfCnpj\",\n ];\n\n model.label = getLookupLabel(model, displayFields, lookupSeparator);\n\n return model as Pessoa;\n }\n\n public static toDto(pessoa: Pessoa, originEntity?: string): PessoaDto {\n const dto: any = { ...pessoa };\n\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n return dto;\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import * as _moment from \"moment\";const moment = _moment\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { PessoaJuridicaDto } from \"./pessoa-juridica-dto\";\nimport { Pessoa } from \"../pessoa/pessoa\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport class PessoaJuridica {\n public id?: string;\n public pessoa: Pessoa;\n public cnpj: string;\n public nomeFantasia?: string;\n public inscricaoEstadual?: string;\n public inscricaoMunicipal?: string;\n public createdBy?: string;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n public static fromDto(pessoaJuridicaDto: PessoaJuridicaDto, originEntity?: string): PessoaJuridica {\n const model: any = { ...pessoaJuridicaDto };\n\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n const lookupSeparator = \" - \";\n const displayFields = [\n \"id\",\n \"pessoa.codigo\",\n \"pessoa.nome\",\n \"pessoa.site\",\n \"pessoa.situacao\",\n \"pessoa.cliente\",\n \"pessoa.fornecedor\",\n \"pessoa.representante\",\n \"cnpj\",\n \"nomeFantasia\",\n \"inscricaoEstadual\",\n \"inscricaoMunicipal\",\n \"createdBy\",\n \"createdDate\",\n \"lastModifiedBy\",\n \"lastModifiedDate\",\n ];\n\n model.label = displayFields.map(field => model[field]).join(lookupSeparator);\n\n if (originEntity !== \"Pessoa\" && model.pessoa) model.pessoa = Pessoa.fromDto(model.pessoa, \"PessoaJuridica\");\n\n return model as PessoaJuridica;\n }\n\n public static toDto(pessoaJuridica: PessoaJuridica, originEntity?: string): PessoaJuridicaDto {\n const dto: any = { ...pessoaJuridica };\n\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n if (originEntity !== \"Pessoa\" && dto.pessoa) dto.pessoa = Pessoa.toDto(dto.pessoa, \"PessoaJuridica\");\n\n return dto;\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import * as _moment from \"moment\";const moment = _moment\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { PaisDto } from \"./pais-dto\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport class Pais {\n public id?: string;\n public codigo: string;\n public descricao: string;\n public createdBy?: string;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n public static fromDto(paisDto: PaisDto, originEntity?: string): Pais {\n const model: any = { ...paisDto };\n\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n const lookupSeparator = \" - \";\n const displayFields = [\"id\", \"codigo\", \"descricao\", \"createdBy\", \"createdDate\", \"lastModifiedBy\", \"lastModifiedDate\"];\n\n model.label = displayFields.map(field => model[field]).join(lookupSeparator);\n\n return model as Pais;\n }\n\n public static toDto(pais: Pais, originEntity?: string): PaisDto {\n const dto: any = { ...pais };\n\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n return dto;\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import * as _moment from \"moment\";const moment = _moment\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { EstadoDto } from \"./estado-dto\";\nimport { Pais } from \"../pais/pais\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport class Estado {\n public id?: string;\n public codigo: string;\n public descricao: string;\n public abreviatura: string;\n public pais: Pais;\n public createdBy?: string;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n public static fromDto(estadoDto: EstadoDto, originEntity?: string): Estado {\n const model: any = { ...estadoDto };\n\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n const lookupSeparator = \" - \";\n const displayFields = [\n \"id\",\n \"codigo\",\n \"descricao\",\n \"abreviatura\",\n \"pais.id\",\n \"pais.codigo\",\n \"pais.descricao\",\n \"createdBy\",\n \"createdDate\",\n \"lastModifiedBy\",\n \"lastModifiedDate\",\n ];\n\n model.label = displayFields.map(field => model[field]).join(lookupSeparator);\n\n if (originEntity !== \"Pais\" && model.pais) model.pais = Pais.fromDto(model.pais, \"Estado\");\n\n return model as Estado;\n }\n\n public static toDto(estado: Estado, originEntity?: string): EstadoDto {\n const dto: any = { ...estado };\n\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n if (originEntity !== \"Pais\" && dto.pais) dto.pais = Pais.toDto(dto.pais, \"Estado\");\n\n return dto;\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import * as _moment from \"moment\";const moment = _moment\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { CidadeDto } from \"./cidade-dto\";\nimport { Estado } from \"../estado/estado\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport class Cidade {\n public id?: string;\n public codigo: string;\n public descricao: string;\n public estado: Estado;\n public createdBy?: string;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n public static fromDto(cidadeDto: CidadeDto, originEntity?: string): Cidade {\n const model: any = { ...cidadeDto };\n\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n const lookupSeparator = \" - \";\n const displayFields = [\n \"id\",\n \"codigo\",\n \"descricao\",\n \"estado.id\",\n \"estado.codigo\",\n \"estado.descricao\",\n \"createdBy\",\n \"createdDate\",\n \"lastModifiedBy\",\n \"lastModifiedDate\",\n ];\n\n model.label = displayFields.map(field => model[field]).join(lookupSeparator);\n\n if (originEntity !== \"Estado\" && model.estado) model.estado = Estado.fromDto(model.estado, \"Cidade\");\n\n return model as Cidade;\n }\n\n public static toDto(cidade: Cidade, originEntity?: string): CidadeDto {\n const dto: any = { ...cidade };\n\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n if (originEntity !== \"Estado\" && dto.estado) dto.estado = Estado.toDto(dto.estado, \"Cidade\");\n\n return dto;\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import * as _moment from \"moment\";const moment = _moment\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { PessoaEnderecoDto } from \"./pessoa-endereco-dto\";\nimport { Pessoa } from \"../pessoa/pessoa\";\nimport { Cidade } from \"../cidade/cidade\";\nimport { SituacaoEnderecoPessoa } from \"../../enums/situacao-endereco-pessoa\";\nimport { getLookupLabel } from \"../../../../utils/lookup-utils\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport class PessoaEndereco {\n public id?: string;\n public codigo: number;\n public pessoa: Pessoa;\n public cep: string;\n public endereco: string;\n public numero?: string;\n public complemento?: string;\n public cidade?: Cidade;\n public telefone?: string;\n public bairro?: string;\n public situacao: SituacaoEnderecoPessoa;\n public padrao?: boolean;\n public origem?: boolean;\n public cobranca?: boolean;\n public entrega?: boolean;\n public createdBy?: string;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n public static fromDto(pessoaEnderecoDto: PessoaEnderecoDto, originEntity?: string): PessoaEndereco {\n const model: any = { ...pessoaEnderecoDto };\n\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n const lookupSeparator = \" - \";\n const displayFields = [\n \"codigo\",\n // \"cep\",\n \"endereco\",\n // \"numero\",\n // \"bairro\"\n ];\n\n model.label = getLookupLabel(model, displayFields, lookupSeparator);\n\n if (originEntity !== \"Pessoa\" && model.pessoa) model.pessoa = Pessoa.fromDto(model.pessoa, \"PessoaEndereco\");\n if (originEntity !== \"Cidade\" && model.cidade) model.cidade = Cidade.fromDto(model.cidade, \"PessoaEndereco\");\n\n return model as PessoaEndereco;\n }\n\n public static toDto(pessoaEndereco: PessoaEndereco, originEntity?: string): PessoaEnderecoDto {\n const dto: any = { ...pessoaEndereco };\n\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n if (originEntity !== \"Pessoa\" && dto.pessoa) dto.pessoa = Pessoa.toDto(dto.pessoa, \"PessoaEndereco\");\n if (originEntity !== \"Cidade\" && dto.cidade) dto.cidade = Cidade.toDto(dto.cidade, \"PessoaEndereco\");\n\n return dto;\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import * as _moment from \"moment\";const moment = _moment\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { FilialDto } from \"./filial-dto\";\nimport { Empresa } from \"../empresa/empresa\";\nimport { PessoaJuridica } from \"../pessoa-juridica/pessoa-juridica\";\nimport { PessoaEndereco } from \"../pessoa-endereco/pessoa-endereco\";\nimport { getLookupLabel } from \"../../../../utils/lookup-utils\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport class Filial {\n public id?: string;\n public codigo: number;\n public nome: string;\n public empresa: Empresa;\n public pessoaJuridica?: PessoaJuridica;\n public endereco?: PessoaEndereco;\n public createdBy?: string;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n public static fromDto(filialDto: FilialDto, originEntity?: string): Filial {\n const model: any = { ...filialDto };\n\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n const lookupSeparator = \" - \";\n const displayFields = [\n \"codigo\",\n \"nome\",\n \"empresa.nome\"\n ];\n\n model.label = getLookupLabel(model, displayFields, lookupSeparator);\n\n if (originEntity !== \"Empresa\" && model.empresa) model.empresa = Empresa.fromDto(model.empresa, \"Filial\");\n if (originEntity !== \"PessoaJuridica\" && model.pessoaJuridica)\n model.pessoaJuridica = PessoaJuridica.fromDto(model.pessoaJuridica, \"Filial\");\n if (originEntity !== \"PessoaEndereco\" && model.endereco) model.endereco = PessoaEndereco.fromDto(model.endereco, \"Filial\");\n\n return model as Filial;\n }\n\n public static toDto(filial: Filial, originEntity?: string): FilialDto {\n const dto: any = { ...filial };\n\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n if (originEntity !== \"Empresa\" && dto.empresa) dto.empresa = Empresa.toDto(dto.empresa, \"Filial\");\n if (originEntity !== \"PessoaJuridica\" && dto.pessoaJuridica)\n dto.pessoaJuridica = PessoaJuridica.toDto(dto.pessoaJuridica, \"Filial\");\n if (originEntity !== \"PessoaEndereco\" && dto.endereco) dto.endereco = PessoaEndereco.toDto(dto.endereco, \"Filial\");\n\n return dto;\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { Empresa } from \"../empresa/empresa\"\nimport { Filial } from \"../filial/filial\"\nimport * as _moment from \"moment\";import { OrdemCompraDto } from \"./ordem-compra-dto\";\nconst moment = _moment\nimport { getLookupLabel } from \"../../../../utils/lookup-utils\";\nimport { Pessoa } from \"../pessoa/pessoa\";\n\nexport class OrdemCompra {\n public id: string;\n public codigo: number;\n public empresa: Empresa;\n public filial: Filial;\n public pessoa: Pessoa;\n\n public static fromDto(ordemCompraDto: OrdemCompraDto, originEntity?: string): OrdemCompra {\n const model: any = { ...ordemCompraDto };\n\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n const lookupSeparator = \" - \";\n const displayFields = [\n \"codigo\",\n \"descricao\",\n \"tipo\",\n ];\n\n model.label = getLookupLabel(model, displayFields, lookupSeparator);\n\n if (originEntity !== \"Empresa\" && model.empresa) model.empresa = Empresa.fromDto(model.empresa, \"Produto\");\n if (originEntity !== \"Filial\" && model.filial) model.filial = Filial.fromDto(model.filial, \"Produto\");\n \n return model as OrdemCompra;\n }\n\n public static toDto(ordemCompra: OrdemCompra, originEntity?: string): OrdemCompraDto {\n const dto: any = { ...ordemCompra };\n\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n if (originEntity !== \"Empresa\" && dto.empresa) dto.empresa = Empresa.toDto(dto.empresa, \"Produto\");\n if (originEntity !== \"Filial\" && dto.filial) dto.filial = Filial.toDto(dto.filial, \"Produto\"); \n\n return dto;\n }\n}\n","import { Component, OnInit, OnDestroy } from \"@angular/core\";\nimport { FormGroup, FormBuilder, FormArray, Validators, FormControl } from \"@angular/forms\";\nimport { DynamicDialogRef, DynamicDialogConfig } from \"primeng/api\";\nimport { FormField, FieldType } from \"@seniorsistemas/angular-components\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { Subject } from 'rxjs';\nimport * as _moment from \"moment\";\nimport { OrdemCompraService } from \"../../core/entities/ordem-compra/ordem-compra.service\";\nimport { Pessoa } from './../../core/entities/pessoa/pessoa';\nimport { Filial } from './../../core/entities/filial/filial';\nimport { Agenda } from \"../../core/entities/agenda/agenda\";\nimport { OrdemCompra } from \"../../core/entities/ordem-compra/ordem-compra\";\nconst moment = _moment;\n\n@Component({\n templateUrl: './ordem-compra-form.component.html'\n})\nexport class OrdemCompraFormComponent implements OnInit, OnDestroy {\n public formGroup: FormGroup;\n\n public ordemCompraSearchFields: FormField[];\n public ordemCompraSearchGridFields: FormField[];\n public ordemCompraSearchGridData: OrdemCompra[];\n public ordemCompraLookupDisplayFields = [\"codigo\", \"empresa.nome\"];\n public ordemCompraAdvancedDisplayFields = [\"id\", \"codigo\", \"empresa.nome\", \"filial.nome\", \"pessoa.nome\"];\n public ordemCompraLookupSeparator = \" - \";\n public ordemCompraLookupSuggestions: OrdemCompra[];\n public ordemCompraSearchTotalRecords: number;\n\n private readonly ngUnsubscribe = new Subject<void>();\n private agenda: Agenda;\n private filial: Filial;\n private fornecedor: Pessoa;\n private ordensCompra: string[];\n\n constructor (\n private dialogRef: DynamicDialogRef,\n private dialogConfig: DynamicDialogConfig,\n private ordemCompraService: OrdemCompraService,\n private translate: TranslateService,\n private fb: FormBuilder\n ) { }\n \n ngOnInit(): void {\n const { data } = this.dialogConfig;\n this.agenda = data.agenda;\n this.filial = data.filial;\n this.fornecedor = data.fornecedor;\n this.ordensCompra = data.ordens.map(({ ordemCompra: ordemCompra }: any) => !!ordemCompra ? ordemCompra.id : undefined).filter((val: any) => !!val);\n\n this.formGroup = this.getForm();\n\n this.ordemCompraSearchFields = this.getOrdemCompraFields();\n this.ordemCompraSearchGridFields = this.getOrdemCompraGridFields();\n }\n \n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n public onOrdemCompraLookupRequest(value: string) {\n const sort = this.ordemCompraLookupDisplayFields.map((field: any) => ({ field, order: 'Asc' }))[0];\n\n const filter: any = {\n numero: +value.replace(/\\D/g, \"\")\n };\n\n const filial = this.filial;\n if (filial && filial.empresa && filial.empresa.id) {\n filter.empresaId = filial.empresa.id;\n }\n\n this.ordemCompraService\n .listOrdensCompra({\n ...filter,\n pessoaId: (this.fornecedor || {id: undefined}).id,\n filialId: (filial || {id: undefined}).id,\n tipoAgendamentoId: this.agenda && this.agenda.tipoAgendamento ? this.agenda.tipoAgendamento.id : null,\n ordensCompraSelecionados: this.ordensCompra,\n pagina: {\n limit: 30,\n offset: 0,\n listaOrdenacao: [\n {\n campo: sort.field,\n ordenacao: sort.order\n }\n ]\n }\n })\n .subscribe((list: any) => {\n this.ordemCompraLookupSuggestions = list.contents.map(OrdemCompra.fromDto);\n });\n }\n\n public onOrdemCompraSearchRequest(event: any) {\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const filter = this.getOrdemCompraFields()\n .filter(({ name }) => filterData[name] != undefined && filterData[name] != \"\")\n .reduce((a, b: any) => {\n return {\n ...a,\n [b.name]: filterData[b.name]\n };\n }, {} as any);\n\n const filial = this.filial;\n if (filial && filial.empresa && filial.empresa.id) {\n filter.empresaId = filial.empresa.id;\n }\n\n filter.dataEmissao = filter.dataEmissao && moment(filter.dataEmissao).format(\"YYYY-MM-DD\");\n const sort = (multiSortMeta || []).length ? { field: multiSortMeta[0].field, order: multiSortMeta[0].order === 1 ? 'Asc' : 'Desc' } : { field: 'numero', order: 'Asc' };\n\n this.ordemCompraService\n .listOrdensCompra({\n ...filter,\n pessoaId: (this.fornecedor || {id: undefined}).id,\n filialId: (filial || {id: undefined}).id,\n tipoAgendamentoId: this.agenda && this.agenda.tipoAgendamento ? this.agenda.tipoAgendamento.id : null,\n ordensCompraSelecionados: this.ordensCompra,\n pagina: {\n limit: rows,\n offset: page,\n listaOrdenacao: [\n {\n campo: sort.field,\n ordenacao: sort.order\n }\n ]\n }\n })\n .subscribe((list: any) => {\n this.ordemCompraSearchGridData = list.contents.map(OrdemCompra.fromDto);\n this.ordemCompraSearchTotalRecords = list.totalElements;\n });\n }\n\n public getRecPagina(first: number, rows: number, sort: any) {\n const page = first / rows;\n const orderBy = sort && sort.length \n ? sort.map((s: any) => ({ campo: s.field, ordenacao: s.order === 1 ? 'Asc' : 'Desc' })) \n : [];\n\n return {\n offset: page,\n limit: rows,\n listaOrdenacao: orderBy\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) {\n control.markAsDirty({ onlySelf: true });\n }\n else if (control instanceof FormGroup){\n this.validateAllFormFields(control);\n } \n else if (control instanceof FormArray) {\n control.controls.forEach((form: FormGroup) => this.validateAllFormFields(form));\n }\n });\n }\n\n public save() {\n if (!this.formGroup.valid) {\n return this.validateAllFormFields(this.formGroup);\n }\n this.close(this.formGroup.get('ordemCompra').value);\n }\n\n public close(data?: any) {\n this.dialogRef.close(data);\n }\n\n private getForm() {\n return this.fb.group({\n ordemCompra: [undefined, Validators.required]\n });\n }\n\n private getOrdemCompraFields() {\n return [\n new FormField({\n name: \"codigo\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.ordem_compra_codigo\")\n }),\n new FormField({\n name: \"empresa.nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.empresa\")\n }),\n new FormField({\n name: \"filial.nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.filial\")\n }),\n ];\n }\n\n private getOrdemCompraGridFields() {\n return [\n new FormField({\n name: \"codigo\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.ordem_compra_codigo\")\n }),\n new FormField({\n name: \"empresa.nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.empresa\")\n }),\n new FormField({\n name: \"filial.nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.filial\")\n }),\n new FormField({\n name: \"pessoa.nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.pessoa_nome\")\n }),\n ];\n }\n}","import { Injectable } from \"@angular/core\";\n\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\");\n if (!firstField) return;\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 { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/api\";\nimport { Observable, throwError } from \"rxjs\";\nimport { catchError } from \"rxjs/operators\";\nimport { DerivacaoDto } from \"./entities/derivacao/derivacao-dto\";\nimport { PessoaEnderecoDto } from \"./entities/pessoa-endereco/pessoa-endereco-dto\";\nimport { PessoaDto } from \"./entities/pessoa/pessoa-dto\";\nimport { ProdutoDto } from \"./entities/produto/produto-dto\";\nimport { ERP_ENVIRONMENT } from \"./injectors\";\n\n@Injectable()\nexport class NotaValidatorService {\n private readonly baseUrl: string;\n constructor(@Inject(ERP_ENVIRONMENT) environment: any, private http: HttpClient, private messageService: MessageService) {\n this.baseUrl = `${environment.project.domain}/${environment.project.service}`;\n }\n\n pesquisarDocumento(payload: PesquisarDocumentoRequest): Observable<PesquisarDocumentoResponse> {\n return this.http.post<PesquisarDocumentoResponse>(`${this.baseUrl}/queries/pesquisarDocumento`, payload).pipe<PesquisarDocumentoResponse>(this.defaultCatch() as any);\n }\n\n pesquisarDocumentoValidaNotaEmUso(payload: PesquisarDocumentoRequest): Observable<PesquisarDocumentoResponse> {\n return this.http.post<PesquisarDocumentoResponse>(`${this.baseUrl}/queries/pesquisarDocumentoValidaNotaEmUso`, payload).pipe<PesquisarDocumentoResponse>(this.defaultCatch() as any);\n }\n\n pesquisarDocumentoGenerico(payload: PesquisarDocumentoRequest): Observable<PesquisarDocumentoResponse> {\n return this.http.post<PesquisarDocumentoResponse>(`yms/integration/queries/pesquisarDocumentoGenerico`, payload).pipe<PesquisarDocumentoResponse>(this.defaultCatch() as any);\n }\n\n executarAuditoria(payload: ExecutarAuditoriaRequest): Observable<ExecutarAuditoriaResponse> {\n return this.http.post<ExecutarAuditoriaResponse>(`${this.baseUrl}/actions/executarAuditoria`, payload).pipe<ExecutarAuditoriaResponse>(this.defaultCatch() as any);\n }\n\n private defaultCatch() {\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\nexport interface PesquisarDocumentoRequest {\n filialId?: string;\n chaveDocumento: string;\n}\n\nexport interface PesquisarDocumentoResponse {\n documentos: {\n serie: string;\n serieLegal: string;\n numero: number;\n fornecedor: PessoaDto;\n origemMercadoria: PessoaEnderecoDto;\n itens: ItemDocumento[];\n }[]\n}\n\nexport interface ItemDocumento {\n produto: ProdutoDto;\n derivacao: DerivacaoDto;\n quantidade: number;\n}\n\nexport interface ExecutarAuditoriaRequest {\n chaveNota: string;\n fornecedor?: string;\n filial?: number;\n numeroContrato?: number;\n sequenciaContrato?: number;\n sequenciaOrigem?: number;\n}\n\nexport interface ExecutarAuditoriaResponse {\n situacao: 'APROVADO' | 'REPROVADO',\n mensagem: string;\n}","import { VerificaNotafiscal } from '../../core/verifica-nota-fiscal/verificaNotaFiscal';\nimport { Component, OnDestroy, OnInit } from \"@angular/core\";\nimport { AbstractControl, FormBuilder, FormControl, FormGroup, ValidationErrors, ValidatorFn } from \"@angular/forms\";\nimport { ConfirmationService, DynamicDialogConfig, DynamicDialogRef } from \"primeng/api\";\nimport { Subject } from \"rxjs\";\nimport { finalize, takeUntil } from \"rxjs/operators\";\nimport { Pessoa } from \"../../core/entities/pessoa/pessoa\";\nimport { Produto } from \"../../core/entities/produto/produto\";\nimport { NotaValidatorService, PesquisarDocumentoResponse } from \"../../core/nota-validator.service\";\n\n@Component({\n templateUrl: './nota-form.component.html',\n providers: [ ConfirmationService ]\n})\n\nexport class NotaFormComponent implements OnInit, OnDestroy {\n formGroup: FormGroup;\n loading = false;\n\n private filialId: string;\n private fornecedor: Pessoa;\n private produto: Produto;\n private fornecedorNotasTokens: any;\n private contratos: any;\n\n private readonly unsubscribe$ = new Subject<void>();\n constructor(\n fb: FormBuilder,\n private notaValidatorService: NotaValidatorService,\n private dialogConfig: DynamicDialogConfig,\n private confirmationService: ConfirmationService,\n private dialogRef: DynamicDialogRef,\n private verificaNotaFiscal: VerificaNotafiscal,\n\n ) {\n this.formGroup = fb.group({\n chaveNotaFiscal: [ undefined ],\n serieNotaFiscal: [ undefined ],\n serieLegalNotaFiscal: [ undefined ],\n numeroNotaFiscal: [ undefined ],\n }, { validators: this.camposPreenchidosValidation });\n }\n\n ngOnInit() {\n this.filialId = this.dialogConfig.data.filial.id;\n this.fornecedor = this.dialogConfig.data.fornecedor;\n this.produto = this.dialogConfig.data.produto;\n this.fornecedorNotasTokens = this.dialogConfig.data.fornecedorNotasTokens;\n this.contratos = this.dialogConfig.data.contratos;\n }\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n\n save() {\n const chaveNotaFiscal = this.formGroup.get(\"chaveNotaFiscal\").value;\n\n if (this.verificaNotaFiscal.verificaSeNotaFiscalEstaDuplicada(chaveNotaFiscal, this.contratos, this.fornecedorNotasTokens)) {\n return;\n }\n\n if (!chaveNotaFiscal) {\n this.removeErrorChaveNota();\n }\n\n if (!this.formGroup.valid) {\n return this.validateAllFormFields(this.formGroup);\n }\n\n this.habilitaCamposNotaFiscal();\n\n this.close(this.formGroup.value);\n }\n\n close(data?: any) {\n this.dialogRef.close(data);\n }\n\n onBlurNotaFiscal() {\n const chaveNotaFiscal = this.formGroup.get(\"chaveNotaFiscal\").value;\n\n if (this.verificaNotaFiscal.verificaSeNotaFiscalEstaDuplicada(chaveNotaFiscal, this.contratos, this.fornecedorNotasTokens)) { \n return;\n }\n\n this.removeErrorChaveNota();\n this.loading = true;\n this.notaValidatorService.pesquisarDocumentoValidaNotaEmUso({\n chaveDocumento: (chaveNotaFiscal || \"\").trim(),\n filialId: this.filialId\n })\n .pipe(takeUntil(this.unsubscribe$), finalize(() => this.loading = false))\n .subscribe(this.validateNotaFiscal);\n }\n\n private validateNotaFiscal = (response: PesquisarDocumentoResponse) => {\n if (!response || !response.documentos[0]) {\n return;\n }\n \n const value = response.documentos[0];\n\n if (!value.itens || !value.itens.length) {\n return;\n }\n\n if (!!value.itens[0].produto && !!this.produto && (value.itens[0].produto.id !== this.produto.id)) {\n this.addErrorIfProdutoIsDifferent();\n return;\n }\n\n const notaFiscal = { \n chave: this.formGroup.get(\"chaveNotaFiscal\").value, \n serie: value.serie, \n serieLegal: value.serieLegal, \n numero: value.numero,\n };\n\n if (!this.fornecedor) {\n this.closeAndReturnNota(notaFiscal, value.fornecedor, value.origemMercadoria);\n return;\n }\n\n if (!!(value.fornecedor || {id: undefined}).id && (value.fornecedor.id !== this.fornecedor.id)) {\n this.confirmAndAddNovoFornecedor(notaFiscal, value.fornecedor, value.origemMercadoria);\n return;\n }\n\n this.formGroup.get(\"serieNotaFiscal\").setValue(value.serie);\n this.formGroup.get(\"serieLegalNotaFiscal\").setValue(value.serieLegal);\n this.formGroup.get(\"numeroNotaFiscal\").setValue(value.numero);\n\n this.desabilitaCamposNotaFiscal();\n }\n\n private confirmAndAddNovoFornecedor(infoNota: { chave: string, serie: string, serieLegal: string, numero: number }, fornecedor: any, origemMercadoria: any) {\n this.confirmationService.confirm({\n header: 'O fornecedor vinculado a nota não é o mesmo que o selecionado',\n message: 'O fornecedor vinculado a nota não é o mesmo que o selecionado. Deseja adicionar um novo fornecedor ou cancelar a operação?',\n acceptLabel: 'Adicionar um novo fornecedor',\n rejectLabel: 'Cancelar operação',\n accept: () => this.closeAndReturnNota(infoNota, fornecedor, origemMercadoria),\n reject: () => this.formGroup.get(\"chaveNotaFiscal\").setValue(undefined)\n });\n }\n\n private addErrorIfProdutoIsDifferent() {\n this.formGroup.get(\"chaveNotaFiscal\").setErrors({ errorChaveNota: true });\n }\n\n private removeErrorChaveNota() {\n this.formGroup.get(\"chaveNotaFiscal\").setErrors(null);\n }\n\n private closeAndReturnNota(infoNota: { chave: string, serie: string, serieLegal: string, numero: number }, fornecedor: any, origemMercadoria: any) {\n this.dialogRef.close({ addFornecedor: true, infoNota, fornecedor, origemMercadoria })\n }\n\n private validateAllFormFields(formGroup: FormGroup) {\n Object.keys(formGroup.controls).forEach(field => {\n const control = formGroup.get(field);\n \n if (control instanceof FormControl) {\n control.markAsDirty({ onlySelf: true });\n } else if (control instanceof FormGroup) {\n this.validateAllFormFields(control);\n }\n });\n\n formGroup.markAsDirty({ onlySelf: true });\n }\n\n private camposPreenchidosValidation: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n const chave = control.get(\"chaveNotaFiscal\").value;\n const serie = control.get(\"serieNotaFiscal\").value;\n const numero = control.get(\"numeroNotaFiscal\").value;\n\n return !!chave || !!serie || !!numero ? null : { erroMultiplosCampos: true };\n };\n\n private habilitaCamposNotaFiscal() {\n this.formGroup.get(\"serieNotaFiscal\").enable();\n this.formGroup.get(\"serieLegalNotaFiscal\").enable();\n this.formGroup.get(\"numeroNotaFiscal\").enable();\n }\n\n private desabilitaCamposNotaFiscal() {\n this.formGroup.get(\"serieNotaFiscal\").disable();\n this.formGroup.get(\"serieLegalNotaFiscal\").disable();\n this.formGroup.get(\"numeroNotaFiscal\").disable();\n }\n}","import { NgModule } from \"@angular/core\";\nimport { NotaFormComponent } from \"./nota-form.component\";\nimport { CommonModule } from \"@angular/common\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\nimport { DynamicDialogModule } from \"primeng/components/dynamicdialog/dynamicdialog\";\nimport { InputTextModule } from \"primeng/inputtext\";\nimport { ButtonModule, ControlErrorsModule, LoadingStateModule } from \"@seniorsistemas/angular-components\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { ConfirmDialogModule } from \"primeng/confirmdialog\";\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n DynamicDialogModule,\n InputTextModule,\n ButtonModule,\n ControlErrorsModule,\n TranslateModule,\n LoadingStateModule,\n ConfirmDialogModule\n ],\n declarations: [ NotaFormComponent ],\n entryComponents: [ NotaFormComponent ]\n})\nexport class NotaFormModule {\n\n}","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { AgendaService } from \"./agenda.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"agenda\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/agenda`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n AgendaService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class AgendaModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { Injectable, Inject } from \"@angular/core\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { CidadeDto } from \"./cidade-dto\";\nimport { EntityService } from \"../entity-service\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class CidadeService extends EntityService<CidadeDto> {\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/cidade`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { CidadeService } from \"./cidade.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"cidade\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/cidade`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n CidadeService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class CidadeModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { ContratoCompraItemDto } from \"./contrato-compra-item-dto\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class ContratoCompraItemService extends EntityService<ContratoCompraItemDto> {\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n protected environment: any;\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/contratoCompraItem`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n \n this.environment = environment;\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n\n\n public pesquisarItensContratoCompra(params: any) {\n return this.http.post(`${this.environment.project.domain}/${this.environment.project.service}/queries/pesquisarItensContratoCompra`, params).pipe(this.defaultCatch());\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { ContratoCompraItemService } from \"./contrato-compra-item.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"contratoCompraItem\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/contratoCompraItem`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n ContratoCompraItemService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class ContratoCompraItemModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { ContratoCompraItemDto } from \"../contrato-compra-item/contrato-compra-item-dto\";\nimport { EntityService, ListParams } from \"../entity-service\";\nimport { ContratoCompraDto } from \"./contrato-compra-dto\";\n\n@Injectable()\nexport class ContratoCompraService extends EntityService<ContratoCompraDto> {\n\n constructor(\n protected http: HttpClient,\n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) private environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/contratoCompra`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n }\n\n public listContratosCompra(params: PesquisaContratosCompraParams) {\n return this.http.post(`${this.environment.project.domain}/${this.environment.project.service}/queries/pesquisarContratosCompra`, params).pipe(this.defaultCatch());\n }\n\n public getItens(contratoCompraId: any, id: any) {\n return this.http.get<ContratoCompraItemDto>(`${this.entityUrl}/${contratoCompraId}/itens/${id}`).pipe(this.defaultCatch());\n }\n\n public updateItens(contratoCompraId: any, id: any, contratoCompraItemDto: ContratoCompraItemDto) {\n return this.http\n .put<ContratoCompraItemDto>(`${this.entityUrl}/${contratoCompraId}/itens/${id}`, contratoCompraItemDto)\n .pipe(this.defaultCatch());\n }\n\n public listItens(contratoCompraId: any, listParams: ListParams) {\n return this.http\n .get<ContratoCompraItemDto[]>(`${this.entityUrl}/${contratoCompraId}/itens`, { params: this.getListQueryParams(listParams) })\n .pipe(this.defaultCatch());\n }\n\n public insertItens(contratoCompraId: any, contratoCompraItemDto: ContratoCompraItemDto) {\n return this.http\n .post<ContratoCompraItemDto>(`${this.entityUrl}/${contratoCompraId}/itens`, contratoCompraItemDto)\n .pipe(this.defaultCatch());\n }\n\n public deleteItens(contratoCompraId: any, id: any) {\n return this.http.delete<ContratoCompraItemDto>(`${this.entityUrl}/${contratoCompraId}/itens/${id}`).pipe(this.defaultCatch());\n }\n}\n\nexport interface PesquisaContratosCompraParams {\n produtoId?: string;\n pessoaId?: string;\n numero?: number;\n dataEmissao?: Date;\n pagina?: {\n offset?: number;\n limit?: number;\n listaOrdenacao: {\n campo: string;\n ordenacao: 'Asc' | 'Desc'\n }[]\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { ContratoCompraService } from \"./contrato-compra.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"contratoCompra\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/contratoCompra`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n ContratoCompraService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class ContratoCompraModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { Injectable, Inject } from \"@angular/core\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { DerivacaoDto } from \"../derivacao/derivacao-dto\";\nimport { EntityService } from \"../entity-service\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class DerivacaoService extends EntityService<DerivacaoDto> {\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n constructor(protected http: HttpClient, protected messageService: MessageService, @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/derivacao`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { DerivacaoService } from \"./derivacao.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"derivacao\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/derivacao`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n DerivacaoService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class DerivacaoModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { EmpresaDto } from \"./empresa-dto\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class EmpresaService extends EntityService<EmpresaDto> {\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/empresa`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { EmpresaService } from \"./empresa.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"empresa\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/empresa`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n EmpresaService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class EmpresaModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { EstadoDto } from \"./estado-dto\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class EstadoService extends EntityService<EstadoDto> {\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/estado`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { EstadoService } from \"./estado.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"estado\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/estado`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n EstadoService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class EstadoModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { FamiliaProdutoDto } from \"./familia-produto-dto\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class FamiliaProdutoService extends EntityService<FamiliaProdutoDto> {\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/familiaProduto`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { FamiliaProdutoService } from \"./familia-produto.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"familiaProduto\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/familiaProduto`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n FamiliaProdutoService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class FamiliaProdutoModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { FilialDto } from \"./filial-dto\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport interface PesquisarFiliaisInput {\n nome?: string;\n codigo?: string;\n cnpjs?: string[];\n pagina: {\n offset: number;\n limit: number;\n listaOrdenacao?: {\n campo: string;\n ordenacao: 'Asc' | 'Desc'\n }[]\n };\n}\n\n@Injectable()\nexport class FilialService extends EntityService<FilialDto> {\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n private readonly baseUrl: string;\n constructor(\n protected http: HttpClient,\n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/filial`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n this.baseUrl = `${environment.project.domain}/${environment.project.service}/`;\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n\n public listFiliais(filters: PesquisarFiliaisInput) {\n return this.http.post(`${this.baseUrl}queries/pesquisarFiliais`, filters).pipe(this.defaultCatch());\n }\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { FilialService } from \"./filial.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"filial\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/filial`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n FilialService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class FilialModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { PaisDto } from \"./pais-dto\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class PaisService extends EntityService<PaisDto> {\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/pais`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { PaisService } from \"./pais.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"pais\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/pais`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n PaisService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class PaisModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { PedidoVendaItemDto } from \"./pedido-venda-item-dto\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class PedidoVendaItemService extends EntityService<PedidoVendaItemDto> {\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n protected queriesUrl: string;\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService, \n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/pedidoVendaItem`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n this.queriesUrl = `${environment.project.domain}/${environment.project.service}/queries`;\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n\n public pesquisarItensPedidoVenda(pesquisa: any) {\n return this.http.post(`${this.queriesUrl}/pesquisarItensPedidoVenda`, pesquisa).pipe(this.defaultCatch());\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { PedidoVendaItemService } from \"./pedido-venda-item.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"pedidoVendaItem\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/pedidoVendaItem`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n PedidoVendaItemService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class PedidoVendaItemModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService, ListParams } from \"../entity-service\";\nimport { PedidoVendaItemDto } from \"../pedido-venda-item/pedido-venda-item-dto\";\nimport { PedidoVendaDto, PesquisaPedidosVendaDto } from \"./pedido-venda-dto\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class PedidoVendaService extends EntityService<PedidoVendaDto> {\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n protected queriesUrl: string;\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/pedidoVenda`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n this.queriesUrl = `${environment.project.domain}/${environment.project.service}/queries`;\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n\n public getItens(pedidoVendaId: any, id: any) {\n return this.http.get<PedidoVendaItemDto>(`${this.entityUrl}/${pedidoVendaId}/itens/${id}`).pipe(this.defaultCatch());\n }\n\n public pesquisarPedidosVenda(pesquisa: PesquisaPedidosVendaDto) {\n return this.http.post(`${this.queriesUrl}/pesquisarPedidosVenda`, pesquisa).pipe(this.defaultCatch());\n }\n\n public updateItens(pedidoVendaId: any, id: any, pedidoVendaItemDto: PedidoVendaItemDto) {\n return this.http\n .put<PedidoVendaItemDto>(`${this.entityUrl}/${pedidoVendaId}/itens/${id}`, pedidoVendaItemDto)\n .pipe(this.defaultCatch());\n }\n\n public listItens(pedidoVendaId: any, listParams: ListParams) {\n return this.http\n .get<PedidoVendaItemDto[]>(`${this.entityUrl}/${pedidoVendaId}/itens`, { params: this.getListQueryParams(listParams) })\n .pipe(this.defaultCatch());\n }\n\n public insertItens(pedidoVendaId: any, pedidoVendaItemDto: PedidoVendaItemDto) {\n return this.http.post<PedidoVendaItemDto>(`${this.entityUrl}/${pedidoVendaId}/itens`, pedidoVendaItemDto).pipe(this.defaultCatch());\n }\n\n public deleteItens(pedidoVendaId: any, id: any) {\n return this.http.delete<PedidoVendaItemDto>(`${this.entityUrl}/${pedidoVendaId}/itens/${id}`).pipe(this.defaultCatch());\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { PedidoVendaService } from \"./pedido-venda.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"pedidoVenda\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/pedidoVenda`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n PedidoVendaService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class PedidoVendaModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { PessoaEnderecoDto } from \"./pessoa-endereco-dto\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class PessoaEnderecoService extends EntityService<PessoaEnderecoDto> {\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/pessoaEndereco`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { PessoaEnderecoService } from \"./pessoa-endereco.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"pessoaEndereco\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/pessoaEndereco`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n PessoaEnderecoService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class PessoaEnderecoModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { PessoaFisicaDto } from \"./pessoa-fisica-dto\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class PessoaFisicaService extends EntityService<PessoaFisicaDto> {\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/pessoaFisica`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { PessoaFisicaService } from \"./pessoa-fisica.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"pessoaFisica\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/pessoaFisica`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n PessoaFisicaService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class PessoaFisicaModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { PessoaJuridicaDto } from \"./pessoa-juridica-dto\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class PessoaJuridicaService extends EntityService<PessoaJuridicaDto> {\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/pessoaJuridica`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { PessoaJuridicaService } from \"./pessoa-juridica.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"pessoaJuridica\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/pessoaJuridica`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n PessoaJuridicaService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class PessoaJuridicaModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { PessoaDto } from \"./pessoa-dto\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class PessoaService extends EntityService<PessoaDto> {\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/pessoa`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { PessoaService } from \"./pessoa.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"pessoa\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/pessoa`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n PessoaService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class PessoaModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { HttpClient, HttpParams } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { ProdutoDto } from \"./produto-dto\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class ProdutoService extends EntityService<ProdutoDto> {\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n constructor(\n protected http: HttpClient,\n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) private environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/produto`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n\n listProdutosRecebimento(params: ProdutoRecebimentoParams) {\n return this.http.post(`${this.environment.project.domain}/${this.environment.project.service}/queries/pesquisarProdutoRecebimento`, params).pipe(this.defaultCatch());\n }\n\n listProdutos(params: ProdutoParams) {\n return this.http.post(`${this.environment.project.domain}/${this.environment.project.service}/queries/pesquisarProduto`, params).pipe(this.defaultCatch());\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\nexport interface ProdutoRecebimentoParams {\n empresaId?: string;\n filialId?: string;\n tipoAgendamentoId?: string;\n codigo?: string;\n descricao?: string;\n pesquisa?: string;\n pagina?: {\n offset?: number;\n limit?: number;\n listaOrdenacao?: {\n campo: string;\n ordenacao: 'Asc' | 'Desc'\n }[]\n };\n}\n\nexport interface ProdutoParams {\n empresaId?: string;\n filialId?: string;\n tipoAgendamentoId?: string;\n codigo?: string;\n descricao?: string;\n pesquisa?: string;\n situacao?: 'ATIVO' | 'INATIVO';\n pagina?: {\n offset?: number;\n limit?: number;\n listaOrdenacao?: {\n campo: string;\n ordenacao: 'Asc' | 'Desc'\n }[]\n };\n}\n\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { ProdutoService } from \"./produto.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"produto\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/produto`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n ProdutoService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class ProdutoModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { Injectable } from \"@angular/core\";\nimport { BehaviorSubject } from \"rxjs\";\n\n@Injectable()\nexport class HasChangeService {\n \n private messageSource = new BehaviorSubject<{id, change}>({id:null, change:false});\n current = this.messageSource.asObservable();\n \n constructor() { }\n \n hasChange(idAgenda: string) {\n let message = {\n id: idAgenda,\n change: true\n }\n this.messageSource.next(message);\n }\n\n hasChangeSave(idAgenda: string) {\n let message = {\n id: idAgenda,\n change: false\n }\n this.messageSource.next(message);\n }\n \n get change() {\n return this.messageSource.value;\n }\n}","export class ErpProcessData {\n agendaId: string;\n chaveIntegracao?: string;\n filialId?: string;\n produtoId?: string;\n motoristaId?: string;\n veiculoId?: string;\n eixos?: number;\n transgeniaId?: string;\n transportadoraId?: string;\n fornecedores?: string[]; \n}","import { elementEventFullName } from '@angular/compiler/src/view_compiler/view_compiler';\r\nimport { Injectable } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { ErpProcessData } from './erp-process-data';\r\n\r\n@Injectable()\r\nexport class ErpProcessService {\r\n\r\n private messageSource = new BehaviorSubject<ErpProcessData>(undefined);\r\n current = this.messageSource.asObservable();\r\n \r\n\r\n constructor() { }\r\n\r\n changeData(message: ErpProcessData) {\r\n this.messageSource.next(message)\r\n return message;\r\n }\r\n\r\n getProcessData() {\r\n return this.messageSource.value;\r\n }\r\n\r\n changeDataErp(newMessage: ErpProcessData) {\r\n let message = this.messageSource.value ? this.messageSource.value : newMessage;\r\n message.filialId = newMessage.filialId;\r\n message.chaveIntegracao = newMessage.chaveIntegracao;\r\n message.produtoId = newMessage.produtoId;\r\n message.transgeniaId = newMessage.transgeniaId;\r\n message.transportadoraId = newMessage.transportadoraId;\r\n return this.changeData(message); \r\n }\r\n\r\n changeDataVeiculo(veiculoId: string, eixos: number) {\r\n let message = this.messageSource.value ? this.messageSource.value : new ErpProcessData();\r\n message.veiculoId = veiculoId;\r\n message.eixos = eixos;\r\n return this.changeData(message);\r\n }\r\n\r\n changeDataMotorista(motoristaId: string) {\r\n let message = this.messageSource.value ? this.messageSource.value : new ErpProcessData();\r\n message.motoristaId = motoristaId;\r\n return this.changeData(message);\r\n }\r\n\r\n changeDataAgenda(agendaId: string, motoristaId: string, veiculoId: string, eixos: number) {\r\n let message = this.messageSource.value ? this.messageSource.value : new ErpProcessData();\r\n message.agendaId = agendaId;\r\n message.motoristaId = motoristaId;\r\n message.veiculoId = veiculoId;\r\n message.eixos = eixos;\r\n return this.changeData(message);\r\n }\r\n\r\n builderErpProcessData(erpProcessData: ErpProcessData, formGroup: FormGroup): ErpProcessData {\r\n erpProcessData.chaveIntegracao = formGroup.get(\"chaveNotaFiscal\") != null ? formGroup.get(\"chaveNotaFiscal\").value : null;\r\n erpProcessData.filialId = this.getFieldFormGroup(formGroup, 'filial');\r\n erpProcessData.produtoId = this.getFieldFormGroup(formGroup, 'produto');\r\n erpProcessData.transgeniaId = this.getFieldFormGroup(formGroup, 'transgenia');\r\n erpProcessData.transportadoraId = this.getFieldFormGroup(formGroup, 'transportadora');\r\n erpProcessData.fornecedores = this.listarIdsFornecedores(formGroup.getRawValue().fornecedores); \r\n return erpProcessData;\r\n }\r\n\r\n private getFieldFormGroup(formGroup: FormGroup, fieldName: string) {\r\n if(formGroup.get(fieldName) == null || formGroup.get(fieldName).value == null) {\r\n return null\r\n }\r\n return formGroup.get(fieldName).value.id;\r\n }\r\n\r\n private listarIdsFornecedores (fornecedores: any) {\r\n let listaFornecedores = []; \r\n if (fornecedores != null) {\r\n fornecedores.filter(element => element.fornecedor != null && element.fornecedor != undefined).forEach(element => listaFornecedores.push(element.fornecedor));\r\n }\r\n return listaFornecedores.map(val => val.id);\r\n\r\n }\r\n\r\n}","import { Injectable } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable()\nexport class ErpFormConfigService {\n\n private messageSource = new BehaviorSubject<boolean>(false);\n current = this.messageSource.asObservable();\n \n constructor() { }\n\n enableRevalidation() {\n this.messageSource.next(true);\n }\n\n get enable() {\n return this.messageSource.value;\n }\n}","import { HasChangeService } from './../../../core/has-change/has-change-service';\nimport { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\nimport { ErpProcessService } from \"./../../../core/erp-process-data/erp-process-service\";\nimport { ErpFormConfigService } from './../../erp-form-config/erp-form-config-service';\n\nimport { RecebimentoContratoService } from \"./recebimento.service\";\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"recebimentoContrato\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/recebimentoContrato`,\n },\n ]),\n ],\n providers: [\n RecebimentoContratoService,\n ErpProcessService,\n ErpFormConfigService,\n HasChangeService\n ],\n declarations: [],\n exports: [],\n})\nexport class RecebimentoContratoModule {}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { RoyaltyDto } from \"./royalty-dto\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class RoyaltyService extends EntityService<RoyaltyDto> {\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/royalty`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { RoyaltyService } from \"./royalty.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"royalty\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/royalty`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n RoyaltyService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class RoyaltyModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { SafraDto } from \"./safra-dto\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class SafraService extends EntityService<SafraDto> {\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/safra`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { SafraService } from \"./safra.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"safra\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/safra`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n SafraService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class SafraModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { TransportadoraDto } from \"./transportadora-dto\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class TransportadoraService extends EntityService<TransportadoraDto> {\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/transportadora`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { TransportadoraService } from \"./transportadora.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"transportadora\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/transportadora`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n TransportadoraService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class TransportadoraModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { UnidadeMedidaDto } from \"./unidade-medida-dto\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class UnidadeMedidaService extends EntityService<UnidadeMedidaDto> {\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/unidadeMedida`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { UnidadeMedidaService } from \"./unidade-medida.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"unidadeMedida\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/unidadeMedida`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n UnidadeMedidaService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class UnidadeMedidaModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\nimport { ExpedicaoService } from \"./expedicao.service\";\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"expedicao\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/expedicao`,\n },\n ]),\n ],\n providers: [ ExpedicaoService ]\n})\nexport class ExpedicaoModule {\n\n}","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { DevolucaoDto } from \"./devolucao-dto\";\nimport { Devolucao } from \"./devolucao\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class DevolucaoService extends EntityService<DevolucaoDto> {\n private readonly _baseUrl: string;\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/devolucao`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n \n this._baseUrl = `${environment.project.domain}/${environment.project.service}`;\n } \n\n public registrarChegadaVeiculoComDevolucao(payload: RegistrarChegadaVeiculoComDevolucaoPayload) {\n return this.http.post(`${this._baseUrl}/actions/registrarChegadaDeVeiculoComDevolucao`, payload).pipe(this.defaultCatch());\n }\n\n}\n\nexport interface RegistrarChegadaVeiculoComDevolucaoPayload {\n devolucao: Devolucao;\n circuito: string;\n sequenciaInicial: string;\n vagaInicial?: string;\n}\n\n \n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\nimport { DevolucaoService } from \"./devolucao.service\";\nimport { ErpProcessService } from \"./../../../core/erp-process-data/erp-process-service\";\nimport { ErpFormConfigService } from './../../erp-form-config/erp-form-config-service';\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"devolucao\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/devolucao`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n DevolucaoService,\n ErpProcessService,\n ErpFormConfigService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class DevolucaoModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { OrdemCompraService } from \"./ordem-compra.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"ordemCompra\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/ordem-compra`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n OrdemCompraService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class OrdemCompraModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { RecebimentoOrdemCompraDto } from \"./recebimento-ordem-compra-dto\";\nimport { RecebimentoOrdemCompra } from \"./recebimento-ordem-compra\";\n \n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class RecebimentoOrdemCompraService extends EntityService<RecebimentoOrdemCompraDto> {\n private readonly _baseUrl: string;\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/recebimentoOrdemCompra`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n \n this._baseUrl = `${environment.project.domain}/${environment.project.service}`;\n }\n\n public registrarChegadaVeiculoRecebimentoOrdemCompra(payload: RegistrarChegadaVeiculoRecebimentoOrdemCompraPayload) {\n return this.http.post(`${this._baseUrl}/actions/registrarChegadaDeVeiculoComRecebimentoOrdemCompra`, payload).pipe(this.defaultCatch());\n } \n}\n\nexport interface RegistrarChegadaVeiculoRecebimentoOrdemCompraPayload {\n recebimentoOrdemCompra: RecebimentoOrdemCompra,\n circuito: string;\n sequenciaInicial: string;\n vagaInicial: string;\n}\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\nimport { RecebimentoOrdemCompraService } from \"./recebimento-ordem-compra.service\";\nimport { ErpProcessService } from \"./../../../core/erp-process-data/erp-process-service\";\nimport { ErpFormConfigService } from './../../erp-form-config/erp-form-config-service';\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"recebimentoOrdemCompra\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/recebimentoOrdemCompra`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n RecebimentoOrdemCompraService,\n ErpProcessService,\n ErpFormConfigService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class RecebimentoOrdemCompraModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { Injectable, Inject } from \"@angular/core\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { MessageService } from \"primeng/api\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { Transgenia } from \"./transgenia\";\n\n@Injectable()\nexport class TransgeniaService extends EntityService<Transgenia> {\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/transgenia`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n}","import { NgModule } from \"@angular/core\";\nimport { TransgeniaService } from \"./transgenia.service\";\n\n@NgModule({\n providers: [ TransgeniaService ]\n})\nexport class TransgeniaModule { }\n","import { Injectable, Inject } from \"@angular/core\";\nimport { EntityService } from \"../entity-service\";\nimport { ProcessoAvulsoDto } from \"./processo-avulso-dto\";\nimport { MessageService } from \"primeng/api\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { ProcessoAvulso } from \"./processo-avulso\";\n\n@Injectable()\nexport class ProcessoAvulsoService extends EntityService<ProcessoAvulsoDto> {\n constructor(\n protected http: HttpClient,\n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any,\n ) {\n super(\n http, messageService, \n `${environment.project.domain}/${environment.project.service}/entities/processoAvulso`,\n `${environment.project.domain}/${environment.project.service}/actions`\n )\n }\n\n registrarChegada(processo: RegistrarChegadaComProcessoAvulsoPayload) {\n return this.http.post(`${this.actionsUrl}/registrarChegadaDeVeiculoComProcessoAvulso`, processo).pipe(this.defaultCatch());\n }\n}\n\nexport interface RegistrarChegadaComProcessoAvulsoPayload {\n processoAvulso: ProcessoAvulso;\n circuito: string;\n sequenciaInicial: string;\n vagaInicial: string;\n}","import { NgModule } from \"@angular/core\";\nimport { ProcessoAvulsoService } from \"./processo-avulso.service\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\nimport { ErpProcessService } from \"./../../../core/erp-process-data/erp-process-service\";\nimport { ErpFormConfigService } from './../../erp-form-config/erp-form-config-service';\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"processoAvulso\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/processoAvulso`,\n },\n ]),\n ],\n providers: [ ProcessoAvulsoService, ErpProcessService, ErpFormConfigService ]\n})\nexport class ProcessoAvulsoModule {\n\n}","import { Inject, Injectable } from \"@angular/core\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\nimport { LogIntegracaoDto } from \"./log-integracao-dto\";\nimport { EntityService } from \"../entity-service\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class LogIntegracaoService extends EntityService<LogIntegracaoDto> {\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n constructor(protected http: HttpClient, protected messageService: MessageService, @Inject(ERP_ENVIRONMENT) private environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/erp/entities/logIntegracao`,\n `${environment.project.domain}/erp/actions`\n );\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { LogIntegracaoService } from \"./log-integracao.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"logIntegracao\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/logIntegracao`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n LogIntegracaoService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class LogIntegracaoModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { AgendaModule } from \"./entities/agenda/agenda.module\";\nimport { CidadeModule } from \"./entities/cidade/cidade.module\";\nimport { ContratoCompraItemModule } from \"./entities/contrato-compra-item/contrato-compra-item.module\";\nimport { ContratoCompraModule } from \"./entities/contrato-compra/contrato-compra.module\";\nimport { DerivacaoModule } from \"./entities/derivacao/derivacao.module\";\nimport { EmpresaModule } from \"./entities/empresa/empresa.module\";\nimport { EstadoModule } from \"./entities/estado/estado.module\";\nimport { FamiliaProdutoModule } from \"./entities/familia-produto/familia-produto.module\";\nimport { FilialModule } from \"./entities/filial/filial.module\";\nimport { PaisModule } from \"./entities/pais/pais.module\";\nimport { PedidoVendaItemModule } from \"./entities/pedido-venda-item/pedido-venda-item.module\";\nimport { PedidoVendaModule } from \"./entities/pedido-venda/pedido-venda.module\";\nimport { PessoaEnderecoModule } from \"./entities/pessoa-endereco/pessoa-endereco.module\";\nimport { PessoaFisicaModule } from \"./entities/pessoa-fisica/pessoa-fisica.module\";\nimport { PessoaJuridicaModule } from \"./entities/pessoa-juridica/pessoa-juridica.module\";\nimport { PessoaModule } from \"./entities/pessoa/pessoa.module\";\nimport { ProdutoModule } from \"./entities/produto/produto.module\";\nimport { RecebimentoContratoModule } from \"./entities/recebimento-contrato/recebimento.module\";\nimport { RoyaltyModule } from \"./entities/royalty/royalty.module\";\nimport { SafraModule } from \"./entities/safra/safra.module\";\nimport { TransportadoraModule } from \"./entities/transportadora/transportadora.module\";\nimport { UnidadeMedidaModule } from \"./entities/unidade-medida/unidade-medida.module\";\nimport { ExpedicaoModule } from \"./entities/expedicao/expedicao.module\";\nimport { IntegrationService } from \"./integration.service\";\nimport { DevolucaoModule } from \"./entities/devolucao/devolucao.module\";\nimport { OrdemCompraModule } from \"./entities/ordem-compra/ordem-compra.module\";\nimport { RecebimentoOrdemCompraModule } from \"./entities/recebimento-ordem-compra/recebimento-ordem-compra.module\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\nimport { NotaValidatorService } from \"./nota-validator.service\";\nimport { TransgeniaService } from \"./entities/transgenia/transgenia.service\";\nimport { TransgeniaModule } from \"./entities/transgenia/transgenia.module\";\nimport { ProcessoAvulsoModule } from \"./entities/processo-avulso/processo-avulso.module\";\nimport { LogIntegracaoModule } from \"./entities/log-integracao/log-integracao.module\";\n\n@NgModule({\n imports: [\n EmpresaModule,\n PessoaModule,\n PessoaFisicaModule,\n PessoaJuridicaModule,\n PaisModule,\n EstadoModule,\n CidadeModule,\n PessoaEnderecoModule,\n FilialModule,\n TransportadoraModule,\n ProdutoModule,\n UnidadeMedidaModule,\n RoyaltyModule,\n FamiliaProdutoModule,\n SafraModule,\n PedidoVendaModule,\n PedidoVendaItemModule,\n ContratoCompraModule,\n ContratoCompraItemModule,\n RecebimentoContratoModule,\n AgendaModule,\n DerivacaoModule,\n ExpedicaoModule,\n DevolucaoModule,\n OrdemCompraModule,\n RecebimentoOrdemCompraModule,\n TransgeniaModule,\n PermissionsModule,\n ProcessoAvulsoModule,\n LogIntegracaoModule\n ],\n providers: [\n IntegrationService,\n NotaValidatorService\n ],\n exports: [\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class CoreModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { Injectable } from \"@angular/core\";\nimport { ChegadaVeiculoOverride, OverrideParams } from \"@seniorsistemas/yms-routines\";\nimport { throwError } from \"rxjs\";\nimport { map, mergeMap } from \"rxjs/operators\";\nimport { AgendaService } from \"../core/entities/agenda/agenda.service\";\nimport { Devolucao } from \"../core/entities/devolucao/devolucao\";\nimport { DevolucaoService } from \"../core/entities/devolucao/devolucao.service\";\n\n@Injectable()\nexport class DevolucaoChegadaVeiculoOverride {\n private readonly DEVOLUCAO_KEY = \"ERP_SENIOR_DEVOLUCAO\";\n constructor(\n private override: ChegadaVeiculoOverride,\n private agendaService: AgendaService,\n private devolucaoService: DevolucaoService\n ){}\n\n public initialize() {\n this.override.addOverride(this.DEVOLUCAO_KEY, (params) => this.functionToOverride(params));\n }\n\n public remove() {\n this.override.disposeOverride(this.DEVOLUCAO_KEY);\n }\n\n private functionToOverride(params: OverrideParams){\n return this.agendaService.atualizarAgenda(params.agenda)\n .pipe(\n mergeMap(_ => this.devolucaoService.list({\n filterQuery: `agenda.id eq '${params.agenda.id}'`,\n page: 0,\n size: 1\n })),\n map(({ contents }) => contents.length ? contents[0] : null),\n mergeMap((devolucao: Devolucao) => {\n if (!devolucao) return throwError(\"Não foi possÃvel encontrar os dados de devolução\");\n\n return this.devolucaoService.registrarChegadaVeiculoComDevolucao({\n devolucao,\n circuito: params.circuito.id,\n sequenciaInicial: params.sequencia.id,\n vagaInicial: (params.vaga || {}).id\n });\n })\n );\n }\n\n}","import { Veiculo } from './../../veiculo/veiculo';\nimport { Motorista } from './../motorista/motorista';\nimport * as _moment from \"moment\"; const moment = _moment;\nimport { AgendaDto } from \"./agenda-dto\";\nimport { getLookupLabel } from \"../../../../utils/lookup-utils\";\n\nexport interface Planta {\n id: string;\n nome: string;\n cnpj: string;\n endereco: any;\n}\n\nexport class Agenda {\n public id: string;\n public descricao: string;\n public tipoAgendamento?: any;\n public planta?: any;\n public status?: string;\n public veiculo?: Veiculo;\n public motorista?: Motorista;\n public createdBy?: string;\n public createdByErp?: boolean;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n public externalTenant?: any;\n\n public static fromDto(agendaDto: AgendaDto, originEntity?: string): Agenda {\n const model: any = { ...agendaDto };\n\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n const lookupSeparator = \" - \";\n const displayFields = [\"descricao\"];\n\n model.label = getLookupLabel(model, displayFields, lookupSeparator);\n\n return model as Agenda;\n }\n\n public static toDto(agenda: Agenda, originEntity?: string): AgendaDto {\n const dto: any = { ...agenda };\n\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n return dto;\n }\n}\n","import * as _moment from \"moment\";const moment = _moment\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { UnidadeMedidaDto } from \"./unidade-medida-dto\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport class UnidadeMedida {\n public id?: string;\n public codigo: string;\n public descricao: string;\n public quantidadeDecimais: number;\n public createdBy?: string;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n public static fromDto(unidadeMedidaDto: UnidadeMedidaDto, originEntity?: string): UnidadeMedida {\n const model: any = { ...unidadeMedidaDto };\n\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n const lookupSeparator = \" - \";\n const displayFields = [\n \"id\",\n \"codigo\",\n \"descricao\",\n \"quantidadeDecimais\",\n \"createdBy\",\n \"createdDate\",\n \"lastModifiedBy\",\n \"lastModifiedDate\",\n ];\n\n model.label = displayFields.map(field => model[field]).join(lookupSeparator);\n\n return model as UnidadeMedida;\n }\n\n public static toDto(unidadeMedida: UnidadeMedida, originEntity?: string): UnidadeMedidaDto {\n const dto: any = { ...unidadeMedida };\n\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n return dto;\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import * as _moment from \"moment\";const moment = _moment\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { RoyaltyDto } from \"./royalty-dto\";\nimport { Empresa } from \"../empresa/empresa\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport class Royalty {\n public id?: string;\n public empresa: Empresa;\n public codigo: number;\n public descricao: string;\n public createdBy?: string;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n public static fromDto(royaltyDto: RoyaltyDto, originEntity?: string): Royalty {\n const model: any = { ...royaltyDto };\n\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n const lookupSeparator = \" - \";\n const displayFields = [\"id\", \"codigo\", \"descricao\", \"createdBy\", \"createdDate\", \"lastModifiedBy\", \"lastModifiedDate\"];\n\n model.label = displayFields.map(field => model[field]).join(lookupSeparator);\n\n if (originEntity !== \"Empresa\" && model.empresa) model.empresa = Empresa.fromDto(model.empresa, \"Royalty\");\n\n return model as Royalty;\n }\n\n public static toDto(royalty: Royalty, originEntity?: string): RoyaltyDto {\n const dto: any = { ...royalty };\n\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n if (originEntity !== \"Empresa\" && dto.empresa) dto.empresa = Empresa.toDto(dto.empresa, \"Royalty\");\n\n return dto;\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import * as _moment from \"moment\";const moment = _moment\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { FamiliaProdutoDto } from \"./familia-produto-dto\";\nimport { Empresa } from \"../empresa/empresa\";\nimport { Situacao } from \"../../enums/situacao\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport class FamiliaProduto {\n public id?: string;\n public empresa: Empresa;\n public codigo: string;\n public descricao: string;\n public situacao: Situacao;\n public createdBy?: string;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n public static fromDto(familiaProdutoDto: FamiliaProdutoDto, originEntity?: string): FamiliaProduto {\n const model: any = { ...familiaProdutoDto };\n\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n const lookupSeparator = \" - \";\n const displayFields = [\"id\", \"codigo\", \"descricao\", \"situacao\", \"createdBy\", \"createdDate\", \"lastModifiedBy\", \"lastModifiedDate\"];\n\n model.label = displayFields.map(field => model[field]).join(lookupSeparator);\n\n if (originEntity !== \"Empresa\" && model.empresa) model.empresa = Empresa.fromDto(model.empresa, \"FamiliaProduto\");\n\n return model as FamiliaProduto;\n }\n\n public static toDto(familiaProduto: FamiliaProduto, originEntity?: string): FamiliaProdutoDto {\n const dto: any = { ...familiaProduto };\n\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n if (originEntity !== \"Empresa\" && dto.empresa) dto.empresa = Empresa.toDto(dto.empresa, \"FamiliaProduto\");\n\n return dto;\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import * as _moment from \"moment\";const moment = _moment\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { ProdutoDto } from \"./produto-dto\";\nimport { Empresa } from \"../empresa/empresa\";\nimport { UnidadeMedida } from \"../unidade-medida/unidade-medida\";\nimport { Royalty } from \"../royalty/royalty\";\nimport { FamiliaProduto } from \"../familia-produto/familia-produto\";\nimport { TipoProduto } from \"../../enums/tipo-produto\";\nimport { Situacao } from \"../../enums/situacao\";\nimport { getLookupLabel } from \"../../../../utils/lookup-utils\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport class Produto {\n public id?: string;\n public empresa: Empresa;\n public unidadeMedida: UnidadeMedida;\n public codigo: string;\n public descricao: string;\n public descricaoComplementar: string;\n public tipo: TipoProduto;\n public situacao: Situacao;\n public produtoMisto: boolean = false;\n public comprado: boolean = false;\n public unidadeMedidaAgroG5: UnidadeMedida;\n public royalty?: Royalty;\n public familia?: FamiliaProduto;\n public createdBy?: string;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n public static fromDto(produtoDto: ProdutoDto, originEntity?: string): Produto {\n const model: any = { ...produtoDto };\n\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n const lookupSeparator = \" - \";\n const displayFields = [\n \"codigo\",\n \"descricao\",\n // \"tipo\",\n ];\n\n model.label = getLookupLabel(model, displayFields, lookupSeparator);\n\n if (originEntity !== \"Empresa\" && model.empresa) model.empresa = Empresa.fromDto(model.empresa, \"Produto\");\n if (originEntity !== \"UnidadeMedida\" && model.unidadeMedida)\n model.unidadeMedida = UnidadeMedida.fromDto(model.unidadeMedida, \"Produto\");\n if (originEntity !== \"UnidadeMedida\" && model.unidadeMedidaAgroG5)\n model.unidadeMedidaAgroG5 = UnidadeMedida.fromDto(model.unidadeMedidaAgroG5, \"Produto\");\n if (originEntity !== \"Royalty\" && model.royalty) model.royalty = Royalty.fromDto(model.royalty, \"Produto\");\n if (originEntity !== \"FamiliaProduto\" && model.familia) model.familia = FamiliaProduto.fromDto(model.familia, \"Produto\");\n\n return model as Produto;\n }\n\n public static toDto(produto: Produto, originEntity?: string): ProdutoDto {\n const dto: any = { ...produto };\n\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n if (originEntity !== \"Empresa\" && dto.empresa) dto.empresa = Empresa.toDto(dto.empresa, \"Produto\");\n if (originEntity !== \"UnidadeMedida\" && dto.unidadeMedida) dto.unidadeMedida = UnidadeMedida.toDto(dto.unidadeMedida, \"Produto\");\n if (originEntity !== \"UnidadeMedida\" && dto.unidadeMedidaAgroG5)\n dto.unidadeMedidaAgroG5 = UnidadeMedida.toDto(dto.unidadeMedidaAgroG5, \"Produto\");\n if (originEntity !== \"Royalty\" && dto.royalty) dto.royalty = Royalty.toDto(dto.royalty, \"Produto\");\n if (originEntity !== \"FamiliaProduto\" && dto.familia) dto.familia = FamiliaProduto.toDto(dto.familia, \"Produto\");\n\n return dto;\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import * as _moment from \"moment\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { DerivacaoDto } from \"./derivacao-dto\";\nimport { Empresa } from \"../empresa/empresa\";\nimport { Produto } from \"../produto/produto\";\nimport { Situacao } from \"../../enums/situacao\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { getLookupLabel } from \"../../../../utils/lookup-utils\";\nconst moment = _moment;\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport class Derivacao {\n public id?: string;\n public codigo: string;\n public descricao: string;\n public empresa: Empresa;\n public produto: Produto;\n public situacao: Situacao;\n public createdBy?: string;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n public static fromDto(derivacaoDto: DerivacaoDto, originEntity?: string): Derivacao {\n const model: any = { ...derivacaoDto };\n\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n const lookupSeparator = \" - \";\n const displayFields = [\"codigo\", \"descricao\"];\n\n model.label = getLookupLabel(model, displayFields, lookupSeparator);\n\n if (originEntity !== \"Empresa\" && model.empresa) model.empresa = Empresa.fromDto(model.empresa, \"Derivacao\");\n if (originEntity !== \"Produto\" && model.produto) model.produto = Produto.fromDto(model.produto, \"Derivacao\");\n\n return model as Derivacao;\n }\n\n public static toDto(derivacao: Derivacao, originEntity?: string): DerivacaoDto {\n const dto: any = { ...derivacao };\n\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n if (originEntity !== \"Empresa\" && dto.empresa) dto.empresa = Empresa.toDto(dto.empresa, \"Derivacao\");\n if (originEntity !== \"Produto\" && dto.produto) dto.produto = Produto.toDto(dto.produto, \"Derivacao\");\n\n return dto;\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import * as _moment from \"moment\";const moment = _moment\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { TransportadoraDto } from \"./transportadora-dto\";\nimport { PessoaJuridica } from \"../pessoa-juridica/pessoa-juridica\";\nimport { PessoaEndereco } from \"../pessoa-endereco/pessoa-endereco\";\nimport { SituacaoPessoa } from \"../../enums/situacao-pessoa\";\nimport { Pessoa } from \"../pessoa/pessoa\";\nimport { getLookupLabel } from \"../../../../utils/lookup-utils\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport class Transportadora {\n public id?: string;\n public codigo: number;\n public placaVeiculo: string;\n public pessoa: Pessoa;\n public endereco: PessoaEndereco;\n public situacao: SituacaoPessoa;\n public createdBy?: string;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n public static fromDto(transportadoraDto: TransportadoraDto, originEntity?: string): Transportadora {\n const model: any = { ...transportadoraDto };\n\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n const lookupSeparator = \" - \";\n const displayFields = [\n \"codigo\", \"pessoa.nome\", \"pessoa.cpfCnpj\"\n ];\n\n model.label = getLookupLabel(model, displayFields, lookupSeparator);\n\n if (originEntity !== \"Pessoa\" && model.pessoa)\n model.pessoa = Pessoa.fromDto(model.pessoa, \"Transportadora\");\n if (originEntity !== \"PessoaEndereco\" && model.endereco) model.endereco = PessoaEndereco.fromDto(model.endereco, \"Transportadora\");\n\n return model as Transportadora;\n }\n\n public static toDto(transportadora: Transportadora, originEntity?: string): TransportadoraDto {\n const dto: any = { ...transportadora };\n\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n if (originEntity !== \"Pessoa\" && dto.pessoa)\n dto.pessoa = Pessoa.toDto(dto.pessoa, \"Transportadora\");\n if (originEntity !== \"PessoaEndereco\" && dto.endereco) dto.endereco = PessoaEndereco.toDto(dto.endereco, \"Transportadora\");\n\n return dto;\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import * as _moment from \"moment\";\nimport { Agenda } from \"../agenda/agenda\";\nimport { Derivacao } from \"../derivacao/derivacao\";\nimport { PessoaEndereco } from \"../pessoa-endereco/pessoa-endereco\";\nimport { Pessoa } from \"../pessoa/pessoa\";\nimport { Produto } from \"../produto/produto\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\nimport { DevolucaoDto } from \"./devolucao-dto\";\nimport { Filial } from \"../filial/filial\";\nimport { Transportadora } from \"../transportadora/transportadora\";\nconst moment = _moment\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport class Devolucao {\n public id: string;\n public fornecedor: Pessoa;\n public origemMercadoria: PessoaEndereco; \n public derivacao: Derivacao;\n public produto: Produto;\n public agenda: Agenda;\n public transportadora: Pessoa;\n public chaveNotaFiscal?: string;\n public numeroNotaFiscal?: string;\n public serieNotaFiscal?: string;\n public numeroNotaFiscalProdutor?: string;\n public serieNotaFiscalProdutor?: string;\n public createdBy?: string;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n public custom?: any;\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n public static fromDto(devolucaoDto: DevolucaoDto, originEntity?: string): Devolucao {\n const model: any = { ...devolucaoDto };\n\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n \n\n const lookupSeparator = \" - \";\n const displayFields = [\n ''\n ];\n\n model.label = displayFields.map(field => model[field]).join(lookupSeparator);\n\n if (originEntity !== \"Pessoa\" && model.fornecedor) model.fornecedor = Pessoa.fromDto(model.fornecedor, \"Devolucao\");\n if (originEntity !== \"Filial\" && model.filial) model.filial = Filial.fromDto(model.filial, \"Devolucao\");\n if (originEntity !== \"Transportadora\" && model.transportadora) model.transportadora = Transportadora.fromDto(model.transportadora, \"Devolucao\");\n if (originEntity !== \"Produto\" && model.produto) model.produto = Produto.fromDto(model.produto, \"Devolucao\");\n if (originEntity !== \"Agenda\" && model.agenda) model.agenda = Agenda.fromDto(model.agenda, \"Devolucao\");\n if ((originEntity !== \"PessoaEndereco\" && model.origemMercadoria)) model.origemMercadoria = PessoaEndereco.fromDto(model.origemMercadoria, \"Recebimento\");\n if ((originEntity !== \"Derivacao\" && model.derivacao)) model.derivacao = Derivacao.fromDto(model.derivacao, \"Devolucao\");\n return model as Devolucao;\n }\n\n public static toDto(devolucao: Devolucao, originEntity?: string): DevolucaoDto {\n const dto: any = { ...devolucao };\n\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n if (originEntity !== \"Pessoa\" && dto.fornecedor) dto.fornecedor = Pessoa.toDto(dto.fornecedor, \"Devolucao\");\n if (originEntity !== \"Filial\" && dto.filial) dto.filial = Filial.toDto(dto.filial, \"Devolucao\");\n if (originEntity !== \"Transportadora\" && dto.transportadora) dto.transportadora = Transportadora.toDto(dto.transportadora, \"Devolucao\");\n if (originEntity !== \"Produto\" && dto.produto) dto.produto = Produto.toDto(dto.produto, \"Devolucao\");\n if (originEntity !== \"Agenda\" && dto.agenda) dto.agenda = Agenda.toDto(dto.agenda, \"Devolucao\");\n if ((originEntity !== \"PessoaEndereco\" && dto.origemMercadoria)) dto.origemMercadoria = PessoaEndereco.toDto(dto.origemMercadoria, \"Devolucao\");\n\n return dto;\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","export enum StatusAgenda {\n AGUARDANDO_CONFIRMACAO = \"AGUARDANDO_CONFIRMACAO_SOLICITANTE\",\n AGENDADO = \"AGENDADO\",\n AGUARDANDO_CONFIRMACAO_SOLICITANTE = \"AGUARDANDO_CONFIRMACAO\",\n REJEITADO_POR_VALIDACAO = \"REJEITADO_POR_VALIDACAO\",\n CANCELADO = \"CANCELADO\"\n}\n","import { ErpFormConfigService } from './../../core/erp-form-config/erp-form-config-service';\nimport { AfterViewInit, Component, Input, OnDestroy, OnInit } from \"@angular/core\";\nimport { FormBuilder, FormControl, FormGroup, Validators } from \"@angular/forms\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { FieldType, FormField } from \"@seniorsistemas/angular-components\";\nimport * as _moment from \"moment\";\nimport { ConfirmationService, MessageService, SortMeta } from \"primeng/api\";\nimport { ReplaySubject, Subject } from \"rxjs\";\nimport { concatMap, filter, finalize, mergeMap, takeUntil } from \"rxjs/operators\";\nimport { isValidFilter } from \"../../../utils/utils\";\nimport { onLookupRequest, onSearchRequest } from \"../../../utils/lookup-utils\";\nimport { Agenda } from \"../../core/entities/agenda/agenda\";\nimport { Derivacao } from \"../../core/entities/derivacao/derivacao\";\nimport { DerivacaoService } from \"../../core/entities/derivacao/derivacao.service\";\nimport { Devolucao } from \"../../core/entities/devolucao/devolucao\";\nimport { DevolucaoDto } from \"../../core/entities/devolucao/devolucao-dto\";\nimport { DevolucaoService } from \"../../core/entities/devolucao/devolucao.service\";\nimport { Filial } from \"../../core/entities/filial/filial\";\nimport { FilialService, PesquisarFiliaisInput } from \"../../core/entities/filial/filial.service\";\nimport { PessoaEndereco } from \"../../core/entities/pessoa-endereco/pessoa-endereco\";\nimport { PessoaEnderecoService } from \"../../core/entities/pessoa-endereco/pessoa-endereco.service\";\nimport { Pessoa } from \"../../core/entities/pessoa/pessoa\";\nimport { PessoaService } from \"../../core/entities/pessoa/pessoa.service\";\nimport { Produto } from \"../../core/entities/produto/produto\";\nimport { ProdutoService, ProdutoParams } from \"../../core/entities/produto/produto.service\";\nimport { Transportadora } from \"../../core/entities/transportadora/transportadora\";\nimport { TransportadoraService } from \"../../core/entities/transportadora/transportadora.service\";\nimport { DevolucaoChegadaVeiculoOverride } from \"../devolucao-chegada-veiculo.override\";\nimport { StatusAgenda } from \"./../../core/enums/status-agenda\";\nimport { AgendaService } from \"../../core/entities/agenda/agenda.service\";\nimport { ErpProcessData } from \"../../core/erp-process-data/erp-process-data\";\nimport { ErpProcessService } from \"../../core/erp-process-data/erp-process-service\";\nimport { HasChangeService } from '../../core/has-change/has-change-service';\n\nconst moment = _moment;\n\n@Component({\n selector: 'devolucao-form',\n templateUrl: './devolucao-form.component.html'\n})\n\nexport class DevolucaoFormComponent implements OnInit, OnDestroy, AfterViewInit {\n formGroup: FormGroup;\n\n filialSearchFields: FormField[];\n filialSearchGridFields: FormField[];\n filialSearchGridData: Filial[];\n filialLookupDisplayFields = [\"codigo\", \"nome\", \"empresa.nome\"];\n filialAdvancedDisplayFields = [\"id\", \"codigo\", \"nome\", \"empresa.nome\"];\n filialLookupSeparator = \" - \";\n filialLookupSuggestions: Filial[];\n filialSearchTotalRecords: number;\n\n fornecedorSearchFields: FormField[];\n fornecedorSearchGridData: Pessoa[];\n fornecedorLookupDisplayFields = [\"codigo\", \"nome\"];\n fornecedorAdvancedDisplayFields = [\"id\", \"codigo\", \"nome\"];\n fornecedorLookupSeparator = \" - \";\n fornecedorLookupSuggestions: Pessoa[];\n fornecedorSearchTotalRecords: number;\n\n produtoSearchFields: FormField[];\n produtoSearchGridData: Produto[];\n produtoLookupDisplayFields = [\"codigo\", \"descricao\"];\n produtoAdvancedDisplayFields = [\"id\", \"codigo\", \"descricao\"];\n produtoLookupSeparator = \" - \";\n produtoLookupSuggestions: Produto[];\n produtoSearchTotalRecords: number;\n\n derivacaoSearchFields: FormField[];\n derivacaoSearchGridData: Derivacao[];\n derivacaoLookupDisplayFields = [\"codigo\", \"descricao\"];\n derivacaoAdvancedDisplayFields = [\"id\", \"codigo\", \"descricao\"];\n derivacaoLookupSeparator = \" - \";\n derivacaoLookupSuggestions: Derivacao[];\n derivacaoSearchTotalRecords: number;\n\n origemMercadoriaSearchFields: FormField[];\n origemMercadoriaSearchGridData: PessoaEndereco[];\n origemMercadoriaLookupDisplayFields = [\"codigo\", \"endereco\"];\n origemMercadoriaAdvancedDisplayFields = [\"id\", \"codigo\", \"endereco\", \"numero\"];\n origemMercadoriaLookupSeparator = \" - \";\n origemMercadoriaLookupSuggestions: PessoaEndereco[];\n origemMercadoriaSearchTotalRecords: number;\n\n transportadoraSearchFields: FormField[];\n transportadoraSearchGridFields: FormField[];\n transportadoraSearchGridData: Transportadora[];\n transportadoraLookupDisplayFields = [\"codigo\", \"pessoa.nome\", \"pessoa.cpfCnpj\"];\n transportadoraAdvancedDisplayFields = [\"id\", \"codigo\", \"pessoa.nome\", \"pessoa.cpfCnpj\"];\n transportadoraLookupSeparator = \" - \";\n transportadoraLookupSuggestions: Transportadora[];\n transportadoraSearchTotalRecords: number;\n\n disableButtonSave: boolean = false;\n\n totalEixosContratados: number = 0;\n totalEixosComposicao: number = 0;\n\n private formCarregado: any;\n\n public saveAndInitButton: any;\n\n public loading: boolean;\n\n @Input() private agenda: Agenda;\n\n private readonly ngUnsubscribe = new Subject<void>(); \n private erpProcessData: ErpProcessData;\n private enableRevalidation: boolean;\n\n constructor(\n private fb: FormBuilder,\n private router: Router,\n private translate: TranslateService,\n private filialService: FilialService,\n private pessoaService: PessoaService,\n private produtoService: ProdutoService,\n private derivacaoService: DerivacaoService,\n private origemMercadoriaService: PessoaEnderecoService,\n private transportadoraService: TransportadoraService,\n private devolucaoService: DevolucaoService,\n private messageService: MessageService,\n private route: ActivatedRoute,\n private override: DevolucaoChegadaVeiculoOverride,\n private confirmationService: ConfirmationService,\n private agendaService: AgendaService,\n private erpProcessService: ErpProcessService,\n private erpFormConfigService: ErpFormConfigService,\n private hasChangeService: HasChangeService\n ) {\n this.formGroup = this.getFormGroup();\n }\n\n ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n\n this.override.remove();\n }\n\n ngAfterViewInit(): void {\n this.override.initialize();\n this.saveAndInitButton = document.getElementById('init');\n\n this.formGroup.valueChanges.subscribe(() => {\n if (this.formCarregado) {\n this.hasChangeService.hasChange(this.agenda.id);\n }\n });\n }\n\n ngOnInit() {\n this.filialSearchFields = this.getFilialSearchFields();\n this.filialSearchGridFields = this.getFilialSearchGridFields();\n this.fornecedorSearchFields = this.getFornecedorSearchFields();\n this.produtoSearchFields = this.getProdutoSearchFields();\n this.derivacaoSearchFields = this.getDerivacaoSearchFields();\n this.origemMercadoriaSearchFields = this.getOrigemMercadoriaSearchFields();\n this.transportadoraSearchFields = this.getTransportadoraSearchFields();\n this.transportadoraSearchGridFields = this.getTransportadoraSearchGridFields();\n\n this.route.params.pipe(takeUntil(this.ngUnsubscribe)).subscribe(({ agenda }) => {\n if (agenda != 'new') {\n this.getDevolucao(agenda);\n }\n });\n\n this.getEmpresaFilial();\n this.filialValueChanges();\n\n const getFilterQueryProduto = (value: any) => `produto.id eq '${value.id}' and situacao eq 'ATIVO'`;\n this.checkValuesChanges(\"produto\", \"derivacao\", this.derivacaoService,\n getFilterQueryProduto, ['codigo', 'descricao'], 10, true, true\n );\n\n const getFilterQueryFornecedor = (value: any) => `pessoa.id eq '${value.id}'`;\n this.checkValuesChanges(\n \"fornecedor\", \"origemMercadoria\", this.origemMercadoriaService,\n getFilterQueryFornecedor, ['codigo', 'endereco'], 10, false, true\n );\n\n if (this.agenda && this.agenda.externalTenant) {\n this.setTransportadora(this.agenda.externalTenant.cnpj);\n }\n\n this.totalEixosComposicao = this.agenda && this.agenda.veiculo ? this.agenda.veiculo.eixos || 0 : 0;\n\n const statusAgenda = [\"AGUARDANDO_CONFIRMACAO_SOLICITANTE\", \"AGENDADO\", \"AGUARDANDO_CONFIRMACAO\", \"EM_EXECUCAO\", \"REJEITADO_POR_VALIDACAO\"];\n if (this.agenda && !statusAgenda.includes(this.agenda.status)) {\n this.formGroup.disable();\n this.disableButtonSave = true;\n }\n this.createdByErpDisableForm();\n\n this.erpProcessService.current.subscribe(message => this.erpProcessData = message);\n this.erpFormConfigService.current.subscribe(message => this.enableRevalidation = message);\n }\n\n public createdByErpDisableForm() {\n if (this.agenda && this.agenda.createdByErp) {\n this.formGroup.get('filial').disable();\n this.formGroup.get('fornecedor').disable();\n this.formGroup.get('produto').disable();\n this.formGroup.get('derivacao').disable();\n this.formGroup.get('origemMercadoria').disable();\n this.formGroup.get('transportadora').disable();\n this.formGroup.get('contratos').disable();\n }\n }\n\n private getEmpresaFilial() {\n const planta = this.agenda.planta || { cnpj: [] };\n if (planta.cnpj.length !== 1) return;\n\n this.filialService\n .list({\n page: 0,\n size: 1,\n filterQuery: `pessoa.cpfCnpj eq '${planta.cnpj[0]}'`,\n displayFields: ['*', 'empresa.nome']\n })\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(({ contents }) => {\n if (contents.length === 1) {\n this.formGroup.get(\"filial\").setValue(Filial.fromDto(contents[0]));\n }\n });\n }\n\n private filialValueChanges() {\n this.formGroup.get(\"filial\")\n .valueChanges\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(value => {\n if (!!value) {\n return this.formGroup.get(\"produto\").enable();\n }\n this.formGroup.get(\"produto\").setValue(undefined);\n this.formGroup.get(\"produto\").disable();\n });\n }\n\n private checkValuesChanges(formControlUpdated: string, formControlDependent: string, service: any, getFilterQuery: any,\n variables: any, querySize: number = 1, isChangeValidators?: boolean, clearFormControlDependent?: boolean) {\n\n this.formGroup.get(formControlUpdated)\n .valueChanges\n .pipe(\n takeUntil(this.ngUnsubscribe),\n filter(value => {\n if (isChangeValidators) {\n this.formGroup.get(formControlDependent).setValidators(value ? Validators.required : Validators.nullValidator);\n }\n if (clearFormControlDependent) {\n this.formGroup.get(formControlDependent).setValue(null);\n }\n if (!value) {\n this.formGroup.get(formControlDependent).setValue(undefined);\n this.formGroup.get(formControlDependent).disable();\n return false;\n }\n return true;\n }),\n mergeMap((value: any) => {\n const filterQuery = getFilterQuery(value);\n return service.list({ filterQuery, page: 0, size: querySize });\n })\n )\n .subscribe(({ contents }) => {\n if (!contents.length) {\n this.formGroup.get(formControlDependent).enable();\n return;\n }\n if (contents.length === 1) {\n const code = contents[0][variables[0]] ? contents[0][variables[0]].toString() : '';\n const description = contents[0][variables[1]] ? contents[0][variables[1]].toString() : '';\n if (!description.trim() && !code.trim()) {\n contents[0].label = this.translate.instant('yms.erp.derivacao_sem_descricao');\n } else {\n contents[0].label = `${code} - ${description}`;\n }\n \n this.formGroup.get(formControlDependent).setValue(contents[0]);\n }\n\n if (contents.length > 1) {\n this.formGroup.get(formControlDependent).enable();\n } else {\n this.formGroup.get(formControlDependent).disable();\n }\n });\n }\n\n public getDevolucao(agendaId: string) {\n this.devolucaoService\n .list({\n filterQuery: `agenda.id eq '${agendaId}'`,\n size: 1,\n page: 0\n })\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(({ contents }) => {\n if (!contents.length) {\n return;\n }\n\n this.totalEixosContratados = contents[0].eixos || 0;\n this.totalEixosComposicao = contents[0].agenda && contents[0].agenda.veiculo\n ? contents[0].agenda.veiculo.eixos || 0 : 0;\n\n const devolucao: DevolucaoDto = Devolucao.fromDto(contents[0]);\n this.formGroup.enable();\n this.formGroup.patchValue(devolucao);\n });\n this.formCarregado = true;\n }\n\n\n public onFilialLookupRequest(value: string) {\n const filterInput = this.getFilialSearchFields()\n .filter(({ type }) => isValidFilter(type, value))\n .reduce((a, { name, type }) => {\n if (type === FieldType.Integer) {\n return { ...a, [name]: value.replace(/\\D/, \"\") };\n }\n return { ...a, [name]: value };\n }, { cnpjs: this.agenda.planta.cnpj, pagina: { limit: 10, offset: 0 } } as PesquisarFiliaisInput);\n\n this.filialService\n .listFiliais(filterInput)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) =>\n this.filialLookupSuggestions = list.filiais.map((filial: any) => Filial.fromDto(filial))\n );\n }\n\n public onFilialSearchRequest(event: any) {\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const sort: SortMeta[] = multiSortMeta;\n const sortFormatted = !!(sort || []).length && { campo: sort[0].field, ordenacao: sort[0].order > 0 ? 'Asc' : 'Desc' };\n const filterInput = this.getFilialSearchFields()\n .filter(({ name }) => filterData[name] != undefined && filterData[name] != \"\")\n .reduce((a, { name, type }) => {\n const value = filterData[name];\n if (type === FieldType.Integer) {\n return { ...a, [name]: `${value}`.replace(/\\D/, \"\") };\n }\n return { ...a, [name]: value };\n }, { cnpjs: this.agenda.planta.cnpj, pagina: { limit: rows, offset: page, listaOrdenacao: sortFormatted ? [{ ...(sortFormatted) }] : null } } as PesquisarFiliaisInput);\n\n this.filialService\n .listFiliais(filterInput)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.filialSearchGridData = list.filiais.map(Filial.fromDto);\n this.filialSearchTotalRecords = list.qtdTotalRegistros;\n });\n }\n\n onFornecedorLookupRequest(value: string) {\n onLookupRequest(this.fornecedorSearchFields, this.fornecedorLookupDisplayFields, this.fornecedorAdvancedDisplayFields,\n this.fornecedorLookupSeparator, this.pessoaService, value, ` fornecedor eq true `)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => this.fornecedorLookupSuggestions = list.contents);\n }\n\n onFornecedorSearchRequest(event: any) {\n onSearchRequest(this.fornecedorSearchFields, this.fornecedorLookupDisplayFields,\n this.fornecedorAdvancedDisplayFields, this.fornecedorLookupSeparator, this.pessoaService, event,\n ` fornecedor eq true `)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.fornecedorSearchGridData = list.contents;\n this.fornecedorSearchTotalRecords = list.totalElements;\n });\n }\n\n onProdutoLookupRequest(value: string) {\n const filial = this.formGroup.get(\"filial\").value;\n const tipoAgendamento = this.agenda.tipoAgendamento;\n\n this.produtoService\n .listProdutos({\n pesquisa: value,\n empresaId: !!filial ? filial.empresa.id : null,\n filialId: !!filial ? filial.id : null,\n tipoAgendamentoId: !!tipoAgendamento ? tipoAgendamento.id : null,\n situacao: 'ATIVO',\n pagina: {\n limit: 100,\n offset: 0\n }\n })\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((res: any) => this.produtoLookupSuggestions = res.produtos.map(Produto.fromDto));\n }\n\n onProdutoSearchRequest(event: any) {\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const sort: SortMeta[] = multiSortMeta;\n const sortFormatted = !!(sort || []).length && { campo: sort[0].field, ordenacao: sort[0].order > 0 ? 'Asc' : 'Desc' };\n const filterInput = this.getProdutoSearchFields()\n .filter(({ name }) => filterData[name] != undefined && filterData[name] != \"\")\n .reduce((a, { name, type }) => {\n const value = filterData[name];\n if (type === FieldType.Integer) {\n return { ...a, [name]: `${value}`.replace(/\\D/, \"\") };\n }\n return { ...a, [name]: value };\n }, { pagina: { limit: rows, offset: page, listaOrdenacao: sortFormatted ? [{ ...(sortFormatted) }] : null } } as ProdutoParams);\n\n const filial = this.formGroup.get(\"filial\").value;\n const tipoAgendamento = this.agenda.tipoAgendamento;\n\n this.produtoService.listProdutos({\n ...filterInput,\n empresaId: !!filial ? filial.empresa.id : null,\n filialId: !!filial ? filial.id : null,\n situacao: 'ATIVO',\n tipoAgendamentoId: !!tipoAgendamento ? tipoAgendamento.id : null\n })\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((res: any) => {\n this.produtoSearchTotalRecords = res.qtdTotalRegistros;\n this.produtoSearchGridData = res.produtos.map(Produto.fromDto);\n });\n }\n\n onDerivacaoLookupRequest(value: string) {\n onLookupRequest(this.derivacaoSearchFields, this.derivacaoLookupDisplayFields, this.derivacaoAdvancedDisplayFields,\n this.derivacaoLookupSeparator, this.derivacaoService, value)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.derivacaoLookupSuggestions = list.contents;\n });\n }\n\n onDerivacaoSearchRequest(event: any) {\n onSearchRequest(this.derivacaoSearchFields, this.derivacaoLookupDisplayFields,\n this.derivacaoAdvancedDisplayFields, this.derivacaoLookupSeparator, this.derivacaoService, event)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.derivacaoSearchGridData = list.contents;\n this.derivacaoSearchTotalRecords = list.totalElements;\n });\n }\n\n onOrigemMercadoriaLookupRequest(value: string) {\n onLookupRequest(this.origemMercadoriaSearchFields, this.origemMercadoriaLookupDisplayFields,\n this.origemMercadoriaAdvancedDisplayFields, this.origemMercadoriaLookupSeparator, this.origemMercadoriaService, value,\n ` pessoa.id eq '${this.formGroup.get(\"fornecedor\").value.id}' `\n )\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.origemMercadoriaLookupSuggestions = list.contents;\n });\n }\n\n onOrigemMercadoriaSearchRequest(event: any) {\n onSearchRequest(this.origemMercadoriaSearchFields, this.origemMercadoriaLookupDisplayFields,\n this.origemMercadoriaAdvancedDisplayFields, this.origemMercadoriaLookupSeparator, this.origemMercadoriaService, event,\n ` pessoa.id eq '${this.formGroup.get(\"fornecedor\").value.id}' `)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.origemMercadoriaSearchGridData = list.contents;\n this.origemMercadoriaSearchTotalRecords = list.totalElements;\n });\n }\n\n\n onTransportadoraLookupRequest(value: string) {\n onLookupRequest(this.transportadoraSearchFields, this.transportadoraLookupDisplayFields, this.transportadoraAdvancedDisplayFields, this.transportadoraLookupSeparator, this.transportadoraService, value)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.transportadoraLookupSuggestions = list.contents;\n });\n }\n\n onTransportadoraSearchRequest(event: any) {\n onSearchRequest(this.transportadoraSearchFields, this.transportadoraLookupDisplayFields, this.transportadoraAdvancedDisplayFields, this.transportadoraLookupSeparator, this.transportadoraService, event)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.transportadoraSearchGridData = list.contents;\n this.transportadoraSearchTotalRecords = list.totalElements;\n });\n }\n\n setTransportadora(value: string) {\n if (value) {\n const cnpj = value.replace('.', '').replace('/', '').replace('-', '');\n const filterQuery = `pessoa.cpfCnpj eq '${cnpj}'`;\n this.transportadoraService.list({ filterQuery, page: 0, size: 10 })\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(({ contents }) => {\n if (contents.length === 1) {\n const code = contents[0].codigo ? contents[0].codigo.toString() : '';\n const description = contents[0].descricao ? contents[0].descricao.toString() : '';\n if (!description.trim() && !code.trim()) {\n contents[0].label = this.translate.instant('yms.erp.derivacao_sem_descricao');\n } else {\n contents[0].label = `${code} - ${description}`;\n }\n this.formGroup.get('transportadora').setValue(contents[0]);\n }\n });\n }\n }\n\n onSave(start?: boolean) {\n this.formGroup.get('agenda').setValue(this.agenda);\n if (this.formGroup.invalid) {\n this.validateAllFormFields(this.formGroup);\n }\n\n this.loading = true;\n\n if (this.isNew() || !this.enableRevalidation) {\n return this.saveAndInit(start);\n }\n\n this.erpProcessData = this.erpProcessService.builderErpProcessData(this.erpProcessData, this.formGroup);\n this.erpProcessService.changeDataErp(this.erpProcessData);\n return this.agendaService\n .checarRevalidacao(this.erpProcessData)\n .pipe(\n takeUntil(this.ngUnsubscribe),\n finalize(() => this.loading = false),\n )\n .subscribe((response: any) => {\n if (response.requerRevalidacao) {\n this.atualizaAgendaParaRejeitadoPorValidacao();\n }\n else {\n this.saveAndInit(start);\n }\n });\n }\n\n private atualizaAgendaParaRejeitadoPorValidacao() {\n this.confirmationService.confirm({\n header: this.translate.instant(\"yms.patio.agenda_revalidacao_title\"),\n message: this.translate.instant(\"yms.patio.agenda_revalidacao_message\"),\n accept: () => {\n this.hasChangeService.hasChangeSave(this.agenda.id);\n this.agenda.status = StatusAgenda.REJEITADO_POR_VALIDACAO;\n this.agenda.motorista = {id: this.erpProcessData.motoristaId};\n this.agenda.veiculo = {id: this.erpProcessData.veiculoId};\n this.agendaService\n .atualizarAgenda(this.agenda)\n .pipe(\n takeUntil(this.ngUnsubscribe),\n concatMap((_) => this.getSaveObservable()),\n finalize(() => this.loading = false),\n )\n .subscribe((_) => {\n this.successMessage();\n this.router.navigate([\"/chegada-veiculo\"], { relativeTo: this.route });\n });\n },\n reject: () => this.loading = false,\n });\n }\n\n private saveAndInit(start: boolean) {\n this.getSaveObservable()\n .pipe(\n takeUntil(this.ngUnsubscribe),\n finalize(() => this.loading = false)\n )\n .subscribe((value: any) => {\n this.formGroup.get('id').setValue(value.id || null);\n this.successMessage();\n if (start && this.saveAndInitButton) {\n this.hasChangeService.hasChangeSave(this.agenda.id);\n this.saveAndInitButton.click();\n }\n });\n }\n\n private successMessage() {\n this.messageService.add({\n severity: \"success\",\n summary: this.translate.instant(\"saved_message_title\"),\n detail: this.translate.instant(\"saved_message_content\"),\n });\n }\n\n private addMessage(severity: string, summary: string, detail: string) {\n this.messageService.add({\n severity,\n summary: this.translate.instant(summary),\n detail: this.translate.instant(detail),\n });\n }\n\n private getSaveObservable() {\n const value = this.formGroup.getRawValue();\n const devolucaoDto = Devolucao.toDto(value);\n\n if (this.isNew() && !value.id) {\n return this.devolucaoService.insert(devolucaoDto);\n } else {\n return this.devolucaoService.update(this.formGroup.value.id, devolucaoDto);\n }\n }\n\n public isNew() {\n return !this.formGroup.value.id;\n }\n\n private getFormGroup() {\n return this.fb.group({\n id: [undefined],\n filial: [undefined, Validators.required],\n fornecedor: [undefined, Validators.required],\n produto: [{ value: undefined, disabled: true }, Validators.required],\n derivacao: [{ value: undefined, disabled: true }, Validators.required],\n origemMercadoria: [{ value: undefined, disabled: true }, Validators.required],\n transportadora: [undefined],\n agenda: [undefined, Validators.required],\n chaveNotaFiscal: [undefined],\n numeroNotaFiscal: [undefined],\n serieNotaFiscal: [undefined],\n numeroNotaFiscalProdutor: [undefined],\n serieNotaFiscalProdutor: [undefined]\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 private getFilialSearchFields() {\n return [\n new FormField({\n name: \"nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.filial_nome\")\n }),\n new FormField({\n name: \"codigo\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.filial_codigo\")\n })\n ];\n }\n\n private getFilialSearchGridFields() {\n return [\n new FormField({\n name: \"nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.filial_nome\")\n }),\n new FormField({\n name: \"codigo\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.filial_codigo\")\n }),\n new FormField({\n name: \"empresa.nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.empresa\")\n })\n ];\n }\n\n private getFornecedorSearchFields() {\n return [\n new FormField({\n name: \"nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.pessoa_nome\")\n }),\n new FormField({\n name: \"codigo\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.pessoa_codigo\")\n }),\n ];\n }\n\n private getProdutoSearchFields() {\n return [\n new FormField({\n name: \"descricao\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.produto_descricao\")\n }),\n new FormField({\n name: \"codigo\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.produto_codigo\")\n }),\n ];\n }\n\n private getDerivacaoSearchFields() {\n return [\n new FormField({\n name: \"descricao\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.derivacao_descricao\")\n }),\n new FormField({\n name: \"codigo\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.derivacao_codigo\")\n }),\n ];\n }\n\n private getOrigemMercadoriaSearchFields() {\n return [\n new FormField({\n name: \"codigo\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.pessoa_endereco_codigo\")\n }),\n new FormField({\n name: \"numero\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.pessoa_endereco_numero\")\n }),\n new FormField({\n name: \"endereco\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.pessoa_endereco_endereco\")\n }),\n ];\n }\n\n private getTransportadoraSearchFields() {\n return [\n new FormField({\n name: \"codigo\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.transportadora_codigo\")\n }),\n new FormField({\n name: \"pessoa.nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.transportadora_descricao\")\n }),\n new FormField({\n name: \"pessoa.cpfCnpj\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.transportadora_cnpj\")\n })\n ];\n }\n\n private getTransportadoraSearchGridFields() {\n return [\n new FormField({\n name: \"codigo\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.transportadora_codigo\")\n }),\n new FormField({\n name: \"pessoa.nome\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.pessoa_nome\")\n }),\n new FormField({\n name: \"pessoa.cpfCnpj\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.transportadora_cnpj\")\n })\n ];\n }\n}\n","import { Component, Input, AfterViewInit } from \"@angular/core\";\nimport { Subject, throwError, of } from \"rxjs\";\nimport { takeUntil, switchMap, finalize } from \"rxjs/operators\";\nimport { Devolucao } from \"../../../core/entities/devolucao/devolucao\";\nimport { DevolucaoService } from \"../../../core/entities/devolucao/devolucao.service\";\nimport { DevolucaoDto } from \"../../../core/entities/devolucao/devolucao-dto\";\n\n\n@Component({\n selector: 'devolucao-info',\n template: `\n <div *sLoadingState=\"loading\" style=\"padding: 20px;\">\n <div class=\"detail-pane\" *ngIf=\"agenda\">\n <div class=\"detail-span\">\n <span class=\"title\">{{'yms.erp.devolucao_fornecedor' | translate}}</span>\n <span class=\"data\">{{devolucao?.fornecedor?.nome}}</span>\n </div>\n <div class=\"detail-span\">\n <span class=\"title\">{{'yms.erp.devolucao_transportadora' | translate}}</span>\n <span class=\"data\">{{devolucao?.transportadora?.nome}}</span>\n </div>\n <div class=\"detail-span\">\n <span class=\"title\">{{'yms.erp.devolucao_produto' | translate}}</span>\n <span class=\"data\">{{devolucao?.produto?.descricao}}</span>\n </div>\n <div class=\"detail-span\">\n <span class=\"title\">{{'yms.erp.devolucao_derivacao' | translate}}</span>\n <span class=\"data\">{{devolucao?.derivacao?.descricao}}</span>\n </div>\n \n <div class=\"detail-span\">\n <span class=\"title\">{{'yms.erp.devolucao_chave_nota_fiscal' | translate}}</span>\n <span class=\"data\">{{devolucao?.chaveNotaFiscal}}</span>\n </div>\n <div class=\"detail-span\">\n <span class=\"title\">{{'yms.erp.devolucao_numero_nota_fiscal' | translate}}</span>\n <span class=\"data\">{{devolucao?.numeroNotaFiscal}}</span>\n </div>\n <div class=\"detail-span\">\n <span class=\"title\">{{'yms.erp.devolucao_serie_nota_fiscal' | translate}}</span>\n <span class=\"data\">{{devolucao?.serieNotaFiscal}}</span>\n </div>\n <div class=\"detail-span\">\n <span class=\"title\">{{'yms.erp.devolucao_numero_nota_fiscal_produtor' | translate}}</span>\n <span class=\"data\">{{devolucao?.numeroNotaFiscalProdutor}}</span>\n </div>\n <div class=\"detail-span\">\n <span class=\"title\">{{'yms.erp.devolucao_serie_nota_fiscal_produtor' | translate}}</span>\n <span class=\"data\">{{devolucao?.serieNotaFiscalProdutor}}</span>\n </div> \n <div class=\"detail-span\">\n <span class=\"title\">{{'yms.erp.devolucao_origem_mercadoria' | translate}}</span>\n <span class=\"data\">{{devolucao?.origemMercadoria?.cep}} - {{devolucao?.origemMercadoria?.endereco}}</span>\n </div>\n </div>\n </div>\n `,\n styleUrls: ['./devolucao-info.component.scss']\n})\nexport class DevolucaoInfoComponent implements AfterViewInit {\n\n @Input() agenda: any;\n\n devolucao: Devolucao;\n loading = true;\n\n private readonly unsubscribe$: Subject<void>;\n constructor(private devolucaoService: DevolucaoService) {\n this.unsubscribe$ = new Subject();\n }\n\n ngAfterViewInit() {\n this.devolucaoService.list({\n filterQuery: `agenda.id eq '${this.agenda.id}'`,\n page: 0,\n size: 1\n })\n .pipe(\n takeUntil(this.unsubscribe$),\n switchMap(({ contents }) => {\n if (!contents.length) return throwError(\"Devolução não encontrado.\");\n\n return of(contents[0]);\n }),\n finalize(() => this.loading = false)\n )\n .subscribe((devolucao: DevolucaoDto) => this.devolucao = Devolucao.fromDto(devolucao));\n }\n\n}","import * as _moment from \"moment\";\nimport { Agenda } from \"../agenda/agenda\";\nimport { Filial } from \"../filial/filial\";\nimport { PedidoVenda } from \"../pedido-venda/pedido-venda\";\nimport { Pessoa } from \"../pessoa/pessoa\";\nimport { Transportadora } from \"../transportadora/transportadora\";\nimport { ExpedicaoDto } from \"./expedicao-dto\";\nimport { PedidoVendaItem } from \"../pedido-venda-item/pedido-venda-item\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\nconst moment = _moment\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport class Expedicao {\n public id: string;\n public clienteFaturamento: Pessoa;\n public clienteRemessa: Pessoa;\n public filial: Filial;\n public transportadora: Transportadora;\n public pedidos: OrdemVenda[];\n public agenda: Agenda;\n public eixos?: number;\n public createdBy?: string;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n public static fromDto(expedicaoDto: ExpedicaoDto, originEntity?: string): Expedicao {\n const model: any = { ...expedicaoDto };\n\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n const lookupSeparator = \" - \";\n const displayFields = [\n \"id\",\n \"clienteFaturamento.id\",\n \"clienteFaturamento.codigo\",\n \"clienteFaturamento.nome\",\n \"clienteRemessa.id\",\n \"clienteRemessa.codigo\",\n \"clienteRemessa.nome\",\n \"filial.id\",\n \"filial.codigo\",\n \"filial.nome\",\n \"transportadora.id\",\n \"transportadora.codigo\",\n \"transportadora.placaVeiculo\",\n \"pedidoVenda.id\",\n \"agenda.id\",\n \"agenda.descricao\",\n \"createdBy\",\n \"createdDate\",\n \"lastModifiedBy\",\n \"lastModifiedDate\",\n ];\n\n model.label = displayFields.map(field => model[field]).join(lookupSeparator);\n\n if (originEntity !== \"Pessoa\" && model.clienteFaturamento) model.clienteFaturamento = Pessoa.fromDto(model.clienteFaturamento, \"Recebimento\");\n if (originEntity !== \"Pessoa\" && model.clienteRemessa) model.clienteRemessa = Pessoa.fromDto(model.clienteRemessa, \"Recebimento\");\n if ((originEntity !== \"Filial\" && model.filial)) model.filial = Filial.fromDto(model.filial, \"Recebimento\");\n if ((originEntity !== \"Transportadora\" && model.transportadora)) model.transportadora = Transportadora.fromDto(model.transportadora, \"Recebimento\");\n if (originEntity !== \"Agenda\" && model.agenda) model.agenda = Agenda.fromDto(model.agenda, \"Recebimento\");\n\n return model as Expedicao;\n }\n\n public static toDto(expedicao: Expedicao, originEntity?: string): ExpedicaoDto {\n const dto: any = { ...expedicao };\n\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n if (originEntity !== \"Pessoa\" && dto.clienteFaturamento) dto.clienteFaturamento = Pessoa.toDto(dto.clienteFaturamento, \"Recebimento\");\n if (originEntity !== \"Pessoa\" && dto.clienteRemessa) dto.clienteRemessa = Pessoa.toDto(dto.clienteRemessa, \"Recebimento\");\n if (originEntity !== \"Filial\" && dto.filial) dto.filial = Filial.toDto(dto.filial, \"Recebimento\");\n if ((originEntity !== \"Transportadora\" && dto.transportadora)) dto.transportadora = Transportadora.toDto(dto.transportadora, \"Recebimento\");\n if (originEntity !== \"Agenda\" && dto.agenda) dto.agenda = Agenda.toDto(dto.agenda, \"Recebimento\");\n\n return dto;\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\nexport interface OrdemVenda {\n id?: string;\n expedicao?: Expedicao;\n pedidoVenda: PedidoVenda;\n itens: any[];\n}\n\nexport interface OrdemVendaItem {\n id?: string;\n pedido?: OrdemVenda;\n item: PedidoVendaItem;\n quantidade: number;\n}\n","import { StatusAgenda } from \"./../../core/enums/status-agenda\";\nimport {\n AfterViewInit,\n Component,\n Input,\n OnDestroy,\n OnInit,\n TemplateRef,\n ViewChild,\n} from \"@angular/core\";\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n Validators,\n FormArray,\n AbstractControl,\n} from \"@angular/forms\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { FieldType, FormField } from \"@seniorsistemas/angular-components\";\nimport { Hotkey, HotkeysService } from \"angular2-hotkeys\";\nimport * as _moment from \"moment\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { forkJoin, of, Subject, throwError } from \"rxjs\";\nimport { catchError, concatMap, finalize, map, takeUntil, } from \"rxjs/operators\";\nimport { FieldCustomizationService } from \"../../../utils/field-customization.service\";\nimport { FocusService } from \"../../../utils/focus.service\";\nimport {\n isValidFilter,\n mergeUnique,\n userCanVisualize,\n} from \"../../../utils/utils\";\nimport { Agenda } from \"../../core/entities/agenda/agenda\";\nimport { AgendaService } from \"../../core/entities/agenda/agenda.service\";\nimport {\n Expedicao,\n OrdemVendaItem,\n} from \"../../core/entities/expedicao/expedicao\";\nimport { ExpedicaoService } from \"../../core/entities/expedicao/expedicao.service\";\nimport { Filial } from \"../../core/entities/filial/filial\";\nimport {\n FilialService,\n PesquisarFiliaisInput,\n} from \"../../core/entities/filial/filial.service\";\nimport { PedidoVendaService } from \"../../core/entities/pedido-venda/pedido-venda.service\";\nimport { Pessoa } from \"../../core/entities/pessoa/pessoa\";\nimport { PessoaService } from \"../../core/entities/pessoa/pessoa.service\";\nimport { TransportadoraService } from \"../../core/entities/transportadora/transportadora.service\";\nimport { ExpedicaoChegadaVeiculoOverride } from \"../expedicao-chegada-veiculo.override\";\nimport { PedidoVenda } from \"../../core/entities/pedido-venda/pedido-venda\";\nimport { PedidoVendaItem } from \"../../core/entities/pedido-venda-item/pedido-venda-item\";\nimport { PedidoVendaItemService } from \"../../core/entities/pedido-venda-item/pedido-venda-item.service\";\nimport { Transportadora } from \"../../core/entities/transportadora/transportadora\";\nimport {\n PedidoVendaDto,\n PesquisaPedidosVendaDto,\n} from \"../../core/entities/pedido-venda/pedido-venda-dto\";\nimport { onLookupRequest, onSearchRequest } from \"../../../utils/lookup-utils\";\nimport { ConfirmationService, SortMeta } from \"primeng/api\";\nimport { ErpProcessData } from \"../../core/erp-process-data/erp-process-data\";\nimport { ErpProcessService } from \"../../core/erp-process-data/erp-process-service\";\nimport { ErpFormConfigService } from \"../../core/erp-form-config/erp-form-config-service\";\nimport { HasChangeService } from '../../core/has-change/has-change-service';\n\nconst moment = _moment;\n\n@Component({\n selector: \"expedicao-form\",\n templateUrl: \"./expedicao-form.component.html\",\n styleUrls: [\"../../erp-senior.scss\"],\n})\nexport class ExpedicaoFormComponent\n implements OnInit, OnDestroy, AfterViewInit\n{\n public localeConfig: any = {};\n public currencyLocaleOptions: any = {};\n public permissions: any = {};\n public allPermissions: any = {};\n public pedidoAtual: FormGroup;\n\n public formGroup: FormGroup;\n public pedidoVendaForm: FormGroup;\n public itemFormGroup: FormGroup;\n public loading: boolean;\n public mainPanelCollapsed = false;\n public visibleDialog = false;\n\n private formCarregado = false;\n\n public clienteFaturamentoLookupSuggestions: Pessoa[];\n public clienteFaturamentoLookupDisplayFields = [\"codigo\", \"nome\", \"cpfCnpj\"];\n public clienteFaturamentoAdvancedDisplayFields = [\"id\", \"codigo\", \"nome\"];\n public clienteFaturamentoLookupSeparator = \" - \";\n public clienteFaturamentoSearchFields: FormField[];\n public clienteFaturamentoSearchGridFields: FormField[];\n public clienteFaturamentoSearchGridData: Pessoa[];\n public clienteFaturamentoSearchTotalRecords: number;\n\n public clienteRemessaLookupSuggestions: Pessoa[];\n public clienteRemessaLookupDisplayFields = [\"codigo\", \"nome\", \"cpfCnpj\"];\n public clienteRemessaAdvancedDisplayFields = [\"id\", \"codigo\", \"nome\"];\n public clienteRemessaLookupSeparator = \" - \";\n public clienteRemessaSearchFields: FormField[];\n public clienteRemessaSearchGridFields: FormField[];\n public clienteRemessaSearchGridData: Pessoa[];\n public clienteRemessaSearchTotalRecords: number;\n\n public filialLookupSuggestions: Filial[];\n public filialLookupDisplayFields = [\"codigo\", \"nome\"];\n public filialAdvancedDisplayFields = [\"id\", \"codigo\", \"nome\"];\n public filialLookupSeparator = \" - \";\n public filialSearchFields: FormField[];\n public filialSearchGridFields: FormField[];\n public filialSearchGridData: Filial[];\n public filialSearchTotalRecords: number;\n\n public transportadoraLookupSuggestions: Transportadora[];\n public transportadoraLookupDisplayFields = [\n \"codigo\",\n \"pessoa.nome\",\n \"pessoa.cpfCnpj\",\n ];\n public transportadoraAdvancedDisplayFields = [\n \"id\",\n \"codigo\",\n \"pessoa.nome\",\n \"pessoa.cpfCnpj\",\n ];\n public transportadoraLookupSeparator = \" - \";\n public transportadoraSearchFields: FormField[];\n public transportadoraSearchGridFields: FormField[];\n public transportadoraSearchGridData: Transportadora[];\n public transportadoraSearchTotalRecords: number;\n\n public pedidoVendaLookupSuggestions: PedidoVenda[];\n public pedidoVendaLookupDisplayFields = [\"numero\", \"cliente\"];\n public pedidoVendaAdvancedDisplayFields = [\n \"id\",\n \"numero\",\n \"filial.nome\",\n \"filial.codigo\",\n \"pessoa.id\",\n \"pessoa.codigo\",\n \"pessoa.nome\",\n ];\n public pedidoVendaLookupSeparator = \" - \";\n public pedidoVendaSearchFields: FormField[];\n public pedidoVendaSearchGridFields: FormField[];\n public pedidoVendaSearchGridData: PedidoVenda[];\n public pedidoVendaSearchTotalRecords: number;\n\n public pedidoVendaItemLookupSuggestions: PedidoVendaItem[];\n public pedidoVendaItemLookupDisplayFields = [\"sequencia\", \"sku.descricao\"];\n public pedidoVendaItemAdvancedDisplayFields = [\n \"id\",\n \"sequencia\",\n \"sku.descricao\",\n ];\n public pedidoVendaItemLookupSeparator = \" - \";\n public pedidoVendaItemSearchFields: FormField[];\n public pedidoVendaItemSearchGridFields: FormField[];\n public pedidoVendaItemSearchGridData: PedidoVendaItem[];\n public pedidoVendaItemSearchTotalRecords: number;\n\n public agendaLookupSuggestions: Agenda[];\n public agendaLookupDisplayFields = [\"id\", \"descricao\"];\n public agendaAdvancedDisplayFields = [\"id\", \"descricao\"];\n public agendaLookupSeparator = \" - \";\n public agendaSearchFields: FormField[];\n public agendaSearchGridFields: FormField[];\n public agendaSearchGridData: Agenda[];\n public agendaSearchTotalRecords: number;\n\n public disableButtonSave: boolean = false;\n\n public disableOrdersButtons: boolean = true;\n\n public totalEixosContratados: number = 0;\n public totalEixosComposicao: number = 0;\n\n public ordersValid = true;\n public saveAndInitButton: any;\n\n @Input() private agenda: Agenda;\n @Input() private revalidacao: boolean;\n\n @ViewChild(\"customTemplate\")\n public customTemplate: TemplateRef<any>;\n\n @ViewChild(\"customFormFields\")\n public customFormFields: TemplateRef<any>;\n\n private ngUnsubscribe = new Subject(); \n private erpProcessData: ErpProcessData;\n private enableRevalidation: boolean;\n\n constructor(\n private expedicaoService: ExpedicaoService,\n private router: Router,\n private route: ActivatedRoute,\n private messageService: MessageService,\n private formBuilder: FormBuilder,\n private translate: TranslateService,\n private hotkeysService: HotkeysService,\n private fieldCustomization: FieldCustomizationService,\n private focusService: FocusService,\n private pessoaService: PessoaService,\n private filialService: FilialService,\n private transportadoraService: TransportadoraService,\n private pedidoVendaService: PedidoVendaService,\n private pedidoVendaItemService: PedidoVendaItemService,\n private agendaService: AgendaService,\n private override: ExpedicaoChegadaVeiculoOverride,\n private confirmationService: ConfirmationService,\n private erpProcessService: ErpProcessService,\n private erpFormConfigService: ErpFormConfigService,\n private hasChangeService: HasChangeService\n ) {\n this.formGroup = this.getFormGroup();\n this.pedidoVendaForm = this.getPedidoVendaForm();\n this.itemFormGroup = this.getOrdemVendaItemForm();\n }\n\n public ngOnInit() {\n this.route.data\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((data: any) => this.onRouteDataChange(data));\n\n this.route.params\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(({ agenda }) => {\n if (agenda != \"new\") {\n this.getExpedicao(agenda);\n } else {\n this.buscarFilial();\n }\n });\n\n this.clienteFaturamentoSearchFields = this.getClienteSearchFields();\n this.clienteFaturamentoSearchGridFields = this.getClienteSearchGridFields();\n\n this.clienteRemessaSearchFields = this.getClienteSearchFields();\n this.clienteRemessaSearchGridFields = this.getClienteSearchGridFields();\n\n this.filialSearchFields = this.getFilialSearchFields();\n this.filialSearchGridFields = this.getFilialSearchGridFields();\n\n this.transportadoraSearchFields = this.getTransportadoraSearchFields();\n this.transportadoraSearchGridFields = this.getTransportadoraSearchGridFields();\n\n this.pedidoVendaSearchFields = this.getPedidoVendaSearchFields();\n this.pedidoVendaSearchGridFields = this.getPedidoVendaSearchGridFields();\n\n this.pedidoVendaItemSearchFields = this.getPedidoVendaItemSearchFields();\n this.pedidoVendaItemSearchGridFields = this.getPedidoVendaItemSearchGridFields();\n\n this.agendaSearchFields = this.getAgendaSearchFields();\n this.agendaSearchGridFields = this.getAgendaSearchGridFields();\n\n this.setHotkeys();\n\n if (this.agenda && this.agenda.externalTenant) {\n this.setTransportadora(this.agenda.externalTenant.cnpj);\n }\n\n this.totalEixosComposicao = this.agenda && this.agenda.veiculo ? this.agenda.veiculo.eixos || 0 : 0;\n\n const statusAgenda = [\n \"AGUARDANDO_CONFIRMACAO_SOLICITANTE\",\n \"AGENDADO\",\n \"AGUARDANDO_CONFIRMACAO\",\n \"EM_EXECUCAO\",\n \"REJEITADO_POR_VALIDACAO\",\n ];\n\n if (this.agenda && !statusAgenda.includes(this.agenda.status)) {\n this.formGroup.disable();\n this.disableButtonSave = true;\n }\n\n if (this.agenda && this.agenda.createdByErp) {\n this.formGroup.get(\"filial\").disable();\n this.formGroup.get(\"transportadora\").disable();\n this.formGroup.get(\"clienteRemessa\").disable();\n this.formGroup.get(\"clienteFaturamento\").disable();\n this.pedidoVendaForm.disable();\n this.itemFormGroup.disable();\n this.disableOrdersButtons = true;\n }\n\n this.setPedidosValueChanges();\n this.erpProcessService.current.subscribe(message => this.erpProcessData = message); \n this.erpFormConfigService.current.subscribe(message => this.enableRevalidation = message); \n\n this.revalidacaoTransportadora ();\n this.verificaSeTemAlteracao();\n }\n \n private verificaSeTemAlteracao() {\n this.formGroup.valueChanges.subscribe(() => {\n if (this.formCarregado) {\n this.hasChangeService.hasChange(this.agenda.id);\n }\n });\n }\n\n private revalidacaoTransportadora () {\n this.formGroup.get(\"transportadora\").valueChanges.pipe(takeUntil(this.ngUnsubscribe)).subscribe((_) => {\n const transp = this.formGroup.get(\"transportadora\").value;\n if (this.erpProcessService && transp) { \n this.erpProcessData.transportadoraId = transp.id; \n this.erpProcessService.changeData(this.erpProcessData);\n }\n return;\n }); \n }\n\n public abrirPedidoVenda(pedidoVenda?: PedidoVenda) {\n const buttons = document\n .getElementById(\"pedidoVenda\")\n .getElementsByTagName(\"button\");\n\n if (!buttons.length) {\n return;\n }\n\n this.pedidoVendaForm.patchValue({ pedidoVenda });\n buttons[0].click();\n }\n\n public excluirPedidoVenda(index: number) {\n (this.formGroup.get(\"pedidos\") as FormArray).removeAt(index);\n }\n\n public abrirPedidoVendaItem(\n pedido: FormGroup,\n pedidoVendaItem?: OrdemVendaItem\n ) {\n this.itemFormGroup.patchValue(\n pedidoVendaItem || { item: undefined, quantidade: 1 }\n );\n this.pedidoAtual = pedido;\n this.visibleDialog = true;\n }\n\n public excluirPedidoVendaItem(id: string, pedido: FormGroup) {\n const index = (\n (pedido.get(\"itens\") as FormArray).value as OrdemVendaItem[]\n ).findIndex((item) => item.item.id === id);\n if (index >= 0) {\n (pedido.get(\"itens\") as FormArray).removeAt(index);\n }\n }\n\n public setPedidosValueChanges() {\n (this.formGroup.get(\"pedidos\") as FormArray).valueChanges\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n const pedidosLength = (this.formGroup.get(\"pedidos\") as FormArray)\n .length;\n this.ordersValid = pedidosLength > 0;\n this.formGroup\n .get(\"filial\")\n [pedidosLength >= 1 ? \"disable\" : \"enable\"]();\n });\n }\n\n public selecionarPedidoVenda(pedidoVenda: PedidoVenda) {\n const checkOrders = (order: any) => order.pedidoVenda.id === pedidoVenda.id;\n const pedidos = this.formGroup.get(\"pedidos\").value;\n\n if (pedidos.find(checkOrders)) {\n return this.addMessage(\n \"warn\",\n this.translate.instant(\n \"yms.erp.pedido_venda_search_already_selected_summary\"\n ),\n this.translate.instant(\n \"yms.erp.pedido_venda_search_already_selected_detail\"\n )\n );\n }\n\n (this.formGroup.get(\"pedidos\") as FormArray)\n .push(this.getOrdemVendaForm(pedidoVenda, true));\n\n if (\n !!pedidoVenda &&\n (this.formGroup.get(\"pedidos\") as FormArray).length === 1 &&\n !this.formGroup.get(\"clienteFaturamento\").value\n ) {\n this.buscarClienteAFaturar(pedidoVenda as any);\n }\n }\n\n public selecionarPedidoVendaItem() {\n const item = this.itemFormGroup.value;\n const pedido = this.pedidoAtual.get(\"itens\").value;\n const checkOrderItens = (order: any) => order.item.id === item.item.id;\n if (pedido && item && item.item && pedido.find(checkOrderItens))\n return this.addMessage(\n \"warn\",\n this.translate.instant(\n \"yms.erp.item_pedido_venda_search_already_selected_summary\"\n ),\n this.translate.instant(\n \"yms.erp.item_pedido_venda_search_already_selected_detail\"\n )\n );\n const form = this.getOrdemVendaItemForm();\n form.patchValue({ ...this.itemFormGroup.value });\n if (form.get(\"item\").value == undefined) return;\n (this.pedidoAtual.get(\"itens\") as FormArray).push(form);\n this.visibleDialog = false;\n }\n\n public selecionarPedidoVendaItemAutomaticamente(\n itens: any,\n pedidoVenda: any\n ) {\n if (itens && itens.length === 1) {\n const form = this.getOrdemVendaItemForm();\n const pedidos = this.getPedidos();\n const pedidoAtual: any = pedidos.filter((pedido: any) =>\n pedido && pedido.value.pedidoVenda\n ? pedido.value.pedidoVenda.id === pedidoVenda.id\n : false\n );\n this.itemFormGroup\n .get(\"item\")\n .setValue(itens.length === 1 ? itens[0] : {});\n this.itemFormGroup.get(\"quantidade\").setValue(1);\n form.patchValue({ ...this.itemFormGroup.value });\n (pedidoAtual[0].get(\"itens\") as FormArray).push(form);\n this.visibleDialog = false;\n }\n }\n\n public getPedidos(): AbstractControl[] {\n return (this.formGroup.get(\"pedidos\") as FormArray).controls;\n }\n\n public buildTokens(itens: OrdemVendaItem[]) {\n return itens.map((item: any) => {\n const value = item && item.item ? item.item : item;\n const produto = value.sku ? value.sku : value.produto;\n return {\n id: value.id,\n label: `Produto: ${produto.descricao}, Sequencia: ${value.sequencia}`,\n };\n });\n }\n\n public ngAfterViewInit() {\n const inputList = document.getElementsByTagName(\"input\");\n const selectedInput = Array.from(inputList).find((f: any) => !f.disabled);\n if (selectedInput) {\n selectedInput.focus();\n }\n\n this.override.initialize();\n this.saveAndInitButton = document.getElementById(\"init\");\n\n this.formGroup.valueChanges.subscribe(() => {\n if (this.formCarregado) {\n this.hasChangeService.hasChange(this.agenda.id);\n }\n });\n }\n\n public ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n this.override.remove();\n }\n\n public setHotkeys() {\n this.hotkeysService.add(\n new Hotkey(\n \"alt+shift+s\",\n () => {\n if (this.isNew() || this.permissions.editar) this.onSave();\n return false;\n },\n [\"INPUT\", \"SELECT\", \"TEXTAREA\"]\n )\n );\n\n this.hotkeysService.add(\n new Hotkey(\n \"alt+shift+c\",\n () => {\n this.onCancel();\n return false;\n },\n [\"INPUT\", \"SELECT\", \"TEXTAREA\"]\n )\n );\n }\n\n public isNew() {\n return !this.formGroup.value.id;\n }\n\n public updateSuggestions(value: any) {\n if (value.agenda) {\n value.agenda.label = this.getSuggestionValue(\n [\"id\", \"descricao\"],\n \"agenda\",\n value,\n this.agendaLookupSeparator\n );\n if (value.agenda.label.trim() === this.agendaLookupSeparator.trim()) {\n delete value.agenda.label;\n }\n }\n }\n\n public getSuggestionValue(\n displayFields: string[],\n ownerEntity: string,\n value: any,\n separator: string\n ) {\n return displayFields\n .map((field) => this.getProp(value, `${ownerEntity}.${field}`))\n .reduce((acc: any, val: any) => `${acc}${separator}${val}`);\n }\n\n public onRouteDataChange(data: any) {\n const { currencySymbol, thousandsSeparator, decimalSeparator } =\n data.localeConfig.number;\n\n this.localeConfig = data.localeConfig;\n this.currencyLocaleOptions = {\n align: \"left\",\n prefix: currencySymbol,\n thousands: thousandsSeparator,\n decimal: decimalSeparator,\n };\n this.permissions = data.allPermissions.expedicao;\n this.allPermissions = data.allPermissions;\n //this.validateVisualization();\n if (data.entity) {\n const canEdit = this.permissions.editar;\n if (!canEdit) this.formGroup.disable();\n const value: any = Expedicao.fromDto(data.entity);\n this.updateSuggestions(value);\n this.formGroup.patchValue(value);\n } else {\n this.formGroup.patchValue(new Expedicao());\n }\n }\n\n public onCancel() {\n this.goBack();\n }\n\n public onSendFile(filesToDelete: any, filesToCommit: any[]) {\n const observables: any[] = [];\n\n if (!this.fieldCustomization.isEmpty(filesToDelete)) {\n observables.push(this.fieldCustomization.deleteFiles(filesToDelete));\n }\n if (!this.fieldCustomization.isEmpty(filesToCommit)) {\n observables.push(this.fieldCustomization.commitFiles(filesToCommit));\n }\n\n if (!this.fieldCustomization.isEmpty(observables)) {\n return forkJoin(observables);\n } else {\n return of({});\n }\n }\n\n public setValuesPedidoBiodisel() {\n const numeroPedidoCliente = this.formGroup.get(\"numeroPedidoCliente\").value;\n const itemPedidoCliente = this.formGroup.get(\"itemPedidoCliente\").value;\n const { value: pedidos } = this.formGroup.get(\"pedidos\");\n (pedidos || []).map((e: any) => {\n if (e && e.itens && e.itens.length) {\n e.itens[0].numeroPedidoCliente = numeroPedidoCliente;\n e.itens[0].itemPedidoCliente = itemPedidoCliente;\n }\n });\n this.formGroup.get(\"pedidos\").patchValue(pedidos);\n }\n\n public getValuesPedidoBiodisel() {\n const pedidos = this.formGroup.get(\"pedidos\").value;\n const numeroPedidoCliente = this.formGroup.get(\"numeroPedidoCliente\");\n const itemPedidoCliente = this.formGroup.get(\"itemPedidoCliente\");\n (pedidos || []).map((e: any) => {\n if (numeroPedidoCliente.value && itemPedidoCliente.value) return;\n const pedidosInterno =\n e && e.itens && e.itens.length ? e.itens[0].pedido : null;\n if (\n pedidosInterno &&\n pedidosInterno.itens &&\n pedidosInterno.itens.length\n ) {\n if (pedidosInterno.itens.length === 1) {\n numeroPedidoCliente.patchValue(\n pedidosInterno.itens[0].numeroPedidoCliente\n );\n itemPedidoCliente.patchValue(\n pedidosInterno.itens[0].itemPedidoCliente\n );\n }\n }\n });\n }\n\n public onSave(start?: boolean) {\n this.formGroup.get(\"agenda\").setValue(this.agenda);\n this.ordersValid = (this.formGroup.get(\"pedidos\") as FormArray).length > 0;\n\n if (this.formGroup.invalid || !this.ordersValid) {\n return this.validateAllFormFields(this.formGroup);\n }\n\n this.setValuesPedidoBiodisel();\n\n const { filesToDelete, filesToCommit } = this.fieldCustomization.getFiles(this.formGroup);\n \n this.loading = true;\n\n if (this.isNew() || !this.enableRevalidation) {\n return this.saveAndInit(filesToDelete, filesToCommit, start);\n }\n\n this.erpProcessData = this.erpProcessService.builderErpProcessData(this.erpProcessData, this.formGroup);\n this.erpProcessService.changeDataErp(this.erpProcessData);\n return this.agendaService\n .checarRevalidacao(this.erpProcessData)\n .pipe(\n takeUntil(this.ngUnsubscribe),\n finalize(() => this.loading = false),\n )\n .subscribe((response: any) => {\n if (response.requerRevalidacao) {\n this.atualizaAgendaParaRejeitadoPorValidacao();\n }\n else {\n this.saveAndInit(filesToDelete, filesToCommit, start);\n }\n });\n }\n\n private atualizaAgendaParaRejeitadoPorValidacao() {\n this.confirmationService.confirm({\n header: this.translate.instant(\"yms.patio.agenda_revalidacao_title\"),\n message: this.translate.instant(\"yms.patio.agenda_revalidacao_message\"),\n accept: () => {\n this.hasChangeService.hasChangeSave(this.agenda.id);\n this.agenda.status = StatusAgenda.REJEITADO_POR_VALIDACAO;\n this.agenda.motorista = {id: this.erpProcessData.motoristaId};\n this.agenda.veiculo = {id: this.erpProcessData.veiculoId};\n this.agendaService\n .atualizarAgenda(this.agenda)\n .pipe(\n takeUntil(this.ngUnsubscribe),\n concatMap((_) => this.getSaveObservable()),\n finalize(() => this.loading = false),\n )\n .subscribe((_) => {\n this.successMessage();\n this.router.navigate([\"/chegada-veiculo\"], { relativeTo: this.route });\n });\n },\n reject: () => this.loading = false,\n });\n }\n\n private saveAndInit(filesToDelete: any, filesToCommit: any[], start: boolean) {\n this.atualizaExpedicao(filesToDelete, filesToCommit, () => {\n this.hasChangeService.hasChangeSave(this.agenda.id);\n if (start && this.saveAndInitButton) {\n this.hasChangeService.hasChangeSave(this.agenda.id);\n this.saveAndInitButton.click();\n }\n });\n }\n\n private successMessage() {\n this.messageService.add({\n severity: \"success\",\n summary: this.translate.instant(\"saved_message_title\"),\n detail: this.translate.instant(\"saved_message_content\"),\n });\n }\n\n private atualizaExpedicao(\n filesToDelete: any,\n filesToCommit: any[],\n onSubscribe?: Function\n ) {\n return this.getSaveObservable()\n .pipe(\n takeUntil(this.ngUnsubscribe),\n finalize(() => (this.loading = false)),\n )\n .subscribe((value: any) => {\n this.formGroup.get(\"id\").setValue(value.id || null);\n\n this.onSendFile(filesToDelete, filesToCommit)\n .pipe(\n takeUntil(this.ngUnsubscribe),\n catchError((err: any) => {\n this.loading = false;\n return throwError(err);\n })\n )\n .subscribe(() => {\n this.addMessage(\n \"success\",\n \"saved_message_title\",\n \"saved_message_content\"\n );\n onSubscribe();\n });\n });\n }\n\n public setTransportadora(value: string) {\n if (value) {\n const cnpj = value.replace(\".\", \"\").replace(\"/\", \"\").replace(\"-\", \"\");\n const filterQuery = `pessoa.cpfCnpj eq '${cnpj}'`;\n this.transportadoraService\n .list({ filterQuery, page: 0, size: 10 })\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(({ contents }) => {\n if (contents.length === 1) {\n const code = contents[0].codigo\n ? contents[0].codigo.toString()\n : \"\";\n const description = contents[0].descricao\n ? contents[0].descricao.toString()\n : \"\";\n if (!description.trim() && !code.trim()) {\n contents[0].label = this.translate.instant(\n \"yms.erp.derivacao_sem_descricao\"\n );\n } else {\n contents[0].label = `${code} - ${description}`;\n }\n this.formGroup.get(\"transportadora\").setValue(contents[0]);\n }\n });\n }\n }\n\n public getProp(obj: any, path: any) {\n return path\n .split(\".\")\n .reduce(\n (result: any, prop: any) =>\n result[prop] === undefined ? \"\" : result[prop],\n obj\n );\n }\n\n public getExpedicao(agendaId: string) {\n this.loading = true;\n this.expedicaoService\n .list({\n filterQuery: `agenda.id eq '${agendaId}'`,\n size: 1,\n page: 0,\n })\n .pipe(\n takeUntil(this.ngUnsubscribe),\n finalize(() => (this.loading = false))\n )\n .subscribe(({ contents }) => {\n if (!contents.length) {\n this.buscarFilial();\n return;\n }\n\n this.totalEixosContratados = contents[0].eixos || 0;\n this.totalEixosComposicao =\n contents[0].agenda && contents[0].agenda.veiculo\n ? contents[0].agenda.veiculo.eixos || 0\n : 0;\n\n const expedicao = Expedicao.fromDto(contents[0]);\n\n this.formGroup.enable();\n this.formGroup.patchValue(expedicao);\n\n expedicao.pedidos.forEach((pedido) => {\n const form = this.getOrdemVendaForm();\n form.patchValue(pedido);\n pedido.itens.forEach((item) => {\n const itemForm = this.getOrdemVendaItemForm();\n itemForm.patchValue(item);\n (form.get(\"itens\") as FormArray).push(itemForm);\n });\n (this.formGroup.get(\"pedidos\") as FormArray).push(form);\n });\n this.getValuesPedidoBiodisel();\n this.formCarregado = true;\n });\n }\n\n public onClienteFaturamentoLookupRequest(value: string) {\n onLookupRequest(\n this.clienteFaturamentoSearchFields,\n this.clienteFaturamentoLookupDisplayFields,\n this.clienteFaturamentoAdvancedDisplayFields,\n this.clienteFaturamentoLookupSeparator,\n this.pessoaService,\n value,\n \"cliente eq true\"\n )\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.clienteFaturamentoLookupSuggestions = list.contents;\n });\n }\n\n public onClienteFaturamentoSearchRequest(event: any) {\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const sort = multiSortMeta;\n let filterQuery = this.getClienteSearchFields()\n .filter(\n ({ name }) => filterData[name] != undefined && filterData[name] != \"\"\n )\n .map(({ name, type }) => {\n const value = filterData[name];\n\n if (typeof value == \"number\") return `${name} eq ${value}`;\n else if (type == FieldType.Date)\n return `${name} eq '${moment(value).format(\"YYYY-MM-DD\")}'`;\n else if (type == FieldType.Time)\n return `${name} eq '${moment(value).format(\"HH:mm:ss\")}'`;\n else if (type == FieldType.DateTime)\n return `${name} eq '${moment(value).format()}'`;\n else if (type == FieldType.Enum) return `${name} eq '${value}'`;\n else if (type == FieldType.String)\n return `containing(lower(${name}), lower('${value.replace(\n /'/g,\n \"\\\\'\"\n )}'))`;\n else if (type == FieldType.Lookup) return `${name} eq '${value.id}'`;\n else return `${name} eq '${value}'`;\n })\n .join(\" and \");\n\n filterQuery = `${filterQuery}${\n filterQuery ? \" and \" : \"\"\n }situacao eq ATIVO and cliente eq true`;\n\n const displayFields = mergeUnique(\n this.clienteFaturamentoLookupDisplayFields,\n this.clienteFaturamentoAdvancedDisplayFields\n );\n this.pessoaService\n .list({ page, sort, filterQuery, displayFields })\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: this.clienteFaturamentoLookupDisplayFields\n .map((field) => {\n if (field.indexOf(\".\") > 0) return this.getProp(item, field);\n return item[field];\n })\n .join(this.clienteFaturamentoLookupSeparator),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.clienteFaturamentoSearchGridData = list.contents;\n this.clienteFaturamentoSearchTotalRecords = list.totalElements;\n });\n }\n\n public onClienteRemessaLookupRequest(value: string) {\n onLookupRequest(\n this.clienteRemessaSearchFields,\n this.clienteRemessaLookupDisplayFields,\n this.clienteRemessaAdvancedDisplayFields,\n this.clienteRemessaLookupSeparator,\n this.pessoaService,\n value,\n \"cliente eq true\"\n )\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.clienteRemessaLookupSuggestions = list.contents;\n });\n }\n\n public onClienteRemessaSearchRequest(event: any) {\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const sort = multiSortMeta;\n let filterQuery = this.getClienteSearchFields()\n .filter(\n ({ name }) => filterData[name] != undefined && filterData[name] != \"\"\n )\n .map(({ name, type }) => {\n const value = filterData[name];\n\n if (typeof value == \"number\") return `${name} eq ${value}`;\n else if (type == FieldType.Date)\n return `${name} eq '${moment(value).format(\"YYYY-MM-DD\")}'`;\n else if (type == FieldType.Time)\n return `${name} eq '${moment(value).format(\"HH:mm:ss\")}'`;\n else if (type == FieldType.DateTime)\n return `${name} eq '${moment(value).format()}'`;\n else if (type == FieldType.Enum) return `${name} eq '${value}'`;\n else if (type == FieldType.String)\n return `containing(lower(${name}), lower('${value.replace(\n /'/g,\n \"\\\\'\"\n )}'))`;\n else return `${name} eq '${value}'`;\n })\n .join(\" and \");\n\n filterQuery = `${filterQuery}${\n filterQuery ? \" and \" : \"\"\n }situacao eq ATIVO and cliente eq true`;\n\n const displayFields = mergeUnique(\n this.clienteRemessaLookupDisplayFields,\n this.clienteRemessaAdvancedDisplayFields\n );\n this.pessoaService\n .list({ page, sort, filterQuery, displayFields })\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: this.clienteRemessaLookupDisplayFields\n .map((field) => {\n if (field.indexOf(\".\") > 0) return this.getProp(item, field);\n return item[field];\n })\n .join(this.clienteRemessaLookupSeparator),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.clienteRemessaSearchGridData = list.contents;\n this.clienteRemessaSearchTotalRecords = list.totalElements;\n });\n }\n\n public onFilialSelect(event: any) {\n this.disableOrdersButtons = !event || this.agenda.createdByErp;\n }\n\n public onFilialLookupRequest(value: string) {\n const filterInput = this.getFilialSearchFields()\n .filter(({ type }) => isValidFilter(type, value))\n .reduce(\n (a, { name, type }) => {\n if (type === FieldType.Integer) {\n return { ...a, [name]: value.replace(/\\D/, \"\") };\n }\n return { ...a, [name]: value };\n },\n {\n cnpjs: this.agenda.planta.cnpj,\n pagina: { limit: 10, offset: 0 },\n } as PesquisarFiliaisInput\n );\n\n this.filialService\n .listFiliais(filterInput)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(\n (list: any) =>\n (this.filialLookupSuggestions = list.filiais.map((filial: any) =>\n Filial.fromDto(filial)\n ))\n );\n }\n\n public onFilialSearchRequest(event: any) {\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const sort: SortMeta[] = multiSortMeta;\n const sortFormatted = !!(sort || []).length && {\n campo: sort[0].field,\n ordenacao: sort[0].order > 0 ? \"Asc\" : \"Desc\",\n };\n const filterInput = this.getFilialSearchFields()\n .filter(\n ({ name }) => filterData[name] != undefined && filterData[name] != \"\"\n )\n .reduce(\n (a, { name, type }) => {\n const value = filterData[name];\n if (type === FieldType.Integer) {\n return { ...a, [name]: `${value}`.replace(/\\D/, \"\") };\n }\n return { ...a, [name]: value };\n },\n {\n cnpjs: this.agenda.planta.cnpj,\n pagina: {\n limit: rows,\n offset: page,\n listaOrdenacao: sortFormatted ? [{ ...sortFormatted }] : null,\n },\n } as PesquisarFiliaisInput\n );\n\n this.filialService\n .listFiliais(filterInput)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.filialSearchGridData = list.filiais.map(Filial.fromDto);\n this.filialSearchTotalRecords = list.qtdTotalRegistros;\n });\n }\n\n public onTransportadoraLookupRequest(value: string) {\n onLookupRequest(\n this.transportadoraSearchFields,\n this.transportadoraLookupDisplayFields,\n this.transportadoraAdvancedDisplayFields,\n this.transportadoraLookupSeparator,\n this.transportadoraService,\n value\n )\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.transportadoraLookupSuggestions = list.contents;\n });\n }\n\n public onTransportadoraSearchRequest(event: any) {\n onSearchRequest(\n this.transportadoraSearchFields,\n this.transportadoraLookupDisplayFields,\n this.transportadoraAdvancedDisplayFields,\n this.transportadoraLookupSeparator,\n this.transportadoraService,\n event\n )\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.transportadoraSearchGridData = list.contents;\n this.transportadoraSearchTotalRecords = list.totalElements;\n });\n }\n\n public onPedidoVendaLookupRequest(value: string) {\n const sort = this.pedidoVendaLookupDisplayFields.map((field: any) => ({\n field,\n order: 1,\n }));\n\n let filterQuery = this.getPedidoVendaSearchFields()\n .filter(({ type }) => isValidFilter(type, value))\n .map(({ name, type }) => {\n if (typeof value == \"number\") return `${name} eq ${value}`;\n else if (type == FieldType.Date)\n return `${name} eq '${moment(value).format(\"YYYY-MM-DD\")}'`;\n else if (type == FieldType.Time)\n return `${name} eq '${moment(value).format(\"HH:mm:ss\")}'`;\n else if (type == FieldType.DateTime)\n return `${name} eq '${moment(value).format()}'`;\n else if (type == FieldType.String)\n return `containing(lower(${name}), lower('${value.replace(\n /'/g,\n \"\\\\'\"\n )}'))`;\n else return `${name} eq '${value}'`;\n })\n .join(\" or \");\n\n filterQuery = `${filterQuery}${\n filterQuery ? \" and \" : \"\"\n }situacaoPedido eq ABERTO_TOTAL or situacaoPedido eq ABERTO_PARCIAL`;\n\n const pedidos = this.formGroup.get(\"pedidos\").value || [];\n let pedidosIdsQuery = \"\";\n pedidos.map((e: any) =>\n e && e.pedidoVenda && e.pedidoVenda.id\n ? (pedidosIdsQuery += ` and (id ne '${e.pedidoVenda.id}')`)\n : false\n );\n if (pedidos.length && pedidosIdsQuery) filterQuery += pedidosIdsQuery;\n\n const displayFields = mergeUnique(\n this.pedidoVendaLookupDisplayFields,\n this.pedidoVendaAdvancedDisplayFields\n );\n this.pedidoVendaService\n .list({ sort, filterQuery, displayFields })\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: this.pedidoVendaLookupDisplayFields\n .map((field) => {\n if (field.indexOf(\".\") > 0) return this.getProp(item, field);\n return item[field];\n })\n .join(this.pedidoVendaLookupSeparator),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.pedidoVendaLookupSuggestions = list.contents;\n });\n }\n\n public getRecPagina(first: number, rows: number, sort: any) {\n const page = first / rows;\n const orderBy =\n sort && sort.length\n ? sort.map((s: any) => ({\n campo: s.field,\n ordenacao: s.order === 1 ? \"Asc\" : \"Desc\",\n }))\n : [];\n return {\n offset: page,\n limit: rows,\n listaOrdenacao: orderBy,\n };\n }\n\n public onPedidoVendaSearchRequest(event: any) {\n const { first, rows, multiSortMeta, filterData } = event;\n const sort = multiSortMeta || [];\n\n const filial = this.formGroup.get(\"filial\").value;\n\n const pedidos = this.formGroup.get(\"pedidos\").value || [];\n let pedidosSelecionados: any = [];\n pedidos.map((e: any) =>\n e && e.pedidoVenda && e.pedidoVenda.id\n ? pedidosSelecionados.push(e.pedidoVenda.id)\n : false\n );\n\n const pesquisa: PesquisaPedidosVendaDto = {\n pessoaId: filterData[\"cliente\"] ? filterData[\"cliente\"].id : null,\n filialId: filial ? filial.id : null,\n tipoAgendamentoId: this.agenda.tipoAgendamento\n ? this.agenda.tipoAgendamento.id\n : null,\n filialPedido: filterData[\"filialPedido\"],\n pedidosSelecionados,\n numero: filterData[\"numero\"],\n pagina: this.getRecPagina(first, rows, sort),\n };\n\n this.pedidoVendaService\n .pesquisarPedidosVenda(pesquisa)\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: this.pedidoVendaLookupDisplayFields\n .map((field) => {\n if (field.indexOf(\".\") > 0) return this.getProp(item, field);\n return item[field];\n })\n .join(this.pedidoVendaLookupSeparator),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.pedidoVendaSearchGridData = list.contents;\n this.pedidoVendaSearchTotalRecords = list.totalElements;\n });\n }\n\n public onPedidoVendaItemLookupRequest(value: any) {\n const sort = this.pedidoVendaItemLookupDisplayFields.map((field: any) => ({\n field,\n order: 1,\n }));\n\n const filialId = (this.formGroup.get(\"filial\").value || {}).id;\n const pedidoId = (this.pedidoAtual.get(\"pedidoVenda\").value || {}).id;\n\n const pesquisa = {\n pedidoId,\n filialId,\n sequencia: !isNaN(value) ? value : null,\n tipoAgendamentoId:\n this.agenda && this.agenda.tipoAgendamento\n ? this.agenda.tipoAgendamento.id\n : null,\n pagina: this.getRecPagina(0, 10, sort),\n };\n\n this.pedidoVendaItemService\n .pesquisarItensPedidoVenda(pesquisa)\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: this.pedidoVendaItemLookupDisplayFields\n .map((field) => {\n if (field.indexOf(\".\") > 0) return this.getProp(item, field);\n return item[field];\n })\n .join(this.pedidoVendaItemLookupSeparator),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.pedidoVendaItemLookupSuggestions = list.contents;\n });\n }\n\n public onPedidoVendaItemSearchRequest(event: any) {\n const { first, rows, multiSortMeta, filterData } = event;\n const sort = multiSortMeta;\n\n const filialId = (this.formGroup.get(\"filial\").value || {}).id;\n const pedidoId = (this.pedidoAtual.get(\"pedidoVenda\").value || {}).id;\n\n const pesquisa = {\n pedidoId,\n filialId,\n sequencia: filterData[\"sequencia\"],\n tipoAgendamentoId:\n this.agenda && this.agenda.tipoAgendamento\n ? this.agenda.tipoAgendamento.id\n : null,\n pagina: this.getRecPagina(first, rows, sort),\n };\n\n this.pedidoVendaItemService\n .pesquisarItensPedidoVenda(pesquisa)\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: this.pedidoVendaItemLookupDisplayFields\n .map((field) => {\n if (field.indexOf(\".\") > 0) return this.getProp(item, field);\n return item[field];\n })\n .join(this.pedidoVendaItemLookupSeparator),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.pedidoVendaItemSearchGridData = list.contents;\n this.pedidoVendaItemSearchTotalRecords = list.totalElements;\n });\n }\n\n public getAutomaticItensOrder(pedidoVenda: any) {\n if (pedidoVenda && pedidoVenda.id) {\n const sort = this.pedidoVendaItemLookupDisplayFields.map(\n (field: any) => ({ field, order: 1 })\n );\n const filialId = (this.formGroup.get(\"filial\").value || {}).id;\n\n const pesquisa = {\n pedidoId: pedidoVenda.id,\n filialId,\n tipoAgendamentoId:\n this.agenda && this.agenda.tipoAgendamento\n ? this.agenda.tipoAgendamento.id\n : null,\n pagina: this.getRecPagina(0, 10, sort),\n };\n\n this.pedidoVendaItemService\n .pesquisarItensPedidoVenda(pesquisa)\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: this.pedidoVendaItemLookupDisplayFields\n .map((field) => {\n if (field.indexOf(\".\") > 0) return this.getProp(item, field);\n return item[field];\n })\n .join(this.pedidoVendaItemLookupSeparator),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.selecionarPedidoVendaItemAutomaticamente(\n list.contents,\n pedidoVenda\n );\n });\n }\n }\n\n public onAgendaLookupRequest(value: string) {\n const sort = this.agendaLookupDisplayFields.map((field: any) => ({\n field,\n order: 1,\n }));\n\n const filterQuery = this.getAgendaSearchFields()\n .filter(({ type }) => isValidFilter(type, value))\n .map(({ name, type }) => {\n if (typeof value == \"number\") return `${name} eq ${value}`;\n else if (type == FieldType.Date)\n return `${name} eq '${moment(value).format(\"YYYY-MM-DD\")}'`;\n else if (type == FieldType.Time)\n return `${name} eq '${moment(value).format(\"HH:mm:ss\")}'`;\n else if (type == FieldType.DateTime)\n return `${name} eq '${moment(value).format()}'`;\n else if (type == FieldType.String)\n return `containing(lower(${name}), lower('${value.replace(\n /'/g,\n \"\\\\'\"\n )}'))`;\n else return `${name} eq '${value}'`;\n })\n .join(\" or \");\n\n const displayFields = mergeUnique(\n this.agendaLookupDisplayFields,\n this.agendaAdvancedDisplayFields\n );\n this.agendaService\n .listExternalAgenda({ sort, filterQuery, displayFields })\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: this.agendaLookupDisplayFields\n .map((field) => {\n if (field.indexOf(\".\") > 0) return this.getProp(item, field);\n return item[field];\n })\n .join(this.agendaLookupSeparator),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.agendaLookupSuggestions = list.contents;\n });\n\n /*{CA:ON_AGENDA_LOOKUP_REQUEST_END:START}*/\n /*{CA:ON_AGENDA_LOOKUP_REQUEST_END:END}*/\n }\n\n public onAgendaSearchRequest(event: any) {\n /*{CA:ON_AGENDA_SEARCH_REQUEST_START:START}*/\n /*{CA:ON_AGENDA_SEARCH_REQUEST_START:END}*/\n\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const sort = multiSortMeta;\n const filterQuery = this.getAgendaSearchFields()\n .filter(\n ({ name }) => filterData[name] != undefined && filterData[name] != \"\"\n )\n .map(({ name, type }) => {\n const value = filterData[name];\n\n if (typeof value == \"number\") return `${name} eq ${value}`;\n else if (type == FieldType.Date)\n return `${name} eq '${moment(value).format(\"YYYY-MM-DD\")}'`;\n else if (type == FieldType.Time)\n return `${name} eq '${moment(value).format(\"HH:mm:ss\")}'`;\n else if (type == FieldType.DateTime)\n return `${name} eq '${moment(value).format()}'`;\n else if (type == FieldType.Enum) return `${name} eq '${value}'`;\n else if (type == FieldType.String)\n return `containing(lower(${name}), lower('${value.replace(\n /'/g,\n \"\\\\'\"\n )}'))`;\n else return `${name} eq '${value}'`;\n })\n .join(\" and \");\n\n const displayFields = mergeUnique(\n this.agendaLookupDisplayFields,\n this.agendaAdvancedDisplayFields\n );\n this.agendaService\n .listExternalAgenda({ page, sort, filterQuery, displayFields })\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: this.agendaLookupDisplayFields\n .map((field) => {\n if (field.indexOf(\".\") > 0) return this.getProp(item, field);\n return item[field];\n })\n .join(this.agendaLookupSeparator),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.agendaSearchGridData = list.contents;\n this.agendaSearchTotalRecords = list.totalElements;\n });\n\n /*{CA:ON_AGENDA_SEARCH_REQUEST_END:START}*/\n /*{CA:ON_AGENDA_SEARCH_REQUEST_END:END}*/\n }\n\n private getFormGroup() {\n const formGroup = this.formBuilder.group({\n id: [{ value: undefined, disabled: true }, Validators.compose([])],\n clienteFaturamento: [\n { value: undefined, disabled: false },\n Validators.compose([Validators.required]),\n ],\n clienteRemessa: [{ value: undefined, disabled: false }],\n filial: [\n { value: undefined, disabled: false },\n Validators.compose([Validators.required]),\n ],\n transportadora: [\n { value: undefined, disabled: false },\n Validators.compose([]),\n ],\n pedidos: this.formBuilder.array([]),\n agenda: [\n { value: undefined, disabled: false },\n Validators.compose([Validators.required]),\n ],\n numeroAgendamentoCliente: [\n { value: undefined, disabled: false },\n Validators.compose([]),\n ],\n numeroPedidoCliente: [\n { value: undefined, disabled: false },\n Validators.compose([]),\n ],\n itemPedidoCliente: [\n { value: undefined, disabled: false },\n Validators.compose([]),\n ],\n createdBy: [{ value: undefined, disabled: true }, Validators.compose([])],\n createdDate: [\n { value: undefined, disabled: true },\n Validators.compose([]),\n ],\n lastModifiedBy: [\n { value: undefined, disabled: true },\n Validators.compose([]),\n ],\n lastModifiedDate: [\n { value: undefined, disabled: true },\n Validators.compose([]),\n ],\n });\n\n /*{CA:GET_FORM_CONTROLS:START}*/\n /*{CA:GET_FORM_CONTROLS:END}*/\n\n return formGroup;\n }\n\n private getClienteSearchFields() {\n return [\n new FormField({\n name: \"codigo\",\n label: this.translate.instant(\"yms.erp.pessoa_codigo\"),\n type: FieldType.Integer,\n }),\n new FormField({\n name: \"nome\",\n label: this.translate.instant(\"yms.erp.pessoa_nome\"),\n type: FieldType.String,\n }),\n new FormField({\n name: \"cpfCnpj\",\n label: this.translate.instant(\"yms.erp.pessoa_cpfCnpj\"),\n type: FieldType.String,\n }),\n ];\n }\n\n private getClienteSearchGridFields() {\n return [\n new FormField({\n name: \"codigo\",\n label: this.translate.instant(\"yms.erp.pessoa_codigo\"),\n type: FieldType.Integer,\n }),\n new FormField({\n name: \"nome\",\n label: this.translate.instant(\"yms.erp.pessoa_nome\"),\n type: FieldType.String,\n }),\n new FormField({\n name: \"cpfCnpj\",\n label: this.translate.instant(\"yms.erp.pessoa_cpfCnpj\"),\n type: FieldType.String,\n }),\n new FormField({\n name: \"site\",\n label: this.translate.instant(\"yms.erp.pessoa_site\"),\n type: FieldType.String,\n }),\n ];\n }\n\n private getFilialSearchFields() {\n return [\n new FormField({\n name: \"codigo\",\n label: this.translate.instant(\"yms.erp.filial_codigo\"),\n type: FieldType.Integer,\n }),\n new FormField({\n name: \"nome\",\n label: this.translate.instant(\"yms.erp.filial_nome\"),\n type: FieldType.String,\n }),\n ];\n }\n\n private getFilialSearchGridFields() {\n return [\n new FormField({\n name: \"codigo\",\n label: this.translate.instant(\"yms.erp.filial_codigo\"),\n type: FieldType.Integer,\n }),\n new FormField({\n name: \"nome\",\n label: this.translate.instant(\"yms.erp.filial_nome\"),\n type: FieldType.String,\n }),\n ];\n }\n\n private getTransportadoraSearchFields() {\n return [\n new FormField({\n name: \"codigo\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.transportadora_codigo\"),\n }),\n new FormField({\n name: \"pessoa.nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.transportadora_descricao\"),\n }),\n new FormField({\n name: \"pessoa.cpfCnpj\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.transportadora_cnpj\"),\n }),\n ];\n }\n\n private getTransportadoraSearchGridFields() {\n return [\n new FormField({\n name: \"codigo\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.transportadora_codigo\"),\n }),\n new FormField({\n name: \"pessoa.nome\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.pessoa_nome\"),\n }),\n new FormField({\n name: \"pessoa.cpfCnpj\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.transportadora_cnpj\"),\n }),\n ];\n }\n\n private getPedidoVendaSearchFields() {\n const clientSuggestions$ = new Subject<any[]>();\n const clientSearch$ = new Subject<any>();\n\n return [\n new FormField({\n name: \"numero\",\n label: this.translate.instant(\"yms.erp.pedido_venda_numero\"),\n type: FieldType.Integer,\n }),\n new FormField({\n name: \"filialPedido\",\n label: this.translate.instant(\"yms.erp.filial_codigo\"),\n type: FieldType.Integer,\n }),\n new FormField({\n name: \"cliente\",\n label: this.translate.instant(\"yms.erp.pessoa_cliente_label\"),\n type: FieldType.Lookup,\n searchFields: this.getClienteSearchFields(),\n searchGridFields: this.getClienteSearchGridFields(),\n suggestionsObservable: clientSuggestions$,\n searchObservable: clientSearch$,\n emptyMessage: \"Nenhuma sugestão encontrada\",\n size: { sm: 12, md: 12, lg: 12, xl: 12 },\n onLookupRequest: (value: string) => {\n onLookupRequest(\n this.clienteFaturamentoSearchFields,\n this.clienteFaturamentoLookupDisplayFields,\n this.clienteFaturamentoAdvancedDisplayFields,\n this.clienteFaturamentoLookupSeparator,\n this.pessoaService,\n value,\n \"situacao eq ATIVO and cliente eq true\"\n )\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => clientSuggestions$.next(list.contents));\n },\n onSearchRequest: (event: any) => {\n onSearchRequest(\n this.clienteFaturamentoSearchFields,\n this.clienteFaturamentoLookupDisplayFields,\n this.clienteFaturamentoAdvancedDisplayFields,\n this.clienteFaturamentoLookupSeparator,\n this.pessoaService,\n event,\n \"situacao eq ATIVO and cliente eq true\"\n )\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n clientSearch$.next({\n totalRecords: list.totalElements,\n gridData: list.contents,\n });\n });\n },\n dataKey: \"id\",\n lookupDisplayField: \"label\",\n searchTitle: this.translate.instant(\"yms.erp.pessoa_cliente_label\"),\n searchEmptyTitle: this.translate.instant(\"yms.erp.nothing_found\"),\n filterLabel: this.translate.instant(\"yms.erp.filter\"),\n filterTitle: this.translate.instant(\"yms.integration.filters\"),\n clearLabel: this.translate.instant(\"yms.erp.clear\"),\n cancelLabel: this.translate.instant(\"yms.erp.cancel\"),\n selectLabel: this.translate.instant(\"yms.erp.select\"),\n tooltip: this.translate.instant(\"yms.erp.pessoa_cliente_label\"),\n }),\n ];\n }\n\n private getPedidoVendaSearchGridFields() {\n return [\n new FormField({\n name: \"numero\",\n label: this.translate.instant(\"yms.erp.pedido_venda_numero\"),\n type: FieldType.Integer,\n }),\n new FormField({\n name: \"filial.nome\",\n label: this.translate.instant(\"yms.erp.filial\"),\n type: FieldType.String,\n }),\n new FormField({\n name: \"filial.codigo\",\n label: this.translate.instant(\"yms.erp.filial_codigo\"),\n type: FieldType.Integer,\n }),\n new FormField({\n name: \"pessoa.nome\",\n label: this.translate.instant(\"yms.erp.pessoa_cliente_label\"),\n type: FieldType.Integer,\n }),\n new FormField({\n name: \"pessoa.codigo\",\n label: this.translate.instant(\"yms.erp.pessoa_cliente_codigo_label\"),\n type: FieldType.Integer,\n }),\n ];\n }\n\n private getPedidoVendaItemSearchFields() {\n return [\n new FormField({\n name: \"sequencia\",\n label: this.translate.instant(\"yms.erp.pedido_venda_item_sequencia\"),\n type: FieldType.Integer,\n }),\n ];\n }\n\n private getPedidoVendaItemSearchGridFields() {\n return [\n ...this.getPedidoVendaItemSearchFields(),\n new FormField({\n name: \"sku.descricao\",\n label: this.translate.instant(\"yms.erp.produto\"),\n type: FieldType.String,\n }),\n ];\n }\n\n private getAgendaSearchFields() {\n const searchFields = [\n new FormField({\n name: \"descricao\",\n label: this.translate.instant(\"yms.erp.agenda_descricao\"),\n type: FieldType.String,\n }),\n ];\n\n /*{CA:GET_AGENDA_SEARCH_FIELDS:START}*/\n /*{CA:GET_AGENDA_SEARCH_FIELDS:END}*/\n\n return searchFields;\n }\n\n private getAgendaSearchGridFields() {\n const searchGridFields = [\n new FormField({\n name: \"descricao\",\n label: this.translate.instant(\"yms.erp.agenda_descricao\"),\n type: FieldType.String,\n }),\n ];\n\n /*{CA:GET_AGENDA_SEARCH_GRID_FIELDS:START}*/\n /*{CA:GET_AGENDA_SEARCH_GRID_FIELDS:END}*/\n\n return searchGridFields;\n }\n\n private getDerivacaoSearchFields() {\n const searchFields = [\n new FormField({\n name: \"codigo\",\n label: this.translate.instant(\"yms.erp.derivacao_codigo\"),\n type: FieldType.String,\n }),\n new FormField({\n name: \"descricao\",\n label: this.translate.instant(\"yms.erp.derivacao_descricao\"),\n type: FieldType.String,\n }),\n ];\n\n /*{CA:GET_DERIVACAO_SEARCH_FIELDS:START}*/\n /*{CA:GET_DERIVACAO_SEARCH_FIELDS:END}*/\n\n return searchFields;\n }\n\n private getDerivacaoSearchGridFields() {\n const searchGridFields = [\n new FormField({\n name: \"codigo\",\n label: this.translate.instant(\"yms.erp.derivacao_codigo\"),\n type: FieldType.String,\n }),\n new FormField({\n name: \"descricao\",\n label: this.translate.instant(\"yms.erp.derivacao_descricao\"),\n type: FieldType.String,\n }),\n ];\n\n /*{CA:GET_DERIVACAO_SEARCH_GRID_FIELDS:START}*/\n /*{CA:GET_DERIVACAO_SEARCH_GRID_FIELDS:END}*/\n\n return searchGridFields;\n }\n\n private goBack() {\n const previousRoute = \"../\";\n this.router.navigate([previousRoute], { relativeTo: this.route.parent });\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)\n control.markAsDirty({ onlySelf: true });\n else if (control instanceof FormGroup)\n this.validateAllFormFields(control);\n });\n\n this.focusService.focusFirstInvalidInput();\n }\n\n private getSaveObservable() {\n const value = this.formGroup.getRawValue();\n const expedicaoDto = Expedicao.toDto(value);\n\n let observable;\n\n if (this.isNew() && !value.id) {\n observable = this.expedicaoService.insert(expedicaoDto);\n } else {\n const id = value.id;\n observable = this.expedicaoService.update(id, expedicaoDto);\n }\n\n return observable;\n }\n\n private validateVisualization() {\n if (!userCanVisualize(this.formGroup, this.allPermissions)) {\n this.addMessage(\n \"error\",\n \"yms.erp.cannot_visualize_form_summary\",\n \"yms.erp.cannot_visualize_form_detail\"\n );\n }\n }\n\n private addMessage(severity: string, summary: string, detail: string) {\n this.messageService.add({\n severity,\n summary: this.translate.instant(summary),\n detail: this.translate.instant(detail),\n });\n }\n\n private getPedidoVendaForm() {\n return this.formBuilder.group({\n pedidoVenda: [undefined],\n });\n }\n\n private getOrdemVendaForm(\n pedidoVenda?: PedidoVenda,\n getAutomaticItensOrder?: boolean\n ) {\n if (getAutomaticItensOrder) this.getAutomaticItensOrder(pedidoVenda);\n return this.formBuilder.group({\n id: [undefined],\n pedidoVenda: [pedidoVenda],\n itens: this.formBuilder.array([]),\n });\n }\n\n private getOrdemVendaItemForm(pedidoVendaItem?: PedidoVendaItem) {\n return this.formBuilder.group({\n id: [undefined],\n pedido: [undefined],\n item: [pedidoVendaItem],\n quantidade: [undefined],\n numeroPedidoCliente: [undefined],\n itemPedidoCliente: [undefined],\n });\n }\n\n private buscarFilial() {\n const planta = this.agenda.planta || { cnpj: [] };\n\n if (planta.cnpj.length !== 1) {\n this.formCarregado = true; \n return;\n } \n \n this.filialService\n .list({\n page: 0,\n size: 1,\n filterQuery: `pessoa.cpfCnpj eq '${planta.cnpj[0]}'`,\n displayFields: [\"*\", \"empresa.nome\"],\n })\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(({ contents }) => {\n if (contents.length === 1) {\n this.formGroup.get(\"filial\").setValue(Filial.fromDto(contents[0]));\n this.disableOrdersButtons = false;\n }\n });\n\n this.formCarregado = true; \n }\n\n private buscarClienteAFaturar(pedidoVenda: PedidoVendaDto) {\n this.pessoaService\n .list({\n size: 1,\n page: 0,\n filterQuery: `id eq '${pedidoVenda.pessoa.id}'`,\n })\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(({ contents }) => {\n if ((contents || []).length !== 1) return;\n this.formGroup\n .get(\"clienteFaturamento\")\n .setValue(Pessoa.fromDto(contents[0]));\n });\n }\n}\n","import { AfterViewInit, Component, Input } from \"@angular/core\";\nimport { of, Subject, throwError } from \"rxjs\";\nimport { finalize, switchMap, takeUntil } from \"rxjs/operators\";\nimport { Expedicao } from \"../../core/entities/expedicao/expedicao\";\nimport { ExpedicaoDto } from \"../../core/entities/expedicao/expedicao-dto\";\nimport { ExpedicaoService } from \"../../core/entities/expedicao/expedicao.service\";\n\n@Component({\n selector: 'expedicao-info',\n template: `\n <div *sLoadingState=\"loading\" style=\"padding: 20px\">\n <div class=\"detail-pane\" *ngIf=\"agenda && expedicao\">\n <div class=\"detail-span\">\n <span class=\"title\">{{'yms.erp.expedicao_filial' | translate}}</span>\n <span class=\"data\">{{expedicao.filial?.codigo}} - {{expedicao.filial?.nome}}</span>\n </div>\n <div class=\"detail-span\">\n <span class=\"title\">{{'yms.erp.expedicao_cliente_faturamento' | translate}}</span>\n <span class=\"data\">{{expedicao.clienteFaturamento?.nome}}</span>\n </div>\n <div class=\"detail-span\">\n <span class=\"title\">{{'yms.erp.expedicao_cliente_remessa' | translate}}</span>\n <span class=\"data\">{{expedicao.clienteRemessa?.nome}}</span>\n </div>\n <div class=\"detail-span\">\n <span class=\"title\">{{'yms.erp.expedicao_transportadora' | translate}}</span>\n <span class=\"data\">{{expedicao.transportadora?.pessoa?.nomeFantasia}}</span>\n </div>\n </div>\n </div>\n `,\n styleUrls: ['./expedicao-info.component.scss']\n})\nexport class ExpedicaoInfoComponent implements AfterViewInit {\n @Input() agenda: any;\n\n expedicao: Expedicao;\n loading = true;\n\n private readonly unsubscribe$: Subject<void>;\n constructor(private expedicaoService: ExpedicaoService) {\n this.unsubscribe$ = new Subject();\n }\n\n ngAfterViewInit() {\n this.expedicaoService.list({\n filterQuery: `agenda.id eq '${this.agenda.id}'`,\n page: 0,\n size: 1\n })\n .pipe(\n takeUntil(this.unsubscribe$),\n switchMap(({contents}) => {\n if (!contents.length) return throwError(\"Dados de expedição não encontrados\");\n\n return of (contents[0]);\n }),\n finalize(() => this.loading = false)\n )\n .subscribe((expedicao: ExpedicaoDto) => this.expedicao = Expedicao.fromDto(expedicao));\n }\n}","import { Component, Input, OnDestroy, OnInit, TemplateRef, ViewChild } from \"@angular/core\";\nimport { FormControl, FormGroup } from \"@angular/forms\";\nimport { ActivatedRoute } from \"@angular/router\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { CircuitoFinalizado } from \"@seniorsistemas/yms-routines\";\nimport { ConfirmationService, LazyLoadEvent, SortMeta } from \"primeng/components/common/api\";\nimport { Table } from \"primeng/table\";\nimport { Subject } from \"rxjs\";\nimport { catchError, finalize, takeUntil } from \"rxjs/operators\";\nimport { Agenda } from \"../core/entities/agenda/agenda\";\n/*{CA:EXTERNAL_IMPORTS:START}*/\n/*{CA:EXTERNAL_IMPORTS:END}*/\nimport { LogIntegracao } from \"../core/entities/log-integracao/log-integracao\";\nimport { LogIntegracaoService } from \"../core/entities/log-integracao/log-integracao.service\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@CircuitoFinalizado({\n header: 'Logs de integração YMS/ERP',\n name: 'yms.integracao.erpagrox'\n})\nexport class LogIntegracaoDescritor {\n\n}\n\n@Component({\n templateUrl: \"./log-integracao.component.html\",\n styleUrls: [\n '../erp-senior.scss'\n ],\n providers: [\n ConfirmationService,\n /*{CA:COMPONENT_PROVIDERS:START}\n /*{CA:COMPONENT_PROVIDERS:END}*/\n ],\n /*{CA:COMPONENT_CONFIG:START}*/\n /*{CA:COMPONENT_CONFIG:END}*/\n})\nexport class LogIntegracaoComponent extends LogIntegracaoDescritor implements OnInit, OnDestroy /*{CA:CLASS_INTERFACES:START}*/ /*{CA:CLASS_INTERFACES:END}*/ {\n @Input() agenda: Agenda\n\n public allPermissions: any = {};\n public permissions: any = {};\n public localeConfig: any = {};\n\n public currentListParams: ListParams = { page: 0, size: 10, sort: [], filterData: {} };\n public gridData: LogIntegracao[];\n public gridColumns: any[];\n public showLoader: boolean;\n public totalRecords: number;\n public selection: LogIntegracao[];\n\n public serverError: boolean = false;\n\n @ViewChild(\"logIntegracaoTable\")\n public table: Table;\n\n @ViewChild(\"customTemplate\")\n public customTemplate: TemplateRef<any>;\n\n @ViewChild(\"customFilterFields\")\n public customFilterFields: TemplateRef<any>;\n\n @ViewChild(\"customGridColgroup\")\n public customGridColgroup: TemplateRef<any>;\n\n @ViewChild(\"customGridHeader\")\n public customGridHeader: TemplateRef<any>;\n\n @ViewChild(\"customGridBody\")\n public customGridBody: TemplateRef<any>;\n\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n private ngUnsubscribe = new Subject();\n private xmlFormatter: any;\n\n constructor(\n /*{CA:INJECTIONS:START}*/\n /*{CA:INJECTIONS:END}*/\n private route: ActivatedRoute,\n private logIntegracaoService: LogIntegracaoService,\n private translate: TranslateService,\n ) {\n super();\n this.xmlFormatter = require('xml-formatter') || ((payload: string, confs?: any) => payload);\n }\n\n public ngOnInit() {\n /*{CA:ON_INIT_START:START}*/\n /*{CA:ON_INIT_START:END}*/\n\n this.gridColumns = this.getGridColumns();\n this.route.data.pipe(takeUntil(this.ngUnsubscribe)).subscribe((data: any) => this.onRouteDataChange(data));\n /*{CA:ON_INIT_END:START}*/\n /*{CA:ON_INIT_END:END}*/\n }\n\n public ngOnDestroy() {\n /*{CA:ON_DESTROY_START:START}*/\n /*{CA:ON_DESTROY_START:END}*/\n\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n\n /*{CA:ON_DESTROY_END:START}*/\n /*{CA:ON_DESTROY_END:END}*/\n }\n\n public onRouteDataChange(data: any) {\n /*{CA:ON_ROUTE_DATA_CHANGE_START:START}*/\n /*{CA:ON_ROUTE_DATA_CHANGE_START:END}*/\n\n this.allPermissions = data.allPermissions;\n this.permissions = data.allPermissions.logIntegracao;\n this.localeConfig = data.localeConfig;\n\n /*{CA:ON_ROUTE_DATA_CHANGE_END:START}*/\n /*{CA:ON_ROUTE_DATA_CHANGE_END:END}*/\n }\n\n // Verifica se o objeto possui um valor que foi alterado para \"\" (String vazia) ao inves de null ou undefined\n public onSearch() {\n this.resetGrid();\n }\n \n public onGridChange(event: LazyLoadEvent) {\n /*{CA:ON_GRID_CHANGE_START:START}*/\n /*{CA:ON_GRID_CHANGE_START:END}*/\n\n const size = event.rows;\n const page = event.first / size;\n const sort = event.multiSortMeta;\n\n return this.updateGrid({ page, size, sort });\n\n /*{CA:ON_GRID_CHANGE_END:START}*/\n /*{CA:ON_GRID_CHANGE_END:END}*/\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 getGridColumns() {\n const gridColumns = [\n { field: \"nome\", header: this.translate.instant(\"yms.integration.log_integracao_nome\") },\n { field: \"entradaEm\", header: this.translate.instant(\"yms.integration.log_integracao_entrada_em\") },\n { field: \"saidaEm\", header: this.translate.instant(\"yms.integration.log_integracao_saida_em\") }\n ];\n\n /*{CA:GET_GRID_COLUMNS:START}*/\n /*{CA:GET_GRID_COLUMNS:END}*/\n\n return gridColumns;\n }\n\n private updateGrid(listParams: ListParams = {}) {\n this.showLoader = true;\n\n this.currentListParams = { ...this.currentListParams, ...listParams };\n const { page, size } = this.currentListParams;\n\n const sort: SortMeta[] = [{ field: 'entradaEm', order: -1 }];\n\n this.logIntegracaoService\n .list({ page, size, sort, filterQuery: `agenda eq '${this.agenda.id}'`, displayFields: [\"*\"] })\n .pipe(\n takeUntil(this.ngUnsubscribe),\n catchError(err => {\n this.serverError = true;\n throw err;\n }),\n finalize(() => {\n this.showLoader = false;\n })\n )\n .subscribe((list: any) => {\n this.selection = [];\n this.gridData = list.contents;\n this.totalRecords = list.totalElements;\n this.serverError = false;\n });\n }\n\n getPayload(payload: string) {\n if (payload[0] == \"{\") {\n return JSON.stringify(JSON.parse(payload), null, 2);\n\n }\n else if (payload[0] === \"<\") {\n return this.xmlFormatter(payload);\n } else {\n return payload;\n }\n }\n\n resetGrid(listParams?: ListParams) {\n if (listParams) this.currentListParams = { ...this.currentListParams, ...listParams };\n this.currentListParams = { ...this.currentListParams, page: 0, sort: [] };\n this.table.reset();\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 /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\ninterface ListParams {\n page?: number;\n size?: number;\n sort?: SortMeta[];\n filterData?: any;\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { Filial } from \"../filial/filial\";\nimport { Agenda } from \"../agenda/agenda\";\nimport { ProcessoAvulsoDto } from \"./processo-avulso-dto\";\n\nexport class ProcessoAvulso {\n filial: Filial;\n agenda: Agenda;\n\n static fromDto(processoAvulsoDto: ProcessoAvulsoDto) {\n const model: any = { ...processoAvulsoDto };\n model.filial = Filial.fromDto(model.filial);\n return model;\n }\n\n static toDto(processoAvulso: ProcessoAvulso) {\n const dto = { ...processoAvulso };\n dto.filial = Filial.toDto(dto.filial);\n return dto;\n }\n}","import { Injectable } from \"@angular/core\";\nimport { ChegadaVeiculoOverride, OverrideParams } from \"@seniorsistemas/yms-routines\";\nimport { throwError } from \"rxjs\";\nimport { map, mergeMap } from \"rxjs/operators\";\nimport { AgendaService } from \"../core/entities/agenda/agenda.service\";\nimport { ProcessoAvulso } from \"../core/entities/processo-avulso/processo-avulso\";\nimport { ProcessoAvulsoService } from \"../core/entities/processo-avulso/processo-avulso.service\";\n\n@Injectable()\nexport class ProcessoAvulsoChegadaVeiculoOverride {\n private readonly AVULSO_KEY = \"ERP_SENIOR_PROCESSO_AVULSO\"\n constructor(\n private override: ChegadaVeiculoOverride,\n private agendaService: AgendaService,\n private processoAvulsoService: ProcessoAvulsoService) {\n }\n\n public initialize() {\n this.override.addOverride(this.AVULSO_KEY, (params) => this.functionToOverride(params));\n }\n\n public remove() {\n this.override.disposeOverride(this.AVULSO_KEY);\n } \n\n private functionToOverride(params: OverrideParams) {\n return this.agendaService.atualizarAgenda(params.agenda)\n .pipe(\n mergeMap(_ => this.processoAvulsoService.list({\n filterQuery: `agenda.id eq '${params.agenda.id}'`,\n page: 0,\n size: 1\n })),\n map(({contents}) => contents.length ? contents[0] : null),\n mergeMap((avulso: ProcessoAvulso) => {\n if (!avulso) return throwError(\"Os dados da guia ERP Senior não foram informados\");\n\n return this.processoAvulsoService.registrarChegada({\n processoAvulso: avulso,\n circuito: params.circuito.id,\n sequenciaInicial: params.sequencia.id,\n vagaInicial: (params.vaga || {}).id\n })\n })\n )\n }\n}","import { Component, OnDestroy, OnInit, Input, AfterViewInit } from \"@angular/core\";\nimport { FormBuilder, FormGroup, FormControl, FormArray, Validators } from \"@angular/forms\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { FieldType, FormField } from \"@seniorsistemas/angular-components\";\nimport { ReplaySubject, Subject } from \"rxjs\";\nimport { Filial } from \"../../core/entities/filial/filial\";\nimport { takeUntil, finalize, concatMap } from \"rxjs/operators\";\nimport { ProcessoAvulso } from \"../../core/entities/processo-avulso/processo-avulso\";\nimport { ProcessoAvulsoService } from \"../../core/entities/processo-avulso/processo-avulso.service\";\nimport { ConfirmationService, MessageService, SortMeta } from \"primeng/api\";\nimport { Agenda } from \"../../core/entities/agenda/agenda\";\nimport { PesquisarFiliaisInput, FilialService } from \"../../core/entities/filial/filial.service\";\nimport { isValidFilter } from \"../../../utils/utils\";\nimport { ProcessoAvulsoChegadaVeiculoOverride } from \"../processo-avulso-chegada-veiculo.override\";\nimport { StatusAgenda } from \"./../../core/enums/status-agenda\";\nimport { AgendaService } from \"../../core/entities/agenda/agenda.service\";\nimport { ErpProcessData } from \"../../core/erp-process-data/erp-process-data\";\nimport { ErpProcessService } from \"../../core/erp-process-data/erp-process-service\";\nimport { ErpFormConfigService } from \"../../core/erp-form-config/erp-form-config-service\";\nimport { HasChangeService } from '../../core/has-change/has-change-service';\n\n@Component({\n selector: 'processo-avulso-form',\n templateUrl: './processo-avulso-form.component.html'\n})\nexport class ProcessoAvulsoFormComponent implements OnInit, AfterViewInit, OnDestroy {\n @Input() agenda: Agenda;\n\n formGroup: FormGroup;\n loading = false;\n saveAndInitButton: HTMLButtonElement;\n\n filialSearchFields: FormField[];\n filialSearchGridFields: FormField[];\n filialSearchGridData: Filial[];\n filialLookupDisplayFields = [\"codigo\", \"nome\", \"empresa.nome\"];\n filialAdvancedDisplayFields = [\"id\", \"codigo\", \"nome\", \"empresa.nome\"];\n filialLookupSeparator = \" - \";\n filialLookupSuggestions: Filial[];\n filialSearchTotalRecords: number;\n \n private formCarregado = false;\n\n private readonly ngUnsubscribe = new Subject<void>();\n private erpProcessData: ErpProcessData;\n private enableRevalidation: boolean;\n\n constructor(\n private fb: FormBuilder,\n private router: Router,\n private route: ActivatedRoute,\n private filialService: FilialService,\n private processoAvulsoService: ProcessoAvulsoService,\n private messageService: MessageService,\n private processoAvulsoOverride: ProcessoAvulsoChegadaVeiculoOverride,\n private translate: TranslateService,\n private confirmationService: ConfirmationService,\n private agendaService: AgendaService,\n private erpProcessService: ErpProcessService,\n private erpFormConfigService: ErpFormConfigService,\n private hasChangeService: HasChangeService\n ) { }\n\n ngOnInit() {\n this.formGroup = this.fb.group({\n id: [undefined],\n filial: [undefined, Validators.required],\n agenda: [undefined]\n })\n this.filialSearchFields = this.getFilialSearchFields();\n this.filialSearchGridFields = this.getFilialSearchGridFields();\n\n this.getProcessoAvulso();\n\n this.formGroup.get(\"filial\").valueChanges.pipe(takeUntil(this.ngUnsubscribe)).subscribe((_) => {\n const fil = this.formGroup.get(\"filial\").value;\n if (this.erpProcessService && fil) {\n this.erpProcessData.filialId = fil.id;\n this.erpProcessService.changeData(this.erpProcessData);\n }\n return;\n });\n this.processoAvulsoOverride.initialize();\n this.erpProcessService.current.subscribe(message => this.erpProcessData = message);\n this.erpFormConfigService.current.subscribe(message => this.enableRevalidation = message);\n\n this.verificaSeTemAlteracao();\n }\n\n private verificaSeTemAlteracao() {\n this.formGroup.valueChanges.subscribe(() => {\n if (this.formCarregado) {\n this.hasChangeService.hasChange(this.agenda.id);\n }\n });\n }\n\n ngAfterViewInit() {\n this.saveAndInitButton = document.getElementById('init') as HTMLButtonElement;\n\n this.formGroup.valueChanges.subscribe(() => {\n if (this.formCarregado) {\n this.hasChangeService.hasChange(this.agenda.id);\n }\n });\n }\n\n ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n this.processoAvulsoOverride.remove();\n }\n\n onSave(start?: boolean) {\n if (this.formGroup.invalid) {\n return this.validateAllFormFields(this.formGroup);\n }\n\n this.loading = true;\n\n if (this.isNew() || !this.enableRevalidation) {\n return this.saveAndInit(start);\n }\n\n this.erpProcessData = this.erpProcessService.builderErpProcessData(this.erpProcessData, this.formGroup);\n this.erpProcessService.changeDataErp(this.erpProcessData);\n return this.agendaService\n .checarRevalidacao(this.erpProcessData)\n .pipe(\n takeUntil(this.ngUnsubscribe),\n finalize(() => this.loading = false),\n )\n .subscribe((response: any) => {\n if (response.requerRevalidacao) {\n this.atualizaAgendaParaRejeitadoPorValidacao();\n }\n else {\n this.saveAndInit(start);\n }\n });\n }\n\n private atualizaAgendaParaRejeitadoPorValidacao() {\n this.confirmationService.confirm({\n header: this.translate.instant(\"yms.patio.agenda_revalidacao_title\"),\n message: this.translate.instant(\"yms.patio.agenda_revalidacao_message\"),\n accept: () => {\n this.hasChangeService.hasChangeSave(this.agenda.id);\n this.agenda.status = StatusAgenda.REJEITADO_POR_VALIDACAO;\n this.agenda.motorista = {id: this.erpProcessData.motoristaId};\n this.agenda.veiculo = {id: this.erpProcessData.veiculoId};\n this.agendaService\n .atualizarAgenda(this.agenda)\n .pipe(\n takeUntil(this.ngUnsubscribe),\n concatMap((_) => this.getSaveObservable()),\n finalize(() => this.loading = false),\n )\n .subscribe((_) => {\n this.successMessage();\n this.router.navigate([\"/chegada-veiculo\"], { relativeTo: this.route });\n });\n },\n reject: () => this.loading = false,\n });\n }\n\n private saveAndInit(start: boolean) {\n this.getSaveObservable()\n .pipe(\n takeUntil(this.ngUnsubscribe),\n finalize(() => this.loading = false),\n )\n .subscribe((response: any) => {\n this.formGroup.patchValue({ ...ProcessoAvulso.fromDto(response) });\n this.successMessage();\n this.hasChangeService.hasChangeSave(this.agenda.id);\n if (start && this.saveAndInitButton) {\n this.hasChangeService.hasChangeSave(this.agenda.id);\n this.saveAndInitButton.click();\n }\n });\n }\n\n private successMessage() {\n this.messageService.add({\n severity: \"success\",\n summary: this.translate.instant(\"saved_message_title\"),\n detail: this.translate.instant(\"saved_message_content\"),\n });\n }\n\n public isNew() {\n return !this.formGroup.value.id;\n }\n\n onFilialLookupRequest(value: string) {\n const filterInput = this.getFilialSearchFields()\n .filter(({ type }) => isValidFilter(type, value))\n .reduce((a, { name, type }) => {\n if (type === FieldType.Integer) {\n return { ...a, [name]: value.replace(/\\D/, \"\") };\n }\n return { ...a, [name]: value };\n }, { cnpjs: this.agenda.planta.cnpj, pagina: { limit: 10, offset: 0 } } as PesquisarFiliaisInput);\n\n this.filialService\n .listFiliais(filterInput)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) =>\n this.filialLookupSuggestions = list.filiais.map((filial: any) => Filial.fromDto(filial)));\n }\n\n onFilialSearchRequest(event: any) {\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const sort: SortMeta[] = multiSortMeta;\n const sortFormatted = !!(sort || []).length && { campo: sort[0].field, ordenacao: sort[0].order > 0 ? 'Asc' : 'Desc' };\n const filterInput = this.getFilialSearchFields()\n .filter(({ name }) => filterData[name] != undefined && filterData[name] != \"\")\n .reduce((a, { name, type }) => {\n const value = filterData[name];\n if (type === FieldType.Integer) {\n return { ...a, [name]: `${value}`.replace(/\\D/, \"\") };\n }\n return { ...a, [name]: value };\n }, { cnpjs: this.agenda.planta.cnpj, pagina: { limit: rows, offset: page, listaOrdenacao: sortFormatted ? [ { ...(sortFormatted) } ] : null } } as PesquisarFiliaisInput);\n\n this.filialService\n .listFiliais(filterInput)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.filialSearchGridData = list.filiais.map(Filial.fromDto);\n this.filialSearchTotalRecords = list.qtdTotalRegistros;\n });\n\n }\n\n private getSaveObservable() {\n const { value } = this.formGroup;\n value.agenda = this.agenda;\n\n const processoAvulsoDto = ProcessoAvulso.toDto(value);\n\n if (!!value.id) {\n return this.processoAvulsoService.update(value.id, processoAvulsoDto);\n }\n return this.processoAvulsoService.insert(processoAvulsoDto);\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 else if (control instanceof FormArray) control.controls.forEach((form: FormGroup) => this.validateAllFormFields(form));\n });\n }\n\n private getProcessoAvulso() {\n this.processoAvulsoService.list({ \n filterQuery: `agenda.id eq '${this.agenda.id}'`,\n size: 1, \n page: 0\n })\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(({ contents }) => {\n if (!contents || contents.length <= 0) {\n return this.buscarFilial();\n }\n const processoAvulso = contents[0];\n this.formGroup.patchValue({ ...ProcessoAvulso.fromDto(processoAvulso) });\n this.formCarregado = true;\n });\n }\n\n private getFilialSearchFields() {\n return [\n new FormField({\n name: \"nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.filial_nome\")\n }),\n new FormField({\n name: \"codigo\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.filial_codigo\")\n })\n ];\n }\n\n private getFilialSearchGridFields() {\n return [\n new FormField({\n name: \"nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.filial_nome\")\n }),\n new FormField({\n name: \"codigo\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.filial_codigo\")\n }),\n new FormField({\n name: \"empresa.nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.empresa\")\n })\n ];\n }\n\n private buscarFilial() {\n const planta = this.agenda.planta || { cnpj: [] };\n if (planta.cnpj.length === 1) {\n this.filialService.list({\n page: 0,\n size: 1,\n filterQuery: `pessoa.cpfCnpj eq '${planta.cnpj[0]}'`,\n displayFields: ['*', 'empresa.nome']\n })\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(({ contents }) => {\n if (contents.length === 1) {\n this.formGroup.get(\"filial\").setValue(Filial.fromDto(contents[0])); \n }\n });\n }\n this.formCarregado = true;\n }\n}","import { Component, Input, AfterViewInit } from \"@angular/core\";\nimport { Agenda } from \"../../core/entities/agenda/agenda\";\nimport { ProcessoAvulso } from \"../../core/entities/processo-avulso/processo-avulso\";\nimport { Subject } from \"rxjs\";\nimport { ProcessoAvulsoService } from \"../../core/entities/processo-avulso/processo-avulso.service\";\nimport { takeUntil } from \"rxjs/operators\";\n\n@Component({\n selector: 'processo-avulso-info',\n template: `\n <div *sLoadingState=\"loading\" style=\"padding: 20px;\">\n <div class=\"detail-pane\" *ngIf=\"agenda\">\n <div class=\"detail-span\">\n <span class=\"title\">{{'yms.erp.filial' | translate}}</span>\n <span class=\"data\">{{processoAvulso?.filial?.nome}} - {{processoAvulso?.filial?.codigo}}</span>\n </div>\n </div>\n </div>\n `\n})\nexport class ProcessoAvulsoInfoComponent implements AfterViewInit {\n @Input() agenda: Agenda;\n loading = false;\n processoAvulso: ProcessoAvulso;\n\n private readonly unsubscribe$ = new Subject<void>();\n constructor(private processoAvulsoService: ProcessoAvulsoService) {\n }\n\n ngAfterViewInit() {\n this.processoAvulsoService.list({\n filterQuery: `agenda.id eq '${this.agenda.id}'`,\n page: 0,\n size: 1\n })\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(({ contents }) => {\n if (!contents || contents.length <= 0) return;\n this.processoAvulso = ProcessoAvulso.fromDto(contents[0]);\n })\n }\n}","import * as _moment from \"moment\";const moment = _moment\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { SafraDto } from \"./safra-dto\";\nimport { Empresa } from \"../empresa/empresa\";\nimport { Situacao } from \"../../enums/situacao\";\nimport { getLookupLabel } from \"../../../../utils/lookup-utils\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport class Safra {\n public id?: string;\n public codigo: string;\n public descricao: string;\n public empresa: Empresa;\n public competenciaInicial?: Date;\n public competenciaFinal?: Date;\n public situacao: Situacao;\n public createdBy?: string;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n public static fromDto(safraDto: SafraDto, originEntity?: string): Safra {\n const model: any = { ...safraDto };\n\n model.competenciaInicial = model.competenciaInicial && moment(model.competenciaInicial).toDate();\n model.competenciaFinal = model.competenciaFinal && moment(model.competenciaFinal).toDate();\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n const lookupSeparator = \" - \";\n const displayFields = [\n \"codigo\",\n \"descricao\",\n ];\n\n model.label = getLookupLabel(model, displayFields, lookupSeparator);\n\n if (originEntity !== \"Empresa\" && model.empresa) model.empresa = Empresa.fromDto(model.empresa, \"Safra\");\n\n return model as Safra;\n }\n\n public static toDto(safra: Safra, originEntity?: string): SafraDto {\n const dto: any = { ...safra };\n\n dto.competenciaInicial = dto.competenciaInicial && moment(dto.competenciaInicial).format(\"YYYY-MM-DD\");\n dto.competenciaFinal = dto.competenciaFinal && moment(dto.competenciaFinal).format(\"YYYY-MM-DD\");\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n if (originEntity !== \"Empresa\" && dto.empresa) dto.empresa = Empresa.toDto(dto.empresa, \"Safra\");\n\n return dto;\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import * as _moment from \"moment\";\nimport { Empresa } from \"../empresa/empresa\";\nimport { Filial } from \"../filial/filial\";\nimport { Pessoa } from \"../pessoa/pessoa\";\nimport { Produto } from \"../produto/produto\";\nimport { Derivacao } from \"../derivacao/derivacao\";\nimport { Transportadora } from \"../transportadora/transportadora\";\nimport { Safra } from \"../safra/safra\";\nimport { RecebimentoOrdemCompraDto } from \"./recebimento-ordem-compra-dto\";\nimport { OrdemCompra } from \"../ordem-compra/ordem-compra\";\nimport { Agenda } from \"../agenda/agenda\";\nimport { PessoaEndereco } from \"../pessoa-endereco/pessoa-endereco\";\nimport { RecebimentoOrdemCompraFornecedor } from \"../recebimento-ordem-compra-details/recebimento-ordem-compra-fornecedor\";\n\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nconst moment = _moment\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport class RecebimentoOrdemCompra {\n public id: string;\n public agenda: Agenda;\n public empresa: Empresa;\n public filial: Filial;\n public fornecedores?: RecebimentoOrdemCompraFornecedor[];\n public produto: Produto;\n public derivacao: Derivacao;\n public transportadora: Transportadora;\n public safra: Safra;\n public ordemCompra: OrdemCompra;\n public serieNotaFiscal: string;\n public numeroNotaFiscal: string;\n public chaveNotaFiscal: string;\n\n public createdBy?: string;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n public custom?: any;\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n public static fromDto(recebimentoOrdemCompraDto: RecebimentoOrdemCompraDto, originEntity?: string): RecebimentoOrdemCompra {\n const model: any = { ...recebimentoOrdemCompraDto };\n\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n const lookupSeparator = \" - \";\n const displayFields = [\n ''];\n\n model.label = displayFields.map(field => model[field]).join(lookupSeparator);\n\n if (originEntity !== \"Agenda\" && model.agenda) model.agenda = Agenda.fromDto(model.agenda, \"RecebimentoOrdemCompra\");\n if (originEntity !== \"Empresa\" && model.empresa) model.empresa = Empresa.fromDto(model.empresa, \"RecebimentoOrdemCompra\");\n if (originEntity !== \"Filial\" && model.filial) model.filial = Filial.fromDto(model.filial, \"RecebimentoOrdemCompra\");\n if (originEntity !== \"PessoaEndereco\" && model.origemMercadoria) model.origemMercadoria = PessoaEndereco.fromDto(model.origemMercadoria, \"RecebimentoOrdemCompra\");\n if (originEntity !== \"Produto\" && model.produto) model.produto = Produto.fromDto(model.produto, \"RecebimentoOrdemCompra\");\n if (originEntity !== \"Derivacao\" && model.derivacao) model.derivacao = Derivacao.fromDto(model.derivacao, \"RecebimentoOrdemCompra\");\n if (originEntity !== \"Transportadora\" && model.transportadora) model.transportadora = Transportadora.fromDto(model.transportadora, \"RecebimentoOrdemCompra\");\n if (originEntity !== \"Safra\" && model.safra) model.safra = Safra.fromDto(model.safra, \"RecebimentoOrdemCompra\");\n if (originEntity !== \"OrdemCompra\" && model.ordemCompra) model.ordemCompra = OrdemCompra.fromDto(model.ordemCompra, \"RecebimentoOrdemCompra\");\n\n model.fornecedores = model.fornecedores.map((fornecedor: any) => ({ \n ...fornecedor,\n fornecedor: Pessoa.fromDto(fornecedor.fornecedor),\n origemMercadoria: PessoaEndereco.fromDto(fornecedor.origemMercadoria),\n ordens: fornecedor.ordens.map(OrdemCompra.fromDto)\n }));\n\n return model as RecebimentoOrdemCompra;\n }\n\n public static toDto(recebimentoOrdemCompra: RecebimentoOrdemCompra, originEntity?: string): RecebimentoOrdemCompraDto {\n const dto: any = { ...recebimentoOrdemCompra };\n\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n if (originEntity !== \"Agenda\" && dto.agenda) dto.agenda = Agenda.toDto(dto.agenda, \"RecebimentoOrdemCompra\");\n if (originEntity !== \"Empresa\" && dto.empresa) dto.empresa = Empresa.toDto(dto.empresa, \"RecebimentoOrdemCompra\");\n if (originEntity !== \"Filial\" && dto.filial) dto.filial = Filial.toDto(dto.filial, \"RecebimentoOrdemCompra\");\n if (originEntity !== \"Produto\" && dto.produto) dto.produto = Produto.toDto(dto.produto, \"RecebimentoOrdemCompra\");\n if (originEntity !== \"Derivacao\" && dto.derivacao) dto.derivacao = Derivacao.toDto(dto.derivacao, \"RecebimentoOrdemCompra\");\n if (originEntity !== \"Transportadora\" && dto.transportadora) dto.transportadora = Transportadora.toDto(dto.transportadora, \"RecebimentoOrdemCompra\");\n if (originEntity !== \"Safra\" && dto.safra) dto.safra = Safra.toDto(dto.safra, \"RecebimentoOrdemCompra\");\n if (originEntity !== \"OrdemCompra\" && dto.ordemCompra) dto.ordemCompra = OrdemCompra.toDto(dto.ordemCompra, \"RecebimentoOrdemCompra\");\n\n\n return dto;\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { Injectable } from \"@angular/core\";\nimport { ChegadaVeiculoOverride, OverrideParams } from \"@seniorsistemas/yms-routines\";\nimport { throwError } from \"rxjs\";\nimport { map, mergeMap } from \"rxjs/operators\";\nimport { AgendaService } from \"../core/entities/agenda/agenda.service\";\nimport { RecebimentoOrdemCompraService } from \"../core/entities/recebimento-ordem-compra/recebimento-ordem-compra.service\";\nimport { RecebimentoOrdemCompra } from \"../core/entities/recebimento-ordem-compra/recebimento-ordem-compra\";\n\n@Injectable()\nexport class RecebimentoOrdemCompraChegadaVeiculoOverride {\n private readonly RECEBIMENTO_ORDEMCOMPRA_KEY = \"ERP_SENIOR_RECEBIMENTO_ORDEMCOMPRA_KEY\";\n constructor(\n private override: ChegadaVeiculoOverride,\n private agendaService: AgendaService,\n private recebimentoOrdemCompraService: RecebimentoOrdemCompraService\n ) { }\n\n public initialize() {\n this.override.addOverride(this.RECEBIMENTO_ORDEMCOMPRA_KEY, (params) => this.functionToOverride(params));\n }\n\n public remove() {\n this.override.disposeOverride(this.RECEBIMENTO_ORDEMCOMPRA_KEY);\n }\n\n private functionToOverride(params: OverrideParams) {\n return this.agendaService.atualizarAgenda(params.agenda)\n .pipe(\n mergeMap(_ => this.recebimentoOrdemCompraService.list({\n filterQuery: `agenda.id eq '${params.agenda.id}'`,\n page: 0,\n size: 1\n })),\n map(({ contents }) => contents.length ? contents[0] : null),\n mergeMap((recebimentoOrdemCompra: RecebimentoOrdemCompra) => {\n if (!recebimentoOrdemCompra) return throwError(\"Não foi possÃvel encontrar os dados de Recebimento de ordem de compra\");\n\n return this.recebimentoOrdemCompraService.registrarChegadaVeiculoRecebimentoOrdemCompra({\n recebimentoOrdemCompra,\n circuito: params.circuito.id,\n sequenciaInicial: params.sequencia.id,\n vagaInicial: (params.vaga || {}).id\n });\n })\n );\n }\n\n}","import { VerificaNotafiscal } from '../../core/verifica-nota-fiscal/verificaNotaFiscal';\nimport { AfterViewInit, Component, Input, OnDestroy, OnInit } from \"@angular/core\";\nimport { AbstractControl, FormArray, FormBuilder, FormControl, FormGroup, Validators } from \"@angular/forms\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { FieldType, FormField, IToken } from \"@seniorsistemas/angular-components\";\nimport * as _moment from \"moment\";\nimport { ConfirmationService, DialogService, MessageService, SortMeta } from \"primeng/api\";\nimport { Subject } from \"rxjs\";\nimport { concatMap, debounceTime, filter, finalize, map, mergeMap, takeUntil } from \"rxjs/operators\";\nimport { getLookupLabel, onLookupRequest, onSearchRequest } from \"../../../utils/lookup-utils\";\nimport { dialogConfig, isValidFilter } from \"../../../utils/utils\";\nimport { NotaFormComponent } from \"../../components/nota-form/nota-form.component\";\nimport { Agenda } from \"../../core/entities/agenda/agenda\";\nimport { AgendaService } from \"../../core/entities/agenda/agenda.service\";\nimport { Derivacao } from \"../../core/entities/derivacao/derivacao\";\nimport { DerivacaoService } from \"../../core/entities/derivacao/derivacao.service\";\nimport { Filial } from \"../../core/entities/filial/filial\";\nimport { FilialService, PesquisarFiliaisInput } from \"../../core/entities/filial/filial.service\";\nimport { OrdemCompra } from \"../../core/entities/ordem-compra/ordem-compra\";\nimport { OrdemCompraService } from \"../../core/entities/ordem-compra/ordem-compra.service\";\nimport { PessoaEndereco } from \"../../core/entities/pessoa-endereco/pessoa-endereco\";\nimport { PessoaEnderecoService } from \"../../core/entities/pessoa-endereco/pessoa-endereco.service\";\nimport { Pessoa } from \"../../core/entities/pessoa/pessoa\";\nimport { PessoaService } from \"../../core/entities/pessoa/pessoa.service\";\nimport { Produto } from \"../../core/entities/produto/produto\";\nimport { ProdutoParams, ProdutoService } from \"../../core/entities/produto/produto.service\";\nimport { RecebimentoOrdemCompra } from \"../../core/entities/recebimento-ordem-compra/recebimento-ordem-compra\";\nimport { RecebimentoOrdemCompraDto } from \"../../core/entities/recebimento-ordem-compra/recebimento-ordem-compra-dto\";\nimport { RecebimentoOrdemCompraService } from \"../../core/entities/recebimento-ordem-compra/recebimento-ordem-compra.service\";\nimport { Safra } from \"../../core/entities/safra/safra\";\nimport { SafraService } from \"../../core/entities/safra/safra.service\";\nimport { Transportadora } from \"../../core/entities/transportadora/transportadora\";\nimport { TransportadoraService } from \"../../core/entities/transportadora/transportadora.service\";\nimport { NotaValidatorService, PesquisarDocumentoResponse } from \"../../core/nota-validator.service\";\nimport { RecebimentoOrdemCompraChegadaVeiculoOverride } from \"../recebimento-ordem-compra-chegada-veiculo.override\";\nimport { StatusAgenda } from \"./../../core/enums/status-agenda\";\nimport { OrdemCompraFormComponent } from './../ordem-compra-form/ordem-compra-form.component';\nimport { ErpProcessData } from \"../../core/erp-process-data/erp-process-data\";\nimport { ErpProcessService } from \"../../core/erp-process-data/erp-process-service\";\nimport { ErpFormConfigService } from \"../../core/erp-form-config/erp-form-config-service\";\nimport { OrdemCompraDto } from \"../../core/entities/ordem-compra/ordem-compra-dto\";\nimport { HasChangeService } from '../../core/has-change/has-change-service';\n\nconst moment = _moment;\n\n@Component({\n selector: 'recebimento-ordem-compra-form',\n templateUrl: './recebimento-ordem-compra-form.component.html',\n styleUrls: ['../../erp-senior.scss'],\n providers: [ConfirmationService]\n})\n\nexport class RecebimentoOrdemCompraFormComponent implements OnInit, OnDestroy, AfterViewInit {\n formGroup: FormGroup;\n\n derivacaoSearchFields: FormField[];\n derivacaoSearchGridData: Derivacao[];\n derivacaoLookupDisplayFields = [\"codigo\", \"descricao\"];\n derivacaoAdvancedDisplayFields = [\"id\", \"codigo\", \"descricao\"];\n derivacaoLookupSeparator = \" - \";\n derivacaoLookupSuggestions: Derivacao[];\n derivacaoSearchTotalRecords: number;\n\n filialSearchFields: FormField[];\n filialSearchGridFields: FormField[];\n filialSearchGridData: Filial[];\n filialLookupDisplayFields = [\"codigo\", \"nome\", \"empresa.nome\"];\n filialAdvancedDisplayFields = [\"id\", \"codigo\", \"nome\", \"empresa.nome\"];\n filialLookupSeparator = \" - \";\n filialLookupSuggestions: Filial[];\n filialSearchTotalRecords: number;\n\n fornecedorSearchFields: FormField[];\n fornecedorSearchGridData: Pessoa[];\n fornecedorLookupDisplayFields = [\"codigo\", \"nome\", \"cpfCnpj\"];\n fornecedorAdvancedDisplayFields = [\"id\", \"codigo\", \"nome\"];\n fornecedorLookupSeparator = \" - \";\n fornecedorLookupSuggestions: Pessoa[];\n fornecedorSearchTotalRecords: number;\n\n ordemCompraSearchFields: FormField[];\n ordemCompraSearchGridFields: FormField[];\n ordemCompraSearchGridData: OrdemCompra[];\n ordemCompraLookupDisplayFields = [\"codigo\", \"empresa.nome\"];\n ordemCompraAdvancedDisplayFields = [\"id\", \"codigo\", \"empresa.nome\", \"filial.nome\", \"pessoa.nome\"];\n ordemCompraLookupSeparator = \" - \";\n ordemCompraLookupSuggestions: OrdemCompra[];\n ordemCompraSearchTotalRecords: number;\n\n origemMercadoriaSearchFields: FormField[];\n origemMercadoriaSearchGridData: PessoaEndereco[];\n origemMercadoriaLookupDisplayFields = [\"codigo\", \"endereco\"];\n origemMercadoriaAdvancedDisplayFields = [\"id\", \"codigo\", \"endereco\", \"numero\"];\n origemMercadoriaLookupSeparator = \" - \";\n origemMercadoriaLookupSuggestions: PessoaEndereco[];\n origemMercadoriaSearchTotalRecords: number;\n\n produtoSearchFields: FormField[];\n produtoSearchGridData: Produto[];\n produtoLookupDisplayFields = [\"codigo\", \"descricao\"];\n produtoAdvancedDisplayFields = [\"id\", \"codigo\", \"descricao\"];\n produtoLookupSeparator = \" - \";\n produtoLookupSuggestions: Produto[];\n produtoSearchTotalRecords: number;\n\n safraSearchFields: FormField[];\n safraSearchGridFields: FormField[];\n safraSearchGridData: Safra[];\n safraLookupDisplayFields = [\"codigo\", \"descricao\"];\n safraAdvancedDisplayFields = [\"id\", \"codigo\", \"descricao\"];\n safraLookupSeparator = \" - \";\n safraLookupSuggestions: Safra[];\n safraSearchTotalRecords: number;\n\n transportadoraSearchFields: FormField[];\n transportadoraSearchGridFields: FormField[];\n transportadoraSearchGridData: Transportadora[];\n transportadoraLookupDisplayFields = [\"codigo\", \"pessoa.nome\", \"pessoa.cpfCnpj\"];\n transportadoraAdvancedDisplayFields = [\"id\", \"codigo\", \"pessoa.nome\", \"pessoa.cpfCnpj\"];\n transportadoraLookupSeparator = \" - \";\n transportadoraLookupSuggestions: Transportadora[];\n transportadoraSearchTotalRecords: number;\n\n disableButtonSave: boolean = false;\n\n chaveNotaFiscal: string;\n\n totalEixosContratados: number = 0;\n totalEixosComposicao: number = 0;\n\n erroChaveNota = false;\n erroFornecedores = false;\n\n public notasTokens: IToken[] = [];\n public fornecedorNotasTokens: IToken[] = [];\n public fornecedorNotas = [];\n\n private formCarregado = false;\n\n ordemCompraSelecionado: any = null;\n\n public loading: boolean;\n public saveAndInitButton: any;\n public createdByErp: boolean;\n\n @Input() private agenda: Agenda;\n\n private readonly ngUnsubscribe = new Subject<void>();\n private erpProcessData: ErpProcessData;\n private enableRevalidation: boolean;\n\n private ordens: any;\n\n constructor(\n private formBuilder: FormBuilder,\n private translate: TranslateService,\n private filialService: FilialService,\n private pessoaService: PessoaService,\n private produtoService: ProdutoService,\n private derivacaoService: DerivacaoService,\n private transportadoraService: TransportadoraService,\n private ordemCompraService: OrdemCompraService,\n private recebimentoOrdemCompraService: RecebimentoOrdemCompraService,\n private messageService: MessageService,\n private route: ActivatedRoute,\n private router: Router,\n private origemMercadoriaService: PessoaEnderecoService,\n private safraService: SafraService,\n private override: RecebimentoOrdemCompraChegadaVeiculoOverride,\n private notaValidatorService: NotaValidatorService,\n private confirmationService: ConfirmationService,\n private dialogService: DialogService,\n private agendaService: AgendaService,\n private erpProcessService: ErpProcessService,\n private erpFormConfigService: ErpFormConfigService,\n private verificaNotaFiscal: VerificaNotafiscal,\n private hasChangeService: HasChangeService,\n ) {\n this.formGroup = this.getFormGroup();\n }\n\n public ngOnInit() {\n this.route.params.pipe(takeUntil(this.ngUnsubscribe)).subscribe(({ agenda }) => {\n if (agenda == \"new\") {\n return this.configureForm();\n }\n this.getRecebimentoOrdemCompra(agenda);\n });\n\n this.formGroup\n .get('filial')\n .valueChanges.pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(this.onChangeRevalidation);\n\n this.formGroup\n .get('fornecedores')\n .valueChanges.pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(this.onChangeRevalidation);\n\n this.formGroup\n .get('transportadora')\n .valueChanges.pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(this.onChangeRevalidation);\n\n\n this.derivacaoSearchFields = this.getDerivacaoSearchFields();\n this.filialSearchFields = this.getFilialSearchFields();\n this.filialSearchGridFields = this.getFilialSearchGridFields();\n this.fornecedorSearchFields = this.getFornecedorSearchFields();\n this.origemMercadoriaSearchFields = this.getOrigemMercadoriaSearchFields();\n this.produtoSearchFields = this.getProdutoSearchFields();\n this.safraSearchFields = this.getSafraSearchFields();\n this.safraSearchGridFields = this.getSafraSearchGridFields();\n this.transportadoraSearchFields = this.getTransportadoraSearchFields();\n this.transportadoraSearchGridFields = this.getTransportadoraSearchGridFields();\n this.ordemCompraSearchFields = this.getOrdemCompraFields();\n this.ordemCompraSearchGridFields = this.getOrdemCompraGridFields();\n\n if (this.agenda && this.agenda.externalTenant) {\n this.setTransportadora(this.agenda.externalTenant.cnpj);\n }\n\n this.getEmpresaFilial();\n\n this.totalEixosComposicao = this.agenda && this.agenda.veiculo ? this.agenda.veiculo.eixos || 0 : 0;\n\n const statusAgenda = [\n \"AGUARDANDO_CONFIRMACAO_SOLICITANTE\",\n \"AGENDADO\",\n \"AGUARDANDO_CONFIRMACAO\",\n \"EM_EXECUCAO\",\n \"REJEITADO_POR_VALIDACAO\"\n ];\n if (this.agenda && !statusAgenda.includes(this.agenda.status)) {\n this.formGroup.disable();\n this.disableButtonSave = true;\n }\n this.createdByErpDisableForm();\n\n this.erpProcessService.current.subscribe(message => this.erpProcessData = message);\n this.erpFormConfigService.current.subscribe(message => this.enableRevalidation = message);\n this.verificaSeTemAlteracao();\n }\n\n private verificaSeTemAlteracao() {\n this.formGroup.valueChanges.subscribe(() => {\n if (this.formCarregado) {\n this.hasChangeService.hasChange(this.agenda.id);\n }\n });\n }\n\n public ngAfterViewInit(): void {\n this.override.initialize();\n this.saveAndInitButton = document.getElementById('init');\n }\n\n public ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n this.override.remove();\n }\n\n public createdByErpDisableForm() {\n if (this.agenda && this.agenda.createdByErp) {\n this.createdByErp = true;\n this.formGroup.get('filial').disable();\n this.formGroup.get('produto').disable();\n this.formGroup.get('derivacao').disable();\n if (!!this.formGroup.get(\"transportadora\").value) {\n this.formGroup.get('transportadora').disable();\n }\n }\n }\n\n private configureForm() {\n this.valueChanges(this.formGroup, \"filial\", this.onFilialValueChange);\n const getFilterQueryProduto = (value: any) => `produto.id eq '${value.id}' and situacao eq 'ATIVO'`;\n this.checkValuesChanges(this.formGroup, \"produto\", \"derivacao\", this.derivacaoService, getFilterQueryProduto,\n ['codigo', 'descricao'], (val) => Derivacao.fromDto(val), 10, true, true\n );\n\n (this.formGroup.get(\"fornecedores\") as FormArray).valueChanges\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(fornecedores => {\n if (!!fornecedores && fornecedores.length > 0) {\n this.formGroup.get(\"produto\").disable();\n this.formGroup.get(\"derivacao\").disable();\n } else {\n this.formGroup.get(\"produto\").enable();\n this.formGroup.get(\"derivacao\").enable();\n }\n })\n\n this.createdByErpDisableForm();\n this.formCarregado = true;\n }\n\n private getEmpresaFilial() {\n const planta = this.agenda.planta || { cnpj: [] };\n if (planta.cnpj.length !== 1) return;\n\n const filterQuery = `pessoa.cpfCnpj eq '${planta.cnpj[0]}'`;\n this.filialService.list({ filterQuery, page: 0, size: 10 })\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(({ contents }) => {\n if (contents.length === 1) {\n const filial = contents[0];\n const empresa = contents[0].empresa;\n filial.label = `${filial.codigo} - ${filial.nome}`;\n empresa.label = `${empresa.codigo} - ${empresa.nome}`;\n this.formGroup.get('empresa').setValue(empresa);\n this.formGroup.get('filial').setValue(filial);\n this.formGroup.get('filial').enable();\n this.formGroup.get('produto').enable();\n this.formGroup.get('ordemCompra').enable();\n }\n });\n }\n\n private checkValuesChanges(formGroup: FormGroup, formControlUpdated: string, formControlDependent: string, service: any, getFilterQuery: any,\n variables: any, dtoConverter: (val: any) => any, querySize: number = 1, isChangeValidators?: boolean, clearFormControlDependent?: boolean) {\n formGroup.get(formControlUpdated)\n .valueChanges\n .pipe(\n takeUntil(this.ngUnsubscribe),\n debounceTime(500),\n filter(value => {\n if (isChangeValidators) {\n formGroup.get(formControlDependent).setValidators(value ? Validators.required : Validators.nullValidator);\n }\n if (clearFormControlDependent) {\n formGroup.get(formControlDependent).setValue(null);\n }\n if (!value) {\n formGroup.get(formControlDependent).setValue(null);\n formGroup.get(formControlDependent).disable();\n return false;\n }\n return true;\n }),\n mergeMap((value: any) => {\n const filterQuery = getFilterQuery(value);\n return service.list({ filterQuery, page: 0, size: querySize });\n })\n )\n .subscribe(({ contents }) => {\n if (!contents || !contents.length || contents.length > 1) {\n return formGroup.get(formControlDependent).enable();\n }\n if (contents.length === 1) {\n contents[0].label = this.translate.instant(getLookupLabel(contents[0], variables, ' - ', true));\n formGroup.get(formControlDependent).setValue(dtoConverter(contents[0]));\n } \n\n if (contents.length > 1) {\n formGroup.get(formControlDependent).enable();\n } else {\n formGroup.get(formControlDependent).disable();\n }\n });\n }\n\n public onBlurChaveNotaFiscal() {\n if (this.verificaNotaFiscal.verificaSeNotaFiscalEstaDuplicada(this.chaveNotaFiscal, this.ordens, this.fornecedorNotasTokens)) {\n return;\n }\n\n this.removeNotaError();\n const value = this.chaveNotaFiscal;\n if (!!value) {\n this.loading = true;\n this.mensagemBuscandoNota();\n\n this.notaValidatorService.pesquisarDocumentoValidaNotaEmUso({\n filialId: (this.formGroup.get(\"filial\").value && this.formGroup.get(\"filial\").value.id) || null,\n chaveDocumento: value.trim() || \"\"\n }).pipe(\n takeUntil(this.ngUnsubscribe),\n finalize(() => this.loading = false)\n ).subscribe((response) => {\n this.adicionarNovaNota(response);\n });\n }\n }\n\n private valueChanges(formGroup: FormGroup, path: string, subscribe: any) {\n formGroup.get(path)\n .valueChanges\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(value => subscribe(value, formGroup));\n }\n\n /**PRODUTO DEPENDE DE FILIAL. ORDEM COMPRA DEPENDE DE FILIAL */\n private onFilialValueChange = (filial: Filial, formGroup: FormGroup) => {\n this.changeFormGroupValue(filial, \"produto\", formGroup);\n }\n\n private onFornecedorChange = (fornecedor: PessoaEndereco, formGroup: FormGroup) => {\n this.changeFormGroupValue(fornecedor, \"origemMercadoria\", formGroup);\n this.changeFormGroupValue(fornecedor, \"ordens\", formGroup);\n }\n\n private changeFormGroupValue(isAny: any, formControl: string, formGroup: any) {\n if (!isAny) {\n formGroup.get(formControl).setValue(undefined);\n formGroup.get(formControl).disable();\n return;\n }\n\n formGroup.get(formControl).enable();\n }\n\n public getRecebimentoOrdemCompra(agendaId: string) {\n this.loading = true;\n this.recebimentoOrdemCompraService.list({\n filterQuery: `agenda.id eq '${agendaId}'`,\n size: 1,\n page: 0\n })\n .pipe(takeUntil(this.ngUnsubscribe), finalize(() => this.loading = false))\n .subscribe(({ contents }) => {\n if (!contents.length) {\n this.formCarregado = true;\n return this.configureForm();\n }\n\n this.totalEixosContratados = contents[0].eixos || 0;\n this.totalEixosComposicao = contents[0].agenda && contents[0].agenda.veiculo \n ? contents[0].agenda.veiculo.eixos || 0 : 0;\n\n const recebimentoOrdemCompra: RecebimentoOrdemCompraDto = RecebimentoOrdemCompra.fromDto(contents[0]);\n this.formGroup.enable();\n this.formGroup.patchValue(recebimentoOrdemCompra);\n\n recebimentoOrdemCompra.fornecedores.forEach(fornecedor => {\n const form = this.getFornecedorForm(fornecedor);\n this.getFornecedores().push(form);\n\n fornecedor.ordens.forEach(ordemCompra => {\n const ordemCompraForm = this.getOrdemCompraForm(ordemCompra);\n this.getOrdensCompra(form).push(ordemCompraForm);\n ordemCompra.notas.forEach(nota => {\n const notaForm = this.getNotaForm(nota);\n this.getNotas(ordemCompraForm).push(notaForm);\n });\n });\n });\n this.configureForm();\n });\n }\n\n public onFilialLookupRequest(value: string) {\n const filterInput = this.getFilialSearchFields()\n .filter(({ type }) => isValidFilter(type, value))\n .reduce((a, { name, type }) => {\n if (type === FieldType.Integer) {\n return { ...a, [name]: value.replace(/\\D/, \"\") };\n }\n return { ...a, [name]: value };\n }, { cnpjs: this.agenda.planta.cnpj, pagina: { limit: 10, offset: 0 } } as PesquisarFiliaisInput);\n\n this.filialService\n .listFiliais(filterInput)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) =>\n this.filialLookupSuggestions = list.filiais.map((filial: any) => Filial.fromDto(filial))\n );\n }\n\n public onFilialSearchRequest(event: any) {\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const sort: SortMeta[] = multiSortMeta;\n const sortFormatted = !!(sort || []).length && { campo: sort[0].field, ordenacao: sort[0].order > 0 ? 'Asc' : 'Desc' };\n const filterInput = this.getFilialSearchFields()\n .filter(({ name }) => filterData[name] != undefined && filterData[name] != \"\")\n .reduce((a, { name, type }) => {\n const value = filterData[name];\n if (type === FieldType.Integer) {\n return { ...a, [name]: `${value}`.replace(/\\D/, \"\") };\n }\n return { ...a, [name]: value };\n }, { cnpjs: this.agenda.planta.cnpj, pagina: { limit: rows, offset: page, listaOrdenacao: sortFormatted ? [ { ...(sortFormatted) } ] : null } } as PesquisarFiliaisInput);\n\n this.filialService\n .listFiliais(filterInput)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.filialSearchGridData = list.filiais.map(Filial.fromDto);\n this.filialSearchTotalRecords = list.qtdTotalRegistros;\n });\n }\n\n /**FILTRA FORNECEDOR EQ TRUE */\n public onFornecedorLookupRequest(value: string) {\n onLookupRequest(this.fornecedorSearchFields, this.fornecedorLookupDisplayFields,\n this.fornecedorAdvancedDisplayFields, this.fornecedorLookupSeparator, this.pessoaService, \n value, ` fornecedor eq true `)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => this.fornecedorLookupSuggestions = list.contents);\n }\n\n public onFornecedorSearchRequest(event: any) {\n onSearchRequest(this.fornecedorSearchFields, this.fornecedorLookupDisplayFields,\n this.fornecedorAdvancedDisplayFields, this.fornecedorLookupSeparator, this.pessoaService, \n event, ` fornecedor eq true `)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.fornecedorSearchGridData = list.contents;\n this.fornecedorSearchTotalRecords = list.totalElements;\n });\n }\n\n /**FILTRA ORIGEM MERCADORIA PELO FORNECEDOR SELECIONADO */\n public onOrigemMercadoriaLookupRequest(fornecedorForm: FormGroup, value: string) {\n onLookupRequest(this.origemMercadoriaSearchFields, this.origemMercadoriaLookupDisplayFields,\n this.origemMercadoriaAdvancedDisplayFields, this.origemMercadoriaLookupSeparator, this.origemMercadoriaService, \n value, ` pessoa.id eq '${fornecedorForm.get(\"fornecedor\").value.id}' `)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.origemMercadoriaLookupSuggestions = list.contents;\n });\n }\n\n public onOrigemMercadoriaSearchRequest(fornecedorForm: FormGroup, event: any) {\n onSearchRequest(this.origemMercadoriaSearchFields, this.origemMercadoriaLookupDisplayFields,\n this.origemMercadoriaAdvancedDisplayFields, this.origemMercadoriaLookupSeparator, this.origemMercadoriaService, event,\n ` pessoa.id eq '${fornecedorForm.get(\"fornecedor\").value.id}' `)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.origemMercadoriaSearchGridData = list.contents;\n this.origemMercadoriaSearchTotalRecords = list.totalElements;\n });\n }\n\n /**FILTRA DERIVACAO PELO PRODUTO */\n public onDerivacaoLookupRequest(value: string) {\n onLookupRequest(this.derivacaoSearchFields, this.derivacaoLookupDisplayFields, this.derivacaoAdvancedDisplayFields,\n this.derivacaoLookupSeparator, this.derivacaoService, value,\n ` produto.id eq '${this.formGroup.get(\"produto\").value.id}' `)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.derivacaoLookupSuggestions = list.contents;\n });\n }\n\n public onDerivacaoSearchRequest(event: any) {\n onSearchRequest(this.derivacaoSearchFields, this.derivacaoLookupDisplayFields,\n this.derivacaoAdvancedDisplayFields, this.derivacaoLookupSeparator, this.derivacaoService, event,\n ` produto.id eq '${this.formGroup.get(\"produto\").value.id}' `)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.derivacaoSearchGridData = list.contents;\n this.derivacaoSearchTotalRecords = list.totalElements;\n });\n }\n\n public onOrdemCompraLookupRequest(fornecedorForm: FormGroup, value: string) {\n onLookupRequest(this.ordemCompraSearchFields, this.ordemCompraLookupDisplayFields, this.ordemCompraAdvancedDisplayFields,\n this.ordemCompraLookupSeparator, this.ordemCompraService, value,\n `filial.id eq '${this.formGroup.get(\"filial\").value.id}' and pessoa.id eq '${fornecedorForm.get(\"fornecedor\").value.id}'`)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.ordemCompraLookupSuggestions = list.contents;\n });\n }\n\n public onOrdemCompraSearchRequest(fornecedorForm: FormGroup, event: any) {\n onSearchRequest(this.ordemCompraSearchFields, this.ordemCompraLookupDisplayFields,\n this.ordemCompraAdvancedDisplayFields, this.ordemCompraLookupSeparator, this.ordemCompraService, event,\n `filial.id eq '${this.formGroup.get(\"filial\").value.id}' and pessoa.id eq '${fornecedorForm.get(\"fornecedor\").value.id}'`)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.ordemCompraSearchGridData = list.contents;\n this.ordemCompraSearchTotalRecords = list.totalElements;\n });\n }\n\n public addOrdemCompra(fornecedorForm: FormGroup) {\n this.dialogService\n .open(OrdemCompraFormComponent, {\n ...dialogConfig,\n header: 'Adicionar Ordem de Compra',\n data: {\n agenda: this.agenda,\n filial: this.formGroup.get(\"filial\").value,\n fornecedor: fornecedorForm.get(\"fornecedor\").value,\n ordens: fornecedorForm.get(\"ordens\").value,\n }\n })\n .onClose\n .pipe(takeUntil(this.ngUnsubscribe), filter(value => !!value))\n .subscribe((ordemCompra: any) => this.onOrdemCompraSaved(ordemCompra, fornecedorForm));\n }\n\n public onProdutoLookupRequest(value: string) {\n const filial = this.formGroup.get(\"filial\").value;\n const tipoAgendamento = this.agenda.tipoAgendamento;\n\n this.produtoService.listProdutos({\n pesquisa: value,\n empresaId: !!filial ? filial.empresa.id : null,\n filialId: !!filial ? filial.id : null,\n tipoAgendamentoId: !!tipoAgendamento ? tipoAgendamento.id : null,\n situacao: 'ATIVO',\n pagina: {\n limit: 100,\n offset: 0\n }\n })\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((res: any) => this.produtoLookupSuggestions = res.produtos.map(Produto.fromDto));\n }\n\n public onProdutoSearchRequest(event: any) {\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const sort: SortMeta[] = multiSortMeta;\n const sortFormatted = !!(sort || []).length && { campo: sort[0].field, ordenacao: sort[0].order > 0 ? 'Asc' : 'Desc' };\n const filterInput = this.getProdutoSearchFields()\n .filter(({ name }) => filterData[name] != undefined && filterData[name] != \"\")\n .reduce((a, { name, type }) => {\n const value = filterData[name];\n if (type === FieldType.Integer) {\n return { ...a, [name]: `${value}`.replace(/\\D/, \"\") };\n }\n return { ...a, [name]: value };\n }, { pagina: { limit: rows, offset: page, listaOrdenacao: sortFormatted ? [ { ...(sortFormatted) } ] : null } } as ProdutoParams);\n\n const filial = this.formGroup.get(\"filial\").value;\n const tipoAgendamento = this.agenda.tipoAgendamento;\n\n this.produtoService.listProdutos({\n ...filterInput,\n empresaId: !!filial ? filial.empresa.id : null,\n filialId: !!filial ? filial.id : null,\n situacao: 'ATIVO',\n tipoAgendamentoId: !!tipoAgendamento ? tipoAgendamento.id : null\n })\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((res: any) => {\n this.produtoSearchTotalRecords = res.qtdTotalRegistros;\n this.produtoSearchGridData = res.produtos.map(Produto.fromDto);\n });\n }\n\n public onSafraLookupRequest(value: string) {\n onLookupRequest(this.safraSearchFields, this.safraLookupDisplayFields,\n this.safraAdvancedDisplayFields, this.safraLookupSeparator, this.safraService, value)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.safraLookupSuggestions = list.contents;\n });\n }\n\n public onSafraSearchRequest(event: any) {\n onSearchRequest(this.safraSearchFields, this.safraLookupDisplayFields,\n this.safraAdvancedDisplayFields, this.safraLookupSeparator, this.safraService, event)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.safraSearchGridData = list.contents;\n this.safraSearchTotalRecords = list.totalElements;\n });\n }\n\n public onTransportadoraLookupRequest(value: string) {\n onLookupRequest(this.transportadoraSearchFields, this.transportadoraLookupDisplayFields, \n this.transportadoraAdvancedDisplayFields, this.transportadoraLookupSeparator, this.transportadoraService, value)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.transportadoraLookupSuggestions = list.contents;\n });\n }\n\n public onTransportadoraSearchRequest(event: any) {\n onSearchRequest(this.transportadoraSearchFields, this.transportadoraLookupDisplayFields, \n this.transportadoraAdvancedDisplayFields, this.transportadoraLookupSeparator, this.transportadoraService, event)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.transportadoraSearchGridData = list.contents;\n this.transportadoraSearchTotalRecords = list.totalElements;\n });\n }\n\n public setTransportadora(value: string) {\n if (value) {\n const cnpj = value.replace(/\\./g, '').replace(/\\//g, '').replace(/\\-/g, '');\n const filterQuery = `pessoa.cpfCnpj eq '${cnpj}'`;\n this.transportadoraService\n .list({ filterQuery, page: 0, size: 10 })\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(({ contents }) => {\n if (contents.length === 1) {\n contents[0].label = this.translate.instant(getLookupLabel(contents[0], ['codigo', 'pessoa.nome'], ' - ', true));\n this.formGroup.get('transportadora').setValue(contents[0]);\n }\n });\n }\n }\n\n public onSave(start?: boolean) {\n this.formGroup.get('agenda').setValue(this.agenda);\n \n if (this.formGroup.invalid) {\n return this.validateAllFormFields(this.formGroup);\n }\n\n if ((this.formGroup.get(\"fornecedores\") as FormArray).length <= 0) {\n this.erroFornecedores = true;\n return;\n }\n\n this.loading = true;\n\n if (this.isNew() || !this.enableRevalidation) {\n return this.saveAndInit(start);\n }\n\n this.erpProcessData = this.erpProcessService.builderErpProcessData(this.erpProcessData, this.formGroup);\n this.erpProcessService.changeDataErp(this.erpProcessData);\n return this.agendaService\n .checarRevalidacao(this.erpProcessData)\n .pipe(\n takeUntil(this.ngUnsubscribe),\n finalize(() => this.loading = false),\n )\n .subscribe((response: any) => {\n if (response.requerRevalidacao) {\n this.atualizaAgendaParaRejeitadoPorValidacao();\n }\n else {\n this.saveAndInit(start);\n }\n });\n }\n\n private atualizaAgendaParaRejeitadoPorValidacao() {\n this.confirmationService.confirm({\n header: this.translate.instant(\"yms.patio.agenda_revalidacao_title\"),\n message: this.translate.instant(\"yms.patio.agenda_revalidacao_message\"),\n accept: () => {\n this.hasChangeService.hasChangeSave(this.agenda.id);\n this.agenda.status = StatusAgenda.REJEITADO_POR_VALIDACAO;\n this.agenda.motorista = {id: this.erpProcessData.motoristaId};\n this.agenda.veiculo = {id: this.erpProcessData.veiculoId};\n this.agendaService\n .atualizarAgenda(this.agenda)\n .pipe(\n takeUntil(this.ngUnsubscribe),\n concatMap((_) => this.getSaveObservable()),\n finalize(() => this.loading = false),\n )\n .subscribe((_) => {\n this.successMessage();\n this.router.navigate([\"/chegada-veiculo\"], { relativeTo: this.route });\n });\n },\n reject: () => this.loading = false,\n });\n }\n\n private saveAndInit(start: boolean) {\n this.getSaveObservable()\n .pipe(\n takeUntil(this.ngUnsubscribe),\n finalize(() => this.loading = false),\n )\n .subscribe((value: any) => {\n this.formGroup.get(\"id\").setValue(value.id || null);\n this.successMessage();\n this.hasChangeService.hasChangeSave(this.agenda.id);\n if (start && this.saveAndInitButton) {\n this.saveAndInitButton.click();\n }\n });\n }\n\n private successMessage() {\n this.messageService.add({\n severity: \"success\",\n summary: this.translate.instant(\"saved_message_title\"),\n detail: this.translate.instant(\"saved_message_content\"),\n });\n }\n\n public isNew() {\n return !this.formGroup.value.id;\n }\n\n public addFornecedor(data?: any) {\n this.erroFornecedores = false;\n const fornecedor = this.getFornecedorForm(data);\n this.getFornecedores().push(fornecedor);\n return fornecedor;\n }\n\n public removeFornecedor(control: FormGroup) {\n this.confirmationService.confirm({\n header: this.translate.instant(\"yms.erp.remove_fornecedor_header\"),\n message: this.translate.instant(\"yms.erp.remove_fornecedor_message\"),\n accept: () => {\n const index = this.getFornecedores().controls.indexOf(control);\n this.getFornecedores().removeAt(index);\n }\n });\n }\n\n public getFornecedorForm(data: any = {}) {\n const formGroup = this.formBuilder.group({\n fornecedor: [data.fornecedor, Validators.required],\n origemMercadoria: [data.origemMercadoria],\n ordens: this.formBuilder.array([]),\n });\n\n this.valueChanges(formGroup, \"fornecedor\", this.onFornecedorChange);\n\n const getFilterQueryFornecedor = (value: any) => `pessoa.id eq '${value.id}'`;\n this.checkValuesChanges(\n formGroup, \"fornecedor\", \"origemMercadoria\", this.origemMercadoriaService,\n getFilterQueryFornecedor, ['codigo', 'endereco'], (val) => PessoaEndereco.fromDto(val), 10, false, true\n );\n\n return formGroup;\n }\n\n public getFornecedores() {\n return (this.formGroup.get(\"fornecedores\") as FormArray);\n }\n\n public getNotas(formGroup: FormGroup) {\n return (formGroup.get(\"notas\") as FormArray);\n }\n\n public addNota(formGroup: FormGroup) {\n this.dialogService.open(NotaFormComponent, {\n header: this.translate.instant(\"yms.erp.adicionar_nota\"),\n ...dialogConfig,\n data: {\n fornecedor: formGroup.get(\"fornecedor\").value,\n produto: this.formGroup.get(\"produto\").value,\n filial: this.formGroup.get(\"filial\").value,\n fornecedorNotasTokens: this.fornecedorNotasTokens,\n ordens: this.ordens,\n }\n })\n .onClose\n .pipe(takeUntil(this.ngUnsubscribe), filter(value => !!value))\n .subscribe(value => this.onNotaSaved(value, formGroup));\n }\n\n public removerNota(fornecedorForm: FormGroup, ordemCompraForm: FormGroup, notaForm: FormGroup) {\n this.confirmationService.confirm({\n header: this.translate.instant(\"yms.erp.remove_nota_header\"),\n message: this.translate.instant(\"yms.erp.remove_nota_message\"),\n accept: () => {\n const ordemCompraId = ordemCompraForm[\"value\"][\"ordemCompra\"][\"id\"];\n const index = this.getNotasFromOrdens(fornecedorForm, ordemCompraId).controls.indexOf(notaForm);\n this.getNotasFromOrdens(fornecedorForm, ordemCompraId).removeAt(index);\n\n const nota = notaForm[\"value\"];\n this.fornecedorNotasTokens.push({\n id: nota.chaveNotaFiscal,\n label: nota.numeroNotaFiscal\n });\n this.fornecedorNotas.push({\n chaveNotaFiscal: nota.chaveNotaFiscal,\n serieNotaFiscal: nota.serieNotaFiscal,\n serieLegalNotaFiscal: nota.serieLegalNotaFiscal,\n numeroNotaFiscal: nota.numeroNotaFiscal,\n });\n }\n });\n }\n\n public showButtons() {\n if (!this.agenda) {\n return false;\n }\n\n return [\n StatusAgenda.AGENDADO,\n StatusAgenda.AGUARDANDO_CONFIRMACAO,\n StatusAgenda.AGUARDANDO_CONFIRMACAO_SOLICITANTE,\n StatusAgenda.REJEITADO_POR_VALIDACAO\n ].includes(this.agenda.status as StatusAgenda);\n }\n\n public disableAdicionarNota() {\n if (this.ordemCompraSelecionado === null || this.ordemCompraSelecionado === undefined) {\n return true;\n }\n return false;\n }\n\n public removerOrdemCompra(fornecedorForm: FormGroup, ordemCompraForm: FormGroup) {\n this.confirmationService.confirm({\n header: this.translate.instant(\"yms.erp.remove_ordem_compra_header\"),\n message: this.translate.instant(\"yms.erp.remove_ordem_compra_message\"),\n accept: () => {\n const ordensCompraForm = this.getOrdensCompra(fornecedorForm);\n const index = ordensCompraForm.controls.indexOf(ordemCompraForm);\n ordensCompraForm.removeAt(index);\n }\n });\n }\n\n private onOrdemCompraSaved(ordemCompra: any, fornecedorForm: FormGroup) {\n const ordemCompraForm = this.getOrdemCompraForm({ ordemCompra : ordemCompra });\n this.getOrdensCompra(fornecedorForm).push(ordemCompraForm);\n this.getFornecedorByOrdemCompra(ordemCompra, fornecedorForm);\n }\n\n private getFornecedorByOrdemCompra(ordemCompra: OrdemCompraDto, fornecedorForm: FormGroup) {\n this.pessoaService.list({ size: 1, page: 0, filterQuery: `id eq '${ordemCompra.pessoa.id}'` })\n .pipe(\n takeUntil(this.ngUnsubscribe),\n map(({ contents }) => (contents || []).length && contents[0]),\n filter(value => !!value)\n )\n .subscribe(pessoa => {\n fornecedorForm.get(\"fornecedor\").setValue(Pessoa.fromDto(pessoa));\n });\n }\n\n getOrdensCompra(fornecedorForm: FormGroup) {\n this.ordens = fornecedorForm.get(\"ordens\");\n return fornecedorForm.get(\"ordens\") as FormArray;\n }\n\n public getNotasFromOrdens(fornecedorForm: AbstractControl, ordemCompraId: any) {\n let ordensFormSelecionado = null;\n const ordensCompraForm = fornecedorForm[\"controls\"][\"ordens\"][\"controls\"];\n\n for (let ordemCompraForm of ordensCompraForm) {\n if (ordemCompraForm[\"controls\"][\"ordemCompra\"][\"value\"].id === ordemCompraId) {\n ordensFormSelecionado = ordemCompraForm[\"controls\"][\"notas\"];\n }\n }\n\n return ordensFormSelecionado as FormArray;\n }\n\n public addFornecedorNotasTokenEmOrdemCompra(fornecedorForm: FormGroup, token: IToken) {\n if (this.ordemCompraSelecionado === null) {\n this.mensagemOrdemCompraNaoSelecionado();\n return;\n }\n\n const notas = this.fornecedorNotas.filter(fornecedorNota => fornecedorNota.chaveNotaFiscal === token.id);\n const notasForm = this.getNotasFromOrdens(fornecedorForm, this.ordemCompraSelecionado.id);\n if (notasForm !== null && notas[0] !== null) {\n notasForm.push(this.getNotaForm(notas[0]));\n }\n\n this.removeFornecedorNotasTokenDaOrdemCompra(token);\n }\n\n public removeFornecedorNotasTokenDaOrdemCompra(token: IToken) {\n this.fornecedorNotasTokens.splice(this.fornecedorNotasTokens.indexOf(token), 1);\n this.fornecedorNotas = this.fornecedorNotas.filter(fornecedorNota => fornecedorNota.chaveNotaFiscal !== token.id);\n }\n\n private getOrdemCompraForm(data: any = {}) {\n return this.formBuilder.group({\n ordemCompra: [data.ordemCompra, Validators.required],\n notas: this.formBuilder.array([]),\n });\n }\n\n private getNotaForm(data: any = {}) {\n return this.formBuilder.group({\n chaveNotaFiscal: [data.chaveNotaFiscal],\n serieNotaFiscal: [data.serieNotaFiscal],\n serieLegalNotaFiscal: [data.serieLegalNotaFiscal],\n numeroNotaFiscal: [data.numeroNotaFiscal],\n });\n }\n\n private mensagemOrdemCompraNaoSelecionado() {\n this.addMessage(\"error\", \"Ordem de compra não selecionado\", \"Nenhum ordem de compra foi selecionado!\");\n }\n\n private onNotaSaved(value: any, fornecedorForm: FormGroup) {\n if (this.ordemCompraSelecionado === null) {\n this.mensagemOrdemCompraNaoSelecionado();\n return;\n }\n\n if (!value.addFornecedor) {\n const notasForm = this.getNotasFromOrdens(fornecedorForm, this.ordemCompraSelecionado.id);\n if (notasForm !== null) {\n notasForm.push(this.getNotaForm(value));\n }\n return;\n }\n\n const existsFornecedor = (this.formGroup.get(\"fornecedores\") as FormArray).controls.find((form) => (form.value.fornecedor || {id: undefined}).id === value.fornecedor.id);\n const { infoNota } = value;\n const notaForm = this.getNotaForm({ \n chaveNotaFiscal: infoNota.chave,\n serieNotaFiscal: infoNota.serie,\n serieLegalNotaFiscal: infoNota.serieLegal,\n numeroNotaFiscal: infoNota.numero,\n });\n\n if (!!existsFornecedor) {\n const notasForm = this.getNotasFromOrdens(existsFornecedor, this.ordemCompraSelecionado.id);\n notasForm.push(notaForm);\n this.disableFields(existsFornecedor, \"fornecedor\", \"origemMercadoria\");\n } else if (!fornecedorForm.get(\"fornecedor\").value) {\n fornecedorForm.get(\"fornecedor\").setValue(Pessoa.fromDto(value.fornecedor));\n fornecedorForm.get(\"origemMercadoria\").setValue(PessoaEndereco.fromDto(value.origemMercadoria));\n const notasForm = this.getNotasFromOrdens(fornecedorForm, this.ordemCompraSelecionado.id);\n notasForm.push(notaForm);\n this.disableFields(fornecedorForm, \"fornecedor\", \"origemMercadoria\");\n } else {\n const fornecedor = this.addFornecedor({ fornecedor: Pessoa.fromDto(value.fornecedor), origemMercadoria: PessoaEndereco.fromDto(value.origemMercadoria) });\n const notasForm = this.getNotasFromOrdens(fornecedor, this.ordemCompraSelecionado.id);\n notasForm.push(notaForm);\n this.disableFields(fornecedor, \"fornecedor\", \"origemMercadoria\");\n }\n }\n\n private addMessage(severity: string, summary: string, detail: string) {\n this.messageService.add({\n severity,\n summary: this.translate.instant(summary),\n detail: this.translate.instant(detail),\n });\n }\n\n private getSaveObservable() {\n const value = this.formGroup.getRawValue();\n value.empresa = value.filial.empresa;\n const recebimentoOrdemCompraDto = RecebimentoOrdemCompra.toDto(value);\n\n if (this.isNew() && !value.id) {\n return this.recebimentoOrdemCompraService.insert(recebimentoOrdemCompraDto);\n } else {\n return this.recebimentoOrdemCompraService.update(this.formGroup.value.id, recebimentoOrdemCompraDto);\n }\n }\n\n private getFormGroup() {\n return this.formBuilder.group({\n id: [undefined],\n filial: [{ value: undefined, disabled: false }, Validators.required],\n fornecedores: this.formBuilder.array([]),\n produto: [{ value: undefined, disabled: true }],\n derivacao: [{ value: undefined, disabled: true }],\n transportadora: [undefined],\n safra: [undefined],\n agenda: [{ value: undefined, disabled: true }, Validators.required],\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) {\n control.markAsDirty({ onlySelf: true });\n } else if (control instanceof FormGroup){ \n this.validateAllFormFields(control);\n } else if (control instanceof FormArray) {\n control.controls.forEach((form: FormGroup) => this.validateAllFormFields(form));\n }\n });\n }\n\n private adicionarNovaNota(response: PesquisarDocumentoResponse) {\n const values = (response.documentos || []).length ? response.documentos[0] : undefined;\n if (!values) {\n return;\n }\n\n const fornecedor = Pessoa.fromDto(values.fornecedor);\n const origemMercadoria = PessoaEndereco.fromDto(values.origemMercadoria);\n\n const fornecedorForm = this.getFornecedores().controls.find(({ value }) => value.fornecedor.id === fornecedor.id) as FormGroup;\n if (!fornecedorForm) {\n this.addFornecedor({ fornecedor, origemMercadoria });\n this.addFornecedorNotasToken(values);\n return;\n }\n\n this.addFornecedorNotasToken(values);\n }\n\n private addFornecedorNotasToken(value: any) {\n this.fornecedorNotasTokens.push({\n id: this.chaveNotaFiscal,\n label: value.numero\n });\n \n this.fornecedorNotas.push({\n chaveNotaFiscal: this.chaveNotaFiscal,\n serieNotaFiscal: value.serie,\n serieLegalNotaFiscal: value.serieLegal,\n numeroNotaFiscal: value.numero,\n });\n\n this.chaveNotaFiscal = undefined;\n this.loading = false;\n }\n\n private removeNotaError() {\n this.erroChaveNota = false;\n }\n\n private addNotaError() {\n this.erroChaveNota = true;\n }\n\n private mensagemBuscandoNota() {\n this.messageService.add({\n severity: 'info',\n summary: this.translate.instant(\"yms.erp.nota_search_summary\"),\n detail: this.translate.instant(\"yms.erp.nota_search_detail\"),\n life: 5000\n });\n }\n\n private disableFields(formGroup: AbstractControl, ...keys: string[]) {\n keys.forEach(key => formGroup.get(key).disable());\n }\n\n private getDerivacaoSearchFields() {\n return [\n new FormField({\n name: \"descricao\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.derivacao_descricao\")\n }),\n new FormField({\n name: \"codigo\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.derivacao_codigo\")\n }),\n ];\n }\n\n private getFilialSearchFields() {\n return [\n new FormField({\n name: \"nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.filial_nome\")\n }),\n new FormField({\n name: \"codigo\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.filial_codigo\")\n })\n ];\n }\n\n private getFilialSearchGridFields() {\n return [\n new FormField({\n name: \"nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.filial_nome\")\n }),\n new FormField({\n name: \"codigo\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.filial_codigo\")\n }),\n new FormField({\n name: \"empresa.nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.empresa\")\n })\n ];\n }\n\n private getFornecedorSearchFields() {\n return [\n new FormField({\n name: \"nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.pessoa_nome\")\n }),\n new FormField({\n name: \"codigo\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.pessoa_codigo\")\n }),\n new FormField({\n name: \"cpfCnpj\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.pessoa_cpfCnpj\")\n }),\n ];\n }\n\n private getOrigemMercadoriaSearchFields() {\n return [\n new FormField({\n name: \"codigo\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.pessoa_endereco_codigo\")\n }),\n new FormField({\n name: \"numero\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.pessoa_endereco_numero\")\n }),\n new FormField({\n name: \"endereco\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.pessoa_endereco_endereco\")\n }),\n ];\n }\n\n private getProdutoSearchFields() {\n return [\n new FormField({\n name: \"descricao\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.produto_descricao\")\n }),\n new FormField({\n name: \"codigo\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.produto_codigo\")\n }),\n ];\n }\n\n private getSafraSearchFields() {\n return [\n new FormField({\n name: \"codigo\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.safra_codigo\")\n }),\n new FormField({\n name: \"descricao\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.safra_descricao\")\n })\n ];\n }\n\n private getSafraSearchGridFields() {\n return [\n new FormField({\n name: \"codigo\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.safra_codigo\")\n }),\n new FormField({\n name: \"descricao\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.safra_descricao\")\n }),\n new FormField({\n name: \"empresa.nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.safra_empresa\")\n })\n ];\n }\n\n private getTransportadoraSearchFields() {\n return [\n new FormField({\n name: \"codigo\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.transportadora_codigo\")\n }),\n new FormField({\n name: \"pessoa.nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.transportadora_descricao\")\n }),\n new FormField({\n name: \"pessoa.cpfCnpj\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.transportadora_cnpj\")\n })\n ];\n }\n\n private getTransportadoraSearchGridFields() {\n return [\n new FormField({\n name: \"codigo\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.transportadora_codigo\")\n }),\n new FormField({\n name: \"pessoa.nome\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.pessoa_nome\")\n }),\n new FormField({\n name: \"pessoa.cpfCnpj\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.transportadora_cnpj\")\n })\n ];\n }\n\n private getOrdemCompraFields() {\n return [\n new FormField({\n name: \"codigo\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.ordem_compra_codigo\")\n }),\n new FormField({\n name: \"empresa.nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.empresa\")\n }),\n new FormField({\n name: \"filial.nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.filial\")\n }),\n ];\n }\n\n private getOrdemCompraGridFields() {\n return [\n new FormField({\n name: \"codigo\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.ordem_compra_codigo\")\n }),\n new FormField({\n name: \"empresa.nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.empresa\")\n }),\n new FormField({\n name: \"filial.nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.filial\")\n }),\n new FormField({\n name: \"pessoa.nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.pessoa_nome\")\n }),\n ];\n }\n\n private onChangeRevalidation = (_) => {\n if (this.erpProcessData && this.formGroup) {\n this.erpProcessData = this.erpProcessService.builderErpProcessData(this.erpProcessData, this.formGroup);\n this.erpProcessService.changeData(this.erpProcessData);\n }\n return;\n }\n\n}\n","import { Component, Input, AfterViewInit } from \"@angular/core\";\nimport { Subject, throwError, of } from \"rxjs\";\nimport { takeUntil, switchMap, finalize } from \"rxjs/operators\";\nimport { RecebimentoOrdemCompra } from \"../../core/entities/recebimento-ordem-compra/recebimento-ordem-compra\";\nimport { RecebimentoOrdemCompraService } from \"../../core/entities/recebimento-ordem-compra/recebimento-ordem-compra.service\";\nimport { RecebimentoOrdemCompraDto } from \"../../core/entities/recebimento-ordem-compra/recebimento-ordem-compra-dto\";\n\n@Component({\n selector: 'recebimento-ordem-compra-info',\n template: `\n <div *sLoadingState=\"loading\" style=\"padding: 20px;\">\n <div class=\"detail-pane\" *ngIf=\"agenda\">\n\n <div class=\"detail-span\">\n <span class=\"title\">{{'yms.erp.recebimento_ordem_compra_filial' | translate}}</span>\n <span class=\"data\">{{recebimentoOrdemCompra?.filial?.codigo}} - {{recebimentoOrdemCompra?.filial?.nome}}</span>\n </div>\n\n <div class=\"detail-span\">\n <span class=\"title\">{{'yms.erp.recebimento_ordem_compra_produto' | translate}}</span>\n <span class=\"data\">{{recebimentoOrdemCompra?.produto?.descricao}}</span>\n </div>\n\n <div class=\"detail-span\">\n <span class=\"title\">{{'yms.erp.recebimento_ordem_compra_derivacao' | translate}}</span>\n <span class=\"data\">{{recebimentoOrdemCompra?.derivacao?.descricao}}</span>\n </div>\n\n <div class=\"detail-span\">\n <span class=\"title\">{{'yms.erp.recebimento_ordem_compra_transportadora' | translate}}</span>\n <span class=\"data\">{{recebimentoOrdemCompra?.transportadora?.placaVeiculo}}</span>\n </div>\n\n <div class=\"detail-span\">\n <span class=\"title\">{{'yms.erp.recebimento_ordem_compra_safra' | translate}}</span>\n <span class=\"data\">{{recebimentoOrdemCompra?.safra?.descricao}}</span>\n </div>\n </div>\n <div *ngFor=\"let fornecedor of recebimentoOrdemCompra?.fornecedores\">\n <div class=\"separator\"></div>\n <h3>Fornecedor - {{fornecedor?.fornecedor?.nome}}</h3>\n <div class=\"detail-pane\">\n <div class=\"detail-span\" *ngFor=\"let ordemCompra of fornecedor.ordens\">\n <span class=\"title\">{{'yms.erp.recebimento_ordem_compra_ordemcompra' | translate}}</span>\n <span class=\"data\">{{ ordemCompra.ordemCompra?.codigo }}</span>\n </div>\n </div>\n\n <div>\n <h4>Ordens de Compra</h4>\n <p-accordion>\n <p-accordionTab *ngFor=\"let ordemCompra of fornecedor.ordens\">\n <p-header>\n Ordem de compra {{ ordemCompra?.ordemCompra?.numero }}, Filial {{ ordemCompra?.ordemCompra?.filial?.codigo }}\n </p-header>\n\n <div *ngFor=\"let nota of ordemCompra.notas\">\n <div class=\"detail-pane\">\n <div class=\"detail-span\">\n <span class=\"title\">Chave nota fiscal</span>\n <span class=\"data\">{{ nota?.chaveNotaFiscal }}</span>\n </div>\n <div class=\"detail-span\">\n <span class=\"title\">Serie nota fiscal</span>\n <span class=\"data\">{{ nota?.serieNotaFiscal }}</span>\n </div>\n <div class=\"detail-span\">\n <span class=\"title\">Serie legal nota fiscal</span>\n <span class=\"data\">{{ nota?.serieLegalNotaFiscal }}</span>\n </div>\n <div class=\"detail-span\">\n <span class=\"title\">Número nota fiscal</span>\n <span class=\"data\">{{ nota?.numeroNotaFiscal }}</span>\n </div>\n </div>\n <hr />\n </div>\n </p-accordionTab>\n </p-accordion>\n </div>\n </div>\n </div>\n `,\n styleUrls: ['./recebimento-ordem-compra-info.component.scss']\n})\nexport class RecebimentoOrdemCompraInfoComponent implements AfterViewInit {\n\n @Input() agenda: any;\n\n recebimentoOrdemCompra: RecebimentoOrdemCompra;\n loading = true;\n\n private readonly unsubscribe$: Subject<void>;\n\n constructor(private recebimentoOrdemCompraService: RecebimentoOrdemCompraService) {\n this.unsubscribe$ = new Subject();\n }\n\n ngAfterViewInit() {\n this.recebimentoOrdemCompraService\n .list({\n filterQuery: `agenda.id eq '${this.agenda.id}'`,\n page: 0,\n size: 1\n })\n .pipe(\n takeUntil(this.unsubscribe$),\n switchMap(({ contents }) => {\n if (!contents.length) {\n return throwError(\"Recebimento Ordem de Compra não encontrado.\");\n }\n return of(contents[0]);\n }),\n finalize(() => this.loading = false)\n )\n .subscribe((recebimentoOrdemCompra: RecebimentoOrdemCompraDto) => this.recebimentoOrdemCompra = RecebimentoOrdemCompra.fromDto(recebimentoOrdemCompra));\n }\n}","import * as _moment from \"moment\";\nconst moment = _moment\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { ContratoCompraDto } from \"./contrato-compra-dto\";\nimport { Empresa } from \"../empresa/empresa\";\nimport { Pessoa } from \"../pessoa/pessoa\";\nimport { Filial } from \"../filial/filial\";\nimport { Safra } from \"../safra/safra\";\nimport { ContratoCompraItem } from \"../contrato-compra-item/contrato-compra-item\";\nimport { Situacao } from \"../../enums/situacao\";\nimport { SituacaoAprovacao } from \"../../enums/situacao-aprovacao\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport class ContratoCompra {\n public id?: string;\n public empresa: Empresa;\n public pessoa: Pessoa;\n public filial: Filial;\n public numero: number;\n public situacao: Situacao;\n public numeroAprovacao?: number;\n public situacaoAprovacao?: SituacaoAprovacao;\n public dataEmissao: Date;\n public safra?: Safra;\n public contratoPrioritario?: boolean;\n public dataInicioVigencia?: Date;\n public dataFimVigencia?: Date;\n public itens?: ContratoCompraItem[];\n public createdBy?: string;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n public static fromDto(contratoCompraDto: ContratoCompraDto, originEntity?: string): ContratoCompra {\n const model: any = { ...contratoCompraDto };\n\n model.dataEmissao = model.dataEmissao && moment(model.dataEmissao).toDate();\n model.dataInicioVigencia = model.dataInicioVigencia && moment(model.dataInicioVigencia).toDate();\n model.dataFimVigencia = model.dataFimVigencia && moment(model.dataFimVigencia).toDate();\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n model.label = `Número: ${model.numero}, Filial: ${model.filial.codigo}`;\n\n if (originEntity !== \"Empresa\" && model.empresa) model.empresa = Empresa.fromDto(model.empresa, \"ContratoCompra\");\n if (originEntity !== \"Pessoa\" && model.pessoa) model.pessoa = Pessoa.fromDto(model.pessoa, \"ContratoCompra\");\n if (originEntity !== \"Filial\" && model.filial) model.filial = Filial.fromDto(model.filial, \"ContratoCompra\");\n if (originEntity !== \"Safra\" && model.safra) model.safra = Safra.fromDto(model.safra, \"ContratoCompra\");\n if (originEntity !== \"ContratoCompraItem\" && model.itens)\n model.itens = Object.values(model.itens).map((item: any) => ContratoCompraItem.fromDto(item, \"ContratoCompra\"));\n\n return model as ContratoCompra;\n }\n\n public static toDto(contratoCompra: ContratoCompra, originEntity?: string): ContratoCompraDto {\n const dto: any = { ...contratoCompra };\n\n dto.dataEmissao = dto.dataEmissao && moment(dto.dataEmissao).format(\"YYYY-MM-DD\");\n dto.dataInicioVigencia = dto.dataInicioVigencia && moment(dto.dataInicioVigencia).format(\"YYYY-MM-DD\");\n dto.dataFimVigencia = dto.dataFimVigencia && moment(dto.dataFimVigencia).format(\"YYYY-MM-DD\");\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n if (originEntity !== \"Empresa\" && dto.empresa) dto.empresa = Empresa.toDto(dto.empresa, \"ContratoCompra\");\n if (originEntity !== \"Pessoa\" && dto.pessoa) dto.pessoa = Pessoa.toDto(dto.pessoa, \"ContratoCompra\");\n if (originEntity !== \"Filial\" && dto.filial) dto.filial = Filial.toDto(dto.filial, \"ContratoCompra\");\n if (originEntity !== \"Safra\" && dto.safra) dto.safra = Safra.toDto(dto.safra, \"ContratoCompra\");\n if (originEntity !== \"ContratoCompraItem\" && dto.itens)\n dto.itens = Object.values(dto.itens)\n .map((item: any) => ContratoCompraItem.toDto(item, \"ContratoCompra\"))\n .filter(item => Object.keys(item).length);\n\n return dto;\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import * as _moment from \"moment\";\nconst moment = _moment\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { ContratoCompraItemDto } from \"./contrato-compra-item-dto\";\nimport { ContratoCompra } from \"../contrato-compra/contrato-compra\";\nimport { Produto } from \"../produto/produto\";\nimport { Situacao } from \"../../enums/situacao\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport class ContratoCompraItem {\n public id?: string;\n public contrato?: ContratoCompra;\n public sequencia: number;\n public sku?: Produto;\n public situacao: Situacao;\n public quantidadeContratada: number;\n public quantidadeUtilizada?: number;\n public quantidadeEncerrada?: number;\n public dataCompetencia: Date;\n public createdBy?: string;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n public static fromDto(contratoCompraItemDto: ContratoCompraItemDto, originEntity?: string): ContratoCompraItem {\n const model: any = { ...contratoCompraItemDto };\n model.sku = model.sku || {};\n\n model.dataCompetencia = model.dataCompetencia && moment(model.dataCompetencia).toDate();\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n model.label = `${model.sequencia} - ${model.sku.descricao} - ${model.sku.codigo}`\n\n if (originEntity !== \"ContratoCompra\" && model.contrato)\n model.contrato = ContratoCompra.fromDto(model.contrato, \"ContratoCompraItem\");\n if (originEntity !== \"Produto\" && model.sku) model.sku = Produto.fromDto(model.sku, \"ContratoCompraItem\");\n\n return model as ContratoCompraItem;\n }\n\n public static toDto(contratoCompraItem: ContratoCompraItem, originEntity?: string): ContratoCompraItemDto {\n const dto: any = { ...contratoCompraItem };\n\n dto.dataCompetencia = dto.dataCompetencia && moment(dto.dataCompetencia).format(\"YYYY-MM-DD\");\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n if (originEntity !== \"ContratoCompra\" && dto.contrato) dto.contrato = ContratoCompra.toDto(dto.contrato, \"ContratoCompraItem\");\n if (originEntity !== \"Produto\" && dto.sku) dto.sku = Produto.toDto(dto.sku, \"ContratoCompraItem\");\n\n return dto;\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { Component, OnInit, OnDestroy } from \"@angular/core\";\nimport { FormGroup, FormBuilder, FormArray, Validators, FormControl } from \"@angular/forms\";\nimport { DynamicDialogRef, DynamicDialogConfig } from \"primeng/api\";\nimport { FormField, FieldType } from \"@seniorsistemas/angular-components\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil, map } from \"rxjs/operators\";\nimport * as _moment from \"moment\";\nimport { ContratoCompraItem } from \"../../core/entities/contrato-compra-item/contrato-compra-item\";\nimport { ContratoCompraService } from \"../../core/entities/contrato-compra/contrato-compra.service\";\nimport { ContratoCompraItemService } from \"../../core/entities/contrato-compra-item/contrato-compra-item.service\";\nimport { ContratoCompra } from \"../../core/entities/contrato-compra/contrato-compra\";\nimport { Agenda } from \"../../core/entities/agenda/agenda\";\nimport { Filial } from \"../../core/entities/filial/filial\";\nimport { Pessoa } from \"../../core/entities/pessoa/pessoa\";\nimport { Produto } from \"../../core/entities/produto/produto\";\nconst moment = _moment;\n\n@Component({\n templateUrl: './contrato-form.component.html'\n})\nexport class ContratoFormComponent implements OnInit, OnDestroy {\n public formGroup: FormGroup;\n\n public contratoCompraLookupSuggestions: ContratoCompra[];\n public contratoCompraLookupDisplayFields = [\"numero\"];\n public contratoCompraAdvancedDisplayFields = [\"id\", \"numero\", \"numeroAprovacao\", \"situacaoAprovacao\", \"dataEmissao\", \"contratoPrioritario\", \"dataInicioVigencia\", \"dataFimVigencia\"];\n public contratoCompraLookupSeparator = \" - \";\n public contratoCompraSearchFields: FormField[];\n public contratoCompraSearchGridFields: FormField[];\n public contratoCompraSearchGridData: ContratoCompra[];\n public contratoCompraSearchTotalRecords: number;\n\n public contratoCompraItensLookupSuggestions: ContratoCompraItem[];\n public contratoCompraItensLookupDisplayFields = [\"sequencia\", \"sku.descricao\"];\n public contratoCompraItensAdvancedDisplayFields = [\"id\", \"sequencia\", \"sku.*\", \"situacao\", \"quantidadeContratada\", \"quantidadeUtilizada\", \"quantidadeEncerrada\", \"dataCompetencia\"];\n public contratoCompraItensLookupSeparator = \" - \";\n public contratoCompraItensSearchFields: FormField[];\n public contratoCompraItensSearchGridFields: FormField[];\n public contratoCompraItensSearchGridData: ContratoCompraItem[];\n public contratoCompraItensSearchTotalRecords: number;\n\n private readonly ngUnsubscribe = new Subject<void>();\n private agenda: Agenda;\n private filial: Filial;\n private fornecedor: Pessoa;\n private produto: Produto;\n private contratos: string[];\n\n constructor(\n private dialogRef: DynamicDialogRef,\n private dialogConfig: DynamicDialogConfig,\n private contratoCompraService: ContratoCompraService,\n private contratoCompraItemService: ContratoCompraItemService,\n private translate: TranslateService,\n private fb: FormBuilder\n ) { }\n\n ngOnInit() {\n const { data } = this.dialogConfig;\n this.agenda = data.agenda;\n this.filial = data.filial;\n this.fornecedor = data.fornecedor;\n this.produto = data.produto;\n this.contratos = data.contratos.map(({ contrato }: any) => !!contrato ? contrato.id : undefined).filter((val: any) => !!val);\n\n this.formGroup = this.getForm();\n \n this.contratoCompraSearchFields = this.getContratoCompraFields();\n this.contratoCompraSearchGridFields = this.getContratoCompraGridFields();\n\n this.contratoCompraItensSearchFields = this.getContratoCompraItensFields();\n this.contratoCompraItensSearchGridFields = this.getContratoCompraItensGridFields();\n }\n\n ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n public onContratoCompraLookupRequest(value: string) {\n const sort = this.contratoCompraLookupDisplayFields.map((field: any) => ({ field, order: 'Asc' }))[0];\n\n const filter: any = {\n numero: +value.replace(/\\D/g, \"\")\n };\n\n const filial = this.filial;\n if (filial && filial.empresa && filial.empresa.id) {\n filter.empresaId = filial.empresa.id;\n }\n\n this.contratoCompraService\n .listContratosCompra({\n ...filter,\n pessoaId: (this.fornecedor || {id: undefined}).id,\n produtoId: (this.produto || {id: undefined}).id,\n filialId: (filial || {id: undefined}).id,\n tipoAgendamentoId: this.agenda && this.agenda.tipoAgendamento ? this.agenda.tipoAgendamento.id : null,\n contratosSelecionados: this.contratos,\n pagina: {\n limit: 30,\n offset: 0,\n listaOrdenacao: [\n {\n campo: sort.field,\n ordenacao: sort.order\n }\n ]\n }\n })\n .subscribe((list: any) => {\n this.contratoCompraLookupSuggestions = list.contents.map(ContratoCompra.fromDto);\n });\n }\n\n public onContratoCompraSearchRequest(event: any) {\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const filter = this.getContratoCompraFields()\n .filter(({ name }) => filterData[name] != undefined && filterData[name] != \"\")\n .reduce((a, b: any) => {\n return {\n ...a,\n [b.name]: filterData[b.name]\n };\n }, {} as any);\n\n const filial = this.filial;\n if (filial && filial.empresa && filial.empresa.id) {\n filter.empresaId = filial.empresa.id;\n }\n\n filter.dataEmissao = filter.dataEmissao && moment(filter.dataEmissao).format(\"YYYY-MM-DD\");\n const sort = (multiSortMeta || []).length ? { field: multiSortMeta[0].field, order: multiSortMeta[0].order === 1 ? 'Asc' : 'Desc' } : { field: 'numero', order: 'Asc' };\n\n this.contratoCompraService\n .listContratosCompra({\n ...filter,\n pessoaId: (this.fornecedor || {id: undefined}).id,\n produtoId: (this.produto || {id: undefined}).id,\n filialId: (filial || {id: undefined}).id,\n tipoAgendamentoId: this.agenda && this.agenda.tipoAgendamento ? this.agenda.tipoAgendamento.id : null,\n contratosSelecionados: this.contratos,\n pagina: {\n limit: rows,\n offset: page,\n listaOrdenacao: [\n {\n campo: sort.field,\n ordenacao: sort.order\n }\n ]\n }\n })\n .subscribe((list: any) => {\n this.contratoCompraSearchGridData = list.contents.map(ContratoCompra.fromDto);\n this.contratoCompraSearchTotalRecords = list.totalElements;\n });\n }\n\n public onContratoCompraItensLookupRequest(value: any) {\n const sort = this.contratoCompraItensLookupDisplayFields.map((field: any) => ({ field, order: 1 }));\n\n const filialId = this.filial.id;\n const contratoId = this.formGroup.get(\"contrato\").value.id;\n\n const params = {\n contratoId,\n filialId,\n sequencia: !isNaN(value) ? value : null,\n tipoAgendamentoId: this.agenda && this.agenda.tipoAgendamento ? this.agenda.tipoAgendamento.id : null,\n pagina: this.getRecPagina(0, 10, sort)\n }\n\n this.contratoCompraItemService\n .pesquisarItensContratoCompra(params)\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: this.contratoCompraItensLookupDisplayFields\n .map(field => {\n if (field.indexOf(\".\") > 0) return this.getProp(item, field);\n return item[field];\n })\n .join(this.contratoCompraItensLookupSeparator),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.contratoCompraItensLookupSuggestions = list.contents.map(ContratoCompraItem.fromDto);\n });\n }\n\n public onContratoCompraItensSearchRequest(event: any) {\n const { first, rows, multiSortMeta, filterData } = event;\n const sort = multiSortMeta;\n\n const filialId = this.filial.id;\n const contratoId = this.formGroup.get(\"contrato\").value.id;\n\n const params = {\n contratoId,\n filialId,\n sequencia: filterData['sequencia'],\n tipoAgendamentoId: this.agenda && this.agenda.tipoAgendamento ? this.agenda.tipoAgendamento.id : null,\n pagina: this.getRecPagina(first, rows, sort)\n }\n\n this.contratoCompraItemService\n .pesquisarItensContratoCompra(params)\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: this.contratoCompraItensLookupDisplayFields\n .map(field => {\n if (field.indexOf(\".\") > 0) return this.getProp(item, field);\n return item[field];\n })\n .join(this.contratoCompraItensLookupSeparator),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.contratoCompraItensSearchGridData = list.contents.map(ContratoCompraItem.fromDto);\n this.contratoCompraItensSearchTotalRecords = list.totalElements;\n });\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 public getRecPagina(first: number, rows: number, sort: any) {\n const page = first / rows;\n const orderBy = sort && sort.length \n ? sort.map((s: any) => ({ campo: s.field, ordenacao: s.order === 1 ? 'Asc' : 'Desc' })) \n : [];\n\n return {\n offset: page,\n limit: rows,\n listaOrdenacao: orderBy\n }\n }\n\n public addItemContrato() {\n this.getItensForm().push(this.getItemForm());\n }\n\n public getItensForm(): FormArray {\n return this.formGroup.get(\"itens\") as FormArray;\n }\n\n public save() {\n if (!this.formGroup.valid) return this.validateAllFormFields(this.formGroup);\n this.close({ contrato: this.formGroup.value });\n }\n\n public close(data?: any) {\n this.dialogRef.close(data);\n }\n\n private getForm() {\n return this.fb.group({\n contrato: [undefined, Validators.required],\n itens: this.fb.array([])\n });\n }\n\n private getItemForm() {\n return this.fb.group({\n item: [undefined, Validators.required],\n quantidade: [1]\n });\n }\n\n private getContratoCompraFields() {\n return [\n new FormField({\n name: \"filialContrato\",\n label: this.translate.instant(\"yms.erp.filial_codigo\"),\n type: FieldType.Integer\n }),\n new FormField({\n name: \"numero\",\n label: this.translate.instant(\"yms.erp.contrato_compra_numero\"),\n type: FieldType.Integer\n })\n ];\n }\n\n private getContratoCompraGridFields() {\n return [\n new FormField({\n name: \"numero\",\n label: this.translate.instant(\"yms.erp.contrato_compra_numero\"),\n type: FieldType.Integer\n }),\n new FormField({\n name: \"filial.pessoa.nomeFantasia\",\n label: this.translate.instant(\"yms.erp.contrato_compra_filial\"),\n type: FieldType.Integer\n }),\n new FormField({\n name: \"filial.pessoa.codigo\",\n label: this.translate.instant(\"yms.erp.filial_codigo\"),\n type: FieldType.Integer\n }),\n new FormField({\n name: \"dataEmissao\",\n label: this.translate.instant(\"yms.erp.contrato_compra_data_emissao\"),\n type: FieldType.Date\n }),\n ];\n }\n\n private getContratoCompraItensFields() {\n return [\n new FormField({\n name: \"sequencia\",\n label: this.translate.instant(\"yms.erp.contrato_compra_item_sequencia\"),\n type: FieldType.Integer\n })\n ];\n }\n\n private getContratoCompraItensGridFields() {\n return [\n new FormField({\n name: \"sequencia\",\n label: this.translate.instant(\"yms.erp.contrato_compra_item_sequencia\"),\n type: FieldType.Integer\n }),\n new FormField({\n name: \"sku.descricao\",\n label: this.translate.instant(\"yms.erp.produto\"),\n type: FieldType.String\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 else if (control instanceof FormArray) control.controls.forEach((form: FormGroup) => this.validateAllFormFields(form));\n });\n }\n\n}","import { Empresa } from \"../empresa/empresa\";\nimport { Royalty } from \"../royalty/royalty\";\nimport { Situacao } from \"../../enums/situacao\";\nimport { TipoParticipanteTransgenia } from \"../../enums/tipo-participante-transgenia\";\nimport { TransgeniaDto } from \"./transgenia-dto\";\nimport * as _moment from \"moment\";\nconst moment = _moment;\nimport { getLookupLabel } from \"../../../../utils/lookup-utils\";\n\nexport class Transgenia {\n public id?: string;\n public empresa: Empresa;\n public codigo: string;\n public descricao: string;\n public royalty?: Royalty;\n public situacao: Situacao;\n public tipoParticipante: TipoParticipanteTransgenia;\n\n public static fromDto(transgeniaDto: TransgeniaDto, originEntity?: string): Transgenia {\n const model: any = { ...transgeniaDto };\n\n const lookupSeparator = \" - \";\n const displayFields = [\n \"codigo\",\n \"descricao\",\n ];\n\n model.label = getLookupLabel(model, displayFields, lookupSeparator);\n\n if (originEntity !== \"Empresa\" && model.empresa) model.empresa = Empresa.fromDto(model.empresa, \"Transgenia\");\n if (originEntity !== \"Royalty\" && model.royalty) model.royalty = Royalty.fromDto(model.royalty, \"Royalty\");\n\n return model as Transgenia;\n }\n\n public static toDto(transgenia: Transgenia, originEntity?: string): TransgeniaDto {\n const dto: any = { ...transgenia };\n\n delete dto.label;\n\n if (originEntity !== \"Empresa\" && dto.empresa) dto.empresa = Empresa.toDto(dto.empresa, \"Transgenia\");\n if (originEntity !== \"Royalty\" && dto.royalty) dto.roylty = Royalty.toDto(dto.royalty, \"Transgenia\");\n\n return dto;\n }\n}\n","import { Transgenia } from './../transgenia/transgenia';\nimport * as _moment from \"moment\";\nimport { Agenda } from \"../agenda/agenda\";\nimport { ContratoCompraItem } from \"../contrato-compra-item/contrato-compra-item\";\nimport { ContratoCompra } from \"../contrato-compra/contrato-compra\";\nimport { Derivacao } from \"../derivacao/derivacao\";\nimport { PessoaEndereco } from \"../pessoa-endereco/pessoa-endereco\";\nimport { Pessoa } from \"../pessoa/pessoa\";\nimport { Produto } from \"../produto/produto\";\nimport { RecebimentoContratoDto } from \"./recebimento-dto\";\nimport { Filial } from \"../filial/filial\";\nimport { Transportadora } from \"../transportadora/transportadora\";\nimport { TipoNotaFiscal } from \"../../enums/tipo-nota-fiscal\";\nimport { RecebimentoContratoFornecedor } from \"../recebimento-contrato-details/recebimento-contrato-fornecedor\";\nconst moment = _moment\n\nexport class RecebimentoContrato {\n public id: string;\n public filial: Filial;\n public fornecedores: RecebimentoContratoFornecedor[];\n public origemMercadoria: PessoaEndereco;\n public contratos: ContratoRecebimento[];\n public derivacao: Derivacao;\n public produto: Produto;\n public agenda: Agenda;\n public transportadora: Transportadora;\n public transgenia: Transgenia;\n public tipoNotaFiscal: TipoNotaFiscal;\n public eixos?: number;\n public createdBy?: string;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n public custom?: any;\n\n public static fromDto(recebimentoDto: RecebimentoContratoDto, originEntity?: string): RecebimentoContrato {\n const model: any = { ...recebimentoDto };\n\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n const lookupSeparator = \" - \";\n const displayFields = [\n \"id\",\n \"fornecedor.id\",\n \"fornecedor.codigo\",\n \"fornecedor.nome\",\n \"fornecedor.situacao\",\n \"produto.id\",\n \"produto.codigo\",\n \"produto.comprado\",\n \"produto.descricao\",\n \"produto.produtoMisto\",\n \"produto.situacao\",\n \"produto.tipo\",\n \"agenda.id\",\n \"agenda.descricao\",\n \"transportadora.id\",\n \"transportadora.codigo\",\n \"transportadora.placaVeiculo\",\n \"transgenia.id\",\n \"transgenia.codigo\",\n \"transgenia.descricao\",\n \"tipoNotaFiscal\",\n \"createdBy\",\n \"createdDate\",\n \"lastModifiedBy\",\n \"lastModifiedDate\",\n ];\n\n model.label = displayFields.map(field => model[field]).join(lookupSeparator);\n\n if (originEntity !== \"Filial\" && model.filial) model.filial = Filial.fromDto(model.filial, \"Recebimento\");\n if (originEntity !== \"Produto\" && model.produto) model.produto = Produto.fromDto(model.produto, \"Recebimento\");\n if (originEntity !== \"Agenda\" && model.agenda) model.agenda = Agenda.fromDto(model.agenda, \"Recebimento\");\n if ((originEntity !== \"PessoaEndereco\" && model.origemMercadoria)) model.origemMercadoria = PessoaEndereco.fromDto(model.origemMercadoria, \"Recebimento\");\n if ((originEntity !== \"Derivacao\" && model.derivacao)) model.derivacao = Derivacao.fromDto(model.derivacao, \"Recebimento\");\n if ((originEntity !== \"Transportadora\" && model.transportadora)) model.transportadora = Transportadora.fromDto(model.transportadora, \"Recebimento\");\n if ((originEntity !== \"Transgenia\" && model.transgenia)) model.transgenia = Transgenia.fromDto(model.transgenia, \"Transgenia\");\n\n model.fornecedores = model.fornecedores.map((fornecedor: any) => ({\n ...fornecedor,\n fornecedor: Pessoa.fromDto(fornecedor.fornecedor, \"Recebimento\"),\n origemMercadoria: PessoaEndereco.fromDto(fornecedor.origemMercadoria, \"Recebimento\"),\n contratos: fornecedor.contratos.map((contrato: any) => ({ \n ...contrato, \n contrato: ContratoCompra.fromDto(contrato.contrato), \n itens: contrato.itens.map((item: any) => ({\n ...item,\n item: ContratoCompraItem.fromDto(item.item)\n })) \n }))\n }));\n\n return model as RecebimentoContrato;\n }\n\n public static toDto(recebimento: RecebimentoContrato, originEntity?: string): RecebimentoContratoDto {\n const dto: any = { ...recebimento };\n\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n if (originEntity !== \"Pessoa\" && dto.fornecedor) dto.fornecedor = Pessoa.toDto(dto.fornecedor, \"Recebimento\");\n if (originEntity !== \"Filial\" && dto.filial) dto.filial = Filial.toDto(dto.filial, \"Filial\");\n if (originEntity !== \"Produto\" && dto.produto) dto.produto = Produto.toDto(dto.produto, \"Recebimento\");\n if (originEntity !== \"Agenda\" && dto.agenda) dto.agenda = Agenda.toDto(dto.agenda, \"Recebimento\");\n if ((originEntity !== \"PessoaEndereco\" && dto.origemMercadoria)) dto.origemMercadoria = PessoaEndereco.toDto(dto.origemMercadoria, \"Recebimento\");\n if ((originEntity !== \"Transportadora\" && dto.transportadora)) dto.transportadora = Transportadora.toDto(dto.transportadora, \"Recebimento\");\n if ((originEntity !== \"Transgenia\" && dto.transgenia)) dto.transgenia = Transgenia.toDto(dto.transgenia, \"Transgenia\");\n\n dto.fornecedores = recebimento.fornecedores.map((fornecedor) => ({\n ...fornecedor,\n fornecedor: Pessoa.toDto(fornecedor.fornecedor, \"Recebimento\"),\n origemMercadoria: PessoaEndereco.toDto(fornecedor.origemMercadoria, \"Recebimento\"),\n contratos: fornecedor.contratos.map((contrato) => ({ \n ...contrato, \n contrato: ContratoCompra.toDto(contrato.contrato), \n itens: contrato.itens.map(item => ({\n ...item,\n item: ContratoCompraItem.toDto(item.item)\n })) \n }))\n }));\n \n return dto;\n }\n}\n\nexport interface ContratoRecebimento {\n id?: string;\n recebimento?: RecebimentoContrato,\n contrato: ContratoCompra,\n itens: ContratoRecebimentoItem[]\n}\n\nexport interface ContratoRecebimentoItem {\n id?: string,\n contrato?: ContratoCompra,\n item: ContratoCompraItem,\n quantidade: number\n}\n","export enum TipoNotaFiscal {\n EMPRESA_JURIDICA = \"EMPRESA_JURIDICA\",\n PRODUTOR_RURAL = \"PRODUTOR_RURAL\"\n}","export enum TipoParticipanteTransgenia {\n NAO_INFORMADO = \"NAO_INFORMADO\",\n PARTICIPANTE_MONSANTO = \"PARTICIPANTE_MONSANTO\",\n NAO_PARTICIPANTE_MONSANTO = \"NAO_PARTICIPANTE_MONSANTO\"\n}\n","import { VerificaNotafiscal } from '../../core/verifica-nota-fiscal/verificaNotaFiscal';\nimport { ErpFormConfigService } from './../../core/erp-form-config/erp-form-config-service';\nimport { AfterViewInit, Component, Input, OnDestroy, OnInit, TemplateRef, ViewChild } from \"@angular/core\";\nimport { AbstractControl, FormArray, FormBuilder, FormControl, FormGroup, Validators } from \"@angular/forms\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { FieldType, FormField, IToken } from \"@seniorsistemas/angular-components\";\nimport { Hotkey, HotkeysService } from \"angular2-hotkeys\";\nimport * as _moment from \"moment\";\nimport { ConfirmationService, DialogService, SortMeta } from \"primeng/api\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { empty, forkJoin, of, Subject } from \"rxjs\";\nimport { concatMap, debounceTime, filter, finalize, map, mergeMap, takeUntil, tap } from \"rxjs/operators\";\nimport { FieldCustomizationService } from \"../../../utils/field-customization.service\";\nimport { FocusService } from \"../../../utils/focus.service\";\nimport { onLookupRequest } from \"../../../utils/lookup-utils\";\nimport { dialogConfig, isValidFilter, mergeUnique, userCanVisualize } from \"../../../utils/utils\";\nimport { NotaFormComponent } from \"../../components/nota-form/nota-form.component\";\nimport { Agenda } from \"../../core/entities/agenda/agenda\";\nimport { ContratoCompraItem } from \"../../core/entities/contrato-compra-item/contrato-compra-item\";\nimport { ContratoCompraDto } from \"../../core/entities/contrato-compra/contrato-compra-dto\";\nimport { ContratoCompraService } from \"../../core/entities/contrato-compra/contrato-compra.service\";\nimport { Derivacao } from \"../../core/entities/derivacao/derivacao\";\nimport { DerivacaoService } from \"../../core/entities/derivacao/derivacao.service\";\nimport { Filial } from \"../../core/entities/filial/filial\";\nimport { FilialService, PesquisarFiliaisInput } from \"../../core/entities/filial/filial.service\";\nimport { PessoaEndereco } from \"../../core/entities/pessoa-endereco/pessoa-endereco\";\nimport { PessoaEnderecoService } from \"../../core/entities/pessoa-endereco/pessoa-endereco.service\";\nimport { Pessoa } from \"../../core/entities/pessoa/pessoa\";\nimport { PessoaService } from \"../../core/entities/pessoa/pessoa.service\";\nimport { Produto } from \"../../core/entities/produto/produto\";\nimport { ProdutoRecebimentoParams, ProdutoService } from \"../../core/entities/produto/produto.service\";\nimport { RecebimentoContrato } from \"../../core/entities/recebimento-contrato/recebimento\";\nimport { RecebimentoContratoService } from \"../../core/entities/recebimento-contrato/recebimento.service\";\nimport { Transgenia } from \"../../core/entities/transgenia/transgenia\";\nimport { TransgeniaService } from \"../../core/entities/transgenia/transgenia.service\";\nimport { Transportadora } from \"../../core/entities/transportadora/transportadora\";\nimport { TransportadoraService } from \"../../core/entities/transportadora/transportadora.service\";\nimport { StatusAgenda } from \"./../../core/enums/status-agenda\";\nimport { TipoNotaFiscal } from \"../../core/enums/tipo-nota-fiscal\";\nimport { TipoParticipanteTransgenia } from \"../../core/enums/tipo-participante-transgenia\";\nimport { NotaValidatorService, PesquisarDocumentoResponse } from \"../../core/nota-validator.service\";\nimport { ContratoFormComponent } from \"../contrato-form/contrato-form.component\";\nimport { RecebimentoChegadaVeiculoOverride } from \"../recebimento-chegada-veiculo.override\";\nimport { AgendaService } from \"../../core/entities/agenda/agenda.service\";\nimport { ErpProcessData } from \"../../core/erp-process-data/erp-process-data\";\nimport { ErpProcessService } from \"../../core/erp-process-data/erp-process-service\";\nimport { HasChangeService } from '../../core/has-change/has-change-service';\n\nconst moment = _moment;\n\n@Component({\n selector: 'recebimento-form',\n templateUrl: \"./recebimento-form.component.html\",\n providers: [\n ConfirmationService,\n ],\n styleUrls: ['../../erp-senior.scss']\n})\nexport class RecebimentoFormComponent implements OnInit, OnDestroy, AfterViewInit {\n public localeConfig: any = {};\n public currencyLocaleOptions: any = {};\n public permissions: any = {};\n public allPermissions: any = {};\n\n public visibleDialog = false;\n public quantidadeSelecionada = 1;\n\n public formGroup: FormGroup;\n public itemFormGroup: FormGroup;\n public loading: boolean;\n public mainPanelCollapsed = false;\n\n public filialLookupSuggestions: Filial[];\n public filialLookupDisplayFields = [\"codigo\", \"nome\", \"empresa.nome\"];\n public filialAdvancedDisplayFields = [\"id\", \"codigo\", \"nome\", \"empresa.nome\"];\n public filialLookupSeparator = \" - \";\n public filialSearchFields: FormField[];\n public filialSearchGridFields: FormField[];\n public filialSearchGridData: Filial[];\n public filialSearchTotalRecords: number;\n\n public fornecedorLookupSuggestions: Pessoa[];\n public fornecedorLookupDisplayFields = [\"codigo\", \"nome\", \"cpfCnpj\"];\n public fornecedorAdvancedDisplayFields = [\"id\", \"codigo\", \"nome\", \"situacao\", \"cpfCnpj\", \"tipoParticipante\"];\n public fornecedorLookupSeparator = \" - \";\n public fornecedorSearchFields: FormField[];\n public fornecedorSearchGridFields: FormField[];\n public fornecedorSearchGridData: Pessoa[];\n public fornecedorSearchTotalRecords: number;\n\n public origemMercadoriaLookupSuggestions: PessoaEndereco[];\n public origemMercadoriaLookupDisplayFields = [\"codigo\", \"cep\", \"endereco\", \"empresa.descricao\"];\n public origemMercadoriaAdvancedDisplayFields = [\"id\", \"codigo\", \"cep\", \"endereco\", \"numero\", \"complemento\", \"cidade.*\", \"bairro\", \"situacao\", \"empresa.descricao\"];\n public origemMercadoriaLookupSeparator = \" - \";\n public origemMercadoriaSearchFields: FormField[];\n public origemMercadoriaSearchGridFields: FormField[];\n public origemMercadoriaSearchGridData: PessoaEndereco[];\n public origemMercadoriaSearchTotalRecords: number;\n\n public produtoLookupSuggestions: Produto[];\n public produtoLookupDisplayFields = [\"codigo\", \"descricao\", \"tipo\"];\n public produtoAdvancedDisplayFields = [\"id\", \"codigo\", \"comprado\", \"descricao\", \"produtoMisto\", \"situacao\", \"tipo\"];\n public produtoLookupSeparator = \" - \";\n public produtoSearchFields: FormField[];\n public produtoSearchGridFields: FormField[];\n public produtoSearchGridData: Produto[];\n public produtoSearchTotalRecords: number;\n\n public agendaLookupSuggestions: Agenda[];\n public agendaLookupDisplayFields = [\"id\", \"descricao\"];\n public agendaAdvancedDisplayFields = [\"id\", \"descricao\"];\n public agendaLookupSeparator = \" - \";\n public agendaSearchFields: FormField[];\n public agendaSearchGridFields: FormField[];\n public agendaSearchGridData: Agenda[];\n public agendaSearchTotalRecords: number;\n\n public derivacaoLookupSuggestions: Derivacao[];\n public derivacaoLookupDisplayFields = [\"codigo\", \"descricao\"];\n public derivacaoAdvancedDisplayFields = [\"id\", \"codigo\", \"descricao\"];\n public derivacaoLookupSeparator = \" - \";\n public derivacaoSearchFields: FormField[];\n public derivacaoSearchGridFields: FormField[];\n public derivacaoSearchGridData: Derivacao[];\n public derivacaoSearchTotalRecords: number;\n\n public transportadoraLookupSuggestions: Transportadora[];\n public transportadoraLookupDisplayFields = [\"codigo\", \"pessoa.nome\", \"pessoa.cpfCnpj\"];\n public transportadoraAdvancedDisplayFields = [\"id\", \"codigo\", \"pessoa.nome\", \"pessoa.cpfCnpj\"];\n public transportadoraLookupSeparator = \" - \";\n public transportadoraSearchFields: FormField[];\n public transportadoraSearchGridFields: FormField[];\n public transportadoraSearchGridData: Transportadora[];\n public transportadoraSearchTotalRecords: number;\n\n public transgeniaLookupSuggestions: Transgenia[];\n public transgeniaLookupDisplayFields = [\"codigo\", \"descricao\"];\n public transgeniaAdvancedDisplayFields = [\"id\", \"codigo\", \"descricao\"];\n public transgeniaLookupSeparator = \" - \";\n public transgeniaSearchFields: FormField[];\n public transgeniaSearchGridFields: FormField[];\n public transgeniaSearchGridData: Transgenia[];\n public transgeniaSearchTotalRecords: number;\n\n public disableButtonSave: boolean = false;\n public disableOrdersButtons: boolean = true;\n public createdByErp: boolean;\n\n public totalEixosContratados: number = 0;\n public totalEixosComposicao: number = 0;\n\n public tiposNota: { label: string; value: TipoNotaFiscal }[] = [\n { label: this.translate.instant(\"yms.erp.tipo_nota_fiscal_empresa_juridica\"), value: TipoNotaFiscal.EMPRESA_JURIDICA },\n { label: this.translate.instant(\"yms.erp.tipo_nota_fiscal_produtor_rural\"), value: TipoNotaFiscal.PRODUTOR_RURAL },\n ];\n\n public saveAndInitButton: any;\n\n @Input() private agenda: Agenda;\n\n @ViewChild(\"customTemplate\")\n public customTemplate: TemplateRef<any>;\n\n @ViewChild(\"customFormFields\")\n public customFormFields: TemplateRef<any>;\n\n public chaveNotaFiscal: string;\n public erroChaveNota = false;\n public erroFornecedores = false;\n\n public notasTokens: IToken[] = [];\n public fornecedorNotasTokens: IToken[] = [];\n public fornecedorNotas = [];\n\n public contratoSelecionado: any = null;\n\n private ngUnsubscribe = new Subject();\n\n private formCarregado: any;\n\n private erpProcessData: ErpProcessData;\n private enableRevalidation: boolean;\n\n private contratos: any;\n\n constructor(\n private recebimentoService: RecebimentoContratoService,\n private router: Router,\n private route: ActivatedRoute,\n private messageService: MessageService,\n private confirmationService: ConfirmationService,\n private formBuilder: FormBuilder,\n private translate: TranslateService,\n private hotkeysService: HotkeysService,\n private fieldCustomization: FieldCustomizationService,\n private focusService: FocusService,\n private filialService: FilialService,\n private transportadoraService: TransportadoraService,\n private pessoaEnderecoService: PessoaEnderecoService,\n private contratoCompraService: ContratoCompraService,\n private pessoaService: PessoaService,\n private produtoService: ProdutoService,\n private derivacaoService: DerivacaoService,\n private recebimentoChegadaOverride: RecebimentoChegadaVeiculoOverride,\n private notaValidatorService: NotaValidatorService,\n private transgeniaService: TransgeniaService,\n private dialogService: DialogService,\n private agendaService: AgendaService,\n private erpProcessService: ErpProcessService,\n private erpFormConfigService: ErpFormConfigService,\n private verificaNotaFiscal: VerificaNotafiscal,\n private hasChangeService: HasChangeService,\n\n ) { }\n\n public ngOnInit() {\n this.formGroup = this.getFormGroup();\n this.itemFormGroup = this.getItemForm();\n\n this.formGroup.get(\"filial\")\n .valueChanges\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(this.onFilialValueChange);\n\n this.formGroup.get(\"produto\")\n .valueChanges\n .pipe(\n takeUntil(this.ngUnsubscribe),\n debounceTime(500),\n filter(value => {\n const derivacao = this.formGroup.get(\"derivacao\").value as Derivacao;\n if (!!derivacao && derivacao.produto.id === value.id) return false;\n if (!value) {\n this.formGroup.get(\"derivacao\").setValue(undefined);\n this.formGroup.get(\"derivacao\").disable();\n return false;\n }\n return true;\n }),\n mergeMap(value => this.derivacaoService.list({\n filterQuery: `produto.id eq '${value.id}' and situacao eq 'ATIVO'`,\n page: 0,\n size: 1\n }))\n )\n .subscribe(({ contents }) => {\n if (!contents.length) {\n this.formGroup.get(\"derivacao\").enable();\n return;\n }\n\n this.formGroup.get(\"derivacao\").setValue(contents[0]);\n this.formGroup.get(\"derivacao\").disable();\n });\n\n this.route.data.pipe(takeUntil(this.ngUnsubscribe)).subscribe((data: any) => this.onRouteDataChange(data));\n\n this.route.params.pipe(takeUntil(this.ngUnsubscribe)).subscribe(({ agenda }) => {\n if (agenda == 'new') {\n this.buscarFilial();\n } else {\n this.getRecebimento(agenda);\n }\n });\n\n this.formGroup\n .get('transportadora')\n .valueChanges.pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(this.onChangeRevalidation);\n\n this.formGroup\n .get('transgenia')\n .valueChanges.pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(this.onChangeRevalidation);\n\n this.formGroup\n .get('fornecedores')\n .valueChanges.pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(this.onChangeRevalidation);\n\n this.filialSearchFields = this.getFilialSearchFields();\n this.filialSearchGridFields = this.getFilialSearchFields();\n\n this.fornecedorSearchFields = this.getFornecedorSearchFields();\n this.fornecedorSearchGridFields = this.getFornecedorSearchGridFields();\n\n this.origemMercadoriaSearchFields = this.getOrigemMercadoriaFields();\n this.origemMercadoriaSearchGridFields = this.getOrigemMercadoriaGridFields();\n\n this.produtoSearchFields = this.getProdutoSearchFields();\n this.produtoSearchGridFields = this.getProdutoSearchGridFields();\n\n this.agendaSearchFields = this.getAgendaSearchFields();\n this.agendaSearchGridFields = this.getAgendaSearchGridFields();\n\n this.derivacaoSearchFields = this.getDerivacaoSearchFields();\n this.derivacaoSearchGridFields = this.getDerivacaoSearchGridFields();\n\n this.transportadoraSearchFields = this.getTransportadoraSearchFields();\n this.transportadoraSearchGridFields = this.getTransportadoraSearchGridFields();\n\n this.transgeniaSearchFields = this.getTransgeniaSearchFields();\n this.transgeniaSearchGridFields = this.getTransgeniaSearchGridFields();\n\n this.setHotkeys();\n\n if (this.agenda && this.agenda.externalTenant) {\n this.setTransportadora(this.agenda.externalTenant.cnpj);\n }\n\n this.totalEixosComposicao = this.agenda && this.agenda.veiculo ? this.agenda.veiculo.eixos || 0 : 0;\n\n const statusAgenda = [\n \"AGUARDANDO_CONFIRMACAO_SOLICITANTE\",\n \"AGENDADO\",\n \"AGUARDANDO_CONFIRMACAO\",\n \"EM_EXECUCAO\",\n \"REJEITADO_POR_VALIDACAO\",\n ];\n\n if (this.agenda && !statusAgenda.includes(this.agenda.status)) {\n this.formGroup.disable();\n this.disableButtonSave = true;\n }\n\n this.erpProcessService.current.subscribe(message => this.erpProcessData = message);\n this.erpFormConfigService.current.subscribe(message => this.enableRevalidation = message);\n\n this.verificaSeTemAlteracao();\n }\n\n private verificaSeTemAlteracao() {\n this.formGroup.valueChanges.subscribe(() => {\n if (this.formCarregado) {\n this.hasChangeService.hasChange(this.agenda.id);\n }\n });\n }\n\n private onChangeRevalidation = (_) => {\n if (this.erpProcessData && this.formGroup) {\n this.erpProcessData = this.erpProcessService.builderErpProcessData(this.erpProcessData, this.formGroup);\n this.erpProcessService.changeData(this.erpProcessData);\n }\n return;\n }\n\n public ngAfterViewInit() {\n const inputList = document.getElementsByTagName(\"input\");\n const selectedInput = Array.from(inputList).find((f: any) => !f.disabled);\n if (selectedInput) {\n selectedInput.focus();\n }\n \n this.recebimentoChegadaOverride.initialize();\n this.saveAndInitButton = document.getElementById('init');\n this.createdByErpDisableForm();\n \n this.formGroup.valueChanges.subscribe(() => {\n if (this.formCarregado) {\n this.hasChangeService.hasChange(this.agenda.id);\n }\n });\n }\n\n public ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n this.recebimentoChegadaOverride.remove();\n }\n\n public createdByErpDisableForm() {\n this.disableOrdersButtons = this.agenda.createdByErp;\n if (this.agenda && this.agenda.createdByErp) {\n this.createdByErp = true;\n this.formGroup.get('filial').disable();\n this.formGroup.get('produto').disable();\n this.formGroup.get('derivacao').disable();\n this.disableFornecedores();\n\n if (!!this.formGroup.get(\"transportadora\").value) {\n this.formGroup.get('transportadora').disable();\n }\n }\n }\n\n public disableFornecedores() { \n (this.formGroup.get(\"fornecedores\") as FormArray).controls.forEach(form => form.get(\"fornecedor\").disable());\n }\n\n public setHotkeys() {\n this.hotkeysService.add(\n new Hotkey(\n \"alt+shift+x\",\n () => {\n if (this.permissions.excluir) this.onDelete();\n return false;\n },\n [\"INPUT\", \"SELECT\", \"TEXTAREA\"]\n )\n );\n\n this.hotkeysService.add(\n new Hotkey(\n \"alt+shift+s\",\n () => {\n if (this.isNew() || this.permissions.editar) this.onSave();\n return false;\n },\n [\"INPUT\", \"SELECT\", \"TEXTAREA\"]\n )\n );\n\n this.hotkeysService.add(\n new Hotkey(\n \"alt+shift+c\",\n () => {\n this.onCancel();\n return false;\n },\n [\"INPUT\", \"SELECT\", \"TEXTAREA\"]\n )\n );\n }\n\n public onBlurChaveNotaFiscal() {\n if (this.verificaNotaFiscal.verificaSeNotaFiscalEstaDuplicada(this.chaveNotaFiscal, this.contratos, this.fornecedorNotasTokens)) {\n return;\n }\n\n this.removeNotaError();\n const value = this.chaveNotaFiscal;\n if (!!value) {\n this.loading = true;\n this.mensagemBuscandoNota();\n this.notaValidatorService.pesquisarDocumentoValidaNotaEmUso({\n filialId: (this.formGroup.get(\"filial\").value && this.formGroup.get(\"filial\").value.id) || null,\n chaveDocumento: value.trim()\n }).pipe(\n takeUntil(this.ngUnsubscribe),\n finalize(() => this.loading = false)\n ).subscribe((response) => this.adicionarNovaNota(response));\n } \n }\n\n public isNew() {\n return !this.formGroup.value.id;\n }\n\n public updateSuggestions(value: any) {\n if (value.fornecedor) {\n value.fornecedor.label = this.getSuggestionValue(\n [\"id\", \"codigo\", \"nome\", \"situacao\"],\n \"fornecedor\",\n value,\n this.fornecedorLookupSeparator\n );\n if (value.fornecedor.label.trim() === this.fornecedorLookupSeparator.trim()) {\n delete value.fornecedor.label;\n }\n }\n\n if (value.produto) {\n value.produto.label = this.getSuggestionValue(\n [\"id\", \"codigo\", \"comprado\", \"descricao\", \"produtoMisto\", \"situacao\", \"tipo\"],\n \"produto\",\n value,\n this.produtoLookupSeparator\n );\n if (value.produto.label.trim() === this.produtoLookupSeparator.trim()) {\n delete value.produto.label;\n }\n }\n\n if (value.agenda) {\n value.agenda.label = this.getSuggestionValue([\"id\", \"descricao\"], \"agenda\", value, this.agendaLookupSeparator);\n if (value.agenda.label.trim() === this.agendaLookupSeparator.trim()) {\n delete value.agenda.label;\n }\n }\n\n if (value.derivacao) {\n value.derivacao.label = this.getSuggestionValue(\n [\"id\", \"codigo\", \"descricao\"],\n \"derivacao\",\n value,\n this.derivacaoLookupSeparator\n );\n if (value.derivacao.label.trim() === this.derivacaoLookupSeparator.trim()) {\n delete value.derivacao.label;\n }\n }\n }\n\n public getSuggestionValue(displayFields: string[], ownerEntity: string, value: any, separator: string) {\n return displayFields\n .map(field => this.getProp(value, `${ownerEntity}.${field}`))\n .reduce((acc: any, val: any) => `${acc}${separator}${val}`);\n }\n\n public onRouteDataChange(data: any) {\n const { currencySymbol, thousandsSeparator, decimalSeparator } = data.localeConfig.number;\n\n this.localeConfig = data.localeConfig;\n this.currencyLocaleOptions = {\n align: \"left\",\n prefix: currencySymbol,\n thousands: thousandsSeparator,\n decimal: decimalSeparator,\n };\n this.permissions = data.allPermissions.recebimento;\n this.allPermissions = data.allPermissions;\n //this.validateVisualization();\n if (data.entity) {\n const canEdit = this.permissions.editar;\n if (!canEdit) this.formGroup.disable();\n const value: any = RecebimentoContrato.fromDto(data.entity);\n this.updateSuggestions(value);\n this.formGroup.patchValue(value);\n } else {\n this.formGroup.patchValue(new RecebimentoContrato());\n }\n }\n\n public onCancel() {\n this.goBack();\n }\n\n public onSendFile(filesToDelete: any, filesToCommit: any[]) {\n const observables: any[] = [];\n\n if (!this.fieldCustomization.isEmpty(filesToDelete)) {\n observables.push(this.fieldCustomization.deleteFiles(filesToDelete));\n }\n if (!this.fieldCustomization.isEmpty(filesToCommit)) {\n observables.push(this.fieldCustomization.commitFiles(filesToCommit));\n }\n\n if (!this.fieldCustomization.isEmpty(observables)) {\n return forkJoin(observables);\n } else {\n return of({});\n }\n }\n\n public onSave(start?: boolean) {\n \n if ((this.formGroup.get(\"fornecedores\") as FormArray).length <= 0) {\n this.erroFornecedores = true;\n return;\n }\n\n if (this.formGroup.invalid) {\n return this.validateAllFormFields(this.formGroup);\n }\n\n this.loading = true;\n\n if (this.isNew() || !this.enableRevalidation) {\n return this.saveAndInit(start);\n }\n\n this.erpProcessData = this.erpProcessService.builderErpProcessData(this.erpProcessData, this.formGroup);\n this.erpProcessService.changeDataErp(this.erpProcessData);\n return this.agendaService\n .checarRevalidacao(this.erpProcessData)\n .pipe(\n takeUntil(this.ngUnsubscribe),\n finalize(() => this.loading = false),\n )\n .subscribe((response: any) => {\n if (response.requerRevalidacao) {\n this.atualizaAgendaParaRejeitadoPorValidacao();\n }\n else {\n this.saveAndInit(start);\n }\n });\n }\n\n private atualizaAgendaParaRejeitadoPorValidacao() {\n this.confirmationService.confirm({\n header: this.translate.instant(\"yms.patio.agenda_revalidacao_title\"),\n message: this.translate.instant(\"yms.patio.agenda_revalidacao_message\"),\n accept: () => {\n this.hasChangeService.hasChangeSave(this.agenda.id);\n this.agenda.status = StatusAgenda.REJEITADO_POR_VALIDACAO;\n this.agenda.motorista = {id: this.erpProcessData.motoristaId};\n this.agenda.veiculo = {id: this.erpProcessData.veiculoId};\n this.agendaService\n .atualizarAgenda(this.agenda)\n .pipe(\n takeUntil(this.ngUnsubscribe),\n concatMap((_) => this.getSaveObservable()),\n finalize(() => this.loading = false),\n )\n .subscribe((_) => {\n this.successMessage();\n this.router.navigate([\"/chegada-veiculo\"], { relativeTo: this.route });\n });\n },\n reject: () => this.loading = false,\n });\n }\n\n private saveAndInit(start: boolean) {\n this.getSaveObservable()\n .pipe(\n takeUntil(this.ngUnsubscribe),\n finalize(() => this.loading = false),\n )\n .subscribe((value: any) => {\n this.formGroup.get(\"id\").setValue(value.id || null);\n this.successMessage();\n this.hasChangeService.hasChangeSave(this.agenda.id);\n if (start && this.saveAndInitButton) {\n this.saveAndInitButton.click();\n }\n });\n }\n\n private successMessage() {\n this.messageService.add({\n severity: \"success\",\n summary: this.translate.instant(\"saved_message_title\"),\n detail: this.translate.instant(\"saved_message_content\"),\n });\n }\n\n public onDelete() {\n this.confirmationService.confirm({\n message: this.translate.instant(\"yms.erp.delete_confirmation_message\"),\n header: this.translate.instant(\"yms.erp.delete_confirmation_title\"),\n accept: () =>\n this.getDeleteObservable()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(),\n });\n }\n\n public setTransportadora(value: string) {\n if (value) {\n const cnpj = value.replace('.', '').replace('/', '').replace('-', '');\n const filterQuery = `pessoa.cpfCnpj eq '${cnpj}'`;\n this.transportadoraService.list({ filterQuery, page: 0, size: 10 })\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(({ contents }) => {\n if (contents.length === 1) {\n const code = contents[0].codigo ? contents[0].codigo.toString() : '';\n const description = contents[0].descricao ? contents[0].descricao.toString() : '';\n if (!description.trim() && !code.trim()) {\n contents[0].label = this.translate.instant('yms.erp.derivacao_sem_descricao');\n } else {\n contents[0].label = `${code} - ${description}`;\n }\n this.formGroup.get('transportadora').setValue(contents[0]);\n }\n });\n }\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 public getRecebimento(agendaId: string) {\n this.loading = true;\n this.recebimentoService\n .list({\n filterQuery: `agenda.id eq '${agendaId}'`,\n size: 1,\n page: 0\n })\n .pipe(takeUntil(this.ngUnsubscribe), finalize(() => this.loading = false))\n .subscribe(({ contents }) => {\n if (!contents.length) {\n this.buscarFilial();\n return;\n }\n\n this.totalEixosContratados = contents[0].eixos || 0;\n this.totalEixosComposicao = contents[0].agenda && contents[0].agenda.veiculo\n ? contents[0].agenda.veiculo.eixos || 0 : 0;\n\n const recebimento = RecebimentoContrato.fromDto(contents[0]);\n this.formGroup.enable();\n this.formGroup.patchValue(recebimento);\n\n recebimento.fornecedores.forEach(fornecedor => {\n const form = this.getFornecedorForm(fornecedor);\n this.getFornecedores().push(form);\n\n fornecedor.contratos.forEach(contrato => {\n const contratoForm = this.getContratoForm(contrato);\n this.getContratos(form).push(contratoForm);\n\n contrato.itens.forEach(item => {\n const itemForm = this.getItemForm(item);\n this.getItensContrato(contratoForm).push(itemForm);\n });\n\n contrato.notas.forEach(nota => {\n const notaForm = this.getNotaForm(nota);\n this.getNotas(contratoForm).push(notaForm);\n });\n });\n });\n\n this.formCarregado = true;\n\n this.createdByErpDisableForm();\n });\n }\n\n public onFilialLookupRequest(value: string) {\n const filterInput = this.getFilialSearchFields()\n .filter(({ type }) => isValidFilter(type, value))\n .reduce((a, { name, type }) => {\n if (type === FieldType.Integer) {\n return { ...a, [name]: value.replace(/\\D/, \"\") };\n }\n return { ...a, [name]: value };\n }, { cnpjs: this.agenda.planta.cnpj, pagina: { limit: 10, offset: 0 } } as PesquisarFiliaisInput);\n\n this.filialService\n .listFiliais(filterInput)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => this.filialLookupSuggestions = list.filiais.map(Filial.fromDto));\n }\n\n public onFilialSearchRequest(event: any) {\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const sort: SortMeta[] = multiSortMeta;\n const sortFormatted = !!(sort || []).length && { campo: sort[0].field, ordenacao: sort[0].order > 0 ? 'Asc' : 'Desc' };\n const filterInput = this.getFilialSearchFields()\n .filter(({ name }) => filterData[name] != undefined && filterData[name] != \"\")\n .reduce((a, { name, type }) => {\n const value = filterData[name];\n if (type === FieldType.Integer) {\n return { ...a, [name]: `${value}`.replace(/\\D/, \"\") };\n }\n return { ...a, [name]: value };\n }, { cnpjs: this.agenda.planta.cnpj, pagina: { limit: rows, offset: page, listaOrdenacao: sortFormatted ? [{ ...(sortFormatted) }] : null } } as PesquisarFiliaisInput);\n\n this.filialService\n .listFiliais(filterInput)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.filialSearchGridData = list.filiais.map(Filial.fromDto);\n this.filialSearchTotalRecords = list.qtdTotalRegistros;\n });\n }\n\n public onFornecedorLookupRequest(value: string) {\n const sort = this.fornecedorLookupDisplayFields.map((field: any) => ({ field, order: 1 }));\n\n let filterQuery = this.getFornecedorSearchFields()\n .filter(({ type }) => isValidFilter(type, value))\n .map(({ name, type }) => {\n if (typeof value == \"number\") return `${name} eq ${value}`;\n else if (type == FieldType.Date) return `${name} eq '${moment(value).format(\"YYYY-MM-DD\")}'`;\n else if (type == FieldType.Time) return `${name} eq '${moment(value).format(\"HH:mm:ss\")}'`;\n else if (type == FieldType.DateTime) return `${name} eq '${moment(value).format()}'`;\n else if (type == FieldType.String) return `containing(lower(${name}), lower('${value.replace(/'/g, \"\\\\'\")}'))`;\n else return `${name} eq '${value}'`;\n })\n .join(\" or \");\n\n filterQuery = `(${filterQuery})${!!filterQuery ? ' and ' : \"\"}situacao eq 'ATIVO' and fornecedor eq true`;\n\n const displayFields = mergeUnique(this.fornecedorLookupDisplayFields, this.fornecedorAdvancedDisplayFields);\n this.pessoaService\n .list({ sort, filterQuery, displayFields })\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: this.fornecedorLookupDisplayFields\n .map(field => {\n if (field.indexOf(\".\") > 0) return this.getProp(item, field);\n return item[field];\n })\n .join(this.fornecedorLookupSeparator),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.fornecedorLookupSuggestions = list.contents;\n });\n }\n\n public onFornecedorSearchRequest(event: any) {\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const sort = multiSortMeta;\n let filterQuery = this.getFornecedorSearchFields()\n .filter(({ name }) => filterData[name] != undefined && filterData[name] != \"\")\n .map(({ name, type }) => {\n const value = filterData[name];\n\n if (typeof value == \"number\") return `${name} eq ${value}`;\n else if (type == FieldType.Date) return `${name} eq '${moment(value).format(\"YYYY-MM-DD\")}'`;\n else if (type == FieldType.Time) return `${name} eq '${moment(value).format(\"HH:mm:ss\")}'`;\n else if (type == FieldType.DateTime) return `${name} eq '${moment(value).format()}'`;\n else if (type == FieldType.Enum) return `${name} eq '${value}'`;\n else if (type == FieldType.String) return `containing(lower(${name}), lower('${value.replace(/'/g, \"\\\\'\")}'))`;\n else return `${name} eq '${value}'`;\n })\n .join(\" and \");\n\n filterQuery = filterQuery.concat(`${!!filterQuery ? ' and ' : \"\"}situacao eq 'ATIVO' and fornecedor eq true`);\n\n const displayFields = mergeUnique(this.fornecedorLookupDisplayFields, this.fornecedorAdvancedDisplayFields);\n this.pessoaService\n .list({ page, sort, filterQuery, displayFields })\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: this.fornecedorLookupDisplayFields\n .map(field => {\n if (field.indexOf(\".\") > 0) return this.getProp(item, field);\n return item[field];\n })\n .join(this.fornecedorLookupSeparator),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.fornecedorSearchGridData = list.contents;\n this.fornecedorSearchTotalRecords = list.totalElements;\n });\n }\n\n public onOrigemMercadoriaLookupRequest(value: string, fornecedorForm: FormGroup) {\n const sort = this.origemMercadoriaLookupDisplayFields.map((field: any) => ({ field, order: 1 }));\n\n let filterQuery = this.getOrigemMercadoriaFields()\n .filter(({ type }) => isValidFilter(type, value))\n .map(({ name, type }) => {\n if (typeof value == \"number\") return `${name} eq ${value}`;\n else if (type == FieldType.Date) return `${name} eq '${moment(value).format(\"YYYY-MM-DD\")}'`;\n else if (type == FieldType.Time) return `${name} eq '${moment(value).format(\"HH:mm:ss\")}'`;\n else if (type == FieldType.DateTime) return `${name} eq '${moment(value).format()}'`;\n else if (type == FieldType.String) return `containing(lower(${name}), lower('${value.replace(/'/g, \"\\\\'\")}'))`;\n else return `${name} eq '${value}'`;\n })\n .join(\" or \");\n\n filterQuery = `(${filterQuery})${!!filterQuery ? ' and ' : ''}situacao eq 'ATIVO' and pessoa.id eq '${fornecedorForm.get(\"fornecedor\").value.id}'`;\n\n const displayFields = mergeUnique(this.origemMercadoriaLookupDisplayFields, this.origemMercadoriaAdvancedDisplayFields);\n this.pessoaEnderecoService\n .list({ filterQuery, displayFields })\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: this.origemMercadoriaLookupDisplayFields\n .map(field => {\n if (field.indexOf(\".\") > 0) return this.getProp(item, field);\n return item[field];\n })\n .join(this.origemMercadoriaLookupSeparator),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.origemMercadoriaLookupSuggestions = list.contents;\n });\n }\n\n public onOrigemMercadoriaSearchRequest(event: any, fornecedorForm: FormGroup) {\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const sort = multiSortMeta;\n let filterQuery = this.getOrigemMercadoriaFields()\n .filter(({ name }) => filterData[name] != undefined && filterData[name] != \"\")\n .map(({ name, type }) => {\n const value = filterData[name];\n\n if (typeof value == \"number\") return `${name} eq ${value}`;\n else if (type == FieldType.Date) return `${name} eq '${moment(value).format(\"YYYY-MM-DD\")}'`;\n else if (type == FieldType.Time) return `${name} eq '${moment(value).format(\"HH:mm:ss\")}'`;\n else if (type == FieldType.DateTime) return `${name} eq '${moment(value).format()}'`;\n else if (type == FieldType.Enum) return `${name} eq '${value}'`;\n else if (type == FieldType.String) return `containing(lower(${name}), lower('${value.replace(/'/g, \"\\\\'\")}'))`;\n else return `${name} eq '${value}'`;\n })\n .join(\" and \");\n\n filterQuery = filterQuery.concat(`${!!filterQuery ? ' and ' : ''}situacao eq 'ATIVO' and pessoa.id eq '${fornecedorForm.get(\"fornecedor\").value.id}'`);\n\n const displayFields = mergeUnique(this.origemMercadoriaLookupDisplayFields, this.origemMercadoriaAdvancedDisplayFields);\n this.pessoaEnderecoService\n .list({ page, sort, filterQuery, displayFields })\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: this.origemMercadoriaLookupDisplayFields\n .map(field => {\n if (field.indexOf(\".\") > 0) return this.getProp(item, field);\n return item[field];\n })\n .join(this.origemMercadoriaLookupSeparator),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.origemMercadoriaSearchGridData = list.contents;\n this.origemMercadoriaSearchTotalRecords = list.totalElements;\n });\n }\n\n public getRecPagina(first: number, rows: number, sort: any) {\n const page = first / rows;\n const orderBy = sort && sort.length \n ? sort.map((s: any) => ({ campo: s.field, ordenacao: s.order === 1 ? 'Asc' : 'Desc' })) \n : [];\n return {\n offset: page,\n limit: rows,\n listaOrdenacao: orderBy\n }\n }\n\n public onProdutoLookupRequest(value: string) {\n const filial = this.formGroup.get(\"filial\").value;\n const tipoAgendamento = this.agenda.tipoAgendamento;\n\n this.produtoService\n .listProdutosRecebimento({\n pesquisa: value,\n empresaId: !!filial ? filial.empresa.id : null,\n filialId: !!filial ? filial.id : null,\n tipoAgendamentoId: !!tipoAgendamento ? tipoAgendamento.id : null\n })\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.produtoLookupSuggestions = (list.produtos || []).map((produto: any) => Produto.fromDto(produto));\n });\n }\n\n public onProdutoSearchRequest(event: any) {\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const sort: SortMeta[] = multiSortMeta;\n const sortFormatted = !!(sort || []).length && { campo: sort[0].field, ordenacao: sort[0].order > 0 ? 'Asc' : 'Desc' };\n const filterInput = this.getProdutoSearchFields()\n .filter(({ name }) => filterData[name] != undefined && filterData[name] != \"\")\n .reduce((a, { name, type }) => {\n const value = filterData[name];\n if (type === FieldType.Integer) {\n return { ...a, [name]: `${value}`.replace(/\\D/, \"\") };\n }\n return { ...a, [name]: value };\n }, { pagina: { limit: rows, offset: page, listaOrdenacao: sortFormatted ? [{ ...(sortFormatted) }] : null } } as ProdutoRecebimentoParams);\n\n const filial = this.formGroup.get(\"filial\").value;\n const tipoAgendamento = this.agenda.tipoAgendamento;\n\n this.produtoService\n .listProdutosRecebimento({\n ...filterInput,\n empresaId: !!filial ? filial.empresa.id : null,\n filialId: !!filial ? filial.id : null,\n tipoAgendamentoId: !!tipoAgendamento ? tipoAgendamento.id : null\n })\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((res: any) => {\n this.produtoSearchTotalRecords = res.qtdTotalRegistros;\n this.produtoSearchGridData = res.produtos.map(Produto.fromDto);\n });\n }\n\n public onDerivacaoLookupRequest(value: string) {\n const sort = this.derivacaoLookupDisplayFields.map((field: any) => ({ field, order: 1 }));\n\n const filterQuery = this.getDerivacaoSearchFields()\n .filter(({ type }) => isValidFilter(type, value))\n .map(({ name, type }) => {\n if (typeof value == \"number\") return `${name} eq ${value}`;\n else if (type == FieldType.Date) return `${name} eq '${moment(value).format(\"YYYY-MM-DD\")}'`;\n else if (type == FieldType.Time) return `${name} eq '${moment(value).format(\"HH:mm:ss\")}'`;\n else if (type == FieldType.DateTime) return `${name} eq '${moment(value).format()}'`;\n else if (type == FieldType.String) return `containing(lower(${name}), lower('${value.replace(/'/g, \"\\\\'\")}'))`;\n else return `${name} eq '${value}'`;\n })\n .join(\" or \");\n\n const displayFields = mergeUnique(this.derivacaoLookupDisplayFields, this.derivacaoAdvancedDisplayFields);\n this.derivacaoService\n .list({ sort, filterQuery, displayFields })\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: this.derivacaoLookupDisplayFields\n .map(field => {\n if (field.indexOf(\".\") > 0) return this.getProp(item, field);\n return item[field];\n })\n .join(this.derivacaoLookupSeparator),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.derivacaoLookupSuggestions = list.contents;\n });\n }\n\n public onDerivacaoSearchRequest(event: any) {\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const sort = multiSortMeta;\n const filterQuery = this.getDerivacaoSearchFields()\n .filter(({ name }) => filterData[name] != undefined && filterData[name] != \"\")\n .map(({ name, type }) => {\n const value = filterData[name];\n\n if (typeof value == \"number\") return `${name} eq ${value}`;\n else if (type == FieldType.Date) return `${name} eq '${moment(value).format(\"YYYY-MM-DD\")}'`;\n else if (type == FieldType.Time) return `${name} eq '${moment(value).format(\"HH:mm:ss\")}'`;\n else if (type == FieldType.DateTime) return `${name} eq '${moment(value).format()}'`;\n else if (type == FieldType.Enum) return `${name} eq '${value}'`;\n else if (type == FieldType.String) return `containing(lower(${name}), lower('${value.replace(/'/g, \"\\\\'\")}'))`;\n else return `${name} eq '${value}'`;\n })\n .join(\" and \");\n\n const displayFields = mergeUnique(this.derivacaoLookupDisplayFields, this.derivacaoAdvancedDisplayFields);\n this.derivacaoService\n .list({ page, sort, filterQuery, displayFields })\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: this.derivacaoLookupDisplayFields\n .map(field => {\n if (field.indexOf(\".\") > 0) return this.getProp(item, field);\n return item[field];\n })\n .join(this.derivacaoLookupSeparator),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.derivacaoSearchGridData = list.contents;\n this.derivacaoSearchTotalRecords = list.totalElements;\n });\n }\n\n public onTransportadoraLookupRequest(value: string) {\n onLookupRequest(this.transportadoraSearchFields, this.transportadoraLookupDisplayFields, this.transportadoraAdvancedDisplayFields, this.transportadoraLookupSeparator, this.transportadoraService, value)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.transportadoraLookupSuggestions = list.contents;\n });\n }\n\n public onTransportadoraSearchRequest(event: any) {\n\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const sort = multiSortMeta;\n const filterQuery = this.getTransportadoraSearchFields()\n .filter(({ name }) => filterData[name] != undefined && filterData[name] != \"\")\n .map(({ name, type }) => {\n const value = filterData[name];\n\n if (typeof value == \"number\") return `${name} eq ${value}`;\n else if (type == FieldType.Date) return `${name} eq '${moment(value).format(\"YYYY-MM-DD\")}'`;\n else if (type == FieldType.Time) return `${name} eq '${moment(value).format(\"HH:mm:ss\")}'`;\n else if (type == FieldType.DateTime) return `${name} eq '${moment(value).format()}'`;\n else if (type == FieldType.Enum) return `${name} eq '${value}'`;\n else if (type == FieldType.String) return `containing(lower(${name}), lower('${value.replace(/'/g, \"\\\\'\")}'))`;\n else return `${name} eq '${value}'`;\n })\n .join(\" and \");\n\n const displayFields = mergeUnique(this.transportadoraLookupDisplayFields, this.transportadoraAdvancedDisplayFields);\n this.transportadoraService\n .list({ page, sort, filterQuery, displayFields })\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: this.transportadoraLookupDisplayFields\n .map(field => {\n if (field.indexOf(\".\") > 0) {\n return this.getProp(item, field);\n }\n return item[field];\n })\n .join(this.transportadoraLookupSeparator),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.transportadoraSearchGridData = list.contents;\n this.transportadoraSearchTotalRecords = list.totalElements;\n });\n }\n\n public onTransgeniaLookupRequest(value: any) {\n onLookupRequest(this.getTransgeniaSearchFields(), this.transgeniaLookupDisplayFields, this.transgeniaAdvancedDisplayFields, this.transgeniaLookupSeparator, this.transgeniaService, value,\n `empresa.id eq '${this.formGroup.get('filial').value.empresa.id}' and tipoParticipante eq '${this.getTipoTransgenia()}'`)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => this.transgeniaLookupSuggestions = list.contents);\n }\n\n public onTransgeniaSearchRequest(event: any) {\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const sort = multiSortMeta;\n const filterQuery = this.getTransgeniaSearchFields()\n .filter(({ name }) => filterData[name] != undefined && filterData[name] != \"\")\n .map(({ name, type }) => {\n const value = filterData[name];\n if (typeof value == \"number\") return `${name} eq ${value}`;\n else if (type == FieldType.Enum) return `${name} eq '${value}'`;\n else if (type == FieldType.String) return `containing(lower(${name}), lower('${value.replace(/'/g, \"\\\\'\")}'))`;\n else return `${name} eq '${value}'`;\n })\n .join(\" and \");\n\n const displayFields = mergeUnique(this.transgeniaLookupDisplayFields, this.transgeniaAdvancedDisplayFields);\n this.transgeniaService\n .list({ page, sort, filterQuery, displayFields })\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: this.transgeniaLookupDisplayFields\n .map(field => {\n if (field.indexOf(\".\") > 0) {\n return this.getProp(item, field);\n }\n return item[field];\n })\n .join(this.transgeniaLookupSeparator),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.transgeniaSearchGridData = list.contents;\n this.transgeniaSearchTotalRecords = list.totalElements;\n });\n }\n\n public addFornecedor(data: any = {}) {\n this.erroFornecedores = false;\n const form = this.getFornecedorForm(data);\n this.configureFornecedor(form);\n this.getFornecedores().push(form);\n return form;\n }\n\n public removeFornecedor(control: FormGroup) {\n this.confirmationService.confirm({\n header: this.translate.instant(\"yms.erp.remove_fornecedor_header\"),\n message: this.translate.instant(\"yms.erp.remove_fornecedor_message\"),\n accept: () => {\n const index = this.getFornecedores().controls.indexOf(control);\n this.getFornecedores().removeAt(index);\n }\n });\n }\n\n public getFornecedores() {\n return this.formGroup.get(\"fornecedores\") as FormArray;\n }\n\n public addContrato(fornecedorForm: FormGroup) {\n this.dialogService\n .open(ContratoFormComponent, {\n ...dialogConfig,\n header: 'Adicionar Contrato',\n data: {\n agenda: this.agenda,\n filial: this.formGroup.get(\"filial\").value,\n produto: this.formGroup.get(\"produto\").value,\n fornecedor: fornecedorForm.get(\"fornecedor\").value,\n contratos: fornecedorForm.get(\"contratos\").value,\n }\n })\n .onClose\n .pipe(takeUntil(this.ngUnsubscribe), filter(value => !!value))\n .subscribe(({ contrato }: any) => this.onContratoSaved(contrato, fornecedorForm));\n }\n\n public removerContrato(fornecedorForm: FormGroup, contratoForm: FormGroup) {\n this.confirmationService.confirm({\n header: this.translate.instant(\"yms.erp.remove_contrato_header\"),\n message: this.translate.instant(\"yms.erp.remove_contrato_message\"),\n accept: () => {\n const index = (fornecedorForm.get(\"contratos\") as FormArray).controls.indexOf(contratoForm);\n (fornecedorForm.get(\"contratos\") as FormArray).removeAt(index);\n }\n });\n }\n\n public getContratos(fornecedorForm: FormGroup) {\n this.contratos = fornecedorForm.get(\"contratos\")\n return this.contratos as FormArray;\n }\n\n public addNota(formGroup: FormGroup) {\n this.dialogService.open(NotaFormComponent, {\n header: this.translate.instant(\"yms.erp.adicionar_nota\"),\n ...dialogConfig,\n data: {\n fornecedor: formGroup.get(\"fornecedor\").value,\n produto: this.formGroup.get(\"produto\").value,\n filial: this.formGroup.get(\"filial\").value,\n fornecedorNotasTokens: this.fornecedorNotasTokens,\n contratos: this.contratos,\n }\n })\n .onClose\n .pipe(takeUntil(this.ngUnsubscribe), filter(value => !!value))\n .subscribe(value => this.onNotaSaved(value, formGroup));\n }\n\n public removerNota(fornecedorForm: FormGroup, contratoForm: FormGroup, notaForm: FormGroup) {\n this.confirmationService.confirm({\n header: this.translate.instant(\"yms.erp.remove_nota_header\"),\n message: this.translate.instant(\"yms.erp.remove_nota_message\"),\n accept: () => {\n const contratoId = contratoForm[\"value\"][\"contrato\"][\"id\"];\n const index = this.getNotasFromContratos(fornecedorForm, contratoId).controls.indexOf(notaForm);\n this.getNotasFromContratos(fornecedorForm, contratoId).removeAt(index);\n\n const nota = notaForm[\"value\"];\n this.fornecedorNotasTokens.push({\n id: nota.chaveNotaFiscal,\n label: nota.numeroNotaFiscal\n });\n this.fornecedorNotas.push({\n chaveNotaFiscal: nota.chaveNotaFiscal,\n serieNotaFiscal: nota.serieNotaFiscal,\n serieLegalNotaFiscal: nota.serieLegalNotaFiscal,\n numeroNotaFiscal: nota.numeroNotaFiscal,\n });\n }\n });\n }\n\n public getNotas(contratoForm: FormGroup) {\n return contratoForm[\"controls\"][\"notas\"] as FormArray;\n }\n\n public getItensContrato(contratoForm: FormGroup) {\n return contratoForm.get(\"itens\") as FormArray;\n }\n\n public showButtons() {\n if (!this.agenda) return false;\n return [\n StatusAgenda.AGENDADO,\n StatusAgenda.AGUARDANDO_CONFIRMACAO,\n StatusAgenda.AGUARDANDO_CONFIRMACAO_SOLICITANTE,\n StatusAgenda.REJEITADO_POR_VALIDACAO\n ].includes(this.agenda.status as StatusAgenda);\n }\n\n public disableAdicionarNota(): boolean {\n if (this.contratoSelecionado === null) {\n return true;\n }\n return false;\n }\n\n private getTipoTransgenia = () => {\n if ((this.formGroup.get(\"fornecedores\") as FormArray).length <= 0) {\n return TipoParticipanteTransgenia.NAO_INFORMADO;\n }\n const fornecedor = ((this.formGroup.get(\"fornecedores\") as FormArray).at(0) as FormGroup).getRawValue().fornecedor;\n return fornecedor ? (fornecedor.tipoParticipante || TipoParticipanteTransgenia.NAO_INFORMADO) : TipoParticipanteTransgenia.NAO_INFORMADO;\n };\n\n private getNotaForm(data: any = {}) {\n return this.formBuilder.group({\n chaveNotaFiscal: [data.chaveNotaFiscal],\n serieNotaFiscal: [data.serieNotaFiscal],\n serieLegalNotaFiscal: [data.serieLegalNotaFiscal],\n numeroNotaFiscal: [data.numeroNotaFiscal],\n });\n }\n\n private getContratoForm(data: any = {}) {\n return this.formBuilder.group({\n contrato: [data.contrato, Validators.required],\n itens: this.formBuilder.array([]),\n notas: this.formBuilder.array([])\n });\n }\n\n private getItemForm(data: any = {}) {\n return this.formBuilder.group({\n item: [data.item, Validators.required],\n quantidade: [data.quantidade]\n });\n }\n\n private getFornecedorForm(data: any = {}) {\n return this.formBuilder.group({\n fornecedor: [data.fornecedor, Validators.required],\n origemMercadoria: [data.origemMercadoria, Validators.compose([Validators.required])],\n tipoNotaFiscal: [data.tipoNotaFiscal || TipoNotaFiscal.EMPRESA_JURIDICA, Validators.compose([])],\n contratos: this.formBuilder.array([]),\n });\n }\n\n private getFormGroup() {\n return this.formBuilder.group({\n id: [{ value: undefined, disabled: true }, Validators.compose([])],\n filial: [undefined, Validators.required],\n produto: [{ value: undefined, disabled: true }, Validators.compose([Validators.required])],\n derivacao: [{ value: undefined, disabled: true }, Validators.compose([])],\n transportadora: [{ value: undefined, disabled: false }, Validators.compose([])],\n agenda: [{ value: this.agenda, disabled: false }, Validators.compose([Validators.required])],\n transgenia: [{ value: undefined, disabled: true }, Validators.compose([])],\n fornecedores: this.formBuilder.array([]),\n createdBy: [{ value: undefined, disabled: true }, Validators.compose([])],\n createdDate: [{ value: undefined, disabled: true }, Validators.compose([])],\n lastModifiedBy: [{ value: undefined, disabled: true }, Validators.compose([])],\n lastModifiedDate: [{ value: undefined, disabled: true }, Validators.compose([])],\n custom: [],\n });\n }\n\n private getFornecedorByContrato(contrato: ContratoCompraDto, fornecedorForm: FormGroup) {\n this.pessoaService.list({ size: 1, page: 0, filterQuery: `id eq '${contrato.pessoa.id}'` })\n .pipe(\n takeUntil(this.ngUnsubscribe),\n map(({ contents }) => (contents || []).length && contents[0]),\n filter(value => !!value)\n )\n .subscribe(pessoa => {\n fornecedorForm.get(\"fornecedor\").setValue(Pessoa.fromDto(pessoa));\n });\n }\n\n private getProdutoByContrato(contrato: ContratoCompraDto) {\n this.contratoCompraService.listItens(contrato.id, { size: 1, page: 0, displayFields: ['sku.id'] })\n .pipe(\n takeUntil(this.ngUnsubscribe),\n mergeMap(({ contents }) => {\n if (contents.length === 1) return this.produtoService.list({ size: 1, page: 0, filterQuery: `id eq '${contents[0].sku.id}'` })\n .pipe(\n takeUntil(this.ngUnsubscribe),\n map(({ contents }) => (contents || []).length && contents[0]),\n );\n return empty();\n }),\n filter(value => !!value)\n )\n .subscribe(produto => {\n this.formGroup.get(\"produto\").setValue(Produto.fromDto(produto));\n this.formGroup.get(\"produto\").disable();\n });\n }\n\n private onContratoSaved(contrato: any, fornecedorForm: FormGroup) {\n if (!this.formGroup.get(\"produto\").value) {\n this.getProdutoByContrato(contrato.contrato);\n }\n\n if (!fornecedorForm.get(\"fornecedor\").value) {\n this.getFornecedorByContrato(contrato.contrato, fornecedorForm);\n }\n\n const contratoForm = this.getContratoForm(contrato);\n (contrato.itens || []).forEach((item: any) => (contratoForm.get(\"itens\") as FormArray).push(this.getItemForm(item)));\n\n this.getContratos(fornecedorForm).push(contratoForm);\n }\n\n private mensagemContratoNaoSelecionado() {\n this.addMessage(\"error\", \"Contrato não selecionado\", \"Nenhum contrato foi selecionado!\");\n }\n\n private onNotaSaved(value: any, fornecedorForm: FormGroup) {\n\n if (this.contratoSelecionado === null) {\n this.mensagemContratoNaoSelecionado();\n return;\n }\n\n if (!value.addFornecedor) {\n const notasForm = this.getNotasFromContratos(fornecedorForm, this.contratoSelecionado.id);\n if (notasForm !== null) {\n notasForm.push(this.getNotaForm(value));\n }\n return;\n }\n\n const existsFornecedor = (this.formGroup.get(\"fornecedores\") as FormArray).controls.find((form) => (form.value.fornecedor || { id: undefined }).id === value.fornecedor.id);\n const fornecedorOfGroup = this.validarCnpjFornecedor((fornecedorForm.value.fornecedor || { cpfCnpj: undefined }).cpfCnpj);\n const { infoNota } = value;\n const notaForm = this.getNotaForm({ \n chaveNotaFiscal: infoNota.chave,\n serieNotaFiscal: infoNota.serie,\n serieLegalNotaFiscal: infoNota.serieLegal,\n numeroNotaFiscal: infoNota.numero,\n });\n\n if (!!existsFornecedor) {\n const notasForm = this.getNotasFromContratos(existsFornecedor, this.contratoSelecionado.id);\n notasForm.push(notaForm);\n } else if (!fornecedorForm.get(\"fornecedor\").value) {\n fornecedorForm.get(\"fornecedor\").setValue(Pessoa.fromDto(value.fornecedor));\n fornecedorForm.get(\"origemMercadoria\").setValue(PessoaEndereco.fromDto(value.origemMercadoria));\n const notasForm = this.getNotasFromContratos(fornecedorForm, this.contratoSelecionado.id);\n notasForm.push(notaForm);\n } else if (fornecedorOfGroup) {\n this.confirmationService.confirm({\n header: 'Fornecedor do mesmo grupo já cadastrado',\n message: 'Um fornecedor do mesmo grupo parece já ter sido selecionado, deseja vincular a nota ao mesmo fornecedor?',\n accept: () => {\n const notasForm = this.getNotasFromContratos(fornecedorOfGroup, this.contratoSelecionado.id);\n notasForm.push(notaForm);\n },\n reject: () => {\n const fornecedor = this.addFornecedor({ fornecedor: Pessoa.fromDto(value.fornecedor), origemMercadoria: PessoaEndereco.fromDto(value.origemMercadoria) });\n const notasForm = this.getNotasFromContratos(fornecedor, this.contratoSelecionado.id);\n notasForm.push(notaForm);\n }\n });\n } else {\n const fornecedor = this.addFornecedor({ fornecedor: Pessoa.fromDto(value.fornecedor), origemMercadoria: PessoaEndereco.fromDto(value.origemMercadoria) });\n const notasForm = this.getNotasFromContratos(fornecedor, this.contratoSelecionado.id);\n notasForm.push(notaForm);\n }\n }\n\n public getNotasFromContratos(fornecedorForm: AbstractControl, contratoId: any) {\n let contratosFormSelecionado = null;\n const contratosForm = fornecedorForm[\"controls\"][\"contratos\"][\"controls\"];\n\n for (let contratoForm of contratosForm) {\n if (contratoForm[\"controls\"][\"contrato\"][\"value\"].id === contratoId) {\n contratosFormSelecionado = contratoForm[\"controls\"][\"notas\"];\n }\n }\n return contratosFormSelecionado as FormArray;\n }\n\n public addFornecedorNotasTokenEmContrato(fornecedorForm: FormGroup, token: IToken) {\n if (this.contratoSelecionado === null) {\n this.mensagemContratoNaoSelecionado();\n return;\n }\n\n const notas = this.fornecedorNotas.filter(fornecedorNota => fornecedorNota.chaveNotaFiscal === token.id);\n const notasForm = this.getNotasFromContratos(fornecedorForm, this.contratoSelecionado.id);\n if (notasForm !== null && notas[0] !== null) {\n notasForm.push(this.getNotaForm(notas[0]));\n }\n\n this.removeFornecedorNotasTokenDoContrato(token);\n }\n\n public removeFornecedorNotasTokenDoContrato(token: IToken) {\n this.fornecedorNotasTokens.splice(this.fornecedorNotasTokens.indexOf(token), 1);\n this.fornecedorNotas = this.fornecedorNotas.filter(fornecedorNota => fornecedorNota.chaveNotaFiscal !== token.id);\n }\n\n private adicionarNovaNota(response: PesquisarDocumentoResponse) {\n const value = (response.documentos || []).length ? response.documentos[0] : undefined;\n if (!value) return;\n\n const itemProduto = value.itens[0] || { produto: undefined, derivacao: undefined } as any;\n const produto = Produto.fromDto(itemProduto.produto);\n\n if (!this.formGroup.get(\"produto\").value && !!itemProduto.produto) {\n this.formGroup.get(\"produto\").setValue(produto);\n this.formGroup.get(\"derivacao\").setValue(Derivacao.fromDto(itemProduto.derivacao));\n } else if (!!itemProduto.produto && !this.validateProduto(produto)) {\n this.addNotaError();\n return;\n }\n\n const fornecedor = Pessoa.fromDto(value.fornecedor);\n const origemMercadoria = PessoaEndereco.fromDto(value.origemMercadoria);\n\n const fornecedorForm = this.getFornecedores().controls.find(({ value }) => value.fornecedor.id === fornecedor.id) as FormGroup;\n const fornecedorOfGroup = this.validarCnpjFornecedor(fornecedor.cpfCnpj);\n\n if (fornecedorOfGroup) {\n this.confirmationService.confirm({\n header: 'Fornecedor do mesmo grupo já cadastrado',\n message: 'Um fornecedor do mesmo grupo parece já ter sido selecionado, deseja vincular a nota ao mesmo fornecedor?',\n accept: () => {\n this.addFornecedorNotasToken(value);\n },\n reject: () => {\n if (!fornecedorForm) {\n this.addFornecedor({ fornecedor, origemMercadoria });\n }\n this.addFornecedorNotasToken(value);\n }\n });\n\n } else if (!fornecedorForm) {\n this.addFornecedor({ fornecedor, origemMercadoria });\n this.addFornecedorNotasToken(value);\n }\n }\n\n private addFornecedorNotasToken(value: any) {\n this.fornecedorNotasTokens.push({ id: this.chaveNotaFiscal, label: value.numero });\n\n this.fornecedorNotas.push({\n chaveNotaFiscal: this.chaveNotaFiscal,\n serieNotaFiscal: value.serie,\n serieLegalNotaFiscal: value.serieLegal,\n numeroNotaFiscal: value.numero,\n });\n\n this.chaveNotaFiscal = undefined;\n this.loading = false;\n }\n\n private removeNotaError() {\n this.erroChaveNota = false;\n }\n\n private addNotaError() {\n this.erroChaveNota = true;\n }\n\n private validateProduto(produto: Produto) {\n const { value } = this.formGroup.get(\"produto\");\n if (value.id !== produto.id) {\n return false;\n }\n return true;\n }\n\n private getFilialSearchFields() {\n return [\n new FormField({\n name: \"codigo\",\n label: this.translate.instant(\"yms.erp.filial_codigo\"),\n type: FieldType.Integer\n }),\n new FormField({\n name: \"nome\",\n label: this.translate.instant(\"yms.erp.filial_nome\"),\n type: FieldType.String\n }),\n ];\n }\n\n private getFornecedorSearchFields() {\n return [\n new FormField({\n name: \"codigo\",\n label: this.translate.instant(\"yms.erp.pessoa_codigo\"),\n type: FieldType.Integer,\n }),\n new FormField({\n name: \"nome\",\n label: this.translate.instant(\"yms.erp.pessoa_nome\"),\n type: FieldType.String,\n }),\n new FormField({\n name: \"cpfCnpj\",\n label: this.translate.instant(\"yms.erp.pessoa_cpfCnpj\"),\n type: FieldType.String,\n }),\n ];\n }\n\n private getFornecedorSearchGridFields() {\n return [\n new FormField({\n name: \"codigo\",\n label: this.translate.instant(\"yms.erp.pessoa_codigo\"),\n type: FieldType.Integer,\n }),\n new FormField({\n name: \"nome\",\n label: this.translate.instant(\"yms.erp.pessoa_nome\"),\n type: FieldType.String,\n }),\n new FormField({\n name: \"cpfCnpj\",\n label: this.translate.instant(\"yms.erp.pessoa_cpfCnpj\"),\n type: FieldType.String,\n }),\n ];\n }\n\n private getOrigemMercadoriaFields() {\n return [\n new FormField({\n name: \"codigo\",\n label: this.translate.instant(\"yms.erp.pessoa_endereco_codigo\"),\n type: FieldType.Integer\n }),\n new FormField({\n name: \"cep\",\n label: this.translate.instant(\"yms.erp.pessoa_endereco_cep\"),\n type: FieldType.String\n }),\n new FormField({\n name: \"endereco\",\n label: this.translate.instant(\"yms.erp.pessoa_endereco_endereco\"),\n type: FieldType.String\n }),\n new FormField({\n name: \"numero\",\n label: this.translate.instant(\"yms.erp.pessoa_endereco_numero\"),\n type: FieldType.String\n }),\n new FormField({\n name: \"bairro\",\n label: this.translate.instant(\"yms.erp.pessoa_endereco_bairro\"),\n type: FieldType.String\n }),\n ];\n }\n\n private getOrigemMercadoriaGridFields() {\n return [\n new FormField({\n name: \"codigo\",\n label: this.translate.instant(\"yms.erp.pessoa_endereco_codigo\"),\n type: FieldType.Integer\n }),\n new FormField({\n name: \"cep\",\n label: this.translate.instant(\"yms.erp.pessoa_endereco_cep\"),\n type: FieldType.String\n }),\n new FormField({\n name: \"endereco\",\n label: this.translate.instant(\"yms.erp.pessoa_endereco_endereco\"),\n type: FieldType.String\n }),\n new FormField({\n name: \"numero\",\n label: this.translate.instant(\"yms.erp.pessoa_endereco_numero\"),\n type: FieldType.String\n }),\n new FormField({\n name: \"bairro\",\n label: this.translate.instant(\"yms.erp.pessoa_endereco_bairro\"),\n type: FieldType.String\n }),\n new FormField({\n name: \"empresa.descricao\",\n label: this.translate.instant(\"yms.erp.empresa\"),\n type: FieldType.String\n })\n ];\n }\n\n private getProdutoSearchFields() {\n return [\n new FormField({\n name: \"codigo\",\n label: this.translate.instant(\"yms.erp.produto_codigo\"),\n type: FieldType.String,\n }),\n new FormField({\n name: \"descricao\",\n label: this.translate.instant(\"yms.erp.produto_descricao\"),\n type: FieldType.String,\n })\n ];\n }\n\n private getProdutoSearchGridFields() {\n return [\n new FormField({\n name: \"codigo\",\n label: this.translate.instant(\"yms.erp.produto_codigo\"),\n type: FieldType.String,\n }),\n new FormField({\n name: \"descricao\",\n label: this.translate.instant(\"yms.erp.produto_descricao\"),\n type: FieldType.String,\n }),\n new FormField({\n name: \"descricaoComplementar\",\n label: this.translate.instant(\"yms.erp.produto_descricao_complementar\"),\n type: FieldType.String,\n }),\n ];\n }\n\n private getAgendaSearchFields() {\n return [\n new FormField({\n name: \"descricao\",\n label: this.translate.instant(\"yms.erp.agenda_descricao\"),\n type: FieldType.String,\n }),\n ];\n }\n\n private getAgendaSearchGridFields() {\n return [\n new FormField({\n name: \"descricao\",\n label: this.translate.instant(\"yms.erp.agenda_descricao\"),\n type: FieldType.String,\n }),\n ];\n }\n\n private getDerivacaoSearchFields() {\n return [\n new FormField({\n name: \"codigo\",\n label: this.translate.instant(\"yms.erp.derivacao_codigo\"),\n type: FieldType.String,\n }),\n new FormField({\n name: \"descricao\",\n label: this.translate.instant(\"yms.erp.derivacao_descricao\"),\n type: FieldType.String,\n }),\n ];\n }\n\n private getDerivacaoSearchGridFields() {\n return [\n new FormField({\n name: \"codigo\",\n label: this.translate.instant(\"yms.erp.derivacao_codigo\"),\n type: FieldType.String,\n }),\n new FormField({\n name: \"descricao\",\n label: this.translate.instant(\"yms.erp.derivacao_descricao\"),\n type: FieldType.String,\n }),\n ];\n }\n\n private getTransportadoraSearchFields() {\n return [\n new FormField({\n name: \"codigo\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.transportadora_codigo\")\n }),\n new FormField({\n name: \"pessoa.nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.transportadora_descricao\")\n }),\n new FormField({\n name: \"pessoa.cpfCnpj\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.transportadora_cnpj\")\n })\n ];\n }\n\n private getTransportadoraSearchGridFields() {\n return [\n new FormField({\n name: \"codigo\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.transportadora_codigo\")\n }),\n new FormField({\n name: \"pessoa.nome\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.pessoa_nome\")\n }),\n new FormField({\n name: \"pessoa.cpfCnpj\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.transportadora_cnpj\")\n })\n ];\n }\n\n private getTransgeniaSearchFields() {\n return [\n new FormField({\n name: \"codigo\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.transgenia_codigo\")\n }),\n new FormField({\n name: \"descricao\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.transgenia_descricao\")\n }),\n ];\n }\n\n private getTransgeniaSearchGridFields() {\n return [\n new FormField({\n name: \"codigo\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.transgenia_codigo\")\n }),\n new FormField({\n name: \"descricao\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.transgenia_descricao\")\n }),\n ];\n }\n\n private goBack() {\n const previousRoute = \"../\";\n this.router.navigate([previousRoute], { relativeTo: this.route.parent });\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 else if (control instanceof FormArray) control.controls.forEach(form => this.validateAllFormFields(form as FormGroup));\n });\n\n this.focusService.focusFirstInvalidInput();\n }\n\n private getSaveObservable() {\n const value = this.formGroup.getRawValue();\n value.agenda = this.agenda;\n const recebimentoDto = RecebimentoContrato.toDto(value);\n\n let observable;\n\n if (this.isNew() && !value.id) {\n observable = this.recebimentoService.insert(recebimentoDto);\n } else {\n const id = value.id;\n observable = this.recebimentoService.update(id, recebimentoDto);\n }\n\n return observable;\n }\n\n private getDeleteObservable() {\n return this.recebimentoService.delete('').pipe(\n tap(() => {\n this.addMessage(\"success\", \"yms.erp.deleted_message_title\", \"yms.erp.deleted_message_content\");\n this.goBack();\n })\n );\n }\n\n private validateVisualization() {\n if (!userCanVisualize(this.formGroup, this.allPermissions)) {\n this.addMessage(\"error\", \"yms.erp.cannot_visualize_form_summary\", \"yms.erp.cannot_visualize_form_detail\");\n }\n }\n\n private addMessage(severity: string, summary: string, detail: string) {\n this.messageService.add({\n severity,\n summary: this.translate.instant(summary),\n detail: this.translate.instant(detail),\n });\n }\n\n private onFilialValueChange = (filial: Filial) => {\n this.disableOrdersButtons = !filial;\n if (!filial && this.isNew()) {\n this.formGroup.get(\"produto\").setValue(undefined);\n this.formGroup.get(\"produto\").disable();\n this.formGroup.get(\"transgenia\").setValue(undefined);\n this.formGroup.get(\"transgenia\").disable();\n return;\n }\n\n this.formGroup.get(\"produto\").enable();\n this.formGroup.get(\"transgenia\").enable();\n }\n\n private buscarFilial() {\n const planta = this.agenda.planta || { cnpj: [] };\n if (planta.cnpj.length !== 1) {\n this.formCarregado = true;\n return;\n }\n\n this.filialService\n .list({\n page: 0,\n size: 1,\n filterQuery: `pessoa.cpfCnpj eq '${planta.cnpj[0]}'`,\n displayFields: ['*', 'empresa.nome']\n })\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(({ contents }) => {\n if (contents.length === 1) {\n this.formGroup.get(\"filial\").setValue(Filial.fromDto(contents[0]));\n }\n this.formCarregado = true;\n });\n }\n\n private configureFornecedor(fornecedorForm: FormGroup) {\n fornecedorForm.get(\"fornecedor\")\n .valueChanges\n .pipe(\n takeUntil(this.ngUnsubscribe),\n debounceTime(500),\n tap(value => {\n if (value) {\n if (this.ehPessoaJuridica(value)) {\n fornecedorForm.get(\"tipoNotaFiscal\").setValue(TipoNotaFiscal.EMPRESA_JURIDICA);\n fornecedorForm.get(\"tipoNotaFiscal\").enable();\n return;\n } else {\n fornecedorForm.get(\"tipoNotaFiscal\").setValue(TipoNotaFiscal.PRODUTOR_RURAL);\n fornecedorForm.get(\"tipoNotaFiscal\").disable();\n return;\n }\n }\n fornecedorForm.get(\"tipoNotaFiscal\").setValue(TipoNotaFiscal.EMPRESA_JURIDICA);\n fornecedorForm.get(\"tipoNotaFiscal\").disable();\n }),\n filter(value => {\n if (!value) {\n\n this.formGroup.get(\"transgenia\").setValue(null);\n this.formGroup.get(\"transgenia\").disable();\n return false;\n }\n return true;\n }),\n mergeMap(value => this.pessoaEnderecoService.list({ size: 10, page: 0, filterQuery: `situacao eq 'ATIVO' and pessoa.id eq '${value.id}'` })\n .pipe(takeUntil(this.ngUnsubscribe))\n )\n )\n .subscribe(({ contents }) => {\n this.formGroup.get(\"transgenia\").enable();\n\n if (contents.length === 1) {\n fornecedorForm.get(\"origemMercadoria\").setValue(PessoaEndereco.fromDto(contents[0]));\n }\n else {\n fornecedorForm.get(\"origemMercadoria\").setValue(undefined);\n fornecedorForm.get(\"origemMercadoria\").enable();\n }\n });\n }\n\n private ehPessoaJuridica(pessoa: Pessoa) {\n const cpfCnpj = (pessoa.cpfCnpj || \"\").replace(/\\D+/g, \"\");\n return cpfCnpj.length > 11;\n }\n\n private mensagemBuscandoNota() {\n this.messageService.add({\n severity: 'info',\n summary: 'Buscando dados da nota',\n detail: 'Aguarde, buscando dados da nota',\n life: 5000\n });\n }\n\n private validarCnpjFornecedor(value: string) {\n if (!this.ehPessoaJuridica({ cpfCnpj: value } as Pessoa)) return false;\n const fornecedor = (this.formGroup.get(\"fornecedores\") as FormArray).controls.find((form) => {\n return ((form.value.fornecedor || { cpfCnpj: '' }).cpfCnpj as string).substring(0, 8) === value.substring(0, 8)\n });\n return fornecedor;\n }\n}\n\nexport interface ContratoItem {\n item: ContratoCompraItem;\n quantidade: number;\n}\n","import { Component, Input, AfterViewInit } from \"@angular/core\";\nimport { RecebimentoContratoService } from \"../../core/entities/recebimento-contrato/recebimento.service\";\nimport { Subject, throwError, of } from \"rxjs\";\nimport { takeUntil, switchMap, finalize } from \"rxjs/operators\";\nimport { RecebimentoContratoDto } from \"../../core/entities/recebimento-contrato/recebimento-dto\";\nimport { RecebimentoContrato } from \"../../core/entities/recebimento-contrato/recebimento\";\n\n@Component({\n selector: \"recebimento-info\",\n template: `\n <div *sLoadingState=\"loading\" style=\"padding: 20px;\">\n <div class=\"detail-pane\" *ngIf=\"agenda\">\n <div class=\"detail-span\">\n <span class=\"title\">\n {{ \"yms.erp.recebimento_filial\" | translate }}\n </span>\n <span class=\"data\">\n {{ recebimento?.filial?.codigo }} - {{ recebimento?.filial?.nome }}\n </span>\n </div>\n <div class=\"detail-span\">\n <span class=\"title\">\n {{ \"yms.erp.recebimento_produto\" | translate }}\n </span>\n <span class=\"data\">{{ recebimento?.produto?.descricao }}</span>\n </div>\n <div class=\"detail-span\">\n <span class=\"title\">\n {{ \"yms.erp.recebimento_derivacao\" | translate }}\n </span>\n <span class=\"data\">{{ recebimento?.derivacao?.descricao }}</span>\n </div>\n </div>\n <div *ngFor=\"let fornecedor of recebimento?.fornecedores\">\n <div class=\"separator\"></div>\n <h3>Fornecedor - {{ fornecedor?.fornecedor?.nome }}</h3>\n <div class=\"detail-pane\">\n <div class=\"detail-span\">\n <span class=\"title\">\n {{ \"yms.erp.recebimento_origem_mercadoria\" | translate }}\n </span>\n <span class=\"data\">\n {{ fornecedor?.origemMercadoria?.codigo }} - {{ fornecedor?.origemMercadoria?.cep }}\n </span>\n </div>\n </div>\n\n <div>\n <h4>Contratos</h4>\n <p-accordion>\n <p-accordionTab *ngFor=\"let contrato of fornecedor.contratos\">\n <p-header>\n Contrato {{ contrato?.contrato?.numero }}, Filial {{ contrato?.contrato?.filial?.codigo }}\n </p-header>\n\n <div class=\"detail-pane\" *ngFor=\"let item of contrato?.itens\">\n <div class=\"detail-span\">\n <span class=\"title\">Sequência</span>\n <span class=\"data\">{{ item?.item?.sequencia }}</span>\n </div>\n </div>\n\n <div *ngFor=\"let nota of contrato.notas\">\n <div class=\"detail-pane\">\n <div class=\"detail-span\">\n <span class=\"title\">Chave nota fiscal</span>\n <span class=\"data\">{{ nota?.chaveNotaFiscal }}</span>\n </div>\n <div class=\"detail-span\">\n <span class=\"title\">Serie nota fiscal</span>\n <span class=\"data\">{{ nota?.serieNotaFiscal }}</span>\n </div>\n <div class=\"detail-span\">\n <span class=\"title\">Serie legal nota fiscal</span>\n <span class=\"data\">{{ nota?.serieLegalNotaFiscal }}</span>\n </div>\n <div class=\"detail-span\">\n <span class=\"title\">Número nota fiscal</span>\n <span class=\"data\">{{ nota?.numeroNotaFiscal }}</span>\n </div>\n </div>\n <hr />\n </div>\n </p-accordionTab>\n </p-accordion>\n </div>\n </div>\n </div>\n `,\n styleUrls: [\"./recebimento-info.component.scss\"],\n})\nexport class RecebimentoInfoComponent implements AfterViewInit {\n @Input() agenda: any;\n\n recebimento: RecebimentoContrato;\n loading = true;\n\n private readonly unsubscribe$: Subject<void>;\n constructor(private recebimentoService: RecebimentoContratoService) {\n this.unsubscribe$ = new Subject();\n }\n\n ngAfterViewInit() {\n this.recebimentoService\n .list({\n filterQuery: `agenda.id eq '${this.agenda.id}'`,\n page: 0,\n size: 1,\n })\n .pipe(\n takeUntil(this.unsubscribe$),\n switchMap(({ contents }) => {\n if (!contents.length)\n return throwError(\"Recebimento não encontrado.\");\n\n return of(contents[0]);\n }),\n finalize(() => (this.loading = false))\n )\n .subscribe((recebimento: RecebimentoContratoDto) => {\n this.recebimento = RecebimentoContrato.fromDto(recebimento);\n });\n }\n}\n","import { VerificaNotafiscal } from './core/verifica-nota-fiscal/verificaNotaFiscal';\nimport { OrdemCompraFormComponent } from './recebimento-ordem-compra/ordem-compra-form/ordem-compra-form.component';\nimport { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { ButtonModule, ControlErrorsModule, CustomFieldsModule, DynamicFormModule, EmptyStateModule, LoadingStateModule, LocaleModule, NumberInputModule, TokenListModule } from \"@seniorsistemas/angular-components\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\nimport { IntegrationDispatcher, IntegrationModule } from \"@seniorsistemas/yms-routines\";\nimport { HighlightModule } from \"ngx-highlightjs\";\nimport { AccordionModule } from \"primeng/accordion\";\nimport { DynamicDialogModule } from \"primeng/components/dynamicdialog/dynamicdialog\";\nimport { ConfirmDialogModule } from \"primeng/confirmdialog\";\nimport { DialogModule } from \"primeng/dialog\";\nimport { DropdownModule } from \"primeng/dropdown\";\nimport { InputTextModule } from \"primeng/inputtext\";\nimport { PanelModule } from \"primeng/panel\";\nimport { TabViewModule } from \"primeng/primeng\";\nimport { TableModule } from \"primeng/table\";\nimport { FieldCustomizationService } from \"../utils/field-customization.service\";\nimport { FocusService } from \"../utils/focus.service\";\nimport { NotaFormModule } from \"./components/nota-form/nota-form.module\";\nimport { CoreModule } from \"./core/core.module\";\nimport { HotkeyModule } from \"angular2-hotkeys\";\nimport { DevolucaoChegadaVeiculoOverride } from \"./devolucao/devolucao-chegada-veiculo.override\";\nimport { DevolucaoFormComponent } from \"./devolucao/form/devolucao-form.component\";\nimport { DevolucaoInfoComponent } from \"./devolucao/info/info/devolucao-info.component\";\nimport { ExpedicaoChegadaVeiculoOverride } from \"./expedicao/expedicao-chegada-veiculo.override\";\nimport { ExpedicaoFormComponent } from \"./expedicao/form/expedicao-form.component\";\nimport { ExpedicaoInfoComponent } from \"./expedicao/info/expedicao-info.component\";\nimport { FormComponent } from \"./form/form.component\";\nimport { InfoComponent } from \"./info/info.component\";\nimport { LogIntegracaoComponent } from \"./log-integracao/log-integracao.component\";\nimport { ProcessoAvulsoFormComponent } from \"./processo-avulso/form/processo-avulso-form.component\";\nimport { ProcessoAvulsoInfoComponent } from \"./processo-avulso/info/processo-avulso-info.component\";\nimport { ProcessoAvulsoChegadaVeiculoOverride } from \"./processo-avulso/processo-avulso-chegada-veiculo.override\";\nimport { RecebimentoOrdemCompraFormComponent } from \"./recebimento-ordem-compra/form/recebimento-ordem-compra-form.component\";\nimport { RecebimentoOrdemCompraInfoComponent } from \"./recebimento-ordem-compra/info/recebimento-ordem-compra-info.component\";\nimport { RecebimentoOrdemCompraChegadaVeiculoOverride } from \"./recebimento-ordem-compra/recebimento-ordem-compra-chegada-veiculo.override\";\nimport { ContratoFormComponent } from \"./recebimento/contrato-form/contrato-form.component\";\nimport { RecebimentoFormComponent } from \"./recebimento/form/recebimento-form.component\";\nimport { RecebimentoInfoComponent } from \"./recebimento/info/recebimento-info.component\";\nimport { RecebimentoChegadaVeiculoOverride } from \"./recebimento/recebimento-chegada-veiculo.override\";\n\nimport jsonx from 'highlight.js/lib/languages/json';\nimport xmlx from 'highlight.js/lib/languages/xml'\n\nexport function highlightLanguages() {\n return [\n { name: 'json', func: jsonx },\n { name: 'xml', func: xmlx }\n ];\n}\n\n@NgModule({\n declarations: [ \n FormComponent, \n RecebimentoFormComponent, \n ExpedicaoFormComponent,\n InfoComponent,\n ExpedicaoInfoComponent,\n RecebimentoInfoComponent,\n DevolucaoFormComponent,\n RecebimentoOrdemCompraFormComponent,\n RecebimentoOrdemCompraInfoComponent,\n DevolucaoInfoComponent,\n ContratoFormComponent,\n OrdemCompraFormComponent,\n ProcessoAvulsoFormComponent,\n ProcessoAvulsoInfoComponent,\n LogIntegracaoComponent\n ],\n entryComponents: [ FormComponent, InfoComponent, ContratoFormComponent, OrdemCompraFormComponent, LogIntegracaoComponent ],\n exports: [ FormComponent, InfoComponent ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TranslateModule,\n CustomFieldsModule,\n ControlErrorsModule,\n DialogModule,\n EmptyStateModule,\n DynamicFormModule,\n TokenListModule,\n PanelModule,\n AccordionModule,\n InputTextModule,\n DropdownModule,\n ButtonModule,\n LoadingStateModule,\n NumberInputModule,\n ConfirmDialogModule,\n LocaleModule,\n IntegrationModule,\n CoreModule,\n PermissionsModule,\n DynamicDialogModule,\n NotaFormModule,\n AccordionModule,\n TableModule,\n TabViewModule,\n LoadingStateModule,\n HighlightModule.forRoot({\n languages: highlightLanguages\n }),\n HotkeyModule.forRoot(),\n ],\n providers: [ \n FieldCustomizationService, \n FocusService, \n RecebimentoChegadaVeiculoOverride, \n ExpedicaoChegadaVeiculoOverride, \n DevolucaoChegadaVeiculoOverride,\n RecebimentoOrdemCompraChegadaVeiculoOverride, \n ProcessoAvulsoChegadaVeiculoOverride,\n VerificaNotafiscal\n ]\n})\nexport class ErpSeniorModule { \n constructor(private dispatcher: IntegrationDispatcher) {\n this.dispatcher\n .dispatch(FormComponent)\n .dispatch(InfoComponent)\n .dispatch(LogIntegracaoComponent)\n }\n}"],"names":["tslib_1.__decorate","tslib_1.__param","MessageService","moment","ConfirmationService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"seniorsistemas-yms-integration.js","sources":["ng://@seniorsistemas/yms-integration/src/websocket.ts","ng://@seniorsistemas/yms-integration/src/service.ts","ng://@seniorsistemas/yms-integration/src/devices/cancelas/cancelas.service.ts","ng://@seniorsistemas/yms-integration/src/devices/cancelas/controlador-cancela/controlador-cancela.component.ts","ng://@seniorsistemas/yms-integration/src/devices/cancelas/cancelas.module.ts","ng://@seniorsistemas/yms-integration/src/devices/balancas/balancas.service.ts","ng://@seniorsistemas/yms-integration/src/devices/balancas/visualiar-balanca/visualizar-balanca.component.ts","ng://@seniorsistemas/yms-integration/src/stomp.config.ts","ng://@seniorsistemas/yms-integration/src/devices/balancas/balancas.module.ts","ng://@seniorsistemas/yms-integration/src/devices/cameras/cameras.service.ts","ng://@seniorsistemas/yms-integration/src/devices/cameras/view-image/view-image.component.ts","ng://@seniorsistemas/yms-integration/src/devices/cameras/snapshot/snapshot.component.ts","ng://@seniorsistemas/yms-integration/src/devices/cameras/cameras.module.ts","ng://@seniorsistemas/yms-integration/src/devices/lpr/lpr.service.ts","ng://@seniorsistemas/yms-integration/src/devices/lpr/lpr.module.ts","ng://@seniorsistemas/yms-integration/src/devices/logs/logs.service.ts","ng://@seniorsistemas/yms-integration/src/devices/logs/logs.component.ts","ng://@seniorsistemas/yms-integration/src/devices/logs/logs.module.ts","ng://@seniorsistemas/yms-integration/src/devices/portarias/portarias.service.ts","ng://@seniorsistemas/yms-integration/src/devices/portarias/portarias.component.ts","ng://@seniorsistemas/yms-integration/src/devices/portarias/agendas/agendas.component.ts","ng://@seniorsistemas/yms-integration/src/devices/portarias/confirmacao/confirmacao.component.ts","ng://@seniorsistemas/yms-integration/src/devices/portarias/entrada/entrada.component.ts","ng://@seniorsistemas/yms-integration/src/devices/portarias/portarias.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/entity-service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/injectors.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/agenda/agenda.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/recebimento-contrato/recebimento.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/recebimento/recebimento-chegada-veiculo.override.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/expedicao/expedicao.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/expedicao/expedicao-chegada-veiculo.override.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/integration.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/form/form.component.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/info/info.component.ts","ng://@seniorsistemas/yms-integration/src/utils/field-customization.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/verifica-nota-fiscal/verificaNotaFiscal.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/ordem-compra/ordem-compra.service.ts","ng://@seniorsistemas/yms-integration/src/utils/utils.ts","ng://@seniorsistemas/yms-integration/src/utils/lookup-utils.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/empresa/empresa.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/pessoa/pessoa.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/pessoa-juridica/pessoa-juridica.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/pais/pais.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/estado/estado.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/cidade/cidade.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/pessoa-endereco/pessoa-endereco.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/filial/filial.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/ordem-compra/ordem-compra.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/recebimento-ordem-compra/ordem-compra-form/ordem-compra-form.component.ts","ng://@seniorsistemas/yms-integration/src/utils/focus.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/nota-validator.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/components/nota-form/nota-form.component.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/components/nota-form/nota-form.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/agenda/agenda.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/cidade/cidade.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/cidade/cidade.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/contrato-compra-item/contrato-compra-item.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/contrato-compra-item/contrato-compra-item.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/contrato-compra/contrato-compra.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/contrato-compra/contrato-compra.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/derivacao/derivacao.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/derivacao/derivacao.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/empresa/empresa.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/empresa/empresa.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/estado/estado.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/estado/estado.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/familia-produto/familia-produto.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/familia-produto/familia-produto.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/filial/filial.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/filial/filial.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/pais/pais.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/pais/pais.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/pedido-venda-item/pedido-venda-item.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/pedido-venda-item/pedido-venda-item.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/pedido-venda/pedido-venda.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/pedido-venda/pedido-venda.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/pessoa-endereco/pessoa-endereco.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/pessoa-endereco/pessoa-endereco.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/pessoa-fisica/pessoa-fisica.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/pessoa-fisica/pessoa-fisica.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/pessoa-juridica/pessoa-juridica.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/pessoa-juridica/pessoa-juridica.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/pessoa/pessoa.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/pessoa/pessoa.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/produto/produto.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/produto/produto.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/has-change/has-change-service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/erp-process-data/erp-process-data.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/erp-process-data/erp-process-service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/erp-form-config/erp-form-config-service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/recebimento-contrato/recebimento.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/royalty/royalty.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/royalty/royalty.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/safra/safra.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/safra/safra.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/transportadora/transportadora.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/transportadora/transportadora.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/unidade-medida/unidade-medida.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/unidade-medida/unidade-medida.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/expedicao/expedicao.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/devolucao/devolucao.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/devolucao/devolucao.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/ordem-compra/ordem-compra.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/recebimento-ordem-compra/recebimento-ordem-compra.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/recebimento-ordem-compra/recebimento-ordem-compra.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/transgenia/transgenia.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/transgenia/transgenia.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/processo-avulso/processo-avulso.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/processo-avulso/processo-avulso.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/log-integracao/log-integracao.service.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/log-integracao/log-integracao.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/core.module.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/devolucao/devolucao-chegada-veiculo.override.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/agenda/agenda.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/unidade-medida/unidade-medida.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/royalty/royalty.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/familia-produto/familia-produto.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/produto/produto.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/derivacao/derivacao.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/transportadora/transportadora.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/devolucao/devolucao.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/enums/status-agenda.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/devolucao/form/devolucao-form.component.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/devolucao/info/info/devolucao-info.component.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/expedicao/expedicao.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/expedicao/form/expedicao-form.component.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/expedicao/info/expedicao-info.component.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/log-integracao/log-integracao.component.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/processo-avulso/processo-avulso.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/processo-avulso/processo-avulso-chegada-veiculo.override.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/processo-avulso/form/processo-avulso-form.component.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/processo-avulso/info/processo-avulso-info.component.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/safra/safra.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/recebimento-ordem-compra/recebimento-ordem-compra.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/recebimento-ordem-compra/recebimento-ordem-compra-chegada-veiculo.override.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/recebimento-ordem-compra/form/recebimento-ordem-compra-form.component.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/recebimento-ordem-compra/info/recebimento-ordem-compra-info.component.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/contrato-compra/contrato-compra.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/contrato-compra-item/contrato-compra-item.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/recebimento/contrato-form/contrato-form.component.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/transgenia/transgenia.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/entities/recebimento-contrato/recebimento.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/enums/tipo-nota-fiscal.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/enums/tipo-participante-transgenia.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/recebimento/form/recebimento-form.component.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/recebimento/info/recebimento-info.component.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/erp-senior.module.ts"],"sourcesContent":["import { StompService, StompState } from \"@stomp/ng2-stompjs\";\nimport { CookieService } from \"ngx-cookie-service\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\n\nexport class IntegrationWebSocket {\n private _subscriptionUrl: string;\n private _unsubscribe$: Subject<void>;\n constructor(private _client: StompService, _cookieService: CookieService, _service: string) {\n const tokenObject = JSON.parse(_cookieService.get(\"com.senior.token\")); \n const token = tokenObject.access_token;\n const tenant = tokenObject.username.split(\"@\")[1];\n this._subscriptionUrl = `/topic/${tenant}/${token}/yms/${_service}/`;\n this._unsubscribe$ = new Subject();\n }\n\n public connect(callback: (url: string, client: StompService, state?: StompState) => void): void {\n this._client.connectObservable\n .pipe(takeUntil(this._unsubscribe$))\n .subscribe((state) => callback(this._subscriptionUrl, this._client, state));\n }\n\n public dispose() {\n this._unsubscribe$.next();\n this._unsubscribe$.complete();\n }\n}","import { catchError } from \"rxjs/operators\";\nimport { HttpParams } from \"@angular/common/http\";\nimport { throwError } from \"rxjs\";\nimport { MessageService } from \"primeng/api\";\nexport class Service {\n constructor(protected messageService: MessageService) {}\n protected getListQueryParams(listParams: ListParams) {\n const { page = 0, size = 10, sort = [], filterQuery = \"\", displayFields = [] } = listParams;\n let params = new HttpParams();\n params = params.append(\"size\", String(size));\n params = params.append(\"offset\", String(page));\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 if (filterQuery) params = params.append(\"filter\", filterQuery);\n if (displayFields && displayFields.length) params = params.append(\"displayfields\", displayFields.join());\n return params;\n }\n protected defaultCatch() {\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 this.messageService.add({\n severity: \"error\",\n summary,\n detail,\n });\n }\n return throwError(err);\n });\n }\n}\nexport interface ListParams {\n page?: number;\n size?: number;\n sort?: any[];\n filterQuery?: string;\n displayFields?: string[];\n}","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/api\";\nimport { Service } from \"../../service\";\n\n@Injectable()\nexport class ControladorCancelasService extends Service {\n private readonly url = 'yms/integration/';\n \n constructor(private http: HttpClient, protected messageService: MessageService) {\n super(messageService);\n }\n public listGateByArea(areaId: string) {\n const params = this.getListQueryParams({\n size: 1000,\n page: 0,\n displayFields: [\"*\"],\n filterQuery: `area.id eq '${areaId}'`\n });\n return this.http.get(`${this.url}entities/gate`, { params })\n }\n public openGate(ip: string) {\n return this.http.post(`${this.url}actions/openGate`, { ip }).pipe(this.defaultCatch());\n }\n public closeGate(ip: string) {\n return this.http.post(`${this.url}actions/closeGate`, { ip }).pipe(this.defaultCatch());\n }\n}\n","import { Component, Input, OnChanges, OnInit, SimpleChanges, OnDestroy } from \"@angular/core\";\nimport { ControleCircuito, ControleOperacao } from \"@seniorsistemas/yms-routines\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil, finalize, map } from \"rxjs/operators\";\nimport { ControladorCancelasService } from \"../cancelas.service\";\nimport { Gate } from \"../gate\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { trigger, state, style, transition, animate } from \"@angular/animations\";\nimport { PermissionsService } from \"@seniorsistemas/platform-components\";\n@ControleCircuito({\n header: \"Cancelas\",\n name: \"yms.integracao.devices\"\n})\n@ControleOperacao({\n header: 'Cancelas',\n name: 'yms.integracao.devices'\n})\nexport class ControladorCancelaDescritor{}\n@Component({\n selector: 'controlador-cancela-component',\n templateUrl: \"./controlador-cancela.component.html\",\n animations: [\n trigger('success', [\n state('*', style({\n backgroundColor: '#0C9348',\n opacity: 0.5\n })),\n state('default', style({\n backgroundColor: '#FFF',\n opacity: 1\n })),\n transition('* => default', animate('1.2s ease-in')),\n transition('default => *', animate('0s'))\n ])\n ]\n})\nexport class ControladorCancelaComponent extends ControladorCancelaDescritor implements OnInit, OnDestroy {\n @Input() sequenciaCircuito: any;\n gates$: Subject<Gate[]>;\n loading: string;\n successState: string = 'default';\n canOpenGate:boolean = false;\n canCloseGate:boolean = false;\n private readonly unsubscribe$: Subject<void>;\n constructor(private service: ControladorCancelasService, private translate: TranslateService, private permissionsService: PermissionsService) {\n super();\n this.unsubscribe$ = new Subject();\n this.gates$ = new Subject();\n }\n public ngOnInit() {\n this.service\n .listGateByArea(this.sequenciaCircuito.area.id)\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((res: any) => this.gates$.next(res.contents));\n\n this.permissionsService\n .get(\"gate\")\n .pipe(map((permissions: any) => {\n if (permissions.Open) {\n this.canOpenGate = true;\n }\n if (permissions.Close) {\n this.canCloseGate = true;\n }\n }))\n .toPromise();\n\n }\n public ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n public model(gate: Gate) {\n return [\n {\n label: this.translate.instant('yms.integration.open_gate'),\n visible: this.canOpenGate,\n command: () => this.openGate(gate)\n },\n {\n label: this.translate.instant('yms.integration.close_gate'),\n visible: this.canCloseGate,\n command: () => this.closeGate(gate)\n }\n ]\n }\n private openGate(gate: Gate) {\n this.loading = gate.id;\n this.service.openGate(gate.ip)\n .pipe(takeUntil(this.unsubscribe$), finalize(() => this.loading = undefined))\n .subscribe(_ => this.successState = gate.id);\n }\n private closeGate(gate: Gate) {\n this.loading = gate.id;\n this.service.closeGate(gate.ip)\n .pipe(takeUntil(this.unsubscribe$), finalize(() => this.loading = undefined))\n .subscribe(res => this.successState = gate.id);\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { ButtonModule, LoadingStateModule } from \"@seniorsistemas/angular-components\";\nimport { MessageModule } from \"primeng/message\";\nimport { TableModule } from \"primeng/table\";\nimport { ControladorCancelasService } from \"./cancelas.service\";\nimport { ControladorCancelaComponent } from \"./controlador-cancela/controlador-cancela.component\";\nimport { IntegrationDispatcher } from \"@seniorsistemas/yms-routines\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n@NgModule({\n imports: [\n CommonModule, \n TableModule, \n TranslateModule,\n MessageModule,\n ButtonModule,\n LoadingStateModule,\n PermissionsModule.forChild([\n {\n name: \"gate\",\n actions: [\"Open\", \"Close\"],\n uri: `res://senior.com.br/yms/devices/gate`,\n },\n ]),\n\n ],\n declarations: [ControladorCancelaComponent],\n entryComponents: [ControladorCancelaComponent],\n exports: [ControladorCancelaComponent],\n providers: [ControladorCancelasService]\n})\nexport class CancelasModule {\n constructor(private dispatcher: IntegrationDispatcher) {\n this.dispatcher.dispatch(ControladorCancelaComponent);\n }\n}","import { HttpClient } from \"@angular/common/http\";\nimport { Service, ListParams } from \"../../service\";\nimport { MessageService } from \"primeng/api\";\nimport { Injectable } from \"@angular/core\";\n\n@Injectable()\nexport class BalancasService extends Service {\n private readonly urlIntegration = `yms/integration/`;\n private readonly urlBalanca = `yms/balanca/`;\n constructor(private http: HttpClient, protected messageService: MessageService) {\n super(messageService);\n }\n getWeightScaleByArea(areaId: string) {\n const params: ListParams = {\n displayFields: [\"description\", \"code\"],\n page: 0,\n size: 1000,\n filterQuery: `area.id eq '${areaId}'`\n }\n return this.http.get(`${this.urlIntegration}entities/weightScale`,\n { params: this.getListQueryParams(params) }).pipe(this.defaultCatch())\n }\n\n fallbackCall(balanca: string, peso: number) {\n return this.http.post(`${this.urlBalanca}actions/manualWeight`, { code: balanca, weight: peso }).pipe(this.defaultCatch());\n }\n\n getWeightScaleByCode(code: string) {\n const params: ListParams = {\n displayFields: [\"description\", \"code\"],\n page: 0,\n size: 10,\n filterQuery: `code eq '${code}'`\n };\n return this.http.get(`${this.urlIntegration}entities/weightScale`, { params: this.getListQueryParams(params) }).pipe(this.defaultCatch());\n }\n}","import { Component, OnInit, OnDestroy, Input } from \"@angular/core\";\nimport { ControleCircuito, ControleOperacao } from \"@seniorsistemas/yms-routines\";\nimport { BalancasService } from \"../balancas.service\";\nimport { Subject, BehaviorSubject } from \"rxjs\";\nimport { takeUntil, finalize, map } from \"rxjs/operators\";\nimport { WeightScale } from \"../weightScale\";\nimport { StompService } from \"@stomp/ng2-stompjs\";\nimport { CookieService } from \"ngx-cookie-service\";\nimport { Message } from \"@stomp/stompjs\";\nimport { IntegrationWebSocket } from \"../../../websocket\";\n\n@ControleCircuito({\n header: 'Balanças',\n name: 'yms.integracao.devices'\n})\n@ControleOperacao({\n header: 'Balanças',\n name: 'yms.integracao.devices'\n})\nexport class VisualizarBalancaDescritor {}\n\n@Component({\n selector: 'visualizar-balanca-component',\n templateUrl: './visualizar-balanca.component.html'\n})\nexport class VisualizarBalancaComponent extends VisualizarBalancaDescritor \n implements OnInit, OnDestroy {\n @Input() sequenciaCircuito: any;\n loading = false;\n weightScales$: BehaviorSubject<WeightScale[]>;\n weightScaleValues: Map<string, number>;\n private readonly unsubscribe$: Subject<void>;\n private websocket: IntegrationWebSocket;\n\n constructor(private service: BalancasService, \n private client: StompService, \n private cookieService: CookieService) {\n super();\n this.websocket = new IntegrationWebSocket(this.client, this.cookieService, 'integration');\n this.unsubscribe$ = new Subject();\n this.weightScales$ = new BehaviorSubject([]);\n this.weightScaleValues = new Map();\n }\n ngOnInit() {\n if (!this.sequenciaCircuito) return;\n this.loading = true;\n this.service.getWeightScaleByArea(this.sequenciaCircuito.area.id)\n .pipe(takeUntil(this.unsubscribe$), finalize(() => this.loading = false))\n .subscribe(({ contents }: any) => {\n this.weightScales$.next(contents);\n contents.forEach((value: WeightScale) => {\n this.weightScaleValues.set(value.id, 0);\n });\n });\n\n this.websocket.connect((url, client) => {\n client.subscribe(`${url}wsWeightScale`)\n .pipe(\n map((message: Message) => message.body),\n map((body: string) => JSON.parse(body).data),\n takeUntil(this.unsubscribe$)\n )\n .subscribe((payload: WsWeightScalePayload) => {\n if (!this.weightScales$.value.length) return;\n \n const index = this.weightScales$.value.findIndex(value => value.id === payload.weightScale.id);\n if (index < 0) return;\n const find = this.weightScales$.value[index];\n this.weightScaleValues.set(find.id, payload.weight);\n });\n });\n }\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n \n}\nexport interface WsWeightScalePayload {\n weight: number;\n weightScale: WeightScale;\n}","import * as SockJS from \"sockjs-client\";\nimport { StompConfig } from \"@stomp/ng2-stompjs\";\n\nexport class CustomStompConfig extends StompConfig {\n socketProvider: any;\n \n constructor() {\n super();\n const token = this.getCookieObject('com.senior.token').access_token;\n const url = `${this.getCookie('com.senior.base.url')}/websocket/subscription`;\n this.socketProvider = () => new SockJS(url);\n this.configureConfig(token);\n }\n private getCookieObject(cname: string) {\n const cookie = this.getCookie(cname);\n if (!cookie) return cookie;\n return JSON.parse(cookie);\n }\n private getCookie(cname: string) {\n try {\n let name = cname + \"=\";\n let decodedCookie = decodeURIComponent(document.cookie);\n let ca = decodedCookie.split(';');\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n while (c.charAt(0) == ' ') {\n c = c.substring(1);\n }\n if (c.indexOf(name) == 0) {\n return c.substring(name.length, c.length);\n }\n }\n return null;\n } catch(e) {\n return null;\n }\n }\n private configureConfig (token: string) {\n this.url = this.socketProvider,\n this.headers = {\n \"content-type\": \"application/json\",\n \"Authorization\": \"Bearer \" + token,\n \"Access-Control-Allow-Origin\": \"*\"\n },\n this.heartbeat_in = 10000,\n this.heartbeat_out = 10000,\n this.reconnect_delay = 15000, \n this.debug = false\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { VisualizarBalancaComponent } from \"./visualiar-balanca/visualizar-balanca.component\";\nimport { CommonModule } from \"@angular/common\";\nimport { TableModule } from \"primeng/table\";\nimport { LoadingStateModule } from \"@seniorsistemas/angular-components\";\nimport { BalancasService } from \"./balancas.service\";\nimport { MessageModule } from \"primeng/message\";\nimport { IntegrationDispatcher } from \"@seniorsistemas/yms-routines\";\nimport { StompConfig, StompService } from \"@stomp/ng2-stompjs\";\nimport { CustomStompConfig } from \"../../stomp.config\";\nimport { CookieService } from \"ngx-cookie-service\";\n@NgModule({\n imports: [\n CommonModule,\n TableModule,\n MessageModule,\n LoadingStateModule,\n ],\n declarations: [VisualizarBalancaComponent],\n entryComponents: [VisualizarBalancaComponent],\n exports: [VisualizarBalancaComponent],\n providers: [\n BalancasService,\n CookieService,\n StompService,\n {\n provide: StompConfig,\n useClass: CustomStompConfig\n }\n ]\n})\nexport class BalancaModule {\n constructor(private dispatcher: IntegrationDispatcher) {\n this.dispatcher.dispatch(VisualizarBalancaComponent);\n }\n}","import { Injectable } from \"@angular/core\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { Service, ListParams } from \"../../service\";\nimport { MessageService } from \"primeng/api\";\nimport { Camera } from \"./camera\";\n\n@Injectable()\nexport class CamerasService extends Service {\n\n private readonly url = 'yms/integration/';\n private readonly patioUrl = 'yms/patio/'\n\n constructor(private http: HttpClient, messageService: MessageService) { \n super(messageService);\n }\n\n public getCamerasByArea(areaId: string) {\n const params: ListParams = {\n page: 0,\n size: 1000,\n filterQuery: `area.id eq '${areaId}'`,\n displayFields: [\"id\", \"description\", \"ip\"]\n }\n\n return this.http\n .get(`${this.url}entities/camera`, { params: this.getListQueryParams(params) })\n .pipe(this.defaultCatch());\n }\n\n public takeSnapshot(camera: Camera) {\n return this.http.get(`${this.url}queries/fetchSnapshot`, { params: {ip: camera.ip }}).pipe(this.defaultCatch());\n }\n\n public saveSnapshotInCircuit(payload: SaveSnapshotInCircuitPayload) {\n return this.http.post(`${this.patioUrl}actions/adicionaImagemExecucaoCircuito`, payload).pipe(this.defaultCatch());\n }\n}\n\nexport interface SaveSnapshotInCircuitPayload {\n execucaoCircuitoId: string;\n alvoId: string;\n cameraIp: string;\n imagemUrl: string;\n}","import { Component, OnInit } from \"@angular/core\";\nimport { DynamicDialogConfig, DynamicDialogRef, MessageService } from \"primeng/api\";\nimport { Subject } from \"rxjs\";\nimport { finalize, takeUntil } from \"rxjs/operators\";\nimport { CamerasService } from \"../cameras.service\";\n\n@Component({\n selector: 'view-image-component',\n template: `\n <s-loading-state [loading]=\"loading\">\n <img [src]=\"imageUrl\" width=\"100%\">\n <br>\n </s-loading-state>\n\n <div style=\"position: absolute; bottom: 0; width: 670px; padding-top: 10px; border-top: 1px solid #ccc;\" [style.pointer-events]=\"loading ? 'none' : 'all'\">\n <s-button priority=\"primary\" label=\"Salvar\" (onClick)=\"save()\"></s-button>\n <s-button priority=\"link\" label=\"Cancelar\" (onClick)=\"close()\"></s-button>\n </div> \n `,\n})\nexport class ViewImageComponent implements OnInit {\n imageUrl: string;\n loading = false;\n\n private readonly unsubscribe$: Subject<boolean>;\n constructor(private dialogRef: DynamicDialogRef, \n private dialogConfig: DynamicDialogConfig,\n private service: CamerasService,\n private messageService: MessageService) {\n this.unsubscribe$ = new Subject();\n }\n\n ngOnInit() {\n this.imageUrl = this.dialogConfig.data.url;\n }\n\n save() {\n this.loading = true;\n const execucaoCircuito = this.dialogConfig.data.execucaoCircuito;\n let cameraIp = this.dialogConfig.data.cameraIp;\n\n this.service.saveSnapshotInCircuit({\n execucaoCircuitoId: execucaoCircuito.id,\n alvoId: execucaoCircuito.sequenciaCircuito.id,\n cameraIp,\n imagemUrl: this.imageUrl\n })\n .pipe(\n takeUntil(this.unsubscribe$),\n finalize(() => this.loading = false)\n )\n .subscribe(() => {\n this.messageService.add({\n severity: 'success',\n summary: 'Salvo com sucesso!',\n detail: 'Imagem salva com sucesso'\n });\n this.dialogRef.close();\n });\n }\n\n close(data?: any) {\n this.dialogRef.close(data);\n }\n}","import { Component, Input, OnInit, OnDestroy } from \"@angular/core\";\nimport { ControleOperacao, ControleCircuito } from \"@seniorsistemas/yms-routines\";\nimport { Subject } from \"rxjs\";\nimport { Camera } from \"../camera\";\nimport { CamerasService } from \"../cameras.service\";\nimport { takeUntil, finalize } from \"rxjs/operators\";\nimport { DialogService } from \"primeng/api\";\nimport { ViewImageComponent } from \"../view-image/view-image.component\";\n\n@ControleOperacao({\n header: 'Câmeras',\n name: 'yms.integracao.devices'\n})\n@ControleCircuito({\n header: 'Câmeras',\n name: 'yms.integracao.devices'\n})\nexport class SnapshotDescritor {}\n\n@Component({\n selector: 'snapshot-component',\n templateUrl: './snapshot.component.html',\n styleUrls: ['./snapshot.component.scss'],\n providers: [DialogService]\n})\nexport class SnapshotComponent extends SnapshotDescritor implements OnInit, OnDestroy {\n @Input() sequenciaCircuito: any;\n @Input() execucaoCircuito: any;\n cameras$: Subject<Camera>;\n\n loadingAll = false;\n loading: string[] = [];\n\n private readonly unsubscribe$: Subject<void>;\n constructor(private service: CamerasService, private dialogService: DialogService) {\n super();\n this.unsubscribe$ = new Subject();\n this.cameras$ = new Subject();\n }\n\n public ngOnInit() {\n this.loadingAll = true;\n this.service.getCamerasByArea(this.sequenciaCircuito.area.id)\n .pipe(takeUntil(this.unsubscribe$), finalize(() => this.loadingAll = false))\n .subscribe(({ contents }: any) => this.cameras$.next(contents));\n }\n\n public ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n\n public takeSnapshot(camera: Camera) {\n this.loading.push(camera.id);\n this.service.takeSnapshot(camera)\n .pipe(\n takeUntil(this.unsubscribe$),\n finalize(() => {\n const index = this.loading.indexOf(camera.id);\n this.loading.splice(index, 1);\n })\n )\n .subscribe(({ url }: any) => {\n this.dialogService.open(ViewImageComponent, {\n header: camera.description,\n width: \"700px\",\n height: \"600px\",\n contentStyle: {\n 'height': '500px',\n overflow: 'hidden'\n },\n data: { \n url,\n cameraIp: camera.ip,\n execucaoCircuito: this.execucaoCircuito\n }\n });\n });\n }\n\n}","import { NgModule } from \"@angular/core\";\nimport { SnapshotComponent } from \"./snapshot/snapshot.component\";\nimport { CommonModule } from \"@angular/common\";\nimport { LoadingStateModule, ButtonModule } from \"@seniorsistemas/angular-components\";\nimport { IntegrationDispatcher } from \"@seniorsistemas/yms-routines\";\nimport { CamerasService } from \"./cameras.service\";\nimport { DynamicDialogModule } from \"primeng/components/dynamicdialog/dynamicdialog\";\nimport { ViewImageComponent } from \"./view-image/view-image.component\";\n\n@NgModule({\n imports: [\n CommonModule,\n ButtonModule,\n LoadingStateModule,\n DynamicDialogModule\n ],\n declarations: [SnapshotComponent, ViewImageComponent],\n entryComponents: [SnapshotComponent, ViewImageComponent],\n exports: [SnapshotComponent],\n providers: [CamerasService]\n})\nexport class CamerasModule {\n constructor(private dispatcher: IntegrationDispatcher) {\n this.dispatcher.dispatch(SnapshotComponent);\n }\n}","import { Injectable } from \"@angular/core\";\nimport { Service, ListParams } from \"../../service\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { MessageService } from \"primeng/api\";\n\n@Injectable()\nexport class LprService extends Service {\n\n private readonly url = `yms/integration/`;\n constructor(private http: HttpClient, protected messageService: MessageService) {\n super(messageService);\n }\n\n getLprByArea(areaId: string) {\n const params: ListParams = {\n page: 0,\n size: 1000,\n filterQuery: `area.id eq '${areaId}'`,\n displayFields: [\"id\", \"stream\", \"description\", \"area.*\"]\n }\n\n return this.http\n .get(`${this.url}entities/lprConfiguration`, { params: this.getListQueryParams(params) })\n .pipe(this.defaultCatch());\n }\n\n fallbackCall(stream: string, licencePlate: string) {\n return this.http.post(`${this.url}actions/lprEventPublish`, { stream, licencePlate }).pipe(this.defaultCatch());\n }\n\n getLprByCode(code: string) {\n const params: ListParams = {\n page: 0,\n size: 10,\n filterQuery: `stream eq '${code}'`,\n displayFields: [\"id\", \"stream\", \"description\", \"locked\"]\n };\n\n return this.http.get(`${this.url}entities/lprConfiguration`, { params: this.getListQueryParams(params) }).pipe(this.defaultCatch());\n }\n}","import { NgModule } from \"@angular/core\";\nimport { LprService } from \"./lpr.service\";\n\n@NgModule({\n providers: [ LprService ]\n})\nexport class LprModule {}","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/api\";\nimport { ListParams, Service } from \"../../service\";\n\n@Injectable()\nexport class LogsService extends Service {\n private readonly url = `yms/integration/`;\n constructor (private http: HttpClient, protected messageService: MessageService) {\n super(messageService);\n }\n\n listLogByCircuit(execucaoCircuitoId: string, params: ListParams) {\n params.filterQuery = `execucaoCircuitoId eq '${execucaoCircuitoId}'`;\n return this.http.get(`${this.url}entities/logCircuit`, { params: this.getListQueryParams(params) }).pipe(this.defaultCatch());\n }\n}\n","import { Component, Input, OnDestroy, OnInit } from \"@angular/core\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { CircuitoFinalizado } from \"@seniorsistemas/yms-routines\";\nimport { LazyLoadEvent, SortMeta } from \"primeng/api\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { LogCircuit } from \"./log-circuit\";\nimport { LogsService } from \"./logs.service\";\n\n@CircuitoFinalizado({\n header: 'Logs com dispositivos',\n name: \"yms.integracao.devices\"\n})\nexport class LogDescritor { }\n\n@Component({\n templateUrl: './logs.component.html'\n})\nexport class LogsComponent extends LogDescritor implements OnInit, OnDestroy {\n @Input() execucaoCircuito: any;\n columns: any[];\n logsData: LogCircuit[];\n totalRecords: number;\n\n loading: boolean;\n\n private readonly unsubscribe$ = new Subject<void>();\n constructor(\n private logsService: LogsService,\n private translate: TranslateService\n ) {\n super();\n }\n\n ngOnInit() {\n this.columns = [\n { field: \"username\", header: this.translate.instant(\"yms.integration.usuario\") },\n { field: \"log\", header: this.translate.instant(\"yms.integration.log\") },\n { field: \"createdDate\", header: this.translate.instant(\"yms.integration.created_date\") }\n ];\n }\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n\n onGridChange(event: LazyLoadEvent) {\n const size = event.rows;\n const page = event.first / size;\n const sort: SortMeta[] = [{ field: 'createdDate', order: -1 }];\n this.updateGrid({ size, page, sort });\n }\n\n private updateGrid(params: { size: number, page: number, sort: any[] }) {\n this.loading = true;\n const { page, size, sort } = params;\n\n this.logsService.listLogByCircuit(this.execucaoCircuito.id, { page, size, sort })\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(({ contents, totalElements }: any) => {\n this.logsData = contents;\n this.totalRecords = totalElements;\n });\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { LoadingStateModule } from \"@seniorsistemas/angular-components\";\nimport { IntegrationDispatcher } from \"@seniorsistemas/yms-routines\";\nimport { TooltipModule } from \"primeng/primeng\";\nimport { TableModule } from \"primeng/table\";\nimport { LogsComponent } from \"./logs.component\";\nimport { LogsService } from \"./logs.service\";\n\n@NgModule({\n declarations: [ LogsComponent ],\n entryComponents: [ LogsComponent ],\n providers: [ LogsService ],\n imports: [\n CommonModule,\n TableModule,\n TranslateModule,\n TooltipModule,\n LoadingStateModule\n ]\n})\nexport class LogsModule {\n constructor(integrationDispatcher: IntegrationDispatcher) {\n integrationDispatcher.dispatch(LogsComponent);\n }\n}","import { Injectable } from \"@angular/core\";\nimport { Service, ListParams } from \"../../service\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { MessageService } from \"primeng/api\";\n\n@Injectable()\nexport class PortariasService extends Service {\n constructor(private http: HttpClient, messageService: MessageService) {\n super(messageService);\n }\n\n agendas(params: ListParams) {\n return this.http.get(`yms/patio/entities/agenda`, { params: this.getListQueryParams(params) }).pipe(this.defaultCatch());\n }\n \n ultimaPlacaLida(stream: string) {\n return this.http.post(`yms/integration/queries/getLastValidPlateByLpr`, { stream }).pipe(this.defaultCatch());\n }\n\n getPortarias(plantaId: string) {\n return this.http.get(`yms/integration/entities/lobby`, { params: this.getListQueryParams({ page: 0, size: 100, filterQuery: `planta.id eq '${plantaId}'`, displayFields: [ 'description', 'entranceLpr.*', 'lprs.*', 'planta.*' ] }) }).pipe(this.defaultCatch());\n }\n\n executarEntrada(lobbyId: string, placa: string) {\n return this.http.post(`yms/integration/actions/executeLobby`, { lobbyId, plate: placa }).pipe(this.defaultCatch());\n }\n}","import { Component, OnInit, OnDestroy } from \"@angular/core\";\nimport { ControleUnificado } from \"@seniorsistemas/yms-routines\";\nimport { Subject } from \"rxjs\";\nimport { SelectPlantService } from \"@seniorsistemas/yms-components\";\nimport { PortariasService } from \"./portarias.service\";\nimport { takeUntil } from \"rxjs/operators\";\n\n@ControleUnificado({\n header: 'Periféricos',\n name: \"yms.integracao.devices\"\n})\nexport class PortariasDescritor {}\n\n@Component({\n selector: 'portarias',\n template: `\n <h3>Portarias</h3>\n <div class=\"separator\"></div>\n <div class=\"ui-g\">\n <portaria-entrada *ngFor=\"let portaria of portarias\" class=\"ui-md-4\" [portaria]=\"portaria\"></portaria-entrada>\n </div>\n `,\n\n})\nexport class PortariasComponent extends PortariasDescritor implements OnInit, OnDestroy {\n portarias: any[];\n unsubscribe$ = new Subject<void>();\n constructor(private selectPlantService: SelectPlantService, private portariaService: PortariasService) {\n super();\n }\n\n ngOnInit() {\n const planta = this.selectPlantService.getPlant();\n this.portariaService.getPortarias(planta.id)\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(({ contents }) => this.portarias = contents);\n }\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n\n}","import { Component, OnInit, OnDestroy } from \"@angular/core\";\nimport { DynamicDialogRef, DynamicDialogConfig } from \"primeng/api\";\nimport { Subject } from \"rxjs\";\nimport { PortariasService } from \"../portarias.service\";\nimport { takeUntil, finalize } from \"rxjs/operators\";\nimport { Router } from \"@angular/router\";\n\n@Component({\n template: `\n <div style=\"width: 100%; height: calc(100% - 50px); overflow: auto;\">\n <div *sLoadingState=\"loading\">\n <p-table [value]=\"agendas\" [columns]=\"getColumns()\" selectionMode=\"single\" [(selection)]=\"selected\" dataKey=\"id\">\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th style=\"width: 50px;\"></th>\n <th *ngFor=\"let column of columns\">{{column.label}}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-rowData>\n <tr [pSelectableRow]=\"rowData\">\n <td style=\"width: 50px;\">\n <p-tableRadioButton [value]=\"rowData\"></p-tableRadioButton>\n </td>\n <td>{{rowData['descricao']}}</td>\n <td>{{rowData['dataEsperadaAgendamento'] | date: 'dd/MM/yyyy HH:mm'}}</td>\n <td>{{rowData['tipoAgendamento']?.descricao}}</td>\n <td>{{rowData['externalTenant']?.descricao}}</td>\n </tr>\n </ng-template>\n </p-table>\n </div>\n </div>\n <div style=\"position: absolute; left: 0; right: 0; bottom: 0; display: flex; justify-content: flex-end; height: 40px; align-items: center;\">\n <s-button priority=\"primary\" label=\"Registrar chegada\" [disabled]=\"!selected\" (onClick)=\"chegada()\"></s-button>\n <s-button priority=\"primary\" label=\"Registrar chegada simplificada\" (onClick)=\"chegadaSimplificada()\"></s-button>\n </div>\n `\n})\nexport class AgendasComponent implements OnInit, OnDestroy {\n agendas: any;\n selected: any;\n veiculo: string;\n portaria: any;\n loading: boolean;\n private readonly unsubscribe$ = new Subject<void>();\n constructor(private dialogRef: DynamicDialogRef, \n private dialogConfig: DynamicDialogConfig,\n private portariaService: PortariasService,\n private router: Router) { }\n\n ngOnInit() {\n this.veiculo = this.dialogConfig.data.veiculo;\n this.portaria = this.dialogConfig.data.portaria;\n this.loading = true;\n this.portariaService\n .agendas({ \n size: 100, \n page: 0, \n displayFields: ['veiculo.primario.*', 'tipoAgendamento.*', 'descricao', 'externalTenant', 'dataEsperadaAgendamento'], \n filterQuery: `veiculo.primario.placa eq '${this.veiculo}' and status eq 'AGENDADO' and planta eq '${this.portaria.planta.id}'` \n })\n .pipe(takeUntil(this.unsubscribe$), finalize(() => this.loading = false))\n .subscribe(({ contents }) => {\n this.agendas = contents;\n if (!this.agendas.length) {\n this.chegadaSimplificada();\n return;\n }\n if (this.agendas.length === 1) {\n this.selected = this.agendas[0];\n }\n });\n \n }\n\n chegadaSimplificada() {\n this.router.navigate(['execucao-circuito/new'], { queryParams: { veiculo: this.veiculo, navigateTo: \"processo-entrada\" } });\n this.dialogRef.close();\n }\n\n chegada() {\n if (!this.selected) return;\n this.router.navigate([`execucao-circuito/${this.selected.id}`]);\n this.dialogRef.close();\n }\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n\n getColumns() {\n return [\n { field: 'descricao', label: 'Descrição' },\n { field: 'dataEsperadaAgendamento', label: 'Data' },\n { field: 'tipoAgendamento', label: 'Tipo de Agendamento' },\n { field: 'externalTenant', label: 'Parceiro' }\n ]\n }\n}","import { Component } from \"@angular/core\";\nimport { DynamicDialogRef } from \"primeng/api\";\n\n@Component({\n template: `\n <p>Não foi encontrada uma leitura de placa. Deseja informar a placa para realizar a entrada?</p>\n <div class=\"separator\"></div>\n <input pInputText type=\"text\" pattern=\"[A-Z0-9]{6,10}\" maxlength=\"10\" placeholder=\"Digite a placa\" [(ngModel)]=\"placa\" #placaInput>\n \n <div style=\"position: absolute; left: 0; right: 0; bottom: 0; display: flex; justify-content: flex-end; height: 40px; align-items: center;\">\n <s-button priority=\"primary\" label=\"Continuar\" [disabled]=\"!placa || !placaInput.validity.valid\" (onClick)=\"continue()\"></s-button>\n </div>\n `\n})\nexport class ConfirmacaoComponent {\n placa: string;\n\n constructor(private dialogRef: DynamicDialogRef) {}\n\n continue() {\n this.dialogRef.close({ placa: this.placa });\n }\n}","import { Component, OnInit, OnDestroy, Input } from \"@angular/core\";\nimport { DialogService } from \"primeng/api\";\nimport { filter, map, takeUntil, finalize, catchError, mergeMap } from \"rxjs/operators\";\nimport { AgendasComponent } from \"../agendas/agendas.component\";\nimport { ConfirmacaoComponent } from \"../confirmacao/confirmacao.component\";\nimport { IntegrationWebSocket } from \"../../../websocket\";\nimport { StompService } from \"@stomp/ng2-stompjs\";\nimport { CookieService } from \"ngx-cookie-service\";\nimport { Subject, throwError } from \"rxjs\";\nimport { Message } from \"@stomp/stompjs\";\nimport { PortariasService } from \"../portarias.service\";\nimport { Lpr } from \"../../lpr/lpr\";\n\n@Component({\n selector: 'portaria-entrada',\n template: `\n <div class=\"card-entrada\" *sLoadingState=\"loading\">\n <div class=\"portaria-card\">\n <h4>{{portaria?.description}}</h4>\n <s-button style=\"float: right\" [auxiliary]=\"true\" iconClass=\"fas fa-camera\" priority=\"default\" (onClick)=\"readPlaque()\"></s-button>\n </div>\n <div class=\"portaria-card\" *ngFor=\"let lpr of portaria.lprs\">\n <h4>{{lpr.description || lpr.stream}}</h4>\n <p-inputSwitch styleClass=\"lprInputSwitch\" [ngModel]=\"lpr.locked\" [readonly]=\"true\"></p-inputSwitch>\n </div>\n </div>\n `,\n styleUrls: ['./entrada.component.scss'],\n providers: [ DialogService ]\n})\nexport class EntradaComponent implements OnInit, OnDestroy {\n\n @Input() portaria: any;\n\n loading = false;\n\n websocket: IntegrationWebSocket;\n unsubscribe$ = new Subject<void>();\n constructor(private dialogService: DialogService, private portariaService: PortariasService, stompService: StompService, cookieService: CookieService) {\n this.websocket = new IntegrationWebSocket(stompService, cookieService, 'integration');\n }\n\n ngOnInit() {\n this.websocket.connect((url, client) => {\n client.subscribe(`${url}wsLprLockUnlocked`)\n .pipe(\n map((message: Message) => message.body),\n map((body: string) => JSON.parse(body).data),\n takeUntil(this.unsubscribe$)\n )\n .subscribe((response: WsLprLockUnlocked) => this.portaria.lprs = this.portaria.lprs.map((lpr: Lpr) => lpr.stream === response.stream ? { ...lpr, locked: response.locked } : lpr ))\n })\n }\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n\n readPlaque() {\n this.loading = true;\n this.portariaService.ultimaPlacaLida(this.portaria.entranceLpr.stream)\n .pipe(\n takeUntil(this.unsubscribe$),\n finalize(() => this.loading = false)\n )\n .subscribe(({ plate }) => {\n if (!plate) {\n return this.placaNaoEncontrada();\n }\n this.openAgendas(plate);\n })\n }\n\n placaNaoEncontrada() {\n this.dialogService.open(ConfirmacaoComponent, {\n header: 'Placa não encontrada',\n style: {\n \"display\": \"flex\",\n \"flex-direction\": \"column\",\n },\n height: \"80%\",\n styleClass: \"ui-g-12 ui-md-8\",\n contentStyle: {\n \"overflow-y\": \"auto\",\n \"height\": \"100%\",\n \"max-height\": \"100%\",\n \"flex\": 1\n }\n })\n .onClose\n .pipe(\n filter(data => !!data),\n )\n .subscribe(data => this.openAgendas(data.placa))\n }\n\n openAgendas(placa: string) {\n this.portariaService.executarEntrada(this.portaria.id, placa)\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(() => {\n this.dialogService.open(AgendasComponent, {\n header: `Agendamentos | ${placa.toUpperCase()}`,\n style: {\n \"display\": \"flex\",\n \"flex-direction\": \"column\",\n },\n height: \"80%\",\n styleClass: \"ui-g-12 ui-md-8\",\n contentStyle: {\n \"overflow-y\": \"auto\",\n \"height\": \"100%\",\n \"max-height\": \"100%\",\n \"flex\": 1\n },\n data: {\n veiculo: placa,\n portaria: this.portaria\n }\n })\n });\n }\n\n}\n\nexport interface WsLprLockUnlocked {\n stream: string;\n locked: boolean;\n}","import { NgModule } from \"@angular/core\";\nimport { PortariasComponent } from \"./portarias.component\";\nimport { IntegrationDispatcher } from \"@seniorsistemas/yms-routines\";\nimport { EntradaComponent } from \"./entrada/entrada.component\";\nimport { ButtonModule, LoadingStateModule } from \"@seniorsistemas/angular-components\";\nimport { AgendasComponent } from \"./agendas/agendas.component\";\nimport { TableModule } from \"primeng/table\";\nimport { HttpClientModule } from \"@angular/common/http\";\nimport { DynamicDialogModule } from \"primeng/components/dynamicdialog/dynamicdialog\";\nimport { MessageModule } from \"primeng/message\";\nimport { InputSwitchModule } from \"primeng/inputswitch\";\nimport { PortariasService } from \"./portarias.service\";\nimport { CommonModule } from \"@angular/common\";\nimport { RouterModule } from \"@angular/router\";\nimport { SelectPlantModule } from \"@seniorsistemas/yms-components\";\nimport { InputTextModule } from \"primeng/inputtext\";\nimport { ConfirmacaoComponent } from \"./confirmacao/confirmacao.component\";\nimport { FormsModule } from \"@angular/forms\";\nimport { CookieService } from \"ngx-cookie-service\";\nimport { StompService, StompConfig } from \"@stomp/ng2-stompjs\";\nimport { CustomStompConfig } from \"../../stomp.config\";\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n RouterModule,\n ButtonModule,\n TableModule,\n LoadingStateModule,\n InputSwitchModule,\n InputTextModule,\n DynamicDialogModule,\n HttpClientModule,\n SelectPlantModule,\n MessageModule\n ],\n declarations: [ PortariasComponent, EntradaComponent, AgendasComponent, ConfirmacaoComponent ],\n entryComponents: [ PortariasComponent, AgendasComponent, ConfirmacaoComponent ],\n providers: [ \n PortariasService,\n CookieService,\n StompService,\n {\n provide: StompConfig,\n useClass: CustomStompConfig\n }\n ]\n})\nexport class PortariasModule {\n constructor(dispatcher: IntegrationDispatcher) {\n dispatcher.dispatch(PortariasComponent);\n }\n}","import { HttpParams, HttpClient } from \"@angular/common/http\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { SortMeta } from \"primeng/components/common/api\";\nimport { throwError } from \"rxjs\";\nimport { catchError } from \"rxjs/operators\";\n\nexport class EntityService<T> {\n\n constructor(\n protected http: HttpClient,\n protected messageService: MessageService,\n protected entityUrl: string,\n protected actionsUrl: string\n ) {\n this.http = http;\n this.messageService = messageService;\n this.entityUrl = entityUrl;\n this.actionsUrl = actionsUrl;\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) params = params.append(\"displayfields\", displayFields.join());\n\n return params;\n }\n\n private getBodyParams(listParams: ListParams): BodyParams {\n const { page = 0, size = 10, sort = [], filterQuery = \"\", displayFields = [] } = listParams;\n const bodyParams: BodyParams = {};\n\n bodyParams.size = size;\n bodyParams.offset = page;\n\n if (sort && sort.length) {\n bodyParams.orderBy = 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 if (filterQuery) bodyParams.filter = filterQuery;\n\n if (displayFields && displayFields.length) bodyParams.displayfields = displayFields.join();\n\n return bodyParams;\n }\n\n public defaultCatch() {\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 list(listParams: ListParams) {\n return this.http.get<T[]>(this.entityUrl, { params: this.getListQueryParams(listParams) }).pipe(this.defaultCatch());\n }\n\n public get(id: any) {\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 public listCustomFilter(listParams: ListParams, action: string) {\n return this.http.post<T[]>(`${this.actionsUrl}/${action}`, this.getBodyParams(listParams)).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 BodyParams {\n offset?: number;\n size?: number;\n orderBy?: string;\n filter?: string;\n displayfields?: string;\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const ERP_ENVIRONMENT = new InjectionToken('integration_environment');","import { Injectable, Inject } from \"@angular/core\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\n\nimport { AgendaDto } from \"./agenda-dto\";\nimport { EntityService, ListParams } from \"../entity-service\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { ErpProcessData } from \"../../erp-process-data/erp-process-data\";\n\n@Injectable()\nexport class AgendaService extends EntityService<AgendaDto> {\n private readonly _agendaUrl: string;\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService, \n @Inject(ERP_ENVIRONMENT) environment: any ) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/agenda`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n this._agendaUrl = `${environment.project.domain}/patio`;\n }\n\n public atualizarAgenda(agenda: any) {\n return this.http.post(`${this._agendaUrl}/actions/atualizarAgenda`, {agenda}).pipe(this.defaultCatch());\n }\n\n public retornaModelosValidacao(tipoAgendamentoId: string) {\n return this.http.post(`yms/agenda/queries/retornaModelosDeValidacao`, {tipoAgendamentoId}).pipe(this.defaultCatch());\n }\n\n public checarRevalidacao(erpProcessData: ErpProcessData) {\n return this.http.post(`yms/agenda/actions/checarRevalidacao`, erpProcessData).pipe(this.defaultCatch());\n }\n\n public listExternalAgenda(listParams: ListParams) {\n return this.http\n .get<AgendaDto>(\"yms/agenda/entities/agenda\", {\n params: this.getListQueryParams(listParams),\n })\n .pipe(this.defaultCatch());\n }\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { RecebimentoContratoDto, ContratoRecebimento, ContratoRecebimentoItem } from \"./recebimento-dto\";\nimport { RecebimentoContrato } from \"./recebimento\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class RecebimentoContratoService extends EntityService<RecebimentoContratoDto> {\n private readonly _baseUrl: string;\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/recebimentoContrato`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n \n this._baseUrl = `${environment.project.domain}/${environment.project.service}`;\n }\n\n public registrarChegadaVeiculoComRecebimento(payload: RegistrarChegadaVeiculoComRecebimentoPayload) {\n return this.http.post(`${this._baseUrl}/actions/registrarChegadaDeVeiculoComRecebimento`, payload).pipe(this.defaultCatch());\n } \n\n public insertContratoRecebimento(recebimentoId: string, contratoRecebimento: ContratoRecebimento) {\n return this.http.post(`${this.entityUrl}/recebimento/${recebimentoId}/contratos`, contratoRecebimento).pipe(this.defaultCatch());\n }\n\n public insertContratoRecebimentoItem(contratoRecebimentoId: string, contratoRecebimentoItem: ContratoRecebimentoItem) {\n return this.http.post(`${this.entityUrl}/contratoRecebimento/${contratoRecebimentoId}/itens`, contratoRecebimentoItem).pipe(this.defaultCatch());\n }\n}\n\nexport interface RegistrarChegadaVeiculoComRecebimentoPayload {\n recebimento: RecebimentoContrato,\n circuito: string;\n sequenciaInicial: string;\n vagaInicial: string;\n}\n","import { Injectable } from \"@angular/core\";\nimport { ChegadaVeiculoOverride, OverrideParams } from \"@seniorsistemas/yms-routines\";\nimport { throwError } from \"rxjs\";\nimport { map, mergeMap } from \"rxjs/operators\";\nimport { AgendaService } from \"../core/entities/agenda/agenda.service\";\nimport { RecebimentoContrato } from \"../core/entities/recebimento-contrato/recebimento\";\nimport { RecebimentoContratoService } from \"../core/entities/recebimento-contrato/recebimento.service\";\n\n@Injectable()\nexport class RecebimentoChegadaVeiculoOverride {\n private readonly RECEBIMENTO_KEY = \"ERP_SENIOR_RECEBIMENTO\"\n constructor(\n private override: ChegadaVeiculoOverride,\n private agendaService: AgendaService,\n private recebimentoService: RecebimentoContratoService) {\n }\n\n public initialize() {\n this.override.addOverride(this.RECEBIMENTO_KEY, (params) => this.functionToOverride(params));\n }\n\n public remove() {\n this.override.disposeOverride(this.RECEBIMENTO_KEY);\n } \n\n private functionToOverride(params: OverrideParams) {\n return this.agendaService.atualizarAgenda(params.agenda)\n .pipe(\n mergeMap(_ => this.recebimentoService.list({\n filterQuery: `agenda.id eq '${params.agenda.id}'`,\n page: 0,\n size: 1\n })),\n map(({contents}) => contents.length ? contents[0] : null),\n mergeMap((recebimento: RecebimentoContrato) => {\n if (!recebimento) return throwError(\"Os dados da guia ERP Senior não foram informados\");\n\n return this.recebimentoService.registrarChegadaVeiculoComRecebimento({\n recebimento: recebimento,\n circuito: params.circuito.id,\n sequenciaInicial: params.sequencia.id,\n vagaInicial: (params.vaga || {}).id\n })\n })\n )\n }\n}","import { Injectable, Inject } from \"@angular/core\";\nimport { EntityService } from \"../entity-service\";\nimport { ExpedicaoDto } from \"./expedicao-dto\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { MessageService } from \"primeng/api\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { Expedicao } from \"./expedicao\";\n\n@Injectable()\nexport class ExpedicaoService extends EntityService<ExpedicaoDto> {\n\n private readonly _baseUrl: string;\n constructor(protected http: HttpClient, protected messageService: MessageService, @Inject(ERP_ENVIRONMENT) environment: any) {\n super(http, \n messageService, \n `${environment.project.domain}/${environment.project.service}/entities/expedicao`, \n `${environment.project.domain}/${environment.project.service}/actions`);\n this._baseUrl = `${environment.project.domain}/${environment.project.service}`;\n }\n\n public registrarChegadaVeiculoComExpedicao(payload: RegistrarChegadaVeiculoComExpedicaoPayload) {\n return this.http.post(`${this._baseUrl}/actions/registrarChegadaDeVeiculoComExpedicao`, payload).pipe(this.defaultCatch());\n }\n}\n\nexport interface RegistrarChegadaVeiculoComExpedicaoPayload {\n expedicao: Expedicao;\n circuito: string;\n sequenciaInicial: string;\n vagaInicial?: string;\n}","import { Injectable } from \"@angular/core\";\nimport { ChegadaVeiculoOverride, OverrideParams } from \"@seniorsistemas/yms-routines\";\nimport { throwError } from \"rxjs\";\nimport { map, mergeMap } from \"rxjs/operators\";\nimport { AgendaService } from \"../core/entities/agenda/agenda.service\";\nimport { Expedicao } from \"../core/entities/expedicao/expedicao\";\nimport { ExpedicaoService } from \"../core/entities/expedicao/expedicao.service\";\n\n@Injectable()\nexport class ExpedicaoChegadaVeiculoOverride {\n private readonly EXPEDICAO_KEY = \"ERP_SENIOR_EXPEDICAO\";\n constructor(\n private override: ChegadaVeiculoOverride,\n private agendaService: AgendaService,\n private expedicaoService: ExpedicaoService\n ){}\n\n public initialize() {\n this.override.addOverride(this.EXPEDICAO_KEY, (params) => this.functionToOverride(params));\n }\n\n public remove() {\n this.override.disposeOverride(this.EXPEDICAO_KEY);\n }\n\n private functionToOverride(params: OverrideParams){\n return this.agendaService.atualizarAgenda(params.agenda)\n .pipe(\n mergeMap(_ => this.expedicaoService.list({\n filterQuery: `agenda.id eq '${params.agenda.id}'`,\n page: 0,\n size: 1\n })),\n map(({ contents }) => contents.length ? contents[0] : null),\n mergeMap((expedicao: Expedicao) => {\n if (!expedicao) return throwError(\"Não foi possÃvel encontrar os dados de expedição\");\n\n return this.expedicaoService.registrarChegadaVeiculoComExpedicao({\n expedicao,\n circuito: params.circuito.id,\n sequenciaInicial: params.sequencia.id,\n vagaInicial: (params.vaga || {}).id\n });\n })\n );\n }\n\n}","import { Injectable } from \"@angular/core\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { catchError } from \"rxjs/operators\";\nimport { MessageService } from \"primeng/api\";\nimport { throwError } from \"rxjs\";\n\n@Injectable()\nexport class IntegrationService {\n private readonly baseUrl: string = `yms/integration/`;\n constructor(private http: HttpClient, private messageService: MessageService) { }\n\n getProcessConfigurationErp(idTipoAgendamento: string) {\n return this.http.get(`${this.baseUrl}queries/getErpProcessConfigurationByTipoAgendamento`, { params: { idTipoAgendamento } }).pipe(this.defaultCatch());\n }\n\n public defaultCatch() {\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}","import { Component, OnInit, OnDestroy } from \"@angular/core\";\nimport { Agendamento, ChegadaVeiculo, IntegrationEventsCallback } from \"@seniorsistemas/yms-routines\";\nimport { takeUntil, mergeMap, finalize } from \"rxjs/operators\";\nimport { Agenda } from \"../core/entities/agenda/agenda\";\nimport { Subject, empty } from \"rxjs\";\nimport { IntegrationService } from \"../core/integration.service\";\n\nexport const ERP_SENIOR_HEADER = \"ERP Senior\";\n\n@Agendamento({\n header: ERP_SENIOR_HEADER,\n name: 'yms.integracao.erpagrox'\n})\n@ChegadaVeiculo({\n header: ERP_SENIOR_HEADER,\n name: 'yms.integracao.erpagrox',\n icon: 'fal fa-book'\n})\nexport class FormDescritor { }\n\n@Component({\n template: `\n <div *ngIf=\"agenda\">\n <div [ngSwitch]=\"tipoProcessoErpAtual\">\n <recebimento-form *ngSwitchCase=\"'RECEBIMENTO_CONTRATO'\" [agenda]=\"agenda\"></recebimento-form>\n <expedicao-form *ngSwitchCase=\"'EXPEDICAO'\" [agenda]=\"agenda\"></expedicao-form>\n <devolucao-form *ngSwitchCase=\"'DEVOLUCAO'\" [agenda]=\"agenda\"></devolucao-form>\n <recebimento-ordem-compra-form *ngSwitchCase=\"'RECEBIMENTO_ORDEM_COMPRA'\" [agenda]=\"agenda\"></recebimento-ordem-compra-form>\n <processo-avulso-form *ngSwitchCase=\"'PROCESSO_AVULSO'\" [agenda]=\"agenda\"></processo-avulso-form>\n <div *ngSwitchDefault>\n <s-loading-state [loading]=\"loading\">\n <h3 *ngIf=\"!loading\" style=\"text-align: center;\">\n ATENÃÃO, não existe Tipo de Processo configurado para esse tipo de agendamento.\n </h3>\n <h3 *ngIf=\"loading\" style=\"text-align: center;\"> Carregando configurações </h3>\n </s-loading-state>\n </div>\n </div>\n </div>\n `\n})\nexport class FormComponent extends FormDescritor implements OnInit, OnDestroy {\n header: string = ERP_SENIOR_HEADER;\n agenda: Agenda;\n tipoProcessoErpAtual: string;\n loading = false;\n\n private readonly unsubscribe$: Subject<void> = new Subject();\n constructor(private integrationCallback: IntegrationEventsCallback, private integrationService: IntegrationService) { \n super();\n }\n\n ngOnInit() {\n this.integrationCallback.onAgendamentoSaved()\n .pipe(\n takeUntil(this.unsubscribe$),\n mergeMap(agenda => {\n this.agenda = agenda;\n this.loading = true;\n if (!!this.agenda) {\n return this.integrationService.getProcessConfigurationErp(this.agenda.tipoAgendamento.id).pipe(finalize(() => this.loading = false))\n }\n return empty();\n })\n )\n .subscribe((erpProcessConfiguration: any) => this.tipoProcessoErpAtual = erpProcessConfiguration.id);\n }\n\n ngOnChanges() {\n }\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n\n}","import { Component, Input, OnInit, OnDestroy } from \"@angular/core\";\nimport { CircuitoFinalizado, ControleCircuito, ControleOperacao } from \"@seniorsistemas/yms-routines\";\nimport { IntegrationService } from \"../core/integration.service\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\n\nconst HEADER = 'Informações fiscais';\n\n@ControleCircuito({\n header: HEADER,\n name: 'yms.integracao.erpagrox'\n})\n@ControleOperacao({\n header: HEADER,\n name: 'yms.integracao.erpagrox'\n})\n@CircuitoFinalizado({\n header: HEADER,\n name: 'yms.integracao.erpagrox'\n})\nexport class InfoDescritor {\n\n}\n\n@Component({\n template: `\n <div *ngIf=\"agenda\">\n <div [ngSwitch]=\"tipoProcessoErpAtual\">\n <recebimento-info *ngSwitchCase=\"'RECEBIMENTO_CONTRATO'\" [agenda]=\"agenda\"></recebimento-info>\n <expedicao-info *ngSwitchCase=\"'EXPEDICAO'\" [agenda]=\"agenda\"></expedicao-info>\n <devolucao-info *ngSwitchCase=\"'DEVOLUCAO'\" [agenda]=\"agenda\"></devolucao-info> \n <recebimento-ordem-compra-info *ngSwitchCase=\"'RECEBIMENTO_ORDEM_COMPRA'\" [agenda]=\"agenda\"></recebimento-ordem-compra-info>\n <processo-avulso-info *ngSwitchCase=\"'PROCESSO_AVULSO'\" [agenda]=\"agenda\"></processo-avulso-info>\n </div>\n </div>\n `,\n})\nexport class InfoComponent extends InfoDescritor implements OnInit, OnDestroy {\n @Input() agenda: any;\n\n tipoProcessoErpAtual: string;\n\n private ngUnsubscribe = new Subject<void>();\n\n constructor(\n private integrationService: IntegrationService\n ) {\n super();\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n ngOnInit(): void {\n this.integrationService.getProcessConfigurationErp(this.agenda.tipoAgendamento.id)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((erpProcessConfiguration: any) => this.tipoProcessoErpAtual = erpProcessConfiguration.id);\n }\n}","import { Injectable } from \"@angular/core\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { throwError } from \"rxjs\";\nimport { catchError } from \"rxjs/operators\";\nimport { FormGroup } from \"@angular/forms\";\n\n@Injectable()\nexport class FieldCustomizationService {\n constructor(protected http: HttpClient, protected messageService: MessageService) {\n this.http = http;\n this.messageService = messageService;\n this.defaultCatch = this.defaultCatch.bind(this);\n }\n\n public commitFiles(objects: any[]) {\n return this.http.post(\"platform/field_customization/actions/commitObject\", { objects }).pipe(this.defaultCatch());\n }\n\n public deleteFiles(objects: any) {\n return this.http.post(\"platform/field_customization/actions/deleteObjects\", objects).pipe(this.defaultCatch());\n }\n\n public getFiles(formGroup: FormGroup) {\n let fieldCustomization = [];\n\n if (formGroup.value.custom) {\n fieldCustomization = formGroup.value.custom.fieldCustomization || [];\n delete formGroup.value.custom.fieldCustomization;\n }\n\n const filesToCommit: any[] = [];\n let filesToDelete: any = {};\n\n fieldCustomization.forEach(({ domain, service, entity, toDelete, toInsert }: any) => {\n if (!this.isEmpty(toInsert)) {\n const files = Object.keys(toInsert).map((key: string) => {\n const version = toInsert[key].version;\n const fileName = toInsert[key].name;\n const objectId = toInsert[key].objectId;\n return { version, fileName, objectId };\n });\n\n if (!this.isEmpty(files)) {\n filesToCommit.push(...files);\n }\n }\n\n if (!this.isEmpty(toDelete)) {\n const objects: any[] = [];\n Object.keys(toDelete).forEach((key: string) => {\n const fields = toDelete[key] || [];\n const files = fields.map((file: string) => {\n return {\n field: key,\n objectId: file,\n };\n });\n objects.push(...files);\n });\n filesToDelete = { domain, service, entityName: entity, objects };\n }\n });\n\n return { filesToCommit, filesToDelete };\n }\n\n public isEmpty(object: any) {\n if (Array.isArray(object)) {\n return object.length === 0;\n }\n return Object.entries(object).length === 0 && object.constructor === Object;\n }\n\n public defaultCatch() {\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","import { MessageService } from 'primeng/components/common/messageservice';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Injectable } from '@angular/core';\n@Injectable()\nexport class VerificaNotafiscal{\n constructor (\n private messageService: MessageService,\n private translate: TranslateService\n ) {}\n\n public verificaSeNotaFiscalEstaDuplicada(chaveNotaFiscal: any, contratos: any, fornecedorNotasTokens: any) {\n if (chaveNotaFiscal == \"\") {\n return false;\n }\n \n let notaFicalDuplicadas = fornecedorNotasTokens.filter(nota => {\n return nota.id == chaveNotaFiscal;\n });\n\n if (typeof contratos !== \"undefined\" && notaFicalDuplicadas.length <= 0) {\n contratos = contratos.value;\n \n if (contratos.length > 0) {\n notaFicalDuplicadas = contratos.filter(contrato => {\n if (contrato.notas.length <= 0) {\n return false;\n }\n let result = contrato.notas.filter(nota => {\n return nota.chaveNotaFiscal == chaveNotaFiscal;\n })\n return result.length > 0;\n });\n }\n }\n\n if (notaFicalDuplicadas.length > 0){\n this.messageService.add({\n severity: \"error\",\n summary: this.translate.instant(\"yms.integration.titulo_nota_fical_ja_exite\"),\n detail: this.translate.instant(\"yms.integration.conteudo_nota_fical_ja_exite\"),\n });\n\n return true;\n }\n return false;\n }\n\n}","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { OrdemCompraDto } from \"./ordem-compra-dto\";\n\n@Injectable()\nexport class OrdemCompraService extends EntityService<OrdemCompraDto> {\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) private environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/ordemCompra`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n }\n\n public listOrdensCompra(params: PesquisaOrdensCompraParams) {\n return this.http.post(`${this.environment.project.domain}/${this.environment.project.service}/queries/pesquisarOrdensCompra`, params).pipe(this.defaultCatch());\n }\n}\n\nexport interface PesquisaOrdensCompraParams {\n pessoaId?: string;\n codigo?: number;\n pagina?: {\n offset?: number;\n limit?: number;\n listaOrdenacao: {\n campo: string;\n ordenacao: 'Asc' | 'Desc'\n }[]\n }\n}\n","import { FieldType } from \"@seniorsistemas/angular-components\";\nimport { FormGroup } from \"@angular/forms\";\n\nconst numberTypes = [FieldType.Integer, FieldType.Double];\nconst numberPattern = /^\\d+\\b$/;\n\nexport const mergeUnique = (array: Array<string>, otherArray: Array<string>) =>\n array.concat(otherArray.filter(item => !array.includes(item)));\n\nexport const isValidFilter = (type: FieldType, value: any) => {\n const { isValidValue, typeExists } = getTypeInformation(type, value);\n return !(typeExists && !isValidValue);\n};\n\nexport const getTypeInformation = (type: FieldType, value: any) => {\n switch (type) {\n case FieldType.Time:\n case FieldType.Date:\n case FieldType.DateTime:\n return { isValidValue: false, typeExists: true };\n case FieldType.Integer:\n case FieldType.Double:\n return {\n isValidValue: value.match(numberPattern),\n typeExists: numberTypes.includes(type),\n };\n default:\n return {\n isValidValue: value.match(numberPattern),\n typeExists: numberTypes.includes(type),\n };\n }\n};\n\nexport const userCanVisualize = (formGroup: FormGroup, allPermissions: any) => {\n return (\n Object.keys(formGroup.controls).filter(field => {\n const errors = formGroup.get(field).errors ? formGroup.get(field).errors.required : formGroup.get(field).errors;\n return allPermissions[field] && !allPermissions[field].visualizar && errors;\n }).length === 0\n );\n};\n\nexport const getProp = (obj: any, path: any) => \n path.split(\".\").reduce((result: any, prop: any) => (result[prop] === undefined ? \"\" : result[prop]), obj);\n\nexport const dialogConfig = {\n style: {\n \"display\": \"flex\",\n \"flex-direction\": \"column\",\n },\n height: \"80%\",\n styleClass: \"ui-g-12 ui-md-4\",\n contentStyle: {\n \"overflow-y\": \"auto\",\n \"height\": \"auto\",\n \"max-height\": \"none\",\n \"margin-bottom\": \"0\",\n \"flex\": 1\n },\n};","import { FieldType, FormField } from \"@seniorsistemas/angular-components\";\nimport * as _moment from \"moment\";\nimport { map } from \"rxjs/operators\";\nimport { EntityService } from \"../erp-senior/core/entities/entity-service\";\nimport { getProp, isValidFilter, mergeUnique } from \"./utils\";\nconst moment = _moment;\n\nexport function getLookupLabel(data: any = {}, fields: any = [], separator: string, translation?: boolean) {\n const concatenateLabelsLookup = (texto: string) => {\n const splitedLabel = texto.split('-');\n const concatenate = (p: string = ' ', c: string = ' ') => {\n if (p.trim() && c.trim()) return `${p} - ${c}`;\n if (p.trim() && !c.trim()) return `${p}`;\n if (!p.trim() && c.trim()) return `${c}`;\n };\n return splitedLabel.reduce(concatenate);\n };\n return concatenateLabelsLookup(fields.map((field: any) => {\n if (field.indexOf(\".\") > 0) return getProp(data, field);\n return data[field];\n }).join(separator))\n || (translation ? 'yms.erp.sem_descricao' : ' - ');\n}\n\nexport const onLookupRequest = <T> (searchFields: FormField[], lookupDisplayFields: string[], advancedDisplayFields: string[], lookupSeparator: string, service: EntityService<T>, value: string, customFilter = '') => {\n const sort = lookupDisplayFields.map((field: any) => ({ field, order: 1 }));\n\n let filterQuery = (searchFields)\n .filter(({ type }) => isValidFilter(type, value))\n .map(({ name, type }) => {\n if (typeof value == \"number\" || type === FieldType.Integer) return `${name} eq ${value}`;\n else if (type == FieldType.Date) return `${name} eq '${moment(value).format(\"YYYY-MM-DD\")}'`;\n else if (type == FieldType.Time) return `${name} eq '${moment(value).format(\"HH:mm:ss\")}'`;\n else if (type == FieldType.DateTime) return `${name} eq '${moment(value).format()}'`;\n else if (type == FieldType.String) return `containing(lower(${name}), lower('${value.replace(/'/g, \"\\\\'\")}'))`;\n else return `${name} eq '${value}'`;\n })\n .join(\" or \");\n\n if (customFilter && customFilter.trim()) {\n filterQuery = filterQuery ? `(${filterQuery}) and ${customFilter}` : customFilter;\n }\n\n const displayFields = mergeUnique(lookupDisplayFields, advancedDisplayFields);\n return service\n .list({ sort, filterQuery, displayFields })\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: getLookupLabel(item, lookupDisplayFields, lookupSeparator),\n })),\n }))\n );\n};\n\nexport const onSearchRequest = <T> (searchFields: FormField[], lookupDisplayFields: string[], advancedDisplayFields: string[], lookupSeparator: string, service: EntityService<T>, event: any, customFilter = '') => {\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const sort = multiSortMeta;\n\n let filterQuery = searchFields\n .filter(({ name }) => filterData[name] != undefined && filterData[name] != \"\")\n .map(({ name, type }) => {\n const value = filterData[name];\n\n if (typeof value == \"number\" || type === FieldType.Integer) return `${name} eq ${value}`;\n else if (type == FieldType.Date) return `${name} eq '${moment(value).format(\"YYYY-MM-DD\")}'`;\n else if (type == FieldType.Time) return `${name} eq '${moment(value).format(\"HH:mm:ss\")}'`;\n else if (type == FieldType.DateTime) return `${name} eq '${moment(value).format()}'`;\n else if (type == FieldType.Enum) return `${name} eq '${value}'`;\n else if (type == FieldType.Lookup) return `${name} eq '${value.id}'`;\n else if (type == FieldType.String && name.indexOf('.') !== -1) {\n return `containing(${name}, '${value.replace(/'/g, \"\\\\'\")}')`;\n } else if (type == FieldType.String && name.indexOf('.') === -1) {\n return `containing(lower(${name}),lower('${value.replace(/'/g, \"\\\\'\")}'))`;\n } else return `${name} eq '${value}'`;\n })\n .join(\" and \");\n\n filterQuery = customFilter && customFilter.trim() ? filterQuery.concat(filterQuery ? ' and ' : '').concat(customFilter) : filterQuery;\n\n const displayFields = mergeUnique(lookupDisplayFields, advancedDisplayFields);\n return service\n .list({ page, sort, filterQuery, displayFields })\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: getLookupLabel(item, lookupDisplayFields, lookupSeparator),\n })),\n }))\n );\n};\n","import * as _moment from \"moment\";const moment = _moment\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { EmpresaDto } from \"./empresa-dto\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\nimport { getLookupLabel } from \"../../../../utils/lookup-utils\";\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport class Empresa {\n public id?: string;\n public codigo: string;\n public nome: string;\n public fantasia?: string;\n public createdBy?: string;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n public static fromDto(empresaDto: EmpresaDto, originEntity?: string): Empresa {\n const model: any = { ...empresaDto };\n\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n const lookupSeparator = \" - \";\n const displayFields = [\n \"codigo\",\n \"nome\",\n \"fantasia\"\n ];\n\n model.label = getLookupLabel(model, displayFields, lookupSeparator);\n\n return model as Empresa;\n }\n\n public static toDto(empresa: Empresa, originEntity?: string): EmpresaDto {\n const dto: any = { ...empresa };\n\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n return dto;\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import * as _moment from \"moment\"; const moment = _moment;\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { PessoaDto } from \"./pessoa-dto\";\nimport { SituacaoPessoa } from \"../../enums/situacao-pessoa\";\nimport { getLookupLabel } from \"../../../../utils/lookup-utils\";\nimport { TipoParticipanteTransgenia } from \"../../enums/tipo-participante-transgenia\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport class Pessoa {\n public id?: string;\n public codigo: number;\n public nome: string;\n public cpfCnpj: string;\n public nomeFantasia: string;\n public label?: string;\n public site?: string;\n public situacao?: SituacaoPessoa;\n public cliente?: boolean;\n public fornecedor?: boolean;\n public representante?: boolean;\n public createdBy?: string;\n public createdDate?: Date;\n public tipoParticipante?: TipoParticipanteTransgenia;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n public static fromDto(pessoaDto: PessoaDto, originEntity?: string): Pessoa {\n const model: any = { ...pessoaDto };\n\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n const lookupSeparator = \" - \";\n const displayFields = [\n \"codigo\",\n \"nome\",\n \"cpfCnpj\",\n ];\n\n model.label = getLookupLabel(model, displayFields, lookupSeparator);\n\n return model as Pessoa;\n }\n\n public static toDto(pessoa: Pessoa, originEntity?: string): PessoaDto {\n const dto: any = { ...pessoa };\n\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n return dto;\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import * as _moment from \"moment\";const moment = _moment\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { PessoaJuridicaDto } from \"./pessoa-juridica-dto\";\nimport { Pessoa } from \"../pessoa/pessoa\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport class PessoaJuridica {\n public id?: string;\n public pessoa: Pessoa;\n public cnpj: string;\n public nomeFantasia?: string;\n public inscricaoEstadual?: string;\n public inscricaoMunicipal?: string;\n public createdBy?: string;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n public static fromDto(pessoaJuridicaDto: PessoaJuridicaDto, originEntity?: string): PessoaJuridica {\n const model: any = { ...pessoaJuridicaDto };\n\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n const lookupSeparator = \" - \";\n const displayFields = [\n \"id\",\n \"pessoa.codigo\",\n \"pessoa.nome\",\n \"pessoa.site\",\n \"pessoa.situacao\",\n \"pessoa.cliente\",\n \"pessoa.fornecedor\",\n \"pessoa.representante\",\n \"cnpj\",\n \"nomeFantasia\",\n \"inscricaoEstadual\",\n \"inscricaoMunicipal\",\n \"createdBy\",\n \"createdDate\",\n \"lastModifiedBy\",\n \"lastModifiedDate\",\n ];\n\n model.label = displayFields.map(field => model[field]).join(lookupSeparator);\n\n if (originEntity !== \"Pessoa\" && model.pessoa) model.pessoa = Pessoa.fromDto(model.pessoa, \"PessoaJuridica\");\n\n return model as PessoaJuridica;\n }\n\n public static toDto(pessoaJuridica: PessoaJuridica, originEntity?: string): PessoaJuridicaDto {\n const dto: any = { ...pessoaJuridica };\n\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n if (originEntity !== \"Pessoa\" && dto.pessoa) dto.pessoa = Pessoa.toDto(dto.pessoa, \"PessoaJuridica\");\n\n return dto;\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import * as _moment from \"moment\";const moment = _moment\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { PaisDto } from \"./pais-dto\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport class Pais {\n public id?: string;\n public codigo: string;\n public descricao: string;\n public createdBy?: string;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n public static fromDto(paisDto: PaisDto, originEntity?: string): Pais {\n const model: any = { ...paisDto };\n\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n const lookupSeparator = \" - \";\n const displayFields = [\"id\", \"codigo\", \"descricao\", \"createdBy\", \"createdDate\", \"lastModifiedBy\", \"lastModifiedDate\"];\n\n model.label = displayFields.map(field => model[field]).join(lookupSeparator);\n\n return model as Pais;\n }\n\n public static toDto(pais: Pais, originEntity?: string): PaisDto {\n const dto: any = { ...pais };\n\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n return dto;\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import * as _moment from \"moment\";const moment = _moment\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { EstadoDto } from \"./estado-dto\";\nimport { Pais } from \"../pais/pais\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport class Estado {\n public id?: string;\n public codigo: string;\n public descricao: string;\n public abreviatura: string;\n public pais: Pais;\n public createdBy?: string;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n public static fromDto(estadoDto: EstadoDto, originEntity?: string): Estado {\n const model: any = { ...estadoDto };\n\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n const lookupSeparator = \" - \";\n const displayFields = [\n \"id\",\n \"codigo\",\n \"descricao\",\n \"abreviatura\",\n \"pais.id\",\n \"pais.codigo\",\n \"pais.descricao\",\n \"createdBy\",\n \"createdDate\",\n \"lastModifiedBy\",\n \"lastModifiedDate\",\n ];\n\n model.label = displayFields.map(field => model[field]).join(lookupSeparator);\n\n if (originEntity !== \"Pais\" && model.pais) model.pais = Pais.fromDto(model.pais, \"Estado\");\n\n return model as Estado;\n }\n\n public static toDto(estado: Estado, originEntity?: string): EstadoDto {\n const dto: any = { ...estado };\n\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n if (originEntity !== \"Pais\" && dto.pais) dto.pais = Pais.toDto(dto.pais, \"Estado\");\n\n return dto;\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import * as _moment from \"moment\";const moment = _moment\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { CidadeDto } from \"./cidade-dto\";\nimport { Estado } from \"../estado/estado\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport class Cidade {\n public id?: string;\n public codigo: string;\n public descricao: string;\n public estado: Estado;\n public createdBy?: string;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n public static fromDto(cidadeDto: CidadeDto, originEntity?: string): Cidade {\n const model: any = { ...cidadeDto };\n\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n const lookupSeparator = \" - \";\n const displayFields = [\n \"id\",\n \"codigo\",\n \"descricao\",\n \"estado.id\",\n \"estado.codigo\",\n \"estado.descricao\",\n \"createdBy\",\n \"createdDate\",\n \"lastModifiedBy\",\n \"lastModifiedDate\",\n ];\n\n model.label = displayFields.map(field => model[field]).join(lookupSeparator);\n\n if (originEntity !== \"Estado\" && model.estado) model.estado = Estado.fromDto(model.estado, \"Cidade\");\n\n return model as Cidade;\n }\n\n public static toDto(cidade: Cidade, originEntity?: string): CidadeDto {\n const dto: any = { ...cidade };\n\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n if (originEntity !== \"Estado\" && dto.estado) dto.estado = Estado.toDto(dto.estado, \"Cidade\");\n\n return dto;\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import * as _moment from \"moment\";const moment = _moment\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { PessoaEnderecoDto } from \"./pessoa-endereco-dto\";\nimport { Pessoa } from \"../pessoa/pessoa\";\nimport { Cidade } from \"../cidade/cidade\";\nimport { SituacaoEnderecoPessoa } from \"../../enums/situacao-endereco-pessoa\";\nimport { getLookupLabel } from \"../../../../utils/lookup-utils\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport class PessoaEndereco {\n public id?: string;\n public codigo: number;\n public pessoa: Pessoa;\n public cep: string;\n public endereco: string;\n public numero?: string;\n public complemento?: string;\n public cidade?: Cidade;\n public telefone?: string;\n public bairro?: string;\n public situacao: SituacaoEnderecoPessoa;\n public padrao?: boolean;\n public origem?: boolean;\n public cobranca?: boolean;\n public entrega?: boolean;\n public createdBy?: string;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n public static fromDto(pessoaEnderecoDto: PessoaEnderecoDto, originEntity?: string): PessoaEndereco {\n const model: any = { ...pessoaEnderecoDto };\n\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n const lookupSeparator = \" - \";\n const displayFields = [\n \"codigo\",\n // \"cep\",\n \"endereco\",\n // \"numero\",\n // \"bairro\"\n ];\n\n model.label = getLookupLabel(model, displayFields, lookupSeparator);\n\n if (originEntity !== \"Pessoa\" && model.pessoa) model.pessoa = Pessoa.fromDto(model.pessoa, \"PessoaEndereco\");\n if (originEntity !== \"Cidade\" && model.cidade) model.cidade = Cidade.fromDto(model.cidade, \"PessoaEndereco\");\n\n return model as PessoaEndereco;\n }\n\n public static toDto(pessoaEndereco: PessoaEndereco, originEntity?: string): PessoaEnderecoDto {\n const dto: any = { ...pessoaEndereco };\n\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n if (originEntity !== \"Pessoa\" && dto.pessoa) dto.pessoa = Pessoa.toDto(dto.pessoa, \"PessoaEndereco\");\n if (originEntity !== \"Cidade\" && dto.cidade) dto.cidade = Cidade.toDto(dto.cidade, \"PessoaEndereco\");\n\n return dto;\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import * as _moment from \"moment\";const moment = _moment\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { FilialDto } from \"./filial-dto\";\nimport { Empresa } from \"../empresa/empresa\";\nimport { PessoaJuridica } from \"../pessoa-juridica/pessoa-juridica\";\nimport { PessoaEndereco } from \"../pessoa-endereco/pessoa-endereco\";\nimport { getLookupLabel } from \"../../../../utils/lookup-utils\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport class Filial {\n public id?: string;\n public codigo: number;\n public nome: string;\n public empresa: Empresa;\n public pessoaJuridica?: PessoaJuridica;\n public endereco?: PessoaEndereco;\n public createdBy?: string;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n public static fromDto(filialDto: FilialDto, originEntity?: string): Filial {\n const model: any = { ...filialDto };\n\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n const lookupSeparator = \" - \";\n const displayFields = [\n \"codigo\",\n \"nome\",\n \"empresa.nome\"\n ];\n\n model.label = getLookupLabel(model, displayFields, lookupSeparator);\n\n if (originEntity !== \"Empresa\" && model.empresa) model.empresa = Empresa.fromDto(model.empresa, \"Filial\");\n if (originEntity !== \"PessoaJuridica\" && model.pessoaJuridica)\n model.pessoaJuridica = PessoaJuridica.fromDto(model.pessoaJuridica, \"Filial\");\n if (originEntity !== \"PessoaEndereco\" && model.endereco) model.endereco = PessoaEndereco.fromDto(model.endereco, \"Filial\");\n\n return model as Filial;\n }\n\n public static toDto(filial: Filial, originEntity?: string): FilialDto {\n const dto: any = { ...filial };\n\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n if (originEntity !== \"Empresa\" && dto.empresa) dto.empresa = Empresa.toDto(dto.empresa, \"Filial\");\n if (originEntity !== \"PessoaJuridica\" && dto.pessoaJuridica)\n dto.pessoaJuridica = PessoaJuridica.toDto(dto.pessoaJuridica, \"Filial\");\n if (originEntity !== \"PessoaEndereco\" && dto.endereco) dto.endereco = PessoaEndereco.toDto(dto.endereco, \"Filial\");\n\n return dto;\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { Empresa } from \"../empresa/empresa\"\nimport { Filial } from \"../filial/filial\"\nimport * as _moment from \"moment\";import { OrdemCompraDto } from \"./ordem-compra-dto\";\nconst moment = _moment\nimport { getLookupLabel } from \"../../../../utils/lookup-utils\";\nimport { Pessoa } from \"../pessoa/pessoa\";\n\nexport class OrdemCompra {\n public id: string;\n public codigo: number;\n public empresa: Empresa;\n public filial: Filial;\n public pessoa: Pessoa;\n\n public static fromDto(ordemCompraDto: OrdemCompraDto, originEntity?: string): OrdemCompra {\n const model: any = { ...ordemCompraDto };\n\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n const lookupSeparator = \" - \";\n const displayFields = [\n \"codigo\",\n \"descricao\",\n \"tipo\",\n ];\n\n model.label = getLookupLabel(model, displayFields, lookupSeparator);\n\n if (originEntity !== \"Empresa\" && model.empresa) model.empresa = Empresa.fromDto(model.empresa, \"Produto\");\n if (originEntity !== \"Filial\" && model.filial) model.filial = Filial.fromDto(model.filial, \"Produto\");\n \n return model as OrdemCompra;\n }\n\n public static toDto(ordemCompra: OrdemCompra, originEntity?: string): OrdemCompraDto {\n const dto: any = { ...ordemCompra };\n\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n if (originEntity !== \"Empresa\" && dto.empresa) dto.empresa = Empresa.toDto(dto.empresa, \"Produto\");\n if (originEntity !== \"Filial\" && dto.filial) dto.filial = Filial.toDto(dto.filial, \"Produto\"); \n\n return dto;\n }\n}\n","import { Component, OnInit, OnDestroy } from \"@angular/core\";\nimport { FormGroup, FormBuilder, FormArray, Validators, FormControl } from \"@angular/forms\";\nimport { DynamicDialogRef, DynamicDialogConfig } from \"primeng/api\";\nimport { FormField, FieldType } from \"@seniorsistemas/angular-components\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { Subject } from 'rxjs';\nimport * as _moment from \"moment\";\nimport { OrdemCompraService } from \"../../core/entities/ordem-compra/ordem-compra.service\";\nimport { Pessoa } from './../../core/entities/pessoa/pessoa';\nimport { Filial } from './../../core/entities/filial/filial';\nimport { Agenda } from \"../../core/entities/agenda/agenda\";\nimport { OrdemCompra } from \"../../core/entities/ordem-compra/ordem-compra\";\nconst moment = _moment;\n\n@Component({\n templateUrl: './ordem-compra-form.component.html'\n})\nexport class OrdemCompraFormComponent implements OnInit, OnDestroy {\n public formGroup: FormGroup;\n\n public ordemCompraSearchFields: FormField[];\n public ordemCompraSearchGridFields: FormField[];\n public ordemCompraSearchGridData: OrdemCompra[];\n public ordemCompraLookupDisplayFields = [\"codigo\", \"empresa.nome\"];\n public ordemCompraAdvancedDisplayFields = [\"id\", \"codigo\", \"empresa.nome\", \"filial.nome\", \"pessoa.nome\"];\n public ordemCompraLookupSeparator = \" - \";\n public ordemCompraLookupSuggestions: OrdemCompra[];\n public ordemCompraSearchTotalRecords: number;\n\n private readonly ngUnsubscribe = new Subject<void>();\n private agenda: Agenda;\n private filial: Filial;\n private fornecedor: Pessoa;\n private ordensCompra: string[];\n\n constructor (\n private dialogRef: DynamicDialogRef,\n private dialogConfig: DynamicDialogConfig,\n private ordemCompraService: OrdemCompraService,\n private translate: TranslateService,\n private fb: FormBuilder\n ) { }\n \n ngOnInit(): void {\n const { data } = this.dialogConfig;\n this.agenda = data.agenda;\n this.filial = data.filial;\n this.fornecedor = data.fornecedor;\n this.ordensCompra = data.ordens.map(({ ordemCompra: ordemCompra }: any) => !!ordemCompra ? ordemCompra.id : undefined).filter((val: any) => !!val);\n\n this.formGroup = this.getForm();\n\n this.ordemCompraSearchFields = this.getOrdemCompraFields();\n this.ordemCompraSearchGridFields = this.getOrdemCompraGridFields();\n }\n \n ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n public onOrdemCompraLookupRequest(value: string) {\n const sort = this.ordemCompraLookupDisplayFields.map((field: any) => ({ field, order: 'Asc' }))[0];\n\n const filter: any = {\n numero: +value.replace(/\\D/g, \"\")\n };\n\n const filial = this.filial;\n if (filial && filial.empresa && filial.empresa.id) {\n filter.empresaId = filial.empresa.id;\n }\n\n this.ordemCompraService\n .listOrdensCompra({\n ...filter,\n pessoaId: (this.fornecedor || {id: undefined}).id,\n filialId: (filial || {id: undefined}).id,\n tipoAgendamentoId: this.agenda && this.agenda.tipoAgendamento ? this.agenda.tipoAgendamento.id : null,\n ordensCompraSelecionados: this.ordensCompra,\n pagina: {\n limit: 30,\n offset: 0,\n listaOrdenacao: [\n {\n campo: sort.field,\n ordenacao: sort.order\n }\n ]\n }\n })\n .subscribe((list: any) => {\n this.ordemCompraLookupSuggestions = list.contents.map(OrdemCompra.fromDto);\n });\n }\n\n public onOrdemCompraSearchRequest(event: any) {\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const filter = this.getOrdemCompraFields()\n .filter(({ name }) => filterData[name] != undefined && filterData[name] != \"\")\n .reduce((a, b: any) => {\n return {\n ...a,\n [b.name]: filterData[b.name]\n };\n }, {} as any);\n\n const filial = this.filial;\n if (filial && filial.empresa && filial.empresa.id) {\n filter.empresaId = filial.empresa.id;\n }\n\n filter.dataEmissao = filter.dataEmissao && moment(filter.dataEmissao).format(\"YYYY-MM-DD\");\n const sort = (multiSortMeta || []).length ? { field: multiSortMeta[0].field, order: multiSortMeta[0].order === 1 ? 'Asc' : 'Desc' } : { field: 'numero', order: 'Asc' };\n\n this.ordemCompraService\n .listOrdensCompra({\n ...filter,\n pessoaId: (this.fornecedor || {id: undefined}).id,\n filialId: (filial || {id: undefined}).id,\n tipoAgendamentoId: this.agenda && this.agenda.tipoAgendamento ? this.agenda.tipoAgendamento.id : null,\n ordensCompraSelecionados: this.ordensCompra,\n pagina: {\n limit: rows,\n offset: page,\n listaOrdenacao: [\n {\n campo: sort.field,\n ordenacao: sort.order\n }\n ]\n }\n })\n .subscribe((list: any) => {\n this.ordemCompraSearchGridData = list.contents.map(OrdemCompra.fromDto);\n this.ordemCompraSearchTotalRecords = list.totalElements;\n });\n }\n\n public getRecPagina(first: number, rows: number, sort: any) {\n const page = first / rows;\n const orderBy = sort && sort.length \n ? sort.map((s: any) => ({ campo: s.field, ordenacao: s.order === 1 ? 'Asc' : 'Desc' })) \n : [];\n\n return {\n offset: page,\n limit: rows,\n listaOrdenacao: orderBy\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) {\n control.markAsDirty({ onlySelf: true });\n }\n else if (control instanceof FormGroup){\n this.validateAllFormFields(control);\n } \n else if (control instanceof FormArray) {\n control.controls.forEach((form: FormGroup) => this.validateAllFormFields(form));\n }\n });\n }\n\n public save() {\n if (!this.formGroup.valid) {\n return this.validateAllFormFields(this.formGroup);\n }\n this.close(this.formGroup.get('ordemCompra').value);\n }\n\n public close(data?: any) {\n this.dialogRef.close(data);\n }\n\n private getForm() {\n return this.fb.group({\n ordemCompra: [undefined, Validators.required]\n });\n }\n\n private getOrdemCompraFields() {\n return [\n new FormField({\n name: \"codigo\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.ordem_compra_codigo\")\n }),\n new FormField({\n name: \"empresa.nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.empresa\")\n }),\n new FormField({\n name: \"filial.nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.filial\")\n }),\n ];\n }\n\n private getOrdemCompraGridFields() {\n return [\n new FormField({\n name: \"codigo\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.ordem_compra_codigo\")\n }),\n new FormField({\n name: \"empresa.nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.empresa\")\n }),\n new FormField({\n name: \"filial.nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.filial\")\n }),\n new FormField({\n name: \"pessoa.nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.pessoa_nome\")\n }),\n ];\n }\n}","import { Injectable } from \"@angular/core\";\n\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\");\n if (!firstField) return;\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 { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/api\";\nimport { Observable, throwError } from \"rxjs\";\nimport { catchError } from \"rxjs/operators\";\nimport { DerivacaoDto } from \"./entities/derivacao/derivacao-dto\";\nimport { PessoaEnderecoDto } from \"./entities/pessoa-endereco/pessoa-endereco-dto\";\nimport { PessoaDto } from \"./entities/pessoa/pessoa-dto\";\nimport { ProdutoDto } from \"./entities/produto/produto-dto\";\nimport { ERP_ENVIRONMENT } from \"./injectors\";\n\n@Injectable()\nexport class NotaValidatorService {\n private readonly baseUrl: string;\n constructor(@Inject(ERP_ENVIRONMENT) environment: any, private http: HttpClient, private messageService: MessageService) {\n this.baseUrl = `${environment.project.domain}/${environment.project.service}`;\n }\n\n pesquisarDocumento(payload: PesquisarDocumentoRequest): Observable<PesquisarDocumentoResponse> {\n return this.http.post<PesquisarDocumentoResponse>(`${this.baseUrl}/queries/pesquisarDocumento`, payload).pipe<PesquisarDocumentoResponse>(this.defaultCatch() as any);\n }\n\n pesquisarDocumentoValidaNotaEmUso(payload: PesquisarDocumentoRequest): Observable<PesquisarDocumentoResponse> {\n return this.http.post<PesquisarDocumentoResponse>(`${this.baseUrl}/queries/pesquisarDocumentoValidaNotaEmUso`, payload).pipe<PesquisarDocumentoResponse>(this.defaultCatch() as any);\n }\n\n pesquisarDocumentoGenerico(payload: PesquisarDocumentoRequest): Observable<PesquisarDocumentoResponse> {\n return this.http.post<PesquisarDocumentoResponse>(`yms/integration/queries/pesquisarDocumentoGenerico`, payload).pipe<PesquisarDocumentoResponse>(this.defaultCatch() as any);\n }\n\n executarAuditoria(payload: ExecutarAuditoriaRequest): Observable<ExecutarAuditoriaResponse> {\n return this.http.post<ExecutarAuditoriaResponse>(`${this.baseUrl}/actions/executarAuditoria`, payload).pipe<ExecutarAuditoriaResponse>(this.defaultCatch() as any);\n }\n\n private defaultCatch() {\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\nexport interface PesquisarDocumentoRequest {\n filialId?: string;\n chaveDocumento: string;\n}\n\nexport interface PesquisarDocumentoResponse {\n documentos: {\n serie: string;\n serieLegal: string;\n numero: number;\n fornecedor: PessoaDto;\n origemMercadoria: PessoaEnderecoDto;\n itens: ItemDocumento[];\n }[]\n}\n\nexport interface ItemDocumento {\n produto: ProdutoDto;\n derivacao: DerivacaoDto;\n quantidade: number;\n}\n\nexport interface ExecutarAuditoriaRequest {\n chaveNota: string;\n fornecedor?: string;\n filial?: number;\n numeroContrato?: number;\n sequenciaContrato?: number;\n sequenciaOrigem?: number;\n}\n\nexport interface ExecutarAuditoriaResponse {\n situacao: 'APROVADO' | 'REPROVADO',\n mensagem: string;\n}","import { VerificaNotafiscal } from '../../core/verifica-nota-fiscal/verificaNotaFiscal';\nimport { Component, OnDestroy, OnInit } from \"@angular/core\";\nimport { AbstractControl, FormBuilder, FormControl, FormGroup, ValidationErrors, ValidatorFn } from \"@angular/forms\";\nimport { ConfirmationService, DynamicDialogConfig, DynamicDialogRef } from \"primeng/api\";\nimport { Subject } from \"rxjs\";\nimport { finalize, takeUntil } from \"rxjs/operators\";\nimport { Pessoa } from \"../../core/entities/pessoa/pessoa\";\nimport { Produto } from \"../../core/entities/produto/produto\";\nimport { NotaValidatorService, PesquisarDocumentoResponse } from \"../../core/nota-validator.service\";\n\n@Component({\n templateUrl: './nota-form.component.html',\n providers: [ ConfirmationService ]\n})\n\nexport class NotaFormComponent implements OnInit, OnDestroy {\n formGroup: FormGroup;\n loading = false;\n\n private filialId: string;\n private fornecedor: Pessoa;\n private produto: Produto;\n private fornecedorNotasTokens: any;\n private contratos: any;\n\n private readonly unsubscribe$ = new Subject<void>();\n constructor(\n fb: FormBuilder,\n private notaValidatorService: NotaValidatorService,\n private dialogConfig: DynamicDialogConfig,\n private confirmationService: ConfirmationService,\n private dialogRef: DynamicDialogRef,\n private verificaNotaFiscal: VerificaNotafiscal,\n\n ) {\n this.formGroup = fb.group({\n chaveNotaFiscal: [ undefined ],\n serieNotaFiscal: [ undefined ],\n serieLegalNotaFiscal: [ undefined ],\n numeroNotaFiscal: [ undefined ],\n }, { validators: this.camposPreenchidosValidation });\n }\n\n ngOnInit() {\n this.filialId = this.dialogConfig.data.filial.id;\n this.fornecedor = this.dialogConfig.data.fornecedor;\n this.produto = this.dialogConfig.data.produto;\n this.fornecedorNotasTokens = this.dialogConfig.data.fornecedorNotasTokens;\n this.contratos = this.dialogConfig.data.contratos;\n }\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n\n save() {\n const chaveNotaFiscal = this.formGroup.get(\"chaveNotaFiscal\").value;\n\n if (this.verificaNotaFiscal.verificaSeNotaFiscalEstaDuplicada(chaveNotaFiscal, this.contratos, this.fornecedorNotasTokens)) {\n return;\n }\n\n if (!chaveNotaFiscal) {\n this.removeErrorChaveNota();\n }\n\n if (!this.formGroup.valid) {\n return this.validateAllFormFields(this.formGroup);\n }\n\n this.habilitaCamposNotaFiscal();\n\n this.close(this.formGroup.value);\n }\n\n close(data?: any) {\n this.dialogRef.close(data);\n }\n\n onBlurNotaFiscal() {\n const chaveNotaFiscal = this.formGroup.get(\"chaveNotaFiscal\").value;\n\n if (this.verificaNotaFiscal.verificaSeNotaFiscalEstaDuplicada(chaveNotaFiscal, this.contratos, this.fornecedorNotasTokens)) { \n return;\n }\n\n this.removeErrorChaveNota();\n this.loading = true;\n this.notaValidatorService.pesquisarDocumentoValidaNotaEmUso({\n chaveDocumento: (chaveNotaFiscal || \"\").trim(),\n filialId: this.filialId\n })\n .pipe(takeUntil(this.unsubscribe$), finalize(() => this.loading = false))\n .subscribe(this.validateNotaFiscal);\n }\n\n private validateNotaFiscal = (response: PesquisarDocumentoResponse) => {\n if (!response || !response.documentos[0]) {\n return;\n }\n \n const value = response.documentos[0];\n\n if (!value.itens || !value.itens.length) {\n return;\n }\n\n if (!!value.itens[0].produto && !!this.produto && (value.itens[0].produto.id !== this.produto.id)) {\n this.addErrorIfProdutoIsDifferent();\n return;\n }\n\n const notaFiscal = { \n chave: this.formGroup.get(\"chaveNotaFiscal\").value, \n serie: value.serie, \n serieLegal: value.serieLegal, \n numero: value.numero,\n };\n\n if (!this.fornecedor) {\n this.closeAndReturnNota(notaFiscal, value.fornecedor, value.origemMercadoria);\n return;\n }\n\n if (!!(value.fornecedor || {id: undefined}).id && (value.fornecedor.id !== this.fornecedor.id)) {\n this.confirmAndAddNovoFornecedor(notaFiscal, value.fornecedor, value.origemMercadoria);\n return;\n }\n\n this.formGroup.get(\"serieNotaFiscal\").setValue(value.serie);\n this.formGroup.get(\"serieLegalNotaFiscal\").setValue(value.serieLegal);\n this.formGroup.get(\"numeroNotaFiscal\").setValue(value.numero);\n\n this.desabilitaCamposNotaFiscal();\n }\n\n private confirmAndAddNovoFornecedor(infoNota: { chave: string, serie: string, serieLegal: string, numero: number }, fornecedor: any, origemMercadoria: any) {\n this.confirmationService.confirm({\n header: 'O fornecedor vinculado a nota não é o mesmo que o selecionado',\n message: 'O fornecedor vinculado a nota não é o mesmo que o selecionado. Deseja adicionar um novo fornecedor ou cancelar a operação?',\n acceptLabel: 'Adicionar um novo fornecedor',\n rejectLabel: 'Cancelar operação',\n accept: () => this.closeAndReturnNota(infoNota, fornecedor, origemMercadoria),\n reject: () => this.formGroup.get(\"chaveNotaFiscal\").setValue(undefined)\n });\n }\n\n private addErrorIfProdutoIsDifferent() {\n this.formGroup.get(\"chaveNotaFiscal\").setErrors({ errorChaveNota: true });\n }\n\n private removeErrorChaveNota() {\n this.formGroup.get(\"chaveNotaFiscal\").setErrors(null);\n }\n\n private closeAndReturnNota(infoNota: { chave: string, serie: string, serieLegal: string, numero: number }, fornecedor: any, origemMercadoria: any) {\n this.dialogRef.close({ addFornecedor: true, infoNota, fornecedor, origemMercadoria })\n }\n\n private validateAllFormFields(formGroup: FormGroup) {\n Object.keys(formGroup.controls).forEach(field => {\n const control = formGroup.get(field);\n \n if (control instanceof FormControl) {\n control.markAsDirty({ onlySelf: true });\n } else if (control instanceof FormGroup) {\n this.validateAllFormFields(control);\n }\n });\n\n formGroup.markAsDirty({ onlySelf: true });\n }\n\n private camposPreenchidosValidation: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n const chave = control.get(\"chaveNotaFiscal\").value;\n const serie = control.get(\"serieNotaFiscal\").value;\n const numero = control.get(\"numeroNotaFiscal\").value;\n\n return !!chave || !!serie || !!numero ? null : { erroMultiplosCampos: true };\n };\n\n private habilitaCamposNotaFiscal() {\n this.formGroup.get(\"serieNotaFiscal\").enable();\n this.formGroup.get(\"serieLegalNotaFiscal\").enable();\n this.formGroup.get(\"numeroNotaFiscal\").enable();\n }\n\n private desabilitaCamposNotaFiscal() {\n this.formGroup.get(\"serieNotaFiscal\").disable();\n this.formGroup.get(\"serieLegalNotaFiscal\").disable();\n this.formGroup.get(\"numeroNotaFiscal\").disable();\n }\n}","import { NgModule } from \"@angular/core\";\nimport { NotaFormComponent } from \"./nota-form.component\";\nimport { CommonModule } from \"@angular/common\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\nimport { DynamicDialogModule } from \"primeng/components/dynamicdialog/dynamicdialog\";\nimport { InputTextModule } from \"primeng/inputtext\";\nimport { ButtonModule, ControlErrorsModule, LoadingStateModule } from \"@seniorsistemas/angular-components\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { ConfirmDialogModule } from \"primeng/confirmdialog\";\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n DynamicDialogModule,\n InputTextModule,\n ButtonModule,\n ControlErrorsModule,\n TranslateModule,\n LoadingStateModule,\n ConfirmDialogModule\n ],\n declarations: [ NotaFormComponent ],\n entryComponents: [ NotaFormComponent ]\n})\nexport class NotaFormModule {\n\n}","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { AgendaService } from \"./agenda.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"agenda\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/agenda`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n AgendaService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class AgendaModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { Injectable, Inject } from \"@angular/core\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { CidadeDto } from \"./cidade-dto\";\nimport { EntityService } from \"../entity-service\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class CidadeService extends EntityService<CidadeDto> {\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/cidade`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { CidadeService } from \"./cidade.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"cidade\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/cidade`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n CidadeService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class CidadeModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { ContratoCompraItemDto } from \"./contrato-compra-item-dto\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class ContratoCompraItemService extends EntityService<ContratoCompraItemDto> {\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n protected environment: any;\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/contratoCompraItem`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n \n this.environment = environment;\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n\n\n public pesquisarItensContratoCompra(params: any) {\n return this.http.post(`${this.environment.project.domain}/${this.environment.project.service}/queries/pesquisarItensContratoCompra`, params).pipe(this.defaultCatch());\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { ContratoCompraItemService } from \"./contrato-compra-item.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"contratoCompraItem\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/contratoCompraItem`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n ContratoCompraItemService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class ContratoCompraItemModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { ContratoCompraItemDto } from \"../contrato-compra-item/contrato-compra-item-dto\";\nimport { EntityService, ListParams } from \"../entity-service\";\nimport { ContratoCompraDto } from \"./contrato-compra-dto\";\n\n@Injectable()\nexport class ContratoCompraService extends EntityService<ContratoCompraDto> {\n\n constructor(\n protected http: HttpClient,\n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) private environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/contratoCompra`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n }\n\n public listContratosCompra(params: PesquisaContratosCompraParams) {\n return this.http.post(`${this.environment.project.domain}/${this.environment.project.service}/queries/pesquisarContratosCompra`, params).pipe(this.defaultCatch());\n }\n\n public getItens(contratoCompraId: any, id: any) {\n return this.http.get<ContratoCompraItemDto>(`${this.entityUrl}/${contratoCompraId}/itens/${id}`).pipe(this.defaultCatch());\n }\n\n public updateItens(contratoCompraId: any, id: any, contratoCompraItemDto: ContratoCompraItemDto) {\n return this.http\n .put<ContratoCompraItemDto>(`${this.entityUrl}/${contratoCompraId}/itens/${id}`, contratoCompraItemDto)\n .pipe(this.defaultCatch());\n }\n\n public listItens(contratoCompraId: any, listParams: ListParams) {\n return this.http\n .get<ContratoCompraItemDto[]>(`${this.entityUrl}/${contratoCompraId}/itens`, { params: this.getListQueryParams(listParams) })\n .pipe(this.defaultCatch());\n }\n\n public insertItens(contratoCompraId: any, contratoCompraItemDto: ContratoCompraItemDto) {\n return this.http\n .post<ContratoCompraItemDto>(`${this.entityUrl}/${contratoCompraId}/itens`, contratoCompraItemDto)\n .pipe(this.defaultCatch());\n }\n\n public deleteItens(contratoCompraId: any, id: any) {\n return this.http.delete<ContratoCompraItemDto>(`${this.entityUrl}/${contratoCompraId}/itens/${id}`).pipe(this.defaultCatch());\n }\n}\n\nexport interface PesquisaContratosCompraParams {\n produtoId?: string;\n pessoaId?: string;\n numero?: number;\n dataEmissao?: Date;\n pagina?: {\n offset?: number;\n limit?: number;\n listaOrdenacao: {\n campo: string;\n ordenacao: 'Asc' | 'Desc'\n }[]\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { ContratoCompraService } from \"./contrato-compra.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"contratoCompra\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/contratoCompra`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n ContratoCompraService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class ContratoCompraModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { Injectable, Inject } from \"@angular/core\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { DerivacaoDto } from \"../derivacao/derivacao-dto\";\nimport { EntityService } from \"../entity-service\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class DerivacaoService extends EntityService<DerivacaoDto> {\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n constructor(protected http: HttpClient, protected messageService: MessageService, @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/derivacao`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { DerivacaoService } from \"./derivacao.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"derivacao\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/derivacao`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n DerivacaoService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class DerivacaoModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { EmpresaDto } from \"./empresa-dto\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class EmpresaService extends EntityService<EmpresaDto> {\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/empresa`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { EmpresaService } from \"./empresa.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"empresa\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/empresa`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n EmpresaService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class EmpresaModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { EstadoDto } from \"./estado-dto\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class EstadoService extends EntityService<EstadoDto> {\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/estado`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { EstadoService } from \"./estado.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"estado\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/estado`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n EstadoService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class EstadoModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { FamiliaProdutoDto } from \"./familia-produto-dto\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class FamiliaProdutoService extends EntityService<FamiliaProdutoDto> {\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/familiaProduto`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { FamiliaProdutoService } from \"./familia-produto.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"familiaProduto\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/familiaProduto`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n FamiliaProdutoService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class FamiliaProdutoModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { FilialDto } from \"./filial-dto\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport interface PesquisarFiliaisInput {\n nome?: string;\n codigo?: string;\n cnpjs?: string[];\n pagina: {\n offset: number;\n limit: number;\n listaOrdenacao?: {\n campo: string;\n ordenacao: 'Asc' | 'Desc'\n }[]\n };\n}\n\n@Injectable()\nexport class FilialService extends EntityService<FilialDto> {\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n private readonly baseUrl: string;\n constructor(\n protected http: HttpClient,\n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/filial`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n this.baseUrl = `${environment.project.domain}/${environment.project.service}/`;\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n\n public listFiliais(filters: PesquisarFiliaisInput) {\n return this.http.post(`${this.baseUrl}queries/pesquisarFiliais`, filters).pipe(this.defaultCatch());\n }\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { FilialService } from \"./filial.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"filial\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/filial`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n FilialService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class FilialModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { PaisDto } from \"./pais-dto\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class PaisService extends EntityService<PaisDto> {\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/pais`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { PaisService } from \"./pais.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"pais\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/pais`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n PaisService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class PaisModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { PedidoVendaItemDto } from \"./pedido-venda-item-dto\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class PedidoVendaItemService extends EntityService<PedidoVendaItemDto> {\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n protected queriesUrl: string;\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService, \n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/pedidoVendaItem`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n this.queriesUrl = `${environment.project.domain}/${environment.project.service}/queries`;\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n\n public pesquisarItensPedidoVenda(pesquisa: any) {\n return this.http.post(`${this.queriesUrl}/pesquisarItensPedidoVenda`, pesquisa).pipe(this.defaultCatch());\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { PedidoVendaItemService } from \"./pedido-venda-item.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"pedidoVendaItem\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/pedidoVendaItem`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n PedidoVendaItemService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class PedidoVendaItemModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService, ListParams } from \"../entity-service\";\nimport { PedidoVendaItemDto } from \"../pedido-venda-item/pedido-venda-item-dto\";\nimport { PedidoVendaDto, PesquisaPedidosVendaDto } from \"./pedido-venda-dto\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class PedidoVendaService extends EntityService<PedidoVendaDto> {\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n protected queriesUrl: string;\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/pedidoVenda`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n this.queriesUrl = `${environment.project.domain}/${environment.project.service}/queries`;\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n\n public getItens(pedidoVendaId: any, id: any) {\n return this.http.get<PedidoVendaItemDto>(`${this.entityUrl}/${pedidoVendaId}/itens/${id}`).pipe(this.defaultCatch());\n }\n\n public pesquisarPedidosVenda(pesquisa: PesquisaPedidosVendaDto) {\n return this.http.post(`${this.queriesUrl}/pesquisarPedidosVenda`, pesquisa).pipe(this.defaultCatch());\n }\n\n public updateItens(pedidoVendaId: any, id: any, pedidoVendaItemDto: PedidoVendaItemDto) {\n return this.http\n .put<PedidoVendaItemDto>(`${this.entityUrl}/${pedidoVendaId}/itens/${id}`, pedidoVendaItemDto)\n .pipe(this.defaultCatch());\n }\n\n public listItens(pedidoVendaId: any, listParams: ListParams) {\n return this.http\n .get<PedidoVendaItemDto[]>(`${this.entityUrl}/${pedidoVendaId}/itens`, { params: this.getListQueryParams(listParams) })\n .pipe(this.defaultCatch());\n }\n\n public insertItens(pedidoVendaId: any, pedidoVendaItemDto: PedidoVendaItemDto) {\n return this.http.post<PedidoVendaItemDto>(`${this.entityUrl}/${pedidoVendaId}/itens`, pedidoVendaItemDto).pipe(this.defaultCatch());\n }\n\n public deleteItens(pedidoVendaId: any, id: any) {\n return this.http.delete<PedidoVendaItemDto>(`${this.entityUrl}/${pedidoVendaId}/itens/${id}`).pipe(this.defaultCatch());\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { PedidoVendaService } from \"./pedido-venda.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"pedidoVenda\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/pedidoVenda`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n PedidoVendaService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class PedidoVendaModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { PessoaEnderecoDto } from \"./pessoa-endereco-dto\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class PessoaEnderecoService extends EntityService<PessoaEnderecoDto> {\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/pessoaEndereco`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { PessoaEnderecoService } from \"./pessoa-endereco.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"pessoaEndereco\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/pessoaEndereco`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n PessoaEnderecoService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class PessoaEnderecoModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { PessoaFisicaDto } from \"./pessoa-fisica-dto\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class PessoaFisicaService extends EntityService<PessoaFisicaDto> {\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/pessoaFisica`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { PessoaFisicaService } from \"./pessoa-fisica.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"pessoaFisica\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/pessoaFisica`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n PessoaFisicaService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class PessoaFisicaModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { PessoaJuridicaDto } from \"./pessoa-juridica-dto\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class PessoaJuridicaService extends EntityService<PessoaJuridicaDto> {\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/pessoaJuridica`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { PessoaJuridicaService } from \"./pessoa-juridica.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"pessoaJuridica\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/pessoaJuridica`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n PessoaJuridicaService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class PessoaJuridicaModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { PessoaDto } from \"./pessoa-dto\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class PessoaService extends EntityService<PessoaDto> {\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/pessoa`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { PessoaService } from \"./pessoa.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"pessoa\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/pessoa`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n PessoaService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class PessoaModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { HttpClient, HttpParams } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { ProdutoDto } from \"./produto-dto\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class ProdutoService extends EntityService<ProdutoDto> {\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n constructor(\n protected http: HttpClient,\n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) private environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/produto`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n\n listProdutosRecebimento(params: ProdutoRecebimentoParams) {\n return this.http.post(`${this.environment.project.domain}/${this.environment.project.service}/queries/pesquisarProdutoRecebimento`, params).pipe(this.defaultCatch());\n }\n\n listProdutos(params: ProdutoParams) {\n return this.http.post(`${this.environment.project.domain}/${this.environment.project.service}/queries/pesquisarProduto`, params).pipe(this.defaultCatch());\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\nexport interface ProdutoRecebimentoParams {\n empresaId?: string;\n filialId?: string;\n tipoAgendamentoId?: string;\n codigo?: string;\n descricao?: string;\n pesquisa?: string;\n pagina?: {\n offset?: number;\n limit?: number;\n listaOrdenacao?: {\n campo: string;\n ordenacao: 'Asc' | 'Desc'\n }[]\n };\n}\n\nexport interface ProdutoParams {\n empresaId?: string;\n filialId?: string;\n tipoAgendamentoId?: string;\n codigo?: string;\n descricao?: string;\n pesquisa?: string;\n situacao?: 'ATIVO' | 'INATIVO';\n pagina?: {\n offset?: number;\n limit?: number;\n listaOrdenacao?: {\n campo: string;\n ordenacao: 'Asc' | 'Desc'\n }[]\n };\n}\n\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { ProdutoService } from \"./produto.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"produto\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/produto`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n ProdutoService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class ProdutoModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { Injectable } from \"@angular/core\";\nimport { BehaviorSubject } from \"rxjs\";\n\n@Injectable()\nexport class HasChangeService {\n \n private messageSource = new BehaviorSubject<{id, change}>({id:null, change:false});\n current = this.messageSource.asObservable();\n \n constructor() { }\n \n hasChange(idAgenda: string) {\n let message = {\n id: idAgenda,\n change: true\n }\n this.messageSource.next(message);\n }\n\n hasChangeSave(idAgenda: string) {\n let message = {\n id: idAgenda,\n change: false\n }\n this.messageSource.next(message);\n }\n \n get change() {\n return this.messageSource.value;\n }\n}","export class ErpProcessData {\n agendaId: string;\n chaveIntegracao?: string;\n filialId?: string;\n produtoId?: string;\n motoristaId?: string;\n veiculoId?: string;\n eixos?: number;\n transgeniaId?: string;\n transportadoraId?: string;\n fornecedores?: string[];\n recebimentoTemNota?: boolean; \n}","import { elementEventFullName } from '@angular/compiler/src/view_compiler/view_compiler';\r\nimport { Injectable } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { ErpProcessData } from './erp-process-data';\r\n\r\n@Injectable()\r\nexport class ErpProcessService {\r\n\r\n private messageSource = new BehaviorSubject<ErpProcessData>(undefined);\r\n current = this.messageSource.asObservable();\r\n \r\n\r\n constructor() { }\r\n\r\n changeData(message: ErpProcessData) {\r\n this.messageSource.next(message)\r\n return message;\r\n }\r\n\r\n getProcessData() {\r\n return this.messageSource.value;\r\n }\r\n\r\n changeDataErp(newMessage: ErpProcessData) {\r\n let message = this.messageSource.value ? this.messageSource.value : newMessage;\r\n message.filialId = newMessage.filialId;\r\n message.chaveIntegracao = newMessage.chaveIntegracao;\r\n message.produtoId = newMessage.produtoId;\r\n message.transgeniaId = newMessage.transgeniaId;\r\n message.transportadoraId = newMessage.transportadoraId;\r\n return this.changeData(message); \r\n }\r\n\r\n changeDataVeiculo(veiculoId: string, eixos: number) {\r\n let message = this.messageSource.value ? this.messageSource.value : new ErpProcessData();\r\n message.veiculoId = veiculoId;\r\n message.eixos = eixos;\r\n return this.changeData(message);\r\n }\r\n\r\n changeDataMotorista(motoristaId: string) {\r\n let message = this.messageSource.value ? this.messageSource.value : new ErpProcessData();\r\n message.motoristaId = motoristaId;\r\n return this.changeData(message);\r\n }\r\n\r\n changeDataAgenda(agendaId: string, motoristaId: string, veiculoId: string, eixos: number) {\r\n let message = this.messageSource.value ? this.messageSource.value : new ErpProcessData();\r\n message.agendaId = agendaId;\r\n message.motoristaId = motoristaId;\r\n message.veiculoId = veiculoId;\r\n message.eixos = eixos;\r\n return this.changeData(message);\r\n }\r\n\r\n builderErpProcessData(erpProcessData: ErpProcessData, formGroup: FormGroup): ErpProcessData {\r\n erpProcessData.chaveIntegracao = formGroup.get(\"chaveNotaFiscal\") != null ? formGroup.get(\"chaveNotaFiscal\").value : null;\r\n erpProcessData.filialId = this.getFieldFormGroup(formGroup, 'filial');\r\n erpProcessData.produtoId = this.getFieldFormGroup(formGroup, 'produto');\r\n erpProcessData.transgeniaId = this.getFieldFormGroup(formGroup, 'transgenia');\r\n erpProcessData.transportadoraId = this.getFieldFormGroup(formGroup, 'transportadora');\r\n erpProcessData.fornecedores = this.listarIdsFornecedores(formGroup.getRawValue().fornecedores);\r\n return erpProcessData;\r\n }\r\n\r\n builderErpProcessDataValidaNotaNoContrato(erpProcessData: ErpProcessData, formGroup: FormGroup) {\r\n erpProcessData = this.builderErpProcessData(erpProcessData, formGroup);\r\n erpProcessData.recebimentoTemNota = this.verificaSeTemNotaNoContratoNoFornecedo(formGroup.getRawValue().fornecedores);\r\n return erpProcessData;\r\n }\r\n\r\n private verificaSeTemNotaNoContratoNoFornecedo(fornecedores: any){\r\n let contratosTemNota = false;\r\n\r\n let listaContratos = []; \r\n if (fornecedores != null) {\r\n fornecedores.filter(element => element.contratos != null && element.contratos != undefined).forEach(element => listaContratos.push(element.contratos));\r\n }\r\n \r\n let listaNotas = []; \r\n if (listaContratos != null) {\r\n listaContratos.filter(contratos => contratos != null && contratos != undefined).forEach(contratos => listaNotas.push(contratosTemNota = this.verificaSeContratosTemNota(contratos)));\r\n }\r\n return contratosTemNota;\r\n }\r\n\r\n private verificaSeContratosTemNota(contratos: any){\r\n let contratosTemNota = true;\r\n contratos.filter(contrato => contrato != null && contrato != undefined).forEach(contrato => contratosTemNota = contratosTemNota && (contrato.notas.length > 0));\r\n return contratosTemNota;\r\n }\r\n\r\n builderErpProcessDataValidaNotaNaOrdemCompra(erpProcessData: ErpProcessData, formGroup: FormGroup) {\r\n erpProcessData = this.builderErpProcessData(erpProcessData, formGroup);\r\n erpProcessData.recebimentoTemNota = this.verificaSeTemNotaNaOrdemCompraDoFornecedo(formGroup.getRawValue().fornecedores);\r\n return erpProcessData;\r\n }\r\n \r\n private verificaSeTemNotaNaOrdemCompraDoFornecedo(fornecedores: any){\r\n let ordemCompraTemNota = false;\r\n\r\n let listaOrdens = []; \r\n if (fornecedores != null) {\r\n fornecedores.filter(element => element.ordens != null && element.ordens != undefined).forEach(element => listaOrdens.push(element.ordens));\r\n }\r\n \r\n let listaNotas = []; \r\n if (listaOrdens != null) {\r\n listaOrdens.filter(ordens => ordens != null && ordens != undefined).forEach(ordens => listaNotas.push(ordemCompraTemNota = this.verificaSeOrdemCompraTemNota(ordens)));\r\n }\r\n return ordemCompraTemNota;\r\n }\r\n\r\n private verificaSeOrdemCompraTemNota(contratos: any){\r\n let ordemCompraTemNota = true;\r\n contratos.filter(ordem => ordem != null && ordem != undefined).forEach(ordem => ordemCompraTemNota = ordemCompraTemNota && (ordem.notas.length > 0));\r\n return ordemCompraTemNota;\r\n }\r\n\r\n private getFieldFormGroup(formGroup: FormGroup, fieldName: string) {\r\n if(formGroup.get(fieldName) == null || formGroup.get(fieldName).value == null) {\r\n return null\r\n }\r\n return formGroup.get(fieldName).value.id;\r\n }\r\n\r\n private listarIdsFornecedores (fornecedores: any) {\r\n let listaFornecedores = []; \r\n if (fornecedores != null) {\r\n fornecedores.filter(element => element.fornecedor != null && element.fornecedor != undefined).forEach(element => listaFornecedores.push(element.fornecedor));\r\n }\r\n return listaFornecedores.map(val => val.id);\r\n\r\n }\r\n\r\n}","import { Injectable } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable()\nexport class ErpFormConfigService {\n\n private messageSource = new BehaviorSubject<boolean>(false);\n current = this.messageSource.asObservable();\n \n constructor() { }\n\n enableRevalidation() {\n this.messageSource.next(true);\n }\n\n get enable() {\n return this.messageSource.value;\n }\n}","import { HasChangeService } from './../../../core/has-change/has-change-service';\nimport { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\nimport { ErpProcessService } from \"./../../../core/erp-process-data/erp-process-service\";\nimport { ErpFormConfigService } from './../../erp-form-config/erp-form-config-service';\n\nimport { RecebimentoContratoService } from \"./recebimento.service\";\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"recebimentoContrato\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/recebimentoContrato`,\n },\n ]),\n ],\n providers: [\n RecebimentoContratoService,\n ErpProcessService,\n ErpFormConfigService,\n HasChangeService\n ],\n declarations: [],\n exports: [],\n})\nexport class RecebimentoContratoModule {}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { RoyaltyDto } from \"./royalty-dto\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class RoyaltyService extends EntityService<RoyaltyDto> {\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/royalty`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { RoyaltyService } from \"./royalty.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"royalty\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/royalty`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n RoyaltyService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class RoyaltyModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { SafraDto } from \"./safra-dto\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class SafraService extends EntityService<SafraDto> {\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/safra`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { SafraService } from \"./safra.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"safra\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/safra`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n SafraService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class SafraModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { TransportadoraDto } from \"./transportadora-dto\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class TransportadoraService extends EntityService<TransportadoraDto> {\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/transportadora`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { TransportadoraService } from \"./transportadora.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"transportadora\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/transportadora`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n TransportadoraService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class TransportadoraModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { UnidadeMedidaDto } from \"./unidade-medida-dto\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class UnidadeMedidaService extends EntityService<UnidadeMedidaDto> {\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/unidadeMedida`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { UnidadeMedidaService } from \"./unidade-medida.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"unidadeMedida\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/unidadeMedida`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n UnidadeMedidaService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class UnidadeMedidaModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\nimport { ExpedicaoService } from \"./expedicao.service\";\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"expedicao\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/expedicao`,\n },\n ]),\n ],\n providers: [ ExpedicaoService ]\n})\nexport class ExpedicaoModule {\n\n}","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { DevolucaoDto } from \"./devolucao-dto\";\nimport { Devolucao } from \"./devolucao\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class DevolucaoService extends EntityService<DevolucaoDto> {\n private readonly _baseUrl: string;\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/devolucao`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n \n this._baseUrl = `${environment.project.domain}/${environment.project.service}`;\n } \n\n public registrarChegadaVeiculoComDevolucao(payload: RegistrarChegadaVeiculoComDevolucaoPayload) {\n return this.http.post(`${this._baseUrl}/actions/registrarChegadaDeVeiculoComDevolucao`, payload).pipe(this.defaultCatch());\n }\n\n}\n\nexport interface RegistrarChegadaVeiculoComDevolucaoPayload {\n devolucao: Devolucao;\n circuito: string;\n sequenciaInicial: string;\n vagaInicial?: string;\n}\n\n \n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\nimport { DevolucaoService } from \"./devolucao.service\";\nimport { ErpProcessService } from \"./../../../core/erp-process-data/erp-process-service\";\nimport { ErpFormConfigService } from './../../erp-form-config/erp-form-config-service';\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"devolucao\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/devolucao`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n DevolucaoService,\n ErpProcessService,\n ErpFormConfigService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class DevolucaoModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { OrdemCompraService } from \"./ordem-compra.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"ordemCompra\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/ordem-compra`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n OrdemCompraService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class OrdemCompraModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { HttpClient } from \"@angular/common/http\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { RecebimentoOrdemCompraDto } from \"./recebimento-ordem-compra-dto\";\nimport { RecebimentoOrdemCompra } from \"./recebimento-ordem-compra\";\n \n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class RecebimentoOrdemCompraService extends EntityService<RecebimentoOrdemCompraDto> {\n private readonly _baseUrl: string;\n\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/recebimentoOrdemCompra`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n \n this._baseUrl = `${environment.project.domain}/${environment.project.service}`;\n }\n\n public registrarChegadaVeiculoRecebimentoOrdemCompra(payload: RegistrarChegadaVeiculoRecebimentoOrdemCompraPayload) {\n return this.http.post(`${this._baseUrl}/actions/registrarChegadaDeVeiculoComRecebimentoOrdemCompra`, payload).pipe(this.defaultCatch());\n } \n}\n\nexport interface RegistrarChegadaVeiculoRecebimentoOrdemCompraPayload {\n recebimentoOrdemCompra: RecebimentoOrdemCompra,\n circuito: string;\n sequenciaInicial: string;\n vagaInicial: string;\n}\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\nimport { RecebimentoOrdemCompraService } from \"./recebimento-ordem-compra.service\";\nimport { ErpProcessService } from \"./../../../core/erp-process-data/erp-process-service\";\nimport { ErpFormConfigService } from './../../erp-form-config/erp-form-config-service';\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"recebimentoOrdemCompra\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/recebimentoOrdemCompra`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n RecebimentoOrdemCompraService,\n ErpProcessService,\n ErpFormConfigService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class RecebimentoOrdemCompraModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { Injectable, Inject } from \"@angular/core\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { MessageService } from \"primeng/api\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { EntityService } from \"../entity-service\";\nimport { Transgenia } from \"./transgenia\";\n\n@Injectable()\nexport class TransgeniaService extends EntityService<Transgenia> {\n constructor(\n protected http: HttpClient, \n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/${environment.project.service}/entities/transgenia`,\n `${environment.project.domain}/${environment.project.service}/actions`\n );\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n}","import { NgModule } from \"@angular/core\";\nimport { TransgeniaService } from \"./transgenia.service\";\n\n@NgModule({\n providers: [ TransgeniaService ]\n})\nexport class TransgeniaModule { }\n","import { Injectable, Inject } from \"@angular/core\";\nimport { EntityService } from \"../entity-service\";\nimport { ProcessoAvulsoDto } from \"./processo-avulso-dto\";\nimport { MessageService } from \"primeng/api\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { ProcessoAvulso } from \"./processo-avulso\";\n\n@Injectable()\nexport class ProcessoAvulsoService extends EntityService<ProcessoAvulsoDto> {\n constructor(\n protected http: HttpClient,\n protected messageService: MessageService,\n @Inject(ERP_ENVIRONMENT) environment: any,\n ) {\n super(\n http, messageService, \n `${environment.project.domain}/${environment.project.service}/entities/processoAvulso`,\n `${environment.project.domain}/${environment.project.service}/actions`\n )\n }\n\n registrarChegada(processo: RegistrarChegadaComProcessoAvulsoPayload) {\n return this.http.post(`${this.actionsUrl}/registrarChegadaDeVeiculoComProcessoAvulso`, processo).pipe(this.defaultCatch());\n }\n}\n\nexport interface RegistrarChegadaComProcessoAvulsoPayload {\n processoAvulso: ProcessoAvulso;\n circuito: string;\n sequenciaInicial: string;\n vagaInicial: string;\n}","import { NgModule } from \"@angular/core\";\nimport { ProcessoAvulsoService } from \"./processo-avulso.service\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\nimport { ErpProcessService } from \"./../../../core/erp-process-data/erp-process-service\";\nimport { ErpFormConfigService } from './../../erp-form-config/erp-form-config-service';\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"processoAvulso\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/processoAvulso`,\n },\n ]),\n ],\n providers: [ ProcessoAvulsoService, ErpProcessService, ErpFormConfigService ]\n})\nexport class ProcessoAvulsoModule {\n\n}","import { Inject, Injectable } from \"@angular/core\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\nimport { LogIntegracaoDto } from \"./log-integracao-dto\";\nimport { EntityService } from \"../entity-service\";\nimport { ERP_ENVIRONMENT } from \"../../injectors\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@Injectable()\nexport class LogIntegracaoService extends EntityService<LogIntegracaoDto> {\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n constructor(protected http: HttpClient, protected messageService: MessageService, @Inject(ERP_ENVIRONMENT) private environment: any) {\n super(\n http,\n messageService,\n `${environment.project.domain}/erp/entities/logIntegracao`,\n `${environment.project.domain}/erp/actions`\n );\n /*{CA:CONSTRUCTOR_END:START}*/\n /*{CA:CONSTRUCTOR_END:END}*/\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { LogIntegracaoService } from \"./log-integracao.service\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@NgModule({\n imports: [\n PermissionsModule.forChild([\n {\n name: \"logIntegracao\",\n actions: [\"Visualizar\", \"Incluir\", \"Editar\", \"Excluir\"],\n uri: `res://senior.com.br/yms/erp_data/entities/logIntegracao`,\n },\n ]),\n /*{CA:MODULE_IMPORTS:START}*/\n /*{CA:MODULE_IMPORTS:END}*/\n ],\n providers: [\n LogIntegracaoService,\n /*{CA:MODULE_PROVIDERS:START}*/\n /*{CA:MODULE_PROVIDERS:END}*/\n ],\n declarations: [\n /*{CA:MODULE_DECLARATIONS:START}*/\n /*{CA:MODULE_DECLARATIONS:END}*/\n ],\n exports: [\n /*{CA:MODULE_EXPORTS:START}*/\n /*{CA:MODULE_EXPORTS:END}*/\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class LogIntegracaoModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { NgModule } from \"@angular/core\";\nimport { AgendaModule } from \"./entities/agenda/agenda.module\";\nimport { CidadeModule } from \"./entities/cidade/cidade.module\";\nimport { ContratoCompraItemModule } from \"./entities/contrato-compra-item/contrato-compra-item.module\";\nimport { ContratoCompraModule } from \"./entities/contrato-compra/contrato-compra.module\";\nimport { DerivacaoModule } from \"./entities/derivacao/derivacao.module\";\nimport { EmpresaModule } from \"./entities/empresa/empresa.module\";\nimport { EstadoModule } from \"./entities/estado/estado.module\";\nimport { FamiliaProdutoModule } from \"./entities/familia-produto/familia-produto.module\";\nimport { FilialModule } from \"./entities/filial/filial.module\";\nimport { PaisModule } from \"./entities/pais/pais.module\";\nimport { PedidoVendaItemModule } from \"./entities/pedido-venda-item/pedido-venda-item.module\";\nimport { PedidoVendaModule } from \"./entities/pedido-venda/pedido-venda.module\";\nimport { PessoaEnderecoModule } from \"./entities/pessoa-endereco/pessoa-endereco.module\";\nimport { PessoaFisicaModule } from \"./entities/pessoa-fisica/pessoa-fisica.module\";\nimport { PessoaJuridicaModule } from \"./entities/pessoa-juridica/pessoa-juridica.module\";\nimport { PessoaModule } from \"./entities/pessoa/pessoa.module\";\nimport { ProdutoModule } from \"./entities/produto/produto.module\";\nimport { RecebimentoContratoModule } from \"./entities/recebimento-contrato/recebimento.module\";\nimport { RoyaltyModule } from \"./entities/royalty/royalty.module\";\nimport { SafraModule } from \"./entities/safra/safra.module\";\nimport { TransportadoraModule } from \"./entities/transportadora/transportadora.module\";\nimport { UnidadeMedidaModule } from \"./entities/unidade-medida/unidade-medida.module\";\nimport { ExpedicaoModule } from \"./entities/expedicao/expedicao.module\";\nimport { IntegrationService } from \"./integration.service\";\nimport { DevolucaoModule } from \"./entities/devolucao/devolucao.module\";\nimport { OrdemCompraModule } from \"./entities/ordem-compra/ordem-compra.module\";\nimport { RecebimentoOrdemCompraModule } from \"./entities/recebimento-ordem-compra/recebimento-ordem-compra.module\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\nimport { NotaValidatorService } from \"./nota-validator.service\";\nimport { TransgeniaService } from \"./entities/transgenia/transgenia.service\";\nimport { TransgeniaModule } from \"./entities/transgenia/transgenia.module\";\nimport { ProcessoAvulsoModule } from \"./entities/processo-avulso/processo-avulso.module\";\nimport { LogIntegracaoModule } from \"./entities/log-integracao/log-integracao.module\";\n\n@NgModule({\n imports: [\n EmpresaModule,\n PessoaModule,\n PessoaFisicaModule,\n PessoaJuridicaModule,\n PaisModule,\n EstadoModule,\n CidadeModule,\n PessoaEnderecoModule,\n FilialModule,\n TransportadoraModule,\n ProdutoModule,\n UnidadeMedidaModule,\n RoyaltyModule,\n FamiliaProdutoModule,\n SafraModule,\n PedidoVendaModule,\n PedidoVendaItemModule,\n ContratoCompraModule,\n ContratoCompraItemModule,\n RecebimentoContratoModule,\n AgendaModule,\n DerivacaoModule,\n ExpedicaoModule,\n DevolucaoModule,\n OrdemCompraModule,\n RecebimentoOrdemCompraModule,\n TransgeniaModule,\n PermissionsModule,\n ProcessoAvulsoModule,\n LogIntegracaoModule\n ],\n providers: [\n IntegrationService,\n NotaValidatorService\n ],\n exports: [\n ],\n /*{CA:MODULE_CONFIG:START}*/\n /*{CA:MODULE_CONFIG:END}*/\n})\nexport class CoreModule {}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { Injectable } from \"@angular/core\";\nimport { ChegadaVeiculoOverride, OverrideParams } from \"@seniorsistemas/yms-routines\";\nimport { throwError } from \"rxjs\";\nimport { map, mergeMap } from \"rxjs/operators\";\nimport { AgendaService } from \"../core/entities/agenda/agenda.service\";\nimport { Devolucao } from \"../core/entities/devolucao/devolucao\";\nimport { DevolucaoService } from \"../core/entities/devolucao/devolucao.service\";\n\n@Injectable()\nexport class DevolucaoChegadaVeiculoOverride {\n private readonly DEVOLUCAO_KEY = \"ERP_SENIOR_DEVOLUCAO\";\n constructor(\n private override: ChegadaVeiculoOverride,\n private agendaService: AgendaService,\n private devolucaoService: DevolucaoService\n ){}\n\n public initialize() {\n this.override.addOverride(this.DEVOLUCAO_KEY, (params) => this.functionToOverride(params));\n }\n\n public remove() {\n this.override.disposeOverride(this.DEVOLUCAO_KEY);\n }\n\n private functionToOverride(params: OverrideParams){\n return this.agendaService.atualizarAgenda(params.agenda)\n .pipe(\n mergeMap(_ => this.devolucaoService.list({\n filterQuery: `agenda.id eq '${params.agenda.id}'`,\n page: 0,\n size: 1\n })),\n map(({ contents }) => contents.length ? contents[0] : null),\n mergeMap((devolucao: Devolucao) => {\n if (!devolucao) return throwError(\"Não foi possÃvel encontrar os dados de devolução\");\n\n return this.devolucaoService.registrarChegadaVeiculoComDevolucao({\n devolucao,\n circuito: params.circuito.id,\n sequenciaInicial: params.sequencia.id,\n vagaInicial: (params.vaga || {}).id\n });\n })\n );\n }\n\n}","import { Veiculo } from './../../veiculo/veiculo';\nimport { Motorista } from './../motorista/motorista';\nimport * as _moment from \"moment\"; const moment = _moment;\nimport { AgendaDto } from \"./agenda-dto\";\nimport { getLookupLabel } from \"../../../../utils/lookup-utils\";\n\nexport interface Planta {\n id: string;\n nome: string;\n cnpj: string;\n endereco: any;\n}\n\nexport class Agenda {\n public id: string;\n public descricao: string;\n public tipoAgendamento?: any;\n public planta?: any;\n public status?: string;\n public veiculo?: Veiculo;\n public motorista?: Motorista;\n public createdBy?: string;\n public createdByErp?: boolean;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n public externalTenant?: any;\n\n public static fromDto(agendaDto: AgendaDto, originEntity?: string): Agenda {\n const model: any = { ...agendaDto };\n\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n const lookupSeparator = \" - \";\n const displayFields = [\"descricao\"];\n\n model.label = getLookupLabel(model, displayFields, lookupSeparator);\n\n return model as Agenda;\n }\n\n public static toDto(agenda: Agenda, originEntity?: string): AgendaDto {\n const dto: any = { ...agenda };\n\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n return dto;\n }\n}\n","import * as _moment from \"moment\";const moment = _moment\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { UnidadeMedidaDto } from \"./unidade-medida-dto\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport class UnidadeMedida {\n public id?: string;\n public codigo: string;\n public descricao: string;\n public quantidadeDecimais: number;\n public createdBy?: string;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n public static fromDto(unidadeMedidaDto: UnidadeMedidaDto, originEntity?: string): UnidadeMedida {\n const model: any = { ...unidadeMedidaDto };\n\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n const lookupSeparator = \" - \";\n const displayFields = [\n \"id\",\n \"codigo\",\n \"descricao\",\n \"quantidadeDecimais\",\n \"createdBy\",\n \"createdDate\",\n \"lastModifiedBy\",\n \"lastModifiedDate\",\n ];\n\n model.label = displayFields.map(field => model[field]).join(lookupSeparator);\n\n return model as UnidadeMedida;\n }\n\n public static toDto(unidadeMedida: UnidadeMedida, originEntity?: string): UnidadeMedidaDto {\n const dto: any = { ...unidadeMedida };\n\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n return dto;\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import * as _moment from \"moment\";const moment = _moment\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { RoyaltyDto } from \"./royalty-dto\";\nimport { Empresa } from \"../empresa/empresa\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport class Royalty {\n public id?: string;\n public empresa: Empresa;\n public codigo: number;\n public descricao: string;\n public createdBy?: string;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n public static fromDto(royaltyDto: RoyaltyDto, originEntity?: string): Royalty {\n const model: any = { ...royaltyDto };\n\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n const lookupSeparator = \" - \";\n const displayFields = [\"id\", \"codigo\", \"descricao\", \"createdBy\", \"createdDate\", \"lastModifiedBy\", \"lastModifiedDate\"];\n\n model.label = displayFields.map(field => model[field]).join(lookupSeparator);\n\n if (originEntity !== \"Empresa\" && model.empresa) model.empresa = Empresa.fromDto(model.empresa, \"Royalty\");\n\n return model as Royalty;\n }\n\n public static toDto(royalty: Royalty, originEntity?: string): RoyaltyDto {\n const dto: any = { ...royalty };\n\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n if (originEntity !== \"Empresa\" && dto.empresa) dto.empresa = Empresa.toDto(dto.empresa, \"Royalty\");\n\n return dto;\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import * as _moment from \"moment\";const moment = _moment\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { FamiliaProdutoDto } from \"./familia-produto-dto\";\nimport { Empresa } from \"../empresa/empresa\";\nimport { Situacao } from \"../../enums/situacao\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport class FamiliaProduto {\n public id?: string;\n public empresa: Empresa;\n public codigo: string;\n public descricao: string;\n public situacao: Situacao;\n public createdBy?: string;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n public static fromDto(familiaProdutoDto: FamiliaProdutoDto, originEntity?: string): FamiliaProduto {\n const model: any = { ...familiaProdutoDto };\n\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n const lookupSeparator = \" - \";\n const displayFields = [\"id\", \"codigo\", \"descricao\", \"situacao\", \"createdBy\", \"createdDate\", \"lastModifiedBy\", \"lastModifiedDate\"];\n\n model.label = displayFields.map(field => model[field]).join(lookupSeparator);\n\n if (originEntity !== \"Empresa\" && model.empresa) model.empresa = Empresa.fromDto(model.empresa, \"FamiliaProduto\");\n\n return model as FamiliaProduto;\n }\n\n public static toDto(familiaProduto: FamiliaProduto, originEntity?: string): FamiliaProdutoDto {\n const dto: any = { ...familiaProduto };\n\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n if (originEntity !== \"Empresa\" && dto.empresa) dto.empresa = Empresa.toDto(dto.empresa, \"FamiliaProduto\");\n\n return dto;\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import * as _moment from \"moment\";const moment = _moment\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { ProdutoDto } from \"./produto-dto\";\nimport { Empresa } from \"../empresa/empresa\";\nimport { UnidadeMedida } from \"../unidade-medida/unidade-medida\";\nimport { Royalty } from \"../royalty/royalty\";\nimport { FamiliaProduto } from \"../familia-produto/familia-produto\";\nimport { TipoProduto } from \"../../enums/tipo-produto\";\nimport { Situacao } from \"../../enums/situacao\";\nimport { getLookupLabel } from \"../../../../utils/lookup-utils\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport class Produto {\n public id?: string;\n public empresa: Empresa;\n public unidadeMedida: UnidadeMedida;\n public codigo: string;\n public descricao: string;\n public descricaoComplementar: string;\n public tipo: TipoProduto;\n public situacao: Situacao;\n public produtoMisto: boolean = false;\n public comprado: boolean = false;\n public unidadeMedidaAgroG5: UnidadeMedida;\n public royalty?: Royalty;\n public familia?: FamiliaProduto;\n public createdBy?: string;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n public static fromDto(produtoDto: ProdutoDto, originEntity?: string): Produto {\n const model: any = { ...produtoDto };\n\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n const lookupSeparator = \" - \";\n const displayFields = [\n \"codigo\",\n \"descricao\",\n // \"tipo\",\n ];\n\n model.label = getLookupLabel(model, displayFields, lookupSeparator);\n\n if (originEntity !== \"Empresa\" && model.empresa) model.empresa = Empresa.fromDto(model.empresa, \"Produto\");\n if (originEntity !== \"UnidadeMedida\" && model.unidadeMedida)\n model.unidadeMedida = UnidadeMedida.fromDto(model.unidadeMedida, \"Produto\");\n if (originEntity !== \"UnidadeMedida\" && model.unidadeMedidaAgroG5)\n model.unidadeMedidaAgroG5 = UnidadeMedida.fromDto(model.unidadeMedidaAgroG5, \"Produto\");\n if (originEntity !== \"Royalty\" && model.royalty) model.royalty = Royalty.fromDto(model.royalty, \"Produto\");\n if (originEntity !== \"FamiliaProduto\" && model.familia) model.familia = FamiliaProduto.fromDto(model.familia, \"Produto\");\n\n return model as Produto;\n }\n\n public static toDto(produto: Produto, originEntity?: string): ProdutoDto {\n const dto: any = { ...produto };\n\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n if (originEntity !== \"Empresa\" && dto.empresa) dto.empresa = Empresa.toDto(dto.empresa, \"Produto\");\n if (originEntity !== \"UnidadeMedida\" && dto.unidadeMedida) dto.unidadeMedida = UnidadeMedida.toDto(dto.unidadeMedida, \"Produto\");\n if (originEntity !== \"UnidadeMedida\" && dto.unidadeMedidaAgroG5)\n dto.unidadeMedidaAgroG5 = UnidadeMedida.toDto(dto.unidadeMedidaAgroG5, \"Produto\");\n if (originEntity !== \"Royalty\" && dto.royalty) dto.royalty = Royalty.toDto(dto.royalty, \"Produto\");\n if (originEntity !== \"FamiliaProduto\" && dto.familia) dto.familia = FamiliaProduto.toDto(dto.familia, \"Produto\");\n\n return dto;\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import * as _moment from \"moment\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { DerivacaoDto } from \"./derivacao-dto\";\nimport { Empresa } from \"../empresa/empresa\";\nimport { Produto } from \"../produto/produto\";\nimport { Situacao } from \"../../enums/situacao\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { getLookupLabel } from \"../../../../utils/lookup-utils\";\nconst moment = _moment;\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport class Derivacao {\n public id?: string;\n public codigo: string;\n public descricao: string;\n public empresa: Empresa;\n public produto: Produto;\n public situacao: Situacao;\n public createdBy?: string;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n public static fromDto(derivacaoDto: DerivacaoDto, originEntity?: string): Derivacao {\n const model: any = { ...derivacaoDto };\n\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n const lookupSeparator = \" - \";\n const displayFields = [\"codigo\", \"descricao\"];\n\n model.label = getLookupLabel(model, displayFields, lookupSeparator);\n\n if (originEntity !== \"Empresa\" && model.empresa) model.empresa = Empresa.fromDto(model.empresa, \"Derivacao\");\n if (originEntity !== \"Produto\" && model.produto) model.produto = Produto.fromDto(model.produto, \"Derivacao\");\n\n return model as Derivacao;\n }\n\n public static toDto(derivacao: Derivacao, originEntity?: string): DerivacaoDto {\n const dto: any = { ...derivacao };\n\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n if (originEntity !== \"Empresa\" && dto.empresa) dto.empresa = Empresa.toDto(dto.empresa, \"Derivacao\");\n if (originEntity !== \"Produto\" && dto.produto) dto.produto = Produto.toDto(dto.produto, \"Derivacao\");\n\n return dto;\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import * as _moment from \"moment\";const moment = _moment\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { TransportadoraDto } from \"./transportadora-dto\";\nimport { PessoaJuridica } from \"../pessoa-juridica/pessoa-juridica\";\nimport { PessoaEndereco } from \"../pessoa-endereco/pessoa-endereco\";\nimport { SituacaoPessoa } from \"../../enums/situacao-pessoa\";\nimport { Pessoa } from \"../pessoa/pessoa\";\nimport { getLookupLabel } from \"../../../../utils/lookup-utils\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport class Transportadora {\n public id?: string;\n public codigo: number;\n public placaVeiculo: string;\n public pessoa: Pessoa;\n public endereco: PessoaEndereco;\n public situacao: SituacaoPessoa;\n public createdBy?: string;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n public static fromDto(transportadoraDto: TransportadoraDto, originEntity?: string): Transportadora {\n const model: any = { ...transportadoraDto };\n\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n const lookupSeparator = \" - \";\n const displayFields = [\n \"codigo\", \"pessoa.nome\", \"pessoa.cpfCnpj\"\n ];\n\n model.label = getLookupLabel(model, displayFields, lookupSeparator);\n\n if (originEntity !== \"Pessoa\" && model.pessoa)\n model.pessoa = Pessoa.fromDto(model.pessoa, \"Transportadora\");\n if (originEntity !== \"PessoaEndereco\" && model.endereco) model.endereco = PessoaEndereco.fromDto(model.endereco, \"Transportadora\");\n\n return model as Transportadora;\n }\n\n public static toDto(transportadora: Transportadora, originEntity?: string): TransportadoraDto {\n const dto: any = { ...transportadora };\n\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n if (originEntity !== \"Pessoa\" && dto.pessoa)\n dto.pessoa = Pessoa.toDto(dto.pessoa, \"Transportadora\");\n if (originEntity !== \"PessoaEndereco\" && dto.endereco) dto.endereco = PessoaEndereco.toDto(dto.endereco, \"Transportadora\");\n\n return dto;\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import * as _moment from \"moment\";\nimport { Agenda } from \"../agenda/agenda\";\nimport { Derivacao } from \"../derivacao/derivacao\";\nimport { PessoaEndereco } from \"../pessoa-endereco/pessoa-endereco\";\nimport { Pessoa } from \"../pessoa/pessoa\";\nimport { Produto } from \"../produto/produto\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\nimport { DevolucaoDto } from \"./devolucao-dto\";\nimport { Filial } from \"../filial/filial\";\nimport { Transportadora } from \"../transportadora/transportadora\";\nconst moment = _moment\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport class Devolucao {\n public id: string;\n public fornecedor: Pessoa;\n public origemMercadoria: PessoaEndereco; \n public derivacao: Derivacao;\n public produto: Produto;\n public agenda: Agenda;\n public transportadora: Pessoa;\n public chaveNotaFiscal?: string;\n public numeroNotaFiscal?: string;\n public serieNotaFiscal?: string;\n public numeroNotaFiscalProdutor?: string;\n public serieNotaFiscalProdutor?: string;\n public createdBy?: string;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n public custom?: any;\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n public static fromDto(devolucaoDto: DevolucaoDto, originEntity?: string): Devolucao {\n const model: any = { ...devolucaoDto };\n\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n \n\n const lookupSeparator = \" - \";\n const displayFields = [\n ''\n ];\n\n model.label = displayFields.map(field => model[field]).join(lookupSeparator);\n\n if (originEntity !== \"Pessoa\" && model.fornecedor) model.fornecedor = Pessoa.fromDto(model.fornecedor, \"Devolucao\");\n if (originEntity !== \"Filial\" && model.filial) model.filial = Filial.fromDto(model.filial, \"Devolucao\");\n if (originEntity !== \"Transportadora\" && model.transportadora) model.transportadora = Transportadora.fromDto(model.transportadora, \"Devolucao\");\n if (originEntity !== \"Produto\" && model.produto) model.produto = Produto.fromDto(model.produto, \"Devolucao\");\n if (originEntity !== \"Agenda\" && model.agenda) model.agenda = Agenda.fromDto(model.agenda, \"Devolucao\");\n if ((originEntity !== \"PessoaEndereco\" && model.origemMercadoria)) model.origemMercadoria = PessoaEndereco.fromDto(model.origemMercadoria, \"Recebimento\");\n if ((originEntity !== \"Derivacao\" && model.derivacao)) model.derivacao = Derivacao.fromDto(model.derivacao, \"Devolucao\");\n return model as Devolucao;\n }\n\n public static toDto(devolucao: Devolucao, originEntity?: string): DevolucaoDto {\n const dto: any = { ...devolucao };\n\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n if (originEntity !== \"Pessoa\" && dto.fornecedor) dto.fornecedor = Pessoa.toDto(dto.fornecedor, \"Devolucao\");\n if (originEntity !== \"Filial\" && dto.filial) dto.filial = Filial.toDto(dto.filial, \"Devolucao\");\n if (originEntity !== \"Transportadora\" && dto.transportadora) dto.transportadora = Transportadora.toDto(dto.transportadora, \"Devolucao\");\n if (originEntity !== \"Produto\" && dto.produto) dto.produto = Produto.toDto(dto.produto, \"Devolucao\");\n if (originEntity !== \"Agenda\" && dto.agenda) dto.agenda = Agenda.toDto(dto.agenda, \"Devolucao\");\n if ((originEntity !== \"PessoaEndereco\" && dto.origemMercadoria)) dto.origemMercadoria = PessoaEndereco.toDto(dto.origemMercadoria, \"Devolucao\");\n\n return dto;\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","export enum StatusAgenda {\n AGUARDANDO_CONFIRMACAO = \"AGUARDANDO_CONFIRMACAO_SOLICITANTE\",\n AGENDADO = \"AGENDADO\",\n AGUARDANDO_CONFIRMACAO_SOLICITANTE = \"AGUARDANDO_CONFIRMACAO\",\n REJEITADO_POR_VALIDACAO = \"REJEITADO_POR_VALIDACAO\",\n CANCELADO = \"CANCELADO\"\n}\n","import { ErpFormConfigService } from './../../core/erp-form-config/erp-form-config-service';\nimport { AfterViewInit, Component, Input, OnDestroy, OnInit } from \"@angular/core\";\nimport { FormBuilder, FormControl, FormGroup, Validators } from \"@angular/forms\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { FieldType, FormField } from \"@seniorsistemas/angular-components\";\nimport * as _moment from \"moment\";\nimport { ConfirmationService, MessageService, SortMeta } from \"primeng/api\";\nimport { ReplaySubject, Subject } from \"rxjs\";\nimport { concatMap, filter, finalize, mergeMap, takeUntil } from \"rxjs/operators\";\nimport { isValidFilter } from \"../../../utils/utils\";\nimport { onLookupRequest, onSearchRequest } from \"../../../utils/lookup-utils\";\nimport { Agenda } from \"../../core/entities/agenda/agenda\";\nimport { Derivacao } from \"../../core/entities/derivacao/derivacao\";\nimport { DerivacaoService } from \"../../core/entities/derivacao/derivacao.service\";\nimport { Devolucao } from \"../../core/entities/devolucao/devolucao\";\nimport { DevolucaoDto } from \"../../core/entities/devolucao/devolucao-dto\";\nimport { DevolucaoService } from \"../../core/entities/devolucao/devolucao.service\";\nimport { Filial } from \"../../core/entities/filial/filial\";\nimport { FilialService, PesquisarFiliaisInput } from \"../../core/entities/filial/filial.service\";\nimport { PessoaEndereco } from \"../../core/entities/pessoa-endereco/pessoa-endereco\";\nimport { PessoaEnderecoService } from \"../../core/entities/pessoa-endereco/pessoa-endereco.service\";\nimport { Pessoa } from \"../../core/entities/pessoa/pessoa\";\nimport { PessoaService } from \"../../core/entities/pessoa/pessoa.service\";\nimport { Produto } from \"../../core/entities/produto/produto\";\nimport { ProdutoService, ProdutoParams } from \"../../core/entities/produto/produto.service\";\nimport { Transportadora } from \"../../core/entities/transportadora/transportadora\";\nimport { TransportadoraService } from \"../../core/entities/transportadora/transportadora.service\";\nimport { DevolucaoChegadaVeiculoOverride } from \"../devolucao-chegada-veiculo.override\";\nimport { StatusAgenda } from \"./../../core/enums/status-agenda\";\nimport { AgendaService } from \"../../core/entities/agenda/agenda.service\";\nimport { ErpProcessData } from \"../../core/erp-process-data/erp-process-data\";\nimport { ErpProcessService } from \"../../core/erp-process-data/erp-process-service\";\nimport { HasChangeService } from '../../core/has-change/has-change-service';\n\nconst moment = _moment;\n\n@Component({\n selector: 'devolucao-form',\n templateUrl: './devolucao-form.component.html'\n})\n\nexport class DevolucaoFormComponent implements OnInit, OnDestroy, AfterViewInit {\n formGroup: FormGroup;\n\n filialSearchFields: FormField[];\n filialSearchGridFields: FormField[];\n filialSearchGridData: Filial[];\n filialLookupDisplayFields = [\"codigo\", \"nome\", \"empresa.nome\"];\n filialAdvancedDisplayFields = [\"id\", \"codigo\", \"nome\", \"empresa.nome\"];\n filialLookupSeparator = \" - \";\n filialLookupSuggestions: Filial[];\n filialSearchTotalRecords: number;\n\n fornecedorSearchFields: FormField[];\n fornecedorSearchGridData: Pessoa[];\n fornecedorLookupDisplayFields = [\"codigo\", \"nome\"];\n fornecedorAdvancedDisplayFields = [\"id\", \"codigo\", \"nome\"];\n fornecedorLookupSeparator = \" - \";\n fornecedorLookupSuggestions: Pessoa[];\n fornecedorSearchTotalRecords: number;\n\n produtoSearchFields: FormField[];\n produtoSearchGridData: Produto[];\n produtoLookupDisplayFields = [\"codigo\", \"descricao\"];\n produtoAdvancedDisplayFields = [\"id\", \"codigo\", \"descricao\"];\n produtoLookupSeparator = \" - \";\n produtoLookupSuggestions: Produto[];\n produtoSearchTotalRecords: number;\n\n derivacaoSearchFields: FormField[];\n derivacaoSearchGridData: Derivacao[];\n derivacaoLookupDisplayFields = [\"codigo\", \"descricao\"];\n derivacaoAdvancedDisplayFields = [\"id\", \"codigo\", \"descricao\"];\n derivacaoLookupSeparator = \" - \";\n derivacaoLookupSuggestions: Derivacao[];\n derivacaoSearchTotalRecords: number;\n\n origemMercadoriaSearchFields: FormField[];\n origemMercadoriaSearchGridData: PessoaEndereco[];\n origemMercadoriaLookupDisplayFields = [\"codigo\", \"endereco\"];\n origemMercadoriaAdvancedDisplayFields = [\"id\", \"codigo\", \"endereco\", \"numero\"];\n origemMercadoriaLookupSeparator = \" - \";\n origemMercadoriaLookupSuggestions: PessoaEndereco[];\n origemMercadoriaSearchTotalRecords: number;\n\n transportadoraSearchFields: FormField[];\n transportadoraSearchGridFields: FormField[];\n transportadoraSearchGridData: Transportadora[];\n transportadoraLookupDisplayFields = [\"codigo\", \"pessoa.nome\", \"pessoa.cpfCnpj\"];\n transportadoraAdvancedDisplayFields = [\"id\", \"codigo\", \"pessoa.nome\", \"pessoa.cpfCnpj\"];\n transportadoraLookupSeparator = \" - \";\n transportadoraLookupSuggestions: Transportadora[];\n transportadoraSearchTotalRecords: number;\n\n disableButtonSave: boolean = false;\n\n totalEixosContratados: number = 0;\n totalEixosComposicao: number = 0;\n\n private formCarregado: any;\n\n public saveAndInitButton: any;\n\n public loading: boolean;\n\n @Input() private agenda: Agenda;\n\n private readonly ngUnsubscribe = new Subject<void>(); \n private erpProcessData: ErpProcessData;\n private enableRevalidation: boolean;\n\n constructor(\n private fb: FormBuilder,\n private router: Router,\n private translate: TranslateService,\n private filialService: FilialService,\n private pessoaService: PessoaService,\n private produtoService: ProdutoService,\n private derivacaoService: DerivacaoService,\n private origemMercadoriaService: PessoaEnderecoService,\n private transportadoraService: TransportadoraService,\n private devolucaoService: DevolucaoService,\n private messageService: MessageService,\n private route: ActivatedRoute,\n private override: DevolucaoChegadaVeiculoOverride,\n private confirmationService: ConfirmationService,\n private agendaService: AgendaService,\n private erpProcessService: ErpProcessService,\n private erpFormConfigService: ErpFormConfigService,\n private hasChangeService: HasChangeService\n ) {\n this.formGroup = this.getFormGroup();\n }\n\n ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n\n this.override.remove();\n }\n\n ngAfterViewInit(): void {\n this.override.initialize();\n this.saveAndInitButton = document.getElementById('init');\n\n this.formGroup.valueChanges.subscribe(() => {\n if (this.formCarregado) {\n this.hasChangeService.hasChange(this.agenda.id);\n }\n });\n }\n\n ngOnInit() {\n this.filialSearchFields = this.getFilialSearchFields();\n this.filialSearchGridFields = this.getFilialSearchGridFields();\n this.fornecedorSearchFields = this.getFornecedorSearchFields();\n this.produtoSearchFields = this.getProdutoSearchFields();\n this.derivacaoSearchFields = this.getDerivacaoSearchFields();\n this.origemMercadoriaSearchFields = this.getOrigemMercadoriaSearchFields();\n this.transportadoraSearchFields = this.getTransportadoraSearchFields();\n this.transportadoraSearchGridFields = this.getTransportadoraSearchGridFields();\n\n this.route.params.pipe(takeUntil(this.ngUnsubscribe)).subscribe(({ agenda }) => {\n if (agenda != 'new') {\n this.getDevolucao(agenda);\n }\n });\n\n this.getEmpresaFilial();\n this.filialValueChanges();\n\n const getFilterQueryProduto = (value: any) => `produto.id eq '${value.id}' and situacao eq 'ATIVO'`;\n this.checkValuesChanges(\"produto\", \"derivacao\", this.derivacaoService,\n getFilterQueryProduto, ['codigo', 'descricao'], 10, true, true\n );\n\n const getFilterQueryFornecedor = (value: any) => `pessoa.id eq '${value.id}'`;\n this.checkValuesChanges(\n \"fornecedor\", \"origemMercadoria\", this.origemMercadoriaService,\n getFilterQueryFornecedor, ['codigo', 'endereco'], 10, false, true\n );\n\n if (this.agenda && this.agenda.externalTenant) {\n this.setTransportadora(this.agenda.externalTenant.cnpj);\n }\n\n this.totalEixosComposicao = this.agenda && this.agenda.veiculo ? this.agenda.veiculo.eixos || 0 : 0;\n\n const statusAgenda = [\"AGUARDANDO_CONFIRMACAO_SOLICITANTE\", \"AGENDADO\", \"AGUARDANDO_CONFIRMACAO\", \"EM_EXECUCAO\", \"REJEITADO_POR_VALIDACAO\"];\n if (this.agenda && !statusAgenda.includes(this.agenda.status)) {\n this.formGroup.disable();\n this.disableButtonSave = true;\n }\n this.createdByErpDisableForm();\n\n this.erpProcessService.current.subscribe(message => this.erpProcessData = message);\n this.erpFormConfigService.current.subscribe(message => this.enableRevalidation = message);\n }\n\n public createdByErpDisableForm() {\n if (this.agenda && this.agenda.createdByErp) {\n this.formGroup.get('filial').disable();\n this.formGroup.get('fornecedor').disable();\n this.formGroup.get('produto').disable();\n this.formGroup.get('derivacao').disable();\n this.formGroup.get('origemMercadoria').disable();\n this.formGroup.get('transportadora').disable();\n this.formGroup.get('contratos').disable();\n }\n }\n\n private getEmpresaFilial() {\n const planta = this.agenda.planta || { cnpj: [] };\n if (planta.cnpj.length !== 1) return;\n\n this.filialService\n .list({\n page: 0,\n size: 1,\n filterQuery: `pessoa.cpfCnpj eq '${planta.cnpj[0]}'`,\n displayFields: ['*', 'empresa.nome']\n })\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(({ contents }) => {\n if (contents.length === 1) {\n this.formGroup.get(\"filial\").setValue(Filial.fromDto(contents[0]));\n }\n });\n }\n\n private filialValueChanges() {\n this.formGroup.get(\"filial\")\n .valueChanges\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(value => {\n if (!!value) {\n return this.formGroup.get(\"produto\").enable();\n }\n this.formGroup.get(\"produto\").setValue(undefined);\n this.formGroup.get(\"produto\").disable();\n });\n }\n\n private checkValuesChanges(formControlUpdated: string, formControlDependent: string, service: any, getFilterQuery: any,\n variables: any, querySize: number = 1, isChangeValidators?: boolean, clearFormControlDependent?: boolean) {\n\n this.formGroup.get(formControlUpdated)\n .valueChanges\n .pipe(\n takeUntil(this.ngUnsubscribe),\n filter(value => {\n if (isChangeValidators) {\n this.formGroup.get(formControlDependent).setValidators(value ? Validators.required : Validators.nullValidator);\n }\n if (clearFormControlDependent) {\n this.formGroup.get(formControlDependent).setValue(null);\n }\n if (!value) {\n this.formGroup.get(formControlDependent).setValue(undefined);\n this.formGroup.get(formControlDependent).disable();\n return false;\n }\n return true;\n }),\n mergeMap((value: any) => {\n const filterQuery = getFilterQuery(value);\n return service.list({ filterQuery, page: 0, size: querySize });\n })\n )\n .subscribe(({ contents }) => {\n if (!contents.length) {\n this.formGroup.get(formControlDependent).enable();\n return;\n }\n if (contents.length === 1) {\n const code = contents[0][variables[0]] ? contents[0][variables[0]].toString() : '';\n const description = contents[0][variables[1]] ? contents[0][variables[1]].toString() : '';\n if (!description.trim() && !code.trim()) {\n contents[0].label = this.translate.instant('yms.erp.derivacao_sem_descricao');\n } else {\n contents[0].label = `${code} - ${description}`;\n }\n \n this.formGroup.get(formControlDependent).setValue(contents[0]);\n }\n\n if (contents.length > 1) {\n this.formGroup.get(formControlDependent).enable();\n } else {\n this.formGroup.get(formControlDependent).disable();\n }\n });\n }\n\n public getDevolucao(agendaId: string) {\n this.devolucaoService\n .list({\n filterQuery: `agenda.id eq '${agendaId}'`,\n size: 1,\n page: 0\n })\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(({ contents }) => {\n if (!contents.length) {\n return;\n }\n\n this.totalEixosContratados = contents[0].eixos || 0;\n this.totalEixosComposicao = contents[0].agenda && contents[0].agenda.veiculo\n ? contents[0].agenda.veiculo.eixos || 0 : 0;\n\n const devolucao: DevolucaoDto = Devolucao.fromDto(contents[0]);\n this.formGroup.enable();\n this.formGroup.patchValue(devolucao);\n });\n this.formCarregado = true;\n }\n\n\n public onFilialLookupRequest(value: string) {\n const filterInput = this.getFilialSearchFields()\n .filter(({ type }) => isValidFilter(type, value))\n .reduce((a, { name, type }) => {\n if (type === FieldType.Integer) {\n return { ...a, [name]: value.replace(/\\D/, \"\") };\n }\n return { ...a, [name]: value };\n }, { cnpjs: this.agenda.planta.cnpj, pagina: { limit: 10, offset: 0 } } as PesquisarFiliaisInput);\n\n this.filialService\n .listFiliais(filterInput)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) =>\n this.filialLookupSuggestions = list.filiais.map((filial: any) => Filial.fromDto(filial))\n );\n }\n\n public onFilialSearchRequest(event: any) {\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const sort: SortMeta[] = multiSortMeta;\n const sortFormatted = !!(sort || []).length && { campo: sort[0].field, ordenacao: sort[0].order > 0 ? 'Asc' : 'Desc' };\n const filterInput = this.getFilialSearchFields()\n .filter(({ name }) => filterData[name] != undefined && filterData[name] != \"\")\n .reduce((a, { name, type }) => {\n const value = filterData[name];\n if (type === FieldType.Integer) {\n return { ...a, [name]: `${value}`.replace(/\\D/, \"\") };\n }\n return { ...a, [name]: value };\n }, { cnpjs: this.agenda.planta.cnpj, pagina: { limit: rows, offset: page, listaOrdenacao: sortFormatted ? [{ ...(sortFormatted) }] : null } } as PesquisarFiliaisInput);\n\n this.filialService\n .listFiliais(filterInput)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.filialSearchGridData = list.filiais.map(Filial.fromDto);\n this.filialSearchTotalRecords = list.qtdTotalRegistros;\n });\n }\n\n onFornecedorLookupRequest(value: string) {\n onLookupRequest(this.fornecedorSearchFields, this.fornecedorLookupDisplayFields, this.fornecedorAdvancedDisplayFields,\n this.fornecedorLookupSeparator, this.pessoaService, value, ` fornecedor eq true `)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => this.fornecedorLookupSuggestions = list.contents);\n }\n\n onFornecedorSearchRequest(event: any) {\n onSearchRequest(this.fornecedorSearchFields, this.fornecedorLookupDisplayFields,\n this.fornecedorAdvancedDisplayFields, this.fornecedorLookupSeparator, this.pessoaService, event,\n ` fornecedor eq true `)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.fornecedorSearchGridData = list.contents;\n this.fornecedorSearchTotalRecords = list.totalElements;\n });\n }\n\n onProdutoLookupRequest(value: string) {\n const filial = this.formGroup.get(\"filial\").value;\n const tipoAgendamento = this.agenda.tipoAgendamento;\n\n this.produtoService\n .listProdutos({\n pesquisa: value,\n empresaId: !!filial ? filial.empresa.id : null,\n filialId: !!filial ? filial.id : null,\n tipoAgendamentoId: !!tipoAgendamento ? tipoAgendamento.id : null,\n situacao: 'ATIVO',\n pagina: {\n limit: 100,\n offset: 0\n }\n })\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((res: any) => this.produtoLookupSuggestions = res.produtos.map(Produto.fromDto));\n }\n\n onProdutoSearchRequest(event: any) {\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const sort: SortMeta[] = multiSortMeta;\n const sortFormatted = !!(sort || []).length && { campo: sort[0].field, ordenacao: sort[0].order > 0 ? 'Asc' : 'Desc' };\n const filterInput = this.getProdutoSearchFields()\n .filter(({ name }) => filterData[name] != undefined && filterData[name] != \"\")\n .reduce((a, { name, type }) => {\n const value = filterData[name];\n if (type === FieldType.Integer) {\n return { ...a, [name]: `${value}`.replace(/\\D/, \"\") };\n }\n return { ...a, [name]: value };\n }, { pagina: { limit: rows, offset: page, listaOrdenacao: sortFormatted ? [{ ...(sortFormatted) }] : null } } as ProdutoParams);\n\n const filial = this.formGroup.get(\"filial\").value;\n const tipoAgendamento = this.agenda.tipoAgendamento;\n\n this.produtoService.listProdutos({\n ...filterInput,\n empresaId: !!filial ? filial.empresa.id : null,\n filialId: !!filial ? filial.id : null,\n situacao: 'ATIVO',\n tipoAgendamentoId: !!tipoAgendamento ? tipoAgendamento.id : null\n })\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((res: any) => {\n this.produtoSearchTotalRecords = res.qtdTotalRegistros;\n this.produtoSearchGridData = res.produtos.map(Produto.fromDto);\n });\n }\n\n onDerivacaoLookupRequest(value: string) {\n onLookupRequest(this.derivacaoSearchFields, this.derivacaoLookupDisplayFields, this.derivacaoAdvancedDisplayFields,\n this.derivacaoLookupSeparator, this.derivacaoService, value)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.derivacaoLookupSuggestions = list.contents;\n });\n }\n\n onDerivacaoSearchRequest(event: any) {\n onSearchRequest(this.derivacaoSearchFields, this.derivacaoLookupDisplayFields,\n this.derivacaoAdvancedDisplayFields, this.derivacaoLookupSeparator, this.derivacaoService, event)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.derivacaoSearchGridData = list.contents;\n this.derivacaoSearchTotalRecords = list.totalElements;\n });\n }\n\n onOrigemMercadoriaLookupRequest(value: string) {\n onLookupRequest(this.origemMercadoriaSearchFields, this.origemMercadoriaLookupDisplayFields,\n this.origemMercadoriaAdvancedDisplayFields, this.origemMercadoriaLookupSeparator, this.origemMercadoriaService, value,\n ` pessoa.id eq '${this.formGroup.get(\"fornecedor\").value.id}' `\n )\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.origemMercadoriaLookupSuggestions = list.contents;\n });\n }\n\n onOrigemMercadoriaSearchRequest(event: any) {\n onSearchRequest(this.origemMercadoriaSearchFields, this.origemMercadoriaLookupDisplayFields,\n this.origemMercadoriaAdvancedDisplayFields, this.origemMercadoriaLookupSeparator, this.origemMercadoriaService, event,\n ` pessoa.id eq '${this.formGroup.get(\"fornecedor\").value.id}' `)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.origemMercadoriaSearchGridData = list.contents;\n this.origemMercadoriaSearchTotalRecords = list.totalElements;\n });\n }\n\n\n onTransportadoraLookupRequest(value: string) {\n onLookupRequest(this.transportadoraSearchFields, this.transportadoraLookupDisplayFields, this.transportadoraAdvancedDisplayFields, this.transportadoraLookupSeparator, this.transportadoraService, value)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.transportadoraLookupSuggestions = list.contents;\n });\n }\n\n onTransportadoraSearchRequest(event: any) {\n onSearchRequest(this.transportadoraSearchFields, this.transportadoraLookupDisplayFields, this.transportadoraAdvancedDisplayFields, this.transportadoraLookupSeparator, this.transportadoraService, event)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.transportadoraSearchGridData = list.contents;\n this.transportadoraSearchTotalRecords = list.totalElements;\n });\n }\n\n setTransportadora(value: string) {\n if (value) {\n const cnpj = value.replace('.', '').replace('/', '').replace('-', '');\n const filterQuery = `pessoa.cpfCnpj eq '${cnpj}'`;\n this.transportadoraService.list({ filterQuery, page: 0, size: 10 })\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(({ contents }) => {\n if (contents.length === 1) {\n const code = contents[0].codigo ? contents[0].codigo.toString() : '';\n const description = contents[0].descricao ? contents[0].descricao.toString() : '';\n if (!description.trim() && !code.trim()) {\n contents[0].label = this.translate.instant('yms.erp.derivacao_sem_descricao');\n } else {\n contents[0].label = `${code} - ${description}`;\n }\n this.formGroup.get('transportadora').setValue(contents[0]);\n }\n });\n }\n }\n\n onSave(start?: boolean) {\n this.formGroup.get('agenda').setValue(this.agenda);\n if (this.formGroup.invalid) {\n this.validateAllFormFields(this.formGroup);\n }\n\n this.loading = true;\n\n if (this.isNew() || !this.enableRevalidation) {\n return this.saveAndInit(start);\n }\n\n this.erpProcessData = this.erpProcessService.builderErpProcessData(this.erpProcessData, this.formGroup);\n this.erpProcessService.changeDataErp(this.erpProcessData);\n return this.agendaService\n .checarRevalidacao(this.erpProcessData)\n .pipe(\n takeUntil(this.ngUnsubscribe),\n finalize(() => this.loading = false),\n )\n .subscribe((response: any) => {\n if (response.requerRevalidacao) {\n this.atualizaAgendaParaRejeitadoPorValidacao();\n }\n else {\n this.saveAndInit(start);\n }\n });\n }\n\n private atualizaAgendaParaRejeitadoPorValidacao() {\n this.confirmationService.confirm({\n header: this.translate.instant(\"yms.patio.agenda_revalidacao_title\"),\n message: this.translate.instant(\"yms.patio.agenda_revalidacao_message\"),\n accept: () => {\n this.hasChangeService.hasChangeSave(this.agenda.id);\n this.agenda.status = StatusAgenda.REJEITADO_POR_VALIDACAO;\n this.agenda.motorista = {id: this.erpProcessData.motoristaId};\n this.agenda.veiculo = {id: this.erpProcessData.veiculoId};\n this.agendaService\n .atualizarAgenda(this.agenda)\n .pipe(\n takeUntil(this.ngUnsubscribe),\n concatMap((_) => this.getSaveObservable()),\n finalize(() => this.loading = false),\n )\n .subscribe((_) => {\n this.successMessage();\n this.router.navigate([\"/chegada-veiculo\"], { relativeTo: this.route });\n });\n },\n reject: () => this.loading = false,\n });\n }\n\n private saveAndInit(start: boolean) {\n this.getSaveObservable()\n .pipe(\n takeUntil(this.ngUnsubscribe),\n finalize(() => this.loading = false)\n )\n .subscribe((value: any) => {\n this.formGroup.get('id').setValue(value.id || null);\n this.successMessage();\n if (start && this.saveAndInitButton) {\n this.hasChangeService.hasChangeSave(this.agenda.id);\n this.saveAndInitButton.click();\n }\n });\n }\n\n private successMessage() {\n this.messageService.add({\n severity: \"success\",\n summary: this.translate.instant(\"saved_message_title\"),\n detail: this.translate.instant(\"saved_message_content\"),\n });\n }\n\n private addMessage(severity: string, summary: string, detail: string) {\n this.messageService.add({\n severity,\n summary: this.translate.instant(summary),\n detail: this.translate.instant(detail),\n });\n }\n\n private getSaveObservable() {\n const value = this.formGroup.getRawValue();\n const devolucaoDto = Devolucao.toDto(value);\n\n if (this.isNew() && !value.id) {\n return this.devolucaoService.insert(devolucaoDto);\n } else {\n return this.devolucaoService.update(this.formGroup.value.id, devolucaoDto);\n }\n }\n\n public isNew() {\n return !this.formGroup.value.id;\n }\n\n private getFormGroup() {\n return this.fb.group({\n id: [undefined],\n filial: [undefined, Validators.required],\n fornecedor: [undefined, Validators.required],\n produto: [{ value: undefined, disabled: true }, Validators.required],\n derivacao: [{ value: undefined, disabled: true }, Validators.required],\n origemMercadoria: [{ value: undefined, disabled: true }, Validators.required],\n transportadora: [undefined],\n agenda: [undefined, Validators.required],\n chaveNotaFiscal: [undefined],\n numeroNotaFiscal: [undefined],\n serieNotaFiscal: [undefined],\n numeroNotaFiscalProdutor: [undefined],\n serieNotaFiscalProdutor: [undefined]\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 private getFilialSearchFields() {\n return [\n new FormField({\n name: \"nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.filial_nome\")\n }),\n new FormField({\n name: \"codigo\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.filial_codigo\")\n })\n ];\n }\n\n private getFilialSearchGridFields() {\n return [\n new FormField({\n name: \"nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.filial_nome\")\n }),\n new FormField({\n name: \"codigo\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.filial_codigo\")\n }),\n new FormField({\n name: \"empresa.nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.empresa\")\n })\n ];\n }\n\n private getFornecedorSearchFields() {\n return [\n new FormField({\n name: \"nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.pessoa_nome\")\n }),\n new FormField({\n name: \"codigo\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.pessoa_codigo\")\n }),\n ];\n }\n\n private getProdutoSearchFields() {\n return [\n new FormField({\n name: \"descricao\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.produto_descricao\")\n }),\n new FormField({\n name: \"codigo\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.produto_codigo\")\n }),\n ];\n }\n\n private getDerivacaoSearchFields() {\n return [\n new FormField({\n name: \"descricao\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.derivacao_descricao\")\n }),\n new FormField({\n name: \"codigo\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.derivacao_codigo\")\n }),\n ];\n }\n\n private getOrigemMercadoriaSearchFields() {\n return [\n new FormField({\n name: \"codigo\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.pessoa_endereco_codigo\")\n }),\n new FormField({\n name: \"numero\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.pessoa_endereco_numero\")\n }),\n new FormField({\n name: \"endereco\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.pessoa_endereco_endereco\")\n }),\n ];\n }\n\n private getTransportadoraSearchFields() {\n return [\n new FormField({\n name: \"codigo\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.transportadora_codigo\")\n }),\n new FormField({\n name: \"pessoa.nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.transportadora_descricao\")\n }),\n new FormField({\n name: \"pessoa.cpfCnpj\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.transportadora_cnpj\")\n })\n ];\n }\n\n private getTransportadoraSearchGridFields() {\n return [\n new FormField({\n name: \"codigo\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.transportadora_codigo\")\n }),\n new FormField({\n name: \"pessoa.nome\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.pessoa_nome\")\n }),\n new FormField({\n name: \"pessoa.cpfCnpj\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.transportadora_cnpj\")\n })\n ];\n }\n}\n","import { Component, Input, AfterViewInit } from \"@angular/core\";\nimport { Subject, throwError, of } from \"rxjs\";\nimport { takeUntil, switchMap, finalize } from \"rxjs/operators\";\nimport { Devolucao } from \"../../../core/entities/devolucao/devolucao\";\nimport { DevolucaoService } from \"../../../core/entities/devolucao/devolucao.service\";\nimport { DevolucaoDto } from \"../../../core/entities/devolucao/devolucao-dto\";\n\n\n@Component({\n selector: 'devolucao-info',\n template: `\n <div *sLoadingState=\"loading\" style=\"padding: 20px;\">\n <div class=\"detail-pane\" *ngIf=\"agenda\">\n <div class=\"detail-span\">\n <span class=\"title\">{{'yms.erp.devolucao_fornecedor' | translate}}</span>\n <span class=\"data\">{{devolucao?.fornecedor?.nome}}</span>\n </div>\n <div class=\"detail-span\">\n <span class=\"title\">{{'yms.erp.devolucao_transportadora' | translate}}</span>\n <span class=\"data\">{{devolucao?.transportadora?.nome}}</span>\n </div>\n <div class=\"detail-span\">\n <span class=\"title\">{{'yms.erp.devolucao_produto' | translate}}</span>\n <span class=\"data\">{{devolucao?.produto?.descricao}}</span>\n </div>\n <div class=\"detail-span\">\n <span class=\"title\">{{'yms.erp.devolucao_derivacao' | translate}}</span>\n <span class=\"data\">{{devolucao?.derivacao?.descricao}}</span>\n </div>\n \n <div class=\"detail-span\">\n <span class=\"title\">{{'yms.erp.devolucao_chave_nota_fiscal' | translate}}</span>\n <span class=\"data\">{{devolucao?.chaveNotaFiscal}}</span>\n </div>\n <div class=\"detail-span\">\n <span class=\"title\">{{'yms.erp.devolucao_numero_nota_fiscal' | translate}}</span>\n <span class=\"data\">{{devolucao?.numeroNotaFiscal}}</span>\n </div>\n <div class=\"detail-span\">\n <span class=\"title\">{{'yms.erp.devolucao_serie_nota_fiscal' | translate}}</span>\n <span class=\"data\">{{devolucao?.serieNotaFiscal}}</span>\n </div>\n <div class=\"detail-span\">\n <span class=\"title\">{{'yms.erp.devolucao_numero_nota_fiscal_produtor' | translate}}</span>\n <span class=\"data\">{{devolucao?.numeroNotaFiscalProdutor}}</span>\n </div>\n <div class=\"detail-span\">\n <span class=\"title\">{{'yms.erp.devolucao_serie_nota_fiscal_produtor' | translate}}</span>\n <span class=\"data\">{{devolucao?.serieNotaFiscalProdutor}}</span>\n </div> \n <div class=\"detail-span\">\n <span class=\"title\">{{'yms.erp.devolucao_origem_mercadoria' | translate}}</span>\n <span class=\"data\">{{devolucao?.origemMercadoria?.cep}} - {{devolucao?.origemMercadoria?.endereco}}</span>\n </div>\n </div>\n </div>\n `,\n styleUrls: ['./devolucao-info.component.scss']\n})\nexport class DevolucaoInfoComponent implements AfterViewInit {\n\n @Input() agenda: any;\n\n devolucao: Devolucao;\n loading = true;\n\n private readonly unsubscribe$: Subject<void>;\n constructor(private devolucaoService: DevolucaoService) {\n this.unsubscribe$ = new Subject();\n }\n\n ngAfterViewInit() {\n this.devolucaoService.list({\n filterQuery: `agenda.id eq '${this.agenda.id}'`,\n page: 0,\n size: 1\n })\n .pipe(\n takeUntil(this.unsubscribe$),\n switchMap(({ contents }) => {\n if (!contents.length) return throwError(\"Devolução não encontrado.\");\n\n return of(contents[0]);\n }),\n finalize(() => this.loading = false)\n )\n .subscribe((devolucao: DevolucaoDto) => this.devolucao = Devolucao.fromDto(devolucao));\n }\n\n}","import * as _moment from \"moment\";\nimport { Agenda } from \"../agenda/agenda\";\nimport { Filial } from \"../filial/filial\";\nimport { PedidoVenda } from \"../pedido-venda/pedido-venda\";\nimport { Pessoa } from \"../pessoa/pessoa\";\nimport { Transportadora } from \"../transportadora/transportadora\";\nimport { ExpedicaoDto } from \"./expedicao-dto\";\nimport { PedidoVendaItem } from \"../pedido-venda-item/pedido-venda-item\";\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\nconst moment = _moment\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport class Expedicao {\n public id: string;\n public clienteFaturamento: Pessoa;\n public clienteRemessa: Pessoa;\n public filial: Filial;\n public transportadora: Transportadora;\n public pedidos: OrdemVenda[];\n public agenda: Agenda;\n public eixos?: number;\n public createdBy?: string;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n public static fromDto(expedicaoDto: ExpedicaoDto, originEntity?: string): Expedicao {\n const model: any = { ...expedicaoDto };\n\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n const lookupSeparator = \" - \";\n const displayFields = [\n \"id\",\n \"clienteFaturamento.id\",\n \"clienteFaturamento.codigo\",\n \"clienteFaturamento.nome\",\n \"clienteRemessa.id\",\n \"clienteRemessa.codigo\",\n \"clienteRemessa.nome\",\n \"filial.id\",\n \"filial.codigo\",\n \"filial.nome\",\n \"transportadora.id\",\n \"transportadora.codigo\",\n \"transportadora.placaVeiculo\",\n \"pedidoVenda.id\",\n \"agenda.id\",\n \"agenda.descricao\",\n \"createdBy\",\n \"createdDate\",\n \"lastModifiedBy\",\n \"lastModifiedDate\",\n ];\n\n model.label = displayFields.map(field => model[field]).join(lookupSeparator);\n\n if (originEntity !== \"Pessoa\" && model.clienteFaturamento) model.clienteFaturamento = Pessoa.fromDto(model.clienteFaturamento, \"Recebimento\");\n if (originEntity !== \"Pessoa\" && model.clienteRemessa) model.clienteRemessa = Pessoa.fromDto(model.clienteRemessa, \"Recebimento\");\n if ((originEntity !== \"Filial\" && model.filial)) model.filial = Filial.fromDto(model.filial, \"Recebimento\");\n if ((originEntity !== \"Transportadora\" && model.transportadora)) model.transportadora = Transportadora.fromDto(model.transportadora, \"Recebimento\");\n if (originEntity !== \"Agenda\" && model.agenda) model.agenda = Agenda.fromDto(model.agenda, \"Recebimento\");\n\n return model as Expedicao;\n }\n\n public static toDto(expedicao: Expedicao, originEntity?: string): ExpedicaoDto {\n const dto: any = { ...expedicao };\n\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n if (originEntity !== \"Pessoa\" && dto.clienteFaturamento) dto.clienteFaturamento = Pessoa.toDto(dto.clienteFaturamento, \"Recebimento\");\n if (originEntity !== \"Pessoa\" && dto.clienteRemessa) dto.clienteRemessa = Pessoa.toDto(dto.clienteRemessa, \"Recebimento\");\n if (originEntity !== \"Filial\" && dto.filial) dto.filial = Filial.toDto(dto.filial, \"Recebimento\");\n if ((originEntity !== \"Transportadora\" && dto.transportadora)) dto.transportadora = Transportadora.toDto(dto.transportadora, \"Recebimento\");\n if (originEntity !== \"Agenda\" && dto.agenda) dto.agenda = Agenda.toDto(dto.agenda, \"Recebimento\");\n\n return dto;\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\nexport interface OrdemVenda {\n id?: string;\n expedicao?: Expedicao;\n pedidoVenda: PedidoVenda;\n itens: any[];\n}\n\nexport interface OrdemVendaItem {\n id?: string;\n pedido?: OrdemVenda;\n item: PedidoVendaItem;\n quantidade: number;\n}\n","import { StatusAgenda } from \"./../../core/enums/status-agenda\";\nimport {\n AfterViewInit,\n Component,\n Input,\n OnDestroy,\n OnInit,\n TemplateRef,\n ViewChild,\n} from \"@angular/core\";\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n Validators,\n FormArray,\n AbstractControl,\n} from \"@angular/forms\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { FieldType, FormField } from \"@seniorsistemas/angular-components\";\nimport { Hotkey, HotkeysService } from \"angular2-hotkeys\";\nimport * as _moment from \"moment\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { forkJoin, of, Subject, throwError } from \"rxjs\";\nimport { catchError, concatMap, finalize, map, takeUntil, } from \"rxjs/operators\";\nimport { FieldCustomizationService } from \"../../../utils/field-customization.service\";\nimport { FocusService } from \"../../../utils/focus.service\";\nimport {\n isValidFilter,\n mergeUnique,\n userCanVisualize,\n} from \"../../../utils/utils\";\nimport { Agenda } from \"../../core/entities/agenda/agenda\";\nimport { AgendaService } from \"../../core/entities/agenda/agenda.service\";\nimport {\n Expedicao,\n OrdemVendaItem,\n} from \"../../core/entities/expedicao/expedicao\";\nimport { ExpedicaoService } from \"../../core/entities/expedicao/expedicao.service\";\nimport { Filial } from \"../../core/entities/filial/filial\";\nimport {\n FilialService,\n PesquisarFiliaisInput,\n} from \"../../core/entities/filial/filial.service\";\nimport { PedidoVendaService } from \"../../core/entities/pedido-venda/pedido-venda.service\";\nimport { Pessoa } from \"../../core/entities/pessoa/pessoa\";\nimport { PessoaService } from \"../../core/entities/pessoa/pessoa.service\";\nimport { TransportadoraService } from \"../../core/entities/transportadora/transportadora.service\";\nimport { ExpedicaoChegadaVeiculoOverride } from \"../expedicao-chegada-veiculo.override\";\nimport { PedidoVenda } from \"../../core/entities/pedido-venda/pedido-venda\";\nimport { PedidoVendaItem } from \"../../core/entities/pedido-venda-item/pedido-venda-item\";\nimport { PedidoVendaItemService } from \"../../core/entities/pedido-venda-item/pedido-venda-item.service\";\nimport { Transportadora } from \"../../core/entities/transportadora/transportadora\";\nimport {\n PedidoVendaDto,\n PesquisaPedidosVendaDto,\n} from \"../../core/entities/pedido-venda/pedido-venda-dto\";\nimport { onLookupRequest, onSearchRequest } from \"../../../utils/lookup-utils\";\nimport { ConfirmationService, SortMeta } from \"primeng/api\";\nimport { ErpProcessData } from \"../../core/erp-process-data/erp-process-data\";\nimport { ErpProcessService } from \"../../core/erp-process-data/erp-process-service\";\nimport { ErpFormConfigService } from \"../../core/erp-form-config/erp-form-config-service\";\nimport { HasChangeService } from '../../core/has-change/has-change-service';\n\nconst moment = _moment;\n\n@Component({\n selector: \"expedicao-form\",\n templateUrl: \"./expedicao-form.component.html\",\n styleUrls: [\"../../erp-senior.scss\"],\n})\nexport class ExpedicaoFormComponent\n implements OnInit, OnDestroy, AfterViewInit\n{\n public localeConfig: any = {};\n public currencyLocaleOptions: any = {};\n public permissions: any = {};\n public allPermissions: any = {};\n public pedidoAtual: FormGroup;\n\n public formGroup: FormGroup;\n public pedidoVendaForm: FormGroup;\n public itemFormGroup: FormGroup;\n public loading: boolean;\n public mainPanelCollapsed = false;\n public visibleDialog = false;\n\n private formCarregado = false;\n\n public clienteFaturamentoLookupSuggestions: Pessoa[];\n public clienteFaturamentoLookupDisplayFields = [\"codigo\", \"nome\", \"cpfCnpj\"];\n public clienteFaturamentoAdvancedDisplayFields = [\"id\", \"codigo\", \"nome\"];\n public clienteFaturamentoLookupSeparator = \" - \";\n public clienteFaturamentoSearchFields: FormField[];\n public clienteFaturamentoSearchGridFields: FormField[];\n public clienteFaturamentoSearchGridData: Pessoa[];\n public clienteFaturamentoSearchTotalRecords: number;\n\n public clienteRemessaLookupSuggestions: Pessoa[];\n public clienteRemessaLookupDisplayFields = [\"codigo\", \"nome\", \"cpfCnpj\"];\n public clienteRemessaAdvancedDisplayFields = [\"id\", \"codigo\", \"nome\"];\n public clienteRemessaLookupSeparator = \" - \";\n public clienteRemessaSearchFields: FormField[];\n public clienteRemessaSearchGridFields: FormField[];\n public clienteRemessaSearchGridData: Pessoa[];\n public clienteRemessaSearchTotalRecords: number;\n\n public filialLookupSuggestions: Filial[];\n public filialLookupDisplayFields = [\"codigo\", \"nome\"];\n public filialAdvancedDisplayFields = [\"id\", \"codigo\", \"nome\"];\n public filialLookupSeparator = \" - \";\n public filialSearchFields: FormField[];\n public filialSearchGridFields: FormField[];\n public filialSearchGridData: Filial[];\n public filialSearchTotalRecords: number;\n\n public transportadoraLookupSuggestions: Transportadora[];\n public transportadoraLookupDisplayFields = [\n \"codigo\",\n \"pessoa.nome\",\n \"pessoa.cpfCnpj\",\n ];\n public transportadoraAdvancedDisplayFields = [\n \"id\",\n \"codigo\",\n \"pessoa.nome\",\n \"pessoa.cpfCnpj\",\n ];\n public transportadoraLookupSeparator = \" - \";\n public transportadoraSearchFields: FormField[];\n public transportadoraSearchGridFields: FormField[];\n public transportadoraSearchGridData: Transportadora[];\n public transportadoraSearchTotalRecords: number;\n\n public pedidoVendaLookupSuggestions: PedidoVenda[];\n public pedidoVendaLookupDisplayFields = [\"numero\", \"cliente\"];\n public pedidoVendaAdvancedDisplayFields = [\n \"id\",\n \"numero\",\n \"filial.nome\",\n \"filial.codigo\",\n \"pessoa.id\",\n \"pessoa.codigo\",\n \"pessoa.nome\",\n ];\n public pedidoVendaLookupSeparator = \" - \";\n public pedidoVendaSearchFields: FormField[];\n public pedidoVendaSearchGridFields: FormField[];\n public pedidoVendaSearchGridData: PedidoVenda[];\n public pedidoVendaSearchTotalRecords: number;\n\n public pedidoVendaItemLookupSuggestions: PedidoVendaItem[];\n public pedidoVendaItemLookupDisplayFields = [\"sequencia\", \"sku.descricao\"];\n public pedidoVendaItemAdvancedDisplayFields = [\n \"id\",\n \"sequencia\",\n \"sku.descricao\",\n ];\n public pedidoVendaItemLookupSeparator = \" - \";\n public pedidoVendaItemSearchFields: FormField[];\n public pedidoVendaItemSearchGridFields: FormField[];\n public pedidoVendaItemSearchGridData: PedidoVendaItem[];\n public pedidoVendaItemSearchTotalRecords: number;\n\n public agendaLookupSuggestions: Agenda[];\n public agendaLookupDisplayFields = [\"id\", \"descricao\"];\n public agendaAdvancedDisplayFields = [\"id\", \"descricao\"];\n public agendaLookupSeparator = \" - \";\n public agendaSearchFields: FormField[];\n public agendaSearchGridFields: FormField[];\n public agendaSearchGridData: Agenda[];\n public agendaSearchTotalRecords: number;\n\n public disableButtonSave: boolean = false;\n\n public disableOrdersButtons: boolean = true;\n\n public totalEixosContratados: number = 0;\n public totalEixosComposicao: number = 0;\n\n public ordersValid = true;\n public saveAndInitButton: any;\n\n @Input() private agenda: Agenda;\n @Input() private revalidacao: boolean;\n\n @ViewChild(\"customTemplate\")\n public customTemplate: TemplateRef<any>;\n\n @ViewChild(\"customFormFields\")\n public customFormFields: TemplateRef<any>;\n\n private ngUnsubscribe = new Subject(); \n private erpProcessData: ErpProcessData;\n private enableRevalidation: boolean;\n\n constructor(\n private expedicaoService: ExpedicaoService,\n private router: Router,\n private route: ActivatedRoute,\n private messageService: MessageService,\n private formBuilder: FormBuilder,\n private translate: TranslateService,\n private hotkeysService: HotkeysService,\n private fieldCustomization: FieldCustomizationService,\n private focusService: FocusService,\n private pessoaService: PessoaService,\n private filialService: FilialService,\n private transportadoraService: TransportadoraService,\n private pedidoVendaService: PedidoVendaService,\n private pedidoVendaItemService: PedidoVendaItemService,\n private agendaService: AgendaService,\n private override: ExpedicaoChegadaVeiculoOverride,\n private confirmationService: ConfirmationService,\n private erpProcessService: ErpProcessService,\n private erpFormConfigService: ErpFormConfigService,\n private hasChangeService: HasChangeService\n ) {\n this.formGroup = this.getFormGroup();\n this.pedidoVendaForm = this.getPedidoVendaForm();\n this.itemFormGroup = this.getOrdemVendaItemForm();\n }\n\n public ngOnInit() {\n this.route.data\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((data: any) => this.onRouteDataChange(data));\n\n this.route.params\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(({ agenda }) => {\n if (agenda != \"new\") {\n this.getExpedicao(agenda);\n } else {\n this.buscarFilial();\n }\n });\n\n this.clienteFaturamentoSearchFields = this.getClienteSearchFields();\n this.clienteFaturamentoSearchGridFields = this.getClienteSearchGridFields();\n\n this.clienteRemessaSearchFields = this.getClienteSearchFields();\n this.clienteRemessaSearchGridFields = this.getClienteSearchGridFields();\n\n this.filialSearchFields = this.getFilialSearchFields();\n this.filialSearchGridFields = this.getFilialSearchGridFields();\n\n this.transportadoraSearchFields = this.getTransportadoraSearchFields();\n this.transportadoraSearchGridFields = this.getTransportadoraSearchGridFields();\n\n this.pedidoVendaSearchFields = this.getPedidoVendaSearchFields();\n this.pedidoVendaSearchGridFields = this.getPedidoVendaSearchGridFields();\n\n this.pedidoVendaItemSearchFields = this.getPedidoVendaItemSearchFields();\n this.pedidoVendaItemSearchGridFields = this.getPedidoVendaItemSearchGridFields();\n\n this.agendaSearchFields = this.getAgendaSearchFields();\n this.agendaSearchGridFields = this.getAgendaSearchGridFields();\n\n this.setHotkeys();\n\n if (this.agenda && this.agenda.externalTenant) {\n this.setTransportadora(this.agenda.externalTenant.cnpj);\n }\n\n this.totalEixosComposicao = this.agenda && this.agenda.veiculo ? this.agenda.veiculo.eixos || 0 : 0;\n\n const statusAgenda = [\n \"AGUARDANDO_CONFIRMACAO_SOLICITANTE\",\n \"AGENDADO\",\n \"AGUARDANDO_CONFIRMACAO\",\n \"EM_EXECUCAO\",\n \"REJEITADO_POR_VALIDACAO\",\n ];\n\n if (this.agenda && !statusAgenda.includes(this.agenda.status)) {\n this.formGroup.disable();\n this.disableButtonSave = true;\n }\n\n if (this.agenda && this.agenda.createdByErp) {\n this.formGroup.get(\"filial\").disable();\n this.formGroup.get(\"transportadora\").disable();\n this.formGroup.get(\"clienteRemessa\").disable();\n this.formGroup.get(\"clienteFaturamento\").disable();\n this.pedidoVendaForm.disable();\n this.itemFormGroup.disable();\n this.disableOrdersButtons = true;\n }\n\n this.setPedidosValueChanges();\n this.erpProcessService.current.subscribe(message => this.erpProcessData = message); \n this.erpFormConfigService.current.subscribe(message => this.enableRevalidation = message); \n\n this.revalidacaoTransportadora ();\n this.verificaSeTemAlteracao();\n }\n \n private verificaSeTemAlteracao() {\n this.formGroup.valueChanges.subscribe(() => {\n if (this.formCarregado) {\n this.hasChangeService.hasChange(this.agenda.id);\n }\n });\n }\n\n private revalidacaoTransportadora () {\n this.formGroup.get(\"transportadora\").valueChanges.pipe(takeUntil(this.ngUnsubscribe)).subscribe((_) => {\n const transp = this.formGroup.get(\"transportadora\").value;\n if (this.erpProcessService && transp) { \n this.erpProcessData.transportadoraId = transp.id; \n this.erpProcessService.changeData(this.erpProcessData);\n }\n return;\n }); \n }\n\n public abrirPedidoVenda(pedidoVenda?: PedidoVenda) {\n const buttons = document\n .getElementById(\"pedidoVenda\")\n .getElementsByTagName(\"button\");\n\n if (!buttons.length) {\n return;\n }\n\n this.pedidoVendaForm.patchValue({ pedidoVenda });\n buttons[0].click();\n }\n\n public excluirPedidoVenda(index: number) {\n (this.formGroup.get(\"pedidos\") as FormArray).removeAt(index);\n }\n\n public abrirPedidoVendaItem(\n pedido: FormGroup,\n pedidoVendaItem?: OrdemVendaItem\n ) {\n this.itemFormGroup.patchValue(\n pedidoVendaItem || { item: undefined, quantidade: 1 }\n );\n this.pedidoAtual = pedido;\n this.visibleDialog = true;\n }\n\n public excluirPedidoVendaItem(id: string, pedido: FormGroup) {\n const index = (\n (pedido.get(\"itens\") as FormArray).value as OrdemVendaItem[]\n ).findIndex((item) => item.item.id === id);\n if (index >= 0) {\n (pedido.get(\"itens\") as FormArray).removeAt(index);\n }\n }\n\n public setPedidosValueChanges() {\n (this.formGroup.get(\"pedidos\") as FormArray).valueChanges\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n const pedidosLength = (this.formGroup.get(\"pedidos\") as FormArray)\n .length;\n this.ordersValid = pedidosLength > 0;\n this.formGroup\n .get(\"filial\")\n [pedidosLength >= 1 ? \"disable\" : \"enable\"]();\n });\n }\n\n public selecionarPedidoVenda(pedidoVenda: PedidoVenda) {\n const checkOrders = (order: any) => order.pedidoVenda.id === pedidoVenda.id;\n const pedidos = this.formGroup.get(\"pedidos\").value;\n\n if (pedidos.find(checkOrders)) {\n return this.addMessage(\n \"warn\",\n this.translate.instant(\n \"yms.erp.pedido_venda_search_already_selected_summary\"\n ),\n this.translate.instant(\n \"yms.erp.pedido_venda_search_already_selected_detail\"\n )\n );\n }\n\n (this.formGroup.get(\"pedidos\") as FormArray)\n .push(this.getOrdemVendaForm(pedidoVenda, true));\n\n if (\n !!pedidoVenda &&\n (this.formGroup.get(\"pedidos\") as FormArray).length === 1 &&\n !this.formGroup.get(\"clienteFaturamento\").value\n ) {\n this.buscarClienteAFaturar(pedidoVenda as any);\n }\n }\n\n public selecionarPedidoVendaItem() {\n const item = this.itemFormGroup.value;\n const pedido = this.pedidoAtual.get(\"itens\").value;\n const checkOrderItens = (order: any) => order.item.id === item.item.id;\n if (pedido && item && item.item && pedido.find(checkOrderItens))\n return this.addMessage(\n \"warn\",\n this.translate.instant(\n \"yms.erp.item_pedido_venda_search_already_selected_summary\"\n ),\n this.translate.instant(\n \"yms.erp.item_pedido_venda_search_already_selected_detail\"\n )\n );\n const form = this.getOrdemVendaItemForm();\n form.patchValue({ ...this.itemFormGroup.value });\n if (form.get(\"item\").value == undefined) return;\n (this.pedidoAtual.get(\"itens\") as FormArray).push(form);\n this.visibleDialog = false;\n }\n\n public selecionarPedidoVendaItemAutomaticamente(\n itens: any,\n pedidoVenda: any\n ) {\n if (itens && itens.length === 1) {\n const form = this.getOrdemVendaItemForm();\n const pedidos = this.getPedidos();\n const pedidoAtual: any = pedidos.filter((pedido: any) =>\n pedido && pedido.value.pedidoVenda\n ? pedido.value.pedidoVenda.id === pedidoVenda.id\n : false\n );\n this.itemFormGroup\n .get(\"item\")\n .setValue(itens.length === 1 ? itens[0] : {});\n this.itemFormGroup.get(\"quantidade\").setValue(1);\n form.patchValue({ ...this.itemFormGroup.value });\n (pedidoAtual[0].get(\"itens\") as FormArray).push(form);\n this.visibleDialog = false;\n }\n }\n\n public getPedidos(): AbstractControl[] {\n return (this.formGroup.get(\"pedidos\") as FormArray).controls;\n }\n\n public buildTokens(itens: OrdemVendaItem[]) {\n return itens.map((item: any) => {\n const value = item && item.item ? item.item : item;\n const produto = value.sku ? value.sku : value.produto;\n return {\n id: value.id,\n label: `Produto: ${produto.descricao}, Sequencia: ${value.sequencia}`,\n };\n });\n }\n\n public ngAfterViewInit() {\n const inputList = document.getElementsByTagName(\"input\");\n const selectedInput = Array.from(inputList).find((f: any) => !f.disabled);\n if (selectedInput) {\n selectedInput.focus();\n }\n\n this.override.initialize();\n this.saveAndInitButton = document.getElementById(\"init\");\n\n this.formGroup.valueChanges.subscribe(() => {\n if (this.formCarregado) {\n this.hasChangeService.hasChange(this.agenda.id);\n }\n });\n }\n\n public ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n this.override.remove();\n }\n\n public setHotkeys() {\n this.hotkeysService.add(\n new Hotkey(\n \"alt+shift+s\",\n () => {\n if (this.isNew() || this.permissions.editar) this.onSave();\n return false;\n },\n [\"INPUT\", \"SELECT\", \"TEXTAREA\"]\n )\n );\n\n this.hotkeysService.add(\n new Hotkey(\n \"alt+shift+c\",\n () => {\n this.onCancel();\n return false;\n },\n [\"INPUT\", \"SELECT\", \"TEXTAREA\"]\n )\n );\n }\n\n public isNew() {\n return !this.formGroup.value.id;\n }\n\n public updateSuggestions(value: any) {\n if (value.agenda) {\n value.agenda.label = this.getSuggestionValue(\n [\"id\", \"descricao\"],\n \"agenda\",\n value,\n this.agendaLookupSeparator\n );\n if (value.agenda.label.trim() === this.agendaLookupSeparator.trim()) {\n delete value.agenda.label;\n }\n }\n }\n\n public getSuggestionValue(\n displayFields: string[],\n ownerEntity: string,\n value: any,\n separator: string\n ) {\n return displayFields\n .map((field) => this.getProp(value, `${ownerEntity}.${field}`))\n .reduce((acc: any, val: any) => `${acc}${separator}${val}`);\n }\n\n public onRouteDataChange(data: any) {\n const { currencySymbol, thousandsSeparator, decimalSeparator } =\n data.localeConfig.number;\n\n this.localeConfig = data.localeConfig;\n this.currencyLocaleOptions = {\n align: \"left\",\n prefix: currencySymbol,\n thousands: thousandsSeparator,\n decimal: decimalSeparator,\n };\n this.permissions = data.allPermissions.expedicao;\n this.allPermissions = data.allPermissions;\n //this.validateVisualization();\n if (data.entity) {\n const canEdit = this.permissions.editar;\n if (!canEdit) this.formGroup.disable();\n const value: any = Expedicao.fromDto(data.entity);\n this.updateSuggestions(value);\n this.formGroup.patchValue(value);\n } else {\n this.formGroup.patchValue(new Expedicao());\n }\n }\n\n public onCancel() {\n this.goBack();\n }\n\n public onSendFile(filesToDelete: any, filesToCommit: any[]) {\n const observables: any[] = [];\n\n if (!this.fieldCustomization.isEmpty(filesToDelete)) {\n observables.push(this.fieldCustomization.deleteFiles(filesToDelete));\n }\n if (!this.fieldCustomization.isEmpty(filesToCommit)) {\n observables.push(this.fieldCustomization.commitFiles(filesToCommit));\n }\n\n if (!this.fieldCustomization.isEmpty(observables)) {\n return forkJoin(observables);\n } else {\n return of({});\n }\n }\n\n public setValuesPedidoBiodisel() {\n const numeroPedidoCliente = this.formGroup.get(\"numeroPedidoCliente\").value;\n const itemPedidoCliente = this.formGroup.get(\"itemPedidoCliente\").value;\n const { value: pedidos } = this.formGroup.get(\"pedidos\");\n (pedidos || []).map((e: any) => {\n if (e && e.itens && e.itens.length) {\n e.itens[0].numeroPedidoCliente = numeroPedidoCliente;\n e.itens[0].itemPedidoCliente = itemPedidoCliente;\n }\n });\n this.formGroup.get(\"pedidos\").patchValue(pedidos);\n }\n\n public getValuesPedidoBiodisel() {\n const pedidos = this.formGroup.get(\"pedidos\").value;\n const numeroPedidoCliente = this.formGroup.get(\"numeroPedidoCliente\");\n const itemPedidoCliente = this.formGroup.get(\"itemPedidoCliente\");\n (pedidos || []).map((e: any) => {\n if (numeroPedidoCliente.value && itemPedidoCliente.value) return;\n const pedidosInterno =\n e && e.itens && e.itens.length ? e.itens[0].pedido : null;\n if (\n pedidosInterno &&\n pedidosInterno.itens &&\n pedidosInterno.itens.length\n ) {\n if (pedidosInterno.itens.length === 1) {\n numeroPedidoCliente.patchValue(\n pedidosInterno.itens[0].numeroPedidoCliente\n );\n itemPedidoCliente.patchValue(\n pedidosInterno.itens[0].itemPedidoCliente\n );\n }\n }\n });\n }\n\n public onSave(start?: boolean) {\n this.formGroup.get(\"agenda\").setValue(this.agenda);\n this.ordersValid = (this.formGroup.get(\"pedidos\") as FormArray).length > 0;\n\n if (this.formGroup.invalid || !this.ordersValid) {\n return this.validateAllFormFields(this.formGroup);\n }\n\n this.setValuesPedidoBiodisel();\n\n const { filesToDelete, filesToCommit } = this.fieldCustomization.getFiles(this.formGroup);\n \n this.loading = true;\n\n if (this.isNew() || !this.enableRevalidation) {\n return this.saveAndInit(filesToDelete, filesToCommit, start);\n }\n\n this.erpProcessData = this.erpProcessService.builderErpProcessData(this.erpProcessData, this.formGroup);\n this.erpProcessService.changeDataErp(this.erpProcessData);\n return this.agendaService\n .checarRevalidacao(this.erpProcessData)\n .pipe(\n takeUntil(this.ngUnsubscribe),\n finalize(() => this.loading = false),\n )\n .subscribe((response: any) => {\n if (response.requerRevalidacao) {\n this.atualizaAgendaParaRejeitadoPorValidacao();\n }\n else {\n this.saveAndInit(filesToDelete, filesToCommit, start);\n }\n });\n }\n\n private atualizaAgendaParaRejeitadoPorValidacao() {\n this.confirmationService.confirm({\n header: this.translate.instant(\"yms.patio.agenda_revalidacao_title\"),\n message: this.translate.instant(\"yms.patio.agenda_revalidacao_message\"),\n accept: () => {\n this.hasChangeService.hasChangeSave(this.agenda.id);\n this.agenda.status = StatusAgenda.REJEITADO_POR_VALIDACAO;\n this.agenda.motorista = {id: this.erpProcessData.motoristaId};\n this.agenda.veiculo = {id: this.erpProcessData.veiculoId};\n this.agendaService\n .atualizarAgenda(this.agenda)\n .pipe(\n takeUntil(this.ngUnsubscribe),\n concatMap((_) => this.getSaveObservable()),\n finalize(() => this.loading = false),\n )\n .subscribe((_) => {\n this.successMessage();\n this.router.navigate([\"/chegada-veiculo\"], { relativeTo: this.route });\n });\n },\n reject: () => this.loading = false,\n });\n }\n\n private saveAndInit(filesToDelete: any, filesToCommit: any[], start: boolean) {\n this.atualizaExpedicao(filesToDelete, filesToCommit, () => {\n this.hasChangeService.hasChangeSave(this.agenda.id);\n if (start && this.saveAndInitButton) {\n this.hasChangeService.hasChangeSave(this.agenda.id);\n this.saveAndInitButton.click();\n }\n });\n }\n\n private successMessage() {\n this.messageService.add({\n severity: \"success\",\n summary: this.translate.instant(\"saved_message_title\"),\n detail: this.translate.instant(\"saved_message_content\"),\n });\n }\n\n private atualizaExpedicao(\n filesToDelete: any,\n filesToCommit: any[],\n onSubscribe?: Function\n ) {\n return this.getSaveObservable()\n .pipe(\n takeUntil(this.ngUnsubscribe),\n finalize(() => (this.loading = false)),\n )\n .subscribe((value: any) => {\n this.formGroup.get(\"id\").setValue(value.id || null);\n\n this.onSendFile(filesToDelete, filesToCommit)\n .pipe(\n takeUntil(this.ngUnsubscribe),\n catchError((err: any) => {\n this.loading = false;\n return throwError(err);\n })\n )\n .subscribe(() => {\n this.addMessage(\n \"success\",\n \"saved_message_title\",\n \"saved_message_content\"\n );\n onSubscribe();\n });\n });\n }\n\n public setTransportadora(value: string) {\n if (value) {\n const cnpj = value.replace(\".\", \"\").replace(\"/\", \"\").replace(\"-\", \"\");\n const filterQuery = `pessoa.cpfCnpj eq '${cnpj}'`;\n this.transportadoraService\n .list({ filterQuery, page: 0, size: 10 })\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(({ contents }) => {\n if (contents.length === 1) {\n const code = contents[0].codigo\n ? contents[0].codigo.toString()\n : \"\";\n const description = contents[0].descricao\n ? contents[0].descricao.toString()\n : \"\";\n if (!description.trim() && !code.trim()) {\n contents[0].label = this.translate.instant(\n \"yms.erp.derivacao_sem_descricao\"\n );\n } else {\n contents[0].label = `${code} - ${description}`;\n }\n this.formGroup.get(\"transportadora\").setValue(contents[0]);\n }\n });\n }\n }\n\n public getProp(obj: any, path: any) {\n return path\n .split(\".\")\n .reduce(\n (result: any, prop: any) =>\n result[prop] === undefined ? \"\" : result[prop],\n obj\n );\n }\n\n public getExpedicao(agendaId: string) {\n this.loading = true;\n this.expedicaoService\n .list({\n filterQuery: `agenda.id eq '${agendaId}'`,\n size: 1,\n page: 0,\n })\n .pipe(\n takeUntil(this.ngUnsubscribe),\n finalize(() => (this.loading = false))\n )\n .subscribe(({ contents }) => {\n if (!contents.length) {\n this.buscarFilial();\n return;\n }\n\n this.totalEixosContratados = contents[0].eixos || 0;\n this.totalEixosComposicao =\n contents[0].agenda && contents[0].agenda.veiculo\n ? contents[0].agenda.veiculo.eixos || 0\n : 0;\n\n const expedicao = Expedicao.fromDto(contents[0]);\n\n this.formGroup.enable();\n this.formGroup.patchValue(expedicao);\n\n expedicao.pedidos.forEach((pedido) => {\n const form = this.getOrdemVendaForm();\n form.patchValue(pedido);\n pedido.itens.forEach((item) => {\n const itemForm = this.getOrdemVendaItemForm();\n itemForm.patchValue(item);\n (form.get(\"itens\") as FormArray).push(itemForm);\n });\n (this.formGroup.get(\"pedidos\") as FormArray).push(form);\n });\n this.getValuesPedidoBiodisel();\n this.formCarregado = true;\n });\n }\n\n public onClienteFaturamentoLookupRequest(value: string) {\n onLookupRequest(\n this.clienteFaturamentoSearchFields,\n this.clienteFaturamentoLookupDisplayFields,\n this.clienteFaturamentoAdvancedDisplayFields,\n this.clienteFaturamentoLookupSeparator,\n this.pessoaService,\n value,\n \"cliente eq true\"\n )\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.clienteFaturamentoLookupSuggestions = list.contents;\n });\n }\n\n public onClienteFaturamentoSearchRequest(event: any) {\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const sort = multiSortMeta;\n let filterQuery = this.getClienteSearchFields()\n .filter(\n ({ name }) => filterData[name] != undefined && filterData[name] != \"\"\n )\n .map(({ name, type }) => {\n const value = filterData[name];\n\n if (typeof value == \"number\") return `${name} eq ${value}`;\n else if (type == FieldType.Date)\n return `${name} eq '${moment(value).format(\"YYYY-MM-DD\")}'`;\n else if (type == FieldType.Time)\n return `${name} eq '${moment(value).format(\"HH:mm:ss\")}'`;\n else if (type == FieldType.DateTime)\n return `${name} eq '${moment(value).format()}'`;\n else if (type == FieldType.Enum) return `${name} eq '${value}'`;\n else if (type == FieldType.String)\n return `containing(lower(${name}), lower('${value.replace(\n /'/g,\n \"\\\\'\"\n )}'))`;\n else if (type == FieldType.Lookup) return `${name} eq '${value.id}'`;\n else return `${name} eq '${value}'`;\n })\n .join(\" and \");\n\n filterQuery = `${filterQuery}${\n filterQuery ? \" and \" : \"\"\n }situacao eq ATIVO and cliente eq true`;\n\n const displayFields = mergeUnique(\n this.clienteFaturamentoLookupDisplayFields,\n this.clienteFaturamentoAdvancedDisplayFields\n );\n this.pessoaService\n .list({ page, sort, filterQuery, displayFields })\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: this.clienteFaturamentoLookupDisplayFields\n .map((field) => {\n if (field.indexOf(\".\") > 0) return this.getProp(item, field);\n return item[field];\n })\n .join(this.clienteFaturamentoLookupSeparator),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.clienteFaturamentoSearchGridData = list.contents;\n this.clienteFaturamentoSearchTotalRecords = list.totalElements;\n });\n }\n\n public onClienteRemessaLookupRequest(value: string) {\n onLookupRequest(\n this.clienteRemessaSearchFields,\n this.clienteRemessaLookupDisplayFields,\n this.clienteRemessaAdvancedDisplayFields,\n this.clienteRemessaLookupSeparator,\n this.pessoaService,\n value,\n \"cliente eq true\"\n )\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.clienteRemessaLookupSuggestions = list.contents;\n });\n }\n\n public onClienteRemessaSearchRequest(event: any) {\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const sort = multiSortMeta;\n let filterQuery = this.getClienteSearchFields()\n .filter(\n ({ name }) => filterData[name] != undefined && filterData[name] != \"\"\n )\n .map(({ name, type }) => {\n const value = filterData[name];\n\n if (typeof value == \"number\") return `${name} eq ${value}`;\n else if (type == FieldType.Date)\n return `${name} eq '${moment(value).format(\"YYYY-MM-DD\")}'`;\n else if (type == FieldType.Time)\n return `${name} eq '${moment(value).format(\"HH:mm:ss\")}'`;\n else if (type == FieldType.DateTime)\n return `${name} eq '${moment(value).format()}'`;\n else if (type == FieldType.Enum) return `${name} eq '${value}'`;\n else if (type == FieldType.String)\n return `containing(lower(${name}), lower('${value.replace(\n /'/g,\n \"\\\\'\"\n )}'))`;\n else return `${name} eq '${value}'`;\n })\n .join(\" and \");\n\n filterQuery = `${filterQuery}${\n filterQuery ? \" and \" : \"\"\n }situacao eq ATIVO and cliente eq true`;\n\n const displayFields = mergeUnique(\n this.clienteRemessaLookupDisplayFields,\n this.clienteRemessaAdvancedDisplayFields\n );\n this.pessoaService\n .list({ page, sort, filterQuery, displayFields })\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: this.clienteRemessaLookupDisplayFields\n .map((field) => {\n if (field.indexOf(\".\") > 0) return this.getProp(item, field);\n return item[field];\n })\n .join(this.clienteRemessaLookupSeparator),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.clienteRemessaSearchGridData = list.contents;\n this.clienteRemessaSearchTotalRecords = list.totalElements;\n });\n }\n\n public onFilialSelect(event: any) {\n this.disableOrdersButtons = !event || this.agenda.createdByErp;\n }\n\n public onFilialLookupRequest(value: string) {\n const filterInput = this.getFilialSearchFields()\n .filter(({ type }) => isValidFilter(type, value))\n .reduce(\n (a, { name, type }) => {\n if (type === FieldType.Integer) {\n return { ...a, [name]: value.replace(/\\D/, \"\") };\n }\n return { ...a, [name]: value };\n },\n {\n cnpjs: this.agenda.planta.cnpj,\n pagina: { limit: 10, offset: 0 },\n } as PesquisarFiliaisInput\n );\n\n this.filialService\n .listFiliais(filterInput)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(\n (list: any) =>\n (this.filialLookupSuggestions = list.filiais.map((filial: any) =>\n Filial.fromDto(filial)\n ))\n );\n }\n\n public onFilialSearchRequest(event: any) {\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const sort: SortMeta[] = multiSortMeta;\n const sortFormatted = !!(sort || []).length && {\n campo: sort[0].field,\n ordenacao: sort[0].order > 0 ? \"Asc\" : \"Desc\",\n };\n const filterInput = this.getFilialSearchFields()\n .filter(\n ({ name }) => filterData[name] != undefined && filterData[name] != \"\"\n )\n .reduce(\n (a, { name, type }) => {\n const value = filterData[name];\n if (type === FieldType.Integer) {\n return { ...a, [name]: `${value}`.replace(/\\D/, \"\") };\n }\n return { ...a, [name]: value };\n },\n {\n cnpjs: this.agenda.planta.cnpj,\n pagina: {\n limit: rows,\n offset: page,\n listaOrdenacao: sortFormatted ? [{ ...sortFormatted }] : null,\n },\n } as PesquisarFiliaisInput\n );\n\n this.filialService\n .listFiliais(filterInput)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.filialSearchGridData = list.filiais.map(Filial.fromDto);\n this.filialSearchTotalRecords = list.qtdTotalRegistros;\n });\n }\n\n public onTransportadoraLookupRequest(value: string) {\n onLookupRequest(\n this.transportadoraSearchFields,\n this.transportadoraLookupDisplayFields,\n this.transportadoraAdvancedDisplayFields,\n this.transportadoraLookupSeparator,\n this.transportadoraService,\n value\n )\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.transportadoraLookupSuggestions = list.contents;\n });\n }\n\n public onTransportadoraSearchRequest(event: any) {\n onSearchRequest(\n this.transportadoraSearchFields,\n this.transportadoraLookupDisplayFields,\n this.transportadoraAdvancedDisplayFields,\n this.transportadoraLookupSeparator,\n this.transportadoraService,\n event\n )\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.transportadoraSearchGridData = list.contents;\n this.transportadoraSearchTotalRecords = list.totalElements;\n });\n }\n\n public onPedidoVendaLookupRequest(value: string) {\n const sort = this.pedidoVendaLookupDisplayFields.map((field: any) => ({\n field,\n order: 1,\n }));\n\n let filterQuery = this.getPedidoVendaSearchFields()\n .filter(({ type }) => isValidFilter(type, value))\n .map(({ name, type }) => {\n if (typeof value == \"number\") return `${name} eq ${value}`;\n else if (type == FieldType.Date)\n return `${name} eq '${moment(value).format(\"YYYY-MM-DD\")}'`;\n else if (type == FieldType.Time)\n return `${name} eq '${moment(value).format(\"HH:mm:ss\")}'`;\n else if (type == FieldType.DateTime)\n return `${name} eq '${moment(value).format()}'`;\n else if (type == FieldType.String)\n return `containing(lower(${name}), lower('${value.replace(\n /'/g,\n \"\\\\'\"\n )}'))`;\n else return `${name} eq '${value}'`;\n })\n .join(\" or \");\n\n filterQuery = `${filterQuery}${\n filterQuery ? \" and \" : \"\"\n }situacaoPedido eq ABERTO_TOTAL or situacaoPedido eq ABERTO_PARCIAL`;\n\n const pedidos = this.formGroup.get(\"pedidos\").value || [];\n let pedidosIdsQuery = \"\";\n pedidos.map((e: any) =>\n e && e.pedidoVenda && e.pedidoVenda.id\n ? (pedidosIdsQuery += ` and (id ne '${e.pedidoVenda.id}')`)\n : false\n );\n if (pedidos.length && pedidosIdsQuery) filterQuery += pedidosIdsQuery;\n\n const displayFields = mergeUnique(\n this.pedidoVendaLookupDisplayFields,\n this.pedidoVendaAdvancedDisplayFields\n );\n this.pedidoVendaService\n .list({ sort, filterQuery, displayFields })\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: this.pedidoVendaLookupDisplayFields\n .map((field) => {\n if (field.indexOf(\".\") > 0) return this.getProp(item, field);\n return item[field];\n })\n .join(this.pedidoVendaLookupSeparator),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.pedidoVendaLookupSuggestions = list.contents;\n });\n }\n\n public getRecPagina(first: number, rows: number, sort: any) {\n const page = first / rows;\n const orderBy =\n sort && sort.length\n ? sort.map((s: any) => ({\n campo: s.field,\n ordenacao: s.order === 1 ? \"Asc\" : \"Desc\",\n }))\n : [];\n return {\n offset: page,\n limit: rows,\n listaOrdenacao: orderBy,\n };\n }\n\n public onPedidoVendaSearchRequest(event: any) {\n const { first, rows, multiSortMeta, filterData } = event;\n const sort = multiSortMeta || [];\n\n const filial = this.formGroup.get(\"filial\").value;\n\n const pedidos = this.formGroup.get(\"pedidos\").value || [];\n let pedidosSelecionados: any = [];\n pedidos.map((e: any) =>\n e && e.pedidoVenda && e.pedidoVenda.id\n ? pedidosSelecionados.push(e.pedidoVenda.id)\n : false\n );\n\n const pesquisa: PesquisaPedidosVendaDto = {\n pessoaId: filterData[\"cliente\"] ? filterData[\"cliente\"].id : null,\n filialId: filial ? filial.id : null,\n tipoAgendamentoId: this.agenda.tipoAgendamento\n ? this.agenda.tipoAgendamento.id\n : null,\n filialPedido: filterData[\"filialPedido\"],\n pedidosSelecionados,\n numero: filterData[\"numero\"],\n pagina: this.getRecPagina(first, rows, sort),\n };\n\n this.pedidoVendaService\n .pesquisarPedidosVenda(pesquisa)\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: this.pedidoVendaLookupDisplayFields\n .map((field) => {\n if (field.indexOf(\".\") > 0) return this.getProp(item, field);\n return item[field];\n })\n .join(this.pedidoVendaLookupSeparator),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.pedidoVendaSearchGridData = list.contents;\n this.pedidoVendaSearchTotalRecords = list.totalElements;\n });\n }\n\n public onPedidoVendaItemLookupRequest(value: any) {\n const sort = this.pedidoVendaItemLookupDisplayFields.map((field: any) => ({\n field,\n order: 1,\n }));\n\n const filialId = (this.formGroup.get(\"filial\").value || {}).id;\n const pedidoId = (this.pedidoAtual.get(\"pedidoVenda\").value || {}).id;\n\n const pesquisa = {\n pedidoId,\n filialId,\n sequencia: !isNaN(value) ? value : null,\n tipoAgendamentoId:\n this.agenda && this.agenda.tipoAgendamento\n ? this.agenda.tipoAgendamento.id\n : null,\n pagina: this.getRecPagina(0, 10, sort),\n };\n\n this.pedidoVendaItemService\n .pesquisarItensPedidoVenda(pesquisa)\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: this.pedidoVendaItemLookupDisplayFields\n .map((field) => {\n if (field.indexOf(\".\") > 0) return this.getProp(item, field);\n return item[field];\n })\n .join(this.pedidoVendaItemLookupSeparator),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.pedidoVendaItemLookupSuggestions = list.contents;\n });\n }\n\n public onPedidoVendaItemSearchRequest(event: any) {\n const { first, rows, multiSortMeta, filterData } = event;\n const sort = multiSortMeta;\n\n const filialId = (this.formGroup.get(\"filial\").value || {}).id;\n const pedidoId = (this.pedidoAtual.get(\"pedidoVenda\").value || {}).id;\n\n const pesquisa = {\n pedidoId,\n filialId,\n sequencia: filterData[\"sequencia\"],\n tipoAgendamentoId:\n this.agenda && this.agenda.tipoAgendamento\n ? this.agenda.tipoAgendamento.id\n : null,\n pagina: this.getRecPagina(first, rows, sort),\n };\n\n this.pedidoVendaItemService\n .pesquisarItensPedidoVenda(pesquisa)\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: this.pedidoVendaItemLookupDisplayFields\n .map((field) => {\n if (field.indexOf(\".\") > 0) return this.getProp(item, field);\n return item[field];\n })\n .join(this.pedidoVendaItemLookupSeparator),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.pedidoVendaItemSearchGridData = list.contents;\n this.pedidoVendaItemSearchTotalRecords = list.totalElements;\n });\n }\n\n public getAutomaticItensOrder(pedidoVenda: any) {\n if (pedidoVenda && pedidoVenda.id) {\n const sort = this.pedidoVendaItemLookupDisplayFields.map(\n (field: any) => ({ field, order: 1 })\n );\n const filialId = (this.formGroup.get(\"filial\").value || {}).id;\n\n const pesquisa = {\n pedidoId: pedidoVenda.id,\n filialId,\n tipoAgendamentoId:\n this.agenda && this.agenda.tipoAgendamento\n ? this.agenda.tipoAgendamento.id\n : null,\n pagina: this.getRecPagina(0, 10, sort),\n };\n\n this.pedidoVendaItemService\n .pesquisarItensPedidoVenda(pesquisa)\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: this.pedidoVendaItemLookupDisplayFields\n .map((field) => {\n if (field.indexOf(\".\") > 0) return this.getProp(item, field);\n return item[field];\n })\n .join(this.pedidoVendaItemLookupSeparator),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.selecionarPedidoVendaItemAutomaticamente(\n list.contents,\n pedidoVenda\n );\n });\n }\n }\n\n public onAgendaLookupRequest(value: string) {\n const sort = this.agendaLookupDisplayFields.map((field: any) => ({\n field,\n order: 1,\n }));\n\n const filterQuery = this.getAgendaSearchFields()\n .filter(({ type }) => isValidFilter(type, value))\n .map(({ name, type }) => {\n if (typeof value == \"number\") return `${name} eq ${value}`;\n else if (type == FieldType.Date)\n return `${name} eq '${moment(value).format(\"YYYY-MM-DD\")}'`;\n else if (type == FieldType.Time)\n return `${name} eq '${moment(value).format(\"HH:mm:ss\")}'`;\n else if (type == FieldType.DateTime)\n return `${name} eq '${moment(value).format()}'`;\n else if (type == FieldType.String)\n return `containing(lower(${name}), lower('${value.replace(\n /'/g,\n \"\\\\'\"\n )}'))`;\n else return `${name} eq '${value}'`;\n })\n .join(\" or \");\n\n const displayFields = mergeUnique(\n this.agendaLookupDisplayFields,\n this.agendaAdvancedDisplayFields\n );\n this.agendaService\n .listExternalAgenda({ sort, filterQuery, displayFields })\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: this.agendaLookupDisplayFields\n .map((field) => {\n if (field.indexOf(\".\") > 0) return this.getProp(item, field);\n return item[field];\n })\n .join(this.agendaLookupSeparator),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.agendaLookupSuggestions = list.contents;\n });\n\n /*{CA:ON_AGENDA_LOOKUP_REQUEST_END:START}*/\n /*{CA:ON_AGENDA_LOOKUP_REQUEST_END:END}*/\n }\n\n public onAgendaSearchRequest(event: any) {\n /*{CA:ON_AGENDA_SEARCH_REQUEST_START:START}*/\n /*{CA:ON_AGENDA_SEARCH_REQUEST_START:END}*/\n\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const sort = multiSortMeta;\n const filterQuery = this.getAgendaSearchFields()\n .filter(\n ({ name }) => filterData[name] != undefined && filterData[name] != \"\"\n )\n .map(({ name, type }) => {\n const value = filterData[name];\n\n if (typeof value == \"number\") return `${name} eq ${value}`;\n else if (type == FieldType.Date)\n return `${name} eq '${moment(value).format(\"YYYY-MM-DD\")}'`;\n else if (type == FieldType.Time)\n return `${name} eq '${moment(value).format(\"HH:mm:ss\")}'`;\n else if (type == FieldType.DateTime)\n return `${name} eq '${moment(value).format()}'`;\n else if (type == FieldType.Enum) return `${name} eq '${value}'`;\n else if (type == FieldType.String)\n return `containing(lower(${name}), lower('${value.replace(\n /'/g,\n \"\\\\'\"\n )}'))`;\n else return `${name} eq '${value}'`;\n })\n .join(\" and \");\n\n const displayFields = mergeUnique(\n this.agendaLookupDisplayFields,\n this.agendaAdvancedDisplayFields\n );\n this.agendaService\n .listExternalAgenda({ page, sort, filterQuery, displayFields })\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: this.agendaLookupDisplayFields\n .map((field) => {\n if (field.indexOf(\".\") > 0) return this.getProp(item, field);\n return item[field];\n })\n .join(this.agendaLookupSeparator),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.agendaSearchGridData = list.contents;\n this.agendaSearchTotalRecords = list.totalElements;\n });\n\n /*{CA:ON_AGENDA_SEARCH_REQUEST_END:START}*/\n /*{CA:ON_AGENDA_SEARCH_REQUEST_END:END}*/\n }\n\n private getFormGroup() {\n const formGroup = this.formBuilder.group({\n id: [{ value: undefined, disabled: true }, Validators.compose([])],\n clienteFaturamento: [\n { value: undefined, disabled: false },\n Validators.compose([Validators.required]),\n ],\n clienteRemessa: [{ value: undefined, disabled: false }],\n filial: [\n { value: undefined, disabled: false },\n Validators.compose([Validators.required]),\n ],\n transportadora: [\n { value: undefined, disabled: false },\n Validators.compose([]),\n ],\n pedidos: this.formBuilder.array([]),\n agenda: [\n { value: undefined, disabled: false },\n Validators.compose([Validators.required]),\n ],\n numeroAgendamentoCliente: [\n { value: undefined, disabled: false },\n Validators.compose([]),\n ],\n numeroPedidoCliente: [\n { value: undefined, disabled: false },\n Validators.compose([]),\n ],\n itemPedidoCliente: [\n { value: undefined, disabled: false },\n Validators.compose([]),\n ],\n createdBy: [{ value: undefined, disabled: true }, Validators.compose([])],\n createdDate: [\n { value: undefined, disabled: true },\n Validators.compose([]),\n ],\n lastModifiedBy: [\n { value: undefined, disabled: true },\n Validators.compose([]),\n ],\n lastModifiedDate: [\n { value: undefined, disabled: true },\n Validators.compose([]),\n ],\n });\n\n /*{CA:GET_FORM_CONTROLS:START}*/\n /*{CA:GET_FORM_CONTROLS:END}*/\n\n return formGroup;\n }\n\n private getClienteSearchFields() {\n return [\n new FormField({\n name: \"codigo\",\n label: this.translate.instant(\"yms.erp.pessoa_codigo\"),\n type: FieldType.Integer,\n }),\n new FormField({\n name: \"nome\",\n label: this.translate.instant(\"yms.erp.pessoa_nome\"),\n type: FieldType.String,\n }),\n new FormField({\n name: \"cpfCnpj\",\n label: this.translate.instant(\"yms.erp.pessoa_cpfCnpj\"),\n type: FieldType.String,\n }),\n ];\n }\n\n private getClienteSearchGridFields() {\n return [\n new FormField({\n name: \"codigo\",\n label: this.translate.instant(\"yms.erp.pessoa_codigo\"),\n type: FieldType.Integer,\n }),\n new FormField({\n name: \"nome\",\n label: this.translate.instant(\"yms.erp.pessoa_nome\"),\n type: FieldType.String,\n }),\n new FormField({\n name: \"cpfCnpj\",\n label: this.translate.instant(\"yms.erp.pessoa_cpfCnpj\"),\n type: FieldType.String,\n }),\n new FormField({\n name: \"site\",\n label: this.translate.instant(\"yms.erp.pessoa_site\"),\n type: FieldType.String,\n }),\n ];\n }\n\n private getFilialSearchFields() {\n return [\n new FormField({\n name: \"codigo\",\n label: this.translate.instant(\"yms.erp.filial_codigo\"),\n type: FieldType.Integer,\n }),\n new FormField({\n name: \"nome\",\n label: this.translate.instant(\"yms.erp.filial_nome\"),\n type: FieldType.String,\n }),\n ];\n }\n\n private getFilialSearchGridFields() {\n return [\n new FormField({\n name: \"codigo\",\n label: this.translate.instant(\"yms.erp.filial_codigo\"),\n type: FieldType.Integer,\n }),\n new FormField({\n name: \"nome\",\n label: this.translate.instant(\"yms.erp.filial_nome\"),\n type: FieldType.String,\n }),\n ];\n }\n\n private getTransportadoraSearchFields() {\n return [\n new FormField({\n name: \"codigo\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.transportadora_codigo\"),\n }),\n new FormField({\n name: \"pessoa.nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.transportadora_descricao\"),\n }),\n new FormField({\n name: \"pessoa.cpfCnpj\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.transportadora_cnpj\"),\n }),\n ];\n }\n\n private getTransportadoraSearchGridFields() {\n return [\n new FormField({\n name: \"codigo\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.transportadora_codigo\"),\n }),\n new FormField({\n name: \"pessoa.nome\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.pessoa_nome\"),\n }),\n new FormField({\n name: \"pessoa.cpfCnpj\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.transportadora_cnpj\"),\n }),\n ];\n }\n\n private getPedidoVendaSearchFields() {\n const clientSuggestions$ = new Subject<any[]>();\n const clientSearch$ = new Subject<any>();\n\n return [\n new FormField({\n name: \"numero\",\n label: this.translate.instant(\"yms.erp.pedido_venda_numero\"),\n type: FieldType.Integer,\n }),\n new FormField({\n name: \"filialPedido\",\n label: this.translate.instant(\"yms.erp.filial_codigo\"),\n type: FieldType.Integer,\n }),\n new FormField({\n name: \"cliente\",\n label: this.translate.instant(\"yms.erp.pessoa_cliente_label\"),\n type: FieldType.Lookup,\n searchFields: this.getClienteSearchFields(),\n searchGridFields: this.getClienteSearchGridFields(),\n suggestionsObservable: clientSuggestions$,\n searchObservable: clientSearch$,\n emptyMessage: \"Nenhuma sugestão encontrada\",\n size: { sm: 12, md: 12, lg: 12, xl: 12 },\n onLookupRequest: (value: string) => {\n onLookupRequest(\n this.clienteFaturamentoSearchFields,\n this.clienteFaturamentoLookupDisplayFields,\n this.clienteFaturamentoAdvancedDisplayFields,\n this.clienteFaturamentoLookupSeparator,\n this.pessoaService,\n value,\n \"situacao eq ATIVO and cliente eq true\"\n )\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => clientSuggestions$.next(list.contents));\n },\n onSearchRequest: (event: any) => {\n onSearchRequest(\n this.clienteFaturamentoSearchFields,\n this.clienteFaturamentoLookupDisplayFields,\n this.clienteFaturamentoAdvancedDisplayFields,\n this.clienteFaturamentoLookupSeparator,\n this.pessoaService,\n event,\n \"situacao eq ATIVO and cliente eq true\"\n )\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n clientSearch$.next({\n totalRecords: list.totalElements,\n gridData: list.contents,\n });\n });\n },\n dataKey: \"id\",\n lookupDisplayField: \"label\",\n searchTitle: this.translate.instant(\"yms.erp.pessoa_cliente_label\"),\n searchEmptyTitle: this.translate.instant(\"yms.erp.nothing_found\"),\n filterLabel: this.translate.instant(\"yms.erp.filter\"),\n filterTitle: this.translate.instant(\"yms.integration.filters\"),\n clearLabel: this.translate.instant(\"yms.erp.clear\"),\n cancelLabel: this.translate.instant(\"yms.erp.cancel\"),\n selectLabel: this.translate.instant(\"yms.erp.select\"),\n tooltip: this.translate.instant(\"yms.erp.pessoa_cliente_label\"),\n }),\n ];\n }\n\n private getPedidoVendaSearchGridFields() {\n return [\n new FormField({\n name: \"numero\",\n label: this.translate.instant(\"yms.erp.pedido_venda_numero\"),\n type: FieldType.Integer,\n }),\n new FormField({\n name: \"filial.nome\",\n label: this.translate.instant(\"yms.erp.filial\"),\n type: FieldType.String,\n }),\n new FormField({\n name: \"filial.codigo\",\n label: this.translate.instant(\"yms.erp.filial_codigo\"),\n type: FieldType.Integer,\n }),\n new FormField({\n name: \"pessoa.nome\",\n label: this.translate.instant(\"yms.erp.pessoa_cliente_label\"),\n type: FieldType.Integer,\n }),\n new FormField({\n name: \"pessoa.codigo\",\n label: this.translate.instant(\"yms.erp.pessoa_cliente_codigo_label\"),\n type: FieldType.Integer,\n }),\n ];\n }\n\n private getPedidoVendaItemSearchFields() {\n return [\n new FormField({\n name: \"sequencia\",\n label: this.translate.instant(\"yms.erp.pedido_venda_item_sequencia\"),\n type: FieldType.Integer,\n }),\n ];\n }\n\n private getPedidoVendaItemSearchGridFields() {\n return [\n ...this.getPedidoVendaItemSearchFields(),\n new FormField({\n name: \"sku.descricao\",\n label: this.translate.instant(\"yms.erp.produto\"),\n type: FieldType.String,\n }),\n ];\n }\n\n private getAgendaSearchFields() {\n const searchFields = [\n new FormField({\n name: \"descricao\",\n label: this.translate.instant(\"yms.erp.agenda_descricao\"),\n type: FieldType.String,\n }),\n ];\n\n /*{CA:GET_AGENDA_SEARCH_FIELDS:START}*/\n /*{CA:GET_AGENDA_SEARCH_FIELDS:END}*/\n\n return searchFields;\n }\n\n private getAgendaSearchGridFields() {\n const searchGridFields = [\n new FormField({\n name: \"descricao\",\n label: this.translate.instant(\"yms.erp.agenda_descricao\"),\n type: FieldType.String,\n }),\n ];\n\n /*{CA:GET_AGENDA_SEARCH_GRID_FIELDS:START}*/\n /*{CA:GET_AGENDA_SEARCH_GRID_FIELDS:END}*/\n\n return searchGridFields;\n }\n\n private getDerivacaoSearchFields() {\n const searchFields = [\n new FormField({\n name: \"codigo\",\n label: this.translate.instant(\"yms.erp.derivacao_codigo\"),\n type: FieldType.String,\n }),\n new FormField({\n name: \"descricao\",\n label: this.translate.instant(\"yms.erp.derivacao_descricao\"),\n type: FieldType.String,\n }),\n ];\n\n /*{CA:GET_DERIVACAO_SEARCH_FIELDS:START}*/\n /*{CA:GET_DERIVACAO_SEARCH_FIELDS:END}*/\n\n return searchFields;\n }\n\n private getDerivacaoSearchGridFields() {\n const searchGridFields = [\n new FormField({\n name: \"codigo\",\n label: this.translate.instant(\"yms.erp.derivacao_codigo\"),\n type: FieldType.String,\n }),\n new FormField({\n name: \"descricao\",\n label: this.translate.instant(\"yms.erp.derivacao_descricao\"),\n type: FieldType.String,\n }),\n ];\n\n /*{CA:GET_DERIVACAO_SEARCH_GRID_FIELDS:START}*/\n /*{CA:GET_DERIVACAO_SEARCH_GRID_FIELDS:END}*/\n\n return searchGridFields;\n }\n\n private goBack() {\n const previousRoute = \"../\";\n this.router.navigate([previousRoute], { relativeTo: this.route.parent });\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)\n control.markAsDirty({ onlySelf: true });\n else if (control instanceof FormGroup)\n this.validateAllFormFields(control);\n });\n\n this.focusService.focusFirstInvalidInput();\n }\n\n private getSaveObservable() {\n const value = this.formGroup.getRawValue();\n const expedicaoDto = Expedicao.toDto(value);\n\n let observable;\n\n if (this.isNew() && !value.id) {\n observable = this.expedicaoService.insert(expedicaoDto);\n } else {\n const id = value.id;\n observable = this.expedicaoService.update(id, expedicaoDto);\n }\n\n return observable;\n }\n\n private validateVisualization() {\n if (!userCanVisualize(this.formGroup, this.allPermissions)) {\n this.addMessage(\n \"error\",\n \"yms.erp.cannot_visualize_form_summary\",\n \"yms.erp.cannot_visualize_form_detail\"\n );\n }\n }\n\n private addMessage(severity: string, summary: string, detail: string) {\n this.messageService.add({\n severity,\n summary: this.translate.instant(summary),\n detail: this.translate.instant(detail),\n });\n }\n\n private getPedidoVendaForm() {\n return this.formBuilder.group({\n pedidoVenda: [undefined],\n });\n }\n\n private getOrdemVendaForm(\n pedidoVenda?: PedidoVenda,\n getAutomaticItensOrder?: boolean\n ) {\n if (getAutomaticItensOrder) this.getAutomaticItensOrder(pedidoVenda);\n return this.formBuilder.group({\n id: [undefined],\n pedidoVenda: [pedidoVenda],\n itens: this.formBuilder.array([]),\n });\n }\n\n private getOrdemVendaItemForm(pedidoVendaItem?: PedidoVendaItem) {\n return this.formBuilder.group({\n id: [undefined],\n pedido: [undefined],\n item: [pedidoVendaItem],\n quantidade: [undefined],\n numeroPedidoCliente: [undefined],\n itemPedidoCliente: [undefined],\n });\n }\n\n private buscarFilial() {\n const planta = this.agenda.planta || { cnpj: [] };\n\n if (planta.cnpj.length !== 1) {\n this.formCarregado = true; \n return;\n } \n \n this.filialService\n .list({\n page: 0,\n size: 1,\n filterQuery: `pessoa.cpfCnpj eq '${planta.cnpj[0]}'`,\n displayFields: [\"*\", \"empresa.nome\"],\n })\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(({ contents }) => {\n if (contents.length === 1) {\n this.formGroup.get(\"filial\").setValue(Filial.fromDto(contents[0]));\n this.disableOrdersButtons = false;\n }\n });\n\n this.formCarregado = true; \n }\n\n private buscarClienteAFaturar(pedidoVenda: PedidoVendaDto) {\n this.pessoaService\n .list({\n size: 1,\n page: 0,\n filterQuery: `id eq '${pedidoVenda.pessoa.id}'`,\n })\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(({ contents }) => {\n if ((contents || []).length !== 1) return;\n this.formGroup\n .get(\"clienteFaturamento\")\n .setValue(Pessoa.fromDto(contents[0]));\n });\n }\n}\n","import { AfterViewInit, Component, Input } from \"@angular/core\";\nimport { of, Subject, throwError } from \"rxjs\";\nimport { finalize, switchMap, takeUntil } from \"rxjs/operators\";\nimport { Expedicao } from \"../../core/entities/expedicao/expedicao\";\nimport { ExpedicaoDto } from \"../../core/entities/expedicao/expedicao-dto\";\nimport { ExpedicaoService } from \"../../core/entities/expedicao/expedicao.service\";\n\n@Component({\n selector: 'expedicao-info',\n template: `\n <div *sLoadingState=\"loading\" style=\"padding: 20px\">\n <div class=\"detail-pane\" *ngIf=\"agenda && expedicao\">\n <div class=\"detail-span\">\n <span class=\"title\">{{'yms.erp.expedicao_filial' | translate}}</span>\n <span class=\"data\">{{expedicao.filial?.codigo}} - {{expedicao.filial?.nome}}</span>\n </div>\n <div class=\"detail-span\">\n <span class=\"title\">{{'yms.erp.expedicao_cliente_faturamento' | translate}}</span>\n <span class=\"data\">{{expedicao.clienteFaturamento?.nome}}</span>\n </div>\n <div class=\"detail-span\">\n <span class=\"title\">{{'yms.erp.expedicao_cliente_remessa' | translate}}</span>\n <span class=\"data\">{{expedicao.clienteRemessa?.nome}}</span>\n </div>\n <div class=\"detail-span\">\n <span class=\"title\">{{'yms.erp.expedicao_transportadora' | translate}}</span>\n <span class=\"data\">{{expedicao.transportadora?.pessoa?.nomeFantasia}}</span>\n </div>\n </div>\n </div>\n `,\n styleUrls: ['./expedicao-info.component.scss']\n})\nexport class ExpedicaoInfoComponent implements AfterViewInit {\n @Input() agenda: any;\n\n expedicao: Expedicao;\n loading = true;\n\n private readonly unsubscribe$: Subject<void>;\n constructor(private expedicaoService: ExpedicaoService) {\n this.unsubscribe$ = new Subject();\n }\n\n ngAfterViewInit() {\n this.expedicaoService.list({\n filterQuery: `agenda.id eq '${this.agenda.id}'`,\n page: 0,\n size: 1\n })\n .pipe(\n takeUntil(this.unsubscribe$),\n switchMap(({contents}) => {\n if (!contents.length) return throwError(\"Dados de expedição não encontrados\");\n\n return of (contents[0]);\n }),\n finalize(() => this.loading = false)\n )\n .subscribe((expedicao: ExpedicaoDto) => this.expedicao = Expedicao.fromDto(expedicao));\n }\n}","import { Component, Input, OnDestroy, OnInit, TemplateRef, ViewChild } from \"@angular/core\";\nimport { FormControl, FormGroup } from \"@angular/forms\";\nimport { ActivatedRoute } from \"@angular/router\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { CircuitoFinalizado } from \"@seniorsistemas/yms-routines\";\nimport { ConfirmationService, LazyLoadEvent, SortMeta } from \"primeng/components/common/api\";\nimport { Table } from \"primeng/table\";\nimport { Subject } from \"rxjs\";\nimport { catchError, finalize, takeUntil } from \"rxjs/operators\";\nimport { Agenda } from \"../core/entities/agenda/agenda\";\n/*{CA:EXTERNAL_IMPORTS:START}*/\n/*{CA:EXTERNAL_IMPORTS:END}*/\nimport { LogIntegracao } from \"../core/entities/log-integracao/log-integracao\";\nimport { LogIntegracaoService } from \"../core/entities/log-integracao/log-integracao.service\";\n\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\n@CircuitoFinalizado({\n header: 'Logs de integração YMS/ERP',\n name: 'yms.integracao.erpagrox'\n})\nexport class LogIntegracaoDescritor {\n\n}\n\n@Component({\n templateUrl: \"./log-integracao.component.html\",\n styleUrls: [\n '../erp-senior.scss'\n ],\n providers: [\n ConfirmationService,\n /*{CA:COMPONENT_PROVIDERS:START}\n /*{CA:COMPONENT_PROVIDERS:END}*/\n ],\n /*{CA:COMPONENT_CONFIG:START}*/\n /*{CA:COMPONENT_CONFIG:END}*/\n})\nexport class LogIntegracaoComponent extends LogIntegracaoDescritor implements OnInit, OnDestroy /*{CA:CLASS_INTERFACES:START}*/ /*{CA:CLASS_INTERFACES:END}*/ {\n @Input() agenda: Agenda\n\n public allPermissions: any = {};\n public permissions: any = {};\n public localeConfig: any = {};\n\n public currentListParams: ListParams = { page: 0, size: 10, sort: [], filterData: {} };\n public gridData: LogIntegracao[];\n public gridColumns: any[];\n public showLoader: boolean;\n public totalRecords: number;\n public selection: LogIntegracao[];\n\n public serverError: boolean = false;\n\n @ViewChild(\"logIntegracaoTable\")\n public table: Table;\n\n @ViewChild(\"customTemplate\")\n public customTemplate: TemplateRef<any>;\n\n @ViewChild(\"customFilterFields\")\n public customFilterFields: TemplateRef<any>;\n\n @ViewChild(\"customGridColgroup\")\n public customGridColgroup: TemplateRef<any>;\n\n @ViewChild(\"customGridHeader\")\n public customGridHeader: TemplateRef<any>;\n\n @ViewChild(\"customGridBody\")\n public customGridBody: TemplateRef<any>;\n\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n private ngUnsubscribe = new Subject();\n private xmlFormatter: any;\n\n constructor(\n /*{CA:INJECTIONS:START}*/\n /*{CA:INJECTIONS:END}*/\n private route: ActivatedRoute,\n private logIntegracaoService: LogIntegracaoService,\n private translate: TranslateService,\n ) {\n super();\n this.xmlFormatter = require('xml-formatter') || ((payload: string, confs?: any) => payload);\n }\n\n public ngOnInit() {\n /*{CA:ON_INIT_START:START}*/\n /*{CA:ON_INIT_START:END}*/\n\n this.gridColumns = this.getGridColumns();\n this.route.data.pipe(takeUntil(this.ngUnsubscribe)).subscribe((data: any) => this.onRouteDataChange(data));\n /*{CA:ON_INIT_END:START}*/\n /*{CA:ON_INIT_END:END}*/\n }\n\n public ngOnDestroy() {\n /*{CA:ON_DESTROY_START:START}*/\n /*{CA:ON_DESTROY_START:END}*/\n\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n\n /*{CA:ON_DESTROY_END:START}*/\n /*{CA:ON_DESTROY_END:END}*/\n }\n\n public onRouteDataChange(data: any) {\n /*{CA:ON_ROUTE_DATA_CHANGE_START:START}*/\n /*{CA:ON_ROUTE_DATA_CHANGE_START:END}*/\n\n this.allPermissions = data.allPermissions;\n this.permissions = data.allPermissions.logIntegracao;\n this.localeConfig = data.localeConfig;\n\n /*{CA:ON_ROUTE_DATA_CHANGE_END:START}*/\n /*{CA:ON_ROUTE_DATA_CHANGE_END:END}*/\n }\n\n // Verifica se o objeto possui um valor que foi alterado para \"\" (String vazia) ao inves de null ou undefined\n public onSearch() {\n this.resetGrid();\n }\n \n public onGridChange(event: LazyLoadEvent) {\n /*{CA:ON_GRID_CHANGE_START:START}*/\n /*{CA:ON_GRID_CHANGE_START:END}*/\n\n const size = event.rows;\n const page = event.first / size;\n const sort = event.multiSortMeta;\n\n return this.updateGrid({ page, size, sort });\n\n /*{CA:ON_GRID_CHANGE_END:START}*/\n /*{CA:ON_GRID_CHANGE_END:END}*/\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 getGridColumns() {\n const gridColumns = [\n { field: \"nome\", header: this.translate.instant(\"yms.integration.log_integracao_nome\") },\n { field: \"entradaEm\", header: this.translate.instant(\"yms.integration.log_integracao_entrada_em\") },\n { field: \"saidaEm\", header: this.translate.instant(\"yms.integration.log_integracao_saida_em\") }\n ];\n\n /*{CA:GET_GRID_COLUMNS:START}*/\n /*{CA:GET_GRID_COLUMNS:END}*/\n\n return gridColumns;\n }\n\n private updateGrid(listParams: ListParams = {}) {\n this.showLoader = true;\n\n this.currentListParams = { ...this.currentListParams, ...listParams };\n const { page, size } = this.currentListParams;\n\n const sort: SortMeta[] = [{ field: 'entradaEm', order: -1 }];\n\n this.logIntegracaoService\n .list({ page, size, sort, filterQuery: `agenda eq '${this.agenda.id}'`, displayFields: [\"*\"] })\n .pipe(\n takeUntil(this.ngUnsubscribe),\n catchError(err => {\n this.serverError = true;\n throw err;\n }),\n finalize(() => {\n this.showLoader = false;\n })\n )\n .subscribe((list: any) => {\n this.selection = [];\n this.gridData = list.contents;\n this.totalRecords = list.totalElements;\n this.serverError = false;\n });\n }\n\n getPayload(payload: string) {\n if (payload[0] == \"{\") {\n return JSON.stringify(JSON.parse(payload), null, 2);\n\n }\n else if (payload[0] === \"<\") {\n return this.xmlFormatter(payload);\n } else {\n return payload;\n }\n }\n\n resetGrid(listParams?: ListParams) {\n if (listParams) this.currentListParams = { ...this.currentListParams, ...listParams };\n this.currentListParams = { ...this.currentListParams, page: 0, sort: [] };\n this.table.reset();\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 /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\ninterface ListParams {\n page?: number;\n size?: number;\n sort?: SortMeta[];\n filterData?: any;\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { Filial } from \"../filial/filial\";\nimport { Agenda } from \"../agenda/agenda\";\nimport { ProcessoAvulsoDto } from \"./processo-avulso-dto\";\n\nexport class ProcessoAvulso {\n filial: Filial;\n agenda: Agenda;\n\n static fromDto(processoAvulsoDto: ProcessoAvulsoDto) {\n const model: any = { ...processoAvulsoDto };\n model.filial = Filial.fromDto(model.filial);\n return model;\n }\n\n static toDto(processoAvulso: ProcessoAvulso) {\n const dto = { ...processoAvulso };\n dto.filial = Filial.toDto(dto.filial);\n return dto;\n }\n}","import { Injectable } from \"@angular/core\";\nimport { ChegadaVeiculoOverride, OverrideParams } from \"@seniorsistemas/yms-routines\";\nimport { throwError } from \"rxjs\";\nimport { map, mergeMap } from \"rxjs/operators\";\nimport { AgendaService } from \"../core/entities/agenda/agenda.service\";\nimport { ProcessoAvulso } from \"../core/entities/processo-avulso/processo-avulso\";\nimport { ProcessoAvulsoService } from \"../core/entities/processo-avulso/processo-avulso.service\";\n\n@Injectable()\nexport class ProcessoAvulsoChegadaVeiculoOverride {\n private readonly AVULSO_KEY = \"ERP_SENIOR_PROCESSO_AVULSO\"\n constructor(\n private override: ChegadaVeiculoOverride,\n private agendaService: AgendaService,\n private processoAvulsoService: ProcessoAvulsoService) {\n }\n\n public initialize() {\n this.override.addOverride(this.AVULSO_KEY, (params) => this.functionToOverride(params));\n }\n\n public remove() {\n this.override.disposeOverride(this.AVULSO_KEY);\n } \n\n private functionToOverride(params: OverrideParams) {\n return this.agendaService.atualizarAgenda(params.agenda)\n .pipe(\n mergeMap(_ => this.processoAvulsoService.list({\n filterQuery: `agenda.id eq '${params.agenda.id}'`,\n page: 0,\n size: 1\n })),\n map(({contents}) => contents.length ? contents[0] : null),\n mergeMap((avulso: ProcessoAvulso) => {\n if (!avulso) return throwError(\"Os dados da guia ERP Senior não foram informados\");\n\n return this.processoAvulsoService.registrarChegada({\n processoAvulso: avulso,\n circuito: params.circuito.id,\n sequenciaInicial: params.sequencia.id,\n vagaInicial: (params.vaga || {}).id\n })\n })\n )\n }\n}","import { Component, OnDestroy, OnInit, Input, AfterViewInit } from \"@angular/core\";\nimport { FormBuilder, FormGroup, FormControl, FormArray, Validators } from \"@angular/forms\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { FieldType, FormField } from \"@seniorsistemas/angular-components\";\nimport { ReplaySubject, Subject } from \"rxjs\";\nimport { Filial } from \"../../core/entities/filial/filial\";\nimport { takeUntil, finalize, concatMap } from \"rxjs/operators\";\nimport { ProcessoAvulso } from \"../../core/entities/processo-avulso/processo-avulso\";\nimport { ProcessoAvulsoService } from \"../../core/entities/processo-avulso/processo-avulso.service\";\nimport { ConfirmationService, MessageService, SortMeta } from \"primeng/api\";\nimport { Agenda } from \"../../core/entities/agenda/agenda\";\nimport { PesquisarFiliaisInput, FilialService } from \"../../core/entities/filial/filial.service\";\nimport { isValidFilter } from \"../../../utils/utils\";\nimport { ProcessoAvulsoChegadaVeiculoOverride } from \"../processo-avulso-chegada-veiculo.override\";\nimport { StatusAgenda } from \"./../../core/enums/status-agenda\";\nimport { AgendaService } from \"../../core/entities/agenda/agenda.service\";\nimport { ErpProcessData } from \"../../core/erp-process-data/erp-process-data\";\nimport { ErpProcessService } from \"../../core/erp-process-data/erp-process-service\";\nimport { ErpFormConfigService } from \"../../core/erp-form-config/erp-form-config-service\";\nimport { HasChangeService } from '../../core/has-change/has-change-service';\n\n@Component({\n selector: 'processo-avulso-form',\n templateUrl: './processo-avulso-form.component.html'\n})\nexport class ProcessoAvulsoFormComponent implements OnInit, AfterViewInit, OnDestroy {\n @Input() agenda: Agenda;\n\n formGroup: FormGroup;\n loading = false;\n saveAndInitButton: HTMLButtonElement;\n\n filialSearchFields: FormField[];\n filialSearchGridFields: FormField[];\n filialSearchGridData: Filial[];\n filialLookupDisplayFields = [\"codigo\", \"nome\", \"empresa.nome\"];\n filialAdvancedDisplayFields = [\"id\", \"codigo\", \"nome\", \"empresa.nome\"];\n filialLookupSeparator = \" - \";\n filialLookupSuggestions: Filial[];\n filialSearchTotalRecords: number;\n \n private formCarregado = false;\n\n private readonly ngUnsubscribe = new Subject<void>();\n private erpProcessData: ErpProcessData;\n private enableRevalidation: boolean;\n\n constructor(\n private fb: FormBuilder,\n private router: Router,\n private route: ActivatedRoute,\n private filialService: FilialService,\n private processoAvulsoService: ProcessoAvulsoService,\n private messageService: MessageService,\n private processoAvulsoOverride: ProcessoAvulsoChegadaVeiculoOverride,\n private translate: TranslateService,\n private confirmationService: ConfirmationService,\n private agendaService: AgendaService,\n private erpProcessService: ErpProcessService,\n private erpFormConfigService: ErpFormConfigService,\n private hasChangeService: HasChangeService\n ) { }\n\n ngOnInit() {\n this.formGroup = this.fb.group({\n id: [undefined],\n filial: [undefined, Validators.required],\n agenda: [undefined]\n })\n this.filialSearchFields = this.getFilialSearchFields();\n this.filialSearchGridFields = this.getFilialSearchGridFields();\n\n this.getProcessoAvulso();\n\n this.formGroup.get(\"filial\").valueChanges.pipe(takeUntil(this.ngUnsubscribe)).subscribe((_) => {\n const fil = this.formGroup.get(\"filial\").value;\n if (this.erpProcessService && fil) {\n this.erpProcessData.filialId = fil.id;\n this.erpProcessService.changeData(this.erpProcessData);\n }\n return;\n });\n this.processoAvulsoOverride.initialize();\n this.erpProcessService.current.subscribe(message => this.erpProcessData = message);\n this.erpFormConfigService.current.subscribe(message => this.enableRevalidation = message);\n\n this.verificaSeTemAlteracao();\n }\n\n private verificaSeTemAlteracao() {\n this.formGroup.valueChanges.subscribe(() => {\n if (this.formCarregado) {\n this.hasChangeService.hasChange(this.agenda.id);\n }\n });\n }\n\n ngAfterViewInit() {\n this.saveAndInitButton = document.getElementById('init') as HTMLButtonElement;\n\n this.formGroup.valueChanges.subscribe(() => {\n if (this.formCarregado) {\n this.hasChangeService.hasChange(this.agenda.id);\n }\n });\n }\n\n ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n this.processoAvulsoOverride.remove();\n }\n\n onSave(start?: boolean) {\n if (this.formGroup.invalid) {\n return this.validateAllFormFields(this.formGroup);\n }\n\n this.loading = true;\n\n if (this.isNew() || !this.enableRevalidation) {\n return this.saveAndInit(start);\n }\n\n this.erpProcessData = this.erpProcessService.builderErpProcessData(this.erpProcessData, this.formGroup);\n this.erpProcessService.changeDataErp(this.erpProcessData);\n return this.agendaService\n .checarRevalidacao(this.erpProcessData)\n .pipe(\n takeUntil(this.ngUnsubscribe),\n finalize(() => this.loading = false),\n )\n .subscribe((response: any) => {\n if (response.requerRevalidacao) {\n this.atualizaAgendaParaRejeitadoPorValidacao();\n }\n else {\n this.saveAndInit(start);\n }\n });\n }\n\n private atualizaAgendaParaRejeitadoPorValidacao() {\n this.confirmationService.confirm({\n header: this.translate.instant(\"yms.patio.agenda_revalidacao_title\"),\n message: this.translate.instant(\"yms.patio.agenda_revalidacao_message\"),\n accept: () => {\n this.hasChangeService.hasChangeSave(this.agenda.id);\n this.agenda.status = StatusAgenda.REJEITADO_POR_VALIDACAO;\n this.agenda.motorista = {id: this.erpProcessData.motoristaId};\n this.agenda.veiculo = {id: this.erpProcessData.veiculoId};\n this.agendaService\n .atualizarAgenda(this.agenda)\n .pipe(\n takeUntil(this.ngUnsubscribe),\n concatMap((_) => this.getSaveObservable()),\n finalize(() => this.loading = false),\n )\n .subscribe((_) => {\n this.successMessage();\n this.router.navigate([\"/chegada-veiculo\"], { relativeTo: this.route });\n });\n },\n reject: () => this.loading = false,\n });\n }\n\n private saveAndInit(start: boolean) {\n this.getSaveObservable()\n .pipe(\n takeUntil(this.ngUnsubscribe),\n finalize(() => this.loading = false),\n )\n .subscribe((response: any) => {\n this.formGroup.patchValue({ ...ProcessoAvulso.fromDto(response) });\n this.successMessage();\n this.hasChangeService.hasChangeSave(this.agenda.id);\n if (start && this.saveAndInitButton) {\n this.hasChangeService.hasChangeSave(this.agenda.id);\n this.saveAndInitButton.click();\n }\n });\n }\n\n private successMessage() {\n this.messageService.add({\n severity: \"success\",\n summary: this.translate.instant(\"saved_message_title\"),\n detail: this.translate.instant(\"saved_message_content\"),\n });\n }\n\n public isNew() {\n return !this.formGroup.value.id;\n }\n\n onFilialLookupRequest(value: string) {\n const filterInput = this.getFilialSearchFields()\n .filter(({ type }) => isValidFilter(type, value))\n .reduce((a, { name, type }) => {\n if (type === FieldType.Integer) {\n return { ...a, [name]: value.replace(/\\D/, \"\") };\n }\n return { ...a, [name]: value };\n }, { cnpjs: this.agenda.planta.cnpj, pagina: { limit: 10, offset: 0 } } as PesquisarFiliaisInput);\n\n this.filialService\n .listFiliais(filterInput)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) =>\n this.filialLookupSuggestions = list.filiais.map((filial: any) => Filial.fromDto(filial)));\n }\n\n onFilialSearchRequest(event: any) {\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const sort: SortMeta[] = multiSortMeta;\n const sortFormatted = !!(sort || []).length && { campo: sort[0].field, ordenacao: sort[0].order > 0 ? 'Asc' : 'Desc' };\n const filterInput = this.getFilialSearchFields()\n .filter(({ name }) => filterData[name] != undefined && filterData[name] != \"\")\n .reduce((a, { name, type }) => {\n const value = filterData[name];\n if (type === FieldType.Integer) {\n return { ...a, [name]: `${value}`.replace(/\\D/, \"\") };\n }\n return { ...a, [name]: value };\n }, { cnpjs: this.agenda.planta.cnpj, pagina: { limit: rows, offset: page, listaOrdenacao: sortFormatted ? [ { ...(sortFormatted) } ] : null } } as PesquisarFiliaisInput);\n\n this.filialService\n .listFiliais(filterInput)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.filialSearchGridData = list.filiais.map(Filial.fromDto);\n this.filialSearchTotalRecords = list.qtdTotalRegistros;\n });\n\n }\n\n private getSaveObservable() {\n const { value } = this.formGroup;\n value.agenda = this.agenda;\n\n const processoAvulsoDto = ProcessoAvulso.toDto(value);\n\n if (!!value.id) {\n return this.processoAvulsoService.update(value.id, processoAvulsoDto);\n }\n return this.processoAvulsoService.insert(processoAvulsoDto);\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 else if (control instanceof FormArray) control.controls.forEach((form: FormGroup) => this.validateAllFormFields(form));\n });\n }\n\n private getProcessoAvulso() {\n this.processoAvulsoService.list({ \n filterQuery: `agenda.id eq '${this.agenda.id}'`,\n size: 1, \n page: 0\n })\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(({ contents }) => {\n if (!contents || contents.length <= 0) {\n return this.buscarFilial();\n }\n const processoAvulso = contents[0];\n this.formGroup.patchValue({ ...ProcessoAvulso.fromDto(processoAvulso) });\n this.formCarregado = true;\n });\n }\n\n private getFilialSearchFields() {\n return [\n new FormField({\n name: \"nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.filial_nome\")\n }),\n new FormField({\n name: \"codigo\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.filial_codigo\")\n })\n ];\n }\n\n private getFilialSearchGridFields() {\n return [\n new FormField({\n name: \"nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.filial_nome\")\n }),\n new FormField({\n name: \"codigo\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.filial_codigo\")\n }),\n new FormField({\n name: \"empresa.nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.empresa\")\n })\n ];\n }\n\n private buscarFilial() {\n const planta = this.agenda.planta || { cnpj: [] };\n if (planta.cnpj.length === 1) {\n this.filialService.list({\n page: 0,\n size: 1,\n filterQuery: `pessoa.cpfCnpj eq '${planta.cnpj[0]}'`,\n displayFields: ['*', 'empresa.nome']\n })\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(({ contents }) => {\n if (contents.length === 1) {\n this.formGroup.get(\"filial\").setValue(Filial.fromDto(contents[0])); \n }\n });\n }\n this.formCarregado = true;\n }\n}","import { Component, Input, AfterViewInit } from \"@angular/core\";\nimport { Agenda } from \"../../core/entities/agenda/agenda\";\nimport { ProcessoAvulso } from \"../../core/entities/processo-avulso/processo-avulso\";\nimport { Subject } from \"rxjs\";\nimport { ProcessoAvulsoService } from \"../../core/entities/processo-avulso/processo-avulso.service\";\nimport { takeUntil } from \"rxjs/operators\";\n\n@Component({\n selector: 'processo-avulso-info',\n template: `\n <div *sLoadingState=\"loading\" style=\"padding: 20px;\">\n <div class=\"detail-pane\" *ngIf=\"agenda\">\n <div class=\"detail-span\">\n <span class=\"title\">{{'yms.erp.filial' | translate}}</span>\n <span class=\"data\">{{processoAvulso?.filial?.nome}} - {{processoAvulso?.filial?.codigo}}</span>\n </div>\n </div>\n </div>\n `\n})\nexport class ProcessoAvulsoInfoComponent implements AfterViewInit {\n @Input() agenda: Agenda;\n loading = false;\n processoAvulso: ProcessoAvulso;\n\n private readonly unsubscribe$ = new Subject<void>();\n constructor(private processoAvulsoService: ProcessoAvulsoService) {\n }\n\n ngAfterViewInit() {\n this.processoAvulsoService.list({\n filterQuery: `agenda.id eq '${this.agenda.id}'`,\n page: 0,\n size: 1\n })\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(({ contents }) => {\n if (!contents || contents.length <= 0) return;\n this.processoAvulso = ProcessoAvulso.fromDto(contents[0]);\n })\n }\n}","import * as _moment from \"moment\";const moment = _moment\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { SafraDto } from \"./safra-dto\";\nimport { Empresa } from \"../empresa/empresa\";\nimport { Situacao } from \"../../enums/situacao\";\nimport { getLookupLabel } from \"../../../../utils/lookup-utils\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport class Safra {\n public id?: string;\n public codigo: string;\n public descricao: string;\n public empresa: Empresa;\n public competenciaInicial?: Date;\n public competenciaFinal?: Date;\n public situacao: Situacao;\n public createdBy?: string;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n public static fromDto(safraDto: SafraDto, originEntity?: string): Safra {\n const model: any = { ...safraDto };\n\n model.competenciaInicial = model.competenciaInicial && moment(model.competenciaInicial).toDate();\n model.competenciaFinal = model.competenciaFinal && moment(model.competenciaFinal).toDate();\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n const lookupSeparator = \" - \";\n const displayFields = [\n \"codigo\",\n \"descricao\",\n ];\n\n model.label = getLookupLabel(model, displayFields, lookupSeparator);\n\n if (originEntity !== \"Empresa\" && model.empresa) model.empresa = Empresa.fromDto(model.empresa, \"Safra\");\n\n return model as Safra;\n }\n\n public static toDto(safra: Safra, originEntity?: string): SafraDto {\n const dto: any = { ...safra };\n\n dto.competenciaInicial = dto.competenciaInicial && moment(dto.competenciaInicial).format(\"YYYY-MM-DD\");\n dto.competenciaFinal = dto.competenciaFinal && moment(dto.competenciaFinal).format(\"YYYY-MM-DD\");\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n if (originEntity !== \"Empresa\" && dto.empresa) dto.empresa = Empresa.toDto(dto.empresa, \"Safra\");\n\n return dto;\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import * as _moment from \"moment\";\nimport { Empresa } from \"../empresa/empresa\";\nimport { Filial } from \"../filial/filial\";\nimport { Pessoa } from \"../pessoa/pessoa\";\nimport { Produto } from \"../produto/produto\";\nimport { Derivacao } from \"../derivacao/derivacao\";\nimport { Transportadora } from \"../transportadora/transportadora\";\nimport { Safra } from \"../safra/safra\";\nimport { RecebimentoOrdemCompraDto } from \"./recebimento-ordem-compra-dto\";\nimport { OrdemCompra } from \"../ordem-compra/ordem-compra\";\nimport { Agenda } from \"../agenda/agenda\";\nimport { PessoaEndereco } from \"../pessoa-endereco/pessoa-endereco\";\nimport { RecebimentoOrdemCompraFornecedor } from \"../recebimento-ordem-compra-details/recebimento-ordem-compra-fornecedor\";\n\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nconst moment = _moment\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport class RecebimentoOrdemCompra {\n public id: string;\n public agenda: Agenda;\n public empresa: Empresa;\n public filial: Filial;\n public fornecedores?: RecebimentoOrdemCompraFornecedor[];\n public produto: Produto;\n public derivacao: Derivacao;\n public transportadora: Transportadora;\n public safra: Safra;\n public ordemCompra: OrdemCompra;\n public serieNotaFiscal: string;\n public numeroNotaFiscal: string;\n public chaveNotaFiscal: string;\n\n public createdBy?: string;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n public custom?: any;\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n public static fromDto(recebimentoOrdemCompraDto: RecebimentoOrdemCompraDto, originEntity?: string): RecebimentoOrdemCompra {\n const model: any = { ...recebimentoOrdemCompraDto };\n\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n const lookupSeparator = \" - \";\n const displayFields = [\n ''];\n\n model.label = displayFields.map(field => model[field]).join(lookupSeparator);\n\n if (originEntity !== \"Agenda\" && model.agenda) model.agenda = Agenda.fromDto(model.agenda, \"RecebimentoOrdemCompra\");\n if (originEntity !== \"Empresa\" && model.empresa) model.empresa = Empresa.fromDto(model.empresa, \"RecebimentoOrdemCompra\");\n if (originEntity !== \"Filial\" && model.filial) model.filial = Filial.fromDto(model.filial, \"RecebimentoOrdemCompra\");\n if (originEntity !== \"PessoaEndereco\" && model.origemMercadoria) model.origemMercadoria = PessoaEndereco.fromDto(model.origemMercadoria, \"RecebimentoOrdemCompra\");\n if (originEntity !== \"Produto\" && model.produto) model.produto = Produto.fromDto(model.produto, \"RecebimentoOrdemCompra\");\n if (originEntity !== \"Derivacao\" && model.derivacao) model.derivacao = Derivacao.fromDto(model.derivacao, \"RecebimentoOrdemCompra\");\n if (originEntity !== \"Transportadora\" && model.transportadora) model.transportadora = Transportadora.fromDto(model.transportadora, \"RecebimentoOrdemCompra\");\n if (originEntity !== \"Safra\" && model.safra) model.safra = Safra.fromDto(model.safra, \"RecebimentoOrdemCompra\");\n if (originEntity !== \"OrdemCompra\" && model.ordemCompra) model.ordemCompra = OrdemCompra.fromDto(model.ordemCompra, \"RecebimentoOrdemCompra\");\n\n model.fornecedores = model.fornecedores.map((fornecedor: any) => ({ \n ...fornecedor,\n fornecedor: Pessoa.fromDto(fornecedor.fornecedor),\n origemMercadoria: PessoaEndereco.fromDto(fornecedor.origemMercadoria),\n ordens: fornecedor.ordens.map(OrdemCompra.fromDto)\n }));\n\n return model as RecebimentoOrdemCompra;\n }\n\n public static toDto(recebimentoOrdemCompra: RecebimentoOrdemCompra, originEntity?: string): RecebimentoOrdemCompraDto {\n const dto: any = { ...recebimentoOrdemCompra };\n\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n if (originEntity !== \"Agenda\" && dto.agenda) dto.agenda = Agenda.toDto(dto.agenda, \"RecebimentoOrdemCompra\");\n if (originEntity !== \"Empresa\" && dto.empresa) dto.empresa = Empresa.toDto(dto.empresa, \"RecebimentoOrdemCompra\");\n if (originEntity !== \"Filial\" && dto.filial) dto.filial = Filial.toDto(dto.filial, \"RecebimentoOrdemCompra\");\n if (originEntity !== \"Produto\" && dto.produto) dto.produto = Produto.toDto(dto.produto, \"RecebimentoOrdemCompra\");\n if (originEntity !== \"Derivacao\" && dto.derivacao) dto.derivacao = Derivacao.toDto(dto.derivacao, \"RecebimentoOrdemCompra\");\n if (originEntity !== \"Transportadora\" && dto.transportadora) dto.transportadora = Transportadora.toDto(dto.transportadora, \"RecebimentoOrdemCompra\");\n if (originEntity !== \"Safra\" && dto.safra) dto.safra = Safra.toDto(dto.safra, \"RecebimentoOrdemCompra\");\n if (originEntity !== \"OrdemCompra\" && dto.ordemCompra) dto.ordemCompra = OrdemCompra.toDto(dto.ordemCompra, \"RecebimentoOrdemCompra\");\n\n\n return dto;\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { Injectable } from \"@angular/core\";\nimport { ChegadaVeiculoOverride, OverrideParams } from \"@seniorsistemas/yms-routines\";\nimport { throwError } from \"rxjs\";\nimport { map, mergeMap } from \"rxjs/operators\";\nimport { AgendaService } from \"../core/entities/agenda/agenda.service\";\nimport { RecebimentoOrdemCompraService } from \"../core/entities/recebimento-ordem-compra/recebimento-ordem-compra.service\";\nimport { RecebimentoOrdemCompra } from \"../core/entities/recebimento-ordem-compra/recebimento-ordem-compra\";\n\n@Injectable()\nexport class RecebimentoOrdemCompraChegadaVeiculoOverride {\n private readonly RECEBIMENTO_ORDEMCOMPRA_KEY = \"ERP_SENIOR_RECEBIMENTO_ORDEMCOMPRA_KEY\";\n constructor(\n private override: ChegadaVeiculoOverride,\n private agendaService: AgendaService,\n private recebimentoOrdemCompraService: RecebimentoOrdemCompraService\n ) { }\n\n public initialize() {\n this.override.addOverride(this.RECEBIMENTO_ORDEMCOMPRA_KEY, (params) => this.functionToOverride(params));\n }\n\n public remove() {\n this.override.disposeOverride(this.RECEBIMENTO_ORDEMCOMPRA_KEY);\n }\n\n private functionToOverride(params: OverrideParams) {\n return this.agendaService.atualizarAgenda(params.agenda)\n .pipe(\n mergeMap(_ => this.recebimentoOrdemCompraService.list({\n filterQuery: `agenda.id eq '${params.agenda.id}'`,\n page: 0,\n size: 1\n })),\n map(({ contents }) => contents.length ? contents[0] : null),\n mergeMap((recebimentoOrdemCompra: RecebimentoOrdemCompra) => {\n if (!recebimentoOrdemCompra) return throwError(\"Não foi possÃvel encontrar os dados de Recebimento de ordem de compra\");\n\n return this.recebimentoOrdemCompraService.registrarChegadaVeiculoRecebimentoOrdemCompra({\n recebimentoOrdemCompra,\n circuito: params.circuito.id,\n sequenciaInicial: params.sequencia.id,\n vagaInicial: (params.vaga || {}).id\n });\n })\n );\n }\n\n}","import { VerificaNotafiscal } from '../../core/verifica-nota-fiscal/verificaNotaFiscal';\nimport { AfterViewInit, Component, Input, OnDestroy, OnInit } from \"@angular/core\";\nimport { AbstractControl, FormArray, FormBuilder, FormControl, FormGroup, Validators } from \"@angular/forms\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { FieldType, FormField, IToken } from \"@seniorsistemas/angular-components\";\nimport * as _moment from \"moment\";\nimport { ConfirmationService, DialogService, MessageService, SortMeta } from \"primeng/api\";\nimport { Subject } from \"rxjs\";\nimport { concatMap, debounceTime, filter, finalize, map, mergeMap, takeUntil } from \"rxjs/operators\";\nimport { getLookupLabel, onLookupRequest, onSearchRequest } from \"../../../utils/lookup-utils\";\nimport { dialogConfig, isValidFilter } from \"../../../utils/utils\";\nimport { NotaFormComponent } from \"../../components/nota-form/nota-form.component\";\nimport { Agenda } from \"../../core/entities/agenda/agenda\";\nimport { AgendaService } from \"../../core/entities/agenda/agenda.service\";\nimport { Derivacao } from \"../../core/entities/derivacao/derivacao\";\nimport { DerivacaoService } from \"../../core/entities/derivacao/derivacao.service\";\nimport { Filial } from \"../../core/entities/filial/filial\";\nimport { FilialService, PesquisarFiliaisInput } from \"../../core/entities/filial/filial.service\";\nimport { OrdemCompra } from \"../../core/entities/ordem-compra/ordem-compra\";\nimport { OrdemCompraService } from \"../../core/entities/ordem-compra/ordem-compra.service\";\nimport { PessoaEndereco } from \"../../core/entities/pessoa-endereco/pessoa-endereco\";\nimport { PessoaEnderecoService } from \"../../core/entities/pessoa-endereco/pessoa-endereco.service\";\nimport { Pessoa } from \"../../core/entities/pessoa/pessoa\";\nimport { PessoaService } from \"../../core/entities/pessoa/pessoa.service\";\nimport { Produto } from \"../../core/entities/produto/produto\";\nimport { ProdutoParams, ProdutoService } from \"../../core/entities/produto/produto.service\";\nimport { RecebimentoOrdemCompra } from \"../../core/entities/recebimento-ordem-compra/recebimento-ordem-compra\";\nimport { RecebimentoOrdemCompraDto } from \"../../core/entities/recebimento-ordem-compra/recebimento-ordem-compra-dto\";\nimport { RecebimentoOrdemCompraService } from \"../../core/entities/recebimento-ordem-compra/recebimento-ordem-compra.service\";\nimport { Safra } from \"../../core/entities/safra/safra\";\nimport { SafraService } from \"../../core/entities/safra/safra.service\";\nimport { Transportadora } from \"../../core/entities/transportadora/transportadora\";\nimport { TransportadoraService } from \"../../core/entities/transportadora/transportadora.service\";\nimport { NotaValidatorService, PesquisarDocumentoResponse } from \"../../core/nota-validator.service\";\nimport { RecebimentoOrdemCompraChegadaVeiculoOverride } from \"../recebimento-ordem-compra-chegada-veiculo.override\";\nimport { StatusAgenda } from \"./../../core/enums/status-agenda\";\nimport { OrdemCompraFormComponent } from './../ordem-compra-form/ordem-compra-form.component';\nimport { ErpProcessData } from \"../../core/erp-process-data/erp-process-data\";\nimport { ErpProcessService } from \"../../core/erp-process-data/erp-process-service\";\nimport { ErpFormConfigService } from \"../../core/erp-form-config/erp-form-config-service\";\nimport { OrdemCompraDto } from \"../../core/entities/ordem-compra/ordem-compra-dto\";\nimport { HasChangeService } from '../../core/has-change/has-change-service';\n\nconst moment = _moment;\n\n@Component({\n selector: 'recebimento-ordem-compra-form',\n templateUrl: './recebimento-ordem-compra-form.component.html',\n styleUrls: ['../../erp-senior.scss'],\n providers: [ConfirmationService]\n})\n\nexport class RecebimentoOrdemCompraFormComponent implements OnInit, OnDestroy, AfterViewInit {\n formGroup: FormGroup;\n\n derivacaoSearchFields: FormField[];\n derivacaoSearchGridData: Derivacao[];\n derivacaoLookupDisplayFields = [\"codigo\", \"descricao\"];\n derivacaoAdvancedDisplayFields = [\"id\", \"codigo\", \"descricao\"];\n derivacaoLookupSeparator = \" - \";\n derivacaoLookupSuggestions: Derivacao[];\n derivacaoSearchTotalRecords: number;\n\n filialSearchFields: FormField[];\n filialSearchGridFields: FormField[];\n filialSearchGridData: Filial[];\n filialLookupDisplayFields = [\"codigo\", \"nome\", \"empresa.nome\"];\n filialAdvancedDisplayFields = [\"id\", \"codigo\", \"nome\", \"empresa.nome\"];\n filialLookupSeparator = \" - \";\n filialLookupSuggestions: Filial[];\n filialSearchTotalRecords: number;\n\n fornecedorSearchFields: FormField[];\n fornecedorSearchGridData: Pessoa[];\n fornecedorLookupDisplayFields = [\"codigo\", \"nome\", \"cpfCnpj\"];\n fornecedorAdvancedDisplayFields = [\"id\", \"codigo\", \"nome\"];\n fornecedorLookupSeparator = \" - \";\n fornecedorLookupSuggestions: Pessoa[];\n fornecedorSearchTotalRecords: number;\n\n ordemCompraSearchFields: FormField[];\n ordemCompraSearchGridFields: FormField[];\n ordemCompraSearchGridData: OrdemCompra[];\n ordemCompraLookupDisplayFields = [\"codigo\", \"empresa.nome\"];\n ordemCompraAdvancedDisplayFields = [\"id\", \"codigo\", \"empresa.nome\", \"filial.nome\", \"pessoa.nome\"];\n ordemCompraLookupSeparator = \" - \";\n ordemCompraLookupSuggestions: OrdemCompra[];\n ordemCompraSearchTotalRecords: number;\n\n origemMercadoriaSearchFields: FormField[];\n origemMercadoriaSearchGridData: PessoaEndereco[];\n origemMercadoriaLookupDisplayFields = [\"codigo\", \"endereco\"];\n origemMercadoriaAdvancedDisplayFields = [\"id\", \"codigo\", \"endereco\", \"numero\"];\n origemMercadoriaLookupSeparator = \" - \";\n origemMercadoriaLookupSuggestions: PessoaEndereco[];\n origemMercadoriaSearchTotalRecords: number;\n\n produtoSearchFields: FormField[];\n produtoSearchGridData: Produto[];\n produtoLookupDisplayFields = [\"codigo\", \"descricao\"];\n produtoAdvancedDisplayFields = [\"id\", \"codigo\", \"descricao\"];\n produtoLookupSeparator = \" - \";\n produtoLookupSuggestions: Produto[];\n produtoSearchTotalRecords: number;\n\n safraSearchFields: FormField[];\n safraSearchGridFields: FormField[];\n safraSearchGridData: Safra[];\n safraLookupDisplayFields = [\"codigo\", \"descricao\"];\n safraAdvancedDisplayFields = [\"id\", \"codigo\", \"descricao\"];\n safraLookupSeparator = \" - \";\n safraLookupSuggestions: Safra[];\n safraSearchTotalRecords: number;\n\n transportadoraSearchFields: FormField[];\n transportadoraSearchGridFields: FormField[];\n transportadoraSearchGridData: Transportadora[];\n transportadoraLookupDisplayFields = [\"codigo\", \"pessoa.nome\", \"pessoa.cpfCnpj\"];\n transportadoraAdvancedDisplayFields = [\"id\", \"codigo\", \"pessoa.nome\", \"pessoa.cpfCnpj\"];\n transportadoraLookupSeparator = \" - \";\n transportadoraLookupSuggestions: Transportadora[];\n transportadoraSearchTotalRecords: number;\n\n disableButtonSave: boolean = false;\n\n chaveNotaFiscal: string;\n\n totalEixosContratados: number = 0;\n totalEixosComposicao: number = 0;\n\n erroChaveNota = false;\n erroFornecedores = false;\n\n public notasTokens: IToken[] = [];\n public fornecedorNotasTokens: IToken[] = [];\n public fornecedorNotas = [];\n\n private formCarregado = false;\n\n ordemCompraSelecionado: any = null;\n\n public loading: boolean;\n public saveAndInitButton: any;\n public createdByErp: boolean;\n\n @Input() private agenda: Agenda;\n\n private readonly ngUnsubscribe = new Subject<void>();\n private erpProcessData: ErpProcessData;\n private enableRevalidation: boolean;\n\n private ordens: any;\n\n constructor(\n private formBuilder: FormBuilder,\n private translate: TranslateService,\n private filialService: FilialService,\n private pessoaService: PessoaService,\n private produtoService: ProdutoService,\n private derivacaoService: DerivacaoService,\n private transportadoraService: TransportadoraService,\n private ordemCompraService: OrdemCompraService,\n private recebimentoOrdemCompraService: RecebimentoOrdemCompraService,\n private messageService: MessageService,\n private route: ActivatedRoute,\n private router: Router,\n private origemMercadoriaService: PessoaEnderecoService,\n private safraService: SafraService,\n private override: RecebimentoOrdemCompraChegadaVeiculoOverride,\n private notaValidatorService: NotaValidatorService,\n private confirmationService: ConfirmationService,\n private dialogService: DialogService,\n private agendaService: AgendaService,\n private erpProcessService: ErpProcessService,\n private erpFormConfigService: ErpFormConfigService,\n private verificaNotaFiscal: VerificaNotafiscal,\n private hasChangeService: HasChangeService,\n ) {\n this.formGroup = this.getFormGroup();\n }\n\n public ngOnInit() {\n this.route.params.pipe(takeUntil(this.ngUnsubscribe)).subscribe(({ agenda }) => {\n if (agenda == \"new\") {\n return this.configureForm();\n }\n this.getRecebimentoOrdemCompra(agenda);\n });\n\n this.formGroup\n .get('filial')\n .valueChanges.pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(this.onChangeRevalidation);\n\n this.formGroup\n .get('fornecedores')\n .valueChanges.pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(this.onChangeRevalidation);\n\n this.formGroup\n .get('transportadora')\n .valueChanges.pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(this.onChangeRevalidation);\n\n\n this.derivacaoSearchFields = this.getDerivacaoSearchFields();\n this.filialSearchFields = this.getFilialSearchFields();\n this.filialSearchGridFields = this.getFilialSearchGridFields();\n this.fornecedorSearchFields = this.getFornecedorSearchFields();\n this.origemMercadoriaSearchFields = this.getOrigemMercadoriaSearchFields();\n this.produtoSearchFields = this.getProdutoSearchFields();\n this.safraSearchFields = this.getSafraSearchFields();\n this.safraSearchGridFields = this.getSafraSearchGridFields();\n this.transportadoraSearchFields = this.getTransportadoraSearchFields();\n this.transportadoraSearchGridFields = this.getTransportadoraSearchGridFields();\n this.ordemCompraSearchFields = this.getOrdemCompraFields();\n this.ordemCompraSearchGridFields = this.getOrdemCompraGridFields();\n\n if (this.agenda && this.agenda.externalTenant) {\n this.setTransportadora(this.agenda.externalTenant.cnpj);\n }\n\n this.getEmpresaFilial();\n\n this.totalEixosComposicao = this.agenda && this.agenda.veiculo ? this.agenda.veiculo.eixos || 0 : 0;\n\n const statusAgenda = [\n \"AGUARDANDO_CONFIRMACAO_SOLICITANTE\",\n \"AGENDADO\",\n \"AGUARDANDO_CONFIRMACAO\",\n \"EM_EXECUCAO\",\n \"REJEITADO_POR_VALIDACAO\"\n ];\n if (this.agenda && !statusAgenda.includes(this.agenda.status)) {\n this.formGroup.disable();\n this.disableButtonSave = true;\n }\n this.createdByErpDisableForm();\n\n this.erpProcessService.current.subscribe(message => this.erpProcessData = message);\n this.erpFormConfigService.current.subscribe(message => this.enableRevalidation = message);\n this.verificaSeTemAlteracao();\n }\n\n private verificaSeTemAlteracao() {\n this.formGroup.valueChanges.subscribe(() => {\n if (this.formCarregado) {\n this.hasChangeService.hasChange(this.agenda.id);\n }\n });\n }\n\n public ngAfterViewInit(): void {\n this.override.initialize();\n this.saveAndInitButton = document.getElementById('init');\n }\n\n public ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n this.override.remove();\n }\n\n public createdByErpDisableForm() {\n if (this.agenda && this.agenda.createdByErp) {\n this.createdByErp = true;\n this.formGroup.get('filial').disable();\n this.formGroup.get('produto').disable();\n this.formGroup.get('derivacao').disable();\n if (!!this.formGroup.get(\"transportadora\").value) {\n this.formGroup.get('transportadora').disable();\n }\n }\n }\n\n private configureForm() {\n this.valueChanges(this.formGroup, \"filial\", this.onFilialValueChange);\n const getFilterQueryProduto = (value: any) => `produto.id eq '${value.id}' and situacao eq 'ATIVO'`;\n this.checkValuesChanges(this.formGroup, \"produto\", \"derivacao\", this.derivacaoService, getFilterQueryProduto,\n ['codigo', 'descricao'], (val) => Derivacao.fromDto(val), 10, true, true\n );\n\n (this.formGroup.get(\"fornecedores\") as FormArray).valueChanges\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(fornecedores => {\n if (!!fornecedores && fornecedores.length > 0) {\n this.formGroup.get(\"produto\").disable();\n this.formGroup.get(\"derivacao\").disable();\n } else {\n this.formGroup.get(\"produto\").enable();\n this.formGroup.get(\"derivacao\").enable();\n }\n })\n\n this.createdByErpDisableForm();\n this.formCarregado = true;\n }\n\n private getEmpresaFilial() {\n const planta = this.agenda.planta || { cnpj: [] };\n if (planta.cnpj.length !== 1) return;\n\n const filterQuery = `pessoa.cpfCnpj eq '${planta.cnpj[0]}'`;\n this.filialService.list({ filterQuery, page: 0, size: 10 })\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(({ contents }) => {\n if (contents.length === 1) {\n const filial = contents[0];\n const empresa = contents[0].empresa;\n filial.label = `${filial.codigo} - ${filial.nome}`;\n empresa.label = `${empresa.codigo} - ${empresa.nome}`;\n this.formGroup.get('empresa').setValue(empresa);\n this.formGroup.get('filial').setValue(filial);\n this.formGroup.get('filial').enable();\n this.formGroup.get('produto').enable();\n this.formGroup.get('ordemCompra').enable();\n }\n });\n }\n\n private checkValuesChanges(formGroup: FormGroup, formControlUpdated: string, formControlDependent: string, service: any, getFilterQuery: any,\n variables: any, dtoConverter: (val: any) => any, querySize: number = 1, isChangeValidators?: boolean, clearFormControlDependent?: boolean) {\n formGroup.get(formControlUpdated)\n .valueChanges\n .pipe(\n takeUntil(this.ngUnsubscribe),\n debounceTime(500),\n filter(value => {\n if (isChangeValidators) {\n formGroup.get(formControlDependent).setValidators(value ? Validators.required : Validators.nullValidator);\n }\n if (clearFormControlDependent) {\n formGroup.get(formControlDependent).setValue(null);\n }\n if (!value) {\n formGroup.get(formControlDependent).setValue(null);\n formGroup.get(formControlDependent).disable();\n return false;\n }\n return true;\n }),\n mergeMap((value: any) => {\n const filterQuery = getFilterQuery(value);\n return service.list({ filterQuery, page: 0, size: querySize });\n })\n )\n .subscribe(({ contents }) => {\n if (!contents || !contents.length || contents.length > 1) {\n return formGroup.get(formControlDependent).enable();\n }\n if (contents.length === 1) {\n contents[0].label = this.translate.instant(getLookupLabel(contents[0], variables, ' - ', true));\n formGroup.get(formControlDependent).setValue(dtoConverter(contents[0]));\n } \n\n if (contents.length > 1) {\n formGroup.get(formControlDependent).enable();\n } else {\n formGroup.get(formControlDependent).disable();\n }\n });\n }\n\n public onBlurChaveNotaFiscal() {\n if (this.verificaNotaFiscal.verificaSeNotaFiscalEstaDuplicada(this.chaveNotaFiscal, this.ordens, this.fornecedorNotasTokens)) {\n return;\n }\n\n this.removeNotaError();\n const value = this.chaveNotaFiscal;\n if (!!value) {\n this.loading = true;\n this.mensagemBuscandoNota();\n\n this.notaValidatorService.pesquisarDocumentoValidaNotaEmUso({\n filialId: (this.formGroup.get(\"filial\").value && this.formGroup.get(\"filial\").value.id) || null,\n chaveDocumento: value.trim() || \"\"\n }).pipe(\n takeUntil(this.ngUnsubscribe),\n finalize(() => this.loading = false)\n ).subscribe((response) => {\n this.adicionarNovaNota(response);\n });\n }\n }\n\n private valueChanges(formGroup: FormGroup, path: string, subscribe: any) {\n formGroup.get(path)\n .valueChanges\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(value => subscribe(value, formGroup));\n }\n\n /**PRODUTO DEPENDE DE FILIAL. ORDEM COMPRA DEPENDE DE FILIAL */\n private onFilialValueChange = (filial: Filial, formGroup: FormGroup) => {\n this.changeFormGroupValue(filial, \"produto\", formGroup);\n }\n\n private onFornecedorChange = (fornecedor: PessoaEndereco, formGroup: FormGroup) => {\n this.changeFormGroupValue(fornecedor, \"origemMercadoria\", formGroup);\n this.changeFormGroupValue(fornecedor, \"ordens\", formGroup);\n }\n\n private changeFormGroupValue(isAny: any, formControl: string, formGroup: any) {\n if (!isAny) {\n formGroup.get(formControl).setValue(undefined);\n formGroup.get(formControl).disable();\n return;\n }\n\n formGroup.get(formControl).enable();\n }\n\n public getRecebimentoOrdemCompra(agendaId: string) {\n this.loading = true;\n this.recebimentoOrdemCompraService.list({\n filterQuery: `agenda.id eq '${agendaId}'`,\n size: 1,\n page: 0\n })\n .pipe(takeUntil(this.ngUnsubscribe), finalize(() => this.loading = false))\n .subscribe(({ contents }) => {\n if (!contents.length) {\n this.formCarregado = true;\n return this.configureForm();\n }\n\n this.totalEixosContratados = contents[0].eixos || 0;\n this.totalEixosComposicao = contents[0].agenda && contents[0].agenda.veiculo \n ? contents[0].agenda.veiculo.eixos || 0 : 0;\n\n const recebimentoOrdemCompra: RecebimentoOrdemCompraDto = RecebimentoOrdemCompra.fromDto(contents[0]);\n this.formGroup.enable();\n this.formGroup.patchValue(recebimentoOrdemCompra);\n\n recebimentoOrdemCompra.fornecedores.forEach(fornecedor => {\n const form = this.getFornecedorForm(fornecedor);\n this.getFornecedores().push(form);\n\n fornecedor.ordens.forEach(ordemCompra => {\n const ordemCompraForm = this.getOrdemCompraForm(ordemCompra);\n this.getOrdensCompra(form).push(ordemCompraForm);\n ordemCompra.notas.forEach(nota => {\n const notaForm = this.getNotaForm(nota);\n this.getNotas(ordemCompraForm).push(notaForm);\n });\n });\n });\n this.configureForm();\n });\n }\n\n public onFilialLookupRequest(value: string) {\n const filterInput = this.getFilialSearchFields()\n .filter(({ type }) => isValidFilter(type, value))\n .reduce((a, { name, type }) => {\n if (type === FieldType.Integer) {\n return { ...a, [name]: value.replace(/\\D/, \"\") };\n }\n return { ...a, [name]: value };\n }, { cnpjs: this.agenda.planta.cnpj, pagina: { limit: 10, offset: 0 } } as PesquisarFiliaisInput);\n\n this.filialService\n .listFiliais(filterInput)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) =>\n this.filialLookupSuggestions = list.filiais.map((filial: any) => Filial.fromDto(filial))\n );\n }\n\n public onFilialSearchRequest(event: any) {\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const sort: SortMeta[] = multiSortMeta;\n const sortFormatted = !!(sort || []).length && { campo: sort[0].field, ordenacao: sort[0].order > 0 ? 'Asc' : 'Desc' };\n const filterInput = this.getFilialSearchFields()\n .filter(({ name }) => filterData[name] != undefined && filterData[name] != \"\")\n .reduce((a, { name, type }) => {\n const value = filterData[name];\n if (type === FieldType.Integer) {\n return { ...a, [name]: `${value}`.replace(/\\D/, \"\") };\n }\n return { ...a, [name]: value };\n }, { cnpjs: this.agenda.planta.cnpj, pagina: { limit: rows, offset: page, listaOrdenacao: sortFormatted ? [ { ...(sortFormatted) } ] : null } } as PesquisarFiliaisInput);\n\n this.filialService\n .listFiliais(filterInput)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.filialSearchGridData = list.filiais.map(Filial.fromDto);\n this.filialSearchTotalRecords = list.qtdTotalRegistros;\n });\n }\n\n /**FILTRA FORNECEDOR EQ TRUE */\n public onFornecedorLookupRequest(value: string) {\n onLookupRequest(this.fornecedorSearchFields, this.fornecedorLookupDisplayFields,\n this.fornecedorAdvancedDisplayFields, this.fornecedorLookupSeparator, this.pessoaService, \n value, ` fornecedor eq true `)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => this.fornecedorLookupSuggestions = list.contents);\n }\n\n public onFornecedorSearchRequest(event: any) {\n onSearchRequest(this.fornecedorSearchFields, this.fornecedorLookupDisplayFields,\n this.fornecedorAdvancedDisplayFields, this.fornecedorLookupSeparator, this.pessoaService, \n event, ` fornecedor eq true `)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.fornecedorSearchGridData = list.contents;\n this.fornecedorSearchTotalRecords = list.totalElements;\n });\n }\n\n /**FILTRA ORIGEM MERCADORIA PELO FORNECEDOR SELECIONADO */\n public onOrigemMercadoriaLookupRequest(fornecedorForm: FormGroup, value: string) {\n onLookupRequest(this.origemMercadoriaSearchFields, this.origemMercadoriaLookupDisplayFields,\n this.origemMercadoriaAdvancedDisplayFields, this.origemMercadoriaLookupSeparator, this.origemMercadoriaService, \n value, ` pessoa.id eq '${fornecedorForm.get(\"fornecedor\").value.id}' `)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.origemMercadoriaLookupSuggestions = list.contents;\n });\n }\n\n public onOrigemMercadoriaSearchRequest(fornecedorForm: FormGroup, event: any) {\n onSearchRequest(this.origemMercadoriaSearchFields, this.origemMercadoriaLookupDisplayFields,\n this.origemMercadoriaAdvancedDisplayFields, this.origemMercadoriaLookupSeparator, this.origemMercadoriaService, event,\n ` pessoa.id eq '${fornecedorForm.get(\"fornecedor\").value.id}' `)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.origemMercadoriaSearchGridData = list.contents;\n this.origemMercadoriaSearchTotalRecords = list.totalElements;\n });\n }\n\n /**FILTRA DERIVACAO PELO PRODUTO */\n public onDerivacaoLookupRequest(value: string) {\n onLookupRequest(this.derivacaoSearchFields, this.derivacaoLookupDisplayFields, this.derivacaoAdvancedDisplayFields,\n this.derivacaoLookupSeparator, this.derivacaoService, value,\n ` produto.id eq '${this.formGroup.get(\"produto\").value.id}' `)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.derivacaoLookupSuggestions = list.contents;\n });\n }\n\n public onDerivacaoSearchRequest(event: any) {\n onSearchRequest(this.derivacaoSearchFields, this.derivacaoLookupDisplayFields,\n this.derivacaoAdvancedDisplayFields, this.derivacaoLookupSeparator, this.derivacaoService, event,\n ` produto.id eq '${this.formGroup.get(\"produto\").value.id}' `)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.derivacaoSearchGridData = list.contents;\n this.derivacaoSearchTotalRecords = list.totalElements;\n });\n }\n\n public onOrdemCompraLookupRequest(fornecedorForm: FormGroup, value: string) {\n onLookupRequest(this.ordemCompraSearchFields, this.ordemCompraLookupDisplayFields, this.ordemCompraAdvancedDisplayFields,\n this.ordemCompraLookupSeparator, this.ordemCompraService, value,\n `filial.id eq '${this.formGroup.get(\"filial\").value.id}' and pessoa.id eq '${fornecedorForm.get(\"fornecedor\").value.id}'`)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.ordemCompraLookupSuggestions = list.contents;\n });\n }\n\n public onOrdemCompraSearchRequest(fornecedorForm: FormGroup, event: any) {\n onSearchRequest(this.ordemCompraSearchFields, this.ordemCompraLookupDisplayFields,\n this.ordemCompraAdvancedDisplayFields, this.ordemCompraLookupSeparator, this.ordemCompraService, event,\n `filial.id eq '${this.formGroup.get(\"filial\").value.id}' and pessoa.id eq '${fornecedorForm.get(\"fornecedor\").value.id}'`)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.ordemCompraSearchGridData = list.contents;\n this.ordemCompraSearchTotalRecords = list.totalElements;\n });\n }\n\n public addOrdemCompra(fornecedorForm: FormGroup) {\n this.dialogService\n .open(OrdemCompraFormComponent, {\n ...dialogConfig,\n header: 'Adicionar Ordem de Compra',\n data: {\n agenda: this.agenda,\n filial: this.formGroup.get(\"filial\").value,\n fornecedor: fornecedorForm.get(\"fornecedor\").value,\n ordens: fornecedorForm.get(\"ordens\").value,\n }\n })\n .onClose\n .pipe(takeUntil(this.ngUnsubscribe), filter(value => !!value))\n .subscribe((ordemCompra: any) => this.onOrdemCompraSaved(ordemCompra, fornecedorForm));\n }\n\n public onProdutoLookupRequest(value: string) {\n const filial = this.formGroup.get(\"filial\").value;\n const tipoAgendamento = this.agenda.tipoAgendamento;\n\n this.produtoService.listProdutos({\n pesquisa: value,\n empresaId: !!filial ? filial.empresa.id : null,\n filialId: !!filial ? filial.id : null,\n tipoAgendamentoId: !!tipoAgendamento ? tipoAgendamento.id : null,\n situacao: 'ATIVO',\n pagina: {\n limit: 100,\n offset: 0\n }\n })\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((res: any) => this.produtoLookupSuggestions = res.produtos.map(Produto.fromDto));\n }\n\n public onProdutoSearchRequest(event: any) {\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const sort: SortMeta[] = multiSortMeta;\n const sortFormatted = !!(sort || []).length && { campo: sort[0].field, ordenacao: sort[0].order > 0 ? 'Asc' : 'Desc' };\n const filterInput = this.getProdutoSearchFields()\n .filter(({ name }) => filterData[name] != undefined && filterData[name] != \"\")\n .reduce((a, { name, type }) => {\n const value = filterData[name];\n if (type === FieldType.Integer) {\n return { ...a, [name]: `${value}`.replace(/\\D/, \"\") };\n }\n return { ...a, [name]: value };\n }, { pagina: { limit: rows, offset: page, listaOrdenacao: sortFormatted ? [ { ...(sortFormatted) } ] : null } } as ProdutoParams);\n\n const filial = this.formGroup.get(\"filial\").value;\n const tipoAgendamento = this.agenda.tipoAgendamento;\n\n this.produtoService.listProdutos({\n ...filterInput,\n empresaId: !!filial ? filial.empresa.id : null,\n filialId: !!filial ? filial.id : null,\n situacao: 'ATIVO',\n tipoAgendamentoId: !!tipoAgendamento ? tipoAgendamento.id : null\n })\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((res: any) => {\n this.produtoSearchTotalRecords = res.qtdTotalRegistros;\n this.produtoSearchGridData = res.produtos.map(Produto.fromDto);\n });\n }\n\n public onSafraLookupRequest(value: string) {\n onLookupRequest(this.safraSearchFields, this.safraLookupDisplayFields,\n this.safraAdvancedDisplayFields, this.safraLookupSeparator, this.safraService, value)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.safraLookupSuggestions = list.contents;\n });\n }\n\n public onSafraSearchRequest(event: any) {\n onSearchRequest(this.safraSearchFields, this.safraLookupDisplayFields,\n this.safraAdvancedDisplayFields, this.safraLookupSeparator, this.safraService, event)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.safraSearchGridData = list.contents;\n this.safraSearchTotalRecords = list.totalElements;\n });\n }\n\n public onTransportadoraLookupRequest(value: string) {\n onLookupRequest(this.transportadoraSearchFields, this.transportadoraLookupDisplayFields, \n this.transportadoraAdvancedDisplayFields, this.transportadoraLookupSeparator, this.transportadoraService, value)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.transportadoraLookupSuggestions = list.contents;\n });\n }\n\n public onTransportadoraSearchRequest(event: any) {\n onSearchRequest(this.transportadoraSearchFields, this.transportadoraLookupDisplayFields, \n this.transportadoraAdvancedDisplayFields, this.transportadoraLookupSeparator, this.transportadoraService, event)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.transportadoraSearchGridData = list.contents;\n this.transportadoraSearchTotalRecords = list.totalElements;\n });\n }\n\n public setTransportadora(value: string) {\n if (value) {\n const cnpj = value.replace(/\\./g, '').replace(/\\//g, '').replace(/\\-/g, '');\n const filterQuery = `pessoa.cpfCnpj eq '${cnpj}'`;\n this.transportadoraService\n .list({ filterQuery, page: 0, size: 10 })\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(({ contents }) => {\n if (contents.length === 1) {\n contents[0].label = this.translate.instant(getLookupLabel(contents[0], ['codigo', 'pessoa.nome'], ' - ', true));\n this.formGroup.get('transportadora').setValue(contents[0]);\n }\n });\n }\n }\n\n public onSave(start?: boolean) {\n this.formGroup.get('agenda').setValue(this.agenda);\n \n if (this.formGroup.invalid) {\n return this.validateAllFormFields(this.formGroup);\n }\n\n if ((this.formGroup.get(\"fornecedores\") as FormArray).length <= 0) {\n this.erroFornecedores = true;\n return;\n }\n\n this.loading = true;\n\n if (this.isNew() || !this.enableRevalidation) {\n return this.saveAndInit(start);\n }\n\n this.erpProcessData = this.erpProcessService.builderErpProcessDataValidaNotaNaOrdemCompra(this.erpProcessData, this.formGroup);\n this.erpProcessService.changeDataErp(this.erpProcessData);\n return this.agendaService\n .checarRevalidacao(this.erpProcessData)\n .pipe(\n takeUntil(this.ngUnsubscribe),\n finalize(() => this.loading = false),\n )\n .subscribe((response: any) => {\n if (response.requerRevalidacao) {\n this.atualizaAgendaParaRejeitadoPorValidacao();\n }\n else {\n this.saveAndInit(start);\n }\n });\n }\n\n private atualizaAgendaParaRejeitadoPorValidacao() {\n this.confirmationService.confirm({\n header: this.translate.instant(\"yms.patio.agenda_revalidacao_title\"),\n message: this.translate.instant(\"yms.patio.agenda_revalidacao_message\"),\n accept: () => {\n this.hasChangeService.hasChangeSave(this.agenda.id);\n this.agenda.status = StatusAgenda.REJEITADO_POR_VALIDACAO;\n this.agenda.motorista = {id: this.erpProcessData.motoristaId};\n this.agenda.veiculo = {id: this.erpProcessData.veiculoId};\n this.agendaService\n .atualizarAgenda(this.agenda)\n .pipe(\n takeUntil(this.ngUnsubscribe),\n concatMap((_) => this.getSaveObservable()),\n finalize(() => this.loading = false),\n )\n .subscribe((_) => {\n this.successMessage();\n this.router.navigate([\"/chegada-veiculo\"], { relativeTo: this.route });\n });\n },\n reject: () => this.loading = false,\n });\n }\n\n private saveAndInit(start: boolean) {\n this.getSaveObservable()\n .pipe(\n takeUntil(this.ngUnsubscribe),\n finalize(() => this.loading = false),\n )\n .subscribe((value: any) => {\n this.formGroup.get(\"id\").setValue(value.id || null);\n this.successMessage();\n this.hasChangeService.hasChangeSave(this.agenda.id);\n if (start && this.saveAndInitButton) {\n this.saveAndInitButton.click();\n }\n });\n }\n\n private successMessage() {\n this.messageService.add({\n severity: \"success\",\n summary: this.translate.instant(\"saved_message_title\"),\n detail: this.translate.instant(\"saved_message_content\"),\n });\n }\n\n public isNew() {\n return !this.formGroup.value.id;\n }\n\n public addFornecedor(data?: any) {\n this.erroFornecedores = false;\n const fornecedor = this.getFornecedorForm(data);\n this.getFornecedores().push(fornecedor);\n return fornecedor;\n }\n\n public removeFornecedor(control: FormGroup) {\n this.confirmationService.confirm({\n header: this.translate.instant(\"yms.erp.remove_fornecedor_header\"),\n message: this.translate.instant(\"yms.erp.remove_fornecedor_message\"),\n accept: () => {\n const index = this.getFornecedores().controls.indexOf(control);\n this.getFornecedores().removeAt(index);\n }\n });\n }\n\n public getFornecedorForm(data: any = {}) {\n const formGroup = this.formBuilder.group({\n fornecedor: [data.fornecedor, Validators.required],\n origemMercadoria: [data.origemMercadoria],\n ordens: this.formBuilder.array([]),\n });\n\n this.valueChanges(formGroup, \"fornecedor\", this.onFornecedorChange);\n\n const getFilterQueryFornecedor = (value: any) => `pessoa.id eq '${value.id}'`;\n this.checkValuesChanges(\n formGroup, \"fornecedor\", \"origemMercadoria\", this.origemMercadoriaService,\n getFilterQueryFornecedor, ['codigo', 'endereco'], (val) => PessoaEndereco.fromDto(val), 10, false, true\n );\n\n return formGroup;\n }\n\n public getFornecedores() {\n return (this.formGroup.get(\"fornecedores\") as FormArray);\n }\n\n public getNotas(formGroup: FormGroup) {\n return (formGroup.get(\"notas\") as FormArray);\n }\n\n public addNota(formGroup: FormGroup) {\n this.dialogService.open(NotaFormComponent, {\n header: this.translate.instant(\"yms.erp.adicionar_nota\"),\n ...dialogConfig,\n data: {\n fornecedor: formGroup.get(\"fornecedor\").value,\n produto: this.formGroup.get(\"produto\").value,\n filial: this.formGroup.get(\"filial\").value,\n fornecedorNotasTokens: this.fornecedorNotasTokens,\n ordens: this.ordens,\n }\n })\n .onClose\n .pipe(takeUntil(this.ngUnsubscribe), filter(value => !!value))\n .subscribe(value => this.onNotaSaved(value, formGroup));\n }\n\n public removerNota(fornecedorForm: FormGroup, ordemCompraForm: FormGroup, notaForm: FormGroup) {\n this.confirmationService.confirm({\n header: this.translate.instant(\"yms.erp.remove_nota_header\"),\n message: this.translate.instant(\"yms.erp.remove_nota_message\"),\n accept: () => {\n const ordemCompraId = ordemCompraForm[\"value\"][\"ordemCompra\"][\"id\"];\n const index = this.getNotasFromOrdens(fornecedorForm, ordemCompraId).controls.indexOf(notaForm);\n this.getNotasFromOrdens(fornecedorForm, ordemCompraId).removeAt(index);\n\n const nota = notaForm[\"value\"];\n this.fornecedorNotasTokens.push({\n id: nota.chaveNotaFiscal,\n label: nota.numeroNotaFiscal\n });\n this.fornecedorNotas.push({\n chaveNotaFiscal: nota.chaveNotaFiscal,\n serieNotaFiscal: nota.serieNotaFiscal,\n serieLegalNotaFiscal: nota.serieLegalNotaFiscal,\n numeroNotaFiscal: nota.numeroNotaFiscal,\n });\n }\n });\n }\n\n public showButtons() {\n if (!this.agenda) {\n return false;\n }\n\n return [\n StatusAgenda.AGENDADO,\n StatusAgenda.AGUARDANDO_CONFIRMACAO,\n StatusAgenda.AGUARDANDO_CONFIRMACAO_SOLICITANTE,\n StatusAgenda.REJEITADO_POR_VALIDACAO\n ].includes(this.agenda.status as StatusAgenda);\n }\n\n public disableAdicionarNota() {\n if (this.ordemCompraSelecionado === null || this.ordemCompraSelecionado === undefined) {\n return true;\n }\n return false;\n }\n\n public removerOrdemCompra(fornecedorForm: FormGroup, ordemCompraForm: FormGroup) {\n this.confirmationService.confirm({\n header: this.translate.instant(\"yms.erp.remove_ordem_compra_header\"),\n message: this.translate.instant(\"yms.erp.remove_ordem_compra_message\"),\n accept: () => {\n const ordensCompraForm = this.getOrdensCompra(fornecedorForm);\n const index = ordensCompraForm.controls.indexOf(ordemCompraForm);\n ordensCompraForm.removeAt(index);\n }\n });\n }\n\n private onOrdemCompraSaved(ordemCompra: any, fornecedorForm: FormGroup) {\n const ordemCompraForm = this.getOrdemCompraForm({ ordemCompra : ordemCompra });\n this.getOrdensCompra(fornecedorForm).push(ordemCompraForm);\n this.getFornecedorByOrdemCompra(ordemCompra, fornecedorForm);\n }\n\n private getFornecedorByOrdemCompra(ordemCompra: OrdemCompraDto, fornecedorForm: FormGroup) {\n this.pessoaService.list({ size: 1, page: 0, filterQuery: `id eq '${ordemCompra.pessoa.id}'` })\n .pipe(\n takeUntil(this.ngUnsubscribe),\n map(({ contents }) => (contents || []).length && contents[0]),\n filter(value => !!value)\n )\n .subscribe(pessoa => {\n fornecedorForm.get(\"fornecedor\").setValue(Pessoa.fromDto(pessoa));\n });\n }\n\n getOrdensCompra(fornecedorForm: FormGroup) {\n this.ordens = fornecedorForm.get(\"ordens\");\n return fornecedorForm.get(\"ordens\") as FormArray;\n }\n\n public getNotasFromOrdens(fornecedorForm: AbstractControl, ordemCompraId: any) {\n let ordensFormSelecionado = null;\n const ordensCompraForm = fornecedorForm[\"controls\"][\"ordens\"][\"controls\"];\n\n for (let ordemCompraForm of ordensCompraForm) {\n if (ordemCompraForm[\"controls\"][\"ordemCompra\"][\"value\"].id === ordemCompraId) {\n ordensFormSelecionado = ordemCompraForm[\"controls\"][\"notas\"];\n }\n }\n\n return ordensFormSelecionado as FormArray;\n }\n\n public addFornecedorNotasTokenEmOrdemCompra(fornecedorForm: FormGroup, token: IToken) {\n if (this.ordemCompraSelecionado === null) {\n this.mensagemOrdemCompraNaoSelecionado();\n return;\n }\n\n const notas = this.fornecedorNotas.filter(fornecedorNota => fornecedorNota.chaveNotaFiscal === token.id);\n const notasForm = this.getNotasFromOrdens(fornecedorForm, this.ordemCompraSelecionado.id);\n if (notasForm !== null && notas[0] !== null) {\n notasForm.push(this.getNotaForm(notas[0]));\n }\n\n this.removeFornecedorNotasTokenDaOrdemCompra(token);\n }\n\n public removeFornecedorNotasTokenDaOrdemCompra(token: IToken) {\n this.fornecedorNotasTokens.splice(this.fornecedorNotasTokens.indexOf(token), 1);\n this.fornecedorNotas = this.fornecedorNotas.filter(fornecedorNota => fornecedorNota.chaveNotaFiscal !== token.id);\n }\n\n private getOrdemCompraForm(data: any = {}) {\n return this.formBuilder.group({\n ordemCompra: [data.ordemCompra, Validators.required],\n notas: this.formBuilder.array([]),\n });\n }\n\n private getNotaForm(data: any = {}) {\n return this.formBuilder.group({\n chaveNotaFiscal: [data.chaveNotaFiscal],\n serieNotaFiscal: [data.serieNotaFiscal],\n serieLegalNotaFiscal: [data.serieLegalNotaFiscal],\n numeroNotaFiscal: [data.numeroNotaFiscal],\n });\n }\n\n private mensagemOrdemCompraNaoSelecionado() {\n this.addMessage(\"error\", \"Ordem de compra não selecionado\", \"Nenhum ordem de compra foi selecionado!\");\n }\n\n private onNotaSaved(value: any, fornecedorForm: FormGroup) {\n if (this.ordemCompraSelecionado === null) {\n this.mensagemOrdemCompraNaoSelecionado();\n return;\n }\n\n if (!value.addFornecedor) {\n const notasForm = this.getNotasFromOrdens(fornecedorForm, this.ordemCompraSelecionado.id);\n if (notasForm !== null) {\n notasForm.push(this.getNotaForm(value));\n }\n return;\n }\n\n const existsFornecedor = (this.formGroup.get(\"fornecedores\") as FormArray).controls.find((form) => (form.value.fornecedor || {id: undefined}).id === value.fornecedor.id);\n const { infoNota } = value;\n const notaForm = this.getNotaForm({ \n chaveNotaFiscal: infoNota.chave,\n serieNotaFiscal: infoNota.serie,\n serieLegalNotaFiscal: infoNota.serieLegal,\n numeroNotaFiscal: infoNota.numero,\n });\n\n if (!!existsFornecedor) {\n const notasForm = this.getNotasFromOrdens(existsFornecedor, this.ordemCompraSelecionado.id);\n notasForm.push(notaForm);\n this.disableFields(existsFornecedor, \"fornecedor\", \"origemMercadoria\");\n } else if (!fornecedorForm.get(\"fornecedor\").value) {\n fornecedorForm.get(\"fornecedor\").setValue(Pessoa.fromDto(value.fornecedor));\n fornecedorForm.get(\"origemMercadoria\").setValue(PessoaEndereco.fromDto(value.origemMercadoria));\n const notasForm = this.getNotasFromOrdens(fornecedorForm, this.ordemCompraSelecionado.id);\n notasForm.push(notaForm);\n this.disableFields(fornecedorForm, \"fornecedor\", \"origemMercadoria\");\n } else {\n const fornecedor = this.addFornecedor({ fornecedor: Pessoa.fromDto(value.fornecedor), origemMercadoria: PessoaEndereco.fromDto(value.origemMercadoria) });\n const notasForm = this.getNotasFromOrdens(fornecedor, this.ordemCompraSelecionado.id);\n notasForm.push(notaForm);\n this.disableFields(fornecedor, \"fornecedor\", \"origemMercadoria\");\n }\n }\n\n private addMessage(severity: string, summary: string, detail: string) {\n this.messageService.add({\n severity,\n summary: this.translate.instant(summary),\n detail: this.translate.instant(detail),\n });\n }\n\n private getSaveObservable() {\n const value = this.formGroup.getRawValue();\n value.empresa = value.filial.empresa;\n const recebimentoOrdemCompraDto = RecebimentoOrdemCompra.toDto(value);\n\n if (this.isNew() && !value.id) {\n return this.recebimentoOrdemCompraService.insert(recebimentoOrdemCompraDto);\n } else {\n return this.recebimentoOrdemCompraService.update(this.formGroup.value.id, recebimentoOrdemCompraDto);\n }\n }\n\n private getFormGroup() {\n return this.formBuilder.group({\n id: [undefined],\n filial: [{ value: undefined, disabled: false }, Validators.required],\n fornecedores: this.formBuilder.array([]),\n produto: [{ value: undefined, disabled: true }],\n derivacao: [{ value: undefined, disabled: true }],\n transportadora: [undefined],\n safra: [undefined],\n agenda: [{ value: undefined, disabled: true }, Validators.required],\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) {\n control.markAsDirty({ onlySelf: true });\n } else if (control instanceof FormGroup){ \n this.validateAllFormFields(control);\n } else if (control instanceof FormArray) {\n control.controls.forEach((form: FormGroup) => this.validateAllFormFields(form));\n }\n });\n }\n\n private adicionarNovaNota(response: PesquisarDocumentoResponse) {\n const values = (response.documentos || []).length ? response.documentos[0] : undefined;\n if (!values) {\n return;\n }\n\n const fornecedor = Pessoa.fromDto(values.fornecedor);\n const origemMercadoria = PessoaEndereco.fromDto(values.origemMercadoria);\n\n const fornecedorForm = this.getFornecedores().controls.find(({ value }) => value.fornecedor.id === fornecedor.id) as FormGroup;\n if (!fornecedorForm) {\n this.addFornecedor({ fornecedor, origemMercadoria });\n this.addFornecedorNotasToken(values);\n return;\n }\n\n this.addFornecedorNotasToken(values);\n }\n\n private addFornecedorNotasToken(value: any) {\n this.fornecedorNotasTokens.push({\n id: this.chaveNotaFiscal,\n label: value.numero\n });\n \n this.fornecedorNotas.push({\n chaveNotaFiscal: this.chaveNotaFiscal,\n serieNotaFiscal: value.serie,\n serieLegalNotaFiscal: value.serieLegal,\n numeroNotaFiscal: value.numero,\n });\n\n this.chaveNotaFiscal = undefined;\n this.loading = false;\n }\n\n private removeNotaError() {\n this.erroChaveNota = false;\n }\n\n private addNotaError() {\n this.erroChaveNota = true;\n }\n\n private mensagemBuscandoNota() {\n this.messageService.add({\n severity: 'info',\n summary: this.translate.instant(\"yms.erp.nota_search_summary\"),\n detail: this.translate.instant(\"yms.erp.nota_search_detail\"),\n life: 5000\n });\n }\n\n private disableFields(formGroup: AbstractControl, ...keys: string[]) {\n keys.forEach(key => formGroup.get(key).disable());\n }\n\n private getDerivacaoSearchFields() {\n return [\n new FormField({\n name: \"descricao\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.derivacao_descricao\")\n }),\n new FormField({\n name: \"codigo\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.derivacao_codigo\")\n }),\n ];\n }\n\n private getFilialSearchFields() {\n return [\n new FormField({\n name: \"nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.filial_nome\")\n }),\n new FormField({\n name: \"codigo\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.filial_codigo\")\n })\n ];\n }\n\n private getFilialSearchGridFields() {\n return [\n new FormField({\n name: \"nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.filial_nome\")\n }),\n new FormField({\n name: \"codigo\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.filial_codigo\")\n }),\n new FormField({\n name: \"empresa.nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.empresa\")\n })\n ];\n }\n\n private getFornecedorSearchFields() {\n return [\n new FormField({\n name: \"nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.pessoa_nome\")\n }),\n new FormField({\n name: \"codigo\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.pessoa_codigo\")\n }),\n new FormField({\n name: \"cpfCnpj\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.pessoa_cpfCnpj\")\n }),\n ];\n }\n\n private getOrigemMercadoriaSearchFields() {\n return [\n new FormField({\n name: \"codigo\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.pessoa_endereco_codigo\")\n }),\n new FormField({\n name: \"numero\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.pessoa_endereco_numero\")\n }),\n new FormField({\n name: \"endereco\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.pessoa_endereco_endereco\")\n }),\n ];\n }\n\n private getProdutoSearchFields() {\n return [\n new FormField({\n name: \"descricao\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.produto_descricao\")\n }),\n new FormField({\n name: \"codigo\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.produto_codigo\")\n }),\n ];\n }\n\n private getSafraSearchFields() {\n return [\n new FormField({\n name: \"codigo\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.safra_codigo\")\n }),\n new FormField({\n name: \"descricao\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.safra_descricao\")\n })\n ];\n }\n\n private getSafraSearchGridFields() {\n return [\n new FormField({\n name: \"codigo\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.safra_codigo\")\n }),\n new FormField({\n name: \"descricao\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.safra_descricao\")\n }),\n new FormField({\n name: \"empresa.nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.safra_empresa\")\n })\n ];\n }\n\n private getTransportadoraSearchFields() {\n return [\n new FormField({\n name: \"codigo\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.transportadora_codigo\")\n }),\n new FormField({\n name: \"pessoa.nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.transportadora_descricao\")\n }),\n new FormField({\n name: \"pessoa.cpfCnpj\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.transportadora_cnpj\")\n })\n ];\n }\n\n private getTransportadoraSearchGridFields() {\n return [\n new FormField({\n name: \"codigo\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.transportadora_codigo\")\n }),\n new FormField({\n name: \"pessoa.nome\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.pessoa_nome\")\n }),\n new FormField({\n name: \"pessoa.cpfCnpj\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.transportadora_cnpj\")\n })\n ];\n }\n\n private getOrdemCompraFields() {\n return [\n new FormField({\n name: \"codigo\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.ordem_compra_codigo\")\n }),\n new FormField({\n name: \"empresa.nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.empresa\")\n }),\n new FormField({\n name: \"filial.nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.filial\")\n }),\n ];\n }\n\n private getOrdemCompraGridFields() {\n return [\n new FormField({\n name: \"codigo\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.ordem_compra_codigo\")\n }),\n new FormField({\n name: \"empresa.nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.empresa\")\n }),\n new FormField({\n name: \"filial.nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.filial\")\n }),\n new FormField({\n name: \"pessoa.nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.pessoa_nome\")\n }),\n ];\n }\n\n private onChangeRevalidation = (_) => {\n if (this.erpProcessData && this.formGroup) {\n this.erpProcessData = this.erpProcessService.builderErpProcessData(this.erpProcessData, this.formGroup);\n this.erpProcessService.changeData(this.erpProcessData);\n }\n return;\n }\n\n}\n","import { Component, Input, AfterViewInit } from \"@angular/core\";\nimport { Subject, throwError, of } from \"rxjs\";\nimport { takeUntil, switchMap, finalize } from \"rxjs/operators\";\nimport { RecebimentoOrdemCompra } from \"../../core/entities/recebimento-ordem-compra/recebimento-ordem-compra\";\nimport { RecebimentoOrdemCompraService } from \"../../core/entities/recebimento-ordem-compra/recebimento-ordem-compra.service\";\nimport { RecebimentoOrdemCompraDto } from \"../../core/entities/recebimento-ordem-compra/recebimento-ordem-compra-dto\";\n\n@Component({\n selector: 'recebimento-ordem-compra-info',\n template: `\n <div *sLoadingState=\"loading\" style=\"padding: 20px;\">\n <div class=\"detail-pane\" *ngIf=\"agenda\">\n\n <div class=\"detail-span\">\n <span class=\"title\">{{'yms.erp.recebimento_ordem_compra_filial' | translate}}</span>\n <span class=\"data\">{{recebimentoOrdemCompra?.filial?.codigo}} - {{recebimentoOrdemCompra?.filial?.nome}}</span>\n </div>\n\n <div class=\"detail-span\">\n <span class=\"title\">{{'yms.erp.recebimento_ordem_compra_produto' | translate}}</span>\n <span class=\"data\">{{recebimentoOrdemCompra?.produto?.descricao}}</span>\n </div>\n\n <div class=\"detail-span\">\n <span class=\"title\">{{'yms.erp.recebimento_ordem_compra_derivacao' | translate}}</span>\n <span class=\"data\">{{recebimentoOrdemCompra?.derivacao?.descricao}}</span>\n </div>\n\n <div class=\"detail-span\">\n <span class=\"title\">{{'yms.erp.recebimento_ordem_compra_transportadora' | translate}}</span>\n <span class=\"data\">{{recebimentoOrdemCompra?.transportadora?.placaVeiculo}}</span>\n </div>\n\n <div class=\"detail-span\">\n <span class=\"title\">{{'yms.erp.recebimento_ordem_compra_safra' | translate}}</span>\n <span class=\"data\">{{recebimentoOrdemCompra?.safra?.descricao}}</span>\n </div>\n </div>\n <div *ngFor=\"let fornecedor of recebimentoOrdemCompra?.fornecedores\">\n <div class=\"separator\"></div>\n <h3>Fornecedor - {{fornecedor?.fornecedor?.nome}}</h3>\n <div class=\"detail-pane\">\n <div class=\"detail-span\" *ngFor=\"let ordemCompra of fornecedor.ordens\">\n <span class=\"title\">{{'yms.erp.recebimento_ordem_compra_ordemcompra' | translate}}</span>\n <span class=\"data\">{{ ordemCompra.ordemCompra?.codigo }}</span>\n </div>\n </div>\n\n <div>\n <h4>Ordens de Compra</h4>\n <p-accordion>\n <p-accordionTab *ngFor=\"let ordemCompra of fornecedor.ordens\">\n <p-header>\n Ordem de compra {{ ordemCompra?.ordemCompra?.numero }}, Filial {{ ordemCompra?.ordemCompra?.filial?.codigo }}\n </p-header>\n\n <div *ngFor=\"let nota of ordemCompra.notas\">\n <div class=\"detail-pane\">\n <div class=\"detail-span\">\n <span class=\"title\">Chave nota fiscal</span>\n <span class=\"data\">{{ nota?.chaveNotaFiscal }}</span>\n </div>\n <div class=\"detail-span\">\n <span class=\"title\">Serie nota fiscal</span>\n <span class=\"data\">{{ nota?.serieNotaFiscal }}</span>\n </div>\n <div class=\"detail-span\">\n <span class=\"title\">Serie legal nota fiscal</span>\n <span class=\"data\">{{ nota?.serieLegalNotaFiscal }}</span>\n </div>\n <div class=\"detail-span\">\n <span class=\"title\">Número nota fiscal</span>\n <span class=\"data\">{{ nota?.numeroNotaFiscal }}</span>\n </div>\n </div>\n <hr />\n </div>\n </p-accordionTab>\n </p-accordion>\n </div>\n </div>\n </div>\n `,\n styleUrls: ['./recebimento-ordem-compra-info.component.scss']\n})\nexport class RecebimentoOrdemCompraInfoComponent implements AfterViewInit {\n\n @Input() agenda: any;\n\n recebimentoOrdemCompra: RecebimentoOrdemCompra;\n loading = true;\n\n private readonly unsubscribe$: Subject<void>;\n\n constructor(private recebimentoOrdemCompraService: RecebimentoOrdemCompraService) {\n this.unsubscribe$ = new Subject();\n }\n\n ngAfterViewInit() {\n this.recebimentoOrdemCompraService\n .list({\n filterQuery: `agenda.id eq '${this.agenda.id}'`,\n page: 0,\n size: 1\n })\n .pipe(\n takeUntil(this.unsubscribe$),\n switchMap(({ contents }) => {\n if (!contents.length) {\n return throwError(\"Recebimento Ordem de Compra não encontrado.\");\n }\n return of(contents[0]);\n }),\n finalize(() => this.loading = false)\n )\n .subscribe((recebimentoOrdemCompra: RecebimentoOrdemCompraDto) => this.recebimentoOrdemCompra = RecebimentoOrdemCompra.fromDto(recebimentoOrdemCompra));\n }\n}","import * as _moment from \"moment\";\nconst moment = _moment\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { ContratoCompraDto } from \"./contrato-compra-dto\";\nimport { Empresa } from \"../empresa/empresa\";\nimport { Pessoa } from \"../pessoa/pessoa\";\nimport { Filial } from \"../filial/filial\";\nimport { Safra } from \"../safra/safra\";\nimport { ContratoCompraItem } from \"../contrato-compra-item/contrato-compra-item\";\nimport { Situacao } from \"../../enums/situacao\";\nimport { SituacaoAprovacao } from \"../../enums/situacao-aprovacao\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport class ContratoCompra {\n public id?: string;\n public empresa: Empresa;\n public pessoa: Pessoa;\n public filial: Filial;\n public numero: number;\n public situacao: Situacao;\n public numeroAprovacao?: number;\n public situacaoAprovacao?: SituacaoAprovacao;\n public dataEmissao: Date;\n public safra?: Safra;\n public contratoPrioritario?: boolean;\n public dataInicioVigencia?: Date;\n public dataFimVigencia?: Date;\n public itens?: ContratoCompraItem[];\n public createdBy?: string;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n public static fromDto(contratoCompraDto: ContratoCompraDto, originEntity?: string): ContratoCompra {\n const model: any = { ...contratoCompraDto };\n\n model.dataEmissao = model.dataEmissao && moment(model.dataEmissao).toDate();\n model.dataInicioVigencia = model.dataInicioVigencia && moment(model.dataInicioVigencia).toDate();\n model.dataFimVigencia = model.dataFimVigencia && moment(model.dataFimVigencia).toDate();\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n model.label = `Número: ${model.numero}, Filial: ${model.filial.codigo}`;\n\n if (originEntity !== \"Empresa\" && model.empresa) model.empresa = Empresa.fromDto(model.empresa, \"ContratoCompra\");\n if (originEntity !== \"Pessoa\" && model.pessoa) model.pessoa = Pessoa.fromDto(model.pessoa, \"ContratoCompra\");\n if (originEntity !== \"Filial\" && model.filial) model.filial = Filial.fromDto(model.filial, \"ContratoCompra\");\n if (originEntity !== \"Safra\" && model.safra) model.safra = Safra.fromDto(model.safra, \"ContratoCompra\");\n if (originEntity !== \"ContratoCompraItem\" && model.itens)\n model.itens = Object.values(model.itens).map((item: any) => ContratoCompraItem.fromDto(item, \"ContratoCompra\"));\n\n return model as ContratoCompra;\n }\n\n public static toDto(contratoCompra: ContratoCompra, originEntity?: string): ContratoCompraDto {\n const dto: any = { ...contratoCompra };\n\n dto.dataEmissao = dto.dataEmissao && moment(dto.dataEmissao).format(\"YYYY-MM-DD\");\n dto.dataInicioVigencia = dto.dataInicioVigencia && moment(dto.dataInicioVigencia).format(\"YYYY-MM-DD\");\n dto.dataFimVigencia = dto.dataFimVigencia && moment(dto.dataFimVigencia).format(\"YYYY-MM-DD\");\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n if (originEntity !== \"Empresa\" && dto.empresa) dto.empresa = Empresa.toDto(dto.empresa, \"ContratoCompra\");\n if (originEntity !== \"Pessoa\" && dto.pessoa) dto.pessoa = Pessoa.toDto(dto.pessoa, \"ContratoCompra\");\n if (originEntity !== \"Filial\" && dto.filial) dto.filial = Filial.toDto(dto.filial, \"ContratoCompra\");\n if (originEntity !== \"Safra\" && dto.safra) dto.safra = Safra.toDto(dto.safra, \"ContratoCompra\");\n if (originEntity !== \"ContratoCompraItem\" && dto.itens)\n dto.itens = Object.values(dto.itens)\n .map((item: any) => ContratoCompraItem.toDto(item, \"ContratoCompra\"))\n .filter(item => Object.keys(item).length);\n\n return dto;\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import * as _moment from \"moment\";\nconst moment = _moment\n/*{CA:PACKAGE_IMPORTS:START}*/\n/*{CA:PACKAGE_IMPORTS:END}*/\n\nimport { ContratoCompraItemDto } from \"./contrato-compra-item-dto\";\nimport { ContratoCompra } from \"../contrato-compra/contrato-compra\";\nimport { Produto } from \"../produto/produto\";\nimport { Situacao } from \"../../enums/situacao\";\n/*{CA:PROJECT_IMPORTS:START}*/\n/*{CA:PROJECT_IMPORTS:END}*/\n\nexport class ContratoCompraItem {\n public id?: string;\n public contrato?: ContratoCompra;\n public sequencia: number;\n public sku?: Produto;\n public situacao: Situacao;\n public quantidadeContratada: number;\n public quantidadeUtilizada?: number;\n public quantidadeEncerrada?: number;\n public dataCompetencia: Date;\n public createdBy?: string;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n\n /*{CA:CLASS_ATTRIBUTES:START}*/\n /*{CA:CLASS_ATTRIBUTES:END}*/\n\n public static fromDto(contratoCompraItemDto: ContratoCompraItemDto, originEntity?: string): ContratoCompraItem {\n const model: any = { ...contratoCompraItemDto };\n model.sku = model.sku || {};\n\n model.dataCompetencia = model.dataCompetencia && moment(model.dataCompetencia).toDate();\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n model.label = `${model.sequencia} - ${model.sku.descricao} - ${model.sku.codigo}`\n\n if (originEntity !== \"ContratoCompra\" && model.contrato)\n model.contrato = ContratoCompra.fromDto(model.contrato, \"ContratoCompraItem\");\n if (originEntity !== \"Produto\" && model.sku) model.sku = Produto.fromDto(model.sku, \"ContratoCompraItem\");\n\n return model as ContratoCompraItem;\n }\n\n public static toDto(contratoCompraItem: ContratoCompraItem, originEntity?: string): ContratoCompraItemDto {\n const dto: any = { ...contratoCompraItem };\n\n dto.dataCompetencia = dto.dataCompetencia && moment(dto.dataCompetencia).format(\"YYYY-MM-DD\");\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n if (originEntity !== \"ContratoCompra\" && dto.contrato) dto.contrato = ContratoCompra.toDto(dto.contrato, \"ContratoCompraItem\");\n if (originEntity !== \"Produto\" && dto.sku) dto.sku = Produto.toDto(dto.sku, \"ContratoCompraItem\");\n\n return dto;\n }\n\n /*{CA:CLASS_METHODS:START}*/\n /*{CA:CLASS_METHODS:END}*/\n}\n\n/*{CA:FILE_CONTENTS:START}*/\n/*{CA:FILE_CONTENTS:END}*/\n","import { Component, OnInit, OnDestroy } from \"@angular/core\";\nimport { FormGroup, FormBuilder, FormArray, Validators, FormControl } from \"@angular/forms\";\nimport { DynamicDialogRef, DynamicDialogConfig } from \"primeng/api\";\nimport { FormField, FieldType } from \"@seniorsistemas/angular-components\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil, map } from \"rxjs/operators\";\nimport * as _moment from \"moment\";\nimport { ContratoCompraItem } from \"../../core/entities/contrato-compra-item/contrato-compra-item\";\nimport { ContratoCompraService } from \"../../core/entities/contrato-compra/contrato-compra.service\";\nimport { ContratoCompraItemService } from \"../../core/entities/contrato-compra-item/contrato-compra-item.service\";\nimport { ContratoCompra } from \"../../core/entities/contrato-compra/contrato-compra\";\nimport { Agenda } from \"../../core/entities/agenda/agenda\";\nimport { Filial } from \"../../core/entities/filial/filial\";\nimport { Pessoa } from \"../../core/entities/pessoa/pessoa\";\nimport { Produto } from \"../../core/entities/produto/produto\";\nconst moment = _moment;\n\n@Component({\n templateUrl: './contrato-form.component.html'\n})\nexport class ContratoFormComponent implements OnInit, OnDestroy {\n public formGroup: FormGroup;\n\n public contratoCompraLookupSuggestions: ContratoCompra[];\n public contratoCompraLookupDisplayFields = [\"numero\"];\n public contratoCompraAdvancedDisplayFields = [\"id\", \"numero\", \"numeroAprovacao\", \"situacaoAprovacao\", \"dataEmissao\", \"contratoPrioritario\", \"dataInicioVigencia\", \"dataFimVigencia\"];\n public contratoCompraLookupSeparator = \" - \";\n public contratoCompraSearchFields: FormField[];\n public contratoCompraSearchGridFields: FormField[];\n public contratoCompraSearchGridData: ContratoCompra[];\n public contratoCompraSearchTotalRecords: number;\n\n public contratoCompraItensLookupSuggestions: ContratoCompraItem[];\n public contratoCompraItensLookupDisplayFields = [\"sequencia\", \"sku.descricao\"];\n public contratoCompraItensAdvancedDisplayFields = [\"id\", \"sequencia\", \"sku.*\", \"situacao\", \"quantidadeContratada\", \"quantidadeUtilizada\", \"quantidadeEncerrada\", \"dataCompetencia\"];\n public contratoCompraItensLookupSeparator = \" - \";\n public contratoCompraItensSearchFields: FormField[];\n public contratoCompraItensSearchGridFields: FormField[];\n public contratoCompraItensSearchGridData: ContratoCompraItem[];\n public contratoCompraItensSearchTotalRecords: number;\n\n private readonly ngUnsubscribe = new Subject<void>();\n private agenda: Agenda;\n private filial: Filial;\n private fornecedor: Pessoa;\n private produto: Produto;\n private contratos: string[];\n\n constructor(\n private dialogRef: DynamicDialogRef,\n private dialogConfig: DynamicDialogConfig,\n private contratoCompraService: ContratoCompraService,\n private contratoCompraItemService: ContratoCompraItemService,\n private translate: TranslateService,\n private fb: FormBuilder\n ) { }\n\n ngOnInit() {\n const { data } = this.dialogConfig;\n this.agenda = data.agenda;\n this.filial = data.filial;\n this.fornecedor = data.fornecedor;\n this.produto = data.produto;\n this.contratos = data.contratos.map(({ contrato }: any) => !!contrato ? contrato.id : undefined).filter((val: any) => !!val);\n\n this.formGroup = this.getForm();\n \n this.contratoCompraSearchFields = this.getContratoCompraFields();\n this.contratoCompraSearchGridFields = this.getContratoCompraGridFields();\n\n this.contratoCompraItensSearchFields = this.getContratoCompraItensFields();\n this.contratoCompraItensSearchGridFields = this.getContratoCompraItensGridFields();\n }\n\n ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n public onContratoCompraLookupRequest(value: string) {\n const sort = this.contratoCompraLookupDisplayFields.map((field: any) => ({ field, order: 'Asc' }))[0];\n\n const filter: any = {\n numero: +value.replace(/\\D/g, \"\")\n };\n\n const filial = this.filial;\n if (filial && filial.empresa && filial.empresa.id) {\n filter.empresaId = filial.empresa.id;\n }\n\n this.contratoCompraService\n .listContratosCompra({\n ...filter,\n pessoaId: (this.fornecedor || {id: undefined}).id,\n produtoId: (this.produto || {id: undefined}).id,\n filialId: (filial || {id: undefined}).id,\n tipoAgendamentoId: this.agenda && this.agenda.tipoAgendamento ? this.agenda.tipoAgendamento.id : null,\n contratosSelecionados: this.contratos,\n pagina: {\n limit: 30,\n offset: 0,\n listaOrdenacao: [\n {\n campo: sort.field,\n ordenacao: sort.order\n }\n ]\n }\n })\n .subscribe((list: any) => {\n this.contratoCompraLookupSuggestions = list.contents.map(ContratoCompra.fromDto);\n });\n }\n\n public onContratoCompraSearchRequest(event: any) {\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const filter = this.getContratoCompraFields()\n .filter(({ name }) => filterData[name] != undefined && filterData[name] != \"\")\n .reduce((a, b: any) => {\n return {\n ...a,\n [b.name]: filterData[b.name]\n };\n }, {} as any);\n\n const filial = this.filial;\n if (filial && filial.empresa && filial.empresa.id) {\n filter.empresaId = filial.empresa.id;\n }\n\n filter.dataEmissao = filter.dataEmissao && moment(filter.dataEmissao).format(\"YYYY-MM-DD\");\n const sort = (multiSortMeta || []).length ? { field: multiSortMeta[0].field, order: multiSortMeta[0].order === 1 ? 'Asc' : 'Desc' } : { field: 'numero', order: 'Asc' };\n\n this.contratoCompraService\n .listContratosCompra({\n ...filter,\n pessoaId: (this.fornecedor || {id: undefined}).id,\n produtoId: (this.produto || {id: undefined}).id,\n filialId: (filial || {id: undefined}).id,\n tipoAgendamentoId: this.agenda && this.agenda.tipoAgendamento ? this.agenda.tipoAgendamento.id : null,\n contratosSelecionados: this.contratos,\n pagina: {\n limit: rows,\n offset: page,\n listaOrdenacao: [\n {\n campo: sort.field,\n ordenacao: sort.order\n }\n ]\n }\n })\n .subscribe((list: any) => {\n this.contratoCompraSearchGridData = list.contents.map(ContratoCompra.fromDto);\n this.contratoCompraSearchTotalRecords = list.totalElements;\n });\n }\n\n public onContratoCompraItensLookupRequest(value: any) {\n const sort = this.contratoCompraItensLookupDisplayFields.map((field: any) => ({ field, order: 1 }));\n\n const filialId = this.filial.id;\n const contratoId = this.formGroup.get(\"contrato\").value.id;\n\n const params = {\n contratoId,\n filialId,\n sequencia: !isNaN(value) ? value : null,\n tipoAgendamentoId: this.agenda && this.agenda.tipoAgendamento ? this.agenda.tipoAgendamento.id : null,\n pagina: this.getRecPagina(0, 10, sort)\n }\n\n this.contratoCompraItemService\n .pesquisarItensContratoCompra(params)\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: this.contratoCompraItensLookupDisplayFields\n .map(field => {\n if (field.indexOf(\".\") > 0) return this.getProp(item, field);\n return item[field];\n })\n .join(this.contratoCompraItensLookupSeparator),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.contratoCompraItensLookupSuggestions = list.contents.map(ContratoCompraItem.fromDto);\n });\n }\n\n public onContratoCompraItensSearchRequest(event: any) {\n const { first, rows, multiSortMeta, filterData } = event;\n const sort = multiSortMeta;\n\n const filialId = this.filial.id;\n const contratoId = this.formGroup.get(\"contrato\").value.id;\n\n const params = {\n contratoId,\n filialId,\n sequencia: filterData['sequencia'],\n tipoAgendamentoId: this.agenda && this.agenda.tipoAgendamento ? this.agenda.tipoAgendamento.id : null,\n pagina: this.getRecPagina(first, rows, sort)\n }\n\n this.contratoCompraItemService\n .pesquisarItensContratoCompra(params)\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: this.contratoCompraItensLookupDisplayFields\n .map(field => {\n if (field.indexOf(\".\") > 0) return this.getProp(item, field);\n return item[field];\n })\n .join(this.contratoCompraItensLookupSeparator),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.contratoCompraItensSearchGridData = list.contents.map(ContratoCompraItem.fromDto);\n this.contratoCompraItensSearchTotalRecords = list.totalElements;\n });\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 public getRecPagina(first: number, rows: number, sort: any) {\n const page = first / rows;\n const orderBy = sort && sort.length \n ? sort.map((s: any) => ({ campo: s.field, ordenacao: s.order === 1 ? 'Asc' : 'Desc' })) \n : [];\n\n return {\n offset: page,\n limit: rows,\n listaOrdenacao: orderBy\n }\n }\n\n public addItemContrato() {\n this.getItensForm().push(this.getItemForm());\n }\n\n public getItensForm(): FormArray {\n return this.formGroup.get(\"itens\") as FormArray;\n }\n\n public save() {\n if (!this.formGroup.valid) return this.validateAllFormFields(this.formGroup);\n this.close({ contrato: this.formGroup.value });\n }\n\n public close(data?: any) {\n this.dialogRef.close(data);\n }\n\n private getForm() {\n return this.fb.group({\n contrato: [undefined, Validators.required],\n itens: this.fb.array([])\n });\n }\n\n private getItemForm() {\n return this.fb.group({\n item: [undefined, Validators.required],\n quantidade: [1]\n });\n }\n\n private getContratoCompraFields() {\n return [\n new FormField({\n name: \"filialContrato\",\n label: this.translate.instant(\"yms.erp.filial_codigo\"),\n type: FieldType.Integer\n }),\n new FormField({\n name: \"numero\",\n label: this.translate.instant(\"yms.erp.contrato_compra_numero\"),\n type: FieldType.Integer\n })\n ];\n }\n\n private getContratoCompraGridFields() {\n return [\n new FormField({\n name: \"numero\",\n label: this.translate.instant(\"yms.erp.contrato_compra_numero\"),\n type: FieldType.Integer\n }),\n new FormField({\n name: \"filial.pessoa.nomeFantasia\",\n label: this.translate.instant(\"yms.erp.contrato_compra_filial\"),\n type: FieldType.Integer\n }),\n new FormField({\n name: \"filial.pessoa.codigo\",\n label: this.translate.instant(\"yms.erp.filial_codigo\"),\n type: FieldType.Integer\n }),\n new FormField({\n name: \"dataEmissao\",\n label: this.translate.instant(\"yms.erp.contrato_compra_data_emissao\"),\n type: FieldType.Date\n }),\n ];\n }\n\n private getContratoCompraItensFields() {\n return [\n new FormField({\n name: \"sequencia\",\n label: this.translate.instant(\"yms.erp.contrato_compra_item_sequencia\"),\n type: FieldType.Integer\n })\n ];\n }\n\n private getContratoCompraItensGridFields() {\n return [\n new FormField({\n name: \"sequencia\",\n label: this.translate.instant(\"yms.erp.contrato_compra_item_sequencia\"),\n type: FieldType.Integer\n }),\n new FormField({\n name: \"sku.descricao\",\n label: this.translate.instant(\"yms.erp.produto\"),\n type: FieldType.String\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 else if (control instanceof FormArray) control.controls.forEach((form: FormGroup) => this.validateAllFormFields(form));\n });\n }\n\n}","import { Empresa } from \"../empresa/empresa\";\nimport { Royalty } from \"../royalty/royalty\";\nimport { Situacao } from \"../../enums/situacao\";\nimport { TipoParticipanteTransgenia } from \"../../enums/tipo-participante-transgenia\";\nimport { TransgeniaDto } from \"./transgenia-dto\";\nimport * as _moment from \"moment\";\nconst moment = _moment;\nimport { getLookupLabel } from \"../../../../utils/lookup-utils\";\n\nexport class Transgenia {\n public id?: string;\n public empresa: Empresa;\n public codigo: string;\n public descricao: string;\n public royalty?: Royalty;\n public situacao: Situacao;\n public tipoParticipante: TipoParticipanteTransgenia;\n\n public static fromDto(transgeniaDto: TransgeniaDto, originEntity?: string): Transgenia {\n const model: any = { ...transgeniaDto };\n\n const lookupSeparator = \" - \";\n const displayFields = [\n \"codigo\",\n \"descricao\",\n ];\n\n model.label = getLookupLabel(model, displayFields, lookupSeparator);\n\n if (originEntity !== \"Empresa\" && model.empresa) model.empresa = Empresa.fromDto(model.empresa, \"Transgenia\");\n if (originEntity !== \"Royalty\" && model.royalty) model.royalty = Royalty.fromDto(model.royalty, \"Royalty\");\n\n return model as Transgenia;\n }\n\n public static toDto(transgenia: Transgenia, originEntity?: string): TransgeniaDto {\n const dto: any = { ...transgenia };\n\n delete dto.label;\n\n if (originEntity !== \"Empresa\" && dto.empresa) dto.empresa = Empresa.toDto(dto.empresa, \"Transgenia\");\n if (originEntity !== \"Royalty\" && dto.royalty) dto.roylty = Royalty.toDto(dto.royalty, \"Transgenia\");\n\n return dto;\n }\n}\n","import { Transgenia } from './../transgenia/transgenia';\nimport * as _moment from \"moment\";\nimport { Agenda } from \"../agenda/agenda\";\nimport { ContratoCompraItem } from \"../contrato-compra-item/contrato-compra-item\";\nimport { ContratoCompra } from \"../contrato-compra/contrato-compra\";\nimport { Derivacao } from \"../derivacao/derivacao\";\nimport { PessoaEndereco } from \"../pessoa-endereco/pessoa-endereco\";\nimport { Pessoa } from \"../pessoa/pessoa\";\nimport { Produto } from \"../produto/produto\";\nimport { RecebimentoContratoDto } from \"./recebimento-dto\";\nimport { Filial } from \"../filial/filial\";\nimport { Transportadora } from \"../transportadora/transportadora\";\nimport { TipoNotaFiscal } from \"../../enums/tipo-nota-fiscal\";\nimport { RecebimentoContratoFornecedor } from \"../recebimento-contrato-details/recebimento-contrato-fornecedor\";\nconst moment = _moment\n\nexport class RecebimentoContrato {\n public id: string;\n public filial: Filial;\n public fornecedores: RecebimentoContratoFornecedor[];\n public origemMercadoria: PessoaEndereco;\n public contratos: ContratoRecebimento[];\n public derivacao: Derivacao;\n public produto: Produto;\n public agenda: Agenda;\n public transportadora: Transportadora;\n public transgenia: Transgenia;\n public tipoNotaFiscal: TipoNotaFiscal;\n public eixos?: number;\n public createdBy?: string;\n public createdDate?: Date;\n public lastModifiedBy?: string;\n public lastModifiedDate?: Date;\n public custom?: any;\n\n public static fromDto(recebimentoDto: RecebimentoContratoDto, originEntity?: string): RecebimentoContrato {\n const model: any = { ...recebimentoDto };\n\n model.createdDate = model.createdDate && moment(model.createdDate).toDate();\n model.lastModifiedDate = model.lastModifiedDate && moment(model.lastModifiedDate).toDate();\n\n const lookupSeparator = \" - \";\n const displayFields = [\n \"id\",\n \"fornecedor.id\",\n \"fornecedor.codigo\",\n \"fornecedor.nome\",\n \"fornecedor.situacao\",\n \"produto.id\",\n \"produto.codigo\",\n \"produto.comprado\",\n \"produto.descricao\",\n \"produto.produtoMisto\",\n \"produto.situacao\",\n \"produto.tipo\",\n \"agenda.id\",\n \"agenda.descricao\",\n \"transportadora.id\",\n \"transportadora.codigo\",\n \"transportadora.placaVeiculo\",\n \"transgenia.id\",\n \"transgenia.codigo\",\n \"transgenia.descricao\",\n \"tipoNotaFiscal\",\n \"createdBy\",\n \"createdDate\",\n \"lastModifiedBy\",\n \"lastModifiedDate\",\n ];\n\n model.label = displayFields.map(field => model[field]).join(lookupSeparator);\n\n if (originEntity !== \"Filial\" && model.filial) model.filial = Filial.fromDto(model.filial, \"Recebimento\");\n if (originEntity !== \"Produto\" && model.produto) model.produto = Produto.fromDto(model.produto, \"Recebimento\");\n if (originEntity !== \"Agenda\" && model.agenda) model.agenda = Agenda.fromDto(model.agenda, \"Recebimento\");\n if ((originEntity !== \"PessoaEndereco\" && model.origemMercadoria)) model.origemMercadoria = PessoaEndereco.fromDto(model.origemMercadoria, \"Recebimento\");\n if ((originEntity !== \"Derivacao\" && model.derivacao)) model.derivacao = Derivacao.fromDto(model.derivacao, \"Recebimento\");\n if ((originEntity !== \"Transportadora\" && model.transportadora)) model.transportadora = Transportadora.fromDto(model.transportadora, \"Recebimento\");\n if ((originEntity !== \"Transgenia\" && model.transgenia)) model.transgenia = Transgenia.fromDto(model.transgenia, \"Transgenia\");\n\n model.fornecedores = model.fornecedores.map((fornecedor: any) => ({\n ...fornecedor,\n fornecedor: Pessoa.fromDto(fornecedor.fornecedor, \"Recebimento\"),\n origemMercadoria: PessoaEndereco.fromDto(fornecedor.origemMercadoria, \"Recebimento\"),\n contratos: fornecedor.contratos.map((contrato: any) => ({ \n ...contrato, \n contrato: ContratoCompra.fromDto(contrato.contrato), \n itens: contrato.itens.map((item: any) => ({\n ...item,\n item: ContratoCompraItem.fromDto(item.item)\n })) \n }))\n }));\n\n return model as RecebimentoContrato;\n }\n\n public static toDto(recebimento: RecebimentoContrato, originEntity?: string): RecebimentoContratoDto {\n const dto: any = { ...recebimento };\n\n dto.createdDate = dto.createdDate && moment(dto.createdDate).format();\n dto.lastModifiedDate = dto.lastModifiedDate && moment(dto.lastModifiedDate).format();\n\n delete dto.label;\n\n if (originEntity !== \"Pessoa\" && dto.fornecedor) dto.fornecedor = Pessoa.toDto(dto.fornecedor, \"Recebimento\");\n if (originEntity !== \"Filial\" && dto.filial) dto.filial = Filial.toDto(dto.filial, \"Filial\");\n if (originEntity !== \"Produto\" && dto.produto) dto.produto = Produto.toDto(dto.produto, \"Recebimento\");\n if (originEntity !== \"Agenda\" && dto.agenda) dto.agenda = Agenda.toDto(dto.agenda, \"Recebimento\");\n if ((originEntity !== \"PessoaEndereco\" && dto.origemMercadoria)) dto.origemMercadoria = PessoaEndereco.toDto(dto.origemMercadoria, \"Recebimento\");\n if ((originEntity !== \"Transportadora\" && dto.transportadora)) dto.transportadora = Transportadora.toDto(dto.transportadora, \"Recebimento\");\n if ((originEntity !== \"Transgenia\" && dto.transgenia)) dto.transgenia = Transgenia.toDto(dto.transgenia, \"Transgenia\");\n\n dto.fornecedores = recebimento.fornecedores.map((fornecedor) => ({\n ...fornecedor,\n fornecedor: Pessoa.toDto(fornecedor.fornecedor, \"Recebimento\"),\n origemMercadoria: PessoaEndereco.toDto(fornecedor.origemMercadoria, \"Recebimento\"),\n contratos: fornecedor.contratos.map((contrato) => ({ \n ...contrato, \n contrato: ContratoCompra.toDto(contrato.contrato), \n itens: contrato.itens.map(item => ({\n ...item,\n item: ContratoCompraItem.toDto(item.item)\n })) \n }))\n }));\n \n return dto;\n }\n}\n\nexport interface ContratoRecebimento {\n id?: string;\n recebimento?: RecebimentoContrato,\n contrato: ContratoCompra,\n itens: ContratoRecebimentoItem[]\n}\n\nexport interface ContratoRecebimentoItem {\n id?: string,\n contrato?: ContratoCompra,\n item: ContratoCompraItem,\n quantidade: number\n}\n","export enum TipoNotaFiscal {\n EMPRESA_JURIDICA = \"EMPRESA_JURIDICA\",\n PRODUTOR_RURAL = \"PRODUTOR_RURAL\"\n}","export enum TipoParticipanteTransgenia {\n NAO_INFORMADO = \"NAO_INFORMADO\",\n PARTICIPANTE_MONSANTO = \"PARTICIPANTE_MONSANTO\",\n NAO_PARTICIPANTE_MONSANTO = \"NAO_PARTICIPANTE_MONSANTO\"\n}\n","import { VerificaNotafiscal } from '../../core/verifica-nota-fiscal/verificaNotaFiscal';\nimport { ErpFormConfigService } from './../../core/erp-form-config/erp-form-config-service';\nimport { AfterViewInit, Component, Input, OnDestroy, OnInit, TemplateRef, ViewChild } from \"@angular/core\";\nimport { AbstractControl, FormArray, FormBuilder, FormControl, FormGroup, Validators } from \"@angular/forms\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { FieldType, FormField, IToken } from \"@seniorsistemas/angular-components\";\nimport { Hotkey, HotkeysService } from \"angular2-hotkeys\";\nimport * as _moment from \"moment\";\nimport { ConfirmationService, DialogService, SortMeta } from \"primeng/api\";\nimport { MessageService } from \"primeng/components/common/messageservice\";\nimport { empty, forkJoin, of, Subject } from \"rxjs\";\nimport { concatMap, debounceTime, filter, finalize, map, mergeMap, takeUntil, tap } from \"rxjs/operators\";\nimport { FieldCustomizationService } from \"../../../utils/field-customization.service\";\nimport { FocusService } from \"../../../utils/focus.service\";\nimport { onLookupRequest } from \"../../../utils/lookup-utils\";\nimport { dialogConfig, isValidFilter, mergeUnique, userCanVisualize } from \"../../../utils/utils\";\nimport { NotaFormComponent } from \"../../components/nota-form/nota-form.component\";\nimport { Agenda } from \"../../core/entities/agenda/agenda\";\nimport { ContratoCompraItem } from \"../../core/entities/contrato-compra-item/contrato-compra-item\";\nimport { ContratoCompraDto } from \"../../core/entities/contrato-compra/contrato-compra-dto\";\nimport { ContratoCompraService } from \"../../core/entities/contrato-compra/contrato-compra.service\";\nimport { Derivacao } from \"../../core/entities/derivacao/derivacao\";\nimport { DerivacaoService } from \"../../core/entities/derivacao/derivacao.service\";\nimport { Filial } from \"../../core/entities/filial/filial\";\nimport { FilialService, PesquisarFiliaisInput } from \"../../core/entities/filial/filial.service\";\nimport { PessoaEndereco } from \"../../core/entities/pessoa-endereco/pessoa-endereco\";\nimport { PessoaEnderecoService } from \"../../core/entities/pessoa-endereco/pessoa-endereco.service\";\nimport { Pessoa } from \"../../core/entities/pessoa/pessoa\";\nimport { PessoaService } from \"../../core/entities/pessoa/pessoa.service\";\nimport { Produto } from \"../../core/entities/produto/produto\";\nimport { ProdutoRecebimentoParams, ProdutoService } from \"../../core/entities/produto/produto.service\";\nimport { RecebimentoContrato } from \"../../core/entities/recebimento-contrato/recebimento\";\nimport { RecebimentoContratoService } from \"../../core/entities/recebimento-contrato/recebimento.service\";\nimport { Transgenia } from \"../../core/entities/transgenia/transgenia\";\nimport { TransgeniaService } from \"../../core/entities/transgenia/transgenia.service\";\nimport { Transportadora } from \"../../core/entities/transportadora/transportadora\";\nimport { TransportadoraService } from \"../../core/entities/transportadora/transportadora.service\";\nimport { StatusAgenda } from \"./../../core/enums/status-agenda\";\nimport { TipoNotaFiscal } from \"../../core/enums/tipo-nota-fiscal\";\nimport { TipoParticipanteTransgenia } from \"../../core/enums/tipo-participante-transgenia\";\nimport { NotaValidatorService, PesquisarDocumentoResponse } from \"../../core/nota-validator.service\";\nimport { ContratoFormComponent } from \"../contrato-form/contrato-form.component\";\nimport { RecebimentoChegadaVeiculoOverride } from \"../recebimento-chegada-veiculo.override\";\nimport { AgendaService } from \"../../core/entities/agenda/agenda.service\";\nimport { ErpProcessData } from \"../../core/erp-process-data/erp-process-data\";\nimport { ErpProcessService } from \"../../core/erp-process-data/erp-process-service\";\nimport { HasChangeService } from '../../core/has-change/has-change-service';\n\nconst moment = _moment;\n\n@Component({\n selector: 'recebimento-form',\n templateUrl: \"./recebimento-form.component.html\",\n providers: [\n ConfirmationService,\n ],\n styleUrls: ['../../erp-senior.scss']\n})\nexport class RecebimentoFormComponent implements OnInit, OnDestroy, AfterViewInit {\n public localeConfig: any = {};\n public currencyLocaleOptions: any = {};\n public permissions: any = {};\n public allPermissions: any = {};\n\n public visibleDialog = false;\n public quantidadeSelecionada = 1;\n\n public formGroup: FormGroup;\n public itemFormGroup: FormGroup;\n public loading: boolean;\n public mainPanelCollapsed = false;\n\n public filialLookupSuggestions: Filial[];\n public filialLookupDisplayFields = [\"codigo\", \"nome\", \"empresa.nome\"];\n public filialAdvancedDisplayFields = [\"id\", \"codigo\", \"nome\", \"empresa.nome\"];\n public filialLookupSeparator = \" - \";\n public filialSearchFields: FormField[];\n public filialSearchGridFields: FormField[];\n public filialSearchGridData: Filial[];\n public filialSearchTotalRecords: number;\n\n public fornecedorLookupSuggestions: Pessoa[];\n public fornecedorLookupDisplayFields = [\"codigo\", \"nome\", \"cpfCnpj\"];\n public fornecedorAdvancedDisplayFields = [\"id\", \"codigo\", \"nome\", \"situacao\", \"cpfCnpj\", \"tipoParticipante\"];\n public fornecedorLookupSeparator = \" - \";\n public fornecedorSearchFields: FormField[];\n public fornecedorSearchGridFields: FormField[];\n public fornecedorSearchGridData: Pessoa[];\n public fornecedorSearchTotalRecords: number;\n\n public origemMercadoriaLookupSuggestions: PessoaEndereco[];\n public origemMercadoriaLookupDisplayFields = [\"codigo\", \"cep\", \"endereco\", \"empresa.descricao\"];\n public origemMercadoriaAdvancedDisplayFields = [\"id\", \"codigo\", \"cep\", \"endereco\", \"numero\", \"complemento\", \"cidade.*\", \"bairro\", \"situacao\", \"empresa.descricao\"];\n public origemMercadoriaLookupSeparator = \" - \";\n public origemMercadoriaSearchFields: FormField[];\n public origemMercadoriaSearchGridFields: FormField[];\n public origemMercadoriaSearchGridData: PessoaEndereco[];\n public origemMercadoriaSearchTotalRecords: number;\n\n public produtoLookupSuggestions: Produto[];\n public produtoLookupDisplayFields = [\"codigo\", \"descricao\", \"tipo\"];\n public produtoAdvancedDisplayFields = [\"id\", \"codigo\", \"comprado\", \"descricao\", \"produtoMisto\", \"situacao\", \"tipo\"];\n public produtoLookupSeparator = \" - \";\n public produtoSearchFields: FormField[];\n public produtoSearchGridFields: FormField[];\n public produtoSearchGridData: Produto[];\n public produtoSearchTotalRecords: number;\n\n public agendaLookupSuggestions: Agenda[];\n public agendaLookupDisplayFields = [\"id\", \"descricao\"];\n public agendaAdvancedDisplayFields = [\"id\", \"descricao\"];\n public agendaLookupSeparator = \" - \";\n public agendaSearchFields: FormField[];\n public agendaSearchGridFields: FormField[];\n public agendaSearchGridData: Agenda[];\n public agendaSearchTotalRecords: number;\n\n public derivacaoLookupSuggestions: Derivacao[];\n public derivacaoLookupDisplayFields = [\"codigo\", \"descricao\"];\n public derivacaoAdvancedDisplayFields = [\"id\", \"codigo\", \"descricao\"];\n public derivacaoLookupSeparator = \" - \";\n public derivacaoSearchFields: FormField[];\n public derivacaoSearchGridFields: FormField[];\n public derivacaoSearchGridData: Derivacao[];\n public derivacaoSearchTotalRecords: number;\n\n public transportadoraLookupSuggestions: Transportadora[];\n public transportadoraLookupDisplayFields = [\"codigo\", \"pessoa.nome\", \"pessoa.cpfCnpj\"];\n public transportadoraAdvancedDisplayFields = [\"id\", \"codigo\", \"pessoa.nome\", \"pessoa.cpfCnpj\"];\n public transportadoraLookupSeparator = \" - \";\n public transportadoraSearchFields: FormField[];\n public transportadoraSearchGridFields: FormField[];\n public transportadoraSearchGridData: Transportadora[];\n public transportadoraSearchTotalRecords: number;\n\n public transgeniaLookupSuggestions: Transgenia[];\n public transgeniaLookupDisplayFields = [\"codigo\", \"descricao\"];\n public transgeniaAdvancedDisplayFields = [\"id\", \"codigo\", \"descricao\"];\n public transgeniaLookupSeparator = \" - \";\n public transgeniaSearchFields: FormField[];\n public transgeniaSearchGridFields: FormField[];\n public transgeniaSearchGridData: Transgenia[];\n public transgeniaSearchTotalRecords: number;\n\n public disableButtonSave: boolean = false;\n public disableOrdersButtons: boolean = true;\n public createdByErp: boolean;\n\n public totalEixosContratados: number = 0;\n public totalEixosComposicao: number = 0;\n\n public tiposNota: { label: string; value: TipoNotaFiscal }[] = [\n { label: this.translate.instant(\"yms.erp.tipo_nota_fiscal_empresa_juridica\"), value: TipoNotaFiscal.EMPRESA_JURIDICA },\n { label: this.translate.instant(\"yms.erp.tipo_nota_fiscal_produtor_rural\"), value: TipoNotaFiscal.PRODUTOR_RURAL },\n ];\n\n public saveAndInitButton: any;\n\n @Input() private agenda: Agenda;\n\n @ViewChild(\"customTemplate\")\n public customTemplate: TemplateRef<any>;\n\n @ViewChild(\"customFormFields\")\n public customFormFields: TemplateRef<any>;\n\n public chaveNotaFiscal: string;\n public erroChaveNota = false;\n public erroFornecedores = false;\n\n public notasTokens: IToken[] = [];\n public fornecedorNotasTokens: IToken[] = [];\n public fornecedorNotas = [];\n\n public contratoSelecionado: any = null;\n\n private ngUnsubscribe = new Subject();\n\n private formCarregado: any;\n\n private erpProcessData: ErpProcessData;\n private enableRevalidation: boolean;\n\n private contratos: any;\n\n constructor(\n private recebimentoService: RecebimentoContratoService,\n private router: Router,\n private route: ActivatedRoute,\n private messageService: MessageService,\n private confirmationService: ConfirmationService,\n private formBuilder: FormBuilder,\n private translate: TranslateService,\n private hotkeysService: HotkeysService,\n private fieldCustomization: FieldCustomizationService,\n private focusService: FocusService,\n private filialService: FilialService,\n private transportadoraService: TransportadoraService,\n private pessoaEnderecoService: PessoaEnderecoService,\n private contratoCompraService: ContratoCompraService,\n private pessoaService: PessoaService,\n private produtoService: ProdutoService,\n private derivacaoService: DerivacaoService,\n private recebimentoChegadaOverride: RecebimentoChegadaVeiculoOverride,\n private notaValidatorService: NotaValidatorService,\n private transgeniaService: TransgeniaService,\n private dialogService: DialogService,\n private agendaService: AgendaService,\n private erpProcessService: ErpProcessService,\n private erpFormConfigService: ErpFormConfigService,\n private verificaNotaFiscal: VerificaNotafiscal,\n private hasChangeService: HasChangeService,\n\n ) { }\n\n public ngOnInit() {\n this.formGroup = this.getFormGroup();\n this.itemFormGroup = this.getItemForm();\n\n this.formGroup.get(\"filial\")\n .valueChanges\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(this.onFilialValueChange);\n\n this.formGroup.get(\"produto\")\n .valueChanges\n .pipe(\n takeUntil(this.ngUnsubscribe),\n debounceTime(500),\n filter(value => {\n const derivacao = this.formGroup.get(\"derivacao\").value as Derivacao;\n if (!!derivacao && derivacao.produto.id === value.id) return false;\n if (!value) {\n this.formGroup.get(\"derivacao\").setValue(undefined);\n this.formGroup.get(\"derivacao\").disable();\n return false;\n }\n return true;\n }),\n mergeMap(value => this.derivacaoService.list({\n filterQuery: `produto.id eq '${value.id}' and situacao eq 'ATIVO'`,\n page: 0,\n size: 1\n }))\n )\n .subscribe(({ contents }) => {\n if (!contents.length) {\n this.formGroup.get(\"derivacao\").enable();\n return;\n }\n\n this.formGroup.get(\"derivacao\").setValue(contents[0]);\n this.formGroup.get(\"derivacao\").disable();\n });\n\n this.route.data.pipe(takeUntil(this.ngUnsubscribe)).subscribe((data: any) => this.onRouteDataChange(data));\n\n this.route.params.pipe(takeUntil(this.ngUnsubscribe)).subscribe(({ agenda }) => {\n if (agenda == 'new') {\n this.buscarFilial();\n } else {\n this.getRecebimento(agenda);\n }\n });\n\n this.formGroup\n .get('transportadora')\n .valueChanges.pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(this.onChangeRevalidation);\n\n this.formGroup\n .get('transgenia')\n .valueChanges.pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(this.onChangeRevalidation);\n\n this.formGroup\n .get('fornecedores')\n .valueChanges.pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(this.onChangeRevalidation);\n\n this.filialSearchFields = this.getFilialSearchFields();\n this.filialSearchGridFields = this.getFilialSearchFields();\n\n this.fornecedorSearchFields = this.getFornecedorSearchFields();\n this.fornecedorSearchGridFields = this.getFornecedorSearchGridFields();\n\n this.origemMercadoriaSearchFields = this.getOrigemMercadoriaFields();\n this.origemMercadoriaSearchGridFields = this.getOrigemMercadoriaGridFields();\n\n this.produtoSearchFields = this.getProdutoSearchFields();\n this.produtoSearchGridFields = this.getProdutoSearchGridFields();\n\n this.agendaSearchFields = this.getAgendaSearchFields();\n this.agendaSearchGridFields = this.getAgendaSearchGridFields();\n\n this.derivacaoSearchFields = this.getDerivacaoSearchFields();\n this.derivacaoSearchGridFields = this.getDerivacaoSearchGridFields();\n\n this.transportadoraSearchFields = this.getTransportadoraSearchFields();\n this.transportadoraSearchGridFields = this.getTransportadoraSearchGridFields();\n\n this.transgeniaSearchFields = this.getTransgeniaSearchFields();\n this.transgeniaSearchGridFields = this.getTransgeniaSearchGridFields();\n\n this.setHotkeys();\n\n if (this.agenda && this.agenda.externalTenant) {\n this.setTransportadora(this.agenda.externalTenant.cnpj);\n }\n\n this.totalEixosComposicao = this.agenda && this.agenda.veiculo ? this.agenda.veiculo.eixos || 0 : 0;\n\n const statusAgenda = [\n \"AGUARDANDO_CONFIRMACAO_SOLICITANTE\",\n \"AGENDADO\",\n \"AGUARDANDO_CONFIRMACAO\",\n \"EM_EXECUCAO\",\n \"REJEITADO_POR_VALIDACAO\",\n ];\n\n if (this.agenda && !statusAgenda.includes(this.agenda.status)) {\n this.formGroup.disable();\n this.disableButtonSave = true;\n }\n\n this.erpProcessService.current.subscribe(message => this.erpProcessData = message);\n this.erpFormConfigService.current.subscribe(message => this.enableRevalidation = message);\n\n this.verificaSeTemAlteracao();\n }\n\n private verificaSeTemAlteracao() {\n this.formGroup.valueChanges.subscribe(() => {\n if (this.formCarregado) {\n this.hasChangeService.hasChange(this.agenda.id);\n }\n });\n }\n\n private onChangeRevalidation = (_) => {\n if (this.erpProcessData && this.formGroup) {\n this.erpProcessData = this.erpProcessService.builderErpProcessData(this.erpProcessData, this.formGroup);\n this.erpProcessService.changeData(this.erpProcessData);\n }\n return;\n }\n\n public ngAfterViewInit() {\n const inputList = document.getElementsByTagName(\"input\");\n const selectedInput = Array.from(inputList).find((f: any) => !f.disabled);\n if (selectedInput) {\n selectedInput.focus();\n }\n \n this.recebimentoChegadaOverride.initialize();\n this.saveAndInitButton = document.getElementById('init');\n this.createdByErpDisableForm();\n \n this.formGroup.valueChanges.subscribe(() => {\n if (this.formCarregado) {\n this.hasChangeService.hasChange(this.agenda.id);\n }\n });\n }\n\n public ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n this.recebimentoChegadaOverride.remove();\n }\n\n public createdByErpDisableForm() {\n this.disableOrdersButtons = this.agenda.createdByErp;\n if (this.agenda && this.agenda.createdByErp) {\n this.createdByErp = true;\n this.formGroup.get('filial').disable();\n this.formGroup.get('produto').disable();\n this.formGroup.get('derivacao').disable();\n this.disableFornecedores();\n\n if (!!this.formGroup.get(\"transportadora\").value) {\n this.formGroup.get('transportadora').disable();\n }\n }\n }\n\n public disableFornecedores() { \n (this.formGroup.get(\"fornecedores\") as FormArray).controls.forEach(form => form.get(\"fornecedor\").disable());\n }\n\n public setHotkeys() {\n this.hotkeysService.add(\n new Hotkey(\n \"alt+shift+x\",\n () => {\n if (this.permissions.excluir) this.onDelete();\n return false;\n },\n [\"INPUT\", \"SELECT\", \"TEXTAREA\"]\n )\n );\n\n this.hotkeysService.add(\n new Hotkey(\n \"alt+shift+s\",\n () => {\n if (this.isNew() || this.permissions.editar) this.onSave();\n return false;\n },\n [\"INPUT\", \"SELECT\", \"TEXTAREA\"]\n )\n );\n\n this.hotkeysService.add(\n new Hotkey(\n \"alt+shift+c\",\n () => {\n this.onCancel();\n return false;\n },\n [\"INPUT\", \"SELECT\", \"TEXTAREA\"]\n )\n );\n }\n\n public onBlurChaveNotaFiscal() {\n if (this.verificaNotaFiscal.verificaSeNotaFiscalEstaDuplicada(this.chaveNotaFiscal, this.contratos, this.fornecedorNotasTokens)) {\n return;\n }\n\n this.removeNotaError();\n const value = this.chaveNotaFiscal;\n if (!!value) {\n this.loading = true;\n this.mensagemBuscandoNota();\n this.notaValidatorService.pesquisarDocumentoValidaNotaEmUso({\n filialId: (this.formGroup.get(\"filial\").value && this.formGroup.get(\"filial\").value.id) || null,\n chaveDocumento: value.trim()\n }).pipe(\n takeUntil(this.ngUnsubscribe),\n finalize(() => this.loading = false)\n ).subscribe((response) => this.adicionarNovaNota(response));\n } \n }\n\n public isNew() {\n return !this.formGroup.value.id;\n }\n\n public updateSuggestions(value: any) {\n if (value.fornecedor) {\n value.fornecedor.label = this.getSuggestionValue(\n [\"id\", \"codigo\", \"nome\", \"situacao\"],\n \"fornecedor\",\n value,\n this.fornecedorLookupSeparator\n );\n if (value.fornecedor.label.trim() === this.fornecedorLookupSeparator.trim()) {\n delete value.fornecedor.label;\n }\n }\n\n if (value.produto) {\n value.produto.label = this.getSuggestionValue(\n [\"id\", \"codigo\", \"comprado\", \"descricao\", \"produtoMisto\", \"situacao\", \"tipo\"],\n \"produto\",\n value,\n this.produtoLookupSeparator\n );\n if (value.produto.label.trim() === this.produtoLookupSeparator.trim()) {\n delete value.produto.label;\n }\n }\n\n if (value.agenda) {\n value.agenda.label = this.getSuggestionValue([\"id\", \"descricao\"], \"agenda\", value, this.agendaLookupSeparator);\n if (value.agenda.label.trim() === this.agendaLookupSeparator.trim()) {\n delete value.agenda.label;\n }\n }\n\n if (value.derivacao) {\n value.derivacao.label = this.getSuggestionValue(\n [\"id\", \"codigo\", \"descricao\"],\n \"derivacao\",\n value,\n this.derivacaoLookupSeparator\n );\n if (value.derivacao.label.trim() === this.derivacaoLookupSeparator.trim()) {\n delete value.derivacao.label;\n }\n }\n }\n\n public getSuggestionValue(displayFields: string[], ownerEntity: string, value: any, separator: string) {\n return displayFields\n .map(field => this.getProp(value, `${ownerEntity}.${field}`))\n .reduce((acc: any, val: any) => `${acc}${separator}${val}`);\n }\n\n public onRouteDataChange(data: any) {\n const { currencySymbol, thousandsSeparator, decimalSeparator } = data.localeConfig.number;\n\n this.localeConfig = data.localeConfig;\n this.currencyLocaleOptions = {\n align: \"left\",\n prefix: currencySymbol,\n thousands: thousandsSeparator,\n decimal: decimalSeparator,\n };\n this.permissions = data.allPermissions.recebimento;\n this.allPermissions = data.allPermissions;\n //this.validateVisualization();\n if (data.entity) {\n const canEdit = this.permissions.editar;\n if (!canEdit) this.formGroup.disable();\n const value: any = RecebimentoContrato.fromDto(data.entity);\n this.updateSuggestions(value);\n this.formGroup.patchValue(value);\n } else {\n this.formGroup.patchValue(new RecebimentoContrato());\n }\n }\n\n public onCancel() {\n this.goBack();\n }\n\n public onSendFile(filesToDelete: any, filesToCommit: any[]) {\n const observables: any[] = [];\n\n if (!this.fieldCustomization.isEmpty(filesToDelete)) {\n observables.push(this.fieldCustomization.deleteFiles(filesToDelete));\n }\n if (!this.fieldCustomization.isEmpty(filesToCommit)) {\n observables.push(this.fieldCustomization.commitFiles(filesToCommit));\n }\n\n if (!this.fieldCustomization.isEmpty(observables)) {\n return forkJoin(observables);\n } else {\n return of({});\n }\n }\n\n public onSave(start?: boolean) {\n \n if ((this.formGroup.get(\"fornecedores\") as FormArray).length <= 0) {\n this.erroFornecedores = true;\n return;\n }\n\n if (this.formGroup.invalid) {\n return this.validateAllFormFields(this.formGroup);\n }\n\n this.loading = true;\n\n if (this.isNew() || !this.enableRevalidation) {\n return this.saveAndInit(start);\n }\n\n this.erpProcessData = this.erpProcessService.builderErpProcessDataValidaNotaNoContrato(this.erpProcessData, this.formGroup);\n this.erpProcessService.changeDataErp(this.erpProcessData);\n return this.agendaService\n .checarRevalidacao(this.erpProcessData)\n .pipe(\n takeUntil(this.ngUnsubscribe),\n finalize(() => this.loading = false),\n )\n .subscribe((response: any) => {\n if (response.requerRevalidacao) {\n this.atualizaAgendaParaRejeitadoPorValidacao();\n }\n else {\n this.saveAndInit(start);\n }\n });\n }\n\n private atualizaAgendaParaRejeitadoPorValidacao() {\n this.confirmationService.confirm({\n header: this.translate.instant(\"yms.patio.agenda_revalidacao_title\"),\n message: this.translate.instant(\"yms.patio.agenda_revalidacao_message\"),\n accept: () => {\n this.hasChangeService.hasChangeSave(this.agenda.id);\n this.agenda.status = StatusAgenda.REJEITADO_POR_VALIDACAO;\n this.agenda.motorista = {id: this.erpProcessData.motoristaId};\n this.agenda.veiculo = {id: this.erpProcessData.veiculoId};\n this.agendaService\n .atualizarAgenda(this.agenda)\n .pipe(\n takeUntil(this.ngUnsubscribe),\n concatMap((_) => this.getSaveObservable()),\n finalize(() => this.loading = false),\n )\n .subscribe((_) => {\n this.successMessage();\n this.router.navigate([\"/chegada-veiculo\"], { relativeTo: this.route });\n });\n },\n reject: () => this.loading = false,\n });\n }\n\n private saveAndInit(start: boolean) {\n this.getSaveObservable()\n .pipe(\n takeUntil(this.ngUnsubscribe),\n finalize(() => this.loading = false),\n )\n .subscribe((value: any) => {\n this.formGroup.get(\"id\").setValue(value.id || null);\n this.successMessage();\n this.hasChangeService.hasChangeSave(this.agenda.id);\n if (start && this.saveAndInitButton) {\n this.saveAndInitButton.click();\n }\n });\n }\n\n private successMessage() {\n this.messageService.add({\n severity: \"success\",\n summary: this.translate.instant(\"saved_message_title\"),\n detail: this.translate.instant(\"saved_message_content\"),\n });\n }\n\n public onDelete() {\n this.confirmationService.confirm({\n message: this.translate.instant(\"yms.erp.delete_confirmation_message\"),\n header: this.translate.instant(\"yms.erp.delete_confirmation_title\"),\n accept: () =>\n this.getDeleteObservable()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(),\n });\n }\n\n public setTransportadora(value: string) {\n if (value) {\n const cnpj = value.replace('.', '').replace('/', '').replace('-', '');\n const filterQuery = `pessoa.cpfCnpj eq '${cnpj}'`;\n this.transportadoraService.list({ filterQuery, page: 0, size: 10 })\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(({ contents }) => {\n if (contents.length === 1) {\n const code = contents[0].codigo ? contents[0].codigo.toString() : '';\n const description = contents[0].descricao ? contents[0].descricao.toString() : '';\n if (!description.trim() && !code.trim()) {\n contents[0].label = this.translate.instant('yms.erp.derivacao_sem_descricao');\n } else {\n contents[0].label = `${code} - ${description}`;\n }\n this.formGroup.get('transportadora').setValue(contents[0]);\n }\n });\n }\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 public getRecebimento(agendaId: string) {\n this.loading = true;\n this.recebimentoService\n .list({\n filterQuery: `agenda.id eq '${agendaId}'`,\n size: 1,\n page: 0\n })\n .pipe(takeUntil(this.ngUnsubscribe), finalize(() => this.loading = false))\n .subscribe(({ contents }) => {\n if (!contents.length) {\n this.buscarFilial();\n return;\n }\n\n this.totalEixosContratados = contents[0].eixos || 0;\n this.totalEixosComposicao = contents[0].agenda && contents[0].agenda.veiculo\n ? contents[0].agenda.veiculo.eixos || 0 : 0;\n\n const recebimento = RecebimentoContrato.fromDto(contents[0]);\n this.formGroup.enable();\n this.formGroup.patchValue(recebimento);\n\n recebimento.fornecedores.forEach(fornecedor => {\n const form = this.getFornecedorForm(fornecedor);\n this.getFornecedores().push(form);\n\n fornecedor.contratos.forEach(contrato => {\n const contratoForm = this.getContratoForm(contrato);\n this.getContratos(form).push(contratoForm);\n\n contrato.itens.forEach(item => {\n const itemForm = this.getItemForm(item);\n this.getItensContrato(contratoForm).push(itemForm);\n });\n\n contrato.notas.forEach(nota => {\n const notaForm = this.getNotaForm(nota);\n this.getNotas(contratoForm).push(notaForm);\n });\n });\n });\n\n this.formCarregado = true;\n\n this.createdByErpDisableForm();\n });\n }\n\n public onFilialLookupRequest(value: string) {\n const filterInput = this.getFilialSearchFields()\n .filter(({ type }) => isValidFilter(type, value))\n .reduce((a, { name, type }) => {\n if (type === FieldType.Integer) {\n return { ...a, [name]: value.replace(/\\D/, \"\") };\n }\n return { ...a, [name]: value };\n }, { cnpjs: this.agenda.planta.cnpj, pagina: { limit: 10, offset: 0 } } as PesquisarFiliaisInput);\n\n this.filialService\n .listFiliais(filterInput)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => this.filialLookupSuggestions = list.filiais.map(Filial.fromDto));\n }\n\n public onFilialSearchRequest(event: any) {\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const sort: SortMeta[] = multiSortMeta;\n const sortFormatted = !!(sort || []).length && { campo: sort[0].field, ordenacao: sort[0].order > 0 ? 'Asc' : 'Desc' };\n const filterInput = this.getFilialSearchFields()\n .filter(({ name }) => filterData[name] != undefined && filterData[name] != \"\")\n .reduce((a, { name, type }) => {\n const value = filterData[name];\n if (type === FieldType.Integer) {\n return { ...a, [name]: `${value}`.replace(/\\D/, \"\") };\n }\n return { ...a, [name]: value };\n }, { cnpjs: this.agenda.planta.cnpj, pagina: { limit: rows, offset: page, listaOrdenacao: sortFormatted ? [{ ...(sortFormatted) }] : null } } as PesquisarFiliaisInput);\n\n this.filialService\n .listFiliais(filterInput)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.filialSearchGridData = list.filiais.map(Filial.fromDto);\n this.filialSearchTotalRecords = list.qtdTotalRegistros;\n });\n }\n\n public onFornecedorLookupRequest(value: string) {\n const sort = this.fornecedorLookupDisplayFields.map((field: any) => ({ field, order: 1 }));\n\n let filterQuery = this.getFornecedorSearchFields()\n .filter(({ type }) => isValidFilter(type, value))\n .map(({ name, type }) => {\n if (typeof value == \"number\") return `${name} eq ${value}`;\n else if (type == FieldType.Date) return `${name} eq '${moment(value).format(\"YYYY-MM-DD\")}'`;\n else if (type == FieldType.Time) return `${name} eq '${moment(value).format(\"HH:mm:ss\")}'`;\n else if (type == FieldType.DateTime) return `${name} eq '${moment(value).format()}'`;\n else if (type == FieldType.String) return `containing(lower(${name}), lower('${value.replace(/'/g, \"\\\\'\")}'))`;\n else return `${name} eq '${value}'`;\n })\n .join(\" or \");\n\n filterQuery = `(${filterQuery})${!!filterQuery ? ' and ' : \"\"}situacao eq 'ATIVO' and fornecedor eq true`;\n\n const displayFields = mergeUnique(this.fornecedorLookupDisplayFields, this.fornecedorAdvancedDisplayFields);\n this.pessoaService\n .list({ sort, filterQuery, displayFields })\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: this.fornecedorLookupDisplayFields\n .map(field => {\n if (field.indexOf(\".\") > 0) return this.getProp(item, field);\n return item[field];\n })\n .join(this.fornecedorLookupSeparator),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.fornecedorLookupSuggestions = list.contents;\n });\n }\n\n public onFornecedorSearchRequest(event: any) {\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const sort = multiSortMeta;\n let filterQuery = this.getFornecedorSearchFields()\n .filter(({ name }) => filterData[name] != undefined && filterData[name] != \"\")\n .map(({ name, type }) => {\n const value = filterData[name];\n\n if (typeof value == \"number\") return `${name} eq ${value}`;\n else if (type == FieldType.Date) return `${name} eq '${moment(value).format(\"YYYY-MM-DD\")}'`;\n else if (type == FieldType.Time) return `${name} eq '${moment(value).format(\"HH:mm:ss\")}'`;\n else if (type == FieldType.DateTime) return `${name} eq '${moment(value).format()}'`;\n else if (type == FieldType.Enum) return `${name} eq '${value}'`;\n else if (type == FieldType.String) return `containing(lower(${name}), lower('${value.replace(/'/g, \"\\\\'\")}'))`;\n else return `${name} eq '${value}'`;\n })\n .join(\" and \");\n\n filterQuery = filterQuery.concat(`${!!filterQuery ? ' and ' : \"\"}situacao eq 'ATIVO' and fornecedor eq true`);\n\n const displayFields = mergeUnique(this.fornecedorLookupDisplayFields, this.fornecedorAdvancedDisplayFields);\n this.pessoaService\n .list({ page, sort, filterQuery, displayFields })\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: this.fornecedorLookupDisplayFields\n .map(field => {\n if (field.indexOf(\".\") > 0) return this.getProp(item, field);\n return item[field];\n })\n .join(this.fornecedorLookupSeparator),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.fornecedorSearchGridData = list.contents;\n this.fornecedorSearchTotalRecords = list.totalElements;\n });\n }\n\n public onOrigemMercadoriaLookupRequest(value: string, fornecedorForm: FormGroup) {\n const sort = this.origemMercadoriaLookupDisplayFields.map((field: any) => ({ field, order: 1 }));\n\n let filterQuery = this.getOrigemMercadoriaFields()\n .filter(({ type }) => isValidFilter(type, value))\n .map(({ name, type }) => {\n if (typeof value == \"number\") return `${name} eq ${value}`;\n else if (type == FieldType.Date) return `${name} eq '${moment(value).format(\"YYYY-MM-DD\")}'`;\n else if (type == FieldType.Time) return `${name} eq '${moment(value).format(\"HH:mm:ss\")}'`;\n else if (type == FieldType.DateTime) return `${name} eq '${moment(value).format()}'`;\n else if (type == FieldType.String) return `containing(lower(${name}), lower('${value.replace(/'/g, \"\\\\'\")}'))`;\n else return `${name} eq '${value}'`;\n })\n .join(\" or \");\n\n filterQuery = `(${filterQuery})${!!filterQuery ? ' and ' : ''}situacao eq 'ATIVO' and pessoa.id eq '${fornecedorForm.get(\"fornecedor\").value.id}'`;\n\n const displayFields = mergeUnique(this.origemMercadoriaLookupDisplayFields, this.origemMercadoriaAdvancedDisplayFields);\n this.pessoaEnderecoService\n .list({ filterQuery, displayFields })\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: this.origemMercadoriaLookupDisplayFields\n .map(field => {\n if (field.indexOf(\".\") > 0) return this.getProp(item, field);\n return item[field];\n })\n .join(this.origemMercadoriaLookupSeparator),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.origemMercadoriaLookupSuggestions = list.contents;\n });\n }\n\n public onOrigemMercadoriaSearchRequest(event: any, fornecedorForm: FormGroup) {\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const sort = multiSortMeta;\n let filterQuery = this.getOrigemMercadoriaFields()\n .filter(({ name }) => filterData[name] != undefined && filterData[name] != \"\")\n .map(({ name, type }) => {\n const value = filterData[name];\n\n if (typeof value == \"number\") return `${name} eq ${value}`;\n else if (type == FieldType.Date) return `${name} eq '${moment(value).format(\"YYYY-MM-DD\")}'`;\n else if (type == FieldType.Time) return `${name} eq '${moment(value).format(\"HH:mm:ss\")}'`;\n else if (type == FieldType.DateTime) return `${name} eq '${moment(value).format()}'`;\n else if (type == FieldType.Enum) return `${name} eq '${value}'`;\n else if (type == FieldType.String) return `containing(lower(${name}), lower('${value.replace(/'/g, \"\\\\'\")}'))`;\n else return `${name} eq '${value}'`;\n })\n .join(\" and \");\n\n filterQuery = filterQuery.concat(`${!!filterQuery ? ' and ' : ''}situacao eq 'ATIVO' and pessoa.id eq '${fornecedorForm.get(\"fornecedor\").value.id}'`);\n\n const displayFields = mergeUnique(this.origemMercadoriaLookupDisplayFields, this.origemMercadoriaAdvancedDisplayFields);\n this.pessoaEnderecoService\n .list({ page, sort, filterQuery, displayFields })\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: this.origemMercadoriaLookupDisplayFields\n .map(field => {\n if (field.indexOf(\".\") > 0) return this.getProp(item, field);\n return item[field];\n })\n .join(this.origemMercadoriaLookupSeparator),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.origemMercadoriaSearchGridData = list.contents;\n this.origemMercadoriaSearchTotalRecords = list.totalElements;\n });\n }\n\n public getRecPagina(first: number, rows: number, sort: any) {\n const page = first / rows;\n const orderBy = sort && sort.length \n ? sort.map((s: any) => ({ campo: s.field, ordenacao: s.order === 1 ? 'Asc' : 'Desc' })) \n : [];\n return {\n offset: page,\n limit: rows,\n listaOrdenacao: orderBy\n }\n }\n\n public onProdutoLookupRequest(value: string) {\n const filial = this.formGroup.get(\"filial\").value;\n const tipoAgendamento = this.agenda.tipoAgendamento;\n\n this.produtoService\n .listProdutosRecebimento({\n pesquisa: value,\n empresaId: !!filial ? filial.empresa.id : null,\n filialId: !!filial ? filial.id : null,\n tipoAgendamentoId: !!tipoAgendamento ? tipoAgendamento.id : null\n })\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.produtoLookupSuggestions = (list.produtos || []).map((produto: any) => Produto.fromDto(produto));\n });\n }\n\n public onProdutoSearchRequest(event: any) {\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const sort: SortMeta[] = multiSortMeta;\n const sortFormatted = !!(sort || []).length && { campo: sort[0].field, ordenacao: sort[0].order > 0 ? 'Asc' : 'Desc' };\n const filterInput = this.getProdutoSearchFields()\n .filter(({ name }) => filterData[name] != undefined && filterData[name] != \"\")\n .reduce((a, { name, type }) => {\n const value = filterData[name];\n if (type === FieldType.Integer) {\n return { ...a, [name]: `${value}`.replace(/\\D/, \"\") };\n }\n return { ...a, [name]: value };\n }, { pagina: { limit: rows, offset: page, listaOrdenacao: sortFormatted ? [{ ...(sortFormatted) }] : null } } as ProdutoRecebimentoParams);\n\n const filial = this.formGroup.get(\"filial\").value;\n const tipoAgendamento = this.agenda.tipoAgendamento;\n\n this.produtoService\n .listProdutosRecebimento({\n ...filterInput,\n empresaId: !!filial ? filial.empresa.id : null,\n filialId: !!filial ? filial.id : null,\n tipoAgendamentoId: !!tipoAgendamento ? tipoAgendamento.id : null\n })\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((res: any) => {\n this.produtoSearchTotalRecords = res.qtdTotalRegistros;\n this.produtoSearchGridData = res.produtos.map(Produto.fromDto);\n });\n }\n\n public onDerivacaoLookupRequest(value: string) {\n const sort = this.derivacaoLookupDisplayFields.map((field: any) => ({ field, order: 1 }));\n\n const filterQuery = this.getDerivacaoSearchFields()\n .filter(({ type }) => isValidFilter(type, value))\n .map(({ name, type }) => {\n if (typeof value == \"number\") return `${name} eq ${value}`;\n else if (type == FieldType.Date) return `${name} eq '${moment(value).format(\"YYYY-MM-DD\")}'`;\n else if (type == FieldType.Time) return `${name} eq '${moment(value).format(\"HH:mm:ss\")}'`;\n else if (type == FieldType.DateTime) return `${name} eq '${moment(value).format()}'`;\n else if (type == FieldType.String) return `containing(lower(${name}), lower('${value.replace(/'/g, \"\\\\'\")}'))`;\n else return `${name} eq '${value}'`;\n })\n .join(\" or \");\n\n const displayFields = mergeUnique(this.derivacaoLookupDisplayFields, this.derivacaoAdvancedDisplayFields);\n this.derivacaoService\n .list({ sort, filterQuery, displayFields })\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: this.derivacaoLookupDisplayFields\n .map(field => {\n if (field.indexOf(\".\") > 0) return this.getProp(item, field);\n return item[field];\n })\n .join(this.derivacaoLookupSeparator),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.derivacaoLookupSuggestions = list.contents;\n });\n }\n\n public onDerivacaoSearchRequest(event: any) {\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const sort = multiSortMeta;\n const filterQuery = this.getDerivacaoSearchFields()\n .filter(({ name }) => filterData[name] != undefined && filterData[name] != \"\")\n .map(({ name, type }) => {\n const value = filterData[name];\n\n if (typeof value == \"number\") return `${name} eq ${value}`;\n else if (type == FieldType.Date) return `${name} eq '${moment(value).format(\"YYYY-MM-DD\")}'`;\n else if (type == FieldType.Time) return `${name} eq '${moment(value).format(\"HH:mm:ss\")}'`;\n else if (type == FieldType.DateTime) return `${name} eq '${moment(value).format()}'`;\n else if (type == FieldType.Enum) return `${name} eq '${value}'`;\n else if (type == FieldType.String) return `containing(lower(${name}), lower('${value.replace(/'/g, \"\\\\'\")}'))`;\n else return `${name} eq '${value}'`;\n })\n .join(\" and \");\n\n const displayFields = mergeUnique(this.derivacaoLookupDisplayFields, this.derivacaoAdvancedDisplayFields);\n this.derivacaoService\n .list({ page, sort, filterQuery, displayFields })\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: this.derivacaoLookupDisplayFields\n .map(field => {\n if (field.indexOf(\".\") > 0) return this.getProp(item, field);\n return item[field];\n })\n .join(this.derivacaoLookupSeparator),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.derivacaoSearchGridData = list.contents;\n this.derivacaoSearchTotalRecords = list.totalElements;\n });\n }\n\n public onTransportadoraLookupRequest(value: string) {\n onLookupRequest(this.transportadoraSearchFields, this.transportadoraLookupDisplayFields, this.transportadoraAdvancedDisplayFields, this.transportadoraLookupSeparator, this.transportadoraService, value)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => {\n this.transportadoraLookupSuggestions = list.contents;\n });\n }\n\n public onTransportadoraSearchRequest(event: any) {\n\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const sort = multiSortMeta;\n const filterQuery = this.getTransportadoraSearchFields()\n .filter(({ name }) => filterData[name] != undefined && filterData[name] != \"\")\n .map(({ name, type }) => {\n const value = filterData[name];\n\n if (typeof value == \"number\") return `${name} eq ${value}`;\n else if (type == FieldType.Date) return `${name} eq '${moment(value).format(\"YYYY-MM-DD\")}'`;\n else if (type == FieldType.Time) return `${name} eq '${moment(value).format(\"HH:mm:ss\")}'`;\n else if (type == FieldType.DateTime) return `${name} eq '${moment(value).format()}'`;\n else if (type == FieldType.Enum) return `${name} eq '${value}'`;\n else if (type == FieldType.String) return `containing(lower(${name}), lower('${value.replace(/'/g, \"\\\\'\")}'))`;\n else return `${name} eq '${value}'`;\n })\n .join(\" and \");\n\n const displayFields = mergeUnique(this.transportadoraLookupDisplayFields, this.transportadoraAdvancedDisplayFields);\n this.transportadoraService\n .list({ page, sort, filterQuery, displayFields })\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: this.transportadoraLookupDisplayFields\n .map(field => {\n if (field.indexOf(\".\") > 0) {\n return this.getProp(item, field);\n }\n return item[field];\n })\n .join(this.transportadoraLookupSeparator),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.transportadoraSearchGridData = list.contents;\n this.transportadoraSearchTotalRecords = list.totalElements;\n });\n }\n\n public onTransgeniaLookupRequest(value: any) {\n onLookupRequest(this.getTransgeniaSearchFields(), this.transgeniaLookupDisplayFields, this.transgeniaAdvancedDisplayFields, this.transgeniaLookupSeparator, this.transgeniaService, value,\n `empresa.id eq '${this.formGroup.get('filial').value.empresa.id}' and tipoParticipante eq '${this.getTipoTransgenia()}'`)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((list: any) => this.transgeniaLookupSuggestions = list.contents);\n }\n\n public onTransgeniaSearchRequest(event: any) {\n const { first, rows, multiSortMeta, filterData } = event;\n const page = first / rows;\n const sort = multiSortMeta;\n const filterQuery = this.getTransgeniaSearchFields()\n .filter(({ name }) => filterData[name] != undefined && filterData[name] != \"\")\n .map(({ name, type }) => {\n const value = filterData[name];\n if (typeof value == \"number\") return `${name} eq ${value}`;\n else if (type == FieldType.Enum) return `${name} eq '${value}'`;\n else if (type == FieldType.String) return `containing(lower(${name}), lower('${value.replace(/'/g, \"\\\\'\")}'))`;\n else return `${name} eq '${value}'`;\n })\n .join(\" and \");\n\n const displayFields = mergeUnique(this.transgeniaLookupDisplayFields, this.transgeniaAdvancedDisplayFields);\n this.transgeniaService\n .list({ page, sort, filterQuery, displayFields })\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(\n map((list: any) => ({\n ...list,\n contents: list.contents.map((item: any) => ({\n ...item,\n label: this.transgeniaLookupDisplayFields\n .map(field => {\n if (field.indexOf(\".\") > 0) {\n return this.getProp(item, field);\n }\n return item[field];\n })\n .join(this.transgeniaLookupSeparator),\n })),\n }))\n )\n .subscribe((list: any) => {\n this.transgeniaSearchGridData = list.contents;\n this.transgeniaSearchTotalRecords = list.totalElements;\n });\n }\n\n public addFornecedor(data: any = {}) {\n this.erroFornecedores = false;\n const form = this.getFornecedorForm(data);\n this.configureFornecedor(form);\n this.getFornecedores().push(form);\n return form;\n }\n\n public removeFornecedor(control: FormGroup) {\n this.confirmationService.confirm({\n header: this.translate.instant(\"yms.erp.remove_fornecedor_header\"),\n message: this.translate.instant(\"yms.erp.remove_fornecedor_message\"),\n accept: () => {\n const index = this.getFornecedores().controls.indexOf(control);\n this.getFornecedores().removeAt(index);\n }\n });\n }\n\n public getFornecedores() {\n return this.formGroup.get(\"fornecedores\") as FormArray;\n }\n\n public addContrato(fornecedorForm: FormGroup) {\n this.dialogService\n .open(ContratoFormComponent, {\n ...dialogConfig,\n header: 'Adicionar Contrato',\n data: {\n agenda: this.agenda,\n filial: this.formGroup.get(\"filial\").value,\n produto: this.formGroup.get(\"produto\").value,\n fornecedor: fornecedorForm.get(\"fornecedor\").value,\n contratos: fornecedorForm.get(\"contratos\").value,\n }\n })\n .onClose\n .pipe(takeUntil(this.ngUnsubscribe), filter(value => !!value))\n .subscribe(({ contrato }: any) => this.onContratoSaved(contrato, fornecedorForm));\n }\n\n public removerContrato(fornecedorForm: FormGroup, contratoForm: FormGroup) {\n this.confirmationService.confirm({\n header: this.translate.instant(\"yms.erp.remove_contrato_header\"),\n message: this.translate.instant(\"yms.erp.remove_contrato_message\"),\n accept: () => {\n const index = (fornecedorForm.get(\"contratos\") as FormArray).controls.indexOf(contratoForm);\n (fornecedorForm.get(\"contratos\") as FormArray).removeAt(index);\n }\n });\n }\n\n public getContratos(fornecedorForm: FormGroup) {\n this.contratos = fornecedorForm.get(\"contratos\")\n return this.contratos as FormArray;\n }\n\n public addNota(formGroup: FormGroup) {\n this.dialogService.open(NotaFormComponent, {\n header: this.translate.instant(\"yms.erp.adicionar_nota\"),\n ...dialogConfig,\n data: {\n fornecedor: formGroup.get(\"fornecedor\").value,\n produto: this.formGroup.get(\"produto\").value,\n filial: this.formGroup.get(\"filial\").value,\n fornecedorNotasTokens: this.fornecedorNotasTokens,\n contratos: this.contratos,\n }\n })\n .onClose\n .pipe(takeUntil(this.ngUnsubscribe), filter(value => !!value))\n .subscribe(value => this.onNotaSaved(value, formGroup));\n }\n\n public removerNota(fornecedorForm: FormGroup, contratoForm: FormGroup, notaForm: FormGroup) {\n this.confirmationService.confirm({\n header: this.translate.instant(\"yms.erp.remove_nota_header\"),\n message: this.translate.instant(\"yms.erp.remove_nota_message\"),\n accept: () => {\n const contratoId = contratoForm[\"value\"][\"contrato\"][\"id\"];\n const index = this.getNotasFromContratos(fornecedorForm, contratoId).controls.indexOf(notaForm);\n this.getNotasFromContratos(fornecedorForm, contratoId).removeAt(index);\n\n const nota = notaForm[\"value\"];\n this.fornecedorNotasTokens.push({\n id: nota.chaveNotaFiscal,\n label: nota.numeroNotaFiscal\n });\n this.fornecedorNotas.push({\n chaveNotaFiscal: nota.chaveNotaFiscal,\n serieNotaFiscal: nota.serieNotaFiscal,\n serieLegalNotaFiscal: nota.serieLegalNotaFiscal,\n numeroNotaFiscal: nota.numeroNotaFiscal,\n });\n }\n });\n }\n\n public getNotas(contratoForm: FormGroup) {\n return contratoForm[\"controls\"][\"notas\"] as FormArray;\n }\n\n public getItensContrato(contratoForm: FormGroup) {\n return contratoForm.get(\"itens\") as FormArray;\n }\n\n public showButtons() {\n if (!this.agenda) return false;\n return [\n StatusAgenda.AGENDADO,\n StatusAgenda.AGUARDANDO_CONFIRMACAO,\n StatusAgenda.AGUARDANDO_CONFIRMACAO_SOLICITANTE,\n StatusAgenda.REJEITADO_POR_VALIDACAO\n ].includes(this.agenda.status as StatusAgenda);\n }\n\n public disableAdicionarNota(): boolean {\n if (this.contratoSelecionado === null) {\n return true;\n }\n return false;\n }\n\n private getTipoTransgenia = () => {\n if ((this.formGroup.get(\"fornecedores\") as FormArray).length <= 0) {\n return TipoParticipanteTransgenia.NAO_INFORMADO;\n }\n const fornecedor = ((this.formGroup.get(\"fornecedores\") as FormArray).at(0) as FormGroup).getRawValue().fornecedor;\n return fornecedor ? (fornecedor.tipoParticipante || TipoParticipanteTransgenia.NAO_INFORMADO) : TipoParticipanteTransgenia.NAO_INFORMADO;\n };\n\n private getNotaForm(data: any = {}) {\n return this.formBuilder.group({\n chaveNotaFiscal: [data.chaveNotaFiscal],\n serieNotaFiscal: [data.serieNotaFiscal],\n serieLegalNotaFiscal: [data.serieLegalNotaFiscal],\n numeroNotaFiscal: [data.numeroNotaFiscal],\n });\n }\n\n private getContratoForm(data: any = {}) {\n return this.formBuilder.group({\n contrato: [data.contrato, Validators.required],\n itens: this.formBuilder.array([]),\n notas: this.formBuilder.array([])\n });\n }\n\n private getItemForm(data: any = {}) {\n return this.formBuilder.group({\n item: [data.item, Validators.required],\n quantidade: [data.quantidade]\n });\n }\n\n private getFornecedorForm(data: any = {}) {\n return this.formBuilder.group({\n fornecedor: [data.fornecedor, Validators.required],\n origemMercadoria: [data.origemMercadoria, Validators.compose([Validators.required])],\n tipoNotaFiscal: [data.tipoNotaFiscal || TipoNotaFiscal.EMPRESA_JURIDICA, Validators.compose([])],\n contratos: this.formBuilder.array([]),\n });\n }\n\n private getFormGroup() {\n return this.formBuilder.group({\n id: [{ value: undefined, disabled: true }, Validators.compose([])],\n filial: [undefined, Validators.required],\n produto: [{ value: undefined, disabled: true }, Validators.compose([Validators.required])],\n derivacao: [{ value: undefined, disabled: true }, Validators.compose([])],\n transportadora: [{ value: undefined, disabled: false }, Validators.compose([])],\n agenda: [{ value: this.agenda, disabled: false }, Validators.compose([Validators.required])],\n transgenia: [{ value: undefined, disabled: true }, Validators.compose([])],\n fornecedores: this.formBuilder.array([]),\n createdBy: [{ value: undefined, disabled: true }, Validators.compose([])],\n createdDate: [{ value: undefined, disabled: true }, Validators.compose([])],\n lastModifiedBy: [{ value: undefined, disabled: true }, Validators.compose([])],\n lastModifiedDate: [{ value: undefined, disabled: true }, Validators.compose([])],\n custom: [],\n });\n }\n\n private getFornecedorByContrato(contrato: ContratoCompraDto, fornecedorForm: FormGroup) {\n this.pessoaService.list({ size: 1, page: 0, filterQuery: `id eq '${contrato.pessoa.id}'` })\n .pipe(\n takeUntil(this.ngUnsubscribe),\n map(({ contents }) => (contents || []).length && contents[0]),\n filter(value => !!value)\n )\n .subscribe(pessoa => {\n fornecedorForm.get(\"fornecedor\").setValue(Pessoa.fromDto(pessoa));\n });\n }\n\n private getProdutoByContrato(contrato: ContratoCompraDto) {\n this.contratoCompraService.listItens(contrato.id, { size: 1, page: 0, displayFields: ['sku.id'] })\n .pipe(\n takeUntil(this.ngUnsubscribe),\n mergeMap(({ contents }) => {\n if (contents.length === 1) return this.produtoService.list({ size: 1, page: 0, filterQuery: `id eq '${contents[0].sku.id}'` })\n .pipe(\n takeUntil(this.ngUnsubscribe),\n map(({ contents }) => (contents || []).length && contents[0]),\n );\n return empty();\n }),\n filter(value => !!value)\n )\n .subscribe(produto => {\n this.formGroup.get(\"produto\").setValue(Produto.fromDto(produto));\n this.formGroup.get(\"produto\").disable();\n });\n }\n\n private onContratoSaved(contrato: any, fornecedorForm: FormGroup) {\n if (!this.formGroup.get(\"produto\").value) {\n this.getProdutoByContrato(contrato.contrato);\n }\n\n if (!fornecedorForm.get(\"fornecedor\").value) {\n this.getFornecedorByContrato(contrato.contrato, fornecedorForm);\n }\n\n const contratoForm = this.getContratoForm(contrato);\n (contrato.itens || []).forEach((item: any) => (contratoForm.get(\"itens\") as FormArray).push(this.getItemForm(item)));\n\n this.getContratos(fornecedorForm).push(contratoForm);\n }\n\n private mensagemContratoNaoSelecionado() {\n this.addMessage(\"error\", \"Contrato não selecionado\", \"Nenhum contrato foi selecionado!\");\n }\n\n private onNotaSaved(value: any, fornecedorForm: FormGroup) {\n\n if (this.contratoSelecionado === null) {\n this.mensagemContratoNaoSelecionado();\n return;\n }\n\n if (!value.addFornecedor) {\n const notasForm = this.getNotasFromContratos(fornecedorForm, this.contratoSelecionado.id);\n if (notasForm !== null) {\n notasForm.push(this.getNotaForm(value));\n }\n return;\n }\n\n const existsFornecedor = (this.formGroup.get(\"fornecedores\") as FormArray).controls.find((form) => (form.value.fornecedor || { id: undefined }).id === value.fornecedor.id);\n const fornecedorOfGroup = this.validarCnpjFornecedor((fornecedorForm.value.fornecedor || { cpfCnpj: undefined }).cpfCnpj);\n const { infoNota } = value;\n const notaForm = this.getNotaForm({ \n chaveNotaFiscal: infoNota.chave,\n serieNotaFiscal: infoNota.serie,\n serieLegalNotaFiscal: infoNota.serieLegal,\n numeroNotaFiscal: infoNota.numero,\n });\n\n if (!!existsFornecedor) {\n const notasForm = this.getNotasFromContratos(existsFornecedor, this.contratoSelecionado.id);\n notasForm.push(notaForm);\n } else if (!fornecedorForm.get(\"fornecedor\").value) {\n fornecedorForm.get(\"fornecedor\").setValue(Pessoa.fromDto(value.fornecedor));\n fornecedorForm.get(\"origemMercadoria\").setValue(PessoaEndereco.fromDto(value.origemMercadoria));\n const notasForm = this.getNotasFromContratos(fornecedorForm, this.contratoSelecionado.id);\n notasForm.push(notaForm);\n } else if (fornecedorOfGroup) {\n this.confirmationService.confirm({\n header: 'Fornecedor do mesmo grupo já cadastrado',\n message: 'Um fornecedor do mesmo grupo parece já ter sido selecionado, deseja vincular a nota ao mesmo fornecedor?',\n accept: () => {\n const notasForm = this.getNotasFromContratos(fornecedorOfGroup, this.contratoSelecionado.id);\n notasForm.push(notaForm);\n },\n reject: () => {\n const fornecedor = this.addFornecedor({ fornecedor: Pessoa.fromDto(value.fornecedor), origemMercadoria: PessoaEndereco.fromDto(value.origemMercadoria) });\n const notasForm = this.getNotasFromContratos(fornecedor, this.contratoSelecionado.id);\n notasForm.push(notaForm);\n }\n });\n } else {\n const fornecedor = this.addFornecedor({ fornecedor: Pessoa.fromDto(value.fornecedor), origemMercadoria: PessoaEndereco.fromDto(value.origemMercadoria) });\n const notasForm = this.getNotasFromContratos(fornecedor, this.contratoSelecionado.id);\n notasForm.push(notaForm);\n }\n }\n\n public getNotasFromContratos(fornecedorForm: AbstractControl, contratoId: any) {\n let contratosFormSelecionado = null;\n const contratosForm = fornecedorForm[\"controls\"][\"contratos\"][\"controls\"];\n\n for (let contratoForm of contratosForm) {\n if (contratoForm[\"controls\"][\"contrato\"][\"value\"].id === contratoId) {\n contratosFormSelecionado = contratoForm[\"controls\"][\"notas\"];\n }\n }\n return contratosFormSelecionado as FormArray;\n }\n\n public addFornecedorNotasTokenEmContrato(fornecedorForm: FormGroup, token: IToken) {\n if (this.contratoSelecionado === null) {\n this.mensagemContratoNaoSelecionado();\n return;\n }\n\n const notas = this.fornecedorNotas.filter(fornecedorNota => fornecedorNota.chaveNotaFiscal === token.id);\n const notasForm = this.getNotasFromContratos(fornecedorForm, this.contratoSelecionado.id);\n if (notasForm !== null && notas[0] !== null) {\n notasForm.push(this.getNotaForm(notas[0]));\n }\n\n this.removeFornecedorNotasTokenDoContrato(token);\n }\n\n public removeFornecedorNotasTokenDoContrato(token: IToken) {\n this.fornecedorNotasTokens.splice(this.fornecedorNotasTokens.indexOf(token), 1);\n this.fornecedorNotas = this.fornecedorNotas.filter(fornecedorNota => fornecedorNota.chaveNotaFiscal !== token.id);\n }\n\n private adicionarNovaNota(response: PesquisarDocumentoResponse) {\n const value = (response.documentos || []).length ? response.documentos[0] : undefined;\n if (!value) return;\n\n const itemProduto = value.itens[0] || { produto: undefined, derivacao: undefined } as any;\n const produto = Produto.fromDto(itemProduto.produto);\n\n if (!this.formGroup.get(\"produto\").value && !!itemProduto.produto) {\n this.formGroup.get(\"produto\").setValue(produto);\n this.formGroup.get(\"derivacao\").setValue(Derivacao.fromDto(itemProduto.derivacao));\n } else if (!!itemProduto.produto && !this.validateProduto(produto)) {\n this.addNotaError();\n return;\n }\n\n const fornecedor = Pessoa.fromDto(value.fornecedor);\n const origemMercadoria = PessoaEndereco.fromDto(value.origemMercadoria);\n\n const fornecedorForm = this.getFornecedores().controls.find(({ value }) => value.fornecedor.id === fornecedor.id) as FormGroup;\n const fornecedorOfGroup = this.validarCnpjFornecedor(fornecedor.cpfCnpj);\n\n if (fornecedorOfGroup) {\n this.confirmationService.confirm({\n header: 'Fornecedor do mesmo grupo já cadastrado',\n message: 'Um fornecedor do mesmo grupo parece já ter sido selecionado, deseja vincular a nota ao mesmo fornecedor?',\n accept: () => {\n this.addFornecedorNotasToken(value);\n },\n reject: () => {\n if (!fornecedorForm) {\n this.addFornecedor({ fornecedor, origemMercadoria });\n }\n this.addFornecedorNotasToken(value);\n }\n });\n\n } else if (!fornecedorForm) {\n this.addFornecedor({ fornecedor, origemMercadoria });\n this.addFornecedorNotasToken(value);\n }\n }\n\n private addFornecedorNotasToken(value: any) {\n this.fornecedorNotasTokens.push({ id: this.chaveNotaFiscal, label: value.numero });\n\n this.fornecedorNotas.push({\n chaveNotaFiscal: this.chaveNotaFiscal,\n serieNotaFiscal: value.serie,\n serieLegalNotaFiscal: value.serieLegal,\n numeroNotaFiscal: value.numero,\n });\n\n this.chaveNotaFiscal = undefined;\n this.loading = false;\n }\n\n private removeNotaError() {\n this.erroChaveNota = false;\n }\n\n private addNotaError() {\n this.erroChaveNota = true;\n }\n\n private validateProduto(produto: Produto) {\n const { value } = this.formGroup.get(\"produto\");\n if (value.id !== produto.id) {\n return false;\n }\n return true;\n }\n\n private getFilialSearchFields() {\n return [\n new FormField({\n name: \"codigo\",\n label: this.translate.instant(\"yms.erp.filial_codigo\"),\n type: FieldType.Integer\n }),\n new FormField({\n name: \"nome\",\n label: this.translate.instant(\"yms.erp.filial_nome\"),\n type: FieldType.String\n }),\n ];\n }\n\n private getFornecedorSearchFields() {\n return [\n new FormField({\n name: \"codigo\",\n label: this.translate.instant(\"yms.erp.pessoa_codigo\"),\n type: FieldType.Integer,\n }),\n new FormField({\n name: \"nome\",\n label: this.translate.instant(\"yms.erp.pessoa_nome\"),\n type: FieldType.String,\n }),\n new FormField({\n name: \"cpfCnpj\",\n label: this.translate.instant(\"yms.erp.pessoa_cpfCnpj\"),\n type: FieldType.String,\n }),\n ];\n }\n\n private getFornecedorSearchGridFields() {\n return [\n new FormField({\n name: \"codigo\",\n label: this.translate.instant(\"yms.erp.pessoa_codigo\"),\n type: FieldType.Integer,\n }),\n new FormField({\n name: \"nome\",\n label: this.translate.instant(\"yms.erp.pessoa_nome\"),\n type: FieldType.String,\n }),\n new FormField({\n name: \"cpfCnpj\",\n label: this.translate.instant(\"yms.erp.pessoa_cpfCnpj\"),\n type: FieldType.String,\n }),\n ];\n }\n\n private getOrigemMercadoriaFields() {\n return [\n new FormField({\n name: \"codigo\",\n label: this.translate.instant(\"yms.erp.pessoa_endereco_codigo\"),\n type: FieldType.Integer\n }),\n new FormField({\n name: \"cep\",\n label: this.translate.instant(\"yms.erp.pessoa_endereco_cep\"),\n type: FieldType.String\n }),\n new FormField({\n name: \"endereco\",\n label: this.translate.instant(\"yms.erp.pessoa_endereco_endereco\"),\n type: FieldType.String\n }),\n new FormField({\n name: \"numero\",\n label: this.translate.instant(\"yms.erp.pessoa_endereco_numero\"),\n type: FieldType.String\n }),\n new FormField({\n name: \"bairro\",\n label: this.translate.instant(\"yms.erp.pessoa_endereco_bairro\"),\n type: FieldType.String\n }),\n ];\n }\n\n private getOrigemMercadoriaGridFields() {\n return [\n new FormField({\n name: \"codigo\",\n label: this.translate.instant(\"yms.erp.pessoa_endereco_codigo\"),\n type: FieldType.Integer\n }),\n new FormField({\n name: \"cep\",\n label: this.translate.instant(\"yms.erp.pessoa_endereco_cep\"),\n type: FieldType.String\n }),\n new FormField({\n name: \"endereco\",\n label: this.translate.instant(\"yms.erp.pessoa_endereco_endereco\"),\n type: FieldType.String\n }),\n new FormField({\n name: \"numero\",\n label: this.translate.instant(\"yms.erp.pessoa_endereco_numero\"),\n type: FieldType.String\n }),\n new FormField({\n name: \"bairro\",\n label: this.translate.instant(\"yms.erp.pessoa_endereco_bairro\"),\n type: FieldType.String\n }),\n new FormField({\n name: \"empresa.descricao\",\n label: this.translate.instant(\"yms.erp.empresa\"),\n type: FieldType.String\n })\n ];\n }\n\n private getProdutoSearchFields() {\n return [\n new FormField({\n name: \"codigo\",\n label: this.translate.instant(\"yms.erp.produto_codigo\"),\n type: FieldType.String,\n }),\n new FormField({\n name: \"descricao\",\n label: this.translate.instant(\"yms.erp.produto_descricao\"),\n type: FieldType.String,\n })\n ];\n }\n\n private getProdutoSearchGridFields() {\n return [\n new FormField({\n name: \"codigo\",\n label: this.translate.instant(\"yms.erp.produto_codigo\"),\n type: FieldType.String,\n }),\n new FormField({\n name: \"descricao\",\n label: this.translate.instant(\"yms.erp.produto_descricao\"),\n type: FieldType.String,\n }),\n new FormField({\n name: \"descricaoComplementar\",\n label: this.translate.instant(\"yms.erp.produto_descricao_complementar\"),\n type: FieldType.String,\n }),\n ];\n }\n\n private getAgendaSearchFields() {\n return [\n new FormField({\n name: \"descricao\",\n label: this.translate.instant(\"yms.erp.agenda_descricao\"),\n type: FieldType.String,\n }),\n ];\n }\n\n private getAgendaSearchGridFields() {\n return [\n new FormField({\n name: \"descricao\",\n label: this.translate.instant(\"yms.erp.agenda_descricao\"),\n type: FieldType.String,\n }),\n ];\n }\n\n private getDerivacaoSearchFields() {\n return [\n new FormField({\n name: \"codigo\",\n label: this.translate.instant(\"yms.erp.derivacao_codigo\"),\n type: FieldType.String,\n }),\n new FormField({\n name: \"descricao\",\n label: this.translate.instant(\"yms.erp.derivacao_descricao\"),\n type: FieldType.String,\n }),\n ];\n }\n\n private getDerivacaoSearchGridFields() {\n return [\n new FormField({\n name: \"codigo\",\n label: this.translate.instant(\"yms.erp.derivacao_codigo\"),\n type: FieldType.String,\n }),\n new FormField({\n name: \"descricao\",\n label: this.translate.instant(\"yms.erp.derivacao_descricao\"),\n type: FieldType.String,\n }),\n ];\n }\n\n private getTransportadoraSearchFields() {\n return [\n new FormField({\n name: \"codigo\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.transportadora_codigo\")\n }),\n new FormField({\n name: \"pessoa.nome\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.transportadora_descricao\")\n }),\n new FormField({\n name: \"pessoa.cpfCnpj\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.transportadora_cnpj\")\n })\n ];\n }\n\n private getTransportadoraSearchGridFields() {\n return [\n new FormField({\n name: \"codigo\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.transportadora_codigo\")\n }),\n new FormField({\n name: \"pessoa.nome\",\n type: FieldType.Integer,\n label: this.translate.instant(\"yms.erp.pessoa_nome\")\n }),\n new FormField({\n name: \"pessoa.cpfCnpj\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.transportadora_cnpj\")\n })\n ];\n }\n\n private getTransgeniaSearchFields() {\n return [\n new FormField({\n name: \"codigo\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.transgenia_codigo\")\n }),\n new FormField({\n name: \"descricao\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.transgenia_descricao\")\n }),\n ];\n }\n\n private getTransgeniaSearchGridFields() {\n return [\n new FormField({\n name: \"codigo\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.transgenia_codigo\")\n }),\n new FormField({\n name: \"descricao\",\n type: FieldType.String,\n label: this.translate.instant(\"yms.erp.transgenia_descricao\")\n }),\n ];\n }\n\n private goBack() {\n const previousRoute = \"../\";\n this.router.navigate([previousRoute], { relativeTo: this.route.parent });\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 else if (control instanceof FormArray) control.controls.forEach(form => this.validateAllFormFields(form as FormGroup));\n });\n\n this.focusService.focusFirstInvalidInput();\n }\n\n private getSaveObservable() {\n const value = this.formGroup.getRawValue();\n value.agenda = this.agenda;\n const recebimentoDto = RecebimentoContrato.toDto(value);\n\n let observable;\n\n if (this.isNew() && !value.id) {\n observable = this.recebimentoService.insert(recebimentoDto);\n } else {\n const id = value.id;\n observable = this.recebimentoService.update(id, recebimentoDto);\n }\n\n return observable;\n }\n\n private getDeleteObservable() {\n return this.recebimentoService.delete('').pipe(\n tap(() => {\n this.addMessage(\"success\", \"yms.erp.deleted_message_title\", \"yms.erp.deleted_message_content\");\n this.goBack();\n })\n );\n }\n\n private validateVisualization() {\n if (!userCanVisualize(this.formGroup, this.allPermissions)) {\n this.addMessage(\"error\", \"yms.erp.cannot_visualize_form_summary\", \"yms.erp.cannot_visualize_form_detail\");\n }\n }\n\n private addMessage(severity: string, summary: string, detail: string) {\n this.messageService.add({\n severity,\n summary: this.translate.instant(summary),\n detail: this.translate.instant(detail),\n });\n }\n\n private onFilialValueChange = (filial: Filial) => {\n this.disableOrdersButtons = !filial;\n if (!filial && this.isNew()) {\n this.formGroup.get(\"produto\").setValue(undefined);\n this.formGroup.get(\"produto\").disable();\n this.formGroup.get(\"transgenia\").setValue(undefined);\n this.formGroup.get(\"transgenia\").disable();\n return;\n }\n\n this.formGroup.get(\"produto\").enable();\n this.formGroup.get(\"transgenia\").enable();\n }\n\n private buscarFilial() {\n const planta = this.agenda.planta || { cnpj: [] };\n if (planta.cnpj.length !== 1) {\n this.formCarregado = true;\n return;\n }\n\n this.filialService\n .list({\n page: 0,\n size: 1,\n filterQuery: `pessoa.cpfCnpj eq '${planta.cnpj[0]}'`,\n displayFields: ['*', 'empresa.nome']\n })\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(({ contents }) => {\n if (contents.length === 1) {\n this.formGroup.get(\"filial\").setValue(Filial.fromDto(contents[0]));\n }\n this.formCarregado = true;\n });\n }\n\n private configureFornecedor(fornecedorForm: FormGroup) {\n fornecedorForm.get(\"fornecedor\")\n .valueChanges\n .pipe(\n takeUntil(this.ngUnsubscribe),\n debounceTime(500),\n tap(value => {\n if (value) {\n if (this.ehPessoaJuridica(value)) {\n fornecedorForm.get(\"tipoNotaFiscal\").setValue(TipoNotaFiscal.EMPRESA_JURIDICA);\n fornecedorForm.get(\"tipoNotaFiscal\").enable();\n return;\n } else {\n fornecedorForm.get(\"tipoNotaFiscal\").setValue(TipoNotaFiscal.PRODUTOR_RURAL);\n fornecedorForm.get(\"tipoNotaFiscal\").disable();\n return;\n }\n }\n fornecedorForm.get(\"tipoNotaFiscal\").setValue(TipoNotaFiscal.EMPRESA_JURIDICA);\n fornecedorForm.get(\"tipoNotaFiscal\").disable();\n }),\n filter(value => {\n if (!value) {\n\n this.formGroup.get(\"transgenia\").setValue(null);\n this.formGroup.get(\"transgenia\").disable();\n return false;\n }\n return true;\n }),\n mergeMap(value => this.pessoaEnderecoService.list({ size: 10, page: 0, filterQuery: `situacao eq 'ATIVO' and pessoa.id eq '${value.id}'` })\n .pipe(takeUntil(this.ngUnsubscribe))\n )\n )\n .subscribe(({ contents }) => {\n this.formGroup.get(\"transgenia\").enable();\n\n if (contents.length === 1) {\n fornecedorForm.get(\"origemMercadoria\").setValue(PessoaEndereco.fromDto(contents[0]));\n }\n else {\n fornecedorForm.get(\"origemMercadoria\").setValue(undefined);\n fornecedorForm.get(\"origemMercadoria\").enable();\n }\n });\n }\n\n private ehPessoaJuridica(pessoa: Pessoa) {\n const cpfCnpj = (pessoa.cpfCnpj || \"\").replace(/\\D+/g, \"\");\n return cpfCnpj.length > 11;\n }\n\n private mensagemBuscandoNota() {\n this.messageService.add({\n severity: 'info',\n summary: 'Buscando dados da nota',\n detail: 'Aguarde, buscando dados da nota',\n life: 5000\n });\n }\n\n private validarCnpjFornecedor(value: string) {\n if (!this.ehPessoaJuridica({ cpfCnpj: value } as Pessoa)) return false;\n const fornecedor = (this.formGroup.get(\"fornecedores\") as FormArray).controls.find((form) => {\n return ((form.value.fornecedor || { cpfCnpj: '' }).cpfCnpj as string).substring(0, 8) === value.substring(0, 8)\n });\n return fornecedor;\n }\n}\n\nexport interface ContratoItem {\n item: ContratoCompraItem;\n quantidade: number;\n}\n","import { Component, Input, AfterViewInit } from \"@angular/core\";\nimport { RecebimentoContratoService } from \"../../core/entities/recebimento-contrato/recebimento.service\";\nimport { Subject, throwError, of } from \"rxjs\";\nimport { takeUntil, switchMap, finalize } from \"rxjs/operators\";\nimport { RecebimentoContratoDto } from \"../../core/entities/recebimento-contrato/recebimento-dto\";\nimport { RecebimentoContrato } from \"../../core/entities/recebimento-contrato/recebimento\";\n\n@Component({\n selector: \"recebimento-info\",\n template: `\n <div *sLoadingState=\"loading\" style=\"padding: 20px;\">\n <div class=\"detail-pane\" *ngIf=\"agenda\">\n <div class=\"detail-span\">\n <span class=\"title\">\n {{ \"yms.erp.recebimento_filial\" | translate }}\n </span>\n <span class=\"data\">\n {{ recebimento?.filial?.codigo }} - {{ recebimento?.filial?.nome }}\n </span>\n </div>\n <div class=\"detail-span\">\n <span class=\"title\">\n {{ \"yms.erp.recebimento_produto\" | translate }}\n </span>\n <span class=\"data\">{{ recebimento?.produto?.descricao }}</span>\n </div>\n <div class=\"detail-span\">\n <span class=\"title\">\n {{ \"yms.erp.recebimento_derivacao\" | translate }}\n </span>\n <span class=\"data\">{{ recebimento?.derivacao?.descricao }}</span>\n </div>\n </div>\n <div *ngFor=\"let fornecedor of recebimento?.fornecedores\">\n <div class=\"separator\"></div>\n <h3>Fornecedor - {{ fornecedor?.fornecedor?.nome }}</h3>\n <div class=\"detail-pane\">\n <div class=\"detail-span\">\n <span class=\"title\">\n {{ \"yms.erp.recebimento_origem_mercadoria\" | translate }}\n </span>\n <span class=\"data\">\n {{ fornecedor?.origemMercadoria?.codigo }} - {{ fornecedor?.origemMercadoria?.cep }}\n </span>\n </div>\n </div>\n\n <div>\n <h4>Contratos</h4>\n <p-accordion>\n <p-accordionTab *ngFor=\"let contrato of fornecedor.contratos\">\n <p-header>\n Contrato {{ contrato?.contrato?.numero }}, Filial {{ contrato?.contrato?.filial?.codigo }}\n </p-header>\n\n <div class=\"detail-pane\" *ngFor=\"let item of contrato?.itens\">\n <div class=\"detail-span\">\n <span class=\"title\">Sequência</span>\n <span class=\"data\">{{ item?.item?.sequencia }}</span>\n </div>\n </div>\n\n <div *ngFor=\"let nota of contrato.notas\">\n <div class=\"detail-pane\">\n <div class=\"detail-span\">\n <span class=\"title\">Chave nota fiscal</span>\n <span class=\"data\">{{ nota?.chaveNotaFiscal }}</span>\n </div>\n <div class=\"detail-span\">\n <span class=\"title\">Serie nota fiscal</span>\n <span class=\"data\">{{ nota?.serieNotaFiscal }}</span>\n </div>\n <div class=\"detail-span\">\n <span class=\"title\">Serie legal nota fiscal</span>\n <span class=\"data\">{{ nota?.serieLegalNotaFiscal }}</span>\n </div>\n <div class=\"detail-span\">\n <span class=\"title\">Número nota fiscal</span>\n <span class=\"data\">{{ nota?.numeroNotaFiscal }}</span>\n </div>\n </div>\n <hr />\n </div>\n </p-accordionTab>\n </p-accordion>\n </div>\n </div>\n </div>\n `,\n styleUrls: [\"./recebimento-info.component.scss\"],\n})\nexport class RecebimentoInfoComponent implements AfterViewInit {\n @Input() agenda: any;\n\n recebimento: RecebimentoContrato;\n loading = true;\n\n private readonly unsubscribe$: Subject<void>;\n constructor(private recebimentoService: RecebimentoContratoService) {\n this.unsubscribe$ = new Subject();\n }\n\n ngAfterViewInit() {\n this.recebimentoService\n .list({\n filterQuery: `agenda.id eq '${this.agenda.id}'`,\n page: 0,\n size: 1,\n })\n .pipe(\n takeUntil(this.unsubscribe$),\n switchMap(({ contents }) => {\n if (!contents.length)\n return throwError(\"Recebimento não encontrado.\");\n\n return of(contents[0]);\n }),\n finalize(() => (this.loading = false))\n )\n .subscribe((recebimento: RecebimentoContratoDto) => {\n this.recebimento = RecebimentoContrato.fromDto(recebimento);\n });\n }\n}\n","import { VerificaNotafiscal } from './core/verifica-nota-fiscal/verificaNotaFiscal';\nimport { OrdemCompraFormComponent } from './recebimento-ordem-compra/ordem-compra-form/ordem-compra-form.component';\nimport { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { ButtonModule, ControlErrorsModule, CustomFieldsModule, DynamicFormModule, EmptyStateModule, LoadingStateModule, LocaleModule, NumberInputModule, TokenListModule } from \"@seniorsistemas/angular-components\";\nimport { PermissionsModule } from \"@seniorsistemas/platform-components\";\nimport { IntegrationDispatcher, IntegrationModule } from \"@seniorsistemas/yms-routines\";\nimport { HighlightModule } from \"ngx-highlightjs\";\nimport { AccordionModule } from \"primeng/accordion\";\nimport { DynamicDialogModule } from \"primeng/components/dynamicdialog/dynamicdialog\";\nimport { ConfirmDialogModule } from \"primeng/confirmdialog\";\nimport { DialogModule } from \"primeng/dialog\";\nimport { DropdownModule } from \"primeng/dropdown\";\nimport { InputTextModule } from \"primeng/inputtext\";\nimport { PanelModule } from \"primeng/panel\";\nimport { TabViewModule } from \"primeng/primeng\";\nimport { TableModule } from \"primeng/table\";\nimport { FieldCustomizationService } from \"../utils/field-customization.service\";\nimport { FocusService } from \"../utils/focus.service\";\nimport { NotaFormModule } from \"./components/nota-form/nota-form.module\";\nimport { CoreModule } from \"./core/core.module\";\nimport { HotkeyModule } from \"angular2-hotkeys\";\nimport { DevolucaoChegadaVeiculoOverride } from \"./devolucao/devolucao-chegada-veiculo.override\";\nimport { DevolucaoFormComponent } from \"./devolucao/form/devolucao-form.component\";\nimport { DevolucaoInfoComponent } from \"./devolucao/info/info/devolucao-info.component\";\nimport { ExpedicaoChegadaVeiculoOverride } from \"./expedicao/expedicao-chegada-veiculo.override\";\nimport { ExpedicaoFormComponent } from \"./expedicao/form/expedicao-form.component\";\nimport { ExpedicaoInfoComponent } from \"./expedicao/info/expedicao-info.component\";\nimport { FormComponent } from \"./form/form.component\";\nimport { InfoComponent } from \"./info/info.component\";\nimport { LogIntegracaoComponent } from \"./log-integracao/log-integracao.component\";\nimport { ProcessoAvulsoFormComponent } from \"./processo-avulso/form/processo-avulso-form.component\";\nimport { ProcessoAvulsoInfoComponent } from \"./processo-avulso/info/processo-avulso-info.component\";\nimport { ProcessoAvulsoChegadaVeiculoOverride } from \"./processo-avulso/processo-avulso-chegada-veiculo.override\";\nimport { RecebimentoOrdemCompraFormComponent } from \"./recebimento-ordem-compra/form/recebimento-ordem-compra-form.component\";\nimport { RecebimentoOrdemCompraInfoComponent } from \"./recebimento-ordem-compra/info/recebimento-ordem-compra-info.component\";\nimport { RecebimentoOrdemCompraChegadaVeiculoOverride } from \"./recebimento-ordem-compra/recebimento-ordem-compra-chegada-veiculo.override\";\nimport { ContratoFormComponent } from \"./recebimento/contrato-form/contrato-form.component\";\nimport { RecebimentoFormComponent } from \"./recebimento/form/recebimento-form.component\";\nimport { RecebimentoInfoComponent } from \"./recebimento/info/recebimento-info.component\";\nimport { RecebimentoChegadaVeiculoOverride } from \"./recebimento/recebimento-chegada-veiculo.override\";\n\nimport jsonx from 'highlight.js/lib/languages/json';\nimport xmlx from 'highlight.js/lib/languages/xml'\n\nexport function highlightLanguages() {\n return [\n { name: 'json', func: jsonx },\n { name: 'xml', func: xmlx }\n ];\n}\n\n@NgModule({\n declarations: [ \n FormComponent, \n RecebimentoFormComponent, \n ExpedicaoFormComponent,\n InfoComponent,\n ExpedicaoInfoComponent,\n RecebimentoInfoComponent,\n DevolucaoFormComponent,\n RecebimentoOrdemCompraFormComponent,\n RecebimentoOrdemCompraInfoComponent,\n DevolucaoInfoComponent,\n ContratoFormComponent,\n OrdemCompraFormComponent,\n ProcessoAvulsoFormComponent,\n ProcessoAvulsoInfoComponent,\n LogIntegracaoComponent\n ],\n entryComponents: [ FormComponent, InfoComponent, ContratoFormComponent, OrdemCompraFormComponent, LogIntegracaoComponent ],\n exports: [ FormComponent, InfoComponent ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TranslateModule,\n CustomFieldsModule,\n ControlErrorsModule,\n DialogModule,\n EmptyStateModule,\n DynamicFormModule,\n TokenListModule,\n PanelModule,\n AccordionModule,\n InputTextModule,\n DropdownModule,\n ButtonModule,\n LoadingStateModule,\n NumberInputModule,\n ConfirmDialogModule,\n LocaleModule,\n IntegrationModule,\n CoreModule,\n PermissionsModule,\n DynamicDialogModule,\n NotaFormModule,\n AccordionModule,\n TableModule,\n TabViewModule,\n LoadingStateModule,\n HighlightModule.forRoot({\n languages: highlightLanguages\n }),\n HotkeyModule.forRoot(),\n ],\n providers: [ \n FieldCustomizationService, \n FocusService, \n RecebimentoChegadaVeiculoOverride, \n ExpedicaoChegadaVeiculoOverride, \n DevolucaoChegadaVeiculoOverride,\n RecebimentoOrdemCompraChegadaVeiculoOverride, \n ProcessoAvulsoChegadaVeiculoOverride,\n VerificaNotafiscal\n ]\n})\nexport class ErpSeniorModule { \n constructor(private dispatcher: IntegrationDispatcher) {\n this.dispatcher\n .dispatch(FormComponent)\n .dispatch(InfoComponent)\n .dispatch(LogIntegracaoComponent)\n }\n}"],"names":["tslib_1.__decorate","tslib_1.__param","MessageService","moment","ConfirmationService"],"mappings":"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"}
|