-
Total de ítens
3.842 -
Registro em
-
Última visita
-
Days Won
66
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Tudo que Renato Rubinho postou
-
DAMDFE - Impressão da unidade de medida Kg e Ton
Renato Rubinho replied to engs's tópico in ACBrMDFe
Boa tarde @Italo Jurisato Junior / @Juliomar Marchetti, Configurei o ACBrMDFeDAMDFeRLRetrato.pas atualizado ( RAR_001_ACBr.rar ) para preencher o título do peso de acordo com a unidade do XML, conforme destacado abaixo: procedure TfrlDAMDFeRLRetrato.rlb_1_DadosManifestoBeforePrint(Sender: TObject; var PrintIt: Boolean); . . . if FMDFe.tot.cUnid = uTON then rlLabel12.Caption := 'PESO TOTAL (Ton)' else rlLabel12.Caption := 'PESO TOTAL (Kg)'; Por favor, verifiquem se a implementação pode ser adicionada ao projeto. Obrigado RAR_001_ACBr.rar- 4 replies
-
- damdfe
- unidade medida
-
(e 2 mais)
Tags:
-
Bom dia Italo, Ainda não fiz testes em produção, mas segue https://reinf.receita.fazenda.gov.br/WsREINF/RecepcaoLoteReinf.svc Com relação à versão, até esta última, sempre que implementaram uma nova descontinuaram a anterior.
-
Bom dia @Italo Jurisato Junior, Atualizei o componente, validei todos os eventos e está tudo ok. Segue o programa de exemplo com a implementação da opção de Limpeza da Base disponível apenas para "Produção Restrita" ACBr.rar
-
Pode ser algum erro no seu ambiente. Para mim funciona normalmente com A1 e A3 Seguem algumas sugestões para você tentar identificar o que está errado aí: 1. Tem que assinar com LibXml2 2. Envia com o programa de exemplo e veja se não tem algum detalhe de configuração que está esquecendo 3. Veja os caminhos dos schemas, se estiverem na rede, tem que estar com unidade mapeada 4. Veja se consegue abrir wsdl com seu certificado https://preprodefdreinf.receita.fazenda.gov.br/WsREINF/RecepcaoLoteReinf.svc
-
Boa tarde Paulo, As urls do seu xml estão erradas: <Reinf xmlns="http://www.reinf.esocial.gov.br/schemas/envioLoteEventos/v1_03_00"> <Reinf xmlns="http://www.reinf.esocial.gov.br/schemas/evtInfoContribuinte/v1_03_00"> deveriam ser <Reinf xmlns="http://www.reinf.esocial.gov.br/schemas/envioLoteEventos/v1_03_02"> <Reinf xmlns="http://www.reinf.esocial.gov.br/schemas/evtInfoContribuinte/v1_03_02"> * Ou seu fonte não está atualizado * Ou você não reinstalou o componente após atualizar os fontes que passei. * Ou falta apenas informar a versão correta no componente ACBrReinf1.Configuracoes.Geral.VersaoDF := v1_03_02; // nova
-
Bom dia @Italo Jurisato Junior, Seguem fontes com implementações do Reinf: 1. Configurada versão 1_03_02 2. Removida opção de Dados Fictícios 3. Configuradas novas urls 4. Adicionada opção para "Limpar base de dados para o contribuinte - Produção Restrita" Obs: Fiz testes nos eventos e apenas o 2099 parece não estar funcionando perfeitamente, pois consultando o protocolo retorna "Em Processamento" permanentemente (até o momento que fiz o último teste, 30min após enviar o 2099). ACBR.rar
-
Confirma se seu caminho está correto realmente. O que você postou: C:\ACBR_Atualizado\Exemplos\ACBrDFe\ACBrReinf\Delphi\Schemas está fora do padrão do componente "..\Acbr\Exemplos\ACBrDFe\Schemas\Reinf"
-
Boa tarde Italo, Segue fonte com correção da consulta. @RKawano, obrigado pela ajuda. ACBrReinf_R5011.rar XmlsExemplo.rar
-
Da uma olhada se a forma como fiz o GetEvento no Reinf ( interface + TR5001 + TR5011 ) está de acordo. Já está no svn. Caso precise fazer algo diferente, vamos implementar no Reinf tbm para padronizar este tipo de tratamento. Veja se acha melhor alterar de interface para uma classe ancestral em comum que resolveria o problema sem necessidade da função.
-
Não acredito que seja algo tão simples, mas espero seja... Como você disse que no eSocial funciona, já é uma boa notícia. Obs: O problema aparentemente não está no id apenas. A menos que o erro no id (mesmo sem ser acionado) desencadeie erros nas demais propriedades. Qualquer propriedade do EvtTotal apresenta o mesmo problema. Segue outro exemplo, comentei a linha da leitura do id e a próxima também apresentou o mesmo problema. Seguem links sobre o que falei a respeito do problema de cast no Delphi 7: http://hallvards.blogspot.com.br/2004/07/hack-7-interface-to-object-in-delphi.html http://blog.barrkel.com/2011/03/ugly-alternative-to-interface-to-object.html
-
Bom dia, Efetuei o teste novamente conforme exemplo abaixo e, mesmo atribuindo à variável ( R5001: TR5001) ocorre access violation ao tentar ler as propriedades.
-
Obrigado pelo retorno Rafael. Eu também havia testado atribuindo à variável conforme seu exemplo, não dá erro para compilar mas também dava access violation ao tentar ler as propriedades. Vi agora que no exemplo que passei não coloquei o índice da collection, mas no meu sistema tenho quase certeza que estava correto senão nem compilaria. Cheguei a encontrar artigos na internet referente a problemas de cast com interface no Delphi 7, dando como solução, funções monstruosas para resolver o problema. Não estou com o ambiente aqui para testar, na segunda-feira eu testo novamente e aviso.
-
Bom dia Italo, Ok. Vou ver, estou em outro projeto é assim que possível vejo se coloco essa consulta no componente. Quando criei as outras classes, não tinha o 5011 ainda na versão 1_02. Quando puder, só dá uma olhada no cast por favor, para ver se deixamos com a função para retornar o objeto, se substituimos a interface por classe ou se tem alguma forma de fazer o cast como está agora. Pelo que pesquisei, do jeito que tá só vi opção criando uma função.
-
Só vou consegui testar segunda-feira, mas ainda não fiz nada do 5011. Você pode passar o exemplo que está utilizando?
-
Boa tarde Italo, Não vi que havia a leitura na 5001 após mudarem o "TEnvioLote.TratarResposta". Desculpe mais uma vez. Por favor, desconsidere as alterações da unit pcnReinfRetEventos, o problema em si é no item (2) para ler as propriedades após o envio. Não consigo fazer o cast sem essa implementação que mandei (gera access violation). Sabe se existe alguma alternativa para conseguir ler as propriedades através da Interface ? Estou mandando a unit do demo junto deste novo fonte com o cenário do problema para você entender, detalhes abaixo Exemplo: if ACBrReinf1.Enviar then begin for i:=0 to ACBrReinf1.WebServices.EnvioLote.RetEnvioLote.evento.Count - 1 do begin // 1. Funcionando: com a implementação da nova função GetEvento // with TR5001( ACBrReinf1.WebServices.EnvioLote.RetEnvioLote.evento.Items.Evento.GetEvento ) do // 2. Não funcionando: com o fonte anterior, fazendo o cast do Evento dá access violation em qualquer propriedade. Ex: EvtTotal.id with TR5001( ACBrReinf1.WebServices.EnvioLote.RetEnvioLote.evento.Items.Evento ) do begin mmoRet.Lines.Add('EvtTotal.id: '+ EvtTotal.id); mmoRet.Lines.Add('cdRetorno: '+ EvtTotal.IdeStatus.cdRetorno); mmoRet.Lines.Add('descRetorno: '+ EvtTotal.IdeStatus.descRetorno); mmoRet.Lines.Add('nrRecArqBase: '+ EvtTotal.InfoTotal.nrRecArqBase); end; end; Obrigado ACBrReinf003.rar
-
Boa tarde @Italo Jurisato Junior, Desculpe, sempre atualizo os fontes antes de dar manutenção, tinha atualizado segunda-feira e acabei não checando se houveram novas implementações até ontem. 1. Seguem implementações, com o fonte atual, alimentando as propriedades: EvtTotal.id EvtTotal.IdeStatus.cdRetorno EvtTotal.IdeStatus.descRetorno EvtTotal.IdeStatus.regOcorrs.tpOcorr EvtTotal.IdeStatus.regOcorrs.localErroAviso EvtTotal.IdeStatus.regOcorrs.codResp EvtTotal.IdeStatus.regOcorrs.dscResp EvtTotal.infoRecEv.nrProtEntr EvtTotal.infoRecEv.dhProcess EvtTotal.infoRecEv.tpEv EvtTotal.infoRecEv.idEv EvtTotal.infoRecEv.hash EvtTotal.InfoTotal.nrRecArqBase 2. IEventoReinf >>> function GetEvento: TObject; Como a propriedade TeventoCollectionItem.FEvento foi criada como interface não é possível fazer o cast para os respectivos eventos (5001 ou 5011) para poder preencher as propriedades. Para conseguir fazer o cast, criei a função GetEvento para devolver o objeto. A alternativa seria herdar a 5001 e 5011 de uma classe principal e declarar o TeventoCollectionItem.FEvento como a classe principal ao invés da Interface. Att ACBrReinf002.rar
-
Bom dia @Juliomar Marchetti, Segue novo fonte ( com a alteração inicial do post inclusive ) com implementação de nova propriedade para armazenar o Número de Protocolo quando houver retorno "2-Em Processamento" { TdadosRecepcaoEvento } TdadosRecepcaoEvento = class private FdhProcessamento: TDateTime; FTipoEvento: string; FHash: string; FIDEvento: string; FnrProtEntr: string; public property dhProcessamento: TDateTime read FdhProcessamento write FdhProcessamento; property tipoEvento: string read FTipoEvento write FTipoEvento; property IDEvento: string read FIDEvento write FIDEvento; property Hash: string read FHash write FHash; property nrProtEntr: string read FnrProtEntr write FnrProtEntr; end; !!!!! Obs !!!! Não encontrei documentação a respeito dos códigos de status de retorno. Até o momento eu havia me deparado apenas com "0-Sucesso" ou "1-ERRO" Agora, no envio do R2099, está acusando "2-EM PROCESSAMENTO" e retorna o nrProtEntr ao invés do nrRecArqBase Cacei na net e encontrei algumas pessoas reclamando do mesmo problema na versão 1_03_00. Caso alguém tenha detalhes a respeito, agradeço para poder fazer os testes e eventuais implementações que forem necessárias. Gostaria de saber como consultar o status. 1. Na situação atual, enviei o R2099 e retornou "2-Em Processamento" 1.1. Se tento enviar novamente, acusa <codResp>MS1078</codResp><dscResp>A EFD já foi fechada para o período informado, ou existe um evento de fechamento em processamento</dscResp> 1.2. Se tento enviar R2098, acusa <codResp>MS1060</codResp><dscResp>Não existe evento de fechamento para o período informado.</dscResp> como se não houvesse o R2099 ainda AcbrReinf001.rar
-
Bom dia, Segue fonte do Reinf com ajustes no tratamento de respostas do webservice: - Novas tags da v1_03_00 conforme destacado no exemplo abaixo - Configurado tratamento para leitura do id da tag evtTotal <evtTotal id="ID1234567890"> <ideEvento> <perApur/> </ideEvento> <ideContri> <tpInsc>1</tpInsc> <nrInsc>98765432</nrInsc> </ideContri> <ideRecRetorno> <ideStatus> <cdRetorno>0</cdRetorno> <descRetorno>SUCESSO</descRetorno> <regOcorrs> <tpOcorr>1</tpOcorr> <localErroAviso> ERRO </localErroAviso> <codResp>MS1234</codResp> <dscResp> TESTE DE ERRO </dscResp> </regOcorrs> </ideStatus> </ideRecRetorno> <infoRecEv> <dhProcess>2018-03-06</dhProcess> <tpEv>1000</tpEv> <idEv>ID1234567890123456789012345678901234</idEv> <hash>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</hash> </infoRecEv> <infoTotal> <nrRecArqBase>12345-67-8901-2345-67890</nrRecArqBase> </infoTotal> </evtTotal> Obs: O evento R2060 está com erro na Receita. Fiz testes em produção restrita e dados fictícios e o problema persistiu. Os demais estão funcionando corretamente. Erro: MS0025 | Falha no processamento. Favor tentar novamente. Identificador : 2890162031 AcbrReinf.rar
-
Bom dia, Segue o demo. Lembrando que este demo está em desenvolvimento, servirá para você poder testar a assinatura mas os fontes do Reinf não estão finalizados. DEMO.rar
-
Por desencargo, atualize as dlls das pastas abaixo no System32 / SysWow64 da sua máquina \lib7\ACBr\DLLs\XMLSec \lib7\ACBr\DLLs\OpenSSL\0.9.8.14 Nos meus testes com o Reinf, funcionou com as seguintes configurações:
-
Boa tarde @Rafael Dias, A versão do ACBrDFeSSL.pas que foi para o SVN precisa de mais um ajuste, pois as urls tem mais uma diferença além do "-more" rsa-sha256 <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" /> rsa-sha1 <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
-
Bom dia @Rafael Dias, Testei a assinatura do Reinf (rsa-sha256) e o método GetSignDigestAlgorithm não identifica o digest do xml ( Para rsa-sha1 funcionou perfeitamente ) 1. O "problema" está no "Algorithm" do "SignatureMethod" que possui url diferente entre o rsa-sha1 e o rsa-sha256. 1.1. Ao pesquisar no conteúdo por "Algorithm="http://www.w3.org/2000/09/xmldsig#", retorna a informação do "Transform" (que possui a mesma url) ao invés do "SignatureMethod" 2. Seguem exemplos de ambos os XMLs para exemplificar 2.1. rsa-sha256: Ao pesquisar por "Algorithm="http://www.w3.org/2000/09/xmldsig#" o GetSignDigestAlgorithm retorna "enveloped-signature" da linha 7 e deveria retornar "rsa-sha256" da linha 4 001 <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> 002 <SignedInfo> 003 <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /> 004 <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" /> 005 <Reference URI="#ID1599506670000002017120507171200001"> 006 <Transforms> 007 <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /> 008 <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /> 009 </Transforms> 010 <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> 011 </Reference> 012 </SignedInfo> 013 </Signature> 2.2. rsa-sha1: O GetSignDigestAlgorithm retorna "rsa-sha1" da linha 4 corretamente 001 <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> 002 <SignedInfo> 003 <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /> 004 <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /> 005 <Reference URI="#NFe35171212345678901234550010000008221000008228"> 006 <Transforms> 007 <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /> 008 <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /> 009 </Transforms> 010 <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> 011 </Reference> 012 </SignedInfo> 013 </Signature> 3. Segue ajuste que corrigiu essa situação e assinou function TDFeSSLXmlSignClass.GetSignDigestAlgorithm(const ConteudoXML: ansistring): TSSLDgst; var HashAlg: string; begin // Pesquisa por "SignatureMethod Algorithm=" para garantir que está na tag correta HashAlg := LowerCase(RetornarConteudoEntre(ConteudoXML, 'SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#', '"')); // Com a opção abaixo não é necessário mais a de cima, mas mantive a de cima como "padrão" para você o que acha // Caso não encontre com a url, pesquisa do final para o começo do valor até a posição de "#" if HashAlg = '' then begin HashAlg := LowerCase(RetornarConteudoEntre(ConteudoXML, 'SignatureMethod Algorithm="', '"')); HashAlg := ReverseString(RetornarConteudoEntre('!!inicio!!' + ReverseString(HashAlg), '!!inicio!!', '#')); if HashAlg = '' then raise Exception.Create('Não foi possivel recuperar o "Digest Algorithm" do XML'); end; if (HashAlg = 'rsa-sha1') then Result := dgstSHA1 else if (HashAlg = 'rsa-sha256') then Result := dgstSHA256 else if (HashAlg = 'rsa-sha512') then Result := dgstSHA512 else raise EACBrDFeException.Create(ACBrStr('Digest Algorithm, "'+HashAlg +'" não suportado')); end;
-
@Daniel Simoes, OK, vou acompanhando a implementação com libXML2 ou a opção de carga de DLL de terceiros. Realmente não testei com XP e não sabia que haveria essa limitação da forma como foi feito. Obrigado pelo retorno @juuninho Não fiz nada no e-social ainda, mas se o problema for apenas assinar com URI vazia, passe o terceiro parâmetro infElement em branco que irá gerar o xml com a URI em branco, mas como eu disse, não fiz testes com esse tipo de situação. XmlAss := XmlCryp.AssinarXml(1, AXml, infElement, FpDFeSSL.NumeroSerie, FpDFeSSL.ArquivoPFX, FpDFeSSL.Senha); !! Os demais que estão com erros de ambiente: * Como o Daniel informou, a biblioteca não funciona no XP (se for seu caso) * Olhem os detalhes em _TELAS.pdf - Resumindo: 1. Registrem com _REG_PoliCryp.bat 2. Atualizem ambos os fontes ACBrDFe.rar ACBrReinf.rar 3. Recompilem o ACBr_DFeComum
-
Bom dia @juuninho, Você deve estar mandando o conteúdo do Xml ao invés do caminho do arquivo. O método ValidarSchema() deve receber o caminho do arquivo XML ( Ex: C:\CAMINHO\TESTE.XML) e não o conteúdo do XML. Veja o exemplo que coloquei no Demo.