Ir para conteúdo
  • Cadastre-se

dev botao

Erro No Evento Quandovenderitem Do Acbrvirtualnfce


Ver Solução Respondido por magnosystem,
  • Este tópico foi criado há 3208 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

Pessoal bom dia.

 

Eu tinha começado a desenvolver nfce e já estava até imprimindo cupom usando o ecfvirtual. Parei uns tempos e voltei agora e para tal atualizei os fontes do acbr.

Desde então está aparecendo a mensagem "Access Violation at Address 004099B6 in module MagnoPDV"

 

O interessante é que seu eu não colocar nenhum código no evento QuandoVenderItem do AcbrVirtualNFCe o erro desaparece, todavia, fica faltando os parâmetros de ncm e alguns outros e o envio é recusado pelo webservice. Mas basicamente é isto. Basta eu colocar um comando no evento (teste colocando apenas Det.Prod.ncm) que já dá erro.

 

Não achei nenhum exemplo no acbr, se tiver, me falem em qual pasta.

O fonte que está dentro do evento é o abaixo:

procedure TPDV.ECFVirtualNFCeQuandoVenderItem(Det: TDetCollectionItem);
begin
Det.nItem := Datacliente.TBAuxVendas.FieldByName('ITEM').AsInteger;
With Det.Prod do
Begin
cProd := Datacliente.TBAuxVendas.FieldByName('CODIGOPRODUTO').AsString;
if Datacliente.ValidaEAN(Datacliente.TBAuxVendas.FieldByName('CODIGOPRODUTO').AsString) then
cEAN := Datacliente.TBAuxVendas.FieldByName('CODIGOPRODUTO').AsString
else
cEAN := '';
xProd := Datacliente.TBAuxVendas.FieldByName('PRODUTO').AsString;
With Datacliente.QEXEC do
Begin
sql.Clear;
sql.Add('SELECT NCM FROM PRODUTOS WHERE CODIGO = ' + QuotedStr(Datacliente.TBAuxVendas.FieldByName('CODIGOPRODUTO').AsString));
open;
End;
if Datacliente.QEXEC.FieldByName('NCM').AsTrimString = '' then
NCM := '99999999'
else
NCM := Datacliente.QEXEC.FieldByName('NCM').AsTrimString;
if Datacliente.TBAuxVendas.FieldByName('TRIBUTACAO').AsString = 'Substituição Tributária' then
CFOP := '5403'
else
CFOP := '5102';
qCom := Datacliente.TBAuxVendas.fieldbyname('QUANTIDADE').AsCurrency;
if Trim(Datacliente.TBAuxVendas.fieldbyname('UNIDADE').AsString) = '' then
uCom := 'UN'
else
uCom := Datacliente.TBAuxVendas.fieldbyname('UNIDADE').AsString;
vUnCom := Datacliente.TBAuxVendas.fieldbyname('VALORUNITARIO').AsCurrency;
vDesc := Datacliente.TBAuxVendas.fieldbyname('DESCONTO').AsCurrency;
vProd := Datacliente.TBAuxVendas.fieldbyname('SUBTOTAL').AsCurrency;
vOutro := 0;
indRegra := irTruncamento;
end;
With Det.Imposto.ICMS do
Begin
if Datacliente.TBPadrao.FieldByName('SPEDREGIMETRIBUTARIO').AsString = 'SN' then
Begin
if Datacliente.TBAuxVendas.FieldByName('TRIBUTACAO').AsString = 'Substituição Tributária' then
CSOSN := csosn500 else
if Datacliente.TBAuxVendas.FieldByName('TRIBUTACAO').AsString = 'Isenta' then
CSOSN := csosn300 else
if Datacliente.TBAuxVendas.FieldByName('TRIBUTACAO').AsString = 'Não Tributada' then
CSOSN := csosn400 else
Begin
CSOSN := csosn102;
orig := oeNacional;
pICMS := Datacliente.TBAuxVendas.FieldByName('ALIQUOTA').AsCurrency;
vICMS := Datacliente.TBAuxVendas.FieldByName('VALORICMS').AsCurrency;
End;
End
else
Begin
if Datacliente.TBAuxVendas.FieldByName('TRIBUTACAO').AsString = 'Substituição Tributária' then
CST := cst60 else
if Datacliente.TBAuxVendas.FieldByName('TRIBUTACAO').AsString = 'Isenta' then
CST := cst40 else
if Datacliente.TBAuxVendas.FieldByName('TRIBUTACAO').AsString = 'Não Tributada' then
CST := cst41 else
Begin
CST := cst00;
pICMS := Datacliente.TBAuxVendas.FieldByName('ALIQUOTA').AsCurrency;
vICMS := Datacliente.TBAuxVendas.FieldByName('VALORICMS').AsCurrency;
End;
End;
End;
end;
Link para o comentário
Compartilhar em outros sites

  • Consultores

Você consegue construir ou um testcase ou um aplicativo mínimo para reproduzir o problema?

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Membros Pro
  • Solution

Descobri o erro. O meu componente ACBRECF fica na DataModule. Há uns tempos atrás estava ocorrendo um erro com o AcbrNfeDanfeFR que eu consegui resolver tirando o componente AcbrNfeDanfeFR, AcbrNfe e o AcbrECFVirtualNFCe e colocando no form principal separado do Datamodule. Funcionou perfeitamente. Depois da atualização do ACBR notei que o AcbrECFVirtualNFCe não estava enxergando em tempo de programação o AcbrECF no Datamodule. Aí voltei o AcbrECFVirtualNFCe para o Datamodule e funcionou perfeitamente. Obrigado pela ajuda pessoal.

Link para o comentário
Compartilhar em outros sites

×
×
  • 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.