BlackTDN Search

quinta-feira, 23 de maio de 2013

BalckTDN :: Customizando a Interface da DANFE e NFeSefaz

 

NFeDANFE e NFeSefaz, dois “desprazeres” que faria questão de não conhecer. Mas, infelizmente, um mal necessário.

Ajusta “Layout” aqui, um “pixel” para direita, outro para esquerda. As vezes a “fonte” que não agrada ou uma regra específica, não tratada no sistema padrão, que deve ser customizada e tudo “de acordo” com a legislação.

Um parto sem sim. Um Filho que nasce várias vezes. Um verdadeiro “Frankenstein” (desses que não tem um pai só).

Recentemente a TOTVS lançou uma nova versão do trio: DANFEII, DANFEIII e NFESEFAZ e, vamos lá fazer a comparação e os devidos ajustes e “compatibilização”. Afinal, o “Pai da Criança” nos forneceu um novo “template” e temos que seguir as especificações. E como ficam as nossas alterações?

BlackTDN, usando “diretivas do Pre-Processador” vai sugerir uma ideia de como customizar o “famigerado Trio” de forma a manter a compatibilidade com as alterações legais ou “bugais” fornecidas pela TOTVS de forma a manter as suas versões compatíveis e personalizadas.

Nos exemplos que se seguem duas diretivas foram definidas: TOTVS_DANFE e CUSTOM_DANFE. Elas servirão para separar e “unificar” ambas as versões: A PADRÃO e a CUSTOMIZADA.

Com elas será possível ter uma versão “IGUALZINHA” a da TOTVS e com todas as modificações advindas das particularidades de seus “clientes.

Aos exemplos:

Considerando o DANFEII. Primeiro declaramos as diretivas que serão utilizadas no corpo do programa para diferenciar a versão TOTVS e a versão CUSTOM. Na realidade a única e real Diretiva é a CUSTOM_DANFE uma vez que a TOTVS_DANFE será usada única e somente para a comparação (A não ser que queira validar a versão TOTVS):

image

A partir da declaração, tudo o que for modificado no arquivo deverá estrar entre:

#IFDEF TOTVS_DANFE

//…. para o código padrão

#ELSE //CUSTOM_DANFE

//… para o código modificado

#ENDIF

ou

#IFDEF CUSTOM_DANFE

//… para o código que só existirá na versão customizada.

#ENDIF

Fazendo isso poderemos usar uma ferramenta de comparação de arquivos fontes (winmerge, ap7diff, etc.) para comparar e ajustar apenas o necessário mantendo o nosso código 100% compatível com a versão disponibilizada pelo fornecedor, no caso a TOTVS, e 100% customizável e de fácil gerenciamento e manutenção.

Exemplo 1 Customização DANFE TOTVS

Exemplo 2 Customização DANFE TOTVS

Exemplo 3 Customização DANFE TOTVS

etc…

Dessa forma, manteremos no mesmo arquivo fonte a versão “ORIGINAL” e a versão customizada de forma a:

1) Poder comparar e “compatibilizar” com novas versões;

2) Saber EXATAMENTE o que foi “customizado”.

Um exemplo do código “padrão” versus “customizado” poderá ser obtido ao clicar em: TOTVS exemplo customização DANFE e NFeSefaz. (utilize a ferramenta de comparação de código fonte de sua preferência para comparar os códigos de exemplo para um melhor entendimento da técnica utilizada).

Vale lembrar que o código disponibilizado para “download” tem a finalidade apenas didática e para demonstrar a “técnica” de customização e a “boa” prática. O código “OFICIAL” deverá ser “baixado” a partir do portal da fornecedora da solução.

[]s
иαldσ dj

4 comentários:

  1. Naldo, na realidade essa técnica é interessante não apenas para DANFE e NFeSped mas para qualquer programa fonte fornecido pela TOTVS que possa ser modificado pelo usuário. Basta apenas definir a Diretiva para o Pré-Processador e Pronto.

    Boa Sacada.

    ResponderExcluir
    Respostas
    1. Interessante mesmo. Usei essa técnica para customizar o Recibo de Pagamento da Folha. Levando em consideração que ele tem bastantes alterações por porte do pessoal do RH, fiz o seguinte:

      #IFNDEF TOTVS_RECIBO
      #DEFINE CUSTOM_RECIBO
      #ENDIF

      e o que é padrão fica entre a diretiva TOTVS_RECIBO, caso contrário, CUSTOM_RECIBO...

      Naldo, de fato uma bela sacada. Simples mas eficiente.

      tks por #compartilhar#.

      Excluir
  2. Na verdade perdi meu código fonte do DANFE e queria saber se este aqui está bom e bonitinho. E como colocar padrão CUSTOM ?? ao invés do da totvs

    ResponderExcluir
  3. Primeiramente, obrigado pelo belo post! Uma dúvida para usar essas diretivas, eu preciso fazer alguma configuração no meu ide?

    Obrigado!

    ResponderExcluir