Bom dia consegui, arrumar analisando o xml, e fazendo os calculos entendi o que estava errado, estava dando certo ate 30 reais porque a sefaz aceita arredondamento ate 0,01, vi que a conta do vIBSUF estava no local errado, eu estava fazendo direto pela aliquota 0,1 na realidade eu preciso fazer a reducao de base e depois calcular
fiz aqui a mudanca deu certo
deveria ter feito mais testes antes de postar desculpa novamente ai no grupo;
pIBSUF := 0.1;
gDif.pDif := 0;
gDif.vDif := 0;
gDevTrib.vDevTrib := 0;
if aclass = '200047' then
begin
gRed.pRedAliq := 40;
gRed.pAliqEfet := pIBSUF * RoundAbnt((1-gRed.pRedAliq/100),2);
vIBSUF := RoundAbnt((bcalculo*gRed.pAliqEfet)/100,2); mudei aqui o calculo do IBS
end
else if aclass = '200034' then
begin
gRed.pRedAliq := 60;
gRed.pAliqEfet := pIBSUF * RoundAbnt((1-gRed.pRedAliq/100),2);
vIBSUF := RoundAbnt((bcalculo*gRed.pAliqEfet)/100,2); mudei aqui tambem o calculo
end
else
begin
vIBSUF := RoundAbnt((bcalculo*pIBSUF)/100,2); trouxe aqui quando nao tem reducao de base
gRed.pRedAliq := 0;
gRed.pAliqEfet := 0;
end;
total_vIBSUF:= total_vIBSUF + vIBSUF;
mudei isto de local apliquei a aliquota de reducao no calculo como os valores dao muito baixo 0,02 0,03 porque a aliquota e baixa entao dava certo quando fazia venda de valores baixos.
</ICMS>
<IBSCBS>
<CST>200</CST>
<cClassTrib>200047</cClassTrib>
<gIBSCBS>
<vBC>36.50</vBC>
<gIBSUF>
<pIBSUF>0.1000</pIBSUF>
<gRed>
<pRedAliq>40.0000</pRedAliq>
<pAliqEfet>0.0600</pAliqEfet>
</gRed>
<vIBSUF>0.02</vIBSUF>
</gIBSUF>
<gIBSMun>
<pIBSMun>0.0000</pIBSMun>
<gRed>
<pRedAliq>40.0000</pRedAliq>
<pAliqEfet>0.0000</pAliqEfet>
</gRed>
<vIBSMun>0.00</vIBSMun>
</gIBSMun>
<vIBS>0.02</vIBS>
<gCBS>
<pCBS>0.9000</pCBS>
<gRed>
<pRedAliq>40.0000</pRedAliq>
<pAliqEfet>0.5400</pAliqEfet>
</gRed>
<vCBS>0.20</vCBS>
</gCBS>
</gIBSCBS>
</IBSCBS>
</
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.