Jump to content

dev botao

Por onde começar


  • Este tópico foi criado há 2758 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Senhores, tenho um sistema de compra e venda em um cliente de Natal - RN. Preciso implementar a emissão da NFC-e mas não tenho a mínima ideia de por onde começar.

 

Alguém poderia me dizer por onde começar, se há alguma diferença entre os Estados (desculpe se a pergunta for obvia), onde posso encontrar um Modelo para adequar ao meu projeto.

 

** Delphi Berlin Up2 / Base de dados Mysql.

 

 

Link to comment
Share on other sites

Bom dia meu amigo, a primeira coisa que deve pensar é em fornecer uma tela intuitiva e bem estruturada para evitar dores de cabeça, mas fora isso não tem muito segredo, para desenvolver o módulo de emissão NFC-e você precisará basicamente dar uma conferida nos manuais desse link : Lista de Manuais, assim como o Exemplo do ACBr para entender como funciona a questão de envio da nota, alimentação das tags e etc. Em suma, o Manual de Orientação vai te fornecer todas as informações necessárias,sendo que a base é a mesma pro Brasil inteiro, vez ou outra algum UF decide "perfumar" a emissão fazendo algumas mudanças, mas nunca é nada alarmante, então não há com o que se preocupar no que diz respeito à diferenças de uma UF para outra, sua única preocupação é fornecer uma solução atrativa e planejada ao seu cliente.

Boa sorte.

Link to comment
Share on other sites

2 horas atrás, GAVOHA disse:

Senhores, tenho um sistema de compra e venda em um cliente de Natal - RN. Preciso implementar a emissão da NFC-e mas não tenho a mínima ideia de por onde começar.

 

Alguém poderia me dizer por onde começar, se há alguma diferença entre os Estados (desculpe se a pergunta for obvia), onde posso encontrar um Modelo para adequar ao meu projeto.

 

** Delphi Berlin Up2 / Base de dados Mysql.

 

 

Este tópico pode te ajudar

 

Link to comment
Share on other sites

8 horas atrás, GAVOHA disse:

Vou ver @carlosinfoteen

 

Para que serve o AcbrMonitor ? Vou precisar dele?

AcbrMonitor já está desatualizado. Agora se usa o ACBrMonitor Plus - E é uma aplicação em lazarus para gerar NFe, NFce, etc interagindo com tua aplicação. Eu não uso ele. Outros que usam ele podem dar maiores detalhes.

- Agora precisar dele depende de como você vai desenvolver a tua solução, porém se for usar os componentes que mencionei no tópico acima, onde posto o caminho inicial para desenvolver a NFe que no mesmo exemplo tem os fontes exemplo para NFCe. É só estudar e ir pesquisando no forum.

Link to comment
Share on other sites

7 horas atrás, carlosinfoteen disse:

AcbrMonitor já está desatualizado. Agora se usa o ACBrMonitor Plus - E é uma aplicação em lazarus para gerar NFe, NFce, etc interagindo com tua aplicação. Eu não uso ele. Outros que usam ele podem dar maiores detalhes.

- Agora precisar dele depende de como você vai desenvolver a tua solução, porém se for usar os componentes que mencionei no tópico acima, onde posto o caminho inicial para desenvolver a NFe que no mesmo exemplo tem os fontes exemplo para NFCe. É só estudar e ir pesquisando no forum.

Então, o AcbrMonitor Plus é o cara que recebe os dados e gera a NFe? Também tenho como opção não utilizar e gerar eu mesmo (como você faz), correto?

 

Link to comment
Share on other sites

52 minutos atrás, carlosinfoteen disse:

Isso. Se for usar os componentes para desenvolver a nfe/nfce não precisa do Monitor Plus.

Entendi... e o que fala com o Monitor Plus? Exemplo, gero um TXT com os dados da minha venda, salvo em algum lugar e o Monitor Plus lê e faz o resto?

Link to comment
Share on other sites

2 minutos atrás, GAVOHA disse:

Entendi... e o que fala com o Monitor Plus? Exemplo, gero um TXT com os dados da minha venda, salvo em algum lugar e o Monitor Plus lê e faz o resto?

É por ai... E para desenvolver o seu arquivo de integração com as tags corretamente é só lê o manual do mesmo, configura-lo e ir fazendo testes.

Bom desenvolvimento...

Link to comment
Share on other sites

5 minutos atrás, carlosinfoteen disse:

É por ai... E para desenvolver o seu arquivo de integração com as tags corretamente é só lê o manual do mesmo, configura-lo e ir fazendo testes.

Bom desenvolvimento...

Melhor explicação, só se você fizesse! Muito obrigado e parabéns

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...

Senhores, com base nas mensagens de vocês eu consegui preparar a minha NFCe,... Consigo imprimir o cupom. gerar XML, gerar TXT... mas está me apresentando um errro:

 

rejeicao uf informada no campo cuf nao e atendida pelo web service

Em pesquisa vi que esse erro é meio genérico. segue abaixo meu código, se puderem me ajudar a achar meu erro:

 

begin
  DM.qryNFCe.Open;


  sCPF      := edCPFCNPJ.Text;
  sNumNF    := DM.qryNFCeUltimaNF.Text;
  iNumNF    := StrToInt(sNumNF);
  iNumNF    := iNumNF +1;

  DM.ACBrNFe1.NotasFiscais.Clear;
  DM.ACBrNFe1.Configuracoes.Geral.ModeloDF := moNFCe;
  DM.ACBrNFe1.Configuracoes.Geral.VersaoDF := ve310;

 with DM.ACBrNFe1.NotasFiscais.Add.NFe do
   begin
     Ide.cNF       := iNumNF; //Caso não seja preenchido será gerado um número aleatório pelo componente
     Ide.natOp     := 'VENDA';
     Ide.indPag    := ipVista;
     Ide.modelo    := 65;
     Ide.serie     := 1;
     Ide.nNF       := iNumNF;
     Ide.dEmi      := now;
     Ide.dSaiEnt   := now;
     Ide.hSaiEnt   := now;
     Ide.tpNF      := tnSaida;
     Ide.tpEmis    := teNormal;
//-----------ALTERAR DEPOIS------------------------------------
    {
     if DM.qryNFCeiAmbiente.Value = 1 then
        Ide.tpAmb     := taHomologacao else
        Ide.tpAmb := taProducao;  //Lembre-se de trocar esta variável quando for para ambiente de produção
     }
//-----------------------------------------------------------------
     Ide.tpAmb     := taHomologacao;
     Ide.cUF       := DM.qryNFCeiUF.Value;
     Ide.cMunFG    := DM.qryNFCeiMun.Value;
     Ide.finNFe    := fnNormal;
     Ide.tpImp     := tiNFCe;
     Ide.indFinal  := cfConsumidorFinal;
     Ide.indPres   := pcPresencial;

     Emit.CNPJCPF           := SoNumero(DM.qryDadosLojaCNPJ.Value);
     Emit.IE                := SoNumero(DM.qryDadosLojaIE.Value);
     Emit.xNome             := DM.qryDadosLojaRazao.Value;
     Emit.xFant             := DM.qryDadosLojaNomeLoja.Value;

     Emit.EnderEmit.fone    := DM.qryDadosLojaTelefone.Value;
     Emit.EnderEmit.CEP     := StrToInt(SoNumero(DM.qryDadosLojaCEP.Text) );
     Emit.EnderEmit.xLgr    := DM.qryDadosLojaEndereco.Value;
     Emit.EnderEmit.nro     := DM.qryDadosLojaNumEndereco.text;
     Emit.EnderEmit.xCpl    := DM.qryDadosLojaComplemento.Value;
     Emit.EnderEmit.xBairro := DM.qryDadosLojaBairro.text;
     Emit.EnderEmit.cMun    := DM.qryNFCeiMun.Value;
     Emit.EnderEmit.xMun    := DM.qryDadosLojaCidade.Value;
     Emit.EnderEmit.UF      := DM.qryDadosLojaUF.Value;
     Emit.enderEmit.cPais   := 1058;
     Emit.enderEmit.xPais   := 'BRASIL';

     Emit.IEST              := '';

     if DM.qryDadosLojaRegimeCRT.Value = 1 then
         Emit.CRT               := crtRegimeNormal else
     if DM.qryDadosLojaRegimeCRT.Value = 2 then
         Emit.CRT               := crtSimplesExcessoReceita else
         Emit.CRT               := crtRegimeNormal ;    // (1-crtSimplesNacional, 2-crtSimplesExcessoReceita, 3-crtRegimeNormal)

     //-- Informar Dados de DESTINATARIO
        Dest.CNPJCPF           := edCPFCNPJ.Text;

    //Adicionando Produtos
      DM.qryVendaDetalhe.First;

   with Det.Add do
     begin
      while not DM.qryVendaDetalhe.eof do
        begin
           Prod.nItem    := DM.qryVendaDetalheItem.Value ; // Número sequencial, para cada item deve ser incrementado
           Prod.cProd    := DM.qryVendaDetalheCodBarra.Text;
           Prod.cEAN     := '';
           Prod.xProd    := DM.qryVendaDetalheDescricao.Text;
           Prod.NCM      := DM.qryVendaDetalheNCM.Value; // Tabela NCM disponível em  http://www.receita.fazenda.gov.br/Aliquotas/DownloadArqTIPI.htm
           Prod.EXTIPI   := '';
           Prod.CFOP     := DM.qryNFCeiCFOP.Text;
           Prod.uCom     := 'UN';
           Prod.qCom     := 1 ;
           Prod.vUnCom   := DM.qryVendaDetalheValorUnitario.Value;
           Prod.vProd    := DM.qryVendaDetalheValorUnitario.Value;

           Prod.cEANTrib  := '';
           Prod.uTrib     := 'UN';
           Prod.qTrib     := 1;
           Prod.vUnTrib   := 0;

           Prod.vOutro    := 0;
           Prod.vFrete    := 0;
           Prod.vSeg      := 0;
           Prod.vDesc     := 0;

           Prod.CEST := '';

        with Imposto do
          begin
            // lei da transparencia nos impostos
            vTotTrib := 0;

            with ICMS do
             begin

               if DM.qryNFCeiCRT.Value = 1 then     //Simples Nacional
                  begin
                     if DM.qryNFCeiICMS.Value = 102 then  CSOSN := csosn102;
                     if DM.qryNFCeiICMS.Value = 300 then  CSOSN := csosn300;
                     if DM.qryNFCeiICMS.Value = 500 then  CSOSN := csosn500;
                  end;

               IF DM.qryNFCeiCRT.Value = 3 then
                  begin
                     if DM.qryNFCeiICMS.Value = 00 then  CST := cst00;
                     if DM.qryNFCeiICMS.Value = 20 then  CST := cst20;
                     if DM.qryNFCeiICMS.Value = 40 then  CST := cst40;
                     if DM.qryNFCeiICMS.Value = 41 then  CST := cst41;
                     if DM.qryNFCeiICMS.Value = 60 then  CST := cst60;
                  end;

               ICMS.orig    := oeNacional;
               ICMS.modBC   := dbiValorOperacao;
               ICMS.vBC     := 0;
               ICMS.pICMS   := 0;
               ICMS.vICMS   := 0;
               ICMS.modBCST := dbisMargemValorAgregado;
               ICMS.pMVAST  := 0;
               ICMS.pRedBCST:= 0;
               ICMS.vBCST   := 0;
               ICMS.pICMSST := 0;
               ICMS.vICMSST := 0;
               ICMS.pRedBC  := 0;

               // partilha do ICMS e fundo de probreza
               with ICMSUFDest do
                begin
                  vBCUFDest      := 0.00;
                  pFCPUFDest     := 0.00;
                  pICMSUFDest    := 0.00;
                  pICMSInter     := 0.00;
                  pICMSInterPart := 0.00;
                  vFCPUFDest     := 0.00;
                  vICMSUFDest    := 0.00;
                  vICMSUFRemet   := 0.00;
                end;
             end;

           end;

         DM.qryVendaDetalhe.Next;

         end;

          Total.ICMSTot.vBC     := 0;
          Total.ICMSTot.vICMS   := 0;
          Total.ICMSTot.vBCST   := 0;
          Total.ICMSTot.vST     := 0;
          Total.ICMSTot.vProd   := 0;
          Total.ICMSTot.vFrete  := 0;
          Total.ICMSTot.vSeg    := 0;
          Total.ICMSTot.vDesc   := 0;
          Total.ICMSTot.vII     := 0;
          Total.ICMSTot.vIPI    := 0;
          Total.ICMSTot.vPIS    := 0;
          Total.ICMSTot.vCOFINS := 0;
          Total.ICMSTot.vOutro  := 0;
          Total.ICMSTot.vNF     := 0;

          // partilha do icms e fundo de probreza
         Total.ICMSTot.vFCPUFDest   := 0.00;
         Total.ICMSTot.vICMSUFDest  := 0.00;
         Total.ICMSTot.vICMSUFRemet := 0.00;

         Total.ISSQNtot.vServ   := 0;
         Total.ISSQNTot.vBC     := 0;
         Total.ISSQNTot.vISS    := 0;
         Total.ISSQNTot.vPIS    := 0;
         Total.ISSQNTot.vCOFINS := 0;

         Transp.modFrete := mfSemFrete;

        with pag.Add do //PAGAMENTOS apenas para NFC-e
          begin
            tPag := fpDinheiro;
            vPag := DM.qryVendaMestreTotal.Value;
          end;

        InfAdic.infCpl     :=  '';
        InfAdic.infAdFisco :=  '';
     end;


   DM.ACBrNFe1.Configuracoes.Arquivos.PathSchemas     := DM.sNFSchemas;
   DM.ACBrNFe1.Configuracoes.Arquivos.PathSalvar      := DM.sNFSalvas;
   DM.ACBrNFe1.Configuracoes.Arquivos.PathNFe         := DM.sNFSalvas;

   DM.ACBrNFe1.Configuracoes.Certificados.Senha       := DM.sCertificadoSenha;
   DM.ACBrNFe1.Configuracoes.Certificados.NumeroSerie := DM.sCertificadoSerie;
   DM.ACBrNFe1.NotasFiscais.Assinar;

   DM.ACBrNFe1.NotasFiscais.GravarXML(DM.sNFSalvas+'\nfe'+DM.qryVendaMestreid.Text+ '.xml');
   DM.ACBrNFe1.NotasFiscais.GravarTXT(DM.sNFSalvas+'\nfe'+DM.qryVendaMestreid.Text+'.txt');
   DM.ACBrNFe1.NotasFiscais.Validar;
   DM.ACBrNFe1.NotasFiscais.GerarNFe;
   DM.ACBrNFe1.Enviar(0,false);

   DM.ACBrNFe1.NotasFiscais.Imprimir;



 end;

 

Link to comment
Share on other sites

18 minutos atrás, GAVOHA disse:

De fato eu não sabia dessa Tag... perfeito! 

 

Posterior me apresentou o seguinte erro (anexo)

Erro.png

Verifique se está alimentando o atributo "nItem" corretamente no produto, de acordo que siga a sequência 1..N, que de resto se o modelo for 65 e estiver configurado pra homologação, o componente informará essa descrição automaticamente.

Por exemplo:

 <det nItem="1">
  - <prod>
      ..
    </prod>
  - <imposto>
          ..
    </imposto>
  </det>

 

Link to comment
Share on other sites

(Estou em SP e desenvolvendo para Natal - RN. Fui fazer uma demonstração ao meu sócio e, ao copiar minha aplicação recebo a mensagem de erro

"O Aplicativo não pode ser inicializado corretamente (0xc0000007b)"

Copiei as DLLs para a pasta do Executável mas o erro permanece.

 

O que tenho que instalar?

Link to comment
Share on other sites

Problema solucionado!

Erro bobo: De fato em ambiente de Homologação coloquei o nome do produto como indicado na mensagem e esse problema foi resolvido.

 

Agora está dando erro de QR-Code. ... não sei gerar; Alguém poderia me ajudar?

Estou finalizando a emissão da seguinte forma:

   DM.ACBrNFe1.Configuracoes.WebServices.UF           := DM.qryDadosLojaUF.Text;
   DM.ACBrNFe1.Configuracoes.Arquivos.PathSchemas     := DM.sNFSchemas;
   DM.ACBrNFe1.Configuracoes.Arquivos.PathSalvar      := DM.sNFSalvas;
   DM.ACBrNFe1.Configuracoes.Arquivos.PathNFe         := DM.sNFSalvas;

   DM.ACBrNFe1.Configuracoes.Certificados.Senha       := DM.sCertificadoSenha;
   DM.ACBrNFe1.Configuracoes.Certificados.NumeroSerie := DM.sCertificadoSerie;
   DM.ACBrNFe1.NotasFiscais.GerarNFe;
   DM.ACBrNFe1.NotasFiscais.Assinar;
   DM.ACBrNFe1.NotasFiscais.Validar;
   DM.ACBrNFe1.NotasFiscais.GravarXML(DM.sNFSalvas+'\nfe'+DM.qryVendaMestreid.Text+ '.xml');

   DM.ACBrNFe1.Enviar(0,false);
   DM.ACBrNFe1.NotasFiscais.Imprimir;

 

Link to comment
Share on other sites

2 horas atrás, GAVOHA disse:

Problema solucionado!

Erro bobo: De fato em ambiente de Homologação coloquei o nome do produto como indicado na mensagem e esse problema foi resolvido.

 

Agora está dando erro de QR-Code. ... não sei gerar; Alguém poderia me ajudar?

Estou finalizando a emissão da seguinte forma:


   DM.ACBrNFe1.Configuracoes.WebServices.UF           := DM.qryDadosLojaUF.Text;
   DM.ACBrNFe1.Configuracoes.Arquivos.PathSchemas     := DM.sNFSchemas;
   DM.ACBrNFe1.Configuracoes.Arquivos.PathSalvar      := DM.sNFSalvas;
   DM.ACBrNFe1.Configuracoes.Arquivos.PathNFe         := DM.sNFSalvas;

   DM.ACBrNFe1.Configuracoes.Certificados.Senha       := DM.sCertificadoSenha;
   DM.ACBrNFe1.Configuracoes.Certificados.NumeroSerie := DM.sCertificadoSerie;
   DM.ACBrNFe1.NotasFiscais.GerarNFe;
   DM.ACBrNFe1.NotasFiscais.Assinar;
   DM.ACBrNFe1.NotasFiscais.Validar;
   DM.ACBrNFe1.NotasFiscais.GravarXML(DM.sNFSalvas+'\nfe'+DM.qryVendaMestreid.Text+ '.xml');

   DM.ACBrNFe1.Enviar(0,false);
   DM.ACBrNFe1.NotasFiscais.Imprimir;

 

Veja se está preenchendo estas tags :

    DM.ACBrNFe1.Configuracoes.Geral.IdCSC  := trim(dm.qry_CFG_NFCE.FieldByName('id_csc').AsString); /// 1
    DM.ACBrNFe1.Configuracoes.Geral.CSC    := trim(dm.qry_CFG_NFCE.FieldByName('csc').AsString); //// antigo token
    DM.ACBrNFe1.Configuracoes.Geral.IncluirQRCodeXMLNFCe := True;

 

Link to comment
Share on other sites

40 minutos atrás, mbbortolini disse:

Veja se está preenchendo estas tags :

    DM.ACBrNFe1.Configuracoes.Geral.IdCSC  := trim(dm.qry_CFG_NFCE.FieldByName('id_csc').AsString); /// 1
    DM.ACBrNFe1.Configuracoes.Geral.CSC    := trim(dm.qry_CFG_NFCE.FieldByName('csc').AsString); //// antigo token
    DM.ACBrNFe1.Configuracoes.Geral.IncluirQRCodeXMLNFCe := True;

 

De fato não houve de QR-Code não deu... mas apresentou o anexo.

Erro501.png

Link to comment
Share on other sites

1 hora atrás, mbbortolini disse:

Veja se está preenchendo estas tags :

    DM.ACBrNFe1.Configuracoes.Geral.IdCSC  := trim(dm.qry_CFG_NFCE.FieldByName('id_csc').AsString); /// 1
    DM.ACBrNFe1.Configuracoes.Geral.CSC    := trim(dm.qry_CFG_NFCE.FieldByName('csc').AsString); //// antigo token
    DM.ACBrNFe1.Configuracoes.Geral.IncluirQRCodeXMLNFCe := True;

 

De fato não houve de QR-Code não deu... mas apresentou o anexo.

 

Percebi que o erro acima só é exibido quando tento colocar um CPF de destinatário. Quando deixo em branco não apresenta erro;

Link to comment
Share on other sites

Resolvi o problema do QRCode:

DM.ACBrNFe1.Configuracoes.Geral.IncluirQRCodeXMLNFCe := True;

parou de aparecer a mensagem do ICMS do destinatário (

 

Dest.indIEDest         :=  inNaoContribuinte;

Não entendo! agora é erro

"Nota(s) não confirmadas: 501 -> Rejeição: Total do Produto / Serviço difere do somatorio dos itens"

Alguém pode me ajudar?

(segue xml)

24170218382083000196650010000005011000005010-nfe.xml

Edited by GAVOHA
Link to comment
Share on other sites

  • Este tópico foi criado há 2758 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.