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á 3429 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.

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