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