Histórico da Página
CONTEÚDO
Índice | ||
---|---|---|
|
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:
...
- Reutilização de código: objetos podem ser reutilizados em diferentes partes do programa, o que economiza tempo e esforço de desenvolvimento.
- Modularidade: os objetos podem ser criados independentemente e depois integrados em um programa maior. Isso ajuda a separar as diferentes partes do programa em módulos lógicos, tornando o programa mais fácil de entender, manter e modificar.
- Abstração: objetos permitem que você abstraia conceitos e ideias em representações mais concretas e fáceis de entender. Isso torna o código mais legível e fácil de manter.
- Encapsulamento: a orientação a objetos permite que você esconda a complexidade interna de um objeto. Isso torna o objeto mais fácil de usar, porque o usuário só precisa conhecer as funções públicas disponíveis e não precisa se preocupar com detalhes internos.
- Herança: a orientação a objetos permite que você crie hierarquias de objetos, com objetos mais especializados derivados de objetos mais gerais. Isso economiza tempo e esforço de desenvolvimento, uma vez que você pode reutilizar e modificar objetos existentes em vez de criar novos a partir do zero.
- Produtividade: cada desenvolvedor pôde focar no desenvolvimento de uma parte do programa, já que este foi abstraído em classes com finalidades bem definidas. Isso aumentou a produtividade e minimizou as chances de desencontros no momento do merge.
Aviso | ||
---|---|---|
| ||
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. |
...
- Separação de responsabilidades: cada camada tem uma responsabilidade específica, tornando o código mais fácil de entender, alterar e depurar.
- Reutilização de código: as camadas são isoladas e independentes, permitindo que o código seja reutilizado em outros projetos ou partes do mesmo projeto. Isto se aplica, inclusive para os futuros projetos do TAF. Procuramos desenvolver artefatos backend agnósticosreutilizáveis, que poderão, a princípio, ser reaproveitados em projetos REST e PO-UI.
- Melhor escalabilidade: como as camadas são independentes, é possível escalar apenas aquela que precisa ser escalada, sem afetar as demais camadas.
- Facilidade de manutenção: com a separação de responsabilidades, é mais fácil identificar onde estão os erros e realizar manutenções pontuais, sem afetar outras partes do sistema.
- Facilidade de testes: a separação de responsabilidades também facilita a criação de testes automatizados para cada camada.
...
Aqui foram desenvolvidas as tabelas e as respectivas telas para entrada de informações, utilizando as funções MVC disponibilizadas pelo Framework.FISA310
O porquê da escolha
Escolhemos essa abordagem devido ao domínio do time sobre a tecnologia.
...
Função para consulta padrão F3 do campo CJO_CODEMP.
...
Aviso |
---|
Sintaxe
FISA310F3()
Atenção! |
Definição:
Sintaxe
FISA310F3()
...
FS310EmpF3 Function
...
Função que trabalha em conjunto com a função FISA310F3 para consulta padrão.
Aviso |
---|
Atenção! |
Definição:
Sintaxe
FS310EmpF3()
...
Validação de campos caso estejam vazios (Tudo OK).
...
.
...
Definição:
Sintaxe
FISA310POS()
...
Tipo | Descrição |
---|---|
Object | objeto com dados do registro A6Q5 |
...
...
getRegA6Q61 of Class ScancRefService method
...
QUADRO 6 - REPASSE POR REMESSA DE AEAC (Álcool etílico anidro combustível) OU DE B100 (Biodisel) PARA OUTRAS UF
Definição:
Sintaxe
ScancRefService():getRegA6Q6()
Retorno
Tipo | Descrição |
---|---|
Object | objeto com dados do registro A6Q6 |
getRegA6Q61 of Class ScancRefService method
QUADRO 6.1 - OPERAÇÕES COM IMPOSTO RETIDO POR ESTABELECIMENTO DO EMITENTE
...
.1 - OPERAÇÕES COM IMPOSTO RETIDO POR ESTABELECIMENTO DO EMITENTE
Definição:
Sintaxe
ScancRefService():getRegA6Q61()
Retorno
Tipo | Descrição |
---|---|
Object | objeto com dados do registro A6Q61 |
...
QUADRO 6.2 - OPERAÇÕES COM IMPOSTO RETIDO POR OUTROS CONTRIBUINTES
Definição:
Sintaxe
ScancRefService():getRegA6Q62()
Retorno
Tipo | Descrição |
---|---|
Object | objeto com dados do registro A6Q62 |
...
QUADRO 6.3 - RELATÓRIOS EXTEMPORÂNEOS
Definição:
Sintaxe
ScancRefService():getRegA6Q63()
Retorno
Tipo | Descrição |
---|---|
Object | objeto com dados do registro A6Q63 |
...
QUADRO 7.1 - OPERAÇÕES COM IMPOSTO RETIDO POR ESTABELECIMENTO DO EMITENTE
Definição:
Sintaxe
ScancRefService():getRegA6Q71()
Retorno
Tipo | Descrição |
---|---|
Object | objeto com dados do registro A6Q71 |
...
QUADRO 7.2 - OPERAÇÕES COM IMPOSTO RETIDO POR OUTROS CONTRIBUINTES
Definição:
Sintaxe
ScancRefService():getRegA6Q72()
Retorno
Tipo | Descrição |
---|---|
Object | objeto com dados do registro A6Q72 |
...
QUADRO 7.3 - RELATÓRIOS EXTEMPORÂNEOS
Definição:
Sintaxe
ScancRefService():getRegA6Q73()
Retorno
Tipo | Descrição |
---|---|
Object | objeto com dados do registro A6Q73 |
...
QUADRO 8 - DEDUÇÃO POR OPERAÇÕES REALIZADAS POR IMPORTADORES
Definição:
Sintaxe
ScancRefService():getRegA6Q8()
Retorno
Tipo | Descrição |
---|---|
Object | objeto com dados do registro A6Q8 |
...
QUADRO 9.1 - OPERAÇÕES COM IMPOSTO RETIDO POR ESTABELECIMENTO DO EMITENTE
Definição:
Sintaxe
ScancRefService():getRegA6Q91()
Retorno
Tipo | Descrição |
---|---|
Object | objeto com dados do registro A6Q91 |
...
QUADRO 9.2 - OPERAÇÕES COM IMPOSTO RETIDO POR OUTROS CONTRIBUINTES
Definição:
Sintaxe
ScancRefService():getRegA6Q92()
Retorno
Tipo | Descrição |
---|---|
Object | objeto com dados do registro A6Q92 |
...
QUADRO 9.3 - RELATÓRIOS EXTEMPORÂNEOS
Definição:
Sintaxe
ScancRefService():getRegA6Q93()
Retorno
Tipo | Descrição |
---|---|
Object | objeto com dados do registro A6Q93 |
...
QUADRO 10 - DEDUÇÃO POR RESSARCIMENTO EFETUADO A DISTRIBUIDORAS
Definição:
Sintaxe
ScancRefService():getRegA6Q10()
Retorno
Tipo | Descrição |
---|---|
Object | objeto com dados do registro A6Q10 |
...
QUADRO 11 - DEDUÇÃO POR RESSARCIMENTO EFETUADO A TRR
Definição:
Sintaxe
ScancRefService():getRegA6Q11()
Retorno
Tipo | Descrição |
---|---|
Object | objeto com dados do registro A6Q11 |
...
QUADRO 12 - DEDUÇÃO POR RESSARCIMENTO EFETUADO A IMPORTADORES
Definição:
Sintaxe
ScancRefService():getRegA6Q12()
Retorno
Tipo | Descrição |
---|---|
Object | objeto com dados do registro A6Q12 |
...
QUADRO 13 - DEDUÇÃO POR RESSARCIMENTO EFETUADO A OUTROS CONTRIBUINTES
Definição:
Sintaxe
ScancRefService():getRegA6Q13()
Retorno
Tipo | Descrição |
---|---|
Object | objeto com dados do registro A6Q13 |
...
QUADRO 14 - DEDUÇÃO TRANSFERIDA DE OUTRO ESTABELECIMENTO DO SUJEITO PASSIVO POR SUBSTITUIÇÃO
Definição:
Sintaxe
ScancRefService():getRegA6Q14()
Retorno
Tipo | Descrição |
---|---|
Object | objeto com dados do registro A6Q14 |
...
QUADRO 15 - DEDUÇÃO TRANSFERIDA PARA OUTRO ESTABELECIMENTO DO SUJEITO PASSIVO POR SUBSTITUIÇÃO
Definição:
Sintaxe
ScancRefService():getRegA6Q15()
Retorno
Tipo | Descrição |
---|---|
Object | objeto com dados do registro A6Q15 |
...
Classe modelo para o arquivo SCANC Refinaria
Definição:
Sintaxe
ScancRef()
...
makeRecords of Class ScancRef method
...
Método responsável por montar os registros do arquivo
Definição:
Sintaxe
ScancRef():makeRecords(cIdGrupo,cMesAno,cUfDest,_cFilial)
...
Método responsável por escrever o arquivo texto
Definição:
Sintaxe
ScancRef():writeRecords(oWriter)
...
writeCounters of Class ScancRef method
...
RODAPÉ - gera os totais de linhas de todos os registros do arquvoEscreve os contadores dos registros ao final do arquivo
Definição:
Sintaxe
ScancRef():writeCounters()
ScancTotais class
RODAPÉ - gera os totais de linhas de todos os registros do arquivo
Definição:
Sintaxe
ScancTotais()
...
Namespace backoffice.fiscal.arquivos.utils
...
Classe no padrão Singleton que fornece um objeto e métodos estáticos para manipulação de annotations
Definição:
Sintaxe
AnnotationHelper()
...
getDataAnnotation of Class AnnotationHelper method
...
Organiza as annotations de um objeto em um objeto HashMap de acordo com a chave de pesquisa informada
Definição:
Sintaxe
AnnotationHelper():getDataAnnotation(oObj,cAnnotationName,cKey)
...
Nome | Tipo | Uso | Descrição |
---|---|---|---|
oObj | Object | Obrigatório | o objeto para o qual se quer obter os dados de annotation |
cAnnotationName | Character | Obrigatório | o nome da annotation a ser obtida |
cKey | Character | Obrigatório | o índice de pesquisa para o HashMap (deve ser uma propriedade da annotation) |
Retorno
Tipo | Descrição |
---|---|
Object | retorna um objeto HashMap |
...
Cria uma instância (se não houver) e a fornece
Definição:
Sintaxe
AnnotationHelper():getInstance()
Retorno
Tipo | Descrição |
---|---|
Object | retorna um objeto oAnnotationHelper |
...