Cálculos de montos para combustibles

Introducción

A continuación se incluye un script en PHP para calcular los valores de un item correspondiente a un combustible, de forma tal que sea aceptado por los WebServices de facturación electrónica de AFIP y al mismo tiempo, los valores sean exactos con una impresora fiscal.
A un combustible se asocian dos valores que serán utilizados para calcular impuestos internos: “coeficiente” e “itc”.

Datos de entrada
$cantidad //cantidad vendida. Si es 0 se calcula en base al precio total
$precio //precio total vendido. Si es 0 se calcula en base a la cantidad
$itc //valor entre 0 (si no posee) y 1
$coeficiente //valor entre 1 (si no posee) y 2
$ivaValor //valor del iva, ej 0.21 para 21%
$precioArticulo //precio total del articulo.
Script
$precioNetoArticulo = $precioArticulo * (1 - $ivaValor);

if(!empty($precio)) { 
  $cantidad = round($precio / $precioArticulo, 2); 
} else {
  $precio = round($cantidad * $precioArticulo, 2); 
}

if($coeficiente != 1){
  $precioNeto = round($precio / $coeficiente, 2);
  $importeIva = round($ivaValor * $precioNeto, 2);
  $importeItc = round($itc * $precioNeto, 2);
  $alicuotaItc = round($importeItc * 100 / $precioNeto, 2);
  $impuestoInterno =  $precio - $precioNeto - $importeIva - $importeItc;
  $alicuotaImpuestoInterno = round($impuestoInterno * 100 / $precioNeto, 2);
  $importeTributo = $importeItc + $impuestoInterno;
  $tasaAjuste = $precioNeto / ($precioNeto + $impuestoInterno + $importeItc);
  
} else {
  $ivaAux = round($precio / (1 + $ivaValor), 2);
  $importeIva = $precio - $ivaAux;
  $precioNeto = $precio - $importeIva;
  $impuestoInterno = 0;
  $alicuotaImpuestoInterno = 0;
  $importeItc = 0;
  $alicuotaItc = 0;
  $tasaAjuste = 0;
  $importeTributo = 0;
}

$ret = array(); //array con los valores de retorno
$ret["precio_articulo"] = number_format($precioArticulo, 2, ".", "");
$ret["precio_neto_articulo"] = number_format($precioNetoArticulo, 2, ".", "");
$ret["precio"] = number_format($precio, 2, ".", "");
$ret["cantidad"] = number_format($cantidad, 2, ".", "");
$ret["precio_neto"] = number_format($precioNeto, 2, ".", "");
$ret["importe_iva"] = number_format($importeIva, 2, ".", "");
$ret["impuesto_interno"] = number_format($impuestoInterno, 2, ".", "");
$ret["alicuota_impuesto_interno"] = number_format($alicuotaImpuestoInterno, 2, ".", "");    
$ret["importe_itc"] = number_format($importeItc, 2, ".", "");
$ret["alicuota_itc"] = number_format($alicuotaItc, 2, ".", "");
$ret["importe_tributo"] = number_format($importeTributo, 2, ".", "");    
$ret["tasa_ajuste"] = number_format($tasaAjuste, 8, ".", "");
Prestar especial atención a los valores de redondeo.

En las impresoras fiscales, los calculos son realizados por el mismo controlador fiscal, para tener una concordancia de valores se recomienda utilizar cantidad = 1 y precio_neto en vez de cantidad y precio_neto_articulo. Luego el detalle de la cantidad total vendida y el precio neto del articulo pueden ser incluídos en algun string con información adicional

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *