Post: Aplicando o Padrão de Projeto Command para os Produtos com ACBr

Alessandro Medeiros

Compartilhar no whatsapp
Compartilhar no facebook
Compartilhar no twitter
Compartilhar no linkedin
Compartilhar no facebook

Fala ai Radizeiros e Radizeiras, tudo bem com vocês?

Seguido nossa série de boas práticas para geração de arquivos fiscais usando ACBr, observe o código abaixo,  estamos passando para a geração de comandos o Geral e o Ide, e no post anterior criamos o comando para o Emitente, então observe que foi adicionado esse comando.

...
TModelFiscalNFeInvoker.New
   .Add(TModelFiscalNFeCommandGeral.New(Self))
   .Add(TModelFiscalNFeCommandIde.New(Self))
   .Add(TModelFiscalNFeCommandEmit.New(Self))
.Execute;
...

Tudo isso dentro da nossa classe mãe, a classe da NF-e.

Olhando o Demo do ACBr iremos agora criar o comando para os Produtos.

É bem simples, você pode copiar a classe do Emitente e no método Execute alterar para as informações do Produto.

Primeiro vamos observar o código do ACBr, onde é tratado o Produto.

...
Produto := NotaF.NFe.Det.New;
Produto.Prod.nItem := 1; // Número sequencial, para cada item deve ser incrementado
Produto.Prod.cProd := '123456';
Produto.Prod.cEAN := '7896523206646';
Produto.Prod.xProd := 'TESTE DE PRODUTO';
Produto.Prod.NCM := '94051010'; // Tabela NCM disponível em http://www.receita.fazenda.gov.br/Aliquotas/DownloadArqTIPI.htm
Produto.Prod.EXTIPI := '';
Produto.Prod.CFOP := '5101';
Produto.Prod.uCom := 'UN';
Produto.Prod.qCom := 1;
Produto.Prod.vUnCom := 100;
Produto.Prod.vProd := 100;
Produto.Prod.cEANTrib := '7896523206646';
Produto.Prod.uTrib := 'UN';
Produto.Prod.qTrib := 1;
Produto.Prod.vUnTrib := 100;
Produto.Prod.vOutro := 0;
Produto.Prod.vFrete := 0;
Produto.Prod.vSeg := 0;
Produto.Prod.vDesc := 0;
Produto.Prod.CEST := '1111111';
Produto.infAdProd := 'Informacao Adicional do Produto';
...

O  Produto conforme o ACBr,  precisa chamar o ColectionItem.

Onde é adicionado um novo registro é na CollectionItem, nesta caso nós iremos precisar criar uma variável, mas não iremos criar dentro da nossa classe de comando.

O mesmo tratamento que fizemos lá no DataModule para a nota fiscal, iremos fazer para o produto.

Iremo na interface do nosso componente, onde iremos criar dois métodos, AddProduto e Produto.

iModelFiscalNFeCompoentes = interface
   ['{A652704B-022A-4467-B881-C791F95D62D8}']
   function _This : T;
   function AddNotaFiscal : NotaFiscal;
   function NotaFiscal : NotaFiscal;
   function AddProduto : TDetCollectionItem;
   function Produto : TDetCollectionItem;
end;

Esses métodos tem que está dentro do nosso DataModule pois é a classe que está implementando nossa interface, e criaremos uma variável FProduto do tipo TDetCollectionItem, dentro do método AddProduto iremos implementar a rotina que adiciona os produtos a nota fiscal.

...
function TdmACBrNFe.AddProduto: TDetCollectionItem;
begin
  FProduto := FNotaFiscal.NFe.Det.New;
  Result := FProduto;
end;
...
function TdmACBrNFe.Produto: TDetCollectionItem;
begin
   Result := FProduto;
end;
...

Desta forma todos os produtos que forem adicionados, serão incluídos a nota fiscal que está sendo trabalhada.

Quando o comando de produto for chamado iremos primeiro criar o produto, e preenchemos os dados dos produtos.

Essas informações dos produtos podem estar sendo adicionados lá na View, por exemplo, as informações vão sendo gravadas dentro do banco de dados, na hora de emitir a nota, pega essas informações lá do banco onde percorremos a tabela que está essas informações e  adicionamos para o comando de produto.

Vamos dizer que estamos lendo um pedido talvez, os produtos do pedido já estão gravados lá no banco, na hora de preencher o produto, iremos percorrer os dados do pedido ou de alguma tabela onde é armazenados os dados da NF-e que está sendo criada, e vai sendo adicionado para o comando de produto.

Por este motivo que temos logo no início do comando o AddProduto, estamos adicionando um produto novo.

Estamos a cada série evoluído nossas emissão de NFe usando as boas práticas.

Estamos praticamente com boa parte de uma emissão da NF-e pronta, nos próximos posts estaremos falando de como aplicar as regras fiscais para essas rotinas.

Viu como vamos melhorando todo nosso código para implementação do ACBrNFe, esse é apenas o primeiro post da nossa série de Boas práticas para geração de arquivos fiscais com ACBr, este post foi extraído de um dos meus treinamentos que ensino todas as técnicas de boas práticas com clean code para geração de arquivos fiscais.

Com as técnicas aplicadas nesse treinamento, alem de aprender a aplicar na criação e emissão da NF-e, você pode também aplicar facilmente para o SPED e o SINTEGRA, ou seja, o que é problema para você hoje, depois desse treinamento você irá enxergar como oportunidade.

CLIQUE AQUI PARA SABER MAIS SOBRE O TREINAMENTO BOAS PRÁTICAS PARA GERAÇÃO DE ARQUIVOS DISCAIS COM ACBr

 





Faça sua busca

CATEGORIAS

POSTS RECENTES

E caso você tem interesse de conhecer mais sobre Aplicando o Padrão de Projeto Command para os Produtos com ACBr, acesse o nosso portal do CLUBE DE PROGRAMADORES EM DELPHI
Você não terá só conteúdos relacionados ao Aplicando o Padrão de Projeto Command para os Produtos com ACBr, mas uma quantidade enorme de conteúdos que poderá lhe ajudar muito no seu dia a dia, é uma verdadeira NETFLIX para os programadores Delphi.
Gostou?
Compartilhe:
Compartilhar no whatsapp
Compartilhar no facebook
Compartilhar no twitter
Compartilhar no linkedin
Compartilhar no facebook

Embarque no foguete com milhares de devs para aprender desenvolvimento, evoluir de forma contínua e se manter relevante no mercado.

Sobre
Dúvidas
Cadastre-se em nossa lista

Para ter acesso em primeira mão, a tudo que acontece na Academia do Código, basta se cadastrar em nossa lista

Grupo Thulio Bittencourt | Academia do Código

#FaçaPartedaHistória

Copyright © 2021 – Todos os direitos reservados