Neste documento procuramos apresentar e justificar as escolhas técnicas realizadas durante a implementação da rotina SCANCREF. As escolhas podem ser agrupadas da seguinte maneira:
A decisão de utilizar a Orientação a Objetos em detrimento da programação estruturada é provavelmente a mudança mais significativa empregada no desenvolvimento desta rotina.
Não chega a ser uma novidade na Squad a existência de rotinas utilizando este modelo, porém o que torna a nossa abordagem um tanto mais inovadora é o uso de padrões de arquitetura e recursos avançados da linguagem que potencializam o poder de abstração da orientação a objetos.
A escolha do paradigma foi orientada pelas vantagens que o mesmo traz para o desenvolvimento:
Todas estas vantagens foram exploradas com maior ou menor intensidade durante o desenvolvimento. Ao final deste documento deixamos a documentação no padrão Protheus Doc com a descrição das classes e métodos criados. |
Desenvolvemos a rotina SCANCREF utilizando dois modelos arquiteturais:
O primeiro deles é um modelo em camadas. É importante lembrar que nesta parte da aplicação não há necessidade de persistência de dados, logo não foi necessário se preocupar com uma interface gráfica para entrada de informações por parte do usuário. As camadas criadas são resumidas abaixo:
Escolhemos essa abordagem visando os seguintes motivos:
Aqui foram desenvolvidas as tabelas e as respectivas telas para entrada de informações, utilizando as funções MVC disponibilizadas pelo Framework.
FISA309 - Cadastro dos Quadros - Scanc Refinaria do Anexo VI
FISA310
Escolhemos essa abordagem devido ao domínio do time sobre a tecnologia.
Embora não seja mandatória em relação às escolhas de paradigma e arquitetura – inclusive, cronologicamente, a escolha da linguagem foi anterior a estas últimas –, optamos pelo uso do TLPP.
As justificativas são:
Anexo I – Classes e métodos
Classe genérica com métodos e propriedades comuns à todos os registros do SCANC Refinaria
FieldOfScanRef()
Retorna o registro no formato Character
FieldOfScanRef():toString()
Tipo | Descrição |
---|---|
Character | Retorna o registro no formato Character |
Classe modelo para o registro de cabeçalho do arquivo SCANC Refinaria
RegA6HD()
Classe modelo para o registro QUADRO 3 - OPERAÇÕES REALIZADAS PELO EMITENTE DO RELATÓRIO
RegA6Q3()
QUADRO 1 - Anexo VI Quadro 1 - VALOR DEVIDO POR OPERAÇÕES COM IMPOSTO RETIDO
RegA6Q1()
QUADRO 2 - APURAÇÃO DO ICMS PROVISIONADO
RegA6Q2()
QUADRO 4.1 - REPASSE POR OPERAÇÕES REALIZADAS POR DISTRIBUIDORAS/TRR (Transportador Revendedor Retalhista de Combustível)
RegA6Q41()
QUADRO 4.2 - OPERAÇÕES COM IMPOSTO RETIDO POR OUTROS CONTRIBUINTES
RegA6Q42()
QUADRO 4.3 - RELATÓRIOS EXTEMPORÂNEOS
RegA6Q43()
QUADRO 5 - REPASSE POR OPERAÇÕES REALIZADAS POR IMPORTADORES
RegA6Q5()
QUADRO 6 - REPASSE POR REMESSA DE AEAC (Álcool etílico anidro combustível) OU DE B100 (Biodisel) PARA OUTRAS UF
RegA6Q6()
QUADRO 6.1 - OPERAÇÕES COM IMPOSTO RETIDO POR ESTABELECIMENTO DO EMITENTE
RegA6Q61()
QUADRO 6.2 - OPERAÇÕES COM IMPOSTO RETIDO POR OUTROS CONTRIBUINTES
RegA6Q62()
QUADRO 6.3 RELATÓRIOS EXTEMPORÂNEOS
RegA6Q63()
QUADRO 7.1 - OPERAÇÕES COM IMPOSTO RETIDO POR ESTABELECIMENTO DO EMITENTE
RegA6Q71()
QUADRO 7.2 - OPERAÇÕES COM IMPOSTO RETIDO POR OUTROS CONTRIBUINTES
RegA6Q72()
QUADRO 7.3 RELATÓRIOS EXTEMPORÂNEOS
RegA6Q73()
QUADRO 8 - DEDUÇÃO POR OPERAÇÕES REALIZADAS POR IMPORTADORES
Autorrodrigo.ccandidoDesde17/02/2023Versão12.1.2210
RegA6Q8()
QUADRO 9.1 - OPERAÇÕES COM IMPOSTO RETIDO POR ESTABELECIMENTO DO EMITENTE
Autorrodrigo.ccandidoDesde17/02/2023Versão12.1.2210
RegA6Q91()
QUADRO 9.2 - OPERAÇÕES COM IMPOSTO RETIDO POR OUTROS CONTRIBUINTES
Autorrodrigo.ccandidoDesde17/02/2023Versão12.1.2210
RegA6Q92()
QUADRO 9.3 RELATÓRIOS EXTEMPORÂNEOS
Autorrodrigo.ccandidoDesde17/02/2023Versão12.1.2210
RegA6Q93()
QUADRO 10 - DEDUÇÃO POR RESSARCIMENTO EFETUADO A DISTRIBUIDORAS
Autorrodrigo.ccandidoDesde17/02/2023Versão12.1.2210
RegA6Q10()
QUADRO 11 - DEDUÇÃO POR RESSARCIMENTO EFETUADO A TRR
Autorrodrigo.ccandidoDesde17/02/2023Versão12.1.2210
RegA6Q11()
QUADRO 12 - DEDUÇÃO POR RESSARCIMENTO EFETUADO A IMPORTADORES
Autorrodrigo.ccandidoDesde17/02/2023Versão12.1.2210
RegA6Q12()
QUADRO 13 - DEDUÇÃO POR RESSARCIMENTO EFETUADO A OUTROS CONTRIBUINTES
Autorrodrigo.ccandidoDesde17/02/2023Versão12.1.2210
RegA6Q13()
QUADRO 14 - DEDUÇÃO TRANSFERIDA DE OUTRO ESTABELECIMENTO DO SUJEITO PASSIVO POR SUBSTITUIÇÃO
Autorrodrigo.ccandidoDesde17/02/2023Versão12.1.2210
RegA6Q14()
QUADRO 15 - DEDUÇÃO TRANSFERIDA PARA OUTRO ESTABELECIMENTO DO SUJEITO PASSIVO POR SUBSTITUIÇÃO
Autorrodrigo.ccandidoDesde17/02/2023Versão12.1.2210
RegA6Q15()