Descuentos y cargos
Para añadir uno o varios descuentos a una línea de producto se debe indicar a la hora de crear la instancia de FacturaeItem
. De forma similar, pueden añadirse cargos a un producto que, al contrario que los descuentos, incrementarán su precio.
$fac->addItem(new FacturaeItem([
"name" => "Un producto con descuento",
"unitPriceWithoutTax" => 500, // NOTA: estos descuentos y cargos se
// aplican sobre la base imponible
"discounts" => [
["reason" => "Descuento del 20%", "rate" => 20],
["reason" => "5€ de descuento", "amount" => 5]
],
"charges" => [
["reason" => "Recargo del 1,30%", "rate" => 1.3]
],
"taxes" => [Facturae::TAX_IVA => 21]
]));
Descuentos y cargos sobre el total con impuestos
Supongamos que vendemos un producto por un importe de 100€ (IVA incluido) y descuento de 5€. Por defecto, Facturae-PHP aplicará el descuento sobre los 100€ siempre y cuando se indique el campo unitPrice
en vez de unitPriceWithoutTax
:
$fac->addItem(new FacturaeItem([
"name" => "Un producto con descuento",
"unitPrice" => 100,
"discounts" => [
["reason" => "Descuento de 5€ (IVA incluído)", "amount" => 5]
],
"taxes" => [Facturae::TAX_IVA => 10]
]));
Esto significa que Facturae-PHP ajustará el importe del descuento para representarlo en función de la base imponible como especifica el estándar.
Si se quisiera evitar este comportamiento y aplicar un descuento a la base imponible de una línea de producto con impuestos incluídos, se deberá usar el flag hasTaxes
:
$fac->addItem(new FacturaeItem([
"name" => "Un producto con descuento",
"unitPrice" => 100,
"discounts" => [
["reason" => "Descuento de 5€", "amount" => 5, "haxTaxes" => false]
],
"taxes" => [Facturae::TAX_IVA => 10]
]));
NOTA
Consulta el test
DiscountsTest.php
dentro del directoriotests/
para más información sobre este comportamiento.