Ir para conteúdo
  • Cadastre-se

dev botao

Campos para MDFe no Plus


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

Recommended Posts

Beleza, Obrigado!

Os arquivos ini do topico mencionado não são validos ou são modelos genéricos.

Preciso de um arquivo ENT.TXT valido para que possa servir de modelo para mim, tendo em vista que o que estou gerando aqui está dando trocentos erros.

Alguém pode disponibilizar?

Janio

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Não tenho nenhum, mas tu pode pegar um xml válido e enviar o comando ao monitor que ele gera um ini pra ti poder ver como deveria ser gerado!

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

Juliomar,

O comando MDFe.MDFetoTxt("C:\harbour32\sistemas\SysLoja\mdfe.xml", "mdfeTXT.txt") gerou um TXT com o mesmo conteúdo do xml, e não em formato INI. Reinstalei a ultima versão do ACBrNfeMonitor (0.9.05.2) que eu tinha aqui pra ver se o problema era com o PLUS, porem, deu o mesmo resultado!

AcbrMonitorPLUS 0.3.04.5

mdfeTXT.txt

mdfe.xml

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Não estava implementado mesmo, fiz as alterações para a modalidade Rodoviario mas não fiz para as demais...

@Janio 

@Juliomar Marchetti

segue o código da procedure GerarMDFeINI se alguém puder dar uma olhada e subir para o SVN... hora que der implemento o resto..

function GerarMDFeIni( XML : WideString ) : WideString;
var
  I, j, y : Integer;
  sSecao : String;
  INIRec : TMemIniFile;
  IniMDFe : TStringList;
  LocMDFeR : TMDFeR;
begin
 INIRec := TMemIniFile.create( 'MDFe.ini' );
 FrmACBrMonitor.ACBrMDFe1.Manifestos.Clear;
 if FilesExists(XML) then
    FrmACBrMonitor.ACBrMDFe1.Manifestos.LoadFromFile(XML)
 else
  begin
    LocMDFeR := TMDFeR.Create(FrmACBrMonitor.ACBrMDFe1.Manifestos.Add.MDFe);
    try
       LocMDFeR.Leitor.Arquivo := ConvertStrRecived( XML );
       LocMDFeR.LerXml;
       FrmACBrMonitor.ACBrMDFe1.Manifestos.Items[0].XML := LocMDFeR.Leitor.Arquivo;
       FrmACBrMonitor.ACBrMDFe1.Manifestos.GerarMDFe;
    finally
       LocMDFeR.Free;
    end;
  end;

 with FrmACBrMonitor do
  begin
   try
      with ACBrMDFe1.Manifestos.Items[0].MDFe do
       begin
         INIRec.WriteInteger('ide', 'cUF', Ide.cUF);
         INIRec.WriteString( 'ide', 'tpEmit', TpEmitenteToStr(Ide.tpEmit));
         INIRec.WriteString( 'ide', 'mod', Ide.modelo);
         INIRec.WriteInteger('ide', 'serie', Ide.serie);
         INIRec.WriteInteger('ide', 'nMDF', Ide.nMDF);
         INIRec.WriteInteger('ide', 'cMDF', Ide.cMDF);
         INIRec.WriteString( 'ide', 'modal', ModalToStr(Ide.modal));
         INIRec.WriteString( 'ide', 'dhEmi', DateToStr(Ide.dhEmi));
         INIRec.WriteString( 'ide', 'tpEmis', TpEmisToStr(Ide.tpEmis));
         INIRec.WriteString( 'ide', 'procEmi', procEmiToStr(Ide.procEmi));
         INIRec.WriteString( 'ide', 'verProc', Ide.verProc);
         INIRec.WriteString( 'ide', 'UFIni', Ide.UFIni);
         INIRec.WriteString( 'ide', 'UFFim', Ide.UFFim);
         INIRec.WriteString( 'ide', 'dhIniViagem', DateToStr(Ide.dhIniViagem));

         for i := 0 to ide.infMunCarrega.Count -1 do
         begin
           sSecao := 'CARR' + IntToStrZero(I+1, 3);

           with ide.infMunCarrega.Items[i] do
           begin
             INIRec.WriteInteger(sSecao, 'cMunCarrega', cMunCarrega);
             INIRec.WriteString(sSecao, 'xMunCarrega', xMunCarrega);
           end;
         end;

         for i := 0 to ide.infPercurso.Count -1 do
         begin
           sSecao := 'PERC' + IntToStrZero(I+1, 3);

           with ide.infPercurso.Items[i] do
           begin
             INIRec.WriteString(sSecao, 'UFPer', UFPer);
           end;
         end;

         INIRec.WriteString('emit', 'CNPJ', Emit.CNPJ);
         INIRec.WriteString('emit', 'IE', Emit.IE);
         INIRec.WriteString('emit', 'xNome', Emit.xNome);
         INIRec.WriteString('emit', 'xFant', Emit.xFant);

         INIRec.WriteString( 'emit', 'xLgr', Emit.enderEmit.xLgr);
         INIRec.WriteString( 'emit', 'nro', Emit.enderEmit.nro);
         INIRec.WriteString( 'emit', 'xCpl', Emit.enderEmit.xCpl);
         INIRec.WriteString( 'emit', 'xBairro', Emit.enderEmit.xBairro);
         INIRec.WriteInteger('emit', 'cMun', Emit.enderEmit.cMun);
         INIRec.WriteString( 'emit', 'xMun', Emit.enderEmit.xMun);
         INIRec.WriteInteger('emit', 'CEP', Emit.enderEmit.CEP);
         INIRec.WriteString( 'emit', 'UF', Emit.enderEmit.UF);
         INIRec.WriteString( 'emit', 'fone', Emit.enderEmit.fone);
         INIRec.WriteString( 'emit', 'email', Emit.enderEmit.email);

         case Ide.modal of
           moRodoviario:  begin
                            INIRec.WriteString('Rodo', 'RNTRC', Rodo.RNTRC);
                            INIRec.WriteString('Rodo', 'CIOT', Rodo.CIOT);
                            INIRec.WriteString('Rodo', 'tpRod', TpRodadoToStr(Rodo.veicTracao.tpRod));
                            INIRec.WriteString('Rodo', 'tpCar', TpCarroceriaToStr(Rodo.veicTracao.tpCar));
                            INIRec.WriteString('Rodo', 'UF', Rodo.veicTracao.UF);

                            if (Rodo.veicTracao.placa <> '') then
                                begin
                                  INIRec.WriteString('veicTracao', 'clInt', Rodo.veicTracao.cInt);
                                  INIRec.WriteString('veicTracao', 'placa', Rodo.veicTracao.placa);
                                  INIRec.WriteString('veicTracao', 'RENAVAN', Rodo.veicTracao.RENAVAM);
                                  INIRec.WriteInteger('veicTracao', 'tara', Rodo.veicTracao.tara);
                                  INIRec.WriteInteger('veicTracao', 'capKG', Rodo.veicTracao.capKG);
                                  INIRec.WriteInteger('veicTracao', 'clInt', Rodo.veicTracao.capM3);
                                end;

                              if ( Rodo.veicTracao.prop.CNPJCPF <> '') then
                              begin
                                INIRec.WriteString('prop','CPFCNPJ',Rodo.veicTracao.prop.CNPJCPF);
                                INIRec.WriteString('prop','RNTRC',Rodo.veicTracao.prop.RNTRC);
                                INIRec.WriteString('prop','xNome',Rodo.veicTracao.prop.xNome);
                                INIRec.WriteString('prop','IE',Rodo.veicTracao.prop.IE);
                                INIRec.WriteString('prop','UF',Rodo.veicTracao.prop.UF);
                                INIRec.WriteString('prop','tpProp',TpPropToStr(Rodo.veicTracao.prop.tpProp));
                                end;

                              for y := 1 to Rodo.veicTracao.condutor.Count -1 do
                                begin
                                sSecao := 'condutor'+IntToStrZero(y+1,3);
                                IniRec.WriteString(sSecao,'CPF',Rodo.veicTracao.condutor.Items[y].CPF);
                                IniRec.WriteString(sSecao,'xNome',Rodo.veicTracao.condutor.Items[y].xNome);
                                end;

                          end;
           moAereo:       begin
                            // Implementar
                          end;
           moAquaviario:  begin
                            // Implementar
                          end;
           moFerroviario: begin
                            // Implementar
                          end;
         end;

         for i := 0 to infDoc.infMunDescarga.Count -1 do
         begin
           sSecao := 'DESC' + IntToStrZero(I+1, 3);

           with infDoc.infMunDescarga.Items[i] do
           begin
             INIRec.WriteInteger(sSecao, 'cMunDescarga', cMunDescarga);
             INIRec.WriteString(sSecao, 'xMunDescarga', xMunDescarga);

             for j := 0 to infDoc.infMunDescarga.Items[i].infCTe.Count -1 do
             begin
               sSecao := 'infCTe' + IntToStrZero(I+1, 3) + IntToStrZero(J+1, 3);

               with infDoc.infMunDescarga.Items[i].infCTe.Items[j] do
               begin
                 INIRec.WriteString(sSecao, 'chCTe', chCTe);
                 INIRec.WriteString(sSecao, 'SegCodBarra', SegCodBarra);

                 // Implementar infUnidTransp - Lista
               end;
             end;

             for j := 0 to infDoc.infMunDescarga.Items[i].infNFe.Count -1 do
             begin
               sSecao := 'infNFe' + IntToStrZero(I+1, 3) + IntToStrZero(J+1, 3);

               with infDoc.infMunDescarga.Items[i].infNFe.Items[j] do
               begin
                 INIRec.WriteString(sSecao, 'chNFe', chNFe);
                 INIRec.WriteString(sSecao, 'SegCodBarra', SegCodBarra);

                 // Implementar infUnidTransp - Lista
               end;
             end;

             for j := 0 to infDoc.infMunDescarga.Items[i].infMDFeTransp.Count -1 do
             begin
               sSecao := 'infMDFeTransp' + IntToStrZero(I+1, 3) + IntToStrZero(J+1, 3);

               with infDoc.infMunDescarga.Items[i].infMDFeTransp.Items[j] do
               begin
                 INIRec.WriteString(sSecao, 'chMDFe', chMDFe);

                 // Implementar infUnidTransp - Lista
               end;
             end;

           end;
         end;

         INIRec.WriteInteger('tot', 'qCTe', tot.qCTe);
         INIRec.WriteInteger('tot', 'qNFe', tot.qNFe);
         INIRec.WriteInteger('tot', 'qMDFe', tot.qMDFe);
         INIRec.WriteFloat( 'tot', 'vCarga', tot.vCarga);
         INIRec.WriteString( 'tot', 'cUnid', UnidMedToStr(tot.cUnid));
         INIRec.WriteFloat( 'tot', 'qCarga', tot.qCarga);

          for i := 0 to lacres.Count - 1 do
          begin
            sSecao := 'lacres' + IntToStrZero(I+1, 3);
            with lacres.Items[i] do
            begin
              INIRec.WriteString(sSecao, 'nLacre', nLacre);
            end;
          end;

          for i := 0 to autXML.Count - 1 do
          begin
            sSecao := 'autXML' + IntToStrZero(I+1, 3);
            with autXML.Items[i] do
            begin
//              if CNPJCPF <> '' then
                INIRec.WriteString(sSecao, 'CNPJCPF', CNPJCPF)
//              else if CPF <> '' then
//                     INIRec.WriteString(sSecao, 'CNPJCPF', CPF);
            end;
          end;

         INIRec.WriteString('infAdic', 'infAdFisco', infAdic.infAdFisco);
         INIRec.WriteString('infAdic', 'infCpl', infAdic.infCpl);
       end;
   finally
      IniMDFe := TStringList.Create;
      INIRec.GetStrings(IniMDFe);
      INIRec.Free;
      Result := StringReplace(IniMDFe.Text,sLineBreak+sLineBreak,sLineBreak,[rfReplaceAll]);
      IniMDFe.Free;
   end;

  end;

end;

 

Link para o comentário
Compartilhar em outros sites

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