Introdução

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:

Paradigma

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.

O porquê da escolha

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.

Arquitetura

Desenvolvemos a rotina SCANCREF utilizando dois modelos arquiteturais:

1. Arquitetura em camadas (Layered Architecture)

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:

O porquê da escolha

Escolhemos essa abordagem visando os seguintes motivos:

2. Model-View-Controller ou MVC

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

O porquê da escolha

Escolhemos essa abordagem devido ao domínio do time sobre a tecnologia.

Linguagem

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.

O porquê da escolha

As justificativas são:


Anexo I – Classes e métodos



FieldOfScanRef class


Classe genérica com métodos e propriedades comuns à todos os registros do SCANC Refinaria

Definição:

Sintaxe

FieldOfScanRef()




toString of Class FieldOfScanRef method


Retorna o registro no formato Character

Definição:

Sintaxe

FieldOfScanRef():toString()

Retorno

TipoDescrição
CharacterRetorna o registro no formato Character




RegA6HD class


Classe modelo para o registro de cabeçalho do arquivo SCANC Refinaria

Definição:

Sintaxe

RegA6HD()




RegA6Q3 class


Classe modelo para o registro QUADRO 3 - OPERAÇÕES REALIZADAS PELO EMITENTE DO RELATÓRIO

Definição:

Sintaxe

RegA6Q3()




RegA6Q1 class


QUADRO 1 - Anexo VI Quadro 1 - VALOR DEVIDO POR OPERAÇÕES COM IMPOSTO RETIDO

Definição:

Sintaxe

RegA6Q1()




RegA6Q2 class


QUADRO 2 - APURAÇÃO DO ICMS PROVISIONADO

Definição:

Sintaxe

RegA6Q2()




RegA6Q41 class


QUADRO 4.1 - REPASSE POR OPERAÇÕES REALIZADAS POR DISTRIBUIDORAS/TRR (Transportador Revendedor Retalhista de Combustível)

Definição:

Sintaxe

RegA6Q41()




RegA6Q42 class


QUADRO 4.2 - OPERAÇÕES COM IMPOSTO RETIDO POR OUTROS CONTRIBUINTES

Definição:

Sintaxe

RegA6Q42()




RegA6Q43 class


QUADRO 4.3 - RELATÓRIOS EXTEMPORÂNEOS

Definição:

Sintaxe

RegA6Q43()




RegA6Q5 class


QUADRO 5 - REPASSE POR OPERAÇÕES REALIZADAS POR IMPORTADORES

Definição:

Sintaxe

RegA6Q5()




RegA6Q6 class


QUADRO 6 - REPASSE POR REMESSA DE AEAC (Álcool etílico anidro combustível) OU DE B100 (Biodisel) PARA OUTRAS UF

Definição:

Sintaxe

RegA6Q6()




RegA6Q61 class


QUADRO 6.1 - OPERAÇÕES COM IMPOSTO RETIDO POR ESTABELECIMENTO DO EMITENTE

Definição:

Sintaxe

RegA6Q61()




RegA6Q62 class


QUADRO 6.2 - OPERAÇÕES COM IMPOSTO RETIDO POR OUTROS CONTRIBUINTES

Definição:

Sintaxe

RegA6Q62()




RegA6Q63 class


QUADRO 6.3 – RELATÓRIOS EXTEMPORÂNEOS

Definição:

Sintaxe

RegA6Q63()




RegA6Q71 class


QUADRO 7.1 - OPERAÇÕES COM IMPOSTO RETIDO POR ESTABELECIMENTO DO EMITENTE

Definição:

Sintaxe

RegA6Q71()




RegA6Q72 class


QUADRO 7.2 - OPERAÇÕES COM IMPOSTO RETIDO POR OUTROS CONTRIBUINTES

Definição:

Sintaxe

RegA6Q72()




RegA6Q73 class


QUADRO 7.3 – RELATÓRIOS EXTEMPORÂNEOS

Definição:

Sintaxe

RegA6Q73()




RegA6Q8 class


QUADRO 8 - DEDUÇÃO POR OPERAÇÕES REALIZADAS POR IMPORTADORES

Autorrodrigo.ccandidoDesde17/02/2023Versão12.1.2210

Definição:

Sintaxe

RegA6Q8()




RegA6Q91 class


QUADRO 9.1 - OPERAÇÕES COM IMPOSTO RETIDO POR ESTABELECIMENTO DO EMITENTE

Autorrodrigo.ccandidoDesde17/02/2023Versão12.1.2210

Definição:

Sintaxe

RegA6Q91()




RegA6Q92 class


QUADRO 9.2 - OPERAÇÕES COM IMPOSTO RETIDO POR OUTROS CONTRIBUINTES

Autorrodrigo.ccandidoDesde17/02/2023Versão12.1.2210

Definição:

Sintaxe

RegA6Q92()




RegA6Q93 class


QUADRO 9.3 – RELATÓRIOS EXTEMPORÂNEOS

Autorrodrigo.ccandidoDesde17/02/2023Versão12.1.2210

Definição:

Sintaxe

RegA6Q93()




RegA6Q10 class


QUADRO 10 - DEDUÇÃO POR RESSARCIMENTO EFETUADO A DISTRIBUIDORAS

Autorrodrigo.ccandidoDesde17/02/2023Versão12.1.2210

Definição:

Sintaxe

RegA6Q10()




RegA6Q11 class


QUADRO 11 - DEDUÇÃO POR RESSARCIMENTO EFETUADO A TRR

Autorrodrigo.ccandidoDesde17/02/2023Versão12.1.2210

Definição:

Sintaxe

RegA6Q11()




RegA6Q12 class


QUADRO 12 - DEDUÇÃO POR RESSARCIMENTO EFETUADO A IMPORTADORES

Autorrodrigo.ccandidoDesde17/02/2023Versão12.1.2210

Definição:

Sintaxe

RegA6Q12()




RegA6Q13 class


QUADRO 13 - DEDUÇÃO POR RESSARCIMENTO EFETUADO A OUTROS CONTRIBUINTES

Autorrodrigo.ccandidoDesde17/02/2023Versão12.1.2210

Definição:

Sintaxe

RegA6Q13()




RegA6Q14 class


QUADRO 14 - DEDUÇÃO TRANSFERIDA DE OUTRO ESTABELECIMENTO DO SUJEITO PASSIVO POR SUBSTITUIÇÃO

Autorrodrigo.ccandidoDesde17/02/2023Versão12.1.2210

Definição:

Sintaxe

RegA6Q14()




RegA6Q15 class


QUADRO 15 - DEDUÇÃO TRANSFERIDA PARA OUTRO ESTABELECIMENTO DO SUJEITO PASSIVO POR SUBSTITUIÇÃO

Autorrodrigo.ccandidoDesde17/02/2023Versão12.1.2210

Definição:

Sintaxe

RegA6Q15()