Giter Club home page Giter Club logo

Comments (6)

josemmo avatar josemmo commented on June 28, 2024

Hola @simplygest,

Es decir, la factura se genera, pero los importes, totales, etc. no coinciden con los de la factura original.

¿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.


Hay algún truco que se deba tener en cuenta cuando se usan todos estos impuestos?

"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 especial

Esta funcionalidad que se recoge en los campos EquivalenceSurcharge y EquivalenceSurchargeAmount está contemplada en el formato FacturaE. Es seguramente la más correcta pero todavía no está implementada en Facturae-PHP.

from facturae-php.

simplygest avatar simplygest commented on June 28, 2024

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

from facturae-php.

josemmo avatar josemmo commented on June 28, 2024

@simplygest, conseguiste reproducir el fallo?

from facturae-php.

simplygest avatar simplygest commented on June 28, 2024

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.

from facturae-php.

simplygest avatar simplygest commented on June 28, 2024

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!

from facturae-php.

josemmo avatar josemmo commented on June 28, 2024

Hola @simplygest,

Gracias por retomar el issue! He estado haciendo pruebas para reproducir lo que comentas y ya entiendo por qué ocurre.
He generado la factura (100€ BI, 21% IVA, 5.2% RE, 19% IRPF) de tres formas distintas, y este es el resultado:

Total factura Total importe bruto
Usando cargos 107,30 € 105,20 €
Usando Impuestos Especiales 107,20 € 100,00 €
Usando Recargo de Equivalencia 107,20 € 100,00 €

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";

from facturae-php.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.