Ir para conteúdo
  • Cadastre-se

nolher

Membros
  • Total de ítens

    189
  • Registro em

  • Última visita

Tudo que nolher postou

  1. Bom dia pessoal! Se puderem conceder uma atenção nesse problema, eu lhes agradeço! Estou finalizando a implementação da versão 3.00 e estou pendente somente nesse quesito. Pessoal até tentei corrigir aqui, mas não entendi a nova codificação. O problema é quando a quantidade de CT-e/NF-e no MDF-e ultrapassa o que pode ser impresso em uma unica pagina, isto é, a quantidade de CT-e/NF-e não cabe apenas em uma página, tenho clientes que fazem isso e não poderei liberar desta forma. Na versão anterior isso era possível! Certo da atenção de sempre, antecipo agradecimentos, Atenciosamente,
  2. Bom dia! Ainda aguardo parecer de nossos moderadores Desde já agradecemos a atenção, Atenciosamente,
  3. Bom dia pessoal! Estou com esse mesmo problema. Me desculpem, tente entender as informações postadas assim e não consegui entender! Percebi que o problema é na validação, isto é, antes de ir pro SEFAZ correto? Qual é o procedimento adotado para solução do mesmo? Mais uma vez certo de suas atenção, Antecipamos agradecimentos,
  4. Bom dia a todos, Estamos realizando os testes de emissão do DAMDFe na versão 3.00. Encontra uma falha ao imprimir mais de uma página. Temos cliente que emite muitos CT-e e na impressão não está imprimindo as chaves na primeira página, e emitindo todas as chaves na segunda mesmo não cabendo. segue em anexo xml 31170421912781000160580010000001031000000082-mdfe.xml e pdf Manifesto Eletrônico de Documentos Fiscais - MDF-e.pdf do teste realizado. tentamos resolver mas tivemos dificuldades de entender o funcionamento dessa nova versão. Certo de suas atenção, Atenciosamente,
  5. 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,
  6. 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;
  7. 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,
  8. Bom dia! Pesquisei no forum informações sobre o "ProcCTe" em específico a função "ObterNomeArquivo" e não obtive informações, como já tínhamos esse tópico ainda em aberto resolvi colocar no mesmo! Bom, estou atualizando o ACBr para nos preparar para o CTe 3.00, e me voltei a uma velho problema em relação a nomeclatura, não necessariamente precisamos voltar a esse dilema, apenas identifiquei que há a classe situada acima e com a função "ObterNomeArquivo" que faz exatamente o que precisamos, só não consegui identificar como utiliza-lá, tem como me oferecer um auxilio? Dentro do componente como ativo essa classe com essa função? desde já antecipo agradecimentos,
  9. Valeu, muito obrigado pela atenção!
  10. Boa tarde! Daniel eu vi no tópico falando do arquivo "SAT_Bematech_senha-123456" o qual não consegui baixa-lo! Por isso perguntei si há outra de DLL bematech. Mas, estudando o programa teste da ACBr percebi que utilizando que setando o Modelo para satDinamico_cdecl ocorre o mesmo problema, enquanto se setar o Modelo para satdDinamico_stdcal não ocorre. Poderiam me oferecer uma orientação melhor entre esses dois modelos, e o principal qual realmente é indicado para trabalhar com o equipamento SAT bematech Sem mais para o momento, antecipamos agradecimentos. Atenciosamente,
  11. Boa tarde a todos! Estramos trabalhando em um aplicação nossa em Delphi XE! A aplicação esta funcionando perfeitamente no emulador! Quando colocamos para se comunicar com o equipamento SAT Bematech, não estamos conseguindo obter os resultados. O retorno inserido em uma variável AnsiString, simplesmente esta sendo limpa em um determinando momento e ocorre erro de memoria. Vi aqui no forum que existe uma outra Dll fornecida pela Bematech, mas não consegui fazer o download dela. Essa dll ainda esta disponível? É possível nos enviar? Existe alguma outra dica que possa nos oferecer? Sem mais para o momento, Atenciosamente,
  12. Bom dia, a todos! Alguém chegou a verificar essa questão acima? Tem alguma informação para nós? Pode ser alterado? Atenciosamente,
  13. Bom dia, boa tarde e boa noite! Conforme for a hora pra todos. Pessoal estamos com CT-e e MDF-e em produção, e fomos questionados pela mudança de mascara da Chave de Acesso, e gostaria de questionar o motivo desta mudança. Em Trunk1 (ACBrCTeUtil) havia a seguinte função de Mascarar a Chave de Acesso: class function CTeUtil.FormatarChaveAcesso(AValue: String; Mascara: Boolean = False ): String; begin AValue := DFeUtil.LimpaNumero(AValue); if Mascara then Result := copy(AValue,1,2) + '-' + copy(AValue,3,2) + '/' + copy(AValue,5,2) + '-' + copy(AValue,7,2) + '.' + copy(AValue,9,3) + '.' + copy(AValue,12,3) + '/' + copy(AValue,15,4) + '-' + copy(AValue,19,2) + '-' + copy(AValue,21,2) + '-' + copy(AValue,23,3) + '-' + copy(AValue,26,3) + '.' + copy(AValue,29,3) + '.' + copy(AValue,32,3) + '-' + copy(AValue,35,1) + '-' + copy(AValue,36,2) + '.' + copy(AValue,38,3) + '.' + copy(AValue,41,3) + '-' + copy(AValue,44,1) else Result := copy(AValue,1,4) + ' ' + copy(AValue,5,4) + ' ' + copy(AValue,9,4) + ' ' + copy(AValue,13,4) + ' ' + copy(AValue,17,4) + ' ' + copy(AValue,21,4) + ' ' + copy(AValue,25,4) + ' ' + copy(AValue,29,4) + ' ' + copy(AValue,33,4) + ' ' + copy(AValue,37,4) + ' ' + copy(AValue,41,4); end; Em Trunk2 (ACBrDFeUtil) há a seguinte função de Mascarar a Chave de Acesso: function FormatarChaveAcesso(AValue: String): String; var I: Integer; begin AValue := OnlyNumber(AValue); I := 1; Result := ''; while I < Length(AValue) do begin Result := Result+copy(AValue,I,4)+' '; Inc( I, 4); end; Result := Trim(Result); end; O porque dessa mudança e porque tirou a opção da primeira mascara. Certo de vossas atenção, antecipo agradecimentos, Atenciosamente
  14. Bom dia Italo, Desculpe a demora para retorno. Estamos utilizando os serviços de transmissão, cancelamento e consulta e esse 3 serviços para o provedor GovDigital esta 100% . Qualquer dúvida estamos a disposição. Mais uma vez, agradecemos o empenho, atenção e paciência, principalmente sua, mas se estendendo a toda a equipe ACBr. Atenciosamente,
  15. Bom dia, Italo. Me desculpe pela demora de resposta. Realizei uma unica modificação na unit ACBrNFSeWebServices.pas, na linha 969 e 974: if (FProvedor in [proInfisc, proGovDigital]) then FProtocolo := FRetornoNFSe.ListaNFSe.CompNFSe[0].NFSe.Protocolo; Pois o número do protocolo esta por fora do xml de retorno. Sem mais para o momento, Agradeço a atenção Atenciosamente,
  16. Bom dia, Italo. Bom, como havia lhe falado, as diferenças do arquivo INI, eram orientações da Prefeitura de Divinópolis junto com a empresa responsável pelo software da prefeitura. Mas realizei um teste abortando tudo isso, e coloquei o arquivo INI exatamente como foi disponibilizado por vocês. Aí realmente deu certo, o meu receio era de que poderia atrapalhar o que já estava funcionando e que era mais importante pra nós que seria a transmissão. Mas agora deu tudo certo. Me desculpe os transtornos que possa ter causado. E muitíssimo obrigado por sua atenção de sempre, Atenciosamente,
  17. Sim, Italo. As diferenças aí, são orientações da Prefeitura de Divinópolis junto com a empresa responsável pelo software da prefeitura. Inclusive o envio esta funcionando normalmente, e até mesmo o serviço de cancelamento também esta funcionando, a única falha é que não consigo obter a resposta. Tem aqui inclusive os xml gerado de envio e cancelamento.
  18. Sim, Italo, Estou lhe enviando em anexo. 2020A-comp-nfse-soap.xml Italo, Você precisa são do que foi enviado certo? Esta em anexo também o XML base do envio. 2020A-con-nfse-rps.xml 2020A-con-nfse-rps-soap.xml
  19. Italo, Já realizei esse teste e sim, ocorre esse mesmo erro. Em anexo o xml 2020A-comp-nfse.xml de retorno da consulta. Como sempre, lhe agradeço sua atenção, E no aguardo de alguma orientação, Atenciosamente,
  20. Boa tarde Italo, O problema inicial realmente veio do cancelamento. Pois após o envio do cancelamento, o componente esta realizando uma consulta, para obter as informações de resposta deste cancelamento e aí onde esta ocorrendo a falha. Em minha verificação e analise verifiquei que o problema esta especifica na consulta, sendo assim foquei na consulta para tentar resolver. Inclusive na versão anterior (Trunk1) não usava a consulta no cancelamento, se houver alguma forma de contorna essa situação não realizando a consulta já me ajudaria bastante. Como sempre, lhe agradeço sua atenção, E no aguardo de alguma orientação, Atenciosamente, _____________________________ Nilton Olher Serafim Analista de Sistema Email: [email protected] Skype: nolher
  21. Boa tarde Italo, Buscando soluções aqui, e até mesmo junto ao forum da empresa que presta serviço para prefeitura de Divinópolis, consegui apenas a seguinte informação: Em anexo temos o XML gerado pela ACBr 21072A-con-nfse-rps.xml e o XML que eles afirmam que deveria ser enviado seria baseado no Base de Consulta NFSe.xml . A principal diferença que vejo no xml deles é "<ConsultarNfseRpsEnvio xmlns="http://www.abrasf.org.br/nfse.xsd"xmlnsig="http://www.w3.org/2000/09/xmldsig#"> " e no do componente é "<ConsultarNfseRpsEnvio xmlns="http://www.abrasf.org.br/nfse.xsd">" O que vocês acham desse analise, faz algum sentindo? Mais uma vez muito obrigado por sua atenção. Atenciosamente, _____________________________ Nilton Olher Serafim Analista de Sistema Email: [email protected] Skype: nolher
  22. Boa noite Italo, Foi realizado as atualizações, e sim estamos no Trunk2! A transmissão esta tudo correto. O único problema esta no cancelamento. Mais uma vez muito obrigado por sua atenção.
  23. Bom dia, Italo. Me desculpe pela demora pra lhe dar resposta, pois ontem estava muito garrado! Infelizmente ainda não deu certo. Esta ocorrendo a seguinte falha "Valide o xml segundo o schema fornecido no manual." Sempre lhe agradecendo sua atenção, aguardo sua opinião. 21069A-comp-nfse.xml 21069A-comp-nfse-soap.xml 21069A-con-nfse-rps.xml 21069A-con-nfse-rps-soap.xml 21069-env-lotS.xml 21069-env-lotS-soap.xml 21069-lista-nfse.xml 21069-lista-nfse-soap.xml 2013-can.xml 3116020434378100017856000002013-nfse.xml
  24. Bom dia Italo, Realmente eu fiquei um pouco confuso, nesse ponto. Mas, a falha ocorre na segunda passagem na procedure "TratarResposta" que acredito que seja na consulta. Porém o xml gerado de cancelamento, não foi gerado perfeitamente, pois ele nem consegue abrir no "Internet Explorer" e nem no aplicativo "XML Notepad". E acredito que possar ser justamente na formação desse xml que esta ocorrendo a falha. Mais uma vez agradecemos o seu pronto atendimento,
  25. Olá, boa noite! Estamos finalizando o processo da Nota Fiscal de serviço e me deparei com um problema. Estou com problema na recepção do xml da Nota cancelada. realiza o cancelamento perfeitamente, mas quando vai pra gravar o xml está ocorrendo erro. Não conseguir definir muito bem o problema, pois a rotinas esta passando 2 vezes pela procedure TratarResposta e na segunda vez ocorre erro. Segue em anexo os xmls gerados. Xml final é 1990-can.xml Configuração do meu arquivo INI GovDigital.INI Certo da atenção de todos antecipo agradecimentos. 1990-can.xml 1990-can-soap.xml 1990-ped-can.xml 1990-ped-can-soap.xml
×
×
  • 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.