Ver Mensaje Individual
  #6  
Antiguo 30-01-2010
Avatar de DriverOp
DriverOp DriverOp is offline
Miembro
 
Registrado: ago 2007
Posts: 93
Reputación: 17
DriverOp Va por buen camino
Siguiendo con este tema. He realizado unas pruebas y he llegado a este código.
Código Delphi [-]
  TipoPrecioUnit:=PuFinal;
  PrecioUnitarioOriginal:=EdtPrecUnit.DoubleValue;
  Cantidad:=EdtCant.DoubleValue;

  FactorIVA1:=1+(IVA1/100);
  FactorIVA2:=1+(IVA2/100);
  FactorIVA3:=1+(IVA3/100);
  FactorDescuento:=1+(Descuento/100);
  FactorRecargo:=1+(Recargo/100);

  if TipoPrecioUnit = PuFinal then
    PrecioUnitarioCalculado:=PrecioUnitarioOriginal/FactorIVA1
  else
    PrecioUnitarioCalculado:=PrecioUnitarioOriginal;

  if Descuento > 0 then
    PrecioUnitarioCalculado:=PrecioUnitarioCalculado/FactorDescuento;
  if Recargo > 0 then
    PrecioUnitarioCalculado:=PrecioUnitarioCalculado*FactorRecargo;

  SubTotal:=PrecioUnitarioCalculado*Cantidad;
  if IVA1 > 0 then
    TotalIVA1:=(SubTotal*FactorIVA1)-SubTotal
  else TotalIVA1:=0;
  if IVA2 > 0 then
    TotalIVA2:=(SubTotal*FactorIVA2)-SubTotal
  else TotalIVA2:=0;
  if IVA3 > 0 then
    TotalIVA3:=(SubTotal*FactorIVA3)-SubTotal
  else TotalIVA3:=0;
  TotalItem:=SubTotal+TotalIVA1+TotalIVA2+TotalIVA3;

  Label1.Caption:='PrecioUnitarioCalculado: '+FloatToStr(PrecioUnitarioCalculado);
  Label2.Caption:='SubTotal: '+FloatToStr(SubTotal);
  Label3.Caption:='TotalIVA1: '+FloatToStr(TotalIVA1);
  Label5.Caption:='TotalIVA2: '+FloatToStr(TotalIVA2);
  Label6.Caption:='TotalIVA3: '+FloatToStr(TotalIVA3);
  Label4.Caption:='TotalItem: '+FloatToStr(TotalItem);
TipoPrecioUnit es un tipo enumerado (PuFinal, PuBase) que me indica si el precio unitario es con o sin IVA incluido. IVA1, IVA2 e IVA3 son las alicuotas de los diferentes IVAs que afectan la operación. Algo parecido ocurre con Descuento y Recargo.

De por qué siempre considero el IVA1 se debe a que ese IVA es el que siempre se cobra (excepto en un caso especial que en la práctica es igual a esto).

Me gustaría saber si la lógica del cálculo está bien.

Aún no sé cómo calcular los Impuestos Internos...

Gracias por su atención.
Responder Con Cita