Ir para conteúdo
  • Cadastre-se

chico_lopes

Membros
  • Total de ítens

    57
  • Registro em

  • Última visita

1 Seguidor

Últimos Visitantes

O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.

chico_lopes's Achievements

  1. @Juliomar Marchetti não tinha usado o compilador, mas fiz um novo download dos fontes do Acbr, fiz a instalação com limpeza, e funcionou, mas o mais estranho, que na instalação que fiz por ultimo eu tinha mandado limpar profundo tbm. Mas em certas coisas em TI, não discutimos só aceitamos kkkk Obrigado pela atenção
  2. @Italo Giurizzato Junior tentei recompilar e instalei o pacote Acbr_Cte, mas não está dando certo, está indo para tcstr e não para o tcint
  3. Boa Noite ao utilizar o metodo de leitura de xml : ACBrCTe1.Conhecimentos.LoadFromFile(caminho); ou ACBrCte1.Conhecimentos.LoadFromString(xml); caso o xml possuir a tag toma4 e não possuir a tag CEP que é opcional pelo manual, da um erro "invalid argument", depurei o código e não achei que parte do código dá o erro, coloquei manual a TAG do CEP o programa lê correto sem erros, retirei outra TAG obrigatória e tbm não obrigatória, porém não deu erro. Gostaria se saber há algum outro parâmetro que possa estar impedindo de ficar em branco esse campo CEP . usando delphi2010 com o AcbrXmlDocument. após executar a function oberconteudo que retorna o erro. Depurando, no teste o programa anda pelos mesmos caminhos da TAG CEP e xPais, porém na CEP ocorre com sua ausência e com o xPais não ocorre erro, testado com campos com parâmetros tcstr e tcint.
  4. Bom dia @Victor H. Gonzales - Panda eu estou vendo que no else do LerNossoNumeroCompleto coloquei um valor não tamanho do manual do retorno. e se usarmos esse parâmetro LerNossoNumeroCompleto para ter as duas opções o completo que é igual do manual de retorno e não completo ficar igual do manual de remessa?
  5. por nada, estamos para nos ajudarmos. Depois haverá um feedback para eu saber se foi aprovado?
  6. Boa noite fiz os ajustes abaixo para adaptar ao limite do máximo do nosso numero conforme manual de arquivo de remessa, sendo 10 dígitos e mais o digito verificador. 1º LerRetorno240 - colocado para verificar se LerNossoNumeroCompleto if ACBrBanco.ACBrBoleto.LerNossoNumeroCompleto then fpTamanhoMaximoNossoNum := 11 else fpTamanhoMaximoNossoNum := 10; 2º DefinePosicaoNossoNumeroRetorno - corrigido o inicio da leitura para retornar os 11 digitos padrão do boleto if ACBrBanco.ACBrBoleto.LayoutRemessa = c240 then Result := 47 //39 else Result := 71; 3º LerRetorno400 - colocado para nosso numero retornar 11 ou 10 dígitos conforme LerNossoNumeroCompleto var nossonumero_tmp :string; begin ... //fpTamanhoMaximoNossoNum := 17; .... if ACBrBanco.ACBrBoleto.LerNossoNumeroCompleto then nossonumero_tmp := Copy(Linha,46, 17) else nossonumero_tmp := Copy(Linha,46, 16); nossonumero := copy(nossonumero_tmp, 1+length(nossonumero_tmp)-fpTamanhoMaximoNossoNum,fpTamanhoMaximoNossoNum); .... end; ACBrBancoUnicredES.pas
  7. Já tinha visto que o Firedac tem esses recursos, queríamos continuar a usar o Zeos por ser free e estar em nossos ERP. Sobre o mORMot nunca tinha visto, ele é semelhante ao Zeos?
  8. Bom dia @Márcio Baroni você conseguiu realizar teste com ele ou já usa ele em threads ? pois tinha realizados teste e não consegui isolar as transações, pode ser algum parâmetro que setei errado.
  9. Boa tarde pessoal estou usando Delphi + Zeoslib + firebird e preciso criar várias transações para a mesma conexão, porém nas minhas pesquisas não achei nada concreto que consiga fazer algo que o Ibexpert faz, que você pode ter dois selects em telas diferentes e fazer commit em um e dar roolback em outro. alguém teria algum material sobre o assunto, ou dicas de como começar.
  10. Boa noite @Italo Giurizzato Junior sim faço um teste de tentativa e erro, pois cai em um local especifico todos xml, o sistema lê e verificar o tipo se algum é de interesse para empresa e se é valido; até a versão anterior do ACBr que tínhamos funcionava, como houve atualizações perdeu-se essas verificações, porém como falei segue uma sugestão. Alteramos de uma outra forma nossa leitura dos XML, não igual a sua ideia mas que atendeu nossas necessidades. Agradeço esse ideia vamos avalia-la aqui internamente. somente um ponto sobre essa ideia, caso algum outro leitor pegue somente uma "fração" desse código do Italo, tomar cuidado como o exemplo abaixo, essa verificação abaixo dá positiva para XML de NF-e e CT-e pois o CT-e tem uma TAG assim tbm. if pos('<infNFe', ArquivoXML.Text) > 0 then TipoDFE := 1;
  11. bom dia @Juliomar Marchetti desculpa a demora, mas fiquei doente e dai enrolou tudo os processos. Mas segue a sugestão de alteração, feitas alterações nas linhas 370, 376, 382 e 388.ACBrNFe.RetEnvEvento.pas
  12. Boa tarde @Juliomar Marchetti Sim alterando o para passar o Result := True; para dentros dos IF sim Até a versão anterior que eu tinha do ACBR, ele retornava True somente quando era um XML de evento, agora ele retorna True quando lê um XML, que pelo meu ponto de vista não seria o correto, pois é um componente de evento. em anexo um xml de CT-e, mas como o "Result := True" está somente dentro de try ele só vai virar false se houver algum erro 41240887548038000424570010000469321349349112.xml
  13. Bom dia eu utilizo a função ACBrNFe1.EventoNFe.LerXML para chegar se um XML para verificar qual tipo de XML ele é, porém após atualização do ACBR, essa função parou retornar false ao ler um XML de CT-e. Analisando o código do acbrnfe.retenvevento, vemos que o "result := true" está fora de um IF de verificação, o correto o "result := true" estar atrelado a cada clausulas de IF. function TRetEventoNFe.LerXml: Boolean; var Document: TACBrXmlDocument; ANode: TACBrXmlNode; begin Document := TACBrXmlDocument.Create; try try Result := False; if XmlRetorno = '' then Exit; Document.LoadFromXml(XmlRetorno); ANode := Document.Root; if ANode <> nil then begin if (ANode.LocalName = 'procEventoNFe') or (ANode.LocalName = 'envEvento') then begin versao := ObterConteudoTag(ANode.Attributes.Items['versao']); Ler_InfEvento(ANode.Childrens.FindAnyNs('evento').Childrens.FindAnyNs('infEvento')); Ler_RetEvento(ANode); end; if ANode.LocalName = 'retEnvEvento' then Ler_RetEvento(ANode); if ANode.LocalName = 'evento' then Ler_InfEvento(ANode.Childrens.FindAnyNs('infEvento')); LerSignature(ANode.Childrens.Find('Signature'), signature); end; Result := True; except Result := False; end; finally FreeAndNil(Document); end; end;
  14. Boa tarde temos uma função que o cliente importa o XML de NFS-e e guardo o mesmo dentro do banco de dados da seguinte forma ACBrNFSeX1.NotasFiscais.Clear; ACBrNFSeX1.NotasFiscais.LoadFromFile(OpenDialog1.FileName); QCADASTROAXMLRECEB.AsString := ACBrNFSeX1.NotasFiscais.Items[0].XmlNfse; e verifiquei que ele gerou uma Tag de xml a mais <?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="ISO-8859-1" ?> - <nfse> - <rps> <nro_recibo_provisorio>118</nro_recibo_provisorio> <serie_recibo_provisorio>RPS</serie_recibo_provisorio> <data_emissao_recibo_provisorio>19/08/2024</data_emissao_recibo_provisorio> <hora_emissao_recibo_provisorio>00:00:00-03</hora_emissao_recibo_provisorio> </rps> e ao carregar o XML pelo comando ACBrNFSeX1.NotasFiscais.LoadFromString(qry.FieldByName('AXMLRECEB').AsString); apresenta o erro abaixo XML declaration allowed only at the start of the document se retirar uma das Tags ele não apresenta o problema. verifiquei q é nesse ponto da unit ACBrNFSeXNotasFiscais, porém não sei se pode ser alterado essa regra. function TNotaFiscal.GetXmlNfse: String; begin Result := FXmlNfse; if Result = '' then Exit; if not XmlEhUTF8(Result) then Result := '<?xml version="1.0" encoding="UTF-8"?>' + Result; end;
  15. Boa tarde o método de impressão usa o GAP da impressora, com isso faça a calibragem da impressora conforme o manual, dai vc não precisa configurar o tamanho da etiqueta. Obs.: se a etiqueta tiver 5 linhas e vc mandar impressão de 7 linhas ou quantidade maior que o GAP a impressora vai entender que não quer respeitar o GAP, veja se vc não está estourando o tamanho da linha.
×
×
  • 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...