-
Notifications
You must be signed in to change notification settings - Fork 94
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
¿Hay algún ejemplo de factura con Recargo Equiv. + Retención + IVA + Descuento? #72
Comments
Hola @simplygest,
¿Podrías pasar el código que estás utilizando para generar la factura? Si los totales no coinciden es un fallo muy grave de la librería, pero para poder arreglarlo necesito dar con el fallo primero.
"Truco" no hay, todo depende del formato en el que lo quiera la entidad receptora de la factura. Aquí existentes varias soluciones para añadir el recargo equivalente: 1. Como un impuesto$fac->addItem(new FacturaeItem([
"name" => "Nombre",
"articleCode" => "A1234",
"quantity" => 2,
"unitPriceWithoutTax" => 100,
"discounts" => [
["reason" => "Descuento del 20%", "rate" => 20]
],
"taxes" => [
Facturae::TAX_IVA => 21,
Facturae::TAX_IRPF => 19,
Facturae::TAX_OTHER => 5.2 // <----- Recargo de equivalencia
]
])); 2. Como un cargo$fac->addItem(new FacturaeItem([
"name" => "Nombre",
"articleCode" => "A1234",
"quantity" => 2,
"unitPriceWithoutTax" => 100,
"discounts" => [
["reason" => "Descuento del 20%", "rate" => 20]
],
"charges" => [
["reason" => "Recargo de equivalencia", "rate" => 5.2, "hasTaxes" => false] // <----- Recargo de equivalencia
],
"taxes" => [
Facturae::TAX_IVA => 21,
Facturae::TAX_IRPF => 19
]
])); 3. Como un impuesto especialEsta funcionalidad que se recoge en los campos |
Hola! Al final conseguí crear la factura correctamente haciéndolo como un impuesto más, aunque utilicé TAX_IE en vez de TAX_OTHER. Si lo hacía en "charges" no me cuadraban los totales, y si lo hacía con otro TAX_IVA para el Rec. Equiv. tampoco. Como es un caso complejo (IVA, Recargo, Ret y Descuento) no conseguí averiguar cuándo me fallaba exactamente, así que voy a intentar recopilar más información y si consigo reproducirlo lo pongo aquí. Gracias |
- Añadida propiedad "surcharge" a FacturaeItem - Modificados PropertiesTrait y ExportableTrait
@simplygest, conseguiste reproducir el fallo? |
Hola! Disculpa, estoy con varios proyectos a la vez y no he podido hacer pruebas. Lo solucioné en su momento usando otro impuesto (TAX_IE) en vez de usando "charges". Voy a intentar replicarlo en cuanto retome ese proyecto. |
Hola! Hoy me he acordado de que estaba esto pendiente y he hecho algunas pruebas. Añadiendo el recargo como otro impuesto, al validar la factura (por ejemplo en viewer.facturadirecta.com) el resultado es correcto. Coincide con la factura original. Si lo hago usando el apartado "charges" como en el ejemplo 2, el total es incorrecto. El "total sin impuestos" tiene en cuenta el recargo, y luego se aplica el IVA (y la retención irpf) a ese total, cuando creo que debería ser al contrario. En el primer caso (el que me funciona), el total sin impuestos no tiene en cuenta ni el IVA ni el RE, y luego se añade el RE y se resta la Retención. Hice una prueba sencilla, con importes "redondos" (100 + 21% IVA +5.2% RE - 19%IRPF) para analizar mejor qué pasaba. Usando "otro impuesto": 100 + 21 + 5,20 - 19 = 107,20 Usando "charges": 105,20 -19,99 + 22,09 = 107.30 En mis primeras pruebas la factura era incluso más complicada (con descuento global y por línea) y era más difícil averiguar el origen del problema. Un saludo! |
Hola @simplygest, Gracias por retomar el issue! He estado haciendo pruebas para reproducir lo que comentas y ya entiendo por qué ocurre.
El primer método devuelve unos importes distintos porque los cargos y descuentos se aplican antes de impuestos sobre la base imponible, alterando el total de la factura. Aunque no es un fallo (es lo que dice la especificación), creo que es importante tenerlo en cuenta a la hora de definir una factura (yo tampoco era suficientemente consciente de esto... 😓). TLDR: Los recargos de equivalencia es mejor definirlos con la funcionalidad añadida en la v1.6.0 o como impuesto especial, pero nunca como cargo.Dejo por aquí el script que he utilizado para hacer las pruebas: use josemmo\Facturae\Facturae;
use josemmo\Facturae\FacturaeItem;
use josemmo\Facturae\FacturaeParty;
$party = new FacturaeParty([
"taxNumber" => "A00000000",
"name" => "Perico de los Palotes S.A.",
"address" => "C/ Falsa, 123",
"postCode" => "12345",
"town" => "Madrid",
"province" => "Madrid"
]);
$fac = new Facturae();
$fac->setNumber('TEST-DEC', '0001');
$fac->setIssueDate('2021-04-15');
$fac->setSeller($party);
$fac->setBuyer($party);
echo "==== 1. USANDO CARGOS ====\n";
$fac->addItem(new FacturaeItem([
"name" => "Prueba",
"quantity" => 1,
"unitPriceWithoutTax" => 100,
"charges" => [
["reason" => "Recargo de equivalencia", "rate" => 5.2, "hasTaxes" => false]
],
"taxes" => [
Facturae::TAX_IVA => 21,
Facturae::TAX_IRPF => 19
]
]));
$totals = $fac->getTotals();
echo "Total factura: {$totals['invoiceAmount']} €\n";
echo "Total importe bruto: {$totals['grossAmountBeforeTaxes']} €\n\n";
$fac->clearItems();
echo "==== 2. USANDO IMPUESTOS ESPECIALES ====\n";
$fac->addItem(new FacturaeItem([
"name" => "Prueba",
"quantity" => 1,
"unitPriceWithoutTax" => 100,
"taxes" => [
Facturae::TAX_IVA => 21,
Facturae::TAX_IE => 5.2,
Facturae::TAX_IRPF => 19
]
]));
$totals = $fac->getTotals();
echo "Total factura: {$totals['invoiceAmount']} €\n";
echo "Total importe bruto: {$totals['grossAmountBeforeTaxes']} €\n\n";
$fac->clearItems();
echo "==== 3. USANDO RECARGO DE EQUIVALENCIA ====\n";
$fac->addItem(new FacturaeItem([
"name" => "Prueba",
"quantity" => 1,
"unitPriceWithoutTax" => 100,
"taxes" => [
Facturae::TAX_IVA => ['rate'=>21, 'surcharge'=>5.2],
Facturae::TAX_IRPF => 19
]
]));
$totals = $fac->getTotals();
echo "Total factura: {$totals['invoiceAmount']} €\n";
echo "Total importe bruto: {$totals['grossAmountBeforeTaxes']} €\n\n"; |
Hola!
Estoy probando la librería y he conseguido crear algunas facturas "sencillas" (con IVA, IVA+Retención, etc.) pero no consigo crear una factura que tenga IVA + Recargo de Equivalencia + Retención + Descuento por línea.
Es decir, la factura se genera, pero los importes, totales, etc. no coinciden con los de la factura original.
Este es el código que estoy usando para añadir una línea (item):
$fac->addItem(new FacturaeItem([ "name" => $descr, "articleCode" => $codigo, "quantity" => $cantidad, "unitPriceWithoutTax" => $precio, "discounts" => array( ["reason" => "Descuento de Línea", "rate" => $dto] ), "charges" => array( ["reason" => "Recargo Equiv.", "rate" => $re, "hasTaxes" => false] ), "taxes" => array( Facturae::TAX_IVA => $impuesto, Facturae::TAX_IRPF => $ret ) ]));
También he probado a añadir el Recargo Equiv. como "taxes" y no como "charges" con el mismo resultado. ¿Hay algún truco que se deba tener en cuenta cuando se usan todos estos impuestos?
Gracias
The text was updated successfully, but these errors were encountered: