Pular para o conteúdo principal

Postagem em destaque

BlackTDN :: LeetCode :: Comparando Implementações Harbour e TLPP para o Desafio Longest Palindromic Substring

_Créditos das imagens: ChatGPT_ ### LeetCode :: Comparando Implementações Harbour e TLPP para o Desafio Longest Palindromic Substring Resolver o problema do [Longest Palindromic Substring](https://leetcode.com/problems/longest-palindromic-substring/description/) é um exercício clássico de programação, que desafia desenvolvedores a encontrar a maior substring palindrômica dentro de uma string. Recentemente, exploramos soluções tanto em Harbour quanto em TLPP (Total Language Protheus Programming). Neste artigo, comparamos as implementações nessas duas linguagens, destacando suas semelhanças, diferenças e funcionalidades específicas. #### Implementações em Harbour ##### Versão 5.1 Essa solução utiliza a técnica de expansão a partir do centro do palíndromo. Cada caractere ou par de caracteres consecutivos é considerado um possível "centro". O algoritmo expande em ambas as direções enquanto os caracteres forem iguais, retornando o maior palíndromo encontrado. ##### Versão 5....

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

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

Postar um comentário

Postagens mais visitadas