{"version":3,"file":"main.js","mappings":"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A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sources":["./src/app/_directives/kz-mask-currency.directive.ts","./src/app/_directives/mascara.directive.ts","./src/app/_enums/analytics-dimensoes.ts","./src/app/_enums/analytics-download.ts","./src/app/_enums/analytics-email.ts","./src/app/_enums/analytics-filtro.ts","./src/app/_enums/analytics-metricas.ts","./src/app/_enums/analytics-operacao.ts","./src/app/_enums/analytics-tela.ts","./src/app/_enums/geolocalizacao-status.ts","./src/app/_enums/geolocalizacao-tipo.ts","./src/app/_enums/log-front-funcionalidade.ts","./src/app/_enums/nivel-log.ts","./src/app/_enums/operacao.ts","./src/app/_enums/perfil-usuario.enum.ts","./src/app/_enums/sentido-rota-aware.decorator.ts","./src/app/_enums/sentido-rota.enum.ts","./src/app/_enums/status-os.enum.ts","./src/app/_enums/status-usuario.enum.ts","./src/app/_guards/auth.guard.ts","./src/app/_models/InfoPgtoAdicional.ts","./src/app/_models/PortoInstantPaymentRequest.ts","./src/app/_models/agenda-entrega-salvar.ts","./src/app/_models/agenda-entrega.ts","./src/app/_models/agendamento-coleta.ts","./src/app/_models/alteracoes-arquivo-upload.ts","./src/app/_models/alterar-senha.ts","./src/app/_models/analytics-data.ts","./src/app/_models/anel-rota.ts","./src/app/_models/anel.ts","./src/app/_models/arquivo-upload.ts","./src/app/_models/assunto.ts","./src/app/_models/atualizar-ordem-servico.ts","./src/app/_models/base-filtro-top.ts","./src/app/_models/booking-request.ts","./src/app/_models/booking-shipping-request.ts","./src/app/_models/booking.ts","./src/app/_models/busca-viagens-booking.ts","./src/app/_models/cliente-classificacao.ts","./src/app/_models/cliente-request.ts","./src/app/_models/cliente.ts","./src/app/_models/co2-total.ts","./src/app/_models/config-upload.ts","./src/app/_models/cotacao-request.ts","./src/app/_models/cotacao.ts","./src/app/_models/ctmNf.ts","./src/app/_models/customer-info.ts","./src/app/_models/detalhes-tracking-request.ts","./src/app/_models/doctoFatura-request.ts","./src/app/_models/doctoFaturaArquivo-request.ts","./src/app/_models/documentos-selecionados.ts","./src/app/_models/endereco.ts","./src/app/_models/envioAnexoEmail.ts","./src/app/_models/faleconosco.ts","./src/app/_models/filterComboConfiguration.ts","./src/app/_models/filtro-lista-item.ts","./src/app/_models/filtros-laterais.ts","./src/app/_models/grupo-economico-request.ts","./src/app/_models/imagemNF.ts","./src/app/_models/incidente-request.ts","./src/app/_models/listItem.ts","./src/app/_models/log-front.ts","./src/app/_models/login.ts","./src/app/_models/meus-bookings.ts","./src/app/_models/minhas-cotacoes.ts","./src/app/_models/municipio-request.ts","./src/app/_models/municipio.ts","./src/app/_models/navioViagem-request.ts","./src/app/_models/ok-entrega-consulta-link.ts","./src/app/_models/ordemServico.ts","./src/app/_models/ordemServicoRequest.ts","./src/app/_models/ordemServicoVM.ts","./src/app/_models/parametro-porto.ts","./src/app/_models/perfil.ts","./src/app/_models/porto.ts","./src/app/_models/prioridade.ts","./src/app/_models/proposta-comercial-filtro.ts","./src/app/_models/proposta-comercial-request.ts","./src/app/_models/proposta-comercial.ts","./src/app/_models/schedule-request.ts","./src/app/_models/schedule.ts","./src/app/_models/sporadic-tax.ts","./src/app/_models/sub-tributaria.ts","./src/app/_models/terminal.ts","./src/app/_models/tipo-container.ts","./src/app/_models/tipo-pagamento.ts","./src/app/_models/tipo-servico.ts","./src/app/_models/tipo-taxa-esporadica.ts","./src/app/_models/tipoEventoTracking.ts","./src/app/_models/trackinglista-request.ts","./src/app/_models/usuario-cnpj.ts","./src/app/_models/usuario-pesquisa-request.ts","./src/app/_models/usuario-pesquisa.ts","./src/app/_models/usuario.ts","./src/app/_models/usuarioregistrar.ts","./src/app/_pipes/countdown.pipe.ts","./src/app/_pipes/orderby.pipe.ts","./src/app/_services/agenda-entrega.service.ts","./src/app/_services/analytics.service.ts","./src/app/_services/anel-rota.service.ts","./src/app/_services/app.service.ts","./src/app/_services/authentication.service.ts","./src/app/_services/base.service.ts","./src/app/_services/booking-shipping.service.ts","./src/app/_services/booking.service.ts","./src/app/_services/caixa-entrada.service.ts","./src/app/_services/config.service.ts","./src/app/_services/cotacao.service.ts","./src/app/_services/customer-info.service.ts","./src/app/_services/data.service.ts","./src/app/_services/datepicker.service.ts","./src/app/_services/documentacao.service.ts","./src/app/_services/filtros-laterais.service.ts","./src/app/_services/filtros-propostas-comerciais.service.ts","./src/app/_services/funcionalidade.service.ts","./src/app/_services/generic-orderby.service.ts","./src/app/_services/groupby.service.ts","./src/app/_services/grupo-economico.service.ts","./src/app/_services/icms.service.ts","./src/app/_services/info-pgto-adicional.service.ts","./src/app/_services/log.service.ts","./src/app/_services/maps.service.ts","./src/app/_services/message.service.ts","./src/app/_services/municipio.service.ts","./src/app/_services/navio-viagem.service.ts","./src/app/_services/ok-entrega.service.ts","./src/app/_services/ordem-servico.service.ts","./src/app/_services/parametro.service.ts","./src/app/_services/perfil.service.ts","./src/app/_services/porto.service.ts","./src/app/_services/prioridade.service.ts","./src/app/_services/programacao-navios.service.ts","./src/app/_services/proposta-comercial.service.ts","./src/app/_services/rastreamento-cargas-vm.ts","./src/app/_services/rastreamento.service.ts","./src/app/_services/shared.service.ts","./src/app/_services/sporadic-tax.service.ts","./src/app/_services/sub-tributaria.service.ts","./src/app/_services/terminais.service.ts","./src/app/_services/tipo-taxa-esporadica.service.ts","./src/app/_services/upload-arquivo.service.ts","./src/app/_services/usuario.service.ts","./src/app/admin/anel-rota/anel-rota-detalhe/anel-rota-detalhe.component.ts","./src/app/admin/anel-rota/anel-rota-detalhe/rotas-anel/rotas-anel.component.ts","./src/app/admin/anel-rota/anel-rota.component.ts","./src/app/admin/anel-rota/anel-rota.module.ts","./src/app/admin/anel-rota/anel-rota.routing.module.ts","./src/app/admin/caixa-entrada/caixa-entrada-detalhe/caixa-entrada-detalhe.component.ts","./src/app/admin/caixa-entrada/caixa-entrada.component.ts","./src/app/admin/caixa-entrada/caixa-entrada.module.ts","./src/app/admin/caixa-entrada/caixa-entrada.routing.module.ts","./src/app/admin/customer-info-import/customer-info-import.component.ts","./src/app/admin/customer-info-import/customer-info-import.module.ts","./src/app/admin/customer-info-import/customer-info-import.routing.module.ts","./src/app/admin/icms/icms.component.ts","./src/app/admin/icms/icms.module.ts","./src/app/admin/icms/icms.routing.module.ts","./src/app/admin/log/log.component.ts","./src/app/admin/log/log.module.ts","./src/app/admin/log/log.routing.module.ts","./src/app/admin/parametro/horas/base.parametros.horas.ts","./src/app/admin/parametro/horas/horas.component.ts","./src/app/admin/parametro/horas/parametro-porto-edit/parametro-porto-edit.component.ts","./src/app/admin/parametro/horas/parametro-porto-view/parametro-porto-view.component.ts","./src/app/admin/parametro/navios/navios.component.ts","./src/app/admin/parametro/parametro.component.ts","./src/app/admin/parametro/parametro.module.ts","./src/app/admin/parametro/parametro.routing.module.ts","./src/app/admin/parametro/prioridades/lista/lista.component.ts","./src/app/admin/parametro/prioridades/prioridades.component.ts","./src/app/admin/parametro/prioridades/prioridades.module.ts","./src/app/admin/parametro/prioridades/prioridades.routing.module.ts","./src/app/admin/parametro/terminais/terminais.component.ts","./src/app/admin/parametro/tipos-servicos/tipos-servicos.component.ts","./src/app/admin/perfil/perfil-detalhe/perfil-detalhe.component.ts","./src/app/admin/perfil/perfil.component.ts","./src/app/admin/perfil/perfil.module.ts","./src/app/admin/perfil/perfil.routing.module.ts","./src/app/admin/porto/porto-detalhe/porto-detalhe.component.ts","./src/app/admin/porto/porto.component.ts","./src/app/admin/porto/porto.module.ts","./src/app/admin/porto/porto.routing.module.ts","./src/app/admin/sub-tributaria/sub-tributaria-detalhe/sub-tributaria-detalhe.component.ts","./src/app/admin/sub-tributaria/sub-tributaria.component.ts","./src/app/admin/sub-tributaria/sub-tributaria.module.ts","./src/app/admin/sub-tributaria/sub-tributaria.routing.module.ts","./src/app/admin/taxa-esporadica/taxa-esporadica-detalhe/taxa-esporadica-detalhe.component.ts","./src/app/admin/taxa-esporadica/taxa-esporadica.component.ts","./src/app/admin/taxa-esporadica/taxa-esporadica.module.ts","./src/app/admin/taxa-esporadica/taxa-esporadica.routing.module.ts","./src/app/admin/tipo-taxa-esporadica/tipo-taxa-esporadica-detalhe/tipo-taxa-esporadica-detalhe.component.ts","./src/app/admin/tipo-taxa-esporadica/tipo-taxa-esporadica.component.ts","./src/app/admin/tipo-taxa-esporadica/tipo-taxa-esporadica.module.ts","./src/app/admin/tipo-taxa-esporadica/tipo-taxa-esporadica.routing.module.ts","./src/app/admin/usuario/usuario-detalhe/usuario-detalhe.component.ts","./src/app/admin/usuario/usuario.component.ts","./src/app/admin/usuario/usuario.module.ts","./src/app/admin/usuario/usuario.routing.module.ts","./src/app/app.component.ts","./src/app/app.module.ts","./src/app/app.routing.module.ts","./src/app/cliente/booking/booking.component.ts","./src/app/cliente/booking/booking.module.ts","./src/app/cliente/booking/booking.routing.module.ts","./src/app/cliente/booking/relatorios/ImpresaoPixPdf.ts","./src/app/cliente/booking/relatorios/relatoriopix/pixreport.component.ts","./src/app/cliente/booking/relatorios/relatoriopix/pixreport.module.ts","./src/app/cliente/booking/relatorios/relatoriopix/pixreport.routing.module.ts","./src/app/cliente/booking/relatorios/relatoriopix/relatoriopix.component.ts","./src/app/cliente/booking/relatorios/relatoriopix/relatoriopix.module.ts","./src/app/cliente/booking/solicitar-booking/controle-steps/controle-steps.component.ts","./src/app/cliente/booking/solicitar-booking/solicitar-booking.component.ts","./src/app/cliente/booking/solicitar-booking/step1-selecao-proposta/step1-selecao-proposta.component.ts","./src/app/cliente/booking/solicitar-booking/step2-detalhes-operacao/step2-detalhes-operacao.component.ts","./src/app/cliente/booking/solicitar-booking/step3-agendamento-coleta/dados-aba-3.ts","./src/app/cliente/booking/solicitar-booking/step3-agendamento-coleta/lista-agendamento/item-agendamento/item-agendamento.component.ts","./src/app/cliente/booking/solicitar-booking/step3-agendamento-coleta/lista-agendamento/item-agendamento/item-agendamento.module.ts","./src/app/cliente/booking/solicitar-booking/step3-agendamento-coleta/lista-agendamento/lista-agendamento.component.ts","./src/app/cliente/booking/solicitar-booking/step3-agendamento-coleta/step3-agendamento-coleta.component.ts","./src/app/cliente/booking/solicitar-booking/step4-dados-reserva/step4-dados-reserva.component.ts","./src/app/cliente/booking/solicitar-booking/step5-informacao-pgto/step5-informacao-pgto.component.ts","./src/app/cliente/cotacao/cotacao.component.ts","./src/app/cliente/cotacao/cotacao.module.ts","./src/app/cliente/cotacao/cotacao.routing.module.ts","./src/app/cliente/cotacao/solicitar-cotacao/solicitar-cotacao.component.ts","./src/app/cliente/documentacao/documentacao.component.ts","./src/app/cliente/documentacao/documentacao.module.ts","./src/app/cliente/documentacao/documentacao.routing.module.ts","./src/app/cliente/documentacao/filtro-documentacao/filtro-documentacao.component.ts","./src/app/cliente/documentacao/lista-documentacao/item-documentacao/download-documentacao/download-documentacao.component.ts","./src/app/cliente/documentacao/lista-documentacao/item-documentacao/item-documentacao.component.ts","./src/app/cliente/documentacao/lista-documentacao/lista-documentacao.component.ts","./src/app/cliente/documentacao/ordenacao-documentacao/ordenacao-documentacao.component.ts","./src/app/cliente/filtros-laterais/filtros-laterais.component.ts","./src/app/cliente/filtros-laterais/filtros-laterais.module.ts","./src/app/cliente/rastreamento/agendamento-rastreamento/agendamento-rastreamento.component.ts","./src/app/cliente/rastreamento/agendamento-rastreamento/item-entrega-agendamento/item-entrega-agendamento.component.ts","./src/app/cliente/rastreamento/busca-rastreamento/busca-rastreamento.component.ts","./src/app/cliente/rastreamento/filtro-rastreamento/filtro-rastreamento.component.ts","./src/app/cliente/rastreamento/lista-rastreamento/infos-sil/infos-sil.component.ts","./src/app/cliente/rastreamento/lista-rastreamento/lista-docs/lista-docs.component.ts","./src/app/cliente/rastreamento/lista-rastreamento/lista-rastreamento.component.ts","./src/app/cliente/rastreamento/lista-rastreamento/tracking-rastreamento/info-sil-modal/info-sil-modal.component.ts","./src/app/cliente/rastreamento/lista-rastreamento/tracking-rastreamento/item-tracking/item-tracking.component.ts","./src/app/cliente/rastreamento/lista-rastreamento/tracking-rastreamento/tracking-rastreamento.component.ts","./src/app/cliente/rastreamento/navio-rota/navio-rota.component.ts","./src/app/cliente/rastreamento/navio-rota/porto-rota/porto-rota.component.ts","./src/app/cliente/rastreamento/ordenacao-rastreamento/ordenacao-rastreamento.component.ts","./src/app/cliente/rastreamento/rastreamento.component.ts","./src/app/cliente/rastreamento/rastreamento.module.ts","./src/app/cliente/rastreamento/rastreamento.routing.module.ts","./src/app/provedor/filtro-lista/filtro-lista.component.ts","./src/app/provedor/filtro-top/filtro-top.component.ts","./src/app/provedor/lista-provedor/fechar-ordem/fechar-ordem.component.ts","./src/app/provedor/lista-provedor/item-provedor/item-detalhes-provedor/item-detalhes-provedor.component.ts","./src/app/provedor/lista-provedor/item-provedor/item-provedor.component.ts","./src/app/provedor/lista-provedor/lista-provedor.component.ts","./src/app/provedor/ordem-servico/incidente/incidente.component.ts","./src/app/provedor/ordem-servico/ordem-servico.component.ts","./src/app/provedor/ordem-servico/ordem-servico.module.ts","./src/app/provedor/ordem-servico/ordem-servico.routing.module.ts","./src/app/provedor/ordenacao-provedor/ordenacao-provedor.component.ts","./src/app/provedor/provedor.module.ts","./src/app/provedor/vincular-nf/chave-cte/chave-cte.component.ts","./src/app/provedor/vincular-nf/chave-nfe/chave-nfe.component.ts","./src/app/provedor/vincular-nf/vincular-nf.component.ts","./src/app/provedor/vincular-nf/vincular-nf.module.ts","./src/app/provedor/vincular-nf/vincular-nf.routing.module.ts","./src/app/public/cadastrar-senha/cadastrar-senha.component.ts","./src/app/public/cadastrar-senha/cadastrar-senha.module.ts","./src/app/public/cadastrar-senha/cadastrar-senha.routing.module.ts","./src/app/public/cadastrar-senha/validator/senha-igual-confirmacao.validator.ts","./src/app/public/fale-conosco/fale-conosco.component.ts","./src/app/public/fale-conosco/fale-conosco.module.ts","./src/app/public/fale-conosco/fale-conosco.routing.module.ts","./src/app/public/home/home.component.ts","./src/app/public/home/home.module.ts","./src/app/public/home/home.routing.module.ts","./src/app/public/login-modal/login-modal.component.ts","./src/app/public/programacao-navios/programacao-navios.component.ts","./src/app/public/programacao-navios/programacao-navios.module.ts","./src/app/public/programacao-navios/programacao-navios.routing.module.ts","./src/app/public/registrar/registrar.component.ts","./src/app/public/registrar/registrar.module.ts","./src/app/public/registrar/registrar.routing.module.ts","./src/app/public/reset-senha/reset-senha.component.ts","./src/app/public/reset-senha/reset-senha.module.ts","./src/app/public/reset-senha/reset-senha.routing.module.ts","./src/app/public/sobre/sobre.component.ts","./src/app/public/sobre/sobre.module.ts","./src/app/public/sobre/sobre.routing.module.ts","./src/app/shared/base.component.ts","./src/app/shared/cnpj-dropdown/cnpj-dropdown.component.ts","./src/app/shared/cnpj-dropdown/cnpj-dropdown.module.ts","./src/app/shared/confirm/confirm.component.ts","./src/app/shared/confirm/confirm.module.ts","./src/app/shared/confirm/confirm.service.ts","./src/app/shared/detalhes-container/detalhes-container.component.ts","./src/app/shared/detalhes-container/detalhes-container.module.ts","./src/app/shared/endereco/endereco.component.ts","./src/app/shared/endereco/endereco.module.ts","./src/app/shared/extensions/extensions.module.ts","./src/app/shared/mascara/mascara.module.ts","./src/app/shared/mensagem-modal/mensagem-modal.component.ts","./src/app/shared/message/message.component.ts","./src/app/shared/multiselect-dropdown/multiselect-dropdown.component.ts","./src/app/shared/multiselect-dropdown/multiselect-dropdown.module.ts","./src/app/shared/ng2-datepicker/ng2-datepicker.component.ts","./src/app/shared/ng2-datepicker/ng2-datepicker.module.ts","./src/app/shared/ngui-auto-complete/auto-complete.component.ts","./src/app/shared/ngui-auto-complete/auto-complete.directive.ts","./src/app/shared/ngui-auto-complete/auto-complete.module.ts","./src/app/shared/ngui-auto-complete/auto-complete.ts","./src/app/shared/paginacao/paginacao.component.ts","./src/app/shared/paginacao/paginacao.service.ts","./src/app/shared/shared.module.ts","./src/app/shared/slick-slider/slick-slider-component.ts","./src/app/shared/slimscroll/slimscroll-options.class.ts","./src/app/shared/slimscroll/slimscroll.directive.ts","./src/app/shared/slimscroll/slimscroll.module.ts","./src/app/shared/uploadarquivos/uploadarquivos.component.ts","./src/app/shared/uploadarquivos/uploadarquivos.module.ts","./src/environments/environment.ts","./src/main.ts","./node_modules/moment/locale/ sync ^\\.\\/.*$"],"sourcesContent":["import { \n Directive, \n HostListener, \n Input, \n OnInit,\n ElementRef \n} from '@angular/core';\nimport { \n NG_VALUE_ACCESSOR, ControlValueAccessor \n} from '@angular/forms';\n\n@Directive({\n selector: '[kzMaskCurrency]',\n providers: [{\n provide: NG_VALUE_ACCESSOR, \n useExisting: KzMaskCurrencyDirective, \n multi: true \n }]\n})\nexport class KzMaskCurrencyDirective implements ControlValueAccessor, OnInit {\n\n onTouched: any;\n onChange: any;\n\n separadorDecimal: string;\n separadorMilhar: string;\n prefixo: string;\n\n @Input('kzMaskCurrency') kzMask: any;\n\n constructor(private el: ElementRef) {}\n\n ngOnInit() {\n this.separadorDecimal = this.kzMask.decimal || ',';\n this.separadorMilhar = this.kzMask.milhar || '.';\n this.prefixo = this.kzMask.prefixo || '';\n }\n\n writeValue(value: any): void {\n if (value) {\n if (!isNaN(value)) {\n value = value.toFixed(2);\n }\n this.el.nativeElement.value = this.aplicarMascara(String(value));\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n @HostListener('keyup', ['$event']) \n onKeyup($event: any) {\n\n let valor: string = this.aplicarMascara($event.target.value);\n\n if (valor === '') {\n this.onChange('');\n $event.target.value = '';\n return;\n }\n\n if (this.separadorDecimal === ',') {\n this.onChange(valor.replace(/\\./g, '').replace(',', '.'));\n } else {\n this.onChange(valor.replace(/\\,/g, ''));\n }\n\n $event.target.value = valor;\n }\n\n @HostListener('blur', ['$event']) \n onBlur($event: any) {\n var pattern = '0' + this.separadorDecimal + '00';\n if ($event.target.value != pattern) {\n return;\n }\n this.onChange('');\n\n // DM - Defeito #5594: diretiva original foi modificada, usuário identificou que, ao digitar um valor específico na máscara,\n // ao passar pelo campo o valor se perdia (120,00), sendo que ao informar outro valor por ex (121,00) o valor era mantido normalmente. \n // $event.target.value = '';\n }\n\n /**\n * Aplica a máscara a determinado valor.\n *\n * @param string valorConverter\n * @return string\n */\n aplicarMascara(valorConverter: string): string {\n let valorNum = parseInt(valorConverter.replace(/\\D/g, ''), 10);\n let valorMask = '';\n let valor: string;\n\n if (isNaN(valorNum)) {\n return '';\n }\n\n valor = valorNum.toString();\n switch (valor.length) {\n case 1:\n valorMask = '0' + this.separadorDecimal + \n '0' + valor;\n break;\n case 2:\n valorMask = '0' + this.separadorDecimal + valor;\n break;\n case 3:\n valorMask = valor.substr(0, 1) + this.separadorDecimal + \n valor.substr(1, 2);\n break;\n default:\n break;\n }\n\n if (valorMask === '') {\n let sepMilhar = 0;\n for (let i = (valor.length - 3); i >= 0; i--) {\n if (sepMilhar === 3) {\n valorMask = this.separadorMilhar + valorMask;\n sepMilhar = 0;\n }\n valorMask = valor.charAt(i) + valorMask;\n sepMilhar++;\n }\n valorMask = valorMask + this.separadorDecimal + \n valor.substr(valor.length - 2, 2);\n }\n\n if (this.prefixo !== '') {\n valorMask = this.prefixo + ' ' + valorMask;\n }\n \n return valorMask;\n }\n\n}","import { Directive, HostListener, Input, ElementRef, ChangeDetectorRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\n@Directive({\n selector: '[Mascara]',\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: MascaraDirective,\n multi: true\n }]\n})\nexport class MascaraDirective implements ControlValueAccessor {\n\n onTouched: any;\n onChange: any;\n\n @Input('Mascara') Mascara: string;\n\n constructor(private el: ElementRef, private _changeDetect: ChangeDetectorRef) {}\n\n writeValue(value: any): void {\n if (value) {\n this.el.nativeElement.value = this.aplicarMascara(value);\n }\n else {\n this.el.nativeElement.value = \"\";\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n this._changeDetect.detectChanges();\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n @HostListener('keyup', ['$event'])\n onKeyup($event: any) {\n\n let valor = $event.target.value.replace(/\\D/g, '');\n\n // retorna caso pressionado backspace\n if ($event.keyCode === 8) {\n this.onChange(valor);\n return;\n }\n\n let pad = this.Mascara.replace(/\\D/g, '').replace(/9/g, '_');\n if (valor.length <= pad.length) {\n this.onChange(valor);\n }\n\n $event.target.value = this.aplicarMascara(valor);\n\n }\n\n @HostListener('blur', ['$event'])\n onBlur($event: any) {\n if ($event.target.value.length === this.Mascara.length) {\n return;\n }\n else\n $event.target.value = this.aplicarMascara($event.target.value);\n\n this.onChange($event.target.value);\n if ($event.target.value.length === this.Mascara.length) {\n return;\n }\n\n // this.onChange('');\n // $event.target.value = '';\n }\n\n aplicarMascara(valor: string): string {\n valor = valor.replace(/\\D/g, '');\n let pad = this.Mascara.replace(/\\D/g, '').replace(/9/g, '_');\n let valorMask = valor + pad.substring(0, pad.length - valor.length);\n let valorMaskPos = 0;\n \n //---- se for telefone, verifica 9º dígito ----\n var aux = valorMask.replace('_', '');\n if ((aux.length == 10) && (this.Mascara = \"(99) 99999-9999\")) {\n this.Mascara = \"(99) 9999-9999\";\n }\n else {\n if ((aux.length == 11) && (this.Mascara = \"(99) 9999-9999\")) {\n this.Mascara = \"(99) 99999-9999\";\n }\n }\n //------------------------------------------\n\n valor = '';\n for (let i = 0; i < this.Mascara.length; i++) {\n if (isNaN(parseInt(this.Mascara.charAt(i)))) {\n valor += this.Mascara.charAt(i);\n } else {\n valor += valorMask[valorMaskPos++];\n }\n }\n \n if (valor.indexOf('_') > -1) {\n valor = valor.substr(0, valor.indexOf('_'));\n }\n\n return valor;\n }\n}","export enum AnalyticsDimensoes {\n Empresa = \"Empresa\",\n Classificacao = \"Classificação\",\n Tela = \"Tela\",\n Filtro = \"Filtro\",\n Download = \"Download\",\n Operacao = \"Operação\",\n Erro = \"Erro\",\n Autenticado = \"Autenticado\",\n Email = \"E-mail\"\n}","export enum AnalyticsDownload {\n ExportacaoCSV = \"Exportação CSV\",\n Manual = \"Manual\",\n BoletoFatura = \"Boleto/Fatura\",\n Canhoto = \"Canhoto\",\n CTeXML = \"XML CTe\",\n CTePDF = \"PDF CTe\",\n RPS = \"RPS\",\n Zip = \"Zip\",\n ProgramacaoCompleta = \"Programação de Navios Completa\"\n}","export enum AnalyticsEmail {\n BoletoFatura = \"Boleto/Fatura\",\n Canhoto = \"Canhoto\",\n CTeXML = \"XML CTe\",\n CTePDF = \"PDF CTe\",\n RPS = \"RPS\",\n Zip = \"Zip\"\n}","export enum AnalyticsFiltro {\n CNPJ = \"CNPJ\",\n FiltroGenerico = \"Filtro Genérico\",\n FiltroGenerico2 = \"Filtro Genérico 2\",\n NavioViagem = \"Navio Viagem\",\n TipoOS = \"Tipo de OS\",\n Porto = \"Porto\",\n TipoServico = \"Tipo de Serviço\",\n Periodo10dias = \"Período - Últimos 10 dias\",\n Periodo15dias = \"Período - Últimos 15 dias\",\n Periodo30dias = \"Período - Últimos 30 dias\",\n PeriodoDeAte = \"Período - De/Até\",\n PeriodoAPartirDe = \"Período - A partir de\",\n PeriodoChegadaAte = \"Período - Chegada até\",\n Embarque = \"Embarque\",\n Desembarque = \"Desembarque\",\n Origem = \"Origem\",\n Destino = \"Destino\",\n IE = \"Inscrição Estadual\"\n}","export enum AnalyticsMetricas {\n Quantidade = \"Quantidade\",\n Acessos = \"Acessos\"\n}","export enum AnalyticsOperacao {\n FechamentoTotal = \"Fechamento total\",\n FechamentoParcial = \"Fechamento parcial\",\n VisualizacaoNF = \"Visualização de NF\",\n VisualizacaoCTM = \"Visualização de CTM\",\n NFsVinculadas = \"NFs Vinculadas\",\n AcessoLink1 = \"Acesso ao Link 1\",\n AcessoLink2 = \"Acesso ao Link 2\",\n AcessoLink3 = \"Acesso ao Link 3\",\n LoginRealizado = \"Login Realizado\",\n Duplicacao = \"Duplicação\",\n AcessoBooking = \"Acesso ao Booking\",\n ConsultaRastreamento = \"Consulta ao rastreamento\",\n AgendamentoRealizado = \"Agendamento realizado\",\n AgendamentoVisualizado = \"Agendamento visualizado\",\n SelecionarTodos = \"Selecionar todos\",\n DownloadAposSelecionarTodos = \"Download após selecionar todos\",\n EmailAposSelecionarTodos = \"E-mail após selecionar todos\"\n}","export enum AnalyticsTela {\n OrdemServico = \"Ordem de Serviço\",\n VincularNF = \"Vincular NF\",\n Home = \"Home\",\n ProgramacaoNavios = \"Programação de Navios\",\n Cotacao = \"Cotação\",\n Booking = \"Booking\",\n Rastreamento = \"Rastreamento\",\n Documentacao = \"Documentação\"\n}","export enum StatusGeolocalizacao {\n Realizado = 0,\n Proximo = 1,\n NaoRealizado = 2\n}","export enum TipoGeolocalizacao {\n Caminhao = 0,\n Navio = 1,\n Terminal = 2,\n TerminalComCarga = 3\n}\n","\nexport enum LogFrontFuncionalidade\n {\n Icms,\n Invalida,\n Login,\n ResetSenha,\n CadastreSe,\n ProgramacaoDeNavios,\n Cotacao,\n Booking,\n Rastreamento,\n Documentacao,\n OrdemDeServico,\n VincularNF,\n Usuarios,\n PerfisDeAcesso,\n Parametros,\n CaixaDeEntrada,\n FaleConosco,\n AneisERotas,\n ConsultaDeLogs,\n Sobre,\n GrupoEconomico,\n OkEntregaConsulta,\n TaxaEsporadica,\n TipoTaxaEsporadica,\n CustomerInfo,\n Porto,\n InfoPgtoAdicional\n }\n","export enum NivelLog {\n Error = 0,\n Debug = 1\n}","export enum Operacao\n{\n Invalida,\n Inclusao,\n Exclusao,\n Alteracao,\n Consulta,\n Email,\n Login,\n Download,\n Upload\n}","export enum PerfilUsuario {\n Administrador = 84,\n Cliente = 67,\n Provedor = 80,\n Ambos = 65\n}","\nimport { SentidoRota } from \"./sentido-rota.enum\";\n\nexport function SentidoRotaAware(constructor: Function){\n constructor.prototype.SentidoRota = SentidoRota;\n}","export enum SentidoRota {\n Norte = 78,\n Sul = 83\n}","export enum StatusOS{\n AVincular = 0,\n CTeEmitido = 1,\n Pendente = 2,\n Vinculada = 3\n}","export enum StatusUsuario{\n AguardandoAprovacao = 0,\n Aprovado = 1,\n Reprovado = 2,\n Inativado = 3\n}","import { Injectable } from '@angular/core';\nimport { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\n\nimport { AuthenticationService } from './../_services/authentication.service';\nimport { AppService } from './../_services/app.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthGuard implements CanActivate {\n\n constructor(\n private router: Router,\n private authenticationService: AuthenticationService,\n private appService: AppService) { }\n\n canActivate(route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot) {\n let path: string = state.url.replace('/', '');\n path = path.split('/')[0];\n if (this.appService.isAuthenticated() && this.appService.hasPermission(path)) {\n // logged in so return true\n return true;\n }\n\n // not logged in so redirect to login page\n this.router.navigate(['']);\n this.authenticationService.showModal();\n\n return false;\n }\n}","import { Injectable } from \"@angular/core\";\nimport { Data } from \"@angular/router\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class InfoPgtoAdicional {\n idInfoPgtoAdicional: number;\n idBooking: string;\n idProposta: number;\n idTipoPagto: number = 0;\n idClassificacaoCli: number = 0;\n idTipoServico: number = 0;\n vlrTotalNota: number = 0;\n vlrFreteNegociado: number = 0;\n percAdValorem: number = 0;\n percAliquotaIcms: number = 0;\n vlrAdValorem: number = 0;\n vlrBaf: number = 0;\n vlrTaxaAdicional: number = 0;\n vlrIcms: number = 0;\n vlrDesconto: number = 0;\n cnpjDeposito: string = '';\n bancoDeposito: string = '';\n agenciaDeposito: string = '';\n contaDeposito: string = '';\n descIndicador: string = '';\n ufPagadorFrete: string = '';\n origemModalId: string = '';\n destinoModalId: string = '';\n\n qrCode: string;\n\n paidAt: string | null;\n paymentStatus: string = '';\n\n customerName: string = '';\n cpfCnpj: string = '';\n qdtConteiner: number = 0;\n containerType: number = 0;\n vlrFreteTotal: number = 0;\n\n createdBy : string;\n createdOn: Date;\n updatedBy : string;\n\n dataBaseCalculo: string;\n\n totalPaymentAmount: number = 0;\n\n amountReceived: number = 0;\n\n getTotalPix(): number {\n return (this.vlrFreteNegociado +\n this.vlrBaf +\n this.vlrAdValorem +\n this.vlrIcms +\n this.vlrTaxaAdicional) - this.vlrDesconto;\n }\n}\n\n\nconst add: Function = (a: number, b: number): number => a + b;\n\n\n","export class PortoInstantPaymentRequest {\n id: number;\n code: string;\n description: string;\n city: string;\n state: string;\n region: number;\n createdBy: string;\n updatedBy: string;\n isEnabled: boolean;\n isNovo:boolean = true;\n}\n","import { AgendaEntrega } from 'app/_models/agenda-entrega';\nimport { Injectable } from \"@angular/core\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AgendaEntregaSalvar {\n idBooking: number = 0;\n idUsuario: number = 0;\n\n Containeres: AgendaEntrega[] = new Array();\n}","import { Endereco } from 'app/_models/endereco';\nimport { DateModel } from 'app/shared/ng2-datepicker/ng2-datepicker.component';\nimport { Injectable } from \"@angular/core\";\n@Injectable({\n providedIn: 'root'\n})\nexport class AgendaEntrega {\n idBooking: number;\n idUsuario: number;\n idAgendamento: number;\n idAgendContainer: number;\n idMunicipioEnt: number;\n tamanhoContainer: number;\n numAgendamento: number;\n numNotaFiscal: string;\n numLacre1: string;\n numContainer: string;\n numLacre2: string;\n numLacre3: string;\n numRefCliente: string;\n dataEntrega: Date;\n horaEntrega: string;\n observacao: string;\n cnpjEmb: string;\n ieEmb: string;\n nomeEmb: string;\n logradouroEnt: string;\n numeroEndEnt: string;\n bairroEnt: string;\n complementoEnt: string;\n municipioEnt: string;\n ufEnt: string;\n contatoEnt: string;\n dddEnt: string;\n foneEnt: string;\n cepEnt: string;\n categoriaContainer: string;\n statusAgendamento: string;\n valMercadoria: string;\n peso: string;\n dataCompleta: DateModel;\n idPorto: number;\n dataSaidaPortoDestino: Date;\n}\n","import { DateModel, IDateModel } from \"app/shared/ng2-datepicker/ng2-datepicker.component\";\n\nexport class AgendamentoColeta {\n idBooking: number;\n idUsuario: number;\n tamanhoContainer: number;\n qtdeContainer: number;\n numAgendamento: number;\n idMunicipioCol: number;\n idAgendamento: number;\n valMercadoria: number;\n\n strValMercadoria: string;\n strDataColeta: string;\n\n peso: number;\n numRefCliente: string;\n dataColeta: Date;\n horaColeta: string;\n observacao: string;\n cnpjEmb: string;\n ieEmb: string;\n nomeEmb: string;\n logradouroCol: string;\n numeroEndCol: string;\n bairroCol: string;\n complementoCol: string;\n municipioCol: string;\n ufCol: string;\n contatoCol: string;\n dddCol: string;\n foneCol: string;\n cepCol: string;\n categoriaContainer: string;\n statusAgendamento: string;\n\n dataSelecionada: DateModel;\n\n get telefoneColetaComDDD(): string {\n return this.dddCol + this.foneCol;\n }\n}","import { ArquivoUpload } from \"./arquivo-upload\";\n\nexport class AlteracoesArquivoUpload{\n arquivosParaUpload: ArquivoUpload[];\n arquivosParaExcluir: ArquivoUpload[];\n}","export class AlterarSenha{\n ID: string;\n Email: string;\n Senha: string;\n ConfirmaSenha: string;\n}","export class AnalyticsData {\n Index: number;\n Value: any;\n\n constructor(index: number = 0, value: any = ''){\n this.Index = index;\n this.Value = value;\n }\n}","import { SentidoRota } from '../_enums/sentido-rota.enum';\n\nexport class AnelRota {\n AnelRotaID: number; \n Ordem: number;\n Sentido: SentidoRota;\n CodigoPortoOrigem: number;\n CodigoPortoDestino: number;\n DescricaoPortoOrigem: string;\n DescricaoPortoDestino: string;\n AnelID: number;\n Novo: boolean;\n Ultimo: boolean;\n}","import { AnelRota } from './anel-rota';\n\nexport class Anel {\n AnelID: number; \n Nome: string;\n Rotas: AnelRota[];\n}","export class ArquivoUpload {\n idCotacao: number;\n idBooking: number;\n uploadJaRealizado: boolean;\n arquivo: any;\n\n get caminhoArquivo(): string {\n if (!this.arquivo)\n return null;\n return this.arquivo.name;\n }\n}","export class Assunto{\n AssuntoID: number;\n Descricao: string;\n}","import { Incidente } from \"app/_models/incidente\";\n\nexport class AtualizarOrdemServico {\n idUsuario: number;\n idTipoContainer: number;\n solicitContainerId: number;\n tamanhoContainer: number;\n idOs: number;\n tara: number;\n numOs: string;\n dhRetiradaTerminal: Date;\n dhChegadaCliente: Date;\n dhSaidaCliente: Date;\n dhChegadaTerminal: Date;\n numContainer: string;\n lacre1: string;\n lacre2: string;\n lacre3: string;\n placa: string;\n observacao: string;\n idTipoServico: number;\n indicAvulsa: boolean;\n\n justificativas: Incidente[];\n}\n","import { DateModel } from 'app/shared/ng2-datepicker/ng2-datepicker.component';\n\nexport class BaseFiltroTop {\n filtroGenerico: string;\n filtroGenerico2: string;\n municipiosOrigem: number[];\n portosOrigem: number[];\n municipiosDestino: number[];\n portosDestino: number[]; \n dataInicio: DateModel;\n dataFim: DateModel;\n tipoFiltroPeriodo: number;\n}","import { FiltrosLaterais } from './filtros-laterais';\nimport { Injectable } from \"@angular/core\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BookingRequest extends FiltrosLaterais{\n idUsuario: number;\n idBooking: number;\n filtroGenerico: string;\n dataIni: Date;\n dataFim: Date;\n idsMunicOrigem: string;\n idsMunicDestino: string;\n idsPortoOrigem: string;\n idsPortoDestino: string\n cnpjCli: string;\n ieCli: string;\n cnpjEmb: string;\n ieEmb: string;\n numBooking: string;\n numProposta: string;\n}","import { SporadicTaxItem } from './SporadicTaxItem';\nexport class BookingShippingRequest {\n cteIssueDate: string;\n containersQuantity: number;\n equipmentSize: number;\n region: string;\n modalDeparture: string;\n serviceType: string;\n classification: string;\n paymentType: string;\n shipArrivalDate: string;\n departureUf: string;\n destinationUf: string;\n\n adValoremRate: number;\n adValorem: number;\n\n nfTotalAmount: number;\n negotiatedShipping: number;\n originPortId: number;\n destinationPortId: number;\n originRegionId: number;\n destinationRegionId: number;\n originModalId: string;\n destinationModalId: string;\n\n icms: number;\n icmsRate: number;\n icmsRateNotes: string;\n totalPaymentAmount: number;\n totalShipping: number;\n additionalTaxes: number;\n bafTotalValue: number;\n textoPix: string;\n qrCode: string;\n numBooking: string;\n\n\n sporadicTaxList: SporadicTaxItem[];\n}\n","import { Transbordo } from './transbordo';\nimport { PropostaComercial } from './proposta-comercial';\nimport { AgendamentoColeta } from './agendamento-coleta';\nimport { TipoContainer } from 'app/_models/tipo-container';\nimport { Cliente } from 'app/_models/cliente';\nimport { Injectable } from \"@angular/core\";\nimport { Validators } from '@angular/forms';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class Booking {\n idBooking: number = 0;\n idProposta: number = 0;\n idTrecho: number = 0;\n idMunicEmb: number = 0;\n idCategoriaContainer: number = 0;\n tamanhoContainer: number = 0;\n qtdeContainer: number = 0;\n tipoContainer: string = \"\";\n idNavioViagem: number = 0;\n temperatura: number = 0;\n cargaOverAltura: number = 0;\n cargaOverEsquerda: number = 0;\n cargaOverDireita: number = 0;\n cargaOverFrontal: number = 0;\n idUsuario: number = 0;\n cargaOverTraseiro: number = 0;\n cnpjCli: string = '';\n ieCli: string = '';\n contatoCli: string = '';\n Embarcador: Cliente = new Cliente();\n nomeEmbarcador: string = '';\n cnpjEmb: string = '';\n ieEmb: string = '';\n cepEmb: string = '';\n logradouroEmb: string = '';\n numeroEmb: string = '';\n numeroEndEmb: string = '';\n complementoEmb: string = '';\n bairroEmb: string = '';\n contatoEmb: string = '';\n dddEmb: string = '';\n foneEmb: string = '';\n telefone: string = '';\n email: string = '';\n emailEmb: string = '';\n modal: string = '';\n classe: string = '';\n sequencia: string = '';\n numUno: string = '';\n psn: string = '';\n obsCargaPerigosa: string = '';\n obsCargaRefrigerada: string = '';\n obsCargaOver: string = '';\n numBooking: string = '';\n numProposta: string = '';\n filtroGenerico: string = '';\n obsGeral: string = '';\n flagCargaPerigosa: string = '';\n flagCargaRefrigerada: string = '';\n flagCargaOver: string = '';\n\n pesoBruto: number = 0;\n idViagemNavio: number = 0;\n viagemNavio: string = '';\n idPortoOri: number = 0;\n portoOri: string = '';\n ufPortoOri: string = '';\n idMunicOri: number = 0;\n municOri: string = '';\n ufMunicOri: string = '';\n idNavioViagemTransb: number = 0;\n NavioViagemTransb: string = '';\n portoTransb: string = '';\n ufPortoTransb: string = '';\n idPortoTransb: number = 0;\n idMunicDes: number = 0;\n municDes: string = '';\n ufDes: string = '';\n idPortoDes: number = 0;\n portoDes: string = '';\n ufPortoDes: string = '';\n statusBooking: string = '';\n statusProposta: string = '';\n nomeEmb: string = '';\n municipioEmb: string = '';\n dhPrevEmbarque: Date = new Date();\n dhPrevDesembarque: Date = new Date();\n strPrevEmbarque: string;\n strPrevDesembarque: string;\n categoriaContainer: string = '';\n\n DataPrevChegadaDes: Date;\n DataPrevChegadaOri: Date;\n DataDeadlineEntregaEmb: Date;\n strDataPrevChegadaDes: string;\n strDataPrevChegadaOri: string;\n strDataDeadlineEntregaEmb: string;\n\n idsPortoOrigem: string = '';\n idsMunicOrigem: string = '';\n idsMunicDestino: string = '';\n idsPortoDestino: string = '';\n flagEscoltaOrigem: string = '';\n flagEscoltaDestino: string = '';\n ufEmb: string = '';\n idMunicipioEmb: number = 0;\n obsRejeicaoCli: string = '';\n flagGenset: string = '';\n seguro: string = '';\n adValorem: number = 0;\n\n dataIni: Date = new Date();\n dataFim: Date = new Date();\n\n status: string;\n loading: boolean;\n\n idNavioTransbordo: number = 0;\n idPortoTransbordo: number = 0;\n\n tipoDeContainer : TipoContainer;\n\n detalheDoBooking: Booking;\n\n AgendamentosDeColeta: AgendamentoColeta[];\n proposta: PropostaComercial;\n\n usuarioSolicitantePortal: string;\n dataHoraSolicitacao: Date;\n servicosAdicionais: string;\n\n indicPagtoAVista: string = '';\n\n Transbordos: Transbordo[];\n\n\n dhDeadlineEntregaEmbarque: Date;\n\n isInstantPaymentCreditado: boolean = false;\n dhInstantPayment:string ='';\n vlrTotalFrete: number = 0;\n\n//-------------------------\n//DAQUI PRA BAIXO SÃO PROPRIEDADES/FUNÇÕES CUSTOMIZADAS\n\n get telefoneEmbarcadorComDDD(): string {\n return this.dddEmb + this.foneEmb;\n }\n\n private _oriPorto: boolean = true;\n get oriPorto(): boolean {\n if ((this.modal == undefined) || (this.modal == \"\") || (this.modal.startsWith('/')))\n return undefined;\n this._oriPorto = this.modal.startsWith(\"PO\");\n\n return this._oriPorto;\n }\n set oriPorto(value: boolean) {\n this._oriPorto = value;\n this.atualizaModal('ori');\n }\n\n private _desPorto: boolean = true;\n get desPorto(): boolean {\n if ((this.modal == undefined) || (this.modal == \"\") || (this.modal.endsWith('/')))\n return undefined;\n\n this._desPorto = this.modal.endsWith(\"PO\");\n return this._desPorto;\n }\n set desPorto(value: boolean) {\n this._desPorto = value;\n this.atualizaModal('des');\n }\n\n private atualizaModal(tipo: string) {\n //PO/PO\n if (tipo == 'ori') {\n if (this.desPorto != undefined) {\n this.modal = (this._oriPorto ? \"PO\" : \"PA\") + \"/\" + (this._desPorto ? \"PO\" : \"PA\");\n }\n else\n this.modal = (this._oriPorto ? \"PO\" : \"PA\") + \"/\";\n }\n else {\n if (this.oriPorto != undefined)\n this.modal = (this._oriPorto ? \"PO\" : \"PA\") + \"/\" + (this._desPorto ? \"PO\" : \"PA\");\n else\n this.modal = \"/\" + (this._desPorto ? \"PO\" : \"PA\");\n }\n\n if ((this.modal != undefined) && (this.modal != \"\"))\n this.modal = this.modal.replace(\"//\", \"/\");\n\n }\n\n private _cargaPerigosa: boolean = false;\n get cargaPerigosa(): boolean {\n this._cargaPerigosa = this.flagCargaPerigosa == 'S';\n return this._cargaPerigosa;\n }\n set cargaPerigosa(value: boolean) {\n this._cargaPerigosa = value;\n this.flagCargaPerigosa = this._cargaPerigosa ? 'S' : 'N';\n }\n\n private _cargaRefrigerada: boolean = false;\n get cargaRefrigerada(): boolean {\n if ((this.flagCargaRefrigerada == undefined) || (this.flagCargaRefrigerada == \"\"))\n return undefined;\n this._cargaRefrigerada = this.flagCargaRefrigerada == 'S';\n return this._cargaRefrigerada;\n }\n set cargaRefrigerada(value: boolean) {\n this._cargaRefrigerada = value;\n this.flagCargaRefrigerada = this._cargaRefrigerada ? 'S' : 'N';\n }\n\n private _cargaOver: boolean = false;\n get cargaOver(): boolean {\n if ((this.flagCargaOver == undefined) || (this.flagCargaOver == \"\"))\n return undefined;\n this._cargaOver = this.flagCargaOver == 'S';\n return this._cargaOver;\n }\n set cargaOver(value: boolean) {\n this._cargaOver = value;\n this.flagCargaOver = this._cargaOver ? 'S' : 'N';\n }\n\n private _pagtoAVista: boolean = false;\n get pagtoAVista(): boolean {\n this._pagtoAVista = this.indicPagtoAVista == 'S';\n return this._pagtoAVista;\n }\n set pagtoAVista(value: boolean) {\n this._pagtoAVista = value;\n this.indicPagtoAVista = this._pagtoAVista ? 'S' : 'N';\n }\n\n setFlagsEnvio() {\n if (this.flagCargaRefrigerada == '' || \"SN\".indexOf(this.flagCargaRefrigerada) === -1)\n this.flagCargaRefrigerada = (this.cargaRefrigerada == undefined) ? \"N\" : (!this.cargaRefrigerada) ? 'N' : 'S';\n\n if (this.flagCargaOver == '' || \"SN\".indexOf(this.flagCargaOver) === -1)\n this.flagCargaOver = (this.cargaOver == undefined) ? \"N\" : (!this.cargaOver) ? 'N' : 'S';\n\n if (this.flagCargaPerigosa == '' || \"SN\".indexOf(this.flagCargaPerigosa) === -1)\n this.flagCargaPerigosa = (this.cargaPerigosa == undefined) ? \"N\" : (!this.cargaPerigosa) ? 'N' : 'S';\n }\n\n obtemTextoEmbarque() {\n if (!this || !this.modal)\n return '';\n\n if (this.modal.startsWith('PO'))\n if(this.portoDes)\n return (this.portoOri + ' - ' + this.ufPortoOri).toUpperCase();\n else {\n if (!this.proposta)\n return '';\n else\n return (this.proposta.nomePortoOrigem + ' - ' + this.proposta.ufPortoOrigem).toUpperCase();\n }\n else\n return (this.municOri + ' - ' + this.ufMunicOri).toUpperCase();\n }\n\n obtemTextoDesembarque() {\n if (!this || !this.modal)\n return '';\n\n if (this.modal.endsWith('PO'))\n if(this.portoDes)\n return (this.portoDes + ' - ' + this.ufPortoDes).toUpperCase();\n else {\n if (!this.proposta)\n return '';\n else\n return (this.proposta.nomePortoDestino + ' - ' + this.proposta.ufPortoDestino).toUpperCase();\n }\n else\n return (this.municDes + ' - ' + this.ufDes).toUpperCase();\n }\n}\n","export class BuscaViagensBookingViewModel{\n IdPortoOrigem: number;\n IdPortoDestino: number;\n Modal: string;\n TipoPeriodo: string;\n DataReferencia: Date;\n DataSelecionada: Date;\n}","export class ClienteClassificacao {\n codigo: string;\n descricao: string;\n}\n","export class ClienteRequest\n{\n CNPJ: string;\n InscricaoEstadual: string;\n\n idProposta: number;\n idCotacao: number;\n dataIni: Date;\n datafim: Date;\n tipoConsulta: number;\n idUsuario: number;\n idMunicipio: number;\n}\n","import { Endereco } from \"app/_models/endereco\";\n\nexport class Cliente\n{\n CNPJ: string;\n InscricaoEstadual: string;\n Nome: string;\n NomeFantasia: string;\n Contato: string;\n Email: string;\n DDD: string;\n Fone: string;\n\n Enderecos: Endereco[];\n}","export class Co2Total {\n cnpjCli: string;\n idUsuario: string;\n co2: number;\n indicEcofrete: boolean;\n}\n","export class ConfigUpload {\n extensoesSuportadas: string = \"XLSX, XLS, CSV, JPG, PDF, DOC, DOCX, TXT\";\n quantidadeMaxArquivos: number = 15;\n limiteTamanhoMB: number = 10;\n}","import { FiltrosLaterais } from './filtros-laterais';\nimport { Injectable } from \"@angular/core\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CotacaoRequest extends FiltrosLaterais {\n Status: string;\n CotacaoID: number; \n UsuarioID: number;\n IdTrecho: number;\n idsMunicDes: string; \n idsMunicOri: string; \n idsPortoOri: string; \n idsPortoDes: string;\n cnpjCli: string;\n}","import { ResponsavelDesova } from './responsavelDesova';\nimport { ResponsaveisDesova } from 'app/_enums/responsaveisDesova.enum';\nimport { ResponsavelOva } from './responsavelOva';\nimport { ResponsaveisOva } from 'app/_enums/responsaveisOva.enum';\nimport { TipoContainer } from \"app/_models/tipo-container\";\nimport { ArquivoUpload } from './arquivo-upload';\nimport { Injectable } from \"@angular/core\";\n@Injectable({\n providedIn: 'root'\n})\nexport class Cotacao {\n\n IdCotacao: number = 0;\n IdUsuario: number = 0;\n IdTrecho: number = 0;\n numCotacao: number = 0;\n qtdeContainer: number = 0;\n CargaOverAltura: number = 0;\n CargaOverEsquerda: number = 0;\n CargaOverDireita: number = 0;\n CargaOverFrontal: number = 0;\n CargaOverTraseiro: number = 0;\n tempCargaRefrigerada: number = 0;\n tempoHrEstimadodesova: number = 0;\n tempoHrEstimadoOva: number = 0;\n qtdeAjudanteOva: number = 0;\n tamanhoContainer: number = 0;\n idCategoriaContainer: number = 0;\n qtdeAjudantedesova: number = 0;\n valEquipeServEspDes: number = 0;\n idPortoDes: number = 0;\n idMunicEntrega: number = 0;\n idPortoOri: number = 0;\n idMunicColeta: number = 0;\n idFamiliaProduto: number = 0;\n idMunicDes: number = 0;\n idMunicOri: number = 0;\n numProposta: number = 0;\n\n // valEquipeIndicaOri: number = 0;\n // valEquipeIndicaDes: number = 0;\n metrosCubicosDes: number = 0;\n valMercadoria: number = 0;\n valEquipeServEspOri: number = 0;\n metrosCubicosOri: number = 0;\n valCustoPrecificacaoOri: number = 0;\n valCustoPrecificacaoDes: number = 0;\n pesoContainer: number = 0;\n valFreteOTM: number = 0;\n\n cnpjCli: string = '';\n ieCli: string = '';\n nomeCli: string = '';\n nomeFantasiaCli: string = '';\n tipo: string = '';\n periodicidade: string = '';\n modal: string = '';\n descCategoriaContainer: string = '';\n responsavelEstufagem: string = '';\n materialEspecialOva: string = '';\n tipoEmbalagemCarga: string = '';\n respEstufagemDes: string = '';\n materialEspecialDesova: string = '';\n descMaterialPeacao: string = '';\n nomePortoDestino: string = '';\n municEntrega: string = '';\n ufPortoDestino: string = '';\n ufEntrega: string = '';\n nomePortoOrigem: string = '';\n ufPortoOrigem: string = '';\n municColeta: string = '';\n ufColeta: string = '';\n descFamiliaProduto: string = '';\n numeroUNO: string = '';\n classe: string = '';\n sequencia: string = '';\n properShippingName: string = '';\n obsCargaPerigosa: string = '';\n obsCargaRefrigerada: string = '';\n obsCargaOver: string = '';\n obsGeral: string = '';\n tipoOperacaoComercial: string = '';\n statusCotacao: string = '';\n obsComplementar: string = '';\n obsEcargo: string = '';\n dhUltimaAltProposta: string = '';\n seguro: string = '';\n VeiculoEspecialDes: string = '';\n VeiculoEspecialOri: string = '';\n outrosProdutos: string = '';\n strValFreteOTM: string = '';\n\n tipoContainer: string = '';\n categoriaContainer: string = '';\n municOri: string = '';\n ufMunicOri: string = '';\n portoOri: string = '';\n ufPortoOri: string = '';\n municDes: string = '';\n ufMunicDes: string = '';\n portoDes: string = '';\n ufPortoDes: string = '';\n\n flagEquipeIndicaCliOri: string = '';\n flagEquipeIndicaCliDes: string = '';\n flagEquipePropriaOri: string = '';\n flagEquipePropriaDes: string = '';\n flagConferenteOri: string = '';\n flagConferenteDes: string = '';\n flagEstruturaOvaContainer: string = '';\n flagShipperOwnContainer: string = '';\n flagOvaTerminal: string = '';\n //flagEquipeClienteOva: string = '';\n flagDesovaTerminal: string = '';\n //flagEquipeClienteDesova: string = '';\n flagMaterialPeacao: string = '';\n flagCargaRefrigerada: string = '';\n flagCargaOver: string = '';\n flagCargaPerigosa: string = '';\n flagEstruturaDesovaContainer: string = '';\n flagOvaDesova: string = '';\n flagConferente: string = '';\n flagGensetOri: string = '';\n flagGensetDes: string = '';\n\n flagMaterialEspecialDesova: string = '';\n flagMaterialEspecialOva: string = '';\n\n valEquipeIndicaOri: string = '';\n valEquipeIndicaDes: string = '';\n flagEquipeClienteOva: string = '';\n flagEstufagemTerminal: string = '';\n flagOvaEmbarcador: string = '';\n flagDesovaRecebedor: string = '';\n flagEscoltaOri: string = '';\n flagEscoltaDes: string = '';\n adValorem: number = 0;\n\n Status: string = '';\n retorno: string = '';\n loading: boolean;\n\n tipoDeContainer: TipoContainer;\n detalheDaCotacao: Cotacao;\n Arquivos: ArquivoUpload[];\n\n //-------------------------\n //DAQUI PRA BAIXO SÃO PROPRIEDADES/FUNÇÕES CUSTOMIZADAS\n private _oriPorto: boolean = true;\n get oriPorto(): boolean {\n if ((this.modal == undefined) || (this.modal == \"\") || (this.modal.startsWith('/')))\n return undefined;\n this._oriPorto = this.modal.startsWith(\"PO\");\n\n return this._oriPorto;\n }\n set oriPorto(value: boolean) {\n this._oriPorto = value;\n this.atualizaModal('ori');\n }\n\n private _desPorto: boolean = true;\n get desPorto(): boolean {\n if ((this.modal == undefined) || (this.modal == \"\") || (this.modal.endsWith('/')))\n return undefined;\n\n this._desPorto = this.modal.endsWith(\"PO\");\n return this._desPorto;\n }\n set desPorto(value: boolean) {\n this._desPorto = value;\n this.atualizaModal('des');\n }\n\n get escoltaOrigem(): boolean{\n return this.flagEscoltaOri == 'S';\n }\n set escoltaOrigem(value:boolean){\n this.flagEscoltaOri = value ? 'S' : 'N';\n }\n\n get escoltaDestino(): boolean{\n return this.flagEscoltaDes == 'S';\n }\n set escoltaDestino(value:boolean){\n this.flagEscoltaDes = value ? 'S' : 'N';\n }\n\n private atualizaModal(tipo: string) {\n //PO/PO\n if (tipo == 'ori') {\n if (this.desPorto != undefined) {\n this.modal = (this._oriPorto ? \"PO\" : \"PA\") + \"/\" + (this._desPorto ? \"PO\" : \"PA\");\n }\n else\n this.modal = (this._oriPorto ? \"PO\" : \"PA\") + \"/\";\n }\n else {\n if (this.oriPorto != undefined)\n this.modal = (this._oriPorto ? \"PO\" : \"PA\") + \"/\" + (this._desPorto ? \"PO\" : \"PA\");\n else\n this.modal = \"/\" + (this._desPorto ? \"PO\" : \"PA\");\n }\n\n if ((this.modal != undefined) && (this.modal != \"\"))\n this.modal = this.modal.replace(\"//\", \"/\");\n\n }\n\n private _cargaPerigosa: boolean = false;\n get cargaPerigosa(): boolean {\n if ((this.flagCargaPerigosa == undefined) || (this.flagCargaPerigosa == \"\"))\n return undefined;\n this._cargaPerigosa = this.flagCargaPerigosa == 'S';\n return this._cargaPerigosa;\n }\n set cargaPerigosa(value: boolean) {\n this._cargaPerigosa = value;\n this.flagCargaPerigosa = this._cargaPerigosa ? 'S' : 'N';\n }\n\n private _cargaRefrigerada: boolean = false;\n get cargaRefrigerada(): boolean {\n if ((this.flagCargaRefrigerada == undefined) || (this.flagCargaRefrigerada == \"\"))\n return undefined;\n this._cargaRefrigerada = this.flagCargaRefrigerada == 'S';\n return this._cargaRefrigerada;\n }\n set cargaRefrigerada(value: boolean) {\n this._cargaRefrigerada = value;\n this.flagCargaRefrigerada = this._cargaRefrigerada ? 'S' : 'N';\n }\n\n private _cargaOver: boolean = false;\n get cargaOver(): boolean {\n if ((this.flagCargaOver == undefined) || (this.flagCargaOver == \"\"))\n return undefined;\n this._cargaOver = this.flagCargaOver == 'S';\n return this._cargaOver;\n }\n set cargaOver(value: boolean) {\n this._cargaOver = value;\n this.flagCargaOver = this._cargaOver ? 'S' : 'N';\n }\n\n private _estruturaOvaContainer: boolean = false;\n get estruturaOvaContainer(): boolean {\n if ((this.flagEstruturaOvaContainer == undefined) || (this.flagEstruturaOvaContainer == \"\"))\n return undefined;\n this._estruturaOvaContainer = this.flagEstruturaOvaContainer == 'S';\n return this._estruturaOvaContainer;\n }\n set estruturaOvaContainer(value: boolean) {\n this._estruturaOvaContainer = value;\n this.flagEstruturaOvaContainer = this._estruturaOvaContainer ? 'S' : 'N';\n }\n\n private _ovaTerminal: boolean = false;\n get ovaTerminal(): boolean {\n if ((this.flagOvaTerminal == undefined) || (this.flagOvaTerminal == ''))\n return undefined;\n this._ovaTerminal = this.flagOvaTerminal == 'S';\n return this._ovaTerminal;\n }\n set ovaTerminal(value: boolean) {\n this._ovaTerminal = value;\n this.flagOvaTerminal = this._ovaTerminal ? 'S' : 'N';\n }\n\n private _materialPeacao: boolean = false;\n get materialPeacao(): boolean {\n if ((this.flagMaterialPeacao == undefined) || (this.flagMaterialPeacao == ''))\n return undefined;\n this._materialPeacao = this.flagMaterialPeacao == 'S';\n return this._materialPeacao;\n }\n set materialPeacao(value: boolean) {\n this._materialPeacao = value;\n this.flagMaterialPeacao = this._materialPeacao ? 'S' : 'N';\n }\n\n private _equipeIndicaCliOri: boolean = false;\n get equipeIndicaCliOri(): boolean {\n if ((this.flagEquipeIndicaCliOri == undefined) || (this.flagEquipeIndicaCliOri == '' || 'SN'.indexOf(this.flagEquipeIndicaCliOri) === -1))\n return undefined;\n this._equipeIndicaCliOri = this.flagEquipeIndicaCliOri == 'S';\n return this._equipeIndicaCliOri;\n }\n set equipeIndicaCliOri(value: boolean) {\n this._equipeIndicaCliOri = value;\n this.flagEquipeIndicaCliOri = this._equipeIndicaCliOri ? 'S' : 'N';\n }\n\n private _estruturaDesovaContainer: boolean = false;\n get estruturaDesovaContainer(): boolean {\n if ((this.flagEstruturaDesovaContainer == undefined) || (this.flagEstruturaDesovaContainer == '' || 'SN'.indexOf(this.flagEstruturaDesovaContainer) === -1))\n return undefined;\n this._estruturaDesovaContainer = this.flagEstruturaDesovaContainer == 'S';\n return this._estruturaDesovaContainer;\n }\n set estruturaDesovaContainer(value: boolean) {\n this._estruturaDesovaContainer = value;\n this.flagEstruturaDesovaContainer = this._estruturaDesovaContainer ? 'S' : 'N';\n }\n\n private _desovaTerminal: boolean = false;\n get desovaTerminal(): boolean {\n if ((this.flagDesovaTerminal == undefined) || (this.flagDesovaTerminal == '' || 'SN'.indexOf(this.flagDesovaTerminal) === -1))\n return undefined;\n this._desovaTerminal = this.flagDesovaTerminal == 'S';\n return this._desovaTerminal;\n }\n set desovaTerminal(value: boolean) {\n this._desovaTerminal = value;\n this.flagDesovaTerminal = this._desovaTerminal ? 'S' : 'N';\n }\n\n private _materialEspecialOva: boolean = false;\n get materialEspecialOvaFlag(): boolean {\n if ((this.flagMaterialEspecialOva == undefined) || (this.flagMaterialEspecialOva == ''))\n return undefined;\n this._materialEspecialOva = this.flagMaterialEspecialOva == 'S';\n return this._materialEspecialOva;\n }\n set materialEspecialOvaFlag(value: boolean) {\n this._materialEspecialOva = value;\n this.flagMaterialEspecialOva = this._materialEspecialOva ? 'S' : 'N';\n }\n\n private _materialEspecialDesova: boolean = false;\n get materialEspecialDesovaFlag(): boolean {\n if ((this.flagMaterialEspecialDesova == undefined) || (this.flagMaterialEspecialDesova == ''))\n return undefined;\n this._materialEspecialDesova = this.flagMaterialEspecialDesova == 'S';\n return this._materialEspecialDesova;\n }\n set materialEspecialDesovaFlag(value: boolean) {\n this._materialEspecialDesova = value;\n this.flagMaterialEspecialDesova = this._materialEspecialDesova ? 'S' : 'N';\n }\n\n private _equipeIndicaCliDes: boolean = false;\n get equipeIndicaCliDes(): boolean {\n if ((this.flagEquipeIndicaCliDes == undefined) || (this.flagEquipeIndicaCliDes == ''))\n return undefined;\n this._equipeIndicaCliDes = this.flagEquipeIndicaCliDes == 'S';\n return this._equipeIndicaCliDes;\n }\n set equipeIndicaCliDes(value: boolean) {\n this._equipeIndicaCliDes = value;\n this.flagEquipeIndicaCliDes = this._equipeIndicaCliDes ? 'S' : 'N';\n }\n\n private _conferenteOri: boolean = false;\n get conferenteOri(): boolean {\n if ((this.flagConferenteOri == undefined) || (this.flagConferenteOri == ''))\n return undefined;\n this._conferenteOri = this.flagConferenteOri == 'S';\n return this._conferenteOri;\n }\n set conferenteOri(value: boolean) {\n this._conferenteOri = value;\n this.flagConferenteOri = this._conferenteOri ? 'S' : 'N';\n }\n\n private _conferenteDes: boolean = false;\n get conferenteDes(): boolean {\n if ((this.flagConferenteDes == undefined) || (this.flagConferenteDes == ''))\n return undefined;\n this._conferenteDes = this.flagConferenteDes == 'S';\n return this._conferenteDes;\n }\n set conferenteDes(value: boolean) {\n this._conferenteDes = value;\n this.flagConferenteDes = this._conferenteDes ? 'S' : 'N';\n }\n\n private _gensetOri: boolean = false;\n get gensetOri(): boolean {\n if (this.flagGensetOri == undefined) \n return undefined;\n this._gensetOri = this.flagGensetOri == 'S';\n return this._gensetOri;\n }\n set gensetOri(value: boolean) {\n this._gensetOri = value;\n this.flagGensetOri = this._gensetOri ? 'S' : 'N';\n }\n\n private _gensetDes: boolean = false;\n get gensetDes(): boolean {\n if (this.flagGensetDes == undefined) \n return undefined;\n this._gensetDes = this.flagGensetDes == 'S';\n return this._gensetDes;\n }\n set gensetDes(value: boolean) {\n this._gensetDes = value;\n this.flagGensetDes = this._gensetDes ? 'S' : 'N';\n }\n\n private _shipper: boolean = false;\n get shipperOwnContainer(): boolean {\n if ((this.flagShipperOwnContainer == undefined) || (this.flagShipperOwnContainer == '' || 'SN'.indexOf(this.flagShipperOwnContainer) === -1))\n return undefined;\n this._shipper = this.flagShipperOwnContainer == 'S';\n return this._shipper;\n }\n set shipperOwnContainer(value: boolean) {\n this._shipper = value;\n this.flagShipperOwnContainer = this._shipper ? 'S' : 'N';\n }\n\n public responsaveisOva: ResponsavelOva[] = new Array();\n public responsaveisDesova: ResponsavelDesova[] = new Array();\n\n get respOva(): ResponsavelOva {\n return this.responsaveisOva.find(x => x.descricao == this.responsavelEstufagem);\n }\n set respOva(value: ResponsavelOva) {\n this.responsavelEstufagem = this.responsaveisOva.find(x => x.codigo == value.codigo).descricao;\n }\n\n get respDesova(): ResponsavelDesova {\n return this.responsaveisDesova.find(x => x.descricao == this.respEstufagemDes);\n }\n set respDesova(value: ResponsavelDesova) {\n this.respEstufagemDes = this.responsaveisDesova.find(x => x.codigo == value.codigo).descricao;\n }\n\n private _flagEmbalagemEOutros: boolean = undefined;\n get flagEmbalagemEOutros(): boolean {\n if (this.tipoEmbalagemCarga == undefined)\n return undefined;\n\n return this._flagEmbalagemEOutros;\n }\n set flagEmbalagemEOutros(value: boolean) {\n this._flagEmbalagemEOutros = (this.tipoEmbalagemCarga == 'Outros');\n }\n\n get embalagem(): string {\n return this.tipoEmbalagemCarga;\n }\n set embalagem(value: string) {\n if (value == 'Outros') {\n //if (!this._flagEmbalagemEOutros)\n if (!this.flagEmbalagemEOutros && this.flagEmbalagemEOutros != undefined)\n this.tipoEmbalagemCarga = '';\n\n this._flagEmbalagemEOutros = true;\n }\n else {\n this.tipoEmbalagemCarga = value;\n this._flagEmbalagemEOutros = false;\n }\n }\n\n private _flagVeiculoOriEOutros: boolean = undefined;\n get flagVeiculoOriEOutros(): boolean {\n if (this.VeiculoEspecialOri == undefined)\n return undefined;\n\n return this._flagVeiculoOriEOutros;\n }\n set flagVeiculoOriEOutros(value: boolean) {\n this._flagVeiculoOriEOutros = (this.VeiculoEspecialOri == 'Outros');\n }\n\n get veiculoOrigem(): string {\n return this.VeiculoEspecialOri;\n }\n set veiculoOrigem(value: string) {\n if (value == 'Outros') {\n if (!this.flagVeiculoOriEOutros && this.flagVeiculoOriEOutros != undefined)\n this.VeiculoEspecialOri = '';\n\n this._flagVeiculoOriEOutros = true;\n }\n else {\n this.VeiculoEspecialOri = value;\n this._flagVeiculoOriEOutros = false;\n }\n }\n\n private _flagVeiculoDesEOutros: boolean = undefined;\n get flagVeiculoDesEOutros(): boolean {\n if (this.VeiculoEspecialDes == undefined)\n return undefined;\n\n return this._flagVeiculoDesEOutros;\n }\n set flagVeiculoDesEOutros(value: boolean) {\n this._flagVeiculoDesEOutros = (this.VeiculoEspecialDes == 'Outros');\n }\n\n get veiculoDestino(): string {\n return this.VeiculoEspecialDes;\n }\n set veiculoDestino(value: string) {\n if (value == 'Outros') {\n if (!this.flagVeiculoDesEOutros && this.flagVeiculoDesEOutros != undefined)\n this.VeiculoEspecialDes = '';\n\n this._flagVeiculoDesEOutros = true;\n }\n else {\n this.VeiculoEspecialDes = value;\n this._flagVeiculoDesEOutros = false;\n }\n }\n\n setFlagsEnvio() {\n if (this.flagEquipeIndicaCliOri == '' || 'SN'.indexOf(this.flagEquipeIndicaCliOri) === -1)\n this.flagEquipeIndicaCliOri = (this.equipeIndicaCliOri == undefined) ? 'N' : (!this.equipeIndicaCliOri) ? 'N' : 'S';\n\n if (this.flagEquipeIndicaCliDes == '' || 'SN'.indexOf(this.flagEquipeIndicaCliDes) === -1)\n this.flagEquipeIndicaCliDes = (this.equipeIndicaCliDes == undefined) ? 'N' : (!this.equipeIndicaCliDes) ? 'N' : 'S';\n\n if (this.flagConferenteOri == '' || 'SN'.indexOf(this.flagConferenteOri) === -1)\n this.flagConferenteOri = (this.conferenteOri == undefined) ? 'N' : (!this.conferenteOri) ? 'N' : 'S';\n\n if (this.flagConferenteDes == '' || 'SN'.indexOf(this.flagConferenteDes) === -1)\n this.flagConferenteDes = (this.conferenteDes == undefined) ? 'N' : (!this.conferenteDes) ? 'N' : 'S';\n\n if (this.flagEstruturaOvaContainer == '' || 'SN'.indexOf(this.flagEstruturaOvaContainer) === -1)\n this.flagEstruturaOvaContainer = (this.estruturaOvaContainer == undefined) ? 'N' : (!this.estruturaOvaContainer) ? 'N' : 'S';\n\n if (this.flagEstruturaDesovaContainer == '' || 'SN'.indexOf(this.flagEstruturaDesovaContainer) === -1)\n this.flagEstruturaDesovaContainer = (this.estruturaDesovaContainer == undefined) ? 'N' : (!this.estruturaDesovaContainer) ? 'N' : 'S';\n\n if (this.flagShipperOwnContainer == '' || 'SN'.indexOf(this.flagShipperOwnContainer) === -1)\n this.flagShipperOwnContainer = (this.shipperOwnContainer == undefined) ? 'N' : (!this.shipperOwnContainer) ? 'N' : 'S';\n\n if (this.flagOvaTerminal == '' || 'SN'.indexOf(this.flagOvaTerminal) === -1)\n this.flagOvaTerminal = (this.ovaTerminal == undefined) ? 'N' : (!this.ovaTerminal) ? 'N' : 'S';\n\n if (this.flagDesovaTerminal == '' || 'SN'.indexOf(this.flagDesovaTerminal) === -1)\n this.flagDesovaTerminal = (this.desovaTerminal == undefined) ? 'N' : (!this.desovaTerminal) ? 'N' : 'S';\n\n if (this.flagMaterialPeacao == '' || 'SN'.indexOf(this.flagMaterialPeacao) === -1)\n this.flagMaterialPeacao = (this.materialPeacao == undefined) ? 'N' : (!this.materialPeacao) ? 'N' : 'S';\n\n if (this.flagCargaRefrigerada == '' || 'SN'.indexOf(this.flagCargaRefrigerada) === -1)\n this.flagCargaRefrigerada = (this.cargaRefrigerada == undefined) ? 'N' : (!this.cargaRefrigerada) ? 'N' : 'S';\n\n if (this.flagCargaOver == '' || 'SN'.indexOf(this.flagCargaOver) === -1)\n this.flagCargaOver = (this.cargaOver == undefined) ? 'N' : (!this.cargaOver) ? 'N' : 'S';\n\n if (this.flagCargaPerigosa == '' || 'SN'.indexOf(this.flagCargaPerigosa) === -1)\n this.flagCargaPerigosa = (this.cargaPerigosa == undefined) ? 'N' : (!this.cargaPerigosa) ? 'N' : 'S';\n\n if (this.flagGensetOri == '' || 'SN'.indexOf(this.flagGensetOri) === -1)\n this.flagGensetOri = (this.gensetOri == undefined) ? 'N' : (!this.gensetOri) ? 'N' : 'S';\n\n if (this.flagGensetDes == '' || 'SN'.indexOf(this.flagGensetDes) === -1)\n this.flagGensetDes = (this.gensetDes == undefined) ? 'N' : (!this.gensetDes) ? 'N' : 'S';\n\n if (this.flagMaterialEspecialDesova == '' || 'SN'.indexOf(this.flagMaterialEspecialDesova) === -1)\n this.flagMaterialEspecialDesova = (this.materialEspecialOvaFlag == undefined) ? 'N' : (!this.materialEspecialOvaFlag) ? 'N' : 'S';\n\n if (this.flagMaterialEspecialOva == '' || 'SN'.indexOf(this.flagMaterialEspecialOva) === -1)\n this.flagMaterialEspecialOva = (this.materialEspecialOvaFlag == undefined) ? 'N' : (!this.materialEspecialOvaFlag) ? 'N' : 'S';\n }\n}\n","export class CtmNf {\n\tacao: number = 0;\n\tchaveCtm: string = '';\n\tchaveNfe: string = '';\n\tnumContainer: string = '';\n\tnumCtm: string = '';\n\tnumNF: string = '';\n\tserieNF: string = '';\n\tstatusNF: string = '';\n\n\tidOs: number = 0;\n\tidUsuario: number = 0;\n\n\tnumAverbacao: string = '';\n\tnumApolice: string = '';\n}\n","\n\nexport class CustomerInfo{\n CNPJ: string;\n ieCli: string;\n nomeCli: string;\n nomeFantasiaCli: string;\n emailCli: string;\n pessoa_id: string;\n\n}\n","export class DetalhesTrackingRequest {\n cnpjCli: string;\n idBooking: number;\n numBooking: string;\n idUsuario: number;\n numContainer: string;\n idAgendColeta: number;\n}\n","export class DoctoFaturaRequest {\n filtroGenerico: string;\n numRefCliente: string;\n numNFeCte: string;\n numNFe: string;\n numNFSe: string;\n numFatBol: string;\n tipoDocto: string;\n numBooking: string;\n \n cnpjDest: string;\n ieDest: string;\n numContainer: string;\n cnpjEmb: string;\n ieEmb: string;\n cnpjCli: string;\n ieCli: string;\n idUsuario: number;\n idNavioViagem: number;\n dataVenctoIni: Date;\n dataVenctoFim: Date;\n dataEmissaoIni: Date;\n dataEmissaoFim: Date;\n}","export class DoctoFaturaArquivoRequest {\n idUsuario: number;\n numFatBol: string;\n numNfeCte: string;\n doctoTransporteId: number;\n doctoPagtoId: number;\n numNFe: string;\n numBooking: string;\n}\n","import { DoctoFatura } from \"app/_models/doctoFatura\";\n\nexport class DocumentosSelecionados {\n UsuarioId: number;\n UsuarioIDeCargo: number;\n Documentos: DoctoFatura[];\n}","export class Endereco\n{\n Logradouro: string;\n Complemento: string;\n Numero: string;\n Bairro: string;\n CEP: string;\n Municipio: string;\n UF: string;\n IdMunicipio: number;\n}","import { DoctoFaturaArquivo } from './doctoFaturaArquivo';\n\nexport class EnvioAnexoEmail {\n UsuarioId: number;\n Arquivos: DoctoFaturaArquivo[];\n}","import { Assunto } from './assunto';\nexport class FaleConosco{\n FaleConoscoID: number;\n Nome: string;\n Email: string;\n Data: Date;\n strData: string;\n Telefone: string;\n Mensagem: string;\n Assunto: Assunto;\n}","import { IMultiSelectOption, IMultiSelectTexts, IMultiSelectSettings } from './../shared/multiselect-dropdown/multiselect-dropdown.component';\n\nexport class FilterComboConfiguration {\n\n private defaultTitle: string;\n public options: IMultiSelectOption[];\n public settings: IMultiSelectSettings;\n public textsFeminino: IMultiSelectTexts;\n public textsMasculino: IMultiSelectTexts;\n\n constructor(defaultTitle: string) {\n this.defaultTitle = defaultTitle;\n this.options = [];\n\n this.textsFeminino = this.generateTexts('a');\n this.textsMasculino = this.generateTexts('o');\n }\n\n private generateTexts(letter: string): IMultiSelectTexts{\n return {\n checkAll: 'Marcar Tod' + letter + 's',\n uncheckAll: 'Desmarcar Tod' + letter + 's',\n checked: 'marcad' + letter,\n checkedPlural: 'marcad' + letter + 's',\n searchPlaceholder: 'Pesquisar...',\n defaultTitle: this.defaultTitle,\n allSelected: 'Todos selecionad' + letter + 's'\n };\n }\n}","export class FiltroListaItem {\n\tclasseCssFundo: string;\n\tclasseCssIcone: string;\n\tstatus: string;\n\ttitulo: string;\n\tvalor: number;\n\n\tpublic static Create(classeCssFundo: string = null, classeCssIcone: string = null, status: string = null, titulo: string = null, valor: number = 0): FiltroListaItem {\n\t\treturn {\n\t\t\tclasseCssFundo: classeCssFundo,\n\t\t\tclasseCssIcone: classeCssIcone,\n\t\t\ttitulo: titulo,\n\t\t\tstatus: status,\n\t\t\tvalor: valor\n\t\t};\n\t}\n}\n","export class FiltrosLaterais{\n tamanho20Pes: boolean = false; \n tamanho40Pes: boolean = false;\n flagCargaPerigosa: boolean = false; \n flagCargaRefrigerada: boolean = false; \n flagCargaOver: boolean = false; \n flagOvaDesova: boolean = false;\n flagTpContainerDryDC_HC: boolean = false;\n flagTpContainerRH: boolean = false;\n flagTpContainerEspecial: boolean = false;\n flagModalPoPo: boolean = false;\n flagModalPaPa: boolean = false;\n flagModalPaPo: boolean = false; \n flagModalPoPa: boolean = false; \n flagConferente: boolean = false; \n flagCargaSeca: boolean = false;\n status: string = \"\"; \n}","export class GrupoEconomicoRequest{\n idUsuario: number;\n idCliente: number;\n cnpjCliente: string;\n IECli: string;\n descGrupo: string;\n}\n","export class ImagemNF{\n TipoImagem: string;\n URLImagem: string;\n NumNF: string;\n\n constructor(tipoImagem: string, url: string) {\n this.TipoImagem = tipoImagem;\n this.URLImagem = url;\n }\n}\n","export class IncidenteRequest {\n idOs: number;\n idUsuario: number;\n}","export class ListItem {\n codigo : string;\n descricao: string;\n selecionado : boolean;\n}\n","import { Operacao } from './../_enums/operacao';\nimport { LogFrontFuncionalidade } from \"app/_enums/log-front-funcionalidade\";\n\nexport class LogFront {\n LogFrontID: number;\n NomeUsuario: string;\n UsuarioID: number;\n Funcionalidade: LogFrontFuncionalidade;\n Tela: string;\n Mensagem: string;\n Dados: string;\n Operacao: Operacao;\n VersaoPortal: string;\n Browser: string;\n Data: Date;\n strData: string;\n}\n","export class Login {\n username: string;\n password: string;\n}","import { Booking } from \"app/_models/booking\";\nimport { FiltrosLaterais } from \"app/_models/filtros-laterais\";\n\nexport class MeusBookings {\n constructor(public FiltrosLateraisAtivos: FiltrosLaterais, \n public Bookings : Booking[] = []){ \n }\n}","import { FiltrosLaterais } from \"app/_models/filtros-laterais\";\nimport { Cotacao } from \"app/_models/cotacao\";\n\nexport class MinhasCotacoes {\n constructor(public FiltrosLateraisAtivos: FiltrosLaterais, \n public Cotacoes : Cotacao[] = []){ \n }\n}","export class MunicipioRequest\n{\n Descricao: string;\n idProposta: number;\n idCotacao: number;\n cnpjCli: string;\n dataIni: Date;\n datafim: Date;\n tipoConsulta: string;\n idUsuario: number;\n}","export class Municipio {\n Codigo: number;\n Descricao: string;\n UF: string;\n DescricaoCompleta: string;\n}","export class NavioViagemRequest {\n CNPJCliente: string;\n CNPJProvedor: string;\n tipo: string;\n dataIni: Date;\n dataFim: Date;\n idUsuario: number;\n}","export class OkEntregaConsultaLink {\n booking: string;\n numNF: string;\n linkCanhoto: string;\n\n constructor(booking: string, numNF: string) {\n this.booking = booking;\n this.numNF = numNF;\n }\n}\n","import { CtmNf } from \"app/_models/ctmNf\";\nimport { StatusOS } from \"app/_enums/status-os.enum\";\nimport { Incidente } from 'app/_models/incidente';\nimport { DateModel } from './../shared/ng2-datepicker/ng2-datepicker.component';\n\nexport class OrdemServico {\n\tidOs: number;\n\tidCategoriaContainer: number;\n\tsolicitContainerId: number;\n\ttamanhoContainer: number;\n\ttara: number;\n\n\tnumOs: string;\n\tnumBooking: string;\n\tnumContainer: string;\n\tnumFatura: string;\n\tnumFaturaOrdenacao: number;\n\tstatusOs: string;\n\tstatusPortal: string;\n\tdescNavioViagem: string;\n\tdescTipoServico: string;\n\tnomeEmbDest: string;\n\tportoOriDes: string;\n\tmunicOriDes: string;\n\tufOriDes: string;\n\tcnpjProvedor: string;\n\tieProvedor: string;\n\tnomeProvedor: string;\n\ttipo: string;\n\tdhProgramacao: string;\n\tnomeColEnt: string;\n\tenderecoCompletoColEnt: string;\n\tcnpjColEnt: string;\n\tieColEnt: string;\n\tcnpjCliente: string;\n\tieCliente: string;\n\tnomeCliente: string;\n\tlacre1: string;\n\tlacre2: string;\n\tlacre3: string;\n\tplaca: string;\n\tobservacao: string;\n\tdtRetiradaTerminal: Date;\n\thrRetiradaTerminal: string;\n\tdtInicioExecucao: Date;\n\thrInicioExecucao: string;\n\tdtFimExecucao: Date;\n\thrFimExecucao: string;\n\tdtEntregaTerminal: Date;\n\thrEntregaTerminal: string;\n\tdhChegadaTerminal: Date;\n dhSaidaCliente: Date;\n indicAvulsa: boolean;\n\n\tdataRetiradaTerminal: DateModel;\n\tdataInicioExecucao: DateModel;\n\tdataFimExecucao: DateModel;\n\tdataEntregaTerminal: DateModel;\n\n\tdescCategoriaContainer: string;\n\tdhChegadaCliente: Date;\n\tdhRetiradaTerminal: Date;\n\tflagNFValidada: string;\n\tflagPossuiCTe: string;\n\tflagPossuiCTM: string;\n\tflagPossuiNF: string;\n\tidMunicOriDes: number;\n\tidNavioViagem: number;\n\tidPortoOriDes: number;\n\tidTipoServico: number;\n\tindicTipo: string;\n\tnumCte: string;\n\tordem_servico_id: number;\n\n\tserieCtm: string;\n\n\tselecionado: boolean;\n\tctmNF: CtmNf;\n\n\tstrProgramacao: string;\n\tstrdtRetiradaTerminal: string;\n\tstrInicioExecucao: string;\n\tstrFimExecucao: string;\n\tstrEntregaTerminal: string;\n\tstrdhRetiradaTerminal: string;\n\tstrChegadaTerminal: string;\n\tstrChegadaClientedhChegadaCliente: string;\n\tstrSaidaCliente: string;\n\n\tincidentes: Incidente[];\n\n\tnumAverbacao: string;\n\tnumApolice: string;\n\tnumBL: string;\n\n\tprivate _status: StatusOS;\n idTipoContainer: number;\n\tpublic get status(): StatusOS {\n\t\treturn this._status;\n\t}\n\tpublic set status(value: StatusOS) {\n\t\tthis._status = value;\n\t}\n}\n","export class OrdemServicoRequest {\n\tfiltroGenerico: string;\n\tnumOs: string;\n\tnumBooking: string;\n\tnumContainer: string;\n\tstatusOs: string;\n\tnumFatura: string;\n\tstrTipoServico: string;\n\tidUsuario: number;\n\tidOs: number;\n\tidNavioViagem: number;\n\n\tcnpjProvedor: string;\n\tdataIni: Date;\n\tdataFim: Date;\n\ttipo: string;\n\tstrPortoOriDes: string;\n\n\ttipoFiltroPeriodo: number;\n\n\tvincularNF: boolean = false;\n}\n","import { TipoServico } from './tipo-servico';\nimport { OrdemServico } from 'app/_models/ordemServico';\nimport { TipoEventoTracking } from 'app/_models/tipoEventoTracking';\nimport { ValidationError } from \"app/_models/validation-error\";\n\nexport class OrdemServicoVM {\n\tOSs: OrdemServico[];\n\tTiposOS: string[] = [];\n\tTiposServicosOS: TipoServico[] = [];\n\ttiposEventosNF: TipoEventoTracking[];\n\ttiposEventosOS: TipoEventoTracking[];\n}\n","export class ParametroPorto{\n PortoID: number;\n NomePorto: string;\n QtdHrEntrega: number;\n QtdHrAgendEntrega: number;\n QtdHrAgendColetaPA: number;\n QtdHrAgendColetaPO: number;\n QtdHrMinimasAgendColeta: number;\n QtdHrMinimasAgendEntrega: number;\n\n constructor(){\n this.PortoID = 0;\n }\n}","import { Funcionalidade } from './funcionalidade';\n\nexport class Perfil{\n PerfilID: number;\n Descricao: string;\n Ativo: boolean;\n Funcionalidades: Funcionalidade[];\n TotalUsuarios: number;\n Cliente: boolean;\n Provedor: boolean;\n Admin: boolean;\n}","export class Porto {\n Codigo: number;\n Descricao: string;\n Municipio: string;\n UF: string;\n}","import { Navio } from \"./navio\";\nimport { Porto } from \"./porto\";\n\nexport class Prioridade {\n PrioridadeID: number;\n PortoOrigem: Porto;\n PortoDestino: Porto;\n Navios: Navio[];\n FiltrarProgramacaoNavio: boolean;\n\n PortosOrigemID: number[]; //para o combo-multiselect\n PortosDestinoID: number[]; //para o combo-multiselect\n NaviosID: number[]; //para o combo-multiselect\n\n constructor() {\n this.PrioridadeID = 0;\n this.PortoOrigem = new Porto();\n this.PortoDestino = new Porto();\n this.Navios = [];\n this.FiltrarProgramacaoNavio = false;\n\n this.PortosOrigemID = [];\n this.PortosDestinoID = [];\n this.NaviosID = [];\n }\n}\n","import { ServicoProposta } from './servico-proposta';\nimport { TipoContainer } from './tipo-container';\nexport class PropostaComercialFiltro {\n idProposta: number = 0;\n idTrecho: number = 0;\n numProposta: number = 0;\n idMunicOrigem: number = 0;\n idMunicDestino: number = 0;\n idPortolOrigem: number = 0;\n idPortoDestino: number = 0;\n tamanhoContainer: number = 0;\n idCategoriaContainer: number = 0;\n idFamiliaProduto: number = 0;\n flagOva: string = '[INDEFINIDO]';\n flagDesova: string = '[INDEFINIDO]';\n flagConferente: string = '[INDEFINIDO]';\n flagEscolta: string = '[INDEFINIDO]';\n flagShipperOwnContainer: string = '[INDEFINIDO]';\n flagAjudanteOvaDesova: string = '[INDEFINIDO]';\n flagCargaPerigosa: string = '[INDEFINIDO]';\n flagCargaOver: string = '[INDEFINIDO]';\n modal: string = '';\n tipoOperacaoComercial: string = '[INDEFINIDO]';\n tipoDeContainer: TipoContainer = new TipoContainer();\n servicosDaProposta: ServicoProposta[] = [];\n ListaTipoServicoOri: string = '';\n ListaTipoServicoDes: string = '';\n}","export class PropostaComercialRequest {\n idProposta: number = 0;\n idTrecho: number = 0;\n flag_ativa: string = '';\n numProposta: number = 0;\n idMunicOrigem: number; // Campo de filtro pode ser nulo na requisição\n idMunicDestino: number = 0;\n idPortolOrigem: number; // Campo de filtro pode ser nulo na requisição\n idPortoDestino: number; // Campo de filtro pode ser nulo na requisição\n idCategoriaContainer: number = 0;\n tamanhoContainer: number = 0;\n qtdeContainer: number = 0;\n idFamiliaProduto: number = 0;\n idUsuario: number = 0;\n tipoOperacaoComercial: string = '';\n cnpjEmb: string = '';\n ieEmb: string = '';\n modal: string = '';\n cnpjCli: string ='';\n ieCli: string = '';\n}","import { ServicoProposta } from './servico-proposta';\nimport { TipoContainer } from \"app/_models/tipo-container\";\nimport { Injectable } from \"@angular/core\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PropostaComercial {\n idProposta: number = 0;\n idTrecho: number = 0;\n numProposta: number = 0;\n idMunicOrigem: number = 0;\n idMunicDestino: number = 0;\n idPortolOrigem: number = 0;\n idPortoDestino: number = 0;\n tamanhoContainer: number = 0;\n idCategoriaContainer: number = 0;\n qtdeContainer: number = 0;\n tempCargaRefrigerada: number = 0;\n CargaOverEsquerda: number = 0;\n CargaOverDireita: number = 0;\n CargaOverTraseiro: number = 0;\n CargaOverFrontal: number = 0;\n CargaOverAltura: number = 0;\n idFamiliaProduto: number = 0;\n idUsuario: number = 0;\n idMunicipioEmb: number = 0;\n\n flagConferente: string = '';\n flagShipperOwnContainer: string = '';\n flagAjudanteOvaDesova: string = '';\n flagTremBalsa: string = '';\n flagCargaPerigosa: string = '';\n flagCargaRefrigerada: string = '';\n obsCargaRefrigeradaa: string = '';\n flagCargaOver: string = '';\n\n modal: string = '';\n tipo: string = '';\n tipoCarga: string = '';\n tipoOperacaoComercial: string = '';\n nomeCli: string = '';\n cnpjCli: string = '';\n ieCli: string = '';\n nomeEmb: string = '';\n cnpjEmb: string = '';\n ieEmb: string = '';\n cepEmb: string = '';\n logradouroEmb: string = '';\n complementoEmb: string = '';\n numeroEndEmb: string = '';\n bairroEmb: string = '';\n municipioEmb: string = '';\n ufEmb: string = '';\n contatoEmb: string = '';\n emailEmb: string = '';\n seguro: string = '';\n municOrigem: string = '';\n ufOrigem: string = '';\n municDestino: string = '';\n ufDestino: string = '';\n nomePortoOrigem: string = '';\n ufPortoOrigem: string = '';\n nomePortoDestino: string = '';\n ufPortoDestino: string = '';\n terminalInterior: string = '';\n recebimentoTerminal: string = '';\n descCategoriaContainer: string = '';\n descFamiliaProduto: string = '';\n numeroUNO: string = '';\n classe: string = '';\n sequencia: string = '';\n psn: string = '';\n obsCargaPerigosa: string = '';\n obsCargaRefrigerada: string = '';\n obsCargaOver: string = '';\n obsGeral: string = '';\n status: string = '';\n\n flagEscoltaOri: string = '';\n flagEscoltaDes: string = '';\n flagConferenteOri: string = '';\n flagConferenteDes: string = '';\n flagEquipeIndicaCliOri: string = '';\n flagEquipeIndicaCliDes: string = '';\n flagEquipePropriaOri: string = '';\n flagEquipePropriaDes: string = '';\n\n strValMercadoria: string = '';\n \n valMercadoria: number = 0;\n valFreteOTM: number = 0;\n pesoContainer: number = 0;\n\n tipoDeContainer: TipoContainer;\n servicosDaProposta: ServicoProposta[];\n ListaTipoServicoOri: string = '';\n ListaTipoServicoDes: string = '';\n\n contatoCli: string = '';\n adValorem: number = 0;\n flagGensetOri: string = '';\n flagGensetDes: string = '';\n flagEstufagemTerminal: string = '';\n flagOvaTerminal: string = '';\n flagOvaEmbarcador: string = '';\n flagDesovaTerminal: string = '';\n flagDesovaRecebedor: string = '';\n\n numPropostaEidTrecho: string = '';\n\n indicPagtoAVista: string = '';\n\n get vlrAdValoren(): number{\n return this.adValorem;\n }\n\n private _shipperOwnContainer: boolean = false;\n get shipperOwnContainer(): boolean {\n this._shipperOwnContainer = this.flagShipperOwnContainer == 'S';\n return this._shipperOwnContainer;\n }\n set shipperOwnContainer(value: boolean) {\n this._shipperOwnContainer = value;\n this.flagShipperOwnContainer = this._shipperOwnContainer ? 'S' : 'N';\n }\n\n private _cargaPerigosa: boolean = false;\n get cargaPerigosa(): boolean {\n this._cargaPerigosa = this.flagCargaPerigosa == 'S';\n return this._cargaPerigosa;\n }\n set cargaPerigosa(value: boolean) {\n this._cargaPerigosa = value;\n this.flagCargaPerigosa = this._cargaPerigosa ? 'S' : 'N';\n }\n\n private _cargaRefrigerada: boolean = false;\n get cargaRefrigerada(): boolean {\n this._cargaRefrigerada = this.flagCargaRefrigerada == 'S';\n return this._cargaRefrigerada;\n }\n set cargaRefrigerada(value: boolean) {\n this._cargaRefrigerada = value;\n this.flagCargaRefrigerada = this._cargaRefrigerada ? 'S' : 'N';\n } \n\n private _cargaOver: boolean = false;\n get cargaOver(): boolean {\n this._cargaOver = this.flagCargaOver == 'S';\n return this._cargaOver;\n }\n set cargaOver(value: boolean) {\n this._cargaOver = value;\n this.flagCargaOver = this._cargaOver ? 'S' : 'N';\n } \n\n // getters\n private _oriPorto: boolean = true;\n get oriPorto(): boolean {\n if ((this.modal == undefined) || (this.modal == \"\") || (this.modal.startsWith('/')))\n return undefined;\n this._oriPorto = this.modal.startsWith(\"PO\");\n\n return this._oriPorto;\n } \n\n private _desPorto: boolean = true;\n get desPorto(): boolean {\n if ((this.modal == undefined) || (this.modal == \"\") || (this.modal.endsWith('/')))\n return undefined;\n\n this._desPorto = this.modal.endsWith(\"PO\");\n return this._desPorto;\n } \n}\n","export class ScheduleRequest\n{\n idsPortoOrigem: string;\n idsPortoDestino: string;\n dataInicio: Date;\n dataFim: Date;\n servico: string;\n tipoPeriodo: string;\n}","import { Transbordo } from \"./transbordo\";\n\nexport class Schedule {\n dhPrevChegadaPortoOrigem: Date;\n dhConfChegadaPortoOrigem: Date;\n dhPrevSaidaPortoOrigem: Date;\n dhConfSaidaPortoOrigem: Date;\n dhDeadlineEntregaEmbarque: Date;\n dhPrevChegadaPortoDestino: Date;\n dhConfChegadaPortoDestino: Date;\n dhPrevChegadaPortoTransbordo: Date;\n dhConfChegadaPortoTransbordo: Date;\n dhDeadlineDocumentacao: Date;\n\n idNavioTransbordo: number;\n idPortoTransbordo: number;\n transitTimetransbordo: number;\n idViagemNavio: number;\n idPortoOrigem: number;\n idPortoDestino: number;\n transitTime: number;\n\n descNavioTransbordo: string;\n descPortoTransbordo: string;\n ufPortoTransbordo: string;\n descPortoDestino: string;\n municPortoDestino: string;\n ufPortoDestino: string;\n descNavioViagem: string;\n descPortoOrigem: string;\n municPortoOrigem: string;\n ufPortoOrigem: string;\n\n strPrevChegadaPortoOrigem: string;\n strConfChegadaPortoOrigem: string;\n strPrevSaidaPortoOrigem: string;\n strConfSaidaPortoOrigem: string;\n strDeadlineEntregaEmbarque: string;\n strPrevChegadaPortoDestino: string;\n strConfChegadaPortoDestino: string;\n strPrevChegadaPortoTransbordo: string;\n strConfChegadaPortoTransbordo: string;\n strDeadlineDocumentacao: string;\n\n Transbordos: Transbordo[];\n}","export class SporadicTax {\n\n id: number;\n sporadicTaxName: string= '';\n sporadicTaxTypeId: number;\n originRegionId: number;\n originPortId: number;\n originModalId: string= '';\n destinationRegionId: number;\n destinationPortId: number;\n destinationModalId: string= '';\n containerType20Value: number = 0.0;\n containerType40Value: number = 0.0;\n startDate: Date = new Date();\n expirationDate: Date = new Date();\n validity: string= '';\n\n createdBy: string = '';\n // createdOn: Date = new Date();\n // updatedOn: Date = new Date();\n updatedBy: string = '';\n isEnabled: number;\n acao:string =''\n}\n","export class SubTributaria {\n id: number;\n departureUf: string;\n destinationUf: string;\n modal: string;\n groupEconomy: string;\n diferencyICMS: number;\n createdBy: string;\n createdOn: Date;\n updatedOn: Date;\n updatedBy: string;\n isEnabled: boolean;\n}\n","export class Terminal {\n PortoID: number;\n TerminalID: number;\n NomePorto: string;\n NomeTerminal: string;\n Latitude: string;\n Longitude: string;\n PodeExcluir: boolean;\n}","export class TipoContainer {\n Codigo: number = 0;\n Tamanho: number = 0;\n Descricao: string = \"\";\n Desc_resumida: string = \"\";\n Flag_PES: string = \"\";\n Flag_Reefer: string = \"\";\n Flag_HighCube: string = \"\";\n Flag_Dry: string = \"\";\n \n private _idContainer: string = \"\";\n get idContainer(): string {\n if (this._idContainer == \"\") {\n this._idContainer = (this.Codigo != null) ? this.Codigo.toString() + \"|\" + this.Tamanho.toString() : undefined;\n }\n return this._idContainer;\n }\n set idContainer(value) {\n this._idContainer = value;\n }\n}\n","export class TipoPagamento {\n codigo: string;\n descricao: string;\n}\n","export class TipoServico{\n TipoServicoID: number;\n Codigo: string;\n Descricao: string;\n ExibePortal: number;\n flagVas: string;\n tipoServico: string;\n}\n","export class TipoTaxaEsporadica {\n id: number = 0;\n name: string= '';\n createdBy: string= '';\n createdOn?: Date = new Date();\n updatedBy?: string= '';\n updatedOn?: Date = new Date();\n isEnabled: boolean\n}\n","export class TipoEventoTracking {\n Codigo: number;\n Descricao: string;\n Quantidade: number;\n}","export class TrackingListaRequest {\n cnpjCli: string;\n filtroGenerico: string;\n filtroGenerico2: string;\n numBooking: string;\n idsPortoOri: string;\n idsPortoDes: string;\n idsMunicOri: string;\n idsMunicDes: string;\n idUsuario: number;\n idNavioViagem: number;\n dataIni: Date;\n dataFim: Date;\n status: boolean;\n idBooking: number;\n numContainer: string;\n}\n","export class UsuarioCNPJ{\n UsuarioCNPJID: number;\n CNPJ: string;\n UsuarioID: number;\n Novo: boolean;\n}","export class UsuarioPesquisaRequest\n{\n CadastradosDe: Date;\n CadastradosAte: Date;\n Email: string = '';\n Nome: string = '';\n RazaoSocial: string = '';\n Perfil: string = ''; //string com IDs dos perfils selecionados separados por \";\"\n Status: string = ''; //string com IDs dos status selecionados separados por \";\"\n CNPJ: string = ''; //string com CNPJ ou parte do CNPJ a ser pesquisado no CNPJ principal ou nos associados\n\n constructor() {}\n}\n","import { DateModel } from \"app/shared/ng2-datepicker/ng2-datepicker.component\";\n\nexport class UsuarioPesquisa\n{\n CadastradosDe: DateModel;\n CadastradosAte: DateModel;\n Email: string = '';\n Nome: string = '';\n RazaoSocial: string = '';\n Perfil: string = ''; //string com IDs dos perfils selecionados separados por \";\"\n Status: string = ''; //string com IDs dos status selecionados separados por \";\"\n CNPJ: string = ''; //string com CNPJ ou parte do CNPJ a ser pesquisado no CNPJ principal ou nos associados\n}\n","import { Perfil } from './perfil';\nimport { UsuarioCNPJ } from './usuario-cnpj';\nimport { PerfilUsuario } from 'app/_enums/perfil-usuario.enum';\nimport { StatusUsuario } from 'app/_enums/status-usuario.enum';\n\nexport class Usuario{\n UsuarioID: number;\n Email: string;\n Nome: string;\n RazaoSocial: string;\n NomeFantasia: string;\n CNPJ: string;\n InscricaoEstadual: string;\n Logradouro: string;\n Numero: string;\n Complemento: string;\n Bairro: string;\n Municipio: string;\n UF: string;\n CEP: string;\n Telefone: string;\n PerfilUsuario: PerfilUsuario;\n Vendedor: string;\n EscritorioResponsavel: string;\n Status: StatusUsuario;\n MotivoRecusa: string;\n DataCadastro: Date;\n DataAprovacao: Date;\n DataReprovacao: Date;\n\n PerfilID: number;\n Perfil: Perfil;\n CNPJs: UsuarioCNPJ[];\n UsuarioIDeCargo: string;\n strDataCadastro: string;\n strDataAprovacao: string;\n strDataReprovacao: string;\n ListaCNPJs: string;\n}\n","import { PerfilUsuario } from \"app/_enums/perfil-usuario.enum\";\n\nexport class UsuarioRegistrar {\n Nome: string;\n RazaoSocial: string;\n NomeFantasia: string;\n CNPJ: string;\n InscricaoEstadual: string;\n Logradouro: string;\n Complemento: string;\n Numero: string;\n Bairro: string;\n Municipio: string;\n UF: string;\n CEP: string;\n DDD: string;\n Telefone: string;\n Email: string;\n Cliente: boolean;\n Provedor: boolean;\n PerfilUsuario: PerfilUsuario;\n DataAceiteTermo: Date;\n}","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'countdown'\n})\nexport class CountdownPipe implements PipeTransform {\n\n transform(value: string, args?: any): any {\n let maxLength = args || 0;\n let length = value.length;\n\n return (maxLength - length);\n }\n\n}\n\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { UF } from './../_models/uf';\n\n@Pipe({\n name: 'orderby'\n})\nexport class OrderbyPipe implements PipeTransform {\n transform(array: Array, args: string): Array {\n array.sort((a: UF, b: UF) => {\n if (a.sigla < b.sigla) {\n return -1;\n } else if (a.sigla > b.sigla) {\n return 1;\n } else {\n return 0;\n }\n });\n return array;\n }\n}\n","\nimport { catchError, map } from 'rxjs/operators';\nimport { Injectable, EventEmitter } from '@angular/core';\nimport { Response } from '@angular/http';\nimport { Observable } from \"rxjs\";\n\nimport { BaseService } from \"app/_services/base.service\";\nimport { MessageService } from \"app/_services/message.service\";\n\nimport { AgendaEntrega } from \"app/_models/agenda-entrega\";\nimport { ValidationResult } from \"app/_models/validation-result\";\nimport { AgendaEntregaSalvar } from \"app/_models/agenda-entrega-salvar\";\n\nimport { Operacao } from '../_enums/operacao';\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AgendaEntregaService {\n\n constructor(private baseService: BaseService, private _msgService: MessageService) { }\n\n emitirModal = new EventEmitter();\n\n public showModal(): void {\n this.emitirModal.emit(true);\n }\n\n public hideModal(): void {\n this.emitirModal.emit(false);\n }\n\n Consulta(consulta: AgendaEntrega): Observable {\n return this.baseService.Post('agendaentrega/consulta', consulta).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as AgendaEntrega[];\n else {\n var erros: string[] = [];\n erros.push(\"Erro ao consultar Agendas de Entregas! Contate o administrador!\");\n retorno.Erros.forEach(element => {\n erros.push(element.ErrorCode + \" - \" + element.Message);\n });\n this._msgService.addMessageArray('Agendamento de Entrega', erros, 'error', LogFrontFuncionalidade.Rastreamento, Operacao.Consulta, consulta);\n return null;\n }\n }), catchError(e => {\n return this.baseService.handleError(e);\n }));\n }\n\n Salvar(agenda: AgendaEntregaSalvar): Observable {\n return this.baseService.Post('agendaentrega/salvar', agenda).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as AgendaEntrega;\n else {\n var erros: string[] = [];\n erros.push(\"Erro ao salvar Agendamento de Entregas! Contate o administrador!\");\n retorno.Erros.forEach(element => {\n erros.push(element.ErrorCode + \" - \" + element.Message);\n });\n this._msgService.addMessageArray('Agendamento de Entrega', erros, \"error\", LogFrontFuncionalidade.Rastreamento, Operacao.Inclusao, agenda);\n return null;\n }\n }), catchError(e => {\n return this.baseService.handleError(e);\n }));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BaseService } from 'app/_services/base.service';\nimport { AnalyticsTela } from '../_enums/analytics-tela';\nimport { AnalyticsFiltro } from '../_enums/analytics-filtro';\nimport { AnalyticsData } from '../_models/analytics-data';\nimport { AnalyticsDimensoes } from '../_enums/analytics-dimensoes';\nimport { UsuarioLogado } from '../_models/usuariologado';\nimport { AnalyticsConfig } from '../_models/analytics-config';\nimport { AnalyticsMetricas } from '../_enums/analytics-metricas';\nimport { PerfilUsuario } from 'app/_enums/perfil-usuario.enum';\nimport { AnalyticsDownload } from '../_enums/analytics-download';\nimport { AnalyticsOperacao } from '../_enums/analytics-operacao';\nimport { AnalyticsEmail } from '../_enums/analytics-email';\nimport { BookingRequest } from '../_models/booking-request';\nimport { CotacaoRequest } from '../_models/cotacao-request';\nimport { TrackingListaRequest } from '../_models/trackinglista-request';\nimport { OrdemServicoRequest } from '../_models/ordemServicoRequest';\nimport { DoctoFaturaRequest } from '../_models/doctoFatura-request';\nimport { DoctoFaturaArquivo } from 'app/_models/doctoFaturaArquivo';\nimport { ValidationResult } from '../_models/validation-result';\nimport { ScheduleRequest } from 'app/_models/schedule-request';\nimport { AtualizarOrdemServico } from 'app/_models/atualizar-ordem-servico';\nimport { CtmNf } from 'app/_models/ctmNf';\n\ndeclare var analyticsJS: any;\ndeclare var generateAnalyticsContent: any;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AnalyticsService {\n\n constructor(private baseService: BaseService) { }\n\n public RegistrarOperacao(tela: AnalyticsTela, operacao: AnalyticsOperacao){\n this.RegistrarBase(tela, AnalyticsMetricas.Quantidade, AnalyticsDimensoes.Operacao, operacao);\n }\n\n public RegistrarDownload(tela: AnalyticsTela, download: AnalyticsDownload){\n this.RegistrarBase(tela, AnalyticsMetricas.Quantidade, AnalyticsDimensoes.Download, download);\n }\n\n public RegistrarEmail(tela: AnalyticsTela, email: AnalyticsEmail){\n this.RegistrarBase(tela, AnalyticsMetricas.Quantidade, AnalyticsDimensoes.Email, email);\n }\n\n public RegistrarErro(tela: AnalyticsTela, result: ValidationResult){\n if (result.IsValid)\n return;\n\n result.Erros.forEach(erro => {\n this.RegistrarBase(tela, AnalyticsMetricas.Quantidade, AnalyticsDimensoes.Erro, erro.Message);\n });\n }\n\n public RegistrarAcesso(tela: AnalyticsTela){\n this.RegistrarBase(tela, AnalyticsMetricas.Acessos);\n }\n\n public RegistrarFiltroBooking(consulta: BookingRequest){ \n var filtros: AnalyticsFiltro[] = [];\n if (consulta.cnpjCli)\n filtros.push(AnalyticsFiltro.CNPJ);\n if (consulta.filtroGenerico)\n filtros.push(AnalyticsFiltro.FiltroGenerico);\n if (consulta.idsMunicOrigem)\n filtros.push(AnalyticsFiltro.Origem);\n if (consulta.idsPortoOrigem)\n filtros.push(AnalyticsFiltro.Embarque);\n if (consulta.idsMunicDestino)\n filtros.push(AnalyticsFiltro.Destino);\n if (consulta.idsPortoDestino)\n filtros.push(AnalyticsFiltro.Desembarque);\n \n this.RegistrarFiltro(AnalyticsTela.Booking, filtros);\n }\n\n public RegistrarFiltroCotacao(consulta: CotacaoRequest){ \n var filtros: AnalyticsFiltro[] = [];\n if (consulta.cnpjCli)\n filtros.push(AnalyticsFiltro.CNPJ);\n\n this.AdicionaFiltrosPortosMunicipios(consulta, filtros);\n this.RegistrarFiltro(AnalyticsTela.Cotacao, filtros);\n }\n\n public RegistrarFiltroRastreamento(consulta: TrackingListaRequest, tipoPeriodo: number){ \n var filtros: AnalyticsFiltro[] = [];\n if (consulta.cnpjCli)\n filtros.push(AnalyticsFiltro.CNPJ);\n if (consulta.filtroGenerico)\n filtros.push(AnalyticsFiltro.FiltroGenerico);\n if (consulta.filtroGenerico2)\n filtros.push(AnalyticsFiltro.FiltroGenerico2);\n\n this.AdicionaFiltrosPortosMunicipios(consulta, filtros);\n\n if (consulta.idNavioViagem)\n filtros.push(AnalyticsFiltro.NavioViagem);\n if (tipoPeriodo == 1)\n filtros.push(AnalyticsFiltro.Periodo10dias);\n if (tipoPeriodo == 2)\n filtros.push(AnalyticsFiltro.PeriodoDeAte);\n \n this.RegistrarFiltro(AnalyticsTela.Rastreamento, filtros);\n }\n\n public RegistrarFiltroProvedor(consulta: OrdemServicoRequest, tela: AnalyticsTela){ \n var filtros: AnalyticsFiltro[] = [];\n if (consulta.cnpjProvedor)\n filtros.push(AnalyticsFiltro.CNPJ);\n if (consulta.filtroGenerico)\n filtros.push(AnalyticsFiltro.FiltroGenerico);\n if (consulta.strPortoOriDes)\n filtros.push(AnalyticsFiltro.Porto);\n if (consulta.idNavioViagem)\n filtros.push(AnalyticsFiltro.NavioViagem);\n if (consulta.tipo)\n filtros.push(AnalyticsFiltro.TipoOS);\n if (consulta.strTipoServico)\n filtros.push(AnalyticsFiltro.TipoServico);\n if (consulta.tipoFiltroPeriodo == 1)\n filtros.push(AnalyticsFiltro.Periodo15dias);\n if (consulta.tipoFiltroPeriodo == 2)\n filtros.push(AnalyticsFiltro.Periodo30dias);\n if (consulta.tipoFiltroPeriodo == 3)\n filtros.push(AnalyticsFiltro.PeriodoDeAte);\n \n this.RegistrarFiltro(tela, filtros);\n }\n\n public RegistrarFiltroDocumentacao(consulta: DoctoFaturaRequest){ \n var filtros: AnalyticsFiltro[] = [];\n if (consulta.cnpjCli)\n filtros.push(AnalyticsFiltro.CNPJ);\n if (consulta.filtroGenerico)\n filtros.push(AnalyticsFiltro.FiltroGenerico);\n if (consulta.idNavioViagem)\n filtros.push(AnalyticsFiltro.NavioViagem);\n\n this.RegistrarFiltro(AnalyticsTela.Documentacao, filtros);\n }\n\n public RegistrarFiltroSchedule(consulta: ScheduleRequest){ \n var filtros: AnalyticsFiltro[] = [];\n if (consulta.idsPortoOrigem)\n filtros.push(AnalyticsFiltro.Embarque);\n if (consulta.idsPortoDestino)\n filtros.push(AnalyticsFiltro.Desembarque);\n if (consulta.tipoPeriodo == \"embarque\")\n filtros.push(AnalyticsFiltro.PeriodoAPartirDe);\n if (consulta.tipoPeriodo == \"desembarque\")\n filtros.push(AnalyticsFiltro.PeriodoChegadaAte);\n\n this.RegistrarFiltro(AnalyticsTela.ProgramacaoNavios, filtros);\n }\n\n public RegistrarFiltro(tela: AnalyticsTela, filtros: AnalyticsFiltro[]){\n filtros.forEach(filtro => {\n this.RegistrarBase(tela, AnalyticsMetricas.Quantidade, AnalyticsDimensoes.Filtro, filtro);\n });\n }\n\n public RegistrarDownloadDocumentacao(arquivo: DoctoFaturaArquivo){\n this.RegistrarDownload(AnalyticsTela.Documentacao, this.ObterTipoDownload(arquivo));\n }\n\n public RegistrarDownloadDocumentacaoTodos(){\n this.RegistrarDownload(AnalyticsTela.Documentacao, AnalyticsDownload.Zip);\n }\n\n public RegistrarEmailDocumentacao(arquivo: DoctoFaturaArquivo){\n this.RegistrarEmail(AnalyticsTela.Documentacao, this.ObterTipoAnexoEmail(arquivo));\n }\n\n public RegistrarEmailDocumentacaoTodos(){\n this.RegistrarEmail(AnalyticsTela.Documentacao, AnalyticsEmail.Zip);\n }\n\n public RegistrarAgendamentosTracking(quantidade: number){\n if (quantidade > 0)\n this.RegistrarBase(AnalyticsTela.Rastreamento, AnalyticsMetricas.Quantidade, AnalyticsDimensoes.Operacao, AnalyticsOperacao.AgendamentoRealizado, quantidade);\n }\n\n public RegistrarFechamentosOS(lista: AtualizarOrdemServico[]){\n lista.forEach(os => {\n var fechamento: AnalyticsOperacao = \n (os.dhChegadaCliente && os.dhChegadaTerminal && os.dhRetiradaTerminal && os.dhSaidaCliente) ?\n AnalyticsOperacao.FechamentoTotal : AnalyticsOperacao.FechamentoParcial;\n this.RegistrarBase(AnalyticsTela.OrdemServico, AnalyticsMetricas.Quantidade, AnalyticsDimensoes.Operacao, fechamento);\n });\n }\n\n public RegistrarNFsVinculadas(lista: CtmNf[]){\n var quantidade = lista.filter(n => n.acao === 1).length;\n if (quantidade > 0)\n this.RegistrarBase(AnalyticsTela.VincularNF, AnalyticsMetricas.Quantidade, AnalyticsDimensoes.Operacao, AnalyticsOperacao.NFsVinculadas, quantidade);\n }\n\n public RegistrarAcessoLinkHome(numeroLink: number){\n var link: AnalyticsOperacao;\n if (numeroLink == 1)\n link = AnalyticsOperacao.AcessoLink1;\n if (numeroLink == 2)\n link = AnalyticsOperacao.AcessoLink2;\n if (numeroLink == 3)\n link = AnalyticsOperacao.AcessoLink3;\n \n this.RegistrarOperacao(AnalyticsTela.Home, link);\n }\n\n private ObterTipoDownload(arquivo: DoctoFaturaArquivo): AnalyticsDownload {\n var tipo = (arquivo.tipoArquivo == undefined) ? \"\" : arquivo.tipoArquivo.toLowerCase();\n switch(tipo){\n case \"pdf fatura boleto\":\n case \"pdf boleto\":\n return AnalyticsDownload.BoletoFatura;\n case \"xml cte\":\n return AnalyticsDownload.CTeXML;\n case \"pdf cte\":\n return AnalyticsDownload.CTePDF;\n case \"pdf rps\":\n return AnalyticsDownload.RPS;\n case \"canhoto\":\n return AnalyticsDownload.Canhoto;\n default:\n return AnalyticsDownload.Zip;\n }\n }\n\n private ObterTipoAnexoEmail(arquivo: DoctoFaturaArquivo): AnalyticsEmail {\n var tipo = (arquivo.tipoArquivo == undefined) ? \"\" : arquivo.tipoArquivo.toLowerCase();\n switch(tipo){\n case \"pdf fatura boleto\":\n case \"pdf boleto\":\n return AnalyticsEmail.BoletoFatura;\n case \"xml cte\":\n return AnalyticsEmail.CTeXML;\n case \"pdf cte\":\n return AnalyticsEmail.CTePDF;\n case \"pdf rps\":\n return AnalyticsEmail.RPS;\n case \"canhoto\":\n return AnalyticsEmail.Canhoto;\n default:\n return AnalyticsEmail.Zip;\n }\n }\n\n private AdicionaFiltrosPortosMunicipios(consulta: any, filtros: AnalyticsFiltro[]) {\n if (consulta.idsMunicOri)\n filtros.push(AnalyticsFiltro.Origem);\n if (consulta.idsPortoOri)\n filtros.push(AnalyticsFiltro.Embarque);\n if (consulta.idsMunicDes)\n filtros.push(AnalyticsFiltro.Destino);\n if (consulta.idsPortoDes)\n filtros.push(AnalyticsFiltro.Desembarque);\n }\n\n private RegistrarBase(tela: AnalyticsTela, metrica: AnalyticsMetricas, dimensao: AnalyticsDimensoes = null, value: any = null, quantidadeMetrica: number = 1){\n //Obtém as dimensões básicas\n var dimensoes = this.InicializaDimensoesBasicas(tela);\n\n //Se foi informada uma dimensão, adiciona a dimensão e o valor\n if (dimensao)\n dimensoes.push(this.GetData(dimensao, value, this.Dimensoes));\n\n //Envia as dimensões e métricas para o Google Analytics\n this.EnviaAnalytics(dimensoes, metrica, quantidadeMetrica);\n }\n\n private EnviaAnalytics(dimensoes: AnalyticsData[], metrica: AnalyticsMetricas, quantidadeMetrica: number){\n var cfg = this.Config;\n\n //Verifica se o Analytics está habilitado\n if (!cfg.Habilitado)\n return;\n\n //Ordena as dimensões a serem enviadas pelo índice da dimensão\n dimensoes = this.SortAnalyticsData(dimensoes);\n //Ordena as métricas a serem enviadas pelo índice da métrica\n var metricas = this.SortAnalyticsData(this.CriaMetrica(metrica, quantidadeMetrica));\n\n try {\n //Envia as dimensões e a métrica para o Google Analtics\n analyticsJS(this.Config.GtagID, dimensoes, metricas);\n }\n catch (e) {}\n\n //Obtém o conteúdo enviado para o Google Analytics\n var content = generateAnalyticsContent(dimensoes, metricas);\n //Envia para API do Portal Cabotagem para registrar o hit enviado para o GA\n this.baseService.Post('analytics', content).subscribe();\n }\n\n private InicializaDimensoesBasicas(tela: AnalyticsTela): AnalyticsData[]{\n //Cria o array de dimensões\n var dimensoes: AnalyticsData[] = [];\n\n //Adiciona as dimensões de tela de se o usuário está autenticado\n dimensoes.push(this.GetData(AnalyticsDimensoes.Tela, tela, this.Dimensoes));\n dimensoes.push(this.GetData(AnalyticsDimensoes.Autenticado, (this.Usuario) ? \"Sim\" : \"Não\", this.Dimensoes));\n \n //Se houver usuário logado, armazena a empresa e perfil do usuário\n if (this.Usuario){\n dimensoes.push(this.GetData(AnalyticsDimensoes.Empresa, this.Usuario.RazaoSocial, this.Dimensoes));\n dimensoes.push(this.GetData(AnalyticsDimensoes.Classificacao, this.GetNomePerfil(), this.Dimensoes));\n }\n\n //Retorna as dimensões criadas acima\n return dimensoes;\n }\n\n private CriaMetrica(metrica: AnalyticsMetricas, quantidadeMetrica: number): AnalyticsData[]{\n //Cria o array de métricas\n var metricas: AnalyticsData[] = [];\n //Adiciona no array de métricas a métrica passada como parâmetro, informando 1 hit\n metricas.push(this.GetData(metrica, quantidadeMetrica, this.Metricas));\n //Retorna a métrica criada\n return metricas;\n }\n\n private get Usuario(): UsuarioLogado{\n return this.baseService.UsuarioLogado;\n }\n\n private get Dimensoes(): AnalyticsData[]{\n //Retorna as dimensões carregadas no arquivo de configurações (_config\\google-config.json)\n return this.Config.Dimensoes;\n }\n\n private get Metricas(): AnalyticsData[]{\n //Retorna as métricas carregadas no arquivo de configurações (_config\\google-config.json)\n return this.Config.Metricas;\n }\n\n private get Config(): AnalyticsConfig{\n //Retorna as configurações do Analytics carregadas (_config\\google-config.json)\n return this.baseService.ConfigAnalytics;\n }\n\n private GetData(key: string, value: any, data: AnalyticsData[]): AnalyticsData {\n //Método para gerar um registro para o Analytics\n //baseado na dimensão ou métrica informada.\n return new AnalyticsData(this.GetIndex(key, data), value);\n }\n\n private GetIndex(key: string, data: AnalyticsData[]){\n //Encontra a dimensão ou métrica dentro da lista e retorna o índice\n return data.find(a => a.Value == key).Index;\n }\n\n private SortAnalyticsData(data: AnalyticsData[]): AnalyticsData[]{\n //Ordena as dimensões ou métricas\n return data.sort((a, b) => a.Index - b.Index);\n }\n\n private GetNomePerfil(): string {\n var nomePerfil = \"\";\n var perfilUsuario = this.Usuario.PerfilUsuario.toString().charCodeAt(0);\n switch (perfilUsuario) {\n case PerfilUsuario.Administrador:\n nomePerfil = \"Administrador\"\n break;\n case PerfilUsuario.Cliente:\n nomePerfil = \"Cliente\"\n break;\n case PerfilUsuario.Provedor:\n nomePerfil = \"Provedor\"\n break;\n case PerfilUsuario.Ambos:\n nomePerfil = \"Cliente e Provedor\"\n break;\n }\n return nomePerfil;\n }\n\n}\n","\nimport {catchError, map} from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { Http, Headers, RequestOptions, Response } from '@angular/http';\nimport { Observable } from 'rxjs';\n\n\nimport { ValidationResult } from './../_models/validation-result';\nimport { SentidoRota } from 'app/_enums/sentido-rota.enum';\nimport { BaseService } from './base.service';\nimport { Porto } from './../_models/porto';\nimport { Anel } from './../_models/anel';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AnelRotaService {\n\n constructor(private baseService: BaseService) { }\n\n // ---- Anéis / Rotas ------------------------------------------\n getAneis(): Observable {\n return this.baseService.Get('anel-rota').pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as Anel[];\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n salvarAnel(anel: Anel): Observable {\n if (!anel.AnelID || anel.AnelID == 0)\n return this.baseService.Post('anel-rota', anel).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n else\n return this.baseService.Put('anel-rota/' + anel.AnelID, anel).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n deletarAnel(id: number): Observable {\n return this.baseService.Delete('anel-rota/' + id).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n getAnel(id: number): Observable {\n return this.baseService.Get('anel-rota/' + id).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as Anel;\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n getString(sentido: SentidoRota): string {\n switch (sentido) {\n case SentidoRota.Norte:\n return \"Norte\";\n case SentidoRota.Sul:\n return \"Sul\";\n }\n }\n // -------------------------------------------------------------\n}\n","import { Injectable, EventEmitter } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ConfigPortal, ConfigViaGreen } from 'app/_models/config-portal';\nimport { UsuarioLogado } from './../_models/usuariologado';\nimport { PerfilUsuario } from 'app/_enums/perfil-usuario.enum';\nimport { AnalyticsConfig } from '../_models/analytics-config';\nimport { ConfigUpload } from '../_models/config-upload';\nimport { ConfigService } from 'app/_services/config.service';\nimport { MapsConfig } from 'app/_models/maps-config';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AppService {\n configuracoesCarregadas = new EventEmitter();\n emitirLogin = new EventEmitter();\n private _usuarioLogado: UsuarioLogado = null;\n configUpload: ConfigUpload;\n configAnalytics: AnalyticsConfig;\n configMaps: MapsConfig;\n configViaGreen: ConfigViaGreen;\n apiUrl: string = '';\n tokenExpirado: boolean = false;\n versaoWebPortal: string = '2.0.6';\n\n constructor(private configService: ConfigService,\n private _router: Router) {\n this.UsuarioLogado = this.getLocalStorageJson('currentUser');\n this.configInfo = this.getLocalStorageJson('apiUrl');\n this.configUpload = this.getLocalStorageJson('configUpload');\n this.configViaGreen = configService._viaGreenConfig;\n if (!this.configUpload)\n this.configUpload = new ConfigUpload();\n }\n\n public setLocalStorage(key: string, item: any){\n localStorage.setItem(key, item);\n }\n\n public getLocalStorage(key: string): any {\n try { return localStorage.getItem(key); }\n catch (ex) { return null; }\n }\n\n public setLocalStorageJson(key: string, item: any){\n this.setLocalStorage(key, JSON.stringify(item));\n }\n\n public getLocalStorageJson(key: string): any {\n try { return JSON.parse(this.getLocalStorage(key)); }\n catch (ex) { return null; }\n }\n\n public clearLocalStorage(key: string, setVazio: boolean = true){\n localStorage.removeItem(key);\n if (setVazio)\n this.setLocalStorage(key, '');\n }\n\n _configInfo: ConfigPortal;\n\n get configInfo(): ConfigPortal {\n return this._configInfo;\n }\n\n set configInfo(configInfo: ConfigPortal) {\n this._configInfo = configInfo;\n if (configInfo)\n this.apiUrl = configInfo.apiUrl;\n }\n\n public getVersaoWebPortal() {\n return this.versaoWebPortal;\n }\n\n public getBrowserVersao() {\n return localStorage.getItem('browser_versao');\n }\n\n get UsuarioLogado(): UsuarioLogado {\n return this._usuarioLogado;\n }\n\n set UsuarioLogado(usuarioLogado: UsuarioLogado) {\n this._usuarioLogado = usuarioLogado;\n }\n\n public carregaConfiguracoesUpload(){\n this.configService.getConfigUpload(this.apiUrl, this.UsuarioLogado)\n .subscribe(configUpload => {\n this.configUpload = configUpload;\n this.setLocalStorageJson('configUpload', configUpload);\n });\n }\n\n public isAuthenticated(): boolean {\n return this._usuarioLogado != null;\n }\n\n public isAdmin(): boolean {\n return (this.UsuarioLogado != null) && (this.UsuarioLogado.PerfilUsuario.toString().charCodeAt(0) == PerfilUsuario.Administrador);\n }\n\n public isCliente(): boolean {\n return ((this.UsuarioLogado.PerfilUsuario.toString().charCodeAt(0) == PerfilUsuario.Cliente) ||\n (this.UsuarioLogado.PerfilUsuario.toString().charCodeAt(0) == PerfilUsuario.Ambos));\n }\n\n public isClienteEProvedor(): boolean {\n return (this.UsuarioLogado != null) &&\n this.UsuarioLogado.PerfilUsuario.toString().charCodeAt(0) == PerfilUsuario.Administrador &&\n (this.UsuarioLogado.Funcionalidades != null) && ((\n this.UsuarioLogado.Funcionalidades.length >= 11 // Todos os menus habilitados\n ));\n }\n\n public maisDeUmCNPJ(): boolean {\n return (this.UsuarioLogado.CNPJs.length > 1);\n }\n\n public hasPermission(path: string): boolean {\n if (!this.isAuthenticated() || !this._usuarioLogado.Funcionalidades)\n return false;\n\n return this._usuarioLogado.Funcionalidades.find(a => a == path) != null;\n }\n\n public acessoNegado() {\n this.UsuarioLogado = null;\n this.emitirLogin.emit(true);\n //this._authService.logout();\n this.tokenExpirado = true;\n this._router.navigate(['/home']);\n }\n\n public limpaStorage(): void {\n localStorage.removeItem('currentUser');\n localStorage.removeItem('labelGrupo');\n localStorage.removeItem('cnpjGrupos');\n localStorage.removeItem('idsGruposSelecionados');\n localStorage.setItem('labelGrupo', '');\n localStorage.setItem('cnpjGrupos', '');\n localStorage.setItem('idsGruposSelecionados', '');\n }\n}\n","\nimport {catchError, map} from 'rxjs/operators';\nimport { Injectable, EventEmitter } from '@angular/core';\n//import { Http, Headers, Response, RequestOptions } from '@angular/http';\nimport { Response } from '@angular/http';\nimport { Observable } from 'rxjs';\n\n\n//import { AppService } from './app.service';\nimport { BaseService } from './base.service';\n\nimport { Login } from './../_models/login';\nimport { AlterarSenha } from './../_models/alterar-senha';\nimport { UsuarioLogado } from './../_models/usuariologado';\nimport { ValidationResult } from './../_models/validation-result';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthenticationService {\n\n configInfo: any;\n\n constructor(private baseService: BaseService) {\n }\n\n emitirLogin = new EventEmitter();\n\n login(login: Login): Observable {\n //return this.http.post(this.appService.apiUrl + 'account', JSON.stringify({ username: login.username, password: login.password }), this.getOptionsArgs())\n return this.baseService.Post('account',{ username: login.username, password: login.password }).pipe(\n map((response: ValidationResult) => {\n // login successful if there's a jwt token in the response\n let retorno: ValidationResult = response;\n this.baseService.limpaStorage();\n console.log(retorno);\n //validar se está expirado mas é vlaido\n if(retorno.Message == \"\")\n {\n if (retorno.IsValid) {\n // store username and jwt token in local storage to keep user logged in between page refreshes\n //this.appService.UsuarioLogado = retorno.Data as UsuarioLogado;\n //localStorage.setItem('currentUser', JSON.stringify(this.appService.UsuarioLogado));\n this.baseService.setUsuarioLogado(retorno.Data as UsuarioLogado);\n this.emitirLogin.emit(true);\n }\n else {\n this.emitirLogin.emit(false);\n }\n }\n //this.tokenExpirado = false;\n console.log(retorno);\n return retorno;\n }),\n catchError(e => {\n console.log(\"erro front\");\n return this.baseService.handleError(e);\n }),);\n ;\n }\n\n logout(callModal = false): void {\n //this.appService.UsuarioLogado = null;\n this.baseService.setUsuarioLogado(null);\n this.baseService.limpaStorage();\n this.emitirLogin.emit(callModal);\n }\n\n emitirModal = new EventEmitter();\n\n public showModal(): void {\n this.emitirModal.emit(true);\n }\n\n public hideModal(): void {\n this.emitirModal.emit(false);\n }\n\n ResetSenha(email: string): Observable {\n return this.baseService.Post('account/resetsenha', { email: email }).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n CadastrarSenha(viewmodel: AlterarSenha): Observable {\n return this.baseService.Post('account/cadastrarsenha', viewmodel).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n ObterEmail(viewmodel: AlterarSenha): Observable {\n return this.baseService.Post('account/email', viewmodel).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n GetUltimasAlteracoesSenha():Observable {\n return this.baseService.Get('account/ultimasAltercoesSenha').pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n}\n","import { forkJoin, Observable, throwError } from 'rxjs';\nimport { AppService } from './app.service';\nimport { AnalyticsConfig } from '../_models/analytics-config';\nimport { UsuarioLogado } from 'app/_models/usuariologado';\nimport { MapsConfig } from 'app/_models/maps-config';\n\nimport * as XLSX from 'xlsx';\nimport * as JSZip from 'jszip';\nimport { map } from 'rxjs/operators';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { ComponentFactoryResolver, Injectable } from '@angular/core';\nimport { ConstantPool } from '@angular/compiler';\n\n\ndeclare global {\n interface Navigator {\n msSaveBlob: (blob: any, defaultName?: string) => boolean\n msSaveOrOpenBlob: (blob: any, defaultName?: string) => boolean\n }\n}\n@Injectable({\n providedIn: 'root'\n})\nexport class BaseService {\n\n downloadAllAndZip(urls: string[], nomesArquivos: string[], nomeZip: string) {\n this.BaseGetAllBlobforkJoin(urls).subscribe((x : Blob[]) => {\n this.zipAndDownload(x?.filter(x => x?.type == 'application/x-download'), nomesArquivos, nomeZip);\n });\n }\n\n BaseGetAllBlobforkJoin(urls: string[]) : Observable {\n const requests = [];\n console.log(\"urls\", urls);\n urls.forEach(x => {\n console.log(\"x-url: \", x);\n console.log(\"getResult: \", this.http.get(x, { responseType: 'blob' }));\n requests.push(this.http.get(x, { responseType: 'blob' }));\n })\n return forkJoin([...requests]);\n }\n\n OpenNewTab(url: string) {\n window.open(url, \"_blank\");\n }\n\n constructor(protected http: HttpClient,\n protected appService: AppService) { }\n\n public get UsuarioLogado(): UsuarioLogado {\n return this.appService.UsuarioLogado;\n }\n\n public get ConfigAnalytics(): AnalyticsConfig {\n return this.appService.configAnalytics;\n }\n\n public get ConfigMaps(): MapsConfig {\n return this.appService.configMaps;\n }\n\n public handleError(error: any) {\n console.log(\"error: \", error);\n if (error.status === 401) {\n this.appService.acessoNegado();\n\n //return observableThrowError('Unauthorized');\n return throwError('Unauthorized');\n }\n\n let erro = error && error.error_description;\n //return observableThrowError(erro);\n return throwError(erro);\n }\n\n private getOptionsArgs(): any {\n // let headers = new Headers();\n // if (this.appService.UsuarioLogado != null)\n // headers = new Headers({ 'Authorization': 'Bearer ' + this.appService.UsuarioLogado.Token });\n // headers.append('Content-Type', 'application/json');\n //return new RequestOptions({ headers: headers });\n let headers = new HttpHeaders({\n 'Content-Type': 'application/json',\n })\n if (this.appService.UsuarioLogado != null)\n headers = new HttpHeaders({ 'Authorization': 'Bearer ' + this.appService.UsuarioLogado.Token, 'Content-Type': 'application/json' });\n\n let options = {\n headers: headers\n };\n return options;\n }\n\n public Post(path: string, data: any): Observable {\n return this.http.post(this.appService.apiUrl + path, JSON.stringify(data), this.getOptionsArgs());\n }\n\n public Put(path: string, data: any): Observable {\n return this.http.put(this.appService.apiUrl + path, JSON.stringify(data), this.getOptionsArgs());\n }\n\n public Delete(path: string): Observable {\n return this.http.delete(this.appService.apiUrl + path, this.getOptionsArgs());\n }\n\n public Get(path: string): Observable {\n return this.http.get(this.appService.apiUrl + path, this.getOptionsArgs());\n }\n\n\n public DownloadXLSX(data: any[], titulos: any[], filename: string) {\n const xlsx = this.ConvertXLSX(data, titulos, filename)\n var a = document.createElement(\"a\");\n a.setAttribute('style', 'display:none;');\n document.body.appendChild(a);\n var blob = new Blob([xlsx], { type: 'text/csv' });\n var url = window.URL.createObjectURL(blob);\n\n // if (window.navigator && window.navigator.appVersion && window.navigator.appVersion.indexOf('.NET') > 0 && typeof window.navigator.msSaveBlob === 'function') {\n // window.navigator.msSaveBlob(blob, filename);\n // }\n if (window.navigator && typeof window.navigator.msSaveBlob === 'function') {\n window.navigator.msSaveBlob(blob, filename);\n }\n else {\n a.href = url;\n a.download = filename;\n a.click();\n }\n }\n\n jsonToXlsx(data) {\n var defaults = {\n start: {\n cell: 0,\n row: 0\n }\n };\n var options = defaults;\n\n var ws_name = \"sheetname\";\n\n const wb = XLSX.utils.book_new();\n wb.Sheets = {};\n wb.Props = {};\n wb.SheetNames = [];\n\n var ws = {};\n\n var range = { s: { c: options.start.cell, r: options.start.row }, e: { c: 0, r: 0 } };\n\n var len = [];\n\n for (var R = 0; R != data.length; ++R) {\n if (range.e.r < R) range.e.r = R;\n for (var C = 0; C != data[R].length; ++C) {\n if (range.e.c < C) range.e.c = C;\n var cell = { v: data[R][C], t: '', z: '' };\n if (cell.v == null) continue;\n if (!len[C] || `${data[R][C]}`.length > len[C]) {\n len[C] = `${data[R][C]}`.length;\n }\n\n var cell_ref = XLSX.utils.encode_cell({ c: C, r: R });\n cell.t = 's';\n cell.z = '@';\n ws[cell_ref] = cell;\n\n XLSX.utils.format_cell(ws[cell_ref]);\n }\n }\n ws['!ref'] = XLSX.utils.encode_range(range);\n\n var wscols = [];\n len.forEach(tam => {\n wscols.push({ wch: tam * 1.5 > 100 ? 100 : tam * 1.3 });\n });\n ws['!cols'] = wscols;\n\n wb.SheetNames.push(ws_name);\n wb.Sheets[ws_name] = ws;\n return wb;\n }\n\n ConvertXLSX(data: any[], titulos: any[], filename: string) {\n const wb = this.jsonToXlsx([titulos, ...data]);\n\n var wbout = XLSX.write(wb, { bookType: 'xlsx', type: 'binary' });\n var buf = new ArrayBuffer(wbout.length); //convert s to arrayBuffer\n var view = new Uint8Array(buf); //create uint8array as viewer\n for (var i = 0; i < wbout.length; i++) view[i] = wbout.charCodeAt(i) & 0xFF;\n return buf;\n }\n\n // Final Code for Download CSV Function\n public DownloadCSV(data: any[], titulos: any[], filename: string, cabecalho: any[] = []) {\n var csvData = this.ConvertToCSV(data, titulos, cabecalho);\n var blob = new Blob([csvData], { type: 'text/csv' });\n this.download(blob, filename);\n }\n\n public download(blob: Blob, filename: string) {\n var a = document.createElement(\"a\");\n a.setAttribute('style', 'display:none;');\n document.body.appendChild(a);\n\n var url = window.URL.createObjectURL(blob);\n if (window.navigator && window.navigator.appVersion && window.navigator.appVersion.indexOf('.NET') > 0 && typeof window.navigator.msSaveBlob === 'function') {\n window.navigator.msSaveBlob(blob, filename);\n }\n else {\n a.href = url;\n a.download = filename;\n a.click();\n }\n }\n\n public downloadFileByUrl(url: string, filename: string) {\n return this.http.get(url,\n { responseType: 'blob', headers: null }\n ).pipe(\n map(x => {\n if (x?.type != 'application/x-download')\n throw new Error(\"Não foi possível baixar o arquivo\");\n this.download(x, filename);\n }));\n }\n\n zip(data: Blob[], namesArchive: string[]) {\n let zip = new JSZip();\n data?.forEach((file, index) => {\n zip.file(namesArchive[index], file)\n })\n return zip.generateAsync({ type: \"blob\" });\n }\n\n public zipAndDownload(data: Blob[], namesArchive: string[], name: string) {\n let zip = new JSZip();\n data.forEach((file, index) => {\n zip.file(namesArchive[index], file)\n })\n\n zip.generateAsync({ type: \"blob\" })\n .then(content => {\n this.download(content, name);\n });\n }\n\n addFileToZipAndDownload(data: Blob, dataFile: any, nameFIle: string) {\n let zip = new JSZip();\n zip.loadAsync(data).then(res => {\n res.file(nameFIle, dataFile);\n res.generateAsync({ type: \"blob\" })\n .then(content => {\n this.download(content, \"download.zip\");\n });\n })\n }\n\n ConvertToCSV(array: any[], titulos: any[], cabecalho: any[] = []) {\n var str = \"\\\"sep=;\\\"\\r\\n\";\n\n if ((cabecalho != undefined) && (cabecalho != null) && (cabecalho.length != 0)) {\n for (var i = 0; i < cabecalho.length; i++) {\n str += cabecalho[i] + '\\r\\n';\n }\n }\n\n if ((titulos != undefined) && (titulos != null)) {\n var line = '';\n for (var i = 0; i < titulos.length; i++) {\n if (line != '') line += ';'\n\n line += titulos[i];\n }\n str += line + '\\r\\n';\n }\n\n for (var i = 0; i < array.length; i++) {\n var line = '';\n\n for (var index in array[i]) {\n if (line != '') line += ';'\n var str2 = array[i][index] ? array[i][index].toString().replace(new RegExp('\"', 'g'), '\"\"') : \"\";\n line += `\"=\"\"${str2}\"\"\"`; \n }\n str += line + '\\r\\n';\n }\n\n str = str.replace(new RegExp(\"null\", 'g'), \"\");\n str = str.replace(new RegExp(\"undefined\", 'g'), \"\");\n\n var uint8 = new Uint8Array(str.length);\n for (var i = 0; i < uint8.length; i++) {\n uint8[i] = str.charCodeAt(i);\n }\n\n return uint8;\n }\n\n public setUsuarioLogado(usuario: UsuarioLogado) {\n this.appService.UsuarioLogado = usuario;\n localStorage.setItem('currentUser', JSON.stringify(this.appService.UsuarioLogado));\n }\n\n public limpaStorage(): void {\n this.appService.limpaStorage();\n }\n\n public getVersaoWebPortal() {\n return this.appService.getVersaoWebPortal();\n }\n\n public getBrowserVersao() {\n return this.appService.getBrowserVersao();\n }\n}\n","\nimport {catchError, map} from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { Response } from '@angular/http';\nimport { BaseService } from './base.service';\nimport { SharedService } from './shared.service';\nimport { MessageService } from './message.service';\nimport { LogFrontFuncionalidade } from '../_enums/log-front-funcionalidade';\nimport { Operacao } from '../_enums/operacao';\nimport { BookingShippingRequest } from '../_models/booking-shipping-request';\nimport { ValidationResult } from '../_models/validation-result';\nimport { Observable } from 'rxjs';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BookingShippingService {\n\n urlPath:string = \"bookingShipping/\";\n\n constructor(\n private baseService: BaseService,\n private _msgService: MessageService) { }\n\n\n obterBookingShippingResponse(bookingId: number): Observable {\n\n this.urlPath = this.urlPath + 'GetData?departureUf=' + bookingId;\n\n return this.baseService.Get(this.urlPath).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (!retorno.IsValid) {\n this._msgService.addMessageValidationError('bookingShippingResponse', retorno.Erros, 'error', LogFrontFuncionalidade.Icms, Operacao.Consulta, null);\n }\n\n return retorno.Data as BookingShippingRequest[];\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n\n\n calculate(bookingShippingRequest: BookingShippingRequest): Observable {\n\n return this.baseService.Post(this.urlPath + 'calculate', bookingShippingRequest).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n\n }\n\n}\n","\nimport {catchError, map} from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { Response } from '@angular/http';\nimport { Observable } from 'rxjs';\n\nimport { Booking } from './../_models/booking';\nimport { Operacao } from '../_enums/operacao';\nimport { BookingRequest } from './../_models/booking-request';\nimport { BaseService } from './base.service';\nimport { ValidationResult } from './../_models/validation-result';\nimport { MeusBookings } from \"app/_models/meus-bookings\";\nimport { MessageService } from './message.service';\nimport { SharedService } from 'app/_services/shared.service';\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\nimport { Schedule } from 'app/_models/schedule';\nimport { BuscaViagensBookingViewModel } from 'app/_models/busca-viagens-booking';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BookingService {\n\n constructor(private baseService: BaseService,\n private _msgService: MessageService,\n private _sharedService: SharedService) { }\n\n getBookings(consulta: BookingRequest): Observable {\n return this.baseService.Post('bookings', consulta).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as MeusBookings;\n else {\n var erros: string[] = [];\n erros.push(\"Erro ao consultar Bookings! Contate o administrador!\");\n retorno.Erros.forEach(element => {\n erros.push(element.ErrorCode + \" - \" + element.Message);\n });\n this._msgService.addMessageArray('Meus Bookings', erros, \"error\", LogFrontFuncionalidade.Booking, Operacao.Consulta, consulta);\n return null;\n }\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n getBooking({ bookingID, usuarioID }): Observable {\n return this.baseService.Post('bookings/detalhe', { idBooking: bookingID, idUsuario: usuarioID }).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as Booking;\n else {\n var erros: string[] = [];\n erros.push(\"Erro ao consultar Bookings! Contate o administrador!\");\n retorno.Erros.forEach(element => {\n erros.push(element.ErrorCode + \" - \" + element.Message);\n });\n this._msgService.addMessageArray('Booking', erros, \"error\", LogFrontFuncionalidade.Booking, Operacao.Consulta, { idBooking: bookingID, idUsuario: usuarioID });\n return null;\n }\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n buscaViagens(consulta: BuscaViagensBookingViewModel): Observable {\n return this.baseService.Post('bookings/viagens', consulta).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as Schedule[];\n else {\n var erros: string[] = [];\n erros.push(\"Erro ao Buscar Viagens! Contate o administrador!\");\n retorno.Erros.forEach(element => {\n erros.push(element.ErrorCode + \" - \" + element.Message);\n });\n this._msgService.addMessageArray('Booking', erros, \"error\", LogFrontFuncionalidade.Booking, Operacao.Consulta, consulta);\n return null;\n }\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n Solicitar(booking: Booking): Observable {\n return this.baseService.Post('bookings/enviar', booking).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as Booking;\n else {\n var erros: string[] = [];\n erros.push(\"Erro ao Solicitar Booking! Contate o administrador!\");\n retorno.Erros.forEach(element => {\n erros.push(element.ErrorCode + \" - \" + element.Message);\n });\n this._msgService.addMessageArray('Booking', erros, \"error\", LogFrontFuncionalidade.Booking, Operacao.Inclusao, booking);\n return null;\n }\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n AlterarBooking(booking: Booking): Observable {\n return this.baseService.Put('bookings', booking).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as Booking;\n else{\n var erros: string[] = [];\n erros.push(\"Erro ao Alterar a Booking! Contate o administrador!\");\n retorno.Erros.forEach(element => {\n erros.push(element.ErrorCode + \" - \" + element.Message);\n });\n this._msgService.addMessageArray('Booking', erros, \"error\", LogFrontFuncionalidade.Booking, Operacao.Alteracao, booking);\n return null;\n }\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n exportarRelatorioCSV(bookings: Booking[]) {\n if (!bookings || bookings.length === 0) {\n return bookings;\n };\n\n const data: any[] = [];\n const titulos: any[] = ['Número do Booking',\n 'Status Booking',\n 'Usuário Solicitante do booking',\n 'Data e Hora de Solicitação',\n 'Viagem Navio',\n 'Razão Social Embarcador',\n 'CNPJ Embarcador',\n 'Quantidade de Contêineres',\n 'Modalidade',\n 'Número da Proposta comercial',\n 'Município Origem',\n 'UF Município Origem',\n 'Porto Origem',\n 'Porto Destino',\n 'Município Destino',\n 'UF Município Destino',\n 'Contêiner (Categoria – Tamanho e tipo)',\n 'Flag Carga com excesso',\n 'Flag Carga Perigosa',\n 'Flag Carga Refrigerada',\n 'Serviços Adicionais (separados por vírgula)'];\n\n bookings.forEach(x => {\n data.push([\n x.numBooking,\n x.statusBooking,\n x.usuarioSolicitantePortal,\n this._sharedService.formataDataCSV(x.dataHoraSolicitacao),\n x.viagemNavio,\n x.nomeEmb,\n x.cnpjEmb,\n x.qtdeContainer,\n x.modal,\n x.numProposta,\n x.municOri,\n x.ufMunicOri,\n x.portoOri,\n x.portoDes,\n x.municDes,\n x.ufDes,\n x.categoriaContainer + ' - ' + x.tamanhoContainer + ' - ' + x.tipoContainer,\n x.flagCargaOver,\n x.flagCargaPerigosa,\n x.flagCargaRefrigerada,\n x.servicosAdicionais\n ]);\n });\n\n this.baseService.DownloadCSV(data, titulos, 'Bookings.csv');\n }\n\n}\n","\nimport {catchError, map} from 'rxjs/operators';\nimport { Assunto } from './../_models/assunto';\nimport { Injectable, EventEmitter } from '@angular/core';\nimport { Http, Headers, RequestOptions, Response } from '@angular/http';\nimport { Observable } from 'rxjs';\n\n\n\nimport { FaleConosco } from './../_models/faleconosco';\nimport { ValidationResult } from './../_models/validation-result';\nimport { BaseService } from './base.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CaixaEntradaService {\n\n constructor(private baseService: BaseService) { }\n\n emitirModal = new EventEmitter();\n\n public showModal(): void {\n this.emitirModal.emit(true);\n }\n\n public hideModal(): void {\n this.emitirModal.emit(false);\n }\n\n getEmails(filtro: string): Observable {\n return this.baseService.Get('faleconosco/' + filtro).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n if (retorno.IsValid)\n return retorno.Data as FaleConosco[];\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n getAssuntos(): Observable {\n return this.baseService.Get('faleconosco/assuntos').pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n if (retorno.IsValid)\n return retorno.Data as Assunto[];\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n}\n","\nimport { throwError as observableThrowError, Observable } from 'rxjs';\n\nimport { catchError, map } from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { Http, Headers, Response, RequestOptions } from '@angular/http';\n\nimport { ValidationResult } from 'app/_models/validation-result';\nimport { ConfigUpload } from 'app/_models/config-upload';\nimport { ConfigPortal, ConfigViaGreen } from 'app/_models/config-portal';\nimport { UsuarioLogado } from 'app/_models/usuariologado';\nimport { GoogleConfig } from 'app/_models/google-config';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfigService {\n\n public _config: ConfigPortal;\n public _googleConfig: GoogleConfig;\n public _viaGreenConfig: ConfigViaGreen;\n\n constructor(private _http: HttpClient) { }\n\n loadConfig() {\n return new Promise((resolve, reject) => {\n this._http.get('_config/config.json').pipe(\n catchError((error: any) => {\n return observableThrowError(error.error || 'Server error');\n }))\n .subscribe((data) => {\n this._config = data as ConfigPortal;\n resolve(true);\n });\n });\n }\n\n loadGoogleConfig() {\n return new Promise((resolve, reject) => {\n this._http.get('_config/google-config.json').pipe(\n map(res => JSON.parse(JSON.stringify(res))),\n catchError((error: any) => {\n return observableThrowError(error.error || 'Server error');\n }))\n .subscribe((data: GoogleConfig) => {\n this._googleConfig = data;\n resolve(true);\n });\n });\n }\n\n loadViaGreenConfig() {\n return new Promise((resolve, reject) => {\n this._http.get('_config/via-green-config.json').pipe(\n map(res => JSON.parse(JSON.stringify(res))),\n catchError((error: any) => {\n return observableThrowError(error.error || 'Server error');\n }))\n .subscribe((data) => {\n this._viaGreenConfig = data;\n resolve(true);\n });\n });\n }\n\n private getOptionsArgs(usuarioLogado: UsuarioLogado): any {\n // let headers = new Headers();\n // if (usuarioLogado != null)\n // headers = new Headers({ 'Authorization': 'Bearer ' + usuarioLogado.Token });\n // return new RequestOptions({ headers: headers });\n let headers = new HttpHeaders({ 'Authorization': 'Bearer ' + usuarioLogado.Token, 'Content-Type': 'application/json' });\n\n let options = {\n headers: headers\n };\n return options;\n }\n\n public getConfigUpload(baseUrl: string, usuarioLogado: UsuarioLogado): Observable {\n return this._http.get(baseUrl + 'upload/config', this.getOptionsArgs(usuarioLogado)).pipe(\n map((response: any) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as ConfigUpload;\n else\n return new ConfigUpload();\n }));\n }\n}\n","\nimport {catchError, map} from 'rxjs/operators';\n\n\nimport { Response } from '@angular/http';\n\nimport { BaseService } from './base.service';\nimport { Cotacao } from './../_models/cotacao';\nimport { CotacaoRequest } from \"app/_models/cotacao-request\";\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ValidationResult } from './../_models/validation-result';\nimport { MinhasCotacoes } from \"app/_models/minhas-cotacoes\";\nimport { MessageService } from './message.service';\nimport { CotacaoDownload } from 'app/_models/cotacao-download';\nimport { LogFrontFuncionalidade } from '../_enums/log-front-funcionalidade';\nimport { Operacao } from '../_enums/operacao';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CotacaoService {\n\n constructor(private baseService: BaseService,\n private _msgService: MessageService) { }\n\n getCotacoes(consulta: CotacaoRequest): Observable {\n return this.baseService.Post('cotacao', consulta).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as MinhasCotacoes;\n else {\n this.ProcessaErros(retorno, \"Erro ao consultar Cotações! Contate o administrador!\", LogFrontFuncionalidade.Cotacao, Operacao.Consulta, consulta);\n return null;\n }\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n getCotacao(consulta: CotacaoRequest): Observable {\n\n return this.baseService.Post('cotacao/detalhe', consulta).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as Cotacao;\n else {\n this.ProcessaErros(retorno, \"Erro ao consultar Cotações! Contate o administrador!\", LogFrontFuncionalidade.Cotacao, Operacao.Consulta, consulta);\n return null;\n }\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n getCotacoesDownload(consulta: CotacaoRequest): Observable {\n return this.baseService.Post('cotacao/csv', consulta).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as CotacaoDownload[];\n else {\n this.ProcessaErros(retorno, \"Erro ao consultar Cotações - csv! Contate o administrador!\", LogFrontFuncionalidade.Cotacao, Operacao.Consulta, consulta);\n return null;\n }\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n Solicitar(cotacao: Cotacao): Observable {\n return this.baseService.Post('cotacao/solicitar', cotacao).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as Cotacao;\n else {\n this.ProcessaErros(retorno, \"Erro ao Solicitar Cotação! Contate o administrador!\", LogFrontFuncionalidade.Cotacao, Operacao.Inclusao, cotacao);\n return null;\n }\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n UploadDocumentos(arquivos): Observable {\n let formData: FormData = new FormData();\n for (var j = 0; j < arquivos.length; j++) {\n formData.append(\"file[]\", arquivos[j], arquivos[j].name);\n }\n\n return this.baseService.Post('cotacao/upload', formData).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n if (!retorno.IsValid)\n this.ProcessaErros(retorno, \"Erro ao realizar upload dos documentos! Contate o administrador!\", LogFrontFuncionalidade.Cotacao, Operacao.Upload, arquivos);\n return retorno.IsValid;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n AlterarCotacao(cotacao: Cotacao): Observable {\n return this.baseService.Put('cotacao/solicitar', cotacao).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as Cotacao;\n else{\n this.ProcessaErros(retorno, \"Erro ao Alterar a Cotação! Contate o administrador!\", LogFrontFuncionalidade.Cotacao, Operacao.Alteracao, cotacao);\n return null;\n }\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n private ProcessaErros(retorno: ValidationResult, mensagem: string, func: LogFrontFuncionalidade = LogFrontFuncionalidade.Invalida,\n operacao: Operacao = Operacao.Invalida, dados: any) {\n var erros: string[] = [];\n erros.push(mensagem);\n retorno.Erros.forEach(element => {\n erros.push(element.ErrorCode + \" - \" + element.Message);\n });\n this._msgService.addMessageArray('Cotação', erros, \"error\", func, operacao, dados);\n }\n\n exportarRelatorioCSV(cotacoes: CotacaoDownload[]) {\n if (!cotacoes || cotacoes.length === 0) {\n return;\n };\n\n const data: any[] = [];\n const titulos: any[] = ['Número da Proposta comercial',\n 'Razão Social Cliente',\n 'CNPJ Cliente',\n 'Operação Comercial',\n 'Modalidade',\n 'Município Origem',\n 'UF Município Origem',\n 'Porto Origem',\n 'Porto Destino',\n 'Município Destino',\n 'UF Município Destino',\n 'Contêiner (Categoria – Tamanho e tipo)',\n 'Produto',\n 'Flag carga com excesso',\n 'Flag Carga Perigosa',\n 'Flag Carga refrigerada',\n 'Responsável pela estufagem – Operação Origem',\n 'Responsável pela estufagem – Operação Destino',\n 'Serviços Adicionais (separados por vírgula)',\n 'Seguro',\n 'AD Valorem',\n 'Valor do Frete'];\n cotacoes.forEach(x => {\n data.push([\n x.numProposta,\n x.nomeCliente,\n x.cnpjCli,\n x.tipoOperacao,\n x.modal,\n x.municOri,\n x.ufMunicOri,\n x.portoOri,\n x.portoDes,\n x.municDes,\n x.ufMunicDes,\n x.categoriaContainer + ' - ' + x.tamanhoContainer + ' - ' + x.tipoContainer,\n x.familiaProduto,\n x.flagCargaOver,\n x.flagCargaPerigosa,\n x.flagCargaRefrigerada,\n x.responsavelOva,\n x.responsavelDesova,\n x.servicosAdicionais,\n x.seguro,\n x.percAdvalorem,\n x.ValFrete\n ]);\n });\n\n this.baseService.DownloadCSV(data, titulos, 'Cotacoes.csv');\n }\n}\n","import {catchError, map} from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { BaseService } from './base.service';\nimport { ValidationResult } from '../_models/validation-result';\nimport { CustomerInfo } from 'app/_models/customer-info';\nimport { ListItem } from 'app/_models/listItem';\nimport { BookingRequest } from 'app/_models/booking-request';\nimport { MeusBookings } from 'app/_models/meus-bookings';\nimport { SharedService } from './shared.service';\nimport { MessageService } from './message.service';\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\nimport { Operacao } from '../_enums/operacao';\nimport { Cliente } from 'app/_models/cliente';\n\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CustomerInfoService {\n\n listaGrupoEmpresarial: ListItem[] = new Array();\n customerListInfo: CustomerInfo[] = new Array();\n\n\n constructor(private baseService: BaseService,\n private _msgService: MessageService,\n private _sharedService: SharedService\n ) { }\n salvarCustomerInfo(parametros: CustomerInfo[]): Observable {\n return this.baseService.Put('customerInfo/', parametros).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n getCustomerInfo(ssn: string): Observable {\n return this.baseService.Get('customerInfo/findCustomerInfoByCnpj?ssn=' + ssn).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as CustomerInfo;\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n\n listGrupoEmpresarial(): Observable {\n\n\n return this.baseService.Get('customerInfo/findAll').pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (!retorno.IsValid) {\n //this._msgService.addMessageValidationError('Icms', retorno.Erros, 'error', LogFrontFuncionalidade.Icms, Operacao.Consulta, null);\n }\n\n let lista: CustomerInfo[] = retorno.Data as CustomerInfo[];\n this.listaGrupoEmpresarial = new Array();\n\n const result = [];\n const map = new Map();\n for (const item of lista) {\n // if(!map.has(item.corporationId)){\n // map.set(item.corporationId, true);\n // result.push({\n // corporationId: item.corporationId,\n // name: item.nomeCli\n // });\n // }\n }\n\n\n let listItem: ListItem;\n for(const item of result){\n listItem = new ListItem();\n listItem.codigo = item.corporationId;\n listItem.descricao = item.name;\n\n this.listaGrupoEmpresarial.push(listItem);\n\n }\n\n\n return this.listaGrupoEmpresarial;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n\n findAll(): Observable {\n\n return this.baseService.Get('customerInfo/findAll').pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (!retorno.IsValid) {\n //this._msgService.addMessageValidationError('Icms', retorno.Erros, 'error', LogFrontFuncionalidade.Icms, Operacao.Consulta, null);\n }\n\n this.customerListInfo = retorno.Data as CustomerInfo[];\n\n return this.customerListInfo;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n\n getBookings(consulta: BookingRequest): Observable {\n return this.baseService.Post('bookings', consulta).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as MeusBookings;\n else {\n var erros: string[] = [];\n erros.push(\"Erro ao consultar Bookings! Contate o administrador!\");\n retorno.Erros.forEach(element => {\n erros.push(element.ErrorCode + \" - \" + element.Message);\n });\n this._msgService.addMessageArray('Meus Bookings', erros, \"error\", LogFrontFuncionalidade.Booking, Operacao.Consulta, consulta);\n return null;\n }\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n\n}\n","\nimport { throwError as observableThrowError, Observable } from 'rxjs';\n\nimport { catchError, map } from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { Http, Response } from '@angular/http';\n\n\nimport { BaseService } from './base.service';\nimport { ValidationResult } from './../_models/validation-result';\nimport { UF } from './../_models/uf';\nimport { Periodicidade } from './../_models/periodicidade';\nimport { ResponsavelOva } from './../_models/responsavelOva';\nimport { ResponsavelDesova } from './../_models/responsavelDesova';\nimport { TipoEmbalagem } from './../_models/tipoEmbalagem';\nimport { VeiculoEspecial } from './../_models/veiculoEspecial';\nimport { TipoPagadorFrete } from './../_models/tipoPagadorFrete';\nimport { TipoOperacaoComercial } from './../_models/tipoOperacaoComercial';\nimport { Incidente } from 'app/_models/incidente';\nimport { HttpClient, HttpResponse } from '@angular/common/http';\nimport { ListItem } from 'app/_models/listItem';\nimport { TipoServico } from '../_models/tipo-servico';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DataService {\n\n constructor(private _baseService: BaseService, protected http: HttpClient) { }\n\n getJsonFile(url: string): Observable {\n return this.http.get(url);\n }\n\n getUFs(): Observable {\n return this.getJsonFile('./data/ufs.json');\n // return this.http.get('./data/ufs.json').pipe(\n // map((response: any) => {\n // let retorno: UF[] = response.json();\n // return retorno;\n // }),\n // catchError(e => {\n // return observableThrowError('');\n // }))\n // ;\n }\n\n getPeriodicidades(): Observable {\n return this.getJsonFile('./data/periodicidades.json');\n // return this.http.request('data/periodicidades.json').pipe(\n // map((response: Response) => {\n // let retorno: Periodicidade[] = response.json();\n // return retorno;\n // }),\n // catchError(e => {\n // return observableThrowError('');\n // }))\n // ;\n }\n\n getResponsaveisOva(): Observable {\n return this.getJsonFile('./data/responsaveisOva.json');\n // return this.http.request('data/responsaveisOva.json').pipe(\n // map((response: Response) => {\n // let retorno: ResponsavelOva[] = response.json();\n // return retorno;\n // }),\n // catchError(e => {\n // return observableThrowError('');\n // }))\n // ;\n }\n\n getResponsaveisDesova(): Observable {\n return this.getJsonFile('./data/responsaveisDesova.json');\n // return this.http.request('data/responsaveisDesova.json').pipe(\n // map((response: Response) => {\n // let retorno: ResponsavelDesova[] = response.json();\n // return retorno;\n // }),\n // catchError(e => {\n // return observableThrowError('');\n // }))\n // ;\n }\n\n getTipoEmbalagens(): Observable {\n return this.getJsonFile('./data/tipoEmbalagens.json');\n // return this.http.request('data/tipoEmbalagens.json').pipe(\n // map((response: Response) => {\n // let retorno: TipoEmbalagem[] = response.json();\n // return retorno;\n // }),\n // catchError(e => {\n // return observableThrowError('');\n // }))\n // ;\n }\n\n getTiposOperacaoComercial(): Observable {\n return this.getJsonFile('./data/tiposOperacaoComercial.json');\n // return this.http.request('data/tiposOperacaoComercial.json').pipe(\n // map((response: Response) => {\n // let retorno: TipoOperacaoComercial[] = response.json();\n // return retorno;\n // }),\n // catchError(e => {\n // return observableThrowError('');\n // }))\n // ;\n }\n\n getTiposPagadorFrete(): Observable {\n return this.getJsonFile('./data/tiposPagadorFrete.json');\n // return this.http.request('data/tiposPagadorFrete.json').pipe(\n // map((response: Response) => {\n // let retorno: TipoPagadorFrete[] = response.json();\n // return retorno;\n // }),\n // catchError(e => {\n // return observableThrowError('');\n // }))\n // ;\n }\n\n getVeiculosEspeciais(): Observable {\n return this.getJsonFile('./data/veiculosEspeciais.json');\n // return this.http.request('data/veiculosEspeciais.json').pipe(\n // map((response: Response) => {\n // let retorno: VeiculoEspecial[] = response.json();\n // return retorno;\n // }),\n // catchError(e => {\n // return observableThrowError('');\n // }))\n // ;\n }\n\n getIncidentesBlocked(): Observable {\n return this.getJsonFile('./data/incidentesBlocked.json');\n // return this.http.request('data/incidentesBlocked.json').pipe(\n // map((response: Response) => {\n // let retorno: Incidente[] = response.json();\n // return retorno;\n // }),\n // catchError(e => {\n // return observableThrowError('');\n // }))\n // ;\n }\n\n getClienteClassificacao(): Observable {\n return this.getJsonFile('./data/clienteClassificacao.json');\n }\n\n\n getTipoPagamento(): Observable {\n return this.getJsonFile('./data/tipoPagamento.json');\n }\n\n getTipoServico(): Observable {\n return this.getJsonFile('./data/tipoServico.json');\n }\n\n getRegiaoGeografica(): Observable {\n return this.getJsonFile('./data/regiaoGeografica.json');\n }\n\n getTipoModal(): Observable {\n return this.getJsonFile('./../../data/tipoModal.json');\n }\n\n getSporadicTaxTypes(): Observable {\n return this.getJsonFile('./../../data/sporadicTaxType.json');\n }\n\n getStatuses(): Observable {\n return this.getJsonFile('./../../data/statuses.json');\n }\n}\n","import { Injectable } from '@angular/core';\nimport { DateModel } from \"app/shared/ng2-datepicker/ng2-datepicker.component\";\nimport { DatePickerOptions } from \"app/shared/ng2-datepicker/ng2-datepicker.component\";\nimport * as moment from 'moment-timezone';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DatepickerService {\n\n public ObtemData(data: DateModel, formato: string = \"DD/MM/YYYY\"): Date{\n return moment(data.formatted, formato, true).toDate();\n }\n\n public IsValid(data: DateModel, formato: string = \"DD/MM/YYYY\"): boolean{\n return moment(data.formatted, formato, true).isValid();\n }\n\n public GenerateOptionsConfig(initialDate: Date): DatePickerOptions{\n var config = new DatePickerOptions();\n config.locale = \"pt-br\";\n config.format = \"DD/MM/YYYY\";\n config.selectYearText = \"Ano\";\n config.todayText = \"Hoje\";\n config.clearText = \"Limpar\";\n config.initialDate = initialDate;\n config.firstWeekdaySunday = true;\n\n return config;\n }\n\n public ObtemDataHora(dt: DateModel, hora: string): Date {\n var data = this.ObtemData(dt);\n return this.ObtemDataHora2(data, hora);\n }\n\n public ObtemDataHora2(data: Date, hora: string): Date {\n var dia = this.fillZeros(data.getDate());\n var mes = this.fillZeros(data.getMonth()+1);\n var ano = data.getFullYear();\n\n let _hora = (hora != undefined) ? ((hora.length == 4) ? hora.substr(0,2) + ':' + hora.substr(2,2) : hora) : hora; // se veio sem os \":\", coloca.\n\n let hrs = (_hora != undefined) ? _hora.split(':') : null;\n let hr = (hrs != undefined) ? hrs[0] : '00';\n let minuto = (hrs != undefined) ? hrs[1] : '00';\n\n return moment.tz(ano + \"-\" + mes + \"-\" + dia + \" \" + hr + \":\" + minuto, \"America/Bahia\").toDate();\n }\n\n private fillZeros(n: any): string {\n return ('00'+n).slice(-2);\n }\n\n}\n","\nimport {catchError, map} from 'rxjs/operators';\nimport { AppService } from './app.service';\nimport { Injectable } from '@angular/core';\nimport { Response } from '@angular/http';\nimport { Observable } from 'rxjs';\n\nimport { BaseService } from './base.service';\nimport { MessageService } from './message.service';\n\nimport { Operacao } from '../_enums/operacao';\nimport { DoctoFatura } from '../_models/doctoFatura';\nimport { DownloadArquivo } from '../_models/downloadArquivo';\nimport { EnvioAnexoEmail } from '../_models/envioAnexoEmail';\nimport { ValidationResult } from \"app/_models/validation-result\";\nimport { DoctoFaturaArquivo } from \"app/_models/doctoFaturaArquivo\";\nimport { DoctoFaturaRequest } from '../_models/doctoFatura-request';\nimport { DocumentosSelecionados } from \"app/_models/documentos-selecionados\";\nimport { LogFrontFuncionalidade } from '../_enums/log-front-funcionalidade';\nimport { DoctoFaturaArquivoRequest } from '../_models/doctoFaturaArquivo-request';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DocumentacaoService {\n\n getLinksCertificados(idsViaGreen): Observable {\n return this.baseService.Get(\"linksCertificadosCo2\").pipe(map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n if(retorno.IsValid)\n return retorno.Data as string[];\n else{\n const erros = [];\n erros.push(\"Erro ao consultar os certificado de compensação de Co2! Contate o administrador!\");\n this._msgService.addMessageArray('Documentação', erros, \"error\", LogFrontFuncionalidade.Documentacao, Operacao.Consulta, idsViaGreen);\n }\n }),catchError(e => {\n const erros = [];\n erros.push(\"Erro ao consultar os certificados de compensação de Co2! Contate o administrador!\");\n this._msgService.addMessageArray('Documentação', erros, \"error\", LogFrontFuncionalidade.Documentacao, Operacao.Consulta, idsViaGreen);\n return this.baseService.handleError(e);\n }),);\n }\n\n constructor(private baseService: BaseService, private _msgService: MessageService, private _appService: AppService) { }\n\n getListaDocumentacao(consulta: DoctoFaturaRequest): Observable {\n return this.baseService.Post('doctofatura', consulta).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as DoctoFatura[];\n else {\n var erros: string[] = [];\n erros.push(\"Erro ao consultar Documentos! Contate o administrador!\");\n retorno.Erros.forEach(element => {\n erros.push(element.ErrorCode + \" - \" + element.Message);\n });\n if (erros.join(\".\").indexOf(\"Pesquisa não encontrou nenhuma informação\") > 0)\n return [];\n this._msgService.addMessageArray('Documentação', erros, \"error\", LogFrontFuncionalidade.Documentacao, Operacao.Consulta, consulta);\n return null;\n }\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n getListaArquivos(consulta: DoctoFaturaArquivoRequest): Observable {\n return this.baseService.Post('doctofatura/arquivos', consulta).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as DoctoFaturaArquivo[];\n else {\n var erros: string[] = [];\n erros.push(\"Erro ao consultar Arquivos do Documento! Contate o administrador!\");\n retorno.Erros.forEach(element => {\n erros.push(element.ErrorCode + \" - \" + element.Message);\n });\n this._msgService.addMessageArray('Documentação', erros, \"error\", LogFrontFuncionalidade.Documentacao, Operacao.Consulta, consulta);\n return null;\n }\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n downloadArquivo(arquivo: DoctoFaturaArquivo): Observable {\n arquivo.idUsuario = this._appService.UsuarioLogado.UsuarioID;\n return this.download(arquivo, 'doctofatura/download');\n }\n\n downloadTodos(arquivos: DoctoFaturaArquivo[]): Observable {\n arquivos.forEach(arq => arq.idUsuario = this._appService.UsuarioLogado.UsuarioID)\n return this.download(arquivos, 'doctofatura/download/todos');\n }\n\n downloadSelecionados(documentos: DoctoFatura[]): Observable {\n var selecionados = new DocumentosSelecionados();\n selecionados.UsuarioId = this._appService.UsuarioLogado.UsuarioID;\n selecionados.UsuarioIDeCargo = this._appService.UsuarioLogado.UsuarioIDeCargo;\n selecionados.Documentos = documentos;\n return this.download(selecionados, 'doctofatura/download/selecionados');\n }\n\n private download(arquivo: any, url: string): Observable{\n return this.baseService.Post(url, arquivo).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as DownloadArquivo;\n else {\n var erros: string[] = [];\n erros.push(\"Erro ao realizar download do arquivo! Contate o administrador!\");\n retorno.Erros.forEach(element => {\n erros.push(element.ErrorCode + \" - \" + element.Message);\n });\n this._msgService.addMessageArray('Documentação', erros, \"error\", LogFrontFuncionalidade.Documentacao, Operacao.Download, arquivo);\n return null;\n }\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n enviaEmailSelecionados(documentos: DoctoFatura[]): Observable {\n var selecionados = new DocumentosSelecionados();\n selecionados.UsuarioId = this._appService.UsuarioLogado.UsuarioID;\n selecionados.UsuarioIDeCargo = this._appService.UsuarioLogado.UsuarioIDeCargo;\n selecionados.Documentos = documentos;\n return this.enviaEmail(selecionados, 'doctofatura/email/selecionados');\n }\n\n enviaEmailArquivos(arquivos: DoctoFaturaArquivo[]): Observable {\n var consulta = new EnvioAnexoEmail();\n consulta.UsuarioId = this._appService.UsuarioLogado.UsuarioID;\n consulta.Arquivos = arquivos;\n return this.enviaEmail(consulta, 'doctofatura/email');\n }\n\n enviaEmail(consulta: any, url:string): Observable {\n return this.baseService.Post(url, consulta).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return true;\n else {\n var erros: string[] = [];\n erros.push(\"Erro ao enviar Arquivos do Documento por e-mail! Contate o administrador!\");\n retorno.Erros.forEach(element => {\n erros.push(element.ErrorCode + \" - \" + element.Message);\n });\n this._msgService.addMessageArray('Documentação', erros, \"error\", LogFrontFuncionalidade.Documentacao, Operacao.Email, consulta);\n return false;\n }\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { FiltrosLaterais } from \"app/_models/filtros-laterais\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FiltrosLateraisService {\n\n constructor() { }\n\n public filtrarDados(dados: any, filtros: FiltrosLaterais): any {\n var modal = \"|\" + (filtros.flagModalPoPo ? \"PO/PO\" : \"\") + \"|\"\n + (filtros.flagModalPoPa ? \"PO/PA\" : \"\") + \"|\"\n + (filtros.flagModalPaPa ? \"PA/PA\" : \"\") + \"|\"\n + (filtros.flagModalPaPo ? \"PA/PO\" : \"\") + \"|\";\n\n var container = \"|\" + (filtros.flagTpContainerDryDC_HC ? \"HC|DC\" : \"\") + \"|\"\n + (filtros.flagTpContainerEspecial ? \"OT|OH|FR|FH|TK\" : \"\") + \"|\"\n + (filtros.flagTpContainerRH ? \"RH|RF\" : \"\") + \"|\";\n\treturn dados.filter\n\t\t(x =>\n\t\t x.tamanhoContainer == \n\t\t\t(\n\t\t\t\t((filtros.tamanho20Pes && filtros.tamanho40Pes) || (!filtros.tamanho20Pes && !filtros.tamanho40Pes)) ? \n\t\t\t\t\tx.tamanhoContainer : (filtros.tamanho20Pes && !filtros.tamanho40Pes ? 20 : 40)\n\t\t\t)\n\t\t\t&& (!filtros.status || x.Status.trim().toLowerCase() == filtros.status.trim().toLowerCase())\t\t\t\n\t\t\t&& ((modal.indexOf(\"|\" + x.modal + \"|\") >= 0) || modal == \"|||||\")\n\t\t\t&& (container == \"||||\" || (x.tipoDeContainer != null && \n\t\t\t\t\t\t\t\t\t\tx.tipoDeContainer.Desc_resumida != null && \n\t\t\t\t\t\t\t\t\t\tcontainer.indexOf(\"|\" + x.tipoDeContainer.Desc_resumida.substr(3, 2) + \"|\") != -1))\n\t\t\t&& (( x.flagCargaOver == (filtros.flagCargaOver ? \"S\" : x.flagCargaOver)\n\t\t\t&& x.flagCargaPerigosa == (filtros.flagCargaPerigosa ? \"S\" : x.flagCargaPerigosa)\n\t\t\t&& x.flagCargaRefrigerada == (filtros.flagCargaRefrigerada ? \"S\" : x.flagCargaRefrigerada) )|| \n\t\t\t (filtros.flagCargaSeca &&\n\t\t\t\t(\n\t\t\t\t\tx.flagCargaOver == \"N\"\n\t\t\t\t\t&& x.flagCargaOver == x.flagCargaRefrigerada\n\t\t\t\t\t&& x.flagCargaOver == x.flagCargaPerigosa\n\t\t\t\t)\n\t\t\t))\n\t\t);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { PropostaComercial } from \"app/_models/proposta-comercial\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FiltrosPropostasComerciaisService {\n\n constructor() { }\n\n filtrar(propostasComerciais: PropostaComercial[], campoOrigemFiltroNumProposta = false, filtros: any[]): PropostaComercial[] {\n\n if (!propostasComerciais || propostasComerciais.length == 0) { return propostasComerciais };\n\n const [numProposta, idTrecho, idMunicOrigem, idMunicDestino, idPortoOrigem, idPortoDestino,\n idFamiliaProduto, tipoOperacaoComercial, tipoDeContainer, modal] = filtros;\n\n const tipoOper = tipoOperacaoComercial == \"\" || !tipoOperacaoComercial ? 0 : tipoOperacaoComercial;\n\n if (campoOrigemFiltroNumProposta) {\n if (numProposta > 0 ) {\n return propostasComerciais.filter(x => x.numProposta == numProposta \n && x.idTrecho == idTrecho);\n }\n return propostasComerciais;\n }\n\n return propostasComerciais.filter(x =>\n (\n (idMunicOrigem == 0 || (x.idMunicOrigem == idMunicOrigem)) && \n (idMunicDestino == 0 || (x.idMunicDestino == idMunicDestino)) && \n (idPortoOrigem == 0 || (modal.startsWith(\"PO\") && x.idPortolOrigem == idPortoOrigem)) &&\n (idPortoDestino == 0 || (modal.endsWith(\"PO\") && x.idPortoDestino == idPortoDestino)) && \n (idFamiliaProduto == 0 || (x.idFamiliaProduto == idFamiliaProduto)) &&\n (tipoOper == 0 || (x.tipoOperacaoComercial && x.tipoOperacaoComercial.toUpperCase() == tipoOper)) &&\n ((tipoDeContainer.idContainer == \"0|0\") || \n (tipoDeContainer.idContainer.trim() == (x.tipoDeContainer.Codigo + \"|\" + x.tipoDeContainer.Tamanho).trim()))\n )\n );\n }\n}\n","\nimport {catchError, map} from 'rxjs/operators';\nimport { ValidationResult } from './../_models/validation-result';\nimport { Injectable } from '@angular/core';\nimport { Http, Headers, RequestOptions, Response } from '@angular/http';\nimport { Observable } from 'rxjs';\n\n\nimport { BaseService } from './base.service';\nimport { Funcionalidade } from './../_models/funcionalidade';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FuncionalidadeService {\n\n constructor(private baseService: BaseService) { }\n\n getFuncionalidades(): Observable {\n // get users from api\n return this.baseService.Get('funcionalidade').pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as Funcionalidade[];\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n getFuncionalidade(id: number): Observable {\n // get users from api\n return this.baseService.Get('funcionalidade/' + id).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as Funcionalidade;\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GenericOrderbyService {\n\n constructor() { } \n // Parâmetro 'campo' deve ser uma única string com o mesmo nome da propriedade da classe listada.\n // Exemplo utilizado (Meus Bookings)\n ordenarPorCampo(array: any[], campo: string, descending: boolean = false): any[] {\n var x = (descending) ? -1 : 1;\n\n if (!array || !campo) return array;\n\n array.sort((a, b) => {\n \n var campoA = (a[campo] == null) ? \"\" : a[campo];\n var campoB = (b[campo] == null) ? \"\" : b[campo];\n if (campoA < campoB) {\n return -1 * x;\n } else if (campoA > campoB) {\n return 1 * x;\n } else {\n return 0;\n }\n });\n\n return array; \n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GroupbyService {\n\n constructor() { }\n\n public AgruparPorCampo(lista: Array, campo: string): Array{\n var listaAgrupada: Array = [];\n if (!lista) return [];\n lista.forEach(x => {\n if (!listaAgrupada.find(y => y[campo] == x[campo]))\n listaAgrupada.push(x); \n });\n\n return listaAgrupada;\n }\n}","\nimport {catchError, map} from 'rxjs/operators';\nimport { Injectable, EventEmitter } from '@angular/core';\nimport { Response } from '@angular/http';\nimport { Observable } from 'rxjs';\n\n\nimport { BaseService } from './base.service';\nimport { MessageService } from 'app/_services/message.service';\n\nimport { Operacao } from '../_enums/operacao';\nimport { GrupoEconomico } from 'app/_models/grupo-economico';\nimport { ValidationResult } from './../_models/validation-result';\nimport { GrupoEconomicoRequest } from 'app/_models/grupo-economico-request';\nimport { LogFrontFuncionalidade } from '../_enums/log-front-funcionalidade';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GrupoEconomicoService {\n\n grupoEconomicoSelecionadoEvent = new EventEmitter();\n\n constructor(private baseService: BaseService, \n private _msgService: MessageService) { }\n\n \n getGruposEconomicos(filtro: GrupoEconomicoRequest): Observable {\n return this.baseService.Post('grupoeconomico', filtro).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as GrupoEconomico[];\n else {\n var erros: string[] = [];\n erros.push(\"Erro ao consultar Grupos Econômicos! Contate o administrador!\");\n retorno.Erros.forEach(element => {\n erros.push(element.ErrorCode + \" - \" + element.Message);\n });\n this._msgService.addMessageArray('Grupo Econômico', erros, \"error\", LogFrontFuncionalidade.GrupoEconomico, Operacao.Consulta, filtro); \n return null;\n }\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n}\n","\nimport {catchError, map} from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { Response } from '@angular/http';\nimport { BaseService } from './base.service';\nimport { SharedService } from './shared.service';\nimport { MessageService } from './message.service';\nimport { LogFrontFuncionalidade } from '../_enums/log-front-funcionalidade';\nimport { Operacao } from '../_enums/operacao';\nimport { Icms } from '../_models/icms';\nimport { ValidationResult } from '../_models/validation-result';\nimport { Observable } from 'rxjs';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class IcmsService {\n\n urlPath:string;\n\n constructor(\n private baseService: BaseService,\n private _msgService: MessageService) { }\n\n obterListaIcms(): Observable {\n return this.baseService.Get('icms').pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (!retorno.IsValid) {\n this._msgService.addMessageValidationError('Icms', retorno.Erros, 'error', LogFrontFuncionalidade.Icms, Operacao.Consulta, null);\n }\n\n return retorno.Data as Icms[];\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n\n obterListaIcmsByLocalication(departureUF: string, destinationUf: string): Observable {\n\n if(departureUF == undefined)\n departureUF = departureUF + \"\";\n\n if(destinationUf == undefined)\n destinationUf=destinationUf+\"\";\n\n //this.urlPath = string.concat('icms/GetData?departureUf=', departureUF, '&destinationUf=' , destinationUf);\n this.urlPath = 'icms/GetData?departureUf=' + departureUF + '&destinationUf=' + destinationUf;\n\n return this.baseService.Get(this.urlPath).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (!retorno.IsValid) {\n this._msgService.addMessageValidationError('Icms', retorno.Erros, 'error', LogFrontFuncionalidade.Icms, Operacao.Consulta, null);\n }\n\n return retorno.Data as Icms[];\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n\n salvar(icms: Icms): Observable {\n console.log(\"salvar(icms: Icms):\", icms);\n return this.baseService.Post('icms', icms).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (!retorno.IsValid) {\n this._msgService.addMessageValidationError('Icms - Salvar', retorno.Erros, 'error', LogFrontFuncionalidade.Icms, Operacao.Inclusao, icms);\n }\n\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n atualizar(icms: Icms): Observable {\n console.log(\"atualizar(icms: Icms):\", icms);\n\n return this.baseService.Post('icms', icms).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (!retorno.IsValid) {\n this._msgService.addMessageValidationError('icms', retorno.Erros, 'error', LogFrontFuncionalidade.Icms, Operacao.Alteracao, icms);\n }\n\n return retorno;\n }),catchError(e => {\n console.log(e);\n return this.baseService.handleError(e);\n }),);\n }\n\n excluir(icmsId: number): Observable {\n return this.baseService.Delete('icms/' + icmsId).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (!retorno.IsValid) {\n this._msgService.addMessageValidationError('icms - Exclusão', retorno.Erros, 'error', LogFrontFuncionalidade.Icms, Operacao.Exclusao, icmsId);\n }\n\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n}\n","import {catchError, map} from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { Http, Headers, RequestOptions, Response } from '@angular/http';\nimport { Observable } from 'rxjs';\n\n\nimport { BaseService } from './base.service';\nimport { ValidationResult } from './../_models/validation-result';\nimport { InfoPgtoAdicional } from '../_models/InfoPgtoAdicional';\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\nimport { Operacao } from 'app/_enums/operacao';\nimport { MessageService } from './message.service';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class InfoPgtoAdicionalService {\n\n constructor(private baseService: BaseService,\n private _msgService: MessageService) { }\n\n SalvarInfoPgtoAdicional(infoPgtoAdicional: InfoPgtoAdicional): Observable {\n if (!infoPgtoAdicional.idInfoPgtoAdicional || infoPgtoAdicional.idInfoPgtoAdicional == 0)\n return this.baseService.Post('infopgtoadicional/salvarinfopgtoadicional', infoPgtoAdicional).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n else\n return this.baseService.Put('infopgtoadicional/' + infoPgtoAdicional.idInfoPgtoAdicional, infoPgtoAdicional).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n\n getInfoPgoAdicional(id: number): Observable {\n return this.baseService.Get('GetByNumBooking/' + id).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as InfoPgtoAdicional;\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n getInfoPgtoAdicionalByNumBooking(numBooking: string): Observable {\n\n return this.baseService.Get('infopgtoadicional/' + numBooking).pipe(\n map((response: ValidationResult) => {\n\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as InfoPgtoAdicional;\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n\n getListaInfoPgtoAdicional(startDate: String, endDate: String, nomeCliente: String, cnpj: String, idBooking: String, idProposta: number ): Observable {\n\n if(idBooking == undefined)\n idBooking = '';\n\n if(idProposta == undefined)\n idProposta=0;\n\n return this.baseService.Get('infopgtoadicional/listainfopgtoadicionalbyperiodo?startDate=' + startDate + '&endDate=' + endDate + '&nomeCliente=' + nomeCliente + '&cnpj=' + cnpj + '&idBooking=' + idBooking + '&idProposta=' + idProposta).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (!retorno.IsValid) {\n this._msgService.addMessageValidationError('Info Pagto Adicional', retorno.Erros, 'error', LogFrontFuncionalidade.InfoPgtoAdicional, Operacao.Consulta, null);\n }\n\n return retorno.Data as InfoPgtoAdicional[];\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n\n }\n","\nimport {catchError, map} from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { Http, Headers, RequestOptions, Response } from '@angular/http';\nimport { Observable } from 'rxjs';\n\n\nimport { NivelLog } from 'app/_enums/nivel-log';\nimport { BaseService } from './base.service';\nimport { ValidationResult } from './../_models/validation-result';\nimport { AppService } from './app.service';\nimport { Log } from './../_models/log';\nimport { LogFront } from 'app/_models/log-front';\nimport { Operacao } from 'app/_enums/operacao';\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LogService {\n constructor(private baseService: BaseService) {\n\n }\n\n getLogs(filtro: string): Observable {\n return this.baseService.Post('log', { filtro: filtro }).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as Log[];\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n getDescricaoNivel(nivel: NivelLog): string {\n switch (nivel) {\n case NivelLog.Debug:\n return \"Debug\";\n case NivelLog.Error:\n return \"Erro\";\n }\n }\n\n logFront(dados: any, func: LogFrontFuncionalidade, msg: string, oper: Operacao, tela: string) {\n var log = new LogFront();\n log.Dados = JSON.stringify(dados);\n log.Funcionalidade = func;\n log.Mensagem = msg;\n log.Operacao = oper;\n log.Tela = tela;\n log.Browser = this.baseService.getBrowserVersao();\n log.VersaoPortal = this.baseService.getVersaoWebPortal();\n this.addLogFront(log).subscribe();\n }\n \n addLogFront(log: LogFront): Observable {\n return this.baseService.Post('log/front', log).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BaseService } from './base.service';\nimport { MapsConfig } from 'app/_models/maps-config';\nimport { Geolocalizacao } from 'app/_models/geolocalizacao';\nimport { TipoGeolocalizacao } from 'app/_enums/geolocalizacao-tipo';\nimport { StatusGeolocalizacao } from 'app/_enums/geolocalizacao-status';\n\ndeclare var removeMapa: any;\ndeclare var inicializaMapa: any;\ndeclare var limpaMarcadores: any;\ndeclare var adicionaMarcadoresMapa: any;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MapsService {\n\n constructor(private baseService: BaseService) { }\n\n private mapaJaCarregado: boolean = false;\n\n public ConfiguraMapa(listaPontosGeograficos: Geolocalizacao[]){\n var startup = this.Config.Startup;\n if (!this.mapaJaCarregado)\n inicializaMapa(startup.Latitude, startup.Longitude, startup.Zoom, startup.MapType);\n\n var marcadores = [];\n listaPontosGeograficos.forEach(ponto => {\n var zCustomizado = 9;\n if (ponto.Tipo == TipoGeolocalizacao.Caminhao)\n zCustomizado = 18;\n marcadores.push({ Tipo: ponto.Tipo, Latitude: ponto.Latitude, Longitude: ponto.Longitude, Icone: this.ObterIcone(ponto), ZoomCustomizado: zCustomizado })\n });\n\n adicionaMarcadoresMapa(marcadores);\n this.mapaJaCarregado = true;\n }\n\n public LimpaMarcadores(){\n limpaMarcadores();\n }\n\n public RemoveMapaExistente(){\n removeMapa();\n this.mapaJaCarregado = false;\n }\n\n private ObterIcone(ponto: Geolocalizacao): string {\n var icones = this.Config.Icones;\n if(ponto.Tipo == TipoGeolocalizacao.TerminalComCarga)\n return icones.find(i => i.Nome == \"TerminalComCarga\").Icone;\n if (ponto.Tipo == TipoGeolocalizacao.Caminhao)\n return icones.find(i => i.Nome == \"Caminhao\").Icone;\n if (ponto.Tipo == TipoGeolocalizacao.Navio)\n return icones.find(i => i.Nome == \"Navio\").Icone;\n if (ponto.Tipo == TipoGeolocalizacao.Terminal && ponto.Status == StatusGeolocalizacao.Realizado)\n return icones.find(i => i.Nome == \"TerminalVisitado\").Icone;\n if (ponto.Tipo == TipoGeolocalizacao.Terminal && ponto.Status == StatusGeolocalizacao.Proximo)\n return icones.find(i => i.Nome == \"TerminalProximo\").Icone;\n if (ponto.Tipo == TipoGeolocalizacao.Terminal && ponto.Status == StatusGeolocalizacao.NaoRealizado)\n return icones.find(i => i.Nome == \"TerminalNaoVisitado\").Icone;\n return \"\";\n }\n\n private get Config(): MapsConfig{\n //Retorna as configurações do Maps carregadas (_config\\google-config.json)\n return this.baseService.ConfigMaps;\n }\n\n}\n","import { Injectable, EventEmitter } from '@angular/core';\n//import { Subject, Observable, Subscription } from 'rxjs/Rx';\nimport { ValidationError } from './../_models/validation-error';\nimport { LogService } from './log.service';\nimport { Operacao } from '../_enums/operacao';\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MessageService {\n\n public tela: string;\n\n constructor(private _logService: LogService) { }\n\n redirect: any = {\n show: false,\n tela: '',\n type: '',\n mensagem: '',\n mensagemArray: []\n };\n\n emitirMensagem = new EventEmitter();\n private timeout = 80000;\n\n clearMessage(){\n this.addMessage(null, null, null);\n }\n\n addMessage(tela: string, msg: string, type: string = 'default', func: LogFrontFuncionalidade = LogFrontFuncionalidade.Invalida,\n operacao: Operacao = Operacao.Invalida, dados: any = null) {\n if (type == \"error\") type = \"danger\";\n\n this.emitirMensagem.emit({ tela: tela, mensagem: msg, tipo: type });\n\n if (msg != '' && msg != undefined && type != \"success\")\n this._logService.logFront(dados, func, msg, operacao, tela);\n }\n\n addMessageArray(tela: string, msg: string[], type: string = 'default', func: LogFrontFuncionalidade = LogFrontFuncionalidade.Invalida,\n operacao: Operacao = Operacao.Invalida, dados: any = null) {\n if (type == \"error\") type = \"danger\";\n\n this.emitirMensagem.emit({ tela: tela, mensagem: msg, tipo: type });\n\n if (msg != undefined && msg.length > 0 && type != \"success\")\n this._logService.logFront(dados, func, msg.join(';'), operacao, tela);\n }\n\n addMessageValidationError(tela: string, msgs: ValidationError[], type: string = 'default', func: LogFrontFuncionalidade = LogFrontFuncionalidade.Invalida,\n operacao: Operacao = Operacao.Invalida, dados: any = null) {\n if (type == \"error\") type = \"danger\";\n\n let msgString: string[] = [];\n msgs.forEach(x => msgString.push(x.Message));\n\n this.emitirMensagem.emit({ tela: tela, mensagem: msgString, tipo: type });\n\n if (msgString != undefined && msgString.length > 0 && type != \"success\")\n this._logService.logFront(dados, func, msgString.join(';'), operacao, tela);\n }\n\n addMessageRedirect(tela: string, msg: string, type: string = 'default', func: LogFrontFuncionalidade = LogFrontFuncionalidade.Invalida,\n operacao: Operacao = Operacao.Invalida, dados: any = null) {\n if (type == \"error\") type = \"danger\";\n\n this.redirect.show = true;\n this.redirect.type = type;\n this.redirect.mensagem = msg;\n this.redirect.tela = tela;\n\n if (msg != '' && msg != undefined && type != \"success\")\n this._logService.logFront(dados, func, msg, operacao, tela);\n }\n\n addMessageRedirectArray(tela: string, msg: string[], type: string = 'default', func: LogFrontFuncionalidade = LogFrontFuncionalidade.Invalida,\n operacao: Operacao = Operacao.Invalida, dados: any = null) {\n if (type == \"error\") type = \"danger\";\n\n this.redirect.show = true;\n this.redirect.type = type;\n this.redirect.mensagem = msg;\n this.redirect.titulo = tela;\n\n if (msg != undefined && msg.length > 0 && type != \"success\")\n this._logService.logFront(dados, func, msg.join(';'), operacao, tela);\n }\n\n getMessageRedirect(): any {\n var retorno: any = {\n show: false,\n tela: '',\n type: '',\n mensagem: '',\n mensagemArray: []\n };\n\n if (this.redirect == undefined)\n return null;\n\n retorno.show = this.redirect.show;\n retorno.titulo = this.redirect.tela;\n retorno.type = this.redirect.type;\n\n if (this.redirect.mensagem instanceof Array)\n retorno.mensagemArray = this.redirect.mensagemArray;\n else\n retorno.mensagem = this.redirect.mensagem;\n\n this.redirect.show = false;\n this.redirect.type = '';\n this.redirect.mensagem = '';\n this.redirect.mensagemArray = [];\n this.redirect.tela = '';\n\n return retorno;\n }\n}\n","\nimport {catchError, map} from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { Http, Response } from '@angular/http';\nimport { Observable } from 'rxjs';\n\n\nimport { BaseService } from './base.service';\nimport { ValidationResult } from './../_models/validation-result';\nimport { Municipio } from './../_models/municipio';\nimport { MunicipioRequest } from './../_models/municipio-request';\nimport { HttpClient } from '@angular/common/http';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MunicipioService {\n\n constructor(private _baseService: BaseService, protected http: HttpClient) { }\n\n getMunicipios(uf: string = ''): Observable {\n return this._baseService.Get('municipio/' + uf).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as Municipio[];\n else\n return null;\n }),\n catchError(e => {\n return this._baseService.handleError(e);\n }),)\n ;\n }\n\n getMunicipiosAutoComplete(descricao: string): Observable {\n return this._baseService.Get('municipio/filtro/' + descricao).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as Municipio[];\n else\n return null;\n }),\n catchError(e => {\n return this._baseService.handleError(e);\n }),)\n ;\n }\n\n getMunicipiosEspecial(municipio: MunicipioRequest): Observable {\n return this._baseService.Post('municipio', municipio).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as Municipio[];\n else\n return null;\n }),\n catchError(e => {\n return this._baseService.handleError(e);\n }),)\n ;\n }\n}\n","\nimport {catchError, map} from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Response } from '@angular/http';\n\nimport { BaseService } from \"app/_services/base.service\";\nimport { NavioViagem } from '../_models/navioViagem';\nimport { NavioViagemRequest } from '../_models/navioViagem-request';\nimport { ValidationResult } from \"app/_models/validation-result\";\nimport { Console } from 'console';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NavioViagemService {\n\n constructor(private baseService: BaseService) { }\n\n getNavioViagem(consulta: NavioViagemRequest): Observable {\n return this.baseService.Post('navioViagem', consulta).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n if (retorno.IsValid)\n return retorno.Data as NavioViagem[];\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n}\n","import { Injectable } from '@angular/core';\n\n\n\nimport { BaseService } from './base.service';\nimport { MessageService } from 'app/_services/message.service';\nimport { ValidationResult } from 'app/_models/validation-result';\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\nimport { Operacao } from 'app/_enums/operacao';\nimport { ImagemNF } from 'app/_models/imagemNF';\nimport { Http, ResponseContentType } from '@angular/http';\nimport { forkJoin } from 'rxjs';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { OkEntregaConsultaLink } from 'app/_models/ok-entrega-consulta-link';\n@Injectable({\n providedIn: 'root'\n})\nexport class OkEntregaService {\n\n constructor(private baseService: BaseService,\n private _msgService: MessageService,\n private http: HttpClient) { }\n\n\n getPDFCanhotos(CanhotosDisponiveis: ImagemNF[]): any {\n let requests = []\n CanhotosDisponiveis.forEach(element => {\n requests.push(this.http.get(element.URLImagem, { responseType: 'blob' }));\n });\n return forkJoin([...requests]);\n }\n\n openPDFNovaAba(response: any) {\n const retorno: ValidationResult = response;\n\n if (retorno && !retorno.IsValid) {\n this._msgService.addMessageValidationError('Ok Entrega', retorno.Erros, 'error', LogFrontFuncionalidade.OkEntregaConsulta, Operacao.Consulta);\n } else {\n const fileName = \"canhotos.pdf\";\n // if (window.navigator && window.navigator.appVersion && window.navigator.appVersion.indexOf('.NET') > 0 && typeof window.navigator.msSaveBlob === 'function') {\n if (window.navigator && typeof window.navigator.msSaveBlob === 'function') {\n window.navigator.msSaveOrOpenBlob(new Blob(retorno.Data), fileName);\n } else {\n const b64toBlob = (base64, type = 'application/octet-stream') =>\n fetch(`data:${type};base64,${base64}`).then(res => res.blob())\n\n b64toBlob(retorno.Data, \"application/pdf\")\n .then(res => {\n let obj = URL.createObjectURL(res)\n window.open(obj, '_blank');\n URL.revokeObjectURL(obj)\n });\n }\n }\n }\n\n downloadPDFCanhoto(response: ValidationResult) {\n const retorno: ValidationResult = response;\n\n if (retorno && !retorno.IsValid) {\n this._msgService.addMessageValidationError('Ok Entrega', retorno.Erros, 'error', LogFrontFuncionalidade.OkEntregaConsulta, Operacao.Consulta);\n } else {\n const fileName = \"canhotos.pdf\";\n if (window.navigator && window.navigator.appVersion && window.navigator.appVersion.indexOf('.NET') > 0 && typeof window.navigator.msSaveBlob === 'function') {\n window.navigator.msSaveBlob(new Blob(retorno.Data), fileName);\n } else {\n const downloadLink = document.createElement(\"a\");\n downloadLink.href = 'data:application/pdf;base64,' + retorno.Data;\n downloadLink.download = fileName;\n downloadLink.click();\n }\n }\n }\n\n getLinkCanhotos(consultas: OkEntregaConsultaLink[]) {\n return this.baseService.Post(\"ok-entrega/canhoto-links\", consultas);\n }\n}\n","\nimport {throwError as observableThrowError, Observable } from 'rxjs';\n\nimport {catchError, map} from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { Response } from '@angular/http';\n\nimport { CtmNf } from 'app/_models/ctmNf';\nimport { Incidente } from 'app/_models/incidente';\nimport { OrdemServico } from 'app/_models/ordemServico';\nimport { OrdemServicoVM } from './../_models/ordemServicoVM';\nimport { IncidenteRequest } from './../_models/incidente-request';\nimport { ValidationResult } from \"app/_models/validation-result\";\nimport { OrdemServicoRequest } from 'app/_models/ordemServicoRequest';\nimport { AtualizarOrdemServico } from 'app/_models/atualizar-ordem-servico';\n\nimport { BaseService } from \"app/_services/base.service\";\nimport { MessageService } from './message.service';\n\nimport { AnalyticsService } from 'app/_services/analytics.service';\nimport { AnalyticsTela } from '../_enums/analytics-tela';\nimport { Operacao } from '../_enums/operacao';\nimport { LogFrontFuncionalidade } from '../_enums/log-front-funcionalidade';\nimport { OrdemServicoDownload } from 'app/_models/ordemServicoDownload';\nimport { SharedService } from './shared.service';\nimport { TipoContainer } from 'app/_models/tipo-container';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class OrdemServicoService {\n\n constructor(private baseService: BaseService,\n private _sharedService: SharedService,\n private _msgService: MessageService,\n private _analyticsService: AnalyticsService) {\n }\n\n atualizarNotasFiscais(nfs: CtmNf[]): Observable {\n return this.baseService.Put('ordemservico/ctmnf', nfs).pipe(map((response: ValidationResult) => {\n const retorno: ValidationResult = response;\n\n if (!retorno.IsValid) {\n this._analyticsService.RegistrarErro(AnalyticsTela.VincularNF, retorno);\n // this._msgService.addMessageValidationError('Ordens de Serviço', retorno.Erros, 'error');\n throw retorno.Erros;\n }\n\n return retorno.Data as CtmNf[];\n }),catchError(e => {\n return observableThrowError(e);\n }),);\n }\n\n atualizarOrdensDeServico(ordens: AtualizarOrdemServico[]): Observable {\n return this.baseService.Put('ordemservico', ordens).pipe(map((response: ValidationResult) => {\n const retorno: ValidationResult = response;\n\n if (!retorno.IsValid) {\n this._analyticsService.RegistrarErro(AnalyticsTela.OrdemServico, retorno);\n //this._msgService.addMessageValidationError('Ordens de Serviço', retorno.Erros, 'error');\n throw retorno.Erros;\n }\n\n return retorno.Data as AtualizarOrdemServico[];\n }),catchError(e => {\n //return this.baseService.handleError(e);\n return observableThrowError(e);\n }),);\n }\n\n obtemOrdensDeServico(consulta: OrdemServicoRequest, tela: AnalyticsTela): Observable {\n var func = consulta.vincularNF ? LogFrontFuncionalidade.VincularNF : LogFrontFuncionalidade.OrdemDeServico;\n return this.baseService.Post('ordemservico', consulta).pipe(map((response: ValidationResult) => {\n const retorno: ValidationResult = response;\n\n if (!retorno.IsValid) {\n this._analyticsService.RegistrarErro(tela, retorno);\n this._msgService.addMessageValidationError('Ordens de Serviço', retorno.Erros, 'error', func, Operacao.Consulta, consulta);\n }\n\n return retorno.Data as OrdemServicoVM;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n obtemOrdensDeServicoCSV(consulta: OrdemServicoRequest): Observable {\n return this.baseService.Post('ordemservico/CSV', consulta).pipe(map((response: ValidationResult) => {\n const retorno: ValidationResult = response;\n\n if (!retorno.IsValid) {\n this._msgService.addMessageValidationError('Ordens de Serviço', retorno.Erros, 'error');\n }\n\n return retorno.Data as OrdemServicoDownload[];\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n obtemCtmNfs(consulta: OrdemServicoRequest): Observable {\n var func = consulta.vincularNF ? LogFrontFuncionalidade.VincularNF : LogFrontFuncionalidade.OrdemDeServico;\n\n return this.baseService.Post('ordemservico/ctmnf', consulta).pipe(map((response: ValidationResult) => {\n const retorno: ValidationResult = response;\n\n if (!retorno.IsValid) {\n this._analyticsService.RegistrarErro(AnalyticsTela.VincularNF, retorno);\n this._msgService.addMessageValidationError('Ordens de Serviço - CTM', retorno.Erros, 'error', func, Operacao.Consulta, consulta);\n }\n\n return retorno.Data as CtmNf[];\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n getTipoContainersOS(idFamiliaProduto: number): Observable {\n return this.baseService.Get('ordemservico/containers/' + idFamiliaProduto).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as TipoContainer[];\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n obtemIncidentes(consulta: IncidenteRequest): Observable {\n return this.baseService.Post('ordemservico/incidente', consulta).pipe(map((response: ValidationResult) => {\n const retorno: ValidationResult = response;\n\n if (!retorno.IsValid) {\n this._analyticsService.RegistrarErro(AnalyticsTela.OrdemServico, retorno);\n this._msgService.addMessageValidationError('Ordens de Serviço - Incidentes', retorno.Erros, 'error', LogFrontFuncionalidade.OrdemDeServico, Operacao.Consulta, consulta);\n }\n\n return retorno.Data as Incidente[];\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n exportarRelatorioCSV(ordens: OrdemServicoDownload[]) {\n\n if (!ordens || ordens.length === 0)\n return;\n\n const data: any[] = [];\n const titulos: any[] = [\n 'OS',\n 'Tipo de OS',\n 'Fatura',\n 'Número do Booking',\n 'Tipo de Serviço',\n 'Navio / Viagem',\n 'Origem/Destino',\n 'Embarcador/Destinatário',\n 'Município',\n 'Data da Programação',\n 'Contêiner',\n 'Status',\n 'Retirada do Terminal',\n 'Chegada no Cliente',\n 'Saída do Cliente',\n 'Entrega no Terminal',\n 'Status NF',\n 'Número do BL',\n 'Número do CT-e Aliança',\n 'Número da Apólice de Seguro',\n 'Número da Averbação do Seguro',\n 'Número Cte',\n 'Número Ctm',\n 'Número NF',\n 'Chave Cte',\n 'Chave Ctm',\n 'Chave Nfe'\n ];\n\n ordens.forEach(x => {\n var munic = (x.municOriDes) ? x.municOriDes.trim() + \"/\" + x.ufOriDes : \"\";\n data.push([\n x.numOs,\n x.tipo,\n x.numFatura,\n x.numBooking,\n x.descTipoServico,\n x.descNavioViagem,\n x.portoOriDes,\n x.nomeEmbDest,\n munic,\n this._sharedService.formataDataCSV(x.dhProgramacao),\n x.numContainer,\n x.statusOs,\n this._sharedService.formataDataCSV(x.dtRetiradaTerminal),\n this._sharedService.formataDataCSV(x.dtInicioExecucao),\n this._sharedService.formataDataCSV(x.dtFimExecucao),\n this._sharedService.formataDataCSV(x.dtEntregaTerminal),\n x.statusPortal,\n x.numBL,\n x.numCte,\n x.numApolice,\n x.numAverbacao,\n x.numCte,\n x.numCtm,\n x.numNf,\n x.chaveCte,\n x.chaveCtm,\n x.chaveNfe\n ]);\n });\n\n this.baseService.DownloadCSV(data, titulos, 'Ordens de Serviço.csv');\n }\n\n filtrarPorStep(ordens: OrdemServico[], tipoEventoDaImagem: string): OrdemServico[] {\n if (!ordens || tipoEventoDaImagem == 'total') {\n return ordens;\n }\n\n const tipoEvento = tipoEventoDaImagem.trim().toLowerCase();\n return ordens.filter(x => x.statusPortal && x.statusPortal.trim().toLowerCase() == tipoEvento);\n }\n\n validarNfe(nfe: CtmNf) {\n if (nfe === undefined || nfe === null || !nfe.chaveNfe) {\n return false;\n }\n\n return true;\n }\n}\n","\nimport {catchError, map} from 'rxjs/operators';\nimport { Injectable, EventEmitter } from '@angular/core';\nimport { Http, Headers, RequestOptions, Response } from '@angular/http';\nimport { Observable } from 'rxjs';\n\n\nimport { BaseService } from './base.service';\nimport { Parametro } from './../_models/parametro';\nimport { Porto } from './../_models/porto';\nimport { Anel } from './../_models/anel';\nimport { TipoServico } from './../_models/tipo-servico';\nimport { Navio } from './../_models/navio';\nimport { ValidationResult } from './../_models/validation-result';\nimport { ParametroPorto } from 'app/_models/parametro-porto';\nimport { PaginaParametroPorto } from 'app/_models/pagina-parametro-porto';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ParametroService {\n\n constructor(private baseService: BaseService) { }\n\n // ---- Parametros de quantidade de horas ------\n salvarParametro(parametros: Parametro[]): Observable {\n return this.baseService.Put('parametro/', parametros).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n getParametros(): Observable {\n return this.baseService.Get('parametro').pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as Parametro[];\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n getParametro(id: number): Observable {\n return this.baseService.Get('parametro/' + id).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as Parametro;\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n obtemParametroPorCodigo(codigo: string): Observable {\n return this.baseService.Get('parametro/codigo?codigo=' + codigo).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as Parametro;\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n } \n \n // ---- Parametro Porto -------------------------------------------------\n carregarPagina(): Observable {\n return this.baseService.Get('parametro/porto/pagina').pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as PaginaParametroPorto;\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n } \n\n obterParametrosPortoPadrao(): Observable {\n return this.baseService.Get('parametro/porto/padrao').pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as ParametroPorto;\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n } \n\n obterParametrosPorto(portoId: number): Observable {\n return this.baseService.Get('parametro/porto/' + portoId).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as ParametroPorto;\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n } \n\n obterParametros(pagina: PaginaParametroPorto, idPorto: number): ParametroPorto {\n if (!pagina)\n return null;\n var parametroPadrao = pagina.ParametroPortoPadrao;\n var parametroExcecao = pagina.ParametroPortoExcecoes.find(p => p.PortoID == idPorto);\n if (!parametroExcecao)\n return parametroPadrao;\n\n var parametro = new ParametroPorto();\n parametro.PortoID = idPorto;\n parametro.NomePorto = parametroExcecao.NomePorto;\n parametro.QtdHrEntrega = this.diferenteDeZero(parametroExcecao.QtdHrEntrega, parametroPadrao.QtdHrEntrega);\n parametro.QtdHrAgendEntrega = this.diferenteDeZero(parametroExcecao.QtdHrAgendEntrega, parametroPadrao.QtdHrAgendEntrega);\n parametro.QtdHrAgendColetaPA = this.diferenteDeZero(parametroExcecao.QtdHrAgendColetaPA, parametroPadrao.QtdHrAgendColetaPA);\n parametro.QtdHrAgendColetaPO = this.diferenteDeZero(parametroExcecao.QtdHrAgendColetaPO, parametroPadrao.QtdHrAgendColetaPO);\n parametro.QtdHrMinimasAgendColeta = this.diferenteDeZero(parametroExcecao.QtdHrMinimasAgendColeta, parametroPadrao.QtdHrMinimasAgendColeta);\n parametro.QtdHrMinimasAgendEntrega = this.diferenteDeZero(parametroExcecao.QtdHrMinimasAgendEntrega, parametroPadrao.QtdHrMinimasAgendEntrega);\n\n return parametro;\n }\n\n private diferenteDeZero(v1: number, v2: number): number {\n return (v1 != 0) ? v1 : v2;\n }\n\n salvarParametrosPorto(parametroPorto: ParametroPorto): Observable {\n return this.baseService.Post('parametro/porto', parametroPorto).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n } \n\n atualizarParametrosPorto(parametroPorto: ParametroPorto): Observable {\n return this.baseService.Put('parametro/porto', parametroPorto).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n } \n\n apagarParametrosPorto(portoId: number): Observable {\n return this.baseService.Delete('parametro/porto/' + portoId).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n } \n\n // -------------------------------------------------------------\n\n // ---- Navios -------------------------------------------------\n salvarNavio(navios: Navio[]): Observable {\n return this.baseService.Put('navio', navios).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n getNaviosAdmin(): Observable {\n return this.baseService.Get('navio/adm').pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as Navio[];\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n // -------------------------------------------------------------\n\n // ---- Anéis / Rotas ------------------------------------------\n getAneis(): Observable {\n return this.baseService.Get('anel').pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as Anel[];\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n salvarAnel(anel: Anel): Observable {\n if (!anel.AnelID || anel.AnelID == 0)\n return this.baseService.Post('anel', anel).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n else\n return this.baseService.Put('anel/' + anel.AnelID, anel).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n deletarAnel(id: number): Observable {\n return this.baseService.Delete('anel/' + id).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n // -------------------------------------------------------------\n\n // ---- Tipos de Serviços --------------------------------------\n salvarTipoServico(tipoServicos: TipoServico[]): Observable {\n return this.baseService.Put('tipoServico', tipoServicos).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n getTipoServicosAdmin(filtro: string): Observable {\n return this.baseService.Get('tipoServico/adm/' + filtro).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as TipoServico[];\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n // -------------------------------------------------------------\n\n}\n","\nimport {catchError, map} from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { Http, Headers, RequestOptions, Response } from '@angular/http';\nimport { Observable } from 'rxjs';\n\n\nimport { BaseService } from './base.service';\nimport { Perfil } from './../_models/perfil';\nimport { ValidationResult } from './../_models/validation-result';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PerfilService {\n\n constructor(private baseService: BaseService) { }\n\n salvarPerfil(perfil: Perfil): Observable {\n if (!perfil.PerfilID || perfil.PerfilID == 0)\n return this.baseService.Post('perfil', perfil).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n else\n return this.baseService.Put('perfil/' + perfil.PerfilID, perfil).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n deletarPerfil(id: number): Observable {\n return this.baseService.Delete('perfil/' + id).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n getPerfis(): Observable {\n return this.get('perfil');\n }\n\n getPerfisAtivos(): Observable {\n return this.get('perfil/GetAtivos');\n }\n\n private get(path: string): Observable {\n return this.baseService.Get(path).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as Perfil[];\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n getPerfil(id: number): Observable {\n return this.baseService.Get('perfil/' + id).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as Perfil;\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n}\n","\nimport {catchError, map} from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { Http, Headers, RequestOptions, Response } from '@angular/http';\nimport { Observable } from 'rxjs';\nimport { LogFrontFuncionalidade } from '../_enums/log-front-funcionalidade';\nimport { Operacao } from '../_enums/operacao';\n\nimport { BaseService } from './base.service';\nimport { PortoInstantPaymentRequest } from '../_models/PortoInstantPaymentRequest';\nimport { ValidationResult } from './../_models/validation-result';\nimport { MessageService } from './message.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PortoService {\n\n constructor(private baseService: BaseService,\n private _msgService: MessageService) { }\n\n salvar(portoInstantPayment: PortoInstantPaymentRequest): Observable {\n\n\n return this.baseService.Post('porto', portoInstantPayment).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n\n deletar(id: number): Observable {\n return this.baseService.Delete('porto/' + id).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n getAll(): Observable {\n return this.get('porto');\n }\n\n getPortosAtivos(): Observable {\n return this.get('porto/GetAtivos');\n }\n\n\n findByRegionId(regionId: number): Observable {\n let urlPath: string = 'porto/findByRegionId?region=' + regionId;\n\n return this.baseService.Get(urlPath).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (!retorno.IsValid) {\n this._msgService.addMessageValidationError('Porto', retorno.Erros, 'error', LogFrontFuncionalidade.Porto, Operacao.Consulta, null);\n }\n\n return retorno.Data as PortoInstantPaymentRequest[];\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n\n\n findByRegionIdPortId(regionId: number, portId: number): Observable {\n let urlPath: string = 'porto/findByRegionIdPortId?region=' + regionId + '&port=' + portId;\n\n return this.baseService.Get(urlPath).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (!retorno.IsValid) {\n this._msgService.addMessageValidationError('Porto', retorno.Erros, 'error', LogFrontFuncionalidade.Porto, Operacao.Consulta, null);\n }\n\n return retorno.Data as PortoInstantPaymentRequest[];\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n\n\n private get(path: string): Observable {\n return this.baseService.Get(path).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as PortoInstantPaymentRequest[];\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n getById(id: number): Observable {\n return this.baseService.Get('porto/' + id).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as PortoInstantPaymentRequest;\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n}\n","\nimport {catchError, map} from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { Response } from '@angular/http';\nimport { Observable } from 'rxjs';\n\nimport { BaseService } from './base.service';\nimport { Prioridade } from 'app/_models/prioridade';\nimport { ValidationResult } from 'app/_models/validation-result';\nimport { PaginaPrioridades } from 'app/_models/pagina-prioridades';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PrioridadeService {\n\n constructor(private baseService: BaseService) { }\n\n getPaginaPrioridades(): Observable {\n return this.baseService.Get('prioridade').pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as PaginaPrioridades;\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n salvarPrioridades(prioridades: Prioridade[]): Observable {\n return this.baseService.Post('prioridade/', prioridades).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n excluirPrioridade(prioridadeId: number): Observable {\n return this.baseService.Delete('prioridade/' + prioridadeId).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n}\n","\nimport {catchError, map} from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { Response } from '@angular/http';\nimport { Observable } from 'rxjs';\n\n\nimport { Schedule } from './../_models/schedule';\nimport { ScheduleRequest } from './../_models/schedule-request';\nimport { ValidationResult } from './../_models/validation-result';\n\nimport { BaseService } from './base.service';\nimport { SharedService } from './shared.service';\nimport { MessageService } from './message.service';\n\nimport { Operacao } from '../_enums/operacao';\nimport { LogFrontFuncionalidade } from '../_enums/log-front-funcionalidade';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProgramacaoNaviosService {\n\n constructor(private baseService: BaseService,\n private _sharedService: SharedService,\n private _msgService: MessageService) { }\n\n // ---- Schedule -------------------------------------------------\n getSchedule(filtro: ScheduleRequest): Observable {\n return this.baseService.Post('schedule/priorizado', filtro).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as Schedule[];\n else {\n var erros: string[] = [];\n erros.push(\"Erro ao consultar Programação de Navios! Contate o administrador!\");\n retorno.Erros.forEach(element => {\n erros.push(element.ErrorCode + \" - \" + element.Message);\n });\n this._msgService.addMessageArray('Programação de Navios', erros, \"error\", LogFrontFuncionalidade.ProgramacaoDeNavios, Operacao.Consulta, filtro);\n return null;\n }\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n // -------------------------------------------------------------\n\n DownloadCSV(programacao: any[]) {\n if (programacao == undefined || programacao == null)\n return;\n\n var data: any[] = [];\n var titulos: any[] = [\"Origem\", \"Saida - Previsto\", \"Saida - Realizado\", \"Destino\", \"Chegada - Previsto\",\n \"Chegada - Realizado\", \"Navio/Viagem\", \"Transit Time\", \"Deadline\",\n \"Navio Transbordo 1\", \"Porto Transbordo 1\", \"Transit Time Transbordo 1\", \"Chegada Transbordo - Previsto 1\", \"Chegada Transbordo - Realizado 1\",\n \"Navio Transbordo 2\", \"Porto Transbordo 2\", \"Transit Time Transbordo 2\", \"Chegada Transbordo - Previsto 2\", \"Chegada Transbordo - Realizado 2\",\n \"Navio Transbordo 3\", \"Porto Transbordo 3\", \"Transit Time Transbordo 3\", \"Chegada Transbordo - Previsto 3\", \"Chegada Transbordo - Realizado 3\",\n \"Navio Transbordo 4\", \"Porto Transbordo 4\", \"Transit Time Transbordo 4\", \"Chegada Transbordo - Previsto 4\", \"Chegada Transbordo - Realizado 4\"];\n\n for (let i = 0; i < programacao.length; i++) {\n var item: Schedule = programacao[i];\n\n data.push([item.descPortoOrigem.trim() + ' - ' + item.municPortoOrigem.trim() + ' / ' + item.ufPortoOrigem,\n this._sharedService.formataDataCSV(item.dhPrevSaidaPortoOrigem),\n this._sharedService.formataDataCSV(item.dhConfSaidaPortoOrigem),\n item.descPortoDestino.trim() + ' - ' + item.municPortoDestino.trim() + ' / ' + item.ufPortoDestino,\n this._sharedService.formataDataCSV(item.dhPrevChegadaPortoDestino),\n this._sharedService.formataDataCSV(item.dhConfChegadaPortoDestino),\n item.descNavioViagem,\n this.formataTransitTime(item.transitTime, false),\n this._sharedService.formataDataCSV(item.dhDeadlineDocumentacao),\n item.Transbordos ? (item.Transbordos.length >=1 ? item.Transbordos[0].descViagemTransbordo : '') : '',\n item.Transbordos ? (item.Transbordos.length >=1 ? item.Transbordos[0].nomePortoTransbordo : '') : '',\n item.Transbordos ? (item.Transbordos.length >=1 ? this.formataTransitTime(item.Transbordos[0].transitTimeMultTransbordo) : '') : '',\n item.Transbordos ? (item.Transbordos.length >=1 ? this._sharedService.formataDataCSV(item.Transbordos[0].dataPrevChegadaTransbordo) : '') : '',\n item.Transbordos ? (item.Transbordos.length >=1 ? this._sharedService.formataDataCSV(item.Transbordos[0].dataRealChegadaTransbordo) : '') : '',\n item.Transbordos ? (item.Transbordos.length >=2 ? item.Transbordos[1].descViagemTransbordo : '') : '',\n item.Transbordos ? (item.Transbordos.length >=2 ? item.Transbordos[1].nomePortoTransbordo : '') : '',\n item.Transbordos ? (item.Transbordos.length >=2 ? this.formataTransitTime(item.Transbordos[1].transitTimeMultTransbordo) : '') : '',\n item.Transbordos ? (item.Transbordos.length >=2 ? this._sharedService.formataDataCSV(item.Transbordos[1].dataPrevChegadaTransbordo) : '') : '',\n item.Transbordos ? (item.Transbordos.length >=2 ? this._sharedService.formataDataCSV(item.Transbordos[1].dataRealChegadaTransbordo) : '') : '',\n item.Transbordos ? (item.Transbordos.length >=3 ? item.Transbordos[2].descViagemTransbordo : '') : '',\n item.Transbordos ? (item.Transbordos.length >=3 ? item.Transbordos[2].nomePortoTransbordo : '') : '',\n item.Transbordos ? (item.Transbordos.length >=3 ? this.formataTransitTime(item.Transbordos[2].transitTimeMultTransbordo) : '') : '',\n item.Transbordos ? (item.Transbordos.length >=3 ? this._sharedService.formataDataCSV(item.Transbordos[2].dataPrevChegadaTransbordo) : '') : '',\n item.Transbordos ? (item.Transbordos.length >=3 ? this._sharedService.formataDataCSV(item.Transbordos[2].dataRealChegadaTransbordo) : '') : '',\n item.Transbordos ? (item.Transbordos.length >=4 ? item.Transbordos[3].descViagemTransbordo : '') : '',\n item.Transbordos ? (item.Transbordos.length >=4 ? item.Transbordos[3].nomePortoTransbordo : '') : '',\n item.Transbordos ? (item.Transbordos.length >=4 ? this.formataTransitTime(item.Transbordos[3].transitTimeMultTransbordo) : '') : '',\n item.Transbordos ? (item.Transbordos.length >=4 ? this._sharedService.formataDataCSV(item.Transbordos[3].dataPrevChegadaTransbordo) : '') : '',\n item.Transbordos ? (item.Transbordos.length >=4 ? this._sharedService.formataDataCSV(item.Transbordos[3].dataRealChegadaTransbordo) : '') : '']);\n }\n\n this.baseService.DownloadCSV(data, titulos, \"Programacao de Navios.csv\");\n }\n private formataTransitTime(transitTime: number, transbordo: boolean = true): string {\n let texto: string = (!transbordo) ? \" dia\" : \" hora\";\n\n if (!transitTime || transitTime == null || transitTime == 0)\n return \"\";\n\n return (transitTime == 1) ? transitTime.toString().concat(texto) : transitTime.toString().concat(texto, \"s\");\n }\n}\n","\nimport {catchError, map} from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { Response } from '@angular/http';\nimport { Observable } from 'rxjs';\n\nimport { ServicoProposta } from './../_models/servico-proposta';\nimport { ValidationResult } from './../_models/validation-result';\nimport { PropostaComercial } from './../_models/proposta-comercial';\nimport { PropostaComercialRequest } from './../_models/proposta-comercial-request';\n\nimport { BaseService } from './base.service';\nimport { MessageService } from './message.service';\n\nimport { Operacao } from '../_enums/operacao';\nimport { LogFrontFuncionalidade } from '../_enums/log-front-funcionalidade';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PropostaComercialService {\n\n constructor(private baseService: BaseService, private _msgService: MessageService) { }\n\n getPropostas(consulta: PropostaComercialRequest): Observable {\n return this.baseService.Post('propostas', consulta).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n if (retorno.IsValid)\n return (retorno.Data as PropostaComercial[]);\n else {\n var erros: string[] = [];\n erros.push(\"Erro ao consultar Propostas! Contate o administrador!\");\n retorno.Erros.forEach(element => {\n erros.push(element.ErrorCode + \" - \" + element.Message);\n });\n this._msgService.addMessageArray('Propostas', erros, \"error\", LogFrontFuncionalidade.Booking, Operacao.Consulta, consulta);\n return null;\n }\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n getProposta({ numProposta, usuarioID, idTrecho, cnpjCli, ieCli }): Observable {\n return this.baseService.Post('propostas', { numProposta: numProposta, idTrecho: idTrecho,\n idUsuario: usuarioID, cnpjCli: cnpjCli, ieCli: ieCli }).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return (retorno.Data as PropostaComercial);\n else {\n var erros: string[] = [];\n erros.push(\"Erro ao consultar Proposta! Contate o administrador!\");\n retorno.Erros.forEach(element => {\n erros.push(element.ErrorCode + \" - \" + element.Message);\n });\n this._msgService.addMessageArray('Propostas', erros, \"error\", LogFrontFuncionalidade.Booking, Operacao.Consulta, { numProposta: numProposta, idTrecho: idTrecho,\n idUsuario: usuarioID, cnpjCli: cnpjCli, ieCli: ieCli });\n return null;\n }\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n getServicos({ propostaID, usuarioID }): Observable {\n return this.baseService.Post('propostas/servicos', { idProposta: propostaID, idUsuario: usuarioID }).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return (retorno.Data as ServicoProposta[])\n else {\n var erros: string[] = [];\n erros.push(\"Erro ao consultar Propostas! Contate o administrador!\");\n retorno.Erros.forEach(element => {\n erros.push(element.ErrorCode + \" - \" + element.Message);\n });\n this._msgService.addMessageArray('Proposta', erros, \"error\", LogFrontFuncionalidade.Booking, Operacao.Consulta, { idProposta: propostaID, idUsuario: usuarioID });\n return null;\n }\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n}\n","import { Booking } from 'app/_models/booking';\nimport { TrackingLista } from 'app/_models/tracking-lista';\nimport { FiltrosLaterais } from './../_models/filtros-laterais';\nimport { ValidationError } from 'app/_models/validation-error';\nimport { TipoEventoTracking } from 'app/_models/tipoEventoTracking';\n\nexport class RastreamentoCargasVM {\n trackings: TrackingLista[];\n tiposEventos: TipoEventoTracking[];\n erros: ValidationError[];\n FiltrosLateraisAtivos: FiltrosLaterais = new FiltrosLaterais();\n}","\nimport {catchError, map} from 'rxjs/operators';\nimport { DetalhesTrackingRequest } from \"./../_models/detalhes-tracking-request\";\nimport { Injectable } from \"@angular/core\";\nimport { Response } from \"@angular/http\";\nimport { Observable } from \"rxjs\";\n\nimport { BaseService } from \"./base.service\";\nimport { SharedService } from \"app/_services/shared.service\";\nimport { MessageService } from \"./message.service\";\n\nimport { EventoTracking } from \"app/_models/evento-tracking\";\nimport { TrackingCteNf } from \"app/_models/tracking-cte-nf\";\nimport { ValidationResult } from \"./../_models/validation-result\";\nimport { TrackingDownload } from \"../_models/tracking-download\";\nimport { TipoEventoTracking } from \"./../_models/tipoEventoTracking\";\nimport { EventoTrackingRequest } from \"app/_models/evento-tracking-request\";\nimport { TrackingListaRequest } from \"app/_models/trackinglista-request\";\nimport { RastreamentoCargasVM } from \"app/_services/rastreamento-cargas-vm\";\n\nimport { Operacao } from \"../_enums/operacao\";\nimport { LogFrontFuncionalidade } from \"../_enums/log-front-funcionalidade\";\nimport { TrackingDetalhe } from \"app/_models/tracking-detalhe\";\nimport { DetalhesRotasViagens } from \"app/_models/detalhes-rotas-viagens\";\nimport { Co2TotalRequest } from \"app/_models/co2-total-request\";\nimport { Co2Total } from \"app/_models/co2-total\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RastreamentoService {\n constructor(\n private baseService: BaseService,\n private _msgService: MessageService,\n private _sharedService: SharedService\n ) {}\n\n obtemRastreamentosDeCargas(\n consulta: TrackingListaRequest\n ): Observable {\n return this.obtemRastreamento(consulta, \"\");\n }\n\n obtemRastreamentosDownloadCSV(\n consulta: TrackingListaRequest\n ): Observable {\n return this.obtemRastreamento(consulta, \"/csv\");\n }\n\n private obtemRastreamento(\n consulta: TrackingListaRequest,\n url: string\n ): Observable {\n return this.baseService\n .Post(\"tracking\" + url, consulta).pipe(\n map((response: ValidationResult) => {\n const retorno: ValidationResult = response;\n\n if (!retorno.IsValid) {\n this._msgService.addMessageValidationError(\n \"Rastreamento\",\n retorno.Erros,\n \"error\",\n LogFrontFuncionalidade.Rastreamento,\n Operacao.Consulta,\n consulta\n );\n }\n\n // RastreamentoCargasVM\n const rastreamentoCargasVM = retorno.Data as RastreamentoCargasVM;\n rastreamentoCargasVM.erros = retorno.Erros;\n return rastreamentoCargasVM;\n }),\n catchError((e) => {\n return this.baseService.handleError(e);\n }),);\n }\n\n obtemDetalhesTracking(\n consulta: DetalhesTrackingRequest\n ): Observable {\n return this.baseService\n .Post(\"tracking/detalhes\", consulta).pipe(\n map((response: ValidationResult) => {\n const retorno: ValidationResult = response;\n\n if (!retorno.IsValid) {\n this._msgService.addMessageValidationError(\n \"Rastreamento - Detalhes\",\n retorno.Erros,\n \"error\",\n LogFrontFuncionalidade.Rastreamento,\n Operacao.Consulta,\n consulta\n );\n }\n\n return retorno.Data as TrackingDetalhe;\n }),\n catchError((e) => {\n return this.baseService.handleError(e);\n }),);\n }\n\n obtemEventosTracking(\n consulta: EventoTrackingRequest\n ): Observable {\n return this.baseService\n .Post(\"tracking/eventos\", consulta).pipe(\n map((response: ValidationResult) => {\n const retorno: ValidationResult = response;\n\n if (!retorno.IsValid) {\n this._msgService.addMessageValidationError(\n \"Rastreamento - Eventos\",\n retorno.Erros,\n \"error\",\n LogFrontFuncionalidade.Rastreamento,\n Operacao.Consulta,\n consulta\n );\n }\n\n return retorno.Data as EventoTracking[];\n }),\n catchError((e) => {\n return this.baseService.handleError(e);\n }),);\n }\n\n obtemTiposEventosTracking(\n idBooking: number\n ): Observable {\n var url: string = \"tracking/tiposeventos\";\n if (idBooking) url = url + \"/\" + idBooking;\n\n return this.baseService\n .Get(url).pipe(\n map((response: ValidationResult) => {\n const retorno: ValidationResult = response;\n\n if (!retorno.IsValid) {\n this._msgService.addMessageValidationError(\n \"Rastreamento - Eventos\",\n retorno.Erros,\n \"error\",\n LogFrontFuncionalidade.Rastreamento,\n Operacao.Consulta,\n idBooking\n );\n }\n\n return retorno.Data as TipoEventoTracking[];\n }),\n catchError((e) => {\n return this.baseService.handleError(e);\n }),);\n }\n\n obtemCTeNfTracking(\n consulta: EventoTrackingRequest\n ): Observable {\n return this.baseService\n .Post(\"tracking/ctes\", consulta).pipe(\n map((response: ValidationResult) => {\n const retorno: ValidationResult = response;\n\n if (!retorno.IsValid) {\n this._msgService.addMessageValidationError(\n \"Rastreamento - CT-e (xml)\",\n retorno.Erros,\n \"error\",\n LogFrontFuncionalidade.Rastreamento,\n Operacao.Consulta,\n consulta\n );\n }\n\n return retorno.Data as TrackingCteNf[];\n }),\n catchError((e) => {\n return this.baseService.handleError(e);\n }),);\n }\n\n obtemTrackingsDownload(\n consulta: TrackingListaRequest\n ): Observable {\n return this.baseService\n .Post(\"tracking/csv\", consulta).pipe(\n map((response: ValidationResult) => {\n const retorno: ValidationResult = response;\n\n if (retorno.IsValid) {\n return retorno.Data as TrackingDownload[];\n } else {\n var erros: string[] = [];\n erros.push(\n \"Erro ao buscar dados para o download! Contate o administrador!\"\n );\n retorno.Erros.forEach((element) => {\n erros.push(element.ErrorCode + \" - \" + element.Message);\n });\n this._msgService.addMessageArray(\n \"Rastreamento\",\n erros,\n \"error\",\n LogFrontFuncionalidade.Rastreamento,\n Operacao.Consulta,\n consulta\n );\n return null;\n }\n }),\n catchError((e) => {\n return this.baseService.handleError(e);\n }),);\n }\n\n exportarRelatorioCSV(rastreamentos: any[]) {\n //TrackingDownload[]) {\n if (!rastreamentos || rastreamentos.length === 0) {\n return rastreamentos;\n }\n\n const data: any[] = [];\n const titulos: any[] = [\n \"CNPJ Cliente\",\n \"Razão Social Cliente\",\n \"Razão Social Embarcador\",\n \"CNPJ Destinatário\",\n \"Razão Social Destinatário\",\n \"Inscrição Estadual Destinatário\",\n \"CEP Destinatário\",\n \"Endereço Destinatário\",\n \"Booking\",\n \"Contêiner\",\n \"Navio/Viagem\",\n \"Navio/Viagem Transbordo\",\n \"Porto Transbordo\",\n \"UF Porto Transbordo\",\n \"Município Coleta\",\n \"Porto Origem\",\n \"UF Porto Origem\",\n \"Terminal Origem\",\n \"Município Entrega\",\n \"Porto Destino\",\n \"UF Porto Destino\",\n \"Terminal Destino\",\n \"Data Saída Porto Destino\",\n \"Status Booking\",\n \"Tipo Contêiner\",\n \"Categoria Contêiner\",\n \"Tamanho Contêiner\",\n \"Modal\",\n \"Carga Perigosa\",\n \"Carga Excesso\",\n \"Carga Refrigerada\",\n \"Data Solicitação Booking\",\n \"Data Booking Confirmado\",\n \"Data Retirada do Vazio\",\n \"Data Previsão Coleta\",\n \"Data Coleta Iniciada\",\n \"Data Saída do Cliente Coleta\",\n \"Data Depositada - Chegada Terminal\",\n \"Data de Embarque Navio Origem\",\n \"Data Chegada Prevista Navio Origem\",\n \"Data Chegada Realizada Navio Origem\",\n \"Data Saída Navio Realizada Origem\",\n \"Data Descarregada Navio Origem\",\n \"Data Previsão Chegada Transbordo\",\n \"Data Chegada Realizada Transbordo\",\n \"Saída Realizada Transbordo\",\n \"Embarcada Transbordo\",\n \"Data Chegada Prevista Navio Destino\",\n \"Data Chegada Realizada Navio Destino\",\n \"Descarregada Navio Destino\",\n \"Data Em Entrega - Saída Terminal\",\n \"Data Previsão Entrega\",\n \"Data Retirada Cheio\",\n \"Agendamento de Entrega Realizado\",\n \"Data Entrega Iniciada\",\n \"Data Saída do Cliente Entrega\",\n \"Data Realizado - Devolução do Vazio\",\n \"Notas Fiscais\",\n \"Ctes\",\n \"Referência Cliente\",\n \"Nome / Viagem do Navio Transbordo 1\",\n \"Nome Porto Transbordo 1\",\n \"UF Porto Transbordo 1\",\n \"Data Prev Chegada Transbordo 1\",\n \"Data Real Chegada Transbordo 1\",\n \"Nome / Viagem do Navio Transbordo 2\",\n \"Nome Porto Transbordo 2\",\n \"UF Porto Transbordo 2\",\n \"Data Prev Chegada Transbordo 2\",\n \"Data Real Chegada Transbordo 2\",\n \"Nome / Viagem do Navio Transbordo 3\",\n \"Nome Porto Transbordo 3\",\n \"UF Porto Transbordo 3\",\n \"Data Prev Chegada Transbordo 3\",\n \"Data Real Chegada Transbordo 3\",\n \"Nome / Viagem do Navio Transbordo 4\",\n \"Nome Porto Transbordo 4\",\n \"UF Porto Transbordo 4\",\n \"Data Prev Chegada Transbordo 4\",\n \"Data Real Chegada Transbordo 4\",\n \"Data Embarque Transbordo 1\",\n \"Data Desembarque Transbordo 1\",\n \"Data Embarque Transbordo 2\",\n \"Data Desembarque Transbordo 2\",\n \"Data Embarque Transbordo 3\",\n \"Data Desembarque Transbordo 3\",\n \"Data Embarque Transbordo 4\",\n \"Data Desembarque Transbordo 4\"\n ];\n const cabecalho: any[] = [\n \"*Os bookings pedidos via e-mail não terão a informação “Data/Hora Pedido de Booking” disponibilizada neste arquivo.\",\n \"* As informações de rastreamento são preenchidas conforme acontecem e são registradas em nossos sistemas. O prazo para registro é de até 6 horas úteis.\",\n \"\",\n ];\n\n rastreamentos.forEach((x: TrackingDownload) => {\n data.push([\n x.cnpjCli,\n x.nomeCli,\n x.nomeEmb,\n x.cnpjDes,\n x.nomeDes,\n x.ieDes,\n x.cepDes,\n [x.logradouroDes, x.numeroEndDes, x.bairroDes, x.complementoDes, x.municipioDes, x.ufDes,].join(', '),\n x.numBooking,\n x.numContainer,\n x.viagemNavio,\n x.viagemNavioTrans,\n x.portoTransbordo,\n x.ufPortoTransbordo,\n x.municColeta,\n x.portoOri,\n x.ufPortoOri,\n x.terminalOri,\n x.municEntrega,\n x.portoDes,\n x.ufPortoDes,\n x.terminalDes,\n this._sharedService.formataDataCSV(x.dataSaidaPortoDestino),\n x.statusBooking,\n x.tipoContainer,\n x.categoriaContainer,\n x.tamanhoContainer,\n x.modal,\n x.flagCargaPerigosa,\n x.flagCargaOver,\n x.flagCargaRefrigerada,\n this._sharedService.formataDataCSV(x.dtSolicitBooking),\n this._sharedService.formataDataCSV(x.dtBookingConf),\n this._sharedService.formataDataCSV(x.dataRetiradaVazio),\n this._sharedService.formataDataCSV(x.dtPrevColeta),\n this._sharedService.formataDataCSV(x.dataRealColeta),\n this._sharedService.formataDataCSV(x.dataFimColeta),\n this._sharedService.formataDataCSV(x.dtRealDepositada),\n this._sharedService.formataDataCSV(x.dataEmbarquePOL),\n this._sharedService.formataDataCSV(x.dataEtaPolPrev),\n this._sharedService.formataDataCSV(x.dataEtaPolConf),\n this._sharedService.formataDataCSV(x.dtRealSaidaNavio),\n this._sharedService.formataDataCSV(x.dataDesembarqueNVOri),\n this._sharedService.formataDataCSV(x.Transbordos[0].dataEtaPotPrev),\n this._sharedService.formataDataCSV(x.Transbordos[0].dataEtaPotConf),\n this._sharedService.formataDataCSV(x.Transbordos[0].dataRealSaidaTransbordo),\n this._sharedService.formataDataCSV(x.Transbordos[0].dataEmbarque),\n this._sharedService.formataDataCSV(x.dataEtaPodPrev),\n this._sharedService.formataDataCSV(x.dataEtaPodConf),\n this._sharedService.formataDataCSV(x.dataDesembarque),\n this._sharedService.formataDataCSV(x.dtSaidaTerminalEnt),\n this._sharedService.formataDataCSV(x.dtPrevEntrega),\n this._sharedService.formataDataCSV(x.dataRetiradaCheio),\n //this._sharedService.formataDataCSV(x.dtPrevDesembarque),\n //this._sharedService.formataDataCSV(x.dtRealDesembarque),\n x.idAgendEntrega != null ? \"S\" : \"N\",\n this._sharedService.formataDataCSV(x.dtRealEmEntrega),\n this._sharedService.formataDataCSV(x.dataFimEntrega),\n this._sharedService.formataDataCSV(x.dataDevolucaoVazio),\n x.notaFiscal,\n x.numCte,\n x.numRefCli,\n x.Transbordos\n ? x.Transbordos.length >= 1\n ? x.Transbordos[0].descViagemTransbordo\n : \"\"\n : \"\",\n x.Transbordos\n ? x.Transbordos.length >= 1\n ? x.Transbordos[0].nomePortoTransbordo\n : \"\"\n : \"\",\n x.Transbordos\n ? x.Transbordos.length >= 1\n ? x.Transbordos[0].ufPortoTransbordo\n : \"\"\n : \"\",\n x.Transbordos\n ? x.Transbordos.length >= 1\n ? this._sharedService.formataDataCSV(\n x.Transbordos[0].dataEtaPotPrev\n )\n : \"\"\n : \"\",\n x.Transbordos\n ? x.Transbordos.length >= 1\n ? this._sharedService.formataDataCSV(\n x.Transbordos[0].dataEtaPotConf\n )\n : \"\"\n : \"\",\n x.Transbordos\n ? x.Transbordos.length >= 2\n ? x.Transbordos[1].descViagemTransbordo\n : \"\"\n : \"\",\n x.Transbordos\n ? x.Transbordos.length >= 2\n ? x.Transbordos[1].nomePortoTransbordo\n : \"\"\n : \"\",\n x.Transbordos\n ? x.Transbordos.length >= 2\n ? x.Transbordos[1].ufPortoTransbordo\n : \"\"\n : \"\",\n x.Transbordos\n ? x.Transbordos.length >= 2\n ? this._sharedService.formataDataCSV(\n x.Transbordos[1].dataEtaPotPrev\n )\n : \"\"\n : \"\",\n x.Transbordos\n ? x.Transbordos.length >= 2\n ? this._sharedService.formataDataCSV(\n x.Transbordos[1].dataEtaPotConf\n )\n : \"\"\n : \"\",\n x.Transbordos\n ? x.Transbordos.length >= 3\n ? x.Transbordos[2].descViagemTransbordo\n : \"\"\n : \"\",\n x.Transbordos\n ? x.Transbordos.length >= 3\n ? x.Transbordos[2].nomePortoTransbordo\n : \"\"\n : \"\",\n x.Transbordos\n ? x.Transbordos.length >= 3\n ? x.Transbordos[2].ufPortoTransbordo\n : \"\"\n : \"\",\n x.Transbordos\n ? x.Transbordos.length >= 3\n ? this._sharedService.formataDataCSV(\n x.Transbordos[2].dataEtaPotPrev\n )\n : \"\"\n : \"\",\n x.Transbordos\n ? x.Transbordos.length >= 3\n ? this._sharedService.formataDataCSV(\n x.Transbordos[2].dataEtaPotConf\n )\n : \"\"\n : \"\",\n x.Transbordos\n ? x.Transbordos.length >= 4\n ? x.Transbordos[3].descViagemTransbordo\n : \"\"\n : \"\",\n x.Transbordos\n ? x.Transbordos.length >= 4\n ? x.Transbordos[3].nomePortoTransbordo\n : \"\"\n : \"\",\n x.Transbordos\n ? x.Transbordos.length >= 4\n ? x.Transbordos[3].ufPortoTransbordo\n : \"\"\n : \"\",\n x.Transbordos\n ? x.Transbordos.length >= 4\n ? this._sharedService.formataDataCSV(\n x.Transbordos[3].dataEtaPotPrev\n )\n : \"\"\n : \"\",\n x.Transbordos\n ? x.Transbordos.length >= 4\n ? this._sharedService.formataDataCSV(\n x.Transbordos[3].dataEtaPotConf\n )\n : \"\"\n : \"\",\n //this._sharedService.formataDataCSV(this._sharedService.corrigeData(x.prevEntrega)),\n this._sharedService.formataDataCSV(x.Transbordos[0].dataEmbarque),\n this._sharedService.formataDataCSV(x.Transbordos[0].dataDesembarque),\n this._sharedService.formataDataCSV(x.Transbordos[1].dataEmbarque),\n this._sharedService.formataDataCSV(x.Transbordos[1].dataDesembarque),\n this._sharedService.formataDataCSV(x.Transbordos[2].dataEmbarque),\n this._sharedService.formataDataCSV(x.Transbordos[2].dataDesembarque),\n this._sharedService.formataDataCSV(x.Transbordos[3].dataEmbarque),\n this._sharedService.formataDataCSV(x.Transbordos[3].dataDesembarque),\n ]);\n });\n\n this.baseService.DownloadCSV(\n data,\n titulos,\n \"Rastreamento de Cargas.csv\",\n cabecalho\n );\n }\n\n filtraListaPorTipoDeEvento(\n trackings: any[],\n tipoEventoDaImagem: string\n ): any[] {\n // todas as cargas (retorna lista completa)\n if (tipoEventoDaImagem == \"total\") {\n return trackings;\n }\n\n if (tipoEventoDaImagem == \"navegando-pendente\")\n return trackings.filter((x) => x.PendenteAgendamentoNavegando);\n if (tipoEventoDaImagem == \"desembarcada-pendente\")\n return trackings.filter((x) => x.PendenteAgendamentoDesembarcada);\n\n const tipoEvento = tipoEventoDaImagem.trim().toLowerCase();\n return trackings.filter(\n (x) =>\n x.statusBooking && x.statusBooking.trim().toLowerCase() == tipoEvento\n );\n }\n\n obtemRotasRastreamentos(\n consulta: TrackingListaRequest\n ): Observable {\n return this.baseService\n .Post(\"tracking/rota\", consulta).pipe(\n map((response: ValidationResult) => {\n const retorno: ValidationResult = response;\n\n if (!retorno.IsValid) {\n this._msgService.addMessageValidationError(\n \"Rastreamento - Rota\",\n retorno.Erros,\n \"error\",\n LogFrontFuncionalidade.Rastreamento,\n Operacao.Consulta,\n consulta\n );\n }\n\n return retorno.Data as DetalhesRotasViagens;\n }),\n catchError((e) => {\n return this.baseService.handleError(e);\n }),);\n }\n\n ConsultarCo2Total(consulta: Co2TotalRequest): Observable {\n return this.baseService\n .Post(\"tracking/co2\", consulta).pipe(\n map((response: ValidationResult) => {\n const retorno: ValidationResult = response;\n\n if (!retorno.IsValid) {\n this._msgService.addMessageValidationError(\n \"Rastreamento - Co2 Total\",\n retorno.Erros,\n \"error\",\n LogFrontFuncionalidade.Rastreamento,\n Operacao.Consulta,\n consulta\n );\n }\n return retorno.Data as Co2Total;\n }),\n catchError((e) => {\n this._msgService.addMessage(\n \"Rastreamento - Co2 Total\",\n \"Não foi possível buscar o Co2 Total\",\n \"error\",\n LogFrontFuncionalidade.Rastreamento\n );\n return this.baseService.handleError(e);\n }),);\n }\n}\n","\nimport {catchError, map} from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { Http, Headers, RequestOptions, Response } from '@angular/http';\nimport { Observable } from 'rxjs';\n\nimport * as moment from 'moment/moment';\n\nimport { MessageService } from './message.service';\nimport { Municipio } from './../_models/municipio';\nimport { Mercadoria } from './../_models/mercadoria';\nimport { CargaIMO } from './../_models/cargaIMO';\nimport { TipoContainer } from './../_models/tipo-container';\nimport { ValidationResult } from './../_models/validation-result';\nimport { BaseService } from './base.service';\nimport { Porto } from './../_models/porto';\nimport { TipoServico } from './../_models/tipo-servico';\nimport { Navio } from './../_models/navio';\nimport { ClienteRequest } from './../_models/cliente-request';\nimport { Cliente } from './../_models/cliente';\nimport { Feriado } from 'app/_models/feriado';\nimport { DateModel } from '../shared/ng2-datepicker/ng2-datepicker.module';\nimport { Operacao } from '../_enums/operacao';\nimport { LogFrontFuncionalidade } from '../_enums/log-front-funcionalidade';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SharedService {\n\n constructor(private baseService: BaseService,\n private _msgService: MessageService) { }\n\n copyProperties(from: any, to: any): void {\n for (var key in from)\n if (to.hasOwnProperty(key))\n to[key] = from[key];\n }\n\n addDays(theDate, days) {\n if (!theDate || days == undefined)\n return undefined;\n return new Date(theDate.getTime() + (days * 24 * 60 * 60 * 1000));\n }\n\n addHours(theDate, hours) {\n if (!theDate || hours == undefined)\n return undefined;\n return new Date(theDate.getTime() + (hours * 60 *60 * 1000));\n }\n\n CalculaDataMinimaAgendamento(feriados: Feriado[], dataReferencia: Date, parametroHoras: number): Date {\n var fds = false;\n var dataBase = new Date(dataReferencia.getTime());\n while (this.isFeriadoFds(feriados, dataBase)){\n dataBase = this.addDays(dataBase, 1);\n fds = true;\n }\n if (fds)\n dataBase = new Date(dataBase.getFullYear(), dataBase.getMonth(), dataBase.getDate(), 0, 1, 0);\n\n return this.CalculaProximoDiaUtil(feriados, dataBase, parametroHoras);\n }\n\n CalculaProximoDiaUtil(feriados: Feriado[], dataReferencia: Date, parametroHoras: number): Date {\n var diaUtil = dataReferencia;\n var dias = Math.floor(parametroHoras/24);\n\n for (let i=0; i 0) {\n diaUtil = this.addHours(diaUtil, resto);\n while (this.isFeriadoFds(feriados, diaUtil))\n diaUtil = this.addDays(diaUtil, 1);\n }\n\n return diaUtil;\n }\n\n isFeriadoFds(feriados: Feriado[], data: Date): boolean {\n if (!feriados || feriados.length == 0)\n return this.isFds(data);\n\n return feriados.some(feriado => { return feriado.Data ? (this.corrigeData(feriado.Data).toDateString() == data.toDateString()) || this.isFds(data) : false; });\n }\n\n isFds(data: Date){\n return (data.getDay() == 0) || (data.getDay() == 6);\n }\n\n getTipoContainers(idFamiliaProduto: number): Observable {\n return this.baseService.Get('cotacao/containers/' + idFamiliaProduto).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as TipoContainer[];\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n getCargaPerigosa(): Observable {\n return this.baseService.Get('cotacao/cargaIMO').pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as CargaIMO[];\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n getCargaPerigosaPorClasse(classe: string): Observable {\n return this.baseService.Get('cotacao/cargaIMO/' + classe).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as CargaIMO[];\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n getMercadorias(): Observable {\n return this.baseService.Get('cotacao/mercadorias').pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as Mercadoria[];\n else {\n var erros: string[] = [];\n erros.push(\"Erro ao buscar mercadorias! Contate o administrador!\");\n retorno.Erros.forEach(element => {\n erros.push(element.ErrorCode + \" - \" + element.Message);\n });\n this._msgService.addMessageArray('Mercadorias', erros, \"error\", LogFrontFuncionalidade.Cotacao, Operacao.Consulta);\n return null;\n }\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n getMunicipios(): Observable {\n return this.baseService.Get('schedule/municipios').pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as Municipio[];\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n getNavios(): Observable {\n return this.baseService.Get('navio').pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as Navio[];\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n getTipoServicos(): Observable {\n return this.baseService.Get('tipoServico').pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as TipoServico[];\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n getPortosTodos(): Observable {\n return this.getPortosInterno('parametro/portos/todos');\n }\n\n getPortos(): Observable {\n return this.getPortosInterno('parametro/portos');\n }\n\n private getPortosInterno(url: string): Observable {\n return this.baseService.Get(url).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n if (retorno.IsValid)\n return retorno.Data as Porto[];\n else {\n var erros: string[] = [];\n erros.push(\"Erro ao buscar portos! Contate o administrador!\");\n retorno.Erros.forEach(element => {\n erros.push(element.ErrorCode + \" - \" + element.Message);\n });\n this._msgService.addMessageArray('Portos', erros, \"error\", LogFrontFuncionalidade.ProgramacaoDeNavios, Operacao.Consulta);\n return null;\n }\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n getClientes(cliente: ClienteRequest, especial: boolean = false): Observable {\n this._msgService.clearMessage();\n var url = (especial) ? 'shared/clientes/proposta' : 'shared/clientes';\n return this.baseService.Post(url, cliente).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n if (retorno.IsValid){\n return retorno.Data as Cliente[];\n } else {\n var erros: string[] = [];\n retorno.Erros.forEach(element => {\n erros.push(element.ErrorCode + \" - \" + element.Message);\n });\n return null;\n }\n }),catchError(e => {\n console.log(e);\n return this.baseService.handleError(e);\n }),);\n }\n\n getFeriados(portoId: number): Observable {\n return this.baseService.Get('shared/porto/feriado/' + portoId).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n if (retorno.IsValid){\n return retorno.Data as Feriado[];\n } else {\n var erros: string[] = [];\n retorno.Erros.forEach(element => {\n erros.push(element.ErrorCode + \" - \" + element.Message);\n });\n return null;\n }\n }),catchError(e => {\n console.log(e);\n return this.baseService.handleError(e);\n }),);\n }\n\n getVersaoAPI(filtro: string): Observable {\n return this.baseService.Get('versao/' + filtro).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n if (retorno.IsValid)\n return retorno.Data as string;\n else {\n var erros: string[] = [];\n erros.push(\"Erro ao buscar versão! Contate o administrador!\");\n retorno.Erros.forEach(element => {\n erros.push(element.ErrorCode + \" - \" + element.Message);\n });\n this._msgService.addMessageArray('Versão', erros, \"error\", LogFrontFuncionalidade.Sobre, Operacao.Consulta, filtro);\n return null;\n }\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n clonaDateModel(dt: DateModel): DateModel{\n var clone = new DateModel();\n clone.day = dt.day;\n clone.month = dt.month;\n clone.year = dt.year;\n clone.formatted = dt.formatted;\n if (dt.momentObj)\n clone.momentObj = dt.momentObj.clone();\n return clone;\n }\n\n formataDataCSV(valor: any): string {\n if (valor) {\n var data: Date = this.corrigeData(valor); //new Date(valor);\n\n return this.formataDataHoraBR(data, true); //data.toLocaleDateString('pt-br') + \" \" + data.toLocaleTimeString('pt-br');\n }\n }\n\n formataCNPJ(cnpj: string): string{\n return cnpj ? cnpj.replace(/(\\d{2})(\\d{3})(\\d{3})(\\d{4})(\\d{2})/g,\"\\$1.\\$2.\\$3\\/\\$4\\-\\$5\") : \"\";\n }\n\n replaceAll(target, search, replacement) {\n return target ? target.split(search).join(replacement) : null;\n }\n\n corrigeData(data: any): Date{\n if (!data)\n return undefined;\n return moment(data.toString(), \"YYYY-MM-DD hh:mm:ss\").toDate();\n }\n\n obtemDDDdoTelefone(telefone: string): string {\n if (telefone) {\n telefone = telefone.replace(/\\D/g, '');\n if (telefone && telefone.length > 2) {\n return telefone.substr(0, 2);\n }\n return '';\n }\n }\n\n obtemTelefoneSemDDD(telefone: string): string {\n telefone = telefone.replace(/\\D/g, '');\n if (telefone && telefone.length > 9) {\n const tamanhoTelefone = telefone.length;\n const numTelefone = telefone.substr(2, telefone.length - 1);\n\n return numTelefone;\n }\n return telefone;\n }\n\n validaTelefone(telefone): boolean {\n if (!telefone)\n return false;\n\n var tamanhoTelefone = telefone ? telefone.length : 0;\n return (! (!tamanhoTelefone || tamanhoTelefone < 10 || tamanhoTelefone > 11));\n }\n\n validaInteiro(valor: number): boolean {\n if ((valor == undefined) || (valor == null))\n return true;\n\n return (valor != undefined) && (valor != null) && (valor % 1 === 0) && (valor.toString().indexOf('.') < 0);\n }\n\n validaCEP(cep): boolean {\n if (!cep)\n return false;\n\n var strCEP: string = cep.toString();\n var tamanhoCEP = cep ? cep.length : 0;\n\n return ((strCEP.indexOf('-') >= 0) && (tamanhoCEP == 9)) || ((strCEP.indexOf('-') < 0) && (tamanhoCEP == 8));\n }\n\n toCamelCase(str) {\n // Lower cases the string\n str = ' ' + str;\n return str.toLowerCase()\n // Replaces any - or _ characters with a space\n .replace(/[-_]+/g, ' ')\n // Removes any non alphanumeric characters\n // .replace(/[^\\w\\s]/g, '')\n // Uppercases the first character in each group immediately following a space\n // (delimited by spaces)\n .replace(/ (.)/g, function ($1) { return $1.toUpperCase(); });\n // Removes spaces\n //.replace(/ /g, '');\n }\n\n padLeft(text:string, padChar:string, size:number): string {\n return (String(padChar).repeat(size) + text).substr( (size * -1), size) ;\n }\n\n formataDataHoraBR(data: Date, comHora: boolean): string {\n if (comHora)\n return this.padLeft(data.getDate().toString(), '0', 2) + \"/\" +\n this.padLeft((data.getMonth()+1).toString(), '0', 2) + \"/\" +\n data.getFullYear() + \" \" +\n this.padLeft(data.getHours().toString(), '0', 2) + \":\" +\n this.padLeft(data.getMinutes().toString(), '0', 2) + \":\" +\n this.padLeft(data.getMilliseconds().toString(), '0', 2);\n else\n return this.padLeft(data.getDate().toString(), '0', 2) + \"/\" +\n this.padLeft((data.getMonth()+1).toString(), '0', 2) + \"/\" +\n data.getFullYear();\n }\n\n setTimeZero(data: Date): Date {\n\t\tdata.setHours(0);\n\t\tdata.setMinutes(0);\n\t\tdata.setSeconds(0);\n\t\tdata.setMilliseconds(0);\n return data;\n }\n\n formatNumeroMoeda(numero: number, places, symbol, thousand, decimal):string {\n places = !isNaN(places = Math.abs(places)) ? places : 2;\n symbol = symbol !== undefined ? symbol : \"$\";\n thousand = thousand || \",\";\n decimal = decimal || \".\";\n var negative = numero < 0 ? \"-\" : \"\";\n var i = parseInt(Math.abs(+numero || 0).toFixed(places), 10);\n var j = (j = i.toString().length) > 3 ? j % 3 : 0;\n return symbol + negative + (j ? i.toString().substr(0, j) + thousand : \"\") + i.toString().substr(j).replace(/(\\d{3})(?=\\d)/g, \"$1\" + thousand) +\n (places ? decimal + Math.abs(numero - i).toFixed(places).slice(2) : \"\");\n };\n\n validaMailFormat(email: string){\n if (!email)\n return false;\n\n let EMAIL_REGEXP = /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/;\n return (!(email != \"\" && (email.length <= 5 || !EMAIL_REGEXP.test(email))));\n }\n\n validaDigitoContainer(numContainer: string): boolean {\n\n if (!numContainer)\n return false;\n\n let valores: { [id: string]: number; } = {\n \"A\": 10, \"B\": 12, \"C\": 13, \"D\": 14, \"E\": 15, \"F\": 16, \"G\": 17, \"H\": 18,\n \"I\": 19, \"J\": 20, \"K\": 21, \"L\": 23, \"M\": 24, \"N\": 25, \"O\": 26, \"P\": 27,\n \"Q\": 28, \"R\": 29, \"S\": 30, \"T\": 31, \"U\": 32, \"V\": 34, \"W\": 35, \"X\": 36,\n \"Y\": 37, \"Z\": 38\n };\n\n let soma: number = 0;\n\n for (let i=0; i< numContainer.length-1; i++) {\n let caracter = numContainer.substr(i, 1);\n let letraValor = valores[caracter];\n let valorCaracter: number = 0;\n\n //calcula o valor do caracter onde \"i\" é o \"peso\"\n // se não encontrou a letra, significa que é numero\n valorCaracter = (!letraValor) ? Number(caracter) : Number(letraValor);\n\n if (i>0)\n valorCaracter = Number(valorCaracter*Math.pow(2, i));\n\n soma += valorCaracter;\n }\n\n let dv_calculado = ((soma%11) != 10) ? (soma%11) : 0;\n let dv_digitado = numContainer.substr(numContainer.length-1, 1);\n return (dv_calculado.toString() == dv_digitado.toString());\n }\n}\n","import {catchError, map} from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { Http, Headers, RequestOptions, Response } from '@angular/http';\nimport { Observable } from 'rxjs';\nimport { BaseService } from './base.service';\nimport { SharedService } from './shared.service';\nimport { MessageService } from './message.service';\nimport { LogFrontFuncionalidade } from '../_enums/log-front-funcionalidade';\nimport { Operacao } from '../_enums/operacao';\nimport { SporadicTax } from '../_models/sporadic-tax';\nimport { ValidationResult } from '../_models/validation-result';\nimport { stringify } from 'querystring';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SporadicTaxService {\n urlPath: string;\n\n constructor(\n private baseService: BaseService,\n private _msgService: MessageService) { }\n\n\n salvar(sporadicTax: SporadicTax): Observable {\n return this.baseService.Post('sporadicTax', sporadicTax).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (!retorno.IsValid) {\n this._msgService.addMessageValidationError('Taxa adicional - Salvar', retorno.Erros, 'error', LogFrontFuncionalidade.Parametros, Operacao.Inclusao, sporadicTax);\n }\n\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n\n saveAll(sporadicTax: SporadicTax[]): Observable {\n return this.baseService.Post('sporadicTax/saveAll', sporadicTax).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (!retorno.IsValid) {\n this._msgService.addMessageValidationError('Taxa adicional - Salvar', retorno.Erros, 'error', LogFrontFuncionalidade.Parametros, Operacao.Inclusao, sporadicTax);\n }\n\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n\n getSporadicTax(id: number): Observable {\n return this.baseService.Get('sporadicTax/' + id).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as SporadicTax;\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n}\n\n update(sporadicTax: SporadicTax[]): Observable {\n return this.baseService.Put('sporadicTax', sporadicTax).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (!retorno.IsValid) {\n this._msgService.addMessageValidationError('Taxa Adicional - Atualização', retorno.Erros, 'error', LogFrontFuncionalidade.Parametros, Operacao.Alteracao, sporadicTax);\n }\n\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n\n delete(id: number): Observable {\n return this.baseService.Delete('sporadicTax/delete?id=' + id).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (!retorno.IsValid) {\n this._msgService.addMessageValidationError('Taxa adicional - Exclusão', retorno.Erros, 'error', LogFrontFuncionalidade.Parametros, Operacao.Exclusao, id);\n }\n\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n\n findLastExpirationDate(taxTypeId: number, originRegionId: number, originModalId: string, destinationRegionId: number, destinationModalId: string): Observable {\n\n this.urlPath = \"sporadicTax/findLastExpirationDate?taxTypeId=\" + taxTypeId + \"&originRegionId=\" + originRegionId + \"&originModalId=\" + originModalId + \"&destinationRegionId=\" + destinationRegionId + \"&destinationModalId=\" + destinationModalId;\n\n return this.baseService.Get(this.urlPath).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as SporadicTax;\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n}\n\n\nfindByTypeIdStatus(sporadicTaxTypeId: number, isEnabled: number): Observable {\n\n this.urlPath = \"sporadicTax/findByTypeIdStatus?sporadicTaxTypeId=\" + sporadicTaxTypeId + \"&isEnabled=\" + isEnabled;\n\n return this.baseService.Get(this.urlPath).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as SporadicTax[];\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n}\n\n\nfindTaxesByOriginRegionAndDestinationRegion(sporadicTaxTypeId: number,\n originRegionId: number,\n destinationRegionId: number): Observable {\n\n this.urlPath = \"sporadicTax/findTaxesByOriginRegionAndDestinationRegion?sporadicTaxTypeId=\" + sporadicTaxTypeId +\n \"&originRegionId=\" + originRegionId +\n \"&destinationRegionId=\" + destinationRegionId;\n\n return this.baseService.Get(this.urlPath).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as SporadicTax[];\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n}\n\n\n\n\nfindTaxesByOriginRegionAndDestinationRegionPort(sporadicTaxTypeId: number,\n originRegionId: number,\n destinationRegionId: number,\n destinationPortId: number): Observable {\n\nthis.urlPath = \"sporadicTax/findByOriginRegionAndDestinationRegionAndPort?sporadicTaxTypeId=\" + sporadicTaxTypeId +\n \"&originRegionId=\" + originRegionId +\n \"&destinationRegionId=\" + destinationRegionId\n \"&destinationPortId=\" + destinationPortId;\n\nreturn this.baseService.Get(this.urlPath).pipe(\nmap((response: ValidationResult) => {\nlet retorno: ValidationResult = response;\n\nif (retorno.IsValid)\nreturn retorno.Data as SporadicTax[];\nelse\nreturn null;\n}),catchError(e => {\nreturn this.baseService.handleError(e);\n}),);\n}\n\n\n\n\nfindTaxesByOriginRegionPortAndDestinationRegion(sporadicTaxTypeId: number, originRegionId: number, originPortId: number, destinationRegionId: number): Observable {\n\n this.urlPath = \"sporadicTax/findTaxesByOriginRegionPortAndDestinationRegion?sporadicTaxTypeId=\" + sporadicTaxTypeId + \"&originRegionId=\" + originRegionId + \"&originPortId=\" + originPortId + \"&destinationRegionId=\" + destinationRegionId;\n\n return this.baseService.Get(this.urlPath).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as SporadicTax[];\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n}\n\n\n// Busca por Tipo de taxa, Regiao de Origem, Porto de Origem, Modal de Origem, Regiao de Destino, Porto de Destino, Modal de Destino e status\nfindAllSpec(sporadicTaxTypeId: number, originRegionId: number, originPortId: number, originModalId: string, destinationRegionId: number, destinationPortId: number, destinationModalId: string, isEnabled: number): Observable {\n\n let specification: string = '';\n\n\n \n if(sporadicTaxTypeId > 0)\n {\n specification = specification + \"sporadicTaxTypeId=\" + sporadicTaxTypeId;\n }\n\n\n if(originRegionId > 0) \n {\n if(specification.length > 0)\n {\n specification = specification + '&';\n }\n \n specification = specification + \"originRegionId=\" + originRegionId;\n\n }\n\n\n if(originPortId > 0) \n {\n if(specification.length > 0)\n {\n specification = specification + '&';\n }\n \n specification = specification + \"originPortId=\" + originPortId;\n\n } \n\n\n if(originModalId != '') \n {\n if(specification.length > 0)\n {\n specification = specification + '&';\n }\n \n specification = specification + \"originModalId=\" + originModalId;\n\n } \n\n\n // destinationRegionId\n if(destinationRegionId > 0) \n {\n if(specification.length > 0)\n {\n specification = specification + '&';\n }\n \n specification = specification + \"destinationRegionId=\" + destinationRegionId;\n\n }\n\n\n //destinationPortId\n if(destinationPortId > 0) \n {\n if(specification.length > 0)\n {\n specification = specification + '&';\n }\n \n specification = specification + \"destinationPortId=\" + destinationPortId;\n\n } \n\n\n if(destinationModalId != '') \n {\n if(specification.length > 0)\n {\n specification = specification + '&';\n }\n \n specification = specification + \"destinationModalId=\" + destinationModalId;\n\n } \n\n\n\n if(specification.length > 0)\n {\n specification = specification + '&';\n }\n \n specification = specification + \"isEnabled=\" + isEnabled;\n\n\n\n // this.urlPath = \"sporadicTax/findAllSpec?sporadicTaxTypeId=\" + sporadicTaxTypeId +\n // \"&originRegionId=\" + originRegionId +\n // \"&originPortId=\" + originPortId +\n // \"&originModalId=\" + originModalId +\n // \"&destinationRegionId=\" + destinationRegionId +\n // \"&destinationPortId=\" + destinationPortId +\n // \"&destinationModalId=\" + destinationModalId +\n // \"&isEnabled=\" + isEnabled;\n\n this.urlPath = \"sporadicTax/findAllSpec?\" + specification;\n\n\n return this.baseService.Get(this.urlPath).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as SporadicTax[];\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n}\n\n\n\n\nfindTaxesByOriginRegionPortAndDestinationRegionPort(sporadicTaxTypeId: number,\n originRegionId: number,\n originPortId: number,\n destinationRegionId: number,\n destinationPortId: number): Observable {\n\nthis.urlPath = \"sporadicTax/findTaxesByOriginRegionPortAndDestinationRegionPort?sporadicTaxTypeId=\" + sporadicTaxTypeId +\n \"&originRegionId=\" + originRegionId +\n \"&originPortId=\" + originPortId +\n \"&destinationRegionId=\" + destinationRegionId +\n \"&destinationPortId=\" + destinationPortId;\nreturn this.baseService.Get(this.urlPath).pipe(\nmap((response: ValidationResult) => {\nlet retorno: ValidationResult = response;\n\nif (retorno.IsValid)\nreturn retorno.Data as SporadicTax[];\nelse\nreturn null;\n}),catchError(e => {\nreturn this.baseService.handleError(e);\n}),);\n}\n\n\n\nobterSporadicTaxes(): Observable {\n return this.baseService.Get('sporadicTax').pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (!retorno.IsValid) {\n this._msgService.addMessageValidationError('Taxas esporádicas', retorno.Erros, 'error', LogFrontFuncionalidade.Parametros, Operacao.Consulta, null);\n }\n\n return retorno.Data as SporadicTax[];\n\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n}\n\n\nexportarRelatorioCSV(sporadicTaxes: SporadicTax[]): Observable {\n if (!sporadicTaxes || sporadicTaxes.length === 0) {\n return;\n };\n\n\n const titulos: any[] = [\n 'ID',\n 'E-mail',\n 'Nome',\n 'Razão Social',\n 'CNPJ',\n 'Nome Fantasia',\n 'Inscrição Estadual',\n 'Logradouro',\n 'Número',\n 'Complemento',\n 'Bairro',\n 'UF',\n 'Município',\n 'CEP',\n 'Telefone',\n 'Perfil Portal',\n 'Perfil E-cargo',\n 'CNPJ(s) Cadastrados',\n 'Status do Usuário',\n 'Data de Solicitação',\n 'Data de Aprovação',\n 'Data de Reprovação',\n 'Data Última Alteração de Senha',\n 'Situação Senha Login'];\n\n this.baseService.DownloadXLSX(sporadicTaxes, titulos, 'TaxasEsporadicas.xlsx');\n};\n\n}\n","import {catchError, map} from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { Http, Headers, RequestOptions, Response } from '@angular/http';\nimport { Observable } from 'rxjs';\nimport { BaseService } from './base.service';\nimport { SharedService } from './shared.service';\nimport { MessageService } from './message.service';\nimport { LogFrontFuncionalidade } from '../_enums/log-front-funcionalidade';\nimport { Operacao } from '../_enums/operacao';\nimport { SubTributaria } from '../_models/sub-tributaria';\nimport { ValidationResult } from '../_models/validation-result';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SubTributariaService {\n urlPath: string;\n\n constructor(\n private baseService: BaseService,\n private _msgService: MessageService) { }\n\n\n salvar(subStribGrupoEcon: SubTributaria): Observable {\n return this.baseService.Post('subTributaria', subStribGrupoEcon).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (!retorno.IsValid) {\n this._msgService.addMessageValidationError('Substituição Tributário - Grupo Economico - Salvar', retorno.Erros, 'error', LogFrontFuncionalidade.Parametros, Operacao.Inclusao, SubTributaria);\n }\n\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n getSubTributaria(id: number): Observable {\n return this.baseService.Get('subTributaria/' + id).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as SubTributaria;\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n}\n\n update(subTributaria: SubTributaria[]): Observable {\n return this.baseService.Put('subTributaria', SubTributaria).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (!retorno.IsValid) {\n this._msgService.addMessageValidationError('Substituição Tributário - Grupo Economico - Atualização', retorno.Erros, 'error', LogFrontFuncionalidade.Parametros, Operacao.Alteracao, SubTributaria);\n }\n\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n\n delete(id: number): Observable {\n return this.baseService.Delete('subTributaria/' + id).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (!retorno.IsValid) {\n this._msgService.addMessageValidationError('Substituição Tributário - Grupo Economico - Exclusão', retorno.Erros, 'error', LogFrontFuncionalidade.Parametros, Operacao.Exclusao, id);\n }\n\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n\nobterSubTributarias(): Observable {\n return this.baseService.Get('subTributaria').pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (!retorno.IsValid) {\n this._msgService.addMessageValidationError('Substituição Tributário - Grupo Economico', retorno.Erros, 'error', LogFrontFuncionalidade.Parametros, Operacao.Consulta, null);\n }\n\n return retorno.Data as SubTributaria[];\n\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n}\n\nexportarRelatorioCSV(SubTributariaes: SubTributaria[]): Observable {\n if (!SubTributariaes || SubTributariaes.length === 0) {\n return;\n };\n\n\n const titulos: any[] = [\n 'ID',\n 'E-mail',\n 'Nome',\n 'Razão Social',\n 'CNPJ',\n 'Nome Fantasia',\n 'Inscrição Estadual',\n 'Logradouro',\n 'Número',\n 'Complemento',\n 'Bairro',\n 'UF',\n 'Município',\n 'CEP',\n 'Telefone',\n 'Perfil Portal',\n 'Perfil E-cargo',\n 'CNPJ(s) Cadastrados',\n 'Status do Usuário',\n 'Data de Solicitação',\n 'Data de Aprovação',\n 'Data de Reprovação',\n 'Data Última Alteração de Senha',\n 'Situação Senha Login'];\n\n this.baseService.DownloadXLSX(SubTributariaes, titulos, 'TaxasEsporadicas.xlsx');\n};\n\n}\n","\nimport {catchError, map} from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { Response } from '@angular/http';\nimport { BaseService } from './base.service';\nimport { SharedService } from './shared.service';\nimport { MessageService } from './message.service';\nimport { LogFrontFuncionalidade } from '../_enums/log-front-funcionalidade';\nimport { Operacao } from '../_enums/operacao';\nimport { Terminal } from '../_models/terminal';\nimport { ValidationResult } from '../_models/validation-result';\nimport { Observable } from 'rxjs';\n@Injectable({\n providedIn: 'root'\n})\nexport class TerminaisService {\n\n constructor(\n private baseService: BaseService,\n private _msgService: MessageService) { }\n\n obterTerminais(): Observable {\n return this.baseService.Get('terminal').pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n \n if (!retorno.IsValid) {\n this._msgService.addMessageValidationError('Parametro - Terminais', retorno.Erros, 'error', LogFrontFuncionalidade.Parametros, Operacao.Consulta, null);\n }\n \n return retorno.Data as Terminal[];\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n salvarTerminal(terminal: Terminal): Observable {\n return this.baseService.Post('terminal', terminal).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (!retorno.IsValid) {\n this._msgService.addMessageValidationError('Parametro - Terminais', retorno.Erros, 'error', LogFrontFuncionalidade.Parametros, Operacao.Inclusao, terminal);\n }\n \n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n atualizarTerminais(terminais: Terminal[]): Observable {\n return this.baseService.Put('terminal', terminais).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (!retorno.IsValid) {\n this._msgService.addMessageValidationError('Parametro - Terminais', retorno.Erros, 'error', LogFrontFuncionalidade.Parametros, Operacao.Alteracao, terminais);\n }\n \n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n excluirTerminal(terminalID: number): Observable {\n return this.baseService.Delete('terminal/' + terminalID).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (!retorno.IsValid) {\n this._msgService.addMessageValidationError('Parametro - Terminais', retorno.Erros, 'error', LogFrontFuncionalidade.Parametros, Operacao.Exclusao, terminalID);\n }\n \n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n}\n","import {catchError, map} from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { Http, Headers, RequestOptions, Response } from '@angular/http';\nimport { Observable } from 'rxjs';\nimport { BaseService } from './base.service';\nimport { SharedService } from './shared.service';\nimport { MessageService } from './message.service';\nimport { LogFrontFuncionalidade } from '../_enums/log-front-funcionalidade';\nimport { Operacao } from '../_enums/operacao';\nimport { TipoTaxaEsporadica } from '../_models/tipo-taxa-esporadica';\nimport { ValidationResult } from '../_models/validation-result';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TipoTaxaEsporadicaService {\n urlPath: string;\n\n constructor(\n private baseService: BaseService,\n private _msgService: MessageService) { }\n\n\n salvar(tipoTaxaEsporadica: TipoTaxaEsporadica): Observable {\n return this.baseService.Post('sporadicTaxType', tipoTaxaEsporadica).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (!retorno.IsValid) {\n this._msgService.addMessageValidationError('Taxa adicional - Salvar', retorno.Erros, 'error', LogFrontFuncionalidade.Parametros, Operacao.Inclusao, tipoTaxaEsporadica);\n }\n\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n getTipoTaxaEsporadica(id: number): Observable {\n return this.baseService.Get('sporadicTaxType/' + id).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as TipoTaxaEsporadica;\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n}\n\n update(tipoTaxaEsporadica: TipoTaxaEsporadica[]): Observable {\n return this.baseService.Put('sporadicTaxType', tipoTaxaEsporadica).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (!retorno.IsValid) {\n this._msgService.addMessageValidationError('Taxa Adicional - Atualização', retorno.Erros, 'error', LogFrontFuncionalidade.Parametros, Operacao.Alteracao, tipoTaxaEsporadica);\n }\n\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n\n delete(id: number): Observable {\n return this.baseService.Delete('sporadicTaxType/delete?id=' + id).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (!retorno.IsValid) {\n this._msgService.addMessageValidationError('Taxa adicional - Exclusão', retorno.Erros, 'error', LogFrontFuncionalidade.Parametros, Operacao.Exclusao, id);\n }\n\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n\ngetAll(): Observable {\n return this.baseService.Get('sporadicTaxType').pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (!retorno.IsValid) {\n this._msgService.addMessageValidationError('Tipo taxas esporádicas', retorno.Erros, 'error', LogFrontFuncionalidade.Parametros, Operacao.Consulta, null);\n }\n\n return retorno.Data as TipoTaxaEsporadica[];\n\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n}\n\n\n findLastExpirationDate(taxTypeId: number, originRegionId: number, originModalId: string, destinationRegionId: number, destinationModalId: string): Observable {\n\n this.urlPath = \"TipoTaxaEsporadica/findLastExpirationDate?taxTypeId=\" + taxTypeId + \"&originRegionId=\" + originRegionId + \"&originModalId=\" + originModalId + \"&destinationRegionId=\" + destinationRegionId + \"&destinationModalId=\" + destinationModalId;\n\n return this.baseService.Get(this.urlPath).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as TipoTaxaEsporadica;\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n}\n\nfindByTypeIdStatus(tipoTaxaEsporadicaTypeId: number, isEnabled: number): Observable {\n\n this.urlPath = \"TipoTaxaEsporadica/findByTypeIdStatus?TipoTaxaEsporadicaTypeId=\" + tipoTaxaEsporadicaTypeId + \"&isEnabled=\" + isEnabled;\n\n return this.baseService.Get(this.urlPath).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as TipoTaxaEsporadica[];\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n}\n\nobterTipoTaxaEsporadicaes(): Observable {\n return this.baseService.Get('tipoTaxaEsporadica').pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (!retorno.IsValid) {\n this._msgService.addMessageValidationError('Tipo taxas esporádicas', retorno.Erros, 'error', LogFrontFuncionalidade.Parametros, Operacao.Consulta, null);\n }\n\n return retorno.Data as TipoTaxaEsporadica[];\n\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n}\n\n\nexportarRelatorioCSV(tipoTaxaEsporadicas: TipoTaxaEsporadica[]): Observable {\n if (!tipoTaxaEsporadicas || tipoTaxaEsporadicas.length === 0) {\n return;\n };\n\n\n const titulos: any[] = [\n 'ID',\n 'E-mail',\n 'Nome',\n 'Razão Social',\n 'CNPJ',\n 'Nome Fantasia',\n 'Inscrição Estadual',\n 'Logradouro',\n 'Número',\n 'Complemento',\n 'Bairro',\n 'UF',\n 'Município',\n 'CEP',\n 'Telefone',\n 'Perfil Portal',\n 'Perfil E-cargo',\n 'CNPJ(s) Cadastrados',\n 'Status do Usuário',\n 'Data de Solicitação',\n 'Data de Aprovação',\n 'Data de Reprovação',\n 'Data Última Alteração de Senha',\n 'Situação Senha Login'];\n\n this.baseService.DownloadXLSX(tipoTaxaEsporadicas, titulos, 'TaxasEsporadicas.xlsx');\n};\n\n}\n","\nimport { throwError as observableThrowError, Observable } from 'rxjs';\n\nimport { catchError, map } from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { Headers, Http, RequestOptions, Response } from '@angular/http';\nimport { AlteracoesArquivoUpload } from '../_models/alteracoes-arquivo-upload';\nimport { ValidationResult } from '../_models/validation-result';\nimport { AppService } from './app.service';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UploadArquivoService {\n\n constructor(\n private http: HttpClient,\n private appService: AppService) { }\n\n private getOptionsArgs(): any {\n // let headers = new Headers();\n\n // if (this.appService.UsuarioLogado != null) {\n // headers = new Headers({ 'Authorization': 'Bearer ' + this.appService.UsuarioLogado.Token });\n // }\n\n // return new RequestOptions({ headers: headers });\n let headers = new HttpHeaders({ 'Authorization': 'Bearer ' + this.appService.UsuarioLogado.Token, 'Content-Type': 'application/json' });\n\n let options = {\n headers: headers\n };\n return options;\n }\n\n salvarAlteracoesUpload(alteracoes: AlteracoesArquivoUpload, upload: string, tipo: string, id: number) {\n if (alteracoes.arquivosParaUpload.length > 0 && alteracoes.arquivosParaExcluir.length == 0)\n return this.gravarUpload(alteracoes, upload, tipo, id);\n if (alteracoes.arquivosParaExcluir.length > 0 && alteracoes.arquivosParaUpload.length == 0)\n return this.apagarUpload(alteracoes, upload, tipo);\n\n this.gravarUpload(alteracoes, upload, tipo, id)\n .subscribe(result => {\n return this.apagarUpload(alteracoes, upload, tipo);\n });\n }\n\n private gravarUpload(alteracoes: AlteracoesArquivoUpload, upload: string, tipo: string, id: number) {\n let formData: FormData = new FormData();\n for (var j = 0; j < alteracoes.arquivosParaUpload.length; j++) {\n formData.append(\"file[]\", alteracoes.arquivosParaUpload[j].arquivo, alteracoes.arquivosParaUpload[j].arquivo.name);\n }\n return this.http.post(this.obterUrlUpload(upload, tipo, id), formData, this.getOptionsArgs()).pipe(\n map((response: any) => {\n let retorno: ValidationResult = response;\n return retorno;\n }),\n catchError(e => {\n let erro = e && e.error_description;\n return observableThrowError(erro);\n }));\n }\n\n private apagarUpload(alteracoes: AlteracoesArquivoUpload, upload: string, tipo: string) {\n var ids: number[] = [];\n alteracoes.arquivosParaExcluir.forEach(arquivo => {\n if (tipo == 'cotacao')\n ids.push(arquivo.idCotacao);\n else\n ids.push(arquivo.idBooking);\n });\n\n ids.forEach(id => {\n this.http.delete(this.obterUrlUpload(upload, tipo, id)).pipe(\n map((response: any) => { }));\n });\n\n return null;\n }\n\n private obterUrlUpload(upload: string, tipo: string, id: number) {\n return this.appService.apiUrl + 'upload/' + upload + '/' + tipo + '/' + id\n }\n\n}\n","\nimport {catchError, map} from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { Response } from '@angular/http';\nimport { Observable } from 'rxjs';\n\n\nimport { BaseService } from './base.service';\nimport { SharedService } from 'app/_services/shared.service';\nimport { MessageService } from 'app/_services/message.service';\n\nimport { Usuario } from './../_models/usuario';\nimport { Municipio } from 'app/_models/municipio';\nimport { UsuarioCNPJ } from './../_models/usuario-cnpj';\nimport { UsuarioPesquisa } from 'app/_models/usuario-pesquisa';\nimport { ValidationResult } from './../_models/validation-result';\n\nimport { Operacao } from '../_enums/operacao';\nimport { StatusUsuario } from 'app/_enums/status-usuario.enum';\nimport { PerfilUsuario } from 'app/_enums/perfil-usuario.enum';\nimport { LogFrontFuncionalidade } from '../_enums/log-front-funcionalidade';\nimport { UsuarioPesquisaRequest } from 'app/_models/usuario-pesquisa-request';\nimport { AuthenticationService } from './authentication.service';\nimport { AlteracaoSenha } from '../_models/ultima-alteracao-senha';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UsuarioService {\n\n constructor(private baseService: BaseService,\n private _msgService: MessageService,\n private _sharedService: SharedService,\n private _authService: AuthenticationService) { }\n\n salvarUsuario(usuario: Usuario): Observable {\n if (!usuario.UsuarioID || usuario.UsuarioID == 0)\n return this.baseService.Post('usuario', usuario).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n else\n return this.baseService.Put('usuario/' + usuario.UsuarioID, usuario).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n return retorno;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n/*\n deletarUsuario(id: number): Observable {\n return this.baseService.Delete('usuario/' + id)\n .map((response: Response) => {\n let retorno: ValidationResult = response.json();\n return retorno;\n }).catch(e => {\n return this.baseService.handleError(e);\n });\n }\n*/\n getUsuarios(): Observable {\n return this.baseService.Get('usuario').pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as Usuario[];\n else\n return null;\n }),\n catchError(e => {\n return this.baseService.handleError(e);\n }),)\n ;\n }\n\n getUsuariosByFiltro(filtro: UsuarioPesquisaRequest): Observable {\n return this.baseService.Post('usuario/filtro', filtro).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as Usuario[];\n else {\n var erros: string[] = [];\n erros.push(\"Erro ao consultar Usuarios! Contate o administrador!\");\n retorno.Erros.forEach(element => {\n erros.push(element.ErrorCode + \" - \" + element.Message);\n });\n this._msgService.addMessageArray('Usuarios', erros, \"error\", LogFrontFuncionalidade.Sobre, Operacao.Consulta, filtro);\n return null;\n }\n }),\n catchError(e => {\n return this.baseService.handleError(e);\n }),)\n ;\n }\n\n getCNPJs(): Observable {\n return this.baseService.Get('usuario/getcnpjs').pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as UsuarioCNPJ[];\n else\n return null;\n }),\n catchError(e => { return this.baseService.handleError(e); }),)\n ;\n }\n\n getCsv(): Observable {\n return this.baseService.Get('usuario/csv').pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as Usuario[];\n else\n return null;\n }),\n catchError(e => { return this.baseService.handleError(e); }),)\n ;\n }\n\n getUsuario(id: number): Observable {\n return this.baseService.Get('usuario/' + id).pipe(\n map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n\n if (retorno.IsValid)\n return retorno.Data as Usuario;\n else\n return null;\n }),catchError(e => {\n return this.baseService.handleError(e);\n }),);\n }\n\n public getClasse(status: StatusUsuario): string {\n switch (status) {\n case StatusUsuario.AguardandoAprovacao:\n return \"label label-info\";\n case StatusUsuario.Aprovado:\n return \"label label-success\";\n case StatusUsuario.Inativado:\n return \"label label-warning\";\n case StatusUsuario.Reprovado:\n return \"label label-danger\";\n }\n }\n\n public getString(status: StatusUsuario): string {\n switch (status) {\n case StatusUsuario.AguardandoAprovacao:\n return \"Aguardando Aprovacao\";\n case StatusUsuario.Aprovado:\n return \"Aprovado\";\n case StatusUsuario.Inativado:\n return \"Inativado\";\n case StatusUsuario.Reprovado:\n return \"Reprovado\";\n }\n }\n\n exportarRelatorioCSV(usuarios: Usuario[]): Observable {\n if (!usuarios || usuarios.length === 0) {\n return;\n };\n\n var municipios: Municipio[];\n var alteracoesSenha: AlteracaoSenha[];\n\n const data: any[] = [];\n const titulos: any[] = [\n 'ID',\n 'E-mail',\n 'Nome',\n 'Razão Social',\n 'CNPJ',\n 'Nome Fantasia',\n 'Inscrição Estadual',\n 'Logradouro',\n 'Número',\n 'Complemento',\n 'Bairro',\n 'UF',\n 'Município',\n 'CEP',\n 'Telefone',\n 'Perfil Portal',\n 'Perfil E-cargo',\n 'CNPJ(s) Cadastrados',\n 'Status do Usuário',\n 'Data de Solicitação',\n 'Data de Aprovação',\n 'Data de Reprovação',\n 'Data Última Alteração de Senha',\n 'Situação Senha Login'];\n\n this._authService.GetUltimasAlteracoesSenha().subscribe( res => {\n if(res.IsValid)\n alteracoesSenha = res.Data.Data\n else\n return;\n });\n\n var observable = this._sharedService.getMunicipios();\n observable.subscribe(m => {\n municipios = m;\n var nowDate = new Date();\n nowDate.setMonth(nowDate.getMonth() - 1)\n usuarios.forEach(x => {\n\n var municUser = municipios.find(z => z.Codigo.toString() == x.Municipio);\n var alteraUser = alteracoesSenha.find(altera => altera.Email === x.Email);\n data.push([\n x.UsuarioID,\n x.Email,\n x.Nome,\n x.RazaoSocial,\n x.CNPJ,\n x.NomeFantasia,\n x.InscricaoEstadual,\n x.Logradouro,\n x.Numero,\n x.Complemento,\n x.Bairro,\n x.UF,\n (municUser) ? municUser.Descricao : '', //x.Municipio,\n '0'.repeat(8 - x.CEP.length) +x.CEP,\n x.Telefone,\n (x.Perfil) ? x.Perfil.Descricao : '',\n this.getNomePerfilECargo(x.PerfilUsuario),\n x.ListaCNPJs,\n this.getString(x.Status),\n x.strDataCadastro,\n x.strDataAprovacao,\n x.strDataReprovacao,\n alteraUser != null && alteraUser.strData != null? alteraUser.strData : null,\n (alteraUser!= null && alteraUser.Data != null) ? (new Date(alteraUser.Data).getTime() <= nowDate.getTime()? \"Expirado\": \"Senha Ativa\")\n : \"Nunca Logado\"\n ]);\n });\n\n this.baseService.DownloadXLSX(data, titulos, 'Usuarios.xlsx');\n });\n\n return observable;\n }\n\n getNomePerfilECargo(perfil: any): string {\n var str = \"\";\n switch (perfil) {\n case PerfilUsuario.Administrador:\n str = \"Administrador\"\n break;\n case PerfilUsuario.Cliente:\n str = \"Cliente\"\n break;\n case PerfilUsuario.Provedor:\n str = \"Provedor\"\n break;\n case PerfilUsuario.Ambos:\n str = \"Cliente e Provedor\"\n break;\n }\n return str;\n }\n\n}\n","import { Subscription } from 'rxjs';\nimport { Component, OnInit, ViewChild } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { Anel } from './../../../_models/anel';\nimport { Porto } from './../../../_models/porto';\nimport { SentidoRota } from 'app/_enums/sentido-rota.enum';\n\nimport { SharedService } from './../../../_services/shared.service';\nimport { MessageService } from './../../../_services/message.service';\nimport { AnelRotaService } from './../../../_services/anel-rota.service';\n\nimport { BaseComponent } from './../../../shared/base.component';\nimport { MessageComponent } from './../../../shared/message/message.component';\nimport { RotasAnelComponent } from \"./rotas-anel/rotas-anel.component\";\n\nimport { Operacao } from 'app/_enums/operacao';\nimport { SentidoRotaAware } from \"app/_enums/sentido-rota-aware.decorator\";\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\n\n@Component({\n selector: 'app-anel-rota-detalhe',\n templateUrl: './anel-rota-detalhe.component.html',\n styleUrls: ['./anel-rota-detalhe.component.scss']\n})\n@SentidoRotaAware\nexport class AnelRotaDetalheComponent extends BaseComponent implements OnInit {\n\n public portos: Porto[];\n public loading: boolean = false;\n public loadingPortos: boolean = false;\n public id: number = 0;\n public titulo: string = 'Novo Anel e Rotas';\n public anel: Anel = new Anel();\n\n inscricaoGet: Subscription;\n\n @ViewChild(MessageComponent, { static: true}) mensagem: MessageComponent;\n @ViewChild(\"rotasSul\", { static: true}) rotasSul: RotasAnelComponent;\n @ViewChild(\"rotasNorte\", { static: true}) rotasNorte: RotasAnelComponent;\n\n constructor(private _route: ActivatedRoute,\n private _msgService: MessageService,\n private _router: Router,\n private _anelRotaService: AnelRotaService,\n private _sharedService: SharedService) \n { \n super ();\n \n this._msgService.emitirMensagem.subscribe(\n msg => { \n this.mensagem.mostrarMensagem(msg.tipo, msg.mensagem);\n }\n );\n }\n\n ngOnInit(): void {\n this.inscricaoGet = this._route.params.subscribe(\n (params: any) => {\n this.id = params['id'];\n if (this.id) {\n this.titulo = 'Editar Anel e Rotas';\n this.loading = true;\n this._anelRotaService.getAnel(this.id)\n .subscribe(anel => {\n this.anel = anel;\n this.loading = false;\n this.SetUltimoNovo();\n });\n }\n else {\n this.titulo = 'Novo Anel e Rotas';\n this.anel = new Anel();\n this.SetUltimoNovo();\n }\n }\n );\n this.ObterPortos();\n }\n\n public ObterPortos() {\n this.loadingPortos = true;\n this._sharedService.getPortosTodos()\n .subscribe(p => {\n this.portos = p;\n this.loadingPortos = false;\n });\n }\n\n public SalvarAnelRota() {\n //Preenche último porto se o usuário não apertou Adicionar (+)\n this.rotasSul.AdicionaRotaPreenchida();\n this.rotasNorte.AdicionaRotaPreenchida();\n\n if (this.ValidaAnel()) {\n this.loading = true;\n this.anel.Rotas = this.rotasSul.rotas.filter(rota => !rota.Novo);\n this.anel.Rotas.push.apply(this.anel.Rotas, this.rotasNorte.rotas.filter(rota => !rota.Novo));\n this._anelRotaService.salvarAnel(this.anel)\n .subscribe(result => {\n this.loading = false;\n\n if (result.IsValid) {\n this._msgService.addMessageRedirect(this.titulo, result.Message, \"success\");\n this._router.navigate(['anel-rota']);\n }\n else\n {\n //this.SetUltimoNovo();\n result.Erros.forEach(element => this._msgService.addMessage(this.titulo, element.Message, \"error\", LogFrontFuncionalidade.AneisERotas, Operacao.Alteracao, this.anel) );\n }\n });\n }\n }\n\n public ValidaAnel(): boolean {\n if (!this.rotasSul.ContemRotas() || !this.rotasNorte.ContemRotas()) {\n this._msgService.addMessage('Adicionar Anel', 'O Anel deve conter ao menos uma rota em cada sentido!', \"error\", LogFrontFuncionalidade.AneisERotas, Operacao.Alteracao, this.anel);\n return false;\n }\n\n if (this.anel.Nome.trim() == \"\") {\n this._msgService.addMessage('Adicionar Anel', 'O Nome do Anel é obrigatório!', \"error\", LogFrontFuncionalidade.AneisERotas, Operacao.Alteracao, this.anel);\n return false;\n }\n\n return true;\n }\n\n private SetUltimoNovo(){\n if (this.anel.Rotas != undefined)\n this.rotasSul.CarregarRotas(this.anel.Rotas.filter(rota => rota.Sentido == SentidoRota.Sul));\n this.rotasSul.SetUltimoNovo(this.anel.AnelID);\n\n if (this.anel.Rotas != undefined)\n this.rotasNorte.CarregarRotas(this.anel.Rotas.filter(rota => rota.Sentido == SentidoRota.Norte));\n this.rotasNorte.SetUltimoNovo(this.anel.AnelID);\n }\n}\n","import { Component, Input } from '@angular/core';\n\nimport { Anel } from '../../../../_models/anel';\nimport { Porto } from '../../../../_models/porto';\nimport { AnelRota } from '../../../../_models/anel-rota';\n\nimport { MessageService } from '../../../../_services/message.service';\n\nimport { Operacao } from 'app/_enums/operacao';\nimport { SentidoRota } from '../../../../_enums/sentido-rota.enum';\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\n\n@Component({\n selector: 'rotas-anel',\n templateUrl: './rotas-anel.component.html',\n styleUrls: ['./rotas-anel.component.scss']\n})\nexport class RotasAnelComponent {\n @Input() anel: Anel;\n @Input() titulo: string;\n @Input() portos: Porto[];\n @Input() sentido: SentidoRota;\n public rotas: AnelRota[];\n\n constructor(private _msgService: MessageService) { }\n\n public CarregarRotas(rotas: AnelRota[]){\n this.rotas = rotas;\n }\n\n public AdicionarRota(index: number) {\n if (!this.ValidaRota(index))\n return;\n \n if (index > 0){\n this.rotas[index - 1].Novo = false;\n this.rotas[index - 1].Ultimo = false;\n }\n \n this.rotas[index].Ultimo = true;\n this.rotas[index].Novo = false;\n this.rotas[index].Sentido = this.sentido;\n this.rotas[index].DescricaoPortoDestino = this.portos.find(p => p.Codigo == this.rotas[index].CodigoPortoDestino).Descricao;\n if (this.rotas[index].DescricaoPortoOrigem == \"\")\n this.rotas[index].DescricaoPortoOrigem = this.portos.find(p => p.Codigo == this.rotas[index].CodigoPortoOrigem).Descricao;\n\n this.SetUltimoNovo(this.anel.AnelID);\n }\n\n public ExcluirRota(index: number) {\n this.rotas.splice(this.rotas.length - 1, 1);\n this.rotas.splice(index, 1);\n this.SetUltimoNovo(this.anel.AnelID);\n }\n\n public ValidaRota(index: number): boolean {\n if (index == 0 && this.rotas[index].CodigoPortoOrigem == 0) {\n this._msgService.addMessage('Adicionar Rota', 'Selecione um Porto Origem!', \"error\", LogFrontFuncionalidade.AneisERotas, Operacao.Alteracao, this.rotas);\n return false;\n }\n\n if (index == 0 && this.rotas[index].CodigoPortoOrigem == this.rotas[index].CodigoPortoDestino) {\n this._msgService.addMessage('Adicionar Rota', 'O Porto Destino deve ser diferente do Porto Origem!', \"error\", LogFrontFuncionalidade.AneisERotas, Operacao.Alteracao, this.rotas);\n return false;\n }\n\n if (this.rotas[index].CodigoPortoDestino == 0) {\n this._msgService.addMessage('Adicionar Rota', 'Selecione um Porto Destino!', \"error\", LogFrontFuncionalidade.AneisERotas, Operacao.Alteracao, this.rotas);\n return false;\n }\n\n let jaUsado = false;\n for (let i = 0; i < this.rotas.length - 1; i++) {\n if (this.rotas[i].CodigoPortoOrigem == this.rotas[index].CodigoPortoDestino ||\n this.rotas[i].CodigoPortoDestino == this.rotas[index].CodigoPortoDestino) {\n jaUsado = true;\n }\n }\n if (jaUsado) {\n this._msgService.addMessage('Adicionar Rota', 'Porto já utilizado!', \"error\", LogFrontFuncionalidade.AneisERotas, Operacao.Alteracao, this.rotas);\n return false;\n }\n return true;\n }\n\n public SetUltimoNovo(anelID: number) {\n let totalRotas: number;\n let novaRota = new AnelRota();\n\n if (this.rotas == undefined) {\n this.rotas = [];\n totalRotas = 0;\n }\n else\n totalRotas = this.rotas.length;\n\n if (totalRotas == 0) {\n novaRota.Ultimo = true;\n novaRota.Ordem = 1;\n novaRota.CodigoPortoOrigem = 0;\n novaRota.DescricaoPortoOrigem = \"\";\n }\n else {\n this.rotas[totalRotas - 1].Ultimo = true;\n novaRota.Ordem = this.rotas[totalRotas - 1].Ordem + 1;\n novaRota.CodigoPortoOrigem = this.rotas[totalRotas - 1].CodigoPortoDestino;\n novaRota.DescricaoPortoOrigem = this.rotas[totalRotas - 1].DescricaoPortoDestino;\n }\n\n novaRota.AnelRotaID = 0;\n novaRota.CodigoPortoDestino = 0;\n novaRota.DescricaoPortoDestino = \"\";\n novaRota.AnelID = anelID;\n novaRota.Novo = true;\n\n this.rotas.push(novaRota);\n }\n\n public ContemRotas(): boolean{\n return !(this.rotas == undefined || this.rotas.length == 0 || this.rotas[0].Novo == true);\n }\n\n public AdicionaRotaPreenchida(){\n let ultimo = this.rotas.length-1;\n if (this.rotas[ultimo].CodigoPortoDestino != 0)\n this.AdicionarRota(ultimo);\n }\n}\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport swal from 'sweetalert2';\n\nimport { AnelRotaService } from './../../_services/anel-rota.service';\nimport { MessageService } from './../../_services/message.service';\n\nimport { Anel } from './../../_models/anel';\nimport { Porto } from './../../_models/porto';\n\nimport { MessageComponent } from './../../shared/message/message.component';\n\nimport { Operacao } from 'app/_enums/operacao';\nimport { SentidoRota } from 'app/_enums/sentido-rota.enum';\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\n\n@Component({\n selector: 'app-anel-rota',\n templateUrl: './anel-rota.component.html',\n styleUrls: ['./anel-rota.component.scss']\n})\nexport class AnelRotaComponent implements OnInit {\n\n public aneis: Anel[];\n public portos: Porto[];\n public loading: boolean = false;\n\n @ViewChild(MessageComponent , { static: true}) mensagem: MessageComponent;\n\n constructor(private _msgService: MessageService,\n private _anelRotaService: AnelRotaService) {\n\n this._msgService.emitirMensagem.subscribe(\n msg => {\n this.mensagem.mostrarMensagem(msg.tipo, msg.mensagem);\n }\n );\n }\n\n ngOnInit() {\n this.ObterAneis();\n let msg = this._msgService.getMessageRedirect();\n if (msg.show)\n this._msgService.addMessage(msg.titulo, msg.mensagem, msg.type, LogFrontFuncionalidade.AneisERotas, Operacao.Alteracao);\n }\n\n public ObterAneis() {\n this.loading = true;\n this._anelRotaService.getAneis()\n .subscribe(p => {\n this.aneis = p;\n this.loading = false;\n }\n );\n }\n\n public DeletarAnel(anelID: number) {\n swal({\n title: 'Confirmação',\n text: 'Deseja excluir o Anel e suas rotas? A exclusão de um Anel impactará diretamente na Programação Completa de Navios.',\n type: 'question',\n showCancelButton: true,\n confirmButtonText: 'Sim',\n cancelButtonText: 'Não'\n }).then(success => {\n\n this.loading = true;\n this._anelRotaService.deletarAnel(anelID)\n .subscribe(result => {\n this.loading = false;\n\n if (result.IsValid) {\n this._msgService.addMessage('Anéis e Rotas', result.Message, \"success\");\n this.ObterAneis();\n }\n else {\n var msgErr: string[] = [];\n result.Erros.forEach(element => msgErr.push(element.Message));\n this._msgService.addMessageArray(\"Anéis e Rotas\", msgErr, \"error\", LogFrontFuncionalidade.AneisERotas, Operacao.Exclusao, anelID);\n }\n });\n }, dismiss => {\n // console.log(dismiss);\n });\n }\n\n public obterRotasSul(anel: Anel){\n return anel.Rotas.filter(rota => rota.Sentido == SentidoRota.Sul);\n }\n\n public obterRotasNorte(anel: Anel){\n return anel.Rotas.filter(rota => rota.Sentido == SentidoRota.Norte);\n }\n\n}\n","\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\nimport { ModalModule } from 'ngx-bootstrap/modal';\nimport { ConfirmModule } from './../../shared/confirm/confirm.module';\nimport { SharedModule } from './../../shared/shared.module';\n\nimport { AnelRotaRoutingModule } from './anel-rota.routing.module';\nimport { AnelRotaComponent } from './anel-rota.component';\nimport { AnelRotaDetalheComponent } from './anel-rota-detalhe/anel-rota-detalhe.component';\nimport { AnelRotaService } from './../../_services/anel-rota.service';\n\nimport { RotasAnelComponent } from './anel-rota-detalhe/rotas-anel/rotas-anel.component';\nimport { HttpClientModule } from '@angular/common/http';\n\n@NgModule({\n imports: [\n FormsModule,\n CommonModule,\n HttpClientModule,\n AnelRotaRoutingModule,\n ModalModule.forRoot(),\n ConfirmModule,\n SharedModule\n ],\n exports: [],\n declarations: [\n AnelRotaComponent,\n AnelRotaDetalheComponent,\n RotasAnelComponent\n ],\n providers: [\n AnelRotaService\n ]\n})\nexport class AnelRotaModule { }","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { AnelRotaComponent } from './anel-rota.component';\nimport { AnelRotaDetalheComponent } from './anel-rota-detalhe/anel-rota-detalhe.component';\nimport { AuthGuard } from 'app/_guards/auth.guard';\n\nconst anelrotaRoutes: Routes = [\n { path: '', component: AnelRotaComponent, canActivate: [AuthGuard] },\n // { path: 'detalhe', component: AnelRotaDetalheComponent, canActivate: [AuthGuard] },\n // { path: 'detalhe/:id', component: AnelRotaDetalheComponent, canActivate: [AuthGuard] }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(anelrotaRoutes)],\n exports: [RouterModule]\n})\nexport class AnelRotaRoutingModule {}","import { Component, OnInit, ViewChild } from '@angular/core';\n\nimport { Assunto } from './../../../_models/assunto';\nimport { FaleConosco } from './../../../_models/faleconosco';\nimport { CaixaEntradaService } from './../../../_services/caixa-entrada.service';\n\n@Component({\n selector: 'app-caixa-entrada-detalhe',\n templateUrl: './caixa-entrada-detalhe.component.html',\n styleUrls: ['./caixa-entrada-detalhe.component.scss'],\n exportAs: 'child'\n})\nexport class CaixaEntradaDetalheComponent implements OnInit {\n\n loading: boolean = false;\n email: FaleConosco = new FaleConosco();\n\n constructor(private _caixaEntradaService: CaixaEntradaService) { }\n\n ngOnInit() {\n this.email.Assunto = new Assunto();\n\n this._caixaEntradaService.emitirModal.subscribe(\n modal => this.showModal(modal)\n );\n }\n\n @ViewChild('cxModal', {static: true}) cxModal; \n\n public showModal(modal):void {\n if(modal)\n this.cxModal.show();\n else\n this.cxModal.hide();\n }\n\n}\n","import { Component, OnInit, ViewChild } from '@angular/core';\n\nimport { Assunto } from './../../_models/assunto';\nimport { FaleConosco } from './../../_models/faleconosco';\n\nimport { SharedService } from './../../_services/shared.service';\nimport { CaixaEntradaService } from './../../_services/caixa-entrada.service';\n\nimport { BaseComponent } from './../../shared/base.component';\nimport { PaginacaoComponent } from './../../shared/paginacao/paginacao.component';\nimport { CaixaEntradaDetalheComponent } from './caixa-entrada-detalhe/caixa-entrada-detalhe.component';\n\n@Component({\n selector: 'caixa-entrada',\n templateUrl: './caixa-entrada.component.html',\n styleUrls: ['./caixa-entrada.component.scss']\n})\nexport class CaixaEntradaComponent extends BaseComponent implements OnInit {\n\n emails: FaleConosco[] = [];\n filtroNome: string = \"\";\n filtroAssunto: number = 0;\n assuntos: Assunto[];\n loading: boolean = false;\n pageSize: number = 20;\n\n @ViewChild(PaginacaoComponent, { static: true} ) paginacao: PaginacaoComponent;\n @ViewChild(CaixaEntradaDetalheComponent , { static: true}) detalhe: CaixaEntradaDetalheComponent;\n\n constructor(private _caixaEntradaService: CaixaEntradaService,\n private _sharedService: SharedService) { \n super();\n }\n\n ngOnInit() {\n this.ObtemAssuntos();\n this.BuscaEmails(\"\");\n }\n\n BuscaEmails(filtro: string) {\n this.loading = true;\n this._caixaEntradaService.getEmails(filtro)\n .subscribe(p => {\n this.emails = p;\n this.setOrder(\"Data\", false);\n this.loading = false;\n });\n }\n\n ObtemAssuntos() {\n this.loading = true;\n this._caixaEntradaService.getAssuntos()\n .subscribe(p => {\n this.assuntos = p;\n this.loading = false;\n });\n }\n\n FiltrarAssunto(selecionado: any) {\n this.filtroAssunto = selecionado;\n this.BuscaEmails(this.filtroAssunto + ';' + this.filtroNome);\n }\n\n FiltrarNome() {\n this.BuscaEmails(this.filtroAssunto + ';' + this.filtroNome);\n }\n\n setPageSize(value: number) {\n this.pageSize = value;\n this.paginacao.setAllData(this.emails);\n this.paginacao.setPageSize(this.pageSize);\n this.paginacao.setPage(1);\n }\n\n setOrder(value: string, asc: boolean = true) {\n var array = this.emails.sort(function (a, b) {\n if (asc) {\n if (!value) {\n return a > b ? 1 : -1;\n }\n return a[value] > b[value] ? 1 : -1;\n }\n else {\n if (!value) {\n return a < b ? 1 : -1;\n }\n return a[value] < b[value] ? 1 : -1;\n }\n });\n\n this.emails = array;\n this.paginacao.setAllData(this.emails);\n this.paginacao.setPageSize(this.pageSize);\n this.paginacao.setPage(1);\n }\n\n public showModal(item: FaleConosco): void {\n this.detalhe.email = item;\n this._caixaEntradaService.showModal();\n }\n\n\n \n}\n","\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\nimport { ModalModule } from 'ngx-bootstrap/modal';\nimport { SharedModule } from './../../shared/shared.module';\n\nimport { CaixaEntradaRoutingModule } from './caixa-entrada.routing.module';\nimport { CaixaEntradaComponent } from './caixa-entrada.component';\nimport { CaixaEntradaDetalheComponent } from './caixa-entrada-detalhe/caixa-entrada-detalhe.component';\nimport { CaixaEntradaService } from './../../_services/caixa-entrada.service';\nimport { HttpClientModule } from '@angular/common/http';\n\n\n@NgModule({\n imports: [\n FormsModule,\n CommonModule,\n HttpClientModule,\n CaixaEntradaRoutingModule,\n ModalModule.forRoot(),\n SharedModule\n ],\n exports: [],\n declarations: [\n CaixaEntradaComponent,\n CaixaEntradaDetalheComponent\n ],\n providers: [\n CaixaEntradaService,\n ],\n})\nexport class CaixaEntradaModule { }\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { CaixaEntradaComponent } from './caixa-entrada.component';\nimport { CaixaEntradaDetalheComponent } from './caixa-entrada-detalhe/caixa-entrada-detalhe.component';\nimport { AuthGuard } from 'app/_guards/auth.guard';\n\nconst caixaEntradasRoutes: Routes = [\n { path: '', component: CaixaEntradaComponent, canActivate: [AuthGuard] },\n // { path: 'detalhe', component: CaixaEntradaDetalheComponent, canActivate: [AuthGuard] },\n // { path: 'detalhe/:id', component: CaixaEntradaDetalheComponent, canActivate: [AuthGuard] }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(caixaEntradasRoutes)],\n exports: [RouterModule]\n})\nexport class CaixaEntradaRoutingModule {}","import { Component, Input, Output, EventEmitter, OnInit, ViewChild, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SharedService } from \"app/_services/shared.service\";\nimport { MessageService } from \"../../_services/message.service\";\nimport { BaseComponent } from \"app/shared/base.component\";\nimport { MessageComponent } from \"../../shared/message/message.component\";\nimport { Operacao } from \"app/_enums/operacao\";\nimport { LogFrontFuncionalidade } from \"app/_enums/log-front-funcionalidade\";\nimport * as moment from \"moment-timezone\";\nimport { UsuarioPesquisaRequest } from \"app/_models/usuario-pesquisa-request\";\nimport { DataService } from \"../../_services/data.service\";\nimport { IcmsService } from \"app/_services/icms.service\";\n// Models\nimport { UF } from \"app/_models/uf\";\nimport { Icms } from \"app/_models/icms\";\nimport { ValidationError } from \"../../_models/validation-error\";\nimport { debug, Console } from \"console\";\nimport { Subscription } from 'rxjs';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { AppService } from 'app/_services/app.service';\nimport swal from 'sweetalert2';\nimport { Parser } from '@angular/compiler';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\n\n\nimport { GenericOrderbyService } from 'app/_services/generic-orderby.service';\nimport { PaginacaoComponent } from 'app/shared/paginacao/paginacao.component';\nimport { FilterComboConfiguration } from \"app/_models/filterComboConfiguration\";\n\nimport { Injectable } from '@angular/core';\n\nimport { CustomerInfo } from '../../_models/customer-info';\nimport { CustomerInfoService } from 'app/_services/customer-info.service';\n\n@Component({\n selector: \"app-customer-info-import\",\n templateUrl: \"./customer-info-import.component.html\",\n styleUrls: [\"./customer-info-import.component.scss\"],\n})\nexport class CustomerInfoImportComponent extends BaseComponent implements OnInit {\n @ViewChild(\"modalResumo\", { static: true }) modalResumo;\n @ViewChild(MessageComponent, {static: true}) mensagem: MessageComponent;\n @ViewChild(PaginacaoComponent, {static: true}) paginacao: PaginacaoComponent;\n\n loading: boolean = false;\n private pageSize: number = 50;\n\n name = 'This is XLSX TO JSON CONVERTER';\n willDownload = false;\n customerInfo: CustomerInfo;\n registros: CustomerInfo[] = new Array();\n customerInfoLista: CustomerInfo[] = new Array();\n novaCarga: boolean = false;\n\n\n\n constructor(\n private _msgService: MessageService,\n private _customerInfoService: CustomerInfoService\n ) {\n super();\n }\n\n ngOnInit() {\n this.novaCarga = false;\nthis.findAll();\n }\n\n public changeListener(files: FileList){\n\n this.novaCarga = true;\n\n console.log(files);\n if(files && files.length > 0) {\n let file : File = files.item(0);\n let reader: FileReader = new FileReader();\n reader.readAsText(file);\n reader.onload = (e) => {\n let csv: string = reader.result as string;\n let allTextLines = csv.split(/\\r?\\n|\\r/);\n let headers = allTextLines[0].split('|');\n let lines = [];\n\n for ( let i = 0; i < allTextLines.length; i++) {\n\n if(i>2){\n\n let customerInfo = new CustomerInfo();\n let data = allTextLines[i].split('|');\n if (data.length === headers.length) {\n //customerInfo.id = i+1;\n //customerInfo.corporationId = data[0].trim(); // Grupo Econmico.\n customerInfo.nomeCli = data[2].trim(); // Cliente\n customerInfo.CNPJ = data[3].trim(); // CPF e CNPJ\n //customerInfo.TipoPrazo = data[4].trim(); // Tipo Prazo\n\n if(customerInfo.nomeCli.length<1)\n {\n //customerInfo.Status = 'ERRO na linha ' + i.toString() + ': Razão social não informada.';\n }\n\n\n customerInfo.CNPJ = customerInfo.CNPJ.replace('.','').replace('.','').replace('/','').replace('-', '');\n\n if(customerInfo.CNPJ.length != 11)\n {\n if(customerInfo.CNPJ.length != 14)\n {\n //customerInfo.Status = 'ERRO na linha ' + i.toString() + ': Cnpj diferente de 14 caracteres.';\n }\n }\n\n\n // if(customerInfo.UF.length != 2)\n // {\n // customerInfo.Status = 'ERRO na linha ' + i.toString() + ': UF incorreta.';\n // }\n\n this.registros.push(customerInfo);\n\n let tarr = [];\n for ( let j = 0; j < headers.length; j++) {\n tarr.push(data[j]);\n }\n\n console.log(tarr);\n lines.push(tarr);\n }\n else\n {\n //customerInfo.Status = 'ERRO na linha ' + i.toString() + ': Esperado 8 colunas.';\n this.registros.push(customerInfo);\n }\n }\n }\n return lines;\n }, // this.extractData,\n err => this.handleError(err)\n }\n }\n\n\n private handleError (error: any) {\n let errMsg = (error.message) ? error.message :\n error.status ? `${error.status} - ${error.statusText}` : 'Server error';\n console.error(errMsg);\n return errMsg;\n }\n\n\n onSave() {\n const onSaveButton = document.getElementById('onSaveButtonBTN') as HTMLButtonElement;\n onSaveButton.disabled = true;\n\n this.loading = true;\n this._customerInfoService.salvarCustomerInfo(this.registros)\n .subscribe(result => {\n this.loading = false;\n if (result.IsValid) {\n this._msgService.addMessage('Customer Info', result.Message, \"success\");\n this.novaCarga = false;\n this.findAll();\n }\n else{\n var msgErr: string[] = [];\n result.Erros.forEach(element => msgErr.push(element.Message));\n this._msgService.addMessageArray(\"Navios\", msgErr, \"error\", LogFrontFuncionalidade.CustomerInfo, Operacao.Inclusao, this.registros);\n }\n\n onSaveButton.disabled = false;\n });\n\n\n }\n\n\n findAll() {\n this.loading = true;\n\n this._customerInfoService.findAll().subscribe(\n (lista) => {\n this.customerInfoLista = lista;\n this.paginacao.setAllData(this.customerInfoLista);\n this.paginacao.setPage(1);\n },\n (err) => {}\n );\n\n this.loading = false;\n\n }\n\n\n // onFileChange(ev) {\n // let workBook = null;\n // let jsonData = null;\n // const reader = new FileReader();\n // const file = ev.target.files[0];\n // reader.onload = (event) => {\n // const data = reader.result;\n // workBook = XLSX.read(data, { type: 'binary' });\n // jsonData = workBook.SheetNames.reduce((initial, name) => {\n // const sheet = workBook.Sheets[name];\n // initial[name] = XLSX.utils.sheet_to_json(sheet);\n // return initial;\n // }, {});\n\n // const obj = JSON.parse(jsonData);\n\n // obj.array.forEach(element => {\n\n // console.log(element.GrupoEconomico);\n // });\n\n\n // const dataString = JSON.stringify(jsonData);\n // document.getElementById('output').innerHTML = dataString.slice(0, 300).concat(\"...\");\n // this.setDownload(dataString);\n // }\n // reader.readAsBinaryString(file);\n // }\n\n\n setDownload(data) {\n this.willDownload = true;\n setTimeout(() => {\n const el = document.querySelector(\"#download\");\n el.setAttribute(\"href\", `data:text/json;charset=utf-8,${encodeURIComponent(data)}`);\n el.setAttribute(\"download\", 'xlsxtojson.json');\n }, 1000)\n }\n\n // onCustomerSelect()\n // {\n // this._customerInfoService.getCustomerInfo(\"02003329000131\")\n // .subscribe(result => {\n // this.customerInfo = result;\n // // if (result.IsValid) {\n // // this._msgService.addMessage('Customer Info', result.Message, \"success\");\n // // //this.ObterNavios();\n // // }\n // // else{\n // // var msgErr: string[] = [];\n // // result.Erros.forEach(element => msgErr.push(element.Message));\n // // this._msgService.addMessageArray(\"Navios\", msgErr, \"error\", LogFrontFuncionalidade.CustomerInfo, Operacao.Inclusao, this.registros);\n // // }\n // });\n // }\n\n}\n","\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule, CurrencyPipe } from '@angular/common';\n\nimport { ModalModule } from 'ngx-bootstrap/modal';\nimport { ConfirmModule } from '../../shared/confirm/confirm.module';\nimport { SharedModule } from '../../shared/shared.module';\n\nimport { CustomerInfoImportModuleRoutingModule } from './customer-info-import.routing.module';\nimport { CustomerInfoImportComponent } from './customer-info-import.component';\nimport { UsuarioService } from '../../_services/usuario.service';\n\nimport { FuncionalidadeService } from '../../_services/funcionalidade.service';\nimport { MascaraModule } from \"app/shared/mascara/mascara.module\";\nimport { PerfilService } from 'app/_services/perfil.service';\nimport { DatePickerModule } from 'app/shared/ng2-datepicker/ng2-datepicker.module';\nimport { HttpClientModule } from '@angular/common/http';\nimport { CurrencyMaskModule } from 'ng2-currency-mask';\n\nimport { RouterModule } from '@angular/router';\n\n\n\n\n@NgModule({\n imports: [\n FormsModule,\n CommonModule,\n HttpClientModule,\n CustomerInfoImportModuleRoutingModule,\n ModalModule.forRoot(),\n ConfirmModule,\n SharedModule,\n MascaraModule,\n DatePickerModule,\n CurrencyMaskModule\n ],\n exports: [],\n declarations: [\n CustomerInfoImportComponent\n ],\n providers: [\n PerfilService,\n UsuarioService,\n FuncionalidadeService\n ]\n})\nexport class CustomerInfoImportModule { }\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\n\nimport { CustomerInfoImportComponent } from './customer-info-import.component';\nimport { AuthGuard } from 'app/_guards/auth.guard';\n\nconst usuariosRoutes: Routes = [\n { path: '', component: CustomerInfoImportComponent, canActivate: [AuthGuard] },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(usuariosRoutes)],\n exports: [RouterModule]\n})\nexport class CustomerInfoImportModuleRoutingModule {}\n","import { Component, Input, Output, EventEmitter, OnInit, ViewChild, NgModule } from '@angular/core';\n\n\nimport { SharedService } from \"app/_services/shared.service\";\nimport { MessageService } from \"./../../_services/message.service\";\nimport { BaseComponent } from \"app/shared/base.component\";\nimport { MessageComponent } from \"./../../shared/message/message.component\";\nimport { Operacao } from \"app/_enums/operacao\";\nimport { LogFrontFuncionalidade } from \"app/_enums/log-front-funcionalidade\";\nimport * as moment from \"moment-timezone\";\nimport { UsuarioPesquisaRequest } from \"app/_models/usuario-pesquisa-request\";\nimport { DataService } from \"./../../_services/data.service\";\nimport { IcmsService } from \"app/_services/icms.service\";\n// Models\nimport { UF } from \"app/_models/uf\";\nimport { Icms } from \"app/_models/icms\";\nimport { ValidationError } from \"../../_models/validation-error\";\nimport { debug, Console } from \"console\";\nimport { Subscription } from 'rxjs';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { AppService } from 'app/_services/app.service';\nimport swal from 'sweetalert2';\nimport { Parser } from '@angular/compiler';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\n\n\nimport { GenericOrderbyService } from 'app/_services/generic-orderby.service';\nimport { PaginacaoComponent } from 'app/shared/paginacao/paginacao.component';\nimport { FilterComboConfiguration } from \"app/_models/filterComboConfiguration\";\nimport { BaseService } from 'app/_services/base.service';\nimport { UsuarioService } from 'app/_services/usuario.service';\nimport { NgForm } from '@angular/forms';\n\n\n\n@Component({\n selector: \"app-icms\",\n templateUrl: \"./icms.component.html\",\n styleUrls: [\"./icms.component.scss\"],\n})\nexport class IcmsComponent extends BaseComponent implements OnInit {\n @ViewChild(\"modalResumo\", { static: true }) modalResumo;\n @ViewChild(MessageComponent, {static: true}) mensagem: MessageComponent;\n @ViewChild(PaginacaoComponent, {static: true}) paginacao: PaginacaoComponent;\n\n request: UsuarioPesquisaRequest = new UsuarioPesquisaRequest();\n icmsList: Icms[];\n loading: boolean = false;\n loadingPerfis: boolean = false;\n ufs: UF[] = new Array();\n\n departureUf: string = \"\";\n destinationUf: string = \"\";\n\n pageSize: number = 50;\n downloading: boolean = false;\n public loadingSporadicTaxes: boolean = false;\n icmsItem: Icms;\n\n percCif: number;\n percCifNonTaxPayer: number;\n percFob: number;\n percFobNonTaxPayer: number = 0;\n isNovoReg: boolean = true;\n isEditing: boolean = false;\n isRequired: boolean = false;\n @ViewChild('icmsFrm') icmsFrm: NgForm;\n\n constructor(\n private baseService: BaseService,\n private _sharedService: SharedService,\n private _msgService: MessageService,\n private _dataService: DataService,\n private _genericOrderbyService: GenericOrderbyService,\n private _icmsService: IcmsService,\n private _appService: AppService\n ) {\n super();\n\n this._msgService.emitirMensagem.subscribe(\n msg => {\n this.mensagem.mostrarMensagem(msg.tipo, msg.mensagem);\n }\n );\n }\n\n ngOnInit() {\n this.loadingPerfis = true;\n this.isEditing= false;\n this.ObterDataFields();\n\n let msg = this._msgService.getMessageRedirect();\n if (msg.show)\n this._msgService.addMessage(msg.titulo, msg.mensagem, msg.type, LogFrontFuncionalidade.AneisERotas, Operacao.Alteracao);\n }\n\n OnChangeDepartureUfCmb(value: any) {\n this.departureUf = value.target.value;\n }\n\n OnChangeDestinationUfCmb(value: any) {\n this.destinationUf = value.target.value;\n }\n\n setPageSize(value: number) {\n this.pageSize = value;\n this.paginacao.setAllData(this.icmsList);\n this.paginacao.setPageSize(this.pageSize);\n this.paginacao.setPage(1);\n }\n\n\n atualizarValores() {\n\n this.isEditing = false;\n\n for (let icmsItem of this.icmsList) {\n icmsItem.percCif = this.percCif,\n icmsItem.percCifNonTaxPayer = this.percCifNonTaxPayer,\n icmsItem.percFob = this.percFob,\n icmsItem.percFobNonTaxPayer = this.percFobNonTaxPayer,\n icmsItem.isEnabled = true;\n icmsItem.updatedBy = this._appService.UsuarioLogado.Nome.substring(0,15);\n }\n\n }\n\n cancelaEdicao()\n {\n this.ObterListaIcms();\n this.isEditing = true;\n }\n\n\n IcmsSalvar() {\n\n this.modalResumo.hide();\n\n for (let icmsItem of this.icmsList) {\n this._icmsService.atualizar(icmsItem).subscribe((result) => {\n\n this.IcmsPesquisar();\n this.isEditing=false;\n\n console.log(\"sucesso\");\n });\n }\n\n this.percCif = 0;\n this.percCifNonTaxPayer = 0;\n this.percFob = 0;\n this.percFobNonTaxPayer = 0;\n this.isEditing = false;\n\n }\n\n public IcmsPesquisar() {\n this.isEditing = true;\n this.ObterListaIcms();\n }\n\n private ObterListaIcms() {\n this.loading = true;\n\n if (this.departureUf == \"\" && this.destinationUf == \"\") {\n this._icmsService.obterListaIcms().subscribe(\n (lista) => {\n this.icmsList = lista;\n this.paginacao.setAllData(this.icmsList);\n this.paginacao.setPage(1);\n },\n (err) => {}\n );\n } else {\n this.loading = true;\n this._icmsService\n .obterListaIcmsByLocalication(this.departureUf, this.destinationUf)\n .subscribe(\n (lista) => {\n this.icmsList = lista;\n this.paginacao.setAllData(this.icmsList);\n this.paginacao.setPage(1);\n },\n (err) => {}\n );\n }\n\n this.loading = false;\n\n }\n\n\n\n ObterDataFields() {\n this._dataService.getUFs().subscribe((lista) => {\n this.ufs = lista;\n });\n }\n\n exportarRelatorioCSV() {\n this.downloading = true;\n\n const titulos: any[] = [\n \"CODIGO\",\n \"UF ORIGEM\",\n \"UF DESTINO\",\n \"% CIF\",\n \"% CIF - NÃO CONTRIBUINTE\",\n \"% FOB\",\n \"% FOB - NÃO CONTRIBUINTE\",\n \"CRIADO POR\",\n \"CRIADO EM\",\n \"ATUALIZADO POR\",\n \"ATUALIZADO EM\"];\n\n\n const data: any[] = [];\n\n this.icmsList.forEach(x => {\n data.push([\n x.codeIcms,\n x.departureUf,\n x.destinationUf,\n x.percCif,\n x.percCifNonTaxPayer,\n x.percFob,\n x.percFobNonTaxPayer,\n x.createdBy,\n x.createdOn,\n x.updatedBy,\n x.updatedOn\n ]);\n });\n\n this.downloading = false;\n this.baseService.DownloadXLSX(data, titulos, 'ICMS.xlsx');\n\n }\n}\n","\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule, CurrencyPipe } from '@angular/common';\n\nimport { ModalModule } from 'ngx-bootstrap/modal';\nimport { ConfirmModule } from './../../shared/confirm/confirm.module';\nimport { SharedModule } from './../../shared/shared.module';\n\nimport { IcmsModuleRoutingModule } from './icms.routing.module';\nimport { IcmsComponent } from './icms.component';\nimport { UsuarioService } from './../../_services/usuario.service';\n\nimport { FuncionalidadeService } from './../../_services/funcionalidade.service';\nimport { MascaraModule } from \"app/shared/mascara/mascara.module\";\nimport { PerfilService } from 'app/_services/perfil.service';\nimport { DatePickerModule } from 'app/shared/ng2-datepicker/ng2-datepicker.module';\nimport { HttpClientModule } from '@angular/common/http';\nimport { CurrencyMaskModule } from 'ng2-currency-mask';\n\nimport { RouterModule } from '@angular/router';\n\n\n\n\n@NgModule({\n imports: [\n FormsModule,\n CommonModule,\n HttpClientModule,\n IcmsModuleRoutingModule,\n ModalModule.forRoot(),\n ConfirmModule,\n SharedModule,\n MascaraModule,\n DatePickerModule,\n CurrencyMaskModule\n ],\n exports: [],\n declarations: [\n IcmsComponent\n ],\n providers: [\n PerfilService,\n UsuarioService,\n FuncionalidadeService\n ]\n})\nexport class IcmsModule { }\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { IcmsComponent } from './icms.component';\nimport { AuthGuard } from 'app/_guards/auth.guard';\n\nconst usuariosRoutes: Routes = [\n { path: '', component: IcmsComponent, canActivate: [AuthGuard] },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(usuariosRoutes)],\n exports: [RouterModule]\n})\nexport class IcmsModuleRoutingModule {}\n","import { Component, OnInit, ViewChild } from '@angular/core';\n\nimport { Log } from './../../_models/log';\nimport { LogService } from './../../_services/log.service';\nimport { PaginacaoComponent } from './../../shared/paginacao/paginacao.component';\nimport { NivelLog } from 'app/_enums/nivel-log';\n\n@Component({\n selector: 'app-log',\n templateUrl: './log.component.html',\n styleUrls: ['./log.component.scss']\n})\nexport class LogComponent implements OnInit {\n\n @ViewChild(PaginacaoComponent, { static: true }) paginacao: PaginacaoComponent;\n\n constructor(private _logService: LogService) { }\n\n lista: Log[];\n loading: boolean = false;\n filtro: string = \"\";\n\n ngOnInit() {\n this.ObterLista();\n }\n\n ObterLista() {\n this.loading = true;\n this._logService.getLogs(this.filtro)\n .subscribe(lista => {\n this.lista = lista;\n if (this.lista.length == undefined) {\n let newList: Log[] = [];\n let item = this.lista;\n newList.push(item);\n this.lista = newList;\n }\n this.paginacao.setAllData(this.lista);\n this.paginacao.setPage(1);\n this.loading = false;\n });\n }\n\n getDescricaoNivel(nivel: NivelLog): string {\n return this._logService.getDescricaoNivel(nivel);\n }\n}\n","\nimport { FormsModule } from '@angular/forms';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { LogService } from './../../_services/log.service';\nimport { LogComponent } from './log.component';\nimport { SharedModule } from './../../shared/shared.module';\nimport { LogRoutingModule } from './log.routing.module';\nimport { HttpClientModule } from '@angular/common/http';\n\n@NgModule({\n imports: [\n FormsModule,\n CommonModule,\n HttpClientModule,\n SharedModule,\n LogRoutingModule\n ],\n exports: [],\n declarations: [\n LogComponent],\n providers: [ LogService],\n})\nexport class LogModule { }\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { AuthGuard } from 'app/_guards/auth.guard';\nimport { LogComponent } from './log.component';\n\nconst logRoutes: Routes = [\n { path: '', component: LogComponent, canActivate: [AuthGuard] }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(logRoutes)],\n exports: [RouterModule]\n})\nexport class LogRoutingModule {}","import { BaseComponent } from \"app/shared/base.component\";\n\nexport class BaseParametrosHoras extends BaseComponent {\n public descricoes: { [id: string]: string; } = {\n \"QtdHrEntrega\": \"ENTREGA PORTA - Permitir agendamento antes do ETA, a partir de\",\n \"QtdHrAgendEntrega\": \"ENTREGA PORTA - Permitir Programação após ETS, a partir de\",\n \"QtdHrAgendColetaPA\": \"COLETA PORTA - Programar para antes do deadline, com máximo de\",\n \"QtdHrAgendColetaPO\": \"BOOKING PORTO - Solicitar com antecedência mínima de\",\n \"QtdHrMinimasAgendColeta\": \"COLETA PORTA - Solicitar com antecedência mínima de\",\n \"QtdHrMinimasAgendEntrega\": \"ENTREGA PORTA - Solicitar com antecedência mínima de\"\n };\n}\n\n/**\n \"QtdHrEntrega\": \"Disponível para Agendamento da Entrega (horas antes da previsão de chegada)\",\n \"QtdHrAgendEntrega\": \"Horas para entrega da carga após ETA\",\n \"QtdHrAgendColetaPA\": \"Disponível para Agendamento de Coleta (horas antes do deadline de entrega - Porta)\",\n \"QtdHrAgendColetaPO\": \"Disponível para Agendamento de Coleta (horas antes do deadline de entrega - Porto)\",\n \"QtdHrMinimasAgendColeta\": \"Quantidade mínima para agendamento de coleta\",\n \"QtdHrMinimasAgendEntrega\": \"Quantidade mínima para agendamento de entrega\"\n * \n\"Na tela Parametrizações (Definições de dias), que estamos ajustando para horas, pedimos ajustar também as labels:\nDisponível para agendamento de coleta (dias antes do deadline de entrega - Porta)\nSubstituir label por: Programar para antes do dead line, com máximo de\n \nQuantidade mínima para agendamento de coleta\nSubstituir label por: Solicitar com antecedência mínima de\n \nDisponível para agendamento de Entrega (dias antes do da previsão de chegada)\nSubstituir label por: Permitir agendamento antes do ETA, a partir de\n \nDias para entrega da carga após ETA\nSubstituir label por: Permitir Programação após ETS, a partir de\n \nQuantidade mínima para agendamento de entrega\nSubstituir label por: Solicitar com antecedência mínima de\n \nDisponível para agendamento de coleta (dias antes do deadline de entrega - PortO)\nSubstituir label por: Solicitar com antecedência mínima de\"\t\t\t\t\t\t\n */","import { Component, OnInit, ViewChild, ElementRef } from '@angular/core';\nimport swal from 'sweetalert2';\n\nimport { Porto } from 'app/_models/porto';\nimport { ParametroPorto } from 'app/_models/parametro-porto';\nimport { BaseParametrosHoras } from 'app/admin/parametro/horas/base.parametros.horas';\n\nimport { MessageComponent } from './../../../shared/message/message.component';\n\nimport { LogService } from './../../../_services/log.service';\nimport { MessageService } from './../../../_services/message.service';\nimport { ParametroService } from './../../../_services/parametro.service';\n\nimport { Operacao } from 'app/_enums/operacao';\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\n\ndeclare var ocultarControleMenu: any;\ndeclare var ocultarSwalOverlay: any;\ndeclare var removeSwal: any;\n\n@Component({\n selector: 'app-horas',\n templateUrl: './horas.component.html',\n styleUrls: ['./horas.component.scss']\n})\nexport class HorasComponent extends BaseParametrosHoras implements OnInit {\n\n edicaoExcecoes: boolean;\n portos: Porto[];\n parametrosPadrao: ParametroPorto;\n parametrosExcecoes: ParametroPorto[];\n parametroExcecaoModal: ParametroPorto;\n loading: boolean = false;\n mensagensDeErro: string[] = [];\n mensagemErroModal: string = '';\n\n @ViewChild('btnCloseModal', {static: true}) private btnCloseModal: ElementRef;\n @ViewChild('btnShowModal', {static: true}) private btnShowModal: ElementRef;\n @ViewChild(MessageComponent, {static: true}) mensagem: MessageComponent;\n\n constructor(private _msgService: MessageService,\n private _logService: LogService,\n private _parametroService: ParametroService) {\n\n super();\n \n this._msgService.emitirMensagem.subscribe(\n msg => {\n if (msg.mensagem instanceof Array)\n this.mensagem.mostrarMensagemArray(msg.tipo, msg.mensagem);\n else\n this.mensagem.mostrarMensagem(msg.tipo, msg.mensagem);\n }\n );\n }\n\n ngOnInit() {\n this.parametroExcecaoModal = new ParametroPorto();\n this.ObterParametros();\n }\n\n ObterParametros() {\n this.loading = true;\n this._parametroService.carregarPagina()\n .subscribe(pagina => {\n this.parametrosPadrao = pagina.ParametroPortoPadrao;\n this.parametrosExcecoes = pagina.ParametroPortoExcecoes;\n this.portos = pagina.Portos;\n this.loading = false;\n });\n }\n\n clickEditarParametro(parametro: ParametroPorto){\n this.edicaoExcecoes = true;\n var p = new ParametroPorto();\n p.NomePorto = parametro.NomePorto;\n p.PortoID = parametro.PortoID;\n p.QtdHrAgendColetaPA = parametro.QtdHrAgendColetaPA;\n p.QtdHrAgendColetaPO = parametro.QtdHrAgendColetaPO;\n p.QtdHrAgendEntrega = parametro.QtdHrAgendEntrega;\n p.QtdHrEntrega = parametro.QtdHrEntrega;\n p.QtdHrMinimasAgendColeta = parametro.QtdHrMinimasAgendColeta;\n p.QtdHrMinimasAgendEntrega = parametro.QtdHrMinimasAgendEntrega;\n this.parametroExcecaoModal = p;\n this.btnShowModal.nativeElement.click();\n }\n\n clickExcluirParametro(parametro: ParametroPorto){\n removeSwal();\n swal({\n title: 'Confirmação',\n text: 'Deseja excluir os parâmetros do porto \\'' + parametro.NomePorto + '\\'?.',\n type: 'question',\n showCancelButton: true,\n confirmButtonText: 'Sim',\n cancelButtonText: 'Não'\n }).then(success => {\n\n this.loading = true;\n this._parametroService.apagarParametrosPorto(parametro.PortoID)\n .subscribe(result => {\n this.loading = false;\n\n if (result.IsValid) {\n this._msgService.addMessage('Definição de Horas', result.Message, \"success\");\n this.ObterParametros();\n } else {\n result.Erros.forEach(element => this.mensagensDeErro.push(element.Message)); \n this._msgService.addMessageArray(\"Definição de Horas\", this.mensagensDeErro, \"error\", LogFrontFuncionalidade.Parametros, Operacao.Exclusao, parametro); \n } \n });\n ocultarControleMenu();\n ocultarSwalOverlay();\n\n }, dismiss => {\n removeSwal();\n // console.log(dismiss);\n }); \n }\n\n Salvar() {\n if (this.ValidaCampos(this.parametrosPadrao)) {\n this.loading = true;\n this._parametroService.atualizarParametrosPorto(this.parametrosPadrao)\n .subscribe(result => {\n this.loading = false;\n\n if (result.IsValid) {\n this._msgService.addMessage('Definição de Horas', result.Message, \"success\");\n this.ObterParametros();\n } else {\n result.Erros.forEach(element => this.mensagensDeErro.push(element.Message)); \n this._msgService.addMessageArray(\"Definição de Horas\", this.mensagensDeErro, \"error\", LogFrontFuncionalidade.Parametros, Operacao.Alteracao, this.parametrosPadrao); \n } \n });\n }\n if (this.mensagensDeErro.length > 0) {\n this._msgService.addMessageArray(\"Definição de Horas\", this.mensagensDeErro, \"error\", LogFrontFuncionalidade.Parametros, Operacao.Alteracao, this.parametrosPadrao); \n }\n }\n\n SalvarExcecao(){\n this.mensagemErroModal = '';\n if (!this.edicaoExcecoes) {\n var porto: Porto = this.portos.find(p => p.Codigo == this.parametroExcecaoModal.PortoID);\n if (!porto) {\n this.mensagemErroModal = 'Informe o Porto para qual deseja cadastrar a Exceção';\n this._logService.logFront(this.parametroExcecaoModal, LogFrontFuncionalidade.Parametros, this.mensagemErroModal, Operacao.Alteracao, \"Horas\");\n return;\n }\n else\n this.parametroExcecaoModal.NomePorto = porto.Descricao;\n }\n\n if (this.ValidaCampos(this.parametroExcecaoModal, true)) {\n this.loading = true;\n var servico = (this.edicaoExcecoes) ? \n this._parametroService.atualizarParametrosPorto.bind(this._parametroService) : \n this._parametroService.salvarParametrosPorto.bind(this._parametroService);\n servico(this.parametroExcecaoModal)\n .subscribe(result => {\n this.loading = false;\n\n if (result.IsValid) {\n this.edicaoExcecoes = false;\n this.btnCloseModal.nativeElement.click();\n this.parametroExcecaoModal = new ParametroPorto();\n this._msgService.addMessage('Definição de Horas', result.Message, \"success\");\n this.ObterParametros();\n } else {\n result.Erros.forEach(element => this.mensagensDeErro.push(element.Message)); \n this.mensagemErroModal = this.mensagensDeErro.join('; '); \n this._logService.logFront(this.parametroExcecaoModal, LogFrontFuncionalidade.Parametros, this.mensagemErroModal, Operacao.Alteracao, \"Horas\");\n } \n });\n }\n if (this.mensagensDeErro.length > 0) {\n this.mensagemErroModal = this.mensagensDeErro.join('; ');\n this._logService.logFront(this.parametroExcecaoModal, LogFrontFuncionalidade.Parametros, this.mensagemErroModal, Operacao.Alteracao, \"Horas\");\n }\n }\n\n CancelarExcecao(){\n this.mensagemErroModal = '';\n this.parametroExcecaoModal = new ParametroPorto();\n this.edicaoExcecoes = false;\n }\n\n ValidaCampos(parametro: ParametroPorto, permiteZero: boolean = false) {\n this.mensagensDeErro = [];\n this.ValidaParametro(parametro.QtdHrEntrega, \"QtdHrEntrega\", permiteZero);\n this.ValidaParametro(parametro.QtdHrAgendEntrega, \"QtdHrAgendEntrega\", permiteZero);\n this.ValidaParametro(parametro.QtdHrAgendColetaPA, \"QtdHrAgendColetaPA\", permiteZero);\n this.ValidaParametro(parametro.QtdHrAgendColetaPO, \"QtdHrAgendColetaPO\", permiteZero);\n this.ValidaParametro(parametro.QtdHrMinimasAgendColeta, \"QtdHrMinimasAgendColeta\", permiteZero);\n this.ValidaParametro(parametro.QtdHrMinimasAgendEntrega, \"QtdHrMinimasAgendEntrega\", permiteZero);\n \n let soma = this.convertNullToNumber(parametro.QtdHrEntrega) + \n this.convertNullToNumber(parametro.QtdHrAgendEntrega) + \n this.convertNullToNumber(parametro.QtdHrAgendColetaPA) +\n this.convertNullToNumber(parametro.QtdHrAgendColetaPO) +\n this.convertNullToNumber(parametro.QtdHrMinimasAgendColeta) +\n this.convertNullToNumber(parametro.QtdHrMinimasAgendEntrega);\n\n if (permiteZero && (soma == 0))\n this.mensagensDeErro.push(\"Informe ao menos o valor diferente de zero para um parâmetro.\");\n\n return this.mensagensDeErro.length == 0;\n }\n\n private convertNullToNumber(valor): number {\n return (!valor) ? 0 : valor;\n }\n\n private ValidaParametro(parametro: number, chaveDescricao: string, permiteZero: boolean = false){\n if (parametro == undefined) {\n if (!permiteZero)\n this.MensagemErroObrigatório(chaveDescricao);\n else\n parametro = 0;\n }\n\n if (parametro <= 0 && !permiteZero)\n this.MensagemErroInferior0(chaveDescricao);\n if (parametro > 999)\n this.MensagemErroSuperior999(chaveDescricao);\n }\n\n private MensagemErroInferior0(chaveDescricao: string) {\n this.mensagensDeErro.push(\"Campo '\" + this.descricoes[chaveDescricao] + \"': a quantidade de horas deve ser superior a 0.\");\n }\n\n private MensagemErroSuperior999(chaveDescricao: string) {\n this.mensagensDeErro.push(\"Campo '\" + this.descricoes[chaveDescricao] + \"': a quantidade de horas deve ser inferior a 1000.\");\n }\n\n private MensagemErroObrigatório(chaveDescricao: string) {\n this.mensagensDeErro.push(\"Campo '\" + this.descricoes[chaveDescricao] + \"': informe a quantidade de horas.\");\n }\n}\n","import { Component, OnInit, Input } from '@angular/core';\nimport { ParametroPorto } from 'app/_models/parametro-porto';\nimport { BaseParametrosHoras } from 'app/admin/parametro/horas/base.parametros.horas';\n\n@Component({\n selector: 'parametro-porto-edit',\n templateUrl: './parametro-porto-edit.component.html',\n styleUrls: ['./parametro-porto-edit.component.scss']\n})\nexport class ParametroPortoEditComponent extends BaseParametrosHoras implements OnInit {\n\n constructor() {\n super();\n }\n @Input() parametro: ParametroPorto;\n \n ngOnInit() {\n }\n\n}\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { ParametroPorto } from 'app/_models/parametro-porto';\nimport { BaseParametrosHoras } from 'app/admin/parametro/horas/base.parametros.horas';\n\n@Component({\n selector: 'parametro-porto-view',\n templateUrl: './parametro-porto-view.component.html',\n styleUrls: ['./parametro-porto-view.component.scss']\n})\nexport class ParametroPortoViewComponent extends BaseParametrosHoras implements OnInit {\n\n @Input() parametro: ParametroPorto;\n @Output() clickEditar: EventEmitter = new EventEmitter();\n @Output() clickExcluir: EventEmitter = new EventEmitter();\n\n constructor() { \n super();\n }\n\n ngOnInit() {\n }\n\n clickBotaoEditar(){\n this.clickEditar.emit(this.parametro);\n }\n\n clickBotaoExcluir(){\n this.clickExcluir.emit(this.parametro);\n }\n\n}\n","import { Component, OnInit, ViewChild } from '@angular/core';\n\nimport { Anel } from '../../../_models/anel';\nimport { Navio } from './../../../_models/navio';\nimport { FilterComboConfiguration } from 'app/_models/filterComboConfiguration';\n\nimport { MessageService } from './../../../_services/message.service';\nimport { AnelRotaService } from '../../../_services/anel-rota.service';\nimport { ParametroService } from './../../../_services/parametro.service';\n\nimport { BaseComponent } from './../../../shared/base.component';\nimport { MessageComponent } from './../../../shared/message/message.component';\n\nimport { Operacao } from 'app/_enums/operacao';\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\n\n@Component({\n selector: 'app-navios',\n templateUrl: './navios.component.html',\n styleUrls: ['./navios.component.scss']\n})\nexport class NaviosComponent extends BaseComponent implements OnInit {\n \n public aneis: Anel[];\n navios: Navio[];\n loading: boolean = false;\n loadingAneis: boolean = false;\n\n comboAneis: FilterComboConfiguration;\n\n @ViewChild(MessageComponent, {static: true}) mensagem: MessageComponent;\n \n constructor(private _msgService: MessageService,\n private _anelRotaService: AnelRotaService,\n private _parametroService: ParametroService) { \n super();\n\n this.comboAneis = new FilterComboConfiguration('Rota(s)...');\n this.comboAneis.settings = {\n checkedStyle: 'glyphicon',\n selectionLimit: 1, //REMOVER QUANDO A ATIVIDADE ESTIVER LIBERADA, E DESCOMENTAR OS 'true' ABAIXO\n showCheckAll: false, //true,\n showUncheckAll: false, //true,\n dynamicTitleMaxItems: 2,\n enableSearch: false\n };\n\n this._msgService.emitirMensagem.subscribe(\n msg => {\n this.mensagem.mostrarMensagem(msg.tipo, msg.mensagem);\n }\n );\n\n }\n\n ngOnInit() {\n this.ObterNavios();\n this.ObterAneis();\n }\n\n ObterNavios() {\n this._msgService.clearMessage(); \n this.loading = true;\n this._parametroService.getNaviosAdmin()\n .subscribe(n => {\n //Converte o ID do anel para Array para o Combo Multiselect funcionar\n if (n != null){\n n.forEach(navio => {\n navio.AneisID = [];\n if (navio.Aneis != undefined){\n navio.Aneis.forEach(anel => {\n navio.AneisID.push(anel.AnelID);\n });\n }\n });\n }\n this.navios = n;\n this.loading = false;\n });\n }\n\n public ObterAneis() {\n this.loadingAneis = true;\n this.aneis = [];\n this._anelRotaService.getAneis()\n .subscribe(p => {\n this.comboAneis.options = [];\n this.aneis = p;\n if (this.aneis != null){\n this.aneis.forEach(anel => {\n this.comboAneis.options.push({ id: anel.AnelID, name: anel.Nome });\n });\n }\n this.loadingAneis = false;\n }\n );\n }\n\n Salvar() {\n this.AjustaAneisNavios();\n\n if (!this.ValidaNaviosRotas()) {\n this._msgService.addMessage('Navios', 'Os Navios marcados como \"Exibe Portal\" devem conter ao menos uma rota.', \"error\", \n LogFrontFuncionalidade.Parametros, Operacao.Alteracao, this.navios);\n return;\n }\n\n if (!this.ValidaCodigoIMO()) {\n this._msgService.addMessage('Navios', 'Os Navios marcados como \"Exibe Portal\" devem ter Código IMO.', \"error\",\n LogFrontFuncionalidade.Parametros, Operacao.Alteracao, this.navios);\n return;\n }\n\n\n if (!this.ValidaValorCodigoIMO()) {\n this._msgService.addMessage('Navios', 'O Código IMO deve ser um número entre 0 e 9999999.', \"error\",\n LogFrontFuncionalidade.Parametros, Operacao.Alteracao, this.navios);\n return;\n }\n\n this.loading = true;\n this._parametroService.salvarNavio(this.navios)\n .subscribe(result => {\n this.loading = false;\n if (result.IsValid) {\n this._msgService.addMessage('Navios', result.Message, \"success\");\n this.ObterNavios();\n }\n else{\n var msgErr: string[] = [];\n result.Erros.forEach(element => msgErr.push(element.Message)); \n this._msgService.addMessageArray(\"Navios\", msgErr, \"error\", LogFrontFuncionalidade.Parametros, Operacao.Alteracao, this.navios); \n }\n });\n }\n\n private AjustaAneisNavios(){\n this.navios.forEach(navio => {\n navio.Aneis = [];\n if (navio.AneisID != undefined) {\n navio.AneisID.forEach(anelID => {\n var anel = this.aneis.find(f => f.AnelID == anelID);\n if (anel)\n navio.Aneis.push(anel);\n });\n }\n });\n }\n\n private ValidaNaviosRotas(): boolean {\n var erro = true;\n this.navios.forEach(navio => {\n if (navio.ExibePortal && (!navio.Aneis || navio.Aneis.length == 0))\n erro = false;\n });\n return erro;\n }\n\n private ValidaCodigoIMO(): boolean {\n var erro = true;\n this.navios.forEach(navio => {\n if (navio.ExibePortal && (!navio.CodigoIMO))\n erro = false;\n });\n return erro;\n }\n\n private ValidaValorCodigoIMO(): boolean {\n var erro = true;\n this.navios.forEach(navio => {\n if (navio.ExibePortal && navio.CodigoIMO && (navio.CodigoIMO < 0) || (navio.CodigoIMO > 9999999))\n erro = false;\n });\n return erro;\n }\n}\n","import { Component, OnInit } from '@angular/core';\n\nimport { ParametroService } from './../../_services/parametro.service';\nimport { MessageService } from './../../_services/message.service';\n\n@Component({\n selector: 'app-parametro',\n templateUrl: './parametro.component.html',\n styleUrls: ['./parametro.component.scss']\n})\nexport class ParametroComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","\nimport { FormsModule } from '@angular/forms';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MultiselectDropdownModule } from './../../shared/multiselect-dropdown/multiselect-dropdown.module';\n\nimport { ModalModule } from 'ngx-bootstrap/modal';\n\nimport { SharedModule } from './../../shared/shared.module';\nimport { ParametroComponent } from './parametro.component';\nimport { HorasComponent } from './horas/horas.component';\nimport { NaviosComponent } from './navios/navios.component';\nimport { ParamentroRoutingModule } from './parametro.routing.module';\nimport { ParametroService } from './../../_services/parametro.service';\nimport { TiposServicosComponent } from './tipos-servicos/tipos-servicos.component';\nimport { ParametroPortoEditComponent } from './horas/parametro-porto-edit/parametro-porto-edit.component';\nimport { ParametroPortoViewComponent } from './horas/parametro-porto-view/parametro-porto-view.component';\nimport { AnelRotaService } from 'app/_services/anel-rota.service';\nimport { TerminaisComponent } from './terminais/terminais.component';\nimport { TerminaisService } from 'app/_services/terminais.service';\nimport { PrioridadesModule } from './prioridades/prioridades.module';\nimport { HttpClientModule } from '@angular/common/http';\n\n@NgModule({\n imports: [\n FormsModule,\n CommonModule,\n HttpClientModule,\n ParamentroRoutingModule,\n MultiselectDropdownModule,\n SharedModule,\n ModalModule.forRoot(),\n PrioridadesModule\n ],\n exports: [],\n declarations: [\n ParametroComponent,\n HorasComponent,\n NaviosComponent,\n TiposServicosComponent,\n ParametroPortoEditComponent,\n ParametroPortoViewComponent,\n TerminaisComponent\n ],\n providers: [\n ParametroService,\n TerminaisService,\n AnelRotaService\n ],\n})\nexport class ParametroModule { }\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { NaviosComponent } from './navios/navios.component';\nimport { HorasComponent } from './horas/horas.component';\nimport { TiposServicosComponent } from './tipos-servicos/tipos-servicos.component';\nimport { ParametroComponent } from './parametro.component';\nimport { AuthGuard } from 'app/_guards/auth.guard';\nimport { TerminaisComponent } from './terminais/terminais.component';\nimport { PrioridadesComponent } from './prioridades/prioridades.component';\n\nconst paramsRoutes: Routes = [\n { path: '', component: ParametroComponent, children : [\n { path: 'horas', component: HorasComponent, canActivate: [AuthGuard] },\n { path: 'navios', component: NaviosComponent, canActivate: [AuthGuard] },\n { path: 'servicos', component: TiposServicosComponent, canActivate: [AuthGuard] },\n { path: 'terminais', component: TerminaisComponent, canActivate: [AuthGuard] },\n { path: 'prioridades', component: PrioridadesComponent, canActivate: [AuthGuard] },\n { path: '**', redirectTo: 'horas' },\n ] },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(paramsRoutes)],\n exports: [RouterModule]\n})\nexport class ParamentroRoutingModule {\n\n}\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\n\nimport swal from 'sweetalert2';\nimport { Prioridade } from 'app/_models/prioridade';\nimport { BaseComponent } from 'app/shared/base.component';\n\nimport { Porto } from 'app/_models/porto';\nimport { Navio } from 'app/_models/navio';\nimport { FilterComboConfiguration } from 'app/_models/filterComboConfiguration';\n\nimport { MessageService } from 'app/_services/message.service';\nimport { PrioridadeService } from 'app/_services/prioridade.service';\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\nimport { Operacao } from 'app/_enums/operacao';\n\n@Component({\n selector: 'lista',\n templateUrl: './lista.component.html',\n styleUrls: ['./lista.component.scss']\n})\nexport class ListaComponent extends BaseComponent implements OnInit {\n\n @Input() prioridades: Prioridade[];\n @Output() atualizaLista: EventEmitter = new EventEmitter();\n\n portos: Porto[];\n navios: Navio[];\n\n loading: boolean = false;\n\n comboNavios: FilterComboConfiguration;\n comboPortos: FilterComboConfiguration;\n\n constructor(private _msgService: MessageService,\n private _prioridadeService: PrioridadeService) {\n super();\n\n this.comboNavios = new FilterComboConfiguration('Navio(s)...');\n this.comboNavios.settings = {\n checkedStyle: 'glyphicon',\n showCheckAll: false, //true,\n showUncheckAll: false, //true,\n dynamicTitleMaxItems: 1,\n enableSearch: false\n };\n\n this.comboPortos = new FilterComboConfiguration('Porto...');\n this.comboPortos.settings = {\n checkedStyle: 'glyphicon',\n selectionLimit: 1,\n showCheckAll: false,\n showUncheckAll: false,\n dynamicTitleMaxItems: 1,\n enableSearch: false,\n closeOnSelect: true\n };\n }\n\n ngOnInit() {\n\n }\n\n populaCombos() {\n\n this.comboNavios.options = [];\n if (this.navios != null) {\n this.navios.forEach(navio => {\n this.comboNavios.options.push({ id: navio.Codigo, name: navio.Descricao });\n });\n }\n\n this.comboPortos.options = [];\n if (this.portos != null) {\n this.portos.forEach(porto => {\n this.comboPortos.options.push({ id: porto.Codigo, name: porto.Descricao });\n });\n }\n }\n\n DeletarPrioridade(prioID: number) {\n this._msgService.clearMessage();\n swal({\n title: 'Confirmação',\n text: 'Deseja excluir a prioridade cadastrada?',\n type: 'question',\n showCancelButton: true,\n confirmButtonText: 'Sim',\n cancelButtonText: 'Não'\n }).then(success => {\n\n this.loading = true;\n this.prioridades = [];\n this._prioridadeService.excluirPrioridade(prioID)\n .subscribe(result => {\n this.loading = false;\n if (result.IsValid) {\n this._msgService.addMessage('Prioridades', result.Message, \"success\");\n this.atualizaLista.emit();\n }\n else {\n var msgErr: string[] = [];\n result.Erros.forEach(element => msgErr.push(element.Message));\n this._msgService.addMessageArray(\"Prioridades\", msgErr, \"error\", LogFrontFuncionalidade.Parametros, Operacao.Exclusao, prioID);\n }\n });\n }, dismiss => {\n // console.log(dismiss);\n });\n }\n}\n","import { Component, OnInit, ViewChild } from '@angular/core';\n\nimport { ListaComponent } from './lista/lista.component';\nimport { MessageComponent } from 'app/shared/message/message.component';\nimport { BaseComponent } from 'app/shared/base.component';\n\nimport { PrioridadeService } from 'app/_services/prioridade.service';\n\nimport { Prioridade } from 'app/_models/prioridade';\nimport { PaginaPrioridades } from 'app/_models/pagina-prioridades';\nimport { MessageService } from 'app/_services/message.service';\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\nimport { Operacao } from 'app/_enums/operacao';\n\n@Component({\n selector: 'prioridades',\n templateUrl: './prioridades.component.html',\n styleUrls: ['./prioridades.component.scss']\n})\nexport class PrioridadesComponent extends BaseComponent implements OnInit {\n\n @ViewChild(ListaComponent, {static: true}) lista: ListaComponent;\n @ViewChild(MessageComponent, {static: true}) mensagem: MessageComponent;\n\n loading: boolean = false;\n paginaPrioridade: PaginaPrioridades;\n prioridades: Prioridade[];\n mensagens: string[];\n\n constructor(private _msgService: MessageService,\n private _prioridadeService: PrioridadeService) {\n super();\n\n this._msgService.emitirMensagem.subscribe(\n msg => {\n this.mensagem.mostrarMensagem(msg.tipo, msg.mensagem);\n }\n );\n\n }\n\n ngOnInit() {\n this.lista.atualizaLista.subscribe(\n (a: any) => {\n this.obtemPrioridades();\n });\n\n this.obtemPrioridades();\n }\n\n obtemPrioridades() {\n this.loading = true;\n this.prioridades = [];\n this._prioridadeService.getPaginaPrioridades()\n .subscribe(p => {\n if (p == null) {\n this.loading = false;\n return;\n }\n\n this.paginaPrioridade = p;\n this.prioridades = p.ListaPrioridades;\n this.AjustaPortosENaviosIDs();\n this.lista.prioridades = this.prioridades;\n this.lista.portos = p.ListaPortos;\n this.lista.navios = p.ListaNavios;\n this.lista.populaCombos();\n this.loading = false;\n });\n }\n\n private AjustaPortosENaviosIDs(){\n //Converte o ID do navio e do porto para o Combo Multiselect funcionar\n if (this.prioridades != null){\n this.prioridades.forEach(prio => {\n\n prio.NaviosID = [];\n prio.PortosOrigemID = [];\n prio.PortosDestinoID = [];\n\n if (prio.Navios != undefined){\n prio.Navios.forEach(navio => {\n prio.NaviosID.push(Number(navio.Codigo));\n });\n }\n\n if (prio.PortoOrigem != undefined){\n prio.PortosOrigemID.push(prio.PortoOrigem.Codigo) ;\n }\n\n if (prio.PortoDestino != undefined){\n prio.PortosDestinoID.push(prio.PortoDestino.Codigo) ;\n }\n });\n }\n }\n\n private AjustaPortosENavios() {\n\n this.prioridades.forEach(prioridade => {\n prioridade.Navios = [];\n if (prioridade.NaviosID != undefined) {\n prioridade.NaviosID.forEach(navioID => {\n var navio = this.lista.navios.find(f => f.Codigo == navioID.toString());\n if (navio)\n prioridade.Navios.push(navio);\n });\n }\n\n if (prioridade.PortosOrigemID != undefined) {\n prioridade.PortosOrigemID.forEach(portoID => {\n var porto = this.lista.portos.find(f => f.Codigo == portoID);\n if (porto)\n prioridade.PortoOrigem = porto;\n });\n }\n\n if (prioridade.PortosDestinoID != undefined) {\n prioridade.PortosDestinoID.forEach(portoID => {\n var porto = this.lista.portos.find(f => f.Codigo == portoID);\n if (porto)\n prioridade.PortoDestino = porto;\n });\n }\n });\n\n }\n\n AdicionaLinhaPrioridade() {\n var prio = new Prioridade();\n this.prioridades.push(prio);\n }\n\n Salvar() {\n this.loading = true;\n this.AjustaPortosENavios();\n\n if(!this.ValidaPrioridade()){\n this.loading = false;\n this._msgService.addMessageArray('Prioridades', this.mensagens, 'error', LogFrontFuncionalidade.Parametros, Operacao.Alteracao, this.lista.prioridades);\n return;\n }\n\n this._prioridadeService.salvarPrioridades(this.prioridades)\n .subscribe(result => {\n this.loading = false;\n if (result.IsValid) {\n this._msgService.addMessage('Prioridades', result.Message, \"success\");\n this.obtemPrioridades();\n }\n else{\n var msgErr: string[] = [];\n result.Erros.forEach(element => msgErr.push(element.Message));\n this._msgService.addMessageArray(\"Prioridades\", msgErr, \"error\", LogFrontFuncionalidade.Parametros, Operacao.Alteracao, this.lista.prioridades);\n }\n });\n }\n\n ValidaPrioridade(): boolean {\n\n this.mensagens = [];\n\n this.lista.prioridades.forEach(prio => {\n\n if (!prio.PortoOrigem)\n this.mensagens.push(\"Obrigatório informar o Porto de Origem\");\n\n if (!prio.PortoDestino)\n this.mensagens.push(\"Obrigatório informar o Porto de Destino\");\n\n if (prio.PortoOrigem && prio.PortoDestino && prio.PortoOrigem.Codigo == prio.PortoDestino.Codigo)\n this.mensagens.push(\"Porto de Origem e Porto de Destino não podem ser iguais\");\n\n if (!prio.Navios || prio.Navios.length == 0)\n this.mensagens.push(\"Obrigatório informar ao menos um Navio\");\n\n if (this.mensagens.length == 0) {\n var filtrados = this.lista.prioridades.filter(f => f.PortoDestino.Codigo == prio.PortoDestino.Codigo &&\n f.PortoOrigem.Codigo == prio.PortoOrigem.Codigo &&\n ((prio.PrioridadeID == 0 && (f != prio)) || (prio.PrioridadeID != 0 && prio.PrioridadeID != f.PrioridadeID)));\n\n if (filtrados && filtrados.length >= 1)\n this.mensagens.push(\"Não é permitido o cadastro em duplicidade de priorização no mesmo Porto Origem e Destino\");\n }\n\n if (this.mensagens.length > 0)\n return false;\n });\n\n return (this.mensagens.length == 0);\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { ListaComponent } from './lista/lista.component';\nimport { PrioridadesComponent } from './prioridades.component';\nimport { PrioridadesRoutingModule } from './prioridades.routing.module';\nimport { SharedModule } from 'app/shared/shared.module';\nimport { PrioridadeService } from 'app/_services/prioridade.service';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n SharedModule,\n PrioridadesRoutingModule\n ],\n declarations: [\n PrioridadesComponent,\n ListaComponent\n ],\n providers: [\n PrioridadeService\n ]\n})\nexport class PrioridadesModule { }\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { AuthGuard } from 'app/_guards/auth.guard';\nimport { PrioridadesComponent } from './prioridades.component';\n\nconst _routes: Routes = [\n { path: '', component: PrioridadesComponent, canActivate: [AuthGuard] }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(_routes)],\n exports: [RouterModule]\n})\nexport class PrioridadesRoutingModule {}\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { MessageComponent } from '../../../shared/message/message.component';\nimport { MessageService } from '../../../_services/message.service';\nimport { BaseComponent } from '../../../shared/base.component';\nimport { Terminal } from '../../../_models/terminal';\nimport { Porto } from '../../../_models/porto';\nimport { SharedService } from '../../../_services/shared.service';\nimport { TerminaisService } from '../../../_services/terminais.service';\nimport { LogFrontFuncionalidade } from '../../../_enums/log-front-funcionalidade';\nimport { Operacao } from '../../../_enums/operacao';\n\n@Component({\n selector: 'app-terminais',\n templateUrl: './terminais.component.html',\n styleUrls: ['./terminais.component.scss']\n})\nexport class TerminaisComponent extends BaseComponent implements OnInit {\n\n @ViewChild(MessageComponent, {static: true}) mensagem: MessageComponent;\n \n loading: boolean = false;\n terminais: Terminal[];\n\n //* VARIÁVEIS QUE SERÃO UTILIZADAS SOMENTE QUANDO HOUVER TERMINAIS ALÉM DO TERMINAL PADRÃO */\n loadingPortos: boolean = false;\n loadingTerminais: boolean = false;\n mensagemErroModal: string;\n novoTerminal: Terminal = new Terminal();\n listaTerminais: Terminal[] = [];\n portos: Porto[] = [];\n //*************************************/\n\n constructor(\n private _msgService: MessageService,\n private _terminalService: TerminaisService,\n private _sharedService: SharedService) {\n\n super();\n\n this._msgService.clearMessage();\n this.ObterTerminais();\n }\n\n ngOnInit() {\n this._msgService.emitirMensagem.subscribe(\n msg => {\n this.mensagem.mostrarMensagem(msg.tipo, msg.mensagem);\n }\n );\n }\n\n ObterTerminais(){\n this.loading = true;\n this._terminalService.obterTerminais()\n .subscribe(result => {\n this.loading = false;\n this.terminais = result;\n });\n }\n\n AtualizarTerminais(){\n var terminalInvalido = this.terminais.find(t => !t.Latitude || !t.Longitude);\n if (terminalInvalido){\n this._msgService.addMessage('Terminal', 'Obrigatório informar Latitude e Longitude para todos os terminais', 'error');\n return;\n }\n\n this.loading = true;\n this._terminalService.atualizarTerminais(this.terminais)\n .subscribe(result => {\n this.loading = false;\n if (result.IsValid) {\n this._msgService.addMessage('Terminal', 'Terminais atualizados com sucesso', \"success\");\n this.ObterTerminais();\n }\n else {\n var msgErr: string[] = [];\n result.Erros.forEach(element => msgErr.push(element.Message));\n this._msgService.addMessageArray(\"Terminal\", msgErr, \"error\", LogFrontFuncionalidade.Parametros, Operacao.Alteracao, this.terminais);\n }\n });\n }\n\n /** DAQUI PRA BAIXO, MÉTODOS QUE SERÃO UTILIZADOS QUANDO HOUVER CADASTRO DE NOVOS TERMINAIS */\n\n public ObterPortos() {\n this.loadingPortos = true;\n this._sharedService.getPortosTodos()\n .subscribe(p => {\n this.portos = p;\n this.loadingPortos = false;\n });\n }\n\n CancelarNovoTerminal(){\n this._msgService.clearMessage();\n this.novoTerminal = new Terminal();\n }\n\n IncluirTerminal(){\n this.loading = true;\n this._terminalService.salvarTerminal(this.novoTerminal)\n .subscribe(result => {\n this.loading = false;\n if (result.IsValid) {\n this._msgService.addMessageRedirect('Terminal', result.Message, \"success\");\n this.novoTerminal = new Terminal();\n this.ObterTerminais();\n }\n else {\n var msgErr: string[] = [];\n result.Erros.forEach(element => msgErr.push(element.Message));\n this._msgService.addMessageArray(\"Terminal\", msgErr, \"error\", LogFrontFuncionalidade.Parametros, Operacao.Alteracao, this.terminais);\n }\n });\n }\n\n}\n","import { Component, OnInit, ViewChild } from '@angular/core';\n\nimport { TipoServico } from './../../../_models/tipo-servico';\n\nimport { MessageService } from './../../../_services/message.service';\nimport { ParametroService } from './../../../_services/parametro.service';\n\nimport { BaseComponent } from './../../../shared/base.component';\nimport { MessageComponent } from './../../../shared/message/message.component';\nimport { PaginacaoComponent } from './../../../shared/paginacao/paginacao.component';\n\nimport { Operacao } from 'app/_enums/operacao';\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\n\n@Component({\n selector: 'app-tipos-servicos',\n templateUrl: './tipos-servicos.component.html',\n styleUrls: ['./tipos-servicos.component.scss']\n})\n\nexport class TiposServicosComponent extends BaseComponent implements OnInit {\n\n tipoServicos: TipoServico[]; // array of all items to be paged\n loading: boolean = false;\n filtro: string = \"\";\n\n @ViewChild(PaginacaoComponent, {static: true}) paginacao: PaginacaoComponent;\n @ViewChild(MessageComponent, {static: true}) mensagem: MessageComponent;\n\n constructor(private _msgService: MessageService,\n private _parametroService: ParametroService) {\n super();\n this._msgService.emitirMensagem.subscribe(\n msg => {\n this.mensagem.mostrarMensagem(msg.tipo, msg.mensagem);\n }\n );\n }\n\n ngOnInit() {\n }\n\n ngAfterViewInit() {\n // After the view is initialized, child component (paginacao) will be available\n this.ObterTipoServicos();\n }\n\n ObterTipoServicos() {\n this._msgService.clearMessage();\n this.loading = true;\n this._parametroService.getTipoServicosAdmin(this.filtro)\n .subscribe(n => {\n this.tipoServicos = n;\n this.paginacao.setAllData(this.tipoServicos);\n this.paginacao.setPage(1);\n this.loading = false;\n });\n }\n\n Salvar() {\n this.loading = true;\n this._parametroService.salvarTipoServico(this.tipoServicos)\n .subscribe(result => {\n this.loading = false;\n\n if (result.IsValid) {\n this._msgService.addMessage('Serviços', result.Message, \"success\");\n this.ObterTipoServicos();\n }\n else {\n var msgErr: string[] = [];\n result.Erros.forEach(element => msgErr.push(element.Message)); \n this._msgService.addMessageArray(\"Serviços\", msgErr, \"error\", LogFrontFuncionalidade.Parametros, Operacao.Alteracao, this.tipoServicos); \n }\n });\n }\n\n Filtrar() {\n this.ObterTipoServicos();\n }\n\n}\n","import { ActivatedRoute, Params, Router } from '@angular/router';\nimport { Component, OnInit, ViewChild } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { BaseComponent } from './../../../shared/base.component';\nimport { MessageComponent } from './../../../shared/message/message.component';\n\nimport { Perfil } from './../../../_models/perfil';\nimport { Funcionalidade } from './../../../_models/funcionalidade';\n\nimport { PerfilService } from './../../../_services/perfil.service';\nimport { MessageService } from './../../../_services/message.service';\nimport { FuncionalidadeService } from './../../../_services/funcionalidade.service';\n\nimport { Operacao } from 'app/_enums/operacao';\nimport { PerfilUsuario } from \"app/_enums/perfil-usuario.enum\";\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\n\n\n@Component({\n selector: 'app-perfil-detalhe',\n templateUrl: './perfil-detalhe.component.html',\n styleUrls: ['./perfil-detalhe.component.scss']\n})\nexport class PerfilDetalheComponent extends BaseComponent implements OnInit {\n\n inscricaoGet: Subscription;\n inscricaoFuncs: Subscription;\n inscricaoPost: Subscription;\n\n public titulo: string = 'Novo Perfil de Acesso';\n public loading: boolean = false;\n public perfil: Perfil = new Perfil();\n public funcionalidades: Funcionalidade[] = new Array();\n\n public id: number = 0;\n\n @ViewChild(MessageComponent, {static: true}) mensagem: MessageComponent;\n\n constructor(\n private _route: ActivatedRoute,\n private _perfilService: PerfilService,\n private _funcionalidadeService: FuncionalidadeService,\n private _msgService: MessageService,\n private _router: Router) {\n\n super();\n \n this._msgService.emitirMensagem.subscribe(\n msg => {\n this.mensagem.mostrarMensagem(msg.tipo, msg.mensagem);\n }\n );\n }\n\n ngOnInit(): void {\n this.inscricaoGet = this._route.params.subscribe(\n (params: any) => {\n this.id = params['id'];\n if (this.id) {\n this.titulo = 'Editar Perfil de Acesso';\n this.loading = true;\n this._perfilService.getPerfil(this.id)\n .subscribe(perfil => {\n this.perfil = perfil;\n this.loading = false;\n this.AtualizaListaFuncionalidades();\n });\n }\n else {\n this.titulo = 'Novo Perfil de Acesso';\n this.perfil = new Perfil();\n this.perfil.Ativo = true;\n }\n }\n );\n }\n\n ngOnDestroy() {\n if (this.inscricaoGet)\n this.inscricaoGet.unsubscribe();\n if (this.inscricaoPost)\n this.inscricaoPost.unsubscribe();\n if (this.inscricaoFuncs)\n this.inscricaoFuncs.unsubscribe();\n }\n\n AtualizaListaFuncionalidades() {\n this.inscricaoFuncs = this._funcionalidadeService.getFuncionalidades()\n .subscribe(lista => {\n let cli = lista.filter(function (itm) { return itm.PerfilUsuario == PerfilUsuario.Cliente });\n let pro = lista.filter(function (itm) { return itm.PerfilUsuario == PerfilUsuario.Provedor });\n let adm = lista.filter(function (itm) { return itm.PerfilUsuario == PerfilUsuario.Administrador });\n\n this.funcionalidades = new Array();\n\n if (this.perfil.Cliente)\n this.funcionalidades = this.funcionalidades.concat(cli);\n if (this.perfil.Provedor)\n this.funcionalidades = this.funcionalidades.concat(pro);\n if (this.perfil.Admin)\n this.funcionalidades = this.funcionalidades.concat(adm);\n\n if (this.funcionalidades.length > 0)\n this.funcionalidades.forEach(func => {\n if (this.perfil.Funcionalidades)\n func.Checked = !this.perfil.Funcionalidades || this.perfil.Funcionalidades.filter(function (itm) { return itm.FuncionalidadeID == func.FuncionalidadeID }).length > 0;\n });\n\n this.loading = false;\n });\n }\n\n SalvarPerfil() {\n this.perfil.Funcionalidades = this.funcionalidades;\n this.loading = true;\n this._perfilService.salvarPerfil(this.perfil)\n .subscribe(result => {\n this.loading = false;\n\n if (result.IsValid) {\n this._msgService.addMessageRedirect('Perfil de Acesso', result.Message, \"success\");\n this._router.navigate(['perfil']);\n }\n else {\n var msgErr: string[] = [];\n result.Erros.forEach(element => msgErr.push(element.Message)); \n this._msgService.addMessageArray(\"Perfil de Acesso\", msgErr, \"error\", LogFrontFuncionalidade.PerfisDeAcesso, Operacao.Alteracao, this.perfil); \n }\n });\n }\n}\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport swal from 'sweetalert2';\n\nimport { PerfilService } from './../../_services/perfil.service';\nimport { MessageService } from './../../_services/message.service';\n\nimport { Perfil } from './../../_models/perfil';\n\nimport { MessageComponent } from './../../shared/message/message.component';\n\nimport { Operacao } from 'app/_enums/operacao';\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\n\n@Component({\n selector: 'app-perfil',\n templateUrl: './perfil.component.html',\n styleUrls: ['./perfil.component.scss']\n})\nexport class PerfilComponent implements OnInit {\n\n @ViewChild(MessageComponent, {static: true}) mensagem: MessageComponent;\n\n constructor(\n private _msgService: MessageService,\n private _perfilService: PerfilService) {\n\n this._msgService.emitirMensagem.subscribe(\n msg => {\n this.mensagem.mostrarMensagem(msg.tipo, msg.mensagem);\n }\n );\n }\n\n public lista: Perfil[];\n public loading: boolean = false;\n\n ngOnInit() {\n this.ObterLista();\n let msg = this._msgService.getMessageRedirect();\n if (msg.show)\n this._msgService.addMessage(msg.titulo, msg.mensagem, msg.type, LogFrontFuncionalidade.PerfisDeAcesso, Operacao.Alteracao);\n }\n\n private ObterLista() {\n this.loading = true;\n this._perfilService.getPerfis()\n .subscribe(lista => {\n this.lista = lista;\n this.loading = false;\n });\n }\n\n private DeletarPerfil(id: number) {\n swal({\n title: 'Confirmação',\n text: 'Deseja excluir o Perfil?',\n type: 'question',\n showCancelButton: true,\n confirmButtonText: 'Sim',\n cancelButtonText: 'Não'\n }).then(success => {\n\n this.loading = true;\n this._perfilService.deletarPerfil(id)\n .subscribe(result => {\n this.loading = false;\n\n if (result.IsValid) {\n this._msgService.addMessage('Perfil de Acesso', result.Message, \"success\");\n this.ObterLista();\n }\n else {\n var msgErr: string[] = [];\n result.Erros.forEach(element => msgErr.push(element.Message)); \n this._msgService.addMessageArray(\"Perfil de Acesso\", msgErr, \"error\", LogFrontFuncionalidade.PerfisDeAcesso, Operacao.Exclusao, id); \n }\n });\n\n }, dismiss => {\n // console.log(dismiss);\n });\n }\n\n}\n","import { SharedModule } from './../../shared/shared.module';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\nimport { ModalModule } from 'ngx-bootstrap/modal';\nimport { ConfirmModule } from './../../shared/confirm/confirm.module';\n\nimport { PerfilRoutingModule } from './perfil.routing.module';\nimport { PerfilComponent } from './perfil.component';\nimport { PerfilDetalheComponent } from './perfil-detalhe/perfil-detalhe.component';\nimport { PerfilService } from './../../_services/perfil.service';\n\nimport { FuncionalidadeService } from './../../_services/funcionalidade.service';\nimport { HttpClientModule } from '@angular/common/http';\n\n@NgModule({\n imports: [\n FormsModule,\n CommonModule,\n HttpClientModule,\n PerfilRoutingModule,\n ModalModule.forRoot(),\n ConfirmModule,\n SharedModule\n ],\n exports: [],\n declarations: [\n PerfilComponent,\n PerfilDetalheComponent\n ],\n providers: [\n PerfilService,\n FuncionalidadeService\n ]\n})\nexport class PerfilModule { }\n","import { NgModule } from '@angular/core';\nimport { ModuleWithProviders } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { PerfilComponent } from './perfil.component';\nimport { PerfilDetalheComponent } from './perfil-detalhe/perfil-detalhe.component';\nimport { AuthGuard } from 'app/_guards/auth.guard';\n\nconst perfisRoutes: Routes = [\n { path: '', component: PerfilComponent, canActivate: [AuthGuard] },\n // { path: 'detalhe', component: PerfilDetalheComponent, canActivate: [AuthGuard] },\n // { path: 'detalhe/:id', component: PerfilDetalheComponent, canActivate: [AuthGuard] }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(perfisRoutes)],\n exports: [RouterModule]\n})\nexport class PerfilRoutingModule {}","import { Component, Input, OnInit, ViewChild, NgModule } from \"@angular/core\";\nimport { FormControl, FormGroup } from \"@angular/forms\";\nimport { ActivatedRoute, Params, Router } from \"@angular/router\";\nimport { MessageService } from \"./../../../_services/message.service\";\nimport { MessageComponent } from \"./../../../shared/message/message.component\";\nimport { DataService } from \"./../../../_services/data.service\";\nimport { SharedService } from \"./../../../_services/shared.service\";\nimport { BaseComponent } from \"./../../../shared/base.component\";\n\nimport { Observable } from \"rxjs\";\nimport { Subscription } from \"rxjs\";\n\n//DATEPICKER\nimport { DatepickerService } from \"app/_services/datepicker.service\";\nimport { DatePickerOptions } from \"app/shared/ng2-datepicker/ng2-datepicker.component\";\nimport { DateModel } from \"app/shared/ng2-datepicker/ng2-datepicker.component\";\nimport { DateExtensions } from 'app/shared/extensions/extensions.module';\n\n\n// MAERSK\nimport { ListItem } from \"./../../../_models/listItem\";\nimport { LogFrontFuncionalidade } from \"app/_enums/log-front-funcionalidade\";\nimport { Operacao } from \"app/_enums/operacao\";\nimport { PortoService } from \"app/_services/porto.service\";\nimport { PortoInstantPaymentRequest } from \"app/_models/PortoInstantPaymentRequest\";\nimport { BaseService } from \"app/_services/base.service\";\nimport { UsuarioLogado } from '../../../_models/usuariologado';\nimport { UF } from \"app/_models/uf\";\n\n\n@Component({\n selector: \"porto-detalhe\",\n templateUrl: \"./porto-detalhe.component.html\",\n styleUrls: [\"./porto-detalhe.component.scss\"],\n})\nexport class PortoDetalheComponent extends BaseComponent\n implements OnInit {\n inscricaoGet: Subscription;\n @ViewChild(MessageComponent, { static: true }) mensagem: MessageComponent;\n\n titulo: string = \"Novo Porto\";\n // //listItem: ListItem;\n regioesGeograficas: ListItem[] = new Array();\n portoInstantPaymentRequest: PortoInstantPaymentRequest = new PortoInstantPaymentRequest();\n portoInstantPaymentResponse: PortoInstantPaymentRequest = new PortoInstantPaymentRequest();\n loading: boolean = false;\n ufs: UF[] = new Array();\n\n // MAERSK\n id: number = 0;\n\n\n constructor(\n private _baseService: BaseService,\n private _dataService: DataService,\n private _route: ActivatedRoute,\n private _msgService: MessageService,\n private _sharedService: SharedService,\n private _router: Router,\n private _datepickerService: DatepickerService,\n private route: ActivatedRoute,\n private _portoService : PortoService\n ) {\n super();\n\n this._msgService.emitirMensagem.subscribe((msg) => {\n this.mensagem.mostrarMensagem(msg.tipo, msg.mensagem);\n });\n\n\n this.ObterDataFields();\n\n }\n\n ngOnInit(): void {\n\n this.inscricaoGet = this._route.params.subscribe((params: any) => {\n this.id = params[\"id\"];\n if (this.id) {\n this.titulo = \"Editar Porto\";\n this.loading = true;\n this.getPorto(this.id);\n this.portoInstantPaymentRequest.isNovo = false;\n }\n else {\n this.titulo = \"Novo Porto\";\n this.portoInstantPaymentRequest = new PortoInstantPaymentRequest();\n this.portoInstantPaymentRequest.isNovo = true;\n }\n });\n }\n\n\n\n // Metodos auxiliares\n ObterDataFields() {\n this._dataService.getUFs().subscribe((lista) => {\n this.ufs = lista;\n });\n\n this._dataService.getRegiaoGeografica().subscribe((lista) => {\n this.regioesGeograficas = lista;\n });\n\n\n }\n\n private ObterData(dateModel: DateModel, dateOffset: number) {\n return dateModel != undefined\n ? this._datepickerService.ObtemData(dateModel)\n : this._sharedService.addDays(new Date(), dateOffset);\n }\n\n onSalvaPorto() {\n this._msgService.clearMessage();\n\n this.portoInstantPaymentRequest.city = this.portoInstantPaymentResponse.city;\n this.portoInstantPaymentRequest.code = this.portoInstantPaymentResponse.code;\n this.portoInstantPaymentRequest.description = this.portoInstantPaymentResponse.description;\n this.portoInstantPaymentRequest.id = this.portoInstantPaymentResponse.id;\n this.portoInstantPaymentRequest.isEnabled = this.portoInstantPaymentResponse.isEnabled;\n this.portoInstantPaymentRequest.region = this.portoInstantPaymentResponse.region;\n this.portoInstantPaymentRequest.state = this.portoInstantPaymentResponse.state;\n\n\n if(this.portoInstantPaymentRequest.isNovo)\n {\n this.portoInstantPaymentRequest.createdBy = this._baseService.UsuarioLogado.Nome;\n }\n else\n {\n this.portoInstantPaymentRequest.updatedBy = this._baseService.UsuarioLogado.Nome;\n this.portoInstantPaymentRequest.createdBy = this.portoInstantPaymentResponse.createdBy;\n }\n\n this._portoService.salvar(this.portoInstantPaymentRequest).subscribe((result) => {\n this.loading = false;\n if (result.IsValid) {\n this._router.navigate([\"porto\"]);\n this._msgService.addMessageRedirect(\n \"Porto\",\n result.Message,\n \"success\"\n );\n } else {\n var msgErr: string[] = [];\n result.Erros.forEach((element) => msgErr.push(element.Message));\n this._msgService.addMessageArray(\n \"Porto\",\n msgErr,\n \"error\",\n LogFrontFuncionalidade.Porto,\n Operacao.Alteracao,\n this.portoInstantPaymentRequest\n );\n this.loading = false;\n }\n });\n }\n\n\n getPorto(id: number) {\n this._portoService.getById(this.id)\n .subscribe((porto) => {\n\n this.portoInstantPaymentResponse = porto;\n this.portoInstantPaymentRequest.isNovo = false;\n\n this.loading = false;\n\n });\n }\n}\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { SharedService } from \"app/_services/shared.service\";\nimport { MessageService } from \"./../../_services/message.service\";\nimport { BaseComponent } from \"app/shared/base.component\";\nimport { MessageComponent } from \"./../../shared/message/message.component\";\nimport { Operacao } from \"app/_enums/operacao\";\nimport { LogFrontFuncionalidade } from \"app/_enums/log-front-funcionalidade\";\nimport * as moment from \"moment-timezone\";\nimport { UsuarioPesquisaRequest } from \"app/_models/usuario-pesquisa-request\";\nimport { DataService } from \"./../../_services/data.service\";\n// Models\nimport { UF } from \"app/_models/uf\";\nimport { ValidationError } from \"../../_models/validation-error\";\nimport { debug, Console } from \"console\";\nimport { Subscription } from 'rxjs';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { AppService } from 'app/_services/app.service';\nimport swal from 'sweetalert2';\nimport { Parser } from '@angular/compiler';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\n\n\nimport { GenericOrderbyService } from 'app/_services/generic-orderby.service';\nimport { PaginacaoComponent } from 'app/shared/paginacao/paginacao.component';\nimport { FilterComboConfiguration } from \"app/_models/filterComboConfiguration\";\nimport { BaseService } from 'app/_services/base.service';\nimport { NgForm } from '@angular/forms';\nimport { PortoService } from 'app/_services/porto.service';\nimport { PortoInstantPaymentRequest } from 'app/_models/PortoInstantPaymentRequest';\nimport { ListItem } from 'app/_models/listItem';\n\n\n\n@Component({\n selector: \"app-porto\",\n templateUrl: \"./porto.component.html\",\n styleUrls: [\"./porto.component.scss\"],\n})\nexport class PortoComponent extends BaseComponent implements OnInit {\n @ViewChild(MessageComponent, {static: true}) mensagem: MessageComponent;\n @ViewChild(PaginacaoComponent, {static: true}) paginacao: PaginacaoComponent;\n\n loading: boolean = false;\n private pageSize: number = 50;\n\n private portoLista: PortoInstantPaymentRequest[] = new Array;\n private portoInstantPayment: PortoInstantPaymentRequest;\n\n\n regioesGeograficas: ListItem[] = new Array();\n\n\n constructor(\n private baseService: BaseService,\n private _sharedService: SharedService,\n private _msgService: MessageService,\n private _dataService: DataService,\n private _genericOrderbyService: GenericOrderbyService,\n private _portoService: PortoService,\n private _appService: AppService ) {\n\n super();\n\n this._msgService.emitirMensagem.subscribe(\n msg => {\n this.mensagem.mostrarMensagem(msg.tipo, msg.mensagem);\n }\n );\n }\n\n ngOnInit() {\n this.loading = true;\n this.ObterDataFields();\n this.getAllPortos();\n this.setPageSize(this.pageSize);\n this.loading = false;\n\n let msg = this._msgService.getMessageRedirect();\n if (msg.show)\n this._msgService.addMessage(msg.titulo, msg.mensagem, msg.type, LogFrontFuncionalidade.AneisERotas, Operacao.Alteracao);\n }\n\n\n getAllPortos() {\n this.loading = true;\n\n this._portoService.getAll().subscribe(\n (lista) => {\n this.portoLista = lista;\n this.paginacao.setAllData(this.portoLista);\n this.paginacao.setPage(1);\n },\n (err) => {}\n );\n\n this.loading = false;\n\n }\n\n\n ObterDataFields() {\n this._dataService.getRegiaoGeografica().subscribe((lista) => {\n this.regioesGeograficas = lista;\n });\n }\n\n setRegiaoGeografica(regiaoGeograficaId: number): string {\n let item1 = this.regioesGeograficas.find(i => i.codigo === regiaoGeograficaId.toString());\n return item1.descricao;\n }\n\n setPageSize(value: number) {\n this.pageSize = value;\n this.paginacao.setAllData(this.portoLista);\n this.paginacao.setPageSize(this.pageSize);\n this.paginacao.setPage(1);\n }\n\n\n onSavePorto() {\n\n\n this._portoService.salvar(this.portoInstantPayment).subscribe((result) => {\n\n this.getAllPortos();\n\n console.log(\"sucesso\");\n });\n }\n\n\n\n // exportarRelatorioCSV() {\n // this.downloading = true;\n\n // const titulos: any[] = [\n // \"CODIGO\",\n // \"UF ORIGEM\",\n // \"UF DESTINO\",\n // \"% CIF\",\n // \"% CIF - NÃO CONTRIBUINTE\",\n // \"% FOB\",\n // \"% FOB - NAÃO CONTRIBUINTE\",\n // \"CRIADO POR\",\n // \"CRIADO EM\",\n // \"ATUALIZADO POR\",\n // \"ATUALIZADO EM\"];\n\n\n // const data: any[] = [];\n\n // this.portoLista.forEach(x => {\n // data.push([\n // x.codeIcms,\n // x.departureUf,\n // x.destinationUf,\n // x.percCif,\n // x.percCifNonTaxPayer,\n // x.percFob,\n // x.percFobNonTaxPayer,\n // x.createdBy,\n // x.createdOn,\n // x.updatedBy,\n // x.updatedOn\n // ]);\n // });\n\n // this.downloading = false;\n // this.baseService.DownloadXLSX(data, titulos, 'Portos.xlsx');\n\n // }\n}\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { ModalModule } from 'ngx-bootstrap/modal';\n\nimport { SharedModule } from './../../shared/shared.module';\nimport { CurrencyMaskModule } from 'ng2-currency-mask';\nimport { TextMaskModule } from 'angular2-text-mask';\n\n//DATEPICKER\nimport { DatePickerModule } from 'app/shared/ng2-datepicker/ng2-datepicker.module';\n\n// MAERSK\nimport { PortoRoutingModule } from './porto.routing.module';\nimport { PortoComponent } from './porto.component';\nimport { PortoDetalheComponent } from './porto-detalhe/porto-detalhe.component';\n\n\n@NgModule({\n imports: [\n FormsModule,\n CommonModule,\n HttpClientModule,\n ModalModule.forRoot(),\n SharedModule,\n DatePickerModule,\n CurrencyMaskModule,\n TextMaskModule,\n\n // MAESRK\n PortoRoutingModule,\n ],\n exports: [],\n declarations: [\n PortoComponent,\n PortoDetalheComponent\n ],\n providers: [\n // PerfilService,\n // UsuarioService,\n // FuncionalidadeService\n ]\n})\nexport class PortoModule { }\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { PortoComponent } from './porto.component';\nimport { PortoDetalheComponent } from './porto-detalhe/porto-detalhe.component';\nimport { AuthGuard } from 'app/_guards/auth.guard';\n\nconst portoRoutes: Routes = [\n { path: '', component: PortoComponent, canActivate: [AuthGuard] },\n // { path: 'detalhe', component: UsuarioDetalheComponent, canActivate: [AuthGuard] },\n // { path: 'detalhe/:id', component: UsuarioDetalheComponent, canActivate: [AuthGuard] }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(portoRoutes)],\n exports: [RouterModule]\n})\nexport class PortoRoutingModule {}\n","import { Component, Input, OnInit, ViewChild, NgModule } from \"@angular/core\";\nimport { FormControl, FormGroup } from \"@angular/forms\";\nimport { ActivatedRoute, Params, Router } from \"@angular/router\";\nimport { MessageService } from \"./../../../_services/message.service\";\nimport { MessageComponent } from \"./../../../shared/message/message.component\";\nimport { DataService } from \"./../../../_services/data.service\";\nimport { SharedService } from \"./../../../_services/shared.service\";\nimport { BaseComponent } from \"./../../../shared/base.component\";\n\n\n\nimport { Observable } from \"rxjs\";\nimport { Subscription } from \"rxjs\";\n\n\n//DATEPICKER\nimport { DatepickerService } from \"app/_services/datepicker.service\";\nimport { DatePickerOptions } from \"app/shared/ng2-datepicker/ng2-datepicker.component\";\nimport { DateModel } from \"app/shared/ng2-datepicker/ng2-datepicker.component\";\nimport { DateExtensions } from 'app/shared/extensions/extensions.module';\n\n\n// MAERSK\nimport { ListItem } from \"./../../../_models/listItem\";\nimport { LogFrontFuncionalidade } from \"app/_enums/log-front-funcionalidade\";\nimport { Operacao } from \"app/_enums/operacao\";\nimport { SubTributariaService } from \"./../../../_services/sub-tributaria.service\";\nimport { SubTributaria } from \"../../../_models/sub-tributaria\";\nimport { UF } from \"../../../_models/uf\";\nimport { CustomerInfo } from \"app/_models/customer-info\";\nimport { CustomerInfoService } from \"app/_services/customer-info.service\";\nimport { AppService } from \"app/_services/app.service\";\n\n\n@Component({\n selector: \"sub-tributaria-detalhe\",\n templateUrl: \"./sub-tributaria-detalhe.component.html\",\n styleUrls: [\"./sub-tributaria-detalhe.component.scss\"],\n})\nexport class SubTributariaDetalheComponent extends BaseComponent\n implements OnInit {\n inscricaoGet: Subscription;\n @ViewChild(MessageComponent, { static: true }) mensagem: MessageComponent;\n\n titulo: string = \"Nova Substituição Tributária\";\n // //listItem: ListItem;\n isNovaTaxa: boolean = true;\n\n regioesGeograficas: UF[] = new Array();\n tiposModais: ListItem[] = new Array();\n listGrupoEconomico: ListItem[] = new Array();\n\n subTributaria: SubTributaria = new SubTributaria();\n\n loading: boolean = false;\n\n dataInicioOptions: DatePickerOptions;\n optionsFim: DatePickerOptions;\n\n dataInicio: DateModel;\n dataFim: DateModel;\n\n startDate: Date = new Date();\n expirationDate: Date = new Date();\n isPeriodoInvalido: boolean = false;\n\n\n // MAERSK\n id: number = 0;\n year: number = 0;\n month: number = 0;\n day: number = 0;\n qtdDiasFim: number = 360;\n\n\n\n constructor(\n private _dataService: DataService,\n private _route: ActivatedRoute,\n private _msgService: MessageService,\n private _sharedService: SharedService,\n private _router: Router,\n private _datepickerService: DatepickerService,\n private _subTributariaService: SubTributariaService,\n private _customerInfoService: CustomerInfoService,\n private route: ActivatedRoute,\n private _appService: AppService\n\n ) {\n super();\n\n this.dataInicio = DateExtensions.toDateModel(new Date(), \"DD/MM/YYYY\");\n this.dataInicioOptions = this._datepickerService.GenerateOptionsConfig(new Date());\n this.startDate = new Date();\n\n this.optionsFim = this._datepickerService.GenerateOptionsConfig(\n this._sharedService.addDays(new Date(), this.qtdDiasFim));\n\n this._msgService.emitirMensagem.subscribe((msg) => {\n this.mensagem.mostrarMensagem(msg.tipo, msg.mensagem);\n });\n\n\n\n this.year = this.startDate.getFullYear();\n this.month = this.startDate.getMonth();\n this.day = this.startDate.getDay();\n\n }\n\n ngOnInit(): void {\n\n this.ObterDataFields();\n\n this.inscricaoGet = this._route.params.subscribe((params: any) => {\n this.id = params[\"id\"];\n if (this.id) {\n this.titulo = \"Editar Substituição Tributária\";\n this.loading = true;\n\n this.getSubstituicaoTributaria(this.id);\n }\n else {\n this.titulo = \"Nova Substituição Tributária\";\n this.subTributaria = new SubTributaria();\n }\n });\n }\n\n formataData(formato: string): string {\n return \"\";\n }\n\n // Eventos dos Objetos\n OnChangeDepartureUfCmb(value: any) {\n this.subTributaria.departureUf = value.target.value;\n }\n\n OnChangeUfTomadorCmb(value: any) {\n this.subTributaria.destinationUf = value.target.value;\n }\n\n OnChangeModalCmb(value: any) {\n this.subTributaria.modal = value.target.value;\n }\n\n OnChangeGrupoEconomicoCmb(value: any) {\n this.subTributaria.groupEconomy = value.target.value;\n }\n\n // OnChangeDestinationModalCmb(value: any) {\n // this.subTributaria.destinationModalId = value.target.value;\n // this.getDataDisponivel();\n // }\n\n // Metodos auxiliares\n ObterDataFields() {\n this._dataService.getUFs().subscribe((lista) => {\n this.regioesGeograficas = lista;\n });\n\n this._dataService.getTipoModal().subscribe((lista) => {\n this.tiposModais = lista;\n });\n\n this.listGrupoEmpresarial();\n\n }\n\n\n setUfs(uf: number):string\n {\n let item1 = this.regioesGeograficas.find(i => i.codigo === uf);\n return item1.descricao;\n }\n\n setGrupoEmpresarial(corporationId: string):string\n {\n let item1 = this.listGrupoEconomico.find(i => i.codigo === corporationId);\n return item1.descricao;\n }\n\n\n listGrupoEmpresarial() {\n this._customerInfoService\n .listGrupoEmpresarial()\n .subscribe((lista) => {\n\n\n this.listGrupoEconomico = lista;\n this.loading = false;\n\n });\n }\n\n private ObterData(dateModel: DateModel, dateOffset: number) {\n return dateModel != undefined\n ? this._datepickerService.ObtemData(dateModel)\n : this._sharedService.addDays(new Date(), dateOffset);\n }\n\n onSaveSubTributaria() {\n this._msgService.clearMessage();\n\n\n this.subTributaria.isEnabled = true;\n\n if(this.subTributaria.id > 0)\n {\n this.subTributaria.updatedBy = this._appService.UsuarioLogado.Nome.substring(0,15);\n }\n else{\n this.subTributaria.createdBy = this._appService.UsuarioLogado.Nome.substring(0,15);\n }\n\n this._subTributariaService.salvar(this.subTributaria).subscribe((result) => {\n this.loading = false;\n if (result.IsValid) {\n this._router.navigate([\"sub-tributaria\"]);\n this._msgService.addMessageRedirect(\n \"Substituiça Tributária\",\n result.Message,\n \"success\"\n );\n } else {\n var msgErr: string[] = [];\n result.Erros.forEach((element) => msgErr.push(element.Message));\n this._msgService.addMessageArray(\n \"Substituiça Tributária\",\n msgErr,\n \"error\",\n LogFrontFuncionalidade.TaxaEsporadica,\n Operacao.Alteracao,\n this.subTributaria\n );\n this.loading = false;\n }\n });\n }\n\n getSubstituicaoTributaria(id: number) {\n this._subTributariaService\n .getSubTributaria(this.id)\n .subscribe((subTributaria) => {\n\n subTributaria.diferencyICMS = parseFloat(subTributaria.diferencyICMS.toString().replace(',', '.'));\n\n this.subTributaria = subTributaria;\n\n this.loading = false;\n\n });\n }\n\n\n\n\n validaDataInicial() {\n let _year: number = parseInt(this.dataInicio.year);\n let _month: number = parseInt(this.dataInicio.month);\n let _day: number = parseInt(this.dataInicio.day);\n\n let dataTmp: Date = new Date(_year, _month - 1, _day);\n\n if (dataTmp < this.startDate) {\n this.dataInicioOptions = this._datepickerService.GenerateOptionsConfig(this.startDate);\n this.dataInicio = DateExtensions.toDateModel(this.startDate, \"DD/MM/YYYY\");\n this.dataInicioOptions.minDate = this.startDate;\n }\n }\n\n validaDataFinal() {\n let _year: number = parseInt(this.dataFim.year);\n let _month: number = parseInt(this.dataFim.month);\n let _day: number = parseInt(this.dataFim.day);\n\n let dataTmp: Date = new Date(_year, _month - 1, _day);\n\n if (dataTmp <= this.startDate) {\n this.isPeriodoInvalido = true;\n }\n else {\n this.isPeriodoInvalido = false;\n }\n\n\n }\n\n // getDataDisponivel() {\n // // let isSporadicTaxTypeSelected: boolean = this.subTributaria.sporadicTaxTypeId > 0;\n // // let isOriginRegionSelected: boolean = this.subTributaria.originRegionId > 0;\n // // let isOriginModalSelected: boolean = this.subTributaria.originModalId != '';\n // // let isDestinationRegionSelected: boolean = this.subTributaria.destinationRegionId > 0;\n // // let isDestinationModaSelected: boolean = this.subTributaria.destinationModalId != '';\n\n // if (isSporadicTaxTypeSelected && isOriginRegionSelected && isOriginModalSelected && isDestinationRegionSelected && isDestinationModaSelected) {\n // this._subTributariaService\n // .findLastExpirationDate(this.subTributaria.sporadicTaxTypeId, this.subTributaria.originRegionId, this.subTributaria.originModalId, this.subTributaria.destinationRegionId, this.subTributaria.destinationModalId)\n // .subscribe((sporadicTax) => {\n\n // if (sporadicTax != null) {\n // var data = sporadicTax.expirationDate.toString();\n\n // this.year = parseInt(data.substr(0, 4));\n // this.month = parseInt(data.toString().substr(5, 2));\n // this.day = parseInt(data.toString().substr(8, 2));\n\n // this.startDate = new Date(this.year, this.month - 1, this.day);\n // this.startDate.setDate(this.startDate.getDate() + 1);\n\n // this.dataInicioOptions = this._datepickerService.GenerateOptionsConfig(this.startDate);\n // this.dataInicio = DateExtensions.toDateModel(this.startDate, \"DD/MM/YYYY\");\n // this.dataInicioOptions.minDate = this.startDate;\n\n // this.loading = false;\n // }\n // else {\n // this.startDate = new Date();\n // this.year = this.startDate.getFullYear();\n // this.month = this.startDate.getMonth();\n // this.day = this.startDate.getDay();\n\n // this.dataInicioOptions = this._datepickerService.GenerateOptionsConfig(this.startDate);\n // this.dataInicio = DateExtensions.toDateModel(this.startDate, \"DD/MM/YYYY\");\n // this.dataInicioOptions.minDate = this.startDate;\n // }\n\n // this.optionsFim = this._datepickerService.GenerateOptionsConfig(this._sharedService.addDays(this.startDate, this.qtdDiasFim));\n // this.dataFim = DateExtensions.toDateModel(this._sharedService.addDays(this.startDate, this.qtdDiasFim), \"DD/MM/YYYY\");\n\n // });\n // }\n // else {\n // console.log('Selecione todos os ids.');\n // }\n // }\n\n}\n","import { Component, OnInit, ViewChild } from '@angular/core';\n\nimport { PerfilService } from '../../_services/perfil.service';\nimport { SharedService } from 'app/_services/shared.service';\nimport { MessageService } from './../../_services/message.service';\nimport { UsuarioService } from './../../_services/usuario.service';\nimport { GenericOrderbyService } from 'app/_services/generic-orderby.service';\nimport { Perfil } from 'app/_models/perfil';\nimport { Usuario } from './../../_models/usuario';\nimport { UsuarioPesquisa } from './../../_models/usuario-pesquisa';\nimport { BaseComponent } from 'app/shared/base.component';\nimport { MessageComponent } from './../../shared/message/message.component';\nimport { PaginacaoComponent } from 'app/shared/paginacao/paginacao.component';\nimport { FilterComboConfiguration } from \"app/_models/filterComboConfiguration\";\n\nimport { StatusUsuario } from 'app/_enums/status-usuario.enum';\nimport { Operacao } from 'app/_enums/operacao';\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\nimport { DatepickerService } from 'app/_services/datepicker.service';\nimport { DatePickerOptions, DateModel } from 'app/shared/ng2-datepicker/ng2-datepicker.component';\nimport * as moment from 'moment-timezone';\nimport { UsuarioPesquisaRequest } from 'app/_models/usuario-pesquisa-request';\nimport { SporadicTaxService } from 'app/_services/sporadic-tax.service';\nimport { SporadicTax } from 'app/_models/sporadic-tax';\nimport { DataService } from \"./../../_services/data.service\";\nimport { ListItem } from \"./../../_models/listItem\";\nimport { parse } from 'path';\nimport { BaseService } from 'app/_services/base.service';\nimport { SubTributariaService } from 'app/_services/sub-tributaria.service';\nimport { SubTributaria } from 'app/_models/sub-tributaria';\nimport { CustomerInfoService } from 'app/_services/customer-info.service';\nimport { UF } from 'app/_models/uf';\n\n@Component({\n selector: 'app-sub-tributaria',\n templateUrl: './sub-tributaria.component.html',\n styleUrls: ['./sub-tributaria.component.scss']\n})\nexport class SubTributariaCompoent extends BaseComponent implements OnInit {\n\n @ViewChild(MessageComponent, {static: true}) mensagem: MessageComponent;\n @ViewChild(PaginacaoComponent, {static: true}) paginacao: PaginacaoComponent;\n\n filtro: UsuarioPesquisa = new UsuarioPesquisa();\n request: UsuarioPesquisaRequest = new UsuarioPesquisaRequest();\n\n public loadingSporadicTaxes: boolean = false;\n\n loading: boolean = false;\n comboStatus: FilterComboConfiguration;\n comboPerfis: FilterComboConfiguration;\n statusSelecionados: number[];\n perfisSelecionados: number[];\n perfis: Perfil[];\n pageSize: number = 50;\n downloading: boolean = false;\n\n listUfs: UF[] = new Array();\n tiposModais: ListItem[] = new Array();\n subTributariasList: SubTributaria[] = new Array();\n\n statusesList: ListItem[] = new Array();\n taxTypesList: ListItem[] = new Array();\n\n sporadicTaxTypeId: number;\n isEnabled: number;\n\n optionsInicio: DatePickerOptions = {\n format: 'DD-MM-YYYY',\n todayText: 'Hoje',\n style: 'big'\n };\n\n optionsFim: DatePickerOptions;\n dataInicio: DateModel;\n dataFim: DateModel;\n\n taxTypesFilterCboConfig: FilterComboConfiguration;\n statusesFilterCboConfig: FilterComboConfiguration;\n\n listGrupoEconomico: ListItem[] = new Array();\n\n constructor(\n private baseService: BaseService,\n private _dataService: DataService,\n private _sharedService: SharedService,\n private _msgService: MessageService,\n private _usuarioService: UsuarioService,\n private _genericOrderbyService: GenericOrderbyService,\n private _customerInfoService: CustomerInfoService,\n private _datepickerService: DatepickerService,\n private _subTriGrupoEconService: SubTributariaService ) {\n\n super();\n\n this.taxTypesFilterCboConfig = new FilterComboConfiguration(\"Selecione...\");\n this.taxTypesFilterCboConfig.settings = {\n checkedStyle: 'glyphicon',\n dynamicTitleMaxItems: 1,\n enableSearch: false\n };\n\n this.statusesFilterCboConfig = new FilterComboConfiguration(\"Selecione...\");\n this.statusesFilterCboConfig.settings = {\n checkedStyle: 'glyphicon',\n dynamicTitleMaxItems: 1,\n enableSearch: false\n };\n\n this.optionsInicio = this._datepickerService.GenerateOptionsConfig(this._sharedService.addDays(new Date(), -30));\n this.optionsFim = this._datepickerService.GenerateOptionsConfig(new Date());\n\n this._msgService.emitirMensagem.subscribe(\n msg => {\n this.mensagem.mostrarMensagem(msg.tipo, msg.mensagem);\n }\n );\n\n this.ObterDataFields();\n }\n\n ngOnInit() {\n this.listGrupoEmpresarial();\n this.getSubTributarias(0, 0);\n\n let msg = this._msgService.getMessageRedirect();\n if (msg.show)\n this._msgService.addMessage(msg.titulo, msg.mensagem, msg.type, LogFrontFuncionalidade.Usuarios, Operacao.Consulta, this.filtro);\n }\n\n private getSubTributarias(sporadicTaxTypeId: number, isEnabled: number) {\n this.loading = true;\n this._subTriGrupoEconService.obterSubTributarias()\n .subscribe(lista => {\n this.subTributariasList = lista;\n console.log(this.subTributariasList);\n this.paginacao.setAllData(this.subTributariasList);\n this.paginacao.setPage(1);\n this.loading = false;\n }, (err) => {\n });\n\n this.loading = false;\n }\n\n\n Pesquisar() {\n console.log(this.sporadicTaxTypeId);\n console.log(this.isEnabled );\n\n if (this.sporadicTaxTypeId == undefined)\n this.sporadicTaxTypeId=0;\n\n if (this.isEnabled == undefined)\n this.isEnabled=0;\n\n this.getSubTributarias(this.sporadicTaxTypeId, this.isEnabled);\n\n }\n\n public getClasse(status: StatusUsuario): string {\n return this._usuarioService.getClasse(status);\n }\n\n public getString(status: StatusUsuario): string {\n return this._usuarioService.getString(status);\n }\n\n getNomePerfilECargo(perfil: any): string {\n return this._usuarioService.getNomePerfilECargo(perfil);\n }\n\n setPageSize(value: number) {\n this.pageSize = value;\n //if (this.paginacao != )\n this.paginacao.setAllData(this.subTributariasList);\n this.paginacao.setPageSize(this.pageSize);\n this.paginacao.setPage(1);\n }\n\n atribuiPeriodoInicialEFinal(): void {\n this.request.Nome = this.filtro.Nome;\n this.request.Email = this.filtro.Email;\n this.request.RazaoSocial = this.filtro.RazaoSocial;\n this.request.Perfil = this.filtro.Perfil;\n this.request.Status = this.filtro.Status;\n this.request.CNPJ = this.filtro.CNPJ;\n let dataInicio = this.filtro.CadastradosDe? this._datepickerService.ObtemData(this.filtro.CadastradosDe, 'DD/MM/YYYY'): null;\n let dataFim = this.filtro.CadastradosAte? this._datepickerService.ObtemData(this.filtro.CadastradosAte, 'DD/MM/YYYY'): null;\n this.request.CadastradosDe = dataInicio;\n this.request.CadastradosAte = dataFim\n }\n\n setTipoTaxa(tipoTaxaId: number):string\n {\n let item1 = this.taxTypesList.find(i => i.codigo === tipoTaxaId.toString());\n return item1.descricao;\n }\n\n setModal(modalId: number):string\n {\n let item1 = this.tiposModais.find(i => i.codigo === modalId.toString());\n return item1.descricao;\n }\n\n\n setUfs(uf: number):string\n {\n let item1 = this.listUfs.find(i => i.codigo === uf);\n return item1.sigla;\n }\n\n setGrupoEmpresarial(corporationId: string):string\n {\n if(corporationId != undefined)\n {\n let item1 = this.listGrupoEconomico.find(i => i.codigo === corporationId);\n return item1.descricao;\n }\n else{\n return'';\n }\n\n\n }\n\n\n listGrupoEmpresarial() {\n this._customerInfoService\n .listGrupoEmpresarial()\n .subscribe((lista) => {\n\n\n this.listGrupoEconomico = lista;\n\n this.loading = false;\n\n });\n }\n\n\n ObterDataFields() {\n\n this._dataService.getUFs().subscribe((lista) => {\n this.listUfs = lista;\n });\n\n this._dataService.getTipoModal().subscribe((lista) => {\n this.tiposModais = lista;\n });\n\n this._dataService.getSporadicTaxTypes().subscribe((lista) => {\n this.taxTypesList = lista;\n });\n\n this._dataService.getStatuses().subscribe((lista) => {\n this.statusesList = lista;\n });\n\n this._dataService.getUFs().subscribe((lista) => {\n this.listUfs = lista;\n });\n\n this._dataService.getTipoModal().subscribe((lista) => {\n this.tiposModais = lista;\n });\n\n this.listGrupoEmpresarial();\n\n }\n\n formatDate(data: Date): string\n {\n\n let dataTMP = data.toString().substring(0,10);\n\n let day: string = dataTMP.substr(8, 2);\n let month: string = dataTMP.substr(5,2);\n let year: string = dataTMP.substr(0,4);\n\n let formattedDate: string = day + \"/\" + month.toString() + \"/\" + year.toString();\n dataTMP = formattedDate;\n return dataTMP;\n\n }\n\n // habilitaEdicao(_sporadicTax: SporadicTax) : boolean {\n // var data = _sporadicTax.expirationDate.toString();\n\n // let year: number = parseInt(data.substr(0, 4));\n // let month: number = parseInt(data.toString().substr(5, 2));\n // let day: number = parseInt(data.toString().substr(8, 2));\n\n // let _date = new Date(year, month - 1, day);\n\n // if(_date <= new Date())\n // return false;\n\n // if (_sporadicTax.isEnabled == false)\n // return false;\n\n\n // return true;\n // }\n\n exportarRelatorioCSV() {\n this.downloading = true;\n\n const titulos: any[] = [\n \"id\",\n \"sporadicTaxName\",\n \"sporadicTaxTypeId\",\n \"originRegionId\",\n \"originModalId\",\n \"destinationRegionId\",\n \"destinationModalId\",\n \"containerType20Value\",\n \"containerType40Value\",\n \"startDate\",\n \"expirationDate\",\n \"createDate\",\n \"isEnabled\"];\n\n\n const data: any[] = [];\n\n this.subTributariasList.forEach(x => {\n data.push([\n x.isEnabled\n ]);\n });\n\n this.downloading = false;\n this.baseService.DownloadXLSX(data, titulos, 'TaxasEsporadicas.csv');\n\n }\n}\n","import { SubTributariaService } from '../../_services/sub-tributaria.service';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { ModalModule } from 'ngx-bootstrap/modal';\n\nimport { SharedModule } from './../../shared/shared.module';\nimport { CurrencyMaskModule } from 'ng2-currency-mask';\nimport { TextMaskModule } from 'angular2-text-mask';\n\n//DATEPICKER\nimport { DatePickerModule } from 'app/shared/ng2-datepicker/ng2-datepicker.module';\n\n// MAERSK\nimport { SubTributariaModuleRoutingModule } from './sub-tributaria.routing.module';\nimport { SubTributariaCompoent } from './sub-tributaria.component';\nimport { SubTributariaDetalheComponent } from './sub-tributaria-detalhe/sub-tributaria-detalhe.component';\n\n\n@NgModule({\n imports: [\n FormsModule,\n CommonModule,\n HttpClientModule,\n ModalModule.forRoot(),\n SharedModule,\n DatePickerModule,\n CurrencyMaskModule,\n TextMaskModule,\n\n // MAESRK\n SubTributariaModuleRoutingModule,\n ],\n exports: [],\n declarations: [\n SubTributariaCompoent,\n SubTributariaDetalheComponent\n ],\n providers: [\n // PerfilService,\n // UsuarioService,\n // FuncionalidadeService\n ]\n})\nexport class SubTributariaModule { }\n","import { SubTributaria } from './../../_models/sub-tributaria';\nimport { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { SubTributariaCompoent } from './sub-tributaria.component';\nimport { SubTributariaDetalheComponent } from './sub-tributaria-detalhe/sub-tributaria-detalhe.component';\nimport { AuthGuard } from 'app/_guards/auth.guard';\n\nconst usuariosRoutes: Routes = [\n { path: '', component: SubTributariaCompoent, canActivate: [AuthGuard] },\n // { path: 'detalhe', component: UsuarioDetalheComponent, canActivate: [AuthGuard] },\n // { path: 'detalhe/:id', component: UsuarioDetalheComponent, canActivate: [AuthGuard] }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(usuariosRoutes)],\n exports: [RouterModule]\n})\nexport class SubTributariaModuleRoutingModule {}\n","import { Component, Input, OnInit, ViewChild, NgModule } from \"@angular/core\";\nimport { FormControl, FormGroup } from \"@angular/forms\";\nimport { ActivatedRoute, Params, Router } from \"@angular/router\";\nimport { MessageService } from \"./../../../_services/message.service\";\nimport { MessageComponent } from \"./../../../shared/message/message.component\";\nimport { DataService } from \"./../../../_services/data.service\";\nimport { SharedService } from \"./../../../_services/shared.service\";\nimport { BaseComponent } from \"./../../../shared/base.component\";\n\nimport { Observable } from \"rxjs\";\nimport { Subscription } from \"rxjs\";\n\n//DATEPICKER\nimport { DatepickerService } from \"app/_services/datepicker.service\";\nimport { DatePickerOptions } from \"app/shared/ng2-datepicker/ng2-datepicker.component\";\nimport { DateModel } from \"app/shared/ng2-datepicker/ng2-datepicker.component\";\nimport { DateExtensions } from 'app/shared/extensions/extensions.module';\n\n\n// MAERSK\nimport { ListItem } from \"./../../../_models/listItem\";\nimport { LogFrontFuncionalidade } from \"app/_enums/log-front-funcionalidade\";\nimport { Operacao } from \"app/_enums/operacao\";\nimport { SporadicTaxService } from \"./../../../_services/sporadic-tax.service\";\nimport { SporadicTax } from \"../../../_models/sporadic-tax\";\nimport { IDateModel } from '../../../shared/ng2-datepicker/ng2-datepicker.component';\nimport { TipoTaxaEsporadicaService } from \"app/_services/tipo-taxa-esporadica.service\";\nimport { TipoTaxaEsporadica } from \"app/_models/tipo-taxa-esporadica\";\nimport { PortoService } from \"app/_services/porto.service\";\nimport { Porto } from \"app/_models/porto\";\nimport { PortoInstantPaymentRequest } from \"app/_models/PortoInstantPaymentRequest\";\nimport { forEach } from \"jszip\";\nimport { AppService } from \"app/_services/app.service\";\nimport { PortoInstantPaymentResponse } from 'app/_models/PortoInstantPaymentResponse';\nimport { get } from 'selenium-webdriver/http';\nimport * as moment from \"moment\";\n\n\n@Component({\n selector: \"taxa-esporadica-detalhe\",\n templateUrl: \"./taxa-esporadica-detalhe.component.html\",\n styleUrls: [\"./taxa-esporadica-detalhe.component.scss\"],\n})\nexport class TaxaEsporadicaDetalheComponent extends BaseComponent\n implements OnInit {\n inscricaoGet: Subscription;\n @ViewChild(MessageComponent, { static: true }) mensagem: MessageComponent;\n\n titulo: string = \"Nova Taxa Esporádica\";\n // //listItem: ListItem;\n isNovaTaxa: boolean = true;\n\n regioesGeograficas: ListItem[] = new Array();\n tiposModais: ListItem[] = new Array();\n tipoTaxaEsporadicasList: TipoTaxaEsporadica[] = new Array();\n\n public portosOrigem: PortoInstantPaymentRequest[] = new Array();\n public portosOrigemSendoTrabalhado: PortoInstantPaymentRequest[] = new Array();\n\n portosDestino: PortoInstantPaymentRequest[] = new Array();\n portosDestinoSendoTrabalhado: PortoInstantPaymentRequest[] = new Array();\n portoOrigemSelecionado: PortoInstantPaymentRequest;\n portoDestinoSelecionado: PortoInstantPaymentRequest;\n\n sporadicTax: SporadicTax = new SporadicTax();\n taxasParaSalvar: SporadicTax[] = new Array();\n\n loading: boolean = false;\n\n inicioDateModel: DateModel;\n dataInicioOptions: DatePickerOptions;\n fimDateModel: DateModel;\n dataFimOptions: DatePickerOptions;\n\n\n startDate: Date = new Date();\n expirationDate: Date = new Date();\n isPeriodoFinalInvalido: boolean = false;\n isPeriodoInicialInvalido: boolean = false;\n dataInicioSelecionada: Date;\n dataFimSelecionada: Date;\n startDateModel: DateModel;\n expirationDateModel: DateModel;\n\n // MAERSK\n id: number = 0;\n qtdDiasFim: number = 365;\n sporadicTaxesList: SporadicTax[] = new Array();\n portoInstantPayment: PortoInstantPaymentRequest;\n\n\n constructor(\n private _appService: AppService,\n private _dataService: DataService,\n private _route: ActivatedRoute,\n private _msgService: MessageService,\n private _sharedService: SharedService,\n private _router: Router,\n private _datepickerService: DatepickerService,\n private _sporadicTaxService: SporadicTaxService,\n private route: ActivatedRoute,\n private _tipoTaxaEsporadicaService: TipoTaxaEsporadicaService,\n private _portoService: PortoService\n ) {\n super();\n\n this._msgService.emitirMensagem.subscribe((msg) => {\n this.mensagem.mostrarMensagem(msg.tipo, msg.mensagem);\n });\n\n\n this.ObterDataFields();\n\n }\n\n\n ngOnInit(): void {\n\n this.dataInicioSelecionada = new Date();\n this.setDataInicioPeriodo(this.dataInicioSelecionada);\n\n this.dataFimSelecionada = this._sharedService.addDays(this.dataInicioSelecionada, this.qtdDiasFim);\n\n this.setDataFimPeriodo(this.dataFimSelecionada);\n\n\n this.inscricaoGet = this._route.params.subscribe((params: any) => {\n this.id = params[\"id\"];\n if (this.id) {\n this.titulo = \"Editar Taxa Esporádica\";\n this.loading = true;\n\n this.isNovaTaxa = false;\n this.getTaxaEsporadica(this.id);\n\n }\n else {\n this.titulo = \"Nova Taxa Esporádica\";\n this.sporadicTax = new SporadicTax();\n this.isNovaTaxa = true;\n }\n });\n }\n\n // Eventos dos Objetos\n OnChangeSporadicTaxTypeCmb(value: any) {\n this.sporadicTax.sporadicTaxTypeId = parseInt(value.target.value);\n //this.setProximoInicioValido();\n }\n\n\n OnChangeOriginRegionCmb(value: any) {\n \n //this.setProximoInicioValido();\n\n this.portosOrigem = new Array();\n this.portosOrigemSendoTrabalhado = new Array();\n\n this._portoService.findByRegionId(this.sporadicTax.originRegionId).subscribe((lista) => {\n this.portosOrigem = lista;\n this.portosOrigemSendoTrabalhado = lista;\n\n console.log(this.portosOrigemSendoTrabalhado);\n });\n }\n\n\n OnChangeOriginPortoCmb(value: any) {\n\n this.portosOrigemSendoTrabalhado = this.getPortoById(this.sporadicTax.originPortId);\n\n }\n\n\n OnChangeOriginModalIdCmb(value: any) {\n this.sporadicTax.originModalId = value.target.value;\n //this.setProximoInicioValido();\n }\n\n\n OnChangeDestinationRegionCmb(value: any) {\n\n //this.setProximoInicioValido();\n\n this.portosDestino = new Array();\n this.portosDestinoSendoTrabalhado = new Array();\n\n this._portoService.findByRegionId(this.sporadicTax.destinationRegionId).subscribe((lista) => {\n this.portosDestino = lista;\n this.portosDestinoSendoTrabalhado = lista;\n console.log(this.portosDestinoSendoTrabalhado);\n });\n\n }\n\n\n OnChangeDestinationPortoCmb(value: any) {\n\n this.portosDestinoSendoTrabalhado = this.getPortoById(this.sporadicTax.destinationPortId);\n\n }\n\n\n getPortoById(portoId: number): PortoInstantPaymentRequest[] {\n let listaPortos: PortoInstantPaymentRequest[] = new Array();\n\n this._portoService.getById(portoId).subscribe((lista) => {\n listaPortos.push(lista);\n });\n\n return listaPortos;\n }\n\n OnChangeDestinationModalCmb(value: any) {\n this.sporadicTax.destinationModalId = value.target.value;\n //this.setProximoInicioValido();\n }\n\n\n // Metodos auxiliares\n ObterDataFields() {\n this._dataService.getRegiaoGeografica().subscribe((lista) => {\n this.regioesGeograficas = lista;\n });\n\n this._dataService.getTipoModal().subscribe((lista) => {\n this.tiposModais = lista;\n });\n\n\n this._tipoTaxaEsporadicaService.getAll().subscribe((lista) => {\n this.tipoTaxaEsporadicasList = lista;\n });\n\n }\n\n\n private ObterData(dateModel: DateModel, dateOffset: number) {\n return dateModel != undefined\n ? this._datepickerService.ObtemData(dateModel)\n : this._sharedService.addDays(new Date(), dateOffset);\n }\n\n\n\n async onSaveTaxaEsporadica() {\n this.loading = true;\n this._msgService.clearMessage();\n var msgErr: string[] = [];\n\n\n if( this.validacoes() == false)\n {\n this.loading = false;\n return;\n }\n\n this.sporadicTax.createdBy = this._appService.UsuarioLogado.Nome;\n \n let startDate: Date = moment( this._datepickerService.ObtemData(this.startDateModel, 'DD/MM/YYYY'), 'DD/MM/YYYY').toDate();\n let expirationDate: Date = moment( this._datepickerService.ObtemData(this.expirationDateModel, 'DD/MM/YYYY'), 'DD/MM/YYYY').toDate(); //this._datepickerService.ObtemData(this.expirationDateModel, 'DD/MM/YYYY');\n \n\n\n this.sporadicTax.startDate = startDate;\n this.sporadicTax.expirationDate = expirationDate;\n\n //Verifica se checkbox venceTaxaVigente está selecionado\n let venceTaxaVigenteCheckBox: any = document.getElementById('venceTaxaVigente')\n\n // if( venceTaxaVigenteCheckBox.checked){\n // this.sporadicTax.acao = 'VENCE';\n // }\n // else{\n // this.sporadicTax.acao = '';\n // }\n\n \n \n\n this.sporadicTax.acao = 'VENCE';\n\n\n\n this._sporadicTaxService.salvar(this.sporadicTax).subscribe((result) => {\n\n if (result.IsValid) {\n this._msgService.addMessageRedirect(\"Taxa Esporádica\", \"Registros salvos com sucesso.\", \"success\");\n this._router.navigate([\"taxa-esporadica\"]);\n }\n else {\n this.loading = false;\n result.Erros.forEach((element) => msgErr.push(element.Message));\n }\n\n });\n }\n\n\n getTaxaEsporadica(id: number) {\n this._sporadicTaxService\n .getSporadicTax(this.id)\n .subscribe((sporadicTax) => {\n\n\n this.sporadicTax = sporadicTax;\n\n var data = sporadicTax.startDate.toString();\n\n let _year = parseInt(data.substr(0, 4));\n let _month = parseInt(data.toString().substr(5, 2)) - 1;\n let _day = parseInt(data.toString().substr(8, 2));\n\n this.startDate = new Date(_year, _month, _day);\n this.startDate.setDate(this.startDate.getDate());\n\n this.setDataInicioPeriodo(this.startDate);\n\n\n //Data de Expiração\n data = sporadicTax.expirationDate.toString();\n\n\n _year = parseInt(data.substr(0, 4));\n _month = parseInt(data.toString().substr(5, 2)) - 1;\n _day = parseInt(data.toString().substr(8, 2));\n\n this.expirationDate = new Date(_year, _month, _day);\n this.expirationDate.setDate(this.expirationDate.getDate());\n\n this.setDataFimPeriodo(this.expirationDate);\n\n sporadicTax.containerType20Value = parseFloat(sporadicTax.containerType20Value.toString().replace(/\\./g, \"\").replace(',', '.'));\n sporadicTax.containerType40Value = parseFloat(sporadicTax.containerType40Value.toString().replace(/\\./g, \"\").replace(',', '.'));\n\n\n this._portoService.findByRegionId(sporadicTax.originRegionId).subscribe((lista) => {\n this.portosOrigem = lista;\n });\n\n\n this._portoService.findByRegionId(sporadicTax.destinationRegionId).subscribe((lista) => {\n this.portosDestino = lista;\n });\n\n\n this.portosOrigemSendoTrabalhado = this.getPortoById(this.sporadicTax.originPortId);\n this.portosDestinoSendoTrabalhado = this.getPortoById(this.sporadicTax.destinationPortId);\n\n this.loading = false;\n\n });\n }\n\n\n validaDataInicial() {\n\n this.isPeriodoFinalInvalido = false;\n\n let _dataInicial = this.getDate(this.inicioDateModel);\n\n // if (_dataInicial < this.startDate) {\n // this.dataInicioOptions = this._datepickerService.GenerateOptionsConfig(this.startDate);\n // this.inicioDateModel = DateExtensions.toDateModel(this.startDate, \"DD/MM/YYYY\");\n // //this.dataInicioOptions.minDate = this.startDate;\n // _dataInicial = this.startDate;\n // }\n\n this.setDataFimPeriodo(_dataInicial);\n\n }\n\n\n validaDataFinal() {\n\n this.isPeriodoInicialInvalido = false;\n\n let _dataInicial = this.getDate(this.inicioDateModel);\n let _dataFinal: Date = this.getDate(this.fimDateModel);\n\n this.isPeriodoFinalInvalido = _dataFinal <= _dataInicial;\n\n }\n\n\n setProximoInicioValido() {\n let isSporadicTaxTypeSelected: boolean = this.sporadicTax.sporadicTaxTypeId > 0;\n let isOriginRegionSelected: boolean = this.sporadicTax.originPortId > 0;\n let isOriginModalSelected: boolean = this.sporadicTax.originModalId != '';\n let isDestinationRegionSelected: boolean = this.sporadicTax.destinationPortId > 0;\n let isDestinationModaSelected: boolean = this.sporadicTax.destinationModalId != '';\n\n if (isSporadicTaxTypeSelected && isOriginRegionSelected && isOriginModalSelected && isDestinationRegionSelected && isDestinationModaSelected) {\n this._sporadicTaxService\n .findLastExpirationDate(this.sporadicTax.sporadicTaxTypeId, this.sporadicTax.originPortId, this.sporadicTax.originModalId, this.sporadicTax.destinationPortId, this.sporadicTax.destinationModalId)\n .subscribe((sporadicTax) => {\n\n let _year: number = 0;\n let _month: number = 0;\n let _day: number = 0;\n\n if (sporadicTax != null) {\n\n if (sporadicTax.expirationDate < new Date())\n this.startDate = new Date();\n else {\n var data = sporadicTax.expirationDate.toString();\n\n _year = parseInt(data.substr(0, 4));\n _month = parseInt(data.toString().substr(5, 2));\n _day = parseInt(data.toString().substr(8, 2));\n\n this.startDate = new Date(_year, _month - 1, _day);\n this.startDate.setDate(this.startDate.getDate() + 1);\n }\n\n\n this.setDataInicioPeriodo(this.startDate);\n\n\n this.loading = false;\n }\n else {\n this.startDate = new Date();\n _year = this.startDate.getFullYear();\n _month = this.startDate.getMonth();\n _day = this.startDate.getDay();\n\n this.dataInicioOptions = this._datepickerService.GenerateOptionsConfig(this.startDate);\n this.inicioDateModel = DateExtensions.toDateModel(this.startDate, \"DD/MM/YYYY\");\n //this.dataInicioOptions.minDate = this.startDate;\n }\n\n let _dataFim: Date = this._sharedService.addDays(this.startDate, this.qtdDiasFim);\n\n this.setDataFimPeriodo(_dataFim);\n\n // this.dataFimOptions = this._datepickerService.GenerateOptionsConfig( _dataFim);\n // this.fimDateModel = DateExtensions.toDateModel(this._sharedService.addDays(this.startDate, this.qtdDiasFim), \"DD/MM/YYYY\");\n\n });\n }\n else {\n console.log('Selecione todos os ids.');\n }\n }\n\n\n setDataInicioPeriodo(novaData: Date) {\n\n this.inicioDateModel = new DateModel()\n this.dataInicioOptions = this._datepickerService.GenerateOptionsConfig(novaData);\n //this.dataInicioOptions.minDate = novaData;\n this.dataInicioOptions.initialDate = novaData;\n\n this.inicioDateModel = DateExtensions.toDateModel(novaData, \"DD/MM/YYYY\");\n this.inicioDateModel.day = novaData.getDate().toString();\n this.inicioDateModel.month = (novaData.getMonth() + 1).toString();\n this.inicioDateModel.year = novaData.getFullYear().toString();\n\n this.startDateModel = this.inicioDateModel;\n }\n\n\n setDataFimPeriodo(novaData: Date) {\n this.fimDateModel = new DateModel();\n this.dataFimOptions = this._datepickerService.GenerateOptionsConfig(novaData);\n // this.dataFimOptions.minDate = this.startDate;\n this.fimDateModel = DateExtensions.toDateModel(novaData, \"DD/MM/YYYY\");\n this.fimDateModel.day = novaData.getDate().toString();\n this.fimDateModel.month = novaData.getMonth().toString();\n this.fimDateModel.year = novaData.getFullYear().toString();\n\n this.expirationDateModel = this.fimDateModel;\n }\n\n\n getDate(dateModel: DateModel): Date {\n let _year: number = parseInt(dateModel.year);\n let _month: number = parseInt(dateModel.month);\n let _day: number = parseInt(dateModel.day);\n\n let dataTmp: Date = new Date(_year, _month - 1, _day);\n\n return dataTmp;\n\n }\n\n\n getToday(): Date {\n let dia = new Date().getDate();\n let mes = new Date().getMonth();\n let ano = new Date().getFullYear();\n\n return new Date(ano, mes, dia);;\n }\n\n validacoes(): boolean {\n var mensagens: string[] = [];\n\n let isNomeTaxaPreenchido = this.sporadicTax.sporadicTaxName.length > 0;\n let isTipoTaxaSelecionada = this.sporadicTax.sporadicTaxTypeId > 0;\n\n if (!isNomeTaxaPreenchido){\n mensagens.push(\"Selecione um tipo de pagamento!\");\n }\n\n \n if (!isTipoTaxaSelecionada){\n mensagens.push('Selecione uma classificação para o cliente!');\n }\n \n \n // if (!isTipoServicoSelecionado){\n // mensagens.push(\"Selecione um tipo de serviço!\");\n // }\n \n\n // if (!isUfPagadorInformada){\n // mensagens.push(\"A UF do pagador do frete!\");\n // }\n \n\n // if (!isUfPgadorValido){\n // mensagens.push(\"A UF do pagadorXXXXXXX!\");\n // }\n\n // if (!vlrNotaFiscal){\n // mensagens.push(\"Informe o valor da NF.\");\n // } \n\n // this._msgService.addMessageArray('Info - PIX', mensagens, 'error', LogFrontFuncionalidade.Booking, Operacao.Inclusao);\n\n\n return mensagens.length == 0;\n \n }\n}\n","import { Component, OnInit, ViewChild } from '@angular/core';\n\nimport { PerfilService } from '../../_services/perfil.service';\nimport { SharedService } from 'app/_services/shared.service';\nimport { MessageService } from './../../_services/message.service';\nimport { UsuarioService } from './../../_services/usuario.service';\nimport { GenericOrderbyService } from 'app/_services/generic-orderby.service';\nimport { Perfil } from 'app/_models/perfil';\nimport { UsuarioPesquisa } from './../../_models/usuario-pesquisa';\nimport { BaseComponent } from 'app/shared/base.component';\nimport { MessageComponent } from './../../shared/message/message.component';\nimport { PaginacaoComponent } from 'app/shared/paginacao/paginacao.component';\nimport { FilterComboConfiguration } from \"app/_models/filterComboConfiguration\";\n\nimport { StatusUsuario } from 'app/_enums/status-usuario.enum';\nimport { Operacao } from 'app/_enums/operacao';\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\nimport { DatepickerService } from 'app/_services/datepicker.service';\nimport { DatePickerOptions, DateModel } from 'app/shared/ng2-datepicker/ng2-datepicker.component';\nimport * as moment from 'moment-timezone';\nimport { UsuarioPesquisaRequest } from 'app/_models/usuario-pesquisa-request';\nimport { SporadicTaxService } from 'app/_services/sporadic-tax.service';\nimport { SporadicTax } from 'app/_models/sporadic-tax';\nimport { DataService } from \"./../../_services/data.service\";\nimport { ListItem } from \"./../../_models/listItem\";\nimport { parse } from 'path';\nimport { BaseService } from 'app/_services/base.service';\nimport * as dayjs from 'dayjs';\nimport { TipoTaxaEsporadicaService } from 'app/_services/tipo-taxa-esporadica.service';\nimport { PortoService } from 'app/_services/porto.service';\nimport { PortoInstantPaymentRequest } from 'app/_models/PortoInstantPaymentRequest';\nimport { TipoTaxaEsporadica } from 'app/_models/tipo-taxa-esporadica';\nimport { letterSpacing } from 'html2canvas/dist/types/css/property-descriptors/letter-spacing';\n\n\n@Component({\n selector: 'app-taxa-esporadica',\n templateUrl: './taxa-esporadica.component.html',\n styleUrls: ['./taxa-esporadica.component.scss']\n})\nexport class TaxaEsporadicaComponent extends BaseComponent implements OnInit {\n\n @ViewChild(MessageComponent, { static: true }) mensagem: MessageComponent;\n @ViewChild(PaginacaoComponent, { static: true }) paginacao: PaginacaoComponent;\n\n filtro: UsuarioPesquisa = new UsuarioPesquisa();\n request: UsuarioPesquisaRequest = new UsuarioPesquisaRequest();\n\n public loadingSporadicTaxes: boolean = false;\n\n loading: boolean = false;\n comboStatus: FilterComboConfiguration;\n comboPerfis: FilterComboConfiguration;\n statusSelecionados: number[];\n perfisSelecionados: number[];\n perfis: Perfil[];\n downloading: boolean = false;\n\n regioesGeograficas: ListItem[] = new Array();\n tiposModais: ListItem[] = new Array();\n sporadicTaxesList: SporadicTax[] = new Array();\n tipoTaxaEsporadicasList: TipoTaxaEsporadica[] = new Array();\n\n statusesList: ListItem[] = new Array();\n sporadicTaxTypeId: number = 0;\n originRegionId: number = 0;\n originPortId: number = 0;\n originModalId: string = '';\n destinationRegionId: number = 0;\n destinationPortId: number = 0;\n destinationModalId: string = '';\n isEnabled: number = 0;\n\n portosLista: PortoInstantPaymentRequest[] = new Array();\n portosOrigemLista: PortoInstantPaymentRequest[] = new Array();\n portosDestinoLista: PortoInstantPaymentRequest[] = new Array();\n\n optionsInicio: DatePickerOptions = {\n format: 'DD-MM-YYYY',\n todayText: 'Hoje',\n style: 'big'\n };\n\n optionsFim: DatePickerOptions;\n dataInicio: DateModel;\n dataFim: DateModel;\n\n taxTypesFilterCboConfig: FilterComboConfiguration;\n statusesFilterCboConfig: FilterComboConfiguration;\n\n pageSize: number = 20;\n\n constructor(\n private baseService: BaseService,\n private _dataService: DataService,\n private _sharedService: SharedService,\n private _msgService: MessageService,\n private _usuarioService: UsuarioService,\n private _perfilService: PerfilService,\n private _genericOrderbyService: GenericOrderbyService,\n private _datepickerService: DatepickerService,\n private _tipoTaxaEsporadicaService: TipoTaxaEsporadicaService,\n private _portoService: PortoService,\n private _sporadicTaxService: SporadicTaxService) {\n\n super();\n\n\n\n this.taxTypesFilterCboConfig = new FilterComboConfiguration(\"Selecione...\");\n this.taxTypesFilterCboConfig.settings = {\n checkedStyle: 'glyphicon',\n dynamicTitleMaxItems: 1,\n enableSearch: false\n };\n\n this.statusesFilterCboConfig = new FilterComboConfiguration(\"Selecione...\");\n this.statusesFilterCboConfig.settings = {\n checkedStyle: 'glyphicon',\n dynamicTitleMaxItems: 1,\n enableSearch: false\n };\n\n this.optionsInicio = this._datepickerService.GenerateOptionsConfig(this._sharedService.addDays(new Date(), -30));\n this.optionsFim = this._datepickerService.GenerateOptionsConfig(new Date());\n\n this._msgService.emitirMensagem.subscribe(\n msg => {\n this.mensagem.mostrarMensagem(msg.tipo, msg.mensagem);\n }\n );\n\n\n }\n\n ngOnInit() {\n\n this.ObterDataFields();\n\n // Define o primeiro item como selecionado (índice 0)\n this.sporadicTaxTypeId = this.tipoTaxaEsporadicasList[0].id;\n this.originRegionId = parseInt(this.regioesGeograficas[0].codigo);\n\n\n this.OnChangeOriginRegion(this.originRegionId);\n\n this.originPortId = this.portosOrigemLista[0].id;\n this.originModalId = this.tiposModais[0].codigo;\n this.destinationRegionId= parseInt(this.regioesGeograficas[0].codigo);\n\n this.OnChangeDestinationRegion(this.destinationRegionId);\n\n this.destinationPortId= this.portosDestinoLista[0].id;\n this.destinationModalId= this.tiposModais[0].codigo;\n\n\n this.ObterSporadicTaxes(this.sporadicTaxTypeId, this.originRegionId, this.originPortId, this.originModalId, this.destinationRegionId, this.destinationPortId, this.destinationModalId, this.isEnabled);\n\n let msg = this._msgService.getMessageRedirect();\n if (msg.show)\n this._msgService.addMessage(msg.titulo, msg.mensagem, msg.type, LogFrontFuncionalidade.Usuarios, Operacao.Consulta, this.filtro);\n }\n\n\n private ObterSporadicTaxes(sporadicTaxTypeId: number, originRegionId: number, originPortId: number, originModalId: string, destinationRegionId: number, destinationPortId: number, destinationModalId: string, isEnabled: number) {\n this.loading = true;\n var formato = \"YYYY-MM-dd\";\n\n\n\n this._sporadicTaxService.findAllSpec(sporadicTaxTypeId, originRegionId, originPortId, originModalId, destinationRegionId, destinationPortId, destinationModalId, isEnabled)\n .subscribe(lista => {\n\n //const distinto = lista.reduce(a {a.sporadicTaxTypeId, a.originRegionId, originPortId, originModalId, destinationRegionId, destinationPortId, destinationModalId});\n\n if (lista != null) {\n //preciso extrair uma lista contendo originRegionId, originModalId, destinationRegionId destinationModalId da lista\n const distinctList = lista.reduce((accumulator, current) => {\n const { sporadicTaxName, sporadicTaxTypeId, originRegionId, originPortId, originModalId, destinationRegionId, destinationPortId, destinationModalId, containerType20Value, containerType40Value, startDate, expirationDate, isEnabled } = current;\n const exists = accumulator.some(item => item.sporadicTaxName == sporadicTaxName &&\n item.sporadicTaxTypeId == sporadicTaxTypeId &&\n item.originRegionId === originRegionId &&\n item.originPortId === originPortId &&\n item.originModalId === originModalId &&\n item.destinationRegionId === destinationRegionId &&\n item.destinationPortId === destinationPortId &&\n item.destinationModalId === destinationModalId &&\n item.containerType20Value === containerType20Value &&\n item.containerType40Value === containerType40Value &&\n item.startDate == startDate &&\n item.expirationDate == expirationDate &&\n item.isEnabled === isEnabled);\n if (!exists) {\n accumulator.push({ sporadicTaxName, sporadicTaxTypeId, originRegionId, originPortId, originModalId, destinationRegionId, destinationPortId, destinationModalId, containerType20Value, containerType40Value, startDate, expirationDate, isEnabled });\n }\n return accumulator;\n }, []);\n\n // const uniqueAuthors = lista.reduce((accumulator, current) => {\n // if (!accumulator.find((item) => item.sporadicTaxTypeId === current.sporadicTaxTypeId &&\n // item.originModalId === current.originModalId &&\n // item.destinationModalId === current.destinationModalId)) {\n // accumulator.push(current);\n // }\n // return accumulator;\n // }, []);\n\n\n var hoje = new Date();\n hoje.setHours(0, 0, 0, 0);\n\n\n for (var a = 0; a < distinctList.length; a++) {\n // let found = lista.filter(item => item.sporadicTaxTypeId === distinctList[i].sporadicTaxTypeId &&\n // item.originModalId === distinctList[i].originModalId &&\n // item.destinationModalId === distinctList[i].destinationModalId);\n\n\n\n var tempo = new Date();\n tempo.setHours(0, 0, 0, 0);\n\n\n //for (var a = 0; a < found.length; a++) {\n\n //var dtVencimento = this.ConvertDateText(distinctList[a].expirationDate.toString());\n\n //if (dtVencimento.getTime() > tempo.getTime()) {\n // tempo = dtVencimento;\n //}\n //}\n\n\n //for (var a = 0; a < found.length; a++) {\n //console.log(found[a]);\n // var dtInicio = this.ConvertDateText(distinctList[a].startDate.toString());\n // var dtVencimento = this.ConvertDateText(distinctList[a].expirationDate.toString());\n\n // distinctList[a].Acao = '';\n\n // if (tempo.getTime() === dtVencimento.getTime()) {\n\n // if (hoje.getTime() >= dtInicio.getTime() && hoje.getTime() < dtVencimento.getTime()) {\n // distinctList[a].Acao = 'EDITAR';\n // }\n // else {\n // distinctList[a].Acao = 'EXCLUIR';\n // }\n // }\n //}\n }\n\n this.sporadicTaxesList = distinctList;\n //console.log(this.sporadicTaxesList);\n this.paginacao.setAllData(this.sporadicTaxesList);\n this.paginacao.setPageSize(this.pageSize);\n this.paginacao.setPage(1);\n }\n this.loading = false;\n }, (err) => {\n });\n }\n\n\n DeletarTaxaEsporadica(id: number) {\n console.log(\"Excluindo registro de substituição tributária.\");\n this._msgService.clearMessage();\n var msgErr: string[] = [];\n\n\n this._sporadicTaxService.delete(id)\n .subscribe(result => {\n\n if (result.IsValid) {\n\n this._msgService.addMessageRedirect(\"Taxa Esporádica\", \"Registro excluído sucesso.\", \"success\");\n\n this.Pesquisar();\n\n }\n else {\n this.loading = false;\n result.Erros.forEach((element) => msgErr.push(element.Message));\n }\n\n\n });\n\n }\n\n\n Pesquisar() {\n //console.log(this.sporadicTaxTypeId);\n //console.log(this.isEnabled);\n\n if (this.sporadicTaxTypeId == undefined)\n this.sporadicTaxTypeId = 0;\n\n\n this.ObterSporadicTaxes(this.sporadicTaxTypeId, this.originRegionId, this.originPortId, this.originModalId, this.destinationRegionId, this.destinationPortId, this.destinationModalId, this.isEnabled);\n\n }\n\n public getClasse(status: StatusUsuario): string {\n return this._usuarioService.getClasse(status);\n }\n\n public getString(status: StatusUsuario): string {\n return this._usuarioService.getString(status);\n }\n\n getNomePerfilECargo(perfil: any): string {\n return this._usuarioService.getNomePerfilECargo(perfil);\n }\n\n setPageSize(value: number) {\n this.pageSize = value;\n this.paginacao.setAllData(this.sporadicTaxesList);\n this.paginacao.setPageSize(value);\n this.paginacao.setPage(1);\n }\n\n\n atribuiPeriodoInicialEFinal(): void {\n this.request.Nome = this.filtro.Nome;\n this.request.Email = this.filtro.Email;\n this.request.RazaoSocial = this.filtro.RazaoSocial;\n this.request.Perfil = this.filtro.Perfil;\n this.request.Status = this.filtro.Status;\n this.request.CNPJ = this.filtro.CNPJ;\n let dataInicio = this.filtro.CadastradosDe ? this._datepickerService.ObtemData(this.filtro.CadastradosDe, 'DD/MM/YYYY') : null;\n let dataFim = this.filtro.CadastradosAte ? this._datepickerService.ObtemData(this.filtro.CadastradosAte, 'DD/MM/YYYY') : null;\n this.request.CadastradosDe = dataInicio;\n this.request.CadastradosAte = dataFim\n }\n\n\n setTipoTaxa(tipoTaxaId: number): string {\n let item1 = this.tipoTaxaEsporadicasList.find(i => i.id === tipoTaxaId);\n return item1.name;\n }\n\n\n setRegiaoGeografica(regiaoGeograficaId: number): string {\n let item1 = this.regioesGeograficas.find(i => i.codigo === regiaoGeograficaId.toString());\n return item1.descricao;\n }\n\n\n setPorto(portoId: number): string {\n let item1;\n let descricao = '';\n\n if (portoId != undefined) {\n item1 = this.portosLista.find(i => i.id === portoId);\n descricao = item1?.description;\n\n if(item1 == undefined)\n console.log(\"Porto não encontrado: \" + portoId);\n\n }\n else {\n descricao = '';\n }\n\n return descricao;\n }\n\n\n setModal(modalId: string): string {\n let item1 = this.tiposModais.find(i => i.codigo === modalId.toString());\n return item1.descricao;\n }\n\n\n ObterDataFields() {\n\n this._dataService.getRegiaoGeografica().subscribe((lista) => {\n this.regioesGeograficas = lista;\n });\n\n this._dataService.getTipoModal().subscribe((lista) => {\n this.tiposModais = lista;\n });\n\n\n this._tipoTaxaEsporadicaService.getAll().subscribe((lista) => {\n this.tipoTaxaEsporadicasList = lista;\n });\n\n this._dataService.getStatuses().subscribe((lista) => {\n this.statusesList = lista;\n });\n\n this._portoService.getAll().subscribe((lista) => {\n this.portosLista = lista;\n });\n }\n\n\n formatDate(data: Date): string {\n\n let dataTMP = data.toString().substring(0, 10);\n\n let day: string = dataTMP.substr(8, 2);\n let month: string = dataTMP.substr(5, 2);\n let year: string = dataTMP.substr(0, 4);\n\n let formattedDate: string = day + \"/\" + month.toString() + \"/\" + year.toString();\n dataTMP = formattedDate;\n return dataTMP;\n\n }\n\n ConvertDateText(data: string): Date {\n\n let year: number = parseInt(data.substr(0, 4));\n let month: number = parseInt(data.toString().substr(5, 2));\n let day: number = parseInt(data.toString().substr(8, 2));\n\n let novaData = new Date(year, month - 1, day);\n\n return novaData;\n }\n\n\n habilitaEdicao(_sporadicTax: SporadicTax): boolean {\n var data = _sporadicTax.expirationDate.toString();\n\n let year: number = parseInt(data.substr(0, 4));\n let month: number = parseInt(data.toString().substr(5, 2));\n let day: number = parseInt(data.toString().substr(8, 2));\n\n let _date = new Date(year, month - 1, day);\n\n if (_date <= new Date())\n return false;\n\n if (_sporadicTax.isEnabled != 1)\n return false;\n\n\n return true;\n }\n\n\n OnChangeOriginRegion(itemSelecionado: any) {\n\n this.portosOrigemLista = new Array();\n\n this._portoService.findByRegionId(itemSelecionado.target.value).subscribe((lista) => {\n this.portosOrigemLista = lista;\n });\n }\n\n\n OnChangeDestinationRegion(itemSelecionado: any) {\n\n this.portosDestinoLista = new Array();\n\n this._portoService.findByRegionId(itemSelecionado.target.value).subscribe((lista) => {\n this.portosDestinoLista = lista;\n });\n\n\n }\n\n\n OnChangePageSize(qtdLinhas: number) {\n\n this.setPageSize(qtdLinhas)\n\n }\n\n\n habilitaExclusao(_sporadicTax: SporadicTax): boolean {\n\n return _sporadicTax.acao == \"EXC\";\n }\n\n\n exportarRelatorioCSV() {\n this.downloading = true;\n\n const titulos: any[] = [\n \"NOME\",\n \"TIPO\",\n \"REGÃO DE ORIGEM\",\n \"PORTO DE ORIGEM\",\n \"MODAL DE ORIGEM\",\n \"REGIÃO DE DESTINO\",\n \"PORTO DE DESTINO\",\n \"MODAL DE DESTINO\",\n \"VLR. TIPO CONTEINER 20\",\n \"VLR. TIPO CONTEINER 40\",\n \"INI. PERIODO\",\n \"FIM PERIODO\",\n \"STATUS\"];\n\n const data: any[] = [];\n\n\n this.sporadicTaxesList.forEach(x => {\n let sporadicTaxTypeId: string = this.setTipoTaxa(x.sporadicTaxTypeId);\n let originRegionId: string = this.setRegiaoGeografica(x.originRegionId);\n let originPortId: string = this.setPorto(x.originPortId);\n let originModalId: string = this.setModal(x.originModalId);\n let destinationRegionId: string = this.setRegiaoGeografica(x.destinationRegionId);\n let destinationPortId: string = this.setPorto(x.destinationPortId);\n let destinationModalId: string = this.setModal(x.destinationModalId);\n let isEnabled: string = (x.isEnabled == 1) ? 'Ativo' : 'Inativo'\n\n\n data.push([\n x.sporadicTaxName,\n sporadicTaxTypeId,\n originRegionId,\n originPortId,\n originModalId,\n destinationRegionId,\n destinationPortId,\n destinationModalId,\n x.containerType20Value,\n x.containerType40Value,\n x.startDate.toString().substr(0, 10),\n x.expirationDate.toString().substr(0, 10),\n //x.createdOn.toString().substr(0, 10),\n isEnabled\n ]);\n });\n\n\n this.downloading = false;\n this.baseService.DownloadXLSX(data, titulos, 'TaxasEsporadicas.xlsx');\n\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { ModalModule } from 'ngx-bootstrap/modal';\n\nimport { SharedModule } from './../../shared/shared.module';\nimport { CurrencyMaskModule } from 'ng2-currency-mask';\nimport { TextMaskModule } from 'angular2-text-mask';\n\n//DATEPICKER\nimport { DatePickerModule } from 'app/shared/ng2-datepicker/ng2-datepicker.module';\n\n// MAERSK\nimport { TaxaEsporadicaModuleRoutingModule } from './taxa-esporadica.routing.module';\nimport { TaxaEsporadicaComponent } from './taxa-esporadica.component';\nimport { TaxaEsporadicaDetalheComponent } from './taxa-esporadica-detalhe/taxa-esporadica-detalhe.component';\n\n\n@NgModule({\n imports: [\n FormsModule,\n CommonModule,\n HttpClientModule,\n ModalModule.forRoot(),\n SharedModule,\n DatePickerModule,\n CurrencyMaskModule,\n TextMaskModule,\n\n // MAESRK\n TaxaEsporadicaModuleRoutingModule,\n ],\n exports: [],\n declarations: [\n TaxaEsporadicaComponent,\n TaxaEsporadicaDetalheComponent\n ],\n providers: [\n // PerfilService,\n // UsuarioService,\n // FuncionalidadeService\n ]\n})\nexport class TaxaEsporadicaModule { }\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { TaxaEsporadicaComponent } from './taxa-esporadica.component';\nimport { TaxaEsporadicaDetalheComponent } from './taxa-esporadica-detalhe/taxa-esporadica-detalhe.component';\nimport { AuthGuard } from 'app/_guards/auth.guard';\n\nconst usuariosRoutes: Routes = [\n { path: '', component: TaxaEsporadicaComponent, canActivate: [AuthGuard] },\n // { path: 'detalhe', component: UsuarioDetalheComponent, canActivate: [AuthGuard] },\n // { path: 'detalhe/:id', component: UsuarioDetalheComponent, canActivate: [AuthGuard] }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(usuariosRoutes)],\n exports: [RouterModule]\n})\nexport class TaxaEsporadicaModuleRoutingModule {}\n","import { Component, Input, OnInit, ViewChild, NgModule } from \"@angular/core\";\nimport { FormControl, FormGroup } from \"@angular/forms\";\nimport { ActivatedRoute, Params, Router } from \"@angular/router\";\nimport { MessageService } from \"../../../_services/message.service\";\nimport { MessageComponent } from \"../../../shared/message/message.component\";\nimport { DataService } from \"../../../_services/data.service\";\nimport { SharedService } from \"../../../_services/shared.service\";\nimport { BaseComponent } from \"../../../shared/base.component\";\n\n\n\nimport { Observable } from \"rxjs\";\nimport { Subscription } from \"rxjs\";\n\n\n//DATEPICKER\nimport { DatepickerService } from \"app/_services/datepicker.service\";\nimport { DatePickerOptions } from \"app/shared/ng2-datepicker/ng2-datepicker.component\";\nimport { DateModel } from \"app/shared/ng2-datepicker/ng2-datepicker.component\";\nimport { DateExtensions } from 'app/shared/extensions/extensions.module';\n\n\n// MAERSK\nimport { ListItem } from \"../../../_models/listItem\";\nimport { LogFrontFuncionalidade } from \"app/_enums/log-front-funcionalidade\";\nimport { Operacao } from \"app/_enums/operacao\";\nimport { SporadicTaxService } from \"../../../_services/sporadic-tax.service\";\nimport { SporadicTax } from \"../../../_models/sporadic-tax\";\nimport { IDateModel } from '../../../shared/ng2-datepicker/ng2-datepicker.component';\nimport { TipoTaxaEsporadica } from \"app/_models/tipo-taxa-esporadica\";\nimport { TipoTaxaEsporadicaService } from \"app/_services/tipo-taxa-esporadica.service\";\nimport { BaseService } from \"app/_services/base.service\";\n\n\n@Component({\n selector: \"tipo-taxa-esporadica-detalhe\",\n templateUrl: \"./tipo-taxa-esporadica-detalhe.component.html\",\n styleUrls: [\"./tipo-taxa-esporadica-detalhe.component.scss\"],\n})\nexport class TipoTaxaEsporadicaDetalheComponent extends BaseComponent\n implements OnInit {\n inscricaoGet: Subscription;\n @ViewChild(MessageComponent, { static: true }) mensagem: MessageComponent;\n\n titulo: string = \"Nova Tipo Taxa Esporádica\";\n // //listItem: ListItem;\n isNovaTaxa: boolean = true;\n\n tipoTaxaEsporadica: TipoTaxaEsporadica = new TipoTaxaEsporadica();\n\n loading: boolean = false;\n id: number = 0;\n\n constructor(\n private baseService: BaseService,\n private _dataService: DataService,\n private _route: ActivatedRoute,\n private _msgService: MessageService,\n private _sharedService: SharedService,\n private _router: Router,\n private _datepickerService: DatepickerService,\n private _tipoTaxaEsporadicaService: TipoTaxaEsporadicaService,\n private route: ActivatedRoute\n ) {\n super();\n\n this._msgService.emitirMensagem.subscribe((msg) => {\n this.mensagem.mostrarMensagem(msg.tipo, msg.mensagem);\n });\n\n\n this.ObterDataFields();\n\n }\n\n ngOnInit(): void {\n\n this.inscricaoGet = this._route.params.subscribe((params: any) => {\n this.id = params[\"id\"];\n if (this.id) {\n this.titulo = \"Editar Tipo de Taxa Esporádica\";\n this.loading = true;\n\n this.isNovaTaxa = false;\n this.getTipoTaxaEsporadica(this.id);\n\n }\n else {\n this.titulo = \"Nova Tipo de Taxa Esporádica\";\n this.isNovaTaxa = true;\n }\n });\n }\n\n\n // Metodos auxiliares\n ObterDataFields() {\n\n }\n\n private ObterData(dateModel: DateModel, dateOffset: number) {\n return dateModel != undefined\n ? this._datepickerService.ObtemData(dateModel)\n : this._sharedService.addDays(new Date(), dateOffset);\n }\n\n onSaveTipoTaxaEsporadica() {\n this._msgService.clearMessage();\n\n this.tipoTaxaEsporadica.isEnabled = true;\n this.tipoTaxaEsporadica.createdOn = null;\n this.tipoTaxaEsporadica.updatedOn = null;\n\n if(this.tipoTaxaEsporadica.id == 0){\n this.tipoTaxaEsporadica.createdBy = this.baseService.UsuarioLogado.Nome;\n }\n else\n {\n this.tipoTaxaEsporadica.updatedBy = this.baseService.UsuarioLogado.Nome;\n }\n\n this._tipoTaxaEsporadicaService.salvar(this.tipoTaxaEsporadica).subscribe((result) => {\n this.loading = false;\n\n if (result.IsValid) {\n this._router.navigate([\"tipo-taxa-esporadica\"]);\n this._msgService.addMessageRedirect(\n \"Tipo Taxa Esporádica\",\n result.Message,\n \"success\"\n );\n } else {\n var msgErr: string[] = [];\n result.Erros.forEach((element) => msgErr.push(element.Message));\n this._msgService.addMessageArray(\n \"Tipo Taxa Esporádica\",\n msgErr,\n \"error\",\n LogFrontFuncionalidade.TipoTaxaEsporadica,\n Operacao.Alteracao,\n this.tipoTaxaEsporadica\n );\n this.loading = false;\n }\n });\n }\n\n\n formatDate(data: Date): string\n {\n\n let dataTMP = data.toString().substring(0,10);\n\n let day: string = dataTMP.substr(8, 2);\n let month: string = dataTMP.substr(5,2);\n let year: string = dataTMP.substr(0,4);\n\n let formattedDate: string = day + \"/\" + month.toString() + \"/\" + year.toString();\n dataTMP = formattedDate;\n return dataTMP;\n\n }\n\n\n getTipoTaxaEsporadica(id: number) {\n this._tipoTaxaEsporadicaService\n .getTipoTaxaEsporadica(id)\n .subscribe((tipoTaxaEsporadica) => {\n\n this.tipoTaxaEsporadica = tipoTaxaEsporadica;\n\n this.loading = false;\n\n });\n }\n\n}\n","import { Component, OnInit, ViewChild } from '@angular/core';\n\nimport { SharedService } from 'app/_services/shared.service';\nimport { MessageService } from './../../_services/message.service';\nimport { UsuarioService } from './../../_services/usuario.service';\nimport { GenericOrderbyService } from 'app/_services/generic-orderby.service';\nimport { Perfil } from 'app/_models/perfil';\nimport { UsuarioPesquisa } from './../../_models/usuario-pesquisa';\nimport { BaseComponent } from 'app/shared/base.component';\nimport { MessageComponent } from './../../shared/message/message.component';\nimport { PaginacaoComponent } from 'app/shared/paginacao/paginacao.component';\nimport { FilterComboConfiguration } from \"app/_models/filterComboConfiguration\";\n\nimport { StatusUsuario } from 'app/_enums/status-usuario.enum';\nimport { Operacao } from 'app/_enums/operacao';\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\nimport { DatepickerService } from 'app/_services/datepicker.service';\nimport { DatePickerOptions, DateModel } from 'app/shared/ng2-datepicker/ng2-datepicker.component';\nimport { UsuarioPesquisaRequest } from 'app/_models/usuario-pesquisa-request';\nimport { SporadicTaxService } from 'app/_services/sporadic-tax.service';\nimport { SporadicTax } from 'app/_models/sporadic-tax';\nimport { DataService } from \"./../../_services/data.service\";\nimport { ListItem } from \"./../../_models/listItem\";\nimport { parse } from 'path';\nimport { BaseService } from 'app/_services/base.service';\nimport {TipoTaxaEsporadicaService} from './../../_services/tipo-taxa-esporadica.service'\nimport { TipoTaxaEsporadica } from 'app/_models/tipo-taxa-esporadica';\n\n@Component({\n selector: 'app-tipo-taxa-esporadica',\n templateUrl: './tipo-taxa-esporadica.component.html',\n styleUrls: ['./tipo-taxa-esporadica.component.scss']\n})\nexport class TipoTaxaEsporadicaComponent extends BaseComponent implements OnInit {\n\n @ViewChild(MessageComponent, {static: true}) mensagem: MessageComponent;\n @ViewChild(PaginacaoComponent, {static: true}) paginacao: PaginacaoComponent;\n\n filtro: UsuarioPesquisa = new UsuarioPesquisa();\n request: UsuarioPesquisaRequest = new UsuarioPesquisaRequest();\n\n public loadingSporadicTaxes: boolean = false;\n\n loading: boolean = false;\n comboStatus: FilterComboConfiguration;\n comboPerfis: FilterComboConfiguration;\n statusSelecionados: number[];\n perfisSelecionados: number[];\n pageSize: number = 50;\n downloading: boolean = false;\n\n tipoTaxaEsporadicaLista: TipoTaxaEsporadica[] = new Array();\n sporadicTaxTypeId: number;\n isEnabled: number;\n\n\n constructor(\n private baseService: BaseService,\n private _dataService: DataService,\n private _sharedService: SharedService,\n private _msgService: MessageService,\n private _usuarioService: UsuarioService,\n private _genericOrderbyService: GenericOrderbyService,\n private _datepickerService: DatepickerService,\n private _tipoTaxaEsporadicaService: TipoTaxaEsporadicaService ) {\n\n super();\n\n this._msgService.emitirMensagem.subscribe(\n msg => {\n this.mensagem.mostrarMensagem(msg.tipo, msg.mensagem);\n }\n );\n\n this.ObterDataFields();\n }\n\n ngOnInit() {\n this.getTipoTaxaEsporadica(0, 0);\n\n let msg = this._msgService.getMessageRedirect();\n if (msg.show)\n this._msgService.addMessage(msg.titulo, msg.mensagem, msg.type, LogFrontFuncionalidade.Usuarios, Operacao.Consulta, this.filtro);\n }\n\n private getTipoTaxaEsporadica(sporadicTaxTypeId: number, isEnabled: number) {\n this.loading = true;\n this._tipoTaxaEsporadicaService.getAll()\n .subscribe(lista => {\n this.tipoTaxaEsporadicaLista = lista;\n console.log(this.tipoTaxaEsporadicaLista);\n this.paginacao.setAllData(this.tipoTaxaEsporadicaLista);\n this.paginacao.setPage(1);\n this.loading = false;\n }, (err) => {\n });\n\n this.loading = false;\n }\n\n\n Pesquisar() {\n console.log(this.sporadicTaxTypeId);\n console.log(this.isEnabled );\n\n if (this.sporadicTaxTypeId == undefined)\n this.sporadicTaxTypeId=0;\n\n if (this.isEnabled == undefined)\n this.isEnabled=0;\n\n this.getTipoTaxaEsporadica(this.sporadicTaxTypeId, this.isEnabled);\n\n }\n\n public getClasse(status: StatusUsuario): string {\n return this._usuarioService.getClasse(status);\n }\n\n public getString(status: StatusUsuario): string {\n return this._usuarioService.getString(status);\n }\n\n getNomePerfilECargo(perfil: any): string {\n return this._usuarioService.getNomePerfilECargo(perfil);\n }\n\n setPageSize(value: number) {\n this.pageSize = value;\n //if (this.paginacao != )\n this.paginacao.setAllData(this.tipoTaxaEsporadicaLista);\n this.paginacao.setPageSize(this.pageSize);\n this.paginacao.setPage(1);\n }\n\n atribuiPeriodoInicialEFinal(): void {\n this.request.Nome = this.filtro.Nome;\n this.request.Email = this.filtro.Email;\n this.request.RazaoSocial = this.filtro.RazaoSocial;\n this.request.Perfil = this.filtro.Perfil;\n this.request.Status = this.filtro.Status;\n this.request.CNPJ = this.filtro.CNPJ;\n let dataInicio = this.filtro.CadastradosDe? this._datepickerService.ObtemData(this.filtro.CadastradosDe, 'DD/MM/YYYY'): null;\n let dataFim = this.filtro.CadastradosAte? this._datepickerService.ObtemData(this.filtro.CadastradosAte, 'DD/MM/YYYY'): null;\n this.request.CadastradosDe = dataInicio;\n this.request.CadastradosAte = dataFim\n }\n\n\n ObterDataFields() {\n\n\n }\n\n\n setHabilitado(isEnabled: boolean):string\n {\n return ((isEnabled == true) ? 'SIM' : 'NÃO');\n }\n\n exportarRelatorioCSV() {\n this.downloading = true;\n\n const titulos: any[] = [\n \"id\",\n \"sporadicTaxName\",\n \"sporadicTaxTypeId\",\n \"originRegionId\",\n \"originModalId\",\n \"destinationRegionId\",\n \"destinationModalId\",\n \"containerType20Value\",\n \"containerType40Value\",\n \"startDate\",\n \"expirationDate\",\n \"createDate\",\n \"isEnabled\"];\n\n\n const data: any[] = [];\n\n this.tipoTaxaEsporadicaLista.forEach(x => {\n data.push([\n x.isEnabled\n ]);\n });\n\n this.downloading = false;\n this.baseService.DownloadXLSX(data, titulos, 'TaxasEsporadicas.csv');\n\n }\n}\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { ModalModule } from 'ngx-bootstrap/modal';\n\nimport { SharedModule } from './../../shared/shared.module';\nimport { CurrencyMaskModule } from 'ng2-currency-mask';\nimport { TextMaskModule } from 'angular2-text-mask';\n\n//DATEPICKER\nimport { DatePickerModule } from 'app/shared/ng2-datepicker/ng2-datepicker.module';\n\n// MAERSK\nimport { TipoTaxaEsporadicaRoutingModule } from './tipo-taxa-esporadica.routing.module';\nimport { TipoTaxaEsporadicaComponent } from './tipo-taxa-esporadica.component';\nimport { TipoTaxaEsporadicaDetalheComponent } from './tipo-taxa-esporadica-detalhe/tipo-taxa-esporadica-detalhe.component';\n\n\n@NgModule({\n imports: [\n FormsModule,\n CommonModule,\n HttpClientModule,\n ModalModule.forRoot(),\n SharedModule,\n DatePickerModule,\n CurrencyMaskModule,\n TextMaskModule,\n\n // MAESRK\n TipoTaxaEsporadicaRoutingModule,\n ],\n exports: [],\n declarations: [\n TipoTaxaEsporadicaComponent,\n TipoTaxaEsporadicaDetalheComponent\n ],\n providers: [\n // PerfilService,\n // UsuarioService,\n // FuncionalidadeService\n ]\n})\nexport class TipoTaxaEsporadicaModule { }\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { TipoTaxaEsporadicaComponent } from './tipo-taxa-esporadica.component';\nimport { TipoTaxaEsporadicaDetalheComponent } from './tipo-taxa-esporadica-detalhe/tipo-taxa-esporadica-detalhe.component';\nimport { AuthGuard } from 'app/_guards/auth.guard';\n\nconst usuariosRoutes: Routes = [\n { path: '', component: TipoTaxaEsporadicaComponent, canActivate: [AuthGuard] },\n // { path: 'detalhe', component: UsuarioDetalheComponent, canActivate: [AuthGuard] },\n // { path: 'detalhe/:id', component: UsuarioDetalheComponent, canActivate: [AuthGuard] }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(usuariosRoutes)],\n exports: [RouterModule]\n})\nexport class TipoTaxaEsporadicaRoutingModule {}\n","import { ActivatedRoute, Router } from '@angular/router';\nimport { Component, OnInit, ViewChild } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { Perfil } from './../../../_models/perfil';\nimport { Usuario } from './../../../_models/usuario';\nimport { Municipio } from './../../../_models/municipio';\nimport { UsuarioCNPJ } from './../../../_models/usuario-cnpj';\nimport { Funcionalidade } from './../../../_models/funcionalidade';\n\nimport { Operacao } from 'app/_enums/operacao';\nimport { PerfilUsuario } from \"app/_enums/perfil-usuario.enum\";\nimport { StatusUsuario } from 'app/_enums/status-usuario.enum';\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\n\nimport { SharedService } from 'app/_services/shared.service';\nimport { PerfilService } from './../../../_services/perfil.service';\nimport { UsuarioService } from './../../../_services/usuario.service';\nimport { MessageService } from './../../../_services/message.service';\n\nimport { BaseComponent } from './../../../shared/base.component';\nimport { MessageComponent } from './../../../shared/message/message.component';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Component({\n selector: 'app-usuario-detalhe',\n templateUrl: './usuario-detalhe.component.html',\n styleUrls: ['./usuario-detalhe.component.scss']\n})\n\nexport class UsuarioDetalheComponent extends BaseComponent implements OnInit {\n\n inscricaoGet: Subscription;\n inscricaoFuncs: Subscription;\n inscricaoPost: Subscription;\n\n public titulo: string = 'Novo Usuario de Acesso';\n public desabilitado: boolean = true;\n public loading: boolean = false;\n public loadingMunicipios: boolean = false;\n public usuario: Usuario = new Usuario();\n public mostraAprovacao: boolean = true;\n public id: number = 0;\n public perfis: Perfil[];\n public cliente: boolean = false;\n public provedor: boolean = false;\n public administrador: boolean = false;\n public municipio: Municipio;\n public municipios: Municipio[] = new Array();\n public novoStatus: StatusUsuario;\n public funcionalidadesDoPerfil: Funcionalidade[] = [];\n public perfisBasico: string[] = [];\n\n @ViewChild(MessageComponent, {static: true}) mensagem: MessageComponent;\n\n constructor(\n private _route: ActivatedRoute,\n private _usuarioService: UsuarioService,\n private _msgService: MessageService,\n private _sharedService: SharedService,\n private _router: Router,\n private _perfilService: PerfilService,\n private _sanitizer: DomSanitizer) {\n\n super();\n this._msgService.emitirMensagem.subscribe(\n msg => {\n this.mensagem.mostrarMensagem(msg.tipo, msg.mensagem);\n }\n );\n }\n\n autocompleListFormatter = (data: any) => {\n let html = `${data.Descricao}/${data.UF}`;\n return this._sanitizer.bypassSecurityTrustHtml(html);\n //return html;\n }\n\n ngOnInit(): void {\n this.ObterMunicipios();\n this.inscricaoGet = this._route.params.subscribe(\n (params: any) => {\n this.id = params['id'];\n if (this.id) {\n this.titulo = 'Editar Usuário';\n\n this.desabilitado = true;\n this.loading = true;\n this._usuarioService.getUsuario(this.id)\n .subscribe(usuario => {\n this.usuario = usuario;\n\n if (this.municipios) {\n this.municipio = this.municipios.find(f => f.Codigo.toString() == usuario.Municipio);\n }\n\n this.loading = false;\n this.novoStatus = (usuario.Status == StatusUsuario.AguardandoAprovacao) ? StatusUsuario.Aprovado : usuario.Status;\n this.AddNovoCNPJ();\n this.cliente = (usuario.PerfilUsuario == PerfilUsuario.Ambos || usuario.PerfilUsuario == PerfilUsuario.Cliente);\n this.provedor = (usuario.PerfilUsuario == PerfilUsuario.Ambos || usuario.PerfilUsuario == PerfilUsuario.Provedor);\n this.administrador = usuario.PerfilUsuario == PerfilUsuario.Administrador;\n this.getFuncionalidadePorPerfil(usuario.PerfilID);\n });\n }\n else {\n this.desabilitado = false;\n this.titulo = 'Novo Usuário';\n this.usuario = new Usuario();\n this.usuario.Status = StatusUsuario.AguardandoAprovacao;\n this.novoStatus = StatusUsuario.Aprovado;\n this.AddNovoCNPJ();\n }\n }\n );\n\n this._perfilService.getPerfisAtivos()\n .subscribe(lista => {\n this.perfis = lista;\n });\n }\n\n public ObterMunicipios() {\n this.loadingMunicipios = true;\n this._sharedService.getMunicipios()\n .subscribe(m => {\n this.municipios = m;\n\n if (this.usuario) {\n this.municipio = m.find(f => f.Codigo.toString() == this.usuario.Municipio);\n }\n\n this.loadingMunicipios = false;\n });\n }\n\n AddNovoCNPJ() {\n if (this.usuario.CNPJs && this.usuario.CNPJs.length > 0) {\n var cnpj = this.usuario.CNPJs[this.usuario.CNPJs.length - 1].CNPJ;\n if (!(cnpj.length == 14 || cnpj.length == 8)) {\n this._msgService.addMessage(\"CNPJ inválido\", \"Digite um CNPJ válido\", \"warning\", LogFrontFuncionalidade.Usuarios, Operacao.Alteracao, cnpj);\n return;\n }\n\n if (this.usuario.CNPJs.filter(u => u.CNPJ == cnpj).length > 1) {\n this._msgService.addMessage(\"CNPJ já cadastrado\", \"O CNPJ \" + cnpj + \" já foi cadastrado para este usuário\", \"warning\", LogFrontFuncionalidade.Usuarios, Operacao.Alteracao, this.usuario);\n return;\n }\n\n this.usuario.CNPJs.forEach(a => a.Novo = false);\n }\n else\n this.usuario.CNPJs = [];\n\n let userCNPJ = new UsuarioCNPJ();\n userCNPJ.CNPJ = '';\n userCNPJ.UsuarioCNPJID = 0;\n userCNPJ.UsuarioID = 0;\n userCNPJ.Novo = true;\n\n this.usuario.CNPJs.push(userCNPJ);\n }\n\n removeCNPJ(index) {\n this.usuario.CNPJs.splice(index, 1);\n }\n\n ngOnDestroy() {\n if (this.inscricaoGet)\n this.inscricaoGet.unsubscribe();\n if (this.inscricaoPost)\n this.inscricaoPost.unsubscribe();\n if (this.inscricaoFuncs)\n this.inscricaoFuncs.unsubscribe();\n }\n\n SalvarUsuario() {\n this._msgService.clearMessage();\n\n if (!this.cliente && !this.provedor && !this.administrador) {\n this._msgService.addMessage('Usuario', \"Informe o perfil e-Cargo!\", \"error\", LogFrontFuncionalidade.Usuarios, Operacao.Alteracao, this.usuario);\n return;\n }\n\n if (!this._sharedService.validaTelefone(this.usuario.Telefone)) {\n this._msgService.addMessage('Usuario', 'Telefone inválido', 'danger', LogFrontFuncionalidade.Usuarios, Operacao.Alteracao, this.usuario);\n return;\n }\n\n if (!this._sharedService.validaCEP(this.usuario.CEP)) {\n this._msgService.addMessage('Registre-se', 'CEP inválido', 'danger', LogFrontFuncionalidade.Usuarios, Operacao.Alteracao, this.usuario);\n return;\n }\n\n if (!this.municipio || !this.municipio.Codigo){\n this._msgService.addMessage('Registre-se', 'Informe o Município', 'danger', LogFrontFuncionalidade.Usuarios, Operacao.Alteracao, this.municipio);\n return;\n }\n else {\n this.usuario.Municipio = this.municipio.Codigo.toString();\n this.usuario.UF = this.municipio.UF\n }\n\n this.loading = true;\n this.usuario.CNPJs = this.usuario.CNPJs.filter(function (itm) { return itm.CNPJ != '' });\n\n if (this.administrador)\n this.usuario.PerfilUsuario = PerfilUsuario.Administrador;\n else {\n if (this.cliente && this.provedor)\n this.usuario.PerfilUsuario = PerfilUsuario.Ambos;\n if (this.cliente && !this.provedor)\n this.usuario.PerfilUsuario = PerfilUsuario.Cliente;\n if (!this.cliente && this.provedor)\n this.usuario.PerfilUsuario = PerfilUsuario.Provedor;\n }\n\n //if (this.usuario.Status != StatusUsuario.Reprovado) {\n //if (this.aprovado) {\n if (this.novoStatus == StatusUsuario.Aprovado) {\n //this.usuario.Status = StatusUsuario.Aprovado;\n if (this.usuario.PerfilID == null) {\n this._msgService.addMessage('Usuario', 'Selecione o perfil de acesso', \"error\", LogFrontFuncionalidade.Usuarios, Operacao.Alteracao, this.usuario);\n this.loading = false;\n return;\n }\n }\n else {\n //this.usuario.Status = StatusUsuario.Reprovado;\n if (this.usuario.MotivoRecusa.trim() == '') {\n this._msgService.addMessage('Usuario', 'Motivo da recusa é obrigatório.', \"error\", LogFrontFuncionalidade.Usuarios, Operacao.Alteracao, this.usuario);\n this.loading = false;\n return;\n }\n }\n //}\n\n this.usuario.Status = this.novoStatus;\n //this.usuario.PerfilUsuario = this.getComposicaoPerfil(this.usuario.PerfilID);\n\n this.usuario.Email = (!this.usuario.Email) ? this.usuario.Email : this.usuario.Email.toLowerCase();\n\n this._usuarioService.salvarUsuario(this.usuario)\n .subscribe(result => {\n this.loading = false;\n if (result.IsValid) {\n this._msgService.addMessageRedirect('Usuario', result.Message, \"success\");\n this._router.navigate(['usuario']);\n }\n else {\n this.AddNovoCNPJ();\n\n var msgErr: string[] = [];\n result.Erros.forEach(element => msgErr.push(element.Message));\n this._msgService.addMessageArray(\"Usuario\", msgErr, \"error\", LogFrontFuncionalidade.Usuarios, Operacao.Alteracao, this.usuario);\n this.loading = false;\n // this._router.events.filter(event => event instanceof NavigationEnd).subscribe(() => {\n // window.scrollTo(0, 0);\n // });\n }\n });\n }\n\n AtualizaStatus(value) {\n switch (this.usuario.Status) {\n case StatusUsuario.AguardandoAprovacao:\n this.novoStatus = value ? StatusUsuario.Aprovado : StatusUsuario.Reprovado; // aprovar\n break;\n case StatusUsuario.Aprovado:\n this.novoStatus = value ? StatusUsuario.Aprovado : StatusUsuario.Inativado; // inativar\n break;\n case StatusUsuario.Reprovado:\n this.novoStatus = value ? StatusUsuario.Aprovado : StatusUsuario.Reprovado; // aprovar\n break;\n case StatusUsuario.Inativado:\n this.novoStatus = value ? StatusUsuario.Aprovado : StatusUsuario.Inativado; // ativar\n break;\n default:\n break;\n }\n }\n\n getLabelStatus(): string {\n switch (this.usuario.Status) {\n case StatusUsuario.AguardandoAprovacao:\n return (this.novoStatus == StatusUsuario.Aprovado) ? \"Aprovado\" : \"Reprovado\";\n case StatusUsuario.Aprovado:\n return (this.novoStatus == StatusUsuario.Inativado) ? \"Inativo\" : \"Ativo\";\n case StatusUsuario.Reprovado:\n return (this.novoStatus == StatusUsuario.Aprovado) ? \"Aprovado\" : \"Reprovado\";\n case StatusUsuario.Inativado:\n return (this.novoStatus == StatusUsuario.Inativado) ? \"Inativo\" : \"Ativo\";\n default:\n break;\n }\n }\n\n getTitleStatus(): string {\n switch (this.usuario.Status) {\n case StatusUsuario.AguardandoAprovacao:\n return \"Aprovar / Reprovar\";\n case StatusUsuario.Aprovado:\n return \"Ativar / Inativar\";\n case StatusUsuario.Reprovado:\n return \"Aprovar / Reprovar\";\n case StatusUsuario.Inativado:\n return \"Ativar / Inativar\";\n default:\n break;\n }\n }\n\n obtemPerfisUsuarioDistintos(funcionalidades: Funcionalidade[]): PerfilUsuario []{\n let perfisUsuario : PerfilUsuario[] = [];\n funcionalidades.forEach(x => {\n if (!perfisUsuario.find(y => y == x.PerfilUsuario))\n perfisUsuario.push(x.PerfilUsuario);\n });\n return perfisUsuario;\n }\n\n getFuncionalidadePorPerfil(idPerfil: number): void{\n var perfil = this._perfilService.getPerfil(idPerfil).subscribe(lista => {\n this.funcionalidadesDoPerfil = lista.Funcionalidades;\n this.perfisBasico = [];\n this.obtemPerfisUsuarioDistintos(this.funcionalidadesDoPerfil).forEach(x => this.perfisBasico.push(PerfilUsuario[x]));\n\n this.cliente = (this.perfisBasico.filter(p => p == \"Cliente\").length > 0);\n this.provedor = (this.perfisBasico.filter(p => p == \"Provedor\").length > 0);\n this.administrador = (this.perfisBasico.filter(p => p == \"Administrador\").length > 0);\n });\n }\n}\n","import { Component, OnInit, ViewChild } from '@angular/core';\n\nimport { PerfilService } from '../../_services/perfil.service';\nimport { SharedService } from 'app/_services/shared.service';\nimport { MessageService } from './../../_services/message.service';\nimport { UsuarioService } from './../../_services/usuario.service';\nimport { GenericOrderbyService } from 'app/_services/generic-orderby.service';\n\nimport { Perfil } from 'app/_models/perfil';\nimport { Usuario } from './../../_models/usuario';\nimport { UsuarioPesquisa } from './../../_models/usuario-pesquisa';\nimport { BaseComponent } from 'app/shared/base.component';\nimport { MessageComponent } from './../../shared/message/message.component';\nimport { PaginacaoComponent } from 'app/shared/paginacao/paginacao.component';\nimport { FilterComboConfiguration } from \"app/_models/filterComboConfiguration\";\n\nimport { StatusUsuario } from 'app/_enums/status-usuario.enum';\nimport { Operacao } from 'app/_enums/operacao';\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\nimport { DatepickerService } from 'app/_services/datepicker.service';\nimport { DatePickerOptions, DateModel } from 'app/shared/ng2-datepicker/ng2-datepicker.component';\nimport * as moment from 'moment-timezone';\nimport { UsuarioPesquisaRequest } from 'app/_models/usuario-pesquisa-request';\n\n@Component({\n selector: 'app-usuario',\n templateUrl: './usuario.component.html',\n styleUrls: ['./usuario.component.scss']\n})\nexport class UsuarioComponent extends BaseComponent implements OnInit {\n\n @ViewChild(MessageComponent, {static: true}) mensagem: MessageComponent;\n @ViewChild(PaginacaoComponent, {static: true}) paginacao: PaginacaoComponent;\n\n filtro: UsuarioPesquisa = new UsuarioPesquisa();\n request: UsuarioPesquisaRequest = new UsuarioPesquisaRequest();\n lista: Usuario[];\n loading: boolean = false;\n loadingPerfis: boolean = false;\n comboStatus: FilterComboConfiguration;\n comboPerfis: FilterComboConfiguration;\n statusSelecionados: number[];\n perfisSelecionados: number[];\n perfis: Perfil[];\n pageSize: number = 30;\n downloading: boolean = false;\n deOptions: DatePickerOptions;\n ateOptions: DatePickerOptions;\n\n\n constructor(private _sharedService: SharedService,\n private _msgService: MessageService,\n private _usuarioService: UsuarioService,\n private _perfilService: PerfilService,\n private _genericOrderbyService: GenericOrderbyService,\n private _datepickerService: DatepickerService\n ) {\n\n super();\n this.comboStatus = new FilterComboConfiguration(\"Status...\");\n this.comboStatus.settings = {\n checkedStyle: 'glyphicon',\n dynamicTitleMaxItems: 2,\n showCheckAll: true,\n showUncheckAll: true\n };\n\n this.comboStatus.options.push({ id: 0, name: 'Aguardando Aprovação' });\n this.comboStatus.options.push({ id: 1, name: 'Aprovado' });\n this.comboStatus.options.push({ id: 2, name: 'Reprovado' });\n this.comboStatus.options.push({ id: 3, name: 'Inativado' });\n\n this.comboPerfis = new FilterComboConfiguration(\"Perfis...\");\n this.comboPerfis.settings = {\n checkedStyle: 'glyphicon',\n dynamicTitleMaxItems: 2,\n showCheckAll: true,\n showUncheckAll: true\n };\n\n this._msgService.emitirMensagem.subscribe(\n msg => {\n this.mensagem.mostrarMensagem(msg.tipo, msg.mensagem);\n }\n );\n }\n\n ngOnInit() {\n this.deOptions = this._datepickerService.GenerateOptionsConfig(null);\n this.ateOptions = this._datepickerService.GenerateOptionsConfig(null);\n this.loadingPerfis = true;\n\n this.ObterLista();\n\n this._perfilService.getPerfisAtivos()\n .subscribe(lista => {\n this.perfis = lista;\n\n\n if (this.perfis != null) {\n this.perfis = this._genericOrderbyService.ordenarPorCampo(this.perfis, 'Descricao', false);\n this.perfis.forEach(perfil => {\n this.comboPerfis.options.push({ id: perfil.PerfilID, name: perfil.Descricao });\n });\n }\n\n this.loadingPerfis = false;\n });\n\n\n let msg = this._msgService.getMessageRedirect();\n if (msg.show)\n this._msgService.addMessage(msg.titulo, msg.mensagem, msg.type, LogFrontFuncionalidade.Usuarios, Operacao.Consulta, this.filtro);\n }\n\n private ObterLista() {\n this.loading = true;\n this._usuarioService.getUsuarios()\n .subscribe(lista => {\n this.lista = lista;\n this.paginacao.setAllData(this.lista);\n this.paginacao.setPage(1);\n this.loading = false;\n }, (err) => {\n });\n }\n\n Pesquisar() {\n this.loading = true;\n this.atribuiPeriodoInicialEFinal();\n this.request.Status = this.statusSelecionados ? this.statusSelecionados.join(\";\") : \"\";\n this.request.Perfil = this.perfisSelecionados ? this.perfisSelecionados.join(\";\") : \"\";\n\n if (this.filtro.CNPJ) {\n var cnpjSemFormatacao = \"\";\n cnpjSemFormatacao = this._sharedService.replaceAll(this.request.CNPJ, '.', '');\n cnpjSemFormatacao = this._sharedService.replaceAll(cnpjSemFormatacao, '/', '');\n cnpjSemFormatacao = this._sharedService.replaceAll(cnpjSemFormatacao, '-', '');\n this.request.CNPJ = cnpjSemFormatacao;\n }\n\n this._usuarioService.getUsuariosByFiltro(this.request)\n .subscribe(lista => {\n this.lista = lista;\n this.setPageSize(this.pageSize);\n this.loading = false;\n }, (err) => {\n this.loading = false;\n });\n }\n\n exportarRelatorioCSV() {\n this.downloading = true;\n this._usuarioService.exportarRelatorioCSV(this.lista).subscribe(s =>\n this.downloading = false\n );\n }\n\n public getClasse(status: StatusUsuario): string {\n return this._usuarioService.getClasse(status);\n }\n\n public getString(status: StatusUsuario): string {\n return this._usuarioService.getString(status);\n }\n\n getNomePerfilECargo(perfil: any): string {\n return this._usuarioService.getNomePerfilECargo(perfil);\n }\n\n setPageSize(value: number) {\n this.pageSize = value;\n //if (this.paginacao != )\n this.paginacao.setAllData(this.lista);\n this.paginacao.setPageSize(this.pageSize);\n this.paginacao.setPage(1);\n }\n\n atribuiPeriodoInicialEFinal(): void {\n this.request.Nome = this.filtro.Nome;\n this.request.Email = this.filtro.Email;\n this.request.RazaoSocial = this.filtro.RazaoSocial;\n this.request.Perfil = this.filtro.Perfil;\n this.request.Status = this.filtro.Status;\n this.request.CNPJ = this.filtro.CNPJ;\n let dataInicio = this.filtro.CadastradosDe? this._datepickerService.ObtemData(this.filtro.CadastradosDe, 'DD/MM/YYYY'): null;\n let dataFim = this.filtro.CadastradosAte? this._datepickerService.ObtemData(this.filtro.CadastradosAte, 'DD/MM/YYYY'): null;\n this.request.CadastradosDe = dataInicio;\n this.request.CadastradosAte = dataFim\n }\n}\n","\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\nimport { ModalModule } from 'ngx-bootstrap/modal';\nimport { ConfirmModule } from './../../shared/confirm/confirm.module';\nimport { SharedModule } from './../../shared/shared.module';\n\nimport { UsuarioRoutingModule } from './usuario.routing.module';\nimport { UsuarioComponent } from './usuario.component';\nimport { UsuarioDetalheComponent } from './usuario-detalhe/usuario-detalhe.component';\nimport { UsuarioService } from './../../_services/usuario.service';\n\nimport { FuncionalidadeService } from './../../_services/funcionalidade.service';\nimport { MascaraModule } from \"app/shared/mascara/mascara.module\";\nimport { PerfilService } from 'app/_services/perfil.service';\nimport { DatePickerModule } from 'app/shared/ng2-datepicker/ng2-datepicker.module';\nimport { DatepickerService } from 'app/_services/datepicker.service';\nimport { HttpClientModule } from '@angular/common/http';\n\n@NgModule({\n imports: [\n FormsModule,\n CommonModule,\n HttpClientModule,\n UsuarioRoutingModule,\n ModalModule.forRoot(),\n ConfirmModule,\n SharedModule,\n MascaraModule,\n DatePickerModule\n ],\n exports: [],\n declarations: [\n UsuarioComponent,\n UsuarioDetalheComponent\n ],\n providers: [\n PerfilService,\n UsuarioService,\n FuncionalidadeService,\n DatepickerService\n ]\n})\nexport class UsuarioModule { }\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { UsuarioComponent } from './usuario.component';\nimport { UsuarioDetalheComponent } from './usuario-detalhe/usuario-detalhe.component';\nimport { AuthGuard } from 'app/_guards/auth.guard';\n\nconst usuariosRoutes: Routes = [\n { path: '', component: UsuarioComponent, canActivate: [AuthGuard] },\n // { path: 'detalhe', component: UsuarioDetalheComponent, canActivate: [AuthGuard] },\n // { path: 'detalhe/:id', component: UsuarioDetalheComponent, canActivate: [AuthGuard] }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(usuariosRoutes)],\n exports: [RouterModule]\n})\nexport class UsuarioRoutingModule {}","import {\n Router,\n RouteConfigLoadStart,\n RouteConfigLoadEnd,\n} from \"@angular/router\";\nimport {\n Component,\n Compiler,\n ViewChild,\n ElementRef,\n OnInit,\n} from \"@angular/core\";\nimport swal from \"sweetalert2\";\nimport * as moment from \"moment/moment\";\n\nimport { AppService } from \"./_services/app.service\";\nimport { ConfigService } from \"./_services/config.service\";\nimport { GrupoEconomicoService } from \"./_services/grupo-economico.service\";\nimport { AuthenticationService } from \"./_services/authentication.service\";\n\nimport { GrupoEconomico } from \"app/_models/grupo-economico\";\nimport { GrupoEconomicoRequest } from \"./_models/grupo-economico-request\";\nimport { FilterComboConfiguration } from \"./_models/filterComboConfiguration\";\nimport { AnalyticsService } from \"app/_services/analytics.service\";\nimport { AnalyticsTela } from \"./_enums/analytics-tela\";\nimport { AnalyticsOperacao } from \"./_enums/analytics-operacao\";\nimport { GoogleConfig } from \"./_models/google-config\";\n\ndeclare var ocultarControleMenu: any;\ndeclare var ocultarSwalOverlay: any;\ndeclare var removeSwal: any;\ndeclare var isIe: boolean;\ndeclare var loadMaps: any;\ndeclare var loadAnalytics: any;\ndeclare var browser_versao: any;\n\n@Component({\n selector: \"app-root\",\n templateUrl: \"./app.component.html\",\n styleUrls: [\"./app.component.scss\"],\n})\nexport class AppComponent implements OnInit {\n @ViewChild(\"closeModal\", { static: true }) private closeModal: ElementRef;\n comboGrupoEconomico: FilterComboConfiguration;\n mensagemErro: string;\n username: string = \"\";\n logado: boolean = false;\n loadingGrupos: boolean = false;\n grupos: GrupoEconomico[] = [];\n gruposSelecionados: number[];\n labelGrupo: string;\n eAdmin: boolean = this._appService.isAdmin();\n cssClassAdmin = \"\";\n loadingRouter: boolean = false;\n dropdownVisible = false;\n hideTimeout: any;\n\n constructor(\n public _router: Router,\n public _authenticationService: AuthenticationService,\n public _appService: AppService,\n private _compiler: Compiler,\n private _configService: ConfigService,\n private _grupoService: GrupoEconomicoService,\n private _analyticsService: AnalyticsService\n ) {\n this._compiler.clearCache();\n\n Date.prototype.toJSON = function () {\n return moment(this).format();\n };\n\n this.loadGoogleConfig(_configService._googleConfig);\n this._appService.configInfo = _configService._config;\n this._appService.apiUrl = this._appService.configInfo.apiUrl;\n localStorage.setItem(\"browser_versao\", JSON.stringify(browser_versao));\n localStorage.setItem(\"apiUrl\", JSON.stringify(_configService._config));\n\n this.PopularUsuario();\n this._authenticationService.emitirLogin.subscribe((modal) => {\n this.PopularUsuario();\n if (modal) this.showModal();\n });\n\n this._appService.emitirLogin.subscribe((modal) => {\n this.PopularUsuario();\n if (modal) {\n this._appService.limpaStorage();\n this.showModal();\n }\n });\n\n this.comboGrupoEconomico = new FilterComboConfiguration(\n \"Grupo(s) Econômico(s)...\"\n );\n this.comboGrupoEconomico.settings = {\n checkedStyle: \"glyphicon\",\n showCheckAll: false,\n showUncheckAll: true,\n dynamicTitleMaxItems: 0,\n enableSearch: true,\n };\n\n if (isIe) {\n removeSwal();\n\n swal({\n title: \"Atenção\",\n text: \"Este site é melhor visualizado no navegador Google Chrome\",\n type: \"warning\",\n }).then(\n (success) => {\n ocultarControleMenu();\n ocultarSwalOverlay();\n },\n (dismiss) => {\n removeSwal();\n // console.log(dismiss);\n }\n );\n }\n }\n\n showDropdown() {\n this.dropdownVisible = true;\n }\n\n scheduleHideDropdown() {\n this.hideTimeout = setTimeout(() => {\n this.dropdownVisible = false;\n }, 300); // Pequeno delay para evitar fechamento inesperado\n }\n\n cancelHideDropdown() {\n clearTimeout(this.hideTimeout);\n }\n\n private loadGoogleConfig(cfgGoogle: GoogleConfig) {\n var cfgAnalytics = cfgGoogle.Analytics;\n this._appService.configAnalytics = cfgAnalytics;\n this._appService.configMaps = cfgGoogle.Maps;\n //localStorage.setItem('google-config', JSON.stringify(cfgGoogle));\n loadMaps(cfgGoogle.Maps.ApiKey);\n\n if (cfgAnalytics.Habilitado) loadAnalytics(cfgAnalytics.GtagID);\n }\n\n ngOnInit(): void {\n this.labelGrupo = this._appService.getLocalStorage(\"labelGrupo\"); //this._appService.getLocalStorage('cnpjGrupos');\n if (this.labelGrupo) this.gruposSelecionados = this.getGrupoStorage();\n\n this.cssClassAdmin = this.eAdmin ? \"peril-admin\" : \"\";\n this._router.events.subscribe((event) => {\n if (event instanceof RouteConfigLoadStart) {\n this.loadingRouter = true;\n } else if (event instanceof RouteConfigLoadEnd) {\n this.loadingRouter = false;\n }\n });\n }\n\n PopularUsuario(): void {\n if (this._appService.UsuarioLogado != null) {\n this.username = this._appService.UsuarioLogado.Nome;\n this.logado = true;\n this._analyticsService.RegistrarOperacao(\n AnalyticsTela.Home,\n AnalyticsOperacao.LoginRealizado\n );\n } else {\n this.username = \"\";\n this.logado = false;\n this.labelGrupo = \"\";\n //this._appService.tokenExpirado = true;\n }\n }\n\n public showModal(): void {\n this._authenticationService.showModal();\n }\n\n public logout(): void {\n removeSwal();\n\n swal({\n title: \"Sair\",\n text: \"Deseja realmente sair do sistema?\",\n type: \"question\",\n showCancelButton: true,\n confirmButtonText: \"Sim\",\n cancelButtonText: \"Não\",\n }).then(\n (success) => {\n this.labelGrupo = \"\";\n this.gruposSelecionados = [];\n this._authenticationService.logout();\n this._appService.tokenExpirado = false;\n this._router.navigate([\"/home\"]);\n\n ocultarControleMenu();\n ocultarSwalOverlay();\n },\n (dismiss) => {\n removeSwal();\n // console.log(dismiss);\n }\n );\n }\n\n ObterGrupos() {\n if (!this._appService.UsuarioLogado || this.grupos.length > 0) return;\n\n this.loadingGrupos = true;\n var request: GrupoEconomicoRequest = new GrupoEconomicoRequest();\n request.idUsuario = this._appService.UsuarioLogado.UsuarioIDeCargo;\n\n this._grupoService.getGruposEconomicos(request).subscribe((m) => {\n this.grupos = m;\n\n if (this.grupos != null) {\n this.comboGrupoEconomico.options = [];\n this.grupos.forEach((grp) => {\n this.comboGrupoEconomico.options.push({\n id: grp.idGrupo,\n name: grp.descGrupo,\n });\n });\n } // em caso de erro (ex.: sessão expirada)\n else this.closeModal.nativeElement.click();\n this.loadingGrupos = false;\n setTimeout(() => {\n this.gruposSelecionados = this.getGrupoStorage();\n }, 10);\n });\n }\n\n ocultarMensagem() {\n this.mensagemErro = \"\";\n }\n\n aplicarGrupo() {\n var cnpjs = \"\";\n var label = \"\";\n var total = 0;\n if (this.gruposSelecionados) {\n this.gruposSelecionados.forEach((g) => {\n var grp: GrupoEconomico = this.grupos.find((f) => f.idGrupo == g);\n cnpjs += grp.listaCNPJCliente + \";\";\n if (label == \"\") {\n label =\n grp.descGrupo.indexOf(\" \") > 0\n ? \": \" + grp.descGrupo.substring(0, grp.descGrupo.indexOf(\" \"))\n : \": \" + grp.descGrupo;\n }\n total += 1;\n });\n }\n if (label && total > 1) label += \" + \" + (total - 1).toString();\n\n if (cnpjs) cnpjs = cnpjs.substring(0, cnpjs.length - 1);\n\n if (cnpjs.length > 4000) {\n this.mensagemErro =\n \"Muitos CNPJs selecionados. Selecionar no máximo 255 CNPJs.\";\n return;\n }\n\n this.labelGrupo = label;\n label = \"\";\n this._appService.setLocalStorage(\"labelGrupo\", this.labelGrupo);\n this._appService.setLocalStorage(\"cnpjGrupos\", cnpjs);\n this._appService.setLocalStorageJson(\n \"idsGruposSelecionados\",\n this.gruposSelecionados\n );\n this._grupoService.grupoEconomicoSelecionadoEvent.emit(cnpjs);\n this.closeModal.nativeElement.click();\n }\n\n cancelarGrupo() {\n this.gruposSelecionados = this.getGrupoStorage();\n this.closeModal.nativeElement.click();\n }\n\n getGrupoStorage(): any {\n return this._appService.getLocalStorageJson(\"idsGruposSelecionados\");\n }\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA } from '@angular/core';\nimport { Porto } from './_models/porto';\n\nimport { PerfilModule } from './admin/perfil/perfil.module';\nimport { UsuarioModule } from './admin/usuario/usuario.module';\nimport { SobreModule } from './public/sobre/sobre.module';\nimport { LogModule } from './admin/log/log.module';\nimport { AnelRotaModule } from './admin/anel-rota/anel-rota.module';\nimport { ParametroModule } from './admin/parametro/parametro.module';\nimport { CaixaEntradaModule } from './admin/caixa-entrada/caixa-entrada.module';\nimport { VincularNfModule } from './provedor/vincular-nf/vincular-nf.module';\nimport { OrdemServicoModule } from './provedor/ordem-servico/ordem-servico.module';\nimport { RastreamentoModule } from './cliente/rastreamento/rastreamento.module';\nimport { CotacaoModule } from './cliente/cotacao/cotacao.module';\nimport { BookingModule } from './cliente/booking/booking.module';\nimport { CadastrarSenhaModule } from './public/cadastrar-senha/cadastrar-senha.module';\nimport { ResetSenhaModule } from './public/reset-senha/reset-senha.module';\nimport { HomeModule } from './public/home/home.module';\nimport { RegistrarModule } from './public/registrar/registrar.module';\nimport { FaleConoscoModule } from './public/fale-conosco/fale-conosco.module';\nimport { ProgramacaoNaviosModule } from './public/programacao-navios/programacao-navios.module';\nimport { DocumentacaoModule } from './cliente/documentacao/documentacao.module';\nimport { NgModule, LOCALE_ID, APP_INITIALIZER } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { SharedModule } from './shared/shared.module';\nimport { ConfirmModule } from './shared/confirm/confirm.module';\nimport { AppRoutingModule } from './app.routing.module';\nimport { MascaraModule } from \"app/shared/mascara/mascara.module\";\n\nimport { AppComponent } from './app.component';\nimport { LoginModalComponent } from './public/login-modal/login-modal.component';\n\nimport { ModalModule } from 'ngx-bootstrap/modal';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { CollapseModule } from 'ngx-bootstrap/collapse';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\n\nimport { AppService } from './_services/app.service';\nimport { BaseService } from './_services/base.service';\nimport { DataService } from './_services/data.service';\nimport { SharedService } from './_services/shared.service';\nimport { ConfigService } from './_services/config.service';\nimport { MunicipioService } from './_services/municipio.service';\nimport { AgendaEntregaService } from \"app/_services/agenda-entrega.service\";\nimport { AuthenticationService } from './_services/authentication.service';\nimport { GrupoEconomicoService } from './_services/grupo-economico.service';\n\nimport { AuthGuard } from './_guards/auth.guard';\n\nimport { CommonModule } from '@angular/common';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { LogService } from './_services/log.service';\nimport { MessageService } from './_services/message.service';\nimport { AnalyticsService } from './_services/analytics.service';\nimport { ConfigViaGreen } from './_models/config-portal';\nimport { NgxMaskModule } from 'ngx-mask';\nimport { HttpClientModule } from '@angular/common/http';\n\nimport { ImportsNotUsedAsValues } from 'typescript';\n\n\nimport { IcmsModule } from './admin/icms/icms.module';\nimport { CustomerInfoImportModule } from './admin/customer-info-import/customer-info-import.module';\nimport { TipoTaxaEsporadicaModule } from './admin/tipo-taxa-esporadica/tipo-taxa-esporadica.module';\nimport { PortoModule } from './admin/porto/porto.module';\n\nimport { TaxaEsporadicaModule } from './admin/taxa-esporadica/taxa-esporadica.module';\n\n\nimport { SubTributariaModule } from './admin/sub-tributaria/sub-tributaria.module';\n\n//import { RelatorioPixComponent } from './cliente/booking/relatorios/relatoriopix/relatoriopix.component';\nimport { RelatorioPixModule } from './cliente/booking/relatorios/relatoriopix/relatoriopix.module';\nimport { PixReportModule } from './cliente/booking/relatorios/relatoriopix/pixreport.module';\n\nimport { pid } from 'process';\n\n\n\nexport function loadConfig(config: ConfigService){\n return () => config.loadConfig();\n}\n\nexport function loadGoogleConfig(config: ConfigService){\n return () => config.loadGoogleConfig();\n}\n\n\nexport function loadViaGreenConfig(config: ConfigService){\n return () => config.loadViaGreenConfig();\n}\n\n@NgModule({\n declarations: [\n AppComponent,\n LoginModalComponent\n ],\n imports: [\n BrowserModule,\n FormsModule,\n CommonModule,\n HttpClientModule,\n AppRoutingModule,\n SharedModule,\n ModalModule.forRoot(),\n TooltipModule.forRoot(),\n CollapseModule.forRoot(),\n PopoverModule.forRoot(),\n ConfirmModule,\n MascaraModule,\n NgxMaskModule.forRoot(),\n DocumentacaoModule,\n ProgramacaoNaviosModule,\n FaleConoscoModule,\n RegistrarModule,\n HomeModule,\n ResetSenhaModule,\n CadastrarSenhaModule,\n BookingModule,\n CotacaoModule,\n RastreamentoModule,\n OrdemServicoModule,\n VincularNfModule,\n CaixaEntradaModule,\n ParametroModule,\n AnelRotaModule,\n LogModule,\n SobreModule,\n UsuarioModule,\n PerfilModule,\n IcmsModule,\n CustomerInfoImportModule,\n SubTributariaModule,\n TipoTaxaEsporadicaModule,\n PortoModule,\n TaxaEsporadicaModule,\n RelatorioPixModule,\n PixReportModule\n ],\n exports: [],\n providers: [\n AppService,\n ConfigService,\n { provide: APP_INITIALIZER, useFactory: loadConfig, deps: [ConfigService], multi: true },\n { provide: APP_INITIALIZER, useFactory: loadGoogleConfig, deps: [ConfigService], multi: true },\n { provide: APP_INITIALIZER, useFactory: loadViaGreenConfig, deps: [ConfigService], multi: true },\n BaseService,\n SharedService,\n LogService,\n AuthenticationService,\n AuthGuard,\n MunicipioService,\n DataService,\n AnalyticsService,\n AgendaEntregaService,\n GrupoEconomicoService,\n MessageService,\n { provide: LOCALE_ID, useValue: \"pt-BR\" }\n ],\n schemas: [\n CUSTOM_ELEMENTS_SCHEMA,\n NO_ERRORS_SCHEMA\n ],\n bootstrap: [ AppComponent ]\n})\n\nexport class AppModule { }\n","import { SobreComponent } from './public/sobre/sobre.component';\nimport { LogComponent } from './admin/log/log.component';\nimport { ParametroComponent } from './admin/parametro/parametro.component';\nimport { AnelRotaComponent } from './admin/anel-rota/anel-rota.component';\nimport { CaixaEntradaComponent } from './admin/caixa-entrada/caixa-entrada.component';\nimport { VincularNfComponent } from './provedor/vincular-nf/vincular-nf.component';\nimport { OrdemServicoComponent } from './provedor/ordem-servico/ordem-servico.component';\nimport { RastreamentoComponent } from './cliente/rastreamento/rastreamento.component';\nimport { DocumentacaoComponent } from './cliente/documentacao/documentacao.component';\nimport { CotacaoComponent } from './cliente/cotacao/cotacao.component';\nimport { BookingComponent } from './cliente/booking/booking.component';\nimport { CadastrarSenhaComponent } from './public/cadastrar-senha/cadastrar-senha.component';\nimport { ResetSenhaComponent } from './public/reset-senha/reset-senha.component';\nimport { HomeComponent } from './public/home/home.component';\nimport { RegistrarComponent } from './public/registrar/registrar.component';\nimport { FaleConoscoComponent } from './public/fale-conosco/fale-conosco.component';\nimport { ProgramacaoNaviosComponent } from './public/programacao-navios/programacao-navios.component';\nimport { RouterModule, Routes } from '@angular/router';\nimport { NgModule } from \"@angular/core\";\n\nimport { AuthGuard } from './_guards/auth.guard';\nimport { SolicitarCotacaoComponent } from './cliente/cotacao/solicitar-cotacao/solicitar-cotacao.component';\nimport { SolicitarBookingComponent } from './cliente/booking/solicitar-booking/solicitar-booking.component';\nimport { CaixaEntradaDetalheComponent } from './admin/caixa-entrada/caixa-entrada-detalhe/caixa-entrada-detalhe.component';\nimport { HorasComponent } from './admin/parametro/horas/horas.component';\nimport { NaviosComponent } from './admin/parametro/navios/navios.component';\nimport { TiposServicosComponent } from './admin/parametro/tipos-servicos/tipos-servicos.component';\nimport { TerminaisComponent } from './admin/parametro/terminais/terminais.component';\nimport { PrioridadesComponent } from './admin/parametro/prioridades/prioridades.component';\nimport { AnelRotaDetalheComponent } from './admin/anel-rota/anel-rota-detalhe/anel-rota-detalhe.component';\n\n\n//PERFIL\nimport { PerfilComponent } from './admin/perfil/perfil.component';\nimport { PerfilDetalheComponent } from './admin/perfil/perfil-detalhe/perfil-detalhe.component';\n\n//USUARIO\nimport { UsuarioComponent } from './admin/usuario/usuario.component';\nimport { UsuarioDetalheComponent } from './admin/usuario/usuario-detalhe/usuario-detalhe.component';\n\n\n//INSTANT PAYMENT COMPONENTS\n\n\n\n// TAXA ADICIONAL\n//import { SporadicTaxComponent } from './admin/taxa-adicional/taxa-adicional.component';\n//import { SporadicTaxDetalheComponent } from './admin/taxa-adicional/taxa-adicional-detalhe/taxa-adicional-detalhe.component';\n\n\n// ICMS\nimport { IcmsComponent } from './admin/icms/icms.component';\n\n// Customer Info Import\nimport { CustomerInfoImportComponent} from './admin/customer-info-import/customer-info-import.component';\n\n\n// Substituicao Tributaria\nimport { SubTributariaCompoent} from './admin/sub-tributaria/sub-tributaria.component';\nimport { SubTributariaDetalheComponent} from './admin/sub-tributaria/sub-tributaria-detalhe/sub-tributaria-detalhe.component';\n\n\n// TAXA ADICIONAL\nimport { TipoTaxaEsporadicaComponent } from './admin/tipo-taxa-esporadica/tipo-taxa-esporadica.component';\nimport { TipoTaxaEsporadicaDetalheComponent } from './admin/tipo-taxa-esporadica/tipo-taxa-esporadica-detalhe/tipo-taxa-esporadica-detalhe.component';\n\n\n// PORTO\nimport { PortoComponent } from './admin/porto/porto.component';\nimport { PortoDetalheComponent } from './admin/porto/porto-detalhe/porto-detalhe.component';\n\n\n// TAXA ADICIONAL\nimport { TaxaEsporadicaComponent } from './admin/taxa-esporadica/taxa-esporadica.component';\nimport { TaxaEsporadicaDetalheComponent } from './admin/taxa-esporadica/taxa-esporadica-detalhe/taxa-esporadica-detalhe.component';\nimport { RelatorioPixComponent } from './cliente/booking/relatorios/relatoriopix/relatoriopix.component';\nimport { PixReportComponent } from './cliente/booking/relatorios/relatoriopix/pixreport.component';\n\n\n\n\n\nconst appRoutes: Routes = [\n //PUBLICO\n { path: 'programacaonavios', component: ProgramacaoNaviosComponent },\n { path: 'faleconosco', component: FaleConoscoComponent },\n { path: 'registrar', component: RegistrarComponent },\n { path: 'home', component: HomeComponent },\n { path: 'resetsenha', component: ResetSenhaComponent },\n { path: 'cadastrarsenha/:id', component: CadastrarSenhaComponent},\n { path: 'cadastrarsenha', component: CadastrarSenhaComponent},\n\n // { path: 'programacaonavios', loadChildren: () => import('app/public/programacao-navios/programacao-navios.module').then(m => m.ProgramacaoNaviosModule) },\n // { path: 'faleconosco', loadChildren: () => import('app/public/fale-conosco/fale-conosco.module').then(m => m.FaleConoscoModule) },\n // { path: 'registrar', loadChildren: () => import('app/public/registrar/registrar.module').then(m => m.RegistrarModule) },\n // { path: 'home', loadChildren: () => import('app/public/home/home.module').then(m => m.HomeModule) },\n // { path: 'resetsenha', loadChildren: () => import('app/public/reset-senha/reset-senha.module').then(m => m.ResetSenhaModule) },\n // { path: 'cadastrarsenha', loadChildren: () => import('app/public/cadastrar-senha/cadastrar-senha.module').then(m => m.CadastrarSenhaModule) },\n //{ path: 'sobre', component: SobreComponent },\n\n //CLIENTE /\n { path: 'booking', component: BookingComponent, canActivate: [AuthGuard] },\n { path: 'booking/solicitar', component: SolicitarBookingComponent, canActivate: [AuthGuard] },\n { path: 'booking/solicitar/:id', component: SolicitarBookingComponent, canActivate: [AuthGuard] },\n { path: 'booking/solicitar/programacao/', component: SolicitarBookingComponent, canActivate: [AuthGuard] },\n { path: 'booking/solicitar/:id/:duplicar', component: SolicitarBookingComponent, canActivate: [AuthGuard] },\n { path: 'booking/solicitar/cotacao/:numProposta/:idTrecho/:cnpjCli/:ieCli', component: SolicitarBookingComponent, canActivate: [AuthGuard] },\n\n { path: 'cotacao', component: CotacaoComponent, canActivate: [AuthGuard] },\n { path: 'cotacao/solicitar', component: SolicitarCotacaoComponent, canActivate: [AuthGuard] },\n { path: 'cotacao/solicitar/:id/:idTrecho', component: SolicitarCotacaoComponent, canActivate: [AuthGuard] },\n { path: 'cotacao/solicitar/:id/:idTrecho/:duplicar', component: SolicitarCotacaoComponent, canActivate: [AuthGuard] },\n { path: 'documentacao', component: DocumentacaoComponent, canActivate: [AuthGuard] },\n { path: 'rastreamento', component: RastreamentoComponent, canActivate: [AuthGuard] },\n\n\n // { path: 'booking', loadChildren: () => import('app/cliente/booking/booking.module').then(m => m.BookingModule), canActivate: [AuthGuard] },\n // { path: 'cotacao', loadChildren: () => import('app/cliente/cotacao/cotacao.module').then(m => m.CotacaoModule), canActivate: [AuthGuard] },\n // { path: 'documentacao', loadChildren: () => import('app/cliente/documentacao/documentacao.module').then(m => m.DocumentacaoModule), canActivate: [AuthGuard] },\n // { path: 'rastreamento', loadChildren: () => import('app/cliente/rastreamento/rastreamento.module').then(m => m.RastreamentoModule), canActivate: [AuthGuard] },\n\n //PROVEDOR\n { path: 'ordemservico', component: OrdemServicoComponent, canActivate: [AuthGuard] },\n { path: 'vincularnf', component: VincularNfComponent, canActivate: [AuthGuard] },\n\n // { path: 'ordemservico', loadChildren: () => import('app/provedor/ordem-servico/ordem-servico.module').then(m => m.OrdemServicoModule), canActivate: [AuthGuard] },\n // { path: 'vincularnf', loadChildren: () => import('app/provedor/vincular-nf/vincular-nf.module').then(m => m.VincularNfModule), canActivate: [AuthGuard] },\n\n //ADMIN\n { path: 'caixa-entrada', component: CaixaEntradaComponent, canActivate: [AuthGuard] },\n { path: 'caixa-entrada/detalhe', component: CaixaEntradaDetalheComponent, canActivate: [AuthGuard] },\n { path: 'caixa-entrada/detalhe/:id', component: CaixaEntradaDetalheComponent, canActivate: [AuthGuard] },\n\n { path: 'parametro', component: ParametroComponent, canActivate: [AuthGuard] , children : [\n { path: 'horas', component: HorasComponent, canActivate: [AuthGuard] },\n { path: 'navios', component: NaviosComponent, canActivate: [AuthGuard] },\n { path: 'servicos', component: TiposServicosComponent, canActivate: [AuthGuard] },\n { path: 'terminais', component: TerminaisComponent, canActivate: [AuthGuard] },\n { path: 'prioridades', component: PrioridadesComponent, canActivate: [AuthGuard] },\n { path: '**', redirectTo: 'horas' },\n ]},\n { path: 'anel-rota', component: AnelRotaComponent, canActivate: [AuthGuard] },\n { path: 'anel-rota/detalhe', component: AnelRotaDetalheComponent, canActivate: [AuthGuard] },\n { path: 'anel-rota/detalhe/:id', component: AnelRotaDetalheComponent, canActivate: [AuthGuard] },\n\n { path: 'log', component: LogComponent, canActivate: [AuthGuard] },\n { path: 'sobre', component: SobreComponent, canActivate: [AuthGuard] },\n\n\n // USUARIO\n { path: 'usuario', component: UsuarioComponent, canActivate: [AuthGuard] },\n { path: 'usuario/detalhe', component: UsuarioDetalheComponent, canActivate: [AuthGuard] },\n { path: 'usuario/detalhe/:id', component: UsuarioDetalheComponent, canActivate: [AuthGuard] },\n\n\n // PERFIL\n { path: 'perfil', component: PerfilComponent, canActivate: [AuthGuard] },\n { path: 'perfil/detalhe', component: PerfilDetalheComponent, canActivate: [AuthGuard] },\n { path: 'perfil/detalhe/:id', component: PerfilDetalheComponent, canActivate: [AuthGuard] },\n\n\n // TAXA ADICIONAL\n { path: 'taxa-esporadica', component: TaxaEsporadicaComponent },\n { path: 'taxa-esporadica/detalhe', component: TaxaEsporadicaDetalheComponent },\n { path: 'taxa-esporadica/detalhe/:id', component: TaxaEsporadicaDetalheComponent },\n\n // ICMS\n { path: 'icms', component: IcmsComponent },\n\n\n { path: 'customer-info-import', component: CustomerInfoImportComponent },\n\n { path: 'sub-tributaria', component: SubTributariaCompoent },\n { path: 'sub-tributaria/detalhe', component: SubTributariaDetalheComponent },\n { path: 'sub-tributaria/detalhe/:id', component: SubTributariaDetalheComponent },\n\n\n // TIPO DE TAXA ADICIONAL\n { path: 'tipo-taxa-esporadica', component: TipoTaxaEsporadicaComponent },\n { path: 'tipo-taxa-esporadica-detalhe/detalhe', component: TipoTaxaEsporadicaDetalheComponent },\n { path: 'tipo-taxa-esporadica-detalhe/detalhe/:id', component: TipoTaxaEsporadicaDetalheComponent },\n\n\n // PORTO\n { path: 'porto', component: PortoComponent },\n { path: 'porto-detalhe/detalhe', component: PortoDetalheComponent },\n { path: 'porto-detalhe/detalhe/:id', component: PortoDetalheComponent },\n\n\n { path: 'relatoriopix', component: RelatorioPixComponent},\n { path: 'pixreport', component: PixReportComponent },\n\n\n // { path: 'caixa-entrada', loadChildren: () => import('app/admin/caixa-entrada/caixa-entrada.module').then(m => m.CaixaEntradaModule), canActivate: [AuthGuard] },\n // { path: 'parametro', loadChildren: () => import('app/admin/parametro/parametro.module').then(m => m.ParametroModule), canActivate: [AuthGuard] },\n // { path: 'anel-rota', loadChildren: () => import('app/admin/anel-rota/anel-rota.module').then(m => m.AnelRotaModule), canActivate: [AuthGuard] },\n // { path: 'log', loadChildren: () => import('app/admin/log/log.module').then(m => m.LogModule), canActivate: [AuthGuard] },\n // { path: 'sobre', loadChildren: () => import('app/public/sobre/sobre.module').then(m => m.SobreModule), canActivate: [AuthGuard] },\n // { path: 'usuario', loadChildren: () => import('app/admin/usuario/usuario.module').then(m => m.UsuarioModule), canActivate: [AuthGuard] },\n // { path: 'perfil', loadChildren: () => import('app/admin/perfil/perfil.module').then(m => m.PerfilModule), canActivate: [AuthGuard] },\n\n //{ path: '', component: HomeComponent },\n // otherwise redirect to home\n { path: '**', redirectTo: 'home' }\n\n]\n\n@NgModule({\n // Passando array de módulos que iremos importar\n imports: [\n RouterModule.forRoot(appRoutes, { relativeLinkResolution: 'legacy' })\n ],\n // Seção 4: Aula 32 (Exportando o RouterModule, evitamos o erro ocorrido: 'router-outlet' is not a known element:)\n exports: [\n RouterModule\n ],\n})\nexport class AppRoutingModule { }\n","import { Component, OnInit, ViewChild, AfterViewInit } from '@angular/core';\n\nimport { AppService } from 'app/_services/app.service';\nimport { SharedService } from './../../_services/shared.service';\nimport { BookingService } from './../../_services/booking.service';\nimport { MessageService } from './../../_services/message.service';\nimport { MunicipioService } from './../../_services/municipio.service';\nimport { DatepickerService } from \"app/_services/datepicker.service\";\nimport { GenericOrderbyService } from \"app/_services/generic-orderby.service\";\nimport { FiltrosLateraisService } from 'app/_services/filtros-laterais.service';\nimport { PropostaComercialService } from './../../_services/proposta-comercial.service';\n\nimport { Porto } from './../../_models/porto';\nimport { Municipio } from './../../_models/municipio';\nimport { Booking } from 'app/_models/booking';\nimport { MeusBookings } from \"app/_models/meus-bookings\";\nimport { BookingRequest } from './../../_models/booking-request';\nimport { FiltrosLaterais } from \"app/_models/filtros-laterais\";\nimport { ServicoProposta } from './../../_models/servico-proposta';\nimport { MunicipioRequest } from './../../_models/municipio-request';\nimport { PropostaComercial } from '../../_models/proposta-comercial';\n\nimport { DateModel } from \"app/shared/ng2-datepicker/ng2-datepicker.component\";\nimport { BaseComponent } from './../../shared/base.component';\nimport { DatePickerOptions } from \"app/shared/ng2-datepicker/ng2-datepicker.component\";\nimport { MessageComponent } from './../../shared/message/message.component';\nimport { PaginacaoComponent } from './../../shared/paginacao/paginacao.component';\nimport { CnpjDropdownComponent } from './../../shared/cnpj-dropdown/cnpj-dropdown.component';\nimport { FiltrosLateraisComponent } from \"./../filtros-laterais/filtros-laterais.component\";\nimport { FilterComboConfiguration } from \"app/_models/filterComboConfiguration\";\nimport { DetalhesContainerComponent } from '../../shared/detalhes-container/detalhes-container.component';\n\nimport { AnalyticsTela } from '../../_enums/analytics-tela';\nimport { AnalyticsService } from '../../_services/analytics.service';\nimport { AnalyticsDownload } from '../../_enums/analytics-download';\n\nimport { Operacao } from 'app/_enums/operacao';\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\nimport { GrupoEconomicoService } from 'app/_services/grupo-economico.service';\nimport { InfoPgtoAdicionalService } from 'app/_services/info-pgto-adicional.service';\n\n\n@Component({\n selector: 'app-booking',\n templateUrl: './booking.component.html',\n styleUrls: ['./booking.component.scss']\n})\nexport class BookingComponent extends BaseComponent implements OnInit, AfterViewInit {\n\n @ViewChild(CnpjDropdownComponent, {static: true}) cnpjdropdown: CnpjDropdownComponent;\n @ViewChild(PaginacaoComponent, {static: true}) paginacao: PaginacaoComponent;\n @ViewChild(MessageComponent, {static: true}) mensagem: MessageComponent;\n @ViewChild(FiltrosLateraisComponent, {static: true}) filtroslaterais: FiltrosLateraisComponent;\n @ViewChild(DetalhesContainerComponent, {static: true}) detalhesContainer : DetalhesContainerComponent;\n\n loading: boolean = false;\n downloading: boolean = false;\n loadingPortos: boolean = false;\n loadingMunicipios: boolean = false;\n empty: boolean = true;\n noresult: boolean = false;\n listaStatus: string[];\n statusSelecionado: string;\n\n filtroMunicipio: MunicipioRequest = new MunicipioRequest();\n\n filtrosLaterais = new FiltrosLaterais();\n consulta: BookingRequest = new BookingRequest();\n meusBookings: MeusBookings = new MeusBookings(new FiltrosLaterais(), []);\n listaBookingsOriginal: Booking[];\n pageSize: number = 10;\n optionsInicio: DatePickerOptions;\n optionsFim: DatePickerOptions;\n dataInicio: DateModel;\n dataFim: DateModel;\n\n filtroGenerico: string = \"\";\n portos: Porto[] = new Array();\n municipios: Municipio[] = new Array();\n\n municipiosOrigem: number[];\n portosOrigem: number[];\n municipiosDestino: number[];\n portosDestino: number[];\n\n ordenarpor: string = 'idBooking';\n eAdmin: boolean = this._appService.isAdmin();\n eCliente: boolean = this._appService.isCliente();\n maisDeUmCNPJ = this._appService.maisDeUmCNPJ();\n cssClassAdmin = '';\n\n comboCidades: FilterComboConfiguration;\n comboPortos: FilterComboConfiguration;\n selecao: number[];\n dhInstantPayment: string = '';\n\n constructor(\n private _bookingService: BookingService,\n private _grupoService: GrupoEconomicoService,\n private _sharedService: SharedService,\n private _propostaService: PropostaComercialService,\n private _municipioService: MunicipioService,\n private _appService: AppService,\n private _msgService: MessageService,\n private _genericOrderbyService: GenericOrderbyService,\n private _datepickerService: DatepickerService,\n private _filtroslateraisService: FiltrosLateraisService,\n private _analyticsService: AnalyticsService,\n private _infoPgtoAdicionalService: InfoPgtoAdicionalService\n ) {\n\n super();\n\n this.optionsInicio = this._datepickerService.GenerateOptionsConfig(this._sharedService.addDays(new Date(), -30));\n this.optionsFim = this._datepickerService.GenerateOptionsConfig(new Date());\n\n this.comboCidades = new FilterComboConfiguration(\"Cidade(s)...\");\n this.comboCidades.settings = {\n checkedStyle: 'glyphicon',\n dynamicTitleMaxItems: 2,\n enableSearch: true\n };\n\n this.comboPortos = new FilterComboConfiguration(\"Porto(s)...\");\n this.comboPortos.settings = {\n checkedStyle: 'glyphicon',\n dynamicTitleMaxItems: 2,\n showCheckAll: true,\n showUncheckAll: true\n };\n\n this._msgService.emitirMensagem.subscribe(\n msg => {\n this.mensagem.mostrarMensagem(msg.tipo, msg.mensagem);\n });\n }\n\n ngAfterViewInit(): void {\n this._grupoService.grupoEconomicoSelecionadoEvent.subscribe((cnpjs: string) => {\n if (cnpjs)\n this.Pesquisar();\n else\n this.zeraPesquisa();\n });\n }\n\n ngOnInit() {\n this.cssClassAdmin = this.eAdmin || (this.eCliente && this.maisDeUmCNPJ) ? \"\" : \" customer-profile\";\n\n this.cnpjdropdown.SelecionaMultiplos = true;\n this.cnpjdropdown.modoEdicao = false;\n this.ObterPortos();\n\n if (!this.eAdmin){\n this.ObterMunicipios(null);\n this.ObterBookings();\n }\n else {\n this.cnpjdropdown.cnpjsGrupos = localStorage.getItem('cnpjGrupos');\n if (this.cnpjdropdown.cnpjsGrupos)\n this.Pesquisar(false);\n }\n\n let msg = this._msgService.getMessageRedirect();\n if (msg.show)\n this._msgService.addMessage(msg.titulo, msg.mensagem, msg.type, LogFrontFuncionalidade.Booking, Operacao.Consulta, this.consulta);\n\n this._analyticsService.RegistrarAcesso(AnalyticsTela.Booking);\n }\n\n zeraPesquisa() {\n this.empty = true;\n this.noresult = false;\n this.statusSelecionado = \"\";\n this.meusBookings = new MeusBookings(new FiltrosLaterais(), []);\n this.paginacao.pagedItems = [];\n this.paginacao.pager = {};\n }\n\n Pesquisar(registrarAnalytics: boolean = true) {\n this._msgService.clearMessage();\n if (this.eAdmin && ((this.cnpjdropdown.CNPJDigitado == undefined) || (this.cnpjdropdown.CNPJDigitado == \"\")) && (!this.cnpjdropdown.cnpjsGrupos)) {\n this._msgService.addMessage(\"Meus Bookings\", \"Informe o CNPJ do Cliente ou selecione ao menos um Grupo Econômico.\", \"error\", LogFrontFuncionalidade.Booking, Operacao.Consulta, this.consulta);\n this.zeraPesquisa();\n return;\n }\n else {\n if (this.eAdmin && this.cnpjdropdown.cnpjsGrupos && this.cnpjdropdown.CNPJDigitado) {\n if (!this.cnpjdropdown.validaCNPJnoGrupo()) {\n this._msgService.addMessage('Meus Bookings', 'CNPJ informado não pertence ao(s) Grupo(s) Econômico(s) selecionado(s)!', 'error', LogFrontFuncionalidade.Booking, Operacao.Consulta, this.consulta);\n this.zeraPesquisa();\n return;\n }\n }\n\n //limpa mensagens de erros\n this._msgService.clearMessage();\n this.ObterBookings();\n }\n }\n\n\tprivate ObterData(dateModel: DateModel, dateOffset: number) {\n\t\treturn (dateModel != undefined) ?\n\t\t\tthis._datepickerService.ObtemData(dateModel) :\n\t\t\tthis._sharedService.addDays(new Date(), dateOffset);\n\t}\n\n\n ObterBookings(registrarAnalytics: boolean = false) {\n if (this.dataInicio)\n this.consulta.dataIni = this.ObterData(this.dataInicio, 0);\n else\n this.consulta.dataIni = this._sharedService.addDays(new Date(), -30);\n\n if (this.dataFim)\n this.consulta.dataFim = this.ObterData(this.dataFim, 0);\n else\n this.consulta.dataFim = new Date();\n\n var ini = this.consulta.dataIni.valueOf();\n var fim = this.consulta.dataFim.valueOf();\n\n if (fim < ini) {\n this._msgService.addMessage(\"Meus Bookings\", \"A data início não pode ser maior que a data fim.\", \"error\", LogFrontFuncionalidade.Booking, Operacao.Consulta, this.consulta);\n this.zeraPesquisa();\n return;\n }\n\n var diasDiff = Math.floor((ini - fim) / ( 1000 * 60 * 60 * 24) );\n\n if (diasDiff > 30){\n this._msgService.addMessage(\"Meus Bookings\", \"O filtro por período de emissão não deve ser superior à 30 dias.\", \"error\", LogFrontFuncionalidade.Booking, Operacao.Consulta, this.consulta);\n this.zeraPesquisa();\n return;\n }\n\n this.filtrosLaterais = new FiltrosLaterais();\n this.loading = true;\n\n // Converte Array em String Delimitado por Ponto e Vírgula (formato recebido na procedure)\n this.consulta.idBooking = 0;\n this.consulta.idUsuario = this._appService.UsuarioLogado.UsuarioIDeCargo;\n this.consulta.cnpjCli = this.cnpjdropdown.CNPJs ? this.cnpjdropdown.CNPJs.join(\";\") :\n this.cnpjdropdown.CNPJDigitado ? this.cnpjdropdown.CNPJDigitado : this.cnpjdropdown.cnpjsGrupos ? this.cnpjdropdown.cnpjsGrupos : \"\";\n\n this.consulta.filtroGenerico = this.filtroGenerico;\n this.consulta.idsMunicOrigem = this.municipiosOrigem ? this.municipiosOrigem.join(\";\") : \"\";\n this.consulta.idsPortoOrigem = this.portosOrigem ? this.portosOrigem.join(\";\") : \"\";\n this.consulta.idsMunicDestino = this.municipiosDestino ? this.municipiosDestino.join(\";\") : \"\";\n this.consulta.idsPortoDestino = this.portosDestino ? this.portosDestino.join(\";\") : \"\";\n\n this.ObterMunicipios(this.consulta.cnpjCli);\n\n if (registrarAnalytics)\n this._analyticsService.RegistrarFiltroBooking(this.consulta);\n\n\n this._bookingService.getBookings(this.consulta)\n .subscribe(meusBookings => {\n if (meusBookings != null)\n\n\n this.meusBookings = meusBookings;\n\n this.statusSelecionado = \"\";\n this.listaBookingsOriginal = meusBookings.Bookings.slice();\n this.listaStatus = meusBookings.Bookings.map(b => b.statusBooking)\n .filter((value, index, self) => self.indexOf(value) === index);\n if (this.listaStatus.length == 1)\n this.statusSelecionado = this.listaStatus[0];\n\n this.empty = false;\n this.noresult = ((this.meusBookings == undefined) || (this.meusBookings.Bookings.length == 0));\n this.ordernarListaPorCampo(this.ordenarpor, true);\n this.loading = false;\n });\n }\n\n FiltrarPorStatus(status: string){\n if (!status)\n this.meusBookings.Bookings = this.listaBookingsOriginal;\n else\n this.meusBookings.Bookings = this.listaBookingsOriginal.filter(b => b.statusBooking == status);\n\n this.ordernarListaPorCampo(this.ordenarpor, true);\n }\n\n public ObterPortos() {\n this.loadingPortos = true;\n this._sharedService.getPortos()\n .subscribe(m => {\n if (m != null)\n this.portos = m;\n if (this.portos != null) {\n this.portos.forEach(porto => {\n this.comboPortos.options.push({ id: porto.Codigo, name: porto.Descricao });\n });\n }\n this.loadingPortos = false;\n });\n }\n\n public ObterMunicipios(cnpj: string) {\n this.loadingMunicipios = true;\n this.filtroMunicipio.idUsuario = this._appService.UsuarioLogado.UsuarioIDeCargo;\n this.filtroMunicipio.tipoConsulta = \"2\";\n this.filtroMunicipio.cnpjCli = cnpj;\n\n var dtIni = (!this.dataInicio) ?\n this._sharedService.addDays(new Date(), -30) :\n this._datepickerService.ObtemData(this.dataInicio);\n this.filtroMunicipio.dataIni = dtIni;\n\n var dtFim = (!this.dataFim) ? new Date(): this._datepickerService.ObtemData(this.dataFim);\n this.filtroMunicipio.datafim = dtFim;\n\n this.municipios = [];\n //this.comboCidades.options = [];\n this._municipioService.getMunicipiosEspecial(this.filtroMunicipio)\n .subscribe(m => {\n this.municipios = m;\n this.comboCidades.options = [];\n if (this.municipios != null) {\n this.municipios.forEach(municipio => {\n this.comboCidades.options.push({ id: municipio.Codigo, name: municipio.Descricao + \" / \" + municipio.UF });\n });\n }\n this.loadingMunicipios = false;\n });\n }\n\n cnpjAlterado(cnpj: string){\n this.ObterMunicipios(cnpj);\n this.Pesquisar(false);\n }\n\n ObterDetalhesBooking(book: Booking) {\n book.loading = true;\n this._bookingService.getBooking({ bookingID: book.idBooking, usuarioID: this._appService.UsuarioLogado.UsuarioIDeCargo })\n .subscribe(bookingRetorno => {\n\n //book.detalheDoBooking = bookingRetorno;\n this._sharedService.copyProperties(bookingRetorno, book.detalheDoBooking);\n book.detalheDoBooking.tipoDeContainer = book.tipoDeContainer;\n if (!book.detalheDoBooking.proposta)\n book.detalheDoBooking.proposta = new PropostaComercial();\n\n this._propostaService.getServicos({ propostaID: book.numProposta, usuarioID: this._appService.UsuarioLogado.UsuarioIDeCargo})\n .subscribe(servicos => {\n book.detalheDoBooking.proposta.servicosDaProposta = servicos;\n book.loading = false;\n });\n\n\n this.isInstantPaymentCreditado(book.numBooking);\n\n });\n }\n\n getServicosBooking(book: Booking, tipo: string): ServicoProposta[] {\n return book.detalheDoBooking.proposta.servicosDaProposta.filter(f => f.indicOriDes == tipo);\n }\n\n exibeServicosBooking(book: Booking, tipo: string): boolean {\n var servicosDaProposta = book.detalheDoBooking.proposta.servicosDaProposta;\n if (!servicosDaProposta)\n return false;\n\n if (servicosDaProposta.length == 0)\n return false;\n\n return (servicosDaProposta.filter(f => f.indicOriDes == tipo).length > 0);\n }\n\n ordernarListaPorCampo(campo: string, desc: boolean): void {\n this.paginacao.setAllData(this._genericOrderbyService.ordenarPorCampo(this.meusBookings.Bookings, campo, desc));\n }\n\n obtemClasseDoStatus(status: string): string {\n status = status.toLowerCase();\n\n if (status.indexOf('emitido') !== -1)\n return 'quotation-status active';\n else if (status.indexOf('pendente') !== -1)\n return 'quotation-status waiting';\n else if (status.indexOf('ativo') !== -1)\n return 'quotation-status info';\n return 'quotation-status expired';\n }\n\n obtemTextoEmbarque(book: Booking) {\n if (book.modal.startsWith('PO'))\n return (book.portoOri + ' - ' + book.ufPortoOri).toUpperCase();\n else\n return (book.municOri + ' - ' + book.ufMunicOri).toUpperCase();\n }\n\n obtemTextoDesembarque(book: Booking) {\n if (book.modal.endsWith('PO'))\n return (book.portoDes + ' - ' + book.ufPortoDes).toUpperCase();\n else\n return (book.municDes + ' - ' + book.ufDes).toUpperCase();\n }\n\n exportarRelatorioCSV() {\n this.downloading = true;\n let listaFiltrada = this._filtroslateraisService.filtrarDados(this.meusBookings.Bookings, this.filtrosLaterais);\n this._bookingService.exportarRelatorioCSV(listaFiltrada);\n this._analyticsService.RegistrarDownload(AnalyticsTela.Booking, AnalyticsDownload.ExportacaoCSV);\n this.downloading = false;\n }\n\n handleDetail(book: any) {\n console.log('book,', book)\n }\n\n\n isInstantPaymentCreditado(numBooking: string) {\n\n if(numBooking == undefined || numBooking.trim().length == 0)\n return;\n\n\n this._infoPgtoAdicionalService.getInfoPgtoAdicionalByNumBooking(numBooking)\n .subscribe(infoPgtoAdicional => {\n\n if (infoPgtoAdicional != null)\n {\n const bookingUpd = this.meusBookings.Bookings.find(item=> item.numBooking === numBooking );\n bookingUpd.isInstantPaymentCreditado = infoPgtoAdicional.paymentStatus == 'COMPLETED';\n let dtTmp: string = infoPgtoAdicional.paidAt.toString().substr(0,10);\n let ano: string = dtTmp.substr(0, 4);\n let mes: string = dtTmp.substr(5, 2);;\n let dia:string = dtTmp.substr(8, 2);;\n\n bookingUpd.dhInstantPayment = dia + '/' + mes + '/' + ano;\n\n }\n else\n {\n this.meusBookings.Bookings.find(item=> item.numBooking === numBooking ).isInstantPaymentCreditado = false;\n }\n\n });\n }\n\n}\n","import { RouterModule } from '@angular/router';\nimport { NgModule } from '@angular/core';\nimport { CommonModule, CurrencyPipe } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ModalModule } from \"ngx-bootstrap/modal\";\n\nimport { Booking } from 'app/_models/booking';\nimport { BookingRequest } from './../../_models/booking-request';\nimport { SharedModule } from './../../shared/shared.module';\n\nimport { DatePickerModule } from 'app/shared/ng2-datepicker/ng2-datepicker.module';\nimport { BookingComponent } from './booking.component';\nimport { MultiselectDropdownModule } from './../../shared/multiselect-dropdown/multiselect-dropdown.module';\nimport { BookingService } from './../../_services/booking.service';\nimport { PropostaComercialService } from './../../_services/proposta-comercial.service';\nimport { PropostaComercial } from './../../_models/proposta-comercial';\nimport { SolicitarBookingComponent } from './solicitar-booking/solicitar-booking.component';\nimport { Step1SelecaoPropostaComponent } from './solicitar-booking/step1-selecao-proposta/step1-selecao-proposta.component';\nimport { Step2DetalhesOperacaoComponent } from './solicitar-booking/step2-detalhes-operacao/step2-detalhes-operacao.component';\nimport { ControleStepsComponent } from './solicitar-booking/controle-steps/controle-steps.component';\nimport { Step3AgendamentoColetaComponent } from './solicitar-booking/step3-agendamento-coleta/step3-agendamento-coleta.component';\nimport { Step4DadosReservaComponent } from './solicitar-booking/step4-dados-reserva/step4-dados-reserva.component';\nimport { ListaAgendamentoComponent } from './solicitar-booking/step3-agendamento-coleta/lista-agendamento/lista-agendamento.component';\nimport { GroupbyService } from \"app/_services/groupby.service\";\nimport { DataService } from \"app/_services/data.service\";\nimport { ItemAgendamentoModule } from \"app/cliente/booking/solicitar-booking/step3-agendamento-coleta/lista-agendamento/item-agendamento/item-agendamento.module\";\nimport { DatepickerService } from \"app/_services/datepicker.service\";\nimport { TextMaskModule } from \"angular2-text-mask\";\nimport { FiltrosPropostasComerciaisService } from \"app/_services/filtros-propostas-comerciais.service\";\nimport { AnalyticsService } from '../../_services/analytics.service';\nimport { BookingRoutingModule } from './booking.routing.module';\nimport { UsuarioService } from 'app/_services/usuario.service';\nimport { CotacaoService } from 'app/_services/cotacao.service';\nimport { ParametroService } from 'app/_services/parametro.service';\nimport { UploadArquivoService } from 'app/_services/upload-arquivo.service';\nimport { AppService } from 'app/_services/app.service';\nimport { ProgramacaoNaviosService } from 'app/_services/programacao-navios.service';\nimport { CurrencyMaskModule } from 'ng2-currency-mask';\nimport { MascaraModule } from \"app/shared/mascara/mascara.module\";\n\nimport{ Step5InformacaoPagtoComponent } from './../booking/solicitar-booking/step5-informacao-pgto/step5-informacao-pgto.component';\n\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n RouterModule,\n TextMaskModule,\n MultiselectDropdownModule,\n DatePickerModule,\n CurrencyMaskModule,\n SharedModule,\n ItemAgendamentoModule,\n ModalModule.forRoot(),\n BookingRoutingModule,\n MascaraModule\n ],\n exports: [MultiselectDropdownModule],\n declarations: [\n BookingComponent,\n SolicitarBookingComponent,\n ControleStepsComponent,\n Step1SelecaoPropostaComponent,\n Step2DetalhesOperacaoComponent,\n Step3AgendamentoColetaComponent,\n Step4DadosReservaComponent,\n Step5InformacaoPagtoComponent,\n ListaAgendamentoComponent\n ],\n providers: [\n AppService,\n BookingService,\n PropostaComercialService,\n BookingRequest,\n Booking,\n GroupbyService,\n DataService,\n DatepickerService,\n PropostaComercial,\n FiltrosPropostasComerciaisService,\n AnalyticsService,\n UsuarioService,\n CotacaoService,\n ParametroService,\n UploadArquivoService,\n ProgramacaoNaviosService\n ],\n})\nexport class BookingModule {\n\n}\n","import { BookingComponent } from './booking.component';\nimport { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { SolicitarBookingComponent } from \"app/cliente/booking/solicitar-booking/solicitar-booking.component\";\nimport { AuthGuard } from 'app/_guards/auth.guard';\n\n\nconst bookingRoutes: Routes = [\n // { path: '', component: BookingComponent, canActivate: [AuthGuard] },\n // { path: 'solicitar', component: SolicitarBookingComponent, canActivate: [AuthGuard] },\n // { path: 'solicitar/:id', component: SolicitarBookingComponent, canActivate: [AuthGuard] },\n // { path: 'solicitar/programacao/', component: SolicitarBookingComponent, canActivate: [AuthGuard] },\n // { path: 'solicitar/:id/:duplicar', component: SolicitarBookingComponent, canActivate: [AuthGuard] },\n // { path: 'solicitar/cotacao/:numProposta/:idTrecho/:cnpjCli/:ieCli', component: SolicitarBookingComponent, canActivate: [AuthGuard] }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(bookingRoutes)],\n exports: [RouterModule]\n})\nexport class BookingRoutingModule {}","\nimport { Injectable } from '@angular/core';\nimport { Booking } from 'app/_models/booking';\nimport { ListItem } from 'app/_models/listItem';\nimport { TipoServico } from 'app/_models/tipo-servico';\nimport { BaseService } from \"app/_services/base.service\";\nimport { DataService } from 'app/_services/data.service';\nimport { MessageService } from \"app/_services/message.service\";\nimport jsPDF from 'jspdf';\nimport { InfoPgtoAdicional } from '../../../_models/InfoPgtoAdicional';\nimport * as moment from 'moment/moment';\nimport 'moment/locale/pt-br';\n\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ImpresaoPixPdf {\n\n imgAliancaHeader: string = './../../../../../assets/img/logo-alianca.png';\n imgFundoCinza: string = './../../../../../assets/img/alianca-fundo-cinza.jpeg';\n imgPix: string = './../../../../../assets/img/pix.png';\n imagePixBytes: any;\n //Dados Para Deposito\n cnpj: string = '02.427.026/0001-46';\n bancoNome: string = 'JP MORGAN';\n bancoNumero: string = '376';\n agencia: string = '0001';\n contaDeposito: string = '104447-6';\n clienteClassificacoes: ListItem[] = new Array();\n tiposPagamentos: ListItem[] = new Array();\n\n tiposServicos: TipoServico[] = new Array();\n\n idTipoServico: number = 0;\n idClassificacaoCliente: number = 0;\n idTipoPagamento: number = 0;\n\n\n constructor(private baseService: BaseService,\n private _dataService: DataService,\n private _msgService: MessageService) {\n\n this.ObterDataFields();\n\n }\n\n\n printPDF(booking: Booking, infoPgtoAdicional: InfoPgtoAdicional) {\n\n const data = new Date();\n const dia = data.getDate();\n const mes = data.getMonth() + 1; // Lembre-se que os meses começam em 0\n const ano = data.getFullYear();\n const hora = data.getHours();\n const min = data.getMinutes();\n let infoPgtoAdicionalPdf = new jsPDF('p', 'mm', 'a4');\n\n //const dataFormatada = `${dia}/${mes}/${ano} ${hora}:${min}`;\n var dhReport = moment();\n\n const dataFormatada = dhReport.format(\"DD/MM/YYYY HH:mm:ss\");// `${dia}/${mes}/${ano} ${hora}:${min}`;\n\n\n\n const nomeFonte: string = 'Courier';\n\n if (booking.municOri === null) {\n booking.municOri = \"\";\n }\n\n if (booking.municDes === null) {\n booking.municDes = \"\";\n }\n\n if (infoPgtoAdicional.ufPagadorFrete === null) {\n infoPgtoAdicional.ufPagadorFrete = \"\";\n }\n\n\n if (booking.ufEmb === null) {\n booking.ufEmb = \"\";\n }\n\n\n let localDestino: string = '';\n let rotuloOrigem: string = '';\n let rotuLoDestino: string = '';\n let rotuloData: string = '';\n let localOrigem: string = '';\n\n let fontSize: number = 12;\n let objHeight: number = 10;\n let objX: number = 10;\n let posLinhaConteudo: number = 16;\n let posLinhaHeader: number = 0;\n let lineHeight: number = 13;\n let adValoren: string = '0,00';\n\n let firstColPos: number = 10;\n let secondColPos: number = 80;\n let thirdColPos: number = 140;\n let objWidth: number = 200;\n\n\n\n if (booking.proposta.adValorem == null || booking.proposta.adValorem == undefined)\n adValoren = '0,00';\n else\n adValoren = booking.proposta.adValorem.toString();\n\n\n if (booking.modal.startsWith('PO')) {\n rotuloData = 'DIA DDL DOCUMENTAÇÃO';\n }\n else {\n rotuloData = 'DATA DA COLETA';\n }\n\n\n // Cria retangulo com fundo azul.\n infoPgtoAdicionalPdf.setDrawColor('#057DC8');\n infoPgtoAdicionalPdf.setLineWidth(lineHeight);\n infoPgtoAdicionalPdf.line(objX, posLinhaConteudo, objWidth, posLinhaConteudo);\n\n objX = firstColPos + 3; //Desloca a imagem para direita.\n posLinhaConteudo = posLinhaConteudo - 4;\n infoPgtoAdicionalPdf.addImage(this.imgAliancaHeader, \"jpeg\", objX, posLinhaConteudo, 22, 8);\n\n\n // Cria retangulo com fundo cinza.\n objHeight = 7;\n lineHeight = 7;\n objX = firstColPos;\n posLinhaConteudo = posLinhaConteudo + 13;\n\n infoPgtoAdicionalPdf.setLineWidth(lineHeight);\n infoPgtoAdicionalPdf.setDrawColor('#D3D3D3');\n infoPgtoAdicionalPdf.line(objX, posLinhaConteudo, objWidth, posLinhaConteudo);\n\n\n lineHeight = 0.5;\n fontSize = 9;\n objX = firstColPos + 3;\n posLinhaConteudo = posLinhaConteudo + 7;\n\n infoPgtoAdicionalPdf.setFontSize(fontSize);\n infoPgtoAdicionalPdf.setLineWidth(lineHeight);\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"bold\");\n infoPgtoAdicionalPdf.text(\"CALCULO DE FRETE - NUM. BOOKING:\" + booking.numBooking, objX, posLinhaConteudo - 5);\n infoPgtoAdicionalPdf.text(dataFormatada, 160, posLinhaConteudo - 5);\n\n\n objX = firstColPos;\n posLinhaHeader = posLinhaConteudo + 5;\n posLinhaConteudo = posLinhaHeader + 1;\n\n infoPgtoAdicionalPdf.setDrawColor(0, 0, 0);\n infoPgtoAdicionalPdf.text(\"DADOS DA PROPOSTA\", objX, posLinhaHeader);\n\n infoPgtoAdicionalPdf.setLineWidth(lineHeight);\n infoPgtoAdicionalPdf.line(objX, posLinhaConteudo, objWidth, posLinhaConteudo);\n\n\n // Linha 01\n objX = firstColPos;\n posLinhaHeader = posLinhaConteudo + 5;\n posLinhaConteudo = posLinhaHeader + 3;\n\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"normal\");\n infoPgtoAdicionalPdf.text(\"CLIENTE\", objX, posLinhaHeader);\n\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"bold\");\n infoPgtoAdicionalPdf.text(booking.proposta.nomeCli, objX, posLinhaConteudo);\n\n\n objX = secondColPos + 20;\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"normal\");\n infoPgtoAdicionalPdf.text(rotuloData, objX, posLinhaHeader);\n\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"bold\");\n infoPgtoAdicionalPdf.text(infoPgtoAdicional.dataBaseCalculo, objX, posLinhaConteudo);\n\n\n\n // Linha 03\n objX = firstColPos;\n posLinhaHeader = posLinhaConteudo + (fontSize / 2) + 5;\n posLinhaConteudo = posLinhaHeader + 3;\n\n\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"normal\");\n infoPgtoAdicionalPdf.text(\"QTD CONTAINERS\", objX, posLinhaHeader);\n\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"bold\");\n infoPgtoAdicionalPdf.text(booking.qtdeContainer.toString(), objX, posLinhaConteudo);\n\n objX = secondColPos;\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"normal\");\n infoPgtoAdicionalPdf.text(\"TIPO CONTAINER\", objX, posLinhaHeader);\n\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"bold\");\n infoPgtoAdicionalPdf.text(booking.proposta.tipoDeContainer.Descricao + \" - \" + booking.proposta.tipoDeContainer.Desc_resumida, objX, posLinhaConteudo);\n\n objX = thirdColPos;\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"normal\");\n infoPgtoAdicionalPdf.text(\"MODAL DE EMBARQUE\", objX, posLinhaHeader);\n\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"bold\");\n infoPgtoAdicionalPdf.text(booking.modal, objX, posLinhaConteudo);\n\n\n // DADOS FISCAIS ************************************************************************************************************\n objX = firstColPos;\n posLinhaHeader = posLinhaConteudo + (fontSize / 2) + 10;\n posLinhaConteudo = posLinhaHeader + 1;\n\n infoPgtoAdicionalPdf.text(\"DADOS FISCAIS\", objX, posLinhaHeader);\n infoPgtoAdicionalPdf.line(objX, posLinhaConteudo, objWidth, posLinhaConteudo);\n\n // Linha 01\n objX = firstColPos;\n posLinhaHeader = posLinhaConteudo + 5;\n posLinhaConteudo = posLinhaHeader + 3;\n\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"normal\");\n infoPgtoAdicionalPdf.text(\"TIPO PAGAMENTO\", objX, posLinhaHeader);\n\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"bold\");\n infoPgtoAdicionalPdf.text(this.getDescricao(infoPgtoAdicional.idTipoPagto, this.tiposPagamentos), objX, posLinhaConteudo);\n\n\n objX = secondColPos;\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"normal\");\n infoPgtoAdicionalPdf.text(\"CLASSIFICAÇÃO\", objX, posLinhaHeader);\n\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"bold\");\n infoPgtoAdicionalPdf.text(this.getDescricao(infoPgtoAdicional.idClassificacaoCli, this.clienteClassificacoes), objX, posLinhaConteudo);\n\n/*\n // Linha 02\n objX = firstColPos;\n posLinhaHeader = posLinhaConteudo + (fontSize / 2) + 5;\n posLinhaConteudo = posLinhaHeader + 3;\n\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"normal\");\n infoPgtoAdicionalPdf.text(\"SUBSTITUICAO TRIBUTÁRIA\", objX, posLinhaHeader);\n\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"bold\");\n infoPgtoAdicionalPdf.text(\"-----------\", objX, posLinhaConteudo);\n*/\n\n\n objX = firstColPos;\n posLinhaHeader = posLinhaConteudo + (fontSize / 2) + 5;\n posLinhaConteudo = posLinhaHeader + 3;\n\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"normal\");\n infoPgtoAdicionalPdf.text(\"TIPO DE SERVIÇO\", objX, posLinhaHeader);\n\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"bold\");\n infoPgtoAdicionalPdf.text(this.getDescricao(infoPgtoAdicional.idTipoServico, this.tiposServicos), objX, posLinhaConteudo);\n\n\n objX = secondColPos;\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"normal\");\n infoPgtoAdicionalPdf.text(\"UF PAGADOR FRETE\", objX, posLinhaHeader);\n\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"bold\");\n infoPgtoAdicionalPdf.text(infoPgtoAdicional.ufPagadorFrete, objX, posLinhaConteudo);\n\n\n if (booking.modal.startsWith('PA')) {\n // Linha 03\n objX = firstColPos;\n posLinhaHeader = posLinhaConteudo + (fontSize / 2) + 5;\n posLinhaConteudo = posLinhaHeader + 3;\n\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"normal\");\n infoPgtoAdicionalPdf.text(\"CIDADE DE ORIGEM\", objX, posLinhaHeader);\n\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"bold\");\n infoPgtoAdicionalPdf.text(booking.proposta.municOrigem + '/' + booking.proposta.ufOrigem, objX, posLinhaConteudo);\n\n objX = secondColPos;\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"normal\");\n infoPgtoAdicionalPdf.text(\"PORTO DE ORIGEM\", objX, posLinhaHeader);\n\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"bold\");\n infoPgtoAdicionalPdf.text(booking.proposta.nomePortoOrigem + '/' + booking.proposta.ufPortoOrigem, objX, posLinhaConteudo);\n\n\n // Linha 04\n objX = firstColPos;\n posLinhaHeader = posLinhaConteudo + (fontSize / 2) + 5;\n posLinhaConteudo = posLinhaHeader + 3;\n\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"normal\");\n infoPgtoAdicionalPdf.text(\"PORTO DE DESTINO\", objX, posLinhaHeader);\n\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"bold\");\n infoPgtoAdicionalPdf.text(booking.proposta.nomePortoDestino + '/' + booking.proposta.ufPortoDestino, objX, posLinhaConteudo);\n\n\n if (booking.modal.endsWith('PA')) {\n objX = secondColPos;\n\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"normal\");\n infoPgtoAdicionalPdf.text(\"CIDADE DE DESTINO\", objX, posLinhaHeader);\n\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"bold\");\n infoPgtoAdicionalPdf.text(booking.proposta.municDestino + '/' + booking.ufDes, objX, posLinhaConteudo);\n }\n }\n else {\n // Modal de Origem: PO\n objX = firstColPos;\n posLinhaHeader = posLinhaConteudo + (fontSize / 2) + 5;\n posLinhaConteudo = posLinhaHeader + 3;\n\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"normal\");\n infoPgtoAdicionalPdf.text(\"PORTO DE ORIGEM\", objX, posLinhaHeader);\n\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"bold\");\n infoPgtoAdicionalPdf.text(booking.proposta.nomePortoOrigem + '/' + booking.proposta.ufPortoOrigem, objX, posLinhaConteudo);\n\n if (booking.modal.endsWith('PO')) {\n\n objX = secondColPos;\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"normal\");\n infoPgtoAdicionalPdf.text(\"PORTO DE DESTINO\", objX, posLinhaHeader);\n\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"bold\");\n infoPgtoAdicionalPdf.text(booking.proposta.nomePortoDestino + '/' + booking.proposta.ufPortoDestino, objX, posLinhaConteudo);\n\n }\n else {\n\n objX = firstColPos;\n // Muda para proxima linha\n posLinhaHeader = posLinhaConteudo + (fontSize / 2) + 5;\n posLinhaConteudo = posLinhaHeader + 3;\n\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"normal\");\n infoPgtoAdicionalPdf.text(\"PORTO DE DESTINO\", objX, posLinhaHeader);\n\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"bold\");\n infoPgtoAdicionalPdf.text(booking.proposta.nomePortoDestino + '/' + booking.proposta.ufPortoDestino, objX, posLinhaConteudo);\n\n objX = secondColPos;\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"normal\");\n infoPgtoAdicionalPdf.text(\"CIDADE DE DESTINO\", objX, posLinhaHeader);\n\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"bold\");\n infoPgtoAdicionalPdf.text(booking.proposta.municDestino + '/' + booking.ufDes, objX, posLinhaConteudo);\n }\n }\n\n\n // DADOS DO CALCULO *************************************************************************\n // Linha 01\n posLinhaConteudo = posLinhaConteudo + (fontSize / 2) + 10;\n objX = firstColPos;\n infoPgtoAdicionalPdf.text(\"DADOS DO CALCULO\", objX, posLinhaConteudo);\n posLinhaConteudo = posLinhaConteudo + (fontSize / 2) - 3;\n infoPgtoAdicionalPdf.line(10, posLinhaConteudo, 200, posLinhaConteudo);\n\n\n // Linha 02\n posLinhaConteudo = posLinhaConteudo + (fontSize / 2);\n\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"normal\");\n infoPgtoAdicionalPdf.text(\"VALOR TOTAL NF (R$)\", objX, posLinhaConteudo);\n\n objX = objX + 36;\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"bold\");\n infoPgtoAdicionalPdf.text(this.formatNumber(infoPgtoAdicional.vlrTotalNota, 12), objX, posLinhaConteudo);\n\n\n\n objX = objX + 34;\n\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"normal\");\n infoPgtoAdicionalPdf.text(\"ALÍQUOTA AD-VALOREM \", objX, posLinhaConteudo);\n\n objX = objX + 52;\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"bold\");\n infoPgtoAdicionalPdf.text(adValoren, objX, posLinhaConteudo);\n\n\n objX = 150;\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"normal\");\n infoPgtoAdicionalPdf.text(\"ALÍQUOTA ICMS\", objX, posLinhaConteudo);\n\n objX = objX + 40;\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"bold\");\n infoPgtoAdicionalPdf.text(this.formatNumber(infoPgtoAdicional.percAliquotaIcms * 100), objX, posLinhaConteudo);\n\n\n // DEMONSTRATIVO DO CALCULO *************************************************************************\n objX = firstColPos;\n posLinhaConteudo = posLinhaConteudo + (fontSize / 2) + 10;\n posLinhaHeader = posLinhaConteudo;\n\n infoPgtoAdicionalPdf.text(\"DEMONSTRATIVO DO CALCULO (R$)\", objX, posLinhaConteudo);\n posLinhaConteudo = posLinhaConteudo + (fontSize / 2) - 3;\n\n infoPgtoAdicionalPdf.line(10, posLinhaConteudo, 70, posLinhaConteudo);\n\n\n // Linha 01\n posLinhaConteudo = posLinhaConteudo + (fontSize / 2);\n objX = firstColPos;\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"normal\");\n infoPgtoAdicionalPdf.text(\"TOTAL FRETE NEG.\", objX, posLinhaConteudo);\n\n\n objX = 42;\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"bold\");\n infoPgtoAdicionalPdf.text(this.formatNumber(infoPgtoAdicional.vlrFreteNegociado, 15), objX, posLinhaConteudo, { align: \"left\" });\n\n // LINHA 02\n posLinhaConteudo = posLinhaConteudo + (fontSize / 2);\n objX = firstColPos;\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"normal\");\n infoPgtoAdicionalPdf.text(\"AD-VALOREM\", objX, posLinhaConteudo);\n\n objX = 42;\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"bold\");\n infoPgtoAdicionalPdf.text(this.formatNumber(infoPgtoAdicional.vlrAdValorem, 15), objX, posLinhaConteudo, { align: \"left\" });\n\n\n // Linha 03\n posLinhaConteudo = posLinhaConteudo + (fontSize / 2);\n objX = firstColPos;\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"normal\");\n infoPgtoAdicionalPdf.text(\"BUNKER\", objX, posLinhaConteudo, { align: \"left\" });\n\n objX = 42;\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"bold\");\n infoPgtoAdicionalPdf.text(this.formatNumber(infoPgtoAdicional.vlrBaf, 15), objX, posLinhaConteudo, { align: \"left\" });\n\n // LINHA 04\n posLinhaConteudo = posLinhaConteudo + (fontSize / 2);\n objX = firstColPos;\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"normal\");\n infoPgtoAdicionalPdf.text(\"TX ADICIONAL\", objX, posLinhaConteudo, { align: \"left\" });\n\n objX = 42;\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"bold\");\n infoPgtoAdicionalPdf.text(this.formatNumber(infoPgtoAdicional.vlrTaxaAdicional, 15), objX, posLinhaConteudo, { align: \"left\" });\n\n // LINHA 05\n posLinhaConteudo = posLinhaConteudo + (fontSize / 2);\n objX = firstColPos;\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"normal\");\n infoPgtoAdicionalPdf.text(\"ICMS\", objX, posLinhaConteudo, { align: \"left\" });\n\n objX = 42;\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"bold\");\n infoPgtoAdicionalPdf.text(this.formatNumber(infoPgtoAdicional.vlrIcms, 15), objX, posLinhaConteudo, { align: \"left\" });\n\n // LINHA 06\n posLinhaConteudo = posLinhaConteudo + (fontSize / 2);\n objX = 10;\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"normal\");\n infoPgtoAdicionalPdf.text(\"VALOR A PAGAR\", objX, posLinhaConteudo, { align: \"left\" });\n\n objX = 42;\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"bold\");\n infoPgtoAdicionalPdf.text(this.formatNumber(infoPgtoAdicional.vlrFreteTotal, 15), objX, posLinhaConteudo, { align: \"left\" });\n\n\n // DADOS PARA DEPOSITO ********************************************************************\n objX = secondColPos;\n posLinhaConteudo = posLinhaHeader;\n infoPgtoAdicionalPdf.text(\"DADOS PARA DEPÓSITO\", objX, posLinhaConteudo);\n posLinhaConteudo = posLinhaConteudo + (fontSize / 2) - 3;\n\n infoPgtoAdicionalPdf.line(objX, posLinhaConteudo, 140, posLinhaConteudo);\n // objYTemp = objY - 5;\n\n // Linha 01\n posLinhaConteudo = posLinhaConteudo + (fontSize / 2);\n\n objX = secondColPos;\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"normal\");\n infoPgtoAdicionalPdf.text(\"CNPJ\", objX, posLinhaConteudo);\n\n objX = 105;\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"bold\");\n infoPgtoAdicionalPdf.text(this.cnpj, objX, posLinhaConteudo);\n\n // LINHA 02\n posLinhaConteudo = posLinhaConteudo + (fontSize / 2);\n objX = secondColPos;\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"normal\");\n infoPgtoAdicionalPdf.text(\"BANCO\", objX, posLinhaConteudo);\n\n objX = 105;\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"bold\");\n infoPgtoAdicionalPdf.text(this.bancoNumero, objX, posLinhaConteudo);\n\n\n // Linha 03\n posLinhaConteudo = posLinhaConteudo + (fontSize / 2);\n objX = secondColPos;\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"normal\");\n infoPgtoAdicionalPdf.text(\"AGÊNCIA\", objX, posLinhaConteudo);\n\n objX = 105;\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"bold\");\n infoPgtoAdicionalPdf.text(this.agencia, objX, posLinhaConteudo);\n\n // LINHA 04\n posLinhaConteudo = posLinhaConteudo + (fontSize / 2);\n objX = secondColPos;\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"normal\");\n infoPgtoAdicionalPdf.text(\"C/C\", objX, posLinhaConteudo);\n\n objX = 105;\n infoPgtoAdicionalPdf.setFont(nomeFonte, \"bold\");\n infoPgtoAdicionalPdf.text(this.contaDeposito, objX, posLinhaConteudo);\n\n\n\n // IMAGE PIX ********************************************************************\n \n objX = 150;\n posLinhaConteudo = posLinhaHeader;\n infoPgtoAdicionalPdf.text(\"PAGAMENTO PIX\", objX, posLinhaConteudo);\n posLinhaConteudo = posLinhaConteudo + (fontSize / 2) - 3;\n\n infoPgtoAdicionalPdf.line(objX, posLinhaConteudo, 200, posLinhaConteudo);\n\n\n objX = 155;\n posLinhaConteudo = posLinhaHeader + 5;\n\n\n var pixImage = 'data:image/jpeg;base64,' + infoPgtoAdicional.qrCode;\n\n\n infoPgtoAdicionalPdf.addImage(pixImage, \"JPEG\", objX, posLinhaConteudo, 39, 39);\n \n\n\n\n // RODAPÉ ********************************************************************\n posLinhaConteudo = posLinhaConteudo + 50;\n\n fontSize = 8;\n infoPgtoAdicionalPdf.setFontSize(fontSize);\n infoPgtoAdicionalPdf.line(10, posLinhaConteudo, 200, posLinhaConteudo);\n objX = 10;\n posLinhaConteudo = posLinhaConteudo + 5;\n infoPgtoAdicionalPdf.text(\"* A liberação do booking está sujeita a confirmação do pagamento.\", objX, posLinhaConteudo);\n posLinhaConteudo = posLinhaConteudo + 5;\n infoPgtoAdicionalPdf.text(\"* O valor da mercadoria deverá ser o mesmo informado na Nota Fiscal para que não haja divergência no cálculo.\", objX, posLinhaConteudo);\n posLinhaConteudo = posLinhaConteudo + 5;\n infoPgtoAdicionalPdf.text(\"* O frete negociado não sofrerá alteração, entretanto as demais taxas poderão sofrer variações.\", objX, posLinhaConteudo);\n posLinhaConteudo = posLinhaConteudo + 5;\n infoPgtoAdicionalPdf.text(\"* Atenção: Este QR Code é válido por 4 horas a partir da geração. Por favor, efetue o pagamento dentro deste prazo.\", objX, posLinhaConteudo);\n \n infoPgtoAdicionalPdf.save('PC' + booking.proposta.numProposta + \" - BKG\" + booking.numBooking + \".pdf\");\n\n }\n\n\n\n ObterDataFields() {\n this._dataService.getClienteClassificacao()\n .subscribe(lista => {\n this.clienteClassificacoes = lista;\n });\n\n this._dataService.getTipoPagamento()\n .subscribe(lista => {\n this.tiposPagamentos = lista;\n });\n\n this._dataService.getTipoServico()\n .subscribe(lista => {\n this.tiposServicos = lista;\n });\n\n }\n\n formatNumber(valor: number, tamanho?: number): string {\n let formatado: string;\n let valorTmp = valor.toFixed(2).toString();\n\n valorTmp = valorTmp.replace('.', ',');\n formatado = valorTmp.padStart(tamanho, ' ');\n\n return formatado;\n\n }\n\n\n\n getDescricao(valor: number, lista: any): string {\n let descricao: string = '';\n\n for (let index = 0; index < lista.length; index++) {\n const element = lista[index];\n\n if (element.codigo.toString() === valor.toString()) {\n descricao = element.descricao;\n }\n\n }\n\n return descricao;\n }\n\n}\n","import { Component, OnInit, ViewChild, AfterViewInit } from '@angular/core';\n\nimport { AppService } from 'app/_services/app.service';\nimport { SharedService } from '../../../../_services/shared.service';\nimport { BookingService } from '../../../../_services/booking.service';\nimport { MessageService } from '../../../../_services/message.service';\nimport { MunicipioService } from '../../../../_services/municipio.service';\nimport { DatepickerService } from \"app/_services/datepicker.service\";\nimport { GenericOrderbyService } from \"app/_services/generic-orderby.service\";\nimport { FiltrosLateraisService } from 'app/_services/filtros-laterais.service';\nimport { PropostaComercialService } from '../../../../_services/proposta-comercial.service';\n\nimport { Porto } from '../../../../_models/porto';\nimport { Municipio } from '../../../../_models/municipio';\nimport { Booking } from 'app/_models/booking';\nimport { MeusBookings } from \"app/_models/meus-bookings\";\nimport { BookingRequest } from '../../../../_models/booking-request';\nimport { FiltrosLaterais } from \"app/_models/filtros-laterais\";\nimport { ServicoProposta } from '../../../../_models/servico-proposta';\nimport { MunicipioRequest } from '../../../../_models/municipio-request';\nimport { PropostaComercial } from '../../../../_models/proposta-comercial';\n\nimport { DateModel } from \"app/shared/ng2-datepicker/ng2-datepicker.component\";\nimport { BaseComponent } from '../../../../shared/base.component';\nimport { DatePickerOptions } from \"app/shared/ng2-datepicker/ng2-datepicker.component\";\nimport { MessageComponent } from '../../../../shared/message/message.component';\nimport { PaginacaoComponent } from '../../../../shared/paginacao/paginacao.component';\nimport { CnpjDropdownComponent } from '../../../../shared/cnpj-dropdown/cnpj-dropdown.component';\nimport { FiltrosLateraisComponent } from \"../../../filtros-laterais/filtros-laterais.component\";\nimport { FilterComboConfiguration } from \"app/_models/filterComboConfiguration\";\nimport { DetalhesContainerComponent } from '../../../../shared/detalhes-container/detalhes-container.component';\n\nimport { AnalyticsTela } from '../../../../_enums/analytics-tela';\nimport { AnalyticsService } from '../../../../_services/analytics.service';\nimport { AnalyticsDownload } from '../../../../_enums/analytics-download';\n\nimport { Operacao } from 'app/_enums/operacao';\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\nimport { GrupoEconomicoService } from 'app/_services/grupo-economico.service';\nimport { InfoPgtoAdicionalService } from 'app/_services/info-pgto-adicional.service';\nimport * as moment from 'moment';\nimport { InfoPgtoAdicional } from 'app/_models/InfoPgtoAdicional';\nimport { BaseService } from 'app/_services/base.service';\n\n\n@Component({\n selector: 'pixreport',\n templateUrl: './pixreport.component.html',\n styleUrls: ['./pixreport.component.scss']\n})\nexport class PixReportComponent extends BaseComponent implements OnInit, AfterViewInit {\n\n @ViewChild(CnpjDropdownComponent, {static: true}) cnpjdropdown: CnpjDropdownComponent;\n @ViewChild(PaginacaoComponent, {static: true}) paginacao: PaginacaoComponent;\n @ViewChild(MessageComponent, {static: true}) mensagem: MessageComponent;\n @ViewChild(FiltrosLateraisComponent, {static: true}) filtroslaterais: FiltrosLateraisComponent;\n @ViewChild(DetalhesContainerComponent, {static: true}) detalhesContainer : DetalhesContainerComponent;\n\n loading: boolean = false;\n downloading: boolean = false;\n loadingPortos: boolean = false;\n loadingMunicipios: boolean = false;\n empty: boolean = true;\n noresult: boolean = false;\n listaStatus: string[];\n statusSelecionado: string;\n\n filtroMunicipio: MunicipioRequest = new MunicipioRequest();\n\n filtrosLaterais = new FiltrosLaterais();\n consulta: BookingRequest = new BookingRequest();\n meusBookings: MeusBookings = new MeusBookings(new FiltrosLaterais(), []);\n listaBookingsOriginal: Booking[];\n pageSize: number = 10;\n optionsInicio: DatePickerOptions;\n optionsFim: DatePickerOptions;\n startDateModel: DateModel;\n expirationDateModel: DateModel;\n cnpj: String = '';\n nomeCliente: String = '';\n\n filtroGenerico: string = \"\";\n portos: Porto[] = new Array();\n municipios: Municipio[] = new Array();\n\n municipiosOrigem: number[];\n portosOrigem: number[];\n municipiosDestino: number[];\n portosDestino: number[];\n listaInfoPgtoAdicional: InfoPgtoAdicional[];\n\n ordenarpor: string = 'idBooking';\n eAdmin: boolean = this._appService.isAdmin();\n eCliente: boolean = this._appService.isCliente();\n maisDeUmCNPJ = this._appService.maisDeUmCNPJ();\n cssClassAdmin = '';\n\n comboCidades: FilterComboConfiguration;\n comboPortos: FilterComboConfiguration;\n selecao: number[];\n dhInstantPayment: string = '';\n idBooking: String;\n idProposta: number;\n\n constructor(\n private _bookingService: BookingService,\n private _grupoService: GrupoEconomicoService,\n private _sharedService: SharedService,\n private _propostaService: PropostaComercialService,\n private _municipioService: MunicipioService,\n private _appService: AppService,\n private _msgService: MessageService,\n private _genericOrderbyService: GenericOrderbyService,\n private _datepickerService: DatepickerService,\n private _filtroslateraisService: FiltrosLateraisService,\n private _analyticsService: AnalyticsService,\n private _infoPgtoAdicionalService: InfoPgtoAdicionalService,\n private _baseService: BaseService\n ) {\n\n super();\n\n this.optionsInicio = this._datepickerService.GenerateOptionsConfig(this._sharedService.addDays(new Date(), -30));\n this.optionsFim = this._datepickerService.GenerateOptionsConfig(new Date());\n\n this.comboCidades = new FilterComboConfiguration(\"Cidade(s)...\");\n this.comboCidades.settings = {\n checkedStyle: 'glyphicon',\n dynamicTitleMaxItems: 2,\n enableSearch: true\n };\n\n this.comboPortos = new FilterComboConfiguration(\"Porto(s)...\");\n this.comboPortos.settings = {\n checkedStyle: 'glyphicon',\n dynamicTitleMaxItems: 2,\n showCheckAll: true,\n showUncheckAll: true\n };\n\n this._msgService.emitirMensagem.subscribe(\n msg => {\n this.mensagem.mostrarMensagem(msg.tipo, msg.mensagem);\n });\n }\n\n ngAfterViewInit(): void {\n this._grupoService.grupoEconomicoSelecionadoEvent.subscribe((cnpjs: string) => {\n if (cnpjs)\n this.Pesquisar();\n else\n this.zeraPesquisa();\n });\n }\n\n ngOnInit() {\n this.cssClassAdmin = this.eAdmin || (this.eCliente && this.maisDeUmCNPJ) ? \"\" : \" customer-profile\";\n\n this.cnpjdropdown.SelecionaMultiplos = true;\n this.cnpjdropdown.modoEdicao = false;\n \n\n if (!this.eAdmin){\n\n }\n else {\n this.cnpjdropdown.cnpjsGrupos = localStorage.getItem('cnpjGrupos');\n if (this.cnpjdropdown.cnpjsGrupos)\n this.Pesquisar(false);\n }\n\n let msg = this._msgService.getMessageRedirect();\n if (msg.show)\n this._msgService.addMessage(msg.titulo, msg.mensagem, msg.type, LogFrontFuncionalidade.Booking, Operacao.Consulta, this.consulta);\n\n this._analyticsService.RegistrarAcesso(AnalyticsTela.Booking);\n }\n\n zeraPesquisa() {\n this.empty = true;\n this.noresult = false;\n this.statusSelecionado = \"\";\n this.meusBookings = new MeusBookings(new FiltrosLaterais(), []);\n this.paginacao.pagedItems = [];\n this.paginacao.pager = {};\n }\n\n Pesquisar(registrarAnalytics: boolean = true) {\n this._msgService.clearMessage();\n \n this.getListaInfoPgtoAdicional();\n\n //limpa mensagens de erros\n this._msgService.clearMessage();\n\n }\n\n\n\n FiltrarPorStatus(status: string){\n if (!status)\n this.meusBookings.Bookings = this.listaBookingsOriginal;\n else\n this.meusBookings.Bookings = this.listaBookingsOriginal.filter(b => b.statusBooking == status);\n\n this.ordernarListaPorCampo(this.ordenarpor, true);\n }\n\n \n\n ordernarListaPorCampo(campo: string, desc: boolean): void {\n this.paginacao.setAllData(this._genericOrderbyService.ordenarPorCampo(this.meusBookings.Bookings, campo, desc));\n }\n\n\n getListaInfoPgtoAdicional() {\n this.loading = true;\n\n\n \n let startDate: String = this.formataDateToString(this.startDateModel);\n let expirationDate: String = this.formataDateToString(this.expirationDateModel);\n\n // if (this.startDateModel)\n // {\n // var dddd = this.ObterData(this.startDateModel, 0);\n // }\n // // else\n // // {\n // // startDate = this._sharedService.addDays(new Date(), -30).toString();\n // // }\n\n // if (this.expirationDateModel)\n // {\n // expirationDate = this.ObterData(this.expirationDateModel, 0);\n // }\n // else\n // {\n // endDate = new Date().toString();\n // }\n\n\n this._infoPgtoAdicionalService.getListaInfoPgtoAdicional(startDate, expirationDate, this.nomeCliente, this.cnpj, this.idBooking, this.idProposta ).subscribe(\n (lista) => {\n this.listaInfoPgtoAdicional = lista;\n this.paginacao.setAllData(lista);\n this.paginacao.setPage(1);\n },\n (err) => {}\n );\n\n this.loading = false;\n\n }\n\n private ObterData(dateModel: DateModel, dateOffset: number) {\n\t\treturn (dateModel != undefined) ?\n\t\t\tthis._datepickerService.ObtemData(dateModel) :\n\t\t\tthis._sharedService.addDays(new Date(), dateOffset);\n\t}\n\n\n formataDateToString(dateModel: DateModel): String{\n let formattedDate: String =\"\";\n\n let day: String = \"\";\n let month: String= \"\";\n let year: String= \"\";\n \n\n if( parseInt(dateModel.day) > 9){\n day = dateModel.day;\n }\n else{\n day = dateModel.day;\n }\n\n\n if(parseInt(dateModel.month) > 9){\n month = dateModel.month;\n }\n else{\n month = dateModel.month;\n }\n \n\n year = dateModel.year;\n \n\n formattedDate = year.toString() + '-' + month + '-' + day;\n\n\n return formattedDate;\n }\n\n\n extraeData(data: String): String{\n\n\n return data.substring(0, 10);\n }\n \n\n\n\n // exportarRelatorioCSV() {\n // let listaFiltrada = this._filtroslateraisService.filtrarDados(this.meusBookings.Bookings, this.filtrosLaterais);\n // this._bookingService.exportarRelatorioCSV(listaFiltrada);\n // this._analyticsService.RegistrarDownload(AnalyticsTela.Booking, AnalyticsDownload.ExportacaoCSV);\n // this.downloading = false;\n // }\n\n exportarRelatorioCSV() {\n this.downloading = true;\n\n const titulos: any[] = [\n \"CLIENTE\",\n \"CPF/CNPJ\",\n \"PROPOSTA\",\n \"NUM.BOOKING\",\n \"DATA CRIACAO\",\n \"VALOR TOTAL\",\n \"VALOR PAGO\",\n \"PAGO EM\",\n \"STATUS\"];\n\n\n const data: any[] = [];\n\n this.listaInfoPgtoAdicional.forEach(x => {\n let status = this.ajustaStatus( x.paymentStatus )\n\n data.push([\n x.customerName, // CLIENTE\n x.cpfCnpj, // CPF/CNPJ\n x.idProposta, // PROPOSTA\n x.idBooking, // NUM.BOOKING\n x.createdOn, // DATA CRIACAO\n x.vlrFreteTotal, // VALOR TOTAL\n x.amountReceived, // VALOR PAGO\n x.paidAt, // PAGO EM\n status // STATUS\n ]);\n });\n\n this._baseService.DownloadXLSX(data, titulos, 'PagamentosPix.xlsx');\n this.downloading = false;\n \n }\n\n ajustaStatus(status: String): String{\n let _status: String = '';\n if(status === 'COMPLETED'){\n _status = 'PAID';\n }\n\n return _status;\n\n }\n\n}\n","import { RouterModule } from '@angular/router';\nimport { NgModule } from '@angular/core';\nimport { CommonModule, CurrencyPipe } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ModalModule } from \"ngx-bootstrap/modal\";\n\nimport { Booking } from 'app/_models/booking';\nimport { BookingRequest } from '../../../../_models/booking-request';\nimport { SharedModule } from '../../../../shared/shared.module';\n\nimport { DatePickerModule } from 'app/shared/ng2-datepicker/ng2-datepicker.module';\nimport { PixReportComponent } from './pixreport.component';\nimport { MultiselectDropdownModule } from '../../../../shared/multiselect-dropdown/multiselect-dropdown.module';\nimport { BookingService } from '../../../../_services/booking.service';\nimport { PropostaComercialService } from '../../../../_services/proposta-comercial.service';\nimport { PropostaComercial } from '../../../../_models/proposta-comercial';\nimport { Step1SelecaoPropostaComponent } from '../../solicitar-booking/step1-selecao-proposta/step1-selecao-proposta.component';\nimport { Step2DetalhesOperacaoComponent } from '../../solicitar-booking/step2-detalhes-operacao/step2-detalhes-operacao.component';\nimport { ControleStepsComponent } from '../../solicitar-booking/controle-steps/controle-steps.component';\nimport { Step3AgendamentoColetaComponent } from '../../solicitar-booking/step3-agendamento-coleta/step3-agendamento-coleta.component';\nimport { Step4DadosReservaComponent } from '../../solicitar-booking/step4-dados-reserva/step4-dados-reserva.component';\nimport { ListaAgendamentoComponent } from '../../solicitar-booking/step3-agendamento-coleta/lista-agendamento/lista-agendamento.component';\nimport { GroupbyService } from \"app/_services/groupby.service\";\nimport { DataService } from \"app/_services/data.service\";\nimport { ItemAgendamentoModule } from \"app/cliente/booking/solicitar-booking/step3-agendamento-coleta/lista-agendamento/item-agendamento/item-agendamento.module\";\nimport { DatepickerService } from \"app/_services/datepicker.service\";\nimport { TextMaskModule } from \"angular2-text-mask\";\nimport { FiltrosPropostasComerciaisService } from \"app/_services/filtros-propostas-comerciais.service\";\nimport { AnalyticsService } from '../../../../_services/analytics.service';\nimport { PixReportRoutingModule } from './pixreport.routing.module';\nimport { UsuarioService } from 'app/_services/usuario.service';\nimport { CotacaoService } from 'app/_services/cotacao.service';\nimport { ParametroService } from 'app/_services/parametro.service';\nimport { UploadArquivoService } from 'app/_services/upload-arquivo.service';\nimport { AppService } from 'app/_services/app.service';\nimport { ProgramacaoNaviosService } from 'app/_services/programacao-navios.service';\nimport { CurrencyMaskModule } from 'ng2-currency-mask';\nimport { MascaraModule } from \"app/shared/mascara/mascara.module\";\n\nimport{ Step5InformacaoPagtoComponent } from '../../solicitar-booking/step5-informacao-pgto/step5-informacao-pgto.component';\n\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n RouterModule,\n TextMaskModule,\n MultiselectDropdownModule,\n DatePickerModule,\n CurrencyMaskModule,\n SharedModule,\n ItemAgendamentoModule,\n ModalModule.forRoot(),\n PixReportRoutingModule,\n MascaraModule\n ],\n exports: [MultiselectDropdownModule],\n declarations: [\n PixReportComponent\n ],\n providers: [\n AppService,\n BookingService,\n PropostaComercialService,\n BookingRequest,\n Booking,\n GroupbyService,\n DataService,\n DatepickerService,\n PropostaComercial,\n FiltrosPropostasComerciaisService,\n AnalyticsService,\n UsuarioService,\n CotacaoService,\n ParametroService,\n UploadArquivoService,\n ProgramacaoNaviosService\n ],\n})\nexport class PixReportModule {\n\n}\n","import { PixReportComponent } from './pixreport.component';\nimport { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { SolicitarBookingComponent } from \"app/cliente/booking/solicitar-booking/solicitar-booking.component\";\nimport { AuthGuard } from 'app/_guards/auth.guard';\n\n\nconst bookingRoutes: Routes = [\n // { path: '', component: BookingComponent, canActivate: [AuthGuard] },\n // { path: 'solicitar', component: SolicitarBookingComponent, canActivate: [AuthGuard] },\n // { path: 'solicitar/:id', component: SolicitarBookingComponent, canActivate: [AuthGuard] },\n // { path: 'solicitar/programacao/', component: SolicitarBookingComponent, canActivate: [AuthGuard] },\n // { path: 'solicitar/:id/:duplicar', component: SolicitarBookingComponent, canActivate: [AuthGuard] },\n // { path: 'solicitar/cotacao/:numProposta/:idTrecho/:cnpjCli/:ieCli', component: SolicitarBookingComponent, canActivate: [AuthGuard] }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(bookingRoutes)],\n exports: [RouterModule]\n})\nexport class PixReportRoutingModule {}","import { Component, OnInit, ViewChild, AfterViewInit } from '@angular/core';\n\nimport { AppService } from 'app/_services/app.service';\n\nimport { DatepickerService } from \"app/_services/datepicker.service\";\nimport { GenericOrderbyService } from \"app/_services/generic-orderby.service\";\nimport { FiltrosLateraisService } from 'app/_services/filtros-laterais.service';\n\n\n\nimport { Booking } from 'app/_models/booking';\nimport { MeusBookings } from \"app/_models/meus-bookings\";\n\nimport { FiltrosLaterais } from \"app/_models/filtros-laterais\";\n\n\nimport { DateModel } from \"app/shared/ng2-datepicker/ng2-datepicker.component\";\nimport { DatePickerOptions } from \"app/shared/ng2-datepicker/ng2-datepicker.component\";\n\n\nimport { Operacao } from 'app/_enums/operacao';\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\nimport { GrupoEconomicoService } from 'app/_services/grupo-economico.service';\nimport { InfoPgtoAdicionalService } from 'app/_services/info-pgto-adicional.service';\nimport { AnalyticsDownload } from 'app/_enums/analytics-download';\nimport { AnalyticsTela } from 'app/_enums/analytics-tela';\nimport { BookingRequest } from 'app/_models/booking-request';\nimport { FilterComboConfiguration } from 'app/_models/filterComboConfiguration';\nimport { Municipio } from 'app/_models/municipio';\nimport { MunicipioRequest } from 'app/_models/municipio-request';\nimport { Porto } from 'app/_models/porto';\nimport { PropostaComercial } from 'app/_models/proposta-comercial';\nimport { ServicoProposta } from 'app/_models/servico-proposta';\nimport { AnalyticsService } from 'app/_services/analytics.service';\nimport { BookingService } from 'app/_services/booking.service';\nimport { MessageService } from 'app/_services/message.service';\nimport { MunicipioService } from 'app/_services/municipio.service';\nimport { PropostaComercialService } from 'app/_services/proposta-comercial.service';\nimport { SharedService } from 'app/_services/shared.service';\nimport { FiltrosLateraisComponent } from 'app/cliente/filtros-laterais/filtros-laterais.component';\nimport { BaseComponent } from 'app/shared/base.component';\nimport { CnpjDropdownComponent } from 'app/shared/cnpj-dropdown/cnpj-dropdown.component';\nimport { DetalhesContainerComponent } from 'app/shared/detalhes-container/detalhes-container.component';\nimport { MessageComponent } from 'app/shared/message/message.component';\nimport { PaginacaoComponent } from 'app/shared/paginacao/paginacao.component';\n\n\n@Component({\n selector: 'relatoriopix',\n templateUrl: './relatoriopix.component.html',\n styleUrls: ['./relatoriopix.component.scss']\n})\nexport class RelatorioPixComponent extends BaseComponent implements OnInit, AfterViewInit {\n\n \n @ViewChild(PaginacaoComponent, {static: true}) paginacao: PaginacaoComponent;\n @ViewChild(MessageComponent, {static: true}) mensagem: MessageComponent;\n \n loading: boolean = false;\n downloading: boolean = false;\n loadingPortos: boolean = false;\n loadingMunicipios: boolean = false;\n empty: boolean = true;\n noresult: boolean = false;\n listaStatus: string[];\n statusSelecionado: string;\n\n filtroMunicipio: MunicipioRequest = new MunicipioRequest();\n\n filtrosLaterais = new FiltrosLaterais();\n consulta: BookingRequest = new BookingRequest();\n meusBookings: MeusBookings = new MeusBookings(new FiltrosLaterais(), []);\n listaBookingsOriginal: Booking[];\n pageSize: number = 10;\n optionsInicio: DatePickerOptions;\n optionsFim: DatePickerOptions;\n dataInicio: DateModel;\n dataFim: DateModel;\n\n filtroGenerico: string = \"\";\n portos: Porto[] = new Array();\n municipios: Municipio[] = new Array();\n\n municipiosOrigem: number[];\n portosOrigem: number[];\n municipiosDestino: number[];\n portosDestino: number[];\n\n ordenarpor: string = 'idBooking';\n eAdmin: boolean = this._appService.isAdmin();\n eCliente: boolean = this._appService.isCliente();\n maisDeUmCNPJ = this._appService.maisDeUmCNPJ();\n cssClassAdmin = '';\n\n comboCidades: FilterComboConfiguration;\n comboPortos: FilterComboConfiguration;\n selecao: number[];\n dhInstantPayment: string = '';\n\n constructor(\n private _bookingService: BookingService,\n private _grupoService: GrupoEconomicoService,\n private _sharedService: SharedService,\n private _propostaService: PropostaComercialService,\n private _municipioService: MunicipioService,\n private _appService: AppService,\n private _msgService: MessageService,\n private _genericOrderbyService: GenericOrderbyService,\n private _datepickerService: DatepickerService,\n private _filtroslateraisService: FiltrosLateraisService,\n private _analyticsService: AnalyticsService,\n private _infoPgtoAdicionalService: InfoPgtoAdicionalService\n ) {\n\n super();\n\n this.optionsInicio = this._datepickerService.GenerateOptionsConfig(this._sharedService.addDays(new Date(), -30));\n this.optionsFim = this._datepickerService.GenerateOptionsConfig(new Date());\n\n this.comboCidades = new FilterComboConfiguration(\"Cidade(s)...\");\n this.comboCidades.settings = {\n checkedStyle: 'glyphicon',\n dynamicTitleMaxItems: 2,\n enableSearch: true\n };\n\n this.comboPortos = new FilterComboConfiguration(\"Porto(s)...\");\n this.comboPortos.settings = {\n checkedStyle: 'glyphicon',\n dynamicTitleMaxItems: 2,\n showCheckAll: true,\n showUncheckAll: true\n };\n\n this._msgService.emitirMensagem.subscribe(\n msg => {\n this.mensagem.mostrarMensagem(msg.tipo, msg.mensagem);\n });\n }\n\n ngAfterViewInit(): void {\n this._grupoService.grupoEconomicoSelecionadoEvent.subscribe((cnpjs: string) => {\n if (cnpjs)\n this.Pesquisar();\n else\n this.zeraPesquisa();\n });\n }\n\n ngOnInit() {\n this.cssClassAdmin = this.eAdmin || (this.eCliente && this.maisDeUmCNPJ) ? \"\" : \" customer-profile\";\n\n \n\n let msg = this._msgService.getMessageRedirect();\n if (msg.show)\n this._msgService.addMessage(msg.titulo, msg.mensagem, msg.type, LogFrontFuncionalidade.Booking, Operacao.Consulta, this.consulta);\n\n this._analyticsService.RegistrarAcesso(AnalyticsTela.Booking);\n }\n\n zeraPesquisa() {\n this.empty = true;\n this.noresult = false;\n this.statusSelecionado = \"\";\n this.meusBookings = new MeusBookings(new FiltrosLaterais(), []);\n this.paginacao.pagedItems = [];\n this.paginacao.pager = {};\n }\n\n Pesquisar(registrarAnalytics: boolean = true) {\n \n }\n\n\tprivate ObterData(dateModel: DateModel, dateOffset: number) {\n\t\treturn (dateModel != undefined) ?\n\t\t\tthis._datepickerService.ObtemData(dateModel) :\n\t\t\tthis._sharedService.addDays(new Date(), dateOffset);\n\t}\n\n\n \n\n FiltrarPorStatus(status: string){\n if (!status)\n this.meusBookings.Bookings = this.listaBookingsOriginal;\n else\n this.meusBookings.Bookings = this.listaBookingsOriginal.filter(b => b.statusBooking == status);\n\n this.ordernarListaPorCampo(this.ordenarpor, true);\n }\n\n\n\n\n\n getServicosBooking(book: Booking, tipo: string): ServicoProposta[] {\n return book.detalheDoBooking.proposta.servicosDaProposta.filter(f => f.indicOriDes == tipo);\n }\n\n exibeServicosBooking(book: Booking, tipo: string): boolean {\n var servicosDaProposta = book.detalheDoBooking.proposta.servicosDaProposta;\n if (!servicosDaProposta)\n return false;\n\n if (servicosDaProposta.length == 0)\n return false;\n\n return (servicosDaProposta.filter(f => f.indicOriDes == tipo).length > 0);\n }\n\n ordernarListaPorCampo(campo: string, desc: boolean): void {\n this.paginacao.setAllData(this._genericOrderbyService.ordenarPorCampo(this.meusBookings.Bookings, campo, desc));\n }\n\n obtemClasseDoStatus(status: string): string {\n status = status.toLowerCase();\n\n if (status.indexOf('emitido') !== -1)\n return 'quotation-status active';\n else if (status.indexOf('pendente') !== -1)\n return 'quotation-status waiting';\n else if (status.indexOf('ativo') !== -1)\n return 'quotation-status info';\n return 'quotation-status expired';\n }\n\n obtemTextoEmbarque(book: Booking) {\n if (book.modal.startsWith('PO'))\n return (book.portoOri + ' - ' + book.ufPortoOri).toUpperCase();\n else\n return (book.municOri + ' - ' + book.ufMunicOri).toUpperCase();\n }\n\n obtemTextoDesembarque(book: Booking) {\n if (book.modal.endsWith('PO'))\n return (book.portoDes + ' - ' + book.ufPortoDes).toUpperCase();\n else\n return (book.municDes + ' - ' + book.ufDes).toUpperCase();\n }\n\n exportarRelatorioCSV() {\n this.downloading = true;\n let listaFiltrada = this._filtroslateraisService.filtrarDados(this.meusBookings.Bookings, this.filtrosLaterais);\n this._bookingService.exportarRelatorioCSV(listaFiltrada);\n this._analyticsService.RegistrarDownload(AnalyticsTela.Booking, AnalyticsDownload.ExportacaoCSV);\n this.downloading = false;\n }\n\n handleDetail(book: any) {\n console.log('book,', book)\n }\n\n\n isInstantPaymentCreditado(numBooking: string) {\n\n if(numBooking == undefined || numBooking.trim().length == 0)\n return;\n\n\n this._infoPgtoAdicionalService.getInfoPgtoAdicionalByNumBooking(numBooking)\n .subscribe(infoPgtoAdicional => {\n\n if (infoPgtoAdicional != null)\n {\n const bookingUpd = this.meusBookings.Bookings.find(item=> item.numBooking === numBooking );\n bookingUpd.isInstantPaymentCreditado = infoPgtoAdicional.paymentStatus == 'COMPLETED';\n let dtTmp: string = infoPgtoAdicional.paidAt.toString().substr(0,10);\n let ano: string = dtTmp.substr(0, 4);\n let mes: string = dtTmp.substr(5, 2);;\n let dia:string = dtTmp.substr(8, 2);;\n\n bookingUpd.dhInstantPayment = dia + '/' + mes + '/' + ano;\n\n }\n else\n {\n this.meusBookings.Bookings.find(item=> item.numBooking === numBooking ).isInstantPaymentCreditado = false;\n }\n\n });\n }\n\n}\n","import { RouterModule } from '@angular/router';\nimport { NgModule } from '@angular/core';\nimport { CommonModule, CurrencyPipe } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ModalModule } from \"ngx-bootstrap/modal\";\n\nimport { Booking } from 'app/_models/booking';\n\n\nimport { DatePickerModule } from 'app/shared/ng2-datepicker/ng2-datepicker.module';\n\nimport { GroupbyService } from \"app/_services/groupby.service\";\nimport { DataService } from \"app/_services/data.service\";\nimport { ItemAgendamentoModule } from \"app/cliente/booking/solicitar-booking/step3-agendamento-coleta/lista-agendamento/item-agendamento/item-agendamento.module\";\nimport { DatepickerService } from \"app/_services/datepicker.service\";\nimport { TextMaskModule } from \"angular2-text-mask\";\nimport { FiltrosPropostasComerciaisService } from \"app/_services/filtros-propostas-comerciais.service\";\n\nimport { UsuarioService } from 'app/_services/usuario.service';\nimport { CotacaoService } from 'app/_services/cotacao.service';\nimport { ParametroService } from 'app/_services/parametro.service';\nimport { UploadArquivoService } from 'app/_services/upload-arquivo.service';\nimport { AppService } from 'app/_services/app.service';\nimport { ProgramacaoNaviosService } from 'app/_services/programacao-navios.service';\nimport { CurrencyMaskModule } from 'ng2-currency-mask';\nimport { MascaraModule } from \"app/shared/mascara/mascara.module\";\nimport { BookingRequest } from 'app/_models/booking-request';\nimport { PropostaComercial } from 'app/_models/proposta-comercial';\nimport { AnalyticsService } from 'app/_services/analytics.service';\nimport { BookingService } from 'app/_services/booking.service';\nimport { PropostaComercialService } from 'app/_services/proposta-comercial.service';\nimport { MultiselectDropdownModule } from 'app/shared/multiselect-dropdown/multiselect-dropdown.module';\nimport { SharedModule } from 'app/shared/shared.module';\nimport { BookingRoutingModule } from '../../booking.routing.module';\n\n\n\n\n\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n RouterModule,\n TextMaskModule,\n MultiselectDropdownModule,\n DatePickerModule,\n CurrencyMaskModule,\n SharedModule,\n ItemAgendamentoModule,\n ModalModule.forRoot(),\n BookingRoutingModule,\n MascaraModule\n ],\n exports: [MultiselectDropdownModule],\n declarations: [\n \n \n ],\n providers: [\n AppService,\n BookingService,\n PropostaComercialService,\n BookingRequest,\n Booking,\n GroupbyService,\n DataService,\n DatepickerService,\n PropostaComercial,\n FiltrosPropostasComerciaisService,\n AnalyticsService,\n UsuarioService,\n CotacaoService,\n ParametroService,\n UploadArquivoService,\n ProgramacaoNaviosService\n ],\n})\nexport class RelatorioPixModule {\n\n}\n","import { Component, Input, OnInit, Output, EventEmitter } from '@angular/core';\n\nimport { BaseComponent } from './../../../../shared/base.component';\n\n@Component({\n selector: 'controlesteps',\n templateUrl: './controle-steps.component.html',\n styleUrls: ['./controle-steps.component.scss']\n})\nexport class ControleStepsComponent extends BaseComponent {\n\n @Output() clickProximoStep: EventEmitter = new EventEmitter();\n @Output() clickStepAnterior: EventEmitter = new EventEmitter();\n @Input() habilitaBotoesAbas: boolean;\n \n public proximoStep() {\n this.clickProximoStep.emit(null);\n }\n\n public stepAnterior() {\n this.clickStepAnterior.emit(null);\n }\n}\n","import { AnalyticsOperacao } from './../../../_enums/analytics-operacao';\nimport { Component, OnInit, ViewChild, EventEmitter, ElementRef } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport * as moment from 'moment/moment';\nimport swal from 'sweetalert2';\n\nimport { Booking } from '../../../_models/booking';\nimport { Endereco } from 'app/_models/endereco';\nimport { Schedule } from './../../../_models/schedule';\nimport { Feriado } from 'app/_models/feriado';\nimport { Municipio } from '../../../_models/municipio';\nimport { TipoContainer } from '../../../_models/tipo-container';\nimport { ParametroPorto } from 'app/_models/parametro-porto';\nimport { ClienteRequest } from 'app/_models/cliente-request';\nimport { PropostaComercial } from './../../../_models/proposta-comercial';\n\nimport { AppService } from './../../../_services/app.service';\nimport { BaseService } from 'app/_services/base.service';\nimport { SharedService } from 'app/_services/shared.service';\nimport { MessageService } from 'app/_services/message.service';\nimport { CotacaoService } from 'app/_services/cotacao.service';\nimport { BookingService } from './../../../_services/booking.service';\nimport { ParametroService } from './../../../_services/parametro.service';\nimport { PropostaComercialService } from './../../../_services/proposta-comercial.service';\n\nimport { BaseComponent } from './../../../shared/base.component';\nimport { MessageComponent } from 'app/shared/message/message.component';\nimport { ControleStepsComponent } from './controle-steps/controle-steps.component';\nimport { Step1SelecaoPropostaComponent } from './step1-selecao-proposta/step1-selecao-proposta.component';\nimport { Step2DetalhesOperacaoComponent } from './step2-detalhes-operacao/step2-detalhes-operacao.component';\nimport { Step3AgendamentoColetaComponent } from './step3-agendamento-coleta/step3-agendamento-coleta.component';\nimport { Step4DadosReservaComponent } from './step4-dados-reserva/step4-dados-reserva.component';\nimport { Step5InformacaoPagtoComponent } from './step5-informacao-pgto/step5-informacao-pgto.component';\n\nimport { AnalyticsService } from 'app/_services/analytics.service';\nimport { AnalyticsTela } from 'app/_enums/analytics-tela';\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\nimport { Operacao } from 'app/_enums/operacao';\nimport { CustomerInfo } from 'app/_models/customer-info';\nimport { CustomerInfoService } from 'app/_services/customer-info.service';\nimport { parse } from 'path';\nimport { BookingRequest } from 'app/_models/booking-request';\nimport { MeusBookings } from 'app/_models/meus-bookings';\nimport { FiltrosLaterais } from 'app/_models/filtros-laterais';\nimport { DateModel } from 'app/shared/ng2-datepicker/ng2-datepicker.component';\nimport { DateExtensions } from 'app/shared/extensions/extensions.module';\nimport { DatepickerService } from 'app/_services/datepicker.service';\n\n\n@Component({\n selector: 'app-solicitar-booking',\n templateUrl: './solicitar-booking.component.html',\n styleUrls: ['./solicitar-booking.component.scss']\n})\nexport class SolicitarBookingComponent extends BaseComponent implements OnInit {\n propostaIdentificada = new EventEmitter();\n\n qtdeContainersInicial: number = 1;\n parametroPorto: ParametroPorto = new ParametroPorto();\n booking: Booking = new Booking();\n loading: boolean = false;\n loadingSolicitar: boolean = false;\n loadingBooking: boolean = false;\n loadingParametro: boolean = false;\n loadingProposta: boolean = false;\n habilitaBotoesAbas: boolean = false;\n currentStep: number = 1;\n inscricaoGet: Subscription;\n novoBooking: boolean = true;\n edicaoBooking: boolean = false;\n erroBooking: boolean = false;\n duplicar = false;\n titulo: string;\n proposta: PropostaComercial;\n eNovoBookingOrigemCotacaoAtiva = false;\n\n progNavios: Schedule;\n feriados: Feriado[];\n\n mostraAbaPix: boolean = false;\n isInstantPaymentEfetivado: boolean = true;\n\n\n\n\n\n constructor(private _route: ActivatedRoute,\n private router: Router,\n private _bookingService: BookingService,\n private _propostaService: PropostaComercialService,\n private _appService: AppService,\n private _sharedService: SharedService,\n private _msgService: MessageService,\n private _cotacaoService: CotacaoService,\n private _parametroService: ParametroService,\n private _baseService: BaseService,\n private _analyticsService: AnalyticsService,\n private _customerInfoService: CustomerInfoService,\n private _datepickerService: DatepickerService) {\n\n super();\n\n this.proposta = new PropostaComercial();\n this._msgService.emitirMensagem.subscribe(\n msg => {\n if (msg.mensagem instanceof Array)\n this.mensagem.mostrarMensagemArray(msg.tipo, msg.mensagem);\n else\n this.mensagem.mostrarMensagem(msg.tipo, msg.mensagem);\n }\n );\n }\n\n @ViewChild(Step1SelecaoPropostaComponent, { static: true }) step1: Step1SelecaoPropostaComponent;\n @ViewChild(Step2DetalhesOperacaoComponent, { static: true }) step2: Step2DetalhesOperacaoComponent;\n @ViewChild(Step3AgendamentoColetaComponent, { static: true }) step3: Step3AgendamentoColetaComponent;\n @ViewChild(Step4DadosReservaComponent, { static: true }) step4: Step4DadosReservaComponent;\n @ViewChild(Step5InformacaoPagtoComponent, { static: true }) step5!: Step5InformacaoPagtoComponent;\n\n\n\n @ViewChild(ControleStepsComponent, { static: true }) controlesteps: ControleStepsComponent;\n @ViewChild(MessageComponent, { static: true }) mensagem: MessageComponent;\n @ViewChild('modalResumo', { static: true }) modalResumo;\n @ViewChild('topo', { static: true }) private topo: ElementRef;\n\n\n\n\n ngOnInit() {\n if (this._appService.UsuarioLogado == null || this._appService.UsuarioLogado == undefined) {\n this._baseService.handleError({ status: 401 });\n return;\n }\n this._analyticsService.RegistrarOperacao(AnalyticsTela.Booking, AnalyticsOperacao.AcessoBooking);\n this.inscricaoGet = this._route.params.subscribe(\n (params: any) => {\n\n if (params['id'] == \"programacao\") {\n this._route.queryParams.subscribe(params => {\n this.progNavios = params as Schedule;\n this.step3.novoBooking = true;\n this.step4.novoBooking = true;\n this.step3.progNavios = this.progNavios;\n this.step4.progNavios = this.progNavios;\n this.step4.programacaoSelecionada = this.progNavios;\n this.booking.viagemNavio = this.progNavios.descNavioViagem;\n this.booking.idNavioViagem = this.progNavios.idViagemNavio;\n this.booking.idPortoTransbordo = this.progNavios.idPortoTransbordo;\n this.booking.idNavioTransbordo = this.progNavios.idNavioTransbordo;\n });\n this.novoBooking = true;\n }\n else {\n let id: number = params['id'];\n this.duplicar = (params['duplicar'] == undefined) ? false : params['duplicar'];\n const numProposta: number = params['numProposta'];\n const idTrecho: number = params['idTrecho'];\n const cnpjCli: string = params['cnpjCli'];\n const ieCli: string = params['ieCli'];\n\n if (id) {\n this.carregarBooking(id, (!numProposta));\n }\n\n this.novoBooking = !id || this.duplicar;\n //this.habilitaBotoesAbas = (!this.novoBooking);\n\n // 28/07/2017 Monta novo booking à partir da cotação com status 'Ativa'\n if (numProposta) {\n this.loadingBooking = true;\n this.eNovoBookingOrigemCotacaoAtiva = true;\n\n this.obterCotacaoPorNumPropostaEidTrecho(numProposta, idTrecho, cnpjCli, ieCli);\n this.propostaIdentificada.subscribe(proposta => {\n if (proposta) {\n this._sharedService.copyProperties(proposta, this.proposta);\n\n if (this.proposta.tipoDeContainer == undefined)\n this.proposta.tipoDeContainer = new TipoContainer();\n\n this._sharedService.copyProperties(proposta.tipoDeContainer, this.proposta.tipoDeContainer);\n\n this.montaNovoBookinComBaseNaCotacaoAtiva();\n\n this.customerInfoValidation();\n\n\n // if (this.mostraAbaPix) {\n // this.step5.onLoadInfoPgtoAdicional(this.booking.numBooking);\n // }\n\n }\n });\n }\n }\n }\n );\n\n this.step1.cnpjdropdown.SelecionaMultiplos = false;\n this.step1.cnpjdropdown.modoEdicao = true;\n\n if (this.novoBooking) {\n this.step1.cnpjdropdown.modoBloqueado = this.duplicar;\n this.step1.cnpjdropdown.pesquisaEspecial = this._appService.maisDeUmCNPJ() && !this.duplicar;\n this.titulo = 'Novo Booking';\n }\n else {\n this.step1.cnpjdropdown.SelecionaMultiplos = false;\n this.step1.cnpjdropdown.modoBloqueado = this.duplicar;\n this.step1.cnpjdropdown.pesquisaEspecial = false;\n this.titulo = 'Consultar Booking';\n }\n }\n\n montaNovoBookinComBaseNaCotacaoAtiva() {\n if (this.proposta) {\n // novo booking com origem da cotação com status 'ativa'\n this.novoBooking = true;\n\n // preenche booking para filtrar proposta respectiva\n const booking: Booking = new Booking();\n booking.numProposta = this.proposta.numProposta.toString();\n booking.idTrecho = this.proposta.idTrecho;\n booking.modal = this.proposta.modal;\n booking.cnpjCli = this.proposta.cnpjCli;\n booking.ieCli = this.proposta.ieCli;\n booking.qtdeContainer = 0;//this.proposta.qtdeContainer;\n if (this.proposta.tipoDeContainer != undefined)\n this.booking.tamanhoContainer = this.proposta.tipoDeContainer.Tamanho;\n\n this.booking = booking;\n\n //this.habilitaBotoesAbas = true;\n this.step1.bookingAPartirDeCotacao = true;\n this.booking.proposta = this.proposta;\n\n this.step1.booking = booking;\n this.step2.booking = this.step1.booking;\n this.step3.booking = this.step2.booking;\n this.step4.booking = this.step3.booking;\n\n this.loadingBooking = false;\n this.preCarregamentoDeCNPJeIE(booking);\n\n this.customerInfoValidation();\n\n }\n }\n\n obterCotacaoPorNumPropostaEidTrecho(numProposta: number, idTrecho: number, cnpj: string, ie: string) {\n var consulta = { numProposta: numProposta, usuarioID: this._appService.UsuarioLogado.UsuarioIDeCargo, idTrecho: idTrecho, cnpjCli: cnpj, ieCli: ie };\n this._propostaService.getProposta(consulta)\n .subscribe(prop => {\n if (prop.qtdeContainer > 300) {\n swal({\n title: 'Alerta',\n text: 'A cotação selecionada possui mais de 300 conteineres. Entre em contato com o Custom Service para prosseguir com sua solicitação!',\n type: 'warning',\n showConfirmButton: true,\n showCancelButton: false,\n confirmButtonText: 'OK'\n }).then(success => {\n this.router.navigate(['/cotacao']);\n }, dismiss => {\n });\n }\n else\n this.propostaIdentificada.emit(prop);\n });\n }\n\n\n carregouInfoPgto(carregou: boolean) {\n this.isInstantPaymentEfetivado = carregou;\n console.log('salvouInfoPix: ' + this.isInstantPaymentEfetivado);\n }\n\n quantidadeContainersAlterada(quantidadeContainers: number) {\n if (this.proposta != undefined)\n this.step3.carregarProposta(this.proposta, true);\n }\n\n carregarBooking(id, habilitaBotoes: boolean) {\n this.loading = true;\n this._bookingService.getBooking({ bookingID: id, usuarioID: this._appService.UsuarioLogado.UsuarioIDeCargo })\n .subscribe(book => {\n if (book != null) {\n this.qtdeContainersInicial = !this.duplicar && (book.qtdeContainer > 0) ? book.qtdeContainer : 1;\n\n book.idProposta = Number(book.numProposta);\n this._sharedService.copyProperties(book, this.booking);\n\n this.preCarregamentoDeCNPJeIE(book);\n\n //this.customerInfoValidation();\n\n if (this.duplicar) {\n //Limpar observacao de rejeição\n this.booking.obsRejeicaoCli = '';\n\n //busca objeto cliente para Embarcador\n var filtroCliente: ClienteRequest = new ClienteRequest;\n filtroCliente.CNPJ = this.booking.cnpjEmb;\n filtroCliente.InscricaoEstadual = this.booking.ieEmb;\n this._sharedService.getClientes(filtroCliente, false)\n .subscribe(c => {\n if (c && c.length == 1) {\n this.booking.Embarcador = c[0];\n this.step3.listaDeEnderecos = c[0].Enderecos;\n //console.log(c[0].Enderecos);\n var enderecos: Endereco[] = c[0].Enderecos.filter(e => e.CEP == book.cepEmb && e.Bairro == book.bairroEmb &&\n (e.Complemento == book.complementoEmb || (!e.Complemento && !book.complementoEmb)) &&\n e.IdMunicipio == book.idMunicEmb && e.Logradouro == book.logradouroEmb && e.Municipio == book.municipioEmb &&\n e.Numero == book.numeroEmb && e.UF == book.ufEmb);\n //console.log(enderecos);\n if (enderecos && enderecos.length == 1)\n this.step2.enderecoEmbSelecionado = enderecos[0];\n }\n });\n\n this.booking.qtdeContainer = 0;\n this.booking.DataPrevChegadaDes = undefined;\n this.booking.DataPrevChegadaOri = undefined;\n this.booking.DataDeadlineEntregaEmb = undefined;\n this.booking.contatoEmb = this._appService.UsuarioLogado.Nome.substring(0, 30);\n this.booking.email = this._appService.UsuarioLogado.Email;\n this.booking.emailEmb = this._appService.UsuarioLogado.Email.toLowerCase();\n this.booking.telefone = this._appService.UsuarioLogado.Telefone;\n this.booking.strDataPrevChegadaDes = '';\n this.booking.strDataPrevChegadaOri = '';\n this.booking.strDataDeadlineEntregaEmb = '';\n this.booking.viagemNavio = '';\n this.booking.idViagemNavio = 0;\n this.booking.idNavioViagem = 0;\n this.booking.idNavioViagemTransb = 0;\n this.booking.NavioViagemTransb = '';\n }\n else {\n //Corrige datas\n this.booking.DataPrevChegadaDes = this._sharedService.corrigeData(book.DataPrevChegadaDes);\n this.booking.DataPrevChegadaOri = this._sharedService.corrigeData(book.DataPrevChegadaOri);\n this.booking.DataDeadlineEntregaEmb = this._sharedService.corrigeData(book.DataDeadlineEntregaEmb);\n this.booking.email = (!this.booking.emailEmb) ? this.booking.emailEmb : this.booking.emailEmb.toLowerCase();\n this.booking.telefone = (book.foneEmb == 'NA') ? '' : book.dddEmb + book.foneEmb;\n }\n\n this.edicaoBooking = (book.statusBooking != null) &&\n (!this.duplicar) &&\n (book.statusBooking.toLowerCase().indexOf('pendente') > 0);\n //((book.statusBooking.toLowerCase().indexOf('pendente') > 0) || (book.statusBooking.toLowerCase().indexOf('ativo') >= 0));\n\n if (book.AgendamentosDeColeta && !this.duplicar) {\n book.AgendamentosDeColeta.forEach(agendamento => {\n agendamento.idUsuario = this._appService.UsuarioLogado.UsuarioIDeCargo;\n agendamento.idBooking = this.booking.idBooking;\n if (agendamento.dataColeta && agendamento.dataColeta.toString().length == 19)\n agendamento.horaColeta = agendamento.dataColeta.toString().substr(11, 5);\n agendamento.dataColeta = this._sharedService.corrigeData(agendamento.dataColeta);\n agendamento.numAgendamento = this.duplicar ? 0 : agendamento.numAgendamento;\n });\n }\n\n if (this.booking.municipioEmb && this.booking.municipioEmb != \"\") {\n var mun = new Municipio();\n mun.Descricao = this.booking.municipioEmb;\n mun.Codigo = this.booking.idMunicipioEmb\n mun.UF = this.booking.ufEmb;\n mun.DescricaoCompleta = this.booking.municipioEmb + '/' + this.booking.ufEmb;\n this.step2.municipioEmb = mun;\n }\n\n if (!this.duplicar)\n this.booking.AgendamentosDeColeta = book.AgendamentosDeColeta;\n\n this.booking.numeroEmb = this.booking.numeroEndEmb;\n this.booking.nomeEmbarcador = this.booking.nomeEmb;\n\n this.step2.booking = this.booking;\n this.step2.telefoneEmbarcador = this.booking.telefone;\n\n if (this.booking.tipoDeContainer != undefined)\n this.booking.tamanhoContainer = this.booking.tipoDeContainer.Tamanho;\n else{\n console.log(\"Caiu aqui\", book);\n this.booking.tipoContainer = book.tipoContainer;\n }\n\n this.loadingProposta = true;\n this._propostaService.getProposta({ numProposta: book.numProposta, usuarioID: this._appService.UsuarioLogado.UsuarioIDeCargo, idTrecho: book.idTrecho, cnpjCli: book.cnpjCli, ieCli: book.ieCli })\n .subscribe(proposta => {\n if (!proposta) {\n this.currentStep = -1;\n this._msgService.addMessageRedirect('Booking', 'Booking/Proposta ' + this.booking.numBooking + '/' + this.booking.numProposta + ' não encontrado para esse cliente (' + this.booking.cnpjCli + '). Contate o administrador!', 'error');\n this.retornarAoBooking();\n return;\n }\n this.ObterParametrosPorto(proposta);\n this.ObterFeriados(proposta);\n this.booking.proposta = proposta;\n this.proposta = proposta;\n this.step1.configuraPropostaSelecionada(proposta);\n this.step2.propostaAlterada(proposta);\n this.step3.carregarProposta(proposta, true);\n\n if (habilitaBotoes)\n this.habilitaBotoesAbas = (this.duplicar) ? true : (!this.novoBooking);\n\n if (proposta.status != undefined && !proposta.status.toLowerCase().startsWith('ativ'))\n this.edicaoBooking = false; //não permite edição de proposta vencida ou cancelada\n\n if (this.booking.qtdeContainer != this.booking.AgendamentosDeColeta.filter(a => a.numAgendamento != 0).length) {\n this.edicaoBooking = false;\n this.novoBooking = false;\n this.erroBooking = true;\n }\n\n this.loadingProposta = false;\n });\n\n this.step4.CarregaViagemBooking(book);\n\n //Mostra aba Info Pgto\n //this.customerInfoValidation() ;\n\n\n // if (this.mostraAbaPix) {\n // this.step5.onLoadInfoPgtoAdicional(this.booking.numBooking);\n // }\n }\n\n else if (habilitaBotoes)\n this.habilitaBotoesAbas = (!this.novoBooking);\n\n this.loading = false;\n }, (err) => {\n this.loading = false;\n // console.log(err);\n });\n }\n\n preCarregamentoDeCNPJeIE(booking: Booking): void {\n /*\n if (!this.step1.cnpjdropdown.isUsuarioAdmin) {\n this.step1.cnpjdropdown.CNPJFiltro = booking.cnpjCli;\n this.step1.cnpjdropdown.cnpjsSelecionados = [];\n this.step1.cnpjdropdown.cnpjsSelecionados.push(booking.cnpjCli);\n }\n */\n this.step1.cnpjdropdown.CNPJDigitado = booking.cnpjCli;\n this.step1.cnpjdropdown.filtroCliente.CNPJ = booking.cnpjCli;\n this.step1.cnpjdropdown.filtroCliente.InscricaoEstadual = booking.ieCli;\n this.step1.cnpjdropdown.cnpjsSelecionados = [];\n this.step1.cnpjdropdown.cnpjsSelecionados.push(booking.cnpjCli);\n this.step1.cnpjdropdown.ObterClientes();\n }\n\n cssClass(step: number): string {\n if (step < this.currentStep)\n return 'completed';\n else\n if (step == this.currentStep)\n return 'active';\n else\n return 'disable';\n }\n\n iconClass(step: number): string {\n if (step < this.currentStep)\n return 'icon icon-check';\n else\n return 'icon icon-circle-o';\n }\n\n mudarStep(step: number) {\n //limpa mensagens de erros\n this._msgService.clearMessage();\n var mensagensErro: string[] = [];\n\n //atualiza endereco\n //if (this.currentStep == 3)\n if (!this.booking.oriPorto) {\n if (step == 3 || step == 4) {\n if (step == 3)\n this.step3.CarregaEndereco();\n this.step3.CarregarDadosAgendamentos();\n }\n }\n\n if (step == 2 && this.currentStep == 1) { //this.eNovoBookingOrigemCotacaoAtiva) && (\n this.step2.propostaAlterada(this.step1.propostaSelecionada);\n this.step3.carregarProposta(this.step1.propostaSelecionada, false);\n }\n\n if (!this.novoBooking && !this.edicaoBooking) {\n this.currentStep = step;\n }\n else {\n if (this.currentStep > step) {\n // está voltando nas abas, não requer validação\n this.currentStep = step;\n }\n else {\n if ((this.currentStep + 1 != step) && (!((this.booking.oriPorto) && (this.currentStep == 2) && (step == 4))) && (this.novoBooking || this.edicaoBooking || this.duplicar))\n mensagensErro.push('Preencha uma aba por vez!');\n else {\n //Valida abas\n switch (this.currentStep) {\n case 1:\n if (this.step1.propostaSelecionada == undefined)\n mensagensErro = mensagensErro.concat('Para continuar é necessário informar a proposta comercial.');\n break;\n case 2:\n mensagensErro = mensagensErro.concat(this.step2.ValidarStep());\n break;\n case 3:\n var errosStep3 = this.step3.ValidarStep();\n if (errosStep3.length != 0)\n mensagensErro = mensagensErro.concat(errosStep3);\n else {\n if (this.booking && this.booking.AgendamentosDeColeta) {\n this.booking.AgendamentosDeColeta.forEach(a => {\n a.strValMercadoria = this._sharedService.formatNumeroMoeda(a.valMercadoria, 2, 'R$ ', '.', ',');\n a.strDataColeta = this._sharedService.formataDataHoraBR(a.dataColeta, false);\n });\n }\n }\n break;\n //case 4:\n //valida step4\n //break;\n case 5:\n mensagensErro = mensagensErro.concat(this.step5.ValidarStep());\n break; \n }\n }\n }\n\n if (mensagensErro.length == 0) {\n //if (step == 2) {\n // Caso usuário tenha voltado na step 01 e tenha alterado o modal,\n // devemos recarregar a tela (modal é parâmetro de filtro em propostas)\n //if (this.step2.carregarAba || (this.booking.modal != this.step2.modal)) {\n // this.step2.InicializaStep2(this.step1.booking);\n //}\n //}\n\n if (step == 4) {\n //if ((!this.step4.abaCarregada) || (this.step2.carregarAba || (this.booking.modal != this.step2.modal))) {\n if (!this.progNavios && !this.edicaoBooking)\n this.step4.BuscaViagens();\n //}\n }\n this.currentStep = step;\n }\n else\n if (mensagensErro.length > 0)\n this._msgService.addMessageArray('Booking - Mudar para Step ' + step, mensagensErro, 'error', LogFrontFuncionalidade.Booking, Operacao.Consulta);\n }\n\n if (this.currentStep == step) {\n setTimeout(() => { this.topo.nativeElement.scrollIntoView(); });\n }\n }\n\n retornarAoBooking() {\n this.router.navigate(['/booking']);\n }\n\n propostaSelecionada(proposta: PropostaComercial) {\n this._sharedService.copyProperties(proposta, this.proposta);\n this.ObterParametrosPorto(proposta);\n this.ObterFeriados(proposta);\n if (proposta != undefined)\n this.proposta.tipoDeContainer = proposta.tipoDeContainer;\n this.habilitaBotoesAbas = (proposta != undefined);\n this.step2.propostaAlterada(proposta);\n this.step3.carregarProposta(proposta, false);\n this.step5.propostaAlterada(proposta);\n\n this.customerInfoValidation();\n }\n\n Salvar() {\n this.modalResumo.hide();\n\n if (this._appService.isAdmin()) {\n this._msgService.addMessage('Booking', 'Usuário administrador não tem permissão para adicionar bookings. Essa funcionalidade é restrita a clientes.', 'warning');\n return;\n }\n\n this.booking.idUsuario = this._appService.UsuarioLogado.UsuarioIDeCargo;\n //this.booking.contatoCli = this._appService.UsuarioLogado.Nome.substr(0, 30);\n this.booking.setFlagsEnvio();\n\n if (this.booking.telefone == \"\") {\n this.booking.dddEmb = this._sharedService.obtemDDDdoTelefone(this.booking.foneEmb);\n this.booking.telefone = this._sharedService.obtemTelefoneSemDDD(this.booking.foneEmb);\n }\n\n this.booking.contatoCli = (!this.proposta.contatoCli && this.proposta.contatoCli != null && this.proposta.contatoCli != \"\") ? this.proposta.contatoCli : this._appService.UsuarioLogado.Nome;\n this.booking.contatoCli = this.booking.contatoCli.substring(0, 30);\n //ajustado no converter\n //if (this.duplicar) {\n // this.booking.idProposta = Number(this.booking.numProposta);\n // this.booking.idMunicEmb = this.booking.idMunicipioEmb;\n //}\n\n this.loadingSolicitar = true;\n if (this.novoBooking) {\n if (this.duplicar)\n this._analyticsService.RegistrarOperacao(AnalyticsTela.Booking, AnalyticsOperacao.Duplicacao);\n\n this._bookingService.Solicitar(this.booking)\n .subscribe(result => {\n this.loadingSolicitar = false;\n if (result != null) {\n this._msgService.addMessageRedirect('Booking', 'Booking Número ' + result.numBooking + ' gerado com sucesso!', 'success');\n\n // Tratamento para clientes que pagam a cabotagem à vista.\n if (this.mostraAbaPix == true) {\n this.booking.numBooking = result.numBooking;\n this.mudarStep(5);\n this.step5.qtdeContainer = this.booking.qtdeContainer;\n \n\n let dataTmp: Date;\n \n const modal = this.booking.modal.split(\"/\");\n \n\n if (modal[0] == 'PA') {\n \n let cteIssueDate: DateModel = DateExtensions.toDateModel(this.GetDataUltimoAgendamento(), \"DD/MM/YYYY\");\n dataTmp = this.ObterData(cteIssueDate, 0);\n }\n else {\n \n let cteIssueDate: DateModel = DateExtensions.toDateModel(this.booking.dhDeadlineEntregaEmbarque, \"DD/MM/YYYY\");\n dataTmp = this.ObterData(cteIssueDate, 0);\n }\n \n let ano = dataTmp.getFullYear();\n let mes = '';\n let dia = '';\n\n if (dataTmp.getMonth() + 1 > 9)\n mes = (dataTmp.getMonth() + 1).toString();\n else\n mes = '0' + (dataTmp.getMonth() + 1).toString();\n \n \n if (dataTmp.getDate() > 9)\n dia = dataTmp.getDate().toString();\n else\n dia = '0' + dataTmp.getDate().toString();\n\n\n \n this.step5.dataBaseCalculo = dia+ '/' + mes + '/' +ano ;\n\n this.step4.isBookingSaved = true;\n\n const bookingBTN = document.getElementById('bookingBTN') as HTMLButtonElement;\n bookingBTN.disabled = true;\n\n }\n else {\n this.retornarAoBooking();\n }\n }\n //else {\n // this._msgService.addMessage('Cotação', \"Erro ao solicitar cotação\", \"error\");\n //}\n });\n }\n else {\n this._bookingService.AlterarBooking(this.booking)\n .subscribe(result => {\n this.loadingSolicitar = false;\n if (result != null) {\n this._msgService.addMessageRedirect('Booking', 'Booking atualizado com sucesso', 'success');\n this.retornarAoBooking();\n }\n //else {\n // this._msgService.addMessage('Booking', 'Erro ao atualizar booking', 'error');\n //}\n });\n }\n }\n\n obtemDescricaoConteiner() {\n if (this.proposta != undefined) {\n if (this.proposta.tipoDeContainer != undefined)\n return this.proposta.tipoDeContainer.Descricao + \" - \" + this.proposta.tipoDeContainer.Desc_resumida;\n }\n\n if (this.booking != undefined) {\n if (this.booking.tipoDeContainer != undefined)\n return this.booking.tipoDeContainer.Descricao + \" - \" + this.booking.tipoDeContainer.Desc_resumida;\n }\n return \"\";\n }\n\n ObterParametrosPorto(proposta: PropostaComercial) {\n if (!proposta)\n return;\n\n this.loadingParametro = true;\n this._parametroService.obterParametrosPorto(proposta.idPortolOrigem)\n .subscribe(parametro => {\n this.loadingParametro = false;\n this.parametroPorto = parametro;\n });\n }\n\n ObterFeriados(proposta: PropostaComercial) {\n if (!proposta)\n return;\n\n this._sharedService.getFeriados(proposta.idPortolOrigem)\n .subscribe(feriados => {\n if (feriados)\n this.feriados = feriados.filter(f => f.Data != null);\n else\n this.feriados = null;\n });\n }\n\n getTextoValorOOG(valor): string {\n return (valor) ? valor.toString() + \" cm\" : \"\";\n }\n\n obtemTextoOriDes(oriDes: boolean, portoPorta: boolean) {\n if (portoPorta) {\n //PortO\n return (oriDes) ? 'Porto Origem: ' : 'Porto Destino: ';\n }\n else {\n //PortA\n return (oriDes) ? 'Município Origem: ' : 'Município Destino: ';\n }\n }\n\n onClickRegistrarPagamento() {\n this.step5.onSaveInfoPgtoAdicional();\n }\n\n customerInfoValidation() {\n this.loadingParametro = true;\n this.step5.isDuplicating = false;\n let consulta: BookingRequest = new BookingRequest();\n\n consulta.idBooking = 0;\n consulta.idUsuario = this._appService.UsuarioLogado.UsuarioIDeCargo;\n consulta.cnpjCli = this.booking.cnpjCli;\n let sucesso: number = 0;\n\n //if (registrarAnalytics)\n //this._analyticsService.RegistrarFiltroBooking(this.consulta);\n\n this._bookingService.getBookings(consulta)\n .subscribe(meusBookings => {\n if (meusBookings != null)\n\n console.log(sucesso);\n\n });\n\n\n\n this._customerInfoService.getCustomerInfo(this.booking.cnpjCli)\n .subscribe(customerInfo => {\n this.loadingParametro = false;\n \n if (customerInfo[0] != undefined && customerInfo[0].CNPJ != undefined) {\n\n // ====> USE PARA EPOCAS DE SECA EM MANAUS. <=======\n\n // if (this.proposta.nomePortoOrigem == 'Manaus' || this.proposta.nomePortoDestino == 'Manaus') {\n // this.mostraAbaPix = false;\n // }\n // else {\n // this.mostraAbaPix = true;\n // }\n\n this.mostraAbaPix = true;\n\n //if (this.duplicar || this.edicaoBooking)\n {\n this.step5.onLoadInfoPgtoAdicional(this.booking.numBooking); \n this.getInfoPgtoDataBaseCalculo();\n this.step5.isDuplicating = true;\n }\n }\n else {\n this.mostraAbaPix = false;\n }\n });\n\n return this.mostraAbaPix;\n }\n\n getInfoPgtoDataBaseCalculo(){\n let dataTmp: Date;\n const modal = this.booking.modal.split(\"/\");\n\n if (modal[0] == 'PA') {\n \n let cteIssueDate: DateModel = DateExtensions.toDateModel(this.GetDataUltimoAgendamento(), \"DD/MM/YYYY\");\n dataTmp = this.ObterData(cteIssueDate, 0);\n }\n else {\n dataTmp = this.booking.DataDeadlineEntregaEmb;\n } \n\n console.log(this.booking);\n\n console.log(\"Data temp\", dataTmp);\n \n let ano = dataTmp.getFullYear();\n let mes = '';\n let dia = '';\n \n if (dataTmp.getMonth() > 9)\n mes = (dataTmp.getMonth() + 1).toString();\n else\n mes = '0' + (dataTmp.getMonth() + 1).toString();\n \n \n if (dataTmp.getDate() > 9)\n dia = dataTmp.getDate().toString();\n else\n dia = '0' + dataTmp.getDate().toString();\n \n this.step5.dataBaseCalculo = dia+ '/' + mes + '/' +ano ;\n\n console.log( this.step5.dataBaseCalculo);\n }\n\n instantPaymentPendente(isCriado: boolean) {\n this.isInstantPaymentEfetivado = !isCriado;\n }\n\n private ObterData(dateModel: DateModel, dateOffset: number) {\n return dateModel != undefined\n ? this._datepickerService.ObtemData(dateModel)\n : this._sharedService.addDays(new Date(), dateOffset);\n }\n\n private GetDataUltimoAgendamento(): Date {\n let dataUltimoAgendamento: Date;\n\n let arr = this.booking.AgendamentosDeColeta;\n let maxDate: Date = new Date();\n\n for (let i = 1, len = arr.length; i < len; i++) {\n\n let v = arr[i].dataColeta;\n\n maxDate = (v > maxDate) ? v : maxDate;\n }\n\n return maxDate;\n }\n\n}\n","import { Component, OnInit, Input, EventEmitter, ViewChild, Output, ElementRef, Renderer2 } from '@angular/core';\n\nimport { Porto } from './../../../../_models/porto';\nimport { Cliente } from './../../../../_models/cliente';\nimport { Booking } from 'app/_models/booking';\nimport { Schedule } from './../../../../_models/schedule';\nimport { Municipio } from './../../../../_models/municipio';\nimport { Mercadoria } from './../../../../_models/mercadoria';\nimport { TipoContainer } from './../../../../_models/tipo-container';\nimport { ServicoProposta } from 'app/_models/servico-proposta';\nimport { PropostaComercial } from './../../../../_models/proposta-comercial';\nimport { TipoOperacaoComercial } from './../../../../_models/tipoOperacaoComercial';\nimport { PropostaComercialFiltro } from './../../../../_models/proposta-comercial-filtro';\nimport { PropostaComercialRequest } from './../../../../_models/proposta-comercial-request';\n\nimport { AppService } from './../../../../_services/app.service';\nimport { DataService } from './../../../../_services/data.service';\nimport { SharedService } from './../../../../_services/shared.service';\nimport { MessageService } from './../../../../_services/message.service';\nimport { GroupbyService } from './../../../../_services/groupby.service';\nimport { GenericOrderbyService } from './../../../../_services/generic-orderby.service';\nimport { PropostaComercialService } from './../../../../_services/proposta-comercial.service';\n\nimport { BaseComponent } from './../../../../shared/base.component';\nimport { CnpjDropdownComponent } from './../../../../shared/cnpj-dropdown/cnpj-dropdown.component';\n\nimport { Operacao } from 'app/_enums/operacao';\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\n\n@Component({\n selector: 'step1-selecao-proposta',\n templateUrl: './step1-selecao-proposta.component.html',\n styleUrls: ['./step1-selecao-proposta.component.scss']\n})\nexport class Step1SelecaoPropostaComponent extends BaseComponent implements OnInit {\n\n @ViewChild(CnpjDropdownComponent, { static: true }) cnpjdropdown: CnpjDropdownComponent;\n @ViewChild('cmbProp', { static: true }) cmbProposta: ElementRef;\n @ViewChild('cmbPortoDestino', { static: true }) cmbPortoDestino: ElementRef;\n @ViewChild('cmbPortoOrigem', { static: true }) cmbPortoOrigem: ElementRef;\n @ViewChild('cmbCidadeOrigem', { static: true }) cmbCidadeOrigem: ElementRef;\n @ViewChild('cmbCidadeDestino', { static: true }) cmbCidadeDestino: ElementRef;\n @ViewChild('cmbProduto', { static: true }) cmbProduto: ElementRef;\n @ViewChild('cmbOperacaoComercial', { static: true }) cmbOperacaoComercial: ElementRef;\n @ViewChild('cmbTipoContainer', { static: true }) cmbTipoContainer: ElementRef;\n @ViewChild('cmbOva', { static: true }) cmbOva: ElementRef;\n @ViewChild('cmbDesova', { static: true }) cmbDesova: ElementRef;\n @ViewChild('cmbEscolta', { static: true }) cmbEscolta: ElementRef;\n @ViewChild('cmbShipper', { static: true }) cmbShipper: ElementRef;\n @ViewChild('cmbCargaOver', { static: true }) cmbCargaOver: ElementRef;\n @ViewChild('cmbCargaPerigosa', { static: true }) cmbCargaPerigosa: ElementRef;\n @ViewChild('cmbConferente', { static: true }) cmbConferente: ElementRef;\n @ViewChild('cmbServicoOrigem', { static: true }) cmbServicoOrigem: ElementRef[];\n @ViewChild('cmbServicoDestino', { static: true }) cmbServicoDestino: ElementRef[];\n\n @Input() duplicar: boolean;\n @Input() novoBooking: boolean;\n @Input() booking: Booking;\n @Input() progNavios: Schedule;\n @Output() propostaSelecionadaEvent: EventEmitter = new EventEmitter();\n\n bookingAPartirDeCotacao: boolean = false;\n exibeModal: boolean = false;\n exibeSelecaoProposta: boolean = false;\n loadingTodasPropostas: boolean = false;\n temOrigemPA: boolean = false;\n temOrigemPO: boolean = false;\n temDestinoPA: boolean = false;\n temDestinoPO: boolean = false;\n todasPropostas: PropostaComercial[] = [];\n todosServicosOrigem: ServicoProposta[] = [];\n todosServicosDestino: ServicoProposta[] = [];\n propostasFiltradas: PropostaComercial[] = [];\n propostaFiltro: PropostaComercialFiltro = new PropostaComercialFiltro();\n listaNumPropostas: number[] = [];\n propostaSelecionada: PropostaComercial;\n\n produtos: Mercadoria[] = [];\n todosTiposOperacao: TipoOperacaoComercial[] = [];\n tiposOperacao: TipoOperacaoComercial[] = [];\n tipoContainers: TipoContainer[] = [];\n todosTipoContainers: TipoContainer[] = [];\n\n cidadesOrigem: Municipio[] = [];\n isLoadingCities = false;\n cidadesDestino: Municipio[] = [];\n todosPortos: Porto[] = [];\n portosOrigem: Porto[] = [];\n portosDestino: Porto[] = [];\n\n optionsServicos = [{ valor: '[INDEFINIDO]', descricao: '' }, { valor: 'S', descricao: 'Sim' }, { valor: 'N', descricao: 'Não' }];\n\n todasCargaPerigosa: boolean = false;\n todasCargaOver: boolean = false;\n todasShipperOwn: boolean = false;\n\n qtdeCargaPerigosa: number = 0;\n qtdeCargaOver: number = 0;\n qtdeShipperOwn: number = 0;\n qtdeEmbarcador: number = 0;\n qtdeRecebedor: number = 0;\n qtdeEquipePropriaOri: number = 0;\n qtdeEquipePropriaDes: number = 0;\n qtdeConferente: number = 0;\n qtdeEscolta: number = 0;\n\n qtdeCargaPerigosaNAO: number = 0;\n qtdeCargaOverNAO: number = 0;\n qtdeShipperOwnNAO: number = 0;\n qtdeEquipePropriaOriNAO: number = 0;\n qtdeEquipePropriaDesNAO: number = 0;\n qtdeConferenteNAO: number = 0;\n qtdeEscoltaNAO: number = 0;\n\n totalPropostasFiltradas: number = 0;\n\n constructor(private _appService: AppService,\n private _msgService: MessageService,\n private _propostaService: PropostaComercialService,\n private _sharedService: SharedService,\n private _dataService: DataService,\n public _groupbyService: GroupbyService,\n private _genericOrderbyService: GenericOrderbyService,\n private _renderer: Renderer2,\n private elRef: ElementRef) {\n super();\n }\n\n ngOnInit() {\n this.cnpjdropdown.SelecionaMultiplos = false;\n this.cnpjdropdown.modoEdicao = true;\n //this.cnpjdropdown.pesquisaEspecial = true;\n this.cnpjdropdown.filtroCliente.tipoConsulta = 1;\n this.cnpjdropdown.filtroCliente.idUsuario = this._appService.UsuarioLogado.UsuarioIDeCargo;\n if (this.novoBooking && !this.duplicar) {\n this.ObterTodosTiposOperacao();\n this.ObterPortos();\n }\n }\n\n clienteNaoEncontrado(msg: string) {\n this._msgService.addMessage('Booking', msg, 'error', LogFrontFuncionalidade.Booking, Operacao.Consulta);\n }\n\n clienteSelecionado(cliente: Cliente) {\n this.booking.idUsuario = this._appService.UsuarioLogado.UsuarioIDeCargo;\n if (cliente == null) {\n if (!this.cnpjdropdown.MaisDe1Cnpj && !this._appService.isAdmin()) {\n this.loadingTodasPropostas = false;\n this.exibeModal = false;\n this._msgService.addMessage('Booking', 'Não foram encontradas propostas para esse cliente. Solicite uma cotação.', 'error',\n LogFrontFuncionalidade.Booking, Operacao.Consulta, cliente);\n return;\n }\n else {\n //this.booking = new Booking();\n this.exibeSelecaoProposta = false;\n this.exibeModal = false;\n return;\n }\n }\n\n this.booking.cnpjCli = cliente.CNPJ;\n this.booking.ieCli = cliente.InscricaoEstadual;\n this.exibeSelecaoProposta = false;\n if (this.novoBooking && !this.duplicar && !this.bookingAPartirDeCotacao) {\n this.booking.modal = '';\n this.booking.numProposta = '';\n this.booking.idTrecho = 0;\n this.booking.qtdeContainer = 0;\n this.booking.dddEmb = '';\n this.booking.foneEmb = '';\n this.propostaFiltro = new PropostaComercialFiltro();\n this.propostaSelecionada = undefined;\n this.propostaSelecionadaEvent.emit(this.propostaSelecionada);\n }\n\n // Busca todas as propostas do cliente\n this.BuscaTodasPropostasCliente();\n }\n\n configuraPropostaSelecionada(proposta: PropostaComercial) {\n this.cnpjdropdown.modoBloqueado = true;\n this.propostaSelecionada = new PropostaComercial();\n this._sharedService.copyProperties(proposta, this.propostaSelecionada);\n this.propostaSelecionada.servicosDaProposta = proposta.servicosDaProposta;\n }\n\n SelecionouModal() {\n if (!this.novoBooking || this.duplicar || this.bookingAPartirDeCotacao) {\n //emitir evento para habilitar botões de controle step\n this.propostaSelecionadaEvent.emit(this.propostaSelecionada);\n return;\n }\n\n this.limpaServicosAdicionais(this.todosServicosOrigem);\n this.limpaServicosAdicionais(this.todosServicosDestino);\n this.exibeSelecaoProposta = ((this.booking.oriPorto != undefined) && (this.booking.desPorto != undefined));\n\n if ((this.booking.oriPorto == undefined) || (this.booking.desPorto == undefined))\n return;\n\n this.propostaFiltro = new PropostaComercialFiltro();\n this.propostaFiltro.modal = this.booking.modal;\n this.propostaSelecionada = undefined;\n\n this.propostaSelecionadaEvent.emit(this.propostaSelecionada);\n\n this.propostasFiltradas = this.todasPropostas.filter(x => (x.modal == this.propostaFiltro.modal));\n this.todosServicosOrigem = [];\n this.todosServicosDestino = [];\n\n this.propostasFiltradas.forEach(p => {\n if (p.servicosDaProposta != null) {\n p.servicosDaProposta.forEach(x => {\n //console.log('serv: ' + x.idTipoServico + ' desc: ' + x.descTipoServico + ' tipo: ' + x.indicOriDes);\n if (x.indicOriDes == 'O' && this.todosServicosOrigem.filter(y => y.idTipoServico == x.idTipoServico).length == 0)\n this.todosServicosOrigem.push(x);\n if (x.indicOriDes == 'D' && this.todosServicosDestino.filter(y => y.idTipoServico == x.idTipoServico).length == 0)\n this.todosServicosDestino.push(x);\n });\n }\n });\n\n this.FiltraPropostas();\n }\n\n limpaServicosAdicionais(servicos: ServicoProposta[]) {\n if (servicos != null)\n servicos.forEach(servico => {\n servico.valorSelecionado = '[INDEFINIDO]';\n });\n }\n\n BuscaTodasPropostasCliente() {\n this.loadingTodasPropostas = true;\n\n // Filtro da requisição\n const filtro: PropostaComercialRequest = new PropostaComercialRequest();\n filtro.idUsuario = this.booking.idUsuario;\n filtro.cnpjCli = this.booking.cnpjCli;\n filtro.ieCli = this.booking.ieCli;\n filtro.idTrecho = this.booking.idTrecho;\n filtro.flag_ativa = (!this.novoBooking && !this.duplicar) ? 'N' : 'S';\n filtro.numProposta = (this.booking.numProposta != '') ? Number(this.booking.numProposta) : 0;\n\n if (this.progNavios) {\n filtro.idPortolOrigem = this.progNavios.idPortoOrigem;\n filtro.idPortoDestino = this.progNavios.idPortoDestino;\n }\n\n // Obtem propostas comerciais\n this._propostaService.getPropostas(filtro)\n .subscribe(p => {\n if (!p)\n return;\n this.todasPropostas = [];\n this.propostasFiltradas = [];\n\n if (p instanceof Array) { //retornou lista de propostas\n this.todasPropostas = p;\n this.propostasFiltradas = p;\n }\n else {\n this.todasPropostas.push(p);\n this.propostasFiltradas.push(p);\n this.propostaSelecionada = p;\n }\n\n if (this.todasPropostas == null || this.todasPropostas.length == 0) {\n this.loadingTodasPropostas = false;\n this.exibeModal = false;\n this._msgService.addMessage('Booking', 'Não foram encontradas propostas para esse cliente. Solicite uma cotação.', 'error',\n LogFrontFuncionalidade.Booking, Operacao.Consulta, filtro);\n return;\n }\n\n this.todosServicosOrigem = [];\n this.todosServicosDestino = [];\n\n this.temDestinoPA = (this.todasPropostas.filter(x => x.modal.endsWith('PA')).length > 0);\n this.temDestinoPO = (this.todasPropostas.filter(x => x.modal.endsWith('PO')).length > 0);\n this.temOrigemPA = (this.todasPropostas.filter(x => x.modal.startsWith('PA')).length > 0);\n this.temOrigemPO = (this.todasPropostas.filter(x => x.modal.startsWith('PO')).length > 0);\n\n this.todasPropostas.forEach(p => {\n // Popula todos os tipos de contêiners pois o id é composto (get/set)\n let tp: TipoContainer = new TipoContainer();\n this._sharedService.copyProperties(p.tipoDeContainer, tp);\n if (tp != null && tp.Codigo != null)\n p.tipoDeContainer.idContainer = tp.idContainer;\n else {\n tp.Codigo = null;\n tp.Desc_resumida = '';\n tp.Descricao = '(Vazio)';\n tp.Tamanho = null;\n }\n\n var x = this.todosTipoContainers.find(x => (x.Codigo == tp.Codigo && x.Tamanho == tp.Tamanho) || (x.Codigo == tp.Codigo && x.Codigo == null));\n if (x == null)\n this.todosTipoContainers.push(tp);\n });\n\n if (((this.temDestinoPA && !this.temDestinoPO) || (!this.temDestinoPA && this.temDestinoPO)) &&\n ((this.temOrigemPA && !this.temOrigemPO) || (!this.temOrigemPA && this.temOrigemPO))) {\n this.booking.modal = ((this.temOrigemPA && !this.temOrigemPO) ? 'PA' : 'PO') + '/' + ((this.temDestinoPA && !this.temDestinoPO) ? 'PA' : 'PO');\n this.SelecionouModal();\n }\n else {\n if ((this.temOrigemPA && !this.temOrigemPO) || (!this.temOrigemPA && this.temOrigemPO))\n this.booking.modal = ((this.temOrigemPA && !this.temOrigemPO) ? 'PA' : 'PO') + '/';\n\n if ((this.temDestinoPA && !this.temDestinoPO) || (!this.temDestinoPA && this.temDestinoPO))\n this.booking.modal = '/' + ((this.temDestinoPA && !this.temDestinoPO) ? 'PA' : 'PO');\n\n this.booking.modal = this.booking.modal.replace(\"//\", \"/\");\n }\n\n this.exibeModal = true;\n this.loadingTodasPropostas = false;\n\n // se já está com a tela montada (ou seja, está trocando o cliente)\n if (this.exibeSelecaoProposta)\n this.FiltraPropostas();\n }, (err) => console.log(err)\n , () => {\n // finally\n });\n }\n\n FiltraPropostas() {\n this.limparBordas([this.cmbProposta, this.cmbPortoDestino, this.cmbPortoOrigem, this.cmbCidadeOrigem, this.cmbCidadeDestino, this.cmbOva, this.cmbDesova, this.cmbEscolta,\n this.cmbShipper, this.cmbCargaOver, this.cmbCargaPerigosa, this.cmbConferente, this.cmbProduto, this.cmbOperacaoComercial, this.cmbTipoContainer]);\n this.propostasFiltradas = this.todasPropostas.filter(x => (x.modal == this.propostaFiltro.modal) &&\n this.filtroNumero(x.numProposta, this.propostaFiltro.numProposta) &&\n this.filtroNumero(x.idMunicOrigem, this.propostaFiltro.idMunicOrigem) &&\n this.filtroNumero(x.idMunicDestino, this.propostaFiltro.idMunicDestino) &&\n this.filtroNumero(x.idPortolOrigem, this.propostaFiltro.idPortolOrigem) &&\n this.filtroNumero(x.idPortoDestino, this.propostaFiltro.idPortoDestino) &&\n this.filtroNumero(x.idFamiliaProduto, this.propostaFiltro.idFamiliaProduto) &&\n this.filtroNumero(x.idCategoriaContainer, this.propostaFiltro.idCategoriaContainer) &&\n this.filtroNumero(x.tamanhoContainer, this.propostaFiltro.tamanhoContainer) &&\n this.filtroFlag(x.flagShipperOwnContainer, this.propostaFiltro.flagShipperOwnContainer) &&\n this.filtroFlag(x.flagCargaOver, this.propostaFiltro.flagCargaOver) &&\n this.filtroFlag(x.flagCargaPerigosa, this.propostaFiltro.flagCargaPerigosa) &&\n this.filtroFlag(x.flagEquipePropriaOri, this.propostaFiltro.flagOva) &&\n this.filtroFlag(x.flagEquipePropriaDes, this.propostaFiltro.flagDesova) &&\n (this.filtroFlag(x.flagConferenteOri, this.propostaFiltro.flagConferente) || this.filtroFlag(x.flagConferenteDes, this.propostaFiltro.flagConferente)) &&\n (this.filtroFlag(x.flagEscoltaOri, this.propostaFiltro.flagEscolta) || this.filtroFlag(x.flagEscoltaDes, this.propostaFiltro.flagEscolta)) &&\n this.filtroString(x.tipoOperacaoComercial, this.propostaFiltro.tipoOperacaoComercial) &&\n this.filtroTipoContainer(x.tipoDeContainer.idContainer, this.propostaFiltro.tipoDeContainer.idContainer) &&\n this.filtrarServicoProposta(x.ListaTipoServicoOri, x.ListaTipoServicoDes)\n );\n\n if (this.propostasFiltradas.length == 0) {\n this.exibeSelecaoProposta = false;\n this._msgService.addMessage('Booking', 'Não foram encontradas propostas para esse cliente e modalidade. Troque a modalidade ou Solicite uma cotação.', 'warning',\n LogFrontFuncionalidade.Booking, Operacao.Consulta, this.propostaFiltro);\n return;\n }\n\n this._msgService.clearMessage();\n\n // Popula combos\n this.obterCidadesOrigem();\n this.obterCidadesDestino();\n this.obterPortosOrigem();\n this.obterPortosDestino();\n this.obterProdutos();\n this.obterTiposOperacao();\n this.obterTiposContainers();\n\n this.totalPropostasFiltradas = this.propostasFiltradas.length;\n\n this.qtdeCargaPerigosa = (this.propostasFiltradas.filter(p => p.flagCargaPerigosa == 'S').length);\n this.qtdeCargaOver = (this.propostasFiltradas.filter(p => p.flagCargaOver == 'S').length);\n this.qtdeShipperOwn = (this.propostasFiltradas.filter(p => p.flagShipperOwnContainer == 'S').length);\n this.qtdeEmbarcador = (this.propostasFiltradas.filter(p => p.flagOvaEmbarcador == 'S').length);\n this.qtdeRecebedor = (this.propostasFiltradas.filter(p => p.flagDesovaRecebedor == 'S').length);\n this.qtdeEquipePropriaOri = (this.propostasFiltradas.filter(p => p.flagEquipePropriaOri == 'S').length);\n this.qtdeEquipePropriaDes = (this.propostasFiltradas.filter(p => p.flagEquipePropriaDes == 'S').length);\n this.qtdeConferente = (this.propostasFiltradas.filter(p => p.flagConferenteOri == 'S' && p.flagConferenteDes == 'S').length);\n this.qtdeEscolta = (this.propostasFiltradas.filter(p => p.flagEscoltaOri == 'S' && p.flagEscoltaDes == 'S').length);\n\n this.qtdeCargaPerigosaNAO = (this.propostasFiltradas.filter(p => p.flagCargaPerigosa != 'S').length);\n this.qtdeCargaOverNAO = (this.propostasFiltradas.filter(p => p.flagCargaOver != 'S').length);\n this.qtdeShipperOwnNAO = (this.propostasFiltradas.filter(p => p.flagShipperOwnContainer != 'S').length);\n this.qtdeEquipePropriaOriNAO = (this.propostasFiltradas.filter(p => p.flagEquipePropriaOri != 'S').length);\n this.qtdeEquipePropriaDesNAO = (this.propostasFiltradas.filter(p => p.flagEquipePropriaDes != 'S').length);\n this.qtdeConferenteNAO = (this.propostasFiltradas.filter(p => p.flagConferenteOri != 'S' && p.flagConferenteDes != 'S').length);\n this.qtdeEscoltaNAO = (this.propostasFiltradas.filter(p => p.flagEscoltaOri != 'S' && p.flagEscoltaDes != 'S').length);\n\n if (this.qtdeEmbarcador == this.totalPropostasFiltradas)\n this.propostaFiltro.flagOva = 'N'; // '[INDEFINIDO]';\n else {\n if (this.qtdeEquipePropriaOri == this.totalPropostasFiltradas)\n this.propostaFiltro.flagOva = 'S';\n else if (this.qtdeEquipePropriaOriNAO == this.totalPropostasFiltradas)\n this.propostaFiltro.flagOva = 'N';\n }\n\n if (this.qtdeRecebedor == this.totalPropostasFiltradas)\n this.propostaFiltro.flagDesova = 'N'; // '[INDEFINIDO]';\n else {\n if (this.qtdeEquipePropriaDes == this.totalPropostasFiltradas)\n this.propostaFiltro.flagDesova = 'S';\n else if (this.qtdeEquipePropriaDesNAO == this.totalPropostasFiltradas)\n this.propostaFiltro.flagDesova = 'N';\n }\n\n if (this.qtdeConferente == this.totalPropostasFiltradas)\n this.propostaFiltro.flagConferente = 'S';\n else if (this.qtdeConferenteNAO == this.totalPropostasFiltradas)\n this.propostaFiltro.flagConferente = 'N';\n\n if (this.qtdeEscolta == this.totalPropostasFiltradas)\n this.propostaFiltro.flagEscolta = 'S';\n else if (this.qtdeEscoltaNAO == this.totalPropostasFiltradas)\n this.propostaFiltro.flagEscolta = 'N';\n\n if (this.propostaFiltro.flagCargaOver == '[INDEFINIDO]')\n this.propostaFiltro.flagCargaOver = (this.qtdeCargaOver == this.totalPropostasFiltradas) ? 'S' :\n (this.qtdeCargaOverNAO == this.totalPropostasFiltradas) ? 'N' : '[INDEFINIDO]';\n\n\n if (this.propostaFiltro.flagCargaPerigosa == '[INDEFINIDO]')\n this.propostaFiltro.flagCargaPerigosa = (this.qtdeCargaPerigosa == this.totalPropostasFiltradas) ? 'S' :\n (this.qtdeCargaPerigosaNAO == this.totalPropostasFiltradas) ? 'N' : '[INDEFINIDO]';\n\n if (this.propostaFiltro.flagShipperOwnContainer == '[INDEFINIDO]')\n this.propostaFiltro.flagShipperOwnContainer = (this.qtdeShipperOwn == this.totalPropostasFiltradas) ? 'S' :\n (this.qtdeShipperOwnNAO == this.totalPropostasFiltradas) ? 'N' : '[INDEFINIDO]';\n\n this.HabilitaBloqueiaServicos(this.todosServicosOrigem);\n this.HabilitaBloqueiaServicos(this.todosServicosDestino);\n\n this.listaNumPropostas = [];\n this.propostasFiltradas.forEach(x => {\n var existe = this.listaNumPropostas.find(i => i == x.numProposta);\n if (existe == null)\n this.listaNumPropostas.push(x.numProposta);\n });\n\n // Se chegou a uma proposta apenas, Seleciona!\n if (this.totalPropostasFiltradas == 1) {\n this.propostaFiltro.numProposta = this.propostasFiltradas[0].numProposta;\n this.propostaSelecionada = this.propostasFiltradas[0];\n }\n else {\n this.propostaSelecionada = undefined;\n if (this.propostasFiltradas.length > 0) {\n let numPropAux = this.propostasFiltradas[0].numProposta;\n if (this.propostasFiltradas.filter(f => f.numProposta == numPropAux).length == this.propostasFiltradas.length) {\n this.propostaFiltro.numProposta = this.propostasFiltradas[0].numProposta;\n this.propostaSelecionada = this.propostasFiltradas[0];\n }\n }\n }\n\n this.propostaSelecionadaEvent.emit(this.propostaSelecionada);\n\n if ((this.listaNumPropostas.length == 1) && (this.totalPropostasFiltradas > 1)) {\n //Encontrou um número de proposta porém com mais de um trecho\n this.DestacaFiltroIdentificadorTrecho();\n }\n }\n\n public DestacaFiltroIdentificadorTrecho() {\n // verifica qual filtro não foi informado, põe foco no campo e destaca\n var booking = this.booking;\n var filtro = this.propostaFiltro;\n\n if (this.AplicaDestaqueModal(booking.oriPorto, filtro.idPortolOrigem, this.cmbPortoOrigem))\n return;\n\n if (this.AplicaDestaqueModal(booking.desPorto, filtro.idPortoDestino, this.cmbPortoDestino))\n return;\n\n if (this.AplicaDestaqueModal(!booking.oriPorto, filtro.idMunicOrigem, this.cmbCidadeOrigem))\n return;\n\n if (this.AplicaDestaqueModal(!booking.desPorto, filtro.idMunicDestino, this.cmbCidadeDestino))\n return;\n\n if (this.AplicaDestaqueFiltroCondicao(filtro.idFamiliaProduto == 0, this.cmbProduto))\n return;\n\n if (this.AplicaDestaqueFiltroIndefinido(filtro.tipoOperacaoComercial, this.cmbOperacaoComercial))\n return;\n\n if (this.AplicaDestaqueFiltroCondicao(filtro.tipoDeContainer.idContainer == '0|0', this.cmbTipoContainer))\n return;\n\n if (this.AplicaDestaqueFiltroIndefinido(filtro.flagOva, this.cmbOva))\n return;\n\n if (this.AplicaDestaqueFiltroIndefinido(filtro.flagDesova, this.cmbDesova))\n return;\n\n if (this.AplicaDestaqueFiltroIndefinido(filtro.flagConferente, this.cmbConferente))\n return;\n\n if (this.AplicaDestaqueFiltroIndefinido(filtro.flagEscolta, this.cmbEscolta))\n return;\n\n if (this.AplicaDestaqueFiltroIndefinido(filtro.flagShipperOwnContainer, this.cmbShipper))\n return;\n\n if (this.AplicaDestaqueFiltroIndefinido(filtro.flagCargaPerigosa, this.cmbCargaPerigosa))\n return;\n\n if (this.AplicaDestaqueFiltroIndefinido(filtro.flagCargaOver, this.cmbCargaOver))\n return;\n\n if (this.AplicaDestaqueServicosEspeciais(filtro.servicosDaProposta, this.todosServicosOrigem, \"Origem\"))\n return;\n\n if (this.AplicaDestaqueServicosEspeciais(filtro.servicosDaProposta, this.todosServicosDestino, \"Destino\"))\n return;\n }\n\n private AplicaDestaqueModal(condicaoModal: boolean, idModal: number, combo: ElementRef): boolean {\n return this.AplicaDestaqueFiltroCondicao(condicaoModal && idModal == 0, combo);\n }\n\n private AplicaDestaqueFiltroIndefinido(filtro: string, combo: ElementRef): boolean {\n return this.AplicaDestaqueFiltroCondicao(filtro == '[INDEFINIDO]', combo);\n }\n\n private AplicaDestaqueFiltroCondicao(condicao: boolean, combo: ElementRef): boolean {\n if (!condicao)\n return false;\n\n this.SetFocus(combo);\n return true;\n }\n\n private AplicaDestaqueServicosEspeciais(servicosFiltro: ServicoProposta[], todosServicos: ServicoProposta[], indicadorOrigemDestino: string): boolean {\n for (var i = 0; i < todosServicos.length; i++) {\n var servico = todosServicos[i];\n if (servicosFiltro.filter(x => x.idTipoServico == servico.idTipoServico && x.indicOriDes == servico.indicOriDes).length != 0)\n continue;\n\n var hElement = this.elRef.nativeElement;\n var cmb = hElement.querySelector('#cmbServico' + indicadorOrigemDestino + i);\n setTimeout(function () { this.SetFocusNativeElement(cmb); }.bind(this));\n return true;\n }\n return false;\n }\n\n public HabilitaBloqueiaServicos(todosServicos: ServicoProposta[]) {\n todosServicos.forEach(x => {\n var qtdServicoSIM: number;\n var qtdServicoNAO: number;\n var valor: string = '[INDEFINIDO]';\n var servicoFiltro: ServicoProposta;\n\n x.disabled = false;\n x.valor = '[INDEFINIDO]';\n\n //qtdServicoSIM = this.propostasFiltradas.filter(p => (p.servicosDaProposta.filter(s => s.idTipoServico == x.idTipoServico && s.indicOriDes == x.indicOriDes).length > 0)).length;\n //qtdServicoNAO = this.propostasFiltradas.filter(p => (p.servicosDaProposta.filter(s => s.idTipoServico != x.idTipoServico && s.indicOriDes == x.indicOriDes).length > 0)).length;\n if (x.indicOriDes == 'O') {\n qtdServicoSIM = this.propostasFiltradas.filter(p => (',' + p.ListaTipoServicoOri).indexOf(',' + x.idTipoServico + ',') >= 0).length;\n qtdServicoNAO = this.propostasFiltradas.filter(p => (',' + p.ListaTipoServicoOri).indexOf(',' + x.idTipoServico + ',') == -1).length;\n }\n else {\n qtdServicoSIM = this.propostasFiltradas.filter(p => (',' + p.ListaTipoServicoDes).indexOf(',' + x.idTipoServico + ',') >= 0).length;\n qtdServicoNAO = this.propostasFiltradas.filter(p => (',' + p.ListaTipoServicoDes).indexOf(',' + x.idTipoServico + ',') == -1).length;\n }\n\n servicoFiltro = this.propostaFiltro.servicosDaProposta.find(f => f.idTipoServico == x.idTipoServico && f.indicOriDes == x.indicOriDes);\n\n if (servicoFiltro != null) {\n if (servicoFiltro.valorSelecionado != '[INDEFINIDO]')\n x.disabled = true;\n valor = servicoFiltro.valorSelecionado;\n }\n\n if (valor == '[INDEFINIDO]' || valor == null) {\n x.valorSelecionado = (qtdServicoSIM == 0 && qtdServicoNAO > 0) ? 'N' : (qtdServicoSIM > 0 && qtdServicoNAO == 0) ? 'S' : '[INDEFINIDO]';\n\n if (x.valorSelecionado != '[INDEFINIDO]')\n x.disabled = true;\n }\n\n if (!x.disabled)\n x.disabled = (qtdServicoSIM == 0 && qtdServicoNAO > 0) || (qtdServicoSIM > 0 && qtdServicoNAO == 0) || (qtdServicoSIM == 0 && qtdServicoNAO == 0);\n\n //x.disabled = (qtdServicoSIM == 0 || qtdServicoSIM == this.propostasFiltradas.length) || ((qtdServicoNAO == 0 || qtdServicoNAO == this.propostasFiltradas.length) ); //(this.propostasFiltradas.filter(p => (p.servicosDaProposta.filter(s => s.idTipoServico == x.idTipoServico && s.indicOriDes == x.indicOriDes).length > 0)).length == 0); \n /*\n if (this.propostasFiltradas.filter(p => p.servicosDaProposta.filter(s => s.idTipoServico == x.idTipoServico && s.indicOriDes == x.indicOriDes).length == 0).length == 0) {\n x.disabled = true;\n }\n */\n });\n }\n\n public filtroNumero(valorComparar: any, valor: number): boolean {\n return (valorComparar == valor || valor == 0);\n }\n\n public filtroFlag(valorComparar: any, valor: string): boolean {\n if (valor == '[INDEFINIDO]')\n return true;\n\n return ((valorComparar == null || valorComparar == '' || valorComparar == ' ' ? 'N' : valorComparar) == valor);\n }\n\n public filtroString(valorComparar: any, valor: string): boolean {\n valor = (valor == 'null') ? null : valor;\n return (valorComparar == valor || valor == '[INDEFINIDO]');\n }\n\n public filtroTipoContainer(valorComparar: string, valor: string) {\n valorComparar = (valorComparar == undefined || valorComparar == null) ? '' : valorComparar;\n valor = (valor == undefined || valor == \"undefined\" || valor == null) ? '' : valor;\n return (valorComparar == valor || valor == '0|0');\n }\n\n public filtrarServico(servico: ServicoProposta, valor: string) {\n var s = this.propostaFiltro.servicosDaProposta.find(x => x.idTipoServico == servico.idTipoServico && x.indicOriDes == servico.indicOriDes);\n if (s == null) {\n servico.valor = valor;\n servico.valorSelecionado = valor;\n this.propostaFiltro.servicosDaProposta.push(servico);\n }\n else {\n if (valor == '[INDEFINIDO]')\n this.propostaFiltro.servicosDaProposta.splice(this.propostaFiltro.servicosDaProposta.indexOf(s), 1);\n else\n s.valor = valor; // verificar pq disso\n }\n this.FiltraPropostas();\n }\n\n public filtrarServicoProposta(servicosOri: string, servicosDes: string) {\n if (this.propostaFiltro.servicosDaProposta.length == 0)\n return true;\n\n var ret: boolean = true;\n this.propostaFiltro.servicosDaProposta.forEach(x => {\n var str = (x.indicOriDes == 'O') ? ',' + servicosOri : ',' + servicosDes;\n if (!(((str.indexOf(',' + x.idTipoServico + ',') >= 0) && (x.valorSelecionado == 'S')) || // trocado x.valor por x.valorSelecionado\n ((str.indexOf(',' + x.idTipoServico + ',') == -1) && (x.valorSelecionado == 'N')))) { // trocado x.valor por x.valorSelecionado\n ret = false;\n return ret;\n }\n });\n\n return ret;\n }\n\n public ObterTodosTiposOperacao() {\n this._dataService.getTiposOperacaoComercial()\n .subscribe(lista => {\n lista.forEach(x => this.todosTiposOperacao.push({ codigo: x.codigo, descricao: x.descricao }));\n this.todosTiposOperacao.push({ codigo: null, descricao: '(Vazio)' });\n });\n }\n\n // Busca produtos das propostas filtradas\n private obterProdutos(): void {\n //TODO: Adicionar \"(Vazio)\" para quando vier proposta com produto null\n this.produtos = [];\n this._groupbyService.AgruparPorCampo(this.propostasFiltradas, 'idFamiliaProduto').forEach(x => {\n if (x.idFamiliaProduto) {\n this.produtos.push({ Codigo: x.idFamiliaProduto, Descricao: x.descFamiliaProduto });\n }\n });\n\n this.produtos = this._genericOrderbyService.ordenarPorCampo(this.produtos, 'Descricao');\n\n if (this.produtos.length == 1)\n this.propostaFiltro.idFamiliaProduto = this.produtos[0].Codigo;\n }\n\n // Busca tipos de operação comercial das propostas filtradas\n private obterTiposOperacao(): void {\n this.tiposOperacao = [];\n\n this.todosTiposOperacao.forEach(tp => {\n var prop = this.propostasFiltradas.find(p => p.tipoOperacaoComercial == tp.codigo);\n if (prop != null)\n this.tiposOperacao.push(tp);\n });\n\n this.tiposOperacao = this._genericOrderbyService.ordenarPorCampo(this.tiposOperacao, 'descricao');\n\n if (this.tiposOperacao.length == 1)\n this.propostaFiltro.tipoOperacaoComercial = this.tiposOperacao[0].codigo;\n }\n\n // Busca produtos das propostas filtradas\n private obterTiposContainers(): void {\n //TODO: Adicionar \"(Vazio)\" para quando vier proposta com tipo de contêiner null\n this.tipoContainers = [];\n\n this.todosTipoContainers.forEach(tp => {\n var prop = this.propostasFiltradas.find(p => p.tipoDeContainer.idContainer == tp.idContainer);\n if (prop != null)\n this.tipoContainers.push(tp);\n });\n\n this.tipoContainers = this._genericOrderbyService.ordenarPorCampo(this.tipoContainers, 'Descricao');\n\n if (this.tipoContainers.length == 1)\n this.propostaFiltro.tipoDeContainer = this.tipoContainers[0];\n }\n\n // Busca cidades de origem das propostas filtradas\n public obterCidadesOrigem(): void {\n //TODO: Adicionar \"(Vazio)\" para quando vier proposta com cidade nula\n this.cidadesOrigem = [];\n this.isLoadingCities = true;\n if (this.propostaFiltro.modal.startsWith('PA')) {\n this._groupbyService.AgruparPorCampo(this.propostasFiltradas, 'idMunicOrigem').forEach(x => {\n if (x.idMunicOrigem) {\n this.cidadesOrigem.push({\n Codigo: x.idMunicOrigem, Descricao: x.municOrigem, UF: x.ufOrigem,\n DescricaoCompleta: x.municOrigem + ' / ' + x.ufOrigem\n });\n }\n });\n\n this.cidadesOrigem = this._genericOrderbyService.ordenarPorCampo(this.cidadesOrigem, 'Descricao');\n\n // se sobrou apenas uma, seleciona\n if (this.cidadesOrigem.length == 1)\n this.propostaFiltro.idMunicOrigem = this.cidadesOrigem[0].Codigo;\n this.isLoadingCities = false;\n }\n }\n\n // Busca cidades de destino das propostas filtradas\n public obterCidadesDestino(): void {\n //TODO: Adicionar \"(Vazio)\" para quando vier proposta com cidade nula\n this.cidadesDestino = [];\n if (this.propostaFiltro.modal.endsWith('PA')) {\n this._groupbyService.AgruparPorCampo(this.propostasFiltradas, 'idMunicDestino').forEach(x => {\n if (x.idMunicDestino) {\n this.cidadesDestino.push({\n Codigo: x.idMunicDestino, Descricao: x.municDestino,\n UF: x.ufDestino, DescricaoCompleta: x.municDestino + ' / ' + x.ufDestino\n });\n }\n });\n\n this.cidadesDestino = this._genericOrderbyService.ordenarPorCampo(this.cidadesDestino, 'Descricao');\n\n // se sobrou apenas uma, seleciona\n if (this.cidadesDestino.length == 1)\n this.propostaFiltro.idMunicDestino = this.cidadesDestino[0].Codigo;\n }\n }\n\n // Busca portos de origem das propostas filtradas\n public obterPortosOrigem(): void {\n this.portosOrigem = [];\n if (this.propostaFiltro.modal.startsWith('PO')) {\n this.todosPortos.forEach(porto => {\n var prop = this.propostasFiltradas.find(p => p.idPortolOrigem == porto.Codigo);\n if (prop != null)\n this.portosOrigem.push(porto);\n });\n\n this.portosOrigem = this._genericOrderbyService.ordenarPorCampo(this.portosOrigem, 'Descricao');\n\n // se sobrou apenas um, seleciona\n if (this.portosOrigem.length == 1)\n this.propostaFiltro.idPortolOrigem = this.portosOrigem[0].Codigo;\n }\n }\n\n // Busca portos de destino das propostas filtradas\n public obterPortosDestino(): void {\n this.portosDestino = [];\n if (this.propostaFiltro.modal.endsWith('PO')) {\n this.todosPortos.forEach(porto => {\n var prop = this.propostasFiltradas.find(p => p.idPortoDestino == porto.Codigo);\n if (prop != null)\n this.portosDestino.push(porto);\n });\n\n this.portosDestino = this._genericOrderbyService.ordenarPorCampo(this.portosDestino, 'Descricao');\n\n // se sobrou apenas um, seleciona\n if (this.portosDestino.length == 1)\n this.propostaFiltro.idPortoDestino = this.portosDestino[0].Codigo;\n }\n }\n\n // Busca todos os portos (pois array de propostas não tem cidade dos portos para popular a combo.)\n public ObterPortos() {\n this._sharedService.getPortos()\n .subscribe(p => {\n this.todosPortos = p;\n this.todosPortos.push({ Codigo: null, Descricao: '', Municipio: '', UF: '' });\n });\n }\n\n public SetFocus(campo: ElementRef) {\n this.SetFocusNativeElement(campo.nativeElement);\n }\n\n public SetFocusNativeElement(nativeElement: any) {\n // this._renderer.selectRootElement(nativeElement).focus();\n setTimeout(() => {\n nativeElement.focus();\n }, 150);\n\n this.alteraBordaControle(nativeElement, 2, '#18b73d');\n }\n\n public limparFiltros() {\n this.limpaServicosAdicionais(this.todosServicosOrigem);\n this.limpaServicosAdicionais(this.todosServicosDestino);\n this.propostaFiltro = new PropostaComercialFiltro();\n this.propostaFiltro.modal = this.booking.modal;\n this.booking.qtdeContainer = 0;\n this.propostaSelecionada = undefined;\n this.FiltraPropostas();\n }\n\n limparBordas(controles: ElementRef[]) {\n controles.forEach(controle => {\n this.alteraBordaControle(controle.nativeElement, 1, '#CBD5E7');\n });\n }\n\n alteraBordaControle(nativeElement: any, tamanho: number, cor: string) {\n var dataHeight = nativeElement.attributes.getNamedItem(\"data-height\");\n var height = dataHeight ? 'height:' + dataHeight.value + \";\" : '';\n this._renderer.setAttribute(nativeElement, 'style', height + 'border:' + tamanho + ';border-color:' + cor);\n }\n}\n","import { Component, Input, Output, EventEmitter, OnInit, ViewChild } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { Booking } from 'app/_models/booking';\nimport { Cliente } from \"app/_models/cliente\";\nimport { Endereco } from './../../../../_models/endereco';\nimport { Municipio } from \"app/_models/municipio\";\nimport { TipoContainer } from '../../../../_models/tipo-container';\nimport { ClienteRequest } from \"app/_models/cliente-request\";\nimport { ServicoProposta } from '../../../../_models/servico-proposta';\nimport { PropostaComercial } from '../../../../_models/proposta-comercial';\n\nimport { AppService } from 'app/_services/app.service';\nimport { SharedService } from '../../../../_services/shared.service';\nimport { PropostaComercialService } from '../../../../_services/proposta-comercial.service';\n\nimport swal from 'sweetalert2';\nimport { BaseComponent } from './../../../../shared/base.component';\nimport { EnderecoComponent } from 'app/shared/endereco/endereco.component';\nimport { Feriado } from 'app/_models/feriado';\n\n@Component({\n selector: 'step2-detalhes-operacao',\n templateUrl: './step2-detalhes-operacao.component.html',\n styleUrls: ['./step2-detalhes-operacao.component.scss']\n})\nexport class Step2DetalhesOperacaoComponent extends BaseComponent implements OnInit{\n\n @Input() novoBooking: boolean;\n @Input() edicaoBooking: boolean;\n @Input() booking: Booking;\n @Input() duplicar: boolean;\n @Input() loadingProposta: boolean = false;\n @Input() qtdeContainersInicial: number;\n @Input() qtdeHorasAgendamentoPA: number;\n @Input() qtdeHorasAgendamentoPO: number;\n @Input() feriados: Feriado[];\n @Output() quantidadeContainersAlterada: EventEmitter = new EventEmitter();\n\n @ViewChild(EnderecoComponent, {static: true}) endereco: EnderecoComponent;\n\n municipios: Municipio[] = [];\n clientes: Cliente[];\n cliente: Cliente;\n loadingClientes: boolean = false;\n loadingMunicipios: boolean = false;\n proposta: PropostaComercial = new PropostaComercial();\n servicosProposta: ServicoProposta[] = [];\n telefoneEmbarcador: string;\n enderecoEmbSelecionado: Endereco;\n\n _municipioEmb: Municipio;\n get municipioEmb(): Municipio {\n return this._municipioEmb;\n }\n set municipioEmb(value: Municipio) {\n this._municipioEmb = value;\n this.booking.municipioEmb = value.Descricao;\n this.booking.idMunicEmb = value.Codigo;\n this.booking.idMunicipioEmb = value.Codigo;\n this.booking.ufEmb = value.UF;\n }\n\n constructor(private _propostaService: PropostaComercialService,\n private _sharedService: SharedService,\n private _appService: AppService,\n private _sanitizer: DomSanitizer) {\n super();\n this.proposta.tipoDeContainer = new TipoContainer();\n }\n\n ngOnInit(): void {\n this.ObterMunicipios();\n }\n\n autocompleListFormatter = (data: any) => {\n let html = `${data.Descricao}/${data.UF}`;\n return this._sanitizer.bypassSecurityTrustHtml(html);\n //return html;\n }\n\n get bloquearContatoEmbarcador(): boolean{\n // var temEnd: boolean = ((this.cliente != null ) && (this.cliente.Enderecos != null) && (this.cliente.Enderecos.length > 0)); //&& this.cliente.Logradouro != null) );\n // return (temEnd || (this.proposta.logradouroEmb!= \"\" && this.proposta.logradouroEmb!= undefined));\n\n var propostaTemEnderecoEmb: boolean = (this.proposta.logradouroEmb!= \"\" && this.proposta.logradouroEmb!= undefined);\n var encontrouClienteEndereco: boolean = ((this.cliente != null ) && (this.cliente.Enderecos != null) && (this.cliente.Enderecos.length > 0));\n\n return propostaTemEnderecoEmb || (!propostaTemEnderecoEmb && encontrouClienteEndereco);\n }\n\n get bloquearCNPJIEEmbarcador(): boolean{\n return (this.proposta.logradouroEmb!= \"\" && this.proposta.logradouroEmb!= undefined);\n }\n\n propostaAlterada(proposta: PropostaComercial){\n if (!proposta)\n return;\n\n var naoAlterouProposta = (this.proposta) && ((proposta.numProposta == this.proposta.numProposta) && (proposta.idTrecho == this.proposta.idTrecho))\n\n this._sharedService.copyProperties(proposta, this.proposta);\n this.proposta.servicosDaProposta = proposta.servicosDaProposta;\n this.clientes = null;\n\n if ((!this.duplicar) && (this.novoBooking) && (!naoAlterouProposta)) {\n this.preencherBookingComDadosDaProposta();\n }\n }\n\n public ObterMunicipios() {\n this.loadingMunicipios = true;\n this._sharedService.getMunicipios()\n .subscribe(m => {\n this.municipios = m;\n this.loadingMunicipios = false;\n });\n }\n\n public ObterClientes() {\n if (this.edicaoBooking)\n return;\n\n this.loadingClientes = true;\n this.clientes = null;\n var filtroCliente = new ClienteRequest();\n filtroCliente.CNPJ = this.booking.cnpjEmb;\n filtroCliente.InscricaoEstadual = this.proposta.ieEmb;\n this._sharedService.getClientes(filtroCliente)\n .subscribe(c => {\n this.loadingClientes = false;\n if (c == null) {\n this.cliente = null;\n this.clientes = null;\n this.booking.municipioEmb = null;\n this.booking.ufEmb = null;\n this.carregaClienteNoBooking();\n return;\n }\n\n this.clientes = c.filter(x => x.CNPJ == filtroCliente.CNPJ);\n if (this.clientes && this.clientes.length == 0)\n this.clientes = null;\n this.cliente = ((this.clientes != undefined) && (this.clientes.length == 1)) ? this.clientes[0] : null;\n this.carregaClienteNoBooking();\n });\n }\n\n ieEmbarcadorSelecionada(ie: string){\n this.cliente = this.clientes ? this.clientes.find(c => c.InscricaoEstadual == ie) : null;\n this.carregaClienteNoBooking();\n }\n\n atualizaNomeEmbarcador() {\n this.booking.nomeEmbarcador = this.booking.nomeEmb;\n }\n\n atualizaNumeroEmbarcador() {\n this.booking.numeroEmb = this.booking.numeroEndEmb;\n }\n\n atualizaEmailEmbarcador() {\n this.booking.emailEmb = (!this.booking.emailEmb) ? this.booking.emailEmb : this.booking.emailEmb.toLowerCase();\n this.booking.email = this.booking.emailEmb;\n }\n\n carregaClienteNoBooking(){\n this.booking.ieEmb = this.cliente ? this.cliente.InscricaoEstadual : '';\n this.booking.nomeEmb = this.cliente ? this.cliente.Nome : '';\n this.booking.nomeEmbarcador = this.cliente ? this.cliente.Nome : '';\n //console.log('carregaClienteNoBooking');\n //console.log(this.cliente);\n //console.log(this.clientes);\n // >>>>>>>>>>>>>>>>>> Gylci 22/01 - Melhorias\n if (this.cliente && this.cliente.Enderecos != undefined && this.cliente.Enderecos.length > 0)\n {\n this.booking.Embarcador = this.cliente;\n this.enderecoEmbSelecionado = this.cliente.Enderecos[0];\n this.booking.cepEmb = this.cliente.Enderecos[0].CEP;\n this.booking.logradouroEmb = this.cliente.Enderecos[0].Logradouro;\n this.booking.numeroEndEmb = this.cliente.Enderecos[0].Numero;\n this.booking.numeroEmb = this.cliente.Enderecos[0].Numero;\n this.booking.complementoEmb = this.cliente.Enderecos[0].Complemento;\n this.booking.bairroEmb = this.cliente.Enderecos[0].Bairro;\n if (!this.booking.municipioEmb)\n this.booking.municipioEmb = this.cliente.Enderecos[0].Municipio;\n if (!this.booking.ufEmb)\n this.booking.ufEmb = this.cliente.Enderecos[0].UF;\n if (!this.booking.idMunicEmb)\n this.booking.idMunicEmb = this.cliente.Enderecos[0].IdMunicipio;\n }\n else {\n this.booking.cepEmb = '';\n this.booking.logradouroEmb = '';\n this.booking.numeroEndEmb = '';\n this.booking.numeroEmb = '';\n this.booking.complementoEmb = '';\n this.booking.bairroEmb = '';\n if (!this.booking.municipioEmb)\n this.booking.municipioEmb = '';\n if (!this.booking.ufEmb)\n this.booking.ufEmb = '';\n if (!this.booking.idMunicEmb)\n this.booking.idMunicEmb = null;\n }\n /* >>>>>>>>>>>>>>>>>> Gylci 22/01 - Melhorias\n this.booking.cepEmb = this.cliente ? this.cliente.CEP : '';\n this.booking.logradouroEmb = this.cliente ? this.cliente.Logradouro : '';\n this.booking.numeroEndEmb = this.cliente ? this.cliente.Numero : '';\n this.booking.numeroEmb = this.cliente ? this.cliente.Numero : '';\n this.booking.complementoEmb = this.cliente ? this.cliente.Complemento : '';\n this.booking.bairroEmb = this.cliente ? this.cliente.Bairro : '';\n if (!this.booking.municipioEmb)\n this.booking.municipioEmb = this.cliente ? this.cliente.Municipio : '';\n if (!this.booking.ufEmb)\n this.booking.ufEmb = this.cliente ? this.cliente.UF : '';\n if (!this.booking.idMunicEmb)\n this.booking.idMunicEmb = this.cliente ? this.cliente.IdMunicipio : null;\n <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< */\n\n this.booking.contatoEmb = this._appService.UsuarioLogado.Nome.substring(0,30);\n this.booking.emailEmb = this._appService.UsuarioLogado.Email.toLowerCase();\n this.booking.email = this._appService.UsuarioLogado.Email;\n this.telefoneEmbarcador = (this.novoBooking || this.duplicar) ? this._appService.UsuarioLogado.Telefone : this.booking.telefone;\n this.formataTelefoneEmbarcador(this.telefoneEmbarcador);\n }\n\n private ExibeNomeCliente(ie: string) {\n var cli: Cliente = this.clientes.find( c => c.CNPJ == this.booking.cnpjEmb && c.InscricaoEstadual == ie);\n this.booking.nomeEmb = (cli != undefined) ? cli.Nome : '';\n this.booking.nomeEmbarcador = this.booking.nomeEmb;\n }\n\n qtdeContainersAlterada(quantidade: number){\n if (this.booking.qtdeContainer >= this.qtdeContainersInicial)\n this.quantidadeContainersAlterada.emit(quantidade);\n }\n\n public preencherBookingComDadosDaProposta(): void {\n this.booking.cnpjCli = this.proposta.cnpjCli;\n this.booking.ieCli = this.proposta.ieCli;\n this.booking.modal = this.proposta.modal;\n this.booking.idProposta = this.proposta.idProposta;\n this.booking.idTrecho = this.proposta.idTrecho;\n this.booking.numProposta = this.proposta.numProposta.toString();\n this.booking.idMunicOri = this.proposta.idMunicOrigem;\n this.booking.municOri = this.proposta.municOrigem;\n this.booking.ufMunicOri = this.proposta.ufOrigem;\n this.booking.idMunicDes = this.proposta.idMunicDestino;\n this.booking.municDes = this.proposta.municDestino;\n this.booking.ufDes = this.proposta.ufDestino;\n this.booking.idPortoOri = this.proposta.idPortolOrigem;\n this.booking.idPortoDes = this.proposta.idPortoDestino;\n this.booking.tipoDeContainer = this.proposta.tipoDeContainer;\n this.booking.idCategoriaContainer = this.proposta.idCategoriaContainer;\n this.booking.tamanhoContainer = this.proposta.tamanhoContainer;\n this.booking.flagCargaOver = this.proposta.flagCargaOver;\n this.booking.flagCargaRefrigerada = this.proposta.flagCargaRefrigerada;\n this.booking.flagCargaPerigosa = this.proposta.flagCargaPerigosa;\n this.booking.temperatura = this.proposta.tempCargaRefrigerada;\n this.booking.numUno = this.proposta.numeroUNO;\n this.booking.classe = this.proposta.classe;\n this.booking.sequencia = this.proposta.sequencia;\n this.booking.psn = this.proposta.psn;\n this.booking.cargaOverAltura = this.proposta.CargaOverAltura;\n this.booking.cargaOverDireita = this.proposta.CargaOverDireita;\n this.booking.cargaOverEsquerda = this.proposta.CargaOverEsquerda;\n this.booking.cargaOverTraseiro = this.proposta.CargaOverTraseiro;\n this.booking.cargaOverFrontal = this.proposta.CargaOverFrontal;\n this.booking.obsCargaOver = this.proposta.obsCargaOver;\n this.booking.obsCargaRefrigerada = this.proposta.obsCargaRefrigerada;\n this.booking.obsCargaPerigosa = this.proposta.obsCargaPerigosa;\n this.booking.pesoBruto = this.proposta.pesoContainer;\n this.booking.nomeEmb = this.proposta.nomeEmb;\n this.booking.nomeEmbarcador = this.proposta.nomeEmb;\n this.booking.cnpjEmb = this.proposta.cnpjEmb;\n this.booking.ieEmb = this.proposta.ieEmb;\n this.booking.cepEmb = this.proposta.cepEmb;\n this.booking.logradouroEmb = this.proposta.logradouroEmb;\n this.booking.numeroEndEmb = this.proposta.numeroEndEmb;\n this.booking.numeroEmb = this.proposta.numeroEndEmb;\n this.booking.bairroEmb = this.proposta.bairroEmb;\n this.booking.contatoEmb = this._appService.UsuarioLogado.Nome.substring(0,30);\n this.booking.complementoEmb = this.proposta.complementoEmb;\n this.booking.email = this._appService.UsuarioLogado.Email;\n this.booking.emailEmb = this._appService.UsuarioLogado.Email.toLowerCase();\n this.booking.idMunicEmb = this.proposta.idMunicipioEmb;\n this.booking.municipioEmb = this.proposta.municipioEmb;\n this.booking.ufEmb = this.proposta.ufEmb;\n this.telefoneEmbarcador = (this.novoBooking || this.duplicar) ? this._appService.UsuarioLogado.Telefone : this.booking.telefone;\n this.formataTelefoneEmbarcador(this.telefoneEmbarcador);\n\n var filtroCliente = new ClienteRequest();\n filtroCliente.CNPJ = this.booking.cnpjEmb;\n filtroCliente.InscricaoEstadual = this.proposta.ieEmb;\n this._sharedService.getClientes(filtroCliente)\n .subscribe(c => {\n this.loadingClientes = false;\n if (c == null) {\n this.booking.Embarcador = null;\n return;\n }\n\n var clientes = c.filter(x => x.CNPJ == filtroCliente.CNPJ && x.InscricaoEstadual == filtroCliente.InscricaoEstadual);\n if (clientes && clientes.length != 0) {\n this.booking.Embarcador = ((clientes != undefined) && (clientes.length == 1)) ? clientes[0] : null;\n }\n });\n\n this.booking.proposta = this.proposta;\n }\n\n ValidarStep(): string[]{\n var mensagens: string[] = [];\n\n if (!this._sharedService.validaInteiro(this.booking.temperatura))\n mensagens.push('A Temperatura deve ser um número inteiro!');\n else if (this.booking.temperatura < -100 || this.booking.temperatura > 100)\n mensagens.push('A Temperatura deve estar entre -100°C e 100°C!');\n\n if (!this._sharedService.validaInteiro(this.booking.cargaOverAltura))\n mensagens.push('O excesso de Altura deve ser um número inteiro!');\n\n if (!this._sharedService.validaInteiro(this.booking.cargaOverEsquerda))\n mensagens.push('O excesso à Esquerda deve ser um número inteiro!');\n\n if (!this._sharedService.validaInteiro(this.booking.cargaOverDireita))\n mensagens.push('O excesso à Direta deve ser um número inteiro!');\n\n if (!this._sharedService.validaInteiro(this.booking.cargaOverTraseiro))\n mensagens.push('O excesso Traseiro deve ser um número inteiro!');\n\n if (!this._sharedService.validaInteiro(this.booking.cargaOverFrontal))\n mensagens.push('O excesso Frontal deve ser um número inteiro!');\n\n if (!this.booking.qtdeContainer || this.booking.qtdeContainer == 0)\n mensagens.push(\"Informe a quantidade de contêineres\");\n else {\n if (this.booking.qtdeContainer > 300)\n mensagens.push('A Quantidade de Contêineres não pode ser maior que 300!');\n\n if (!this._sharedService.validaInteiro(this.booking.qtdeContainer) || this.booking.qtdeContainer <= 0)\n mensagens.push('A Quantidade de Contêineres deve ser um número inteiro maior que 0 (zero)!');\n }\n\n //-- Validação dos dados do embarcador - chamado 6004 --\n if ((!this.booking.cnpjEmb || this.booking.cnpjEmb == '') && (!this.edicaoBooking))\n mensagens.push(\"Informe o CNPJ do embarcador\");\n\n if ((!this.booking.ieEmb || this.booking.ieEmb == '') && (!this.edicaoBooking))\n mensagens.push(\"Informe a Inscrição Estadual do embarcador\");\n\n if ((!this.booking.nomeEmbarcador || this.booking.nomeEmbarcador == '') && (!this.edicaoBooking))\n mensagens.push(\"Informe a Razão Social do embarcador\");\n\n if ((!this.booking.cepEmb || this.booking.cepEmb == '') && (!this.edicaoBooking))\n mensagens.push(\"Informe o CEP do embarcador\");\n\n if ((!this.booking.logradouroEmb || this.booking.logradouroEmb == '') && (!this.edicaoBooking))\n mensagens.push(\"Informe o Logradouro do embarcador\");\n\n if ((!this.booking.numeroEndEmb || this.booking.numeroEndEmb == '') && (!this.edicaoBooking))\n mensagens.push(\"Informe número do endereço do embarcador\");\n\n if ((!this.booking.municipioEmb || this.booking.municipioEmb == '') && (!this.edicaoBooking))\n mensagens.push(\"Informe o Município do embarcador\");\n //------------------------------------------------------\n\n\n if ((!this.booking.contatoEmb || this.booking.contatoEmb == '') && (!this.edicaoBooking))\n mensagens.push(\"Informe o contato do embarcador\");\n\n if ((!this.telefoneEmbarcador || this.telefoneEmbarcador == '') && (!this.edicaoBooking))\n mensagens.push(\"Informe o telefone do embarcador\");\n else\n if (!this._sharedService.validaTelefone(this.telefoneEmbarcador) && (!this.edicaoBooking))\n mensagens.push(\"Telefone do embarcador inválido\");\n else\n this.formataTelefoneEmbarcador(this.telefoneEmbarcador);\n\n if ((!this.booking.emailEmb || this.booking.emailEmb == '') && (!this.edicaoBooking))\n mensagens.push(\"Informe o e-mail do embarcador\");\n else {\n if (!this._sharedService.validaMailFormat(this.booking.emailEmb.toLowerCase()))\n mensagens.push(\"E-mail do embarcador inválido\");\n }\n\n if (this.booking.qtdeContainer && this.booking.qtdeContainer > 300)\n mensagens.push(\"A quantidade de contêineres não pode ser superior a 300\");\n else if (this.booking.qtdeContainer && this.booking.qtdeContainer != this.qtdeContainersInicial && this.edicaoBooking && !this.duplicar) {\n // se modificou a quantidade de conteiners\n var dataReferencia = (this.booking.oriPorto) ?\n this._sharedService.CalculaProximoDiaUtil(this.feriados, new Date(), this.qtdeHorasAgendamentoPO) :\n this._sharedService.addHours(new Date(), this.qtdeHorasAgendamentoPA);\n\n //verfica se a data de deadline permite a alteração\n if (this.booking.DataDeadlineEntregaEmb != undefined) {\n if (dataReferencia.getTime() > this.booking.DataDeadlineEntregaEmb.getTime()) {\n mensagens.push(\"Sua solicitação de alteração de quantidade do booking não é permitida devido à data de deadline da entrega da carga para o embarque!\");\n this.booking.qtdeContainer = this.qtdeContainersInicial;\n this.quantidadeContainersAlterada.emit(this.qtdeContainersInicial);\n }\n }\n\n if (this.booking.qtdeContainer > this.qtdeContainersInicial) {\n // se dentro do prazo, exibe mensagem apenas para aumento de conteiners\n if (mensagens.length == 0){\n swal({\n title: 'Alerta',\n text: 'Sua solicitação de aumento de quantidade do booking será avaliada pela nossa equipe de atendimento do cliente e retornaremos em breve!',\n type: 'warning',\n showConfirmButton: true,\n showCancelButton: false,\n confirmButtonText: 'OK'\n }).then(success => {\n }, dismiss => {\n });\n }\n else\n mensagens.push(\"Sua solicitação de aumento de quantidade do booking será avaliada pela nossa equipe de atendimento do cliente e retornaremos em breve!\");\n }\n else if (!this.booking.oriPorto) {\n mensagens.push(\"Por favor entrar em contato com nosso 0800 para solicitar o cancelamento destes agendamentos, pois já enviamos as Ordens de Serviço para os provedores\");\n this.booking.qtdeContainer = this.qtdeContainersInicial;\n this.quantidadeContainersAlterada.emit(this.qtdeContainersInicial);\n }\n }\n\n return mensagens;\n }\n\n formataTelefoneEmbarcador(telefone: string): void {\n if (telefone) {\n telefone = telefone.replace(/\\D/g, '');\n if (telefone && telefone.length > 9) {\n this.booking.dddEmb = telefone.substr(0, 2);\n\n const tamanhoTelefone = telefone.length;\n const numTelefone = telefone.substr(2, telefone.length - 1);\n\n this.booking.foneEmb = numTelefone;\n this.booking.telefone = this.booking.dddEmb + this.booking.foneEmb;\n }\n }\n }\n\n getDescricaoOrigemDestino(servicoProposta: ServicoProposta): string {\n var descricao = \"\";\n if (servicoProposta.indicOriDes == \"O\")\n descricao = \" (Origem)\";\n\n if (servicoProposta.indicOriDes == \"D\")\n descricao = \" (Destino)\";\n\n return servicoProposta.descTipoServico + descricao;\n }\n\n getServicosProposta(tipo: string){\n return this.proposta.servicosDaProposta.filter(x => x.indicOriDes == tipo);\n }\n\n exibeLinha() {\n return ((this.proposta.flagEquipePropriaOri == 'S') ||\n (this.proposta.flagEquipePropriaDes == 'S') ||\n (this.proposta.flagConferenteOri == 'S') ||\n (this.proposta.flagConferenteDes == 'S') ||\n (this.proposta.flagEscoltaOri == 'S') ||\n (this.proposta.flagEscoltaDes == 'S') ||\n (this.proposta.flagShipperOwnContainer == 'S'));\n\n }\n}\n","export class DadosAba3{\n public cep: string;\n public logradouro: string;\n public numero: string;\n public complemento: string;\n public bairro: string;\n public idMunicipio: number;\n public municipio: string;\n public contato: string;\n public ddd: string;\n public telefone: string;\n public observacoes: string;\n public uf: string;\n}","import { Component, Input, ViewChild } from '@angular/core';\nimport { DateModel } from \"app/shared/ng2-datepicker/ng2-datepicker.component\";\nimport { DatePickerOptions } from \"app/shared/ng2-datepicker/ng2-datepicker.component\";\n\nimport * as moment from 'moment/moment';\nimport 'moment/locale/pt-br';\n\nimport { TipoContainer } from '../../../../../../_models/tipo-container';\nimport { AgendamentoColeta } from '../../../../../../_models/agendamento-coleta';\nimport { DetalhesContainerComponent } from \"app/shared/detalhes-container/detalhes-container.component\";\nimport { SharedService } from './../../../../../../_services/shared.service';\nimport { DatepickerService } from 'app/_services/datepicker.service';\nimport { Booking } from 'app/_models/booking';\n\n@Component({\n selector: 'item-agendamento',\n templateUrl: './item-agendamento.component.html',\n styleUrls: ['./item-agendamento.component.scss']\n})\nexport class ItemAgendamentoComponent {\n\n @Input() index: number;\n @Input() modal: string;\n @Input() cargaPerigosa: string;\n @Input() tipoContainer: TipoContainer;\n @Input() agendamento: AgendamentoColeta;\n @Input() edita: boolean;\n @Input() booking: Booking;\n\n @ViewChild(DetalhesContainerComponent, {static: true}) detalhesContainer : DetalhesContainerComponent;\n\n dataSelecionada: DateModel;\n options: DatePickerOptions;\n mascaraHora: Array = [/[0-2]/,/[0-9]/, ':', /[0-5]/, /[0-9]/];\n \n constructor(private _datePickerService: DatepickerService, \n private _sharedService: SharedService) {\n this.options = _datePickerService.GenerateOptionsConfig(this._sharedService.addDays(new Date(), 1));\n }\n\n changeRegex(input_time){\n if(input_time.charAt(0) == '2'){\n this.mascaraHora[1]=new RegExp('[0-3]')\n }else{\n this.mascaraHora[1]=new RegExp('[0-9]')\n }\n }\n\n podeEditar(): boolean {\n return ((this.agendamento.numAgendamento == 0) && this.edita);\n }\n\n formataData(formato: string): string{\n return (!this.agendamento || this.agendamento.numAgendamento == 0) ? \"\" : moment(this.agendamento.dataColeta).format(formato);\n }\n}\n","import { DatePickerModule } from 'app/shared/ng2-datepicker/ng2-datepicker.module';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TextMaskModule } from 'angular2-text-mask';\n\nimport { ItemAgendamentoComponent } from './item-agendamento.component';\nimport { MultiselectDropdownModule } from './../../../../../../shared/multiselect-dropdown/multiselect-dropdown.module';\nimport { SharedModule } from \"app/shared/shared.module\";\nimport { CurrencyMaskModule } from 'ng2-currency-mask';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n TextMaskModule,\n CurrencyMaskModule,\n MultiselectDropdownModule,\n DatePickerModule,\n SharedModule,\n ],\n exports: [ItemAgendamentoComponent],\n declarations: [ItemAgendamentoComponent],\n providers: [],\n})\nexport class ItemAgendamentoModule {\n\n}\n","import { Component, ViewChild, QueryList, Input } from '@angular/core';\n\nimport { AgendamentoColeta } from '../../../../../_models/agendamento-coleta';\nimport { Booking } from '../../../../../_models/booking';\nimport { PropostaComercial } from '../../../../../_models/proposta-comercial';\nimport { ItemAgendamentoComponent } from './item-agendamento/item-agendamento.component';\nimport { SharedService } from '../../../../../_services/shared.service';\nimport { DateExtensions } from 'app/shared/extensions/extensions.module';\n\n@Component({\n selector: 'lista-agendamento',\n templateUrl: './lista-agendamento.component.html',\n styleUrls: ['./lista-agendamento.component.scss']\n})\nexport class ListaAgendamentoComponent {\n\n constructor(private _sharedService: SharedService) {\n this.booking = new Booking();\n this.booking.AgendamentosDeColeta = [];\n }\n\n qtdeAgendamentosCadastrados: number;\n booking: Booking;\n proposta: PropostaComercial;\n copiar: boolean = true;\n\n @Input() edita: boolean;\n @Input() erroBooking: boolean = false;\n @Input() dataMinima: Date;\n @ViewChild(ItemAgendamentoComponent, {static: true}) itensAgendamento: QueryList;\n \n public ConfiguraProposta(booking: Booking, proposta: PropostaComercial, mantemAgendamentos: boolean){\n this.booking = booking;\n this.proposta = proposta;\n\n //Se a lista de agendamentos estiver vazia,\n //é a primeira vez que entrou nessa tela\n if (booking.AgendamentosDeColeta == undefined)\n booking.AgendamentosDeColeta = [];\n \n //Se a lista de agendamentos for maior que a quantidade de\n //containers, quer dizer que o usuário voltou para o step 1 e\n //removeu contêiners\n if (booking.AgendamentosDeColeta.length > booking.qtdeContainer){\n //Remove os contêiners do fim da lista\n var quantidadeRemover = booking.AgendamentosDeColeta.length - booking.qtdeContainer;\n booking.AgendamentosDeColeta.splice(booking.AgendamentosDeColeta.length - quantidadeRemover, quantidadeRemover);\n }\n\n //Limpa os dados digitados dos agendamentos prévios se\n //foi informado no parâmetro que os dados não devem ser mantidos\n if (!mantemAgendamentos){\n booking\n .AgendamentosDeColeta\n .filter(agendamento => agendamento.numAgendamento == 0)\n .forEach(agendamento => {\n agendamento.peso = (proposta) ? proposta.pesoContainer : 0;\n agendamento.valMercadoria = (proposta) ? proposta.valMercadoria : 0;\n agendamento.numRefCliente = \"\";\n agendamento.horaColeta = \"\";\n if (agendamento.dataSelecionada != undefined)\n agendamento.dataSelecionada = DateExtensions.toDateModel(this.dataMinima, \"DD/MM/YYYY\"); //new Date().toLocaleDateString('pt-br');\n });\n }\n \n //Armazena a quantidade de agendamentos pré-existentes\n this.qtdeAgendamentosCadastrados = booking.AgendamentosDeColeta.filter(a => a.numAgendamento != 0).length;\n \n //Se a lista de agendamentos estiver vazia e não houver\n //agendamentos pré-existentes, preenche a lista inteiramente\n //com agendamentos vazios. Se já houverem agendamentos na lista\n //apenas completa a lista com a quantidade de contêineres\n //adicionais informado pelo usuário no step 1.\n if (booking.qtdeContainer > this.qtdeAgendamentosCadastrados)\n for(var i = booking.AgendamentosDeColeta.length; i < booking.qtdeContainer; i++){\n var agendamento: AgendamentoColeta = new AgendamentoColeta();\n agendamento.numAgendamento = 0;\n agendamento.peso = proposta ? proposta.pesoContainer : 0;\n agendamento.valMercadoria = proposta ? proposta.valMercadoria : 0;\n booking.AgendamentosDeColeta.push(agendamento);\n }\n \n proposta.tipoDeContainer.Desc_resumida = booking.tipoContainer\n proposta.tipoDeContainer.Descricao = booking.categoriaContainer\n }\n\n RepetirValoresAgendamento(index: number){\n for(var i = index + 1; i < this.booking.AgendamentosDeColeta.length; i++){\n var agendamento = this.booking.AgendamentosDeColeta[i];\n var agendamentoBase = this.booking.AgendamentosDeColeta[index];\n agendamento.peso = agendamentoBase.peso;\n agendamento.valMercadoria = agendamentoBase.valMercadoria;\n agendamento.numRefCliente = agendamentoBase.numRefCliente;\n agendamento.dataColeta = agendamentoBase.dataColeta;\n agendamento.horaColeta = agendamentoBase.horaColeta;\n agendamento.dataSelecionada = this._sharedService.clonaDateModel(agendamentoBase.dataSelecionada);\n }\n }\n\n public ObterModalBooking(): string{\n return (this.booking.oriPorto ? \"PO\" : \"PA\") + \"/\" + (this.booking.desPorto ? \"PO\" : \"PA\");\n }\n\n}\n","import { Component, OnInit, ViewChild, Input } from '@angular/core';\n\nimport { DadosAba3 } from './dados-aba-3';\nimport { Booking } from '../../../../_models/booking';\nimport { Schedule } from './../../../../_models/schedule';\nimport { Endereco } from './../../../../_models/endereco';\nimport { AgendamentoColeta } from \"app/_models/agendamento-coleta\";\nimport { PropostaComercial } from '../../../../_models/proposta-comercial';\n\nimport { AppService } from './../../../../_services/app.service';\nimport { SharedService } from './../../../../_services/shared.service';\nimport { BaseComponent } from '../../../../shared/base.component';\nimport { DatepickerService } from \"app/_services/datepicker.service\";\nimport { DateExtensions } from 'app/shared/extensions/extensions.module';\n\nimport { EnderecoComponent } from 'app/shared/endereco/endereco.component';\nimport { ListaAgendamentoComponent } from './lista-agendamento/lista-agendamento.component';\nimport { Feriado } from 'app/_models/feriado';\nimport { DateModel } from '../../../../shared/ng2-datepicker/ng2-datepicker.module';\n\n@Component({\n selector: 'step3-agendamento-coleta',\n templateUrl: './step3-agendamento-coleta.component.html',\n styleUrls: ['./step3-agendamento-coleta.component.scss']\n})\nexport class Step3AgendamentoColetaComponent extends BaseComponent implements OnInit {\n\n constructor(private _datepickerService: DatepickerService,\n private _appService: AppService,\n private _shared: SharedService) {\n super();\n this.dadosAba3 = new DadosAba3();\n this.permiteEditarEndereco = true;\n }\n\n ngOnInit() { }\n\n @ViewChild(ListaAgendamentoComponent, {static: true}) listaAgendamento: ListaAgendamentoComponent;\n @ViewChild(EnderecoComponent, {static: true}) enderecoColeta: EnderecoComponent;\n @Input() booking: Booking;\n @Input() novoBooking: boolean;\n @Input() edicaoBooking: boolean;\n @Input() erroBooking: boolean = false;\n @Input() qtdeContainersInicial: number;\n @Input() progNavios: Schedule;\n @Input() qtdeHorasAgendamentoPA: number;\n @Input() qtdeMinHorasAgend: number;\n @Input() feriados: Feriado[];\n\n telefoneAgendaColeta: string = '';\n //telefoneAgendaColetaBKP: string = '';\n //contatoBKP: string = '';\n primeiraVezNaAba: boolean = true;\n dataMinima: Date;\n\n mascaraCep = [/[0-9]/, /[0-9]/, /[0-9]/, /[0-9]/, /[0-9]/, \"-\", /[0-9]/, /[0-9]/, /[0-9]/];\n public dadosAba3: DadosAba3;\n public permiteEditarEndereco: boolean;\n public listaDeEnderecos: Endereco[] = [];\n public enderecoSelecionado: Endereco;\n\n public carregarProposta(proposta: PropostaComercial, mantemAgendamentos: boolean){\n this.primeiraVezNaAba = true;\n this.dadosAba3 = new DadosAba3();\n this.listaAgendamento.ConfiguraProposta(this.booking, proposta, mantemAgendamentos);\n }\n\n public CarregaEndereco() {\n if (!this.primeiraVezNaAba)\n return;\n this.primeiraVezNaAba = false;\n this.dataMinima = this._shared.CalculaDataMinimaAgendamento(this.feriados, new Date(), this.qtdeMinHorasAgend);\n\n //console.log(this.booking.Embarcador);\n var agendamentos = this.booking.AgendamentosDeColeta;\n if (!this.listaDeEnderecos || this.listaDeEnderecos.length == 0)\n this.listaDeEnderecos = (!this.booking.Embarcador || !this.booking.Embarcador.Enderecos) ? null : this.booking.Embarcador.Enderecos;\n\n //Caso existam agendamentos prévios, carrega na aba os dados do\n //primeiro agendamento, senão carrega os dados da proposta\n var existe = ((agendamentos != undefined) && (agendamentos.filter(a => a.numAgendamento != 0).length > 0));\n this.permiteEditarEndereco = (!existe && (this.edicaoBooking || this.novoBooking));\n if (existe){ //exibe dados vindos do agendamento salvo no ecargo\n this.dadosAba3.cep = agendamentos[0].cepCol;\n this.dadosAba3.logradouro = agendamentos[0].logradouroCol;\n this.dadosAba3.numero = agendamentos[0].numeroEndCol;\n this.dadosAba3.complemento = agendamentos[0].complementoCol;\n this.dadosAba3.bairro = agendamentos[0].bairroCol;\n this.dadosAba3.idMunicipio = agendamentos[0].idMunicipioCol;\n this.dadosAba3.municipio = agendamentos[0].municipioCol.trim();\n this.dadosAba3.uf = agendamentos[0].ufCol;\n this.dadosAba3.contato = agendamentos[0].contatoCol;\n this.dadosAba3.ddd = agendamentos[0].dddCol;\n this.dadosAba3.telefone = agendamentos[0].foneCol;\n this.dadosAba3.observacoes = agendamentos[0].observacao;\n this.telefoneAgendaColeta = agendamentos[0].dddCol+agendamentos[0].foneCol;\n }\n else {\n this.dadosAba3.idMunicipio = this.booking.idMunicOri;\n this.dadosAba3.municipio = this.booking.municOri.trim();\n this.dadosAba3.uf = this.booking.ufMunicOri;\n\n //se for da mesma cidade do embarcador, copia os dados\n var mesmaCidade = (this.booking.idMunicOri == this.booking.idMunicEmb);\n\n this.dadosAba3.cep = (this.dadosAba3.cep) ? this.dadosAba3.cep : mesmaCidade ? this.booking.cepEmb : '';\n this.dadosAba3.logradouro = (this.dadosAba3.logradouro) ? this.dadosAba3.logradouro : mesmaCidade ? this.booking.logradouroEmb : '';\n this.dadosAba3.numero = (this.dadosAba3.numero) ? this.dadosAba3.numero : mesmaCidade ? this.booking.numeroEndEmb : '';\n this.dadosAba3.complemento = (this.dadosAba3.complemento) ? this.dadosAba3.complemento : mesmaCidade ? this.booking.complementoEmb : '';\n this.dadosAba3.bairro = (this.dadosAba3.bairro) ? this.dadosAba3.bairro : mesmaCidade ? this.booking.bairroEmb : '';\n this.telefoneAgendaColeta = (this.telefoneAgendaColeta) ? this.telefoneAgendaColeta : mesmaCidade ? this.booking.telefoneEmbarcadorComDDD : '';\n this.dadosAba3.observacoes = (this.dadosAba3.observacoes) ? this.dadosAba3.observacoes : '';\n this.dadosAba3.contato = this.booking.contatoEmb;\n this.dadosAba3.ddd = this.booking.dddEmb;\n this.dadosAba3.telefone = this.booking.foneEmb;\n this.telefoneAgendaColeta = this.booking.dddEmb + this.booking.foneEmb;\n }\n this.enderecoSelecionado = new Endereco();\n this.enderecoSelecionado.CEP = this.dadosAba3.cep;\n this.enderecoSelecionado.Bairro = this.dadosAba3.bairro;\n this.enderecoSelecionado.Complemento = this.dadosAba3.complemento;\n this.enderecoSelecionado.IdMunicipio = this.dadosAba3.idMunicipio;\n this.enderecoSelecionado.Logradouro = this.dadosAba3.logradouro;\n this.enderecoSelecionado.Municipio = this.dadosAba3.municipio;\n this.enderecoSelecionado.Numero = this.dadosAba3.numero;\n this.enderecoSelecionado.UF = this.dadosAba3.uf;\n\n this.enderecoColeta.carregaEnderecos(this.enderecoSelecionado, this.listaDeEnderecos);\n }\n\n public CarregarDadosAgendamentos(){\n if (this.booking.AgendamentosDeColeta == undefined)\n return;\n\n this.booking.AgendamentosDeColeta.filter(a => a.numAgendamento == 0).forEach(agendamento => {\n // Carrega os dados da aba em todos os agendamentos\n var endAgend = this.enderecoColeta.obtemEndereco();\n\n endAgend.CEP = endAgend.CEP + '';\n\n agendamento.cepCol = (endAgend && endAgend.CEP) ? endAgend.CEP.replace('-', '') : this.dadosAba3.cep.replace('-', '');\n agendamento.logradouroCol = (endAgend) ? endAgend.Logradouro : this.dadosAba3.logradouro;\n agendamento.numeroEndCol = (endAgend) ? endAgend.Numero : this.dadosAba3.numero;\n agendamento.complementoCol = (endAgend) ? endAgend.Complemento : this.dadosAba3.complemento;\n agendamento.bairroCol = (endAgend) ? endAgend.Bairro : this.dadosAba3.bairro;\n agendamento.municipioCol = (endAgend) ? endAgend.Municipio : this.dadosAba3.municipio;\n agendamento.idMunicipioCol = (endAgend) ? endAgend.IdMunicipio : this.dadosAba3.idMunicipio;\n agendamento.contatoCol = this.dadosAba3.contato;\n agendamento.dddCol = this.dadosAba3.ddd;\n agendamento.foneCol = this.dadosAba3.telefone;\n agendamento.observacao = this.dadosAba3.observacoes;\n agendamento.ufCol = (endAgend) ? endAgend.UF : this.dadosAba3.uf;\n agendamento.idUsuario = this._appService.UsuarioLogado.UsuarioIDeCargo;\n agendamento.categoriaContainer = this.booking.categoriaContainer;\n agendamento.cnpjEmb = this.booking.cnpjEmb;\n agendamento.ieEmb = this.booking.ieEmb;\n agendamento.nomeEmb = this.booking.nomeEmb ? this.booking.nomeEmb : this.booking.nomeEmbarcador;\n agendamento.qtdeContainer = this.booking.qtdeContainer;\n agendamento.tamanhoContainer = this.booking.tamanhoContainer;\n\n // Configura o campo 'dataColeta'\n this.ConfigurarDataColeta(agendamento);\n });\n }\n\n public cancelarAdicionarNovo() {\n this.primeiraVezNaAba = true;\n this.enderecoColeta.novo = false;\n this.enderecoColeta.indexSelecionado = -1;\n this.CarregaEndereco();\n //this.dadosAba3.contato = this.contatoBKP;\n //this.telefoneAgendaColeta = this.telefoneAgendaColetaBKP;\n }\n\n public ConfigurarDataColeta(agendamento: AgendamentoColeta){\n // Se a data selecionada for nula ou inválida, retorna nulo\n if ((agendamento == undefined) ||\n (agendamento.dataSelecionada == undefined) ||\n !this._datepickerService.IsValid(agendamento.dataSelecionada, \"DD/MM/YYYY\") ||\n (!agendamento.horaColeta)) {\n\n agendamento.dataSelecionada = new DateModel();\n agendamento.dataSelecionada = DateExtensions.toDateModel(this.dataMinima, \"DD/MM/YYYY\");\n return;\n }\n\n // Configura o campo 'dataColeta' baseado na data seleiconada\n // no DatePicker e na hora informada no input\n agendamento.dataColeta = this._datepickerService.ObtemDataHora(agendamento.dataSelecionada, agendamento.horaColeta);\n }\n\n public ValidarStep(): string[]{\n var mensagens: string[] = [];\n var campos: string[] = [];\n var dataDeadline: Date;\n\n if (this.progNavios) {\n dataDeadline = this._shared.corrigeData(this.progNavios.dhDeadlineEntregaEmbarque);\n } else {\n if (this.booking.DataDeadlineEntregaEmb && (this.edicaoBooking || this.novoBooking))\n dataDeadline = this.booking.DataDeadlineEntregaEmb; //this._shared.corrigeData(this.booking.DataDeadlineEntregaEmb);\n }\n\n var endAgend = this.enderecoColeta.obtemEndereco();\n //console.log(endAgend);\n\n //Verifica campos obrigatórios da aba\n if (!endAgend.CEP) campos.push(\"Cep\");\n if (!endAgend.Logradouro) campos.push(\"Logradouro\");\n if (!endAgend.Numero) campos.push(\"Número\");\n if (!endAgend.Bairro) campos.push(\"Bairro\");\n if (!endAgend.Municipio) campos.push(\"Município\");\n if (!this.telefoneAgendaColeta) campos.push(\"Telefone\");\n if (!this.dadosAba3.contato) campos.push(\"Contato\");\n\n //Informa os campos obrigatórios não preenchidos, se houver\n if (campos.length > 0)\n mensagens.push(\"Campos obrigatórios: \" + campos.join(\", \"));\n\n if (!this._shared.validaTelefone(this.telefoneAgendaColeta))\n mensagens.push(\"Telefone inválido\");\n else\n this.formataTelefoneEnderecoAgendaColeta(this.telefoneAgendaColeta);\n\n var i = 0;\n var dataPrimeiraColeta: Date;\n var maiorDataCadastrada: Date;\n var maiorDataNova: Date;\n //console.log('--- booking - agendamento ---');\n //console.log(this.booking);\n //Valida todos os agendamentos\n //console.log(this.progNavios);\n this.booking.AgendamentosDeColeta.forEach(agendamento => {\n\n //Carrega a data do agendamento e flag de novo agendamento\n var agendamentoNovo = (agendamento.numAgendamento == 0);\n var data: Date = agendamentoNovo ? this._datepickerService.ObtemData(agendamento.dataSelecionada) : agendamento.dataColeta;\n var dataAgendamento = this._datepickerService.ObtemDataHora2(data, agendamento.horaColeta);\n\n //Armazena a data do primeiro agendamento\n if (i == 0)\n dataPrimeiraColeta = dataAgendamento;\n\n //Valida campos obrigatórios do agendamento\n campos = [];\n if (agendamentoNovo && !agendamento.peso) campos.push(\"Peso da Carga\");\n if (agendamentoNovo && !agendamento.valMercadoria) campos.push(\"Valor da Carga\");\n if (!agendamento.horaColeta) campos.push(\"Hora da coleta\");\n //if (!agendamento.peso) campos.push(\"Horário\");\n\n //Informa os campos obrigatórios não preenchidos, se houver\n i++;\n if (campos.length > 0)\n mensagens.push(\"Agendamento #\" + i + \", campos obrigatórios: \" + campos.join(\", \"));\n\n //Informa se a data digitada for nula ou inválida\n if (agendamentoNovo && ((agendamento.dataSelecionada == undefined) || (!this._datepickerService.IsValid(agendamento.dataSelecionada, \"DD/MM/YYYY\"))))\n mensagens.push(\"Agendamento #\" + i + \", Data da coleta inválida\");\n\n //if (!this.novoBooking && (this.booking.DataPrevChegadaOri != undefined) && (dataAgendamento.getTime() > this.booking.DataPrevChegadaOri.getTime()))\n // mensagens.push(\"Agendamento #\" + i + \", Data superior a data de Deadline\");\n\n //var dataMinima = this._shared.CalculaDataMinimaAgendamento(this.feriados, new Date(), this.qtdeMinHorasAgend);\n var msgQtdMin = '';\n if (agendamentoNovo && (this.novoBooking || this.edicaoBooking) && dataAgendamento.getTime() < this.dataMinima.getTime())\n msgQtdMin = \"Agendamento #\" + i + \", A coleta deve ser agendada com \" + this.qtdeMinHorasAgend + \" horas de antecedência (respeitando finais de semana e feriados). Data/hora no agendamento deve ser superior a \" + this.dataMinima.toLocaleString() + \".\";\n //msgQtdMin = \"Agendamento #\" + i + \", A coleta deve ser agendada respeitando \" + this.qtdeMinHorasAgend + \" horas da data atual. Data/hora no agendamento deve ser superior a \" + dataMinima.toLocaleString() + \".\";\n\n //Verifica se data do agendamento é feriado ou final de semana\n //if (agendamentoNovo && this._shared.isFeriadoFds(this.feriados, dataAgendamento))\n // mensagens.push(\"Agendamento #\" + i + \", A coleta deve ser realizada em dias úteis. O dia \" + dataAgendamento.toLocaleString() + \" é um final de semana ou feriado!\");\n\n if (agendamentoNovo && dataDeadline) {\n var dataRef = this._shared.addHours(dataDeadline, -this.qtdeHorasAgendamentoPA);\n var hoje = new Date();\n if (hoje.getTime() >= dataRef.getTime())\n mensagens.push(\"Agendamento #\" + i + \", Não é possível fazer agendamentos de coleta para esse navio/viagem pois a data atual ultrapassa o limite de \" + this.qtdeHorasAgendamentoPA + \" horas de antecedência do deadline.\");\n else {\n //se tem mensagem de quantidade mínima de dias, pode mostrar\n if (msgQtdMin != '')\n mensagens.push(msgQtdMin);\n\n if ((this.novoBooking || this.edicaoBooking) && dataAgendamento.getTime() > dataRef.getTime())\n mensagens.push(\"Agendamento #\" + i + \", A coleta deve ser agendada com \" + this.qtdeHorasAgendamentoPA + \" horas de antecedência (respeitando finais de semana e feriados). Data/Hora no agendamento deve ser inferior a \" + dataRef.toLocaleString() + \".\");\n }\n }\n else if (msgQtdMin != '')\n //se tem mensagem de quantidade mínima de dias, pode mostrar\n mensagens.push(msgQtdMin);\n\n });\n\n //if ((maiorDataNova != undefined) && (maiorDataCadastrada != undefined) && (maiorDataNova.getTime() > maiorDataCadastrada.getTime()))\n // mensagens.push(\"Não é permitido cadastrar uma nova coleta em data e horário superior as coletas já cadastradas\");\n\n return mensagens;\n }\n\n formataTelefoneEnderecoAgendaColeta(telefone: string): void {\n if (telefone) {\n telefone = telefone.replace(/\\D/g, '');\n if (telefone && telefone.length > 9) {\n this.dadosAba3.ddd = this._shared.obtemDDDdoTelefone(telefone);\n this.dadosAba3.telefone = this._shared.obtemTelefoneSemDDD(telefone);\n }\n }\n }\n\n houveAlteracaoContainers(): boolean {\n return this.booking.qtdeContainer > this.qtdeContainersInicial;\n }\n\n exibirAdicionarNovo() {\n this.enderecoColeta.novo = true;\n this.enderecoColeta.permiteEditarEndereco = true;\n\n this.enderecoColeta.endereco = new Endereco();\n this.enderecoColeta.endereco.Municipio = this.dadosAba3.municipio;\n this.enderecoColeta.endereco.UF = this.dadosAba3.uf;\n this.enderecoColeta.endereco.IdMunicipio = this.dadosAba3.idMunicipio;\n\n //this.contatoBKP = this.dadosAba3.contato;\n //this.telefoneAgendaColetaBKP = this.telefoneAgendaColeta;\n\n //this.telefoneAgendaColeta = '';\n //this.dadosAba3.contato = '';\n }\n}\n","import { Component, OnInit, Input, ViewChild } from '@angular/core';\n\nimport { SharedService } from './../../../../_services/shared.service';\nimport { MessageService } from './../../../../_services/message.service';\nimport { DatepickerService } from 'app/_services/datepicker.service';\nimport { UploadArquivoService } from 'app/_services/upload-arquivo.service';\n\nimport { Feriado } from 'app/_models/feriado';\nimport { Booking } from 'app/_models/booking';\nimport { Schedule } from './../../../../_models/schedule';\nimport { AlteracoesArquivoUpload } from 'app/_models/alteracoes-arquivo-upload';\n\nimport { DateModel } from \"app/shared/ng2-datepicker/ng2-datepicker.component\";\nimport { BaseComponent } from './../../../../shared/base.component';\nimport { DatePickerOptions } from \"app/shared/ng2-datepicker/ng2-datepicker.component\";\n\nimport { Operacao } from 'app/_enums/operacao';\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\nimport { UploadArquivosComponent } from 'app/shared/uploadarquivos/uploadarquivos.component';\nimport { BuscaViagensBookingViewModel } from 'app/_models/busca-viagens-booking';\nimport { BookingService } from 'app/_services/booking.service';\n\n@Component({\n selector: 'step4-dados-reserva',\n templateUrl: './step4-dados-reserva.component.html',\n styleUrls: ['./step4-dados-reserva.component.scss']\n})\nexport class Step4DadosReservaComponent extends BaseComponent implements OnInit {\n\n @Input() novoBooking: boolean;\n @Input() booking: Booking;\n @Input() progNavios: Schedule;\n @Input() feriados: Feriado[];\n @Input() qtdeHorasAgendamentoPA: number;\n @Input() qtdeHorasAgendamentoPO: number;\n\n @ViewChild(UploadArquivosComponent, {static: true}) uploadarquivos: UploadArquivosComponent;\n\n tipoPeriodo: string;\n selectedDate: DateModel;\n options: DatePickerOptions;\n programacao: Schedule[] = [];\n idViagemSelecionada: number;\n programacaoSelecionada: Schedule;\n loadingNavios: boolean = false;\n abaCarregada: boolean = false;\n bloqueia: boolean = false;\n uploading: boolean = false;\n isBookingSaved: boolean = false;\n\n\n constructor(private _bookingService: BookingService,\n private _sharedService: SharedService,\n private _msgService: MessageService,\n private _datePickerService: DatepickerService,\n private _uploadService: UploadArquivoService) {\n super();\n this.tipoPeriodo = 'embarque';\n this.options = _datePickerService.GenerateOptionsConfig(new Date());\n }\n\n ngOnInit() {\n this.bloqueia = (this.progNavios != undefined);\n }\n\n public BuscaViagens() {\n\n if (this.isBookingSaved)\n return;\n\n this.idViagemSelecionada = null;\n this.programacaoSelecionada = null;\n this.programacao = [];\n\n var request = new BuscaViagensBookingViewModel();\n request.Modal = this.booking.modal;\n request.IdPortoOrigem = this.booking.idPortoOri;\n request.IdPortoDestino = this.booking.idPortoDes;\n request.DataReferencia = (this.booking.oriPorto) ? this._sharedService.CalculaProximoDiaUtil(this.feriados, new Date(), this.qtdeHorasAgendamentoPO) : this.getMaiorData();\n request.TipoPeriodo = this.tipoPeriodo;\n if (this.selectedDate)\n request.DataSelecionada = this.selectedDate.momentObj.toDate();\n\n this.loadingNavios = true;\n this._bookingService.buscaViagens(request)\n .subscribe(p => {\n if (p != null) {\n this.programacao = p;\n if ((this.programacao == undefined) || (this.programacao.length == 0)) {\n var msg = (this.booking.oriPorto) ? \"Não existem navios de embarque disponíveis com o período e data informados\" :\n 'Não foram encontradas viagens com as datas de agendamento informadas.';\n this._msgService.addMessage('Booking', msg, 'error', LogFrontFuncionalidade.Booking, Operacao.Consulta, this.booking);\n }\n }\n\n if ((this.programacao != undefined) && (this.programacao.length > 0))\n this.idViagemSelecionada = this.programacao[0].idViagemNavio;\n\n this.loadingNavios = false;\n this.abaCarregada = true;\n this.ExibeDataViagem();\n });\n }\n\n ExibeDataViagem() {\n if (this.programacao != undefined && this.programacao.length > 0) {\n this.programacaoSelecionada = this.programacao.find(p => p.idViagemNavio == this.idViagemSelecionada && p.idPortoOrigem == this.booking.idPortoOri && p.idPortoDestino == this.booking.idPortoDes);\n this.booking.idViagemNavio = this.idViagemSelecionada;\n this.booking.idNavioViagem = this.idViagemSelecionada;\n this.booking.idPortoTransbordo = this.programacaoSelecionada.idPortoTransbordo;\n this.booking.idNavioTransbordo = this.programacaoSelecionada.idNavioTransbordo;\n\n this.booking.dhDeadlineEntregaEmbarque = this.programacaoSelecionada.dhDeadlineEntregaEmbarque;\n\n this.booking.strDataDeadlineEntregaEmb = this.programacaoSelecionada.strDeadlineEntregaEmbarque;\n\n this.booking.Transbordos = this.programacaoSelecionada.Transbordos;\n }\n }\n\n CarregaViagemBooking(booking: Booking){\n this.programacaoSelecionada = new Schedule();\n this.programacaoSelecionada.dhPrevChegadaPortoOrigem = booking.DataPrevChegadaOri;\n this.programacaoSelecionada.dhPrevChegadaPortoDestino = booking.DataPrevChegadaDes;\n this.programacaoSelecionada.dhDeadlineEntregaEmbarque = booking.DataDeadlineEntregaEmb;\n this.programacaoSelecionada.strPrevChegadaPortoOrigem = booking.strDataPrevChegadaOri;\n this.programacaoSelecionada.strPrevChegadaPortoDestino = booking.strDataPrevChegadaDes;\n this.programacaoSelecionada.strDeadlineEntregaEmbarque = booking.strDataDeadlineEntregaEmb;\n this.programacaoSelecionada.Transbordos = booking.Transbordos;\n }\n\n getMaiorData(): Date {\n let value: string = 'dataColeta';\n if ((this.booking.AgendamentosDeColeta != null) && (this.booking.AgendamentosDeColeta != undefined)) {\n var array = this.booking.AgendamentosDeColeta.sort(function (a, b) {\n if (!value) {\n return a > b ? 1 : -1;\n }\n return a[value] > b[value] ? 1 : -1;\n });\n\n const dataColeta = array[array.length - 1].dataColeta;\n\n if (dataColeta) {\n return this._sharedService.CalculaDataMinimaAgendamento(this.feriados, dataColeta, this.qtdeHorasAgendamentoPA);\n }\n }\n return new Date();\n }\n\n get permiteUploadOOG(): boolean{\n return this.booking.cargaOver && (this.novoBooking || (!this.novoBooking && (this.booking.statusBooking.toLowerCase().indexOf('pendente') > 0)));\n }\n\n get permiteUploadIMO(): boolean{\n return this.booking.cargaPerigosa && (this.novoBooking || (!this.novoBooking && (this.booking.statusBooking.toLowerCase().indexOf('pendente') > 0)));\n }\n\n get permiteUploadCliente(): boolean{\n return this.booking.pagtoAVista && (this.novoBooking || (!this.novoBooking && (this.booking.statusBooking.toLowerCase().indexOf('pendente') > 0)));\n }\n\n salvarAlteracoesUpload(alteracoes: AlteracoesArquivoUpload, tipo: string){\n this.uploading = true;\n this._uploadService.salvarAlteracoesUpload(alteracoes, 'booking', tipo, Number(this.booking.numBooking))\n .subscribe(result => {\n this.uploading = false;\n if (!result.IsValid){\n this._msgService.addMessageRedirect('Booking', 'Upload do Booking ' + Number(this.booking.numBooking) + ' concluído com sucesso!', 'success');\n this.uploadarquivos.marcarAlteracoesComoSalvas();\n }\n else {\n this._msgService.addMessageRedirect('Booking', 'Booking ' + Number(this.booking.numBooking) + ' gerado com sucesso, mas os anexos não foram incluídos. Por favor, tente anexar os documentos novamente!',\n 'error', LogFrontFuncionalidade.Booking, Operacao.Upload, alteracoes);\n }\n });\n }\n\n get exibeComboViagens(): boolean {\n return (!this.programacao) || this.programacao.length > 1;\n }\n\n get descricaoNavioViagemProgramacao(): string {\n return (this.programacao) && this.programacao.length >= 1 ? this.programacao[0].descNavioViagem : '';\n }\n}\n","import { NgIf } from '@angular/common';\nimport { TipoContainer } from './../../../../_models/tipo-container';\nimport { Anel } from 'app/_models/anel';\nimport { Subscription } from 'rxjs';\nimport { Component, Input, Output, EventEmitter, OnInit, ViewChild, NgModule } from '@angular/core';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\nimport { MessageService } from '../../../../_services/message.service';\nimport { MessageComponent } from '../../../../shared/message/message.component';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { Booking } from 'app/_models/booking';\nimport { Cliente } from \"app/_models/cliente\";\n\nimport { AppService } from 'app/_services/app.service';\nimport { SharedService } from '../../../../_services/shared.service';\n\nimport swal from 'sweetalert2';\nimport { BaseComponent } from '../../../../shared/base.component';\nimport { EnderecoComponent } from 'app/shared/endereco/endereco.component';\nimport { Feriado } from 'app/_models/feriado';\n\n\n\n//Remmen Cardoso\nimport { ListItem } from '../../../../_models/listItem';//Remmen Cardoso\nimport { DataService } from './../../../../_services/data.service';\nimport { ClienteClassificacao } from 'app/_models/cliente-classificacao';\nimport { TipoPagamento } from 'app/_models/tipo-pagamento';\nimport { TipoServico } from 'app/_models/tipo-servico';\nimport { InfoPgtoAdicional } from '../../../../_models/InfoPgtoAdicional';\nimport { AnelRotaService } from '../../../../_services/anel-rota.service';\nimport { InfoPgtoAdicionalService } from '../../../../_services/info-pgto-adicional.service';\nimport { GenericOrderbyService } from './../../../../_services/generic-orderby.service';\nimport { PropostaComercialFiltro } from './../../../../_models/proposta-comercial-filtro';\nimport { PropostaComercial } from './../../../../_models/proposta-comercial';\n\n\nimport { Alert } from 'selenium-webdriver';\nimport { Console } from 'console';\nimport { Parser } from '@angular/compiler';\n\nimport jsPDF from 'jspdf';\nimport html2canvas from 'html2canvas';\nimport \"jspdf/dist/polyfills.es.js\";\nimport { FALSE } from 'sass';\nimport { BookingShippingService } from 'app/_services/booking-shipping.service';\nimport { BookingShippingRequest } from 'app/_models/booking-shipping-request';\nimport * as moment from 'moment/moment';\nimport 'moment/locale/pt-br';\nimport { DateModel } from 'app/shared/ng2-datepicker/ng2-datepicker.component';\nimport { DatepickerService } from 'app/_services/datepicker.service';\nimport { DateExtensions } from 'app/shared/extensions/extensions.module';\nimport { SporadicTaxItem } from 'app/_models/SporadicTaxItem';\nimport { BookingShippingResponse } from 'app/_models/booking-shipping-response';\n\nimport { forEach } from 'jszip';\nimport { ImpresaoPixPdf } from '../../relatorios/ImpresaoPixPdf';\nimport { IDateModel } from '../../../../shared/ng2-datepicker/ng2-datepicker.component';\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\nimport { Operacao } from 'app/_enums/operacao';\nimport { BaseService } from 'app/_services/base.service';\n\n\n@Component({\n selector: 'step5-informacao-pgto',\n templateUrl: './step5-informacao-pgto.component.html',\n styleUrls: ['./step5-informacao-pgto.component.scss'],\n})\n\nexport class Step5InformacaoPagtoComponent extends BaseComponent implements OnInit {\n\n @Input() novoBooking: boolean;\n @Input() edicaoBooking: boolean;\n @Input() booking: Booking;\n @Input() duplicar: boolean;\n @Input() loadingProposta: boolean = false;\n @Input() feriados: Feriado[];\n @Input() propostaComercial: PropostaComercial;\n\n @Output() newItemEvent: EventEmitter = new EventEmitter();\n\n\n @ViewChild(EnderecoComponent, { static: true }) endereco: EnderecoComponent;\n\n cliente: Cliente;\n loadingClientes: boolean = false;\n\n\n //Remmen Cardoso\n public loading: boolean = false;\n public isCalculando: boolean = false;\n isInstantPaymentPendente = false;\n isDuplicating: boolean;\n\n clienteClassificacoes: ListItem[] = new Array();\n tiposPagamentos: ListItem[] = new Array();\n tiposServicos: TipoServico[] = new Array();\n tipoContainers: TipoContainer[] = [];\n tamanhoContainer: string;\n fontSize: number = 12;\n objHeight: number = 0;\n objX: number = 0;\n objY: number = 0;\n objYTemp: number = 0;\n\n\n clienteClassificacao: ClienteClassificacao = new ClienteClassificacao();\n tipoPagamento: TipoPagamento = new TipoPagamento();\n tipoServico: TipoServico = new TipoServico();\n txtQrCode: string = '';\n imgAliancaHeader: string = './../../../../../assets/img/Alianca-Logo.jpeg';\n imgFundoCinza: string = './../../../../../assets/img/alianca-fundo-cinza.jpeg';\n imgPix: string = './../../../../../assets/img/pix.png';\n imagePixBytes: any;\n\n infoPgtoAdicional: InfoPgtoAdicional = new InfoPgtoAdicional();\n propostaFiltro: PropostaComercialFiltro = new PropostaComercialFiltro();\n propostasFiltradas: PropostaComercial[] = [];\n todosTipoContainers: TipoContainer[] = [];\n\n\n\n descTipoServico: string = '';\n descClassificacaoCliente: string = '';\n descTipoPagamento: string = '';\n vlrTotalDeposito: number = 0;\n public isPgtoGravadoNaBase: boolean = false;\n vlrTotalNfTmp: number = 0;\n taxasAdicionaisText: string = '';\n\n\n //Dados Para Deposito\n cnpj: string = '02.427.026/0001-46';\n bancoNome: string = 'JP MORGAN';\n bancoNumero: string = '376';\n agencia: string = '0001';\n contaDeposito: string = '104447-6';\n\n localOrigem: string = '';\n localDestino: string = '';\n rotuloOrigem: string = '';\n rotuloDestino: string = '';\n rotuloData: string = '';\n ufPagador: string = '';\n isHabilitaBotaoCalcular: boolean = false;\n qtdeContainer: number = 0;\n dataBaseCalculo: string;\n\n\n\n constructor(\n private _baseService: BaseService,\n private _sharedService: SharedService,\n private _appService: AppService,\n private _sanitizer: DomSanitizer,\n private _dataService: DataService,\n private _msgService: MessageService,\n private _datepickerService: DatepickerService,\n private _infoPgtoAdicionalService: InfoPgtoAdicionalService,\n private _genericOrderbyService: GenericOrderbyService,\n private impressaoPixPdf: ImpresaoPixPdf,\n private _bookingShippingService: BookingShippingService) {\n super();\n }\n\n ngOnInit(): void {\n this.ObterDataFields();\n this.AjustarValores();\n\n this.onLoadInfoPgtoAdicional(this.booking.numBooking);\n\n }\n\n autocompleListFormatter = (data: any) => {\n let html = `${data.Descricao}/${data.UF}`;\n return this._sanitizer.bypassSecurityTrustHtml(html);\n //return html;\n }\n\n\n\n //Remmen Cardoso\n AjustarValores() {\n this.infoPgtoAdicional.descIndicador = this.txtQrCode;\n\n //Frete Negociado\n this.infoPgtoAdicional.vlrFreteNegociado = this.booking.proposta.valFreteOTM;\n this.tamanhoContainer = this.booking.proposta.tipoDeContainer.Descricao;\n\n if (this.booking.proposta.adValorem) {\n this.infoPgtoAdicional.percAdValorem = 0;\n }\n else {\n this.infoPgtoAdicional.percAdValorem = this.booking.proposta.adValorem;\n }\n }\n\n ObterDataFields() {\n this._dataService.getClienteClassificacao()\n .subscribe(lista => {\n this.clienteClassificacoes = lista;\n });\n\n this._dataService.getTipoPagamento()\n .subscribe(lista => {\n this.tiposPagamentos = lista;\n });\n\n this._dataService.getTipoServico()\n .subscribe(lista => {\n this.tiposServicos = lista;\n });\n\n }\n\n propostaAlterada(proposta: PropostaComercial) {\n if (!proposta)\n return;\n\n this.propostaComercial = proposta;\n\n }\n\n setTipoPagamento() {\n this.tipoPagamento = this.tiposPagamentos[this.infoPgtoAdicional.idTipoPagto];\n }\n\n setClassificacaoCliente() {\n this.clienteClassificacao = this.clienteClassificacoes[this.infoPgtoAdicional.idClassificacaoCli];\n }\n\n setTipoServico() {\n this.tipoServico = this.tiposServicos[this.infoPgtoAdicional.idTipoServico];\n }\n\n\n atualizaStatus(infoService: InfoPgtoAdicionalService, numBooking: string) {\n const onSaveButtonBTN = document.getElementById('onSaveButtonBTN') as HTMLButtonElement;\n onSaveButtonBTN.style.width = '350px';\n\n var timeleft = 120;\n var downloadTimer = setInterval(function () {\n if (timeleft <= 0) {\n clearInterval(downloadTimer);\n\n if (onSaveButtonBTN.textContent != 'Transação PIX confirmada.')\n onSaveButtonBTN.textContent = 'Tempo expirado.';\n\n } else {\n\n timeleft--;\n\n onSaveButtonBTN.textContent = 'TEMPO REST CONF. PIX (' + timeleft + ')';\n\n if ((timeleft % 5) === 0) {\n infoService.getInfoPgtoAdicionalByNumBooking(numBooking)\n .subscribe(result => {\n\n if (result.paymentStatus === 'COMPLETED') {\n onSaveButtonBTN.textContent = 'Transação PIX confirmada.';\n timeleft = 0;\n }\n else {\n console.log('Consultando status.');\n }\n });\n }\n\n }\n\n }, 1000);\n\n }\n\n\n public onLoadInfoPgtoAdicional(numBooking: string) {\n if (this.booking.modal.startsWith('PO')) {\n this.localOrigem = this.booking.proposta?.nomePortoOrigem + '/' + this.booking.proposta?.ufPortoOrigem;\n this.rotuloOrigem = 'PORTO DE ORIGEM';\n this.rotuloData = 'DIA DDL DOCUMENTAÇÃO';\n }\n else {\n this.localOrigem = this.booking.proposta?.municOrigem + '/' + this.booking.proposta?.ufOrigem;\n this.rotuloOrigem = 'CIDADE DE ORIGEM';\n this.rotuloData = 'DATA DA COLETA';\n }\n\n\n if (this.booking.modal.endsWith('PO')) {\n this.localDestino = this.booking.proposta.nomePortoDestino + '/' + this.booking.proposta.ufPortoDestino;\n this.rotuloDestino = 'PORTO DE DESTINO';\n }\n else {\n this.localDestino = this.booking.proposta.municDestino + '/' + this.booking.ufDes;\n this.rotuloDestino = 'CIDADE DE DESTINO';\n }\n\n const modal = this.booking.modal.split(\"/\");\n this.infoPgtoAdicional.origemModalId = modal[0];\n this.infoPgtoAdicional.destinoModalId = modal[1];\n this.qtdeContainer = this.booking.qtdeContainer;\n\n this.ObterDataFields(); \n\n\n if (numBooking == undefined || numBooking.trim().length == 0)\n return;\n\n\n\n this._infoPgtoAdicionalService.getInfoPgtoAdicionalByNumBooking(numBooking)\n .subscribe(infoPgtoAdicional => {\n\n console.log(infoPgtoAdicional);\n\n if (infoPgtoAdicional == undefined || infoPgtoAdicional == null ) {\n this.isPgtoGravadoNaBase = false;\n \n infoPgtoAdicional.vlrTotalNota = 0;\n infoPgtoAdicional.percAdValorem = 0;\n infoPgtoAdicional.vlrAdValorem = 0;\n infoPgtoAdicional.percAliquotaIcms = 0;\n infoPgtoAdicional.vlrFreteNegociado = 0;\n infoPgtoAdicional.vlrBaf = 0;\n infoPgtoAdicional.vlrTaxaAdicional = 0;\n infoPgtoAdicional.vlrIcms = 0;\n infoPgtoAdicional.dataBaseCalculo\n }\n else {\n this.isPgtoGravadoNaBase = true;\n const txtVlrTotalNota = document.getElementById('txtVlrTotalNota') as HTMLButtonElement;\n txtVlrTotalNota.disabled = true;\n\n const tiposPagamentoCbo = document.getElementById('tiposPagamentoCbo') as HTMLButtonElement;\n tiposPagamentoCbo.disabled = true;\n\n const classificacaoClienteCbo = document.getElementById('classificacaoClienteCbo') as HTMLButtonElement;\n classificacaoClienteCbo.disabled = true;\n\n const tiposServicoCbo = document.getElementById('tiposServicoCbo') as HTMLButtonElement;\n tiposServicoCbo.disabled = true;\n\n const ufPagadorFrete = document.getElementById('ufPagadorFrete') as HTMLButtonElement;\n ufPagadorFrete.disabled = true;\n\n\n if (!this.duplicar) {\n infoPgtoAdicional.vlrTotalNota = parseFloat(infoPgtoAdicional.vlrTotalNota.toString().replace(/\\./g, \"\").replace(',', '.'));\n infoPgtoAdicional.percAdValorem = parseFloat(infoPgtoAdicional.percAdValorem.toString().replace(/\\./g, \"\").replace(',', '.'));\n infoPgtoAdicional.vlrAdValorem = parseFloat(infoPgtoAdicional.vlrAdValorem.toString().replace(/\\./g, \"\").replace(',', '.'));\n infoPgtoAdicional.percAliquotaIcms = parseFloat(infoPgtoAdicional.percAliquotaIcms.toString().replace(/\\./g, \"\").replace(',', '.'));\n infoPgtoAdicional.vlrFreteNegociado = parseFloat(infoPgtoAdicional.vlrFreteNegociado.toString().replace(/\\./g, \"\").replace(',', '.'));\n infoPgtoAdicional.vlrBaf = parseFloat(infoPgtoAdicional.vlrBaf.toString().replace(/\\./g, \"\").replace(',', '.'));\n infoPgtoAdicional.vlrTaxaAdicional = parseFloat(infoPgtoAdicional.vlrTaxaAdicional.toString().replace(/\\./g, \"\").replace(',', '.'));\n infoPgtoAdicional.vlrIcms = parseFloat(infoPgtoAdicional.vlrIcms.toString().replace(/\\./g, \"\").replace(',', '.'));\n infoPgtoAdicional.vlrFreteTotal = parseFloat(infoPgtoAdicional.vlrFreteTotal.toString().replace(/\\./g, \"\").replace(',', '.'));\n this.dataBaseCalculo = infoPgtoAdicional.dataBaseCalculo;\n this.infoPgtoAdicional.qrCode = infoPgtoAdicional.qrCode;\n this.txtQrCode = infoPgtoAdicional.descIndicador;\n\n }\n else {\n infoPgtoAdicional.vlrTotalNota = 0;\n infoPgtoAdicional.percAdValorem = 0;\n infoPgtoAdicional.vlrAdValorem = 0;\n infoPgtoAdicional.percAliquotaIcms = 0;\n infoPgtoAdicional.vlrFreteNegociado = 0;\n infoPgtoAdicional.vlrBaf = 0;\n infoPgtoAdicional.vlrTaxaAdicional = 0;\n infoPgtoAdicional.vlrIcms = 0;\n }\n\n\n this.infoPgtoAdicional = infoPgtoAdicional;\n\n console.log(\"Infopgto novo\", this.infoPgtoAdicional);\n\n this.setTipoPagamento();\n this.setClassificacaoCliente();\n this.setTipoServico();\n this.isInstantPaymentPendente = false;\n this.newItemEvent.emit(true);\n }\n });\n }\n\n\n OnChangeClassificacaoCliente(value: any) {\n\n this.descClassificacaoCliente = this.getDescricao(value.target.value, this.clienteClassificacoes);\n\n //this.habilitaBotaoCalcula();\n\n }\n\n\n OnChangeTipoPagamento(value: any) {\n\n this.descTipoPagamento = this.getDescricao(value.target.value, this.tiposPagamentos);\n\n //this.habilitaBotaoCalcula();\n }\n\n\n OnChangeTipoServico(value: any) {\n\n this.descTipoServico = this.getDescricao(value.target.value, this.tiposPagamentos);\n\n //this.habilitaBotaoCalcula();\n }\n\n\n getDescricao(valor: any, lista: any): string {\n let descricao: string = '';\n\n lista.forEach(element => {\n\n if (element.codigo.toString() === valor) {\n descricao = element.descricao;\n }\n\n });\n\n\n return descricao;\n }\n\n\n private ConvertDecimal(valor: any): number {\n if (!valor)\n return valor;\n\n var num = valor.toString();\n num = this._sharedService.replaceAll(valor, '.', '');\n num = num.replace(',', '.');\n return Number(num);\n }\n\n\n private ObterData(dateModel: DateModel, dateOffset: number) {\n return dateModel != undefined\n ? this._datepickerService.ObtemData(dateModel)\n : this._sharedService.addDays(new Date(), dateOffset);\n }\n\n private GetDataUltimoAgendamento(): Date {\n let dataUltimoAgendamento: Date;\n\n let arr = this.booking.AgendamentosDeColeta;\n let maxDate: Date = new Date();\n\n for (let i = 1, len = arr.length; i < len; i++) {\n\n let v = arr[i].dataColeta;\n\n maxDate = (v > maxDate) ? v : maxDate;\n }\n\n return maxDate;\n }\n\n\n public onSaveInfoPgtoAdicional() {\n\n const txtVlrTotalNota = document.getElementById('txtVlrTotalNota') as HTMLButtonElement;\n txtVlrTotalNota.disabled = true;\n\n const tiposPagamentoCbo = document.getElementById('tiposPagamentoCbo') as HTMLButtonElement;\n tiposPagamentoCbo.disabled = true;\n\n const classificacaoClienteCbo = document.getElementById('classificacaoClienteCbo') as HTMLButtonElement;\n classificacaoClienteCbo.disabled = true;\n\n const tiposServicoCbo = document.getElementById('tiposServicoCbo') as HTMLButtonElement;\n tiposServicoCbo.disabled = true;\n\n const ufPagadorFrete = document.getElementById('ufPagadorFrete') as HTMLButtonElement;\n ufPagadorFrete.disabled = true;\n\n if (this.isPgtoGravadoNaBase == true) {\n this.impressaoPixPdf.printPDF(this.booking, this.infoPgtoAdicional);\n }\n else\n {\n this.limpaVariaveis();\n this.habilitaBotaoCalcula();\n\n if(!this.isHabilitaBotaoCalcular)\n {\n txtVlrTotalNota.disabled = false;\n tiposPagamentoCbo.disabled = false;\n classificacaoClienteCbo.disabled = false;\n tiposServicoCbo.disabled = false;\n ufPagadorFrete.disabled = false; \n return;\n }\n \n \n if (!this.validaQuantidade()) {\n txtVlrTotalNota.disabled = false;\n tiposPagamentoCbo.disabled = false;\n classificacaoClienteCbo.disabled = false;\n tiposServicoCbo.disabled = false;\n ufPagadorFrete.disabled = false; \n return;\n }\n\n console.log(\"Caiu na calculadora\");\n\n this.Calculadora();\n\n }\n }\n\n\n private SalvarNaBase(){\n\n this.infoPgtoAdicional.idProposta = this.booking.proposta.idProposta;\n this.infoPgtoAdicional.idBooking = this.booking.numBooking;\n this.infoPgtoAdicional.customerName = this.booking.proposta.nomeCli;\n this.infoPgtoAdicional.cpfCnpj = this.booking.cnpjCli;\n this.infoPgtoAdicional.qdtConteiner = this.booking.qtdeContainer;\n // this.infoPgtoAdicional.containerType = this.booking.tipoDeContainer.Tamanho;\n this.infoPgtoAdicional.createdBy = this._baseService.UsuarioLogado.Nome;\n this.infoPgtoAdicional.cnpjDeposito = this.cnpj.replace('.', '').replace('.', '').replace('/', '').replace('-', '');\n this.infoPgtoAdicional.bancoDeposito = this.bancoNumero;\n this.infoPgtoAdicional.agenciaDeposito = this.agencia;\n this.infoPgtoAdicional.contaDeposito = this.contaDeposito.replace('-', '');\n this.infoPgtoAdicional.dataBaseCalculo = this.dataBaseCalculo;\n\n this.infoPgtoAdicional.updatedBy = '';\n\n \n\n this.loading = true;\n this._infoPgtoAdicionalService.SalvarInfoPgtoAdicional(this.infoPgtoAdicional)\n .subscribe(result => {\n\n this.impressaoPixPdf.printPDF(this.booking, this.infoPgtoAdicional); \n this.isPgtoGravadoNaBase = true;\n this.atualizaStatus(this._infoPgtoAdicionalService, this.infoPgtoAdicional.idBooking); \n this.renderizaImagePIX();\n \n\n \n \n if (result.IsValid) {\n this._msgService.addMessageRedirect('Info Pgto Adicional', result.Message, \"success\");\n }\n else {\n var msgErr: string[] = [];\n result.Erros.forEach(element => msgErr.push(element.Message));\n //this.isPgtoGravadoNaBase = false;\n }\n });\n }\n\n validaQuantidade(): boolean {\n\n if (this.qtdeContainer != this.booking.qtdeContainer) {\n var mensagens: string[] = [];\n\n\n mensagens.push('A quantidade de containers não pode ser alterada. Por favor, corrija-a para: ' + this.qtdeContainer);\n\n\n this._msgService.addMessageArray('Info - PIX ', mensagens, 'error', LogFrontFuncionalidade.Booking, Operacao.Consulta);\n\n return false;\n\n }\n\n\n return true;\n }\n\n\n\n Calculadora() {\n \n if (!this.validaQuantidade()) {\n return;\n }\n\n this.isCalculando = true;\n\n const formato = \"YYYY-MM-dd hh:mm:ss\";\n let bookingShippingRequest: BookingShippingRequest = new BookingShippingRequest;\n let dataTmp: Date;\n\n // Limpar variáveis\n this.limpaVariaveis();\n\n bookingShippingRequest.paymentType = this.infoPgtoAdicional.idTipoPagto.toString();\n bookingShippingRequest.classification = this.infoPgtoAdicional.idClassificacaoCli.toString();\n bookingShippingRequest.serviceType = this.infoPgtoAdicional.idTipoServico.toString();\n bookingShippingRequest.departureUf = this.booking.proposta.ufPortoOrigem;\n bookingShippingRequest.destinationUf = this.booking.proposta.ufPortoDestino;\n bookingShippingRequest.numBooking = this.booking.numBooking;\n\n const modal = this.booking.modal.split(\"/\");\n bookingShippingRequest.originModalId = modal[0];\n bookingShippingRequest.destinationModalId = modal[1];\n\n if (this.propostaComercial.adValorem == null)\n bookingShippingRequest.adValoremRate = 0;\n else\n bookingShippingRequest.adValoremRate = parseFloat(this.propostaComercial.adValorem.toString().replace(/\\./g, \"\").replace(',', '.'));\n\n bookingShippingRequest.containersQuantity = this.booking.qtdeContainer;\n bookingShippingRequest.equipmentSize = this.booking.tamanhoContainer;\n bookingShippingRequest.negotiatedShipping = this.propostaComercial.valFreteOTM;\n bookingShippingRequest.nfTotalAmount = this.infoPgtoAdicional.vlrTotalNota;\n bookingShippingRequest.originPortId = this.booking.idPortoOri;\n bookingShippingRequest.destinationPortId = this.booking.idPortoDes;\n\n console.log(this.dataBaseCalculo);\n\n\n let _dataBaseCalculo = this.dataBaseCalculo.split(\"/\");\n let ano = _dataBaseCalculo[2];\n let mes = _dataBaseCalculo[1];\n let dia = _dataBaseCalculo[0];\n\n bookingShippingRequest.cteIssueDate = ano + '-' + mes + '-' + dia;\n bookingShippingRequest.shipArrivalDate = ano + '-' + mes + '-' + dia;\n\n\n\n this._bookingShippingService.calculate(bookingShippingRequest)\n .subscribe(response => {\n this.isCalculando = false;\n\n let resposta: BookingShippingRequest = response.Data;\n\n this.infoPgtoAdicional.vlrFreteNegociado = parseFloat(resposta.totalShipping.toString().replace(/\\./g, \"\").replace(',', '.'));\n this.infoPgtoAdicional.vlrIcms = parseFloat(resposta.icms.toString().replace(/\\./g, \"\").replace(',', '.'));\n this.infoPgtoAdicional.percAliquotaIcms = parseFloat(resposta.icmsRate.toString().replace(/\\./g, \"\").replace(',', '.'));\n this.infoPgtoAdicional.vlrAdValorem = parseFloat(resposta.adValorem.toString().replace(/\\./g, \"\").replace(',', '.'));\n this.infoPgtoAdicional.vlrFreteTotal = parseFloat(resposta.totalPaymentAmount.toString().replace(/\\./g, \"\").replace(',', '.'));\n\n if (resposta.additionalTaxes == null)\n resposta.additionalTaxes = 0;\n\n this.infoPgtoAdicional.vlrTaxaAdicional = parseFloat(resposta.additionalTaxes.toString().replace(/\\./g, \"\").replace(',', '.'));\n this.infoPgtoAdicional.descIndicador = `${resposta.textoPix}`;\n this.infoPgtoAdicional.vlrBaf = parseFloat(resposta.bafTotalValue.toString().replace(/\\./g, \"\").replace(',', '.'));\n this.txtQrCode = resposta.textoPix;\n this.infoPgtoAdicional.qrCode = resposta.qrCode;\n this.infoPgtoAdicional.customerName = this.booking.proposta.nomeCli;\n this.infoPgtoAdicional.cpfCnpj = this.booking.proposta.cnpjCli;\n\n\n let vlrTotalTaxasAdicionais: number = 0;\n let vlrTotalBunker: number = 0;\n\n resposta.sporadicTaxList.forEach(stl => {\n\n if (this.taxasAdicionaisText.length > 0) {\n this.taxasAdicionaisText = this.taxasAdicionaisText + ','\n }\n\n\n this.taxasAdicionaisText = this.taxasAdicionaisText + stl.descricao + ', \\n';\n\n if (stl.isBunker) {\n vlrTotalBunker = stl.valor;\n }\n else {\n vlrTotalTaxasAdicionais += stl.valor;\n }\n });\n\n this.SalvarNaBase();\n //calculadoraBTN.disabled = false;\n //onSaveButtonBTN.disabled = false;\n });\n }\n\n\n copyInputMessage(inputElement) {\n inputElement.select();\n document.execCommand('copy');\n inputElement.setSelectionRange(0, 0);\n }\n\n copyText() {\n let selBox = document.createElement('textarea');\n selBox.style.position = 'fixed';\n selBox.style.left = '0';\n selBox.style.top = '0';\n selBox.style.opacity = '0';\n selBox.value = this.txtQrCode;\n document.body.appendChild(selBox);\n selBox.focus();\n selBox.select();\n document.execCommand('copy');\n document.body.removeChild(selBox);\n }\n\n displayBox(): void {\n let element: any = document.getElementById('divInfoPpgtoAdicional')\n\n\n let DATA: any = document.getElementById('divInfoPpgtoAdicional');\n\n\n html2canvas(DATA).then((canvas) => {\n let fileWidth = 208;\n let fileHeight = (canvas.height * fileWidth) / canvas.width;\n const FILEURI = canvas.toDataURL('image/png');\n let PDF = new jsPDF('p', 'mm', 'a4');\n let top = 10;\n let position = 30;\n PDF.addImage(FILEURI, 'PNG', top, position, fileWidth, fileHeight);\n PDF.save('angular-demo.pdf');\n });\n\n }\n\n closeBox(): void {\n var element = document.getElementById('impressao')\n element = document.querySelector('.container');\n element.style.visibility = 'hidden';\n }\n\n\n // Busca produtos das propostas filtradas\n private obterTiposContainers(): void {\n //TODO: Adicionar \"(Vazio)\" para quando vier proposta com tipo de contêiner null\n this.tipoContainers = [];\n\n this.todosTipoContainers.forEach(tp => {\n var prop = this.propostasFiltradas.find(p => p.tipoDeContainer.idContainer == tp.idContainer);\n if (prop != null)\n this.tipoContainers.push(tp);\n });\n\n this.tipoContainers = this._genericOrderbyService.ordenarPorCampo(this.tipoContainers, 'Descricao');\n\n if (this.tipoContainers.length == 1)\n this.propostaFiltro.tipoDeContainer = this.tipoContainers[0];\n }\n\n\n renderizaImagePIX() {\n // Convert the byte string to a Uint8Array\n const byteCharacters = atob(this.infoPgtoAdicional.descIndicador);\n const byteNumbers = new Array(byteCharacters.length);\n for (let i = 0; i < byteCharacters.length; i++) {\n byteNumbers[i] = byteCharacters.charCodeAt(i);\n }\n const byteArray = new Uint8Array(byteNumbers);\n\n // Create a Blob from the Uint8Array\n const blob = new Blob([byteArray], { type: 'image/jpeg' }); // Adjust the type as needed\n\n // Create a URL for the Blob\n const imageUrl = URL.createObjectURL(blob);\n\n // Render the image in your HTML\n const imgElement = document.createElement('img');\n imgElement.src = imageUrl;\n this.imgPix = imageUrl;\n\n // Append the image element to the DOM (e.g., inside a div)\n //document.getElementById('imagemPix').appendChild(imgElement);\n }\n\n\n\n habilitaBotaoCalcula() {\n\n var mensagens: string[] = [];\n\n let isTipoPagamentoSelecionado = this.infoPgtoAdicional.idTipoPagto > 0;\n let isClassificacaoSelecionada = this.infoPgtoAdicional.idClassificacaoCli > 0;\n let isTipoServicoSelecionado = this.infoPgtoAdicional.idTipoServico > 0;\n let isUfPagadorInformada = this.infoPgtoAdicional.ufPagadorFrete.trim().length > 0;\n let isUfPgadorValido = !((this.infoPgtoAdicional.origemModalId == 'PA' && this.infoPgtoAdicional.idTipoPagto == 2) && this.booking.proposta.ufOrigem == this.infoPgtoAdicional.ufPagadorFrete)\n let vlrNotaFiscal = this.infoPgtoAdicional.vlrTotalNota > 0;\n\n\n this.isHabilitaBotaoCalcular = isTipoPagamentoSelecionado &&\n isClassificacaoSelecionada &&\n isTipoServicoSelecionado &&\n isUfPagadorInformada &&\n isUfPgadorValido &&\n vlrNotaFiscal;\n\n let usuario: string = this._appService.UsuarioLogado.Nome;\n\n if (!isTipoPagamentoSelecionado){\n mensagens.push(\"Selecione um tipo de pagamento!\");\n }\n\n \n if (!isClassificacaoSelecionada){\n mensagens.push('Selecione uma classificação para o cliente!');\n }\n \n \n if (!isTipoServicoSelecionado){\n mensagens.push(\"Selecione um tipo de serviço!\");\n }\n \n\n if (!isUfPagadorInformada){\n mensagens.push(\"A UF do pagador do frete!\");\n }\n \n\n if (!isUfPgadorValido){\n mensagens.push(\"A UF do pagadorXXXXXXX!\");\n }\n\n if (!vlrNotaFiscal){\n mensagens.push(\"Informe o valor da NF.\");\n } \n\n this._msgService.addMessageArray('Info - PIX', mensagens, 'error', LogFrontFuncionalidade.Booking, Operacao.Inclusao);\n\n mensagens\n }\n\n limpaVariaveis() {\n //this.infoPgtoAdicional.vlrTotalNota = 0;\n this.infoPgtoAdicional.vlrIcms = 0;\n this.infoPgtoAdicional.vlrTaxaAdicional = 0;\n this.taxasAdicionaisText = '';\n this.txtQrCode = '';\n this.infoPgtoAdicional.vlrBaf = 0;\n this.infoPgtoAdicional.vlrAdValorem = 0;\n this.infoPgtoAdicional.vlrTaxaAdicional = 0;\n }\n\n\n ValidarStep(): string[]{\n var mensagens: string[] = [];\n \n\n this.limpaVariaveis();\n\n const calculadoraBTN = document.getElementById('calculadoraBTN') as HTMLButtonElement;\n\n let isTipoPagamentoSelecionado = this.infoPgtoAdicional.idTipoPagto != null;\n let isClassificacaoSelecionada = this.infoPgtoAdicional.idClassificacaoCli != null;\n let isTipoServicoSelecionado = this.infoPgtoAdicional.idTipoPagto != null;\n let isUfPagadorInformada = this.infoPgtoAdicional.ufPagadorFrete.trim().length > 0;\n let isUfPgadorValido = !((this.infoPgtoAdicional.origemModalId == 'PA' && this.infoPgtoAdicional.idTipoPagto == 2) && this.booking.proposta.ufOrigem == this.infoPgtoAdicional.ufPagadorFrete)\n let vlrNotaFiscal = this.infoPgtoAdicional.vlrTotalNota > 0;\n\n\n this.isHabilitaBotaoCalcular = isTipoPagamentoSelecionado &&\n isClassificacaoSelecionada &&\n isTipoServicoSelecionado &&\n isUfPagadorInformada &&\n isUfPgadorValido &&\n vlrNotaFiscal;\n\n // if (!isTipoPagamentoSelecionado)\n // this.msgErr.push('Selecione um tipo de pagamento!');\n\n // if (!isClassificacaoSelecionada)\n // msgErr.push('Selecione uma classificação para o cliente!');\n\n // if (!isTipoServicoSelecionado)\n // msgErr.push('Selecione um tipo de serviço!'); \n\n // if (!isUfPagadorInformada)\n // msgErr.push('Informe a UF do pagador!');\n\n // if (!isUfPgadorValido)\n // msgErr.push('A UF do pagador do frete deve ser a mesma da origem quando o tipo de pagamento for FOB e Modal PA! XXXXXXXX'); \n\n\n return mensagens;\n } \n\n}\n","import { Component, OnInit, ViewChild, AfterViewInit } from '@angular/core';\n\nimport { Porto } from 'app/_models/porto';\nimport { Cotacao } from 'app/_models/cotacao';\nimport { Municipio } from './../../_models/municipio';\nimport { TipoContainer } from 'app/_models/tipo-container';\nimport { CotacaoRequest } from 'app/_models/cotacao-request';\nimport { MinhasCotacoes } from 'app/_models/minhas-cotacoes';\nimport { FiltrosLaterais } from 'app/_models/filtros-laterais';\nimport { MunicipioRequest } from './../../_models/municipio-request';\nimport { FilterComboConfiguration } from 'app/_models/filterComboConfiguration';\n\nimport { AppService } from 'app/_services/app.service';\nimport { CotacaoService } from './../../_services/cotacao.service';\nimport { MessageService } from './../../_services/message.service';\nimport { SharedService } from 'app/_services/shared.service';\nimport { MunicipioService } from './../../_services/municipio.service';\nimport { GenericOrderbyService } from 'app/_services/generic-orderby.service';\nimport { FiltrosLateraisService } from 'app/_services/filtros-laterais.service';\n\nimport { BaseComponent } from './../../shared/base.component';\nimport { MessageComponent } from './../../shared/message/message.component';\nimport { PaginacaoComponent } from './../../shared/paginacao/paginacao.component';\nimport { CnpjDropdownComponent } from 'app/shared/cnpj-dropdown/cnpj-dropdown.component';\nimport { FiltrosLateraisComponent } from './../filtros-laterais/filtros-laterais.component';\nimport { DetalhesContainerComponent } from '../../shared/detalhes-container/detalhes-container.component';\n\nimport { AnalyticsService } from 'app/_services/analytics.service';\nimport { AnalyticsTela } from '../../_enums/analytics-tela';\nimport { AnalyticsDownload } from '../../_enums/analytics-download';\n\nimport { Operacao } from 'app/_enums/operacao';\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\nimport { GrupoEconomicoService } from 'app/_services/grupo-economico.service';\n\n@Component({\n selector: 'app-cotacao',\n templateUrl: './cotacao.component.html',\n styleUrls: ['./cotacao.component.scss']\n})\nexport class CotacaoComponent extends BaseComponent implements OnInit, AfterViewInit {\n\n @ViewChild(PaginacaoComponent, {static: true}) paginacao: PaginacaoComponent;\n @ViewChild(MessageComponent, {static: true}) mensagem: MessageComponent;\n @ViewChild(FiltrosLateraisComponent, {static: true}) filtroslaterais : FiltrosLateraisComponent;\n @ViewChild(CnpjDropdownComponent, {static: true}) cnpjdropdown: CnpjDropdownComponent;\n @ViewChild(DetalhesContainerComponent, {static: true}) detalhesContainer : DetalhesContainerComponent;\n\n constructor(private _cotacaoService: CotacaoService,\n private _sharedService: SharedService,\n private _municipioService: MunicipioService,\n private _grupoService: GrupoEconomicoService,\n private _appService: AppService,\n private _msgService: MessageService,\n private _genericOrderbyService: GenericOrderbyService,\n private _filtroslateraisService: FiltrosLateraisService,\n private _analyticsService: AnalyticsService) {\n\n super();\n\n this.comboCidades = new FilterComboConfiguration('Cidade(s)...');\n this.comboCidades.settings = {\n checkedStyle: 'glyphicon',\n dynamicTitleMaxItems: 2,\n enableSearch: true\n };\n\n this.comboPortos = new FilterComboConfiguration('Porto(s)...');\n this.comboPortos.settings = {\n checkedStyle: 'glyphicon',\n dynamicTitleMaxItems: 2,\n showCheckAll: true,\n showUncheckAll: true\n };\n\n // Inicializa ViewModel de MinhasCotacoes\n this.minhasCotacoes = new MinhasCotacoes(new FiltrosLaterais(), []);\n this._msgService.emitirMensagem.subscribe(\n msg => {\n this.mensagem.mostrarMensagem(msg.tipo, msg.mensagem);\n });\n }\n\n ngAfterViewInit(): void {\n this._grupoService.grupoEconomicoSelecionadoEvent.subscribe(cnpjs => {\n this.Pesquisar();\n });\n }\n\n minhasCotacoes: MinhasCotacoes;\n filtrosLaterais = new FiltrosLaterais();\n consulta: CotacaoRequest = new CotacaoRequest();\n downloading: boolean = false;\n loading: boolean = false;\n loadingPortos: boolean = false;\n loadingMunicipios: boolean = false;\n empty: boolean = true;\n noresult: boolean = false;\n cssClassAdmin = '';\n pageSize: number = 10;\n ordenarpor: string = 'numProposta';\n eAdmin: boolean = this._appService.isAdmin();\n eCliente: boolean = this._appService.isCliente(); \n maisDeUmCNPJ = this._appService.maisDeUmCNPJ();\n filtroMunicipio: MunicipioRequest = new MunicipioRequest();\n listaStatusCotacao: string[] = [];\n\n optionsModel: number[] = [];\n\n portos: Porto[];\n municipios: Municipio[];\n municipiosOrigem: number[];\n portosOrigem: number[];\n municipiosDestino: number[];\n portosDestino: number[];\n\n comboCidades: FilterComboConfiguration;\n comboPortos: FilterComboConfiguration;\n\n ngOnInit() {\n\n this.cssClassAdmin = this.eAdmin || (this.eCliente && this.maisDeUmCNPJ) ? \"\" : \" customer-profile\";\n this.cnpjdropdown.SelecionaMultiplos = true;\n this.cnpjdropdown.modoEdicao = false;\n\n this.ObterPortos();\n\n if (!this.eAdmin){\n this.ObterLista();\n this.ObterMunicipios(null);\n }\n else {\n this.cnpjdropdown.cnpjsGrupos = localStorage.getItem('cnpjGrupos');\n if (this.cnpjdropdown.cnpjsGrupos)\n this.Pesquisar();\n else\n this.zeraPesquisa();\n }\n\n let msg = this._msgService.getMessageRedirect();\n if (msg.show)\n this._msgService.addMessage(msg.titulo, msg.mensagem, msg.type, LogFrontFuncionalidade.Cotacao, Operacao.Consulta, this.consulta);\n\n this._analyticsService.RegistrarAcesso(AnalyticsTela.Cotacao);\n }\n\n Pesquisar(registrarAnalytics: boolean = true) {\n this._msgService.clearMessage();\n if (this.eAdmin && ((this.cnpjdropdown.CNPJDigitado == undefined) || (this.cnpjdropdown.CNPJDigitado == '')) && (!this.cnpjdropdown.cnpjsGrupos)) {\n this._msgService.addMessage('Minhas Cotações', 'Informe o CNPJ do Cliente ou selecione ao menos um Grupo Econômico.', 'error', \n LogFrontFuncionalidade.Cotacao, Operacao.Consulta);\n this.zeraPesquisa();\n return;\n }\n else {\n if (this.eAdmin && this.cnpjdropdown.cnpjsGrupos && this.cnpjdropdown.CNPJDigitado) {\n if (!this.cnpjdropdown.validaCNPJnoGrupo()) {\n this._msgService.addMessage('Minhas Cotações', 'CNPJ informado não pertence ao(s) Grupo(s) Econômico(s) selecionado(s)!', 'error', \n LogFrontFuncionalidade.Cotacao, Operacao.Consulta);\n this.zeraPesquisa();\n return;\n }\n }\n\n //limpa mensagens de erros\n this._msgService.clearMessage();\n this.consulta.status = '';\n this.ObterLista(registrarAnalytics);\n }\n }\n\n public ObterPortos() {\n this.loadingPortos = true;\n this._sharedService.getPortos()\n .subscribe(m => {\n this.portos = m;\n if (this.portos != null) {\n this.portos.forEach(porto => {\n this.comboPortos.options.push({ id: porto.Codigo, name: porto.Descricao });\n //this.comboPortos.options.push({ id: porto.Codigo, name: porto.Descricao + ' - ' + porto.Municipio + '/' + porto.UF });\n });\n }\n this.loadingPortos = false;\n });\n }\n\n public ObterMunicipios(cnpj: string) {\n this.loadingMunicipios = true;\n this.filtroMunicipio.idUsuario = this._appService.UsuarioLogado.UsuarioIDeCargo;\n this.filtroMunicipio.tipoConsulta = '1';\n this.filtroMunicipio.cnpjCli = cnpj;\n this.municipios = [];\n //this.comboCidades.options = [];\n this._municipioService.getMunicipiosEspecial(this.filtroMunicipio)\n .subscribe(m => {\n this.municipios = m;\n this.comboCidades.options = [];\n if (this.municipios != null) {\n this.municipios.forEach(municipio => {\n this.comboCidades.options.push({ id: municipio.Codigo, name: municipio.Descricao + ' / ' + municipio.UF });\n });\n }\n this.loadingMunicipios = false;\n });\n }\n\n cnpjAlterado(cnpj: string){\n this.ObterMunicipios(cnpj);\n this.Pesquisar();\n }\n\n zeraPesquisa() {\n this.empty = true;\n this.noresult = false;\n this.minhasCotacoes = new MinhasCotacoes(new FiltrosLaterais(), []);\n this.paginacao.pagedItems = [];\n this.paginacao.pager = {};\n this.consulta.status = ''; \n }\n\n ObterLista(registrarAnalytics: boolean = false) {\n this.filtrosLaterais = new FiltrosLaterais();\n this.loading = true;\n\n // Converte Array em String Delimitado por Ponto e Vírgula (formato recebido na procedure)\n this.consulta.UsuarioID = this._appService.UsuarioLogado.UsuarioIDeCargo;\n this.consulta.idsMunicOri = this.municipiosOrigem ? this.municipiosOrigem.join(';') : '';\n this.consulta.idsPortoOri = this.portosOrigem ? this.portosOrigem.join(';') : '';\n this.consulta.idsMunicDes = this.municipiosDestino ? this.municipiosDestino.join(';') : '';\n this.consulta.idsPortoDes = this.portosDestino ? this.portosDestino.join(';') : '';\n this.consulta.cnpjCli = this.cnpjdropdown.CNPJs ? this.cnpjdropdown.CNPJs.join(';') :\n this.cnpjdropdown.CNPJDigitado ? this.cnpjdropdown.CNPJDigitado : this.cnpjdropdown.cnpjsGrupos ? this.cnpjdropdown.cnpjsGrupos : '';\n this.ObterMunicipios(this.consulta.cnpjCli);\n if (registrarAnalytics)\n this._analyticsService.RegistrarFiltroCotacao(this.consulta);\n this._cotacaoService.getCotacoes(this.consulta)\n .subscribe(minhasCotacoes => {\n this.minhasCotacoes = minhasCotacoes;\n this.empty = false;\n this.noresult = ((this.minhasCotacoes == undefined) || (this.minhasCotacoes.Cotacoes.length == 0));\n this.ordernarListaPorCampo(this.ordenarpor, true);\n this.ObterListaStatus();\n this.loading = false;\n });\n }\n\n ObterDetalhesDaCotacao(cotacao: Cotacao) {\n cotacao.loading = true;\n\n var consulta: CotacaoRequest = new CotacaoRequest();\n consulta.CotacaoID = cotacao.numProposta;\n consulta.IdTrecho = cotacao.IdTrecho;\n consulta.UsuarioID = this._appService.UsuarioLogado.UsuarioIDeCargo;\n\n this._cotacaoService.getCotacao(consulta)\n .subscribe(cotacaoRetorno => {\n let detalhe: Cotacao = new Cotacao();\n this._sharedService.copyProperties(cotacaoRetorno, detalhe);\n let tp: TipoContainer = new TipoContainer();\n this._sharedService.copyProperties(cotacaoRetorno.tipoDeContainer, tp);\n cotacao.detalheDaCotacao = detalhe;\n cotacao.detalheDaCotacao.tipoDeContainer = tp;\n cotacao.loading = false;\n });\n }\n\n obtemStatus(status: string): string {\n if ((status != undefined) && (status.toUpperCase() == 'AGUARDANDO APROVAÇÃO DO CLIENTE'))\n return 'Aguardando Aprovação';\n return status;\n }\n\n obtemClasseDoStatus(status: string): string {\n status = status.toLowerCase();\n\n if ((status.indexOf('ativa') !== -1) || status.indexOf('aceita') !== -1)\n return 'quotation-status active';\n else if ((status.indexOf('processo') !== -1) || (status.indexOf('aguardando') !== -1))\n return 'quotation-status waiting';\n return 'quotation-status expired';\n }\n\n ordernarListaPorCampo(campo : string, desc: boolean): void {\n this.paginacao.setAllData(this._genericOrderbyService.ordenarPorCampo(this.minhasCotacoes.Cotacoes, campo, desc));\n }\n\n filtrarPorStatus(): void{\n let listaFiltrada = this._filtroslateraisService.filtrarDados(this.minhasCotacoes.Cotacoes, this.consulta);\n this.paginacao.setAllData(this._genericOrderbyService.ordenarPorCampo(listaFiltrada, this.ordenarpor));\n }\n\n ObterListaStatus(): string[] {\n this.listaStatusCotacao = [];\n this.listaStatusCotacao.push('');\n this.minhasCotacoes.Cotacoes.forEach(cotacao => {\n var status = this.listaStatusCotacao.find(s => s == cotacao.Status);\n if (status == null || status == undefined)\n this.listaStatusCotacao.push(cotacao.Status);\n });\n \n this.listaStatusCotacao.sort((a: string, b: string) => {\n if (a < b) {\n return -1;\n } else if (a > b) {\n return 1;\n } else {\n return 0;\n }\n });\n\n return this.listaStatusCotacao;\n }\n\n exportarRelatorioCSV() {\n this.downloading = true;\n this._analyticsService.RegistrarDownload(AnalyticsTela.Cotacao, AnalyticsDownload.ExportacaoCSV);\n // Obtem listagem de cotacoes específica para download\n this._cotacaoService.getCotacoesDownload(this.consulta)\n .subscribe(x => {\n if (x != null) {\n let listaFiltrada = this._filtroslateraisService.filtrarDados(x, this.filtrosLaterais);\n this._cotacaoService.exportarRelatorioCSV(listaFiltrada);\n }\n this.downloading = false;\n });\n }\n}\n","import { CommonModule } from '@angular/common';\n\nimport { DatePickerModule } from \"app/shared/ng2-datepicker/ng2-datepicker.module\";\nimport { CurrencyMaskModule } from \"ng2-currency-mask\";\nimport { FormsModule } from '@angular/forms';\nimport { ModalModule } from 'ngx-bootstrap/modal';\nimport { NgModule } from '@angular/core';\nimport { SharedModule } from './../../shared/shared.module';\n\n//COTACAO\nimport { Cotacao } from \"app/_models/cotacao\";\nimport { CotacaoComponent } from './cotacao.component';\nimport { CotacaoRequest } from \"app/_models/cotacao-request\";\nimport { CotacaoRoutingModule } from './cotacao.routing.module';\nimport { CotacaoService } from './../../_services/cotacao.service';\nimport { SolicitarCotacaoComponent } from './solicitar-cotacao/solicitar-cotacao.component';\nimport { UploadArquivoService } from '../../_services/upload-arquivo.service';\nimport { AnalyticsService } from '../../_services/analytics.service';\nimport { DatepickerService } from 'app/_services/datepicker.service';\nimport { UsuarioService } from 'app/_services/usuario.service';\nimport { AppService } from 'app/_services/app.service';\nimport { HttpClientModule } from '@angular/common/http';\n\n@NgModule({\n imports: [\n FormsModule,\n CommonModule,\n HttpClientModule,\n CotacaoRoutingModule,\n CurrencyMaskModule,\n ModalModule.forRoot(),\n DatePickerModule,\n SharedModule\n ],\n exports: [],\n declarations: [\n CotacaoComponent,\n SolicitarCotacaoComponent\n ],\n providers: [\n AppService,\n CotacaoService,\n UploadArquivoService,\n CotacaoRequest,\n Cotacao,\n AnalyticsService,\n DatepickerService,\n UsuarioService\n ],\n})\nexport class CotacaoModule { }\n","import { RouterModule, Routes } from '@angular/router';\n\nimport { CotacaoComponent } from './cotacao.component';\nimport { NgModule } from '@angular/core';\nimport { SolicitarCotacaoComponent } from './solicitar-cotacao/solicitar-cotacao.component';\nimport { AuthGuard } from 'app/_guards/auth.guard';\n\nconst cotacaoRoutes: Routes = [\n { path: '', component: CotacaoComponent, canActivate: [AuthGuard] }, \n // { path: 'solicitar', component: SolicitarCotacaoComponent, canActivate: [AuthGuard] },\n // { path: 'solicitar/:id/:idTrecho', component: SolicitarCotacaoComponent, canActivate: [AuthGuard] },\n // { path: 'solicitar/:id/:idTrecho/:duplicar', component: SolicitarCotacaoComponent, canActivate: [AuthGuard] }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(cotacaoRoutes)],\n exports: [RouterModule]\n})\nexport class CotacaoRoutingModule {}","import { ActivatedRoute, Router } from '@angular/router';\nimport { Component, OnInit, ViewChild, ElementRef, HostListener } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { element } from 'protractor';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { Porto } from './../../../_models/porto';\nimport { Classe } from './../../../_models/classe';\nimport { Cotacao } from './../../../_models/cotacao';\nimport { CargaIMO } from './../../../_models/cargaIMO';\nimport { Municipio } from './../../../_models/municipio';\nimport { Mercadoria } from './../../../_models/mercadoria';\nimport { TipoEmbalagem } from './../../../_models/tipoEmbalagem';\nimport { Periodicidade } from './../../../_models/periodicidade';\nimport { TipoContainer } from './../../../_models/tipo-container';\nimport { CotacaoRequest } from 'app/_models/cotacao-request';\nimport { VeiculoEspecial } from './../../../_models/veiculoEspecial';\nimport { TipoPagadorFrete } from './../../../_models/tipoPagadorFrete';\nimport { ValidationResult } from './../../../_models/validation-result';\nimport { TipoOperacaoComercial } from './../../../_models/tipoOperacaoComercial';\n\nimport { AppService } from './../../../_services/app.service';\nimport { DataService } from './../../../_services/data.service';\nimport { SharedService } from './../../../_services/shared.service';\nimport { CotacaoService } from './../../../_services/cotacao.service';\nimport { MessageService } from './../../../_services/message.service';\nimport { MunicipioService } from './../../../_services/municipio.service';\n\nimport { BaseComponent } from './../../../shared/base.component';\nimport { MessageComponent } from './../../../shared/message/message.component';\nimport { CnpjDropdownComponent } from './../../../shared/cnpj-dropdown/cnpj-dropdown.component';\nimport { AlteracoesArquivoUpload } from '../../../_models/alteracoes-arquivo-upload';\nimport { UploadArquivoService } from '../../../_services/upload-arquivo.service';\nimport { UploadArquivosComponent } from 'app/shared/uploadarquivos/uploadarquivos.component';\nimport { AnalyticsService } from 'app/_services/analytics.service';\nimport { AnalyticsTela } from 'app/_enums/analytics-tela';\nimport { AnalyticsOperacao } from 'app/_enums/analytics-operacao';\nimport { Operacao } from 'app/_enums/operacao';\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\n\n@Component({\n selector: 'app-solicitar-cotacao',\n templateUrl: './solicitar-cotacao.component.html',\n styleUrls: ['./solicitar-cotacao.component.scss']\n})\nexport class SolicitarCotacaoComponent extends BaseComponent implements OnInit {\n\n\n cotacao: Cotacao = new Cotacao();\n titulo: string;\n novaCotacao: boolean = true;\n duplicar: boolean = false;\n loading: boolean = false;\n uploading: boolean = false;\n loadingSolicitar: boolean = false;\n loadingMunicipios: boolean = false;\n loadingMercadorias: boolean = false;\n loadingCargaPerigosa: boolean = false;\n loadingContainers: boolean = false;\n flagOutrosProdutos: boolean = false;\n bloqueiaCargaRefrigerada: boolean = true;\n bloqueiaCargaExcesso: boolean = true;\n bloqueiaOpenTop: boolean = true;\n bloqueiaModalPorta: boolean = false;\n result: ValidationResult;\n error = '';\n currentStep: number = 1;\n tipoContainers: TipoContainer[] = [];\n cargasPerigosas: CargaIMO[];\n cargasPerigosasByClass: CargaIMO[] = [];\n classes: Classe[] = [];\n mercadorias: Mercadoria[];\n portos: Porto[];\n municipios: Municipio[] = [];\n municipioColeta: Municipio;\n municipioEntrega: Municipio;\n inscricaoGet: Subscription;\n idContainerSelecionado: string = '';\n descTipoPagadorFrete: string = '';\n embalagemSelecionada: string = '';\n veiculoOrigemSelecionado: string = '';\n veiculoDestinoSelecionado: string = '';\n\n veiculosEspeciais: VeiculoEspecial[] = new Array();\n tipoEmbalagens: TipoEmbalagem[] = new Array();\n tiposOperacaoComercial: TipoOperacaoComercial[] = new Array();\n tiposPagadorFrete: TipoPagadorFrete[] = new Array();\n periodicidades: Periodicidade[] = new Array();\n\n @ViewChild(UploadArquivosComponent, {static: true}) uploadarquivos: UploadArquivosComponent;\n @ViewChild(MessageComponent, {static: true}) mensagem: MessageComponent;\n @ViewChild(CnpjDropdownComponent, {static: true}) cnpjdropdown: CnpjDropdownComponent;\n @ViewChild('topo', {static: true}) private topo: ElementRef;\n\n constructor(\n private _cotacaoService: CotacaoService,\n private _msgService: MessageService,\n private _router: Router,\n private _sharedService: SharedService,\n private _route: ActivatedRoute,\n private _appService: AppService,\n private _dataService: DataService,\n private _municipioService: MunicipioService,\n private _uploadService: UploadArquivoService,\n private _sanitizer: DomSanitizer,\n private _analyticsService: AnalyticsService) {\n\n super();\n\n this._msgService.emitirMensagem.subscribe(\n msg => {\n if (msg.mensagem instanceof Array)\n this.mensagem.mostrarMensagemArray(msg.tipo, msg.mensagem);\n else\n this.mensagem.mostrarMensagem(msg.tipo, msg.mensagem);\n }\n );\n }\n\n autocompleListFormatter = (data: any) => {\n let html = `${data.Descricao}/${data.UF}`;\n return this._sanitizer.bypassSecurityTrustHtml(html);\n //return html;\n }\n\n ngOnInit() {\n\n window.location.href = 'https://www.alianca.com.br/ecommerce/cotacaoonline/nova/';\n return; \n\n this.cnpjdropdown.SelecionaMultiplos = false;\n this.cnpjdropdown.modoEdicao = true;\n\n // Se receber a cotação como parâmetro, exibe dados da mesma\n this.inscricaoGet = this._route.params.subscribe(\n (params: any) => {\n\n var consulta: CotacaoRequest = new CotacaoRequest();\n consulta.CotacaoID = params['id'];\n consulta.IdTrecho = params['idTrecho'];\n consulta.UsuarioID = this._appService.UsuarioLogado.UsuarioIDeCargo;\n\n this.duplicar = params['duplicar'];\n\n this.novaCotacao = !consulta.CotacaoID || this.duplicar;\n this.titulo = this.novaCotacao ? 'Nova Cotação' : 'Consultar Cotação';\n\n if (consulta.CotacaoID) {\n this.carregaCotacaoPorId(consulta);\n }\n\n }\n );\n\n if (this.novaCotacao) {\n this.cotacao.idFamiliaProduto = null;\n this.ObterMercadorias();\n this.ObterPortos();\n this.ObterMunicipios();\n this.ObterDataFields();\n }\n }\n\n ObterDataFields() {\n this._dataService.getVeiculosEspeciais()\n .subscribe(lista => {\n this.veiculosEspeciais = lista;\n });\n\n this._dataService.getTipoEmbalagens()\n .subscribe(lista => {\n this.tipoEmbalagens = lista;\n });\n\n this._dataService.getTiposOperacaoComercial()\n .subscribe(lista => {\n this.tiposOperacaoComercial = lista;\n });\n\n this._dataService.getTiposPagadorFrete()\n .subscribe(lista => {\n this.tiposPagadorFrete = lista;\n });\n\n this._dataService.getPeriodicidades()\n .subscribe(lista => {\n this.periodicidades = lista;\n });\n\n this._dataService.getResponsaveisDesova()\n .subscribe(lista => {\n this.cotacao.responsaveisDesova = lista;\n });\n\n this._dataService.getResponsaveisOva()\n .subscribe(lista => {\n this.cotacao.responsaveisOva = lista;\n });\n }\n\n private CorrigeNumber(valor: any): number {\n if (!valor)\n return valor;\n\n var num = valor.toString();\n num = this._sharedService.replaceAll(valor, '.', '');\n num = num.replace(',', '.');\n return Number(num);\n }\n\n get permiteUpload(): boolean{\n return this.cotacao.cargaOver && (this.novaCotacao || (!this.novaCotacao && this.cotacao.statusCotacao == 'Em processo de cotação'));\n }\n\n carregaCotacaoPorId(consulta: CotacaoRequest) {\n this.loading = true;\n this._cotacaoService.getCotacao(consulta)\n .subscribe(cotacaoRetorno => {\n this._sharedService.copyProperties(cotacaoRetorno, this.cotacao);\n var tp: TipoContainer = new TipoContainer;\n this._sharedService.copyProperties(cotacaoRetorno.tipoDeContainer, tp);\n this.cotacao.tipoDeContainer = tp;\n\n this.cotacao.valMercadoria = this.CorrigeNumber(cotacaoRetorno.valMercadoria);\n this.cotacao.pesoContainer = this.CorrigeNumber(cotacaoRetorno.pesoContainer);\n\n if (cotacaoRetorno.idFamiliaProduto == null) {\n this.cotacao.idFamiliaProduto = 0;\n this.flagOutrosProdutos = true;\n }\n\n if (!this.tipoEmbalagens.find(e => e.codigo == cotacaoRetorno.tipoEmbalagemCarga))\n this.embalagemSelecionada = 'Outros';\n else\n this.embalagemSelecionada = cotacaoRetorno.tipoEmbalagemCarga;\n\n\n if (!this.veiculosEspeciais.find(e => e.codigo == cotacaoRetorno.VeiculoEspecialOri))\n this.veiculoOrigemSelecionado = 'Outros';\n else\n this.veiculoOrigemSelecionado = cotacaoRetorno.VeiculoEspecialOri;\n\n if (!this.veiculosEspeciais.find(e => e.codigo == cotacaoRetorno.VeiculoEspecialDes))\n this.veiculoDestinoSelecionado = 'Outros';\n else\n this.veiculoDestinoSelecionado = cotacaoRetorno.VeiculoEspecialDes;\n\n //this.cotacao.IdUsuario = this.appService.UsuarioLogado.UsuarioID;\n //this.onChangeCampo('embalagem', this.cotacao.tipoEmbalagemCarga);\n //this.onChangeCampo('veiculo-origem', this.cotacao.VeiculoEspecialOri);\n //this.onChangeCampo('veiculo-destino', this.cotacao.VeiculoEspecialDes);\n\n // DM #5602 Combobox Tipo de Contêiner\n this.ObterTipoContainers(cotacaoRetorno);\n this.cnpjdropdown.modoBloqueado = true;\n this.cnpjdropdown.CNPJFiltro = cotacaoRetorno.cnpjCli;\n this.cnpjdropdown.cnpjsSelecionados = [];\n this.cnpjdropdown.cnpjsSelecionados.push(cotacaoRetorno.cnpjCli);\n this.cnpjdropdown.inscrEstadualSelecionada = cotacaoRetorno.ieCli;\n this.cnpjdropdown.razaoSocial = cotacaoRetorno.nomeCli;\n\n //this.cotacao.respOva = this.cotacao.responsaveisOva.find(x => x.descricao == cotacaoRetorno.responsavelEstufagem);\n\n this._dataService.getTiposPagadorFrete()\n .subscribe(lista => {\n //this.tiposPagadorFrete = lista;\n if (lista != null)\n this.descTipoPagadorFrete = lista.find(x => x.codigo == cotacaoRetorno.tipo).descricao;\n });\n\n if (this.duplicar) {\n // 5661: Cotação - duplicar cotação - dados copiados não selecionados\n this.limpaCamposQueNaoDevemSerCopiadosNoDuplicar();\n this.DisponibilizaCargaEspecial();\n }\n\n //COMENTADO PARA NÃO SUBIR EM PRODUÇÃO NA SPRINT1, DESCOMENTAR DEPOIS\n //this.uploadarquivos.configuraArquivos(this.cotacao.Arquivos);\n\n this.loading = false;\n },\n (err) => { },\n () => {\n // DM Redmine #5603 - Resolução do Bug Duplicar cotação sem o botão de \"Solicitar Cotação\"\n if (this.novaCotacao) { this.cotacao.statusCotacao = '' };\n });\n }\n\n limpaCamposQueNaoDevemSerCopiadosNoDuplicar(): void {\n this.cotacao.valMercadoria = 0;\n this.cotacao.pesoContainer = 0;\n this.cotacao.qtdeContainer = 0;\n this.cotacao.obsEcargo = '';\n }\n\n Solicitar() {\n\n //limpa mensagens de erros\n this._msgService.clearMessage();\n\n if (this.ValidarEnvioCotacao()) {\n\n if (this._appService.isAdmin()) {\n this._msgService.addMessage('Cotação', 'Usuário administrador não tem permissão para adicionar cotações. Essa funcionalidade é restrita a clientes.', 'warning');\n return;\n }\n\n //if ((this.tipoContainers != undefined) && (this.cotacao.idCategoriaContainer != undefined))\n //this.cotacao.tamanhoContainer = this.tipoContainers.find(x => x.Codigo == this.cotacao.idCategoriaContainer).Tamanho;\n if (this.municipioColeta != undefined)\n this.cotacao.idMunicColeta = this.municipioColeta.Codigo;\n if (this.municipioEntrega != undefined)\n this.cotacao.idMunicEntrega = this.municipioEntrega.Codigo;\n\n this.cotacao.IdUsuario = this._appService.UsuarioLogado.UsuarioIDeCargo;\n this.cotacao.setFlagsEnvio();\n\n this.loadingSolicitar = true;\n\n //Responsável pelo carregamento na origem\n this.cotacao.flagEquipeIndicaCliOri = ((this.cotacao.respOva) && (this.cotacao.respOva.codigo == 1)) ? 'S' : 'N';\n this.cotacao.flagEquipePropriaOri = ((this.cotacao.respOva) && (this.cotacao.respOva.codigo == 2)) ? 'S' : 'N';\n this.cotacao.flagOvaEmbarcador = ((this.cotacao.respOva) && (this.cotacao.respOva.codigo == 3)) ? 'S' : 'N';\n\n //Responsável pelo carregamento no destino\n this.cotacao.flagEquipeIndicaCliDes = ((this.cotacao.respDesova) && (this.cotacao.respDesova.codigo == 1)) ? 'S' : 'N';\n this.cotacao.flagEquipePropriaDes = ((this.cotacao.respDesova) && (this.cotacao.respDesova.codigo == 2)) ? 'S' : 'N';\n this.cotacao.flagDesovaRecebedor = ((this.cotacao.respDesova) && (this.cotacao.respDesova.codigo == 3)) ? 'S' : 'N';\n\n\n this._cotacaoService.Solicitar(this.cotacao)\n .subscribe(result => {\n this.loadingSolicitar = false;\n if (result != null) {\n if (this.duplicar)\n this._analyticsService.RegistrarOperacao(AnalyticsTela.Cotacao, AnalyticsOperacao.Duplicacao);\n\n this.cotacao = result;\n this._msgService.addMessageRedirect('Cotação', 'Cotação Número ' + result.numCotacao + ' gerada com sucesso!', 'success');\n\n //COMENTADO PARA NÃO SUBIR EM PRODUÇÃO NA SPRINT1, DESCOMENTAR DEPOIS\n /*\n var alteracoesUpload = this.uploadarquivos.obterAlteracoesArquivos();\n\n if (alteracoesUpload.arquivosParaUpload.length > 0 || alteracoesUpload.arquivosParaExcluir.length > 0) {\n this.uploading = true;\n this._uploadService.salvarAlteracoesUpload(alteracoesUpload, 'cotacao', 'OGG', this.cotacao.numCotacao)\n .subscribe(result => {\n this.uploading = false;\n if (!result.IsValid){\n this._msgService.addMessageRedirect('Cotação', 'Cotação Número ' + this.cotacao.numCotacao + ' gerada com sucesso!', 'success');\n }\n else {\n this._msgService.addMessageRedirect('Cotação', 'Cotação ' + this.cotacao.numCotacao + ' gerada com sucesso, mas os anexos não foram incluídos. Por favor, tente anexar os documentos novamente!', 'warning', LogFrontFuncionalidade.Cotacao, Operacao.Inclusao);\n }\n this._router.navigate(['cotacao']);\n }, (errors) => {\n this._msgService.addMessageRedirect('Cotação', 'Cotação ' + this.cotacao.numCotacao + ' gerada com sucesso, mas os anexos não foram incluídos. Por favor, tente anexar os documentos novamente!', 'warning', LogFrontFuncionalidade.Cotacao, Operacao.Inclusao);\n this._router.navigate(['cotacao']);\n });\n }\n else\n */\n this._router.navigate(['cotacao']);\n }\n //else {\n // this._msgService.addMessage('Cotação', \"Erro ao solicitar cotação\", \"error\");\n //}\n });\n }\n }\n\n salvarAlteracoesUpload(alteracoes: AlteracoesArquivoUpload){\n this.uploading = true;\n this._uploadService.salvarAlteracoesUpload(alteracoes, 'cotacao', 'OGG', this.cotacao.numCotacao)\n .subscribe(result => {\n this.uploading = false;\n if (!result.IsValid){\n this._msgService.addMessageRedirect('Cotação', 'Upload da cotação ' + this.cotacao.numCotacao + ' concluído com sucesso!', 'success');\n this.uploadarquivos.marcarAlteracoesComoSalvas();\n }\n else {\n this._msgService.addMessageRedirect('Cotação', 'Cotação ' + this.cotacao.numCotacao + ' gerada com sucesso, mas os anexos não foram incluídos. Por favor, tente anexar os documentos novamente!',\n 'error', LogFrontFuncionalidade.Cotacao, Operacao.Upload, alteracoes);\n }\n });\n }\n\n AlterarStatus(status: string) {\n // TODO: Verificar porque ID da cotação está nulo mesmo quando atribuido no OnInit\n this.cotacao.Status = (status == 'A') ? 'ACEITA' : 'REJEITA';\n this.cotacao.IdUsuario = this._appService.UsuarioLogado.UsuarioIDeCargo;\n this.cotacao.IdCotacao = this.cotacao.numCotacao;\n\n if ((this.cotacao.Status == 'REJEITA') && ((this.cotacao.obsComplementar == undefined) || (this.cotacao.obsComplementar.length == 0))) {\n this._msgService.addMessage('Cotação', 'Informe o motivo da recusa!', 'error', LogFrontFuncionalidade.Cotacao, Operacao.Alteracao, this.cotacao);\n }\n else {\n this._cotacaoService.AlterarCotacao(this.cotacao)\n .subscribe(result => {\n if (result != null) {\n this._msgService.addMessageRedirect('Cotação', 'Cotação atualizada com sucesso', 'success');\n this._router.navigate(['cotacao']);\n }\n // else {\n // this._msgService.addMessage('Cotação', 'Erro ao atualizar cotação', 'error');\n // }\n });\n }\n }\n\n cssClass(step: number): string {\n if (step < this.currentStep)\n return 'completed';\n else\n if (step == this.currentStep)\n return 'active';\n else\n return 'disable';\n }\n\n iconClass(step: number): string {\n if (step < this.currentStep)\n return 'icon icon-check';\n else\n return 'icon icon-circle-o';\n }\n\n mudarStep(step: number) {\n\n if (!this.novaCotacao) {\n this.currentStep = step;\n }\n else {\n let validacao: boolean;\n\n //limpa mensagens de erros\n this._msgService.clearMessage();\n\n if (this.currentStep < step) {\n switch (this.currentStep) {\n case 1:\n validacao = this.ValidaStep1();\n // Redmine 5661\n if (this.cotacao.idMunicColeta) {\n this.municipioColeta = this.obtemMunicipioDaLista(this.cotacao.idMunicColeta);\n }\n\n if (this.cotacao.idMunicEntrega) {\n this.municipioEntrega = this.obtemMunicipioDaLista(this.cotacao.idMunicEntrega);\n }\n break;\n case 2:\n validacao = this.ValidaStep2();\n break;\n case 3:\n validacao = this.ValidaStep3();\n break;\n }\n if (validacao)\n this.currentStep = step;\n }\n else\n this.currentStep = step;\n }\n\n if (this.currentStep == step) {\n setTimeout(() => { this.topo.nativeElement.scrollIntoView(); });\n }\n }\n\n private obtemMunicipioDaLista(idMunicipio): Municipio {\n return this.municipios.find(x => x.Codigo == idMunicipio);\n }\n\n public ObterTipoContainers(cotacao: Cotacao) {\n this.loadingContainers = true;\n this._sharedService.getTipoContainers(cotacao.idFamiliaProduto)\n .subscribe(items => {\n this.tipoContainers = [];\n items.forEach(item => {\n let tp: TipoContainer = new TipoContainer();\n this._sharedService.copyProperties(item, tp);\n this.tipoContainers.push(tp);\n });\n\n // DM #5602 Combobox Tipo de Contêiner\n this.idContainerSelecionado = cotacao.tipoDeContainer.Codigo + '|' + cotacao.tipoDeContainer.Tamanho;\n\n this.loadingContainers = false;\n });\n }\n\n public ObterTipoContainersPorIdFamiliaProduto(target: any = null) {\n var idFamiliaProduto = (target != undefined) ? target.value : null;\n this.flagOutrosProdutos = (idFamiliaProduto == 0); // 'OUTROS');\n //if (this.flagOutrosProdutos){\n // idFamiliaProduto = 0;\n // this.cotacao.idFamiliaProduto = 0;\n //}\n\n this.bloqueiaCargaExcesso = true;\n this.bloqueiaCargaRefrigerada = true;\n this.cotacao.cargaOver = false;\n this.cotacao.cargaRefrigerada = false;\n this.LimpaCamposCargaRefrigerada();\n this.LimpaCamposCargaExcesso();\n\n if (this.novaCotacao && !this.flagOutrosProdutos)\n this.cotacao.descFamiliaProduto = '';\n\n this.loadingContainers = true;\n this._sharedService.getTipoContainers(idFamiliaProduto)\n .subscribe(items => {\n this.tipoContainers = [];\n items.forEach(item => {\n let tp: TipoContainer = new TipoContainer();\n this._sharedService.copyProperties(item, tp);\n this.tipoContainers.push(tp);\n });\n this.loadingContainers = false;\n });\n }\n /* >>>>>> Gylci 23/06 >>>>>> Busca comentada pois o cliente não garante a origem dos dados >>>>>>\n public ObterCargaPerigosa() {\n if (this.cotacao.cargaPerigosa) {\n this.loadingCargaPerigosa = true;\n this._sharedService.getCargaPerigosa()\n .subscribe(m => {\n this.cargasPerigosas = m;\n\n if (this.cargasPerigosas != undefined) {\n this.cargasPerigosas.forEach(element => {\n let item = this.classes.find(i => i.Descricao.trim().toUpperCase() == element.Classe.trim().toUpperCase());\n if (item == undefined) {\n let cl: Classe = new Classe();\n cl.Descricao = element.Classe;\n this.classes.push(cl);\n }\n });\n\n this.classes.sort((a: Classe, b: Classe) => {\n if (a.Descricao < b.Descricao) {\n return -1;\n } else if (a.Descricao > b.Descricao) {\n return 1;\n } else {\n return 0;\n }\n });\n }\n this.loadingCargaPerigosa = false;\n });\n }\n }\n\n public ObterCargaPerigosaPorClasse(classe: string) {\n this.cargasPerigosasByClass = this.cargasPerigosas.filter(x => x.Classe.trim().toUpperCase() == classe.trim().toUpperCase());\n\n this.cargasPerigosasByClass.sort((a: CargaIMO, b: CargaIMO) => {\n if (a.NumUNO < b.NumUNO) {\n return -1;\n } else if (a.NumUNO > b.NumUNO) {\n return 1;\n } else {\n return 0;\n }\n });\n }\n <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< */\n\n public ObterMercadorias() {\n\n this.loadingMercadorias = true;\n this._sharedService.getMercadorias()\n .subscribe(m => {\n this.loadingMercadorias = false;\n this.mercadorias = m;\n this.mercadorias.push({Codigo: 0, Descricao: 'OUTROS' });\n });\n }\n\n public ObterPortos() {\n this._sharedService.getPortos()\n .subscribe(m => {\n this.portos = m;\n });\n }\n\n public ObterMunicipios() {\n this.loadingMunicipios = true;\n this._sharedService.getMunicipios()\n .subscribe(m => {\n this.municipios = m;\n this.loadingMunicipios = false;\n });\n }\n\n onChangeCampo(campo: string, valor: string) {\n switch (campo) {\n case 'embalagem':\n this.cotacao.tipoEmbalagemCarga = (valor != 'Outros') ? valor : '';\n break;\n\n case 'veiculo-origem':\n this.cotacao.VeiculoEspecialOri = (valor != 'Outros') ? valor : '';\n break;\n\n case 'veiculo-destino':\n this.cotacao.VeiculoEspecialDes = (valor != 'Outros') ? valor : '';\n break;\n }\n }\n\n ExibeBotoesAceite(): boolean {\n return ((this.cotacao.statusCotacao != undefined) && (this.cotacao.statusCotacao.toUpperCase() == 'AGUARDANDO APROVAÇÃO DO CLIENTE'));\n }\n\n ExibeBotaoSolicitar(): boolean {\n return ((this.cotacao.statusCotacao == undefined) || (this.cotacao.statusCotacao.toUpperCase() == ''));\n }\n\n containerTankSelecionado(): boolean{\n return this.idContainerSelecionado && this.idContainerSelecionado.startsWith('5|');\n }\n\n DisponibilizaCargaEspecial() {\n if (this.containerTankSelecionado()){\n this.cotacao.shipperOwnContainer = true;\n this.cotacao.oriPorto = true;\n this.cotacao.desPorto = true;\n this.bloqueiaModalPorta = true;\n }\n else{\n this.cotacao.modal = undefined;\n this.cotacao.shipperOwnContainer = false;\n this.bloqueiaModalPorta = false;\n }\n if (((this.tipoContainers != undefined) && (this.tipoContainers.length > 0)) || this.duplicar) {\n var tipocontainer: TipoContainer;\n if (this.duplicar)\n tipocontainer = this.cotacao.tipoDeContainer;\n else\n tipocontainer = this.tipoContainers.find(t => t.idContainer == this.idContainerSelecionado);\n\n if (tipocontainer && tipocontainer.Desc_resumida) {\n if ((tipocontainer.Desc_resumida.indexOf('OT') > 0) || (tipocontainer.Desc_resumida.indexOf('OH') > 0) ||\n (tipocontainer.Desc_resumida.indexOf('FR') > 0) || (tipocontainer.Desc_resumida.indexOf('FH') > 0)) {\n this.bloqueiaCargaExcesso = false;\n this.bloqueiaCargaRefrigerada = true;\n if (!this.duplicar) {\n this.cotacao.cargaRefrigerada = false;\n this.cotacao.cargaOver = true;\n this.LimpaCamposCargaRefrigerada();\n }\n\n if ((tipocontainer.Desc_resumida.indexOf('OT') > 0) || (tipocontainer.Desc_resumida.indexOf('OH') > 0)) {\n this.bloqueiaOpenTop = true;\n if (!this.duplicar) {\n this.cotacao.CargaOverFrontal = 0;\n this.cotacao.CargaOverTraseiro = 0;\n this.cotacao.CargaOverDireita = 0;\n this.cotacao.CargaOverEsquerda = 0;\n }\n }\n else\n this.bloqueiaOpenTop = false;\n }\n else if ((tipocontainer.Desc_resumida.indexOf('RF') > 0) || (tipocontainer.Desc_resumida.indexOf('RH') > 0)) {\n this.bloqueiaCargaExcesso = true;\n this.bloqueiaCargaRefrigerada = false;\n if (!this.duplicar) {\n this.cotacao.cargaOver = false;\n this.cotacao.cargaRefrigerada = true;\n this.cotacao.tempCargaRefrigerada = undefined;\n this.LimpaCamposCargaExcesso();\n }\n }\n else {\n this.bloqueiaCargaExcesso = true;\n this.bloqueiaCargaRefrigerada = true;\n if (!this.duplicar) {\n this.cotacao.cargaOver = false;\n this.cotacao.cargaRefrigerada = false;\n this.LimpaCamposCargaRefrigerada();\n this.LimpaCamposCargaExcesso();\n }\n }\n }\n }\n }\n\n ValidarEnvioCotacao(): boolean {\n return this.ValidaStep1() && this.ValidaStep2() && this.ValidaStep3();\n }\n\n ValidaStep1(): boolean {\n let msgErro: string[] = [];\n\n if ((!this.cnpjdropdown.isUsuarioAdmin) && ((!this.cnpjdropdown.MaisDe1Cnpj))) {\n this.cotacao.cnpjCli = this.cnpjdropdown.cnpjsSelecionados.toString();\n this.cotacao.ieCli = this.cnpjdropdown.inscrEstadualSelecionada;\n }\n else {\n if (!this.cnpjdropdown.isUsuarioAdmin) {\n if ((this.cnpjdropdown.cnpjsSelecionados == undefined) || (this.cnpjdropdown.inscrEstadualSelecionada == undefined) ||\n (this.cnpjdropdown.inscrEstadualSelecionada == '')) {\n msgErro.push('Informe o CNPJ e Inscrição Estadual!');\n }\n else {\n this.cotacao.cnpjCli = this.cnpjdropdown.cnpjsSelecionados.toString();\n this.cotacao.ieCli = this.cnpjdropdown.inscrEstadualSelecionada;\n }\n }\n else {\n if ((this.cnpjdropdown.CNPJDigitado == undefined) || (this.cnpjdropdown.CNPJDigitado.trim() == '') ||\n (this.cnpjdropdown.inscrEstadualSelecionada == undefined) || (this.cnpjdropdown.inscrEstadualSelecionada == '')) {\n msgErro.push('Informe o CNPJ e Inscrição Estadual!');\n }\n else {\n this.cotacao.cnpjCli = this.cnpjdropdown.CNPJDigitado;\n this.cotacao.ieCli = this.cnpjdropdown.inscrEstadualSelecionada;\n }\n }\n }\n\n //Step 1 - Operação Comercial\n if ((this.cotacao.tipoOperacaoComercial == undefined) || (this.cotacao.tipoOperacaoComercial == '')) {\n msgErro.push('Selecione o tipo de Operação Comercial!');\n }\n\n //Step 1 - Pagador do Frete\n if ((this.cotacao.tipo == undefined) || (this.cotacao.tipo == '')) {\n msgErro.push('Selecione o Pagador do Frete!');\n }\n\n //Step 1 - Produto / Mercadoria\n if ( (this.cotacao.idFamiliaProduto == undefined) ||\n ((this.cotacao.idFamiliaProduto == 0) && ((this.cotacao.descFamiliaProduto == undefined) || (this.cotacao.descFamiliaProduto == '')) ) ) {\n msgErro.push('Selecione um Produto! Se \\'Outros\\', detalhe!');\n }\n else {\n if (this.cotacao.idFamiliaProduto == 0)\n this.cotacao.outrosProdutos = this.cotacao.descFamiliaProduto;\n }\n\n //Step 1 - Tipo do contêiner\n //if ((this.cotacao.idCategoriaContainer == undefined) || (this.cotacao.idCategoriaContainer == 0)) {\n if ((this.idContainerSelecionado == '') || (this.idContainerSelecionado == '0')) {\n msgErro.push('Selecione o Tipo de Contêiner!');\n }\n else {\n var tipocontainer: TipoContainer;\n if ((this.tipoContainers != undefined) && (this.tipoContainers.length > 0)) {\n tipocontainer = this.tipoContainers.find(t => t.idContainer == this.idContainerSelecionado);\n this.cotacao.idCategoriaContainer = tipocontainer.Codigo;\n this.cotacao.tamanhoContainer = tipocontainer.Tamanho;\n\n if (tipocontainer && tipocontainer.Desc_resumida) {\n /*\n if (((tipocontainer.Desc_resumida.indexOf('OT') > 0) || (tipocontainer.Desc_resumida.indexOf('OH') > 0) ||\n (tipocontainer.Desc_resumida.indexOf('FR') > 0) || (tipocontainer.Desc_resumida.indexOf('FH') > 0)) &&\n (!this.cotacao.cargaOver)) {\n msgErro.push('Para esse Tipo de Contêiner é obrigatória a seleção da Carga em Excesso!');\n }\n */\n if ((tipocontainer.Desc_resumida.indexOf('OT') < 0) && (tipocontainer.Desc_resumida.indexOf('OH') < 0) &&\n (tipocontainer.Desc_resumida.indexOf('FR') < 0) && (tipocontainer.Desc_resumida.indexOf('FH') < 0) &&\n (this.cotacao.cargaOver)) {\n msgErro.push('Para Carga em Excesso, o Tipo de Contêiner deve ser OT, OH, FR ou FH!');\n }\n if (((tipocontainer.Desc_resumida.indexOf('RF') > 0) || (tipocontainer.Desc_resumida.indexOf('RH') > 0)) &&\n (!this.cotacao.cargaRefrigerada)) {\n msgErro.push('Para esse Tipo de Contêiner é obrigatória a seleção da Carga Refrigerada!');\n }\n if ((tipocontainer.Desc_resumida.indexOf('RF') < 0) && (tipocontainer.Desc_resumida.indexOf('RH') < 0) &&\n (this.cotacao.cargaRefrigerada)) {\n msgErro.push('Para Carga Refrigerada, o Tipo de Contêiner deve ser RF ou RH!');\n }\n }\n }\n }\n\n //Step 1 - Embalagem de Cargas\n if ((this.cotacao.tipoEmbalagemCarga == undefined) || (this.cotacao.tipoEmbalagemCarga.trim() == '')) {\n if (this.cotacao.flagEmbalagemEOutros)\n msgErro.push('Detalhe o Tipo de Embalagem da Carga - Outros!');\n else\n msgErro.push('Selecione o Tipo de Embalagem da Carga!');\n }\n\n //Step 1 - Temperatura (se flagCargaRefrigerada =='S')\n if ((this.cotacao.flagCargaRefrigerada == 'S') &&\n ((this.cotacao.tempCargaRefrigerada == undefined))) { //|| (this.cotacao.tempCargaRefrigerada == 0))) {\n msgErro.push('Informe a Temperatura!');\n }\n else {\n // Verifica se é inteiro\n //if ((this.cotacao.tempCargaRefrigerada != undefined) && (!(this.cotacao.tempCargaRefrigerada % 1 === 0)))\n if (!this._sharedService.validaInteiro(this.cotacao.tempCargaRefrigerada))\n msgErro.push('A Temperatura deve ser um número inteiro!');\n else if (this.cotacao.tempCargaRefrigerada < -100 || this.cotacao.tempCargaRefrigerada > 100)\n msgErro.push('A Temperatura deve estar entre -100°C e 100°C!');\n }\n\n //Step1 - Observação Carga Refrigerada\n if ((this.cotacao.obsCargaRefrigerada != undefined) && (this.cotacao.obsCargaRefrigerada.length > 255)) {\n msgErro.push('Observação de carga refrigerada deve conter no máximo 255 caracteres!');\n }\n\n //Step 1 - Excesso de Carga (se flagCargaOver =='S')\n if ((this.cotacao.flagCargaOver == 'S') &&\n ((this.cotacao.CargaOverAltura == undefined) || (this.cotacao.CargaOverAltura == 0)) &&\n ((this.cotacao.CargaOverEsquerda == undefined) || (this.cotacao.CargaOverEsquerda == 0)) &&\n ((this.cotacao.CargaOverDireita == undefined) || (this.cotacao.CargaOverDireita == 0)) &&\n ((this.cotacao.CargaOverTraseiro == undefined) || (this.cotacao.CargaOverTraseiro == 0)) &&\n ((this.cotacao.CargaOverFrontal == undefined) || (this.cotacao.CargaOverFrontal == 0))) {\n msgErro.push('Informe o Excesso de Carga!');\n }\n else {\n // Carga com excesso, só é possível quando o contêiner selecionado é dos tipos Flat Rack ou Open Top,\n // sendo que o Open Top só pode ter excesso de altura.\n\n if (tipocontainer && tipocontainer.Desc_resumida) {\n if (((tipocontainer.Desc_resumida.indexOf('OT') > 0) || (tipocontainer.Desc_resumida.indexOf('OH') > 0)) &&\n (this.cotacao.flagCargaOver == 'S') &&\n (((this.cotacao.CargaOverAltura == undefined) || (this.cotacao.CargaOverAltura == 0)) ||\n !((this.cotacao.CargaOverEsquerda == undefined) || (this.cotacao.CargaOverEsquerda == 0)) ||\n !((this.cotacao.CargaOverDireita == undefined) || (this.cotacao.CargaOverDireita == 0)) ||\n !((this.cotacao.CargaOverTraseiro == undefined) || (this.cotacao.CargaOverTraseiro == 0)) ||\n !((this.cotacao.CargaOverFrontal == undefined) || (this.cotacao.CargaOverFrontal == 0)))) {\n msgErro.push('Para contêineres Open Top o excesso de carga deve ser apenas de altura!');\n }\n }\n\n if (!this._sharedService.validaInteiro(this.cotacao.CargaOverAltura)) {\n //console.log('erro altura');\n msgErro.push('O excesso de Altura deve ser um número inteiro!');\n }\n //else\n // console.log('altura ok');\n\n if (!this._sharedService.validaInteiro(this.cotacao.CargaOverEsquerda)){\n //console.log('erro esquerda');\n msgErro.push('O excesso à Esquerda deve ser um número inteiro!');\n }\n //else\n // console.log('esquerda ok');\n\n if (!this._sharedService.validaInteiro(this.cotacao.CargaOverDireita)){\n // console.log('erro direita');\n msgErro.push('O excesso à Direta deve ser um número inteiro!');\n }\n //else\n // console.log('direita ok');\n\n if (!this._sharedService.validaInteiro(this.cotacao.CargaOverFrontal)){\n //console.log('erro frontal');\n msgErro.push('O excesso Frontal deve ser um número inteiro!');\n }\n //else\n // console.log('frontal ok');\n\n if (!this._sharedService.validaInteiro(this.cotacao.CargaOverTraseiro)){\n // console.log('erro traseiro');\n msgErro.push('O excesso Traseiro deve ser um número inteiro!');\n }\n //else\n // console.log('traseiro ok');\n }\n\n //Step1 - Observação Carga Excesso\n if ((this.cotacao.obsCargaOver != undefined) && (this.cotacao.obsCargaOver.length > 255)) {\n msgErro.push('Observação de carga excesso deve conter no máximo 255 caracteres!');\n }\n\n //Step 1 - Classe (se flagCargaPerigosa =='S')\n if (this.cotacao.flagCargaPerigosa == 'S') {\n if (!this.cotacao.classe)\n msgErro.push('Informe a Classe!');\n if (!this.cotacao.numeroUNO)\n msgErro.push('Informe o Número UNO!');\n if (!this.cotacao.sequencia)\n msgErro.push('Informe a Sequência!');\n if (!this.cotacao.properShippingName)\n msgErro.push('Informe o PSN!');\n }\n\n //Step1 - Observação Carga Perigosa\n if ((this.cotacao.obsCargaPerigosa) && (this.cotacao.obsCargaPerigosa.length > 255)) {\n msgErro.push('Observação de carga perigosa deve conter no máximo 255 caracteres!');\n }\n\n //Step 1 - Carga Refrigerada e Carga com Excesso não podem ser selecionadas pelo cliente na mesma cotação ou booking.\n if ((this.cotacao.flagCargaOver == 'S') && (this.cotacao.flagCargaRefrigerada == 'S')) {\n msgErro.push('Carga Refrigerada e Carga com Excesso não podem ser selecionadas simultaneamente na mesma cotação!');\n }\n\n //Step 1 - Valor da Mercadoria\n if ((this.cotacao.valMercadoria == undefined) || (this.cotacao.valMercadoria == 0)) {\n msgErro.push('Informe o Valor da Mercadoria!');\n }\n\n //Step 1 - Peso da Carga por Contêiner\n if ((this.cotacao.pesoContainer == undefined) || (this.cotacao.pesoContainer == 0)) {\n msgErro.push('Informe o Peso da Carga por Contêiner!');\n }\n\n //Step 1 - Quantidade de Contêineres\n if ((this.cotacao.qtdeContainer == undefined) || (this.cotacao.qtdeContainer == 0)) {\n msgErro.push('Informe a Quantidade de Contêineres Mensal!');\n }\n else {\n if (this.cotacao.qtdeContainer > 300)\n msgErro.push('A Quantidade de Contêineres Mensal não pode ser maior que 300!');\n\n if (!this._sharedService.validaInteiro(this.cotacao.qtdeContainer) || this.cotacao.qtdeContainer <= 0)\n msgErro.push('A Quantidade de Contêineres Mensal deve ser um número inteiro maior que 0 (zero)!');\n }\n\n //Step 1 - Periodicidade\n if ((this.cotacao.periodicidade == undefined) || (this.cotacao.periodicidade == '')) {\n msgErro.push('Selecione a Periodicidade!');\n }\n\n //Step 1 - Modal Origem\n if (this.cotacao.oriPorto == undefined) {\n msgErro.push('Selecione o Modal de Origem!');\n }\n\n //Step 1 - Modal Destino\n if (this.cotacao.desPorto == undefined) {\n msgErro.push('Selecione o Modal de Destino!');\n }\n\n //Se houve erro, exibe mensagens\n if (msgErro.length > 0) {\n this._msgService.addMessageArray('Cotação', msgErro, 'error', LogFrontFuncionalidade.Cotacao, Operacao.Inclusao, this.cotacao);\n }\n\n return (msgErro.length == 0);\n\n }\n\n ValidaStep2(): boolean {\n let msgErro: string[] = [];\n\n //Step 2 - Porto de Origem\n if ((this.cotacao.oriPorto) && ((this.cotacao.idPortoOri == undefined) || (this.cotacao.idPortoOri == 0))) {\n msgErro.push('Selecione o Porto de Origem!');\n }\n\n if (!this.cotacao.oriPorto) {\n //Step 2 - Cidade de Origem\n if (this.municipioColeta == undefined) {\n msgErro.push('Informe o Município para Coleta!');\n }\n\n //Step 2 - Estrutura para Ova\n if ((this.cotacao.flagEstruturaOvaContainer == undefined) || (this.cotacao.flagEstruturaOvaContainer == '')) {\n msgErro.push('Informe se Possui Estrutura para Estufagem do Contêiner!');\n }\n\n //Step 2 - Veículo Especial Origem\n if ((this.cotacao.flagEstruturaOvaContainer == 'N') &&\n ((this.cotacao.VeiculoEspecialOri == '') || (this.cotacao.VeiculoEspecialOri == undefined))) {\n if (!this.cotacao.flagVeiculoDesEOutros)\n msgErro.push('Informe Veículo Especial de Origem!');\n else\n msgErro.push('Informe Detalhes do Veículo Especial de Origem!');\n }\n else {\n if ((this.cotacao.flagEstruturaOvaContainer == 'N') && (this.cotacao.VeiculoEspecialOri != '') &&\n ((this.cotacao.metrosCubicosOri == undefined) || (this.cotacao.metrosCubicosOri == 0))) {\n msgErro.push('Informe os metros cúbicos!');\n }\n else {\n // Verifica se é inteiro\n if ((this.cotacao.flagEstruturaOvaContainer == 'N') && (!(this.cotacao.metrosCubicosOri % 1 === 0)))\n msgErro.push('Os metros cúbicos devem ser um número inteiro!');\n }\n }\n\n //Step 2 - Estufagem em Terminal\n if ((this.cotacao.flagEstruturaOvaContainer == 'N') && ((this.cotacao.flagOvaTerminal == undefined) || (this.cotacao.flagOvaTerminal == ''))) {\n msgErro.push('Informe se Estufagem em Terminal!');\n }\n\n //Step 2 - Tempo Estimado para Estufagem\n if ((this.cotacao.tempoHrEstimadoOva == undefined) || (this.cotacao.tempoHrEstimadoOva == 0)) {\n msgErro.push('Informe o Tempo Estimado para Estufagem!');\n }\n\n //Step 2 - Responsável pela Estufagem na Origem\n //if (this.cotacao.responsavelEstufagem == undefined) {\n if (this.cotacao.respOva == undefined) {\n msgErro.push('Selecione o Responsável pela Estufagem na Origem!');\n }\n else {\n this.cotacao.equipeIndicaCliOri = (this.cotacao.responsavelEstufagem == 'Aliança com equipe local indicada pelo cliente');\n }\n\n //Step 2 - Quantidade de Ajudantes\n if ((this.cotacao.responsavelEstufagem != undefined) && (this.cotacao.responsavelEstufagem == 'Aliança com equipe própria') &&\n ((this.cotacao.qtdeAjudanteOva == undefined) || (this.cotacao.qtdeAjudanteOva == 0))) {\n msgErro.push('Informe a Quantidade de Ajudantes!');\n }\n\n //Step 2 - Material de Peação\n if ((this.cotacao.responsavelEstufagem != undefined) && (this.cotacao.responsavelEstufagem == 'Aliança com equipe própria') &&\n ((this.cotacao.flagMaterialPeacao == undefined) || (this.cotacao.flagMaterialPeacao == ''))) {\n msgErro.push('Informe se Material de Peação!');\n }\n\n //Step 2 - Descrição do Material de Peação\n if ((this.cotacao.flagMaterialPeacao == 'S') &&\n ((this.cotacao.descMaterialPeacao == undefined) || (this.cotacao.descMaterialPeacao.trim() == ''))) {\n msgErro.push('Detalhe o Material de Peação!');\n }\n\n //Step 2 - Custo Precificação\n // TODO: DM - conforme solicitação da Mari, devido campo valCustoPrecificacaoOri ter sido comentado, foi necessário também comentar a validação do mesmo\n // if ((this.cotacao.responsavelEstufagem != undefined) && (this.cotacao.responsavelEstufagem == 'Aliança com equipe local indicada pelo cliente') &&\n // ((this.cotacao.valCustoPrecificacaoOri == undefined) || (this.cotacao.valCustoPrecificacaoOri == 0))) {\n // msgErro.push('Informe o Custo Considerado para Precificação!');\n // }\n\n //Step 2 - Valor da Equipe indicada pelo cliente\n //if ((this.cotacao.flagEquipeIndicaCliOri != undefined) && (this.cotacao.flagEquipeIndicaCliOri == 'S') &&\n if ((this.cotacao.responsavelEstufagem != undefined) && (this.cotacao.responsavelEstufagem == 'Aliança com equipe local indicada pelo cliente') &&\n ((this.cotacao.valEquipeServEspOri == undefined) || (this.cotacao.valEquipeServEspOri == 0))) {\n msgErro.push('Informe o Valor da Equipe indicada pelo cliente!');\n }\n }\n\n //Se houve erro, exibe mensagens\n if (msgErro.length > 0) {\n this._msgService.addMessageArray('Cotação', msgErro, 'error', LogFrontFuncionalidade.Cotacao, Operacao.Inclusao, this.cotacao);\n }\n else {\n // se for origem PortO, atribui município do porto no componente cotação\n if (this.cotacao.oriPorto) {\n var portoSelecionado: Porto;\n portoSelecionado = this.portos.find(p => p.Codigo == this.cotacao.idPortoOri);\n\n var municipioSelecionado: Municipio;\n municipioSelecionado = this.municipios.find(x => x.Descricao.trim().toUpperCase() == portoSelecionado.Municipio.trim().toUpperCase() &&\n x.UF.trim().toUpperCase() == portoSelecionado.UF.trim().toUpperCase());\n this.cotacao.idMunicColeta = municipioSelecionado.Codigo;\n this.cotacao.idMunicOri = municipioSelecionado.Codigo;\n this.cotacao.municOri = municipioSelecionado.Descricao;\n this.cotacao.municColeta = municipioSelecionado.Descricao;\n this.cotacao.ufColeta = municipioSelecionado.UF;\n this.cotacao.ufMunicOri = municipioSelecionado.UF;\n }\n }\n\n return (msgErro.length == 0);\n }\n\n ValidaStep3(): boolean {\n let msgErro: string[] = [];\n\n // Step 3 - Porto de Destino\n if ((this.cotacao.desPorto) && ((this.cotacao.idPortoDes == undefined) || (this.cotacao.idPortoDes == 0))) {\n msgErro.push('Selecione o Porto de Destino!');\n }\n\n if (!this.cotacao.desPorto) {\n //Step 3 - Cidade de Destino\n if (this.municipioEntrega == undefined) {\n msgErro.push('Informe o Município para Entrega!');\n }\n\n if (this.municipioColeta == this.municipioEntrega){\n msgErro.push('O Município para Entrega não pode ser o mesmo da Coleta!');\n }\n\n //Step 3 - Estrutura para Desova\n if ((this.cotacao.flagEstruturaDesovaContainer == undefined) || (this.cotacao.flagEstruturaDesovaContainer == '')) {\n msgErro.push('Informe se Possui Estrutura para Desova do Contêiner!');\n }\n\n //Step 3 - Veículo Especial de Destino\n if ((this.cotacao.flagEstruturaDesovaContainer == 'N') &&\n ((this.cotacao.VeiculoEspecialDes == '') || (this.cotacao.VeiculoEspecialDes == undefined))) {\n if (!this.cotacao.flagVeiculoDesEOutros)\n msgErro.push('Informe Veículo Especial de Destino!');\n else\n msgErro.push('Informe Detalhes do Veículo Especial de Destino!');\n }\n else {\n if ((this.cotacao.flagEstruturaDesovaContainer == 'N') && (this.cotacao.VeiculoEspecialDes != '') &&\n ((this.cotacao.metrosCubicosDes == undefined) || (this.cotacao.metrosCubicosDes == 0))) {\n msgErro.push('Informe os metros cúbicos!');\n }\n else {\n // Verifica se é inteiro\n if ((this.cotacao.flagEstruturaDesovaContainer == 'N') && (!(this.cotacao.metrosCubicosDes % 1 === 0)))\n msgErro.push('Os metros cúbicos devem ser um número inteiro!');\n }\n }\n\n //Step 3 - Responsável pela Desova no Destino\n if ((this.cotacao.respEstufagemDes == undefined) || (this.cotacao.respEstufagemDes == '')) {\n msgErro.push('Selecione o Responsável pela Desova no Destino!');\n }\n else {\n this.cotacao.equipeIndicaCliDes = (this.cotacao.respEstufagemDes == 'Aliança com equipe local indicada pelo cliente');\n }\n\n //Step 3 - Tempo Estimado para Desova\n if ((this.cotacao.tempoHrEstimadodesova == undefined) || (this.cotacao.tempoHrEstimadodesova == 0)) {\n msgErro.push('Informe o Tempo Estimado para Desova!');\n }\n\n //Step 3 - Quantidade de Ajudantes\n if ((this.cotacao.respEstufagemDes != undefined) && (this.cotacao.respEstufagemDes != '') &&\n (this.cotacao.respEstufagemDes == 'Aliança com equipe própria') &&\n ((this.cotacao.qtdeAjudantedesova == undefined) || (this.cotacao.qtdeAjudantedesova == 0))) {\n msgErro.push('Informe a Quantidade de Ajudantes!');\n }\n\n //Step 3 - Material Especial para Desova\n if ((this.cotacao.respEstufagemDes != undefined) && (this.cotacao.respEstufagemDes != '') &&\n (this.cotacao.respEstufagemDes == 'Aliança com equipe própria') &&\n ((this.cotacao.flagMaterialEspecialDesova == undefined) || (this.cotacao.flagMaterialEspecialDesova == ''))) {\n msgErro.push('Informe se Material Especial para Desova !');\n }\n\n //Step 3 - Descrição do Material Especial para Desova\n if ((this.cotacao.flagMaterialEspecialDesova == 'S') &&\n ((this.cotacao.materialEspecialDesova == undefined) || (this.cotacao.materialEspecialDesova.trim() == ''))) {\n msgErro.push('Detalhe o Material Especial para Desova!');\n }\n\n //Step 3 - Custo Precificação\n // TODO: DM - conforme solicitação da Mari, devido campo valCustoPrecificacaoOri ter sido comentado, foi necessário também comentar a validação do mesmo\n // if ((this.cotacao.respEstufagemDes != undefined) && (this.cotacao.respEstufagemDes != '') &&\n // (this.cotacao.respEstufagemDes == 'Aliança com equipe local indicada pelo cliente') &&\n // ((this.cotacao.valCustoPrecificacaoDes == undefined) || (this.cotacao.valCustoPrecificacaoDes == 0))) {\n // msgErro.push('Informe o Custo Considerado para Precificação!');\n // }\n\n //Step 3 - Valor da Equipe indicada pelo cliente\n //if ((this.cotacao.flagEquipeIndicaCliDes != undefined) && (this.cotacao.flagEquipeIndicaCliDes != \"\") &&\n //(this.cotacao.flagEquipeIndicaCliDes == 'S') &&\n if ((this.cotacao.respEstufagemDes != undefined) && (this.cotacao.respEstufagemDes != '') &&\n (this.cotacao.respEstufagemDes == 'Aliança com equipe local indicada pelo cliente') &&\n ((this.cotacao.valEquipeServEspDes == undefined) || (this.cotacao.valEquipeServEspDes == 0))) {\n msgErro.push('Informe o Valor da Equipe indicada pelo cliente!');\n }\n }\n\n //Step3 - Observação Geral\n if ((this.cotacao.obsGeral != undefined) && (this.cotacao.obsGeral.length > 255)) {\n msgErro.push('Informações Complementares deve conter no máximo 255 caracteres!');\n }\n\n //Step3 - Observação Complementar\n if ((this.cotacao.obsComplementar != undefined) && (this.cotacao.obsComplementar.length > 255)) {\n msgErro.push('Observações Aceite/Rejeição deve conter no máximo 255 caracteres!');\n }\n\n //Se houve erro, exibe mensagens\n if (msgErro.length > 0) {\n this._msgService.addMessageArray('Cotação', msgErro, 'error', LogFrontFuncionalidade.Cotacao, Operacao.Inclusao, this.cotacao);\n }\n else {\n //se for destino PortO, atribui município do porto no componente cotação\n if (this.cotacao.desPorto) {\n var portoSelecionado: Porto;\n portoSelecionado = this.portos.find(p => p.Codigo == this.cotacao.idPortoDes);\n\n var municipioSelecionado: Municipio;\n municipioSelecionado = this.municipios.find(x => x.Descricao.trim().toUpperCase() == portoSelecionado.Municipio.trim().toUpperCase() &&\n x.UF.trim().toUpperCase() == portoSelecionado.UF.trim().toUpperCase());\n this.cotacao.idMunicEntrega = municipioSelecionado.Codigo;\n this.cotacao.idMunicDes = municipioSelecionado.Codigo;\n this.cotacao.municDes = municipioSelecionado.Descricao;\n this.cotacao.municEntrega = municipioSelecionado.Descricao;\n this.cotacao.ufEntrega = municipioSelecionado.UF;\n this.cotacao.ufMunicDes = municipioSelecionado.UF;\n }\n }\n\n return (msgErro.length == 0);\n }\n\n LimpaCamposCargaRefrigerada() {\n if (!this.cotacao.cargaRefrigerada) {\n this.cotacao.tempCargaRefrigerada = undefined; // 0;\n this.cotacao.obsCargaRefrigerada = '';\n this.cotacao.gensetOri = false;\n this.cotacao.gensetDes = false;\n }\n }\n\n LimpaCamposCargaExcesso() {\n if (!this.cotacao.cargaOver) {\n this.cotacao.CargaOverAltura = 0;\n this.cotacao.CargaOverEsquerda = 0;\n this.cotacao.CargaOverDireita = 0;\n this.cotacao.CargaOverTraseiro = 0;\n this.cotacao.CargaOverFrontal = 0;\n this.cotacao.obsCargaOver = '';\n }\n }\n\n LimpaCamposCargaPerigosa() {\n if (!this.cotacao.cargaPerigosa) {\n this.cotacao.classe = '';\n this.cotacao.numeroUNO = '';\n this.cotacao.sequencia = '';\n this.cotacao.properShippingName = '';\n this.cotacao.obsCargaPerigosa = '';\n }\n }\n\n AlterouCamposEstruturaOva() {\n if (this.cotacao.estruturaOvaContainer){\n this.cotacao.veiculoOrigem = '';\n this.cotacao.metrosCubicosOri = 0;\n this.cotacao.ovaTerminal = false;\n }\n else\n this.cotacao.ovaTerminal = true;\n }\n\n get bloqueiaEstufagemEmTerminal(): boolean {\n return !this.cotacao.estruturaOvaContainer;\n }\n\n AlterouCamposEstruturaDesova() {\n if (this.cotacao.estruturaDesovaContainer){\n this.cotacao.veiculoDestino = '';\n this.cotacao.metrosCubicosDes = 0;\n this.cotacao.desovaTerminal = false;\n }\n else\n this.cotacao.desovaTerminal = true;\n }\n\n get bloqueiaDesovaEmTerminal(): boolean {\n return !this.cotacao.estruturaDesovaContainer;\n }\n\n LimpaCamposRespOva() {\n // if (this.cotacao.responsavelEstufagem != 'Aliança com equipe local indicada pelo cliente') {\n // this.cotacao.valCustoPrecificacaoOri = 0;\n // }\n\n if (this.cotacao.responsavelEstufagem != 'Aliança com equipe própria') {\n this.cotacao.qtdeAjudanteOva = 0;\n this.cotacao.descMaterialPeacao = '';\n this.cotacao.materialPeacao = undefined;\n this.cotacao.flagMaterialPeacao = '';\n }\n\n if (!this.cotacao.materialPeacao)\n this.cotacao.descMaterialPeacao = '';\n }\n\n LimpaCamposPeacao() {\n this.cotacao.descMaterialPeacao = '';\n }\n\n LimpaEquipeIndCliOri() {\n if (!this.cotacao.equipeIndicaCliOri)\n this.cotacao.valEquipeServEspOri = 0;\n }\n\n LimpaCamposRespDesova() {\n // if (this.cotacao.responsavelEstufagem != 'Aliança com equipe local indicada pelo cliente') {\n // this.cotacao.valCustoPrecificacaoOri = 0;\n // }\n\n if (this.cotacao.respEstufagemDes != 'Aliança com equipe própria') {\n this.cotacao.qtdeAjudantedesova = 0;\n this.cotacao.flagMaterialEspecialDesova = '';\n this.cotacao.materialEspecialDesovaFlag = undefined;\n this.cotacao.materialEspecialDesova = '';\n }\n\n if (!this.cotacao.materialEspecialDesovaFlag)\n this.cotacao.materialEspecialDesova = '';\n }\n\n LimpaCamposMaterialEspecial() {\n this.cotacao.materialEspecialDesova = '';\n }\n\n LimpaEquipeIndCliDes() {\n if (!this.cotacao.equipeIndicaCliDes)\n this.cotacao.valEquipeServEspDes = 0;\n }\n}\n","import {\n Component,\n OnInit,\n ViewChild,\n AfterViewInit,\n ViewChildren,\n} from \"@angular/core\";\nimport swal from \"sweetalert2\";\n\nimport { NavioViagem } from \"./../../_models/navioViagem\";\nimport { DoctoFatura } from \"app/_models/doctoFatura\";\nimport { DownloadArquivo } from \"../../_models/downloadArquivo\";\nimport { DoctoFaturaRequest } from \"../../_models/doctoFatura-request\";\nimport { NavioViagemRequest } from \"../../_models/navioViagem-request\";\nimport { DoctoFaturaArquivoRequest } from \"../../_models/doctoFaturaArquivo-request\";\n\nimport { AppService } from \"app/_services/app.service\";\nimport { SharedService } from \"../../_services/shared.service\";\nimport { MessageService } from \"./../../_services/message.service\";\nimport { DatepickerService } from \"../../_services/datepicker.service\";\nimport { NavioViagemService } from \"../../_services/navio-viagem.service\";\nimport { DocumentacaoService } from \"../../_services/documentacao.service\";\nimport { GrupoEconomicoService } from \"app/_services/grupo-economico.service\";\n\nimport { BaseComponent } from \"./../../shared/base.component\";\nimport { MessageComponent } from \"app/shared/message/message.component\";\nimport { ListaDocumentacaoComponent } from \"app/cliente/documentacao/lista-documentacao/lista-documentacao.component\";\nimport { FiltroDocumentacaoComponent } from \"app/cliente/documentacao/filtro-documentacao/filtro-documentacao.component\";\nimport { DateModel } from \"app/shared/ng2-datepicker/ng2-datepicker.component\";\nimport { AnalyticsService } from \"app/_services/analytics.service\";\nimport { AnalyticsTela } from \"../../_enums/analytics-tela\";\nimport { AnalyticsDownload } from \"../../_enums/analytics-download\";\nimport { AnalyticsOperacao } from \"../../_enums/analytics-operacao\";\n\nimport { Operacao } from \"app/_enums/operacao\";\nimport { LogFrontFuncionalidade } from \"app/_enums/log-front-funcionalidade\";\nimport { OkEntregaService } from \"app/_services/ok-entrega.service\";\nimport { ImagemNF } from \"app/_models/imagemNF\";\nimport { BaseService } from \"app/_services/base.service\";\nimport { OkEntregaConsultaLink } from \"app/_models/ok-entrega-consulta-link\";\nimport { ValidationResult } from \"app/_models/validation-result\";\nimport { DoctoFaturaArquivo } from \"app/_models/doctoFaturaArquivo\";\nimport { link } from \"fs\";\n\n@Component({\n selector: \"app-documentacao\",\n templateUrl: \"./documentacao.component.html\",\n styleUrls: [\"./documentacao.component.scss\"],\n})\nexport class DocumentacaoComponent\n extends BaseComponent\n implements OnInit, AfterViewInit\n{\n cnpjs: string;\n downloading: boolean = false;\n sending: boolean = false;\n loading: boolean = false;\n noresult: boolean = false;\n consulta: DoctoFaturaRequest;\n listaDocumentacao: DoctoFatura[];\n empty: boolean = true;\n eAdmin: boolean = this._appService.isAdmin();\n eCliente: boolean = this._appService.isCliente();\n maisDeUmCNPJ = this._appService.maisDeUmCNPJ();\n clicouSelecionarTodos: boolean = false;\n cssClassAdmin = \"\";\n viagens: NavioViagem[];\n\n @ViewChild(FiltroDocumentacaoComponent, { static: true })\n filtro: FiltroDocumentacaoComponent;\n @ViewChild(ListaDocumentacaoComponent, { static: true })\n lista: ListaDocumentacaoComponent;\n @ViewChild(MessageComponent, { static: true }) mensagem: MessageComponent;\n\n constructor(\n private _documentacaoService: DocumentacaoService,\n private _grupoService: GrupoEconomicoService,\n private _navioViagemService: NavioViagemService,\n private _datePickerService: DatepickerService,\n private _sharedService: SharedService,\n private _msgService: MessageService,\n private _appService: AppService,\n private _analyticsService: AnalyticsService,\n private _okEntregaService: OkEntregaService,\n private _baseService: BaseService\n ) {\n super();\n\n this._msgService.emitirMensagem.subscribe((msg) => {\n this.mensagem.mostrarMensagem(msg.tipo, msg.mensagem);\n });\n }\n\n ngOnInit() {\n this.cssClassAdmin =\n this.eAdmin || (this.eCliente && this.maisDeUmCNPJ)\n ? \"\"\n : \" customer-profile\";\n this.clicouSelecionarTodos = false;\n\n if (!this.eAdmin) {\n var usuario = this._appService.UsuarioLogado;\n this.cnpjs = usuario.CNPJs.join(\";\");\n this.cnpjAlterado(this.cnpjs);\n this.ObterDocumentacao();\n } else {\n console.log(\"this.filtro\", this.filtro);\n this.filtro.cnpjdropdown.cnpjsGrupos = localStorage.getItem(\"cnpjGrupos\");\n if (this.filtro.cnpjdropdown.cnpjsGrupos) {\n this.cnpjAlterado(this.filtro.cnpjdropdown.cnpjsGrupos);\n this.ObterDocumentacao();\n }\n }\n\n this._analyticsService.RegistrarAcesso(AnalyticsTela.Documentacao);\n }\n\n ngAfterViewInit(): void {\n this._grupoService.grupoEconomicoSelecionadoEvent.subscribe(\n (cnpjs: string) => {\n if (this.consulta && this.consulta.cnpjCli)\n if (cnpjs) this.clickPesquisar(this.consulta);\n else this.zeraPesquisa();\n else this.ObterDocumentacao();\n }\n );\n }\n\n clickEnviarArquivoEmail(dados: any) {\n this._msgService.clearMessage();\n this.sending = true;\n var arquivos = [];\n arquivos.push(dados.arquivo);\n this._analyticsService.RegistrarEmailDocumentacao(dados.arquivo);\n this._documentacaoService\n .enviaEmailArquivos(arquivos)\n .subscribe((sucesso) => {\n this.sending = false;\n if (sucesso) this.showSwal(\"E-mail enviado com sucesso!\");\n });\n }\n\n clickEnviarTodosEmail(doctoFatura: DoctoFatura) {\n this._msgService.clearMessage();\n this.sending = true;\n this._analyticsService.RegistrarEmailDocumentacaoTodos();\n this._documentacaoService\n .enviaEmailArquivos(doctoFatura.Arquivos)\n .subscribe((sucesso) => {\n this.sending = false;\n if (sucesso) this.showSwal(\"E-mail enviado com sucesso!\");\n });\n }\n\n enviarSelecionados() {\n this._msgService.clearMessage();\n this.sending = true;\n var selecionados = this.lista.listaDoctoFatura.filter((d) => d.selecionado);\n\n if (this.clicouSelecionarTodos)\n this._analyticsService.RegistrarOperacao(\n AnalyticsTela.Documentacao,\n AnalyticsOperacao.EmailAposSelecionarTodos\n );\n else this._analyticsService.RegistrarEmailDocumentacaoTodos();\n\n this._documentacaoService\n .enviaEmailSelecionados(selecionados)\n .subscribe((sucesso) => {\n this.sending = false;\n if (sucesso) this.showSwal(\"E-mail enviado com sucesso!\");\n });\n }\n\n clickDownloadArquivo(dados: any) {\n if (dados.arquivo.tipoArquivo === \"PDF Canhoto\") {\n let imagem = new ImagemNF(\n dados.arquivo.tipoArquivo,\n dados.arquivo.caminhoArquivo\n );\n\n this._okEntregaService.getPDFCanhotos([imagem]).subscribe((res) => {\n this._baseService.download(\n res[0],\n `canhoto-nf-${dados.arquivo.numNFe}.pdf`\n );\n });\n } else {\n this._msgService.clearMessage();\n this.downloading = true;\n this._analyticsService.RegistrarDownloadDocumentacao(dados.arquivo);\n this._documentacaoService\n .downloadArquivo(dados.arquivo)\n .subscribe((download) => {\n this.executarDownload(download);\n });\n }\n }\n\n clickDownloadTodosArquivos(doctoFatura: DoctoFatura) {\n this._msgService.clearMessage();\n this.downloading = true;\n this._analyticsService.RegistrarDownloadDocumentacaoTodos();\n this._documentacaoService\n .downloadTodos(doctoFatura.Arquivos)\n .subscribe((download) => {\n let dados = doctoFatura.Arquivos.find(\n (arquivo) => arquivo.tipoArquivo === \"PDF Canhoto\"\n );\n if (dados != null) {\n let imagem = new ImagemNF(dados.tipoArquivo, dados.caminhoArquivo);\n this._okEntregaService.getPDFCanhotos([imagem]).subscribe((res) => {\n this._baseService.addFileToZipAndDownload(\n this.b64toBlob(download.arquivo, \"application/octet-stream\", 512),\n res[0],\n `canhoto-nf-${dados.numNFe}.pdf`\n );\n });\n } else {\n this.executarDownload(download);\n }\n this.downloading = false;\n });\n }\n\n baixarCanhotos() {\n this._msgService.clearMessage();\n this.downloading = true;\n if (this.clicouSelecionarTodos)\n this._analyticsService.RegistrarOperacao(\n AnalyticsTela.Documentacao,\n AnalyticsOperacao.DownloadAposSelecionarTodos\n );\n else this._analyticsService.RegistrarDownloadDocumentacaoTodos();\n var selecionados = this.lista.listaDoctoFatura.filter((d) => d.selecionado);\n var consultas = selecionados.map(\n (selecionado) =>\n new OkEntregaConsultaLink(selecionado.numBooking, selecionado.numNFe)\n );\n this._okEntregaService\n .getLinkCanhotos(consultas)\n .subscribe((response: ValidationResult) => {\n this.validAndDownload(\n response,\n consultas.map((c) => c.numNF)\n );\n });\n }\n\n async baixarTodosSelecionados() {\n this._msgService.clearMessage();\n this.downloading = true;\n if (this.clicouSelecionarTodos)\n this._analyticsService.RegistrarOperacao(\n AnalyticsTela.Documentacao,\n AnalyticsOperacao.DownloadAposSelecionarTodos\n );\n else this._analyticsService.RegistrarDownloadDocumentacaoTodos();\n var selecionados = this.lista.listaDoctoFatura.filter((d) => d.selecionado);\n var consultas = selecionados.map(\n (selecionado) =>\n new OkEntregaConsultaLink(selecionado.numBooking, selecionado.numNFe)\n );\n const namesZips = [];\n let zips = [];\n\n var zipCo2 = await this.CertificadosCo2Zipados();\n if (zipCo2 != null) {\n zips.push(zipCo2);\n namesZips.push(\"certificados.zip\");\n }\n\n var zipCanhotos = await this.canhotosZipados(consultas);\n if (zipCanhotos != null) {\n zips.push(zipCanhotos);\n namesZips.push(\"canhotos.zip\");\n }\n\n this._documentacaoService\n .downloadSelecionados(selecionados)\n .subscribe((download) => {\n if(download != null){\n namesZips.push(\"documentos.zip\");\n zips.push(\n this.b64toBlob(\n download.arquivo,\n \"application/octet-stream\",\n 512\n )\n );\n }\n if(namesZips.length)\n this._baseService.zipAndDownload(\n zips,\n namesZips,\n \"Documentacao.zip\"\n );\n this.downloading = false;\n });\n\n }\n\n async canhotosZipados(consultas) {\n return await this._okEntregaService\n .getLinkCanhotos(consultas)\n .toPromise()\n .then(async (response: ValidationResult) => {\n let retorno: ValidationResult = response;\n if (retorno.IsValid) {\n let requests = Object.values(retorno.Data)\n .filter(\n (consulta: OkEntregaConsultaLink) =>\n consulta.linkCanhoto != null && consulta.linkCanhoto != \"\"\n )\n .map(\n (consulta: OkEntregaConsultaLink) =>\n new ImagemNF(\"PDF Canhoto\", consulta.linkCanhoto)\n );\n return await this._okEntregaService.getPDFCanhotos(requests).toPromise().then((res) => {\n let names = res?.map(\n (r, index) => `canhoto-nf-${consultas[index].numNF}.pdf`\n );\n if (res == null || res.length == 0) return null;\n return this._baseService.zip(res, names);\n });\n }\n });\n }\n\n async CertificadosCo2Zipados() {\n var links = this.construirLinks();\n return await this._baseService\n .BaseGetAllBlobforkJoin(links)\n .toPromise()\n .then((res: Blob[]) => {\n res = res?.filter((x) => x?.type == \"application/x-download\");\n if (res == null || res?.length == 0) return null;\n return this._baseService.zip(\n res,\n this.getNamesCertificadosCo2(links)\n );\n });\n }\n\n validAndDownload(response: ValidationResult, nfNums, returnZip = false) {\n let retorno: ValidationResult = response;\n if (retorno.IsValid) {\n let requests = (Object.values(retorno.Data) as OkEntregaConsultaLink[])\n .filter(\n (consulta) =>\n consulta.linkCanhoto != null && consulta.linkCanhoto != \"\"\n )\n .map((consulta) => new ImagemNF(\"PDF Canhoto\", consulta.linkCanhoto));\n this._okEntregaService.getPDFCanhotos(requests).subscribe((res) => {\n let names = res?.map((r, index) => `canhoto-nf-${nfNums[index]}.pdf`);\n if (returnZip) {\n return this._baseService.zip(res, names);\n } else {\n this._baseService.zipAndDownload(res, names, \"canhotos.zip\");\n }\n });\n } else {\n this._msgService.addMessageArray(\n \"Documentacao\",\n retorno.Erros.map((e) => e.Message),\n \"error\",\n LogFrontFuncionalidade.Documentacao,\n Operacao.Consulta\n );\n }\n this.downloading = false;\n }\n\n baixarCertificados() {\n this._msgService.clearMessage();\n this.downloading = true;\n if (this.clicouSelecionarTodos)\n this._analyticsService.RegistrarOperacao(\n AnalyticsTela.Documentacao,\n AnalyticsOperacao.DownloadAposSelecionarTodos\n );\n else this._analyticsService.RegistrarDownloadDocumentacaoTodos();\n const links = this.construirLinks();\n\n this._baseService.downloadAllAndZip(\n links,\n this.getNamesCertificadosCo2(links),\n \"certificados.zip\"\n );\n this.downloading = false;\n }\n\n private getNamesCertificadosCo2(links: string[]): string[] {\n return links.map((x, index) => \"certificado-co2-\" + index + \".pdf\");\n }\n\n private construirLinks() {\n const selecionados = this.lista.listaDoctoFatura.filter(\n (d) =>\n d.selecionado &&\n d.indicEcoFrete &&\n d.idViagreen &&\n d.idViagreen.length > 0\n );\n const idsViaGreen = [];\n selecionados.map((x) =>\n x.idViagreen\n .split(\";\")\n .filter((x) => x != \"\")\n .forEach((x) => idsViaGreen.push(x))\n );\n\n const links = idsViaGreen.map((x) => {\n return (\n this._appService.configViaGreen.apiUrlDownloadCertificado +\n \"/\" +\n x +\n \"?accessToken=\" +\n this._appService.configViaGreen.token\n );\n });\n return links;\n }\n\n baixarSelecionados(returnB64 = false) {\n this._msgService.clearMessage();\n this.downloading = true;\n if (this.clicouSelecionarTodos)\n this._analyticsService.RegistrarOperacao(\n AnalyticsTela.Documentacao,\n AnalyticsOperacao.DownloadAposSelecionarTodos\n );\n else this._analyticsService.RegistrarDownloadDocumentacaoTodos();\n var selecionados = this.lista.listaDoctoFatura.filter((d) => d.selecionado);\n\n this._documentacaoService\n .downloadSelecionados(selecionados)\n .subscribe((download) => {\n if (returnB64)\n return this.b64toBlob(\n download.arquivo,\n \"application/octet-stream\",\n 512\n );\n else this.executarDownload(download);\n });\n }\n\n selecionarTodos() {\n this._analyticsService.RegistrarOperacao(\n AnalyticsTela.Documentacao,\n AnalyticsOperacao.SelecionarTodos\n );\n this.clicouSelecionarTodos = true;\n this.lista.selecionarTodos();\n }\n\n alteradoPageSize(pageSize: number) {\n this.lista.alteradoPageSize(pageSize);\n }\n\n alteradaOrdenacao(ordenacao: string) {\n this.lista.alteradaOrdenacao(ordenacao);\n }\n\n buscarArquivos(doctoFatura: DoctoFatura) {\n var request = new DoctoFaturaArquivoRequest();\n request.idUsuario = this._appService.UsuarioLogado.UsuarioIDeCargo;\n request.numFatBol = doctoFatura.numFatBol;\n request.numNfeCte = doctoFatura.numNFeCte;\n request.numNFe = doctoFatura.numNFe;\n request.numBooking = doctoFatura.numBooking;\n request.doctoPagtoId = doctoFatura.doctoPagtoId;\n request.doctoTransporteId = doctoFatura.doctoTransporteId;\n this._documentacaoService\n .getListaArquivos(request)\n .subscribe((listaArquivos) => {\n doctoFatura.Arquivos = listaArquivos;\n });\n }\n\n zeraPesquisa() {\n this.empty = true;\n this.noresult = false;\n this.loading = false;\n this.lista.listaDoctoFatura = [];\n if (this.lista.paginacao) {\n this.lista.paginacao.pagedItems = [];\n this.lista.paginacao.pager = {};\n }\n }\n\n ObterDocumentacao() {\n this.loading = true;\n\n var dataInicio = this.filtro.dataInicio\n ? this.ObterData(this.filtro.dataInicio, 0)\n : this.ObterData(this.filtro.dataInicio, -7);\n var dataFim = this.ObterData(this.filtro.dataFim, 0);\n\n this.consulta = new DoctoFaturaRequest();\n this.consulta.idUsuario = this._appService.UsuarioLogado.UsuarioIDeCargo;\n this.consulta.dataEmissaoIni = dataInicio;\n this.consulta.dataEmissaoFim = dataFim;\n\n this.clickPesquisar(this.consulta, false);\n }\n\n clickPesquisar(\n consulta: DoctoFaturaRequest,\n registrarAnalytics: boolean = true\n ) {\n this._msgService.clearMessage();\n if (\n this.eAdmin &&\n (this.filtro.cnpjdropdown.CNPJDigitado == undefined ||\n this.filtro.cnpjdropdown.CNPJDigitado == \"\") &&\n !this.filtro.cnpjdropdown.cnpjsGrupos\n ) {\n this._msgService.addMessage(\n \"Documentacao\",\n \"Informe o CNPJ do Cliente ou selecione ao menos um Grupo Econômico.\",\n \"error\",\n LogFrontFuncionalidade.Documentacao,\n Operacao.Consulta,\n consulta\n );\n this.zeraPesquisa();\n return;\n } else {\n if (this.eAdmin) {\n this.cnpjs = this.filtro.cnpjdropdown.cnpjsGrupos;\n if (\n this.filtro.cnpjdropdown.cnpjsGrupos &&\n this.filtro.cnpjdropdown.CNPJDigitado\n ) {\n if (!this.filtro.cnpjdropdown.validaCNPJnoGrupo()) {\n this._msgService.addMessage(\n \"Documentacao\",\n \"CNPJ informado não pertence ao(s) Grupo(s) Econômico(s) selecionado(s)!\",\n \"error\",\n LogFrontFuncionalidade.Documentacao,\n Operacao.Consulta,\n consulta\n );\n this.zeraPesquisa();\n return;\n }\n }\n this.cnpjs = this.filtro.cnpjdropdown.CNPJDigitado\n ? this.filtro.cnpjdropdown.CNPJDigitado\n : this.filtro.cnpjdropdown.cnpjsGrupos;\n }\n\n var ini = consulta.dataEmissaoIni.valueOf();\n var fim = consulta.dataEmissaoFim.valueOf();\n\n if (fim < ini) {\n this._msgService.addMessage(\n \"Documentacao\",\n \"A data início não pode ser maior que a data fim.\",\n \"error\",\n LogFrontFuncionalidade.Documentacao,\n Operacao.Consulta,\n consulta\n );\n return;\n }\n\n var diasDiff = Math.floor(\n (consulta.dataEmissaoFim.valueOf() -\n consulta.dataEmissaoIni.valueOf()) /\n (1000 * 60 * 60 * 24)\n );\n\n if (diasDiff > 30) {\n this._msgService.addMessage(\n \"Documentacao\",\n \"O filtro por período de emissão não deve ser superior à 30 dias.\",\n \"error\",\n LogFrontFuncionalidade.Documentacao,\n Operacao.Consulta,\n consulta\n );\n return;\n }\n\n //limpa mensagens de erros\n this._msgService.clearMessage();\n this.loading = true;\n this.filtro.loading = true;\n this.noresult = false;\n consulta.cnpjCli = this.cnpjs;\n\n this.cnpjAlterado(this.cnpjs);\n\n if (registrarAnalytics)\n this._analyticsService.RegistrarFiltroDocumentacao(consulta);\n\n this._documentacaoService\n .getListaDocumentacao(consulta)\n .subscribe((listaDocumentacao) => {\n this.empty = false;\n this.loading = false;\n this.noresult =\n listaDocumentacao == undefined || listaDocumentacao.length == 0;\n if (!listaDocumentacao) return;\n this.lista.carregaListaDocumentacao(listaDocumentacao);\n this.filtro.ConfiguraNavioViagens(this.viagens, listaDocumentacao);\n });\n }\n }\n\n ObterNaviosViagens(consulta: NavioViagemRequest) {\n this.filtro.loading = true;\n this._navioViagemService.getNavioViagem(consulta).subscribe((viagens) => {\n this.filtro.loading = false;\n //this.filtro.ConfiguraNavioViagens(viagens);\n this.viagens = viagens;\n });\n }\n\n cnpjAlterado(cnpj: string) {\n this.cnpjs = cnpj;\n //var usuario = this._appService.UsuarioLogado;\n var consulta = new NavioViagemRequest();\n consulta.CNPJCliente = cnpj; //usuario.CNPJs.join(\";\");\n consulta.CNPJProvedor = cnpj; //usuario.CNPJs.join(\";\");\n consulta.idUsuario = this._appService.UsuarioLogado.UsuarioIDeCargo;\n consulta.tipo = \"BOOKING\";\n consulta.dataIni = this.ObterData(this.filtro.dataInicio, -30);\n consulta.dataFim = this.ObterData(this.filtro.dataFim, 0);\n\n this.ObterNaviosViagens(consulta);\n }\n\n private executarDownload(download: DownloadArquivo) {\n this.downloading = false;\n if (!download || !download.arquivo) {\n this._msgService.addMessage(\n \"Erro ao realizar download\",\n \"Arquivo não encontrado\",\n \"danger\",\n LogFrontFuncionalidade.Documentacao,\n Operacao.Download,\n download\n );\n return;\n }\n var FileSaver = require(\"file-saver\");\n var byteArray = this.b64toBlob(\n download.arquivo,\n \"application/octet-stream\",\n 512\n );\n FileSaver.saveAs(byteArray, download.nomeArquivo);\n }\n\n private ObterData(dateModel: DateModel, dateOffset: number) {\n return dateModel != undefined\n ? this._datePickerService.ObtemData(dateModel)\n : this._sharedService.addDays(new Date(), dateOffset);\n }\n\n private showSwal(message: string) {\n swal({\n title: \"Sucesso\",\n text: message,\n type: \"success\",\n showConfirmButton: true,\n showCancelButton: false,\n confirmButtonText: \"OK\",\n }).then(\n (success) => {},\n (dismiss) => {\n // console.log(dismiss);\n }\n );\n }\n\n private b64toBlob(b64Data, contentType, sliceSize): Blob {\n contentType = contentType || \"\";\n sliceSize = sliceSize || 512;\n\n var byteCharacters = atob(b64Data);\n var byteArrays = [];\n\n for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) {\n var slice = byteCharacters.slice(offset, offset + sliceSize);\n\n var byteNumbers = new Array(slice.length);\n for (var i = 0; i < slice.length; i++) {\n byteNumbers[i] = slice.charCodeAt(i);\n }\n\n var byteArray = new Uint8Array(byteNumbers);\n byteArrays.push(byteArray);\n }\n\n var blob = new Blob(byteArrays, { type: contentType });\n return blob;\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { DatePickerModule } from \"app/shared/ng2-datepicker/ng2-datepicker.module\";\nimport { SharedModule } from \"app/shared/shared.module\";\nimport { DatepickerService } from \"app/_services/datepicker.service\";\nimport { DocumentacaoService } from \"app/_services/documentacao.service\";\nimport { NavioViagemService } from \"app/_services/navio-viagem.service\";\nimport { OkEntregaService } from \"app/_services/ok-entrega.service\";\nimport { ParametroService } from \"app/_services/parametro.service\";\nimport { UsuarioService } from \"app/_services/usuario.service\";\nimport { DocumentacaoComponent } from \"./documentacao.component\";\nimport { DocumentacaoRoutingModule } from \"./documentacao.routing.module\";\nimport { FiltroDocumentacaoComponent } from \"./filtro-documentacao/filtro-documentacao.component\";\nimport { DownloadDocumentacaoComponent } from \"./lista-documentacao/item-documentacao/download-documentacao/download-documentacao.component\";\nimport { ItemDocumentacaoComponent } from \"./lista-documentacao/item-documentacao/item-documentacao.component\";\nimport { ListaDocumentacaoComponent } from \"./lista-documentacao/lista-documentacao.component\";\nimport { OrdenacaoDocumentacaoComponent } from \"./ordenacao-documentacao/ordenacao-documentacao.component\";\n\n\n@NgModule({\n declarations: [\n DocumentacaoComponent,\n FiltroDocumentacaoComponent,\n OrdenacaoDocumentacaoComponent,\n ListaDocumentacaoComponent,\n ItemDocumentacaoComponent,\n DownloadDocumentacaoComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n SharedModule,\n DatePickerModule,\n DocumentacaoRoutingModule\n ],\n exports: [\n DocumentacaoComponent\n ],\n providers:[\n DocumentacaoService,\n NavioViagemService,\n ParametroService,\n UsuarioService,\n DatepickerService,\n OkEntregaService\n ]\n})\nexport class DocumentacaoModule { }\n","\n\nimport { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { AuthGuard } from 'app/_guards/auth.guard';\nimport { DocumentacaoComponent } from './documentacao.component';\n\n\nconst documentacaoRoutes: Routes = [\n { path: '', component: DocumentacaoComponent, canActivate: [AuthGuard] }\n];\n@NgModule({\n imports: [RouterModule.forChild(documentacaoRoutes)],\n exports: [RouterModule]\n})\nexport class DocumentacaoRoutingModule {}","import { Component, Input, OnInit, ViewChild, Output, EventEmitter, ViewChildren } from '@angular/core';\n\nimport { NavioViagem } from '../../../_models/navioViagem';\nimport { DoctoFatura } from './../../../_models/doctoFatura';\nimport { DoctoFaturaRequest } from './../../../_models/doctoFatura-request';\n\nimport { AppService } from 'app/_services/app.service';\nimport { SharedService } from '../../../_services/shared.service';\nimport { DatepickerService } from '../../../_services/datepicker.service';\nimport { GenericOrderbyService } from \"app/_services/generic-orderby.service\";\n\nimport { CnpjDropdownComponent } from 'app/shared/cnpj-dropdown/cnpj-dropdown.component';\nimport { FilterComboConfiguration } from \"app/_models/filterComboConfiguration\";\nimport { DateModel, DatePickerOptions } from \"app/shared/ng2-datepicker/ng2-datepicker.component\";\n\n@Component({\n selector: 'filtro-documentacao',\n templateUrl: './filtro-documentacao.component.html',\n styleUrls: ['./filtro-documentacao.component.scss']\n})\nexport class FiltroDocumentacaoComponent implements OnInit {\n\n loading: boolean;\n viagens: NavioViagem[];\n viagensSelecionadas: number[];\n comboViagens: FilterComboConfiguration;\n cssClassAdmin = '';\n filtroGenerico = null;\n eAdmin: boolean = this._appService.isAdmin();\n eCliente: boolean = this._appService.isCliente();\n maisDeUmCNPJ = this._appService.maisDeUmCNPJ();\n\n optionsInicio: DatePickerOptions;\n optionsFim: DatePickerOptions;\n dataFim: DateModel;\n dataInicio: DateModel;\n\n @ViewChild(CnpjDropdownComponent, { static: true }) cnpjdropdown: CnpjDropdownComponent;\n @Output() clickPesquisar: EventEmitter = new EventEmitter();\n @Output() cnpjAlteradoEvent: EventEmitter = new EventEmitter();\n\n constructor(\n private _datePickerService: DatepickerService,\n private _appService: AppService,\n private _genericOrderbyService: GenericOrderbyService,\n private _sharedService: SharedService) {\n\n this.optionsInicio = this._datePickerService.GenerateOptionsConfig(this._sharedService.addDays(new Date(), -7));\n this.optionsFim = this._datePickerService.GenerateOptionsConfig(new Date());\n\n this.comboViagens = new FilterComboConfiguration('Navio/Viagem...');\n this.comboViagens.settings = {\n checkedStyle: 'glyphicon',\n selectionLimit: 1,\n closeOnSelect: true,\n showCheckAll: false,\n showUncheckAll: false,\n //displayAllSelectedText: true,\n //autoUnselect: true,\n dynamicTitleMaxItems: 1,\n enableSearch: true\n };\n }\n\n ngOnInit() {\n this.cssClassAdmin = this.eAdmin || (this.eCliente && this.maisDeUmCNPJ) ? \"\" : \" customer-profile\";\n }\n\n ConfiguraNavioViagens(viagens: NavioViagem[], listaDoctos: DoctoFatura[]) {\n this.viagens = viagens;\n this.comboViagens.options = [];\n\n if (this.viagens != null) {\n this.viagens.forEach(viagem => {\n if (listaDoctos.filter(f => f.NavioViagem == viagem.descViagemNavio).length > 0) {\n this.comboViagens.options.push({ id: viagem.idViagemNavio, name: viagem.descViagemNavio });\n }\n });\n }\n\n this.comboViagens.options = this._genericOrderbyService.ordenarPorCampo(this.comboViagens.options, 'name', false);\n this.loading = false;\n }\n\n Pesquisar() {\n var dataInicio = this._datePickerService.ObtemData(this.dataInicio);\n var dataFim = this._datePickerService.ObtemData(this.dataFim);\n var consulta = new DoctoFaturaRequest();\n var cnpj = (this._appService.isAdmin()) ? this.cnpjdropdown.CNPJFiltro :\n (this.cnpjdropdown.cnpjsSelecionados) ? this.cnpjdropdown.cnpjsSelecionados.join(\";\") :\n this.cnpjdropdown.cnpjsGrupos ? this.cnpjdropdown.cnpjsGrupos : '';\n\n consulta.idUsuario = this._appService.UsuarioLogado.UsuarioIDeCargo;\n consulta.dataEmissaoIni = dataInicio;\n consulta.dataEmissaoFim = dataFim;\n consulta.cnpjCli = cnpj;\n consulta.filtroGenerico = this.filtroGenerico;\n consulta.idNavioViagem = (this.viagensSelecionadas && this.viagensSelecionadas.length > 0) ? this.viagensSelecionadas[0] : null;\n\n this.clickPesquisar.emit(consulta);\n }\n\n cnpjAlterado(cnpj: string) {\n this.cnpjAlteradoEvent.emit(cnpj);\n }\n}\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\n\nimport { DoctoFaturaArquivo } from '../../../../../_models/doctoFaturaArquivo';\nimport { DoctoFatura } from '../../../../../_models/doctoFatura';\nimport { BaseComponent } from './../../../../../shared/base.component';\n\n@Component({\n selector: 'download-documentacao',\n templateUrl: './download-documentacao.component.html',\n styleUrls: ['./download-documentacao.component.scss']\n})\nexport class DownloadDocumentacaoComponent extends BaseComponent {\n\n loadingArquivos: boolean = false;\n @Input() classeIcone: string;\n @Input() doctoFatura: DoctoFatura;\n @Output() clickArquivo: EventEmitter = new EventEmitter();\n @Output() clickTodosArquivos: EventEmitter = new EventEmitter();\n @Output() clickBuscarArquivos: EventEmitter = new EventEmitter();\n\n clickDownloadArquivo(arquivo: DoctoFaturaArquivo) {\n this.clickArquivo.emit(arquivo);\n }\n\n clickDownloadTodosArquivos() {\n this.clickTodosArquivos.emit(this.doctoFatura);\n }\n\n archivesMail(){\n return this.doctoFatura.Arquivos.filter(res => res.tipoArquivo != \"PDF Canhoto\")\n }\n\n obterNomeImagemArquivo(arquivo: DoctoFaturaArquivo): string {\n var tipo = (arquivo.tipoArquivo == undefined) ? \"\" : arquivo.tipoArquivo.toLowerCase();\n switch(tipo){\n case \"pdf cte\":\n case \"pdf fatura boleto\":\n case \"pdf boleto\":\n case \"pdf rps\":\n case \"pdf canhoto\":\n return \"pdf\";\n case \"canhoto\":\n return \"image\";\n case \"xml cte\":\n default:\n return \"document\";\n }\n }\n\n buscarArquivos(){\n this.loadingArquivos = true;\n if (this.doctoFatura.Arquivos == undefined)\n this.clickBuscarArquivos.emit(this.doctoFatura);\n }\n\n getLabelTodos() {\n return (this.classeIcone == 'download') ? 'Baixar todos (ZIP)' : 'Enviar todos (ZIP)';\n }\n\n}\n","import { Component, Input, QueryList, ViewChild, EventEmitter, Output } from '@angular/core';\nimport * as moment from 'moment/moment';\nimport 'moment/locale/pt-br';\n\nimport { AppService } from 'app/_services/app.service';\n\nimport { DoctoFatura } from '../../../../_models/doctoFatura';\nimport { DoctoFaturaArquivo } from \"app/_models/doctoFaturaArquivo\";\nimport { DownloadDocumentacaoComponent } from \"app/cliente/documentacao/lista-documentacao/item-documentacao/download-documentacao/download-documentacao.component\";\nimport { DocumentacaoService } from 'app/_services/documentacao.service';\nimport { BaseService } from 'app/_services/base.service';\nimport { MessageService } from 'app/_services/message.service';\n\n@Component({\n selector: 'item-documentacao',\n templateUrl: './item-documentacao.component.html',\n styleUrls: ['./item-documentacao.component.scss']\n})\nexport class ItemDocumentacaoComponent {\n\n linksCertificados: string[];\n loadingCertificados: boolean = false;\n @Input() index: number;\n @Input() doctoFatura: DoctoFatura;\n\n @Output() enviarArquivoEmail: EventEmitter = new EventEmitter();\n @Output() enviarTodosEmail: EventEmitter = new EventEmitter();\n @Output() downloadArquivo: EventEmitter = new EventEmitter();\n @Output() downloadTodosArquivos: EventEmitter = new EventEmitter();\n @Output() clickBuscarArquivos: EventEmitter = new EventEmitter();\n\n @ViewChild(DownloadDocumentacaoComponent, {static: true}) menusDownloads: QueryList;\n\n constructor(protected _appService: AppService,\n private _documentacaoService: DocumentacaoService,\n private _baseService: BaseService,\n private _msgService: MessageService) { }\n\n getFormato(): string {\n return (this._appService.configInfo.formatoDataSQLServer != undefined && this._appService.configInfo.formatoDataSQLServer != '') ?\n this._appService.configInfo.formatoDataSQLServer :\n \"MM/DD/YYYY hh:mm:ss a\"; //produção\n //\"DD/MM/YYYY hh:mm:ss a\"; //homologação\n }\n\n clickEnviarArquivoEmail(arquivo: DoctoFaturaArquivo) {\n this.enviarArquivoEmail.emit(arquivo);\n }\n\n clickEnviarTodosEmail(doctoFatura: DoctoFatura){\n this.enviarTodosEmail.emit(doctoFatura);\n }\n\n clickDownloadArquivo(arquivo: DoctoFaturaArquivo) {\n this.downloadArquivo.emit(arquivo);\n }\n\n clickDownloadTodosArquivos(doctoFatura: DoctoFatura){\n this.downloadTodosArquivos.emit(doctoFatura);\n }\n\n buscarArquivos(doctoFatura: DoctoFatura){\n this.clickBuscarArquivos.emit(doctoFatura);\n }\n\n buscarLinksCertificados(){\n this.loadingCertificados = true;\n this.linksCertificados = this.doctoFatura.idViagreen\n .split(\";\")\n .filter(x => x != \"\")\n .map(x => {\n return this._appService.configViaGreen.apiUrlDownloadCertificado + \"/\" + x + \"?accessToken=\" + this._appService.configViaGreen.token;\n });\n this.loadingCertificados = false;\n }\n\n get classeDataVencimento(){\n return this.IsDocumentoVencido() ? \"vencido\" : \"a-vencer\";\n }\n\n downloadCertificados(){\n if(this.linksCertificados.length > 1)\n this._baseService.downloadAllAndZip(this.linksCertificados,\n this.linksCertificados.map((x, index) => \"certificado-co2-\" + index + \".pdf\"), \"certificados.zip\")\n else{\n this.BaixarCertificado();\n }\n }\n\n private BaixarCertificado() {\n this._baseService.downloadFileByUrl(this.linksCertificados[0], \"certificado-co2.pdf\").subscribe(() => {return}, () =>\n this._msgService.addMessage(\"Documentação\", \"Não foi possível baixar o certficado! Tente novamente mais tarde.\", \"error\"));\n }\n\n get dataEmissao(): string {\n return (this.doctoFatura == undefined) ? undefined :\n this.formatarData(this.doctoFatura.dtEmissFat);\n }\n\n get dataVencimento(): string {\n return (this.doctoFatura == undefined || !this.doctoFatura.dtVenctoFat) ? 'Pendente' : this.formatarData(this.doctoFatura.dtVenctoFat);\n }\n\n private formatarData(dt: string): string {\n var formato = this.getFormato();\n\n var data = moment(dt, formato).toDate();\n //var data = moment(dt, \"MM/DD/YYYY hh:mm:ss a\").toDate(); //produção\n //var data = moment(dt, \"DD/MM/YYYY hh:mm:ss a\").toDate(); //homologação\n //console.log(data);\n return (data == undefined) ? undefined :\n moment(data).format(\"DD MMM, YYYY\");\n }\n\n private IsDocumentoVencido(){\n if ((this.doctoFatura == undefined) || (this.doctoFatura.dtVenctoFat == undefined))\n return false;\n\n //Compara duas datas desprezando o horário\n var hoje = new Date();\n var formato = this.getFormato();\n var dtVencimento = moment(this.doctoFatura.dtVenctoFat, formato).toDate();\n //var dtVencimento = moment(this.doctoFatura.dtVenctoFat, \"MM/DD/YYYY hh:mm:ss a\").toDate();\n hoje.setHours(0,0,0,0);\n dtVencimento.setHours(23,59,0,0);\n return hoje.getTime() >= dtVencimento.getTime();\n }\n\n}\n","import { Component, ViewChild, QueryList, Input, Output, EventEmitter } from '@angular/core';\n\nimport { DoctoFatura } from '../../../_models/doctoFatura';\nimport { DoctoFaturaArquivo } from \"app/_models/doctoFaturaArquivo\";\nimport { ItemDocumentacaoComponent } from \"app/cliente/documentacao/lista-documentacao/item-documentacao/item-documentacao.component\";\nimport { PaginacaoComponent } from \"app/shared/paginacao/paginacao.component\";\n\n@Component({\n selector: 'lista-documentacao',\n templateUrl: './lista-documentacao.component.html',\n styleUrls: ['./lista-documentacao.component.scss']\n})\nexport class ListaDocumentacaoComponent {\n\n listaDoctoFatura: DoctoFatura[];\n\n @Output() enviarArquivoEmail: EventEmitter = new EventEmitter();\n @Output() enviarTodosEmail: EventEmitter = new EventEmitter();\n @Output() downloadArquivo: EventEmitter = new EventEmitter();\n @Output() downloadTodosArquivos: EventEmitter = new EventEmitter();\n @Output() clickBuscarArquivos: EventEmitter = new EventEmitter();\n\n @ViewChild(ItemDocumentacaoComponent, {static: true}) itemDocto: QueryList;\n @ViewChild(PaginacaoComponent, {static: true}) paginacao: PaginacaoComponent;\n\n clickEnviarArquivoEmail(doctoFatura: DoctoFatura, arquivo: DoctoFaturaArquivo) {\n this.enviarArquivoEmail.emit(this.obterRetornoArquivo(doctoFatura, arquivo));\n }\n\n clickEnviarTodosEmail(doctoFatura: DoctoFatura) {\n this.enviarTodosEmail.emit(doctoFatura);\n }\n\n clickDownloadArquivo(doctoFatura: DoctoFatura, arquivo: DoctoFaturaArquivo) {\n this.downloadArquivo.emit(this.obterRetornoArquivo(doctoFatura, arquivo));\n }\n\n clickDownloadTodosArquivos(doctoFatura: DoctoFatura) {\n this.downloadTodosArquivos.emit(doctoFatura);\n }\n\n buscarArquivos(doctoFatura: DoctoFatura) {\n this.clickBuscarArquivos.emit(doctoFatura);\n }\n\n selecionarTodos() {\n this.listaDoctoFatura.forEach(doctoFatura => {\n if (doctoFatura.selecionado && typeof doctoFatura.selecionado === 'boolean') {\n doctoFatura.selecionado = !doctoFatura.selecionado;\n }\n else {\n doctoFatura.selecionado = true;\n }\n });\n }\n\n alteradoPageSize(pageSize: number) {\n this.paginacao.setPageSize(pageSize);\n }\n\n alteradaOrdenacao(ordenacao: string) {\n //TODO: implementar a ordenação\n }\n\n obterRetornoArquivo(doctoFatura: DoctoFatura, arquivo: DoctoFaturaArquivo): any {\n var retorno =\n {\n doctoFatura: doctoFatura,\n arquivo: arquivo\n };\n\n return retorno;\n }\n\n carregaListaDocumentacao(listaDocumentacao: DoctoFatura[]) {\n this.listaDoctoFatura = listaDocumentacao;\n this.paginacao.setAllData(this.listaDoctoFatura);\n this.paginacao.setPageSize(10);\n this.paginacao.setPage(1);\n }\n\n}\n","import { Component, Output, EventEmitter } from '@angular/core';\n\n@Component({\n selector: 'ordenacao-documentacao',\n templateUrl: './ordenacao-documentacao.component.html',\n styleUrls: ['./ordenacao-documentacao.component.scss']\n})\nexport class OrdenacaoDocumentacaoComponent {\n\n @Output() alteradoPageSize: EventEmitter = new EventEmitter();\n @Output() alteradaOrdenacao: EventEmitter = new EventEmitter();\n \n changePageSize(pageSize: number){\n this.alteradoPageSize.emit(pageSize);\n }\n\n changeOrdenacao(ordenacao: string){\n this.alteradaOrdenacao.emit(ordenacao);\n }\n}\n","import { Component, Input, EventEmitter, Output, OnInit } from '@angular/core';\n\nimport { FiltrosLateraisService } from '../../_services/filtros-laterais.service';\nimport { PaginacaoComponent } from '../../shared/paginacao/paginacao.component';\nimport { FiltrosLaterais } from './../../_models/filtros-laterais';\nimport { Co2Total } from 'app/_models/co2-total';\nimport { RastreamentoService } from 'app/_services/rastreamento.service';\nimport { Co2TotalRequest } from 'app/_models/co2-total-request';\nimport { AppService } from 'app/_services/app.service';\nimport { BaseService } from 'app/_services/base.service';\n\n@Component({\n selector: 'filtroslaterais',\n templateUrl: './filtros-laterais.component.html',\n styleUrls: ['./filtros-laterais.component.scss']\n})\nexport class FiltrosLateraisComponent implements OnInit {\n\n constructor(\n private _filtroslateraisService: FiltrosLateraisService,\n private _trackingService: RastreamentoService,\n private _appService: AppService,\n private _baseService: BaseService) { }\n\n ngOnInit(): void {\n }\n\n loadingCo2: boolean = false;\n @Input() dados: any;\n @Input() pageSize: number;\n @Input() consulta: FiltrosLaterais;\n @Input() paginacao: PaginacaoComponent;\n @Input() filtrosLateraisAtivos: FiltrosLaterais;\n @Input() co2Total: Co2Total;\n @Output() filtroAplicado: EventEmitter = new EventEmitter();\n\n public filtrar() {\n let listaFiltrada = this._filtroslateraisService.filtrarDados(this.dados, this.consulta);\n\n this.paginacao.setAllData(listaFiltrada);\n this.paginacao.setPageSize(this.pageSize);\n this.paginacao.setPage(1);\n\n this.filtroAplicado.emit(listaFiltrada);\n }\n\n GetColorCo2(){\n return this.co2Total && this.co2Total.indicEcofrete? \"\" : \"red\";\n }\n\n public setPageSize(value: number) {\n this.pageSize = value;\n\n // Defeito #5638: Meus bookings - Paginação é perdida quando muda qtde de\n // registros por página (resolução de problema)\n // this.paginacao.setAllData(this.dados);\n this.paginacao.setPageSize(this.pageSize);\n this.paginacao.setPage(1);\n }\n\n openEcofretePage(){\n this._baseService.OpenNewTab(\"https://www.alianca.com.br/ecofrete\")\n }\n\n GetLabelCo2() {\n return this.co2Total && this.co2Total.indicEcofrete ? \"Compensação\" : \"Emissão\";\n }\n\n GetCo2(){\n return this.co2Total && this.co2Total.co2 != undefined ? parseFloat(\"\"+this.co2Total.co2).toFixed(2).replace('.', ',') : (0).toFixed(2);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { FiltrosLateraisComponent } from './filtros-laterais.component';\nimport { FiltrosLateraisService } from '../../_services/filtros-laterais.service';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { RastreamentoService } from 'app/_services/rastreamento.service';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n TooltipModule\n ],\n exports: [\n FiltrosLateraisComponent\n ],\n declarations: [\n FiltrosLateraisComponent\n ],\n providers: [\n FiltrosLateraisService,\n RastreamentoService\n ],\n})\nexport class FiltrosLateraisModule {\n\n\n}\n","import { Component, OnInit, ViewChild, Input, EventEmitter, Output, ElementRef } from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport { Cliente } from 'app/_models/cliente';\nimport { Feriado } from 'app/_models/feriado';\nimport { Endereco } from 'app/_models/endereco';\nimport { AgendaEntrega } from 'app/_models/agenda-entrega';\nimport { TrackingLista } from 'app/_models/tracking-lista';\nimport { ClienteRequest } from 'app/_models/cliente-request';\nimport { AgendaEntregaSalvar } from 'app/_models/agenda-entrega-salvar';\nimport { TrackingListaRequest } from './../../../_models/trackinglista-request';\n\nimport { LogService } from 'app/_services/log.service';\nimport { AppService } from 'app/_services/app.service';\nimport { SharedService } from 'app/_services/shared.service';\nimport { MessageService } from 'app/_services/message.service';\nimport { GroupbyService } from 'app/_services/groupby.service';\nimport { DatepickerService } from 'app/_services/datepicker.service';\nimport { AgendaEntregaService } from 'app/_services/agenda-entrega.service';\n\nimport { BaseComponent } from './../../../shared/base.component';\nimport { EnderecoComponent } from 'app/shared/endereco/endereco.component';\nimport { ItemEntregaAgendamentoComponent } from 'app/cliente/rastreamento/agendamento-rastreamento/item-entrega-agendamento/item-entrega-agendamento.component';\nimport { AnalyticsService } from 'app/_services/analytics.service';\n\nimport { Operacao } from 'app/_enums/operacao';\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\n\n@Component({\n selector: 'agendamento-rastreamento',\n templateUrl: './agendamento-rastreamento.component.html',\n styleUrls: ['./agendamento-rastreamento.component.scss']\n})\nexport class AgendamentoRastreamentoComponent extends BaseComponent implements OnInit {\n\n @ViewChild('lgModalAgendamento', {static: true}) lgModalAgendamento;\n @ViewChild(ItemEntregaAgendamentoComponent, {static: true}) itemEntrega: ItemEntregaAgendamentoComponent;\n @ViewChild('topo', {static: true}) private topo: ElementRef;\n @ViewChild(EnderecoComponent, {static: true}) enderecoEntrega: EnderecoComponent;\n @Output() carregaFiltrosDeRastreamento: EventEmitter = new EventEmitter();\n\n rastreamentos: TrackingLista[] = [];\n listaAgendamentos: AgendaEntrega[] = new Array();\n inscricaoContaneres: Subscription;\n inscricaoBooking: Subscription;\n inscricaoSalvar: Subscription;\n loadingSalvar: boolean = false;\n loadingItems: boolean = false;\n loadingEndereco: boolean = false;\n exibeCopiar: boolean = true;\n soLeitura: boolean = false;\n eAdmin: boolean = this._appService.isAdmin();\n Destinatario: Cliente = new Cliente();\n qtdeAgendamentosCadastrados: number = 0;\n feriados: Feriado[];\n\n clientes: Cliente[];\n loadingClientes: boolean = false;\n enderecoSelecionado: Endereco = new Endereco();\n\n idPorto: number;\n dataSaidaPorto: Date;\n cnpjRec: string = '';\n ieRec: string = '';\n nomeRec: string = '';\n logradouroRec: string = '';\n numeroRec: string = '';\n bairroRec: string = '';\n complementoRec: string = '';\n cidade: string = '';\n ufRec: string = '';\n contatoRec: string = '';\n dddRec: string = '';\n foneRec: string = '';\n cepRec: string = '';\n observacao: string = '';\n ddd: string = '';\n telefone: string = '';\n idMunicipio: number;\n mensagemErro: string = '';\n qtdHorasEntregaETA: number;\n qtdMinHorasEntrega: number;\n dataMinimaAgendamento: Date;\n enderecoNovo: Endereco;\n horasMinimas: number;\n msgDataMinima: string = '';\n agendouTodos: boolean = false;\n\n constructor(private _sharedService: SharedService,\n private _agendaEntregaService: AgendaEntregaService,\n private _datepickerService: DatepickerService,\n private _appService: AppService,\n private _msgService: MessageService,\n private _logService: LogService,\n private agendaSalvar: AgendaEntregaSalvar,\n private _groupBy: GroupbyService,\n private _analyticsService: AnalyticsService) {\n super();\n }\n\n ngOnInit() {\n this._agendaEntregaService.emitirModal.subscribe(\n modal => this.showModal(modal)\n );\n }\n\n public showModal(modal):void {\n if(modal)\n this.lgModalAgendamento.show();\n else\n this.lgModalAgendamento.hide();\n }\n\n ngOnDestroy() {\n if (this.inscricaoContaneres)\n this.inscricaoContaneres.unsubscribe;\n if (this.inscricaoBooking)\n this.inscricaoBooking.unsubscribe;\n if (this.inscricaoSalvar)\n this.inscricaoSalvar.unsubscribe;\n }\n\n setRastreamento(rastreamentos, soLeitura: boolean = false): void {\n this.loadingEndereco = true;\n this.rastreamentos = rastreamentos;\n this.listaAgendamentos = new Array();\n if (this.rastreamentos.length > 0) {\n var cli: ClienteRequest = new ClienteRequest();\n cli.CNPJ = this.rastreamentos[0].cnpjDes;\n cli.InscricaoEstadual = this.rastreamentos[0].ieDes;\n cli.idMunicipio = this.rastreamentos[0].idMunicipioDes;\n this.idPorto = this.rastreamentos[0].idPortoDestino;\n this.dataSaidaPorto = this.rastreamentos[0].dataSaidaPortoDestino;\n\n this._sharedService.getClientes(cli,false).subscribe(c => {\n\n if (c == null) {\n this.Destinatario = null;\n }\n else {\n this.clientes = c.filter(x => x.CNPJ == cli.CNPJ);\n this.Destinatario = ((this.clientes != undefined) && (this.clientes.length == 1)) ? this.clientes[0] : null;\n\n if (this.Destinatario) {\n this.carregaEnderecoEntrega();\n }\n this.cnpjRec = this._sharedService.formataCNPJ(this.rastreamentos[0].cnpjDes);\n this.nomeRec = this.rastreamentos[0].nomeDes;\n this.ieRec = this.rastreamentos[0].ieDes;\n this.logradouroRec = this.rastreamentos[0].logradouroDes;\n this.numeroRec = this.rastreamentos[0].numeroEndDes;\n this.bairroRec = this.rastreamentos[0].bairroDes;\n this.complementoRec = this.rastreamentos[0].complementoDes;\n this.ufRec = this.rastreamentos[0].ufDes;\n this.contatoRec = this._appService.UsuarioLogado.Nome; //this.rastreamentos[0].contatoDes;\n this.dddRec = this._appService.UsuarioLogado.Telefone.substr(2, this._appService.UsuarioLogado.Telefone.length - 1); // this.rastreamentos[0].dddDes;\n this.foneRec = this._appService.UsuarioLogado.Telefone; //this._sharedService.replaceAll([this.rastreamentos[0].dddDes, this.rastreamentos[0].telefoneDes].join(''), ' ', '');\n if (this.foneRec.length > 11) //trunca de acordo com a máscara\n this.foneRec = this.foneRec.substr(0, 11);\n this.formataTelefoneEnderecoAgendaEntrega(this.foneRec);\n this.cepRec = this.rastreamentos[0].cepDes;\n this.cidade = this.rastreamentos[0].municEntrega.trim(); //.booking.municDes.trim(); // + '/' + this.rastreamentos[0].booking.ufDes;\n this.idMunicipio = this.rastreamentos[0].idMunicipioEntrega;\n\n this.enderecoNovo = new Endereco();\n this.enderecoNovo.Municipio = this.cidade;\n this.enderecoNovo.UF = this.ufRec;\n this.enderecoNovo.IdMunicipio = this.idMunicipio;\n\n this.agendaSalvar.idBooking = this.rastreamentos[0].idBooking;\n this.agendaSalvar.idUsuario = this._appService.UsuarioLogado.UsuarioIDeCargo;\n this.loadLista();\n }\n //this.loadingEndereco = false;\n\n });\n }\n }\n\n carregaEnderecoEntrega() {\n this.enderecoSelecionado = new Endereco();\n\n this.enderecoSelecionado.Logradouro = this.rastreamentos[0].logradouroDes;\n this.enderecoSelecionado.Numero = this.rastreamentos[0].numeroEndDes;\n this.enderecoSelecionado.Bairro = this.rastreamentos[0].bairroDes;\n this.enderecoSelecionado.Complemento = this.rastreamentos[0].complementoDes;\n this.enderecoSelecionado.UF = this.rastreamentos[0].ufDes;\n this.enderecoSelecionado.CEP = this.rastreamentos[0].cepDes;\n this.enderecoSelecionado.Municipio = this.rastreamentos[0].municEntrega; //this.rastreamentos[0].booking.municDes;\n this.enderecoSelecionado.IdMunicipio = this.rastreamentos[0].idMunicipioEntrega;\n\n this.enderecoEntrega.carregaEnderecos(this.enderecoSelecionado, this.Destinatario.Enderecos);\n }\n\n exibirAdicionarNovo() {\n this.enderecoEntrega.novo = true;\n this.enderecoEntrega.permiteEditarEndereco = true;\n //this.enderecoEntrega.endereco = this.enderecoNovo;\n this.enderecoEntrega.endereco = this.enderecoEntrega.copiaObjetoEndereco(this.enderecoNovo);\n\n this.contatoRec = '';\n this.dddRec = '';\n this.foneRec = '';\n this.formataTelefoneEnderecoAgendaEntrega(this.foneRec);\n }\n\n public cancelarAdicionarNovo() {\n this.cnpjRec = this._sharedService.formataCNPJ(this.rastreamentos[0].cnpjDes);\n this.nomeRec = this.rastreamentos[0].nomeDes;\n this.ieRec = this.rastreamentos[0].ieDes;\n this.contatoRec = this.rastreamentos[0].contatoDes;\n this.dddRec = this.rastreamentos[0].dddDes;\n this.foneRec = this._sharedService.replaceAll(this.rastreamentos[0].dddDes + this.rastreamentos[0].telefoneDes, ' ', '');\n this.formataTelefoneEnderecoAgendaEntrega(this.foneRec);\n\n this.enderecoEntrega.novo = false;\n this.enderecoEntrega.indexSelecionado = -1;\n this.carregaEnderecoEntrega();\n }\n\n loadLista(): void {\n this.loadingItems = true;\n let consulta = new AgendaEntrega();\n consulta.idBooking = this.rastreamentos[0].idBooking;\n consulta.idUsuario = this._appService.UsuarioLogado.UsuarioIDeCargo;\n\n var idPortoDestino = this.rastreamentos[0].idPortoDestino;\n\n this._sharedService.getFeriados(idPortoDestino)\n .subscribe(feriados => {\n //this.feriados = feriados;\n if (feriados)\n this.feriados = feriados.filter(f => f.Data != null);\n else\n this.feriados = null;\n\n var dataSaida = this._sharedService.corrigeData(this.rastreamentos[0].dataSaidaPortoDestino);\n var qtdETA: Date = this._sharedService.CalculaDataMinimaAgendamento(feriados, dataSaida, this.qtdHorasEntregaETA); //this._sharedService.CalculaProximoDiaUtil(feriados, dataSaida, this.qtdHorasEntregaETA);\n var qtdMin: Date = this._sharedService.CalculaDataMinimaAgendamento(feriados, new Date(), this.qtdMinHorasEntrega);\n\n if (qtdETA.getTime() > qtdMin.getTime()) {\n this.dataMinimaAgendamento = qtdETA;\n this.horasMinimas = this.qtdHorasEntregaETA;\n this.msgDataMinima = ', A entrega deve ser agendada ' + this.horasMinimas.toString() + ' horas após a data de saída do navio (respeitando finais de semana e feriados). Data/Hora no agendamento deve ser superior a ' + this.dataMinimaAgendamento.toLocaleString() + '!';\n }\n else {\n this.dataMinimaAgendamento = qtdMin;\n this.horasMinimas = this.qtdMinHorasEntrega;\n this.msgDataMinima = ', A entrega deve ser agendada ' + this.horasMinimas.toString() + ' horas após a data atual (respeitando finais de semana e feriados). Data/Hora no agendamento deve ser superior a ' + this.dataMinimaAgendamento.toLocaleString() + '!';\n }\n\n this.inscricaoContaneres = this._agendaEntregaService.Consulta(consulta)\n .subscribe(agendados => {\n // Navega nos rastreamentos para verificar se existe agendamento. Se não existir, adiciona na lista de não agendados\n\n if (agendados)\n agendados.forEach(agendamento => this.listaAgendamentos.push(agendamento));\n\n this.rastreamentos.forEach(track => {\n if (agendados && agendados.find(f => f.numContainer == track.numContainer) == null)\n this.listaAgendamentos.push(this.criaAgendaFromTracking(track));\n });\n\n this.qtdeAgendamentosCadastrados = this.listaAgendamentos.filter(a => a.idAgendamento != 0).length;\n this.agendouTodos = (agendados && agendados.length > 0) && (this.qtdeAgendamentosCadastrados == this.listaAgendamentos.length);\n\n this.obtemObservacoes();\n\n this.loadingItems = false;\n this.loadingEndereco = false;\n },\n (err) => console.log('erro 5')\n //console.log(err)\n );\n });\n }\n\n naoAgendado(agendaEntrega: AgendaEntrega): boolean {\n return !agendaEntrega.idAgendamento;\n }\n\n bloqueiaEdicao(): boolean {\n if (!this.listaAgendamentos)\n return false;\n return this.listaAgendamentos.find(a => a.idAgendamento == 0) == null;\n }\n\n copiar() {\n if (this.listaAgendamentos.length > 1) {\n for (let i = (this.qtdeAgendamentosCadastrados+1); i < this.listaAgendamentos.length; i++) {\n var agendamento = this.listaAgendamentos[i];\n var primeiroAgendamento = this.listaAgendamentos[this.qtdeAgendamentosCadastrados];\n agendamento.numRefCliente = primeiroAgendamento.numRefCliente;\n agendamento.horaEntrega = primeiroAgendamento.horaEntrega;\n agendamento.dataCompleta = this._sharedService.clonaDateModel(primeiroAgendamento.dataCompleta);\n }\n }\n }\n\n fechar(myForm: NgForm) {\n this.enderecoEntrega.novo = false;\n this.observacao = '';\n myForm.form.markAsPristine();\n myForm.form.markAsUntouched();\n this._agendaEntregaService.hideModal();\n }\n\n ocultarMensagem() {\n //this.mensagemErro = '';\n this.exibeMensagemErro('');\n }\n\n criaAgendaFromTracking(track: TrackingLista): AgendaEntrega {\n let agenda = new AgendaEntrega();\n agenda.idBooking = track.idBooking;\n agenda.idUsuario = this._appService.UsuarioLogado.UsuarioIDeCargo;\n agenda.idAgendamento = 0;\n agenda.numContainer = track.numContainer;\n agenda.numRefCliente = track.numRefCli;\n agenda.dataEntrega = this.dataMinimaAgendamento; //new Date();\n agenda.horaEntrega = '';\n agenda.observacao = '';\n agenda.cnpjEmb = track.cnpjDes;\n agenda.ieEmb = track.ieDes; // '';\n agenda.nomeEmb = track.nomeDes; // '';\n agenda.logradouroEnt = '';\n agenda.numeroEndEnt = '';\n agenda.bairroEnt = '';\n agenda.complementoEnt = '';\n agenda.idMunicipioEnt = track.idMunicipioEntrega; //track.booking.idMunicDes; //0;\n agenda.municipioEnt = track.municEntrega; //.booking.municDes; //'';\n agenda.ufEnt = track.ufDes; //.booking.ufDes; //'';\n agenda.contatoEnt = '';\n agenda.dddEnt = '';\n agenda.foneEnt = '';\n agenda.cepEnt = '';\n agenda.idPorto = track.idPortoDestino;\n agenda.dataSaidaPortoDestino = track.dataSaidaPortoDestino;\n\n return agenda;\n }\n\n public ConfigurarDataEntrega(agendamento: AgendaEntrega){\n // Se a data selecionada for nula ou inválida, retorna nulo\n if ((agendamento == undefined) ||\n (agendamento.dataCompleta == undefined) ||\n !this._datepickerService.IsValid(agendamento.dataCompleta) ||\n (!agendamento.horaEntrega))\n return;\n\n // Configura o campo 'dataColeta' baseado na data seleiconada\n // no DatePicker e na hora informada no input\n agendamento.dataEntrega = this._datepickerService.ObtemDataHora(agendamento.dataCompleta, agendamento.horaEntrega);\n }\n\n formataTelefoneEnderecoAgendaEntrega(telefone: string): void {\n if (telefone) {\n telefone = telefone.replace(/\\D/g, '');\n if (telefone && telefone.length > 9) {\n this.ddd = this._sharedService.obtemDDDdoTelefone(telefone);\n this.telefone = this._sharedService.obtemTelefoneSemDDD(telefone);\n this.foneRec = this.ddd + this.telefone;\n }\n }\n }\n\n salvar(myForm: NgForm) {\n this.agendaSalvar.Containeres = [];\n this.exibeMensagemErro('');\n\n var mensagem = '';\n var endAgend = this.enderecoEntrega.obtemEndereco();\n\n if (!this.validaEndereco(endAgend))\n return;\n\n this.loadingSalvar = true;\n var item: number = 1;\n\n var agendamentos = this.listaAgendamentos.filter(a => a.idAgendamento == 0);\n this._analyticsService.RegistrarAgendamentosTracking(agendamentos.length);\n agendamentos.forEach(agenda => {\n if (this.temAgendamento(agenda)) {\n\n // Configura o campo 'dataEntrega'\n this.ConfigurarDataEntrega(agenda);\n\n //valida se data de agendamento é permitida\n if (this.dataMinimaAgendamento >= agenda.dataEntrega) {\n //mensagem += 'Agendamento #' + item + ', Data/hora informada no agendamento deve ser superior a ' + this.dataMinimaAgendamento.toLocaleString() + '!';\n //mensagem += 'Agendamento #' + item + ', A entrega deve ser agendada com ' + this.horasMinimas.toString() + ' horas de antecedência (respeitando finais de semana e feriados). Data/Hora no agendamento deve ser superior a ' + this.dataMinimaAgendamento.toLocaleString() + '!';\n mensagem += 'Agendamento #' + item + this.msgDataMinima;\n }\n //else if (this._sharedService.isFeriadoFds(this.feriados, agenda.dataEntrega)) {\n // //Verifica se data do agendamento é feriado ou final de semana\n // mensagem += \"Agendamento #\" + item + \", A entrega deve ser realizada em dias úteis. O dia \" + agenda.dataEntrega.toLocaleString() + \" é um final de semana ou feriado!\";\n //}\n else {\n var cnpjSemFormatacao = \"\";\n if (this.cnpjRec != undefined) {\n cnpjSemFormatacao = this._sharedService.replaceAll(this.cnpjRec, '.', '');\n cnpjSemFormatacao = this._sharedService.replaceAll(cnpjSemFormatacao, '/', '');\n cnpjSemFormatacao = this._sharedService.replaceAll(cnpjSemFormatacao, '-', '');\n }\n\n if (endAgend) {\n agenda.cnpjEmb = cnpjSemFormatacao;\n agenda.ieEmb = this.ieRec;\n agenda.nomeEmb = this.nomeRec;\n agenda.logradouroEnt = endAgend.Logradouro; //this.logradouroRec;\n agenda.numeroEndEnt = endAgend.Numero; // this.numeroRec;\n agenda.bairroEnt = endAgend.Bairro; // this.bairroRec;\n agenda.complementoEnt = endAgend.Complemento; // this.complementoRec;\n agenda.contatoEnt = this.contatoRec;\n agenda.dddEnt = this.ddd; // this.dddRec; //-----\n agenda.foneEnt = this.telefone; // this.foneRec;\n agenda.cepEnt = endAgend.CEP ? endAgend.CEP.replace('-', '') : ''; // this.cepRec;\n agenda.observacao = this.observacao;\n }\n //agenda.dataEntrega = agenda.dataCompleta.formatted;\n\n this.agendaSalvar.Containeres.push(agenda);\n }\n }\n\n item++;\n });\n\n if (mensagem.length > 0){\n this.loadingSalvar = false;\n this.exibeMensagemErro(mensagem);\n return;\n }\n\n if (this.agendaSalvar.Containeres.length > 0) {\n this._msgService.clearMessage();\n this.inscricaoSalvar = this._agendaEntregaService.Salvar(this.agendaSalvar)\n .subscribe(result => {\n this.loadingSalvar = false;\n if (result){\n this.fechar(myForm);\n this.carregaFiltrosDeRastreamento.emit(null);\n }\n });\n }\n else {\n this._msgService.addMessage('Modal', 'Informe a data e hora de agendamento de ao menos 1 conteiner!', 'error', LogFrontFuncionalidade.Rastreamento, Operacao.Inclusao,\n this.listaAgendamentos);\n this.loadingSalvar = false;\n //this.fechar();\n }\n }\n\n validaEndereco(end: Endereco): boolean {\n var campos: string[] = [];\n\n if (!end)\n this.exibeMensagemErro(\"Informe o endereço de entrega!\");\n else {\n //Verifica campos obrigatórios da aba\n if (!this.cnpjRec) campos.push(\"CNPJ\");\n if (!this.ieRec) campos.push(\"Inscrição Estadual\");\n if (!this.nomeRec) campos.push(\"Razão Social\");\n if (!end.CEP) campos.push(\"CEP\");\n if (!end.Logradouro) campos.push(\"Logradouro\");\n if (!end.Numero) campos.push(\"Número\");\n if (!end.Bairro) campos.push(\"Bairro\");\n if (!this.contatoRec) campos.push(\"Contato\");\n if (!this.foneRec) campos.push(\"Telefone\");\n\n //Informa os campos obrigatórios não preenchidos, se houver\n if (campos.length > 0) {\n //this.mensagemErro = \"Campos obrigatórios: \" + campos.join(\", \");\n this.exibeMensagemErro(\"Campos obrigatórios: \" + campos.join(\", \"));\n return false;\n }\n }\n if (!this._sharedService.validaTelefone(this.foneRec)) {\n this.exibeMensagemErro(\"Telefone inválido\");\n return false;\n }\n\n return true;\n }\n\n temAgendamento(agenda): boolean {\n return (agenda.dataCompleta && agenda.horaEntrega);\n }\n\n exibeMensagemErro(msg: string) {\n this.mensagemErro = msg;\n\n this._logService.logFront(this.agendaSalvar, LogFrontFuncionalidade.Rastreamento, msg, Operacao.Inclusao, 'Agendamento de Entrega');\n\n if (this.mensagemErro && this.mensagemErro.length > 0)\n setTimeout(() => { this.topo.nativeElement.scrollIntoView(); });\n }\n\n mudouDestinatario() {\n this.ieRec = '';\n this.nomeRec = '';\n //this.enderecoSelecionado = this.enderecoNovo;\n //this.enderecoEntrega.enderecoSelecionado = this.enderecoNovo;\n this.enderecoSelecionado = this.enderecoEntrega.copiaObjetoEndereco(this.enderecoNovo);\n this.enderecoEntrega.enderecoSelecionado = this.enderecoEntrega.copiaObjetoEndereco(this.enderecoNovo);\n this.enderecoEntrega.carregaEnderecos(null, null);\n this.ObterClientes();\n }\n\n public ObterClientes() {\n\n this.loadingClientes = true;\n this.clientes = null;\n var filtroCliente = new ClienteRequest();\n filtroCliente.CNPJ = this.cnpjRec;\n filtroCliente.InscricaoEstadual = this.ieRec;\n filtroCliente.idMunicipio = this.idMunicipio;\n this._sharedService.getClientes(filtroCliente)\n .subscribe(c => {\n this.loadingClientes = false;\n if (c == null) {\n this.Destinatario = null;\n this.clientes = null;\n this.enderecoSelecionado = null;\n this.nomeRec = '';\n this.enderecoEntrega.carregaEnderecos(this.enderecoSelecionado, null);\n return;\n }\n\n this.clientes = c.filter(x => x.CNPJ == filtroCliente.CNPJ);\n if (this.clientes && this.clientes.length == 0)\n this.clientes = null;\n this.Destinatario = ((this.clientes != undefined) && (this.clientes.length == 1)) ? this.clientes[0] : null;\n\n this.enderecoEntrega.carregaEnderecos(this.enderecoSelecionado, ((this.Destinatario) ? this.Destinatario.Enderecos : null));\n });\n }\n\n ieEmbarcadorSelecionada(ie: string){\n this.Destinatario = this.clientes ? this.clientes.find(c => c.InscricaoEstadual == ie) : null;\n this.nomeRec = (this.Destinatario) ? this.Destinatario.NomeFantasia : '';\n var end = this.enderecoEntrega.copiaObjetoEndereco(this.enderecoNovo); //this.enderecoNovo;\n this.enderecoEntrega.carregaEnderecos(end, this.Destinatario.Enderecos);\n }\n\n obtemObservacoes() {\n var retorno = \"\";\n if (this.agendouTodos) {\n var lista: AgendaEntrega[] = this._groupBy.AgruparPorCampo(this.listaAgendamentos, \"observacao\");\n lista.forEach(item => {\n if (item && item.observacao)\n retorno += item.observacao + \"\\n\" ;\n });\n }\n this.observacao = retorno;\n }\n}\n","import { Component, OnInit, ViewChild, Input } from '@angular/core';\n\nimport { DatePickerOptions } from \"app/shared/ng2-datepicker/ng2-datepicker.component\";\nimport { DatepickerService } from \"app/_services/datepicker.service\";\nimport { DetalhesContainerComponent } from 'app/shared/detalhes-container/detalhes-container.component';\n\nimport { TrackingLista } from 'app/_models/tracking-lista';\nimport { TipoContainer } from 'app/_models/tipo-container';\nimport { AgendaEntrega } from 'app/_models/agenda-entrega';\n\nimport * as moment from 'moment/moment';\nimport 'moment/locale/pt-br';\n\n@Component({\n selector: 'item-entrega-agendamento',\n templateUrl: './item-entrega-agendamento.component.html',\n styleUrls: ['./item-entrega-agendamento.component.scss']\n})\nexport class ItemEntregaAgendamentoComponent implements OnInit {\n\n @ViewChild(DetalhesContainerComponent, {static: true}) detalhesContainer: DetalhesContainerComponent;\n\n tipoContainer: TipoContainer;\n options: DatePickerOptions;\n mascaraHora: Array = [/[0-2]/,/[0-9]/, ':', /[0-5]/, /[0-9]/];\n\n @Input() index: number;\n @Input() dataSugerida: Date;\n @Input() tracking: TrackingLista;\n @Input() agendamento: AgendaEntrega;\n @Input() somenteLeitura: boolean;\n\n constructor(public _datePickerService: DatepickerService) {\n this.tipoContainer = new TipoContainer();\n }\n\n changeRegex(input_time){\n if(input_time.charAt(0) == '2'){\n this.mascaraHora[1]=new RegExp('[0-3]')\n }else{\n this.mascaraHora[1]=new RegExp('[0-9]')\n }\n }\n\n ngOnInit() {\n this.options = this._datePickerService.GenerateOptionsConfig(this.dataSugerida);//new Date());\n this.tipoContainer.Desc_resumida = (this.tracking) ? this.tracking.tipoContainer : '';\n this.tipoContainer.Descricao = (this.tracking) ? this.tracking.categoriaContainer : '';\n this.tipoContainer.Tamanho = (this.tracking) ? this.tracking.tamanhoContainer : null;\n }\n\n exibeIcone(): boolean {\n return this.agendamento && this.agendamento.statusAgendamento && this.agendamento.statusAgendamento.length > 0;\n }\n\n icone(): string {\n if (!this.agendamento || !this.agendamento.statusAgendamento)\n return \"\";\n\n var status = this.agendamento.statusAgendamento.toLowerCase();\n if (status.indexOf(\"ativo\") >= 0)\n return \"check\";\n if (status.indexOf(\"rejeitado\") >= 0)\n return \"forbidden\";\n if (status == \"solicitacao agendamento portal\")\n return \"alert\";\n\n return \"\";\n }\n\n toolTipIcone(): string {\n if (!this.agendamento || !this.agendamento.statusAgendamento)\n return \"\";\n\n var status = this.agendamento.statusAgendamento.toLowerCase();\n if (status.indexOf(\"ativo\") >= 0)\n return \"Agendamento de Entrega Confirmado\";\n if (status.indexOf(\"rejeitado\") >= 0)\n return \"Agendamento de Entrega Rejeitado\";\n if (status == \"solicitacao agendamento portal\")\n return \"Solicitação de Agendamento de Entrega Pendente de Confirmação\";\n\n return \"\";\n\n }\n\n formataEndereco(): string{\n if (!this.agendamento)\n return \"\";\n\n //13340-730 - EST ANGELA TREVISAN CICILIATO, 200 - JD OLIVEIRA CAMARGO - SERRA/ES - (99) 999999999\n return ((this.agendamento.cepEnt) ? this.agendamento.cepEnt.trim() : \"\") + \" - \" +\n ((this.agendamento.logradouroEnt) ? this.agendamento.logradouroEnt.trim() : \"\") + \", \" +\n ((this.agendamento.numeroEndEnt) ? this.agendamento.numeroEndEnt.trim() : \"\") + \" \" +\n ((this.agendamento.complementoEnt) ? this.agendamento.complementoEnt.trim() : \"\") + \" - \" +\n ((this.agendamento.bairroEnt) ? this.agendamento.bairroEnt.trim() : \"\") + \" - \" +\n ((this.agendamento.municipioEnt) ? this.agendamento.municipioEnt.trim() : \"\") + \"/\" +\n ((this.agendamento.ufEnt) ? this.agendamento.ufEnt.trim() : \"\") + \" - \" +\n ((this.agendamento.contatoEnt) ? this.agendamento.contatoEnt.trim() : \"\") + \" - \" +\n ((this.agendamento.dddEnt) ? \"(\" + this.agendamento.dddEnt.trim() + \")\" : \"\") + \" \" +\n ((this.agendamento.foneEnt) ? this.agendamento.foneEnt.trim() : \"\");\n }\n\n formataData(formato: string): string{\n return (!this.agendamento || this.agendamento.numAgendamento == 0) ? \"\" : moment(this.agendamento.dataEntrega).format(formato);\n }\n\n formataHora(): string{\n console.log(this.agendamento.horaEntrega);\n const horaSplit = this.agendamento.horaEntrega.split(':')\n console.log(horaSplit)\n if(horaSplit.length != 2)\n return;\n const hora = horaSplit[0].length != 2? '0' + horaSplit[0]: horaSplit[0]\n const minutos = horaSplit[1].length != 2 && horaSplit[1] != ''? '0' + horaSplit[1]: horaSplit[1]\n this.agendamento.horaEntrega = hora + ':' + minutos;\n }\n}\n","import { Component, OnInit, ViewChild, EventEmitter, Output } from '@angular/core';\n\nimport { Porto } from 'app/_models/porto';\nimport { Municipio } from 'app/_models/municipio';\nimport { NavioViagem } from 'app/_models/navioViagem';\nimport { BaseFiltroTop } from 'app/_models/base-filtro-top';\nimport { MunicipioRequest } from 'app/_models/municipio-request';\nimport { NavioViagemRequest } from 'app/_models/navioViagem-request';\nimport { TrackingListaRequest } from 'app/_models/trackinglista-request';\nimport { FilterComboConfiguration } from \"app/_models/filterComboConfiguration\";\n\nimport { AppService } from 'app/_services/app.service';\nimport { SharedService } from 'app/_services/shared.service';\nimport { MessageService } from 'app/_services/message.service';\nimport { MunicipioService } from 'app/_services/municipio.service';\nimport { DatepickerService } from 'app/_services/datepicker.service';\nimport { NavioViagemService } from 'app/_services/navio-viagem.service';\n\nimport { DatePickerOptions } from \"app/shared/ng2-datepicker/ng2-datepicker.component\";\nimport { BaseComponent } from 'app/shared/base.component';\nimport { CnpjDropdownComponent } from 'app/shared/cnpj-dropdown/cnpj-dropdown.component';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { AnalyticsService } from 'app/_services/analytics.service';\n\nimport { Operacao } from 'app/_enums/operacao';\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\n\n@Component({\n selector: 'busca-rastreamento',\n templateUrl: './busca-rastreamento.component.html',\n styleUrls: ['./busca-rastreamento.component.scss']\n})\nexport class BuscaRastreamentoComponent extends BaseComponent implements OnInit {\n\n @ViewChild(CnpjDropdownComponent, {static: true}) cnpjdropdown: CnpjDropdownComponent;\n @Output() carregaFiltrosDeRastreamento: EventEmitter = new EventEmitter();\n @Output() zeraPesquisa: EventEmitter = new EventEmitter();\n //@Output() listaMunicipiosCarregada: EventEmitter = new EventEmitter();\n // EventEmitter = new EventEmitter();\n\n // loadings\n loading = false;\n loadingPortos = false;\n loadingMunicipios = false;\n loadingNavioViagem = false;\n loadingDetalhes = false;\n\n filtroMunicipio: MunicipioRequest = new MunicipioRequest();\n filtroTrackingLista: TrackingListaRequest = new TrackingListaRequest();\n filtroTop: BaseFiltroTop = new BaseFiltroTop();\n\n\tnavioViagemSelecionado: NavioViagem;\n\tnavioViagens: NavioViagem[] = [];\n\n // Default selection\n optionsModel: number[] = [];\n\n portos: Porto[] = [];\n municipios: Municipio[] = [];\n\n cnpjDigitado: string;\n\n eAdmin = this._appService.isAdmin();\n eCliente = this._appService.isCliente();\n maisDeUmCNPJ = this._appService.maisDeUmCNPJ();\n cssClassAdmin = '';\n cssClassPeriodo = 'select-group t-t-filter-periodo ';\n\n optionsInicio: DatePickerOptions;\n\n comboCidades: FilterComboConfiguration;\n comboPortos: FilterComboConfiguration;\n\n constructor(private _appService: AppService,\n private _municipioService: MunicipioService,\n private _datepickerService: DatepickerService,\n private _msgService: MessageService,\n private _sharedService: SharedService,\n private _navioViagemService: NavioViagemService,\n private _sanitizer: DomSanitizer,\n private _analyticsService: AnalyticsService) {\n super();\n\n this.comboCidades = new FilterComboConfiguration('Cidade(s)...');\n this.comboCidades.settings = {\n checkedStyle: 'glyphicon',\n dynamicTitleMaxItems: 2,\n enableSearch: true\n };\n\n this.comboPortos = new FilterComboConfiguration('Porto(s)...');\n this.comboPortos.settings = {\n checkedStyle: 'glyphicon',\n showCheckAll: true,\n showUncheckAll: true,\n dynamicTitleMaxItems: 2\n };\n }\n\n ngOnInit() {\n this.cssClassAdmin = this.eAdmin || (this.eCliente && this.maisDeUmCNPJ) ? '' : ' customer-profile';\n this.filtroTop.tipoFiltroPeriodo = 1; // Default\n this.optionsInicio = this._datepickerService.GenerateOptionsConfig(new Date());\n\n this.cnpjdropdown.SelecionaMultiplos = true;\n this.cnpjdropdown.modoEdicao = false;\n\n this.ObterPortos();\n\n if (!this._appService.isAdmin()){\n this.ObterMunicipios(null);\n\n this.cnpjAlterado(this._appService.UsuarioLogado.CNPJs.join(\";\"));\n }\n else {\n this.cnpjdropdown.cnpjsGrupos = localStorage.getItem('cnpjGrupos');\n if (this.cnpjdropdown.cnpjsGrupos)\n this.cnpjAlterado(this.cnpjdropdown.cnpjsGrupos);\n }\n }\n\n exibePeriodo(value) {\n this.cssClassAdmin = this.eAdmin || (this.eCliente && this.maisDeUmCNPJ) ? '' : ' customer-profile';\n this.cssClassAdmin = (value == '3') ? this.cssClassAdmin + ' has-period' : '';\n this.atribuiPeriodoInicialEFinal();\n }\n\n formataDataFim(): string {\n return (!this.filtroTrackingLista.dataFim) ? '' :\n this._sharedService.formataDataHoraBR(this.filtroTrackingLista.dataFim, false);\n }\n\n configuraPeriodo() {\n //Se filtro genérico ou navio viagem estão preenchido, o período deve ser vazio, caso contrário, o mesmo é obrigatório\n if ((this.filtroTop.filtroGenerico2 && this.filtroTop.filtroGenerico2.trim().length > 0) ||\n (this.navioViagemSelecionado && this.navioViagemSelecionado.idViagemNavio != 0)) {\n this.filtroTop.tipoFiltroPeriodo = 0;\n this.cssClassPeriodo = 'select-group t-t-filter-periodo disabled';\n }\n else {\n this.cssClassPeriodo = 'select-group t-t-filter-periodo';\n if (this.filtroTop.tipoFiltroPeriodo == 0)\n this.filtroTop.tipoFiltroPeriodo = 1;\n }\n this.exibePeriodo(this.filtroTop.tipoFiltroPeriodo);\n }\n\n public ObterPortos() {\n this.loadingPortos = true;\n this._sharedService.getPortos()\n .subscribe(m => {\n this.portos = m;\n if (this.portos != null) {\n this.portos.forEach(porto => {\n this.comboPortos.options.push({ id: porto.Codigo, name: porto.Descricao });\n });\n }\n this.loadingPortos = false;\n });\n }\n\n\tobterNaviosViagens(consulta: NavioViagemRequest) {\n\t\tthis.loadingNavioViagem = true;\n\t\tthis._navioViagemService.getNavioViagem(consulta)\n\t\t\t.subscribe(viagens => {\n\t\t\t\tthis.loadingNavioViagem = false;\n this.navioViagens = []; //(viagens == null) ? [] : viagens;\n\n if (viagens)\n viagens.forEach(viagem => {\n var str = viagem.descViagemNavio.split('/');\n var navio = this._sharedService.toCamelCase(str[0]) + '/' + str[1];\n this.navioViagens.push({ idViagemNavio: viagem.idViagemNavio, descViagemNavio: navio, descViagemNavioResim: '', sentido: '', numViagemNavio: '' });\n });\n\n\t\t\t});\n }\n\n autocompleListFormatter = (data: any) => {\n\t\tlet html = `${data.descViagemNavio}`;\n\t\treturn this._sanitizer.bypassSecurityTrustHtml(html);\n\t\t//return html;\n\t}\n\n cnpjAlterado(cnpj: string){\n var request = new NavioViagemRequest();\n request.idUsuario = this._appService.UsuarioLogado.UsuarioIDeCargo;\n request.dataIni = this.filtroTrackingLista.dataIni;\n request.dataFim = this.filtroTrackingLista.dataFim;\n request.CNPJCliente = cnpj;\n request.tipo = \"TODOS\";\n this.obterNaviosViagens(request);\n\n this.cnpjDigitado = cnpj;\n this.ObterMunicipios(cnpj);\n this.Pesquisar(false, false);\n }\n\n public ObterMunicipios(cnpj: string) {\n this.loadingMunicipios = true;\n this.filtroMunicipio.idUsuario = this._appService.UsuarioLogado.UsuarioIDeCargo;\n this.filtroMunicipio.tipoConsulta = '2'; // Rastreamento - Cenário 7: tipoConsulta = 2\n this.filtroMunicipio.cnpjCli = cnpj;\n this.filtroMunicipio.dataIni = this.filtroTrackingLista.dataIni;\n this.filtroMunicipio.datafim = this.filtroTrackingLista.dataFim;\n //this._municipioService.getMunicipios('') //.getMunicipiosEspecial(this.filtroMunicipio)\n this.municipios = [];\n this.comboCidades.options = [];\n this._municipioService.getMunicipiosEspecial(this.filtroMunicipio)\n .subscribe(m => {\n this.municipios = m;\n if (this.municipios != null) {\n this.comboCidades.options = [];\n this.municipios.forEach(municipio => {\n this.comboCidades.options.push({ id: municipio.Codigo, name: municipio.Descricao + ' / ' + municipio.UF });\n });\n }\n //this.listaMunicipiosCarregada.emit(this.municipios); // comboCidades.options);\n this.loadingMunicipios = false;\n });\n }\n\n public Pesquisar(loadFilter: boolean = true, registrarAnalytics: boolean = true) {\n this._msgService.clearMessage();\n if (this.eAdmin && ((this.cnpjdropdown.CNPJDigitado == undefined) || (this.cnpjdropdown.CNPJDigitado == \"\")) && (!this.cnpjdropdown.cnpjsGrupos)) {\n this._msgService.addMessage('Rastreamento', 'Informe o CNPJ do Cliente ou selecione ao menos um Grupo Econômico.', 'danger',\n LogFrontFuncionalidade.Rastreamento, Operacao.Consulta, this.filtroTop);\n this.zeraPesquisa.emit();\n return;\n }\n else {\n if (this.eAdmin && this.cnpjdropdown.cnpjsGrupos && this.cnpjdropdown.CNPJDigitado) {\n if (!this.cnpjdropdown.validaCNPJnoGrupo()) {\n this._msgService.addMessage('Rastreamento', 'CNPJ informado não pertence ao(s) Grupo(s) Econômico(s) selecionado(s)!', 'error',\n LogFrontFuncionalidade.Rastreamento, Operacao.Consulta, this.filtroTop);\n this.zeraPesquisa.emit();\n return;\n }\n }\n\n //limpa mensagens de erros\n this._msgService.clearMessage();\n\n var cnpjSemFormatacao = \"\";\n if (this.cnpjdropdown.CNPJDigitado != undefined) {\n cnpjSemFormatacao = this._sharedService.replaceAll(this.cnpjdropdown.CNPJDigitado, '.', '');\n cnpjSemFormatacao = this._sharedService.replaceAll(cnpjSemFormatacao, '/', '');\n cnpjSemFormatacao = this._sharedService.replaceAll(cnpjSemFormatacao, '-', '');\n }\n\n this.filtroTrackingLista.idUsuario = this._appService.UsuarioLogado.UsuarioIDeCargo;\n this.filtroTrackingLista.filtroGenerico = this.filtroTop.filtroGenerico;\n this.filtroTrackingLista.filtroGenerico2 = this.filtroTop.filtroGenerico2;\n this.filtroTrackingLista.idsMunicOri = this.filtroTop.municipiosOrigem ? this.filtroTop.municipiosOrigem.join(';') : '';\n this.filtroTrackingLista.idsPortoOri = this.filtroTop.portosOrigem ? this.filtroTop.portosOrigem.join(';') : '';\n this.filtroTrackingLista.idsMunicDes = this.filtroTop.municipiosDestino ? this.filtroTop.municipiosDestino.join(';') : '';\n this.filtroTrackingLista.idsPortoDes = this.filtroTop.portosDestino ? this.filtroTop.portosDestino.join(';') : '';\n this.filtroTrackingLista.cnpjCli = this.cnpjdropdown.CNPJs ? this.cnpjdropdown.CNPJs.join(';') :\n this.cnpjdropdown.CNPJDigitado ? cnpjSemFormatacao :\n this.cnpjdropdown.cnpjsGrupos ? this.cnpjdropdown.cnpjsGrupos : '';\n this.filtroTrackingLista.idNavioViagem = (this.navioViagemSelecionado) ? this.navioViagemSelecionado.idViagemNavio : null;\n this.atribuiPeriodoInicialEFinal();\n if ((this.filtroTrackingLista.dataIni && this.filtroTrackingLista.dataIni.toString() == \"Invalid Date\") ||\n (this.filtroTrackingLista.dataFim && this.filtroTrackingLista.dataFim.toString() == \"Invalid Date\")) {\n this._msgService.addMessage('Rastreamento', ' ', 'danger', LogFrontFuncionalidade.Rastreamento, Operacao.Consulta, this.filtroTrackingLista);\n return;\n }\n\n if (registrarAnalytics)\n this._analyticsService.RegistrarFiltroRastreamento(this.filtroTrackingLista, this.filtroTop.tipoFiltroPeriodo);\n\n this.filtroTrackingLista.status = this.filtroTop.tipoFiltroPeriodo == 1;\n this.carregaFiltrosDeRastreamento.emit(this.filtroTrackingLista);\n\n if(loadFilter)\n {\n this.ObterMunicipios(this._appService.isAdmin() ? this.cnpjDigitado : null);\n\n var request = new NavioViagemRequest();\n request.idUsuario = this._appService.UsuarioLogado.UsuarioIDeCargo;\n request.dataIni = this.filtroTrackingLista.dataIni;\n request.dataFim = this.filtroTrackingLista.dataFim;\n request.CNPJCliente = this._appService.isAdmin() ? this.cnpjDigitado : this.cnpjdropdown.CNPJFiltro;\n request.tipo = \"TODOS\";\n this.obterNaviosViagens(request);\n }\n }\n }\n\n atribuiPeriodoInicialEFinal(): void {\n // A partir de...\n if (this.filtroTop.tipoFiltroPeriodo == 3) {\n let dataInicio = this._datepickerService.ObtemData(this.filtroTop.dataInicio, 'DD/MM/YYYY');\n this.filtroTrackingLista.dataFim = dataInicio; // Inicializa Data Final\n\n // Atribui período conforme opção selecionada\n this.filtroTrackingLista.dataIni = new Date(dataInicio);\n this.filtroTrackingLista.dataFim.setDate(dataInicio.getDate() + 30);\n }else if(this.filtroTop.tipoFiltroPeriodo == 2) {\n this.filtroTrackingLista.dataFim = new Date(); // defini data atual - 10 dias\n this.filtroTrackingLista.dataIni = this._sharedService.addDays(this.filtroTrackingLista.dataFim, -10);\n } else {\n this.filtroTrackingLista.dataFim = null; // Default: cargas em trânsito\n this.filtroTrackingLista.dataIni = null;\n }\n }\n}\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\n\nimport { TrackingLista } from \"app/_models/tracking-lista\";\nimport { TipoEventoTracking } from \"app/_models/tipoEventoTracking\";\n\nimport { SharedService } from './../../../_services/shared.service';\nimport { RastreamentoCargasVM } from \"app/_services/rastreamento-cargas-vm\";\n\nimport { BaseComponent } from './../../../shared/base.component';\nimport { PaginaParametroPorto } from 'app/_models/pagina-parametro-porto';\nimport { ParametroPorto } from 'app/_models/parametro-porto';\n\n@Component({\n selector: 'filtro-rastreamento',\n templateUrl: './filtro-rastreamento.component.html',\n styleUrls: ['./filtro-rastreamento.component.scss']\n})\nexport class FiltroRastreamentoComponent extends BaseComponent implements OnInit {\n\n constructor(private _sharedService: SharedService) {\n super();\n }\n ngOnInit() { }\n\n quantidadeConfirmado: number = 0;\n quantidadeColetada: number = 0;\n quantidadeDepositada: number = 0;\n quantidadeNavegando: number = 0;\n quantidadeDesembarcada: number = 0;\n quantidadeEmEntrega: number = 0;\n quantidadeRealizada: number = 0;\n quantidadeRetiradadocheio: number = 0;\n quantidadeDevolucaoVazio: number = 0;\n qtdPendenteAgendNavegando: number = 0;\n qtdPendenteAgendDesembarcada: number = 0;\n paginaParametroPorto: PaginaParametroPorto;\n\n @Output() stepAlterado: EventEmitter = new EventEmitter();\n\n stepAtivo: string = 'total';\n\n get quantidadeTotal(): number {\n return this.quantidadeConfirmado + this.quantidadeColetada + this.quantidadeDepositada +\n this.quantidadeNavegando + this.quantidadeDesembarcada +\n this.quantidadeEmEntrega + this.quantidadeRealizada + this.quantidadeRetiradadocheio +\n this.quantidadeDevolucaoVazio;\n }\n\n formataQuantidade(quantidade: number): string {\n if ((quantidade == undefined) || (quantidade == 0)) {\n return '0';\n }\n\n const quantidadeFormatada = (quantidade < 10 ? ('0' + quantidade).slice(-2) : quantidade.toString());\n return quantidadeFormatada;\n }\n\n styleLinkStep(quantidade: number){\n return (quantidade > 0) ? 'auto' : 'none';\n }\n\n possuiItens(quantidade: number){\n return (quantidade > 0) ? ' possui-itens' : '';\n }\n\n stepEstaAtivo(step: string): string{\n return (step == this.stepAtivo) ? 'active' : '';\n }\n\n stepClick(step: string){\n this.stepAtivo = step;\n this.stepAlterado.emit(step);\n }\n\n private atribuiQuantidadePorTipoEvento(tiposEventos: TipoEventoTracking[]): void{\n //console.log(tiposEventos);\n if (!tiposEventos) {\n this.zeraQuantidades();\n return;\n }\n\n this.quantidadeConfirmado = 0;\n this.quantidadeColetada = 0;\n this.quantidadeDepositada = 0;\n this.quantidadeNavegando = 0;\n this.quantidadeDesembarcada = 0;\n this.quantidadeEmEntrega = 0;\n this.quantidadeRealizada = 0;\n this.quantidadeRetiradadocheio = 0;\n this.quantidadeDevolucaoVazio = 0;\n\n tiposEventos.forEach(x => {\n if (x.Descricao){\n let descricao: string = x.Descricao.toLowerCase().trim();\n\n if (descricao.startsWith('coletada')) {\n this.quantidadeColetada = x.Quantidade;\n } else if (descricao.startsWith('booking confirmado')) {\n this.quantidadeConfirmado = x.Quantidade;\n }else if (descricao.startsWith('depositada')) {\n this.quantidadeDepositada = x.Quantidade;\n } else if (descricao.startsWith('navegando')) {\n this.quantidadeNavegando = x.Quantidade;\n } else if (descricao.startsWith('desembarcada')) {\n this.quantidadeDesembarcada = x.Quantidade;\n } else if (descricao.startsWith('em')) { // Em entrega\n this.quantidadeEmEntrega = x.Quantidade;\n } else if (descricao.startsWith('realizada')) {\n this.quantidadeRealizada = x.Quantidade;\n } else if(descricao.startsWith('retirada')) {\n this.quantidadeRetiradadocheio = x.Quantidade;\n } else if(descricao.startsWith('retira')) {\n this.quantidadeRetiradadocheio = x.Quantidade;\n } else if(descricao.startsWith('devolução')) {\n this.quantidadeDevolucaoVazio = x.Quantidade;\n }\n }\n });\n }\n\n private atribuiQuantidadeDeEntregaPendente(trackings: TrackingLista[]): void {\n if (!trackings) {\n this.qtdPendenteAgendDesembarcada = 0;\n this.qtdPendenteAgendNavegando = 0;\n return;\n }\n\n if (trackings) {\n this.qtdPendenteAgendNavegando = trackings.filter(x => x.PendenteAgendamentoNavegando).length;\n this.qtdPendenteAgendDesembarcada = trackings.filter(x => x.PendenteAgendamentoDesembarcada).length;\n\n /*\n this.qtdPendenteAgendNavegando = trackings.filter(x =>\n !x.idAgendEntrega &&\n x.statusBooking &&\n x.statusBooking.toLowerCase().startsWith('navegando') &&\n x.modal && x.modal.endsWith('PA') &&\n (this._sharedService.addHours(this._sharedService.corrigeData(x.prevEntrega), -this.obterQtdHorasAgendaEntrega(x)) <= new Date())\n ).length;\n\n this.qtdPendenteAgendDesembarcada = trackings.filter(x =>\n !x.idAgendEntrega &&\n x.statusBooking &&\n x.statusBooking.toLowerCase().startsWith('desembarcada') &&\n x.modal && x.modal.endsWith('PA') &&\n (this._sharedService.addHours(this._sharedService.corrigeData(x.prevEntrega), -this.obterQtdHorasAgendaEntrega(x)) <= new Date())\n ).length;\n*/\n if (!this.qtdPendenteAgendNavegando) {\n this.qtdPendenteAgendNavegando = 0;\n }\n\n if (!this.qtdPendenteAgendDesembarcada) {\n this.qtdPendenteAgendDesembarcada = 0;\n }\n }\n }\n\n carregaDadosEmComponente(rastreamentosCargasVM: RastreamentoCargasVM): void {\n this.atribuiQuantidadePorTipoEvento(rastreamentosCargasVM.tiposEventos);\n this.atribuiQuantidadeDeEntregaPendente(rastreamentosCargasVM.trackings);\n }\n\n obterQtdHorasAgendaEntrega(tracking: TrackingLista): number{\n var idPorto = tracking.idPortoDestino;\n var parametroExcecao = this.paginaParametroPorto.ParametroPortoExcecoes.find(p => p.PortoID == idPorto);\n var parametro = (parametroExcecao && parametroExcecao.QtdHrEntrega != 0) ? parametroExcecao : this.paginaParametroPorto.ParametroPortoPadrao;\n return (parametro && parametro.QtdHrEntrega) ? parametro.QtdHrEntrega : 0; // .QtdHrMinimasAgendEntrega\n }\n\n zeraQuantidades() {\n this.quantidadeConfirmado = 0;\n this.quantidadeColetada = 0;\n this.quantidadeDepositada = 0;\n this.quantidadeNavegando = 0;\n this.quantidadeDesembarcada = 0;\n this.quantidadeEmEntrega = 0;\n this.quantidadeRealizada = 0;\n this.qtdPendenteAgendDesembarcada = 0;\n this.qtdPendenteAgendNavegando = 0;\n this.quantidadeDevolucaoVazio = 0;\n this.quantidadeRetiradadocheio = 0;\n }\n}\n","import { Component, Input } from \"@angular/core\";\nimport { InfoSil } from \"app/_models/info-sil\";\n\n@Component({\n selector: 'infos-sil',\n templateUrl: './infos-sil.component.html',\n})\nexport class InfosSilComponent {\n\n @Input() infosSil: InfoSil[];\n @Input() tracking;\n\n _info;\n get info() : InfoSil{\n if(!this.infosSil)\n return;\n\n if(!this._info) {\n if(this.tracking.statusBooking === \"Coletada\")\n this._info = this.infosSil.find(e => e.evento === 'coleta')\n else\n this._info = this.infosSil.find(e => e.evento === 'entrega')\n }\n return this._info;\n }\n\n}\n","import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\n\nimport { TrackingCteNf } from '../../../../_models/tracking-cte-nf';\n\nimport { BaseComponent } from './../../../../shared/base.component';\nimport { OkEntregaService } from 'app/_services/ok-entrega.service';\nimport { ImagemNF } from 'app/_models/imagemNF';\nimport { map } from 'rxjs/operators';\nimport { HttpResponse } from '@angular/common/http';\nimport { AppService } from 'app/_services/app.service';\nimport { BaseService } from 'app/_services/base.service';\nimport { ConfigViaGreen } from 'app/_models/config-portal';\nimport { MessageService } from 'app/_services/message.service';\n\n\n@Component({\n selector: 'lista-docs',\n templateUrl: './lista-docs.component.html',\n styleUrls: ['./lista-docs.component.scss']\n})\nexport class ListaDocsComponent extends BaseComponent implements OnInit {\n @Input() listaDocs: TrackingCteNf[];\n @Input() linksCertificados: string[];\n @Input() tracking: any;\n @Input() CanhotosDisponiveis: ImagemNF[];\n @Output() executaDownloadDoc: EventEmitter = new EventEmitter();\n @Input() co2: number;\n @Input() indicEcoFrete: number;\n @Input() idViagreen: string;\n\n xmlsExpandidos = false;\n downloading = false;\n\n constructor(private _okEntregaService: OkEntregaService, private _baseService: BaseService, private appService: AppService, private _msgService: MessageService) {\n super();\n }\n\n ngOnInit(): void {\n }\n\n GetCo2(){\n return this.co2 != undefined ? parseFloat(\"\"+this.co2).toFixed(2).replace('.', ',') : (0).toFixed(2);\n }\n\n getLinklinkCo2() {\n return this.idViagreen && this.idViagreen.length ?\n this.appService.configViaGreen.apiUrlDownloadCertificado + \"/\" + this.idViagreen.split(\";\")[0] + \"?accessToken=\" + this.appService.configViaGreen.token : \"https://www.alianca.com.br/ecofrete\";\n }\n\n\n botaoCo2(){\n if(this.indicEcoFrete && this.idViagreen)\n this.downloadCertificado();\n else if(!this.idViagreen && !this.indicEcoFrete)\n this.abrirPaginaEcofrete();\n }\n\n downloadCertificado() {\n this._baseService.downloadFileByUrl(this.getLinklinkCo2(), \"certificado-co2.pdf\").subscribe(() => {return},\n () => this._msgService.addMessage(\"Rastreamento\", \"Não foi possível baixar o certficado! Tente novamente mais tarde.\", \"error\")\n );\n }\n\n abrirPaginaEcofrete() {\n this._baseService.OpenNewTab(this.getLinklinkCo2());\n }\n\n GetTooltipCo2Text(){\n return this.indicEcoFrete ? this.idViagreen != null && this.idViagreen != \"\" ? \"Baixar certificado de compensação\" : \"O Certificado de Compensação estará disponível ao final do transporte\"\n : \"você quer saber como compensar o CO2 emitido no seu transporte? clique aqui!\";\n }\n\n GetLabelCo2() {\n return this.indicEcoFrete ? \"Compensação\" : \"Emissão\";\n }\n\n temCanhotosDisponiveis(): boolean {\n return this.CanhotosDisponiveis != null && this.CanhotosDisponiveis.some(res => res.TipoImagem === 'PDF')\n }\n apenasUmItemNaLista(): boolean {\n return (!this.listaDocs || this.listaDocs.length < 2);\n }\n\n GetColorCo2(){\n return this.indicEcoFrete? \"\" : \"red\";\n }\n\n downloadCanhoto() {\n this.downloading = true;\n this._okEntregaService.getPDFCanhotos(this.CanhotosDisponiveis).subscribe(res => {\n if(res.length > 1) {\n let names = res.map((r,index) => `canhoto-nf-${this.CanhotosDisponiveis[index].NumNF}.pdf`);\n this._baseService.zipAndDownload(res, names, \"canhotos.zip\");\n this.downloading = false;\n } else {\n this._baseService.download(res[0], `canhoto-nf-${this.CanhotosDisponiveis[0].NumNF}.pdf`);\n this.downloading = false;\n }\n });\n }\n\n expandirDivDocumentosXml(expandir: boolean): boolean {\n return this.xmlsExpandidos = !expandir;\n }\n\n habilitaDivDocumentoXml(indice: number) {\n return indice != 0 && !this.xmlsExpandidos;\n }\n\n downloadDoc(cteNf: TrackingCteNf) {\n this.executaDownloadDoc.emit(cteNf);\n }\n}\n","import { Component, OnInit, ViewChild, EventEmitter, Output } from '@angular/core';\n\nimport { TrackingCteNf } from 'app/_models/tracking-cte-nf';\nimport { TrackingLista } from './../../../_models/tracking-lista';\nimport { TipoEventoTracking } from '../../../_models/tipoEventoTracking';\nimport { TrackingListaRequest } from './../../../_models/trackinglista-request';\nimport { TrackingRastreamentoComponent } from 'app/cliente/rastreamento/lista-rastreamento/tracking-rastreamento/tracking-rastreamento.component';\n\nimport { AppService } from \"app/_services/app.service\";\nimport { SharedService } from 'app/_services/shared.service';\nimport { RastreamentoService } from 'app/_services/rastreamento.service';\nimport { AgendaEntregaService } from 'app/_services/agenda-entrega.service';\nimport { GenericOrderbyService } from 'app/_services/generic-orderby.service';\n\nimport { BaseComponent } from './../../../shared/base.component';\nimport { PaginacaoComponent } from 'app/shared/paginacao/paginacao.component';\nimport { AgendamentoRastreamentoComponent } from 'app/cliente/rastreamento/agendamento-rastreamento/agendamento-rastreamento.component';\nimport { PaginaParametroPorto } from 'app/_models/pagina-parametro-porto';\nimport { DetalhesContainerComponent } from 'app/shared/detalhes-container/detalhes-container.component';\nimport { ParametroService } from 'app/_services/parametro.service';\nimport { AnalyticsService } from 'app/_services/analytics.service';\nimport { AnalyticsTela } from 'app/_enums/analytics-tela';\nimport { AnalyticsOperacao } from 'app/_enums/analytics-operacao';\nimport { DetalhesTrackingRequest } from 'app/_models/detalhes-tracking-request';\nimport { Co2Total } from 'app/_models/co2-total';\n\n@Component({\n selector: 'lista-rastreamento',\n templateUrl: './lista-rastreamento.component.html',\n styleUrls: ['./lista-rastreamento.component.scss']\n})\nexport class ListaRastreamentoComponent extends BaseComponent implements OnInit {\n\n // ViewChilds\n @ViewChild(TrackingRastreamentoComponent, {static: true}) trackingRastreamento: TrackingRastreamentoComponent;\n @ViewChild(AgendamentoRastreamentoComponent, {static: true}) agendamentoRastreamento: AgendamentoRastreamentoComponent;\n @ViewChild(PaginacaoComponent, {static: true}) paginacao: PaginacaoComponent;\n @ViewChild(DetalhesContainerComponent, {static: true}) detalhesContainer : DetalhesContainerComponent;\n @Output() carregaFiltrosDeRastreamento: EventEmitter = new EventEmitter();\n @Output() visualizarMapaEmmiter: EventEmitter = new EventEmitter();\n @Output() totalCo2: EventEmitter = new EventEmitter();\n // Variáveis\n rastreamentos: TrackingLista[] = [];\n tpEventos: TipoEventoTracking[] = [];\n paginaParametroPorto: PaginaParametroPorto;\n filtroPesquisaPrincipal: TrackingListaRequest;\n\n constructor(private _sharedService: SharedService,\n private _genericOrderbyService: GenericOrderbyService,\n private _rastreamentoService: RastreamentoService,\n private _agendaEntregaService: AgendaEntregaService,\n private _parametroService: ParametroService,\n private _appService: AppService,\n private _analyticsService: AnalyticsService) {\n super();\n }\n\n ngOnInit() {\n this.agendamentoRastreamento.carregaFiltrosDeRastreamento.subscribe(\n (filtro: TrackingListaRequest) => {\n //this.pesquisar(filtro);\n this.carregaFiltrosDeRastreamento.emit(null);\n });\n }\n\n setRastreamentoModal(id: number, soLeitura: boolean = false) {\n const rastreios = this.rastreamentos.filter(track => track.idBooking === id);\n const parametro = this._parametroService.obterParametros(this.paginaParametroPorto, rastreios[0].idPortoDestino);\n this.agendamentoRastreamento.qtdHorasEntregaETA = parametro.QtdHrAgendEntrega;\n this.agendamentoRastreamento.qtdMinHorasEntrega = parametro.QtdHrMinimasAgendEntrega;\n this.agendamentoRastreamento.exibeMensagemErro('');//.mensagemErro = '';\n this.agendamentoRastreamento.setRastreamento(rastreios, soLeitura);\n this._analyticsService.RegistrarOperacao(AnalyticsTela.Rastreamento, AnalyticsOperacao.AgendamentoVisualizado);\n this._agendaEntregaService.showModal();\n }\n\n downloadDoc(cteNf: TrackingCteNf) {\n console.log('Executou o download: ' + cteNf.canhoto);\n }\n\n carregaListaTrackins(trackings: TrackingLista[]) {\n if (trackings) {\n this.rastreamentos = trackings;\n const compensouCo2 = this.rastreamentos.some(x => x.indicEcoFrete == true);\n const totalCo2 = this.rastreamentos.filter(x => x.indicEcoFrete == compensouCo2).map(x => x.co2 || 0).reduce((x, total) => x + total, 0);\n const co2Total = new Co2Total();\n co2Total.co2 = totalCo2;\n co2Total.indicEcofrete = compensouCo2;\n\n this.totalCo2.emit(co2Total);\n this.paginacao.setAllData(this.rastreamentos);\n }\n }\n\n obtemListaTrackingOrdenadaPorCampo(ordenacao: string) {\n if (this.rastreamentos) {\n var dados = ordenacao.split('|');\n var campo = dados[0];\n var descendente = dados[1] == \"DESC\";\n this.paginacao.setAllData(this._genericOrderbyService.ordenarPorCampo(this.rastreamentos, campo, descendente));\n }\n }\n\n setQuantidadeRegistrosPorPagina(quantidadePorPagina: number) {\n this.paginacao.setPageSize(quantidadePorPagina);\n }\n\n setTiposEventos(tiposEventos: TipoEventoTracking[]): void {\n this.tpEventos = tiposEventos;\n }\n\n exibirErroModal(mensagemErro: string) {\n this.agendamentoRastreamento.exibeMensagemErro(mensagemErro); //.mensagemErro = mensagemErro;\n }\n\n obtemClasseDoStatus(status: string): string {\n if (status) {\n status = status.toLowerCase();\n if (status.indexOf('emitido') !== -1) {\n return 'quotation-status active';\n } else if (status.indexOf('pendente') !== -1) {\n return 'quotation-status waiting';\n }\n else if (status.indexOf('ativo') !== -1) {\n return 'quotation-status info';\n }\n return 'quotation-status expired';\n }\n return 'quotation-status waiting';\n }\n\n obtemClassDoTipoDeEvento(statusBooking: string): string {\n if (statusBooking) {\n const descricaoTpEvento: string = statusBooking.trim().toLowerCase();\n switch (descricaoTpEvento) {\n case 'booking confirmado':\n return 'product-cargas confirmadas';\n case 'coletada':\n return 'product-cargas coletadas';\n case 'depositada':\n return 'product-cargas depositadas';\n case 'navegando':\n return 'product-cargas navegando';\n case 'desembarcada':\n return 'product-cargas desembarcadas';\n case 'em entrega':\n return 'product-cargas em-entrega';\n case 'realizada':\n return 'product-cargas realizadas';\n case 'devolução vazio':\n return 'product-cargas devolucao-vazio';\n case 'retirada cheio':\n return 'product-cargas retirada-cheio';\n default:\n return 'product-cargas coletadas';\n }\n }\n\n return 'product-cargas coletadas';\n }\n\n visualizarDetalhesDoTracking(tracking: TrackingLista): void {\n if (tracking) {\n this._analyticsService.RegistrarOperacao(AnalyticsTela.Rastreamento, AnalyticsOperacao.ConsultaRastreamento);\n tracking.loading = true;\n var filtro = new DetalhesTrackingRequest();\n filtro.idBooking = tracking.idBooking;\n filtro.idUsuario = this._appService.UsuarioLogado.UsuarioIDeCargo;\n filtro.numContainer = tracking.numContainer;\n filtro.cnpjCli = this.filtroPesquisaPrincipal.cnpjCli; // tracking.cnpjCli;\n filtro.numBooking = tracking.numBooking;\n filtro.idAgendColeta = tracking.idAgendColeta;\n filtro.idBooking = tracking.idBooking;\n\n if ((tracking.detalhes == null) || (tracking.detalhes && tracking.detalhes.length == 0)) {\n tracking.detalhes = [];\n tracking.arquivosCTeNf = [];\n tracking.infosSil = [];\n tracking.loading = true;\n\n this._rastreamentoService.obtemDetalhesTracking(filtro)\n .subscribe(detalhes => {\n if (!detalhes){\n tracking.loading = false;\n return;\n }\n\n tracking.detalhes = detalhes.EventosTracking;\n tracking.arquivosCTeNf = detalhes.CTesTracking;\n tracking.verNoMapa = detalhes.ExibeVerNoMapa;\n tracking.CanhotosDisponiveis = detalhes.CanhotosDisponiveis;\n\n tracking.infosSil = detalhes.SilViewModels;\n tracking.loading = false;\n },\n (err) => console.log(err)\n );\n }\n else\n tracking.loading = false;\n }\n }\n\n temSilInfo(tracking, evento){\n return tracking.infosSil && tracking.infosSil.some(e => e === evento);\n }\n\n changeEmColeta(str: string){\n if(str && str === 'Coletada')\n return \"Em coleta\";\n return str;\n }\n\n getContainer(str: string) {\n if (!str)\n return \"\";\n return (str != \"Indeterminado\") ? str.toUpperCase() : str;\n }\n\n obtemCidadeEmbarcador(track: TrackingLista): string {\n if (!track || !track.modal)\n return \"\";\n\n return (track.modal.startsWith('PA')) ? this._sharedService.toCamelCase(track.municColeta) :\n this._sharedService.toCamelCase(track.portoOri);\n }\n\n obtemCidadeDestinatario(track: TrackingLista): string {\n if (!track || !track.modal)\n return \"\";\n\n return (track.modal.endsWith('PA')) ? this._sharedService.toCamelCase(track.municEntrega) :\n this._sharedService.toCamelCase(track.portoDes) ;\n }\n\n VisualizarMapaTracking(track: TrackingLista) {\n this.visualizarMapaEmmiter.emit(track);\n }\n\n}\n","import { Component, Input } from \"@angular/core\";\nimport { SilResponse } from \"app/_models/info-sil\";\n\n@Component({\n selector: 'info-sil-modal',\n templateUrl: './info-sil-modal.component.html'\n})\nexport class InfoSilModalComponent {\n\n @Input() infos: SilResponse;\n @Input() evento: string;\n}\n","import {\n Component,\n Input,\n AfterViewInit,\n Output,\n EventEmitter,\n} from \"@angular/core\";\n\nimport { BaseComponent } from \"./../../../../../shared/base.component\";\nimport { EventoTracking } from \"../../../../../_models/evento-tracking\";\nimport { TrackingLista } from \"app/_models/tracking-lista\";\n\n@Component({\n selector: \"item-tracking\",\n templateUrl: \"./item-tracking.component.html\",\n styleUrls: [\"./item-tracking.component.scss\"],\n})\nexport class ItemTrackingComponent\n extends BaseComponent\n implements AfterViewInit {\n @Output() componentLoaded: EventEmitter = new EventEmitter();\n @Input() eventoTracking: EventoTracking;\n @Input() trackingLista: TrackingLista;\n\n constructor() {\n super();\n }\n ngAfterViewInit(): void {\n this.componentLoaded.emit(null);\n }\n\n get viagem(): string {\n if (!this.trackingLista) return;\n\n return this.eventoTracking.IsNavegando\n ? this.trackingLista.viagemNavio\n : this.eventoTracking.viagemNavio;\n }\n\n get exibeViagemNavio(): boolean {\n return (\n (this.eventoTracking.IsNavegando || this.eventoTracking.IsTransbordo) &&\n this.viagem != undefined &&\n this.viagem != \"\"\n );\n }\n\n get ocultaDatas(): boolean {\n return this.eventoTracking.OcultaDatasTracking;\n }\n\n // get textoSaidaCliente(): string {\n // return \"Saída do Cliente:\";\n // }\n\n // get textoRetiradaTerminal(): string {\n // return \"Retirada do Vazio:\";\n // }\n\n // get dataRetiradaTerminal(): string {\n // return this.eventoTracking && this.eventoTracking.IsEmColeta\n // ? this.eventoTracking.strDataRetiradaTerminal\n // : undefined;\n // }\n\n get eventoRealizadoLinha(): string {\n return this.eventoTracking.ExibeComoRealizado ? \"line ok\" : \"line\";\n }\n\n get eventoRealizadoCirculo(): string {\n return this.eventoTracking.ExibeComoRealizado ? \"circle-success\" : \"circle\";\n }\n\n get atrasoEvento(): string {\n return this.eventoTracking.IsAtrasoEvento\n ? \"atrasado\"\n : this.eventoTracking.IsAtrasoEvento == null\n ? \"\"\n : \"realizado\";\n }\n\n // get dataRealizada(): string {\n // return this.eventoTracking\n // ? this.eventoTracking.IsEmColeta || this.eventoTracking.IsRealizada\n // ? this.eventoTracking.strDataIniExecucao\n // : this.eventoTracking.IsBookingConfirmado || this.eventoTracking.IsDepositada || this.eventoTracking.IsEmEntrega\n // ? this.eventoTracking.strDataRealizada\n // : this.eventoTracking.IsRetiradaCheio\n // ? this.eventoTracking.strDataRetiradaCheio\n // : this.eventoTracking.IsDevolucaoVazio\n // ? this.eventoTracking.strDataDevolucaoVazio\n // : this.eventoTracking.strDataETAConf\n // : undefined;\n // }\n\n // get dataSaidaCliente(): string {\n // return this.eventoTracking\n // ? this.eventoTracking.strDataFimExecucao\n // : undefined;\n // }\n\n // get dataPrevista(): string {\n // return this.eventoTracking &&\n // (this.eventoTracking.IsEmColeta ||\n // this.eventoTracking.IsRealizada ||\n // this.eventoTracking.IsBookingConfirmado)\n // ? this.eventoTracking.strDataPrevista\n // : this.eventoTracking.strDataETAPrev;\n // }\n\n // get textoPrevisto(): string {\n // return this.eventoTracking.IsEmColeta ||\n // this.eventoTracking.IsRealizada ||\n // this.eventoTracking.IsBookingConfirmado\n // ? \"Solicitado:\"\n // : \"Chegada Prevista:\";\n // }\n\n // get textoRealizado(): string {\n // return this.eventoTracking.IsBookingConfirmado\n // ? \"Confirmado:\"\n // : this.eventoTracking.IsEmEntrega\n // ? \"Saída Terminal:\"\n // : this.eventoTracking.IsDepositada\n // ? \"Chegada Terminal:\"\n // : this.eventoTracking.IsEmColeta || this.eventoTracking.IsRealizada\n // || this.eventoTracking.IsRetiradaCheio || this.eventoTracking.IsDevolucaoVazio\n // ? \"Realizado:\"\n // : \"Chegada Realizada:\";\n // }\n\n get ExibeDescarregada(): boolean {\n return this.eventoTracking.ExibeDataDescarregada;\n }\n\n get isModalPOInOrigin(): boolean {\n return this.trackingLista.modal.toLocaleLowerCase().startsWith(\"po\");\n }\n\n get isColetaPA() {\n return this.eventoTracking.IsEmColeta && !this.isModalPOInOrigin;\n }\n\n// TEXTOS ////////////////////////////////////////////\n get textoSolicitado(): string {\n return \"Solicitado:\"\n }\n get textoConfirmado(): string {\n return \"Confirmado:\"\n }\n get textoRetiradadoVazio(): string {\n return \"Retirada do Vazio:\";\n }\n get textoChegadaTerminal(): string {\n return \"Chegada Terminal:\";\n }\n get textoChegadaPrevista(): string {\n return \"Chegada Prevista:\";\n }\n get textoChegadaRealizada(): string {\n return \"Chegada Realizada:\";\n }\n get textoSaidaTerminal(): string {\n return \"Saída Terminal:\";\n }\n get texto_Realizado(): string {\n return \"Realizado:\";\n }\n get textoSaidadoCliente(): string {\n return \"Saída do Cliente:\";\n }\n get textoSaidaRealizada(): string {\n return \"Saída Realizada:\";\n }\n get textoEmbarcada(): string {\n return \"Embarcada:\";\n }\n get textoDescarregada(): string {\n return \"Descarregada:\";\n }\n\n\n// DATAS ///////////////////////////////////////////\n get dataSolicitado(): string {\n return this.eventoTracking.strDataPrevista;\n }\n get dataConfirmado(): string {\n return this.eventoTracking.strDataRealizada;\n }\n get dataRetiradadoVazio(): string {\n return this.eventoTracking.strDataRetiradaVazio;\n }\n get dataChegadaTerminal(): string {\n return this.eventoTracking.strDataRealizada;\n }\n get dataChegadaPrevista(): string {\n return this.eventoTracking.strDataETAPrev;\n }\n get dataChegadaRealizada(): string {\n return this.eventoTracking.strDataETAConf;\n }\n get dataSaidaTerminal(): string {\n return this.eventoTracking.strDataRealizada;\n }\n get dataRealizado(): string {\n return this.eventoTracking.IsEmColeta || this.eventoTracking.IsRealizada\n ? this.eventoTracking.strDataIniExecucao\n : this.eventoTracking.IsRetiradaCheio\n ? this.eventoTracking.strDataRetiradaCheio\n : this.eventoTracking.IsDevolucaoVazio\n ? this.eventoTracking.strDataDevolucaoVazio\n : undefined\n }\n get dataSaidadoCliente(): string {\n return this.eventoTracking.strDataFimExecucao;\n }\n get dataSaidaRealizada(): string {\n return this.eventoTracking.strDataRealizada;\n }\n get dataEmbarcada(): string {\n return this.eventoTracking.strDataEmbarque;\n }\n get dataDescarregada(): string {\n return this.eventoTracking.strDataDesembarque;\n }\n}\n","import { Component, Input, QueryList, ViewChildren, OnInit, OnChanges, SimpleChanges } from '@angular/core';\n\nimport { EventoTracking } from '../../../../_models/evento-tracking';\nimport { TrackingLista } from 'app/_models/tracking-lista';\nimport { SlickSliderComponent } from 'app/shared/slick-slider/slick-slider-component';\nimport { InfoSil } from 'app/_models/info-sil';\n\n@Component({\n selector: 'tracking-rastreamento',\n templateUrl: './tracking-rastreamento.component.html',\n styleUrls: ['./tracking-rastreamento.component.scss']\n})\nexport class TrackingRastreamentoComponent {\n\n @ViewChildren(SlickSliderComponent) slickList: QueryList;\n @Input() trackingLista: TrackingLista;\n\n silInfos: InfoSil[];\n\n @Input() set infoSil(infosSil: InfoSil[]) {\n this.silInfos = [];\n\n if(infosSil == undefined || infosSil.length == 0)\n return;\n\n this.silInfos = infosSil;\n }\n\n gruposTracking: EventoTracking[][];\n\n private _eventosTracking: EventoTracking[];\n @Input() set trackingDatas(tracking: EventoTracking[]){\n this._eventosTracking = tracking;\n this.gruposTracking = [];\n if ((tracking == undefined) || (tracking.length == 0))\n return;\n\n var grupo:EventoTracking[] = [];\n var ultimoGrupo = tracking[0].tipoEvento;\n tracking.forEach(item => {\n if (item.tipoEvento != ultimoGrupo){\n this.gruposTracking.push(grupo);\n grupo = [];\n }\n grupo.push(item);\n ultimoGrupo = item.tipoEvento;\n });\n\n if (grupo.length > 0)\n this.gruposTracking.push(grupo);\n\n this.reloadSlick();\n }\n\n temSilInfo(evento) {\n return this.silInfos.some(info => info.evento == evento);\n }\n\n NotIsEmColetaOrEmEntrega(eventoTracking) {\n return (eventoTracking.IsEmColeta && !['Coletada',\"Booking Confirmado\"].includes(this.trackingLista.statusBooking) ||\n (eventoTracking.IsEmEntrega && ['Realizada'].includes(this.trackingLista.statusBooking)))\n }\n\n get infoSil() {\n return this.silInfos;\n }\n\n get trackingDatas(): EventoTracking[]{\n return this._eventosTracking;\n }\n\n exibeCarouselTransbordo(grupo: EventoTracking[]): boolean {\n return grupo[0].IsTransbordo && grupo.length >= 2;\n }\n\n exibeItemLista(grupo: EventoTracking[]): string {\n return this.exibeCarouselTransbordo(grupo) ? 'item-transbordo' : '';\n }\n\n reloadSlick(){\n if (!this.slickList)\n return;\n\n this.slickList.forEach(slick => slick.reload());\n }\n}\n","import { Component, OnInit, ViewChild, Input } from '@angular/core';\n\nimport { PortoRotaComponent } from './porto-rota/porto-rota.component';\nimport { NavioViagensRotas } from 'app/_models/navio-viagens-rotas';\nimport { SharedService } from 'app/_services/shared.service';\n\n@Component({\n selector: 'navio-rota',\n templateUrl: './navio-rota.component.html',\n styleUrls: ['./navio-rota.component.scss']\n})\nexport class NavioRotaComponent implements OnInit {\n\n @ViewChild(PortoRotaComponent, {static: true}) portoRota : PortoRotaComponent;\n @Input() naviosRota: NavioViagensRotas[];\n\n constructor(private _sharedService: SharedService) { }\n\n ngOnInit() {\n }\n\n textoFormatado(str: string): string {\n return this._sharedService.toCamelCase(str);\n }\n}\n","import { Component, OnInit, Input } from '@angular/core';\nimport { PortoRota } from '../../../../_models/porto-rota';\n\n@Component({\n selector: 'porto-rota',\n templateUrl: './porto-rota.component.html',\n styleUrls: ['./porto-rota.component.scss']\n})\nexport class PortoRotaComponent implements OnInit {\n\n @Input() portoRota: PortoRota;\n\n constructor() { }\n\n ngOnInit() {\n }\n\n get textoPrevisto(): string{\n return this.portoRota.isCidadeOrigem ? \"Solicitado\" : \"Chegada Prevista\";\n }\n\n get textoSaida(): string{\n return this.portoRota.isCidadeOrigem ? \"Saída do Cliente\" : \"Saída Realizada\";\n }\n\n get dataSaida(): string{\n return this.portoRota.isCidadeOrigem ? \n this.portoRota.strDataSaidaCliente : \n this.portoRota.strDataRealizadaSaida;\n }\n\n get portoLinha(): string {\n return this.portoRota.FoiVisitado ? \"line ok\" : (this.portoRota.ProximoPorto ? \"line proximo\" : \"line\");\n }\n\n get portoCirculo(): string {\n return this.portoRota.FoiVisitado ? \"circle-success\" : (this.portoRota.ProximoPorto ? \"circle-proximo\" : \"circle\");\n }\n\n get portoTexto(): string {\n return this.portoRota.FoiVisitado ? \"title\" : (this.portoRota.ProximoPorto ? \"title proximo\" : \"title nao-visitado\");\n }\n\n isAtrasado(): string {\n if(this.portoRota.DataRealizada)\n return this.portoRota.DataPrevista >= this.portoRota.DataRealizada ? \"realizado\" : \"atrasado\";\n }\n}\n","import { Component, OnInit, EventEmitter, Output } from '@angular/core';\nimport { RastreamentoService } from \"app/_services/rastreamento.service\";\n\n\n@Component({\n selector: 'ordenacao-rastreamento',\n templateUrl: './ordenacao-rastreamento.component.html',\n styleUrls: ['./ordenacao-rastreamento.component.scss']\n})\nexport class OrdenacaoRastreamentoComponent implements OnInit {\n @Output() exportarArquivo: EventEmitter = new EventEmitter();\n @Output() quantidadePorPagina: EventEmitter = new EventEmitter(); \n @Output() ordenarTrackins: EventEmitter = new EventEmitter(); \n\n ordenarpor: string;\n sentidoOrdenacao: string;\n\n constructor(private _rastreamentoService: RastreamentoService) {\n this.resetOrdenacao();\n }\n\n ngOnInit() { }\n\n resetOrdenacao(){\n this.ordenarpor = \"numBooking\";\n this.sentidoOrdenacao = \"ASC\";\n }\n\n exportarArquivoEmFormatoCSV(){\n this.exportarArquivo.emit(true);\n }\n\n ordenar(){\n this.ordenarTrackins.emit(this.ordenarpor + \"|\" + this.sentidoOrdenacao);\n } \n\n mostrarQuantidadePorPagina(quantidadePorPagina):void{\n this.quantidadePorPagina.emit(quantidadePorPagina);\n }\n}\n","import { Component, OnInit, ViewChild, AfterViewInit } from '@angular/core';\n\nimport { BaseComponent } from './../../shared/base.component';\nimport { MessageComponent } from 'app/shared/message/message.component';\nimport { FiltrosLateraisComponent } from './../filtros-laterais/filtros-laterais.component';\nimport { ListaRastreamentoComponent } from 'app/cliente/rastreamento/lista-rastreamento/lista-rastreamento.component';\nimport { BuscaRastreamentoComponent } from 'app/cliente/rastreamento/busca-rastreamento/busca-rastreamento.component';\nimport { FiltroRastreamentoComponent } from 'app/cliente/rastreamento/filtro-rastreamento/filtro-rastreamento.component';\nimport { OrdenacaoRastreamentoComponent } from 'app/cliente/rastreamento/ordenacao-rastreamento/ordenacao-rastreamento.component';\nimport { DetalhesContainerComponent } from 'app/shared/detalhes-container/detalhes-container.component';\nimport { NavioRotaComponent } from './navio-rota/navio-rota.component';\n\nimport { TrackingLista } from './../../_models/tracking-lista';\nimport { TipoEventoTracking } from './../../_models/tipoEventoTracking';\nimport { TrackingListaRequest } from 'app/_models/trackinglista-request';\nimport { RastreamentoCargasVM } from 'app/_services/rastreamento-cargas-vm';\nimport { NavioViagensRotas } from 'app/_models/navio-viagens-rotas';\nimport { AnalyticsTela } from '../../_enums/analytics-tela';\nimport { AnalyticsDownload } from '../../_enums/analytics-download';\n\nimport { AppService } from 'app/_services/app.service';\nimport { SharedService } from 'app/_services/shared.service';\nimport { MessageService } from 'app/_services/message.service';\nimport { ParametroService } from 'app/_services/parametro.service';\nimport { RastreamentoService } from 'app/_services/rastreamento.service';\nimport { FiltrosLaterais } from '../../_models/filtros-laterais';\nimport { FiltrosLateraisService } from 'app/_services/filtros-laterais.service';\nimport { AnalyticsService } from 'app/_services/analytics.service';\nimport { GrupoEconomicoService } from 'app/_services/grupo-economico.service';\nimport { MapsService } from 'app/_services/maps.service';\nimport { Co2Total } from 'app/_models/co2-total';\n\n@Component({\n selector: 'app-rastreamento',\n templateUrl: './rastreamento.component.html',\n styleUrls: ['./rastreamento.component.scss']\n})\nexport class RastreamentoComponent extends BaseComponent implements OnInit, AfterViewInit {\n\n @ViewChild(MessageComponent, {static: true}) mensagem: MessageComponent;\n @ViewChild(BuscaRastreamentoComponent, {static: true}) buscaRastreamento: BuscaRastreamentoComponent;\n @ViewChild(FiltroRastreamentoComponent, {static: true}) filtroRastreamento: FiltroRastreamentoComponent;\n @ViewChild(ListaRastreamentoComponent, {static: true}) listaRastreamento: ListaRastreamentoComponent;\n @ViewChild(OrdenacaoRastreamentoComponent, {static: true}) ordenacaoRastreamento: OrdenacaoRastreamentoComponent;\n @ViewChild(FiltrosLateraisComponent, {static: true}) filtroLateral: FiltrosLateraisComponent;\n\n @ViewChild(DetalhesContainerComponent, {static: true}) detalhesContainer : DetalhesContainerComponent;\n @ViewChild(NavioRotaComponent, {static: true}) navioRota : NavioRotaComponent;\n\n @ViewChild('modalVerMapa', {static: true}) modalVerMapa;\n\n rastreamentoCargasVM: RastreamentoCargasVM = new RastreamentoCargasVM();\n rastVM_filtrado: RastreamentoCargasVM = new RastreamentoCargasVM();\n empty = true;\n loading = false;\n loadingMapa = false;\n downloading = false;\n noresult = false;\n eAdmin: boolean = this._appService.isAdmin();\n filtroPesquisa: TrackingListaRequest;\n pageSize: number = 10;\n paginacao: any;\n filtrosLaterais: FiltrosLaterais = new FiltrosLaterais();\n tracking: TrackingLista;\n rotas: NavioViagensRotas[];\n totalCo2: Co2Total;\n\n constructor(private _rastreamentoService: RastreamentoService,\n private _grupoService: GrupoEconomicoService,\n private _parametroService: ParametroService,\n private _sharedService: SharedService,\n private _appService: AppService,\n private _messageService: MessageService,\n private _filtroLateralService: FiltrosLateraisService,\n private _analyticsService: AnalyticsService,\n private _mapsService: MapsService) {\n super();\n }\n\n ngOnInit() {\n this.obterParametrosPorto();\n\n if (!this.eAdmin) {\n this.pesquisaInicial();\n }\n else {\n this.buscaRastreamento.cnpjdropdown.cnpjsGrupos = localStorage.getItem('cnpjGrupos');\n if (this.buscaRastreamento.cnpjdropdown.cnpjsGrupos)\n this.pesquisaInicial();\n }\n\n this.buscaRastreamento.carregaFiltrosDeRastreamento.subscribe(\n (filtro: TrackingListaRequest) => {\n if (filtro) {\n this.pesquisar(filtro);\n }\n });\n\n this.buscaRastreamento.zeraPesquisa.subscribe(\n (a: any) => {\n this.zeraPesquisa();\n });\n\n this.listaRastreamento.carregaFiltrosDeRastreamento.subscribe(\n (filtro: TrackingListaRequest) => {\n if (this.filtroPesquisa && this.filtroPesquisa.cnpjCli) {\n this.pesquisar(this.filtroPesquisa);\n }\n else {\n this.pesquisaInicial();\n }\n });\n\n // Exportar arquivo em formato CSV\n this.ordenacaoRastreamento.exportarArquivo.subscribe(\n (exportar: boolean) => {\n if (exportar) {\n this.exportarRelatorioCSV();\n }\n });\n\n // Ordenação da Lista do Tracking\n this.ordenacaoRastreamento.ordenarTrackins.subscribe(\n (campoDeOrdenacao: string) => {\n this.listaRastreamento.obtemListaTrackingOrdenadaPorCampo(campoDeOrdenacao);\n });\n\n this.ordenacaoRastreamento.quantidadePorPagina.subscribe(\n (quantidadePorPagina: number) => {\n this.listaRastreamento.setQuantidadeRegistrosPorPagina(quantidadePorPagina);\n });\n\n // Envia mensagens de erro conforme navegação e interação com a tela\n this._messageService.emitirMensagem\n .subscribe(\n msg => {\n if (this.modalVerMapa)\n this.modalVerMapa.hide();\n if (msg.titulo == 'Modal'){\n this.listaRastreamento.exibirErroModal(msg.mensagem);\n this.modalVerMapa.hide();\n }\n else{\n this.mensagem.mostrarMensagem(msg.tipo, msg.mensagem);\n }\n });\n\n //Filtros Laterais\n this.filtroLateral.filtroAplicado.subscribe(\n (lista: any) => {\n let listaFiltrada: TrackingLista[] = lista;\n let rastVM: RastreamentoCargasVM = new RastreamentoCargasVM();\n let tipoEventos: TipoEventoTracking[] = [];\n\n listaFiltrada.forEach( track => {\n if (tipoEventos.filter(f => f.Descricao.trim().toLowerCase() == track.statusBooking.trim().toLowerCase()).length == 0) {\n let tp: TipoEventoTracking = new TipoEventoTracking();\n tp.Descricao = track.statusBooking;\n tp.Quantidade = 1;\n tipoEventos.push(tp);\n }\n else {\n let tp: TipoEventoTracking = tipoEventos.find(f => f.Descricao.trim().toLowerCase() == track.statusBooking.trim().toLowerCase())\n tp.Quantidade = tp.Quantidade + 1;\n }\n });\n\n rastVM.tiposEventos = tipoEventos;\n rastVM.trackings = listaFiltrada;\n this.rastVM_filtrado = rastVM;\n this.filtroRastreamento.carregaDadosEmComponente(rastVM);\n //this.aplicarFiltro(this.filtroRastreamento.stepAtivo);\n this.filtroRastreamento.stepClick('total');\n });\n\n this._analyticsService.RegistrarAcesso(AnalyticsTela.Rastreamento);\n }\n\n ngAfterViewInit(): void {\n this._grupoService.grupoEconomicoSelecionadoEvent.subscribe((cnpjs: string) => {\n if (cnpjs)\n this.buscaRastreamento.cnpjAlterado(cnpjs); //.Pesquisar();\n else\n this.buscaRastreamento.zeraPesquisa.emit();\n });\n\n this.listaRastreamento.visualizarMapaEmmiter.subscribe(\n (tracking: TrackingLista) => {\n this.loadingMapa = true;\n this.tracking = tracking;\n this.obtemRotasRastreamentos(tracking);\n });\n\n this._mapsService.RemoveMapaExistente();\n }\n\n zeraPesquisa() {\n this.ordenacaoRastreamento.resetOrdenacao();\n this.empty = true;\n this.noresult = false;\n this.rastreamentoCargasVM = new RastreamentoCargasVM();\n this.filtrosLaterais = new FiltrosLaterais();\n this.filtroRastreamento.zeraQuantidades();\n if (this.paginacao) {\n this.paginacao.pagedItems = [];\n this.paginacao.pager = {};\n }\n }\n\n pesquisaInicial(): void {\n const filtro: TrackingListaRequest = new TrackingListaRequest();\n filtro.idUsuario = this._appService.UsuarioLogado.UsuarioIDeCargo;\n //filtro.cnpjCli = this._appService.UsuarioLogado.CNPJs.join(\";\");\n filtro.cnpjCli = this.buscaRastreamento.cnpjdropdown.CNPJs ? this.buscaRastreamento.cnpjdropdown.CNPJs.join(\";\") :\n this.buscaRastreamento.cnpjdropdown.CNPJDigitado ? this.buscaRastreamento.cnpjdropdown.CNPJDigitado :\n this.buscaRastreamento.cnpjdropdown.cnpjsGrupos ? this.buscaRastreamento.cnpjdropdown.cnpjsGrupos : \"\";\n\n filtro.dataFim = null // Default: Todos os trackings que ainda não foram realizados\n filtro.dataIni = null;\n filtro.status = true;\n this.pesquisar(filtro);\n }\n\n pesquisar(consulta: TrackingListaRequest): void {\n this.listaRastreamento.totalCo2.emit(null);\n this.ordenacaoRastreamento.resetOrdenacao();\n this.loading = true;\n this.filtrosLaterais = new FiltrosLaterais();\n this.filtroPesquisa = consulta;\n\n //this.consulta = consulta;\n this.filtroRastreamento.zeraQuantidades();\n // Obtem listagem de trackings\n this.buscaRastreamento.ObterMunicipios(this._appService.isAdmin() ? consulta.cnpjCli : null);\n this._rastreamentoService.obtemRastreamentosDeCargas(consulta)\n .subscribe(x => {\n this.rastreamentoCargasVM = x;\n this.rastVM_filtrado = x;\n this.listaRastreamento.filtroPesquisaPrincipal = this.filtroPesquisa;\n this.listaRastreamento.setTiposEventos(x.tiposEventos);\n this.filtroRastreamento.carregaDadosEmComponente(x);\n //this.aplicarFiltro.(this.filtroRastreamento.stepAtivo);\n this.filtroRastreamento.stepClick('total'); // -- Solicitação da Belle 01/03 -- Homologação SP2\n this.empty = false;\n this.noresult = (!this.rastreamentoCargasVM.trackings || (this.rastreamentoCargasVM.trackings.length === 0));\n this.paginacao = this.listaRastreamento.paginacao;\n },\n (err) => {\n this.loading = false;\n },\n () => this.loading = false);\n }\n\n exportarRelatorioCSV() {\n this.downloading = true;\n //this._rastreamentoService.exportarRelatorioCSV(this.listaRastreamento.rastreamentos);\n\n this._analyticsService.RegistrarDownload(AnalyticsTela.Rastreamento, AnalyticsDownload.ExportacaoCSV);\n\n // Obtem listagem de trackings específica para download\n this._rastreamentoService.obtemTrackingsDownload(this.filtroPesquisa)\n .subscribe(x => {\n if (x != null)\n var lista = this._rastreamentoService.filtraListaPorTipoDeEvento(x, this.filtroRastreamento.stepAtivo)\n lista = this._filtroLateralService.filtrarDados(lista, this.filtrosLaterais);\n this._rastreamentoService.exportarRelatorioCSV(lista);\n this.downloading = false;\n });\n }\n\n aplicarFiltro(tipoEvento: string) {\n var rastVM: RastreamentoCargasVM = this.rastVM_filtrado ? this.rastVM_filtrado : this.rastreamentoCargasVM;\n this.listaRastreamento.carregaListaTrackins(\n this._rastreamentoService.filtraListaPorTipoDeEvento(rastVM.trackings, tipoEvento)\n );\n }\n\n obterParametrosPorto() {\n this._parametroService.carregarPagina()\n .subscribe(pagina => {\n this.listaRastreamento.paginaParametroPorto = pagina;\n this.filtroRastreamento.paginaParametroPorto = pagina;\n });\n }\n\n //Construir método que chamará BuscaScheduleParaMontarRotas\n obtemRotasRastreamentos(tracking: TrackingLista) {\n const filtro: TrackingListaRequest = new TrackingListaRequest();\n filtro.idUsuario = this._appService.UsuarioLogado.UsuarioIDeCargo;\n //filtro.cnpjCli = this._appService.UsuarioLogado.CNPJs.join(\";\");\n filtro.cnpjCli = tracking.cnpjCli;\n filtro.filtroGenerico2 = tracking.numContainer;\n filtro.numBooking = tracking.numBooking;\n filtro.idBooking = tracking.idBooking;\n filtro.numContainer = tracking.numContainer;\n\n filtro.dataFim = new Date(); // Default: data atual - 10 dias\n filtro.dataIni = this._sharedService.addDays(filtro.dataFim, -10);\n\n\n this._rastreamentoService.obtemRotasRastreamentos(filtro).subscribe(x => {\n this.rotas = x.ListaNavioViagensRotas;\n this._mapsService.ConfiguraMapa(x.ListaPontosGeograficos);\n this.loadingMapa = false;\n });\n }\n\n limparMapa(){\n this._mapsService.LimpaMarcadores();\n }\n}\n","\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { DetalhesContainerModule } from 'app/shared/detalhes-container/detalhes-container.module';\nimport { DatePickerModule } from \"app/shared/ng2-datepicker/ng2-datepicker.module\";\nimport { SharedModule } from 'app/shared/shared.module';\nimport { MultiselectDropdownModule } from './../../shared/multiselect-dropdown/multiselect-dropdown.module';\n\nimport { AgendamentoRastreamentoComponent } from 'app/cliente/rastreamento/agendamento-rastreamento/agendamento-rastreamento.component';\nimport { BuscaRastreamentoComponent } from 'app/cliente/rastreamento/busca-rastreamento/busca-rastreamento.component';\nimport { FiltroRastreamentoComponent } from 'app/cliente/rastreamento/filtro-rastreamento/filtro-rastreamento.component';\nimport { OrdenacaoRastreamentoComponent } from 'app/cliente/rastreamento/ordenacao-rastreamento/ordenacao-rastreamento.component';\nimport { ListaRastreamentoComponent } from 'app/cliente/rastreamento/lista-rastreamento/lista-rastreamento.component';\nimport { TrackingRastreamentoComponent } from 'app/cliente/rastreamento/lista-rastreamento/tracking-rastreamento/tracking-rastreamento.component';\nimport { ItemEntregaAgendamentoComponent } from 'app/cliente/rastreamento/agendamento-rastreamento/item-entrega-agendamento/item-entrega-agendamento.component';\nimport { RastreamentoComponent } from 'app/cliente/rastreamento/rastreamento.component';\nimport { ItemTrackingComponent } from './lista-rastreamento/tracking-rastreamento/item-tracking/item-tracking.component';\nimport { ListaDocsComponent } from './lista-rastreamento/lista-docs/lista-docs.component';\nimport { PortoRotaComponent } from './navio-rota/porto-rota/porto-rota.component';\nimport { NavioRotaComponent } from './navio-rota/navio-rota.component';\nimport { AgendaEntrega } from 'app/_models/agenda-entrega';\nimport { AgendaEntregaSalvar } from 'app/_models/agenda-entrega-salvar';\nimport { ModalModule } from 'ngx-bootstrap/modal';\nimport { TextMaskModule } from 'angular2-text-mask';\n\nimport { AgendaEntregaService } from 'app/_services/agenda-entrega.service';\nimport { DatepickerService } from 'app/_services/datepicker.service';\nimport { RastreamentoService } from 'app/_services/rastreamento.service';\nimport { MessageService } from 'app/_services/message.service';\nimport { ParametroService } from './../../_services/parametro.service';\nimport { SlickSliderComponent } from 'app/shared/slick-slider/slick-slider-component';\nimport { NavioViagemService } from 'app/_services/navio-viagem.service';\nimport { RastreamentoRoutingModule } from './rastreamento.routing.module';\nimport { UsuarioService } from 'app/_services/usuario.service';\nimport { AppService } from 'app/_services/app.service';\nimport { BookingService } from 'app/_services/booking.service';\nimport { GroupbyService } from 'app/_services/groupby.service';\nimport { MapsService } from 'app/_services/maps.service';\nimport { OkEntregaService } from 'app/_services/ok-entrega.service';\nimport { InfoSilModalComponent } from './lista-rastreamento/tracking-rastreamento/info-sil-modal/info-sil-modal.component';\nimport { InfosSilComponent } from './lista-rastreamento/infos-sil/infos-sil.component';\nimport { NgxMaskModule } from 'ngx-mask';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n TextMaskModule,\n DetalhesContainerModule,\n DatePickerModule,\n MultiselectDropdownModule,\n ModalModule.forRoot(),\n SharedModule,\n RastreamentoRoutingModule,\n NgxMaskModule.forRoot()\n ],\n declarations: [\n RastreamentoComponent,\n AgendamentoRastreamentoComponent,\n BuscaRastreamentoComponent,\n FiltroRastreamentoComponent,\n ListaRastreamentoComponent,\n OrdenacaoRastreamentoComponent,\n TrackingRastreamentoComponent,\n ItemEntregaAgendamentoComponent,\n ItemTrackingComponent,\n ListaDocsComponent,\n SlickSliderComponent,\n PortoRotaComponent,\n NavioRotaComponent,\n InfoSilModalComponent,\n InfosSilComponent\n ],\n exports: [\n SharedModule\n ],\n providers: [\n DatepickerService,\n RastreamentoService,\n ParametroService,\n AgendaEntregaService,\n NavioViagemService,\n AgendaEntrega,\n AgendaEntregaSalvar,\n MessageService,\n UsuarioService,\n BookingService,\n GroupbyService,\n MapsService,\n AppService,\n OkEntregaService\n ]\n})\nexport class RastreamentoModule { }\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { AuthGuard } from 'app/_guards/auth.guard';\nimport { RastreamentoComponent } from './rastreamento.component';\n\nconst rastreamentoRoutes: Routes = [\n { path: '', component: RastreamentoComponent, canActivate: [AuthGuard] }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(rastreamentoRoutes)],\n exports: [RouterModule]\n})\nexport class RastreamentoRoutingModule {}","import { Component, OnInit, Output, EventEmitter, Input } from '@angular/core';\n\nimport { FiltroListaItem } from 'app/_models/filtro-lista-item';\nimport { OrdemServico } from 'app/_models/ordemServico';\nimport { OrdemServicoVM } from 'app/_models/ordemServicoVM';\n\nimport { BaseComponent } from 'app/shared/base.component';\n\nimport { SharedService } from 'app/_services/shared.service';\nimport { TipoEventoTracking } from 'app/_models/tipoEventoTracking';\n\n@Component({\n\tselector: 'filtro-lista',\n\ttemplateUrl: './filtro-lista.component.html',\n\tstyleUrls: ['./filtro-lista.component.scss']\n})\n\nexport class FiltroListaComponent extends BaseComponent implements OnInit {\n\t@Input() filtros: FiltroListaItem[];\n\t@Input() tituloTotal: string;\n\n\t@Output() classePrincipal: string;\n\t@Output() stepAlterado: EventEmitter = new EventEmitter();\n\n\tquantidadeAberta: number = 0;\n\tquantidadeFechada: number = 0;\n\tquantidadeLiberadaPagamento: number = 0;\n\tquantidadeVincular: number = 0;\n\tquantidadeVinculadas: number = 0;\n\tquantidadeCtesEmitidos: number = 0;\n\tquantidadePendentes: number = 0;\n\tquantidadeTotal: number = 0;\n\n\tstepAtivo: string = 'total';\n\n\tconstructor(private _sharedService: SharedService) {\n\t\tsuper();\n\n\t\tif (!this.tituloTotal) {\n\t\t\tthis.tituloTotal = \"Todos os Itens\";\n\t\t}\n\t}\n\n\tngOnInit() { }\n\n\tformataQuantidade(quantidade: number): string {\n\t\tif ((quantidade == undefined) || (quantidade == 0)) {\n\t\t\treturn '0';\n\t\t}\n\n\t\treturn (quantidade < 10 ? ('0' + quantidade).slice(-2) : quantidade.toString());\n\t}\n\n\tstyleLinkStep(quantidade: number) {\n\t\treturn (quantidade > 0) ? 'auto' : 'none';\n\t}\n\n\tpossuiItens(quantidade: number) {\n\t\treturn (quantidade > 0) ? ' possui-itens' : '';\n\t}\n\n\tstepEstaAtivo(step: string): string {\n\t\treturn (step == this.stepAtivo) ? 'active' : '';\n\t}\n\n\tstepClick(step: string) {\n\t\tthis.stepAtivo = step;\n\t\tthis.stepAlterado.emit(step);\n\t}\n\n\tatribuiQuantidadePorTipoEvento(tiposEventos: TipoEventoTracking[]): void {\n\t\tif (tiposEventos) {\n\t\t\tthis.quantidadeTotal = 0;\n\t\t\ttiposEventos.forEach(x => {\n\t\t\t\tif (x.Descricao) {\n\t\t\t\t\tlet descricao: string = x.Descricao.toLowerCase().trim();\n\n\t\t\t\t\tvar filtro = this.filtros.find(x => x.status === descricao);\n\t\t\t\t\tif (filtro != null) {\n\t\t\t\t\t\tfiltro.valor = x.Quantidade;\n\t\t\t\t\t\tthis.quantidadeTotal += x.Quantidade;\n\t\t\t\t\t}\n\n\t\t\t\t\tswitch (descricao) {\n\t\t\t\t\t\tcase 'liberada para pagamento':\n\t\t\t\t\t\t\tthis.quantidadeLiberadaPagamento = x.Quantidade;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'fechada':\n\t\t\t\t\t\t\tthis.quantidadeFechada = x.Quantidade;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'aberta':\n\t\t\t\t\t\t\tthis.quantidadeAberta = x.Quantidade;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'vinculada':\n\t\t\t\t\t\t\tthis.quantidadeVinculadas = x.Quantidade;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'a vincular':\n\t\t\t\t\t\t\tthis.quantidadeVincular = x.Quantidade;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'enviado':\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'pendente':\n\t\t\t\t\t\t\tthis.quantidadePendentes = x.Quantidade;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'ct-e emitido':\n\t\t\t\t\t\t\tthis.quantidadeCtesEmitidos = x.Quantidade;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tcarregaDadosEmComponente(tiposEventos: TipoEventoTracking[]): void {\n\t\tthis.atribuiQuantidadePorTipoEvento(tiposEventos);\n\t}\n\n\tzerarQuantidades() {\n\t\tthis.quantidadeAberta = 0;\n\t\tthis.quantidadeFechada = 0;\n\t\tthis.quantidadeLiberadaPagamento = 0;\n\t\tthis.quantidadeVincular = 0;\n\t\tthis.quantidadeVinculadas = 0;\n\t\tthis.quantidadeCtesEmitidos = 0;\n\t\tthis.quantidadePendentes = 0;\n\t\tthis.quantidadeTotal = 0;\n\t\tthis.stepAtivo = 'total';\n\n\t\tif (this.filtros) {\n\t\t\tthis.filtros.forEach(f => {\n\t\t\t\tf.valor = 0;\n\t\t\t});\n\t\t}\n\t}\n}\n","import { Component, OnInit, Input, Output, EventEmitter, ViewChild } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { Porto } from 'app/_models/porto';\nimport { TipoServico } from './../../_models/tipo-servico';\nimport { NavioViagem } from './../../_models/navioViagem';\nimport { OrdemServico } from 'app/_models/ordemServico';\nimport { NavioViagemRequest } from './../../_models/navioViagem-request';\nimport { OrdemServicoRequest } from 'app/_models/ordemServicoRequest';\nimport { FilterComboConfiguration } from 'app/_models/filterComboConfiguration';\n\nimport { DateModel } from 'app/shared/ng2-datepicker/ng2-datepicker.component';\nimport { BaseComponent } from 'app/shared/base.component';\nimport { CnpjDropdownComponent } from 'app/shared/cnpj-dropdown/cnpj-dropdown.component';\n\nimport { DatePickerOptions } from 'app/shared/ng2-datepicker/ng2-datepicker.component';\nimport { DateExtensions } from 'app/shared/extensions/extensions.module';\n\nimport { AppService } from 'app/_services/app.service';\nimport { SharedService } from 'app/_services/shared.service';\nimport { MessageService } from 'app/_services/message.service';\nimport { DatepickerService } from 'app/_services/datepicker.service';\nimport { GenericOrderbyService } from './../../_services/generic-orderby.service';\nimport { AnalyticsService } from 'app/_services/analytics.service';\nimport { AnalyticsTela } from '../../_enums/analytics-tela';\n\nimport { Operacao } from 'app/_enums/operacao';\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\n\n@Component({\n\tselector: 'filtro-top',\n\ttemplateUrl: './filtro-top.component.html',\n\tstyleUrls: ['./filtro-top.component.scss']\n})\nexport class FiltroTopComponent extends BaseComponent implements OnInit {\n\t@ViewChild(CnpjDropdownComponent, {static: true}) cnpjdropdown: CnpjDropdownComponent;\n\t@Input() titulo: string;\n\t@Input() exibeFiltroServico: boolean;\n\n\t@Output() classePrincipal: string;\n\t@Output() carregarFiltros: EventEmitter = new EventEmitter();\n\n\tloading = false;\n\tloadingPortos = false;\n\tloadingNavioViagem = false;\n\n\teAdmin = this._appService.isAdmin();\n\teCliente = this._appService.isCliente();\n\tmaisDeUmCNPJ = this._appService.maisDeUmCNPJ();\n\tcssClassAdmin = '';\n\tcnpjs: string;\n\tcnpjDigitado: string;\n\n\tportos: Porto[] = [];\n\tportosSelecionados: Porto[] = [];\n\tfiltroPesquisa: OrdemServicoRequest = new OrdemServicoRequest();\n\tnavioViagemSelecionado: NavioViagem;\n\tnavioViagens: NavioViagem[] = [];\n\tnavioViagensFiltrados: NavioViagem[] = [];\n\tdataFim: DateModel;\n\tdataInicio: DateModel;\n\toptionsInicio: DatePickerOptions;\n\toptionsFim: DatePickerOptions;\n\n\tcomboPortos: FilterComboConfiguration;\n\tcomboTiposOS: FilterComboConfiguration;\n\tcomboServicos: FilterComboConfiguration;\n\n\ttipoOSsSelecionado: string[] = [];\n\ttipoServicosSelecionado: TipoServico[] = [];\n\n\tfuncionalidade: LogFrontFuncionalidade;\n\n\tconstructor(private _appService: AppService,\n\t\tprivate _datepickerService: DatepickerService,\n\t\tprivate _msgService: MessageService,\n\t\tprivate _sharedService: SharedService,\n\t\tprivate _orderByService: GenericOrderbyService,\n\t\tprivate _sanitizer: DomSanitizer,\n\t\tprivate _analyticsService: AnalyticsService) {\n\t\tsuper();\n\n\t\tthis.optionsInicio = this._datepickerService.GenerateOptionsConfig(this._sharedService.addDays(new Date(), -14));\n\t\tthis.optionsFim = this._datepickerService.GenerateOptionsConfig(new Date());\n\n\t\tthis.comboPortos = new FilterComboConfiguration('Porto(s)...');\n\t\tthis.comboPortos.settings = {\n\t\t\tcheckedStyle: 'glyphicon',\n\t\t\tdynamicTitleMaxItems: 1,\n\t\t\tshowCheckAll: true,\n\t\t\tshowUncheckAll: true,\n\t\t\tenableSearch: true\n\t\t};\n\n\t\tthis.comboTiposOS = new FilterComboConfiguration('Tipo(s) OS...');\n\t\tthis.comboTiposOS.options = [];\n\t\tthis.comboTiposOS.settings = {\n\t\t\tcheckedStyle: 'glyphicon',\n\t\t\tshowCheckAll: true,\n\t\t\tshowUncheckAll: true,\n\t\t\tdynamicTitleMaxItems: 1,\n\t\t\tenableSearch: true\n\t\t};\n\n\t\tthis.comboServicos = new FilterComboConfiguration('Serviços...');\n\t\tthis.comboServicos.options = [];\n\t\tthis.comboServicos.settings = {\n\t\t\tcheckedStyle: 'glyphicon',\n\t\t\tdynamicTitleMaxItems: 1,\n\t\t\tshowCheckAll: true,\n\t\t\tshowUncheckAll: true,\n\t\t\tenableSearch: true\n\t\t};\n\t}\n\n\tngOnInit() {\n\t\tthis.funcionalidade = (this.titulo.toLowerCase().indexOf('vincular') >= 0) ? LogFrontFuncionalidade.VincularNF : LogFrontFuncionalidade.OrdemDeServico;\n\n\t\tthis.cssClassAdmin = this.eAdmin || (!this.eAdmin && this.maisDeUmCNPJ) ? '' : ' customer-profile';\n\t\tthis.filtroPesquisa.tipoFiltroPeriodo = 1;\n\t\tthis.comboPortos.options = [];\n\n\t\tif (!this.eAdmin) {\n\t\t\tthis.cnpjs = this._appService.UsuarioLogado.CNPJs.join(\";\");\n\t\t\tthis.cnpjAlterado(this.cnpjs);\n\t\t}\n\t}\n\n\tautocompleListFormatter = (data: any) => {\n\t\tlet html = `${data.descViagemNavio}`;\n\t\treturn this._sanitizer.bypassSecurityTrustHtml(html);\n\t}\n\n\texibePeriodo(value) {\n\t\tthis.cssClassAdmin = this.eAdmin || (!this.eAdmin && this.maisDeUmCNPJ) ? '' : ' customer-profile';\n\t\tthis.cssClassAdmin = (value === '3') ? this.cssClassAdmin + ' has-period' : this.cssClassAdmin;\n\t}\n\n\tcnpjAlterado(cnpj: string) {\n\t\tthis.cnpjs = cnpj;\n\t\tvar consulta = new NavioViagemRequest();\n\t\tconsulta.CNPJCliente = cnpj;\n\t\tconsulta.CNPJProvedor = cnpj;\n\t\tconsulta.idUsuario = this._appService.UsuarioLogado.UsuarioIDeCargo;\n\t\tconsulta.tipo = 'OS';\n\t\tthis.atribuiPeriodoInicialEFinal();\n\t\tconsulta.dataIni = this.filtroPesquisa.dataIni;\n\t\tconsulta.dataFim = this.filtroPesquisa.dataFim;\n\n\t\t//this.obterNaviosViagens(consulta);\n\t}\n\n preencheNavioViagens(lista: OrdemServico[]) {\n if (!lista)\n return;\n\n this.navioViagensFiltrados = [];\n\n lista.forEach(f => {\n if (f.idNavioViagem != null && this.navioViagensFiltrados.filter(x =>\n x.idViagemNavio == f.idNavioViagem).length <= 0)\n {\n if (f.descNavioViagem != null && f.descNavioViagem.length > 0) {\n let str = f.descNavioViagem.split('/');\n let navio = this._sharedService.toCamelCase(str[0]) + '/' + str[1];\n this.navioViagensFiltrados.push({\n idViagemNavio: f.idNavioViagem,\n descViagemNavio: navio,\n descViagemNavioResim: '',\n sentido: '',\n numViagemNavio: ''\n });\n }\n }\n });\n }\n\n\tpreencheServicos(servicos: TipoServico[]) {\n\t\tservicos = this._orderByService.ordenarPorCampo(servicos, 'Descricao', false);\n\t\tthis.comboServicos.options = [];\n\t\tif (servicos != null) {\n\t\t\tservicos.forEach(s => {\n\t\t\t\tthis.comboServicos.options.push({ id: s.Codigo, name: this._sharedService.toCamelCase(s.Descricao) });\n\t\t\t});\n\t\t}\n\t}\n\n\tpreencheTipos(tipos: string[]) {\n\t\tthis.comboTiposOS.options = [];\n\t\tif (tipos != null) {\n\t\t\ttipos.forEach(s => {\n\t\t\t\tthis.comboTiposOS.options.push({ id: s, name: s });\n\t\t\t});\n\t\t}\n\t\tthis.comboTiposOS.options = this._orderByService.ordenarPorCampo(this.comboTiposOS.options, 'name', false);\n\t}\n\n\tpreenchePortos(lista: OrdemServico[]) {\n\t\tif (!lista)\n\t\t\treturn;\n\n\t\tthis.comboPortos.options = [];\n\n\t\tlista.forEach(f => {\n\t\t\tif (f.idPortoOriDes != null && this.comboPortos.options.filter(x => x.id == f.idPortoOriDes).length <= 0) {\n\t\t\t\tthis.comboPortos.options.push({ id: f.idPortoOriDes, name: f.portoOriDes });\n\t\t\t}\n\t\t});\n\t}\n\n\tPesquisar() {\n\t\tif (this.eAdmin && ((this.cnpjdropdown.CNPJDigitado == undefined) || (this.cnpjdropdown.CNPJDigitado == \"\"))) {\n\t\t\tthis._msgService.addMessage(this.titulo, 'Informe o CNPJ do Cliente', 'danger', this.funcionalidade, Operacao.Consulta);\n\t\t}\n\t\telse {\n\t\t\tthis._msgService.clearMessage();\n\n\t\t\tvar cnpjSemFormatacao = \"\";\n\t\t\tif (this.cnpjdropdown.CNPJDigitado != undefined) {\n\t\t\t\tcnpjSemFormatacao = this._sharedService.replaceAll(this.cnpjdropdown.CNPJDigitado, '.', '');\n\t\t\t\tcnpjSemFormatacao = this._sharedService.replaceAll(cnpjSemFormatacao, '/', '');\n\t\t\t\tcnpjSemFormatacao = this._sharedService.replaceAll(cnpjSemFormatacao, '-', '');\n\t\t\t}\n\t\t\tthis.filtroPesquisa.idUsuario = this._appService.UsuarioLogado.UsuarioIDeCargo;\n\t\t\tthis.filtroPesquisa.cnpjProvedor = this.cnpjdropdown.CNPJs ? this.cnpjdropdown.CNPJs.join(';') : this.cnpjdropdown.CNPJDigitado ? cnpjSemFormatacao : '';\n\n\t\t\tthis.filtroPesquisa.strPortoOriDes = this.portosSelecionados != undefined && this.portosSelecionados.length > 0 ? this.portosSelecionados.join(';') : null;\n\t\t\tthis.filtroPesquisa.tipo = this.tipoOSsSelecionado && this.tipoOSsSelecionado.length > 0 ? this.tipoOSsSelecionado.join(';') : null;\n\t\t\tthis.filtroPesquisa.idNavioViagem = (this.navioViagemSelecionado) ? this.navioViagemSelecionado.idViagemNavio : null;\n\n\t\t\tif (this.exibeFiltroServico && this.tipoServicosSelecionado && this.tipoServicosSelecionado.length > 0)\n\t\t\t\tthis.filtroPesquisa.strTipoServico = this.tipoServicosSelecionado.join(';');\n\t\t\telse\n\t\t\t\tthis.filtroPesquisa.strTipoServico = null;\n\n\t\t\tthis.cnpjAlterado(this.cnpjs);\n\t\t\tthis.atribuiPeriodoInicialEFinal();\n\n\t\t\tif (this.filtroPesquisa.tipoFiltroPeriodo.toString() == \"3\") {\n\t\t\t\tif (this.filtroPesquisa.dataIni == null || this.filtroPesquisa.dataFim == null ||\n\t\t\t\t\tthis.filtroPesquisa.dataIni.toString() == 'Invalid Date' || this.filtroPesquisa.dataFim.toString() == 'Invalid Date') {\n\t\t\t\t this._msgService.addMessage(this.titulo, 'Data Início ou Fim Inválida! As datas devem estar no formato dd/mm/aaaa.', 'danger',\n\t\t\t\t this.funcionalidade, Operacao.Consulta, this.filtroPesquisa);\n\t\t\t\t return;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar tela = (this.titulo.includes('Vincular')) ? AnalyticsTela.VincularNF : AnalyticsTela.OrdemServico;\n\t\t\tthis._analyticsService.RegistrarFiltroProvedor(this.filtroPesquisa, tela);\n\n\t\t\tthis.carregarFiltros.emit(this.filtroPesquisa);\n\t\t}\n\t}\n\n\n\tprivate atribuiPeriodoInicialEFinal(): void {\n\t\tswitch (this.filtroPesquisa.tipoFiltroPeriodo.toString()) {\n\t\t\tcase \"1\":\n\t\t\t\tthis.filtroPesquisa.dataIni = this._sharedService.addDays(new Date(), -14);\n\t\t\t\tthis.filtroPesquisa.dataFim = new Date();\n\t\t\t\tthis.setTimeZero();\n\n\t\t\t\tthis.dataInicio = DateExtensions.toDateModel(this.filtroPesquisa.dataIni, \"DD/MM/YYYY\");\n\t\t\t\tthis.dataFim = DateExtensions.toDateModel(this.filtroPesquisa.dataFim, \"DD/MM/YYYY\");\n\t\t\t\tbreak;\n\t\t\tcase \"2\":\n\t\t\t\tthis.filtroPesquisa.dataIni = this._sharedService.addDays(new Date(), -29);\n\t\t\t\tthis.filtroPesquisa.dataFim = new Date();\n\t\t\t\tthis.setTimeZero();\n\n\t\t\t\tthis.dataInicio = DateExtensions.toDateModel(this.filtroPesquisa.dataIni, \"DD/MM/YYYY\");\n\t\t\t\tthis.dataFim = DateExtensions.toDateModel(this.filtroPesquisa.dataFim, \"DD/MM/YYYY\");\n\t\t\t\tbreak;\n\t\t\tcase \"3\":\n\t\t\t\t\tthis.filtroPesquisa.dataIni = this.ObterData(this.dataInicio, 0);\n\t\t\t\t\tthis.filtroPesquisa.dataFim = this.ObterData(this.dataFim, 0);\n\t\t\t\t\tthis.setTimeZero();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthis.filtroPesquisa.dataIni = null;\n\t\t\t\tthis.filtroPesquisa.dataFim = null;\n\t\t}\n\t}\n\n\tprivate ObterData(dateModel: DateModel, dateOffset: number) {\n\t\treturn (dateModel != undefined) ?\n\t\t\tthis._datepickerService.ObtemData(dateModel) :\n\t\t\tthis._sharedService.addDays(new Date(), dateOffset);\n\t}\n\n\tsetTimeZero() {\n\t\tthis._sharedService.setTimeZero(this.filtroPesquisa.dataIni);\n\t\tthis._sharedService.setTimeZero(this.filtroPesquisa.dataFim);\n\t}\n}\n","import { Component, OnInit, Input, EventEmitter, Output } from '@angular/core';\n\nimport { OrdemServico } from 'app/_models/ordemServico';\nimport { BaseComponent } from 'app/shared/base.component';\nimport { DatepickerService } from './../../../_services/datepicker.service';\nimport { DatePickerOptions } from './../../../shared/ng2-datepicker/ng2-datepicker.component';\n\n@Component({\n selector: 'fechar-ordem',\n templateUrl: './fechar-ordem.component.html',\n styleUrls: ['./fechar-ordem.component.scss']\n})\n\nexport class FecharOrdemComponent extends BaseComponent implements OnInit {\n mascaraHoraInicial: Array = [/[0-2]/,/[0-9]/, ':', /[0-5]/, /[0-9]/];\n mascaraHoraFinal: Array = [/[0-2]/,/[0-9]/, ':', /[0-5]/, /[0-9]/];\n @Input() index: number;\n @Input() exibirReplicar: boolean;\n @Input() OS: OrdemServico;\n\n @Output() confirmar: EventEmitter = new EventEmitter();\n @Output() cancelar: EventEmitter = new EventEmitter();\n\n options: DatePickerOptions;\n\n constructor(public _datePickerService: DatepickerService) {\n super();\n }\n\n changeRegex(input_time, mascara){\n if(input_time.charAt(0) == '2'){\n mascara[1]=new RegExp('[0-3]')\n }else{\n mascara[1]=new RegExp('[0-9]')\n }\n }\n\n ngOnInit() {\n this.options = this._datePickerService.GenerateOptionsConfig(null);\n }\n\n private sim() {\n this.confirmar.emit();\n }\n\n private nao() {\n this.cancelar.emit();\n }\n\n getMunicipio(): string {\n return (this.OS.municOriDes) ? this.OS.municOriDes + ' - ' + this.OS.ufOriDes : '-';\n }\n}\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\n\nimport { OrdemServico } from 'app/_models/ordemServico';\n\nimport { SharedService } from 'app/_services/shared.service';\n\nimport { BaseComponent } from 'app/shared/base.component';\n\n@Component({\n selector: 'item-detalhes-provedor',\n templateUrl: './item-detalhes-provedor.component.html',\n styleUrls: ['./item-detalhes-provedor.component.scss']\n})\n\nexport class ItemDetalhesProvedorComponent extends BaseComponent implements OnInit {\n @Input() index: number;\n @Input() ordemServico: OrdemServico;\n @Input() exibirSelecao: boolean;\n @Input() exibirNumOs: boolean;\n @Input() exibirFatura: boolean;\n @Input() exibirTipoServico: boolean;\n @Input() exibirDataProgramacao: boolean;\n @Input() exibirEmbarque: boolean;\n @Input() exibirNavio: boolean;\n @Input() exibirContainer: boolean;\n @Input() exibirAcoes: boolean;\n @Input() exibirTracking: boolean;\n @Input() exibirMunicipio: boolean;\n @Input() classeLinha: string;\n @Input() titulo: string;\n @Input() acao: string;\n\n @Output() selecionarTodasOSs: EventEmitter = new EventEmitter();\n @Output() salvarOSs: EventEmitter = new EventEmitter();\n @Output() vincular: EventEmitter = new EventEmitter();\n @Output() fecharOS: EventEmitter = new EventEmitter();\n\n constructor(private _sharedService: SharedService) {\n super();\n }\n\n ngOnInit() {\n }\n\n tituloColunaEmbDest(nomeEmbDest: string): string {\n var titulo: string;\n switch (nomeEmbDest.toLowerCase()) {\n case \"coleta\":\n case \"exportação\":\n case \"frota dedicada\":\n titulo = \"Embarcador:\";\n break;\n case \"entrega\":\n case \"importação\":\n case \"fracionada\":\n titulo = \"Destinatário:\";\n break;\n case \"estadia\":\n case \"armazenagem\":\n default:\n titulo = \"Emb/Dest:\";\n }\n\n return titulo;\n }\n\n tituloColunaPorto(nomeEmbDest: string): string {\n var titulo: string;\n switch (nomeEmbDest.toLowerCase()) {\n case \"coleta\":\n case \"exportação\":\n case \"frota dedicada\":\n titulo = \"Porto Embarque\";\n break;\n case \"entrega\":\n case \"importação\":\n case \"fracionada\":\n titulo = \"Porto Desembarque\";\n break;\n case \"estadia\":\n case \"armazenagem\":\n default:\n titulo = \"Porto Emb/Des\";\n }\n\n return titulo;\n }\n\n municipio(munic: string, uf: string) {\n return munic ? munic.trim() + \"/\" + uf : \"\";\n }\n\n emitirAcao(OS: OrdemServico) {\n if (this.acao == 'vincular')\n this.vincular.emit(OS);\n else if (this.acao == 'fecharOS')\n this.fecharOS.emit(OS);\n }\n\n formataString(texto: string) {\n return this._sharedService.toCamelCase(texto);\n }\n \n selecionarTodas() {\n this.selecionarTodasOSs.emit();\n }\n\n salvar() {\n this.salvarOSs.emit();\n }\n}\n","import { Component, OnInit, ViewChild, Input, EventEmitter, Output } from '@angular/core';\n\nimport { AppService } from 'app/_services/app.service';\nimport { OrdemServico } from 'app/_models/ordemServico';\n//import { SharedService } from './../../../_services/shared.service';\nimport { GroupbyService } from 'app/_services/groupby.service';\nimport { OrdemServicoService } from './../../../_services/ordem-servico.service';\n\nimport { CtmNf } from './../../../_models/ctmNf';\nimport { StatusOS } from 'app/_enums/status-os.enum';\nimport { BaseComponent } from 'app/shared/base.component';\nimport { OrdemServicoRequest } from 'app/_models/ordemServicoRequest';\nimport { ItemDetalhesProvedorComponent } from './item-detalhes-provedor/item-detalhes-provedor.component';\n\n@Component({\n selector: 'item-provedor',\n templateUrl: './item-provedor.component.html',\n styleUrls: ['./item-provedor.component.scss']\n})\n\nexport class ItemProvedorComponent extends BaseComponent implements OnInit {\n @ViewChild(ItemDetalhesProvedorComponent, {static: true}) itemDetalhesProvedor: ItemDetalhesProvedorComponent;\n\n @Input() index: number;\n @Input() ordemServico: OrdemServico;\n @Input() exibirSelecao: boolean;\n @Input() exibirNumOs: boolean;\n @Input() exibirFatura: boolean;\n @Input() exibirTipoServico: boolean;\n @Input() exibirDataProgramacao: boolean;\n @Input() exibirEmbarque: boolean;\n @Input() exibirNavio: boolean;\n @Input() exibirContainer: boolean;\n @Input() exibirAcoes: boolean;\n @Input() exibirTracking: boolean;\n @Input() exibirMunicipio: boolean;\n\n @Output() emitirSelecionarTodasOSs: EventEmitter = new EventEmitter();\n @Output() emitirVincularNF: EventEmitter = new EventEmitter();\n @Output() emitirSalvarOSs: EventEmitter = new EventEmitter();\n @Output() emitirFecharOS: EventEmitter = new EventEmitter();\n\n loadingCtmAverbacao: boolean = false;\n listaCtmAverbacao: CtmNf[];\n primeirosTresCtmAverbacao: CtmNf[];\n\n constructor(\n private _ordemServicoService: OrdemServicoService,\n //private _sharedService: SharedService,\n private _appService: AppService,\n private _groupBy: GroupbyService) {\n super();\n }\n\n ngOnInit() {\n this.exibirSelecao = this.ordemServico.descTipoServico !== \"Transporte Rodoviário\" && this.ordemServico.statusOs.toLowerCase() === \"aberta\";\n this.defineStatus();\n }\n\n selecionarTodasOSs() {\n this.emitirSelecionarTodasOSs.emit();\n }\n\n salvarOSs() {\n this.emitirSalvarOSs.emit();\n }\n\n vincularNF(OS: OrdemServico) {\n this.emitirVincularNF.emit(OS);\n }\n\n fecharOrdemServico(OS: OrdemServico) {\n this.emitirFecharOS.emit(OS);\n }\n\n _status: string = '';\n _tituloBotaoAcoes: string = '';\n _acao: string = '';\n _classeLinha: string = '';\n _classeFundoLinha: string = '';\n\n //\texibeCheckbox() {\n //\t\treturn this.exibirSelecao && (this.ordemServico.descTipoServico.toLowerCase() == 'transporte rodoviário') &&\n //\t\t (this.ordemServico.statusPortal.toLowerCase() == 'aberta');\n //\t}\n\n public defineStatus() {\n this._acao = '';\n this._tituloBotaoAcoes = '';\n let status: StatusOS;\n let statusPortal: string = this.ordemServico.statusPortal.toLowerCase();\n\n if (statusPortal == 'ct-e emitido') {\n status = StatusOS.CTeEmitido;\n this._tituloBotaoAcoes = 'Ct-e Aliança Emitido';\n this._classeLinha = 'icon icon-checklist';\n this._classeFundoLinha = 'step-ctes-emitidos';\n this._acao = 'vincular';\n }\n else if (statusPortal == 'pendente') {\n status = StatusOS.Pendente;\n this._tituloBotaoAcoes = '';\n this._classeLinha = 'icon icon-clock';\n this._classeFundoLinha = 'step-pendentes';\n this._acao = '';\n }\n else if (statusPortal == 'a vincular') {\n status = StatusOS.AVincular;\n this._tituloBotaoAcoes = 'Vincular NF';\n this._classeLinha = 'icon icon-page-export';\n this._classeFundoLinha = 'step-a-vincular';\n this._acao = 'vincular';\n }\n else if (statusPortal == 'vinculada') {\n status = StatusOS.Vinculada;\n this._tituloBotaoAcoes = 'Editar NF Vinculada';\n this._classeLinha = 'icon icon-check';\n this._classeFundoLinha = 'step-vinculadas';\n this._acao = 'vincular';\n }\n else if (statusPortal == 'aberta') {\n this._tituloBotaoAcoes = (this.ordemServico.descTipoServico.toLowerCase() == 'transporte rodoviário') ? 'Fechar OS' : '';\n this._classeLinha = 'icon icon-clock';\n this._classeFundoLinha = 'step-a-vincular';\n this._acao = (this.ordemServico.descTipoServico.toLowerCase() == 'transporte rodoviário') ? 'fecharOS' : '';\n }\n else if (statusPortal == 'fechada') {\n this._tituloBotaoAcoes = '';\n this._classeLinha = 'icon icon-check';\n this._classeFundoLinha = 'step-vinculadas';\n this._acao = '';\n }\n else if (statusPortal == 'liberada para pagamento') {\n this._tituloBotaoAcoes = '';\n this._classeLinha = 'icon icon-dollar';\n this._classeFundoLinha = 'step-ctes-emitidos';\n this._acao = '';\n }\n\t\t/*\n\t\tif ((this.ordemServico.flagPossuiCTe == 'S') || (this.ordemServico.flagPossuiCTM == 'S')) {\n\t\t\tthis._status = 'ct-e emitido';\n\t\t\tthis._tituloBotaoAcoes = 'Ct-e Aliança Emitido';\n\t\t\tstatus = StatusOS.CTeEmitido;\n\t\t}\n\n\t\tif ((this.ordemServico.flagPossuiNF == 'N') && (this.ordemServico.flagPossuiCTe == 'N') && (this.ordemServico.flagPossuiCTM == 'N')) {\n\n\t\t\tif ((this.ordemServico.tipo == 'Coleta') &&\n\t\t\t (\n\t\t\t\t(!this.ordemServico.numContainer || this.ordemServico.numContainer == null) ||\n\t\t\t\t(!this.ordemServico.tara || this.ordemServico.tara == null) ||\n\t\t\t\t((!this.ordemServico.lacre1 || this.ordemServico.lacre1 == null) &&\n\t\t\t\t(!this.ordemServico.lacre2 || this.ordemServico.lacre2 == null) &&\n\t\t\t\t(!this.ordemServico.lacre3 || this.ordemServico.lacre3 == null)) ||\n\t\t\t\t(!this.ordemServico.placa || this.ordemServico.placa == null) ||\n\t\t\t\t(!this.ordemServico.dtRetiradaTerminal || this.ordemServico.dtRetiradaTerminal == null) ||\n\t\t (!this.ordemServico.dtInicioExecucao || this.ordemServico.dtInicioExecucao == null)) ) {\n\t\t\t\t\tthis._status = 'Pendente';\n\t\t\t\t\tthis._tituloBotaoAcoes = '';\n\t\t\t\t\tstatus = StatusOS.Pendente;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._status = 'a vincular';\n\t\t\t\tthis._tituloBotaoAcoes = 'Vincular NF';\n\t\t\t\tstatus = StatusOS.AVincular;\n\t\t\t}\n\t\t}\n\n\t\tif ((this.ordemServico.flagPossuiNF == 'S') && (this.ordemServico.flagPossuiCTe == 'N') && (this.ordemServico.flagPossuiCTM == 'N')) {\n\t\t\tthis._status = 'vinculada';\n\t\t\tthis._tituloBotaoAcoes = 'Editar NF Vinculada';\n\t\t\tstatus = StatusOS.Vinculada;\n\t\t}\n\t\t*/\n\n this.ordemServico.status = status;\n }\n\n exibeBL(): boolean {\n return this.ordemServico.numBL && this.ordemServico.numBL.length > 0;\n }\n\n exibeDaConsPrincipal(): boolean {\n return this.exibeBL() || (this.primeirosTresCtmAverbacao == undefined) || (this.primeirosTresCtmAverbacao.length == 0);\n }\n\n exibeVerMais(): boolean {\n return this.listaCtmAverbacao && this.listaCtmAverbacao.length > 3;\n }\n\n carregarCtmNfs() {\n this.loadingCtmAverbacao = true;\n var filtro = new OrdemServicoRequest();\n filtro.idOs = this.ordemServico.idOs;\n filtro.idUsuario = this._appService.UsuarioLogado.UsuarioIDeCargo;\n\n this._ordemServicoService.obtemCtmNfs(filtro).subscribe(result => {\n if (result) {\n this.listaCtmAverbacao = [];\n this.primeirosTresCtmAverbacao = [];\n\n if (!result) {\n this.loadingCtmAverbacao = false;\n return;\n }\n\n this.listaCtmAverbacao = this._groupBy.AgruparPorCampo(result, \"numCtm\");\n this.primeirosTresCtmAverbacao = this.listaCtmAverbacao.slice(0,3);\n /*\n result.forEach(item => {\n\n let nfe: CtmNf = new CtmNf();\n this._sharedService.copyProperties(item, nfe);\n if (nfe) {\n nfe.idUsuario = filtro.idUsuario;\n this.listaCtmAverbacao.push(nfe);\n //if (this.primeirosTresCtmAverbacao.length < 3)\n // this.primeirosTresCtmAverbacao.push(nfe);\n }\n\n });\n */\n this.loadingCtmAverbacao = false;\n }\n }, (errors) => {\n if (errors && errors.length > 0) {\n let mensagemAgrupada;\n errors.forEach(element => {\n mensagemAgrupada += element + '\\n';\n });\n //this.exibirMensagem(mensagemAgrupada);\n }\n this.loadingCtmAverbacao = false;\n });\n\n }\n\n}\n","import { Component, OnInit, ViewChild, EventEmitter, Output, Input } from '@angular/core';\n\nimport { OrdemServico } from 'app/_models/ordemServico';\nimport { OrdemServicoRequest } from 'app/_models/ordemServicoRequest';\nimport { TipoEventoTracking } from 'app/_models/tipoEventoTracking';\n\nimport { BaseComponent } from '../../shared/base.component';\nimport { ItemProvedorComponent } from './item-provedor/item-provedor.component';\nimport { FecharOrdemComponent } from './fechar-ordem/fechar-ordem.component';\nimport { PaginacaoComponent } from '../../shared/paginacao/paginacao.component';\n\nimport { SharedService } from '../../_services/shared.service';\nimport { OrdemServicoService } from 'app/_services/ordem-servico.service';\nimport { GenericOrderbyService } from 'app/_services/generic-orderby.service';\nimport { AppService } from '../../_services/app.service';\n\n@Component({\n selector: 'lista-provedor',\n templateUrl: './lista-provedor.component.html',\n styleUrls: ['./lista-provedor.component.scss']\n})\n\nexport class ListaProvedorComponent extends BaseComponent implements OnInit {\n @ViewChild('botaoCancelar', {static: true}) botaoCancelar;\n @ViewChild(ItemProvedorComponent, {static: true}) itemProvedor: ItemProvedorComponent;\n @ViewChild(FecharOrdemComponent, {static: true}) fecharOrdem: FecharOrdemComponent;\n @ViewChild(PaginacaoComponent, {static: true}) paginacao: PaginacaoComponent;\n\n @Input() classePrincipal: string;\n @Input() exibirSelecao: boolean;\n @Input() exibirNumOs: boolean;\n @Input() exibirFatura: boolean;\n @Input() exibirTipoServico: boolean;\n @Input() exibirDataProgramacao: boolean;\n @Input() exibirEmbarque: boolean;\n @Input() exibirNavio: boolean;\n @Input() exibirContainer: boolean;\n @Input() exibirAcoes: boolean;\n @Input() exibirTracking: boolean;\n @Input() exibirMunicipio: boolean;\n\n @Output() carregarFiltros: EventEmitter = new EventEmitter();\n\n @Output() emitirFecharOSsSelecionadas: EventEmitter = new EventEmitter();\n @Output() emitirSelecionarTodasOSs: EventEmitter = new EventEmitter();\n @Output() emitirVincularNF: EventEmitter = new EventEmitter();\n @Output() emitirSalvarOSs: EventEmitter = new EventEmitter();\n @Output() emitirFecharOS: EventEmitter = new EventEmitter();\n\n loadingOrdens: boolean = false;\n ocultarSelecao: boolean = true;\n\n ordens: OrdemServico[] = [];\n tpEventos: TipoEventoTracking[] = [];\n\n constructor(private _sharedService: SharedService,\n private _genericOrderbyService: GenericOrderbyService,\n private _appService: AppService) {\n\n super();\n }\n\n ngOnInit() {\n }\n\n carregaListaOrdens(ordens: OrdemServico[], ordenacao: string = \"\") {\n this.ordens = ordens;\n\n if (this.ordens && this.ordens.length > 0) {\n if (this.exibirSelecao) {\n let filterToHide = this.ordens.find(item => item.descTipoServico !== \"Transporte Rodoviário\" && item.statusOs.toLowerCase() === \"aberta\");\n this.ocultarSelecao = filterToHide === undefined || filterToHide === null;\n }\n\n this.ordens.forEach(ord => {\n ord.numContainer = (ord.numContainer != null) ? ord.numContainer.toUpperCase() : null;\n ord.numFaturaOrdenacao = (ord.numFatura != null && ord.numFatura != \"\") ? Number(ord.numFatura.trim()) : 0;\n });\n }\n\n if (ordenacao != null && ordenacao != \"\")\n this.paginacao.setAllData(this._genericOrderbyService.ordenarPorCampo(this.ordens, ordenacao, true));\n else \n this.paginacao.setAllData(this.ordens);\n \n this.paginacao.setPageSize(10);\n this.paginacao.setPage(1);\n }\n\n obtemListaOrdensOrdenadaPorCampo(campo: string) {\n if (this.ordens) {\n this.paginacao.setAllData(this._genericOrderbyService.ordenarPorCampo(this.ordens, campo, true));\n }\n }\n\n setTiposEventos(tiposEventos: TipoEventoTracking[]): void {\n this.tpEventos = tiposEventos;\n }\n\n setQuantidadeRegistrosPorPagina(quantidadePorPagina: number) {\n this.paginacao.setPageSize(quantidadePorPagina);\n }\n\n fecharOrdensServicoSelecionadas(OS: OrdemServico) {\n this.emitirFecharOSsSelecionadas.emit(OS);\n }\n\n selecionarTodasOrdensServico() {\n this.emitirSelecionarTodasOSs.emit();\n }\n\n salvarOrdensServico() {\n this.emitirSalvarOSs.emit();\n }\n\n vincularNF(OS: OrdemServico) {\n this.emitirVincularNF.emit(OS);\n }\n\n fecharOS(OS: OrdemServico) {\n this.emitirFecharOS.emit(OS);\n }\n}\n","import { Component, OnInit, Input } from '@angular/core';\n\nimport { Incidente } from './../../../_models/incidente';\n\n@Component({\n selector: 'incidente',\n templateUrl: './incidente.component.html',\n styleUrls: ['./incidente.component.scss']\n})\nexport class IncidenteComponent implements OnInit {\n\n @Input() incidente: Incidente;\n @Input() index: number;\n \n constructor() { }\n\n ngOnInit() {\n }\n\n limpaJustificativa() {\n this.incidente.checked = !this.incidente.checked;\n this.incidente.justificativa = (!this.incidente.checked) ? '' : this.incidente.justificativa;\n }\n}\n","import { Component, OnInit, ViewChild } from '@angular/core';\n\nimport { DateModel } from 'app/shared/ng2-datepicker/ng2-datepicker.component';\nimport { Incidente } from 'app/_models/incidente';\nimport { OrdemServico } from './../../_models/ordemServico';\nimport { TipoContainer } from './../../_models/tipo-container';\nimport { FiltroListaItem } from './../../_models/filtro-lista-item';\nimport { IncidenteRequest } from './../../_models/incidente-request';\nimport { OrdemServicoRequest } from 'app/_models/ordemServicoRequest';\nimport { AtualizarOrdemServico } from 'app/_models/atualizar-ordem-servico';\n\nimport { BaseComponent } from 'app/shared/base.component';\nimport { MessageComponent } from 'app/shared/message/message.component';\nimport { DatePickerOptions } from './../../shared/ng2-datepicker/ng2-datepicker.component';\nimport { FiltroTopComponent } from 'app/provedor/filtro-top/filtro-top.component';\nimport { IncidenteComponent } from './incidente/incidente.component';\nimport { FiltroListaComponent } from 'app/provedor/filtro-lista/filtro-lista.component';\nimport { ListaProvedorComponent } from 'app/provedor/lista-provedor/lista-provedor.component';\nimport { MensagemModalComponent } from './../../shared/mensagem-modal/mensagem-modal.component';\nimport { OrdenacaoProvedorComponent } from 'app/provedor/ordenacao-provedor/ordenacao-provedor.component';\n\nimport { LogService } from 'app/_services/log.service';\nimport { AppService } from 'app/_services/app.service';\nimport { SharedService } from 'app/_services/shared.service';\nimport { MessageService } from 'app/_services/message.service';\nimport { DatepickerService } from './../../_services/datepicker.service';\nimport { OrdemServicoService } from 'app/_services/ordem-servico.service';\n\nimport { DateExtensions } from \"app/shared/extensions/extensions.module\";\nimport { AnalyticsTela } from '../../_enums/analytics-tela';\nimport { AnalyticsService } from 'app/_services/analytics.service';\nimport { Operacao } from 'app/_enums/operacao';\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\nimport { DataService } from 'app/_services/data.service';\n\n@Component({\n selector: 'ordem-servico',\n templateUrl: './ordem-servico.component.html',\n styleUrls: ['./ordem-servico.component.scss']\n})\n\nexport class OrdemServicoComponent extends BaseComponent implements OnInit {\n @ViewChild('botaoCancelarOS', {static: true}) botaoCancelarOS;\n @ViewChild('botaoCancelarNota', {static: true}) botaoCancelarNota;\n @ViewChild(MessageComponent, {static: true}) mensagem: MessageComponent;\n @ViewChild(FiltroTopComponent, {static: true}) filtroTop: FiltroTopComponent;\n @ViewChild(IncidenteComponent, {static: true}) incidente: IncidenteComponent;\n @ViewChild(FiltroListaComponent, {static: true}) filtroLista: FiltroListaComponent;\n @ViewChild(ListaProvedorComponent, {static: true}) listaProvedor: ListaProvedorComponent;\n @ViewChild(OrdenacaoProvedorComponent, {static: true}) ordenacaoProvedor: OrdenacaoProvedorComponent;\n @ViewChild(MensagemModalComponent, {static: true}) mensagemModal: MensagemModalComponent;\n\n\n mascaraHoraRetirada: Array = [/[0-2]/,/[0-9]/, ':', /[0-5]/, /[0-9]/];\n mascaraHoraInicio: Array = [/[0-2]/,/[0-9]/, ':', /[0-5]/, /[0-9]/];\n mascaraHoraFim: Array = [/[0-2]/,/[0-9]/, ':', /[0-5]/, /[0-9]/];\n mascaraHoraEntrega: Array = [/[0-2]/,/[0-9]/, ':', /[0-5]/, /[0-9]/];\n\n downloading: boolean = false;\n empty: boolean = true;\n noresult: boolean = false;\n loading: boolean = false;\n loadingOSs: boolean = false;\n loadingSalvar: boolean = false;\n loadingContainers: boolean = false;\n loadingIndicadores: boolean = false;\n\n filtroPesquisa: OrdemServicoRequest;\n totais: FiltroListaItem[];\n\n eAdmin: boolean = this._appService.isAdmin();\n ordemServico: OrdemServico = new OrdemServico();\n\n idContainerSelecionado: string = '';\n bloqueiaCamposModal: boolean = false;\n tipoContainers: TipoContainer[] = [];\n incidentesBlocked: Incidente[] = [];\n options: DatePickerOptions;\n mensagemErro: string = '';\n\n exibirMensagemModal: boolean = false;\n textoMensagemModal: string;\n classeTipoMensagem: string;\n\n exibirMensagemModalOSs: boolean = false;\n textoMensagemModalOSs: string;\n classeTipoMensagemModalOSs: string;\n\n exibirReplicarParaOSs: boolean = true;\n\n OSs: OrdemServico[] = [];\n OSsSelecionadas: OrdemServico[] = [];\n campoOrdenarPor: string = \"dhProgramacao\";\n camposOrdenacao = [\n { descricao: \"Ordem de Serviço\", id: \"numOs\" },\n { descricao: \"Tipo de Serviço\", id: \"descTipoServico\" },\n { descricao: \"Navio / Viagem\", id: \"descNavioViagem\" },\n { descricao: \"Porto\", id: \"portoOriDes\" },\n { descricao: \"Emb / Dest\", id: \"nomeEmbDest\" },\n { descricao: \"Município\", id: \"municOriDes\" },\n { descricao: \"Data da Programação\", id: \"dhProgramacao\" },\n { descricao: \"Contêiner\", id: \"numContainer\" }\n ];\n\n constructor(public _datePickerService: DatepickerService,\n private _ordemServicoService: OrdemServicoService,\n private _messageService: MessageService,\n private _sharedService: SharedService,\n private _appService: AppService,\n private _logService: LogService,\n private _analyticsService: AnalyticsService,\n private _dataService: DataService) {\n super();\n\n this.ordemServico.incidentes = [];\n\n this.totais = [\n FiltroListaItem.Create('step-a-vincular', 'icon-clock', 'aberta', 'Aberta(s)', 0),\n FiltroListaItem.Create('step-vinculadas', 'icon-check', 'fechada', 'Fechadas(s)', 0),\n FiltroListaItem.Create('step-ctes-emitidos', 'icon-dollar', 'liberada para pagamento', 'Liberada(s) para Pagamento', 0),\n ];\n }\n\n changeRegex(input_time, mascara){\n if(input_time.charAt(0) == '2'){\n mascara[1]=new RegExp('[0-3]')\n }else{\n mascara[1]=new RegExp('[0-9]')\n }\n }\n\n ngOnInit() {\n this.options = this._datePickerService.GenerateOptionsConfig(null);\n this.filtroTop.classePrincipal = \"minhas-os\";\n this.filtroLista.classePrincipal = \"minhas-os\";\n this.listaProvedor.classePrincipal = \"minhas-os\";\n\n if (!this.eAdmin) {\n this.pesquisaInicial();\n }\n\n this.filtroTop.carregarFiltros.subscribe((filtro: OrdemServicoRequest) => {\n if (filtro) {\n this.pesquisar(filtro);\n }\n });\n\n this.listaProvedor.carregarFiltros.subscribe((filtro: OrdemServicoRequest) => {\n if (this.filtroPesquisa) {\n this.pesquisar(this.filtroPesquisa);\n }\n else {\n this.pesquisaInicial();\n }\n });\n\n this.ordenacaoProvedor.exportarArquivo.subscribe((exportar: boolean) => {\n if (exportar) {\n this.exportarRelatorioCSV();\n }\n });\n\n this.ordenacaoProvedor.quantidadePorPagina.subscribe((quantidadePorPagina: number) => {\n this.listaProvedor.setQuantidadeRegistrosPorPagina(quantidadePorPagina);\n });\n\n this._messageService.emitirMensagem.subscribe(msg => {\n this.mensagem.mostrarMensagem(msg.tipo, msg.mensagem);\n });\n\n this._analyticsService.RegistrarAcesso(AnalyticsTela.OrdemServico);\n //Obtém incidentes que devam ficar bloqueados\n this._dataService.getIncidentesBlocked()\n .subscribe(lista => {\n this.incidentesBlocked = lista;\n });\n }\n\n pesquisaInicial(): void {\n const filtro: OrdemServicoRequest = new OrdemServicoRequest();\n filtro.idUsuario = this._appService.UsuarioLogado.UsuarioIDeCargo;\n filtro.cnpjProvedor = this._appService.UsuarioLogado.CNPJs.join(\";\");\n filtro.dataFim = new Date();\n filtro.dataIni = this._sharedService.addDays(filtro.dataFim, -14);\n\t\tthis._sharedService.setTimeZero(filtro.dataIni);\n\t\tthis._sharedService.setTimeZero(filtro.dataFim);\n this.pesquisar(filtro);\n }\n\n pesquisar(consulta: OrdemServicoRequest): void {\n var diasDiff = Math.floor((consulta.dataFim.valueOf() - consulta.dataIni.valueOf()) / (1000 * 60 * 60 * 24)) + 1;\n if (diasDiff > 31) {\n this._messageService.addMessage(\"Ordens de Serviço\", \"O filtro por período não deve ser superior à 31 dias.\", \"error\",\n LogFrontFuncionalidade.OrdemDeServico, Operacao.Consulta, consulta);\n return;\n }\n\n consulta.vincularNF = false;\n\n this.loading = true;\n this.filtroPesquisa = consulta;\n this.filtroTop.loading = true;\n this.filtroLista.zerarQuantidades();\n\n this._ordemServicoService.obtemOrdensDeServico(consulta, AnalyticsTela.OrdemServico).subscribe(result => {\n if (!result || !result.OSs)\n return;\n\n this.OSs = result.OSs;\n this.filtroTop.preencheServicos(result.TiposServicosOS);\n this.filtroTop.preencheTipos(result.TiposOS);\n this.filtroTop.preenchePortos(result.OSs);\n this.filtroTop.preencheNavioViagens(result.OSs);\n this.listaProvedor.carregaListaOrdens(result.OSs, this.campoOrdenarPor);\n this.listaProvedor.setTiposEventos(result.tiposEventosOS);\n this.filtroLista.carregaDadosEmComponente(result.tiposEventosOS);\n this.aplicarFiltro(this.filtroLista.stepAtivo);\n\n this.empty = false;\n this.noresult = (!this.OSs || (this.OSs.length === 0));\n }, (errors) => {\n console.log('erro 1');\n console.log(errors);\n this.filtroTop.loading = false;\n this.loading = false;\n }, () => {\n this.loading = false;\n this.filtroTop.loading = false;\n });\n }\n\n exportarRelatorioCSV() {\n this.downloading = true;\n this._ordemServicoService.obtemOrdensDeServicoCSV(this.filtroPesquisa).subscribe(ordens => {\n this.downloading = false;\n this._ordemServicoService.exportarRelatorioCSV(ordens);\n });\n }\n\n aplicarFiltro(tipoEvento: string) {\n this.listaProvedor.carregaListaOrdens(\n this._ordemServicoService.filtrarPorStep(this.OSs, tipoEvento), this.campoOrdenarPor\n );\n }\n\n ordenarPor(campoDeOrdenacao: string) {\n this.campoOrdenarPor = campoDeOrdenacao;\n this.listaProvedor.obtemListaOrdensOrdenadaPorCampo(campoDeOrdenacao);\n }\n\n fecharOS(OS: OrdemServico) {\n this.loadingSalvar = true;\n\n this.mensagemModal.ocultarMensagem();\n this.ordemServico = new OrdemServico();\n\n Object.assign(this.ordemServico, OS);\n\n this.ordemServico.dataRetiradaTerminal = this.ordemServico.dtRetiradaTerminal == null ? new DateModel() : this.atribuiData(this.ordemServico.dtRetiradaTerminal);\n this.ordemServico.dataInicioExecucao = this.ordemServico.dtInicioExecucao == null ? new DateModel() : this.atribuiData(this.ordemServico.dtInicioExecucao);\n this.ordemServico.dataFimExecucao = this.ordemServico.dtFimExecucao == null ? new DateModel() : this.atribuiData(this.ordemServico.dtFimExecucao);\n this.ordemServico.dataEntregaTerminal = this.ordemServico.dtEntregaTerminal == null ? new DateModel() : this.atribuiData(this.ordemServico.dtEntregaTerminal);\n\n this.ordemServico.dtRetiradaTerminal = (this.ordemServico.dtRetiradaTerminal != undefined) ? this._sharedService.corrigeData(this.ordemServico.dtRetiradaTerminal) : null;\n this.ordemServico.dtInicioExecucao = (this.ordemServico.dtInicioExecucao != undefined) ? this._sharedService.corrigeData(this.ordemServico.dtInicioExecucao) : null;\n this.ordemServico.dtFimExecucao = (this.ordemServico.dtFimExecucao != undefined) ? this._sharedService.corrigeData(this.ordemServico.dtFimExecucao) : null;\n this.ordemServico.dtEntregaTerminal = (this.ordemServico.dtEntregaTerminal != undefined) ? this._sharedService.corrigeData(this.ordemServico.dtEntregaTerminal) : null;\n\n this.bloqueiaCamposModal = (OS.tipo != 'Coleta' && OS.tipo != 'Exportação');\n this.obterIndicadores(OS);\n this.obterTipoContainers();\n\n this.loadingSalvar = false;\n }\n\n atribuiData(dataBD: Date) {\n if (!dataBD) {\n return null;\n }\n else {\n var dataCalendar = new DateModel();\n dataCalendar.formatted = this._sharedService.formataDataHoraBR(this._sharedService.corrigeData(dataBD), false);\n\n return dataCalendar;\n }\n }\n\n fecharOSsSelecionadas(OS: OrdemServico) {\n this.loadingOSs = true;\n this.ocultarMensagemOSs();\n\n this.OSsSelecionadas = this.OSs.filter(x => x.selecionado);\n this.exibirReplicarParaOSs = this.OSsSelecionadas && this.OSsSelecionadas.length > 1;\n\n if (this.OSsSelecionadas && this.OSsSelecionadas.length) {\n this.OSsSelecionadas.forEach(element => {\n element.dataInicioExecucao = null;\n element.dataFimExecucao = null;\n\n element.dataInicioExecucao = DateExtensions.toDateModel(element.dtInicioExecucao, \"DD/MM/YYYY\");\n element.dataFimExecucao = DateExtensions.toDateModel(element.dtFimExecucao, \"DD/MM/YYYY\");\n\n element.dtInicioExecucao = (element.dtInicioExecucao != undefined) ? this._sharedService.corrigeData(element.dtInicioExecucao) : null;\n element.dtFimExecucao = (element.dtFimExecucao != undefined) ? this._sharedService.corrigeData(element.dtFimExecucao) : null;\n });\n }\n\n this.loadingOSs = false;\n }\n\n replicarDadosParaOSs() {\n this.loadingOSs = true;\n\n let OS = this.OSsSelecionadas[0];\n OS.dtInicioExecucao = this.ConfigurarData(OS.dataInicioExecucao, OS.dtInicioExecucao, this.limpaHora(OS.hrInicioExecucao) || '0');\n OS.dtFimExecucao = this.ConfigurarData(OS.dataFimExecucao, OS.dtFimExecucao, this.limpaHora(OS.hrFimExecucao) || '0');\n\n if (OS && this.OSsSelecionadas.indexOf(OS) === 0) {\n this.OSsSelecionadas.forEach(element => {\n if (element.idOs === OS.idOs) {\n return;\n }\n\n element.dataInicioExecucao = DateExtensions.toDateModel(OS.dtInicioExecucao, \"DD/MM/YYYY\");\n element.dataFimExecucao = DateExtensions.toDateModel(OS.dtFimExecucao, \"DD/MM/YYYY\");\n\n element.dtInicioExecucao = OS.dtInicioExecucao;\n element.hrInicioExecucao = OS.hrInicioExecucao;\n element.dtFimExecucao = OS.dtFimExecucao;\n element.hrFimExecucao = OS.hrFimExecucao;\n\n element.dtInicioExecucao = this.ConfigurarData(element.dataInicioExecucao, element.dtInicioExecucao, this.limpaHora(element.hrInicioExecucao));\n element.dtFimExecucao = this.ConfigurarData(element.dataFimExecucao, element.dtFimExecucao, this.limpaHora(element.hrFimExecucao));\n });\n }\n\n this.loadingOSs = false;\n }\n\n ocultarReplicar() {\n this.exibirReplicarParaOSs = false;\n }\n\n selecionarTodasOSs() {\n var totalSelecionados = this.OSs.filter(o => o.selecionado == true).length;\n var total = this.OSs.filter(o => o.descTipoServico !== \"Transporte Rodoviário\" && o.statusOs.toLowerCase() === \"aberta\").length;\n\n this.OSs.forEach(ordem => {\n if (ordem.selecionado && typeof ordem.selecionado === 'boolean') {\n ordem.selecionado = ((totalSelecionados > 0) && (totalSelecionados < total)) ? true : !ordem.selecionado;\n let ordemIndex = this.OSsSelecionadas.indexOf(ordem);\n if (ordemIndex > -1) {\n this.OSsSelecionadas.splice(ordemIndex, 1);\n }\n }\n else {\n if (ordem.descTipoServico !== \"Transporte Rodoviário\" && ordem.statusOs.toLowerCase() === \"aberta\") {\n ordem.selecionado = true;\n this.OSsSelecionadas.push(ordem);\n }\n }\n });\n }\n\n salvarOSs() {\n this.loadingOSs = true;\n this.ocultarMensagemOSs();\n\n if (this.OSsSelecionadas && this.OSsSelecionadas.length > 0) {\n let temErros = false;\n let ordensParaAtualizar: AtualizarOrdemServico[] = [];\n this.OSsSelecionadas.forEach(OS => {\n if (temErros) {\n return;\n }\n\n let indexLinha = this.OSsSelecionadas.indexOf(OS);\n\n var hrIni = this.limpaHora(OS.hrInicioExecucao);\n var hrFim = this.limpaHora(OS.hrFimExecucao);\n\n OS.dtInicioExecucao = this.ConfigurarData(OS.dataInicioExecucao, OS.dtInicioExecucao, hrIni);\n OS.dtFimExecucao = this.ConfigurarData(OS.dataFimExecucao, OS.dtFimExecucao, hrFim);\n\n if ((!OS.dataInicioExecucao && !OS.hrInicioExecucao)\n || (!OS.dataInicioExecucao && OS.hrInicioExecucao)\n || (OS.dataInicioExecucao && (!OS.dataInicioExecucao.formatted || !OS.hrInicioExecucao))) {\n this.exibirMensagemOSs('A Data/Hora Início é obrigatória');\n this.loadingOSs = false;\n temErros = true;\n return;\n }\n else if ((OS.dataInicioExecucao && OS.dataInicioExecucao.formatted && OS.hrInicioExecucao)\n && ((OS.dataFimExecucao && !OS.dataFimExecucao.formatted && OS.hrFimExecucao) || (OS.dataFimExecucao && OS.dataFimExecucao.formatted && !OS.hrFimExecucao) || (!OS.dataFimExecucao && OS.hrFimExecucao))) {\n this.exibirMensagemOSs('Informar a Data/Hora Fim completa');\n this.loadingOSs = false;\n temErros = true;\n return;\n }\n else if (OS.dtInicioExecucao && OS.dtFimExecucao && OS.dtInicioExecucao > OS.dtFimExecucao) {\n this.exibirMensagemOSs('A Data/Hora Início deve ser menor que a Data/hora Fim');\n this.loadingOSs = false;\n temErros = true;\n return;\n }\n\n if (OS.dataInicioExecucao && OS.dataInicioExecucao.formatted && OS.dtInicioExecucao == null) {\n this.exibirMensagemOSs('Data de Chegada no Cliente inválida!');\n this.loadingOSs = false;\n temErros = true;\n return;\n }\n\n if (OS.hrInicioExecucao && !this.verificaHoraValida(hrIni)) {\n this.exibirMensagemOSs('Hora de Chegada no Cliente inválida!');\n this.loadingOSs = false;\n temErros = true;\n return;\n }\n\n if (OS.dataFimExecucao && OS.dataFimExecucao.formatted && OS.dtFimExecucao == null) {\n this.exibirMensagemOSs('Data de Saída do Cliente inválida!');\n this.loadingOSs = false;\n temErros = true;\n return;\n }\n\n if (OS.hrFimExecucao && !this.verificaHoraValida(hrFim)) {\n this.exibirMensagemOSs('Hora de Saída do Cliente inválida!');\n this.loadingOSs = false;\n temErros = true;\n return;\n }\n\n let ordemParaAtualizar: AtualizarOrdemServico = {\n idUsuario: this._appService.UsuarioLogado.UsuarioIDeCargo,\n idTipoContainer: OS.idTipoContainer,\n solicitContainerId: OS.solicitContainerId,\n tamanhoContainer: OS.tamanhoContainer,\n idOs: OS.idOs,\n idTipoServico: OS.idTipoServico,\n tara: null,\n numOs: OS.numOs,\n dhRetiradaTerminal: null,\n dhChegadaCliente: OS.dtInicioExecucao,\n dhSaidaCliente: OS.dtFimExecucao,\n dhChegadaTerminal: null,\n numContainer: OS.numContainer,\n lacre1: null,\n lacre2: null,\n lacre3: null,\n placa: null,\n observacao: null,\n indicAvulsa: OS.indicAvulsa,\n justificativas: []\n };\n\n ordensParaAtualizar.push(ordemParaAtualizar);\n });\n\n if (!temErros) {\n this._analyticsService.RegistrarFechamentosOS(ordensParaAtualizar);\n this._ordemServicoService.atualizarOrdensDeServico(ordensParaAtualizar).subscribe(result => {\n var acaoFecharModal = document.getElementById('botaoCancelarOSs');\n if (acaoFecharModal) {\n acaoFecharModal.click();\n if (this.filtroPesquisa) {\n this.pesquisar(this.filtroPesquisa);\n }\n }\n\n this.loadingOSs = false;\n }, (errors) => {\n if (errors && errors.length > 0) {\n let mensagemAgrupada = '';\n let mensagemAnterior = null;\n errors.forEach(element => {\n if (mensagemAnterior === element.Message) {\n return;\n }\n\n mensagemAgrupada += element.Message;\n mensagemAnterior = element.Message;\n });\n\n this.exibirMensagemOSs(mensagemAgrupada);\n }\n\n this.loadingOSs = false;\n });\n }\n }\n }\n\n exibirMensagemOSs(texto: string, tipo: string = null) {\n if (texto && texto !== undefined && texto !== null && texto !== '') {\n this.textoMensagemModalOSs = texto;\n this.exibirMensagemModalOSs = true;\n this.classeTipoMensagemModalOSs = tipo || 'danger';\n\n if (texto && texto != '' && texto != undefined && tipo != \"success\")\n this._logService.logFront(null, LogFrontFuncionalidade.OrdemDeServico, texto, Operacao.Alteracao, \"Ordem de Serviço\");\n\n var element = document.getElementById('mensagemModalOSs');\n if (element) {\n setTimeout(() => { element.scrollIntoView(); });\n }\n }\n }\n\n ocultarMensagemOSs() {\n if (this.exibirMensagemModalOSs) {\n this.textoMensagemModalOSs = null;\n this.exibirMensagemModalOSs = false;\n }\n }\n\n obterIndicadores(OS: OrdemServico) {\n this.loadingIndicadores = true;\n var filtro: IncidenteRequest = new IncidenteRequest();\n filtro.idOs = OS.idOs;\n filtro.idUsuario = this._appService.UsuarioLogado.UsuarioIDeCargo;\n this._ordemServicoService.obtemIncidentes(filtro).subscribe(\n x => {\n\n this.loadingIndicadores = false;\n if (x == null)\n return;\n\n this.ordemServico.incidentes = [];\n x.forEach(item => {\n if (!(item.descIndicador == 'Devolução' && OS.tipo != 'Entrega' && OS.tipo != 'Importação')) {\n item.idOs = OS.idOs;\n item.numOs = OS.numOs;\n item.idUsuario = this._appService.UsuarioLogado.UsuarioIDeCargo;\n item.checked = (item.justificativa != undefined && item.justificativa != null && item.justificativa.length > 0);\n item.blocked = (item.checked && this.incidentesBlocked.length > 0 && this.incidentesBlocked.filter(f => f.idIndicador == item.idIndicador).length > 0);\n this.ordemServico.incidentes.push(item as Incidente);\n }\n });\n });\n }\n\n obterTipoContainers() {\n this.loadingContainers = true;\n this._ordemServicoService.getTipoContainersOS(0)\n .subscribe(items => {\n this.tipoContainers = [];\n items.forEach(item => {\n let tp: TipoContainer = new TipoContainer();\n this._sharedService.copyProperties(item, tp);\n this.tipoContainers.push(tp);\n });\n\n this.idContainerSelecionado = this.ordemServico.idTipoContainer + '|' + this.ordemServico.tamanhoContainer;\n this.loadingContainers = false;\n });\n }\n\n validaPreenchimento() {\n var erros: string[] = [];\n\n if (this.ordemServico.indicAvulsa) {\n this.ordemServico.dataRetiradaTerminal = null;\n this.ordemServico.hrRetiradaTerminal = null;\n this.ordemServico.dataEntregaTerminal = null;\n this.ordemServico.hrEntregaTerminal = null;\n }\n\n if (this.ordemServico.dataRetiradaTerminal != undefined && this.ordemServico.dataRetiradaTerminal.formatted != null\n && this.ordemServico.dataRetiradaTerminal.formatted != '') {\n\n var hora = this.limpaHora(this.ordemServico.hrRetiradaTerminal);\n\n this.ordemServico.dtRetiradaTerminal = this.ConfigurarData(this.ordemServico.dataRetiradaTerminal, this.ordemServico.dtRetiradaTerminal, hora);\n\n if (this.ordemServico.dtRetiradaTerminal == null)\n erros.push('
  • Data de Retirada do Terminal inválida!
  • ');\n\n if (!this.ordemServico.hrRetiradaTerminal)\n erros.push('
  • Informe a Hora de Retirada do Terminal!
  • ');\n else if (this.ordemServico.hrRetiradaTerminal && !this.verificaHoraValida(hora)) {\n erros.push('
  • Hora de Retirada do Terminal inválida!
  • ');\n }\n }\n\n if (this.ordemServico.dataInicioExecucao != undefined && this.ordemServico.dataInicioExecucao.formatted != null\n && this.ordemServico.dataInicioExecucao.formatted != '') {\n\n var hora = this.limpaHora(this.ordemServico.hrInicioExecucao);\n\n this.ordemServico.dtInicioExecucao = this.ConfigurarData(this.ordemServico.dataInicioExecucao, this.ordemServico.dtInicioExecucao, hora);\n\n if (this.ordemServico.dtInicioExecucao == null)\n erros.push('
  • Data de Chegada no Cliente inválida!
  • ');\n\n if (!this.ordemServico.hrInicioExecucao)\n erros.push('
  • Informe a Hora de Chegada no Cliente!
  • ');\n else if (this.ordemServico.hrInicioExecucao && !this.verificaHoraValida(hora)) {\n erros.push('
  • Hora de Chegada no Cliente inválida!
  • ');\n }\n }\n\n if (this.ordemServico.dataFimExecucao != undefined && this.ordemServico.dataFimExecucao.formatted != null\n && this.ordemServico.dataFimExecucao.formatted != '') {\n\n var hora = this.limpaHora(this.ordemServico.hrFimExecucao);\n\n this.ordemServico.dtFimExecucao = this.ConfigurarData(this.ordemServico.dataFimExecucao, this.ordemServico.dtFimExecucao, hora);\n\n if (this.ordemServico.dtFimExecucao == null)\n erros.push('
  • Data de Saída do Cliente inválida!
  • ');\n\n if (!this.ordemServico.hrFimExecucao)\n erros.push('
  • Informe a Hora de Saída do Cliente!
  • ');\n else if (this.ordemServico.hrFimExecucao && !this.verificaHoraValida(hora)) {\n erros.push('
  • Hora de Saída do Cliente inválida!
  • ');\n }\n }\n\n if (this.ordemServico.dataEntregaTerminal != undefined && this.ordemServico.dataEntregaTerminal.formatted != null\n && this.ordemServico.dataEntregaTerminal.formatted != '') {\n\n var hora = this.limpaHora(this.ordemServico.hrEntregaTerminal);\n\n this.ordemServico.dtEntregaTerminal = this.ConfigurarData(this.ordemServico.dataEntregaTerminal, this.ordemServico.dtEntregaTerminal, hora);\n\n if (this.ordemServico.dtEntregaTerminal == null)\n erros.push('
  • Data de Entrega no Terminal inválida!
  • ');\n\n if (!this.ordemServico.hrEntregaTerminal)\n erros.push('
  • Informe a Hora de Entrega no Terminal!
  • ');\n else if (this.ordemServico.hrEntregaTerminal && !this.verificaHoraValida(hora)) {\n erros.push('
  • Hora de Entrega no Terminal inválida!
  • ');\n }\n }\n\n //verifica se preencheu alguma das informações do contêiner\n var temInfoContainer: boolean = ((this.ordemServico.numContainer != null && this.ordemServico.numContainer != undefined && this.ordemServico.numContainer != '') ||\n (this.idContainerSelecionado != undefined && this.idContainerSelecionado != null && this.idContainerSelecionado != '0') ||\n (this.ordemServico.lacre1 != null && this.ordemServico.lacre1 != undefined && this.ordemServico.lacre1 != '') ||\n (this.ordemServico.lacre2 != null && this.ordemServico.lacre2 != undefined && this.ordemServico.lacre2 != '') ||\n (this.ordemServico.lacre3 != null && this.ordemServico.lacre3 != undefined && this.ordemServico.lacre3 != '') ||\n (this.ordemServico.tara != null && this.ordemServico.tara != undefined && this.ordemServico.tara != 0) ||\n (this.ordemServico.placa != null && this.ordemServico.placa != undefined && this.ordemServico.placa != ''));\n\n if (temInfoContainer) {\n if (this.ordemServico.numContainer == null || this.ordemServico.numContainer == undefined || this.ordemServico.numContainer.trim() == '')\n erros.push('
  • Informe o número do Contêiner!
  • ');\n else {\n if (!this._sharedService.validaDigitoContainer(this.ordemServico.numContainer))\n erros.push('
  • Número do Contêiner inválido!
  • ');\n }\n\n if (this.idContainerSelecionado == undefined || this.idContainerSelecionado == null || this.idContainerSelecionado == '0')\n erros.push('
  • Informe o tipo do Contêiner!
  • ');\n else {\n var str = this.idContainerSelecionado.split('|');\n this.ordemServico.idTipoContainer = Number(str[0]);\n this.ordemServico.tamanhoContainer = Number(str[1]);\n }\n\n if ((this.ordemServico.lacre1 == null || this.ordemServico.lacre1 == undefined || this.ordemServico.lacre1.trim() == '') &&\n (this.ordemServico.lacre2 == null || this.ordemServico.lacre2 == undefined || this.ordemServico.lacre2.trim() == '') &&\n (this.ordemServico.lacre3 == null || this.ordemServico.lacre3 == undefined || this.ordemServico.lacre3.trim() == ''))\n erros.push('
  • Informe ao menos um Lacre!
  • ');\n\n if (this.ordemServico.tara == null || this.ordemServico.tara == undefined || this.ordemServico.tara == 0)\n erros.push('
  • Informe a Tara!
  • ');\n\n if (this.ordemServico.placa == null || this.ordemServico.placa == undefined || this.ordemServico.placa.trim() == '')\n erros.push('
  • Informe a Placa do Cavalo!
  • ');\n }\n\n var temAlgumaData: boolean = ((this.ordemServico.dtRetiradaTerminal != null && this.ordemServico.dtRetiradaTerminal != undefined) ||\n (this.ordemServico.dtInicioExecucao != null && this.ordemServico.dtInicioExecucao != undefined) ||\n (this.ordemServico.dtFimExecucao != null && this.ordemServico.dtFimExecucao != undefined) ||\n (this.ordemServico.dtEntregaTerminal != null && this.ordemServico.dtEntregaTerminal != undefined));\n\n //Se dados do contêiner não informados, não pode informar datas\n if (!temInfoContainer && temAlgumaData)\n erros.push('
  • Os dados do contêiner devem ser informados antes de informar os eventos!
  • ');\n\n //Verifica se datas preenchidas estão em ordem coerente\n if (temAlgumaData) {\n if (!this.ordemServico.indicAvulsa && !this.validaSeDataMenor(this.ordemServico.dtRetiradaTerminal, this.ordemServico.dtInicioExecucao))\n erros.push('
  • A data/hora de Retirada do Terminal deve ser menor que a data/hora de Chegada no Cliente!
  • ');\n\n if (!this.ordemServico.indicAvulsa && !this.validaSeDataMenor(this.ordemServico.dtRetiradaTerminal, this.ordemServico.dtFimExecucao))\n erros.push('
  • A data/hora de Retirada do Terminal deve ser menor que a data/hora de Saída do Cliente!
  • ');\n\n if (!this.ordemServico.indicAvulsa && !this.validaSeDataMenor(this.ordemServico.dtRetiradaTerminal, this.ordemServico.dtEntregaTerminal))\n erros.push('
  • A data/hora de Retirada do Terminal deve ser menor que a data/hora de Entrega no Terminal!
  • ');\n\n if (!this.validaSeDataMenor(this.ordemServico.dtInicioExecucao, this.ordemServico.dtFimExecucao))\n erros.push('
  • A data/hora de Chegada no Cliente deve ser menor que a data/hora de Saída do Cliente!
  • ');\n\n if (!this.ordemServico.indicAvulsa && !this.validaSeDataMenor(this.ordemServico.dtInicioExecucao, this.ordemServico.dtEntregaTerminal))\n erros.push('
  • A data/hora de Chegada no Cliente deve ser menor que a data/hora de Entrega no Terminal!
  • ');\n\n if (!this.ordemServico.indicAvulsa && !this.validaSeDataMenor(this.ordemServico.dtFimExecucao, this.ordemServico.dtEntregaTerminal))\n erros.push('
  • A data/hora de Saída do Cliente deve ser menor que a data/hora de Entrega no Terminal!
  • ');\n }\n\n if (this.ordemServico.incidentes) {\n //Se checado algum incidente, deve informar justificativa\n this.ordemServico.incidentes.forEach(item => {\n if (item.checked && (item.justificativa == undefined || item.justificativa == null || item.justificativa.trim().length == 0))\n erros.push(\"
  • Informe a justificativa para o incidente '\" + item.descIndicador + \"'!
  • \");\n });\n }\n\n this.mensagemErro = \"\";\n\n if (erros.length > 0) {\n this.mensagemErro = '
      ' + erros.join(\"\") + '
    ';\n this.mensagemModal.exibeMensagemErro(this.mensagemErro, LogFrontFuncionalidade.OrdemDeServico, Operacao.Alteracao, \"Fechar OS\");\n }\n else\n this.salvar();\n }\n\n validaSeDataMenor(dataMenor: Date, dataMaior: Date) {\n //se não tem alguma das datas, retorna true\n if ((dataMenor == null || dataMenor == undefined) && (dataMaior == null || dataMaior == undefined))\n return true;\n\n if ((dataMenor != null && dataMenor != undefined) && (dataMaior == null || dataMaior == undefined))\n return true;\n\n if ((dataMenor == null || dataMenor == undefined) && (dataMaior != null && dataMaior != undefined))\n return false;\n\n return (dataMenor.getTime() < dataMaior.getTime());\n }\n\n exibirMensagem(texto: string, tipo: string = null) {\n if (texto && texto !== undefined && texto !== null && texto !== '') {\n this.textoMensagemModal = texto;\n this.exibirMensagemModal = true;\n this.classeTipoMensagem = tipo || 'danger';\n\n if (texto && texto != '' && texto != undefined && tipo != \"success\")\n this._logService.logFront(null, LogFrontFuncionalidade.OrdemDeServico, texto, Operacao.Alteracao, \"Ordem de Serviço\");\n\n var element = document.getElementById('mensagemModal');\n if (element) {\n element.focus();\n }\n }\n }\n\n ocultarMensagem() {\n if (this.exibirMensagemModal) {\n this.textoMensagemModal = null;\n this.exibirMensagemModal = false;\n }\n }\n\n public ConfigurarData(dataCalendar: DateModel, data: Date, hora: string): Date {\n // Se a data selecionada for nula ou inválida, retorna nulo\n if ((dataCalendar == undefined) || (dataCalendar.formatted == '') || (dataCalendar.formatted == null) ||\n (!this._datePickerService.IsValid(dataCalendar)) || (!hora))\n return null;\n\n // Configura o campo baseado na data selecionada\n // no DatePicker e na hora informada no input\n return this._datePickerService.ObtemDataHora(dataCalendar, hora);\n }\n\n salvar() {\n this.loadingSalvar = true;\n var lista: AtualizarOrdemServico[] = [];\n var obj: AtualizarOrdemServico = new AtualizarOrdemServico();\n\n obj.idUsuario = this._appService.UsuarioLogado.UsuarioIDeCargo;\n obj.idTipoContainer = this.ordemServico.idTipoContainer;\n obj.solicitContainerId = this.ordemServico.solicitContainerId;\n obj.tamanhoContainer = this.ordemServico.tamanhoContainer;\n obj.idOs = this.ordemServico.idOs;\n obj.tara = this.ordemServico.tara;\n obj.numOs = this.ordemServico.numOs;\n obj.dhRetiradaTerminal = this.ordemServico.dtRetiradaTerminal;\n obj.dhChegadaCliente = this.ordemServico.dtInicioExecucao;\n obj.dhSaidaCliente = this.ordemServico.dtFimExecucao;\n obj.dhChegadaTerminal = this.ordemServico.dtEntregaTerminal;\n obj.numContainer = this.ordemServico.numContainer;\n obj.idTipoServico = this.ordemServico.idTipoServico;\n obj.lacre1 = this.ordemServico.lacre1;\n obj.lacre2 = this.ordemServico.lacre2;\n obj.lacre3 = this.ordemServico.lacre3;\n obj.placa = this.ordemServico.placa;\n obj.indicAvulsa = this.ordemServico.indicAvulsa;\n obj.observacao = this.ordemServico.observacao;\n //obj.justificativas = this.ordemServico.incidentes;\n obj.justificativas = [];\n this.ordemServico.incidentes.forEach(item => {\n if (item.checked)\n obj.justificativas.push(item);\n });\n\n lista.push(obj);\n this._analyticsService.RegistrarFechamentosOS(lista);\n this._ordemServicoService.atualizarOrdensDeServico(lista).subscribe(result => {\n this.loadingSalvar = false;\n if (result) {\n var acaoFecharModal = document.getElementById('botaoCancelarNota');\n if (acaoFecharModal) {\n acaoFecharModal.click();\n if (this.filtroPesquisa) {\n this.pesquisar(this.filtroPesquisa);\n }\n }\n }\n }, (errors) => {\n if (errors && errors.length > 0) {\n let mensagemAgrupada = '';\n errors.forEach(element => {\n mensagemAgrupada += '
  • ' + element.Message + '
  • ';\n });\n\n this.mensagemModal.exibeMensagemErro('
      ' + mensagemAgrupada + '
    ', LogFrontFuncionalidade.OrdemDeServico, Operacao.Alteracao, \"Fechar OS\");\n }\n\n this.loadingSalvar = false;\n });\n }\n\n limpaHora(hora: string): string {\n if (hora == undefined || hora == null || hora == '')\n return undefined;\n\n return hora.substr(0, 5).replace(':', '');\n }\n\n verificaHoraValida(hora: string): boolean {\n if (hora == undefined || hora == null || hora == '')\n return false;\n\n var hr: number = Number(hora.substr(0, 2));\n var min: number = Number(hora.substr(2, 2));\n\n return (hr < 24) && (min < 60);\n }\n\n validaDigito(ctnr: string){\n if(!this._sharedService.validaDigitoContainer(ctnr))\n this.mensagemModal.exibeMensagemErro('
      Número do Contêiner inválido!
    ', LogFrontFuncionalidade.OrdemDeServico, Operacao.Alteracao, \"Fechar OS\");\n else\n this.mensagemModal.ocultarMensagem();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { SharedModule } from './../../shared/shared.module';\nimport { ProvedorModule } from './../provedor.module';\nimport { DatePickerModule } from './../../shared/ng2-datepicker/ng2-datepicker.module';\nimport { CurrencyMaskModule } from 'ng2-currency-mask';\n\nimport { OrdemServicoComponent } from './ordem-servico.component';\nimport { IncidenteComponent } from './incidente/incidente.component';\nimport { OrdemServicoRoutingModule } from './ordem-servico.routing.module';\nimport { DatepickerService } from 'app/_services/datepicker.service';\nimport { MessageService } from 'app/_services/message.service';\nimport { GroupbyService } from 'app/_services/groupby.service';\nimport { OrdemServicoService } from 'app/_services/ordem-servico.service';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n DatePickerModule,\n CurrencyMaskModule,\n ProvedorModule,\n SharedModule,\n OrdemServicoRoutingModule\n ],\n declarations: [\n OrdemServicoComponent,\n IncidenteComponent\n ],\n exports: [\n ProvedorModule\n ],\n providers: [\n OrdemServicoService,\n DatepickerService,\n MessageService,\n GroupbyService\n ]\n})\n\nexport class OrdemServicoModule { }\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { AuthGuard } from 'app/_guards/auth.guard';\nimport { OrdemServicoComponent } from './ordem-servico.component';\n\nconst ordemServicoRoutes: Routes = [\n { path: '', component: OrdemServicoComponent, canActivate: [AuthGuard] }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(ordemServicoRoutes)],\n exports: [RouterModule]\n})\nexport class OrdemServicoRoutingModule {}","import { Component, OnInit, EventEmitter, Input, Output } from '@angular/core';\nimport { AnalyticsService } from 'app/_services/analytics.service';\nimport { AnalyticsTela } from 'app/_enums/analytics-tela';\nimport { AnalyticsDownload } from '../../_enums/analytics-download';\n\n@Component({\n\tselector: 'ordenacao-provedor',\n\ttemplateUrl: './ordenacao-provedor.component.html',\n\tstyleUrls: ['./ordenacao-provedor.component.scss']\n})\n\nexport class OrdenacaoProvedorComponent implements OnInit {\n\t@Input() titulo: string;\n\t@Input() listaCampos: any;\n\t@Input() ordenarPor: string;\n\n\t@Output() exportarArquivo: EventEmitter = new EventEmitter();\n\t@Output() quantidadePorPagina: EventEmitter = new EventEmitter();\n\t@Output() ordenarLista: EventEmitter = new EventEmitter();\n\n\tconstructor(private _analyticsService: AnalyticsService) {\n\t}\n\n\tngOnInit() {\n\t}\n\n\texportarArquivoEmFormatoCSV() {\n\t\tvar tela = (this.titulo.includes('Vincular')) ? AnalyticsTela.VincularNF : AnalyticsTela.OrdemServico;\n\t\tthis._analyticsService.RegistrarDownload(tela, AnalyticsDownload.ExportacaoCSV);\n\t\tthis.exportarArquivo.emit(true);\n\t}\n\n\tordenar() {\n\t\tthis.ordenarLista.emit(this.ordenarPor);\n\t}\n\n\tmostrarQuantidadePorPagina(quantidadePorPagina): void {\n\t\tthis.quantidadePorPagina.emit(quantidadePorPagina);\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TextMaskModule } from 'angular2-text-mask';\n\nimport { SharedModule } from 'app/shared/shared.module';\nimport { VincularNfModule } from './vincular-nf/vincular-nf.module';\nimport { ModalModule } from 'ngx-bootstrap/modal';\nimport { DatePickerModule } from \"app/shared/ng2-datepicker/ng2-datepicker.module\";\nimport { MultiselectDropdownModule } from './../shared/multiselect-dropdown/multiselect-dropdown.module';\n\nimport { DatepickerService } from 'app/_services/datepicker.service';\nimport { MessageService } from 'app/_services/message.service';\nimport { OrdemServicoService } from 'app/_services/ordem-servico.service';\n\nimport { FiltroTopComponent } from 'app/provedor/filtro-top/filtro-top.component';\nimport { FiltroListaComponent } from 'app/provedor/filtro-lista/filtro-lista.component';\nimport { ListaProvedorComponent } from 'app/provedor/lista-provedor/lista-provedor.component';\nimport { ItemProvedorComponent } from 'app/provedor/lista-provedor/item-provedor/item-provedor.component';\nimport { ItemDetalhesProvedorComponent } from 'app/provedor/lista-provedor/item-provedor/item-detalhes-provedor/item-detalhes-provedor.component';\nimport { FecharOrdemComponent } from 'app/provedor/lista-provedor/fechar-ordem/fechar-ordem.component';\nimport { OrdenacaoProvedorComponent } from 'app/provedor/ordenacao-provedor/ordenacao-provedor.component';\nimport { UsuarioService } from 'app/_services/usuario.service';\nimport { NavioViagemService } from 'app/_services/navio-viagem.service';\n\n@NgModule({\n\timports: [\n\t\tCommonModule,\n\t\tFormsModule,\n\t\tTextMaskModule,\n\t\tDatePickerModule,\n\t\tMultiselectDropdownModule,\n\t\tModalModule.forRoot(),\n\t\tSharedModule\n\t],\n\tdeclarations: [\n\t\tFiltroTopComponent,\n\t\tFiltroListaComponent,\n\t\tListaProvedorComponent,\n\t\tItemProvedorComponent,\n\t\tItemDetalhesProvedorComponent,\n\t\tOrdenacaoProvedorComponent,\n\t\tFecharOrdemComponent\n\t],\n\texports: [\n\t\tSharedModule,\n\t\tFiltroTopComponent,\n\t\tFiltroListaComponent,\n\t\tListaProvedorComponent,\n\t\tItemProvedorComponent,\n\t\tItemDetalhesProvedorComponent,\n\t\tOrdenacaoProvedorComponent,\n\t\tFecharOrdemComponent\n\t],\n\tproviders: [\n\t\tDatepickerService,\n\t\tMessageService,\n\t\tOrdemServicoService,\n\t\tUsuarioService,\n\t\tNavioViagemService\n\t]\n})\n\nexport class ProvedorModule { }\n","import { Component, OnInit, Input } from '@angular/core';\n\nimport { CtmNf } from 'app/_models/ctmNf';\nimport { BaseComponent } from 'app/shared/base.component';\n\n@Component({\n selector: 'chave-cte',\n templateUrl: './chave-cte.component.html',\n styleUrls: ['./chave-cte.component.scss']\n})\n\nexport class ChaveCteComponent extends BaseComponent implements OnInit {\n @Input() cte: string;\n @Input() index: number;\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n }\n}\n","import { Component, OnInit, Input, EventEmitter, Output } from '@angular/core';\n\nimport { CtmNf } from 'app/_models/ctmNf';\nimport { BaseComponent } from 'app/shared/base.component';\n\n@Component({\n selector: 'chave-nfe',\n templateUrl: './chave-nfe.component.html',\n styleUrls: ['./chave-nfe.component.scss']\n})\n\nexport class ChaveNfeComponent extends BaseComponent implements OnInit {\n @Input() nfe: CtmNf;\n @Input() index: number;\n @Input() exibirExcluir: boolean;\n\n @Output() excluirNfe: EventEmitter = new EventEmitter();\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n }\n\n private excluir() {\n this.excluirNfe.emit(this.nfe);\n }\n}\n","import { Component, OnInit, ViewChild } from '@angular/core';\n\nimport { FiltroListaItem } from 'app/_models/filtro-lista-item';\nimport { CtmNf } from 'app/_models/ctmNf';\nimport { Porto } from 'app/_models/porto';\nimport { OrdemServico } from 'app/_models/ordemServico';\nimport { OrdemServicoRequest } from 'app/_models/ordemServicoRequest';\nimport { OrdemServicoVM } from 'app/_models/ordemServicoVM';\n\nimport { BaseComponent } from 'app/shared/base.component';\nimport { MessageComponent } from 'app/shared/message/message.component';\nimport { FiltroTopComponent } from 'app/provedor/filtro-top/filtro-top.component';\nimport { FiltroListaComponent } from 'app/provedor/filtro-lista/filtro-lista.component';\nimport { ListaProvedorComponent } from 'app/provedor/lista-provedor/lista-provedor.component';\nimport { OrdenacaoProvedorComponent } from 'app/provedor/ordenacao-provedor/ordenacao-provedor.component';\nimport { ChaveNfeComponent } from 'app/provedor/vincular-nf/chave-nfe/chave-nfe.component';\n\nimport { AppService } from 'app/_services/app.service';\nimport { SharedService } from 'app/_services/shared.service';\nimport { MessageService } from 'app/_services/message.service';\nimport { GroupbyService } from 'app/_services/groupby.service';\nimport { OrdemServicoService } from 'app/_services/ordem-servico.service';\nimport { AnalyticsTela } from '../../_enums/analytics-tela';\nimport { AnalyticsService } from 'app/_services/analytics.service';\nimport { AnalyticsOperacao } from '../../_enums/analytics-operacao';\nimport { Operacao } from 'app/_enums/operacao';\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\n\n@Component({\n selector: 'vincular-nf',\n templateUrl: './vincular-nf.component.html',\n styleUrls: ['./vincular-nf.component.scss']\n})\n\nexport class VincularNfComponent extends BaseComponent implements OnInit {\n @ViewChild('botaoCancelar', {static: true}) botaoCancelar;\n @ViewChild(MessageComponent, {static: true}) mensagem: MessageComponent;\n @ViewChild(FiltroTopComponent, {static: true}) filtroTop: FiltroTopComponent;\n @ViewChild(FiltroListaComponent, {static: true}) filtroLista: FiltroListaComponent;\n @ViewChild(ListaProvedorComponent, {static: true}) listaProvedor: ListaProvedorComponent;\n @ViewChild(OrdenacaoProvedorComponent, {static: true}) ordenacaoProvedor: OrdenacaoProvedorComponent;\n @ViewChild(ChaveNfeComponent, {static: true}) chaveNfe: ChaveNfeComponent;\n\n loading = false;\n loadingChaves = false;\n loadingPortos = false;\n downloading: boolean = false;\n\n campoHabilitado = true;\n exibirAdicionar = true;\n exibirExcluir = true;\n\n exibirCte = true;\n exibirNfe = true;\n\n empty = true;\n noresult = false;\n\n portos: Porto[] = [];\n cnpjDigitado: string;\n\n eAdmin = this._appService.isAdmin();\n eCliente = this._appService.isCliente();\n maisDeUmCNPJ = this._appService.maisDeUmCNPJ();\n\n totais: FiltroListaItem[];\n\n filtroPesquisa: OrdemServicoRequest = new OrdemServicoRequest();\n ordemServicoVM: OrdemServicoVM = new OrdemServicoVM();\n\n exibirMensagemModal: boolean;\n textoMensagemModal: string;\n classeTipoMensagem: string;\n\n OS: OrdemServico = new OrdemServico();\n Nfe: CtmNf = new CtmNf();\n\n Ctes: string[] = [];\n Nfs: CtmNf[] = [];\n NfsToInsert: CtmNf[] = [];\n\n campoOrdenarPor: string = \"dhProgramacao\";\n camposOrdenacao = [\n { descricao: \"Ordem de Serviço\", id: \"numOs\" },\n { descricao: \"Fatura\", id: \"numFaturaOrdenacao\" },\n { descricao: \"Tipo de Serviço\", id: \"descTipoServico\" },\n { descricao: \"Navio / Viagem\", id: \"descNavioViagem\" },\n { descricao: \"Porto\", id: \"portoOriDes\" },\n { descricao: \"Emb / Dest\", id: \"nomeEmbDest\" },\n { descricao: \"Município\", id: \"municOriDes\" },\n { descricao: \"Data da Programação\", id: \"dhProgramacao\" },\n { descricao: \"Contêiner\", id: \"numContainer\" }\n ];\n\n constructor(\n private _ordemServicoService: OrdemServicoService,\n private _sharedService: SharedService,\n private _appService: AppService,\n private _messageService: MessageService,\n private _groupByService: GroupbyService,\n private _analyticsService: AnalyticsService) {\n super();\n\n this.totais = [\n FiltroListaItem.Create('step-pendentes', 'icon-clock', 'pendente', 'Pendente(s)', 0),\n FiltroListaItem.Create('step-a-vincular', 'icon-page-export', 'a vincular', 'A Vincular', 0),\n FiltroListaItem.Create('step-vinculadas', 'icon-check', 'vinculada', 'Vinculada(s)', 0),\n FiltroListaItem.Create('step-ctes-emitidos', 'icon-checklist', 'ct-e emitido', 'CT-e(s) Emitido(s)', 0)\n ];\n }\n\n ngOnInit() {\n this.filtroTop.classePrincipal = \"vincular-nfs\";\n this.filtroLista.classePrincipal = \"vincular-nfs\";\n this.listaProvedor.classePrincipal = \"vincular-nfs\";\n\n if (!this.eAdmin) {\n this.pesquisaInicial();\n }\n\n this.filtroTop.carregarFiltros.subscribe((filtro: OrdemServicoRequest) => {\n if (filtro) {\n this.pesquisar(filtro);\n }\n });\n\n this.listaProvedor.carregarFiltros.subscribe((filtro: OrdemServicoRequest) => {\n if (this.filtroPesquisa) {\n this.pesquisar(this.filtroPesquisa);\n }\n else {\n this.pesquisaInicial();\n }\n });\n\n // Exportar arquivo em formato CSV\n this.ordenacaoProvedor.exportarArquivo.subscribe((exportar: boolean) => {\n if (exportar) {\n this.exportarRelatorioCSV();\n }\n });\n\n // Ordenação da Lista do Tracking\n this.ordenacaoProvedor.ordenarLista.subscribe((campoDeOrdenacao: string) => {\n this.listaProvedor.obtemListaOrdensOrdenadaPorCampo(campoDeOrdenacao);\n });\n\n this.ordenacaoProvedor.quantidadePorPagina.subscribe((quantidadePorPagina: number) => {\n this.listaProvedor.setQuantidadeRegistrosPorPagina(quantidadePorPagina);\n });\n\n // Envia mensagens de erro conforme navegação e interação com a tela\n this._messageService.emitirMensagem.subscribe(msg => {\n this.mensagem.mostrarMensagem(msg.tipo, msg.mensagem);\n });\n\n this._analyticsService.RegistrarAcesso(AnalyticsTela.VincularNF);\n }\n\n pesquisaInicial(): void {\n this.filtroPesquisa.idUsuario = this._appService.UsuarioLogado.UsuarioIDeCargo;\n this.filtroPesquisa.cnpjProvedor = this._appService.UsuarioLogado.CNPJs.join(';');\n this.filtroPesquisa.dataFim = new Date();\n this.filtroPesquisa.dataIni = this._sharedService.addDays(this.filtroPesquisa.dataFim, -14);\n\n this.pesquisar(this.filtroPesquisa);\n }\n\n pesquisar(consulta: OrdemServicoRequest): void {\n var diasDiff = Math.floor((consulta.dataFim.valueOf() - consulta.dataIni.valueOf()) / (1000 * 60 * 60 * 24)) + 1;\n if (diasDiff > 31) {\n this._messageService.addMessage(\"Vincular NF\", \"O filtro por período não deve ser superior à 31 dias.\", \"error\", LogFrontFuncionalidade.VincularNF, Operacao.Consulta, consulta);\n return;\n }\n\n consulta.vincularNF = true;\n consulta.strTipoServico = '1'; // apenas transporte rodoviário.\n\n this.loading = true;\n this.filtroPesquisa = consulta;\n this.filtroTop.loading = true;\n this.filtroLista.zerarQuantidades();\n\n this._ordemServicoService.obtemOrdensDeServico(consulta, AnalyticsTela.VincularNF).subscribe(\n x => {\n if (x == null)\n return;\n\n this.ordemServicoVM = x;\n this.filtroTop.preencheTipos(x.TiposOS);\n this.filtroTop.preenchePortos(x.OSs);\n //this.filtroTop.filtrarNavioViagens(x.OSs);\n this.filtroTop.preencheNavioViagens(x.OSs);\n this.listaProvedor.carregaListaOrdens(x.OSs, this.campoOrdenarPor);\n this.listaProvedor.setTiposEventos(x.tiposEventosNF);\n this.filtroLista.carregaDadosEmComponente(x.tiposEventosNF);\n this.aplicarFiltro(this.filtroLista.stepAtivo);\n\n this.empty = false;\n this.noresult = (!this.ordemServicoVM.OSs || (this.ordemServicoVM.OSs.length === 0));\n },\n (errors) => {\n if (errors && errors.length > 0) {\n let mensagemAgrupada;\n errors.forEach(element => {\n mensagemAgrupada += element + '\\n';\n });\n\n this.exibirMensagem(mensagemAgrupada);\n }\n\n this.filtroTop.loading = false;\n this.loading = false;\n },\n () => {\n this.loading = false;\n this.filtroTop.loading = false;\n }\n );\n }\n\n ordenarPor(campoDeOrdenacao: string) {\n this.campoOrdenarPor = campoDeOrdenacao;\n this.listaProvedor.obtemListaOrdensOrdenadaPorCampo(campoDeOrdenacao);\n }\n\n exportarRelatorioCSV() {\n\n this.downloading = true;\n this._ordemServicoService.obtemOrdensDeServicoCSV(this.filtroPesquisa).subscribe(ordens => {\n this.downloading = false;\n this._ordemServicoService.exportarRelatorioCSV(ordens);\n });\n\n /*\n if (!this.listaProvedor.ordens || this.listaProvedor.ordens.length === 0) {\n return this.listaProvedor.ordens;\n };\n\n const data: any[] = [];\n const titulos: any[] = [\n 'OS',\n 'Tipo de OS',\n 'Fatura',\n 'Tipo de Serviço',\n 'Navio / Viagem',\n 'Origem/Destino',\n 'Embarcador/Destinatário',\n 'Município',\n 'Data da Programação',\n 'Contêiner',\n 'Status',\n 'Retirada do Terminal',\n 'Início de Execução',\n 'Fim de Execução',\n 'Entrega no Terminal',\n 'Status NF'\n ];\n\n this.listaProvedor.ordens.forEach(x => {\n var munic = (x.municOriDes) ? x.municOriDes.trim() + \"/\" + x.ufOriDes : \"\";\n data.push([\n x.numOs,\n x.tipo,\n x.numFatura,\n x.descTipoServico,\n x.descNavioViagem,\n x.portoOriDes,\n x.nomeEmbDest,\n munic,\n this._sharedService.formataDataCSV(x.dhProgramacao),\n x.numContainer,\n x.statusOs,\n this._sharedService.formataDataCSV(x.dtRetiradaTerminal),\n this._sharedService.formataDataCSV(x.dtInicioExecucao),\n this._sharedService.formataDataCSV(x.dtFimExecucao),\n this._sharedService.formataDataCSV(x.dtEntregaTerminal),\n x.statusPortal\n ]);\n });\n\n //this._ordemServicoService.exportarRelatorioCSV(data, titulos);\n */\n }\n\n aplicarFiltro(step: string) {\n var result = this._ordemServicoService.filtrarPorStep(this.ordemServicoVM.OSs, step);\n this.noresult = !result || result.length <= 0;\n\n this.listaProvedor.carregaListaOrdens(result, this.campoOrdenarPor);\n }\n\n vincularNF(OS: OrdemServico) {\n this.Nfe = new CtmNf();\n this.OS = OS;\n\n this.Ctes = [];\n this.Nfs = [];\n\n this.loadingChaves = true;\n this.ocultarMensagem();\n\n if (OS) {\n let filtro: OrdemServicoRequest = new OrdemServicoRequest();\n filtro.idOs = OS.idOs;\n filtro.idUsuario = this._appService.UsuarioLogado.UsuarioIDeCargo;\n filtro.cnpjProvedor = OS.cnpjProvedor;\n\n if (OS.statusPortal.toLowerCase() === 'a vincular') {\n this.exibirAdicionar = true;\n this.exibirExcluir = true;\n }\n else if (OS.statusPortal.toLowerCase() === 'vinculada' && OS.flagNFValidada.toUpperCase() === 'N') {\n this.exibirAdicionar = true;\n this.exibirExcluir = true;\n }\n else {\n this.exibirAdicionar = false;\n this.exibirExcluir = false;\n }\n\n this._ordemServicoService.obtemCtmNfs(filtro).subscribe(result => {\n if (!result || result.length <= 0) {\n this.Nfs = [];\n\n this.exibirCte = false;\n this.loadingChaves = false;\n }\n else {\n result.forEach(item => {\n let nfe: CtmNf = new CtmNf();\n this._sharedService.copyProperties(item, nfe);\n\n nfe.idUsuario = this._appService.UsuarioLogado.UsuarioIDeCargo;\n\n if (nfe) {\n this.Nfs.push(nfe);\n }\n });\n\n if (OS.flagPossuiCTe === 'S' || OS.flagPossuiCTM === 'S') {\n var groupedByCtm = this._groupByService.AgruparPorCampo(result, 'chaveCtm');\n if (!groupedByCtm || groupedByCtm.length <= 0) {\n this.exibirCte = false;\n }\n else {\n groupedByCtm.forEach((element: CtmNf) => {\n if (!element.chaveCtm || element.chaveCtm === '') {\n return;\n }\n\n this.Ctes.push(element.chaveCtm);\n });\n\n this.exibirCte = true;\n }\n }\n else {\n this.exibirCte = false;\n }\n\n if (this.Nfs.length > 0)\n this._analyticsService.RegistrarOperacao(AnalyticsTela.VincularNF, AnalyticsOperacao.VisualizacaoNF);\n if (this.Ctes.length > 0)\n this._analyticsService.RegistrarOperacao(AnalyticsTela.VincularNF, AnalyticsOperacao.VisualizacaoCTM);\n\n this.loadingChaves = false;\n }\n }, (errors) => {\n if (errors && errors.length > 0) {\n let mensagemAgrupada;\n errors.forEach(element => {\n mensagemAgrupada += element + '\\n';\n });\n\n this.exibirMensagem(mensagemAgrupada);\n }\n\n this.loadingChaves = false;\n });\n }\n }\n\n adicionar(): void {\n if (!this._ordemServicoService.validarNfe(this.Nfe)) {\n this.exibirMensagem(\"Chave informada inválida.\");\n return;\n }\n\n if (!this.NfsToInsert) {\n this.NfsToInsert = [];\n }\n\n if (this.Nfe && this.Nfs) {\n this.Nfe.idOs = this.OS.idOs;\n this.Nfe.idUsuario = this._appService.UsuarioLogado.UsuarioIDeCargo;\n this.Nfe.numContainer = this.OS.numContainer;\n this.Nfe.acao = 1;\n\n if (this.Nfs && !this.Nfs.find(nf => nf.chaveNfe === this.Nfe.chaveNfe)) {\n this.NfsToInsert.push(this.Nfe);\n this.Nfs.push(this.Nfe);\n }\n\n this.Nfe = new CtmNf();\n return;\n }\n else {\n this.exibirMensagem(\"A nota informada não foi encontrada ou a lista de notas não existe.\");\n return;\n }\n };\n\n excluir(nfe: CtmNf) {\n if (nfe) {\n if (!nfe.acao || nfe.acao !== 2) {\n let toInsertIndex = this.NfsToInsert.indexOf(nfe);\n let toInsert = this.NfsToInsert.find(nf => nf.chaveNfe === nfe.chaveNfe);\n let isToInsert = toInsert !== undefined && toInsert !== null;\n if (isToInsert && toInsertIndex > -1) {\n this.NfsToInsert.splice(toInsertIndex, 1);\n\n toInsertIndex = this.Nfs.indexOf(nfe);\n if (toInsertIndex > -1) {\n this.Nfs.splice(toInsertIndex, 1);\n }\n\n return;\n }\n\n nfe.idOs = this.OS.idOs;\n nfe.idUsuario = this._appService.UsuarioLogado.UsuarioIDeCargo;\n nfe.numContainer = this.OS.numContainer;\n nfe.acao = 2;\n }\n else {\n nfe.idUsuario = null;\n nfe.acao = null;\n }\n }\n else {\n this.exibirMensagem(\"Chave informada não encontrada ou inválida para esta operação.\");\n return;\n }\n }\n\n salvar() {\n if (this.Nfs && this.Nfs.length > 0) {\n this.loadingChaves = true;\n // this.Nfs.forEach(item => {\n // if (item.acao === 0) {\n // let itemIndex = this.Nfs.indexOf(item);\n // if (itemIndex > -1) {\n // this.Nfs.splice(itemIndex, 1);\n // }\n // }\n // });\n\n var houveAlteracao: boolean = false;\n this._analyticsService.RegistrarNFsVinculadas(this.Nfs);\n this._ordemServicoService.atualizarNotasFiscais(this.Nfs).subscribe(result => {\n this.Nfs.forEach(element => {\n if (element.acao === 2) {\n houveAlteracao = true;\n let itemIndex = this.Nfs.indexOf(element);\n if (itemIndex > -1) {\n this.Nfs.splice(itemIndex, 1);\n }\n }\n else if (element.acao === 1) {\n houveAlteracao = true;\n let elementIndex = this.NfsToInsert.indexOf(element);\n if (element && elementIndex > -1) {\n this.NfsToInsert.splice(elementIndex, 1);\n }\n\n element.acao = 0;\n }\n });\n\n this.loadingChaves = false;\n if (houveAlteracao)\n this._messageService.addMessage(\"Vincular NF\", \"Registro(s) alterado(s) com sucesso!\", \"success\");\n else\n this._messageService.addMessage(\"Vincular NF\", \"Nenhum dado alterado!\", \"warning\", LogFrontFuncionalidade.VincularNF, Operacao.Inclusao, this.Nfs);\n\n var acaoFecharModal = document.getElementById('botaoCancelar');\n if (acaoFecharModal) {\n acaoFecharModal.click();\n if (this.filtroPesquisa) {\n this.pesquisar(this.filtroPesquisa);\n }\n }\n }, (errors) => {\n if (errors && errors.length > 0) {\n let mensagemAgrupada = '';\n errors.forEach(element => {\n mensagemAgrupada += element.Message + '\\n';\n });\n\n this.exibirMensagem(mensagemAgrupada);\n }\n\n this.loadingChaves = false;\n });\n }\n else {\n this.exibirMensagem(\"Nenhuma chave selecionada para ser salva.\");\n return;\n }\n }\n\n exibirMensagem(texto: string, tipo: string = null) {\n if (texto && texto !== undefined && texto !== null && texto !== '') {\n this.textoMensagemModal = texto;\n this.exibirMensagemModal = true;\n this.classeTipoMensagem = tipo || 'danger';\n\n var element = document.getElementById('mensagemModal');\n if (element) {\n element.focus();\n }\n }\n }\n\n ocultarMensagem() {\n if (this.exibirMensagemModal) {\n this.textoMensagemModal = null;\n this.exibirMensagemModal = false;\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { ModalModule } from 'ngx-bootstrap/modal';\nimport { SharedModule } from 'app/shared/shared.module';\nimport { DatePickerModule } from \"app/shared/ng2-datepicker/ng2-datepicker.module\";\nimport { MultiselectDropdownModule } from './../../shared/multiselect-dropdown/multiselect-dropdown.module';\nimport { ProvedorModule } from 'app/provedor/provedor.module';\n\nimport { DatepickerService } from 'app/_services/datepicker.service';\nimport { MessageService } from 'app/_services/message.service';\n\nimport { VincularNfComponent } from './vincular-nf.component';\nimport { ChaveNfeComponent } from './chave-nfe/chave-nfe.component';\nimport { ChaveCteComponent } from './chave-cte/chave-cte.component';\nimport { VincularNfRoutingModule } from './vincular-nf.routing.module';\nimport { GroupbyService } from 'app/_services/groupby.service';\nimport { OrdemServicoService } from 'app/_services/ordem-servico.service';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n DatePickerModule,\n MultiselectDropdownModule,\n ModalModule.forRoot(),\n SharedModule,\n ProvedorModule,\n VincularNfRoutingModule\n ],\n declarations: [\n VincularNfComponent,\n ChaveNfeComponent,\n ChaveCteComponent\n ],\n exports: [\n SharedModule,\n ProvedorModule,\n ChaveNfeComponent,\n ChaveCteComponent\n ],\n providers: [\n OrdemServicoService,\n DatepickerService,\n MessageService,\n GroupbyService\n ]\n})\n\nexport class VincularNfModule { }\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { AuthGuard } from 'app/_guards/auth.guard';\nimport { VincularNfComponent } from './vincular-nf.component';\n\nconst vincularNfRoutes: Routes = [\n { path: '', component: VincularNfComponent, canActivate: [AuthGuard] }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(vincularNfRoutes)],\n exports: [RouterModule]\n})\nexport class VincularNfRoutingModule {}","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport swal from 'sweetalert2';\n\nimport { Usuario } from 'app/_models/usuario';\nimport { AlterarSenha } from './../../_models/alterar-senha';\n\nimport { MessageService } from './../../_services/message.service';\nimport { AuthenticationService } from './../../_services/authentication.service';\n\nimport { MessageComponent } from './../../shared/message/message.component';\nimport { BaseComponent } from './../../shared/base.component';\n\nimport { Operacao } from 'app/_enums/operacao';\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\nimport { SenhaNaoEConfirmacao } from './validator/senha-igual-confirmacao.validator';\n\ndeclare var removeSwal: any;\n\n@Component({\n selector: 'app-cadastrar-senha',\n templateUrl: './cadastrar-senha.component.html',\n styleUrls: ['./cadastrar-senha.component.scss']\n})\nexport class CadastrarSenhaComponent extends BaseComponent implements OnInit {\n inscricaoParam: Subscription;\n\n mensagem: string = \"\";\n loading: boolean = false;\n\n form: FormGroup\n @ViewChild(MessageComponent, {static: true}) alerta: MessageComponent;\n\n constructor(private _route: ActivatedRoute,\n private _authenticationService: AuthenticationService,\n private _msgService: MessageService,\n private _router: Router,\n private _formBuilder: FormBuilder) {\n\n super();\n\n this._msgService.emitirMensagem.subscribe(\n msg => {\n this.alerta.mostrarMensagem(msg.tipo, msg.mensagem);\n }\n );\n\n }\n\n ngOnInit() {\n this.form = this._formBuilder.group({\n ID : [],\n Email : [\"\",[Validators.required,Validators.email]],\n Senha : [\"\",[Validators.required,Validators.minLength(8),Validators.pattern(\"[^\\w\\d]*(([0-9]+.*[A-Za-z]+.*)|[A-Za-z]+.*([0-9]+.*))\")]],\n ConfirmaSenha : [\"\",[Validators.required]],\n }, {validator:SenhaNaoEConfirmacao});\n\n this.loading = true;\n this.inscricaoParam = this._route.params.subscribe(\n (params: any) => {\n var id = params['id']\n this.form.controls.ID.setValue(id);\n var cadastro = new AlterarSenha();\n cadastro.ID = id;\n cadastro.Email = \"\";\n this._authenticationService.ObterEmail(cadastro)\n .subscribe(result => {\n this.loading = false;\n if (result.IsValid) {\n var user = result.Data as Usuario;\n this.form.controls.Email.setValue(user.Email);\n }\n else\n this.form.controls.Email.setValue(\"\");\n });\n }\n\n\n );\n }\n\n Enviar() {\n this.loading = true;\n this._msgService.clearMessage();\n var alterarSenha = this.form.getRawValue() as AlterarSenha;\n this._authenticationService.CadastrarSenha(alterarSenha)\n .subscribe(result => {\n this.loading = false;\n if (result.IsValid) {\n removeSwal();\n this._msgService.clearMessage();\n swal({\n title: 'Bem Vindo ao Portal Cabotagem',\n html: 'Senha cadastrada com sucesso!

    Clique aqui para assistir os tutoriais e conhecer melhor o Portal Cabotagem',\n type: 'success',\n showConfirmButton: true,\n showCancelButton: false,\n confirmButtonText: 'OK'\n }).then(success => {\n this._router.navigate(['/home']);\n }, dismiss => {\n // console.log(dismiss);\n });\n\n // this._msgService.addMessageRedirect('Usuario', result.Message, \"success\");\n // this._router.navigate(['/home']);\n }\n else {\n var err: string[] = [];\n result.Erros.forEach(e => err.push(e.Message));\n this._msgService.addMessageArray('CadastroSenha', err, 'danger', LogFrontFuncionalidade.ResetSenha, Operacao.Consulta, alterarSenha);\n //result.Erros.forEach(element => this._msgService.addMessage('Usuario', element.Message, \"error\"));\n }\n });\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { CadastrarSenhaComponent } from './cadastrar-senha.component';\nimport { CadastrarSenhaRoutingModule } from './cadastrar-senha.routing.module';\nimport { SharedModule } from 'app/shared/shared.module';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n SharedModule,\n CadastrarSenhaRoutingModule,\n ReactiveFormsModule\n ],\n exports: [],\n declarations: [ CadastrarSenhaComponent ],\n providers: [],\n})\nexport class CadastrarSenhaModule { }\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { CadastrarSenhaComponent } from './cadastrar-senha.component';\n\nconst cadastrarSenhaRoutes: Routes = [\n { path: ':id', component: CadastrarSenhaComponent }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(cadastrarSenhaRoutes)],\n exports: [RouterModule]\n})\nexport class CadastrarSenhaRoutingModule {}","import { ValidatorFn, FormGroup } from '@angular/forms';\n\nexport const SenhaNaoEConfirmacao: ValidatorFn = (form: FormGroup) => {\n if(!form.get(\"Senha\").value || !form.get(\"ConfirmaSenha\").value)\n return null;\n return form.get(\"Senha\").value !== form.get(\"ConfirmaSenha\").value ? {SenhaNaoEConfirmacao:\"A senha é diferente da de confirmação\"} : null;\n};\n","\nimport {map} from 'rxjs/operators';\nimport { Component, OnInit, ViewChild } from '@angular/core';\nimport { Response, ResponseType } from '@angular/http';\nimport { NgForm } from \"@angular/forms\";\nimport { Router } from '@angular/router';\n\nimport swal from 'sweetalert2';\n\nimport { Assunto } from './../../_models/assunto';\nimport { FaleConosco } from './../../_models/faleconosco';\nimport { ValidationResult } from './../../_models/validation-result';\n\nimport { AppService } from './../../_services/app.service';\nimport { BaseService } from './../../_services/base.service';\nimport { MessageService } from './../../_services/message.service';\nimport { SharedService } from 'app/_services/shared.service';\n\nimport { BaseComponent } from './../../shared/base.component';\nimport { MessageComponent } from './../../shared/message/message.component';\n\nimport { Operacao } from 'app/_enums/operacao';\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\n\n@Component({\n selector: 'app-fale-conosco',\n templateUrl: './fale-conosco.component.html',\n styleUrls: ['./fale-conosco.component.scss'],\n providers: [BaseService, MessageService]\n})\n\nexport class FaleConoscoComponent extends BaseComponent implements OnInit {\n\n @ViewChild(MessageComponent, {static: true}) mensagem: MessageComponent;\n\n faleConosco: FaleConosco = new FaleConosco();\n //public assunto: Assunto;\n assuntoSelecionado: number;\n assuntos: Assunto[];\n emailfaleconosco: String;\n result: ValidationResult;\n error = '';\n loading: boolean = false;\n loadingAssuntos: boolean = false;\n\n constructor(private router: Router,\n private baseService: BaseService,\n private msgService: MessageService,\n private sharedService: SharedService,\n private appService: AppService) {\n\n super ();\n\n this.msgService.emitirMensagem.subscribe(\n msg => {\n this.mensagem.mostrarMensagem(msg.tipo, msg.mensagem);\n }\n );\n }\n\n ngOnInit() {\n //Preenche combo com assuntos\n this.ObterAssuntos();\n this.ObterEmailFaleCom();\n\n //Se tem usuário logado, preenche campos de identificação\n if (this.appService.isAuthenticated()) {\n this.faleConosco.Nome = this.appService.UsuarioLogado.Nome;\n this.faleConosco.Email = this.appService.UsuarioLogado.Email;\n this.faleConosco.Telefone = this.appService.UsuarioLogado.Telefone;\n }\n }\n\n public ObterAssuntos() {\n this.loadingAssuntos = true;\n //Busca Assuntos na API e preenche combo com assuntos cadastradas da base\n this.baseService.Get('faleconosco/assuntos').pipe(map((response: ValidationResult) => {\n let retorno: ValidationResult = response;\n if (retorno.IsValid) {\n this.assuntos = retorno.Data as Assunto[];\n this.loadingAssuntos = false;\n }\n })).subscribe();\n }\n\n public ObterEmailFaleCom() {\n let retorno = this.baseService.Get('faleconosco/emailfalecom').pipe(map((response: String) => {\n this.emailfaleconosco = response})).subscribe();\n }\n\n public IncluirFaleConosco(myForm: NgForm) {\n this.msgService.clearMessage();\n\n if ((this.assuntoSelecionado == 0) || (this.assuntoSelecionado == undefined)) {\n this.msgService.addMessage('Fale Conosco', \"Informe o Assunto!\", 'error', LogFrontFuncionalidade.FaleConosco, Operacao.Inclusao, this.assuntoSelecionado);\n return;\n }\n\n if (!this.sharedService.validaTelefone(this.faleConosco.Telefone)) {\n this.msgService.addMessage('Fale Conosco', 'Telefone inválido', 'danger', LogFrontFuncionalidade.FaleConosco, Operacao.Inclusao, this.faleConosco.Telefone);\n return;\n }\n\n //Chama API para inclusão dos dados na base e envio do email\n this.loading = true;\n this.baseService.Post('faleconosco', {\n Nome: this.faleConosco.Nome,\n Email: this.faleConosco.Email,\n Telefone: this.faleConosco.Telefone.toString(),\n Mensagem: this.faleConosco.Mensagem,\n Assunto: { AssuntoID: this.assuntoSelecionado }\n })\n .subscribe(result => {\n this.error = '';\n let retorno: ValidationResult = result;\n if (retorno.IsValid) {\n if (!this.appService.isAuthenticated()) {\n this.faleConosco = new FaleConosco();\n myForm.controls[\"telefone\"].setValue(\"\");\n }\n\n //this.assunto = null;\n this.assuntoSelecionado = null;\n this.faleConosco.Mensagem = \"\";\n\n myForm.form.markAsPristine();\n myForm.form.markAsUntouched();\n\n swal({\n title: 'Sucesso',\n text: \"Mensagem enviada com sucesso!\",\n type: 'success',\n showConfirmButton: true,\n showCancelButton: false,\n confirmButtonText: 'OK'\n }).then(success => {\n //this._router.navigate(['/home']);\n }, dismiss => {\n // console.log(dismiss);\n });\n }\n else {\n var erros: string[] = [];\n retorno.Erros.forEach(element => {\n erros.push(element.ErrorCode + \" - \" + element.Message);\n });\n this.msgService.addMessageArray('Fale Conosco', erros, 'error', LogFrontFuncionalidade.FaleConosco, Operacao.Inclusao,\n {\n Nome: this.faleConosco.Nome,\n Email: this.faleConosco.Email,\n Telefone: this.faleConosco.Telefone.toString(),\n Mensagem: this.faleConosco.Mensagem,\n Assunto: { AssuntoID: this.assuntoSelecionado }\n });\n }\n\n this.loading = false;\n },\n err => {\n this.error = err;\n this.loading = false;\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FaleConoscoComponent } from './fale-conosco.component';\nimport { FaleConoscoRoutingModule } from './fale-conosco.routing.module';\nimport { FormsModule } from '@angular/forms';\nimport { SharedModule } from 'app/shared/shared.module';\n\n\n\n@NgModule({\n imports: [ \n CommonModule, \n FormsModule, \n SharedModule,\n FaleConoscoRoutingModule ],\n exports: [],\n declarations: [ FaleConoscoComponent ],\n providers: [],\n})\nexport class FaleConoscoModule { }","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { FaleConoscoComponent } from './fale-conosco.component';\n\nconst faleConoscoRoutes: Routes = [\n { path: '', component: FaleConoscoComponent }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(faleConoscoRoutes)],\n exports: [RouterModule]\n})\nexport class FaleConoscoRoutingModule {}","import { Component, OnInit, ViewChild, ElementRef, AfterViewInit } from '@angular/core';\nimport { CarouselConfig, CarouselComponent } from 'ngx-bootstrap/carousel';\nimport { AnalyticsService } from 'app/_services/analytics.service';\nimport { AnalyticsTela } from 'app/_enums/analytics-tela';\nimport { AnalyticsDownload } from '../../_enums/analytics-download';\n\ndeclare var carregaControleMenu: any;\n\n@Component({\n selector: 'app-home',\n templateUrl: './home.component.html',\n styleUrls: ['./home.component.scss'],\n providers: [{ provide: CarouselConfig, useValue: { interval: 4000, noPause: true } }]\n})\nexport class HomeComponent implements OnInit, AfterViewInit {\n\n modal: boolean = false;\n path: string = 'home';\n\n @ViewChild('carousel', {static: true}) carousel: CarouselComponent;\n\n\n constructor(private _analyticsService: AnalyticsService) { }\n\n ngAfterViewInit(): void {\n }\n\n nextSlide(){\n this.carousel.activeSlide = 0;\n this.carousel.interval = 6000;\n }\n\n setSlide(val) {\n this.carousel.interval = 6000;\n }\n\n ngOnInit() {\n carregaControleMenu();\n this._analyticsService.RegistrarAcesso(AnalyticsTela.Home);\n }\n\n downloadManual(){\n this._analyticsService.RegistrarDownload(AnalyticsTela.Home, AnalyticsDownload.Manual);\n }\n\n acessoLink(numeroLink: number){\n this._analyticsService.RegistrarAcessoLinkHome(numeroLink);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { HomeComponent } from './home.component';\nimport { CarouselModule } from 'ngx-bootstrap/carousel';\nimport { HomeRoutingModule } from './home.routing.module';\n\n\n@NgModule({\n imports: [\n CommonModule,\n CarouselModule.forRoot(),\n HomeRoutingModule\n ],\n exports: [],\n declarations: [ HomeComponent ],\n providers: [],\n})\nexport class HomeModule { \n}","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { HomeComponent } from './home.component';\n\nconst homeRoutes: Routes = [\n { path: '', component: HomeComponent }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(homeRoutes)],\n exports: [RouterModule]\n})\nexport class HomeRoutingModule {}","import { LogService } from './../../_services/log.service';\nimport { Component, OnInit, ViewChild, Input } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { AuthenticationService } from '../../_services/authentication.service';\nimport { AppService } from 'app/_services/app.service';\nimport { Login } from '../../_models/login';\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\nimport { Operacao } from 'app/_enums/operacao';\n\ndeclare var ocultarControleMenu: any;\n\n@Component({\n selector: 'app-login-modal',\n templateUrl: './login-modal.component.html',\n styleUrls: ['./login-modal.component.scss'],\n exportAs: 'child'\n})\nexport class LoginModalComponent implements OnInit {\n\n tokenExpirado: boolean = false;\n labelLinkResetSenha: string = 'Esqueci minha senha';\n\n constructor(\n private router: Router,\n private authenticationService: AuthenticationService,\n private _appService: AppService,\n private _logService: LogService) { }\n\n ngOnInit() {\n this.authenticationService.emitirModal.subscribe(\n modal => this.showModal(modal)\n );\n }\n\n @ViewChild('lgModal', {static: true}) lgModal;\n\n public showModal(modal): void {\n if (modal) {\n //this.tokenExpirado = this.authenticationService.tokenExpirado;\n this.tokenExpirado = this._appService.tokenExpirado;\n this.lgModal.show();\n }\n else\n this.lgModal.hide();\n }\n\n public login: Login = new Login();\n error = '';\n loading = false;\n\n efetuarLogin() {\n this.loading = true;\n this.authenticationService.login(this.login)\n .subscribe(result => {\n this.error = '';\n if (result.IsValid) {\n this.login = new Login();\n this.authenticationService.hideModal();\n\n let usuario = this._appService.UsuarioLogado;\n let descricaoPerfis = [\"Cliente Master\", \"Cliente Tracking\", \"Cliente Booking e Rastreamento\", \"Cliente Financeiro Operacional\"];\n if (descricaoPerfis.some(perfil => perfil === usuario.Perfil.Descricao))\n this.router.navigate(['/rastreamento']);\n else\n this.router.navigate(['/home']);\n\n\n this._appService.tokenExpirado = false;\n ocultarControleMenu();\n } else {\n this.error = result.Erros[0].ErrorCode + ' ' + result.Erros[0].Message;\n this.labelLinkResetSenha = (result.Erros[0].Message == 'Senha expirada') ? 'Clique aqui para Trocar / Reativar sua senha' : 'Esqueci minha senha';\n this._appService.tokenExpirado = true;\n this._logService.logFront(this.login.username, LogFrontFuncionalidade.Login, this.error, Operacao.Login, \"LOGIN\");\n }\n this.loading = false;\n },\n err => {\n this.error = err;\n this.loading = false;\n });\n }\n\n ResetSenha() {\n this.authenticationService.hideModal();\n this.router.navigate(['/resetsenha']);\n }\n}\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport 'moment/locale/pt-br';\nimport { DateModel } from \"app/shared/ng2-datepicker/ng2-datepicker.component\";\nimport { DatePickerOptions } from \"app/shared/ng2-datepicker/ng2-datepicker.component\";\nimport { IMultiSelectOption, IMultiSelectSettings, IMultiSelectTexts } from './../../shared/multiselect-dropdown/multiselect-dropdown.component';\n\nimport { Porto } from './../../_models/porto';\nimport { Schedule } from './../../_models/schedule';\nimport { Transbordo } from './../../_models/transbordo';\nimport { ScheduleRequest } from './../../_models/schedule-request';\nimport { AnalyticsDownload } from './../../_enums/analytics-download';\n\nimport { BaseComponent } from './../../shared/base.component';\nimport { MessageComponent } from './../../shared/message/message.component';\nimport { PaginacaoComponent } from './../../shared/paginacao/paginacao.component';\n\nimport { SharedService } from './../../_services/shared.service';\nimport { MessageService } from './../../_services/message.service';\nimport { ParametroService } from 'app/_services/parametro.service';\nimport { DatepickerService } from '../../_services/datepicker.service';\nimport { ProgramacaoNaviosService } from './../../_services/programacao-navios.service';\nimport { AnalyticsService } from 'app/_services/analytics.service';\nimport { AnalyticsTela } from 'app/_enums/analytics-tela';\n\n@Component({\n selector: 'app-programacao-navios',\n templateUrl: './programacao-navios.component.html',\n styleUrls: ['./programacao-navios.component.scss']\n})\nexport class ProgramacaoNaviosComponent extends BaseComponent implements OnInit {\n\n programacao: Schedule[] = [];\n optionsModel: number[];\n tipoPeriodo: string;\n portosOrigem: number[];\n portosDestino: number[];\n dataFiltro: Date;\n dataInicio: Date;\n dataFim: Date;\n selectedDate: DateModel;\n options: DatePickerOptions;\n portos: Porto[];\n loading: boolean = false;\n loadingPortos: boolean = false;\n empty: boolean = true;\n noresult: boolean = false;\n pageSize: number = 20;\n qtdeHorasAgendamentoPO: number = 0;\n urlDownloadSchedulePDF: string = \"\";\n\n @ViewChild(PaginacaoComponent, {static: true}) paginacao: PaginacaoComponent;\n\n myTexts: IMultiSelectTexts = {\n checkAll: 'Marcar Todas',\n uncheckAll: 'Desmarcar Todas',\n checked: 'marcado',\n checkedPlural: 'marcados',\n searchPlaceholder: 'Pesquisar...',\n defaultTitle: 'Selecione',\n allSelected: 'Todos selecionados',\n };\n\n //Labels\n myOptions: IMultiSelectOption[] = [];\n\n mySettings: IMultiSelectSettings = {\n pullRight: false,\n enableSearch: false,\n checkedStyle: 'glyphicon',\n buttonClasses: 'btn btn-default btn-secondary',\n selectionLimit: 0,\n closeOnSelect: false,\n autoUnselect: false,\n showCheckAll: true,\n showUncheckAll: true,\n fixedTitle: false,\n dynamicTitleMaxItems: 2,\n maxHeight: '300px',\n };\n\n @ViewChild(MessageComponent, {static: true}) mensagem: MessageComponent;\n\n constructor(private _programacaoService: ProgramacaoNaviosService,\n protected _router: Router,\n private _sharedService: SharedService,\n private _datePickerService: DatepickerService,\n private _msgService: MessageService,\n private _parametroService: ParametroService,\n private _analyticsService: AnalyticsService) {\n\n super();\n\n this.tipoPeriodo = 'embarque';\n this.options = _datePickerService.GenerateOptionsConfig(new Date());\n\n this._msgService.emitirMensagem.subscribe(\n msg => {\n if (msg.mensagem instanceof Array)\n this.mensagem.mostrarMensagemArray(msg.tipo, msg.mensagem);\n else\n this.mensagem.mostrarMensagem(msg.tipo, msg.mensagem);\n }\n );\n }\n\n ngOnInit() {\n this.ObterPortos();\n this.ObterParametroQtdeHoras();\n this.ObterPDF();\n this._analyticsService.RegistrarAcesso(AnalyticsTela.ProgramacaoNavios);\n }\n\n private ObterPDF(){\n this._parametroService.obtemParametroPorCodigo(\"PDF_SCHEDULE\")\n .subscribe(m => {\n this.urlDownloadSchedulePDF = m.Valor;\n });\n }\n\n public ObterPortos() {\n this.loadingPortos = true;\n this._sharedService.getPortos()\n .subscribe(m => {\n this.portos = m;\n if (this.portos != null) {\n this.portos.forEach(porto => {\n this.myOptions.push({ id: porto.Codigo, name: porto.Descricao });\n });\n }\n this.loadingPortos = false;\n });\n }\n\n ObterParametroQtdeHoras() {\n //this.loadingParametro = true;\n this._parametroService.obterParametrosPortoPadrao()\n .subscribe(p => {\n // this.loadingParametro = false;\n this.qtdeHorasAgendamentoPO = p.QtdHrAgendColetaPO;\n });\n }\n\n BuscarProgramacao() {\n this._msgService.clearMessage();\n\n let filtro: ScheduleRequest;\n filtro = new ScheduleRequest();\n filtro.servico = 'ALCT';\n\n if (this.portosOrigem != undefined && this.portosOrigem.length > 0)\n filtro.idsPortoOrigem = this.portosOrigem.join(';');\n if (this.portosDestino != undefined && this.portosDestino.length > 0)\n filtro.idsPortoDestino = this.portosDestino.join(';');\n\n this.dataFiltro = this._datePickerService.ObtemData(this.selectedDate);\n\n filtro.tipoPeriodo = this.tipoPeriodo.toUpperCase();\n //filtro.dataInicio = (filtro.tipoPeriodo == \"EMBARQUE\") ? this.dataFiltro : undefined;\n //filtro.dataFim = (filtro.tipoPeriodo == \"DESEMBARQUE\") ? this.dataFiltro : undefined;\n //filtro.dataFim = this._sharedService.addDays(this.dataFiltro, 30);\n\n //Chegada Até (desembarque)\n if (this.tipoPeriodo == \"desembarque\") {\n filtro.dataInicio = this._sharedService.addDays(this.dataFiltro, -30);\n filtro.dataFim = this.dataFiltro;\n }\n //A partir (embarque)\n else {\n filtro.dataInicio = this.dataFiltro;\n filtro.dataFim = this._sharedService.addDays(this.dataFiltro, 30);\n }\n\n this.loading = true;\n this._analyticsService.RegistrarFiltroSchedule(filtro);\n this._programacaoService.getSchedule(filtro)\n .subscribe(p => {\n this.programacao = p;\n this.setOrder('dhPrevSaidaPortoOrigem');\n this.loading = false;\n this.empty = false;\n });\n }\n\n obterTransbordosSchedule(schedule: Schedule): Transbordo[]{\n return (schedule.Transbordos && schedule.Transbordos.length > 4) ? schedule.Transbordos.slice(0, 4) : schedule.Transbordos;\n }\n\n setPageSize(value: number) {\n this.pageSize = value;\n //if (this.paginacao != )\n this.paginacao.setAllData(this.programacao);\n this.paginacao.setPageSize(this.pageSize);\n this.paginacao.setPage(1);\n }\n\n setOrder(value: string) {\n if ((this.programacao != null) && (this.programacao != undefined)) {\n var array = this.programacao.sort(function (a, b) {\n if (!value) {\n return a > b ? 1 : -1;\n }\n return a[value] > b[value] ? 1 : -1;\n });\n\n this.programacao = array;\n this.paginacao.setAllData(this.programacao);\n this.paginacao.setPageSize(this.pageSize);\n this.paginacao.setPage(1);\n this.noresult = (this.programacao.length == 0);\n }\n else\n this.noresult = true;\n }\n\n downloadProgramacaoCompleta(){\n this._analyticsService.RegistrarDownload(AnalyticsTela.ProgramacaoNavios, AnalyticsDownload.ProgramacaoCompleta);\n }\n\n GerarCSV() {\n this._analyticsService.RegistrarDownload(AnalyticsTela.ProgramacaoNavios, AnalyticsDownload.ExportacaoCSV);\n this._programacaoService.DownloadCSV(this.programacao);\n }\n\n exibeSolicitarBooking(dataDeadline: Date) {\n var dataCorrigida: Date = this._sharedService.corrigeData(dataDeadline);\n var dataRef = this._sharedService.addHours(new Date(), this.qtdeHorasAgendamentoPO);\n return (dataRef <= dataCorrigida);\n }\n}\n","import { DatePickerModule } from 'app/shared/ng2-datepicker/ng2-datepicker.module';\nimport { SharedModule } from './../../shared/shared.module';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { RouterModule } from \"@angular/router\";\n\nimport { ProgramacaoNaviosComponent } from './programacao-navios.component';\nimport { MultiselectDropdownModule } from './../../shared/multiselect-dropdown/multiselect-dropdown.module';\nimport { ProgramacaoNaviosRoutingModule } from './programacao-navios.routing.module';\nimport { ProgramacaoNaviosService } from 'app/_services/programacao-navios.service';\nimport { DatepickerService } from 'app/_services/datepicker.service';\nimport { ParametroService } from 'app/_services/parametro.service';\n\n@NgModule({\n imports: [\n RouterModule,\n CommonModule,\n FormsModule,\n MultiselectDropdownModule,\n DatePickerModule,\n PopoverModule,\n SharedModule,\n ProgramacaoNaviosRoutingModule\n ],\n exports: [],\n declarations: [\n ProgramacaoNaviosComponent\n ],\n providers: [\n ProgramacaoNaviosService, \n DatepickerService,\n ParametroService\n ],\n})\nexport class ProgramacaoNaviosModule {\n\n\n}\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { ProgramacaoNaviosComponent } from './programacao-navios.component';\n\nconst programacaoNaviosRoutes: Routes = [\n { path: '', component: ProgramacaoNaviosComponent }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(programacaoNaviosRoutes)],\n exports: [RouterModule]\n})\nexport class ProgramacaoNaviosRoutingModule {}","import { Component, OnInit, ViewChild, ChangeDetectorRef } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { FormGroup } from \"@angular/forms\";\n\nimport { BaseComponent } from './../../shared/base.component';\nimport { MessageComponent } from './../../shared/message/message.component';\n\nimport { Municipio } from './../../_models/municipio';\nimport { PerfilUsuario } from \"app/_enums/perfil-usuario.enum\";\nimport { UsuarioRegistrar } from './../../_models/usuarioregistrar';\nimport { ValidationResult } from './../../_models/validation-result';\n\nimport { BaseService } from './../../_services/base.service';\nimport { SharedService } from 'app/_services/shared.service';\nimport { MessageService } from './../../_services/message.service';\n\nimport swal from 'sweetalert2';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { Operacao } from 'app/_enums/operacao';\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\ndeclare var ocultarControleMenu: any;\ndeclare var ocultarSwalOverlay: any;\ndeclare var removeSwal: any;\n\n@Component({\n selector: 'app-registrar',\n templateUrl: './registrar.component.html',\n styleUrls: ['./registrar.component.scss']\n})\nexport class RegistrarComponent extends BaseComponent implements OnInit {\n\n public usuario: UsuarioRegistrar = new UsuarioRegistrar();\n public loading = false;\n public loadingMunicipios = false;\n public aceitouTermo = false;\n municipio: Municipio;\n municipios: Municipio[] = [];\n\n @ViewChild(MessageComponent, {static: true}) mensagem: MessageComponent;\n\n constructor(private msgService: MessageService, private baseService: BaseService,\n private _router: Router,\n private _sharedService: SharedService,\n private _sanitizer: DomSanitizer,\n private _changeDetect: ChangeDetectorRef) {\n\n super();\n\n this.usuario.Cliente = false;\n this.usuario.Provedor = false;\n\n this.msgService.emitirMensagem.subscribe(\n msg => {\n if (msg.mensagem instanceof Array)\n this.mensagem.mostrarMensagemArray(msg.tipo, msg.mensagem);\n else\n this.mensagem.mostrarMensagem(msg.tipo, msg.mensagem);\n }\n );\n }\n\n autocompleListFormatter = (data: any) => {\n let html = `${data.Descricao}/${data.UF}`;\n return this._sanitizer.bypassSecurityTrustHtml(html);\n }\n ngOnInit() {\n ocultarControleMenu();\n this.ObterMunicipios();\n }\n\n public ObterMunicipios() {\n this.loadingMunicipios = true;\n this._sharedService.getMunicipios()\n .subscribe(m => {\n this.municipios = m;\n\n this.loadingMunicipios = false;\n });\n }\n\n public Enviar(form: FormGroup) {\n this.msgService.clearMessage();\n\n if (!this.validaFormulario())\n return;\n\n this.usuario.DataAceiteTermo = new Date();\n this.usuario.PerfilUsuario = (this.usuario.Cliente && this.usuario.Provedor) ? PerfilUsuario.Ambos :\n (this.usuario.Cliente ? PerfilUsuario.Cliente : PerfilUsuario.Provedor);\n\n this.loading = true;\n\n this.baseService.Post('usuario/registrar', this.usuario).subscribe(result => {\n this.loading = false;\n let retorno: ValidationResult = result as ValidationResult;\n if (retorno.IsValid) {\n removeSwal();\n swal({\n title: 'Sucesso',\n text: retorno.Message,\n type: 'success',\n showConfirmButton: true,\n showCancelButton: false,\n confirmButtonText: 'OK'\n }).then(success => {\n this._router.navigate(['/home']);\n ocultarControleMenu();\n ocultarSwalOverlay();\n }, dismiss => {\n removeSwal();\n });\n }\n else {\n this.loading = false;\n retorno.Erros.forEach(element => this.msgService.addMessage('Registro Usuário', element.Message, \"error\"));\n }\n },\n err => {\n this.loading = false;\n this.msgService.addMessage('Registro Usuário', err, \"error\");\n });\n }\n\n validaFormulario(): boolean {\n this._changeDetect.detectChanges();\n\n let msgErro: string[] = [];\n\n //cliente e/ou provedor\n if (!this.usuario.Cliente && !this.usuario.Provedor)\n msgErro.push('Informe se é Cliente, Provedor ou ambos');\n\n //Nome\n if (!this.usuario.Nome || this.usuario.Nome == \"\" || this.usuario.Nome.trim() == \"\")\n msgErro.push('Nome é obrigatório');\n\n //Email\n if (!this.usuario.Email || this.usuario.Email == \"\" || this.usuario.Email.trim() == \"\")\n msgErro.push('Email é obrigatório');\n else\n this.usuario.Email = this.usuario.Email.toLowerCase();\n\n //Razão Social\n if (!this.usuario.RazaoSocial || this.usuario.RazaoSocial == \"\" || this.usuario.RazaoSocial.trim() == \"\")\n msgErro.push('Razão Social é obrigatória');\n\n //Nome Fantasia\n if (!this.usuario.NomeFantasia || this.usuario.NomeFantasia == \"\" || this.usuario.NomeFantasia.trim() == \"\")\n msgErro.push('Nome Fantasia é obrigatório');\n\n //CNPJ\n if (!this.usuario.CNPJ || this.usuario.CNPJ == \"\" || this.usuario.CNPJ.trim() == \"\")\n msgErro.push('CNPJ é obrigatório');\n\n //Inscrição Estadual\n if (!this.usuario.InscricaoEstadual || this.usuario.InscricaoEstadual == \"\" || this.usuario.InscricaoEstadual.trim() == \"\")\n msgErro.push('Inscrição Estadual é obrigatória');\n\n //CEP\n if (!this._sharedService.validaCEP(this.usuario.CEP))\n msgErro.push('CEP inválido');\n\n //Logradouro\n if (!this.usuario.Logradouro || this.usuario.Logradouro == \"\" || this.usuario.Logradouro.trim() == \"\")\n msgErro.push('Logradouro é obrigatório');\n\n //Número\n if (!this.usuario.Numero || this.usuario.Numero == \"\" || this.usuario.Numero.trim() == \"\")\n msgErro.push('Número é obrigatório');\n\n //Bairro\n if (!this.usuario.Bairro || this.usuario.Bairro == \"\" || this.usuario.Bairro.trim() == \"\")\n msgErro.push('Bairro é obrigatório');\n\n //Município\n if (this.municipio !== undefined && this.municipio.Codigo !== undefined){\n this.usuario.Municipio = this.municipio.Codigo.toString();\n this.usuario.UF = this.municipio.UF; \n }\n else {\n msgErro.push('Informe o Município'); \n }\n\n //Telefone\n if (!this._sharedService.validaTelefone(this.usuario.Telefone))\n msgErro.push('Telefone inválido');\n\n //Política\n if (!this.aceitouTermo)\n msgErro.push('Você precisa aceitar a Política de Privacidade e Segurança para se cadastrar.');\n\n if (msgErro.length > 0) {\n this.msgService.addMessageArray('Registre-se', msgErro, 'error');\n return false;\n }\n else\n return true;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MascaraModule } from \"app/shared/mascara/mascara.module\";\nimport { RegistrarComponent } from \"app/public/registrar/registrar.component\";\nimport { SharedModule } from \"app/shared/shared.module\";\nimport { ModalModule } from \"ngx-bootstrap/modal\";\nimport { RegistrarRoutingModule } from './registrar.routing.module';\n\n@NgModule({\n imports: [\n CommonModule,\n MascaraModule,\n SharedModule,\n FormsModule,\n ModalModule.forRoot(),\n RegistrarRoutingModule\n ],\n exports: [ RegistrarComponent ],\n declarations: [ RegistrarComponent ],\n providers: [],\n})\nexport class RegistrarModule { }\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { RegistrarComponent } from './registrar.component';\n\nconst registrarRoutes: Routes = [\n { path: '', component: RegistrarComponent }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(registrarRoutes)],\n exports: [RouterModule]\n})\nexport class RegistrarRoutingModule {}","import { FormGroup } from '@angular/forms';\nimport { Component, OnInit, ViewChild } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { MessageService } from './../../_services/message.service';\nimport { AuthenticationService } from './../../_services/authentication.service';\n\nimport { BaseComponent } from './../../shared/base.component';\nimport { MessageComponent } from './../../shared/message/message.component';\n\nimport swal from 'sweetalert2';\nimport { Operacao } from 'app/_enums/operacao';\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\ndeclare var removeSwal: any;\n\n@Component({\n selector: 'app-reset-senha',\n templateUrl: './reset-senha.component.html',\n styleUrls: ['./reset-senha.component.scss']\n})\nexport class ResetSenhaComponent extends BaseComponent implements OnInit {\n\n public emailUsuario: string = '';\n loading: boolean = false;\n //public mensagem: string = \"\";\n\n @ViewChild(MessageComponent, {static: true}) alerta: MessageComponent;\n\n constructor(private _authenticationService: AuthenticationService,\n private _msgService: MessageService,\n protected _router: Router) {\n\n super();\n \n this._msgService.emitirMensagem.subscribe(\n msg => {\n this.alerta.mostrarMensagem(msg.tipo, msg.mensagem);\n }\n );\n }\n\n ngOnInit() {\n }\n\n Enviar(form: FormGroup) {\n this.loading = true;\n this._authenticationService.ResetSenha(this.emailUsuario)\n .subscribe(result => {\n this.loading = false;\n if (result.IsValid) {\n this._msgService.clearMessage();\n removeSwal();\n swal({\n title: 'Sucesso',\n text: 'Procedimento para alteração de senha enviado por email!',\n type: 'success',\n showConfirmButton: true,\n showCancelButton: false,\n confirmButtonText: 'OK'\n }).then(success => {\n this.emailUsuario = '';\n form.reset();\n this._router.navigate(['/home']);\n }, dismiss => {\n // console.log(dismiss);\n });\n }\n else {\n var msgErr: string[] = [];\n result.Erros.forEach(element => msgErr.push(element.Message)); \n this._msgService.addMessageArray(\"Reset Senha\", msgErr, \"error\", LogFrontFuncionalidade.ResetSenha, Operacao.Inclusao, this.emailUsuario); \n }\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ResetSenhaComponent } from './reset-senha.component';\nimport { ResetSenhaRoutingModule } from './reset-senha.routing.module';\nimport { FormsModule } from '@angular/forms';\nimport { SharedModule } from 'app/shared/shared.module';\n\n\n\n@NgModule({\n imports: [ \n CommonModule, \n FormsModule, \n SharedModule,\n ResetSenhaRoutingModule \n ],\n exports: [],\n declarations: [ ResetSenhaComponent ],\n providers: [],\n})\nexport class ResetSenhaModule { }","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { ResetSenhaComponent } from './reset-senha.component';\n\nconst resetSenhaRoutes: Routes = [\n { path: '', component: ResetSenhaComponent }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(resetSenhaRoutes)],\n exports: [RouterModule]\n})\nexport class ResetSenhaRoutingModule {}","import { Component, OnInit } from '@angular/core';\n\nimport { BaseComponent } from './../../shared/base.component';\n\nimport { AppService } from 'app/_services/app.service';\nimport { SharedService } from 'app/_services/shared.service';\nimport { ConfigPortal } from 'app/_models/config-portal';\n\n@Component({\n selector: 'app-sobre',\n templateUrl: './sobre.component.html',\n styleUrls: ['./sobre.component.scss']\n})\nexport class SobreComponent extends BaseComponent implements OnInit {\n\n versaoWebPortal: string = \"\";\n versaoAPIPortal: string = \"\";\n versaoAPIeCargo: string = \"\";\n versaoAPIAuth: string = \"\";\n configInfo: ConfigPortal;\n\n constructor(private _sharedService: SharedService, private _appService: AppService) {\n super();\n }\n\n ngOnInit() {\n this.getVersaoAPI(\"portal\");\n this.getVersaoAPI(\"ecargo\");\n this.getVersaoAPI(\"auth\");\n this.versaoWebPortal = this._appService.getVersaoWebPortal();\n\n if (localStorage.getItem('apiUrl')) {\n this.configInfo = JSON.parse(localStorage.getItem('apiUrl')); \n }\n }\n\n loading: boolean = false;\n loading2: boolean = false;\n\n getVersaoAPI(filtro: string) {\n this.loading = true;\n this._sharedService.getVersaoAPI(filtro)\n .subscribe(p => {\n this.loading = false;\n if (filtro == \"portal\")\n this.versaoAPIPortal = p;\n else if (filtro == \"ecargo\")\n this.versaoAPIeCargo = p;\n else\n this.versaoAPIAuth = p;\n\n });\n\n }\n}\n","\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ModalModule } from 'ngx-bootstrap/modal';\nimport { SharedModule } from './../../shared/shared.module';\nimport { SobreComponent } from './sobre.component';\nimport { AppService } from 'app/_services/app.service';\nimport { SobreRoutingModule } from './sobre.routing.module';\nimport { FormsModule } from '@angular/forms';\nimport { HttpClientModule } from '@angular/common/http';\n\n@NgModule({\n imports: [\n FormsModule,\n CommonModule,\n HttpClientModule,\n SobreRoutingModule,\n ModalModule.forRoot(),\n SharedModule\n ],\n exports: [],\n declarations: [\n SobreComponent\n ],\n providers: [\n AppService\n ]\n})\nexport class SobreModule { }","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { AuthGuard } from 'app/_guards/auth.guard';\nimport { SobreComponent } from './sobre.component';\n\nconst sobreRoutes: Routes = [\n { path: '', component: SobreComponent, canActivate: [AuthGuard] }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(sobreRoutes)],\n exports: [RouterModule]\n})\nexport class SobreRoutingModule {}","import { Component } from '@angular/core';\n\nexport class BaseComponent {\n\n public hiddenInput(input: any, style: string = ''): string {\n return this.hidden(input.valid || !input.touched, style);\n }\n\n /**\n * hidden\n * condicao: boolean */\n public hidden(condicao: boolean, style: string = ''): string {\n return condicao ? 'none' : style + 'block';\n }\n}","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\n\nimport { Cliente } from './../../_models/cliente';\nimport { UsuarioCNPJ } from './../../_models/usuario-cnpj';\nimport { PerfilUsuario } from 'app/_enums/perfil-usuario.enum';\nimport { ClienteRequest } from './../../_models/cliente-request';\n\nimport { AppService } from 'app/_services/app.service';\nimport { BaseService } from 'app/_services/base.service';\nimport { SharedService } from 'app/_services/shared.service';\nimport { GrupoEconomicoService } from 'app/_services/grupo-economico.service';\nimport { GenericOrderbyService } from './../../_services/generic-orderby.service';\n\nimport { BaseComponent } from '../base.component';\nimport { IMultiSelectOption, IMultiSelectTexts, IMultiSelectSettings } from './../multiselect-dropdown/multiselect-dropdown.component';\n\n@Component({\n selector: 'cnpjdropdown',\n templateUrl: './cnpj-dropdown.component.html',\n styleUrls: ['./cnpj-dropdown.component.scss']\n})\nexport class CnpjDropdownComponent extends BaseComponent implements OnInit {\n\n loading: boolean = false;\n loadingCNPJs: boolean = false;\n loadingClientes: boolean = false;\n modoEdicao: boolean = false;\n modoBloqueado: boolean = false;\n isUsuarioAdmin = false;\n MaisDe1Cnpj: boolean = false;\n CNPJFiltroCSS: string = 'form-control';\n SelecionaMultiplos: boolean = true;\n clientes: Cliente[];\n clientesInscricoes: Cliente[];\n filtroCliente: ClienteRequest = new ClienteRequest;\n inscrEstadualSelecionada: string;\n razaoSocial: string = '';\n pesquisaEspecial: boolean = false;\n cnpjsGrupos: string = '';\n\n constructor(private _appService: AppService,\n private _baseService: BaseService,\n private _grupoService: GrupoEconomicoService,\n private _genericOrderbyService: GenericOrderbyService,\n private _sharedService: SharedService) {\n super();\n }\n \n @Input() habilitaValidacaoCNPJ: boolean = false;\n @Input() habilitaValidacaoIE: boolean = false;\n @Output() cnpjAlterado: EventEmitter = new EventEmitter();\n @Output() clienteSelecionado: EventEmitter = new EventEmitter();\n @Output() clienteNaoEncontrado: EventEmitter = new EventEmitter();\n\n @Input()\n get CNPJs() {\n return this.cnpjsSelecionados;\n }\n set CNPJs(val) {\n this.cnpjsSelecionados = val;\n //this.cnpjAlterado.emit(this.cnpjsSelecionados.join(\";\"));\n }\n\n @Input()\n get CNPJFiltro() {\n return this.CNPJDigitado;\n }\n set CNPJFiltro(val) {\n this.CNPJDigitado = val;\n //this.cnpjAlterado.emit(this.CNPJDigitado);\n }\n\n CNPJDigitado: string;\n cnpjsSelecionados: any[];\n cnpjs: UsuarioCNPJ[];\n\n mySettings: IMultiSelectSettings = {\n pullRight: false,\n enableSearch: true,\n checkedStyle: 'glyphicon',\n buttonClasses: 'btn btn-default btn-secondary',\n selectionLimit: 0,\n closeOnSelect: false,\n autoUnselect: false,\n showCheckAll: true,\n showUncheckAll: true,\n fixedTitle: false,\n dynamicTitleMaxItems: 1,\n maxHeight: '300px',\n };\n\n myTexts: IMultiSelectTexts = {\n checkAll: 'Selecionar Todos',\n uncheckAll: 'Desmarcar Todos',\n checked: 'item selecionado',\n checkedPlural: 'itens selecionados',\n searchPlaceholder: 'Pesquisar',\n defaultTitle: 'CNPJ...',\n allSelected: 'Todos selecionados',\n };\n\n myOptions: IMultiSelectOption[] = [];\n\n ngOnInit() {\n if (this._appService.UsuarioLogado == null || this._appService.UsuarioLogado == undefined) {\n this._baseService.handleError({ status: 401});\n return;\n }\n\n // Obtem Cód. ASC Conforme String Retornada \"T\" = 84 (Administrador)\n this.isUsuarioAdmin = (this._appService.UsuarioLogado.PerfilUsuario.toString().charCodeAt(0) == PerfilUsuario.Administrador);\n\n if (!this.isUsuarioAdmin){\n\n if (!this.pesquisaEspecial) \n this.ObterCNPJs();\n else\n this.ObterCNPJsFiltrados();\n\n this.SelecionaCliente();\n }\n else\n this.cnpjsGrupos = localStorage.getItem('cnpjGrupos');\n\n this._grupoService.grupoEconomicoSelecionadoEvent.subscribe((cnpjs: string) => {\n this.cnpjsGrupos = cnpjs;\n });\n }\n\n private SelecionaCliente() {\n this.MaisDe1Cnpj = (this._appService.UsuarioLogado.CNPJs.length > 1);\n if (this._appService.UsuarioLogado.CNPJs.length == 1){\n this.cnpjsSelecionados = this._appService.UsuarioLogado.CNPJs;\n this.inscrEstadualSelecionada = this._appService.UsuarioLogado.InscricaoEstadual;\n\n this.filtroCliente.CNPJ = this._appService.UsuarioLogado.CNPJs[0];\n this.filtroCliente.InscricaoEstadual = this._appService.UsuarioLogado.InscricaoEstadual;\n this.ObterClientes();\n }\n }\n\n private ObterCNPJs() {\n this.loading = true;\n\n var ordenados: string[] = this._appService.UsuarioLogado.CNPJs.sort((n1, n2) => {\n if (n1 > n2) \n return 1;\n if (n1 < n2) \n return -1;\n return 0;\n });\n this.myOptions = [];\n ordenados.forEach(cnpj => {\n if (this.myOptions.filter(f => f.id == cnpj).length == 0)\n this.myOptions.push({ id: cnpj, name: cnpj });\n });\n this.loading = false;\n }\n\n private ObterCNPJsFiltrados() {\n this.loadingCNPJs = true;\n\n this._sharedService.getClientes(this.filtroCliente, this.pesquisaEspecial)\n .subscribe(lista => {\n \n this.clientes = this._genericOrderbyService.ordenarPorCampo(lista, 'CNPJ');\n \n this.MaisDe1Cnpj = (lista.length > 1);\n this.myOptions = [];\n this.clientes.forEach(c => {\n if (this.myOptions.filter(x => x.id == c.CNPJ).length == 0)\n this.myOptions.push({ id: c.CNPJ, name: c.CNPJ });\n });\n\n if ((lista != undefined) && (lista.length == 1)) {\n this.inscrEstadualSelecionada = lista[0].InscricaoEstadual;\n this.razaoSocial = lista[0].Nome;\n this.clienteSelecionado.emit(lista[0]);\n }\n else {\n this.inscrEstadualSelecionada = '';\n this.razaoSocial = '';\n this.clienteSelecionado.emit(null);\n }\n\n this.loadingCNPJs = false;\n });\n }\n\n public ObterClientes() {\n if (this.clientes != undefined && this.pesquisaEspecial && !this.isUsuarioAdmin) {\n this.clientesInscricoes = this.clientes.filter(c => c.CNPJ == this.filtroCliente.CNPJ);\n\n if (this.filtroCliente.InscricaoEstadual)\n this.clientesInscricoes = this.clientesInscricoes.filter(c => c.InscricaoEstadual == this.filtroCliente.InscricaoEstadual);\n\n if ((this.clientesInscricoes != undefined) && (this.clientesInscricoes.length == 1)) {\n this.inscrEstadualSelecionada = this.clientesInscricoes[0].InscricaoEstadual;\n this.razaoSocial = this.clientesInscricoes[0].Nome;\n this.clienteSelecionado.emit(this.clientesInscricoes[0]);\n }\n else {\n this.inscrEstadualSelecionada = '';\n this.razaoSocial = '';\n this.clienteSelecionado.emit(null);\n }\n }\n else {\n this.loadingClientes = true;\n var cnpjSemFormatacao = this._sharedService.replaceAll(this.filtroCliente.CNPJ, '.', '');\n var cnpjSemFormatacao = this._sharedService.replaceAll(cnpjSemFormatacao, '/', '');\n var cnpjSemFormatacao = this._sharedService.replaceAll(cnpjSemFormatacao, '-', '');\n this.filtroCliente.CNPJ = cnpjSemFormatacao;\n \n this._sharedService.getClientes(this.filtroCliente, this.pesquisaEspecial)\n .subscribe(c => {\n if (c == null){\n //Não há CNPJs para este cliente ou não há propostas ativas para nenhum dos CNPJs do cliente.\n this.clienteNaoEncontrado.emit('Não há CNPJs para este cliente ou não há propostas ativas para nenhum dos CNPJs do cliente.');\n return;\n }\n \n this.clientes = c;\n\n //if (this.isUsuarioAdmin)\n this.clientes = c.filter(c => c.CNPJ == cnpjSemFormatacao);\n //this.clientesInscricoes = c;\n this.clientesInscricoes = this.clientes.filter(c => c.CNPJ == cnpjSemFormatacao);\n if ((this.clientesInscricoes != undefined) && (this.clientesInscricoes.length == 1)) {\n this.inscrEstadualSelecionada = this.clientesInscricoes[0].InscricaoEstadual;\n this.razaoSocial = this.clientesInscricoes[0].Nome;\n this.clienteSelecionado.emit(this.clientesInscricoes[0]);\n }\n else {\n this.inscrEstadualSelecionada = '';\n this.razaoSocial = '';\n this.clienteSelecionado.emit(null);\n }\n\n this.loadingClientes = false;\n });\n }\n }\n\n public FiltraCliente() {\n if (this.CNPJFiltro != undefined && this.CNPJFiltro != '')\n this.filtroCliente.CNPJ = this.CNPJFiltro;\n else \n if (this.cnpjsSelecionados != undefined)\n this.filtroCliente.CNPJ = (this.cnpjsSelecionados instanceof Array) ? this.cnpjsSelecionados.join(';') : this.cnpjsSelecionados;\n\n this.filtroCliente.InscricaoEstadual = '';\n\n this.ObterClientes();\n }\n\n private ExibeNomeCliente(ie: string) {\n this.filtroCliente.InscricaoEstadual = ie;\n var cli: Cliente = this.clientes.find( c => c.CNPJ == this.filtroCliente.CNPJ && c.InscricaoEstadual == this.filtroCliente.InscricaoEstadual);\n\n if (cli != undefined) {\n this.razaoSocial = cli.Nome;\n this.clienteSelecionado.emit(cli);\n }\n else {\n this.razaoSocial = '';\n this.clienteSelecionado.emit(null);\n }\n }\n\n private blurCnpjAlterado(){\n this.cnpjAlterado.emit(this.CNPJFiltro);\n }\n\n validaCNPJnoGrupo(): boolean {\n this.cnpjsGrupos = localStorage.getItem('cnpjGrupos');\n\n if (!this.CNPJDigitado || !this.cnpjsGrupos)\n return true;\n\n var cnpjSemFormatacao = \"\";\n cnpjSemFormatacao = this._sharedService.replaceAll(this.CNPJDigitado, '.', '');\n cnpjSemFormatacao = this._sharedService.replaceAll(cnpjSemFormatacao, '/', '');\n cnpjSemFormatacao = this._sharedService.replaceAll(cnpjSemFormatacao, '-', '');\n\n return (this.cnpjsGrupos.indexOf(cnpjSemFormatacao) >= 0);\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { MultiselectDropdownModule } from './../../shared/multiselect-dropdown/multiselect-dropdown.module';\nimport { CnpjDropdownComponent } from './cnpj-dropdown.component';\nimport { MascaraModule } from \"app/shared/mascara/mascara.module\";\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n MultiselectDropdownModule,\n MascaraModule\n ],\n exports: [\n CnpjDropdownComponent\n ],\n declarations: [\n CnpjDropdownComponent\n ],\n providers: [],\n})\nexport class CNPJDropDownModule { }\n","import { Component, OnInit, ViewChild } from '@angular/core';\n\nimport { ConfirmService } from './confirm.service';\n\nconst KEY_ESC = 27;\n\n@Component({\n selector: 'modal-confirm',\n templateUrl: './confirm.component.html',\n styleUrls: ['./confirm.component.scss'],\n exportAs: 'child'\n})\nexport class ConfirmComponent implements OnInit {\n\n@ViewChild('staticModal', {static: true}) staticModal;\n\n private _defaults = {\n title: 'Confirmação',\n message: 'Deseja cancelar as alterações?',\n textbutton1: 'OK',\n textbutton2: 'Cancelar'\n };\n\n title:string;\n message:string;\n textbutton1:string;\n textbutton2:string;\n\n private _confirmElement:any;\n private _button1:any;\n private _button2:any;\n\n\n constructor(confirmService:ConfirmService) {\n confirmService.activate = this.activate.bind(this);\n }\n\n _setLabels(message = this._defaults.message, title = this._defaults.title, textbutton1 = this._defaults.textbutton1, textbutton2 = this._defaults.textbutton2) {\n this.title = title;\n this.message = message;\n this.textbutton1 = textbutton1;\n this.textbutton2 = textbutton2;\n }\n\n activate(message = this._defaults.message, title = this._defaults.title, textbutton1 = this._defaults.textbutton1, textbutton2 = this._defaults.textbutton2) {\n this._setLabels(message, title, textbutton1, textbutton2);\n\n let promise = new Promise(resolve => {\n this._show(resolve);\n });\n return promise;\n }\n\n private _show(resolve:(boolean) => any) {\n document.onkeyup = null;\n\n let negativeOnClick = (e:any) => resolve(false);\n let positiveOnClick = (e:any) => resolve(true);\n\n if (!this._confirmElement || !this._button2 || !this._button1) return;\n\n //this._confirmElement.style.opacity = 0;\n //this._confirmElement.style.zIndex = 9999;\n\n this._button2.onclick = ((e:any) => {\n e.preventDefault();\n if (!negativeOnClick(e)) this._hideDialog();\n })\n\n this._button1.onclick = ((e:any) => {\n e.preventDefault();\n if (!positiveOnClick(e)) this._hideDialog()\n });\n\n this._confirmElement.onclick = () => {\n this._hideDialog();\n return negativeOnClick(null);\n };\n\n document.onkeyup = (e:any) => {\n if (e.which == KEY_ESC) {\n this._hideDialog();\n return negativeOnClick(null);\n }\n };\n\n //this._confirmElement.style.opacity = 1;\n\n this.staticModal.show();\n }\n\n private _hideDialog() {\n document.onkeyup = null;\n //this._confirmElement.style.opacity = 0;\n //window.setTimeout(() => this._confirmElement.style.zIndex = -1, 400);\n this.staticModal.hide();\n }\n\n ngOnInit():any {\n this._confirmElement = document.getElementById('confirmationModal');\n this._button2 = document.getElementById('button2');\n this._button1 = document.getElementById('button1');\n }\n\n}\n","\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\nimport { ModalModule } from 'ngx-bootstrap/modal';\n\nimport { ConfirmComponent } from './confirm.component';\nimport { ConfirmService } from './confirm.service';\nimport { HttpClientModule } from '@angular/common/http';\n\n@NgModule({\n imports: [\n FormsModule,\n CommonModule,\n HttpClientModule,\n ModalModule.forRoot()\n ],\n exports: [ConfirmComponent],\n declarations: [\n ConfirmComponent\n ],\n providers: [ConfirmService],\n})\nexport class ConfirmModule { }\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfirmService {\n\n constructor() { }\n public activate: (message?: string, title?: string, textbutton1?: string, textbutton2?: string) => Promise;\n}\n","import { Component, Input } from '@angular/core';\n\nimport { TipoContainer } from '../../_models/tipo-container';\n\n@Component({\n selector: 'detalhes-container',\n templateUrl: './detalhes-container.component.html',\n styleUrls: ['./detalhes-container.component.scss']\n})\nexport class DetalhesContainerComponent {\n\n @Input() titulo: string;\n @Input() divClass: string;\n @Input() tooltipPlacement: string;\n @Input() modal: string;\n @Input() cargaPerigosa: string;\n @Input() cargaExcesso: string;\n @Input() cargaRefrigerada: string;\n @Input() tipoContainer: TipoContainer;\n @Input() exibeDescricaoResumida: boolean = true;\n\n obtemClasseDoTipoContainer(): string {\n var especial = \"icon icon-lightbulb-o\";\n var container =\n {\n dry: \"icon icon-dry\",\n reefer: \"icon icon-reefer\",\n openTop: especial,\n flatRack: especial,\n tank: especial,\n padrao: \"\"\n };\n return this.processaTipoContainer(container);\n }\n \n obtemIconeDoContainer(): string {\n var tamanho = this.tipoContainer.Tamanho;\n var container =\n {\n dry: \"standard_\" + tamanho,\n reefer: \"reefer_\" + tamanho,\n openTop: \"open_top_\" + tamanho,\n flatRack: \"flat_rack_\" + tamanho,\n tank: \"standard_\" + tamanho,\n padrao: \"standard_40\"\n };\n return this.processaTipoContainer(container);\n }\n\n private processaTipoContainer(container: {dry: string, reefer: string, openTop: string, flatRack: string, tank: string, padrao: string}): string {\n if ((this.tipoContainer == undefined) || \n (this.tipoContainer.Desc_resumida == undefined) || \n (this.tipoContainer.Desc_resumida.length < 2))\n return container.padrao;\n \n var descricaoResumida = this.tipoContainer.Desc_resumida;\n var identificador = descricaoResumida.substring(descricaoResumida.length - 3);\n switch (identificador.trim()){\n case \"DC\":\n case \"HC\":\n return container.dry;\n case \"RF\":\n case \"RH\":\n return container.reefer;\n case \"OT\":\n case \"OH\":\n return container.openTop;\n case \"FR\":\n case \"FH\":\n return container.flatRack;\n case \"TK\":\n return container.tank;\n default:\n return container.padrao;\n }\n }\n\n obtemClasseIconeOrigem(){\n return this.obtemClasseDoIconeDaModalidade(this.modal.substring(0, 2));\n }\n\n obtemClasseIconeDestino(){\n return this.obtemClasseDoIconeDaModalidade(this.modal.substring(3));\n }\n\n private obtemClasseDoIconeDaModalidade(parteDaModalidade: string): string {\n return parteDaModalidade == \"PA\" ? \"icon icon-home\" : \"icon icon-port\";\n }\n\n}\n","\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\nimport { ModalModule } from 'ngx-bootstrap/modal';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\n\nimport { DetalhesContainerComponent } from './detalhes-container.component';\nimport { HttpClientModule } from '@angular/common/http';\n\n@NgModule({\n imports: [\n FormsModule,\n CommonModule,\n HttpClientModule,\n ModalModule.forRoot(),\n TooltipModule.forRoot()\n ],\n exports: [DetalhesContainerComponent],\n declarations: [DetalhesContainerComponent]\n})\nexport class DetalhesContainerModule { }\n","import { Component, OnInit, Input } from '@angular/core';\n\nimport { Endereco } from 'app/_models/endereco';\n\n@Component({\n selector: 'endereco',\n templateUrl: './endereco.component.html',\n styleUrls: ['./endereco.component.scss']\n})\nexport class EnderecoComponent implements OnInit {\n\n @Input() permiteEditarEndereco: boolean;\n\n mascaraCep = [/[0-9]/, /[0-9]/, /[0-9]/, /[0-9]/, /[0-9]/, \"-\", /[0-9]/, /[0-9]/, /[0-9]/];\n endereco: Endereco = new Endereco();\n enderecos: Endereco[] = [];\n enderecoSelecionado: Endereco;\n index: number;\n indexSelecionado: number = -1;\n maisDeUm: boolean = false;\n novo: boolean = false;\n\n constructor() { }\n\n ngOnInit() {\n }\n\n carregaEnderecos(end: Endereco, lista: Endereco[]){\n this.endereco = new Endereco();\n this.enderecos = [];\n if (lista && lista.length == 1 && !end) {\n this.enderecoSelecionado = lista[0];\n this.endereco = lista[0];\n }\n else if (lista && lista.length > 1) {\n this.novo = false;\n this.enderecos = lista.filter(f => f.IdMunicipio == end.IdMunicipio);\n\n if (this.enderecos && this.enderecos.length == 0) {\n this.endereco = end;\n }\n else if (this.enderecos && this.enderecos.length == 1) {\n this.endereco = this.enderecos[0];\n }\n else if (this.enderecos && this.enderecos.length > 1) {\n this.enderecoSelecionado = end;\n this.enderecos.forEach(e => {\n var i: number = 0;\n if (e.CEP == end.CEP && e.Bairro == end.Bairro && \n (e.Complemento == end.Complemento || (!e.Complemento && !end.Complemento)) &&\n e.IdMunicipio == end.IdMunicipio && e.Logradouro == end.Logradouro && e.Municipio == end.Municipio && \n e.Numero == end.Numero && e.UF == end.UF) {\n this.indexSelecionado = i;\n return;\n }\n i++;\n });\n }\n }\n else if (!lista && !end) {\n //nenhum endereço cadastrado\n this.novo = true;\n this.permiteEditarEndereco = true;\n }\n else {\n this.endereco = end;\n }\n\n this.maisDeUm = (!this.enderecos) ? false : (this.enderecos.length > 1);\n }\n\n formataEndereco(end: Endereco): string{\n if(!end)\n return \"\";\n\n //13340-730 - EST ANGELA TREVISAN CICILIATO, 200 - JD OLIVEIRA CAMARGO - SERRA/ES\n return ((end.CEP) ? end.CEP.trim() : \"\") + \" - \" +\n ((end.Logradouro) ? end.Logradouro.trim() : \"\") + \", \" +\n ((end.Numero) ? end.Numero.trim() : \"\") + \" \" +\n ((end.Complemento) ? end.Complemento.trim() : \"\") + \" - \" +\n ((end.Bairro) ? end.Bairro.trim() : \"\") + \" - \" +\n ((end.Municipio) ? end.Municipio.trim() : \"\") + \"/\" +\n ((end.UF) ? end.UF.trim() : \"\");\n }\n\n formataMunicipio() {\n return (!this.endereco || !this.endereco.Municipio) ? \"\" : this.endereco.Municipio.trim() + \"/\" + this.endereco.UF;\n }\n\n selecionaEndereco(i: number) {\n this.indexSelecionado = i;\n this.enderecoSelecionado = this.enderecos[i];\n }\n\n obtemEndereco(): Endereco {\n if (this.novo) {\n return this.endereco;\n }\n else if (this.maisDeUm) {\n return this.enderecoSelecionado;\n }\n else {\n return this.endereco;\n }\n }\n\n copiaObjetoEndereco(de: Endereco): Endereco {\n var para = new Endereco();\n para.Bairro = de.Bairro;\n para.CEP = de.CEP;\n para.Complemento = de.Complemento;\n para.IdMunicipio = de.IdMunicipio;\n para.Logradouro = de.Logradouro;\n para.Municipio = de.Municipio;\n para.Numero = de.Numero;\n para.UF = de.UF;\n return para;\n }\n}\n","import { TextMaskModule } from 'angular2-text-mask';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { EnderecoComponent } from './endereco.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n TextMaskModule\n ],\n exports: [\n EnderecoComponent,\n TextMaskModule\n ],\n declarations: [\n EnderecoComponent\n ],\n providers: [],\n})\nexport class EnderecoModule { }","import { Injectable } from \"@angular/core\";\n\nimport * as moment from \"moment/moment\";\nimport { DateModel } from \"app/shared/ng2-datepicker/ng2-datepicker.component\";\n\nexport class DateExtensions {\n static toDateModel(date: any, format: string): DateModel {\n let model = new DateModel();\n if (date) {\n if (moment(date).isValid()) {\n model.formatted = moment(date).format(format);\n }\n else {\n return null;\n }\n }\n\n return model;\n }\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MascaraDirective } from \"app/_directives/mascara.directive\";\n\n@NgModule({\n imports: [\n CommonModule\n ],\n exports: [\n MascaraDirective\n ],\n declarations: [\n MascaraDirective\n ]\n})\nexport class MascaraModule { }\n","import { Component, OnInit, Input, ViewChild, ElementRef } from '@angular/core';\n\nimport { LogService } from 'app/_services/log.service';\n\nimport { Operacao } from 'app/_enums/operacao';\nimport { LogFrontFuncionalidade } from 'app/_enums/log-front-funcionalidade';\n\n@Component({\n selector: 'mensagem-modal',\n templateUrl: './mensagem-modal.component.html',\n styleUrls: ['./mensagem-modal.component.scss']\n})\nexport class MensagemModalComponent implements OnInit {\n\n @Input() mensagemErro: string;\n @ViewChild('topo', {static: true}) private topo: ElementRef;\n\n constructor(private _logService: LogService) { }\n\n ngOnInit() {\n }\n\n ocultarMensagem() {\n this.mensagemErro = ''; //this.exibeMensagemErro('');\n }\n\n exibeMensagemErro(msg: string, func: LogFrontFuncionalidade, oper: Operacao, tela: string) {\n this.mensagemErro = msg;\n\n if (msg && msg != '' && msg != undefined)\n this._logService.logFront(null, LogFrontFuncionalidade.OrdemDeServico, msg, Operacao.Alteracao, tela);\n\n if (this.mensagemErro && this.mensagemErro.length > 0)\n setTimeout(() => { this.topo.nativeElement.scrollIntoView(); });\n }\n}\n","import { Component, OnInit, ElementRef, ViewChild } from '@angular/core';\n\nimport { BaseComponent } from '../base.component';\n\n@Component({\n selector: 'message',\n templateUrl: './message.component.html',\n styleUrls: ['./message.component.scss']\n})\nexport class MessageComponent extends BaseComponent implements OnInit {\n\n tipo: string = \"\";\n textos: string[];\n classesCss: {};\n ocultarMensagem: boolean = true;\n private currentTimeout: any;\n @ViewChild('painelMensagem', {static: true}) private pnMsg: ElementRef;\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n }\n\n public mostrarMensagem(tipoMensagem: string, mensagem: string): void {\n var arr = (mensagem) ? [mensagem] : null;\n this.mostrarMensagemInterno(tipoMensagem, arr, 10000);\n }\n\n public mostrarMensagemArray(tipoMensagem: string, mensagens: string[]): void {\n this.mostrarMensagemInterno(tipoMensagem, mensagens, 3000);\n }\n\n private mostrarMensagemInterno(tipoMensagem: string, mensagens: string[], timeout: number){\n this.ocultarMensagem = false;\n this.textos = mensagens;\n this.tipo = tipoMensagem;\n\n this.montarClasses(this.tipo);\n this.setMessageTimeout(timeout);\n\n if (this.textos && this.textos.length > 0)\n setTimeout(() => { this.pnMsg.nativeElement.scrollIntoView(); });\n }\n\n private montarClasses(tipo: string): void {\n this.classesCss = { 'alert': true };\n this.classesCss['alert alert-dismissible alert-' + tipo] = true; // alert-success\n }\n\n public Fechar(): void{\n this.ocultarMensagem = true;\n }\n\n private setMessageTimeout(timeout: number){\n if ((this.tipo == 'danger') || (this.tipo == 'error') || (this.tipo == ''))\n return;\n\n if (this.currentTimeout)\n clearTimeout(this.currentTimeout);\n\n this.currentTimeout = \n setTimeout(() => {\n this.textos = null; \n }, timeout); \n }\n}\n","import {\n Component,\n Pipe,\n OnInit,\n DoCheck,\n HostListener,\n Input,\n ElementRef,\n Output,\n EventEmitter,\n forwardRef,\n IterableDiffers,\n PipeTransform\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor, Validator, AbstractControl } from '@angular/forms';\n\nconst MULTISELECT_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiselectDropdown),\n multi: true\n};\n\nexport interface IMultiSelectOption {\n id: any;\n name: string;\n isLabel?: boolean;\n parentId?: any;\n params?: any;\n}\n\nexport interface IMultiSelectSettings {\n pullRight?: boolean;\n enableSearch?: boolean;\n checkedStyle?: 'checkboxes' | 'glyphicon' | 'fontawesome';\n buttonClasses?: string;\n itemClasses?: string;\n selectionLimit?: number;\n closeOnSelect?: boolean;\n autoUnselect?: boolean;\n showCheckAll?: boolean;\n showUncheckAll?: boolean;\n fixedTitle?: boolean;\n dynamicTitleMaxItems?: number;\n maxHeight?: string;\n displayAllSelectedText?: boolean;\n}\n\nexport interface IMultiSelectTexts {\n checkAll?: string;\n uncheckAll?: string;\n checked?: string;\n checkedPlural?: string;\n searchPlaceholder?: string;\n defaultTitle?: string;\n allSelected?: string;\n}\n\n@Pipe({\n name: 'searchFilter'\n})\nexport class MultiSelectSearchFilter implements PipeTransform {\n transform(options: Array, args: string): Array {\n const matchPredicate = (option: IMultiSelectOption) => option.name.toLowerCase().indexOf((args || '').toLowerCase()) > -1,\n getChildren = (option: IMultiSelectOption) => options.filter(child => child.parentId === option.id),\n getParent = (option: IMultiSelectOption) => options.find(parent => option.parentId === parent.id);\n return options.filter((option: IMultiSelectOption) => {\n return matchPredicate(option) ||\n (typeof (option.parentId) === 'undefined' && getChildren(option).some(matchPredicate)) ||\n (typeof (option.parentId) !== 'undefined' && matchPredicate(getParent(option)));\n });\n }\n}\n\n@Component({\n selector: 'ss-multiselect-dropdown',\n providers: [MULTISELECT_VALUE_ACCESSOR],\n templateUrl: './multiselect-dropdown.component.html',\n styleUrls: ['./multiselect-dropdown.component.scss']\n})\nexport class MultiselectDropdown implements OnInit, DoCheck, ControlValueAccessor, Validator {\n @Input() options: Array;\n @Input() settings: IMultiSelectSettings;\n @Input() texts: IMultiSelectTexts;\n @Input() disabled: boolean = false;\n @Output() selectionLimitReached = new EventEmitter();\n @Output() dropdownClosed = new EventEmitter();\n @Output() dropdownOpened = new EventEmitter();\n @Output() onAdded = new EventEmitter();\n @Output() onRemoved = new EventEmitter();\n\n @HostListener('document: click', ['$event.target'])\n onClick(target: HTMLElement) {\n let parentFound = false;\n while (target != null && !parentFound) {\n if (target === this.element.nativeElement) {\n parentFound = true;\n }\n target = target.parentElement;\n }\n if (!parentFound) {\n this.isVisible = false;\n this.dropdownClosed.emit();\n }\n }\n\n model: number[];\n title: string;\n differ: any;\n numSelected: number = 0;\n isVisible: boolean = false;\n searchFilterText: string = '';\n\n defaultSettings: IMultiSelectSettings = {\n pullRight: false,\n enableSearch: false,\n checkedStyle: 'checkboxes',\n buttonClasses: 'btn btn-default btn-secondary',\n selectionLimit: 0,\n closeOnSelect: false,\n autoUnselect: false,\n showCheckAll: false,\n showUncheckAll: false,\n fixedTitle: false,\n dynamicTitleMaxItems: 3,\n maxHeight: '300px',\n };\n defaultTexts: IMultiSelectTexts = {\n checkAll: 'Check all',\n uncheckAll: 'Uncheck all',\n checked: 'checked',\n checkedPlural: 'checked',\n searchPlaceholder: 'Search...',\n defaultTitle: 'Select',\n allSelected: 'All selected',\n };\n\n constructor(private element: ElementRef,\n differs: IterableDiffers) {\n this.differ = differs.find([]).create(null);\n }\n\n getItemStyle(option: IMultiSelectOption): any {\n if (!option.isLabel) {\n return {'cursor': 'pointer'};\n }\n }\n\n ngOnInit() {\n this.settings = Object.assign(this.defaultSettings, this.settings);\n this.texts = Object.assign(this.defaultTexts, this.texts);\n this.title = this.texts.defaultTitle || '';\n }\n\n onModelChange: Function = (_: any) => {};\n onModelTouched: Function = () => {};\n\n writeValue(value: any): void {\n if (value !== undefined && value !== null) {\n this.model = value;\n } else {\n this.model = [];\n }\n }\n\n registerOnChange(fn: Function): void {\n this.onModelChange = fn;\n }\n\n registerOnTouched(fn: Function): void {\n this.onModelTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n ngDoCheck() {\n const changes = this.differ.diff(this.model);\n if (changes) {\n this.updateNumSelected();\n this.updateTitle();\n }\n }\n\n validate(_c: AbstractControl): { [key: string]: any; } {\n return (this.model && this.model.length) ? null : {\n required: {\n valid: false,\n },\n };\n }\n\n registerOnValidatorChange(_fn: () => void): void {\n throw new Error('Method not implemented.');\n }\n\n clearSearch(event: Event) {\n event.stopPropagation();\n this.searchFilterText = '';\n }\n\n toggleDropdown() {\n this.isVisible = !this.isVisible;\n this.isVisible ? this.dropdownOpened.emit() : this.dropdownClosed.emit();\n }\n\n isSelected(option: IMultiSelectOption): boolean {\n return this.model && this.model.indexOf(option.id) > -1;\n }\n\n setSelected(_event: Event, option: IMultiSelectOption) {\n if (!this.model) {\n this.model = [];\n }\n const index = this.model.indexOf(option.id);\n if (index > -1) {\n this.model.splice(index, 1);\n this.onRemoved.emit(option.id);\n } else {\n if (this.settings.selectionLimit === 0 || (this.settings.selectionLimit && this.model.length < this.settings.selectionLimit)) {\n this.model.push(option.id);\n this.onAdded.emit(option.id);\n } else {\n if (this.settings.autoUnselect) {\n this.model.push(option.id);\n this.onAdded.emit(option.id);\n const removedOption = this.model.shift();\n this.onRemoved.emit(removedOption);\n } else {\n this.selectionLimitReached.emit(this.model.length);\n return;\n }\n }\n }\n if (this.settings.closeOnSelect) {\n this.toggleDropdown();\n }\n this.onModelChange(this.model);\n this.onModelTouched();\n }\n\n updateNumSelected() {\n this.numSelected = this.model && this.model.length || 0;\n }\n\n updateTitle() {\n if (this.settings.displayAllSelectedText && this.model.length === this.options.length) {\n this.title = this.texts.allSelected || '';\n } else if (this.numSelected === 0 || this.settings.fixedTitle) {\n this.title = this.texts.defaultTitle || '';\n } else if (this.settings.dynamicTitleMaxItems && this.settings.dynamicTitleMaxItems >= this.numSelected) {\n this.title = this.options\n .filter((option: IMultiSelectOption) =>\n this.model && this.model.indexOf(option.id) > -1\n )\n .map((option: IMultiSelectOption) => option.name)\n .join(', ');\n } else {\n this.title = this.numSelected\n + ' '\n + (this.numSelected === 1 ? this.texts.checked : this.texts.checkedPlural);\n }\n }\n\n checkAll() {\n this.model = this.options\n .map((option: IMultiSelectOption) => {\n if (this.model.indexOf(option.id) === -1) {\n this.onAdded.emit(option.id);\n }\n return option.id;\n });\n this.onModelChange(this.model);\n this.onModelTouched();\n }\n\n uncheckAll() {\n this.model.forEach((id: number) => this.onRemoved.emit(id));\n this.model = [];\n this.onModelChange(this.model);\n this.onModelTouched();\n }\n\n preventCheckboxCheck(event: Event, option: IMultiSelectOption) {\n if (this.settings.selectionLimit &&\n this.model.length >= this.settings.selectionLimit &&\n this.model.indexOf(option.id) === -1\n ) {\n event.preventDefault();\n }\n }\n}\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MultiselectDropdown, MultiSelectSearchFilter } from './multiselect-dropdown.component'\n\n@NgModule({\n imports: [CommonModule, FormsModule],\n exports: [MultiselectDropdown, MultiSelectSearchFilter],\n declarations: [MultiselectDropdown, MultiSelectSearchFilter],\n })\n export class MultiselectDropdownModule {\n }","import {\n Component,\n ElementRef,\n Inject,\n OnInit,\n forwardRef,\n Input,\n Output,\n EventEmitter,\n } from '@angular/core';\n import { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n import * as moment from 'moment';\nimport { SlimScrollOptions } from 'app/shared/slimscroll/slimscroll-options.class';\n\n const Moment: any = (moment).default || moment;\n\n export interface IDateModel {\n day: string;\n month: string;\n year: string;\n formatted: string;\n momentObj: moment.Moment;\n }\n\n export class DateModel {\n day: string;\n month: string;\n year: string;\n formatted: string;\n momentObj: moment.Moment;\n\n constructor(obj?: IDateModel) {\n this.day = obj && obj.day ? obj.day : null;\n this.month = obj && obj.month ? obj.month : null;\n this.year = obj && obj.year ? obj.year : null;\n this.formatted = obj && obj.formatted ? obj.formatted : null;\n this.momentObj = obj && obj.momentObj ? obj.momentObj : null;\n }\n }\n\n export interface IDatePickerOptions {\n autoApply?: boolean;\n style?: 'normal' | 'big' | 'bold';\n locale?: string;\n minDate?: Date;\n maxDate?: Date;\n initialDate?: Date;\n firstWeekdaySunday?: boolean;\n format?: string;\n selectYearText?: string;\n todayText?: string;\n clearText?: string;\n }\n\n export class DatePickerOptions {\n autoApply?: boolean;\n style?: 'normal' | 'big' | 'bold';\n locale?: string;\n minDate?: Date;\n maxDate?: Date;\n initialDate?: Date;\n firstWeekdaySunday?: boolean;\n format?: string;\n selectYearText?: string;\n todayText?: string;\n clearText?: string;\n\n constructor(obj?: IDatePickerOptions) {\n this.autoApply = (obj && obj.autoApply === true) ? true : false;\n this.style = obj && obj.style ? obj.style : 'normal';\n this.locale = obj && obj.locale ? obj.locale : 'en';\n this.minDate = obj && obj.minDate ? obj.minDate : null;\n this.maxDate = obj && obj.maxDate ? obj.maxDate : null;\n this.initialDate = obj && obj.initialDate ? obj.initialDate : null;\n this.firstWeekdaySunday = obj && obj.firstWeekdaySunday ? obj.firstWeekdaySunday : false;\n this.format = obj && obj.format ? obj.format : 'YYYY-MM-DD';\n this.selectYearText = obj && obj.selectYearText ? obj.selectYearText : 'Select Year';\n this.todayText = obj && obj.todayText ? obj.todayText : 'Today';\n this.clearText = obj && obj.clearText ? obj.clearText : 'Clear';\n }\n }\n\n export interface CalendarDate {\n day: number;\n month: number;\n year: number;\n enabled: boolean;\n today: boolean;\n selected: boolean;\n momentObj: moment.Moment;\n }\n\n export const CALENDAR_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatePickerComponent),\n multi: true\n };\n\n\n @Component({\n selector: 'ng2-datepicker',\n templateUrl: './ng2-datepicker.component.html',\n styleUrls: ['./ng2-datepicker.component.sass'],\n providers: [CALENDAR_VALUE_ACCESSOR],\n })\n export class DatePickerComponent implements ControlValueAccessor, OnInit {\n @Input() options: IDatePickerOptions;\n @Input() inputEvents: EventEmitter<{ type: string, data: string | DateModel }>;\n @Input() placeholder: string;\n @Output() outputEvents: EventEmitter<{ type: string, data: string | DateModel }>;\n @Output() pressionouEnter: EventEmitter = new EventEmitter();\n @Output() selecionouData: EventEmitter = new EventEmitter();\n @Output() saiuCampo: EventEmitter = new EventEmitter();\n mascaraData: Array = [/[0-3]/, /[0-9]/, '/', /[0-1]/, /[0-9]/, '/', /[0-2]/, /[0-9]/, /[0-9]/, /[0-9]/];\n\n date: DateModel;\n\n opened: boolean;\n currentDate: moment.Moment;\n days: CalendarDate[];\n years: number[];\n yearPicker: boolean;\n scrollOptions: SlimScrollOptions;\n\n nameOfweekday(index: number): string{\n let locale = (this.options && this.options.locale)? this.options.locale : \"en\";\n let additinal = (this.options && this.options.firstWeekdaySunday)?6:0;\n return moment(\"2013W06\" + ( (index + additinal) % 7 + 1 ) ).locale(locale).format(\"dd\"); //.lang(locale).format(\"dd\");\n }\n\n minDate: moment.Moment | any;\n maxDate: moment.Moment | any;\n\n private onTouchedCallback: () => void = () => { };\n private onChangeCallback: (_: any) => void = () => { };\n\n constructor( @Inject(ElementRef) public el: ElementRef) {\n this.opened = false;\n this.currentDate = Moment();\n this.options = this.options || {};\n this.days = [];\n this.years = [];\n this.date = new DateModel({\n day: null,\n month: null,\n year: null,\n formatted: null,\n momentObj: null\n });\n\n this.outputEvents = new EventEmitter<{ type: string, data: string | DateModel }>();\n\n if (!this.inputEvents) {\n return;\n }\n\n this.inputEvents.subscribe((event: { type: string, data: string | DateModel }) => {\n if (event.type === 'setDate') {\n this.value = event.data as DateModel;\n } else if (event.type === 'default') {\n if (event.data === 'open') {\n this.open();\n } else if (event.data === 'close') {\n this.close();\n }\n }\n });\n }\n\n styleErrorDate(condition: boolean){\n return condition ? 'color: red !important':'';\n }\n\n changeRegex(input_data){\n this.alternateRegex(input_data, 0, '3', 1, '[0-1]', '[0-9]');\n this.alternateRegex(input_data, 3, '1', 4, '[0-2]', '[0-9]');\n }\n\n alternateRegex(input_data, charAt, charCheck, maskIndex, regexTrue, regexFalse){\n if(input_data.charAt(charAt) == charCheck){\n this.mascaraData[maskIndex]=new RegExp(regexTrue);\n }else{\n this.mascaraData[maskIndex]=new RegExp(regexFalse);\n }\n }\n\n get value(): DateModel {\n return this.date;\n }\n\n set value(date: DateModel) {\n if (!date) { return; }\n this.date = date;\n this.onChangeCallback(date);\n }\n\n ngOnInit() {\n this.options = new DatePickerOptions(this.options);\n this.scrollOptions = {\n barBackground: '#C9C9C9',\n barWidth: '7',\n gridBackground: '#C9C9C9',\n gridWidth: '2'\n };\n\n if (this.options.initialDate instanceof Date) {\n this.currentDate = Moment(this.options.initialDate);\n this.selectDate(null, this.currentDate);\n }\n\n if (this.options.minDate instanceof Date) {\n this.minDate = Moment(this.options.minDate);\n } else {\n this.minDate = null;\n }\n\n if (this.options.maxDate instanceof Date) {\n this.maxDate = Moment(this.options.maxDate);\n } else {\n this.maxDate = null;\n }\n\n this.generateYears();\n this.generateCalendar();\n this.outputEvents.emit({ type: 'default', data: 'init' });\n\n if (typeof window !== 'undefined') {\n const body = document.querySelector('body');\n body.addEventListener('click', e => {\n if (!this.opened || !e.target) { return; };\n if (this.el.nativeElement !== e.target && !this.el.nativeElement.contains((e.target))) {\n this.close();\n }\n }, false);\n }\n\n if (this.inputEvents) {\n this.inputEvents.subscribe((e: any) => {\n if (e.type === 'action') {\n if (e.data === 'toggle') {\n this.toggle();\n }\n if (e.data === 'close') {\n this.close();\n }\n if (e.data === 'open') {\n this.open();\n }\n }\n\n if (e.type === 'setDate') {\n if (!(e.data instanceof Date)) {\n throw new Error(`Input data must be an instance of Date!`);\n }\n const date: moment.Moment = Moment(e.data);\n if (!date) {\n throw new Error(`Invalid date: ${e.data}`);\n }\n this.value = {\n day: date.format('DD'),\n month: date.format('MM'),\n year: date.format('YYYY'),\n formatted: date.locale(this.options.locale).format(this.options.format), // date.lang(this.options.locale).format(this.options.format),\n momentObj: date\n };\n }\n });\n }\n }\n\n pressionouEnterEvent(strData: string) {\n this.pressionouEnter.emit(strData);\n }\n\n saiuCampoEvent(strData: string) {\n this.saiuCampo.emit(strData);\n }\n\n generateCalendar() {\n const date: moment.Moment = Moment(this.currentDate);\n const month = date.month();\n const year = date.year();\n let n = 1;\n const firstWeekDay = (this.options.firstWeekdaySunday) ? date.date(2).day() : date.date(1).day();\n\n if (firstWeekDay !== 1) {\n n -= (firstWeekDay + 6) % 7;\n }\n\n this.days = [];\n const selectedDate: moment.Moment = this.date.momentObj;\n for (let i = n; i <= date.endOf('month').date(); i += 1) {\n const currentDate: moment.Moment = Moment(`${i}.${month + 1}.${year}`, 'DD.MM.YYYY');\n const today: boolean = (Moment().isSame(currentDate, 'day') && Moment().isSame(currentDate, 'month')) ? true : false;\n const selected: boolean = (selectedDate && selectedDate.isSame(currentDate, 'day')) ? true : false;\n let betweenMinMax = true;\n\n if (this.minDate !== null) {\n if (this.maxDate !== null) {\n betweenMinMax = currentDate.isBetween(this.minDate, this.maxDate, 'day', '[]') ? true : false;\n } else {\n betweenMinMax = currentDate.isBefore(this.minDate, 'day') ? false : true;\n }\n } else {\n if (this.maxDate !== null) {\n betweenMinMax = currentDate.isAfter(this.maxDate, 'day') ? false : true;\n }\n }\n\n const day: CalendarDate = {\n day: i > 0 ? i : null,\n month: i > 0 ? month : null,\n year: i > 0 ? year : null,\n enabled: i > 0 ? betweenMinMax : false,\n today: i > 0 && today ? true : false,\n selected: i > 0 && selected ? true : false,\n momentObj: currentDate\n };\n\n this.days.push(day);\n }\n }\n\n selectDate(e: MouseEvent, date: moment.Moment) {\n if (e) { e.preventDefault(); }\n\n setTimeout(() => {\n this.value = {\n day: date.format('DD'),\n month: date.format('MM'),\n year: date.format('YYYY'),\n formatted: date.locale(this.options.locale).format(this.options.format), //lang(this.options.locale).format(this.options.format),\n momentObj: date\n };\n this.generateCalendar();\n\n this.outputEvents.emit({ type: 'dateChanged', data: this.value });\n this.selecionouData.emit();\n });\n\n this.opened = false;\n }\n\n selectYear(e: MouseEvent, year: number) {\n e.preventDefault();\n\n setTimeout(() => {\n const date: moment.Moment = this.currentDate.year(year);\n this.value = {\n day: date.format('DD'),\n month: date.format('MM'),\n year: date.format('YYYY'),\n formatted: date.locale(this.options.locale).format(this.options.format), //.lang(this.options.locale).format(this.options.format),\n momentObj: date\n };\n this.yearPicker = false;\n this.generateCalendar();\n });\n }\n\n generateYears() {\n const date: moment.Moment = this.minDate || Moment().year(Moment().year() - 40);\n const toDate: moment.Moment = this.maxDate || Moment().year(Moment().year() + 40);\n const years = toDate.year() - date.year();\n\n for (let i = 0; i < years; i++) {\n this.years.push(date.year());\n date.add(1, 'year');\n }\n }\n\n writeValue(date: DateModel) {\n if (!date) { return; }\n this.date = date;\n }\n\n registerOnChange(fn: any) {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouchedCallback = fn;\n }\n\n prevMonth() {\n this.currentDate = this.currentDate.subtract(1, 'month');\n this.generateCalendar();\n }\n\n nextMonth() {\n this.currentDate = this.currentDate.add(1, 'month');\n this.generateCalendar();\n }\n\n today() {\n this.currentDate = Moment();\n this.selectDate(null, this.currentDate);\n }\n\n toggle() {\n this.opened = !this.opened;\n if (this.opened) {\n this.onOpen();\n }\n\n this.outputEvents.emit({ type: 'default', data: 'opened' });\n }\n\n open() {\n this.opened = true;\n this.onOpen();\n }\n\n close() {\n this.opened = false;\n this.outputEvents.emit({ type: 'default', data: 'closed' });\n }\n\n onOpen() {\n this.yearPicker = false;\n }\n\n openYearPicker() {\n setTimeout(() => this.yearPicker = true);\n }\n\n clear() {\n this.value = { day: null, month: null, year: null, momentObj: null, formatted: null };\n this.close();\n }\n\n }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { DatePickerComponent } from './ng2-datepicker.component';\nimport { TextMaskModule } from 'angular2-text-mask';\nimport { SlimScrollModule } from 'app/shared/slimscroll/slimscroll.module';\nexport { DatePickerOptions, DateModel } from './ng2-datepicker.component';\n\n@NgModule({\n declarations: [\n DatePickerComponent\n ],\n imports: [\n CommonModule,\n TextMaskModule,\n FormsModule,\n SlimScrollModule\n ],\n exports: [\n DatePickerComponent,\n SlimScrollModule,\n FormsModule\n ]\n})\nexport class DatePickerModule { }","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { NguiAutoComplete } from './auto-complete';\n\n/**\n * show a selected date in monthly calendar\n * Each filteredList item has the following property in addition to data itself\n * 1. displayValue as string e.g. Allen Kim\n * 2. dataValue as any e.g.\n */\n@Component({\n selector: 'ngui-auto-complete',\n template: `\n
    \n \n \n\n \n
      \n
    • \n
    • {{loadingText}}
    • \n
    • {{noMatchFoundText || 'No Result Found'}}\n
    • \n
    • \n
    • {{blankOptionText}}\n
    • \n
    • \n
    • \n
    \n\n
    `,\n providers: [NguiAutoComplete],\n styles: [`\n @keyframes slideDown {\n 0% {\n transform: translateY(-10px);\n }\n 100% {\n transform: translateY(0px);\n }\n }\n\n .ngui-auto-complete {\n background-color: transparent;\n }\n\n .ngui-auto-complete > input {\n outline: none;\n border: 0;\n padding: 2px;\n box-sizing: border-box;\n background-clip: content-box;\n }\n\n .ngui-auto-complete > ul {\n background-color: #fff;\n margin: 0;\n width: 100%;\n overflow-y: auto;\n list-style-type: none;\n padding: 0;\n border: 1px solid #ccc;\n box-sizing: border-box;\n animation: slideDown 0.1s;\n }\n\n .ngui-auto-complete > ul.empty {\n display: none;\n }\n\n .ngui-auto-complete > ul li {\n padding: 2px 5px;\n border-bottom: 1px solid #eee;\n }\n\n .ngui-auto-complete > ul li.selected {\n background-color: #ccc;\n }\n\n .ngui-auto-complete > ul li:last-child {\n border-bottom: none;\n }\n\n .ngui-auto-complete > ul li:not(.header-item):hover {\n background-color: #ccc;\n }`\n ],\n encapsulation: ViewEncapsulation.None\n})\nexport class NguiAutoCompleteComponent implements OnInit {\n\n /**\n * public input properties\n */\n @Input('autocomplete') public autocomplete = false;\n @Input('list-formatter') public listFormatter: (arg: any) => string;\n @Input('source') public source: any;\n @Input('path-to-data') public pathToData: string;\n @Input('min-chars') public minChars: number = 0;\n @Input('placeholder') public placeholder: string;\n @Input('blank-option-text') public blankOptionText: string;\n @Input('no-match-found-text') public noMatchFoundText: string;\n @Input('accept-user-input') public acceptUserInput: boolean = true;\n @Input('loading-text') public loadingText: string = 'Loading';\n @Input('loading-template') public loadingTemplate = null;\n @Input('max-num-list') public maxNumList: number;\n @Input('show-input-tag') public showInputTag: boolean = true;\n @Input('show-dropdown-on-init') public showDropdownOnInit: boolean = false;\n @Input('tab-to-select') public tabToSelect: boolean = true;\n @Input('match-formatted') public matchFormatted: boolean = false;\n @Input('auto-select-first-item') public autoSelectFirstItem: boolean = false;\n @Input('select-on-blur') public selectOnBlur: boolean = false;\n @Input('re-focus-after-select') public reFocusAfterSelect: boolean = true;\n @Input('header-item-template') public headerItemTemplate = null;\n @Input('ignore-accents') public ignoreAccents: boolean = true;\n\n @Output() public valueSelected = new EventEmitter();\n @Output() public customSelected = new EventEmitter();\n @Output() public textEntered = new EventEmitter();\n\n @ViewChild('autoCompleteInput', {static: true}) public autoCompleteInput: ElementRef;\n @ViewChild('autoCompleteContainer', {static: true}) public autoCompleteContainer: ElementRef;\n\n public dropdownVisible: boolean = false;\n public isLoading: boolean = false;\n\n public filteredList: any[] = [];\n public minCharsEntered: boolean = false;\n public itemIndex: number = null;\n public keyword: string;\n\n private el: HTMLElement; // this component element ``\n private timer = 0;\n\n private delay = (function() {\n let timer: any = 0;\n return function(callback: any, ms: number) {\n clearTimeout(timer);\n timer = setTimeout(callback, ms);\n };\n })();\n private selectOnEnter: boolean = false;\n\n /**\n * constructor\n */\n constructor(elementRef: ElementRef, public autoComplete: NguiAutoComplete) {\n this.el = elementRef.nativeElement;\n }\n\n /**\n * user enters into input el, shows list to select, then select one\n */\n ngOnInit(): void {\n this.autoComplete.source = this.source;\n this.autoComplete.pathToData = this.pathToData;\n this.autoComplete.listFormatter = this.listFormatter;\n if (this.autoSelectFirstItem) {\n this.itemIndex = 0;\n }\n setTimeout(() => {\n if (this.autoCompleteInput && this.reFocusAfterSelect) {\n this.autoCompleteInput.nativeElement.focus();\n }\n if (this.showDropdownOnInit) {\n this.showDropdownList({target: {value: ''}});\n }\n });\n }\n\n public isSrcArr(): boolean {\n return Array.isArray(this.source);\n }\n\n public reloadListInDelay = (evt: any): void => {\n const delayMs = this.isSrcArr() ? 10 : 500;\n const keyword = evt.target.value;\n\n // executing after user stopped typing\n this.delay(() => this.reloadList(keyword), delayMs);\n }\n\n public showDropdownList(event: any): void {\n this.dropdownVisible = true;\n this.reloadList(event.target.value);\n }\n\n public hideDropdownList(): void {\n this.selectOnEnter = false;\n this.dropdownVisible = false;\n }\n\n public findItemFromSelectValue(selectText: string): any {\n const matchingItems = this.filteredList.filter((item) => ('' + item) === selectText);\n return matchingItems.length ? matchingItems[0] : null;\n }\n\n public reloadList(keyword: string): void {\n\n this.filteredList = [];\n if (keyword.length < (this.minChars || 0)) {\n this.minCharsEntered = false;\n return;\n } else {\n this.minCharsEntered = true;\n }\n\n if (this.isSrcArr()) { // local source\n this.isLoading = false;\n this.filteredList = this.autoComplete.filter(this.source, keyword, this.matchFormatted, this.ignoreAccents);\n if (this.maxNumList) {\n this.filteredList = this.filteredList.slice(0, this.maxNumList);\n }\n\n } else { // remote source\n this.isLoading = true;\n\n if (typeof this.source === 'function') {\n // custom function that returns observable\n this.source(keyword).subscribe(\n (resp) => {\n\n if (this.pathToData) {\n const paths = this.pathToData.split('.');\n paths.forEach((prop) => resp = resp[prop]);\n }\n\n this.filteredList = resp;\n if (this.maxNumList) {\n this.filteredList = this.filteredList.slice(0, this.maxNumList);\n }\n },\n (error) => null,\n () => this.isLoading = false // complete\n );\n } else {\n // remote source\n\n this.autoComplete.getRemoteData(keyword).subscribe((resp) => {\n this.filteredList = resp ? resp : [];\n if (this.maxNumList) {\n this.filteredList = this.filteredList.slice(0, this.maxNumList);\n }\n },\n (error) => null,\n () => this.isLoading = false // complete\n );\n }\n }\n }\n\n public selectOne(data: any) {\n if (!!data || data === '') {\n this.valueSelected.emit(data);\n } else {\n this.customSelected.emit(this.keyword);\n }\n }\n\n public enterText(data: any) {\n this.textEntered.emit(data);\n }\n\n public blurHandler(evt: any) {\n if (this.selectOnBlur) {\n this.selectOne(this.filteredList[this.itemIndex]);\n }\n\n this.hideDropdownList();\n }\n\n public inputElKeyHandler = (evt: any) => {\n const totalNumItem = this.filteredList.length;\n\n switch (evt.keyCode) {\n case 27: // ESC, hide auto complete\n this.selectOnEnter = false;\n this.selectOne(undefined);\n break;\n\n case 38: // UP, select the previous li el\n if (0 === totalNumItem) {\n return;\n }\n this.selectOnEnter = true;\n this.itemIndex = (totalNumItem + this.itemIndex - 1) % totalNumItem;\n this.scrollToView(this.itemIndex);\n break;\n\n case 40: // DOWN, select the next li el or the first one\n if (0 === totalNumItem) {\n return;\n }\n this.selectOnEnter = true;\n this.dropdownVisible = true;\n let sum = this.itemIndex;\n sum = (this.itemIndex === null) ? 0 : sum + 1;\n this.itemIndex = (totalNumItem + sum) % totalNumItem;\n this.scrollToView(this.itemIndex);\n break;\n\n case 13: // ENTER, choose it!!\n if (this.selectOnEnter) {\n this.selectOne(this.filteredList[this.itemIndex]);\n }\n evt.preventDefault();\n break;\n\n case 9: // TAB, choose if tab-to-select is enabled\n if (this.tabToSelect) {\n this.selectOne(this.filteredList[this.itemIndex]);\n }\n break;\n }\n }\n\n public scrollToView(index) {\n const container = this.autoCompleteContainer.nativeElement;\n const ul = container.querySelector('ul');\n const li = ul.querySelector('li'); // just sample the first li to get height\n const liHeight = li.offsetHeight;\n const scrollTop = ul.scrollTop;\n const viewport = scrollTop + ul.offsetHeight;\n const scrollOffset = liHeight * index;\n if (scrollOffset < scrollTop || (scrollOffset + liHeight) > viewport) {\n ul.scrollTop = scrollOffset;\n }\n }\n\n public trackByIndex(index, item) {\n return index;\n }\n\n get emptyList(): boolean {\n return !(\n this.isLoading ||\n (this.minCharsEntered && !this.isLoading && !this.filteredList.length) ||\n (this.filteredList.length)\n );\n }\n\n}","import {\n AfterViewInit,\n ComponentFactoryResolver,\n ComponentRef,\n Directive,\n EventEmitter,\n Host,\n Input,\n OnChanges, OnDestroy,\n OnInit,\n Optional,\n Output,\n SimpleChanges,\n SkipSelf,\n ViewContainerRef\n} from '@angular/core';\nimport { NguiAutoCompleteComponent } from './auto-complete.component';\nimport {\n AbstractControl,\n ControlContainer,\n FormControl,\n FormGroup,\n FormGroupName\n} from '@angular/forms';\n\n/**\n * display auto-complete section with input and dropdown list when it is clicked\n */\n@Directive({\n selector: '[auto-complete], [ngui-auto-complete]'\n})\nexport class NguiAutoCompleteDirective implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n @Input('autocomplete') public autocomplete = false;\n @Input('auto-complete-placeholder') public autoCompletePlaceholder: string;\n @Input('source') public source: any;\n @Input('path-to-data') public pathToData: string;\n @Input('min-chars') public minChars: number;\n @Input('display-property-name') public displayPropertyName: string;\n @Input('accept-user-input') public acceptUserInput: boolean = true;\n @Input('max-num-list') public maxNumList: string;\n @Input('select-value-of') public selectValueOf: string;\n @Input('loading-template') public loadingTemplate = null;\n @Input('list-formatter') public listFormatter;\n @Input('loading-text') public loadingText: string = 'Loading';\n @Input('blank-option-text') public blankOptionText: string;\n @Input('no-match-found-text') public noMatchFoundText: string;\n @Input('value-formatter') public valueFormatter: any;\n @Input('tab-to-select') public tabToSelect: boolean = true;\n @Input('select-on-blur') public selectOnBlur: boolean = false;\n @Input('match-formatted') public matchFormatted: boolean = false;\n @Input('auto-select-first-item') public autoSelectFirstItem: boolean = false;\n @Input('open-on-focus') public openOnFocus: boolean = true;\n @Input('close-on-focusout') public closeOnFocusOut: boolean = true;\n @Input('re-focus-after-select') public reFocusAfterSelect: boolean = true;\n @Input('header-item-template') public headerItemTemplate = null;\n @Input('ignore-accents') public ignoreAccents: boolean = true;\n\n @Input() public ngModel: string;\n @Input('formControlName') public formControlName: string;\n // if [formControl] is used on the anchor where our directive is sitting\n // a form is not necessary to use a formControl we should also support this\n @Input('formControl') public extFormControl: FormControl;\n @Input('z-index') public zIndex: string = '1';\n @Input('is-rtl') public isRtl: boolean = false;\n\n @Output() public ngModelChange = new EventEmitter();\n @Output() public valueChanged = new EventEmitter();\n @Output() public customSelected = new EventEmitter();\n\n private componentRef: ComponentRef;\n private wrapperEl: HTMLElement;\n private el: HTMLElement; // this element element, can be any\n private acDropdownEl: HTMLElement; // auto complete element\n private inputEl: HTMLInputElement; // input element of this element\n private formControl: AbstractControl;\n private revertValue: any;\n private dropdownJustHidden: boolean;\n private scheduledBlurHandler: any;\n private documentClickListener: (e: MouseEvent) => any;\n\n constructor(private resolver: ComponentFactoryResolver,\n public viewContainerRef: ViewContainerRef,\n @Optional() @Host() @SkipSelf() private parentForm: ControlContainer) {\n this.el = this.viewContainerRef.element.nativeElement;\n }\n\n ngOnInit(): void {\n // Blur event is handled only after a click event. This is to prevent handling of blur events resulting from interacting with a scrollbar\n // introduced by content overflow (Internet explorer issue).\n // See issue description here: http://stackoverflow.com/questions/2023779/clicking-on-a-divs-scroll-bar-fires-the-blur-event-in-ie\n this.documentClickListener = (e) => {\n if (this.scheduledBlurHandler) {\n this.scheduledBlurHandler();\n this.scheduledBlurHandler = null;\n }\n };\n\n document.addEventListener('click', this.documentClickListener);\n // wrap this element with
    \n this.wrapperEl = document.createElement('div');\n this.wrapperEl.className = 'ngui-auto-complete-wrapper';\n this.wrapperEl.style.position = 'relative';\n this.el.parentElement.insertBefore(this.wrapperEl, this.el.nextSibling);\n this.wrapperEl.appendChild(this.el);\n\n // Check if we were supplied with a [formControlName] and it is inside a [form]\n // else check if we are supplied with a [FormControl] regardless if it is inside a [form] tag\n if (this.parentForm && this.formControlName) {\n if (this.parentForm['form']) {\n this.formControl = (this.parentForm['form'] as FormGroup).get(this.formControlName);\n } else if (this.parentForm instanceof FormGroupName) {\n this.formControl = (this.parentForm as FormGroupName).control.controls[this.formControlName];\n }\n } else if (this.extFormControl) {\n this.formControl = this.extFormControl;\n }\n\n // apply toString() method for the object\n if (!!this.ngModel) {\n this.selectNewValue(this.ngModel);\n } else if (!!this.formControl && this.formControl.value) {\n this.selectNewValue(this.formControl.value);\n }\n\n }\n\n ngAfterViewInit() {\n // if this element is not an input tag, move dropdown after input tag\n // so that it displays correctly\n this.inputEl = this.el.tagName === 'INPUT' ? this.el as HTMLInputElement : this.el.querySelector('input');\n\n if (this.openOnFocus) {\n this.inputEl.addEventListener('focus', (e) => this.showAutoCompleteDropdown(e));\n }\n\n if (this.closeOnFocusOut) {\n this.inputEl.addEventListener('focusout', (e) => this.hideAutoCompleteDropdown(e));\n }\n\n if (!this.autocomplete) {\n this.inputEl.setAttribute('autocomplete', 'off');\n }\n this.inputEl.addEventListener('blur', (e) => {\n this.scheduledBlurHandler = () => {\n return this.blurHandler(e);\n };\n });\n this.inputEl.addEventListener('keydown', (e) => this.keydownEventHandler(e));\n this.inputEl.addEventListener('input', (e) => this.inputEventHandler(e));\n }\n\n ngOnDestroy(): void {\n if (this.componentRef) {\n //this.componentRef.instance.valueSelected.unsubscribe();\n //this.componentRef.instance.textEntered.unsubscribe();\n }\n if (this.documentClickListener) {\n document.removeEventListener('click', this.documentClickListener);\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['ngModel']) {\n this.ngModel = this.setToStringFunction(changes['ngModel'].currentValue);\n this.renderValue(this.ngModel);\n }\n }\n\n // show auto-complete list below the current element\n public showAutoCompleteDropdown = (event?: any): void => {\n if (this.dropdownJustHidden) {\n return;\n }\n this.hideAutoCompleteDropdown();\n this.scheduledBlurHandler = null;\n\n const factory = this.resolver.resolveComponentFactory(NguiAutoCompleteComponent);\n\n this.componentRef = this.viewContainerRef.createComponent(factory);\n\n const component = this.componentRef.instance;\n component.keyword = this.inputEl.value;\n component.showInputTag = false; // Do NOT display autocomplete input tag separately\n\n component.pathToData = this.pathToData;\n component.minChars = this.minChars;\n component.source = this.source;\n component.placeholder = this.autoCompletePlaceholder;\n component.acceptUserInput = this.acceptUserInput;\n component.maxNumList = parseInt(this.maxNumList, 10);\n\n component.loadingText = this.loadingText;\n component.loadingTemplate = this.loadingTemplate;\n component.listFormatter = this.listFormatter;\n component.blankOptionText = this.blankOptionText;\n component.noMatchFoundText = this.noMatchFoundText;\n component.tabToSelect = this.tabToSelect;\n component.selectOnBlur = this.selectOnBlur;\n component.matchFormatted = this.matchFormatted;\n component.autoSelectFirstItem = this.autoSelectFirstItem;\n component.headerItemTemplate = this.headerItemTemplate;\n component.ignoreAccents = this.ignoreAccents;\n\n component.valueSelected.subscribe(this.selectNewValue);\n component.textEntered.subscribe(this.enterNewText);\n component.customSelected.subscribe(this.selectCustomValue);\n\n this.acDropdownEl = this.componentRef.location.nativeElement;\n this.acDropdownEl.style.display = 'none';\n\n // if this element is not an input tag, move dropdown after input tag\n // so that it displays correctly\n if (this.el.tagName !== 'INPUT' && this.acDropdownEl) {\n this.inputEl.parentElement.insertBefore(this.acDropdownEl, this.inputEl.nextSibling);\n }\n this.revertValue = typeof this.ngModel !== 'undefined' ? this.ngModel : this.inputEl.value;\n\n setTimeout(() => {\n component.reloadList(this.inputEl.value);\n this.styleAutoCompleteDropdown();\n component.dropdownVisible = true;\n });\n }\n\n public blurHandler(event: any) {\n if (this.componentRef) {\n const component = this.componentRef.instance;\n\n if (this.selectOnBlur) {\n component.selectOne(component.filteredList[component.itemIndex]);\n }\n\n if (this.closeOnFocusOut) {\n this.hideAutoCompleteDropdown(event);\n }\n }\n }\n\n public hideAutoCompleteDropdown = (event?: any): void => {\n if (this.componentRef) {\n let currentItem: any;\n const hasRevertValue = (typeof this.revertValue !== 'undefined');\n if (this.inputEl && hasRevertValue && this.acceptUserInput === false) {\n currentItem = this.componentRef.instance.findItemFromSelectValue(this.inputEl.value);\n }\n this.componentRef.destroy();\n this.componentRef = undefined;\n\n if (this.inputEl && hasRevertValue && this.acceptUserInput === false && currentItem === null) {\n this.selectNewValue(this.revertValue);\n } else if (this.inputEl && this.acceptUserInput === true && typeof currentItem === 'undefined' && event && event.target.value) {\n this.enterNewText(event.target.value);\n }\n }\n this.dropdownJustHidden = true;\n setTimeout(() => this.dropdownJustHidden = false, 100);\n }\n\n public styleAutoCompleteDropdown = () => {\n if (this.componentRef) {\n const component = this.componentRef.instance;\n\n /* setting width/height auto complete */\n const thisElBCR = this.el.getBoundingClientRect();\n const thisInputElBCR = this.inputEl.getBoundingClientRect();\n const closeToBottom = thisInputElBCR.bottom + 100 > window.innerHeight;\n const directionOfStyle = this.isRtl ? 'right' : 'left';\n\n this.acDropdownEl.style.width = thisInputElBCR.width + 'px';\n this.acDropdownEl.style.position = 'absolute';\n this.acDropdownEl.style.zIndex = this.zIndex;\n this.acDropdownEl.style[directionOfStyle] = '0';\n this.acDropdownEl.style.display = 'inline-block';\n\n if (closeToBottom) {\n this.acDropdownEl.style.bottom = `${thisInputElBCR.height}px`;\n } else {\n this.acDropdownEl.style.top = `${thisInputElBCR.height}px`;\n }\n }\n }\n\n public setToStringFunction(item: any): any {\n if (item && typeof item === 'object') {\n let displayVal;\n\n if (typeof this.valueFormatter === 'string') {\n const matches = this.valueFormatter.match(/[a-zA-Z0-9_\\$]+/g);\n let formatted = this.valueFormatter;\n if (matches && typeof item !== 'string') {\n matches.forEach((key) => {\n formatted = formatted.replace(key, item[key]);\n });\n }\n displayVal = formatted;\n } else if (typeof this.valueFormatter === 'function') {\n displayVal = this.valueFormatter(item);\n } else if (this.displayPropertyName) {\n displayVal = item[this.displayPropertyName];\n } else if (typeof this.listFormatter === 'string' && this.listFormatter.match(/^\\w+$/)) {\n displayVal = item[this.listFormatter];\n } else {\n displayVal = item.value;\n }\n item.toString = () => displayVal;\n }\n return item;\n }\n\n public selectNewValue = (item: any) => {\n // make displayable value\n if (item && typeof item === 'object') {\n item = this.setToStringFunction(item);\n }\n\n this.renderValue(item);\n\n // make return value\n let val = item;\n if (this.selectValueOf && item[this.selectValueOf]) {\n val = item[this.selectValueOf];\n }\n if ((this.parentForm && this.formControlName) || this.extFormControl) {\n if (!!val) {\n this.formControl.patchValue(val);\n }\n }\n if (val !== this.ngModel) {\n this.ngModelChange.emit(val);\n }\n this.valueChanged.emit(val);\n this.hideAutoCompleteDropdown();\n setTimeout(() => {\n if (this.reFocusAfterSelect) {\n this.inputEl.focus();\n }\n\n return this.inputEl;\n });\n }\n\n public selectCustomValue = (text: string) => {\n this.customSelected.emit(text);\n this.hideAutoCompleteDropdown();\n setTimeout(() => {\n if (this.reFocusAfterSelect) {\n this.inputEl.focus();\n }\n\n return this.inputEl;\n });\n }\n\n public enterNewText = (value: any) => {\n this.renderValue(value);\n this.ngModelChange.emit(value);\n this.valueChanged.emit(value);\n this.hideAutoCompleteDropdown();\n }\n\n private keydownEventHandler = (evt: any) => {\n if (this.componentRef) {\n const component = this.componentRef.instance;\n component.inputElKeyHandler(evt);\n }\n }\n\n private inputEventHandler = (evt: any) => {\n if (this.componentRef) {\n const component = this.componentRef.instance;\n component.dropdownVisible = true;\n component.keyword = evt.target.value;\n component.reloadListInDelay(evt);\n } else {\n this.showAutoCompleteDropdown();\n }\n }\n\n private renderValue(item: any) {\n if (!!this.inputEl) {\n this.inputEl.value = '' + item;\n }\n }\n}","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { NguiAutoCompleteComponent } from './auto-complete.component';\nimport { NguiAutoCompleteDirective } from './auto-complete.directive';\nimport { NguiAutoComplete } from './auto-complete';\n\n\n@NgModule({\n imports: [CommonModule, FormsModule],\n declarations: [NguiAutoCompleteComponent, NguiAutoCompleteDirective],\n exports: [NguiAutoCompleteComponent, NguiAutoCompleteDirective]\n})\nexport class NguiAutoCompleteModule {\n public static forRoot(): ModuleWithProviders {\n return {\n ngModule: NguiAutoCompleteModule,\n providers: [NguiAutoComplete]\n };\n}\n}","import { Injectable, Optional } from '@angular/core';\nimport { HttpClient, } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n/**\n * provides auto-complete related utility functions\n */\n @Injectable({\n providedIn: 'root'\n})\nexport class NguiAutoComplete {\n\n public source: string;\n public pathToData: string;\n public listFormatter: (arg: any) => string;\n\n constructor(@Optional() private http: HttpClient) {\n // ...\n }\n\n public filter(list: any[], keyword: string, matchFormatted: boolean, accentInsensitive: boolean) {\n return accentInsensitive\n ? list.filter(\n (el) => {\n const objStr = matchFormatted ? this.getFormattedListItem(el).toLowerCase() : JSON.stringify(el).toLowerCase();\n keyword = keyword.toLowerCase();\n\n return objStr.normalize( 'NFD' ).replace( /[\\u0300-\\u036f]/g, '' )\n .indexOf(keyword.normalize( 'NFD' ).replace( /[\\u0300-\\u036f]/g, '' )) !== -1;\n })\n : list.filter(\n (el) => {\n const objStr = matchFormatted ? this.getFormattedListItem(el).toLowerCase() : JSON.stringify(el).toLowerCase();\n keyword = keyword.toLowerCase();\n\n return objStr.indexOf(keyword) !== -1;\n }\n );\n }\n\n public getFormattedListItem(data: any) {\n let formatted;\n const formatter = this.listFormatter || '(id) value';\n if (typeof formatter === 'function') {\n formatted = formatter.apply(this, [data]);\n } else if (typeof data !== 'object') {\n formatted = data;\n } else if (typeof formatter === 'string') {\n formatted = formatter;\n const matches = formatter.match(/[a-zA-Z0-9_\\$]+/g);\n if (matches && typeof data !== 'string') {\n matches.forEach((key) => {\n formatted = formatted.replace(key, data[key]);\n });\n }\n }\n return formatted;\n }\n\n /**\n * return remote data from the given source and options, and data path\n */\n public getRemoteData(keyword: string): Observable {\n if (typeof this.source !== 'string') {\n throw new TypeError('Invalid type of source, must be a string. e.g. http://www.google.com?q=:my_keyword');\n } else if (!this.http) {\n throw new Error('Http is required.');\n }\n\n const matches = this.source.match(/:[a-zA-Z_]+/);\n if (matches === null) {\n throw new Error('Replacement word is missing.');\n }\n\n const replacementWord = matches[0];\n const url = this.source.replace(replacementWord, keyword);\n\n return this.http.get(url)\n .pipe(\n map((list) => {\n\n if (this.pathToData) {\n const paths = this.pathToData.split('.');\n paths.forEach((prop) => list = list[prop]);\n }\n\n return list;\n })\n );\n }\n}","import { PaginacaoService } from './paginacao.service';\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'paginacao',\n templateUrl: './paginacao.component.html',\n styleUrls: ['./paginacao.component.scss']\n})\nexport class PaginacaoComponent {\n\n\n\n constructor(private _paginacaoService: PaginacaoService) { }\n\n pager: any = {};\n pagedItems: any[];\n\n allItems: any[];\n\n private pageSize: number = 10\n\n public setAllData(dados: any[]) {\n this.allItems = dados;\n this.setPageSize(this.pageSize);\n this.setPage(1);\n }\n\n public setPageSize(pageSize: number) {\n this.pageSize = pageSize;\n this.setPage(1);\n }\n\n public setPage(page: number) {\n if (page < 1 || (this.pager && page > this.pager.totalPages && this.pager.totalPages > 0)) {\n return;\n }\n\n this.pager = this._paginacaoService.getPager(this.allItems.length, page, this.pageSize);\n this.pagedItems = this.allItems.slice(this.pager.startIndex, this.pager.endIndex + 1);\n }\n\n\n\n}\n","import { Injectable } from '@angular/core';\nimport { Http, Headers, RequestOptions, Response } from '@angular/http';\nimport { Observable } from 'rxjs';\n\nimport * as _ from 'underscore';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PaginacaoService {\n\n getPager(totalItems: number, currentPage: number = 1, pageSize: number = 10) {\n pageSize = Number(pageSize);\n totalItems = Number(totalItems);\n currentPage = Number(currentPage);\n\n // calculate total pages\n let totalPages = Math.ceil(totalItems / pageSize);\n\n let startPage: number, endPage: number;\n if (totalPages <= 10) {\n // less than 10 total pages so show all\n startPage = 1;\n endPage = totalPages;\n } else {\n // more than 10 total pages so calculate start and end pages\n if (currentPage <= 6) {\n startPage = 1;\n endPage = 10;\n } else if (currentPage + 4 >= totalPages) {\n startPage = totalPages - 9;\n endPage = totalPages;\n } else {\n startPage = currentPage - 5;\n endPage = currentPage + 4;\n }\n }\n\n // calculate start and end item indexes\n let startIndex = (currentPage - 1) * pageSize;\n let endIndex = Math.min(startIndex + pageSize - 1, totalItems - 1);\n\n // create an array of pages to ng-repeat in the pager control\n let pages = _.range(startPage, endPage + 1);\n\n // return object with all pager properties required by the view\n return {\n totalItems: totalItems,\n currentPage: currentPage,\n pageSize: pageSize,\n totalPages: totalPages,\n startPage: startPage,\n endPage: endPage,\n startIndex: startIndex,\n endIndex: endIndex,\n pages: pages\n };\n }\n}","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { MascaraModule } from \"app/shared/mascara/mascara.module\";\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { CollapseModule } from 'ngx-bootstrap/collapse';\nimport { CNPJDropDownModule } from './cnpj-dropdown/cnpj-dropdown.module';\nimport { EnderecoModule } from './endereco/endereco.module';\nimport { FiltrosLateraisModule } from '../cliente/filtros-laterais/filtros-laterais.module';\nimport { DetalhesContainerModule } from './detalhes-container/detalhes-container.module';\nimport { MultiselectDropdownModule } from './multiselect-dropdown/multiselect-dropdown.module';\n\nimport { MessageComponent } from './message/message.component';\nimport { PaginacaoComponent } from './paginacao/paginacao.component';\nimport { MensagemModalComponent } from './mensagem-modal/mensagem-modal.component';\n\nimport { MascaraDirective } from './../_directives/mascara.directive';\nimport { KzMaskCurrencyDirective } from \"app/_directives/kz-mask-currency.directive\";\n\nimport { OrderbyPipe } from './../_pipes/orderby.pipe';\nimport { CountdownPipe } from \"app/_pipes/countdown.pipe\";\n\nimport { PaginacaoService } from './paginacao/paginacao.service';\nimport { GenericOrderbyService } from \"app/_services/generic-orderby.service\";\n\nimport { SlimScrollModule } from './slimscroll/slimscroll.module';\nimport { NguiAutoCompleteModule } from './ngui-auto-complete/auto-complete.module';\nimport { UploadArquivosModule } from './uploadarquivos/uploadarquivos.module';\n\n@NgModule({\n imports: [\n CommonModule,\n MultiselectDropdownModule,\n CNPJDropDownModule,\n UploadArquivosModule,\n NguiAutoCompleteModule,\n MascaraModule,\n EnderecoModule,\n SlimScrollModule\n ],\n exports: [\n TooltipModule,\n CollapseModule,\n PaginacaoComponent,\n MessageComponent,\n MensagemModalComponent,\n MultiselectDropdownModule,\n CNPJDropDownModule,\n EnderecoModule,\n UploadArquivosModule,\n OrderbyPipe,\n FiltrosLateraisModule,\n DetalhesContainerModule,\n CountdownPipe,\n KzMaskCurrencyDirective,\n NguiAutoCompleteModule,\n MascaraDirective,\n SlimScrollModule\n ],\n declarations: [\n PaginacaoComponent,\n MessageComponent,\n OrderbyPipe,\n KzMaskCurrencyDirective,\n CountdownPipe,\n MensagemModalComponent\n ],\n providers: [\n PaginacaoService,\n GenericOrderbyService\n ],\n})\nexport class SharedModule { }\n","import { Component, Input, ElementRef, AfterContentInit} from '@angular/core';\ndeclare var jQuery: any;\n\n@Component({\n selector: 'slick-slider',\n template: `\n \n `\n})\nexport class SlickSliderComponent implements AfterContentInit{\n @Input() options: any;\n\n $element: any;\n\n defaultOptions: any = { dots: false,slidesToShow: 2, slidesToScroll: 1,infinite:false };\n\n constructor(private el: ElementRef) {\n }\n\n ngAfterContentInit() {\n for (var key in this.options) {\n this.defaultOptions[key] = this.options[key];\n }\n\n this.load();\n }\n\n load(){\n this.$element = jQuery(this.el.nativeElement).slick(this.defaultOptions);\n }\n\n reload() {\n jQuery(this.el.nativeElement).slick('unslick');\n this.load();\n }\n}","export interface ISlimScrollOptions {\n position?: string;\n barBackground?: string;\n barOpacity?: string;\n barWidth?: string;\n barBorderRadius?: string;\n barMargin?: string;\n gridBackground?: string;\n gridOpacity?: string;\n gridWidth?: string;\n gridBorderRadius?: string;\n gridMargin?: string;\n }\n \n export class SlimScrollOptions {\n position?: string;\n barBackground?: string;\n barOpacity?: string;\n barWidth?: string;\n barBorderRadius?: string;\n barMargin?: string;\n gridBackground?: string;\n gridOpacity?: string;\n gridWidth?: string;\n gridBorderRadius?: string;\n gridMargin?: string;\n \n constructor(obj?: ISlimScrollOptions) {\n this.position = obj && obj.position ? obj.position : 'right';\n this.barBackground = obj && obj.barBackground ? obj.barBackground : '#343a40';\n this.barOpacity = obj && obj.barOpacity ? obj.barOpacity : '1';\n this.barWidth = obj && obj.barWidth ? obj.barWidth : '12';\n this.barBorderRadius = obj && obj.barBorderRadius ? obj.barBorderRadius : '5';\n this.barMargin = obj && obj.barMargin ? obj.barMargin : '1px 0';\n this.gridBackground = obj && obj.gridBackground ? obj.gridBackground : '#adb5bd';\n this.gridOpacity = obj && obj.gridOpacity ? obj.gridOpacity : '1';\n this.gridWidth = obj && obj.gridWidth ? obj.gridWidth : '8';\n this.gridBorderRadius = obj && obj.gridBorderRadius ? obj.gridBorderRadius : '10';\n this.gridMargin = obj && obj.gridMargin ? obj.gridMargin : '1px 2px';\n }\n }\n ","\nimport {merge as observableMerge, fromEvent as observableFromEvent, Observable } from 'rxjs';\n\nimport {takeUntil, map, mergeMap} from 'rxjs/operators';\nimport { Directive, ViewContainerRef, HostListener, OnInit, Renderer2, Inject, Input } from '@angular/core';\nimport { SlimScrollOptions } from './slimscroll-options.class';\n\n\n\n\n\n\n@Directive({\n selector: '[slimScroll]',\n exportAs: 'slimScroll'\n})\nexport class SlimScrollDirective implements OnInit {\n @Input() options: SlimScrollOptions;\n\n el: HTMLElement;\n wrapper: HTMLElement;\n grid: HTMLElement;\n bar: HTMLElement;\n body: HTMLElement;\n pageY: number;\n top: number;\n dragging: boolean;\n mutationThrottleTimeout: any;\n mutationObserver: MutationObserver;\n lastTouchPositionY: number;\n\n constructor(\n @Inject(ViewContainerRef) private viewContainer: ViewContainerRef,\n @Inject(Renderer2) private renderer: Renderer2) {\n if (typeof window === 'undefined') { return; }\n this.viewContainer = viewContainer;\n this.el = viewContainer.element.nativeElement;\n this.body = document.documentElement.querySelector('body');\n this.mutationThrottleTimeout = 50;\n }\n\n ngOnInit() {\n if (typeof window === 'undefined') { return; }\n this.options = new SlimScrollOptions(this.options);\n this.destroy();\n this.setElementStyle();\n this.wrapContainer();\n this.initGrid();\n this.initBar();\n this.getBarHeight();\n this.initWheel();\n this.initDrag();\n\n if (MutationObserver) {\n this.mutationObserver = new MutationObserver(() => {\n if (this.mutationThrottleTimeout) {\n clearTimeout(this.mutationThrottleTimeout);\n this.mutationThrottleTimeout = setTimeout(this.onMutation.bind(this), 50);\n }\n });\n this.mutationObserver.observe(this.el, { subtree: true, childList: true });\n }\n }\n\n setElementStyle(): void {\n let el = this.el;\n this.renderer.setStyle(el, 'overflow', 'hidden');\n this.renderer.setStyle(el, 'position', 'relative');\n this.renderer.setStyle(el, 'display', 'block');\n }\n\n onMutation() {\n this.getBarHeight();\n }\n\n wrapContainer(): void {\n this.wrapper = document.createElement('div');\n let wrapper = this.wrapper;\n let el = this.el;\n\n this.renderer.setStyle(wrapper, 'slimscroll-wrapper', true);\n this.renderer.setStyle(wrapper, 'position', 'relative');\n this.renderer.setStyle(wrapper, 'overflow', 'hidden');\n this.renderer.setStyle(wrapper, 'display', 'inline-block');\n this.renderer.setStyle(wrapper, 'margin', getComputedStyle(el).margin);\n this.renderer.setStyle(wrapper, 'width', 'inherit');\n this.renderer.setStyle(wrapper, 'height', '100%');\n\n el.parentNode.insertBefore(wrapper, el);\n wrapper.appendChild(el);\n }\n\n initGrid(): void {\n this.grid = document.createElement('div');\n let grid = this.grid;\n\n this.renderer.setStyle(grid, 'slimscroll-grid', true);\n this.renderer.setStyle(grid, 'position', 'absolute');\n this.renderer.setStyle(grid, 'top', '0');\n this.renderer.setStyle(grid, this.options.position, '0');\n this.renderer.setStyle(grid, 'width', `${this.options.gridWidth}px`);\n this.renderer.setStyle(grid, 'height', '100%');\n this.renderer.setStyle(grid, 'background', this.options.gridBackground);\n this.renderer.setStyle(grid, 'opacity', this.options.gridOpacity);\n this.renderer.setStyle(grid, 'display', 'block');\n this.renderer.setStyle(grid, 'cursor', 'pointer');\n this.renderer.setStyle(grid, 'z-index', '99');\n this.renderer.setStyle(grid, 'border-radius', `${this.options.gridBorderRadius}px`);\n this.renderer.setStyle(grid, 'margin', this.options.gridMargin);\n\n this.wrapper.appendChild(grid);\n }\n\n initBar(): void {\n this.bar = document.createElement('div');\n let bar = this.bar;\n\n this.renderer.setStyle(bar, 'slimscroll-bar', true);\n this.renderer.setStyle(bar, 'position', 'absolute');\n this.renderer.setStyle(bar, 'top', '0');\n this.renderer.setStyle(bar, this.options.position, '0');\n this.renderer.setStyle(bar, 'width', `${this.options.barWidth}px`);\n this.renderer.setStyle(bar, 'background', this.options.barBackground);\n this.renderer.setStyle(bar, 'opacity', this.options.barOpacity);\n this.renderer.setStyle(bar, 'display', 'block');\n this.renderer.setStyle(bar, 'cursor', 'pointer');\n this.renderer.setStyle(bar, 'z-index', '100');\n this.renderer.setStyle(bar, 'border-radius', `${this.options.barBorderRadius}px`);\n this.renderer.setStyle(bar, 'margin', this.options.barMargin);\n\n this.wrapper.appendChild(bar);\n }\n\n getBarHeight(): void {\n setTimeout(() => {\n let barHeight = Math.max((this.el.offsetHeight / this.el.scrollHeight) * this.el.offsetHeight, 30) + 'px';\n let display = parseInt(barHeight, 10) === this.el.offsetHeight ? 'none' : 'block';\n\n this.renderer.setStyle(this.bar, 'height', barHeight);\n this.renderer.setStyle(this.bar, 'display', display);\n this.renderer.setStyle(this.grid, 'display', display);\n }, 1);\n }\n\n scrollContent(y: number, isWheel: boolean, isJump: boolean): void {\n let delta = y;\n let maxTop = this.el.offsetHeight - this.bar.offsetHeight;\n let percentScroll: number;\n let bar = this.bar;\n let el = this.el;\n\n if (isWheel) {\n delta = parseInt(getComputedStyle(bar).top, 10) + y * 20 / 100 * bar.offsetHeight;\n delta = Math.min(Math.max(delta, 0), maxTop);\n delta = (y > 0) ? Math.ceil(delta) : Math.floor(delta);\n this.renderer.setStyle(bar, 'top', delta + 'px');\n }\n\n percentScroll = parseInt(getComputedStyle(bar).top, 10) / (el.offsetHeight - bar.offsetHeight);\n delta = percentScroll * (el.scrollHeight - el.offsetHeight);\n\n el.scrollTop = delta;\n }\n\n initWheel = () => {\n const dommousescroll = observableFromEvent(this.el, 'DOMMouseScroll');\n const mousewheel = observableFromEvent(this.el, 'mousewheel');\n\n observableMerge(...[dommousescroll, mousewheel]).subscribe((e: any) => {\n let delta = 0;\n\n if (e.wheelDelta) {\n delta = -e.wheelDelta / 120;\n }\n\n if (e.detail) {\n delta = e.detail / 3;\n }\n\n this.scrollContent(delta, true, false);\n\n if (e.preventDefault) {\n e.preventDefault();\n }\n });\n }\n\n initDrag = () => {\n const bar = this.bar;\n\n const mousemove = observableFromEvent(document.documentElement, 'mousemove');\n const touchmove = observableFromEvent(document.documentElement, 'touchmove');\n\n const mousedown = observableFromEvent(bar, 'mousedown');\n const touchstart = observableFromEvent(this.el, 'touchstart');\n const mouseup = observableFromEvent(document.documentElement, 'mouseup');\n const touchend = observableFromEvent(document.documentElement, 'touchend');\n\n const mousedrag = mousedown.pipe(mergeMap((e: MouseEvent) => {\n this.pageY = e.pageY;\n this.top = parseFloat(getComputedStyle(bar).top);\n\n return mousemove.pipe(map((emove: MouseEvent) => {\n emove.preventDefault();\n return this.top + emove.pageY - this.pageY;\n }),takeUntil(mouseup),);\n }));\n\n const touchdrag = touchstart.pipe(mergeMap((e: TouchEvent) => {\n this.pageY = e.targetTouches[0].pageY;\n this.top = parseFloat(getComputedStyle(bar).top);\n\n return touchmove.pipe(map((tmove: TouchEvent) => {\n return -(this.top + tmove.targetTouches[0].pageY - this.pageY);\n }),takeUntil(touchend),);\n }));\n\n observableMerge(...[mousedrag, touchdrag]).subscribe((top: number) => {\n this.body.addEventListener('selectstart', this.preventDefaultEvent, false);\n this.renderer.setStyle(this.bar, 'top', `${top}px`);\n this.scrollContent(0, true, false);\n });\n\n observableMerge(...[mouseup, touchend]).subscribe(() => {\n this.body.removeEventListener('selectstart', this.preventDefaultEvent, false);\n });\n };\n\n preventDefaultEvent = (e: MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n };\n\n destroy(): void {\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n this.mutationObserver = null;\n }\n\n if (this.el.parentElement.classList.contains('slimscroll-wrapper')) {\n let wrapper = this.el.parentElement;\n let bar = this.el.querySelector('.slimscroll-bar');\n this.el.removeChild(bar);\n this.unwrap(wrapper);\n }\n }\n\n unwrap(wrapper: HTMLElement): void {\n let docFrag = document.createDocumentFragment();\n while (wrapper.firstChild) {\n let child = wrapper.removeChild(wrapper.firstChild);\n docFrag.appendChild(child);\n }\n wrapper.parentNode.replaceChild(docFrag, wrapper);\n }\n\n @HostListener('window:resize', ['$event'])\n onResize() {\n this.getBarHeight();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { SlimScrollDirective } from './slimscroll.directive';\n\nexport * from './slimscroll-options.class';\n\n@NgModule({\n declarations: [\n SlimScrollDirective\n ],\n exports: [\n SlimScrollDirective\n ]\n})\nexport class SlimScrollModule { }","import { Component, OnInit, HostListener, Input, Output, EventEmitter } from '@angular/core';\nimport { BaseComponent } from 'app/shared/base.component';\nimport { ArquivoUpload } from 'app/_models/arquivo-upload';\nimport { AlteracoesArquivoUpload } from 'app/_models/alteracoes-arquivo-upload';\nimport { AppService } from 'app/_services/app.service';\n\n@Component({\n selector: 'uploadarquivos',\n templateUrl: './uploadarquivos.component.html',\n styleUrls: ['./uploadarquivos.component.scss']\n})\nexport class UploadArquivosComponent extends BaseComponent implements OnInit {\n \n arquivos: ArquivoUpload[] = [];\n private arquivosParaExcluir: ArquivoUpload[] = [];\n errors: Array = [];\n dragAreaClass: string = 'clearfix';\n @Input() qtdeMaximaUpload: number;\n @Input() titulo: string;\n @Input() subTitulo: string\n @Output() salvarAlteracoes = new EventEmitter();\n\n constructor(private appService: AppService) {\n super();\n }\n\n ngOnInit() {\n }\n\n public get maxFiles(): number{\n return (this.qtdeMaximaUpload) ? this.qtdeMaximaUpload : this.appService.configUpload.quantidadeMaxArquivos;\n }\n\n public get maxSize(): number{\n return this.appService.configUpload.limiteTamanhoMB;\n }\n\n public get fileExt(): string{\n return this.appService.configUpload.extensoesSuportadas;\n }\n\n public configuraArquivos(arquivos: ArquivoUpload[]) {\n if (!arquivos)\n return;\n arquivos.forEach(arquivo => {\n arquivo.uploadJaRealizado = true;\n });\n\n this.arquivos = arquivos;\n }\n\n public obterAlteracoesArquivos(): AlteracoesArquivoUpload{\n var alteracoes = new AlteracoesArquivoUpload();\n alteracoes.arquivosParaUpload = this.arquivos.filter(a => !a.uploadJaRealizado);\n alteracoes.arquivosParaExcluir = this.arquivosParaExcluir;\n return alteracoes;\n }\n\n public marcarAlteracoesComoSalvas(){\n this.arquivosParaExcluir = [];\n this.arquivos.forEach(arquivo => {\n arquivo.uploadJaRealizado = true;\n });\n }\n\n private salvarAlteracoesClick(){\n this.salvarAlteracoes.emit(this.obterAlteracoesArquivos());\n }\n\n private get habilitaBotaoSalvar(): boolean {\n return (this.arquivosParaExcluir.length > 0) ||\n ((this.arquivos.filter(a => !a.uploadJaRealizado).length > 0) &&\n (this.arquivos.filter(a => a.uploadJaRealizado).length > 0));\n }\n \n onFileChange(event){\n this.adicionaArquivosValidos(event.target.files);\n }\n\n private get cssDropArea(): string {\n return (this.arquivos.length < this.maxFiles ?\n \"droparea\" : \"droparea-error\") + \" clearfix\";\n }\n\n @HostListener('dragover', ['$event']) onDragOver(event) {\n this.dragAreaClass = this.cssDropArea;\n event.preventDefault();\n }\n \n @HostListener('dragenter', ['$event']) onDragEnter(event) {\n this.dragAreaClass = this.cssDropArea;\n event.preventDefault();\n }\n \n @HostListener('dragend', ['$event']) onDragEnd(event) {\n this.dragAreaClass = \"clearfix\";\n event.preventDefault();\n }\n \n @HostListener('dragleave', ['$event']) onDragLeave(event) {\n this.dragAreaClass = \"clearfix\";\n event.preventDefault();\n }\n @HostListener('drop', ['$event']) onDrop(event) { \n this.dragAreaClass = \"clearfix\"; \n event.preventDefault();\n event.stopPropagation();\n this.adicionaArquivosValidos(event.dataTransfer.files);\n }\n\n limpaErros(){\n this.errors = [];\n }\n\n removerArquivo(index: number){\n this.limpaErros();\n var arquivo = this.arquivos.splice(index, 1)[0];\n if (arquivo.uploadJaRealizado)\n this.arquivosParaExcluir.push(arquivo);\n }\n \n private adicionaArquivosValidos(files: FileList){\n this.limpaErros();\n for (var i = 0; i < files.length; i++) {\n if (this.arquivos.length >= this.maxFiles) {\n this.errors.push(\"Número máximo de arquivos atingido (\" + this.maxFiles + \"). Arquivo não adicionado: \" + files[i].name);\n continue;\n } \n if (!this.isExtensaoValida(files[i])){\n this.errors.push(\"Extensão não suportada: \" + files[i].name);\n continue;\n }\n if (!this.isTamanhoValido(files[i])){\n this.errors.push(\"Tamanho do arquivo excede o limite máximo (\" + this.maxSize + \"mb): \" + files[i].name);\n continue;\n }\n if (this.arquivos.find(a => a.arquivo.name == files[i].name)){\n this.errors.push(\"Arquivo duplicado não adicionado: \" + files[i].name);\n continue;\n }\n \n var arquivo = new ArquivoUpload();\n arquivo.arquivo = files[i];\n this.arquivos.push(arquivo);\n }\n }\n\n private isExtensaoValida(file): boolean {\n // Make array of file extensions\n var extensions = (this.fileExt.split(','))\n .map(function (x) { return x.toLocaleUpperCase().trim() });\n\n // Get file extension\n var ext = file.name.toUpperCase().split('.').pop() || file.name;\n\n // Check the extension exists\n return extensions.includes(ext);\n }\n \n \n private isTamanhoValido(file): boolean {\n var fileSizeinMB = file.size / (1024 * 1000);\n var size = Math.round(fileSizeinMB * 100) / 100; // convert upto 2 decimal place\n return (size <= this.maxSize)\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { UploadArquivosComponent } from './uploadarquivos.component';\nimport { AppService } from 'app/_services/app.service';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule\n ],\n exports: [\n UploadArquivosComponent\n ],\n declarations: [\n UploadArquivosComponent\n ],\n providers: [AppService],\n})\nexport class UploadArquivosModule { }\n","// The file contents for the current environment will overwrite these during build.\n// The build system defaults to the dev environment which uses `environment.ts`, but if you do\n// `ng build --env=prod` then `environment.prod.ts` will be used instead.\n// The list of which env maps to which file can be found in `.angular-cli.json`.\n\nexport const environment = {\n production: false\n};\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\n//platformBrowserDynamic().bootstrapModule(AppModule);\nplatformBrowserDynamic()\n .bootstrapModule(AppModule)\n .catch((err) => console.error(err));\n","var map = {\n\t\"./af\": 58685,\n\t\"./af.js\": 58685,\n\t\"./ar\": 254,\n\t\"./ar-dz\": 4312,\n\t\"./ar-dz.js\": 4312,\n\t\"./ar-kw\": 32614,\n\t\"./ar-kw.js\": 32614,\n\t\"./ar-ly\": 18630,\n\t\"./ar-ly.js\": 18630,\n\t\"./ar-ma\": 28674,\n\t\"./ar-ma.js\": 28674,\n\t\"./ar-ps\": 46235,\n\t\"./ar-ps.js\": 46235,\n\t\"./ar-sa\": 49032,\n\t\"./ar-sa.js\": 49032,\n\t\"./ar-tn\": 24730,\n\t\"./ar-tn.js\": 24730,\n\t\"./ar.js\": 254,\n\t\"./az\": 53052,\n\t\"./az.js\": 53052,\n\t\"./be\": 60150,\n\t\"./be.js\": 60150,\n\t\"./bg\": 63069,\n\t\"./bg.js\": 63069,\n\t\"./bm\": 13466,\n\t\"./bm.js\": 13466,\n\t\"./bn\": 18516,\n\t\"./bn-bd\": 90557,\n\t\"./bn-bd.js\": 90557,\n\t\"./bn.js\": 18516,\n\t\"./bo\": 26273,\n\t\"./bo.js\": 26273,\n\t\"./br\": 9588,\n\t\"./br.js\": 9588,\n\t\"./bs\": 19815,\n\t\"./bs.js\": 19815,\n\t\"./ca\": 83331,\n\t\"./ca.js\": 83331,\n\t\"./cs\": 21320,\n\t\"./cs.js\": 21320,\n\t\"./cv\": 72219,\n\t\"./cv.js\": 72219,\n\t\"./cy\": 68266,\n\t\"./cy.js\": 68266,\n\t\"./da\": 66427,\n\t\"./da.js\": 66427,\n\t\"./de\": 67435,\n\t\"./de-at\": 52871,\n\t\"./de-at.js\": 52871,\n\t\"./de-ch\": 12994,\n\t\"./de-ch.js\": 12994,\n\t\"./de.js\": 67435,\n\t\"./dv\": 82357,\n\t\"./dv.js\": 82357,\n\t\"./el\": 95649,\n\t\"./el.js\": 95649,\n\t\"./en-au\": 59961,\n\t\"./en-au.js\": 59961,\n\t\"./en-ca\": 19878,\n\t\"./en-ca.js\": 19878,\n\t\"./en-gb\": 3924,\n\t\"./en-gb.js\": 3924,\n\t\"./en-ie\": 70864,\n\t\"./en-ie.js\": 70864,\n\t\"./en-il\": 91579,\n\t\"./en-il.js\": 91579,\n\t\"./en-in\": 30940,\n\t\"./en-in.js\": 30940,\n\t\"./en-nz\": 16181,\n\t\"./en-nz.js\": 16181,\n\t\"./en-sg\": 44301,\n\t\"./en-sg.js\": 44301,\n\t\"./eo\": 85291,\n\t\"./eo.js\": 85291,\n\t\"./es\": 54529,\n\t\"./es-do\": 53764,\n\t\"./es-do.js\": 53764,\n\t\"./es-mx\": 12584,\n\t\"./es-mx.js\": 12584,\n\t\"./es-us\": 63425,\n\t\"./es-us.js\": 63425,\n\t\"./es.js\": 54529,\n\t\"./et\": 35203,\n\t\"./et.js\": 35203,\n\t\"./eu\": 70678,\n\t\"./eu.js\": 70678,\n\t\"./fa\": 83483,\n\t\"./fa.js\": 83483,\n\t\"./fi\": 96262,\n\t\"./fi.js\": 96262,\n\t\"./fil\": 52521,\n\t\"./fil.js\": 52521,\n\t\"./fo\": 34555,\n\t\"./fo.js\": 34555,\n\t\"./fr\": 63131,\n\t\"./fr-ca\": 88239,\n\t\"./fr-ca.js\": 88239,\n\t\"./fr-ch\": 21702,\n\t\"./fr-ch.js\": 21702,\n\t\"./fr.js\": 63131,\n\t\"./fy\": 267,\n\t\"./fy.js\": 267,\n\t\"./ga\": 23821,\n\t\"./ga.js\": 23821,\n\t\"./gd\": 71753,\n\t\"./gd.js\": 71753,\n\t\"./gl\": 4074,\n\t\"./gl.js\": 4074,\n\t\"./gom-deva\": 92762,\n\t\"./gom-deva.js\": 92762,\n\t\"./gom-latn\": 5969,\n\t\"./gom-latn.js\": 5969,\n\t\"./gu\": 82809,\n\t\"./gu.js\": 82809,\n\t\"./he\": 45402,\n\t\"./he.js\": 45402,\n\t\"./hi\": 315,\n\t\"./hi.js\": 315,\n\t\"./hr\": 10410,\n\t\"./hr.js\": 10410,\n\t\"./hu\": 38288,\n\t\"./hu.js\": 38288,\n\t\"./hy-am\": 67928,\n\t\"./hy-am.js\": 67928,\n\t\"./id\": 71334,\n\t\"./id.js\": 71334,\n\t\"./is\": 86959,\n\t\"./is.js\": 86959,\n\t\"./it\": 34864,\n\t\"./it-ch\": 51124,\n\t\"./it-ch.js\": 51124,\n\t\"./it.js\": 34864,\n\t\"./ja\": 36141,\n\t\"./ja.js\": 36141,\n\t\"./jv\": 29187,\n\t\"./jv.js\": 29187,\n\t\"./ka\": 42136,\n\t\"./ka.js\": 42136,\n\t\"./kk\": 94332,\n\t\"./kk.js\": 94332,\n\t\"./km\": 18607,\n\t\"./km.js\": 18607,\n\t\"./kn\": 84305,\n\t\"./kn.js\": 84305,\n\t\"./ko\": 70234,\n\t\"./ko.js\": 70234,\n\t\"./ku\": 16003,\n\t\"./ku-kmr\": 19619,\n\t\"./ku-kmr.js\": 19619,\n\t\"./ku.js\": 16003,\n\t\"./ky\": 75061,\n\t\"./ky.js\": 75061,\n\t\"./lb\": 32786,\n\t\"./lb.js\": 32786,\n\t\"./lo\": 66183,\n\t\"./lo.js\": 66183,\n\t\"./lt\": 50029,\n\t\"./lt.js\": 50029,\n\t\"./lv\": 24169,\n\t\"./lv.js\": 24169,\n\t\"./me\": 68577,\n\t\"./me.js\": 68577,\n\t\"./mi\": 68177,\n\t\"./mi.js\": 68177,\n\t\"./mk\": 50337,\n\t\"./mk.js\": 50337,\n\t\"./ml\": 65260,\n\t\"./ml.js\": 65260,\n\t\"./mn\": 52325,\n\t\"./mn.js\": 52325,\n\t\"./mr\": 14695,\n\t\"./mr.js\": 14695,\n\t\"./ms\": 75334,\n\t\"./ms-my\": 37151,\n\t\"./ms-my.js\": 37151,\n\t\"./ms.js\": 75334,\n\t\"./mt\": 63570,\n\t\"./mt.js\": 63570,\n\t\"./my\": 97963,\n\t\"./my.js\": 97963,\n\t\"./nb\": 88028,\n\t\"./nb.js\": 88028,\n\t\"./ne\": 86638,\n\t\"./ne.js\": 86638,\n\t\"./nl\": 50302,\n\t\"./nl-be\": 66782,\n\t\"./nl-be.js\": 66782,\n\t\"./nl.js\": 50302,\n\t\"./nn\": 33501,\n\t\"./nn.js\": 33501,\n\t\"./oc-lnc\": 50563,\n\t\"./oc-lnc.js\": 50563,\n\t\"./pa-in\": 50869,\n\t\"./pa-in.js\": 50869,\n\t\"./pl\": 65302,\n\t\"./pl.js\": 65302,\n\t\"./pt\": 49687,\n\t\"./pt-br\": 74884,\n\t\"./pt-br.js\": 74884,\n\t\"./pt.js\": 49687,\n\t\"./ro\": 79107,\n\t\"./ro.js\": 79107,\n\t\"./ru\": 33627,\n\t\"./ru.js\": 33627,\n\t\"./sd\": 30355,\n\t\"./sd.js\": 30355,\n\t\"./se\": 83427,\n\t\"./se.js\": 83427,\n\t\"./si\": 11848,\n\t\"./si.js\": 11848,\n\t\"./sk\": 54590,\n\t\"./sk.js\": 54590,\n\t\"./sl\": 20184,\n\t\"./sl.js\": 20184,\n\t\"./sq\": 56361,\n\t\"./sq.js\": 56361,\n\t\"./sr\": 78965,\n\t\"./sr-cyrl\": 81287,\n\t\"./sr-cyrl.js\": 81287,\n\t\"./sr.js\": 78965,\n\t\"./ss\": 25456,\n\t\"./ss.js\": 25456,\n\t\"./sv\": 70451,\n\t\"./sv.js\": 70451,\n\t\"./sw\": 77558,\n\t\"./sw.js\": 77558,\n\t\"./ta\": 51356,\n\t\"./ta.js\": 51356,\n\t\"./te\": 73693,\n\t\"./te.js\": 73693,\n\t\"./tet\": 21243,\n\t\"./tet.js\": 21243,\n\t\"./tg\": 42500,\n\t\"./tg.js\": 42500,\n\t\"./th\": 55768,\n\t\"./th.js\": 55768,\n\t\"./tk\": 77761,\n\t\"./tk.js\": 77761,\n\t\"./tl-ph\": 35780,\n\t\"./tl-ph.js\": 35780,\n\t\"./tlh\": 29590,\n\t\"./tlh.js\": 29590,\n\t\"./tr\": 33807,\n\t\"./tr.js\": 33807,\n\t\"./tzl\": 93857,\n\t\"./tzl.js\": 93857,\n\t\"./tzm\": 60654,\n\t\"./tzm-latn\": 8806,\n\t\"./tzm-latn.js\": 8806,\n\t\"./tzm.js\": 60654,\n\t\"./ug-cn\": 30845,\n\t\"./ug-cn.js\": 30845,\n\t\"./uk\": 19232,\n\t\"./uk.js\": 19232,\n\t\"./ur\": 47052,\n\t\"./ur.js\": 47052,\n\t\"./uz\": 77967,\n\t\"./uz-latn\": 32233,\n\t\"./uz-latn.js\": 32233,\n\t\"./uz.js\": 77967,\n\t\"./vi\": 98615,\n\t\"./vi.js\": 98615,\n\t\"./x-pseudo\": 12320,\n\t\"./x-pseudo.js\": 12320,\n\t\"./yo\": 31313,\n\t\"./yo.js\": 31313,\n\t\"./zh-cn\": 64490,\n\t\"./zh-cn.js\": 64490,\n\t\"./zh-hk\": 55910,\n\t\"./zh-hk.js\": 55910,\n\t\"./zh-mo\": 98262,\n\t\"./zh-mo.js\": 98262,\n\t\"./zh-tw\": 44223,\n\t\"./zh-tw.js\": 44223\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;"],"names":["Component","ViewChild","ActivatedRoute","Router","MessageService","MessageComponent","DataService","SharedService","BaseComponent","DatepickerService","DateModel","DateExtensions","SporadicTaxService","SporadicTax","TipoTaxaEsporadicaService","PortoService","AppService","moment","TaxaEsporadicaDetalheComponent","constructor","_appService","_dataService","_route","_msgService","_sharedService","_router","_datepickerService","_sporadicTaxService","route","_tipoTaxaEsporadicaService","_portoService","Array","Date","emitirMensagem","subscribe","msg","mensagem","mostrarMensagem","tipo","ObterDataFields","ngOnInit","dataInicioSelecionada","setDataInicioPeriodo","dataFimSelecionada","addDays","qtdDiasFim","setDataFimPeriodo","inscricaoGet","params","id","titulo","loading","isNovaTaxa","getTaxaEsporadica","sporadicTax","OnChangeSporadicTaxTypeCmb","value","sporadicTaxTypeId","parseInt","target","OnChangeOriginRegionCmb","portosOrigem","portosOrigemSendoTrabalhado","findByRegionId","originRegionId","lista","console","log","OnChangeOriginPortoCmb","getPortoById","originPortId","OnChangeOriginModalIdCmb","originModalId","OnChangeDestinationRegionCmb","portosDestino","portosDestinoSendoTrabalhado","destinationRegionId","OnChangeDestinationPortoCmb","destinationPortId","portoId","listaPortos","getById","push","OnChangeDestinationModalCmb","destinationModalId","getRegiaoGeografica","regioesGeograficas","getTipoModal","tiposModais","getAll","tipoTaxaEsporadicasList","ObterData","dateModel","dateOffset","undefined","ObtemData","onSaveTaxaEsporadica","clearMessage","msgErr","validacoes","createdBy","UsuarioLogado","Nome","startDate","startDateModel","toDate","expirationDate","expirationDateModel","venceTaxaVigenteCheckBox","document","getElementById","acao","salvar","result","IsValid","addMessageRedirect","navigate","Erros","forEach","element","Message","getSporadicTax","data","toString","_year","substr","_month","_day","setDate","getDate","containerType20Value","parseFloat","replace","containerType40Value","validaDataInicial","isPeriodoFinalInvalido","_dataInicial","inicioDateModel","validaDataFinal","isPeriodoInicialInvalido","_dataFinal","fimDateModel","setProximoInicioValido","isSporadicTaxTypeSelected","isOriginRegionSelected","isOriginModalSelected","isDestinationRegionSelected","isDestinationModaSelected","findLastExpirationDate","getFullYear","getMonth","getDay","dataInicioOptions","GenerateOptionsConfig","toDateModel","_dataFim","novaData","initialDate","day","month","year","dataFimOptions","dataTmp","getToday","dia","mes","ano","mensagens","isNomeTaxaPreenchido","sporadicTaxName","length","isTipoTaxaSelecionada","args","static","selector","template","swal","DoctoFaturaRequest","NavioViagemRequest","DoctoFaturaArquivoRequest","NavioViagemService","DocumentacaoService","GrupoEconomicoService","ListaDocumentacaoComponent","FiltroDocumentacaoComponent","AnalyticsService","AnalyticsTela","AnalyticsOperacao","Operacao","LogFrontFuncionalidade","OkEntregaService","ImagemNF","BaseService","OkEntregaConsultaLink","DocumentacaoComponent","_documentacaoService","_grupoService","_navioViagemService","_datePickerService","_analyticsService","_okEntregaService","_baseService","isAdmin","isCliente","maisDeUmCNPJ","cssClassAdmin","eAdmin","eCliente","clicouSelecionarTodos","usuario","cnpjs","CNPJs","join","cnpjAlterado","ObterDocumentacao","filtro","cnpjdropdown","cnpjsGrupos","localStorage","getItem","RegistrarAcesso","Documentacao","ngAfterViewInit","grupoEconomicoSelecionadoEvent","consulta","cnpjCli","clickPesquisar","zeraPesquisa","clickEnviarArquivoEmail","dados","sending","arquivos","arquivo","RegistrarEmailDocumentacao","enviaEmailArquivos","sucesso","showSwal","clickEnviarTodosEmail","doctoFatura","RegistrarEmailDocumentacaoTodos","Arquivos","enviarSelecionados","selecionados","listaDoctoFatura","filter","d","selecionado","RegistrarOperacao","EmailAposSelecionarTodos","enviaEmailSelecionados","clickDownloadArquivo","tipoArquivo","imagem","caminhoArquivo","getPDFCanhotos","res","download","numNFe","downloading","RegistrarDownloadDocumentacao","downloadArquivo","executarDownload","clickDownloadTodosArquivos","RegistrarDownloadDocumentacaoTodos","downloadTodos","find","addFileToZipAndDownload","b64toBlob","baixarCanhotos","DownloadAposSelecionarTodos","consultas","map","numBooking","getLinkCanhotos","response","validAndDownload","c","numNF","baixarTodosSelecionados","namesZips","zips","zipCo2","CertificadosCo2Zipados","zipCanhotos","canhotosZipados","downloadSelecionados","zipAndDownload","toPromise","then","retorno","requests","Object","values","Data","linkCanhoto","names","r","index","zip","links","construirLinks","BaseGetAllBlobforkJoin","x","type","getNamesCertificadosCo2","nfNums","returnZip","addMessageArray","e","Consulta","baixarCertificados","downloadAllAndZip","indicEcoFrete","idViagreen","idsViaGreen","split","configViaGreen","apiUrlDownloadCertificado","token","baixarSelecionados","returnB64","selecionarTodos","SelecionarTodos","alteradoPageSize","pageSize","alteradaOrdenacao","ordenacao","buscarArquivos","request","idUsuario","UsuarioIDeCargo","numFatBol","numNfeCte","numNFeCte","doctoPagtoId","doctoTransporteId","getListaArquivos","listaArquivos","empty","noresult","paginacao","pagedItems","pager","dataInicio","dataFim","dataEmissaoIni","dataEmissaoFim","registrarAnalytics","CNPJDigitado","addMessage","validaCNPJnoGrupo","ini","valueOf","fim","diasDiff","Math","floor","RegistrarFiltroDocumentacao","getListaDocumentacao","listaDocumentacao","carregaListaDocumentacao","ConfiguraNavioViagens","viagens","ObterNaviosViagens","getNavioViagem","cnpj","CNPJCliente","CNPJProvedor","dataIni","Download","FileSaver","require","byteArray","saveAs","nomeArquivo","message","title","text","showConfirmButton","showCancelButton","confirmButtonText","success","dismiss","b64Data","contentType","sliceSize","byteCharacters","atob","byteArrays","offset","slice","byteNumbers","i","charCodeAt","Uint8Array","blob","Blob"],"sourceRoot":"webpack:///"}