Ir para conteúdo
  • Cadastre-se

dev botao

Gerando Itens Da Xml Anterior


Kássius Ribas
Ver Solução Respondido por Kássius Ribas,
  • Este tópico foi criado há 3847 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Olá a todos, estou com um problema na hr de gerar meu xml,  e o seguinte, tenho que gerar varias nfe de uma vez, mas o primeiro xml gera os itens normal mas já o segundo pega os itens do primeiro e fica junto com o do segundo, e assim por diante, tipo a nota 3 ja pega os itens da 1 da 2 e o da 3, ficaria grato se puderem me ajudar estou parado neste problema e o cliente esta me cobrando, abraços a tosos

Link para o comentário
Compartilhar em outros sites

vou postar meu codigo:

  Gauge3.Progress := 0;
  DataModule1.ACBrNFe1.NotasFiscais.Clear;
  with RelacaoNFe do
  begin
    First;
    while not Eof do
    begin
      Gauge3.MaxValue := TempProdutor.RecordCount;
      NFe.Locate('NunNfe', IntToStr(RelacaoNFeNunNfe.AsInteger), []);
      ItensNFEFiscal.Locate('CodigoNfe', IntToStr(RelacaoNFeNunNfe.AsInteger), []);
      ////////// gravar dados no componente acbr para gerar NFE //////////////////////
 
      with DataModule1.ACBrNFe1.NotasFiscais.Add.NFe do
      begin
        // Dados Principais
        Ide.cNF := NFeCodigoNumerico.AsInteger;
        Ide.natOp := NFeNaturezaOperação.AsString;
 
        if (copy(NFeFormapagamento.AsString, 1, 2)) = '0' then
          Ide.indPag := ipVista;
        if (copy(NFeFormapagamento.AsString, 1, 2)) = '1' then
          Ide.indPag := ipPrazo;
        if (copy(NFeFormapagamento.AsString, 1, 2)) = '3' then
          Ide.indPag := ipOutras;
 
        Ide.modelo := StrToInt(NFeModelo.AsString);
        Ide.serie := NFeSerie.AsInteger;
        Ide.nNF := NFeNunNFe.AsInteger;
 
        if (copy(NFeTipoDocumento.AsString, 1, 1)) = '0' then
          Ide.tpNF := tnEntrada;
        if (copy(NFeTipoDocumento.AsString, 1, 1)) = '1' then
          Ide.tpNF := tnSaida;
 
        Ide.cMunFG := NFeCodigoMunicipio.AsInteger;
        ide.dEmi := NFeDataEmissao.AsDateTime;
        Ide.dSaiEnt := NFeDataSaida.AsDateTime;
 
        if (DataModule1.sTipoImpressao = 1) then
          Ide.tpImp := tiRetrato;
        if (DataModule1.sTipoImpressao = 2) then
          Ide.tpImp := tiPaisagem;
 
        if DataModule1.SAmbiente = 1 then
          ide.tpAmb := taProducao;
        if DataModule1.SAmbiente = 2 then
          Ide.tpAmb := taHomologacao;
 
        if NFeFormaEmissao.AsString = 'Normal' then
          Ide.tpEmis := teNormal; // 0
        if NFeFormaEmissao.AsString = 'Contigência FS' then
          Ide.tpEmis := teContingencia; //1
        if NFeFormaEmissao.AsString = 'Contigência com SCAN' then
          Ide.tpEmis := teSCAN; //2
        if NFeFormaEmissao.AsString = 'Contigência Via DPEC' then
          Ide.tpEmis := teDPEC; //3
        if NFeFormaEmissao.AsString = 'Contigência FS - Da' then
          Ide.tpEmis := teFSDA; //4
 
        if NFeFinalidadeEmissao.AsString = '1 - NF-e normal' then
          Ide.finNFe := fnNormal;
        if NFeFinalidadeEmissao.AsString = '2 - NF - e complementar' then
          Ide.finNFe := fnComplementar;
        if NFeFinalidadeEmissao.AsString = '3 - NF - e de ajuste' then
          Ide.finNFe := fnAjuste;
 
        Ide.cDV := NFeDV.AsInteger;
        Ide.verProc := '1.0.0';
        Ide.cUF := 52;
 
    // Emitente
        Emit.CNPJCPF := DataModule1.EmpresaCnpj.AsString;
        Emit.xNome := DataModule1.EmpresaRazaoSocial.AsString;
        Emit.xFant := DataModule1.EmpresaNomeFantazia.AsString;
        Emit.EnderEmit.xLgr := DataModule1.EmpresaEndereco.AsString;
        Emit.EnderEmit.nro := DataModule1.EmpresaNumero.AsString;
        Emit.EnderEmit.xCpl := DataModule1.EmpresaComplemento.AsString;
        Emit.EnderEmit.xBairro := DataModule1.EmpresaBairro.AsString;
        Emit.EnderEmit.cMun := DataModule1.EmpresaCodigoCidade.AsInteger;
        Emit.EnderEmit.xMun := DataModule1.EmpresaCidade.AsString;
        Emit.EnderEmit.UF := DataModule1.EmpresaEstado.AsString;
        Emit.EnderEmit.CEP := DataModule1.EmpresaCep.AsInteger;
        Emit.EnderEmit.cPais := 1058;
        Emit.EnderEmit.xPais := 'BRASIL';
        Emit.EnderEmit.Fone := DataModule1.EmpresaFone.AsString;
        Emit.IE := Trim(DataModule1.EmpresaInscricaoEstadual.AsString);
        Emit.IM := DataModule1.EmpresaInscricaoMunicipal.AsString;
        Emit.CNAE := DataModule1.EmpresaCNAEFiscal.AsString;
        if (Copy(DataModule1.EmpresaRegimeTributario.AsString, 1, 1)) = '1' then
        begin
          Emit.CRT := crtSimplesNacional;
        end;
        if (Copy(DataModule1.EmpresaRegimeTributario.AsString, 1, 1)) = '2' then
        begin
          Emit.CRT := crtSimplesExcessoReceita;
        end;
        if (Copy(DataModule1.EmpresaRegimeTributario.AsString, 1, 1)) = '3' then
        begin
          Emit.CRT := crtRegimeNormal;
        end;
 
 
    // Destinatario
        DataModule1.Produtor.Locate('NunNfe', IntToStr(NFeCodigoProdutor.AsInteger), []);
        Dest.CNPJCPF := DataModule1.ProdutorCpf.AsString;
        Dest.xNome := DataModule1.ProdutorNomeCoperado.AsString;
        Dest.IE := DataModule1.ProdutorInscricaoEstadual.AsString;
   // Dest.ISUF := DataModule1.ProdutorUf.AsString;
        Dest.EnderDest.xLgr := DataModule1.ProdutorEnderecoResidencial.AsString;
        Dest.EnderDest.nro := IntToStr(DataModule1.ProdutorNunResidencia.AsInteger);
        Dest.EnderDest.xBairro := DataModule1.ProdutorBairro.AsString;
        Dest.EnderDest.cMun := DataModule1.ProdutorCodigoMunicipio.AsInteger;
        Dest.EnderDest.xMun := DataModule1.ProdutorCidade.AsString;
        Dest.EnderDest.UF := DataModule1.ProdutorUf.AsString;
        Dest.EnderDest.CEP := DataModule1.ProdutorCep.AsInteger;
        Dest.EnderDest.cPais := 1058;
        Dest.EnderDest.xPais := 'BRASIL';
        Dest.EnderDest.fone := DataModule1.ProdutorFone.AsString;
 
    //    Itens  NFe
 
        NunID := 0;
        while not ItensNFEFiscal.Eof do
        begin
          Inc(NunID);
          with Det.Add do
          begin
            Prod.nItem := NunID;
            Prod.cProd := IntToStr(ItensNFEFiscalcodigoProduto.AsInteger);
            Prod.cEAN := ItensNFEFiscalCodigoEAN13.AsString;
            Prod.xProd := ItensNFEFiscalProduto.AsString;
            Prod.NCM := ItensNFEFiscalCodigoNCM.AsString;
            Prod.CFOP := IntToStr(ItensNFEFiscalCFOP.AsInteger);
            Prod.uCom := ItensNFEFiscalUnidadeTributo.AsString;
            Prod.vUnCom := ItensNFEFiscalValorUnitarioTributo.AsFloat;
            Prod.vProd := ItensNFEFiscalValorTotalBruto.AsFloat; // ItensNFEFiscalValorTotalBruto.AsFloat;
            Prod.cEANTrib := '';
            Prod.uTrib := ItensNFEFiscalUnidadeTributo.AsString;
            Prod.vUnTrib := ItensNFEFiscalValorUnitarioTributo.AsFloat;
 
            if ItensNFEFiscalTipoTributo.AsInteger <> 0 then
            begin
              Prod.qTrib := ItensNFEFiscalQtdTributo.AsFloat;
            end
            else
              Prod.qTrib := 0;
            Prod.IndTot := itSomaTotalNFe;
            Prod.EXTIPI := '';
            Prod.qCom := ItensNFEFiscalQtdComercial.AsFloat;
            Prod.vFrete := 0;
            Prod.vSeg := 0;
            Prod.vDesc := ItensNFEFiscalDesconto.AsFloat;
 
            with Imposto do
            begin
              with ICMS do
              begin
                if ItensNFEFiscalTipoTributo.AsInteger = 0 then // 0 - Tributado
                begin
                  CST := cst00;
                  CSOSN := csosn101;
                  ICMS.orig := oeNacional;
                  ICMS.modBC := dbiValorOperacao;
                  ICMS.vBC := ItensNFEFiscalValorUnitarioTributo.AsFloat;
                  ICMS.pICMS := ItensNFEFiscalAliqICMS.AsFloat;
                  ICMS.vICMS := (ItensNFEFiscalValorUnitarioTributo.AsFloat * ItensNFEFiscalAliqICMS.AsFloat) / 100;
                  ICMS.modBCST := dbisMargemValorAgregado;
                  ICMS.pMVAST := 0;
                  ICMS.pRedBCST := 0;
                  ICMS.vBCST := 0;
                  ICMS.pICMSST := 0;
                  ICMS.vICMSST := 0;
                  ICMS.pRedBC := 0;
                end;
 
                if ItensNFEFiscalSituacaotributariaICMS.AsInteger = 60 then // 60 - Cobrado anteriormente por ST
                begin
//              ICMS.CSOSN := csosn101; // DEIXEI FIXO POIS SO TEM UMA EMPRESA Q USA ISSO
                  ICMS.CST := cst60;
                  ICMS.vBCSTRet := 0;
                  ICMS.vICMSSTRet := 0;
                end;
 
                if ItensNFEFiscalSituacaotributariaICMS.AsInteger = 40 then //40 - Isenta
                begin
//              ICMS.CSOSN := csosn101; // DEIXEI FIXO POIS SO TEM UMA EMPRESA Q USA ISSO
                  ICMS.CST := cst40;
                  ICMS.vBCSTRet := 0;
                  ICMS.vICMSSTRet := 0;
                end;
              end; // fechado icms
 
              with IPI do
              begin
                cEnq := IntToStr(ItensNFEFiscalCodigoEnquadramentoIPI.AsInteger);
                case ItensNFEFiscalSituacaotributariaIPI.AsInteger of
                  00:
                    CST := ipi00;
                  01:
                    CST := ipi01;
                  02:
                    CST := ipi02;
                  03:
                    CST := ipi03;
                  04:
                    CST := ipi04;
                  05:
                    CST := ipi05;
                  49:
                    CST := ipi49;
                  50:
                    CST := ipi50;
                  51:
                    CST := ipi51;
                  52:
                    CST := ipi52;
                  53:
                    CST := ipi53;
                  54:
                    CST := ipi54;
                  55:
                    CST := ipi55;
                  99:
                    CST := ipi99;
                end;
              end;
 
              with PIS do
              begin
                CST := pis07;
 
                with COFINS do
                begin
                  CST := cof07;
                end;
              end;
            end;
            ItensNFEFiscal.Next;
          end;
 
 
     // informações finais da NFe
   // DmNFe.Dados_Tributos(CdsNFeID.AsInteger);
          Total.ICMSTot.vBC := 0;
    //Total.ICMSTot.vICMS := DmNFe.CdsTributoVAL_ICMS.AsFloat;
    //Total.ICMSTot.vBCST := DmNFe.CdsTributoBASE_ST.AsFloat;
          Total.ICMSTot.vST := (ItensNFEFiscalValorUnitarioTributo.AsFloat * ItensNFEFiscalAliqICMS.AsFloat) / 100;
          Total.ICMSTot.vProd := NFeValorNFe.AsFloat;
          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 := NFeValorNFe.AsFloat;
     //
          Total.ISSQNtot.vServ := 0;
          Total.ISSQNtot.vBC := 0;
          Total.ISSQNtot.vISS := 0;
          Total.ISSQNtot.vPIS := 0;
          Total.ISSQNtot.vCOFINS := 0;
    //
          Total.retTrib.vRetPIS := 0;
          Total.retTrib.vRetCOFINS := 0;
          Total.retTrib.vRetCSLL := 0;
          Total.retTrib.vBCIRRF := 0;
          Total.retTrib.vIRRF := 0;
          Total.retTrib.vRetPrev := 0;
 
    // transportara
 
{    Transp.Transporta.CNPJCPF := '';
    Transp.Transporta.xNome := '';
    Transp.Transporta.IE := '';
    Transp.Transporta.xEnder := '';
    Transp.Transporta.xMun := '';
    Transp.Transporta.UF := '';
    with Transp.Reboque.Add do
    begin
      placa := '';
      UF := '';
      RNTC := '';
    end;  }
 
    {  0 - Por conta do emitente
        1 - Por conta do destinatário / emitente
        2 - Por conta de terceiros
        9 - Sem frete
     }
          Transp.modFrete := mfSemFrete;
 
 
 
          with Transp.Vol.Add do
          begin
 
            qVol := NFeQuantidadeFrete.AsInteger;
            esp := (Trim(NFeEspecieFrete.AsString));
            marca := '';
            nVol := '';
            pesoL := NFePesoLiquidoFrete.AsFloat;
            pesoB := NFePesoBrutoFrete.AsFloat;
          end;
          InfAdic.infCpl := (Trim(NFeInfComplementar.AsString));
     {
    with InfAdic.obsCont.Add do
    begin
      xCampo := (Trim(NFeInfAdicional.AsString));
      xTexto := (Trim(NFeInfComplementar.AsString));
    end;
    with InfAdic.obsFisco.Add do
    begin
      xCampo := '';
      xTexto := '';
    end;
      }
        end;
      end;
      DataModule1.ACBrNFe1.NotasFiscais.Valida;
      DataModule1.ACBRNFe1.Configuracoes.Geral.PathSalvar := IncludeTrailingPathDelimiter('D:\Sistemas Infornet®\Coperpan\NFe\');
      DataModule1.ACBrNFe1.NotasFiscais.Items[0].SaveToFile;
      Gauge3.Progress := Gauge3.Progress + 1;
      Next;
    end;
end;
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3847 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.