Ir para conteúdo
  • Cadastre-se

dev botao

Procedimento "ObterNomeArquivo"


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

Recommended Posts

Bom dia a todos!

Estou tentando implementar um procedimento existente no ACBrCTe e estou com algumas dificuldades, e se possível gostaria de ajuda.

Existe uma procedimento chamado "ObterNomeArquivo", gostaria de ter uma auxilio para usa-lá, e implementar em todas a geração de arquivos xml.

Gostaria ter uma auxílio para melhor utilizar e poder publicar, pois havia criado procedimentos nossos aqui e toda mudança de versão temos um enorme trabalho para entender o código e saber onde colocar nossas implementações, mas vimos que com esse procedimento resolvem nosso problema.

Vamos, lá estou atuando na classe "ACBrCTeWebServices" implementei na parte do código onde grava o xml protocolado:

            with FConhecimentos.Items[J] do
            begin
              XMLOriginal := AProcCTe.Gerador.ArquivoFormatoXML;
              CTe.procCTe.Versao := AProcCTe.Versao;// Alterado por Nilton Olher em 11/04/2016 - Implementado porque no procedimento  ObterNomeArquivo a versão não estava chegando

              if FPConfiguracoesCTe.Arquivos.Salvar then
              begin
                SalvarXML := (not FPConfiguracoesCTe.Arquivos.SalvarApenasCTeProcessados) or
                             Processado;

                // Salva o XML do CT-e assinado e protocolado
                if SalvarXML then
                begin
                  NomeXMLSalvo := CTe.procCTe.ObterNomeArquivo(tpnPublico); // Alterado por Nilton Olher em 11/04/2016 - para usar nome padrão manual CT-e para os arquivos de protocolo

                  if NaoEstaVazio(NomeArq) and FileExists(NomeArq) then
                  begin
                    FPDFeOwner.Gravar( NomeArq, XMLOriginal );  // Atualiza o XML carregado
                    NomeXMLSalvo := NomeArq;
                  end;

                  // Alterado por Nilton Olher em 11/04/2016 - para usar nome padrão manual CT-e para os arquivos de protocolo
                  if (NomeXMLSalvo <> CalcularNomeArquivoCompleto()) then
                    GravarXML(NomeXMLSalvo); // Salva na pasta baseado nas configurações do PathCTe
                end;
              end;
 

O procedimento ObterNomeArquivo esta na classe "ProcCTe" da seguinte forma:

function TProcCTe.ObterNomeArquivo(const PadraoNome: TPcnPadraoNomeProcCTe = tpnPrivado): String;
begin
  Result := FchCTe + '-procCTe.xml';
  if PadraoNome = tpnPublico then
  begin
    Result := FnProt + '_v' + FVersao + '-procCTe.xml'; // Modificado de Versao para FVersao para serguir o FnProt.
  end;
end;

O mesmo procedimento  ObterNomeArquivo esta nas classes 

 

Gostaria de saber de nossos moderadores, os seguintes detalhes:

1- Se posso trabalhar nessa linha e poder publica-lá ou se tem outras ideias;

2- Se há possibilidades de inserir como propriedade do componente esse parâmetro "PadraoNome";

3-E se podemos implementar esse procedimento  ObterNomeArquivo para as demais classe tento em vista que esta somente na classe "ProcCTe" e temos as classes "TRetInutCTe", 

 

Certo de sua atenção antecipamos agradecimentos,

 

Sem mais para o momento, 

 

 

 

 

 

______________________________________________________

Nilton Olher Serafim
Analista de Sistema - Inovação Tecnologia 
Skype: nolher
Link para o comentário
Compartilhar em outros sites

Boa tarde a todos!

Como não obtive resposta sobre meu tópico realizei a devidas implementações e gostaria que seja publicado.

Segue em anexo a classes alteradas:

1- Alterado classe da pasta ACBr\Fontes\ACBrDFe\ACBrCTe\PCNCTe

1.1- Unit  pcteConversaoCTe.pas, apenas criado um enumerator 

  TModeloCTe = (moCTe, moCTeOS);
  TVersaoCTe = (ve200, ve300);
  TpctePadraoNome = (tpnPublico, tpnPrivado);

  TpcteFormaPagamento = (fpPago, fpAPagar, fpOutros);
  TpcteTipoCTe = (tcNormal, tcComplemento, tcAnulacao, tcSubstituto);
  TpcteTipoServico = (tsNormal, tsSubcontratacao, tsRedespacho, tsIntermediario,
 

1.2- Unit  pcteProcCTe.pas 

1.2.1- Eliminado o enumerator  TPcnPadraoNomeProcCTe

1.2.2- Troco a declaração do enumerator  TPcnPadraoNomeProcCTe por TpctePadraoNomepor(utilizando da unit pcteConversaoCTe.pas que é padrão)

1.3- Unit  pcteRetEnvEventoCTe.pas criado o procedimento ObterNomeArquivo

1.4- Unit  pcteRetInutCTe.pas criado o procedimento ObterNomeArquivo

2- Alterado classe da pasta  ACBr\Fontes\ACBrDFe\ACBrCTe

2.1- Unit  ACBrCTeConfiguracoes.pas criado a propriedade  PadraoNome

2.2- Unit  ACBrCTeWebServices.pas implementado os procedimentos para definir o nome do arquivo xml através do procedimento ObterNomeArquiv e propriedade  PadraoNome 

2.2.1- Xml protocolado:

                // Salva o XML do CT-e assinado e protocolado
                if SalvarXML then
                begin
                  NomeXMLSalvo := CTe.procCTe.ObterNomeArquivo(FPConfiguracoesCTe.Arquivos.PadraoNome); // Alterado por Nilton Olher em 11/04/2016 - para usar nome padrão manual CT-e para os arquivos de protocolo

                  if NaoEstaVazio(NomeArq) and FileExists(NomeArq) then
                  begin
                    FPDFeOwner.Gravar( NomeArq, XMLOriginal );  // Atualiza o XML carregado
                    NomeXMLSalvo := NomeArq;
                  end;

                  // Alterado por Nilton Olher em 11/04/2016 - para usar nome padrão manual CT-e para os arquivos de protocolo
                  if (NomeXMLSalvo <> CalcularNomeArquivoCompleto()) then
                    GravarXML(NomeXMLSalvo); // Salva na pasta baseado nas configurações do PathCTe
                end;

2.2.2- Gravação do xml a partir da consulta

                if (FRetCTeDFe <> '') {and FPConfiguracoesCTe.Geral.Salvar} then
                  FPDFeOwner.Gravar( FCTeChave + '-CTeDFe.xml', FRetCTeDFe, sPathCTe);

                // Salva o XML do CT-e assinado e protocolado
                NomeXMLSalvo := CTeRetorno.protCTe.ObterNomeArquivo(tpnPublico); // Alterado por Nilton Olher em 11/04/2016 - para usar nome padrão manual CT-e para os arquivos de protocolo
                if NaoEstaVazio(NomeArq) and FileExists(NomeArq) then
                begin
                  FPDFeOwner.Gravar( NomeArq, XMLOriginal );  // Atualiza o XML carregado
                  NomeXMLSalvo := NomeArq;
                end;

                // Salva na pasta baseado nas configurações do PathCTe
                if (NomeXMLSalvo <> CalcularNomeArquivoCompleto()) then
                  GravarXML(NomeXMLSalvo); // Alterado por Nilton Olher em 11/04/2016 - para usar nome padrão manual CT-e para os arquivos de protocolo
 

2.2.3- Gravação do xml da Inutilização

      FNomeArquivo := PathWithDelim(GerarPathPorCNPJ) + CTeRetorno.ObterNomeArquivo(FPConfiguracoesCTe.Arquivos.PadraoNome); // Alterado por Nilton Olher em 11/04/2016 - para usar nome padrão manual CT-e para os arquivos de protocolo
      if FPConfiguracoesCTe.Arquivos.Salvar then
        FPDFeOwner.Gravar(FNomeArquivo, FXML_ProcInutCTe, GerarPathPorCNPJ);

 

2.2.4- Gravação de xml de Eventos

            if FPConfiguracoesCTe.Arquivos.Salvar then
            begin
              NomeArq := EventoRetorno.ObterNomeArquivo(EventoRetorno.retEvento.Items[j].RetInfEvento.tpEvento, FPConfiguracoesCTe.Arquivos.PadraoNome); // Alterado por Nilton Olher em 11/04/2016 - para usar nome padrão manual CT-e para os arquivos de protocolo
              PathArq := PathWithDelim(GerarPathEvento(FEvento.Evento.Items.InfEvento.CNPJ));

              FPDFeOwner.Gravar(NomeArq, Texto, PathArq);
              FEventoRetorno.retEvento.Items[J].RetInfEvento.NomeArquivo := PathArq + NomeArq;
              FEvento.Evento.Items.RetInfEvento.NomeArquivo := PathArq + NomeArq;
            end;
 


Foram alterações pontuais e de fácil entendimento, sendo assim solicito a atualização em breve.

Sem mais para o momento, 

Atenciosamente;

 

 

 

______________________________________________________

Nilton Olher Serafim
Analista de Sistema - Inovação Tecnologia 
Skype: nolher
Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa noite Nilton,

Andei analisando as suas alterações e notei que visa salvar os arquivos segundo a nomenclatura usada pela SEFAZ para compartilhar os XML entre as Secretarias de fazenda e outros órgãos.

No meu entendimento o componente tem que gerar os arquivos e nomeá-los conforme a nomenclatura usada para compartilhar os mesmos com os interessados.

Sendo assim não vou aplicar essa alteração, mas vou pedir para os demais moderadores e administradores avaliarem pois se fizer no CT-e devemos fazer na NFe e no MDF-e.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Bom dia! Italo!

Como vc pode observar foi implantado as duas opções, sendo assim não muda o formato que existe hoje! Apenas adiciona a possibilidade de ter essa outra possibilidades de ter esse outro formato, com já debatemos aqui em outra época, qual nomenclatura usar é questão de interpretação, não si se lembra mas chegamos até ver com o SEFAZ. Veja o tópico:

 

Não é uma alteração que irá prejudicar o bom funcionamento do componente, mas irá nos beneficiar por demais pois toda alteração de componente temos que repassar todas essas alterações simplesmente para reimplementa-lá!

 

Sendo assim peço encarecidamente que publique nossas implementações.

 

Certo de vossa atenção antecipo agradecimentos,

 

Atenciosamente,

______________________________________________________

Nilton Olher Serafim
Analista de Sistema - Inovação Tecnologia 
Skype: nolher
Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...

Bom dia a todos!

Meus nobres Moderadores, por gentileza gostaria de obter  um parecer de vocês!

Já vi que existe atualizações do componente e para nós esta sendo muito sacarifico para manter o componente atualizado e manter essa integridade exigida por alguns contadores de nossos clientes.

Desde já agradecemos a atenção,

 

Atenciosamente,

______________________________________________________

Nilton Olher Serafim
Analista de Sistema - Inovação Tecnologia 
Skype: nolher
Link para o comentário
Compartilhar em outros sites

Bom dia pessoal!

 

Ainda estou aguardando o posicionamento dos moderadores, referente essa nossa alteração.

 

Realizando essa alteração teremos uma maior possibilidade de manter o componente sempre atualizado.

 

Certo de suas atenção, antecipo agradecimentos,

 

Atenciosamente,

______________________________________________________

Nilton Olher Serafim
Analista de Sistema - Inovação Tecnologia 
Skype: nolher
Link para o comentário
Compartilhar em outros sites

Bom dia pessoal!

 

Ainda estou aguardando de um posicionamento de nossos moderadores, referente essa nossa implementação.

São alterações que não traz nenhum transtorno para a plataforma atual, muito pelo contrario na minha visão traz beneficio!

E como já relatei em anteriormente, irão nos oferecer um beneficio muito grande, quando realizamos a compatibilização de versão.

Certo de suas atenção, agradecemos o empenho de todos e a constante colaboração,

 

Atenciosamente,

______________________________________________________

Nilton Olher Serafim
Analista de Sistema - Inovação Tecnologia 
Skype: nolher
Link para o comentário
Compartilhar em outros sites

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