Ir para conteúdo
  • Cadastre-se

datilas

Membros
  • Total de ítens

    579
  • Registro em

  • Última visita

  • Days Won

    2

Tudo que datilas postou

  1. vc tentou usar o demo do ACBr? pois é ele que gera o xml faz o envio e pega o retorno. como vc esta usando?
  2. na unit ACBrXmlBase.pas function ObterConteudoTag(const ANode: TACBrXmlNode; const Tipo: TACBrTipoCampo): variant; alterar result := (ConteudoTag; para result := ACBrStrToAnsi(ConteudoTag); e result := EncodeDataHora(ConteudoTag, 'YYYY/MM/DD') para result := Iso8601ToDateTime(ConteudoTag) resolve a data e os acentos. function ObterConteudoTag(const ANode: TACBrXmlNode; const Tipo: TACBrTipoCampo): variant; var ConteudoTag: string; iDecimais: Integer; aFloatIsIntString: Boolean; begin if not Assigned(ANode) or (ANode = nil) then begin ConteudoTag := ''; aFloatIsIntString := False; end else begin ConteudoTag := Trim(ANode.Content); aFloatIsIntString := ANode.FloatIsIntString; end; case Tipo of tcStr, tcEsp: result := ACBrStrToAnsi(ConteudoTag); tcDat, tcDatHor, tcDatCFe, tcDatHorCFe: begin if length(ConteudoTag) > 0 then result := Iso8601ToDateTime(ConteudoTag) else result := 0; end; tcDatVcto: begin if length(ConteudoTag) > 0 then result := EncodeDataHora(ConteudoTag, 'DD/MM/YYYY') else result := 0; end; tcDatUSA: begin if length(ConteudoTag) > 0 then result := EncodeDataHora(ConteudoTag, 'MM/DD/YYYY') else result := 0; end; tcHor: begin if length(ConteudoTag) > 0 then result := EncodeTime(StrToInt(copy(ConteudoTag, 1, 2)), StrToInt(copy(ConteudoTag, 4, 2)), StrToInt(copy(ConteudoTag, 7, 2)), 0) else result := 0; end; tcHorCFe: begin if length(ConteudoTag) > 0 then result := EncodeTime(StrToInt(copy(ConteudoTag, 1, 2)), StrToInt(copy(ConteudoTag, 3, 2)), StrToInt(copy(ConteudoTag, 5, 2)), 0) else result := 0; end; tcDe2, tcDe3, tcDe4, tcDe5, tcDe6, tcDe7, tcDe8, tcDe10: begin if aFloatIsIntString then begin case Tipo of tcDe2: iDecimais := 2; tcDe3: iDecimais := 3; tcDe4: iDecimais := 4; tcDe5: iDecimais := 5; tcDe6: iDecimais := 6; tcDe7: iDecimais := 7; tcDe8: iDecimais := 8; tcDe10: iDecimais := 10; else iDecimais := 2; end; Result := StringDecimalToFloat(ConteudoTag, iDecimais); end else Result := StringToFloatDef(ConteudoTag, 0); end; tcInt: begin if length(ConteudoTag) > 0 then result := StrToIntDef(OnlyNumber(ConteudoTag), 0) else result := 0; end; tcInt64: begin if length(ConteudoTag) > 0 then result := StrToInt64Def(OnlyNumber(ConteudoTag), 0) else result := 0; end; tcBool: begin if length(ConteudoTag) > 0 then begin ConteudoTag := NormatizarBoolean(ConteudoTag); result := StrToBool(ConteudoTag); end else result := False; end; tcStrOrig: begin // Falta implementar Result := ''; end; tcNumStr: begin // Falta implementar Result := ''; end else raise Exception.Create('Node <' + ANode.Name + '> com conteúdo inválido. ' + ConteudoTag); end; end; 7895511301093.txt 7896380103188.txt
  3. tem que remover o try except do TRetConsultarGTIN.LerXml; na unit ACBrGTINRetConsultar.pas pois ele esta suprimindo erros. eu me enganei quanto as datas pois ainda esta dando erro: "11:26:30/03:00" is not a valid time mas eu não vi por causa do try except se usar Iso8601ToDateTime a data funciona.7895511301093.txt7896380103188.txt
  4. quanto a data ficou ok, segue os arquivos (os ".txt" é o result que vem do componente coloquei em uma stringlist e depois fiz um savetofile) sl.Values['GTIN'] := aGTIN; sl.Values['tpGTIN'] := ACBrGTIN.WebServices.Consulta.tpGTIN.ToString; sl.Values['xProd'] := ACBrGTIN.WebServices.Consulta.xProd; sl.Values['NCM'] := ACBrGTIN.WebServices.Consulta.NCM; sl.Values['CEST'] := ACBrGTIN.WebServices.Consulta.CEST; sl.Values['dhResp'] := DateTimeToStr(ACBrGTIN.WebServices.Consulta.dhResp); sl.Values['cStat'] := ACBrGTIN.WebServices.Consulta.cStat.ToString; sl.Values['xMotivo'] := ACBrGTIN.WebServices.Consulta.xMotivo; gtin-soap.zip
  5. vc pode testar os gtins : 7896380103188 com xProd invalido e 7895511301093 com xMotivo invalido isso no lazarus linux no delphi esta tudo ok.
  6. No Delphi windows tá tudo ok, no Lazarus linux está vindo caracteres especiais inválidos, os produtos que não tem caracteres especiais estão vindo normal, testei 29000 produtos.
  7. eu não instalei ele apenas coloquei as pastas no path e crio o componente em tempo de execução. depois das alterações que fiz esta funcionando perfeitamente.
  8. estou testando o componente ACBrGTIN só pra deixar claro no delphi funciona muito bem. meu problema esta em usar com lazarus linux vou descrever aki como fiz para funcionar. não vou adicionar as units modificadas pois não sei se vai gerar problema em outros componentes. vou listar o que fiz para funcionar. unit ACBrGTINWebServices Linha 169 adicinar uses pcnConsts unit ACBrGTINRetConsultar linha 88 function TRetConsultarGTIN.LerXml: boolean; remover o Try ... Except Result := False; End; pois esta suprimindo erros como falta do libxml2 e conversão de data então as propertys sempre ficam vazias quando acontece algum Except no xml a data vem nesse formato 2022-06-17T16:50:16-03:00 então na unit ACBrXmlBase na linha 275 era assim result := EncodeDataHora(ConteudoTag, 'YYYY/MM/DD') eu alterei para result := Iso8601ToDateTime(ConteudoTag) pois na unit ACBrUtil.DateTime na function EncodeDataHora ele esta convertendo todos os "-" por "/" xData := Trim(StringReplace(DataStr, '-', '/', [rfReplaceAll])); o que faz isso 2022-06-17T16:50:16-03:00 virar isso 2022/06/17T16:50:16/03:00 e gera esse Except: "16:50:16/03:00" is not a valid time por isso alterei para Iso8601ToDateTime que funciona perfeitamente.
  9. https://acbr.sourceforge.io/ACBrMonitor/ModeloNFeINICompleto.html
  10. vc pode tentar um metodo do synautil: (ReadStrFromStream) sRetornoAPIOriginal := String(ReadStrFromStream(synHttpTextMsg.Document, synHttpTextMsg.Document.Size)); ou sRetornoAPIOriginal := ReadStrFromStream(synHttpTextMsg.Document, synHttpTextMsg.Document.Size);
  11. tenta: synHttpTextMsg.Document.Position := 0; sRetornoAPIOriginal := MemoryStreamToString(synHttpTextMsg.Document); ou try //declare uma variavel: //ssRetorno :TStringStream; synHttpTextMsg.Document.Position := 0; ssRetorno := TStringStream.Create(''); synHttpTextMsg.Document.SaveToStream(ssRetorno); {.} ssRetorno.Position := 0; sRetornoAPIOriginal := ssRetorno.DataString; finally ssRetorno.Free; end;
  12. aqui ta normal: vc pode acessar no navegador: http://www.sped.fazenda.gov.br/spedtabelas/WsConsulta/WsConsulta.asmx/consultarVersoesTabelasExternas?codigoSistema=spedfiscal se houver resposta o servidor esta funcionando e o problema é no seu programa
  13. mas a questão é no registro 0150 eu uso o CNPJ da agencia que recebeu ou o CNPJ 0001-XX do banco?
  14. datilas

    sobre o registro 1601

    no caso de cartão de debito ou credito, ou venda por app de terceiro (ifood, mercado livre etc) ja entendi como preencher, mas no caso de pix direto(do cliente para conta do comerciante sem uso de algum tef ou maquininha), aqui acontece muito esse tipo de operação. como devo preencher o registro 1601? alguém pode me ajudar?
  15. eu usei por pouco tempo, mas atendeu muito bem no que eu precisava https://saveincloud.com/pt/solucoes-cloud/cloud-banco-de-dados/
  16. pelo que vi não tem essa opção na documentação: https://zenvia.github.io/zenvia-openapi-spec/v2/#tag/SMS vc tem algum manual onde tenha essa opção?
  17. tente usar RETURNING no insert, assim vc não precisa fazer outro SELECT para gravar a venda ex: INSERT INTO DETVENDA ... RETURNING VLRTOTALCUSTO, DESCRICAO, QUANTIDADE, VLRDESCONTO, TOTALPESOLIQUIDO, TOTALPESOBRUTO, VLRALIQ_NAC, VALORTOTAL, SUBTOTAL e trocque: IBQueryDetVenda.ExecSQL; por: IBQueryDetVenda.Open; IBQueryDetVenda.First; While Not IBQueryDetVenda.EOF Do Begin ... //faz a soma aki IBQueryDetVenda.Next; end;
  18. essa é a tabela de meios de pagamentos: 01-Dinheiro 02-Cheque 03-Cartão de Crédito 04-Cartão de Débito 05-Crédito de Loja 10-Vale Alimentação 11-Vale Refeição 12-Vale Presente 13-Vale Combustível 14-Duplicata Mercanti 15-Boleto Bancário 16-Depósito Bancário 17-Pagamento Instantâneo (PIX) 18-Transferência bancária, Carteira Digital 19-Programa de fidelidade, Cashback, Crédito Virtual 90-Sem Pagamento 99-Outros "Tabela de bandeiras das Operadoras de cartão de crédito e/ou débito" 01-Visa 02-Mastercard 03-American Express 04-Sorocred 05-Diners Club 06-Elo 07-Hipercard 08-Aura 09-Cabal 10-Alelo 11-Banes Card 12-CalCard 13-Credz 14-Discover 15-GoodCard 16-GreenCard 17-Hiper 18-JcB 19-Mais 20-MaxVan 21-Policard 22-RedeCompras 23-Sodexo 24-ValeCard 25-Verocheque 26-VR 27-Ticket 99-Outros então para gerar a <infIntermed> vc tem que informar a tag <tPag> como 03 ou 04 eu recomendo que vc acesse https://www.nfe.fazenda.gov.br/portal/listaSubMenu.aspx?Id=04BIflQt1aY= e leia os manuais e as notas técnicas para ter mais informações.
  19. qual DB? se for firebird: https://firebirdsql.org/refdocs/langrefupd15-substring.html
  20. https://soft-gems.net/graphicex-on-github/ https://github.com/mike-lischke/GraphicEx
  21. eu instalei o xml2 no mint: apt-get install libxml2-utils depois copiei o libxml2.so.2: /usr/lib/x86_64-linux-gnu/libxml2.so.2 e colei no meu windows: "pathlazarus\cross\lib\x86_64-linux\libxml2.so.2" "pathlazarus\cross\lib\x86_64-linux\libxml2.so" alterei o ACBr.inc {$IfDef DFE_SEM_OPENSSL} {$Define DFE_SEM_XMLSEC} {$Define DFE_SEM_LIBXML2} {$EndIf} {$IfDef DFE_SEM_LIBXML2} {$UnDef DFE_ACBR_LIBXML2} {$EndIf} {$DEFINE DFE_SEM_XMLSEC} e funcionou perfeitamente muito obrigado.
  22. qual seria o equivalente do LibXML2 no linux libxml2.dll libexslt.dll libiconv.dll libxslt.dll pra eu tentar pegar no linux e linkar no fpc
  23. se no ACBr.inc eu adicionar essas linhas {$IfDef DFE_SEM_OPENSSL} {$Define DFE_SEM_XMLSEC} {$Define DFE_SEM_LIBXML2} {$EndIf} {$IfDef DFE_SEM_LIBXML2} {$UnDef DFE_ACBR_LIBXML2} {$EndIf} {$DEFINE DFE_SEM_XMLSEC} --adicionado {$DEFINE DFE_SEM_LIBXML2} --adicionado o lazarus compila mas existe alguma forma de fazer a assinatura depois?(ainda não tentei assinar)
  24. fui colocando componentes acbr no form até dar erro, e percebi que sempre que aparece essas linhas no lazarus da pau. C:\lazarus\cross\bin\x86_64-linux\x86_64-linux-ld.exe: cannot find -lxmlsec1 C:\lazarus\cross\bin\x86_64-linux\x86_64-linux-ld.exe: cannot find -lxml2 pelo que vi parece que componentes que precisam assinar documento não compila existe alguma diretiva para desabilitar -lxmlsec1 e -lxml2 ?
  25. esse post eu ja tinha visto, mas não me ajudou muito. e meu pc é muito simples quando eu ligo a vm ela entra em "coma".
×
×
  • 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...