Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

ola amigos uso o AcbrNFeMonitor e gostaria de saber se ele tem opção para baixar nfe do fornecedor, tipo um cliente me perguntou se tem como ele informar a chave e baixar a nfe para que ele não precisar digitar todos os itens.

 

 

Postado

tem, mas nao do jeito que seu clientes quer...

 

entao é melhor falar que nao tem, ahuahuuhahuahuahuahua

 

A opção foi feita somente em casos extremos onde o Fornecedor do XML perdeu o arquivo antes de envia-lo (por exemplo)

e não para se tornar um hábito para nao precisar receber o XML do fornecedor

Postado

O que vc pode fazer é:

 

Padroniza uma pasta para conter todos os XMLs dos fornecedores desse seu cliente.

Configura uma rotina e um email para o recebimento desses XML, e fala pro seu cliente informar somente esse email para os fornecedores.

 

Uma vez td configurado e funcionando, o seu programa busca na caixa de entrada os emails com os XMLs e baixa na pasta padrão.

Quando o seu cliente tiver o DANFe na mão pode simplesmente passar no leitor de codigo de barras e pela chave de acesso procurar por algum

XML nesta pasta pré-configurada.

 

Se acontecer de nao achar o XML ainda, entao não tem jeito... terá de digitar a entrada manualmente

Postado

O seu cliente nesse caso lhe pediu duas coisas:

1º - Baixar o XML do fornecedor: voce pode fazer usando o WS de download de NFe disponibilizado pela Sefaz, lembrando que para usar esse WS de donwload primeiro tem que enviar o Evento de Manifestação do Destinatario - Confirmação da Operação;

2º - O cliente falou para não precisar digitar os itens: ai voce teria que desenvolver um importador de XML de acordo com o sistema de lançamento de notas fiscais do cliente, que ao importar o arquivo XML automaticamente o sistema lançe as informações no BD do sistema de seu cliente

 

Att

EL Soluções em Informática

Desenvolvimento  e Suporte (ERP, NF-e, CT-e, Sped Fiscal, EFD Contribuições, Emissor de Cupom Fiscal)
Ronda Alta - RS

(54)3364-1588
www.elinfo.com.br

 

Postado

Aproveitando a deixa

Alguem tem algum demo, parte de código ou tutorial de um importador de XML da NFe?

Gostaria de implementar essa funcionalidade numa tela de cadastro de notas fiscais de compra.

Eu tenho mais ou menos um esboço do que preciso fazer, caso alguem ja tenha feito e puder compartilhar.

Atte

Postado

Aproveitando a deixa

Alguem tem algum demo, parte de código ou tutorial de um importador de XML da NFe?

Gostaria de implementar essa funcionalidade numa tela de cadastro de notas fiscais de compra.

Eu tenho mais ou menos um esboço do que preciso fazer, caso alguem ja tenha feito e puder compartilhar.

Atte

Bom dia.

 

Faça o inverso que você faz para emitir uma NF-e.

 

No meu caso, eu coloco os dados numa classe e depois no Banco de Dados. Segue abaixo minha rotina:



function TACBrNFeConfig.CarregaNFe(Sender: TObject; ATerceiro: Boolean): Boolean;
var
  loNF_Ref: TNotaFiscalReferenciada;
  loItem: TNotaFiscalIT;
  LoFat: TNotaFiscalFaturas;
  I: Integer;
begin
  Result := False;
  if TACBrNFeConfig.GetInstance.AbrirXML(True) = '' then
    Exit;
    
  with Sender as TNotaFiscal do
  begin
    ClearValues;
    with FNFe.NotasFiscais.Items[0].NFe do
    begin
      NFeOK := True;
      PropriaTerceiro := iif(ATerceiro, tTerceiro, tPropria);
      EntradaSaida := iif(ATerceiro, tEntrada, tSaida);
      NaturezaOperacao := Ide.natOp;
      ControleNF := Ide.cNF;
      NumeroNF := Ide.nNF;
      NotaFiscalCFG.Modelo := IntToStr(Ide.modelo);
      NotaFiscalCFG.Serie := IntToStr(Ide.serie);
      Emissao.Data := Ide.dEmi;
      Emissao.Saida := Ide.dSaiEnt;
      Emissao.Contabil := Ide.dEmi;

      TipoPagamento := Ide.indPag;
      Empresa.Endereco.IBGE.Municipio := IntToStr(Ide.cMunFG);
      TipoNFe :=    Ide.finNFe;

      SCAN.DataHora := Ide.dhCont;
      SCAN.Motivo :=  Ide.xJust;

      for I := 0 to Ide.NFref.Count - 1 do
      begin
        if Ide.NFref.Items[I].refNFe <> '' then
        begin
          loNF_Ref := TNotaFiscalReferenciada.Create;
          Referenciada.Items[I].ChaveNFe := Ide.NFref.Items[I].refNFe;
          Referenciada.Add(loNF_Ref);
        end;
      end;

      // Emitente é sempre a EMPRESA
      Empresa.Clone(TUsuario.GetInstance.CentroCusto);
      
      // Origem
      if ATerceiro then
      begin
        if not TEmpresa.CNPJFilial(Dest.CNPJCPF) then
          raise Exception.Create('NF-e não é destinada a empresa!');

        Destinatario.Tipo := tcfFornecedor;
        if Destinatario.GetRecord(FormatarCnpjCpf(Emit.CNPJCPF)) = 0 then
        begin
          with Destinatario do
          begin
            with Cadastro do
            begin
              RazaoSocial := Utf8ToAnsi(Emit.xNome);
              if Utf8ToAnsi(Emit.xFant) <> '' then
                Nome := Utf8ToAnsi(Emit.xFant)
              else
                Nome := Utf8ToAnsi(Emit.xNome);
              Inscricao := EMit.IE;
              Cnpj_Cpf  := FormatarCnpjCpf(EMit.CNPJCPF);
            end;
            with Endereco do
            begin
              Endereco := Utf8ToAnsi(EMit.EnderEmit.xLgr);
              Numero := EMit.EnderEmit.nro;
              Complemento := Utf8ToAnsi(EMit.EnderEmit.xCpl);
              Bairro := Utf8ToAnsi(EMit.EnderEmit.xBairro);
              CEP := IntToStr(EMit.EnderEmit.CEP);
              FormatarCEP;
              IBGE.Municipio := IntToStr(EMit.EnderEmit.cMun);
              Cidade := Utf8ToAnsi(EMit.EnderEmit.xMun);
              UF := EMit.EnderEmit.UF;
            end;
            with Telefone do
            begin
              Telefone := FormatarFONE(EMit.EnderEmit.fone);
            end;
            if not Destinatario.PutRecord then
            begin
              MsgErro('O fornecedor não está cadastrado!' + CRLF +
                      'O sistema tentou cadastrar mas houve um erro.' + CRLF +
                      'Efetue o cadasto do fornecedor dessa NF-e' + CRLF +
                      'para prosseguir com a importação.');
              Exit;
            end;
          end;
        end;
      end
      else
      begin
        if not TEmpresa.CNPJFilial(Emit.CNPJCPF) then
          raise Exception.Create('NF-e não é emissão própria!');
        Destinatario.Tipo := tcfCliente;
        if Destinatario.GetRecord(FormatarCnpjCpf(Dest.CNPJCPF)) = 0 then
        begin
          with Destinatario do
          begin
            with Cadastro do
            begin
              RazaoSocial := Utf8ToAnsi(Dest.xNome);
              Nome := Utf8ToAnsi(Dest.xNome);
              if Length(OnlyNumber(Dest.CNPJCPF)) > 11 then
              begin
                FJ := 'J';
                Inscricao := Dest.IE;
              end
              else
              begin
                FJ := 'F';
                Inscricao := 'ISENTO';
              end;
              Cnpj_Cpf  := FormatarCnpjCpf(Dest.CNPJCPF);
            end;
            with Endereco do
            begin
              Endereco := Utf8ToAnsi(Dest.EnderDest.xLgr);
              Numero := Dest.EnderDest.nro;
              Complemento := Utf8ToAnsi(Dest.EnderDest.xCpl);
              Bairro := Utf8ToAnsi(Dest.EnderDest.xBairro);
              CEP := IntToStr(Dest.EnderDest.CEP);
              FormatarCEP;
              IBGE.Municipio := IntToStr(Dest.EnderDest.cMun);
              Cidade := Utf8ToAnsi(Dest.EnderDest.xMun);
              UF := Dest.EnderDest.UF;
            end;
            with Telefone do
            begin
              Telefone := FormatarFONE(Dest.EnderDest.fone);
            end;
            if not PutRecord then
            begin
              MsgErro('O Cliente não está cadastrado!' + CRLF +
                      'O sistema tentou cadastrar mas houve um erro.' + CRLF +
                      'Efetue o cadasto do cliente dessa NF-e' + CRLF +
                      'para prosseguir com a importação.');
              Exit;
            end;
          end;
        end;
      end;

      // Produtos
      for I := 0 to Det.Count - 1 do
      begin
        loItem := TNotaFiscalIT.Create;
        with Det.Items[I], loItem do
        begin
          InfoAdicionais := StringReplace(Utf8ToAnsi(infAdProd), ';', #13#10, [rfReplaceAll]);
          NumeroOrdem := Prod.nItem;
          CFOP.ID := Prod.CFOP;
          with Produto do
          begin
            if not ATerceiro then
              ID := StrToInt(Prod.cProd)
            else
              ID := 0;
            Descricao := Utf8ToAnsi(Prod.xProd);
            Produto.NCM :=   Prod.NCM;
          end;
          EanTrib     := Prod.cEANTrib;
          Unidade     := Prod.uTrib;
          UnidadeTrib := Prod.uTrib;
          if Prod.qTrib > 0 then
            Quantidade  := Prod.qTrib
          else
            Quantidade  := Prod.qCom;
          QuantidadeTrib := Prod.qTrib;
          with Valor do
          begin
            Unitario := Prod.vUnCom;
            UnitarioTrib := Prod.vUnTrib;
            Desconto := Prod.vDesc;
            Produto  := Prod.vProd;
            with Outros do
            begin
              Frete  := Prod.vFrete;
              Seguro := Prod.vSeg;
            end;
          end;

          with Imposto, Valor do
          begin
            with ICMS do
            begin
              loItem.CST.ID := OrigToStr(Orig) + CSTICMSToStr(CST);
              Tributos.ICMS.Modalidade := modBC;
              Tributos.ICMS.ReducaoBase := pRedBC;
              Tributos.ICMS.Aliquota := pICMS;
              Tributos.ICMS.Valor := vICMS;
              Tributos.ICMS.BaseCalculo := vBC;
              // ST
              Tributos.ICMS_ST.Modalidade := modBCST;
              Tributos.ICMS_ST.ReducaoBase := pRedBCST;
              Tributos.ICMS_ST.Aliquota := pICMSST;
              Tributos.ICMS_ST.BaseCalculo := vBCST;
              Tributos.ICMS_ST.Valor := vICMSST;
              Tributos.ICMS_ST.IVA := pMVAST;
              if vBCSTRet > 0 then
                Tributos.ICMS_ST.BaseCalculo := vBCSTRet;
              if vICMSSTRet > 0 then
                Tributos.ICMS_ST.Valor := vICMSSTRet;
            end;
            
            with PIS do
            begin
              Tributos.PIS.SituacaoTributaria := CSTPISToStr(CST);
              Tributos.PIS.BaseCalculo := vBC;
              Tributos.PIS.Aliquota := pPIS;
              Tributos.PIS.Valor := vPIS;
            end;

            with COFINS do
            begin
              Tributos.COFINS.SituacaoTributaria := CSTCOFINSToStr(CST);
              Tributos.COFINS.BaseCalculo := vBC;
              Tributos.COFINS.Aliquota := pCOFINS;
              Tributos.COFINS.Valor := vCOFINS;
            end;

            with IPI do
            begin
              Tributos.IPI.SituacaoTributaria := CSTIPIToStr(CST);
              Tributos.IPI.BaseCalculo := vBC;
              Tributos.IPI.Aliquota := pIPI;
              Tributos.IPI.ValorIPI := vIPI;
              Tributos.IPI.QtdeUnidPadrao := qUnid;
              Tributos.IPI.ValorUnidade := vUnid;
            end;
            Total := Produto -
                     Desconto +
                     Tributos.ICMS_ST.Valor +
                     Tributos.IPI.ValorIPI +
                     Outros.Frete +
                     Outros.Seguro;
          end;
        end;
        Produtos.Add(loItem);
      end;

      // Totais da NF
      Valor.Tributos.icms.baseCalculo := total.ICMStot.vBC;
      Valor.Tributos.ICMS.Valor := total.ICMStot.vICMS;
      Valor.Tributos.ICMS_ST.baseCalculo := total.ICMStot.vBCST;
      Valor.Tributos.ICMS_ST.Valor := total.ICMStot.vST;
      Valor.Produto := total.ICMStot.vProd;
      Valor.Outros.Frete := total.ICMStot.vFrete;
      Valor.Outros.Seguro := total.ICMStot.vSeg;
      Valor.Desconto := total.ICMStot.vDesc;
      Valor.Outros.Frete := total.ICMStot.vFrete;
      Valor.Outros.Seguro := total.ICMStot.vSeg;
      Valor.Tributos.IPI.ValorIPI := total.ICMStot.vIPI;
      Valor.Tributos.PIS.Valor := total.ICMStot.vPIS;
      Valor.Tributos.COFINS.Valor := total.ICMStot.vCOFINS;
      Valor.Outros.OutrasDespAcess := total.ICMStot.vOutro;
      Valor.Total := total.ICMStot.vNF;

      //Transportadora
      with Transp do
      begin
        case modFrete of
          mfContaEmitente: Frete := tfEmitente;
          mfContaDestinatario: Frete := tfDestinatario;
          mfContaTerceiros: Frete := tfTerceiros;
          mfSemFrete: Frete := tfTerceiros;
        end;

        with Transporta do
        begin
          Transportadora.Cadastro.Cnpj_Cpf := FormatarCnpjCpf(CNPJCPF);
          Transportadora.Cadastro.RazaoSocial := xNome;
          Transportadora.Cadastro.Inscricao := IE;
          Transportadora.Endereco.Endereco := xEnder;
          Transportadora.Endereco.Cidade := xMun;
          Transportadora.Endereco.UF := UF;
        end;

        if Vol.Count > 0 then
        begin
          with Vol.Items[0], Volumes do
          begin
            Quantidade := qVol;
            Especie := Utf8ToAnsi(esp);
            Marca := Utf8ToAnsi(marca);
            Numero := nVol;
            PesoBruto := PesoB;
            PesoLiquido := PesoL;
          end;
        end;
      end;

      for I := 0 to Cobr.Dup.Count - 1 do
      begin
        LoFat := TNotaFiscalFaturas.Create;
        LoFat.Fatura := Cobr.Dup.Items[I].nDup;
        LoFat.Data   := Cobr.Dup.Items[I].dVenc;
        LoFat.Valor  := Cobr.Dup.Items[I].vDup;
        Faturas.Add(LoFat);
      end;
      // Informações
      InfAdicionaisContribuinte.Text := StringReplace(Utf8ToAnsi(infAdic.infCpl),
                                                      ';', crlf, [ rfReplaceAll]);
      InfAdicionaisFisco.Text        := StringReplace(Utf8ToAnsi(infAdic.infAdFisco),
                                                      ';', crlf, [ rfReplaceAll]);
      ChaveNFe := OnlyNumber(infNFe.ID);
    end;
  end;
  Result := True;
end;

 

Atenciosamente.

------------------------------------------------

Jéter Rabelo Ferreira
Campestre/MG

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

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...