01. Visão Geral

O simulador de cálculo de tributos oferece diversas possibilidades de simulações para operações de entrada e saída. Ele permite estimar os tributos envolvidos em compras e vendas, seguindo as regras fiscais previamente configuradas. Com essa ferramenta, é possível prever o impacto dos impostos sobre cada operação, identificar possíveis inconsistências tributárias e ajustar cenários fiscais para maior conformidade. Além disso, o simulador possibilita testar diferentes situações, como variações de alíquotas e regimes tributários, garantindo uma análise precisa e confiável dos tributos aplicáveis a cada transação.

Este projeto foi desenvolvido em POUI no front-end e utilizando api's para comunicação com os dados no backend. 

Foram utilizada as melhores práticas para o andamento do projeto.

02. Artefatos

BACKOFFICE.FISCAL.API.BRANCHES.TLPP 

Objetivo e escopo: Objetivo desta rotina é de realizar a consulta de filiais do sistema de acordo com as permissões do usúario e utiliza a arquitetura REST para trasmissão de informação entre o Front-end e back-end. Maiores informações estão na sessão API's com todos os detalhes acerca do contrato dessa API.

BACKOFFICE.FISCAL.API.CFGRULES.TLPP 

Objetivo e escopo: Objetivo desta rotina é de realizar a consulta das Regras de Cálculo do configurador de tributos de acordo com a filial selecionada no front-end e utiliza a arquitetura REST para trasmissão de informação entre o Front-end e back-end. Maiores informações estão na sessão API's com todos os detalhes acerca do contrato dessa API. 

BACKOFFICE.FISCAL.API.CFOP.TLPP  

Objetivo e escopo:  Objetivo desta rotina é de realizar a consulta de todas as CFOP's e utiliza a arquitetura REST para trasmissão de informação entre o Front-end e back-end. Maiores informações estão na sessão API's com todos os detalhes acerca do contrato dessa API.

BACKOFFICE.FISCAL.API.CUSTOMER.TLPP 

Objetivo e escopo: Objetivo desta rotina é de realizar a consulta da base de clientes de acordo com a filial selecionada no front-end e utiliza a arquitetura REST para trasmissão de informação entre o Front-end e back-end. Maiores informações estão na sessão API's com todos os detalhes acerca do contrato dessa API. 

BACKOFFICE.FISCAL.API.ORIGE.TLPP  

Objetivo e escopo: Objetivo desta rotina é de realizar a consulta de todas as Origens de produto e utiliza a arquitetura REST para trasmissão de informação entre o Front-end e back-end. Maiores informações estão na sessão API's com todos os detalhes acerca do contrato dessa API.

BACKOFFICE.FISCAL.API.PRODUCTS.TLPP 

Objetivo e escopo: Objetivo desta rotina é de realizar a consulta da base de Produtos de acordo com a filial selecionada no front-end e utiliza a arquitetura REST para trasmissão de informação entre o Front-end e back-end. Maiores informações estão na sessão API's com todos os detalhes acerca do contrato dessa API. 

BACKOFFICE.FISCAL.API.VENDOR.TLPP  

Objetivo e escopo: Objetivo desta rotina é de realizar a consulta da base de fornecedores de acordo com a filial selecionada no front-end e utiliza a arquitetura REST para trasmissão de informação entre o Front-end e back-end. Maiores informações estão na sessão API's com todos os detalhes acerca do contrato dessa API. 

BACKOFFICE.FISCAL.CALCULATION.SERVICE.TLPP 

Objetivo e escopo: Objetivo desta rotina é de realizar o processamento da requisição de simulação de cálculo proveniente do front-end, na qual são chamados métodos que tratam o JSON de requisição e ativam a MATXFIS para execução dos calculos.

BACKOFFICE.FISCAL.CALCULATION.SIMULATOR.CONTROLLER.TLPP  

Objetivo e escopo: Objetivo desta rotina é de recepcionar a requisição de simulação de cálculo e depois de passar pelos métodos do backoffice.fiscal.calculation.service , receber o JSON de resposta para ser disponibilizado o resultado na tela do FRONT-END. 

BACKOFFICE.FISCAL.SIMULATOR.DIAGNOSE.CONTROLLER.TLPP  

Objetivo e escopo: Objetivo desta rotina é de recepcionar a requisição de diagnóstico e depois de passar pelos métodos do backoffice.fiscal.simulator.diagnose.service , receber o JSON de resposta para ser disponibilizado o resultado na tela do FRONT-END. 

BACKOFFICE.FISCAL.SIMULATOR.DIAGNOSE.SERVICE.TLPP  

Objetivo e escopo: Objetivo desta rotina é de realizar o processamento da requisição de diagnóstico do tributo escolhido na tela do front-end, na qual são chamados métodos que tratam o JSON de requisição e realiza consultas nas tabelas F21, F22, F23, F24, F25 e F2B para devolver a resposta do diagnóstico

BACKOFFICE.FISCAL.TAXCONFIGURATORINTEGRATION.TCICLASS.TLPP 

Objetivo e escopo: Essa rotina está documentada no link : Classe TCIProcessing - Tax Configurator Integration Processing (Processamento de Integração do Configurador Fiscal) e nesse projeto houve alterações pontuais para atender a questão do código de lançamento.

CONFIGURADORFISCAL.APP

Objetivo e escopo: Esse fonte é a aplicação do fornt-end encapsulada no RPO do Protheus

FISA160.PRW 

Objetivo e escopo: Essa rotina está documentada no link FIS002 - Documentação Técnica Configurador de Tributos e nesse projeto houve alterações pontuais para melhoria de performance.

FISA170A.PRW  

Objetivo e escopo: Objetivo desta rotina é a chamada no Menu do módulo de livros fiscais, na qual é chamada a função CALLCONFIG que irá iniciar a aplicação em POUI.

FISCOMPFOR.PRW 

Objetivo e escopo: Essa rotina está documentada no link FIS002 - Documentação Técnica Configurador de Tributos e nesse projeto houve alterações pontuais para melhoria de performance.

03. Api's

O projeto foi desenvolvimento em POUI, portanto foi necessario o desenvolvimento de API Rest para comunicação com o banco de dados. Abaixo estão os links com toda a documentação relacionada ao contrato de API e todo o detalhamento acerca de seu funcionamento:

https://code.engpro.totvs.com.br/totvs-fiscal/configuradorfiscal

https://code.engpro.totvs.com.br/totvs-fiscal/configuradorfiscal/wiki/%2Fsimulator-API%27s-do-Projeto

04. Estrutura Front-End

Nesta seção será abordado os detalhes com relação a estrutura e detalhes do FRONT-END

O projeto encontra-se no link : https://code.engpro.totvs.com.br/totvs-fiscal/configuradorfiscal

No arquivo README.rd do projeto tem detalhes sobre a instalação do Angular e outras ferramentas que utilizamos no projeto.

INFORMAÇÕES BÁSICAS

           Nesse projeto estamos utilizando a versão 17 do Angular e conjunto com a versão 17 do protheus Lib-core, abaixo o retrato das dependências utilizadas:

           

           Demais dependências podem ser vistas no arquivo "package.json" do projeto.

ESTRUTURA DE PASTAS

          O projeto foi idealizado para que seja escalável, portanto dentro da pasta "Views, há uma pasta chamada "simulator" na qual tem os componentes referente ao projeto de simulador de cálculo.

          Como estamos utilizando a versão 17 do angular na modo standalone, nesse projeto não há "Modules" como é visto em projetos de versões anteriores.

         

         

Models

No componente "simulatorresult" houve a necessidade de utilzar os models para poder separar as informações recebidas no JSON de resposta.

Ao todo são 6 models: 


AdjustmentsDeclaratory→  Interface para mapear os campos para a tabela de Ajustes Declaratórios na pagina de resultados.

  item: string;
  sequencia: string;
  codigo: string;
  base_calculo: number;
  aliquota: number;
  valor: number;
  sistema: string;
  outros_valores: number;
  observacao: string;
  cod_regra: string;

AdjustmentsLaunch → Interface que mapeia os campos para a tabela de Ajuste de Código de Lançamento na pagina de resultados.

  item: string;
  sequencia: string;
  codigo: string;
  base_calculo: number;
  aliquota: number;
  valor: number;
  sistema: string;
  outros_valores: number;
  observacao: string;
  cod_regra: string;

SimulatorApiResponse → Interface que agrupa as outras interfaces como SpreadSheet, TaxesPerItem, AdjustmentsLaunch, AdjustmentsDeclaratory

 tributos: { [key: string]: SpreadSheet };
  tributos_por_item: { [key: string]: { [key: string]: TaxesPerItem } };
  lancamentos_por_item: {
    [key: string]: {
      ajustes: AdjustmentsLaunch[];
      declaratorios: AdjustmentsDeclaratory[];
    };
  };

SpreadSheet → Interface que mapeia os campos da tabela com o resumo dos impostos calculados na pagina de resultados.

  codigo: string;
  descricao: string;
  base: number;
  aliquota: number;
  valor: number;
  nome: string;

tax-calculation → Nesse arquivo reune diversas interfaces referentes aos tributos calculados.

TaxCalculationResult → Interface agrupadora das outras interfaces listadas acima.

TaxesPerItem → Interface que mapeia os campos da tabela com os tributos por item na pagina de resultados.

  cod_regra: string;
  desc_regra: string;
  base_trib: number;
  aliq_trib: number;
  val_trib: number;
  cst: string;
  valor_tributado: number;
  valor_isento: number;
  valor_outros: number;
  valor_nao_tribut: number;
  valor_diferido: number;
  valor_majorado: number;


Services

environments

Views - Home


Views/simulator - home

Views/simulator- simulatorstep

Views/simulator - simulatorheader

Views/simulator - simulatoritems

           


Views/simulator - simulatorresult

Views/simulator - simulatordiagnostic

Demais Arquivos

app.component.ts


app.routes.ts


05. Automações

Nesta seção sera listado as automações que foram desenvolvidas para os fontes de backend: