Salve amigos do fórum. Esse é meu primeiro comentário em algum tópico. Qualquer coisa errada me avisem. Bom eu comecei a implementar a NFe na minha empresa e me deparei com esse problema dos calculos. Depois de procurar achei esse tópico li ele inteiro rs' e vi que alguns amigos disseram que iriam criar um repositorio e tals porém não criaram. Eu peguei a ultima versão que tenho aqui da classe e comecei a montar um exemplo. Infelizmente ainda não tive tempo de completar o exemplo, mas segue funcional. Eu subi os fontes em um repositório do SorceForge porém sou leigo nele, peço pra que alguem me auxilie a como fazer para que todos utilizem o SVN. Bom para baixarem e testarem a unit é a uCalcTribNF.pas que está no code. Vou deixar abaixo a rotina de como usar. Assim que eu souber como utilizar o SVN do sourceforge podemos ir melhorando a unit em grupo.
SourceForge do projeto:
http://sourceforge.net/projects/calculonfe/
Com usar:
var
lItemNF: TItemNF;
FNotaFiscal: TNotaFiscal;
// lDuplicataNF: TDuplicataNF;
begin
FNotaFiscal := TNotaFiscal.Create(Self);
try
lItemNF := TItemNF.Create(FNotaFiscal);
FNotaFiscal.Inicializar;
FNotaFiscal.ValoresNF.VL_FRETE := 0.00;
FNotaFiscal.ValoresNF.VL_SEGURO := 0.00;
FNotaFiscal.EmitenteNF.NomeRazaoSocial := 'Empresa Industrial Alpha Ltda';
FNotaFiscal.EmitenteNF.CRT := crtRegimeNormal;
//FNotaFiscal.EmitenteNF.ALiqCSOSN := 2.2;
FNotaFiscal.EmitenteNF.Estado := 'SP';
FNotaFiscal.DestinatarioNF.NomeRazaoSocial := 'Empresa Atacadista Betha Ltda';
FNotaFiscal.DestinatarioNF.CRT := crtRegimeNormal;
FNotaFiscal.DestinatarioNF.Estado := 'MG';
FNotaFiscal.Observacoes.Add('operação sujeita ao regime de Substituição Tributária nos termos do Convênio ICMS nº 85/1993.');
lItemNF.Inicializar;
lItemNF.Item := 2;
lItemNF.CodProduto := 'PR01';
lItemNF.DescProduto := 'PNEUS NOVOS PARA AUTOMOVEL';
lItemNF.NCMSH := '4011.10.00';
lItemNF.AliqMVA := 71.28;
//lItemNF.ComFrete;
//lItemNF.AliqIPI := 20;
lItemNF.Quantidade := 5;
lItemNF.ValorUnitario := 114.40;
//lItemNF.Peso := 50.00;
lItemNF.CST_ICMS := cst10;
//lItemNF.ReducaoICMS :=40;
//lItemNF.ReducaoICMSst :=40;
//lItemNF.ComFrete :=false;
//lItemNF.AliquotaICMS;
// lItemNF.AliquotaTRIB :=
//lItemNF.VL_TRIB_OP
//lItemNF.
//lItemNF.CSOSN := csosn201;
//lItemNF.ReducaoICMS := 0;
FNotaFiscal.ItensNF.Add(FNotaFiscal, lItemNF);
lItemNF.Item := 3;
lItemNF.CodProduto := 'PR01';
lItemNF.DescProduto := 'PNEUS NOVOS PARA AUTOMOVEL';
lItemNF.NCMSH := '4011.10.00';
lItemNF.AliqMVA := 71.28;
//lItemNF.ComFrete;
//lItemNF.AliqIPI := 20;
lItemNF.Quantidade := 5;
lItemNF.ValorUnitario := 114.40;
//lItemNF.Peso := 50.00;
lItemNF.CST_ICMS := cst10;
//lItemNF.ReducaoICMS :=40;
//lItemNF.ReducaoICMSst :=40;
//lItemNF.ComFrete :=false;
//lItemNF.AliquotaICMS;
// lItemNF.AliquotaTRIB :=
//lItemNF.VL_TRIB_OP
//lItemNF.
//lItemNF.CSOSN := csosn201;
//lItemNF.ReducaoICMS := 0;
FNotaFiscal.ItensNF.Add(FNotaFiscal, lItemNF);
ShowMessage(
'DE ---> ' +FNotaFiscal.EmitenteNF.Estado +' PARA ---> ' +FNotaFiscal.DestinatarioNF.Estado + #13#10 +
'VL_FRETE ---> ' + FormatCurr('###,###,##0.00', FNotaFiscal.ValoresNF.VL_FRETE) + #13#10 +
'VL_SEGURO ---> ' + FormatCurr('###,###,##0.00', FNotaFiscal.ValoresNF.VL_SEGURO) + #13#10 +
'VL_DESPACESS ---> ' + FormatCurr('###,###,##0.00', FNotaFiscal.ValoresNF.VL_DESPACESS) + #13#10 +
'VL_TOTAL_PROD---> ' + FormatCurr('###,###,##0.00', FNotaFiscal.ValoresNF.VL_TOTAL_PROD) + #13#10 +
'VL_TOTAL_NF ---> ' + FormatCurr('###,###,##0.00', FNotaFiscal.ValoresNF.VL_TOTAL_NF) + #13#10 +
'BS_ICMS ---> ' + FormatCurr('###,###,##0.00', FNotaFiscal.ValoresNF.BS_ICMS) + #13#10 +
'%_ICMS ---> ' + FormatCurr('###,###,##0.00', 12) + #13#10 +
'VL_ICMS ---> ' + FormatCurr('###,###,##0.00', FNotaFiscal.ValoresNF.VL_ICMS) + #13#10 +
'BS_ICMS_ST ---> ' + FormatCurr('###,###,##0.00', FNotaFiscal.ValoresNF.BS_ICMS_ST) + #13#10 +
'VL_CREDITO_CSOSN ---> ' + FormatCurr('###,###,##0.00', FNotaFiscal.ValoresNF.VL_CREDITO_CSOSN) + #13#10 +
'VL_ICMS_ST ---> ' + FormatCurr('###,###,##0.00', FNotaFiscal.ValoresNF.VL_ICMS_ST)
);
finally
FreeAndNil(FNotaFiscal);
end;
end;
Bom proveito!