@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,"sources":["../../node_modules/tslib/tslib.es6.js","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/enums/status-agenda.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/tipo-nota-fiscal.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/enums/tipo-participante-transgenia.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/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"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__param","paramIndex","decorator","__metadata","metadataKey","metadataValue","metadata","__values","o","Symbol","iterator","m","next","value","done","TypeError","__read","e","ar","push","error","__spread","concat","IntegrationWebSocket","_client","_cookieService","_service","tokenObject","JSON","parse","get","token","access_token","tenant","username","split","_subscriptionUrl","_unsubscribe$","Subject","connect","callback","_this","connectObservable","pipe","takeUntil","subscribe","state","dispose","complete","Service","messageService","getListQueryParams","listParams","_a","page","_b","size","_c","sort","_d","filterQuery","_e","displayFields","params","HttpParams","append","String","map","order","field","join","defaultCatch","catchError","err","summary","status","detail","message","statusText","add","severity","throwError","ControladorCancelasService","http","_super","url","tslib_1.__extends","listGateByArea","areaId","openGate","ip","post","closeGate","Injectable","HttpClient","MessageService","ControladorCancelaDescritor","ControleCircuito","header","name","ControleOperacao","ControladorCancelaComponent","service","translate","permissionsService","successState","canOpenGate","canCloseGate","unsubscribe$","gates$","ngOnInit","sequenciaCircuito","area","id","res","contents","permissions","Open","Close","toPromise","ngOnDestroy","model","gate","label","instant","visible","command","loading","finalize","undefined","_","tslib_1.__decorate","Input","Component","selector","template","animations","trigger","style","backgroundColor","opacity","transition","animate","TranslateService","PermissionsService","CancelasModule","dispatcher","dispatch","NgModule","imports","CommonModule","TableModule","TranslateModule","MessageModule","ButtonModule","LoadingStateModule","PermissionsModule","forChild","actions","uri","declarations","entryComponents","exports","providers","IntegrationDispatcher","BalancasService","urlIntegration","urlBalanca","getWeightScaleByArea","fallbackCall","balanca","peso","code","weight","getWeightScaleByCode","VisualizarBalancaDescritor","VisualizarBalancaComponent","client","cookieService","websocket","weightScales$","BehaviorSubject","weightScaleValues","Map","forEach","set","body","data","payload","index","findIndex","weightScale","find","StompService","CookieService","CustomStompConfig","getCookieObject","getCookie","socketProvider","SockJS","configureConfig","cname","cookie","name_1","ca","decodeURIComponent","document","charAt","substring","indexOf","headers","content-type","Authorization","Access-Control-Allow-Origin","heartbeat_in","heartbeat_out","reconnect_delay","debug","StompConfig","BalancaModule","provide","useClass","CamerasService","patioUrl","getCamerasByArea","takeSnapshot","camera","saveSnapshotInCircuit","ViewImageComponent","dialogRef","dialogConfig","imageUrl","save","execucaoCircuito","cameraIp","execucaoCircuitoId","alvoId","imagemUrl","close","DynamicDialogRef","DynamicDialogConfig","SnapshotDescritor","SnapshotComponent","dialogService","loadingAll","cameras$","splice","open","description","width","height","contentStyle","overflow","DialogService","CamerasModule","DynamicDialogModule","LprService","getLprByArea","stream","licencePlate","getLprByCode","LprModule","LogsService","listLogByCircuit","LogDescritor","CircuitoFinalizado","LogsComponent","logsService","columns","onGridChange","event","rows","first","updateGrid","totalElements","logsData","totalRecords","LogsModule","integrationDispatcher","TooltipModule","PortariasService","agendas","ultimaPlacaLida","getPortarias","plantaId","executarEntrada","lobbyId","placa","plate","PortariasDescritor","ControleUnificado","PortariasComponent","selectPlantService","portariaService","planta","getPlant","portarias","SelectPlantService","AgendasComponent","router","veiculo","portaria","selected","chegadaSimplificada","navigate","queryParams","navigateTo","chegada","getColumns","Router","ConfirmacaoComponent","continue","EntradaComponent","stompService","response","lprs","lpr","locked","readPlaque","entranceLpr","placaNaoEncontrada","openAgendas","display","flex-direction","styleClass","overflow-y","max-height","flex","onClose","filter","toUpperCase","PortariasModule","FormsModule","RouterModule","InputSwitchModule","InputTextModule","HttpClientModule","SelectPlantModule","EntityService","entityUrl","actionsUrl","bind","getBodyParams","bodyParams","offset","orderBy","displayfields","list","insert","entity","update","put","delete","listCustomFilter","action","ERP_ENVIRONMENT","InjectionToken","AgendaService","environment","project","domain","_agendaUrl","atualizarAgenda","agenda","retornaModelosValidacao","tipoAgendamentoId","checarRevalidacao","erpProcessData","listExternalAgenda","tslib_1.__param","Inject","RecebimentoContratoService","_baseUrl","registrarChegadaVeiculoComRecebimento","insertContratoRecebimento","recebimentoId","contratoRecebimento","insertContratoRecebimentoItem","contratoRecebimentoId","contratoRecebimentoItem","RecebimentoChegadaVeiculoOverride","override","agendaService","recebimentoService","RECEBIMENTO_KEY","initialize","addOverride","functionToOverride","remove","disposeOverride","mergeMap","recebimento","circuito","sequenciaInicial","sequencia","vagaInicial","vaga","ChegadaVeiculoOverride","ExpedicaoService","registrarChegadaVeiculoComExpedicao","ExpedicaoChegadaVeiculoOverride","expedicaoService","EXPEDICAO_KEY","expedicao","IntegrationService","baseUrl","getProcessConfigurationErp","idTipoAgendamento","ERP_SENIOR_HEADER","FormDescritor","Agendamento","ChegadaVeiculo","icon","FormComponent","integrationCallback","integrationService","onAgendamentoSaved","tipoAgendamento","empty","erpProcessConfiguration","tipoProcessoErpAtual","ngOnChanges","IntegrationEventsCallback","HEADER","InfoDescritor","InfoComponent","ngUnsubscribe","FieldCustomizationService","commitFiles","objects","deleteFiles","getFiles","formGroup","fieldCustomization","custom","filesToCommit","filesToDelete","toDelete","toInsert","isEmpty","files","keys","version","fileName","objectId","objects_1","file","entityName","object","isArray","entries","VerificaNotafiscal","verificaSeNotaFiscalEstaDuplicada","chaveNotaFiscal","contratos","fornecedorNotasTokens","notaFicalDuplicadas","nota","contrato","notas","OrdemCompraService","listOrdensCompra","numberTypes","FieldType","Integer","Double","numberPattern","mergeUnique","array","otherArray","item","includes","isValidFilter","type","getTypeInformation","isValidValue","typeExists","Time","Date","DateTime","match","userCanVisualize","allPermissions","controls","errors","required","visualizar","getProp","obj","path","reduce","result","prop","margin-bottom","moment","_moment","getLookupLabel","fields","separator","translation","trim","StatusAgenda","onLookupRequest","searchFields","lookupDisplayFields","advancedDisplayFields","lookupSeparator","customFilter","format","replace","onSearchRequest","multiSortMeta","filterData","Enum","Lookup","Empresa","fromDto","empresaDto","originEntity","createdDate","toDate","lastModifiedDate","toDto","empresa","dto","Pessoa","pessoaDto","pessoa","PessoaJuridica","pessoaJuridicaDto","pessoaJuridica","Pais","paisDto","pais","Estado","estadoDto","estado","Cidade","cidadeDto","cidade","PessoaEndereco","pessoaEnderecoDto","pessoaEndereco","Filial","filialDto","endereco","filial","OrdemCompra","ordemCompraDto","ordemCompra","OrdemCompraFormComponent","ordemCompraService","fb","ordemCompraLookupDisplayFields","ordemCompraAdvancedDisplayFields","ordemCompraLookupSeparator","fornecedor","ordensCompra","ordens","val","getForm","ordemCompraSearchFields","getOrdemCompraFields","ordemCompraSearchGridFields","getOrdemCompraGridFields","onOrdemCompraLookupRequest","numero","empresaId","pessoaId","filialId","ordensCompraSelecionados","pagina","limit","listaOrdenacao","campo","ordenacao","ordemCompraLookupSuggestions","onOrdemCompraSearchRequest","a","dataEmissao","ordemCompraSearchGridData","ordemCompraSearchTotalRecords","getRecPagina","validateAllFormFields","control","FormControl","markAsDirty","onlySelf","FormGroup","FormArray","form","valid","group","Validators","FormField","FormBuilder","FocusService","focusFirstInvalidInput","firstField","from","getElementsByClassName","f","nodeName","firstInputId","getAttribute","firstInvalidInput","getElementById","focus","nestedInput","getNestedInput","firstElementChild","element","NotaValidatorService","pesquisarDocumento","pesquisarDocumentoValidaNotaEmUso","pesquisarDocumentoGenerico","executarAuditoria","NotaFormComponent","notaValidatorService","confirmationService","verificaNotaFiscal","validateNotaFiscal","documentos","itens","produto","addErrorIfProdutoIsDifferent","notaFiscal","chave","serie","serieLegal","confirmAndAddNovoFornecedor","origemMercadoria","setValue","desabilitaCamposNotaFiscal","closeAndReturnNota","camposPreenchidosValidation","erroMultiplosCampos","serieNotaFiscal","serieLegalNotaFiscal","numeroNotaFiscal","validators","removeErrorChaveNota","habilitaCamposNotaFiscal","onBlurNotaFiscal","chaveDocumento","infoNota","confirm","acceptLabel","rejectLabel","accept","reject","setErrors","errorChaveNota","addFornecedor","enable","disable","ConfirmationService","NotaFormModule","ReactiveFormsModule","ControlErrorsModule","ConfirmDialogModule","AgendaModule","CidadeService","CidadeModule","ContratoCompraItemService","pesquisarItensContratoCompra","ContratoCompraItemModule","ContratoCompraService","listContratosCompra","getItens","contratoCompraId","updateItens","contratoCompraItemDto","listItens","insertItens","deleteItens","ContratoCompraModule","DerivacaoService","DerivacaoModule","EmpresaService","EmpresaModule","EstadoService","EstadoModule","FamiliaProdutoService","FamiliaProdutoModule","FilialService","listFiliais","filters","FilialModule","PaisService","PaisModule","PedidoVendaItemService","queriesUrl","pesquisarItensPedidoVenda","pesquisa","PedidoVendaItemModule","PedidoVendaService","pedidoVendaId","pesquisarPedidosVenda","pedidoVendaItemDto","PedidoVendaModule","PessoaEnderecoService","PessoaEnderecoModule","PessoaFisicaService","PessoaFisicaModule","PessoaJuridicaService","PessoaJuridicaModule","PessoaService","PessoaModule","ProdutoService","listProdutosRecebimento","listProdutos","ProdutoModule","HasChangeService","messageSource","change","current","asObservable","hasChange","idAgenda","hasChangeSave","ErpProcessService","changeData","getProcessData","changeDataErp","newMessage","chaveIntegracao","produtoId","transgeniaId","transportadoraId","changeDataVeiculo","veiculoId","eixos","ErpProcessData","changeDataMotorista","motoristaId","changeDataAgenda","agendaId","builderErpProcessData","getFieldFormGroup","fornecedores","listarIdsFornecedores","getRawValue","fieldName","listaFornecedores","ErpFormConfigService","enableRevalidation","RecebimentoContratoModule","RoyaltyService","RoyaltyModule","SafraService","SafraModule","TransportadoraService","TransportadoraModule","UnidadeMedidaService","UnidadeMedidaModule","ExpedicaoModule","DevolucaoService","registrarChegadaVeiculoComDevolucao","DevolucaoModule","OrdemCompraModule","RecebimentoOrdemCompraService","registrarChegadaVeiculoRecebimentoOrdemCompra","RecebimentoOrdemCompraModule","TransgeniaService","TransgeniaModule","ProcessoAvulsoService","registrarChegada","processo","ProcessoAvulsoModule","LogIntegracaoService","LogIntegracaoModule","CoreModule","DevolucaoChegadaVeiculoOverride","devolucaoService","DEVOLUCAO_KEY","devolucao","Agenda","agendaDto","UnidadeMedida","unidadeMedidaDto","unidadeMedida","Royalty","royaltyDto","royalty","FamiliaProduto","familiaProdutoDto","familiaProduto","Produto","produtoMisto","comprado","produtoDto","unidadeMedidaAgroG5","familia","Derivacao","derivacaoDto","derivacao","Transportadora","transportadoraDto","transportadora","Devolucao","devolucaoDto","TipoNotaFiscal","TipoParticipanteTransgenia","DevolucaoFormComponent","filialService","pessoaService","produtoService","derivacaoService","origemMercadoriaService","transportadoraService","route","erpProcessService","erpFormConfigService","hasChangeService","filialLookupDisplayFields","filialAdvancedDisplayFields","filialLookupSeparator","fornecedorLookupDisplayFields","fornecedorAdvancedDisplayFields","fornecedorLookupSeparator","produtoLookupDisplayFields","produtoAdvancedDisplayFields","produtoLookupSeparator","derivacaoLookupDisplayFields","derivacaoAdvancedDisplayFields","derivacaoLookupSeparator","origemMercadoriaLookupDisplayFields","origemMercadoriaAdvancedDisplayFields","origemMercadoriaLookupSeparator","transportadoraLookupDisplayFields","transportadoraAdvancedDisplayFields","transportadoraLookupSeparator","disableButtonSave","totalEixosContratados","totalEixosComposicao","getFormGroup","ngAfterViewInit","saveAndInitButton","valueChanges","formCarregado","filialSearchFields","getFilialSearchFields","filialSearchGridFields","getFilialSearchGridFields","fornecedorSearchFields","getFornecedorSearchFields","produtoSearchFields","getProdutoSearchFields","derivacaoSearchFields","getDerivacaoSearchFields","origemMercadoriaSearchFields","getOrigemMercadoriaSearchFields","transportadoraSearchFields","getTransportadoraSearchFields","transportadoraSearchGridFields","getTransportadoraSearchGridFields","getDevolucao","getEmpresaFilial","filialValueChanges","checkValuesChanges","externalTenant","setTransportadora","cnpj","createdByErpDisableForm","createdByErp","formControlUpdated","formControlDependent","getFilterQuery","variables","querySize","isChangeValidators","clearFormControlDependent","setValidators","nullValidator","toString","patchValue","onFilialLookupRequest","filterInput","cnpjs","filialLookupSuggestions","filiais","onFilialSearchRequest","sortFormatted","filialSearchGridData","filialSearchTotalRecords","qtdTotalRegistros","onFornecedorLookupRequest","fornecedorLookupSuggestions","onFornecedorSearchRequest","fornecedorSearchGridData","fornecedorSearchTotalRecords","onProdutoLookupRequest","situacao","produtoLookupSuggestions","produtos","onProdutoSearchRequest","produtoSearchTotalRecords","produtoSearchGridData","onDerivacaoLookupRequest","derivacaoLookupSuggestions","onDerivacaoSearchRequest","derivacaoSearchGridData","derivacaoSearchTotalRecords","onOrigemMercadoriaLookupRequest","origemMercadoriaLookupSuggestions","onOrigemMercadoriaSearchRequest","origemMercadoriaSearchGridData","origemMercadoriaSearchTotalRecords","onTransportadoraLookupRequest","transportadoraLookupSuggestions","onTransportadoraSearchRequest","transportadoraSearchGridData","transportadoraSearchTotalRecords","codigo","descricao","onSave","start","invalid","isNew","saveAndInit","requerRevalidacao","atualizaAgendaParaRejeitadoPorValidacao","REJEITADO_POR_VALIDACAO","motorista","concatMap","getSaveObservable","successMessage","relativeTo","click","addMessage","disabled","numeroNotaFiscalProdutor","serieNotaFiscalProdutor","ActivatedRoute","DevolucaoInfoComponent","switchMap","of","Expedicao","expedicaoDto","clienteFaturamento","clienteRemessa","ExpedicaoFormComponent","formBuilder","hotkeysService","focusService","pedidoVendaService","pedidoVendaItemService","localeConfig","currencyLocaleOptions","mainPanelCollapsed","visibleDialog","clienteFaturamentoLookupDisplayFields","clienteFaturamentoAdvancedDisplayFields","clienteFaturamentoLookupSeparator","clienteRemessaLookupDisplayFields","clienteRemessaAdvancedDisplayFields","clienteRemessaLookupSeparator","pedidoVendaLookupDisplayFields","pedidoVendaAdvancedDisplayFields","pedidoVendaLookupSeparator","pedidoVendaItemLookupDisplayFields","pedidoVendaItemAdvancedDisplayFields","pedidoVendaItemLookupSeparator","agendaLookupDisplayFields","agendaAdvancedDisplayFields","agendaLookupSeparator","disableOrdersButtons","ordersValid","pedidoVendaForm","getPedidoVendaForm","itemFormGroup","getOrdemVendaItemForm","onRouteDataChange","getExpedicao","buscarFilial","clienteFaturamentoSearchFields","getClienteSearchFields","clienteFaturamentoSearchGridFields","getClienteSearchGridFields","clienteRemessaSearchFields","clienteRemessaSearchGridFields","pedidoVendaSearchFields","getPedidoVendaSearchFields","pedidoVendaSearchGridFields","getPedidoVendaSearchGridFields","pedidoVendaItemSearchFields","getPedidoVendaItemSearchFields","pedidoVendaItemSearchGridFields","getPedidoVendaItemSearchGridFields","agendaSearchFields","getAgendaSearchFields","agendaSearchGridFields","getAgendaSearchGridFields","setHotkeys","setPedidosValueChanges","revalidacaoTransportadora","verificaSeTemAlteracao","transp","abrirPedidoVenda","pedidoVenda","buttons","getElementsByTagName","excluirPedidoVenda","removeAt","abrirPedidoVendaItem","pedido","pedidoVendaItem","quantidade","pedidoAtual","excluirPedidoVendaItem","pedidosLength","selecionarPedidoVenda","getOrdemVendaForm","buscarClienteAFaturar","selecionarPedidoVendaItem","selecionarPedidoVendaItemAutomaticamente","getPedidos","buildTokens","sku","inputList","selectedInput","Hotkey","editar","onCancel","updateSuggestions","getSuggestionValue","ownerEntity","acc","number","currencySymbol","thousandsSeparator","decimalSeparator","align","prefix","thousands","decimal","goBack","onSendFile","observables","forkJoin","setValuesPedidoBiodisel","numeroPedidoCliente","itemPedidoCliente","pedidos","getValuesPedidoBiodisel","pedidosInterno","atualizaExpedicao","onSubscribe","itemForm","onClienteFaturamentoLookupRequest","clienteFaturamentoLookupSuggestions","onClienteFaturamentoSearchRequest","clienteFaturamentoSearchGridData","clienteFaturamentoSearchTotalRecords","onClienteRemessaLookupRequest","clienteRemessaLookupSuggestions","onClienteRemessaSearchRequest","clienteRemessaSearchGridData","clienteRemessaSearchTotalRecords","onFilialSelect","onPedidoVendaLookupRequest","pedidosIdsQuery","pedidoVendaLookupSuggestions","onPedidoVendaSearchRequest","pedidosSelecionados","filialPedido","pedidoVendaSearchGridData","pedidoVendaSearchTotalRecords","onPedidoVendaItemLookupRequest","pedidoId","isNaN","pedidoVendaItemLookupSuggestions","onPedidoVendaItemSearchRequest","pedidoVendaItemSearchGridData","pedidoVendaItemSearchTotalRecords","getAutomaticItensOrder","onAgendaLookupRequest","agendaLookupSuggestions","onAgendaSearchRequest","agendaSearchGridData","agendaSearchTotalRecords","compose","numeroAgendamentoCliente","createdBy","lastModifiedBy","clientSuggestions$","clientSearch$","searchGridFields","suggestionsObservable","searchObservable","emptyMessage","sm","md","lg","xl","gridData","dataKey","lookupDisplayField","searchTitle","searchEmptyTitle","filterLabel","filterTitle","clearLabel","cancelLabel","selectLabel","tooltip","getDerivacaoSearchGridFields","parent","observable","validateVisualization","ViewChild","TemplateRef","HotkeysService","ExpedicaoInfoComponent","LogIntegracaoDescritor","LogIntegracaoComponent","logIntegracaoService","currentListParams","serverError","xmlFormatter","require","confs","gridColumns","getGridColumns","logIntegracao","onSearch","resetGrid","showLoader","selection","getPayload","stringify","table","reset","Table","ProcessoAvulso","processoAvulsoDto","processoAvulso","ProcessoAvulsoChegadaVeiculoOverride","processoAvulsoService","AVULSO_KEY","avulso","ProcessoAvulsoFormComponent","processoAvulsoOverride","getProcessoAvulso","fil","ProcessoAvulsoInfoComponent","Safra","safraDto","competenciaInicial","competenciaFinal","safra","RecebimentoOrdemCompra","recebimentoOrdemCompraDto","recebimentoOrdemCompra","RecebimentoOrdemCompraChegadaVeiculoOverride","recebimentoOrdemCompraService","RECEBIMENTO_ORDEMCOMPRA_KEY","RecebimentoOrdemCompraFormComponent","safraService","safraLookupDisplayFields","safraAdvancedDisplayFields","safraLookupSeparator","erroChaveNota","erroFornecedores","notasTokens","fornecedorNotas","ordemCompraSelecionado","onFilialValueChange","changeFormGroupValue","onFornecedorChange","onChangeRevalidation","configureForm","getRecebimentoOrdemCompra","safraSearchFields","getSafraSearchFields","safraSearchGridFields","getSafraSearchGridFields","nome","dtoConverter","debounceTime","onBlurChaveNotaFiscal","removeNotaError","mensagemBuscandoNota","adicionarNovaNota","isAny","formControl","getFornecedorForm","getFornecedores","ordemCompraForm","getOrdemCompraForm","getOrdensCompra","notaForm","getNotaForm","getNotas","fornecedorForm","addOrdemCompra","onOrdemCompraSaved","onSafraLookupRequest","safraLookupSuggestions","onSafraSearchRequest","safraSearchGridData","safraSearchTotalRecords","removeFornecedor","addNota","onNotaSaved","removerNota","ordemCompraId","getNotasFromOrdens","showButtons","AGENDADO","AGUARDANDO_CONFIRMACAO","AGUARDANDO_CONFIRMACAO_SOLICITANTE","disableAdicionarNota","removerOrdemCompra","ordensCompraForm","getFornecedorByOrdemCompra","ordensFormSelecionado","ordensCompraForm_1","tslib_1.__values","ordensCompraForm_1_1","addFornecedorNotasTokenEmOrdemCompra","fornecedorNota","notasForm","removeFornecedorNotasTokenDaOrdemCompra","mensagemOrdemCompraNaoSelecionado","existsFornecedor","disableFields","values","addFornecedorNotasToken","addNotaError","life","_i","RecebimentoOrdemCompraInfoComponent","ContratoCompra","contratoCompraDto","dataInicioVigencia","dataFimVigencia","ContratoCompraItem","contratoCompra","dataCompetencia","contratoCompraItem","ContratoFormComponent","contratoCompraService","contratoCompraItemService","contratoCompraLookupDisplayFields","contratoCompraAdvancedDisplayFields","contratoCompraLookupSeparator","contratoCompraItensLookupDisplayFields","contratoCompraItensAdvancedDisplayFields","contratoCompraItensLookupSeparator","contratoCompraSearchFields","getContratoCompraFields","contratoCompraSearchGridFields","getContratoCompraGridFields","contratoCompraItensSearchFields","getContratoCompraItensFields","contratoCompraItensSearchGridFields","getContratoCompraItensGridFields","onContratoCompraLookupRequest","contratosSelecionados","contratoCompraLookupSuggestions","onContratoCompraSearchRequest","contratoCompraSearchGridData","contratoCompraSearchTotalRecords","onContratoCompraItensLookupRequest","contratoId","contratoCompraItensLookupSuggestions","onContratoCompraItensSearchRequest","contratoCompraItensSearchGridData","contratoCompraItensSearchTotalRecords","addItemContrato","getItensForm","getItemForm","Transgenia","transgeniaDto","transgenia","roylty","RecebimentoContrato","recebimentoDto","RecebimentoFormComponent","pessoaEnderecoService","recebimentoChegadaOverride","transgeniaService","quantidadeSelecionada","transgeniaLookupDisplayFields","transgeniaAdvancedDisplayFields","transgeniaLookupSeparator","tiposNota","EMPRESA_JURIDICA","PRODUTOR_RURAL","contratoSelecionado","getTipoTransgenia","NAO_INFORMADO","at","tipoParticipante","getRecebimento","fornecedorSearchGridFields","getFornecedorSearchGridFields","getOrigemMercadoriaFields","origemMercadoriaSearchGridFields","getOrigemMercadoriaGridFields","produtoSearchGridFields","getProdutoSearchGridFields","derivacaoSearchGridFields","transgeniaSearchFields","getTransgeniaSearchFields","transgeniaSearchGridFields","getTransgeniaSearchGridFields","disableFornecedores","excluir","onDelete","getDeleteObservable","contratoForm","getContratoForm","getContratos","getItensContrato","onTransgeniaLookupRequest","transgeniaLookupSuggestions","onTransgeniaSearchRequest","transgeniaSearchGridData","transgeniaSearchTotalRecords","configureFornecedor","addContrato","onContratoSaved","removerContrato","getNotasFromContratos","tipoNotaFiscal","getFornecedorByContrato","getProdutoByContrato","mensagemContratoNaoSelecionado","fornecedorOfGroup","validarCnpjFornecedor","cpfCnpj","contratosFormSelecionado","contratosForm","contratosForm_1","contratosForm_1_1","addFornecedorNotasTokenEmContrato","removeFornecedorNotasTokenDoContrato","itemProduto","validateProduto","tap","ehPessoaJuridica","RecebimentoInfoComponent","highlightLanguages","func","jsonx","xmlx","ErpSeniorModule","CustomFieldsModule","DialogModule","EmptyStateModule","DynamicFormModule","TokenListModule","PanelModule","AccordionModule","DropdownModule","NumberInputModule","LocaleModule","IntegrationModule","TabViewModule","HighlightModule","forRoot","languages","HotkeyModule"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","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","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 * 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 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 { 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","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}"]}
|
|
1
|
+
{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","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/enums/status-agenda.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/tipo-nota-fiscal.ts","ng://@seniorsistemas/yms-integration/src/erp-senior/core/enums/tipo-participante-transgenia.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/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"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__param","paramIndex","decorator","__metadata","metadataKey","metadataValue","metadata","__values","o","Symbol","iterator","m","next","value","done","TypeError","__read","e","ar","push","error","__spread","concat","IntegrationWebSocket","_client","_cookieService","_service","tokenObject","JSON","parse","get","token","access_token","tenant","username","split","_subscriptionUrl","_unsubscribe$","Subject","connect","callback","_this","connectObservable","pipe","takeUntil","subscribe","state","dispose","complete","Service","messageService","getListQueryParams","listParams","_a","page","_b","size","_c","sort","_d","filterQuery","_e","displayFields","params","HttpParams","append","String","map","order","field","join","defaultCatch","catchError","err","summary","status","detail","message","statusText","add","severity","throwError","ControladorCancelasService","http","_super","url","tslib_1.__extends","listGateByArea","areaId","openGate","ip","post","closeGate","Injectable","HttpClient","MessageService","ControladorCancelaDescritor","ControleCircuito","header","name","ControleOperacao","ControladorCancelaComponent","service","translate","permissionsService","successState","canOpenGate","canCloseGate","unsubscribe$","gates$","ngOnInit","sequenciaCircuito","area","id","res","contents","permissions","Open","Close","toPromise","ngOnDestroy","model","gate","label","instant","visible","command","loading","finalize","undefined","_","tslib_1.__decorate","Input","Component","selector","template","animations","trigger","style","backgroundColor","opacity","transition","animate","TranslateService","PermissionsService","CancelasModule","dispatcher","dispatch","NgModule","imports","CommonModule","TableModule","TranslateModule","MessageModule","ButtonModule","LoadingStateModule","PermissionsModule","forChild","actions","uri","declarations","entryComponents","exports","providers","IntegrationDispatcher","BalancasService","urlIntegration","urlBalanca","getWeightScaleByArea","fallbackCall","balanca","peso","code","weight","getWeightScaleByCode","VisualizarBalancaDescritor","VisualizarBalancaComponent","client","cookieService","websocket","weightScales$","BehaviorSubject","weightScaleValues","Map","forEach","set","body","data","payload","index","findIndex","weightScale","find","StompService","CookieService","CustomStompConfig","getCookieObject","getCookie","socketProvider","SockJS","configureConfig","cname","cookie","name_1","ca","decodeURIComponent","document","charAt","substring","indexOf","headers","content-type","Authorization","Access-Control-Allow-Origin","heartbeat_in","heartbeat_out","reconnect_delay","debug","StompConfig","BalancaModule","provide","useClass","CamerasService","patioUrl","getCamerasByArea","takeSnapshot","camera","saveSnapshotInCircuit","ViewImageComponent","dialogRef","dialogConfig","imageUrl","save","execucaoCircuito","cameraIp","execucaoCircuitoId","alvoId","imagemUrl","close","DynamicDialogRef","DynamicDialogConfig","SnapshotDescritor","SnapshotComponent","dialogService","loadingAll","cameras$","splice","open","description","width","height","contentStyle","overflow","DialogService","CamerasModule","DynamicDialogModule","LprService","getLprByArea","stream","licencePlate","getLprByCode","LprModule","LogsService","listLogByCircuit","LogDescritor","CircuitoFinalizado","LogsComponent","logsService","columns","onGridChange","event","rows","first","updateGrid","totalElements","logsData","totalRecords","LogsModule","integrationDispatcher","TooltipModule","PortariasService","agendas","ultimaPlacaLida","getPortarias","plantaId","executarEntrada","lobbyId","placa","plate","PortariasDescritor","ControleUnificado","PortariasComponent","selectPlantService","portariaService","planta","getPlant","portarias","SelectPlantService","AgendasComponent","router","veiculo","portaria","selected","chegadaSimplificada","navigate","queryParams","navigateTo","chegada","getColumns","Router","ConfirmacaoComponent","continue","EntradaComponent","stompService","response","lprs","lpr","locked","readPlaque","entranceLpr","placaNaoEncontrada","openAgendas","display","flex-direction","styleClass","overflow-y","max-height","flex","onClose","filter","toUpperCase","PortariasModule","FormsModule","RouterModule","InputSwitchModule","InputTextModule","HttpClientModule","SelectPlantModule","EntityService","entityUrl","actionsUrl","bind","getBodyParams","bodyParams","offset","orderBy","displayfields","list","insert","entity","update","put","delete","listCustomFilter","action","ERP_ENVIRONMENT","InjectionToken","AgendaService","environment","project","domain","_agendaUrl","atualizarAgenda","agenda","retornaModelosValidacao","tipoAgendamentoId","checarRevalidacao","erpProcessData","listExternalAgenda","tslib_1.__param","Inject","RecebimentoContratoService","_baseUrl","registrarChegadaVeiculoComRecebimento","insertContratoRecebimento","recebimentoId","contratoRecebimento","insertContratoRecebimentoItem","contratoRecebimentoId","contratoRecebimentoItem","RecebimentoChegadaVeiculoOverride","override","agendaService","recebimentoService","RECEBIMENTO_KEY","initialize","addOverride","functionToOverride","remove","disposeOverride","mergeMap","recebimento","circuito","sequenciaInicial","sequencia","vagaInicial","vaga","ChegadaVeiculoOverride","ExpedicaoService","registrarChegadaVeiculoComExpedicao","ExpedicaoChegadaVeiculoOverride","expedicaoService","EXPEDICAO_KEY","expedicao","IntegrationService","baseUrl","getProcessConfigurationErp","idTipoAgendamento","ERP_SENIOR_HEADER","FormDescritor","Agendamento","ChegadaVeiculo","icon","FormComponent","integrationCallback","integrationService","onAgendamentoSaved","tipoAgendamento","empty","erpProcessConfiguration","tipoProcessoErpAtual","ngOnChanges","IntegrationEventsCallback","HEADER","InfoDescritor","InfoComponent","ngUnsubscribe","FieldCustomizationService","commitFiles","objects","deleteFiles","getFiles","formGroup","fieldCustomization","custom","filesToCommit","filesToDelete","toDelete","toInsert","isEmpty","files","keys","version","fileName","objectId","objects_1","file","entityName","object","isArray","entries","VerificaNotafiscal","verificaSeNotaFiscalEstaDuplicada","chaveNotaFiscal","contratos","fornecedorNotasTokens","notaFicalDuplicadas","nota","contrato","notas","OrdemCompraService","listOrdensCompra","numberTypes","FieldType","Integer","Double","numberPattern","mergeUnique","array","otherArray","item","includes","isValidFilter","type","getTypeInformation","isValidValue","typeExists","Time","Date","DateTime","match","userCanVisualize","allPermissions","controls","errors","required","visualizar","getProp","obj","path","reduce","result","prop","margin-bottom","moment","_moment","getLookupLabel","fields","separator","translation","trim","StatusAgenda","onLookupRequest","searchFields","lookupDisplayFields","advancedDisplayFields","lookupSeparator","customFilter","format","replace","onSearchRequest","multiSortMeta","filterData","Enum","Lookup","Empresa","fromDto","empresaDto","originEntity","createdDate","toDate","lastModifiedDate","toDto","empresa","dto","Pessoa","pessoaDto","pessoa","PessoaJuridica","pessoaJuridicaDto","pessoaJuridica","Pais","paisDto","pais","Estado","estadoDto","estado","Cidade","cidadeDto","cidade","PessoaEndereco","pessoaEnderecoDto","pessoaEndereco","Filial","filialDto","endereco","filial","OrdemCompra","ordemCompraDto","ordemCompra","OrdemCompraFormComponent","ordemCompraService","fb","ordemCompraLookupDisplayFields","ordemCompraAdvancedDisplayFields","ordemCompraLookupSeparator","fornecedor","ordensCompra","ordens","val","getForm","ordemCompraSearchFields","getOrdemCompraFields","ordemCompraSearchGridFields","getOrdemCompraGridFields","onOrdemCompraLookupRequest","numero","empresaId","pessoaId","filialId","ordensCompraSelecionados","pagina","limit","listaOrdenacao","campo","ordenacao","ordemCompraLookupSuggestions","onOrdemCompraSearchRequest","a","dataEmissao","ordemCompraSearchGridData","ordemCompraSearchTotalRecords","getRecPagina","validateAllFormFields","control","FormControl","markAsDirty","onlySelf","FormGroup","FormArray","form","valid","group","Validators","FormField","FormBuilder","FocusService","focusFirstInvalidInput","firstField","from","getElementsByClassName","f","nodeName","firstInputId","getAttribute","firstInvalidInput","getElementById","focus","nestedInput","getNestedInput","firstElementChild","element","NotaValidatorService","pesquisarDocumento","pesquisarDocumentoValidaNotaEmUso","pesquisarDocumentoGenerico","executarAuditoria","NotaFormComponent","notaValidatorService","confirmationService","verificaNotaFiscal","validateNotaFiscal","documentos","itens","produto","addErrorIfProdutoIsDifferent","notaFiscal","chave","serie","serieLegal","confirmAndAddNovoFornecedor","origemMercadoria","setValue","desabilitaCamposNotaFiscal","closeAndReturnNota","camposPreenchidosValidation","erroMultiplosCampos","serieNotaFiscal","serieLegalNotaFiscal","numeroNotaFiscal","validators","removeErrorChaveNota","habilitaCamposNotaFiscal","onBlurNotaFiscal","chaveDocumento","infoNota","confirm","acceptLabel","rejectLabel","accept","reject","setErrors","errorChaveNota","addFornecedor","enable","disable","ConfirmationService","NotaFormModule","ReactiveFormsModule","ControlErrorsModule","ConfirmDialogModule","AgendaModule","CidadeService","CidadeModule","ContratoCompraItemService","pesquisarItensContratoCompra","ContratoCompraItemModule","ContratoCompraService","listContratosCompra","getItens","contratoCompraId","updateItens","contratoCompraItemDto","listItens","insertItens","deleteItens","ContratoCompraModule","DerivacaoService","DerivacaoModule","EmpresaService","EmpresaModule","EstadoService","EstadoModule","FamiliaProdutoService","FamiliaProdutoModule","FilialService","listFiliais","filters","FilialModule","PaisService","PaisModule","PedidoVendaItemService","queriesUrl","pesquisarItensPedidoVenda","pesquisa","PedidoVendaItemModule","PedidoVendaService","pedidoVendaId","pesquisarPedidosVenda","pedidoVendaItemDto","PedidoVendaModule","PessoaEnderecoService","PessoaEnderecoModule","PessoaFisicaService","PessoaFisicaModule","PessoaJuridicaService","PessoaJuridicaModule","PessoaService","PessoaModule","ProdutoService","listProdutosRecebimento","listProdutos","ProdutoModule","HasChangeService","messageSource","change","current","asObservable","hasChange","idAgenda","hasChangeSave","ErpProcessService","changeData","getProcessData","changeDataErp","newMessage","chaveIntegracao","produtoId","transgeniaId","transportadoraId","changeDataVeiculo","veiculoId","eixos","ErpProcessData","changeDataMotorista","motoristaId","changeDataAgenda","agendaId","builderErpProcessData","getFieldFormGroup","fornecedores","listarIdsFornecedores","getRawValue","builderErpProcessDataValidaNotaNoContrato","recebimentoTemNota","verificaSeTemNotaNoContratoNoFornecedo","contratosTemNota","listaContratos","listaNotas","verificaSeContratosTemNota","builderErpProcessDataValidaNotaNaOrdemCompra","verificaSeTemNotaNaOrdemCompraDoFornecedo","ordemCompraTemNota","listaOrdens","verificaSeOrdemCompraTemNota","ordem","fieldName","listaFornecedores","ErpFormConfigService","enableRevalidation","RecebimentoContratoModule","RoyaltyService","RoyaltyModule","SafraService","SafraModule","TransportadoraService","TransportadoraModule","UnidadeMedidaService","UnidadeMedidaModule","ExpedicaoModule","DevolucaoService","registrarChegadaVeiculoComDevolucao","DevolucaoModule","OrdemCompraModule","RecebimentoOrdemCompraService","registrarChegadaVeiculoRecebimentoOrdemCompra","RecebimentoOrdemCompraModule","TransgeniaService","TransgeniaModule","ProcessoAvulsoService","registrarChegada","processo","ProcessoAvulsoModule","LogIntegracaoService","LogIntegracaoModule","CoreModule","DevolucaoChegadaVeiculoOverride","devolucaoService","DEVOLUCAO_KEY","devolucao","Agenda","agendaDto","UnidadeMedida","unidadeMedidaDto","unidadeMedida","Royalty","royaltyDto","royalty","FamiliaProduto","familiaProdutoDto","familiaProduto","Produto","produtoMisto","comprado","produtoDto","unidadeMedidaAgroG5","familia","Derivacao","derivacaoDto","derivacao","Transportadora","transportadoraDto","transportadora","Devolucao","devolucaoDto","TipoNotaFiscal","TipoParticipanteTransgenia","DevolucaoFormComponent","filialService","pessoaService","produtoService","derivacaoService","origemMercadoriaService","transportadoraService","route","erpProcessService","erpFormConfigService","hasChangeService","filialLookupDisplayFields","filialAdvancedDisplayFields","filialLookupSeparator","fornecedorLookupDisplayFields","fornecedorAdvancedDisplayFields","fornecedorLookupSeparator","produtoLookupDisplayFields","produtoAdvancedDisplayFields","produtoLookupSeparator","derivacaoLookupDisplayFields","derivacaoAdvancedDisplayFields","derivacaoLookupSeparator","origemMercadoriaLookupDisplayFields","origemMercadoriaAdvancedDisplayFields","origemMercadoriaLookupSeparator","transportadoraLookupDisplayFields","transportadoraAdvancedDisplayFields","transportadoraLookupSeparator","disableButtonSave","totalEixosContratados","totalEixosComposicao","getFormGroup","ngAfterViewInit","saveAndInitButton","valueChanges","formCarregado","filialSearchFields","getFilialSearchFields","filialSearchGridFields","getFilialSearchGridFields","fornecedorSearchFields","getFornecedorSearchFields","produtoSearchFields","getProdutoSearchFields","derivacaoSearchFields","getDerivacaoSearchFields","origemMercadoriaSearchFields","getOrigemMercadoriaSearchFields","transportadoraSearchFields","getTransportadoraSearchFields","transportadoraSearchGridFields","getTransportadoraSearchGridFields","getDevolucao","getEmpresaFilial","filialValueChanges","checkValuesChanges","externalTenant","setTransportadora","cnpj","createdByErpDisableForm","createdByErp","formControlUpdated","formControlDependent","getFilterQuery","variables","querySize","isChangeValidators","clearFormControlDependent","setValidators","nullValidator","toString","patchValue","onFilialLookupRequest","filterInput","cnpjs","filialLookupSuggestions","filiais","onFilialSearchRequest","sortFormatted","filialSearchGridData","filialSearchTotalRecords","qtdTotalRegistros","onFornecedorLookupRequest","fornecedorLookupSuggestions","onFornecedorSearchRequest","fornecedorSearchGridData","fornecedorSearchTotalRecords","onProdutoLookupRequest","situacao","produtoLookupSuggestions","produtos","onProdutoSearchRequest","produtoSearchTotalRecords","produtoSearchGridData","onDerivacaoLookupRequest","derivacaoLookupSuggestions","onDerivacaoSearchRequest","derivacaoSearchGridData","derivacaoSearchTotalRecords","onOrigemMercadoriaLookupRequest","origemMercadoriaLookupSuggestions","onOrigemMercadoriaSearchRequest","origemMercadoriaSearchGridData","origemMercadoriaSearchTotalRecords","onTransportadoraLookupRequest","transportadoraLookupSuggestions","onTransportadoraSearchRequest","transportadoraSearchGridData","transportadoraSearchTotalRecords","codigo","descricao","onSave","start","invalid","isNew","saveAndInit","requerRevalidacao","atualizaAgendaParaRejeitadoPorValidacao","REJEITADO_POR_VALIDACAO","motorista","concatMap","getSaveObservable","successMessage","relativeTo","click","addMessage","disabled","numeroNotaFiscalProdutor","serieNotaFiscalProdutor","ActivatedRoute","DevolucaoInfoComponent","switchMap","of","Expedicao","expedicaoDto","clienteFaturamento","clienteRemessa","ExpedicaoFormComponent","formBuilder","hotkeysService","focusService","pedidoVendaService","pedidoVendaItemService","localeConfig","currencyLocaleOptions","mainPanelCollapsed","visibleDialog","clienteFaturamentoLookupDisplayFields","clienteFaturamentoAdvancedDisplayFields","clienteFaturamentoLookupSeparator","clienteRemessaLookupDisplayFields","clienteRemessaAdvancedDisplayFields","clienteRemessaLookupSeparator","pedidoVendaLookupDisplayFields","pedidoVendaAdvancedDisplayFields","pedidoVendaLookupSeparator","pedidoVendaItemLookupDisplayFields","pedidoVendaItemAdvancedDisplayFields","pedidoVendaItemLookupSeparator","agendaLookupDisplayFields","agendaAdvancedDisplayFields","agendaLookupSeparator","disableOrdersButtons","ordersValid","pedidoVendaForm","getPedidoVendaForm","itemFormGroup","getOrdemVendaItemForm","onRouteDataChange","getExpedicao","buscarFilial","clienteFaturamentoSearchFields","getClienteSearchFields","clienteFaturamentoSearchGridFields","getClienteSearchGridFields","clienteRemessaSearchFields","clienteRemessaSearchGridFields","pedidoVendaSearchFields","getPedidoVendaSearchFields","pedidoVendaSearchGridFields","getPedidoVendaSearchGridFields","pedidoVendaItemSearchFields","getPedidoVendaItemSearchFields","pedidoVendaItemSearchGridFields","getPedidoVendaItemSearchGridFields","agendaSearchFields","getAgendaSearchFields","agendaSearchGridFields","getAgendaSearchGridFields","setHotkeys","setPedidosValueChanges","revalidacaoTransportadora","verificaSeTemAlteracao","transp","abrirPedidoVenda","pedidoVenda","buttons","getElementsByTagName","excluirPedidoVenda","removeAt","abrirPedidoVendaItem","pedido","pedidoVendaItem","quantidade","pedidoAtual","excluirPedidoVendaItem","pedidosLength","selecionarPedidoVenda","getOrdemVendaForm","buscarClienteAFaturar","selecionarPedidoVendaItem","selecionarPedidoVendaItemAutomaticamente","getPedidos","buildTokens","sku","inputList","selectedInput","Hotkey","editar","onCancel","updateSuggestions","getSuggestionValue","ownerEntity","acc","number","currencySymbol","thousandsSeparator","decimalSeparator","align","prefix","thousands","decimal","goBack","onSendFile","observables","forkJoin","setValuesPedidoBiodisel","numeroPedidoCliente","itemPedidoCliente","pedidos","getValuesPedidoBiodisel","pedidosInterno","atualizaExpedicao","onSubscribe","itemForm","onClienteFaturamentoLookupRequest","clienteFaturamentoLookupSuggestions","onClienteFaturamentoSearchRequest","clienteFaturamentoSearchGridData","clienteFaturamentoSearchTotalRecords","onClienteRemessaLookupRequest","clienteRemessaLookupSuggestions","onClienteRemessaSearchRequest","clienteRemessaSearchGridData","clienteRemessaSearchTotalRecords","onFilialSelect","onPedidoVendaLookupRequest","pedidosIdsQuery","pedidoVendaLookupSuggestions","onPedidoVendaSearchRequest","pedidosSelecionados","filialPedido","pedidoVendaSearchGridData","pedidoVendaSearchTotalRecords","onPedidoVendaItemLookupRequest","pedidoId","isNaN","pedidoVendaItemLookupSuggestions","onPedidoVendaItemSearchRequest","pedidoVendaItemSearchGridData","pedidoVendaItemSearchTotalRecords","getAutomaticItensOrder","onAgendaLookupRequest","agendaLookupSuggestions","onAgendaSearchRequest","agendaSearchGridData","agendaSearchTotalRecords","compose","numeroAgendamentoCliente","createdBy","lastModifiedBy","clientSuggestions$","clientSearch$","searchGridFields","suggestionsObservable","searchObservable","emptyMessage","sm","md","lg","xl","gridData","dataKey","lookupDisplayField","searchTitle","searchEmptyTitle","filterLabel","filterTitle","clearLabel","cancelLabel","selectLabel","tooltip","getDerivacaoSearchGridFields","parent","observable","validateVisualization","ViewChild","TemplateRef","HotkeysService","ExpedicaoInfoComponent","LogIntegracaoDescritor","LogIntegracaoComponent","logIntegracaoService","currentListParams","serverError","xmlFormatter","require","confs","gridColumns","getGridColumns","logIntegracao","onSearch","resetGrid","showLoader","selection","getPayload","stringify","table","reset","Table","ProcessoAvulso","processoAvulsoDto","processoAvulso","ProcessoAvulsoChegadaVeiculoOverride","processoAvulsoService","AVULSO_KEY","avulso","ProcessoAvulsoFormComponent","processoAvulsoOverride","getProcessoAvulso","fil","ProcessoAvulsoInfoComponent","Safra","safraDto","competenciaInicial","competenciaFinal","safra","RecebimentoOrdemCompra","recebimentoOrdemCompraDto","recebimentoOrdemCompra","RecebimentoOrdemCompraChegadaVeiculoOverride","recebimentoOrdemCompraService","RECEBIMENTO_ORDEMCOMPRA_KEY","RecebimentoOrdemCompraFormComponent","safraService","safraLookupDisplayFields","safraAdvancedDisplayFields","safraLookupSeparator","erroChaveNota","erroFornecedores","notasTokens","fornecedorNotas","ordemCompraSelecionado","onFilialValueChange","changeFormGroupValue","onFornecedorChange","onChangeRevalidation","configureForm","getRecebimentoOrdemCompra","safraSearchFields","getSafraSearchFields","safraSearchGridFields","getSafraSearchGridFields","nome","dtoConverter","debounceTime","onBlurChaveNotaFiscal","removeNotaError","mensagemBuscandoNota","adicionarNovaNota","isAny","formControl","getFornecedorForm","getFornecedores","ordemCompraForm","getOrdemCompraForm","getOrdensCompra","notaForm","getNotaForm","getNotas","fornecedorForm","addOrdemCompra","onOrdemCompraSaved","onSafraLookupRequest","safraLookupSuggestions","onSafraSearchRequest","safraSearchGridData","safraSearchTotalRecords","removeFornecedor","addNota","onNotaSaved","removerNota","ordemCompraId","getNotasFromOrdens","showButtons","AGENDADO","AGUARDANDO_CONFIRMACAO","AGUARDANDO_CONFIRMACAO_SOLICITANTE","disableAdicionarNota","removerOrdemCompra","ordensCompraForm","getFornecedorByOrdemCompra","ordensFormSelecionado","ordensCompraForm_1","tslib_1.__values","ordensCompraForm_1_1","addFornecedorNotasTokenEmOrdemCompra","fornecedorNota","notasForm","removeFornecedorNotasTokenDaOrdemCompra","mensagemOrdemCompraNaoSelecionado","existsFornecedor","disableFields","values","addFornecedorNotasToken","addNotaError","life","_i","RecebimentoOrdemCompraInfoComponent","ContratoCompra","contratoCompraDto","dataInicioVigencia","dataFimVigencia","ContratoCompraItem","contratoCompra","dataCompetencia","contratoCompraItem","ContratoFormComponent","contratoCompraService","contratoCompraItemService","contratoCompraLookupDisplayFields","contratoCompraAdvancedDisplayFields","contratoCompraLookupSeparator","contratoCompraItensLookupDisplayFields","contratoCompraItensAdvancedDisplayFields","contratoCompraItensLookupSeparator","contratoCompraSearchFields","getContratoCompraFields","contratoCompraSearchGridFields","getContratoCompraGridFields","contratoCompraItensSearchFields","getContratoCompraItensFields","contratoCompraItensSearchGridFields","getContratoCompraItensGridFields","onContratoCompraLookupRequest","contratosSelecionados","contratoCompraLookupSuggestions","onContratoCompraSearchRequest","contratoCompraSearchGridData","contratoCompraSearchTotalRecords","onContratoCompraItensLookupRequest","contratoId","contratoCompraItensLookupSuggestions","onContratoCompraItensSearchRequest","contratoCompraItensSearchGridData","contratoCompraItensSearchTotalRecords","addItemContrato","getItensForm","getItemForm","Transgenia","transgeniaDto","transgenia","roylty","RecebimentoContrato","recebimentoDto","RecebimentoFormComponent","pessoaEnderecoService","recebimentoChegadaOverride","transgeniaService","quantidadeSelecionada","transgeniaLookupDisplayFields","transgeniaAdvancedDisplayFields","transgeniaLookupSeparator","tiposNota","EMPRESA_JURIDICA","PRODUTOR_RURAL","contratoSelecionado","getTipoTransgenia","NAO_INFORMADO","at","tipoParticipante","getRecebimento","fornecedorSearchGridFields","getFornecedorSearchGridFields","getOrigemMercadoriaFields","origemMercadoriaSearchGridFields","getOrigemMercadoriaGridFields","produtoSearchGridFields","getProdutoSearchGridFields","derivacaoSearchGridFields","transgeniaSearchFields","getTransgeniaSearchFields","transgeniaSearchGridFields","getTransgeniaSearchGridFields","disableFornecedores","excluir","onDelete","getDeleteObservable","contratoForm","getContratoForm","getContratos","getItensContrato","onTransgeniaLookupRequest","transgeniaLookupSuggestions","onTransgeniaSearchRequest","transgeniaSearchGridData","transgeniaSearchTotalRecords","configureFornecedor","addContrato","onContratoSaved","removerContrato","getNotasFromContratos","tipoNotaFiscal","getFornecedorByContrato","getProdutoByContrato","mensagemContratoNaoSelecionado","fornecedorOfGroup","validarCnpjFornecedor","cpfCnpj","contratosFormSelecionado","contratosForm","contratosForm_1","contratosForm_1_1","addFornecedorNotasTokenEmContrato","removeFornecedorNotasTokenDoContrato","itemProduto","validateProduto","tap","ehPessoaJuridica","RecebimentoInfoComponent","highlightLanguages","func","jsonx","xmlx","ErpSeniorModule","CustomFieldsModule","DialogModule","EmptyStateModule","DynamicFormModule","TokenListModule","PanelModule","AccordionModule","DropdownModule","NumberInputModule","LocaleModule","IntegrationModule","TabViewModule","HighlightModule","forRoot","languages","HotkeyModule"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","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","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 * 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 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 { 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","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}"]}
|