-
Total de ítens
148 -
Registro em
-
Última visita
Community Answers
-
Leandro Araújo's post in CT-e Grupo Outros Documentos: Erro EConvertError referente a qtdRat quando informadas Unidades de Transporte ao ler o XML was marked as the answer
Boa tarde.
Ao informar Unidades de Transporte no grupo de Outros Documentos (infOutros), e tentar carregar o XML no componente novamente, através do LoadFromFile, é disparada uma exception "EConvertError", como na mensagem de erro abaixo:
Exception class EConvertError with message ''15,000</qtdRat></infUnidTransp>' is not a valid floating point value'. No XML está assim por exemplo:
<infUnidTransp> <tpUnidTransp>1</tpUnidTransp> <idUnidTransp>1251</idUnidTransp> <lacUnidTransp> <nLacre>54541</nLacre> </lacUnidTransp> <qtdRat>15.000</qtdRat> </infUnidTransp> Olhando o código fonte da unit "\ACBr\Fontes\ACBrDFe\ACBrCTe\PCNCTe\pcteCTeR.pas" nas linhas 1026 e 1032 percebi que está um pouco diferente das declarações para os grupos anteriores acima (InfNF e InfNFe).
Na linha 1026 a atribuição a variável "len" está comentada.
Na linha 1032 está sendo passada a variável "pos3" como argumento no lugar de "len".
//... // len := pos3 - pos2; (Linha 1026) // if (pos1 = 0) and (pos2 = 0) and (pos3 = 0) or (pos1 > pos3) then // qtdRat_UnidTransp := 0.0; if (pos1 < pos3) then qtdRat_UnidTransp := StringToFloatDef(Copy(sAux, pos2 + 8, pos3 -8), 0) // (Linha 1032) else qtdRat_UnidTransp := 0.0; //... Realizei um teste, removendo o comentário na linha 1026 e substituindo a variável "pos03" por "len" como argumento e parou de dar a exceção, além de que o valor ser atribuído corretamente na variável "qtdRat_UnidTransp" (antes ficava zerada).
Tem algum motivo das declarações nesse bloco do InfOutros estar diferente do outros grupos (InfNF e InfNFe)?
Obs.: Revisão do ACBr utilizada = 34383
Segue em anexo unit modificada com a qual fiz o teste.
Obrigado
pcteCTeR.pas
-
Leandro Araújo's post in Impressora GPrinter GP-3120TU não imprime (Impressão em papel térmico) pelo ACBrPOSPrinter. was marked as the answer
* Conclusão: Não foi possível fazer a impressora funcionar.
* Motivos: A marca/modelo da impressora parece não ter suporte para comandos "ESC/POS", que são necessários para impressão universal em impressoras térmicas.
* Tentativas: Foi pesquisado nos manuais, especificações técnicas e nas configurações da impressora e nada referente a linguagem "ESC/POS" foi encontrado.
Também foi utilizado programa exemplo do ACBr, com componente de impressão do ACBr (ACBrPosPrinter), para testar a impressão, mas sem sucesso.
* Observações: Ela ainda pode servir para a impressão de etiquetas, mas ainda assim também parece não ter suporte para linguagens "PPLA, PPLB ou ZPL2", que são necessárias para impressão universal em impressoras de etiquetas.
Talvez por ser de fabricação de uma marca chinesa específica, essa impressora parece trabalhar bem somente com um programa proprietário (NiceLabel Designer/NiceLabel Print) (para impressão de etiquetas).
Obrigado!
-
Leandro Araújo's post in Dúvida - Mensagens Do Webservice Do Acbr Nf-E/nfc-E Com Thread was marked as the answer
Resolvido.
Tenho uma classe aqui, chamada TEmitirNFCeClass, nela o processo de envio e resposta fica isolado :
TEmitirNFCeClass = class(TInterfacedObject, IInterfaceClassProcess) Onde 'IInterfaceClassProcess' é uma interface que uso para processos no sistema, de modo que outra interface, a 'IInterfaceUpdateGUI' possa observar um objeto que implemente 'IInterfaceClassProcess', desse modo eu atualizo componentes na tela (Progressbar.. etc), conforme o andamento do processo, claro, usando TMultiReadExclusiveWriteSynchronizer para que cada thread leia ou escreva de forma segura no status do processo (objeto) compartilhado entre elas.
Esclarecendo, o problema do access violation NÃO tem nada a ver com as mensagens do webservice que são lançadas pelo ACBr NF-e/NFC-e, mas sim por que no envento .OnClose do meu formulário eu tentava dar .free em um objeto que descende de TInterfacedObject, o mesmo já é gerenciado pelo próprio ambiente de execução, e o ambiente se encarregar de liberá-lo.
Obrigado a todos.
-
Leandro Araújo's post in Erro Cancelamento Nfs-E Provedor Coplan was marked as the answer
Consegui realizar o cancelamento dessa maneira:
DMNFSe.ObjetoNFSe.NotasFiscais.Clear; with DMNFSe.ObjetoNFSe.NotasFiscais.Add do begin NFSe.Numero := FNumNFSe; NFSe.IdentificacaoRps.Numero := FNumRPS; NFSe.IdentificacaoRps.Serie := 'UNICA'; NFSe.IdentificacaoRps.Tipo := trRPS; NFSe.PrestadorServico.IdentificacaoPrestador.Cnpj := FCnpj; NFSe.PrestadorServico.IdentificacaoPrestador.InscricaoMunicipal := FInscMunicipal; NFSe.PrestadorServico.Endereco.CodigoMunicipio := FCodMunicipio; end; Result := DMNFSe.ObjetoNFSe.CancelarNFSe(IntToStr(FCodigoCancelamento)); Eu estava fazendo errado, desse modo ai funcionou perfeito.
Obs.: Não pode faltar o número do RPS se não retorna um erro com a mensagem:
Código Erro: E9999
Mensagem: Erro Desconhecido.
Correção: Zero length BigInteger
Provedor: Coplan
Muito obrigado italojjr e aos demais pela ajuda.