Ir para conteúdo
  • Cadastre-se

Marcio Martins

Membros
  • Total de ítens

    16
  • Registro em

  • Última visita

Tudo que Marcio Martins postou

  1. Bom dia. Conseguiram resolver este problema. Ainda continuo, o interessante é na revisão 7741 funciona. Estou na revisão 8870
  2. Caros, segue em anexo LOG da instalação que tentei fazer no Delphi XE7 com Update 1 e Windows 7 64bits Detalhes: Embarcadero® Delphi XE7 Version 21.0.17707.5020 Instalação usando Open SSL ao invés de CAPICON Usando somente FortesReport Imagens e LOG em anexo. log_Delphi_XE7.txt
  3. Estou passando por este (Error: signature failed) problema na NFSe. Usando capicom funciona normal, porém ao usar OpenSSL dá erro na Unit ACBrNFSeUtil neste trecho: if (xmlSecDSigCtxSign(dsigCtx, node) < 0) then raise Exception.Create('Error: signature failed') Ambiente: Estou usando Delphi XE7 sobre Windows 8.1 64bits Usando o projeto de exemplo (ACBr\Exemplos\ACBrNFSe\Delphi) da NFSe
  4. Ítalo, mais uma vez obrigado.
  5. Olá Ítalo, minha dúvida não é em relação à emissão do CT-e de Anulação/Substituição e sim como devo proceder quando eu já emiti o CT-e original, coloquei-o num MDF-e, o mesmo foi autorizado e agora preciso emitir um CT-e de Anulação e/ou Substituição, ou seja, não tenho como tirar o CT-e original do MDF-e que foi autorizado, pois o prazo de cancelamento do MDF-e já expirou. Sendo assim, eu teria no MDF-e um CT-e que não tem mais valor fiscal, pois foi anulado e substituído por outro. Foi emitido o CT-e 1 (Original), depois o CT-e 2 (de Anulação) e por fim o CT-e 3 (de Substituição), como a SEFAZ trata esse cenário? Através do CT-e 1, que foi informado no MDF-e , a SEFAZ em uma possível fiscalização, irá considerar o CT-e 3 como sendo o correto, ou o CT-e 1?
  6. Olá Ítalo, o problema é que o erro no conhecimento só foi notado quando o destinatário da Carga recebeu a mercadoria e viu que o valor do frete, que é FOB, estava errado.
  7. Caros, estou com o seguinte cenário: Fluxos possíveis na emissão dos CT-e's de Anulação e Substituição: 1º) Tomador Não contribuinte Procedimento Sefaz: Emitir o CT-e Original > Emitir o CT-e de Anulação > Emitir o CT-e de Substituição 2º) Tomador contribuinte Procedimento Sefaz: Emitir o CT-e Original > Emitir o CT-e de Substituição. Dúvida: Ao emitir a Anulação/Substituição de um CT-e, como proceder com os CT-e's que já foram lançados em MDF-e's (Manifestos Eletrônicos), CF-e's(Cartas Frete Eletrônicas), por exemplo? Uma vez que os documentos acima já foram autorizados e nem sempre poderão ser cancelados, pois, como exemplo, o MDF-e tem um prazo de cancelamento de 24 horas. Alguém poderia me auxiliar?
  8. Desculpe por tudo, e mais uma vez obrigado. Irei fazer os testes e qualquer coisa retorno. Gostaria de sugerir que alguns destes métodos fossem para um kernel comum, para evitar duplicação de código.
  9. Bom dia Italo. Verifiquei o log e não vi a alterações. As units que anexei no poste anterior, já estão com os ajustes.
  10. Segue em anexo, ajustes no ACBrMdfe para uso com Openssl e Delphi XE pcteRetConsSitCTe.pas A função TRetConsSitCTe.LerXml nem sempre é utilizada verificando o seu resultado logo, quando ocorre um erro, este não é evidenciado. Solução proposta: Disparar a exceção ao invés de emudecê-la. pcteRetConsStatServ.pas TRetConsStatServ.LerXml - Mesmo caso anterior ACBrMDFeConfiguracoes.pas Adicionando a opropriedade IniFinXMLSECAutomatico ACBrMDFeUtil.pas Ajustes nas rotinas que tratam de assinar XML pmdfeMDFeW.pas Ajustes na tag Rodo.veicReboque para gerar tpCar e UF apenas quando a versão for a 1.00a pcteRetConsSitCTe.pas pcteRetConsStatServ.pas ACBrMDFeConfiguracoes.pas ACBrMDFeUtil.pas pmdfeMDFeW.pas
  11. Concordo, hoje eu uso um DEFINE, mas o uso da versão é bem melhor e concordo também ser padrão.
  12. Para resolver o meu problema, tive que comentar o código abaixo na unit pmdfeMDFeW. veicTracao // Gerador.wCampoCNPJCPF('#33', '#34', MDFe.Rodo.veicTracao.Prop.CNPJCPF, CODIGO_BRASIL); Gerador.wCampo(tcStr, '#35', 'RNTRC ', 08, 08, 1, SomenteNumeros(MDFe.Rodo.veicTracao.Prop.RNTRC), DSC_RNTRC); { Gerador.wCampo(tcStr, '#36', 'xNome ', 01, 60, 1, MDFe.Rodo.veicTracao.Prop.xNome, DSC_XNOME); if MDFe.Rodo.veicTracao.Prop.IE <> '' then begin if MDFe.Rodo.veicTracao.Prop.IE = 'ISENTO' then Gerador.wCampo(tcStr, '#37', 'IE ', 00, 14, 1, MDFe.Rodo.veicTracao.Prop.IE, DSC_IE) else Gerador.wCampo(tcStr, '#37', 'IE ', 02, 14, 1, SomenteNumeros(MDFe.Rodo.veicTracao.Prop.IE), DSC_IE); if (FOpcoes.ValidarInscricoes) then if not ValidarIE(MDFe.Rodo.veicTracao.Prop.IE, MDFe.Rodo.veicTracao.Prop.UF) then Gerador.wAlerta('#37', 'IE', DSC_IE, ERR_MSG_INVALIDO); end; Gerador.wCampo(tcStr, '#38', 'UF ', 02, 02, 1, MDFe.Rodo.veicTracao.Prop.UF, DSC_CUF); if not ValidarUF(MDFe.Rodo.veicTracao.Prop.UF) then Gerador.wAlerta('#38', 'UF', DSC_UF, ERR_MSG_INVALIDO); Gerador.wCampo(tcStr, '#39', 'tpProp ', 01, 01, 1, TpPropToStr(MDFe.Rodo.veicTracao.Prop.tpProp), DSC_TPPROP); } Gerador.wGrupo('/prop'); // Gerador.wCampo(tcStr, '#21', 'tpRod ', 02, 02, 1, TpRodadoToStr(MDFe.Rodo.veicTracao.tpRod), ''); // Gerador.wCampo(tcStr, '#22', 'tpCar ', 02, 02, 1, TpCarroceriaToStr(MDFe.Rodo.veicTracao.tpCar), ''); // Gerador.wCampo(tcStr, '#23', 'UF ', 02, 02, 1, MDFe.Rodo.veicTracao.UF, DSC_CUF); veicReboque // Gerador.wCampoCNPJCPF('#33', '#34', MDFe.Rodo.veicReboque.Prop.CNPJCPF, CODIGO_BRASIL); Gerador.wCampo(tcStr, '#35', 'RNTRC ', 08, 08, 1, SomenteNumeros(MDFe.Rodo.veicReboque.Prop.RNTRC), DSC_RNTRC); { Gerador.wCampo(tcStr, '#36', 'xNome ', 01, 60, 1, MDFe.Rodo.veicReboque.Prop.xNome, DSC_XNOME); if MDFe.Rodo.veicReboque.Prop.IE <> '' then begin if MDFe.Rodo.veicReboque.Prop.IE = 'ISENTO' then Gerador.wCampo(tcStr, '#37', 'IE ', 00, 14, 1, MDFe.Rodo.veicTracao.Prop.IE, DSC_IE) else Gerador.wCampo(tcStr, '#37', 'IE ', 02, 14, 1, SomenteNumeros(MDFe.Rodo.veicReboque.Prop.IE), DSC_IE); if (FOpcoes.ValidarInscricoes) then if not ValidarIE(MDFe.Rodo.veicReboque.Prop.IE, MDFe.Rodo.veicReboque.Prop.UF) then Gerador.wAlerta('#37', 'IE', DSC_IE, ERR_MSG_INVALIDO); end; Gerador.wCampo(tcStr, '#38', 'UF ', 02, 02, 1, MDFe.Rodo.veicReboque.Prop.UF, DSC_CUF); if not ValidarUF(MDFe.Rodo.veicReboque.Prop.UF) then Gerador.wAlerta('#38', 'UF', DSC_UF, ERR_MSG_INVALIDO); Gerador.wCampo(tcStr, '#39', 'tpProp ', 01, 01, 1, TpPropToStr(MDFe.Rodo.veicReboque.Prop.tpProp), DSC_TPPROP); } Gerador.wGrupo('/prop'); Eu me pegunto, se não seria melhor ter um DEFINE ou algo do gênero para que cada não tenha que fazer isso? Eu particularmente estou sempre atualizando, por conta das novidades e correções. Uma outra sugestão seria usar um branch para este caso, ou migrar para um DVCS como o Git ou Mercurial. Seria mais fácil contribuir e fazer fork's em casos com este. Fica a dica.
  13. Muito obrigado pelas informações.
  14. Bom dia a todos. Estou tendo o mesmo problema Rejeicao: Falha no Schema XML especifico para o modal, alguém já conseguiu? Estou usando a versão a revisão 7972 (11/10/2013) do ACBr junto com os Schema /trunk/Exemplos/ACBrMDFe/Delphi/Schemas/V100/PL_MDFe_100a_pre (correcao).zip da revisão 5970. Mensagem de Retorno: Chave MDF-e: 23131000435179000100580000000011271079747501 Manifesto: FOR - 1127 Status: Erro Envio Retorno: <msgmdfe>Manifesto(s) não confirmado(s): 1127->Rejeicao: Falha no Schema XML especifico para o modal </msgmdfe> XML gerado (MDFe_FOR - 1127.XML). XML assinado (23131000435179000100580000000011271079747501.xml). 23131000435179000100580000000011271079747501.xml MDFe_FOR - 1127.XML
  15. Acredito que é mesmo problema que passei. Fiz o ajuste e solicite a inclusão no fonte oficial no post:
  16. Ao enviar um CTe de substituição é reportado o seguinte erro: TAG: ID:#352/refCte(Chave do CTe) - Nenhum valor informado. '' violates pattern constraint of '[0-9]{44}'. Este mesmo erro é reportado aqui no forum no link: Trecho XML: <infCteSub> <chCte>23130900435179000100570010000173451153356992</chCte> <tomaICMS> <refCte>23130900435179000100570010000173451153356992</refCte> </tomaICMS> </infCteSub> Notem quem o chCte e tomaICMS estão no mesmo nível, e refCte dento de tormaICMS. No código abaixo depois de extrair o tomaICMS, lê-se a tag refNFe e em seguida extrai a tag refNF, porém, como mostra o exemplo acima não há refNF. (Maiores informações no manual) Quando lê a refCte nada é encontrado pois está no contexto da refNF. Trecho do arquivo pcteCTeR_V104.inc iniciado na linha 909 if Leitor.rExtrai(2, 'infCteSub') <> '' then begin CTe.infCTeSub.chCte := Leitor.rCampo(tcStr, 'chCte'); if Leitor.rExtrai(3, 'tomaICMS') <> '' then begin CTe.infCTeSub.tomaICMS.refNFe := Leitor.rCampo(tcStr, 'refNFe'); if Leitor.rExtrai(4, 'refNF') <> '' then begin CTe.infCTeSub.tomaICMS.refNF.CNPJ := Leitor.rCampo(tcStr, 'CNPJ'); CTe.infCTeSub.tomaICMS.refNF.modelo := Leitor.rCampo(tcStr, 'mod'); CTe.infCTeSub.tomaICMS.refNF.serie := Leitor.rCampo(tcInt, 'serie'); CTe.infCTeSub.tomaICMS.refNF.subserie := Leitor.rCampo(tcInt, 'subserie'); CTe.infCTeSub.tomaICMS.refNF.nro := Leitor.rCampo(tcInt, 'nro'); CTe.infCTeSub.tomaICMS.refNF.valor := Leitor.rCampo(tcDe2, 'valor'); CTe.infCTeSub.tomaICMS.refNF.dEmi := Leitor.rCampo(tcDat, 'dEmi'); end; CTe.infCTeSub.tomaICMS.refCte := Leitor.rCampo(tcStr, 'refCte'); end; if Leitor.rExtrai(3, 'tomaNaoICMS') <> '' then begin CTe.infCTeSub.tomaNaoICMS.refCteAnu := Leitor.rCampo(tcStr, 'refCteAnu'); end; end; Solução: if Leitor.rExtrai(2, 'infCteSub') <> '' then begin CTe.infCTeSub.chCte := Leitor.rCampo(tcStr, 'chCte'); if Leitor.rExtrai(3, 'tomaICMS') <> '' then begin CTe.infCTeSub.tomaICMS.refCte := Leitor.rCampo(tcStr, 'refCte'); CTe.infCTeSub.tomaICMS.refNFe := Leitor.rCampo(tcStr, 'refNFe'); if Leitor.rExtrai(4, 'refNF') <> '' then begin CTe.infCTeSub.tomaICMS.refNF.CNPJ := Leitor.rCampo(tcStr, 'CNPJ'); CTe.infCTeSub.tomaICMS.refNF.modelo := Leitor.rCampo(tcStr, 'mod'); CTe.infCTeSub.tomaICMS.refNF.serie := Leitor.rCampo(tcInt, 'serie'); CTe.infCTeSub.tomaICMS.refNF.subserie := Leitor.rCampo(tcInt, 'subserie'); CTe.infCTeSub.tomaICMS.refNF.nro := Leitor.rCampo(tcInt, 'nro'); CTe.infCTeSub.tomaICMS.refNF.valor := Leitor.rCampo(tcDe2, 'valor'); CTe.infCTeSub.tomaICMS.refNF.dEmi := Leitor.rCampo(tcDat, 'dEmi'); end; end; if Leitor.rExtrai(3, 'tomaNaoICMS') <> '' then begin CTe.infCTeSub.tomaNaoICMS.refCteAnu := Leitor.rCampo(tcStr, 'refCteAnu'); end; end; Fiz vários testes e agora funciona perfeitamente. Gostaria de solicitar a inclusão no fonte oficial do projeto.
×
×
  • 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.

The popup will be closed in 10 segundos...
The popup will be closed in 10 segundos...