Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

CONTEÚDO

Índice
exclude.*\b(?:Class|class|Parâmetros|Sintaxe|Retorno|Definição|functionCONTEÚDO|Function)\b.*


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
titleImportante

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!
Esta consulta padrão CJOEMP só deve ser utilizada aqui neste fonte.

Definição:

Sintaxe

FISA310F3()


...


FS310EmpF3 Function

...

Função que trabalha em conjunto com a função FISA310F3 para consulta padrão.

Aviso

Atenção!
Esta consulta padrão CJOEMP só deve ser utilizada aqui neste fonte.

Definição:

Sintaxe

FS310EmpF3()

...

Validação de campos caso estejam vazios (Tudo OK).

...

.

...

Definição:

Sintaxe

FISA310POS()

...

TipoDescrição
Objectobjeto 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

TipoDescrição
Objectobjeto 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

TipoDescrição
Objectobjeto com dados do registro A6Q61

...

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

Definição:

Sintaxe

ScancRefService():getRegA6Q62()

Retorno

TipoDescrição
Objectobjeto com dados do registro A6Q62

...

QUADRO 6.3 - RELATÓRIOS EXTEMPORÂNEOS

Definição:

Sintaxe

ScancRefService():getRegA6Q63()

Retorno

TipoDescrição
Objectobjeto com dados do registro A6Q63

...

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

Definição:

Sintaxe

ScancRefService():getRegA6Q71()

Retorno

TipoDescrição
Objectobjeto com dados do registro A6Q71

...

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

Definição:

Sintaxe

ScancRefService():getRegA6Q72()

Retorno

TipoDescrição
Objectobjeto com dados do registro A6Q72

...

QUADRO 7.3 - RELATÓRIOS EXTEMPORÂNEOS

Definição:

Sintaxe

ScancRefService():getRegA6Q73()

Retorno

TipoDescrição
Objectobjeto com dados do registro A6Q73

...

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

Definição:

Sintaxe

ScancRefService():getRegA6Q8()

Retorno

TipoDescrição
Objectobjeto com dados do registro A6Q8

...

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

Definição:

Sintaxe

ScancRefService():getRegA6Q91()

Retorno

TipoDescrição
Objectobjeto com dados do registro A6Q91

...

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

Definição:

Sintaxe

ScancRefService():getRegA6Q92()

Retorno

TipoDescrição
Objectobjeto com dados do registro A6Q92

...

QUADRO 9.3 - RELATÓRIOS EXTEMPORÂNEOS

Definição:

Sintaxe

ScancRefService():getRegA6Q93()

Retorno

TipoDescrição
Objectobjeto com dados do registro A6Q93

...

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

Definição:

Sintaxe

ScancRefService():getRegA6Q10()

Retorno

TipoDescrição
Objectobjeto com dados do registro A6Q10

...

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

Definição:

Sintaxe

ScancRefService():getRegA6Q11()

Retorno

TipoDescrição
Objectobjeto com dados do registro A6Q11

...

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

Definição:

Sintaxe

ScancRefService():getRegA6Q12()

Retorno

TipoDescrição
Objectobjeto com dados do registro A6Q12

...

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

Definição:

Sintaxe

ScancRefService():getRegA6Q13()

Retorno

TipoDescrição
Objectobjeto 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

TipoDescrição
Objectobjeto 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

TipoDescrição
Objectobjeto 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)

...

NomeTipoUsoDescrição
oObjObjectObrigatórioo objeto para o qual se quer obter os dados de annotation
cAnnotationNameCharacterObrigatórioo nome da annotation a ser obtida
cKeyCharacterObrigatórioo índice de pesquisa para o HashMap (deve ser uma propriedade da annotation)

Retorno

TipoDescrição
Objectretorna um objeto HashMap

...

Cria uma instância (se não houver) e a fornece

Definição:

Sintaxe

AnnotationHelper():getInstance()

Retorno

TipoDescrição
Objectretorna um objeto oAnnotationHelper

...