Salta al contingut
Log in

Càlcul de factura

Aquesta guia explica com B2Brouter calcula els imports nets i bruts a partir d’entrades com la quantitat, el preu, la quantitat base, els impostos i els descomptes o recàrrecs opcionals, que es poden indicar com a percentatges o imports fixos. Els càlculs suporten ajustos tant a nivell de línia de detall com a nivell de factura.

Tots els càlculs i arrodoniments es fan automàticament per B2Brouter. L’objectiu d’aquesta guia és explicar el procés i quins resultats heu d’esperar.

Descomptes i recàrrecs globals a nivell de factura, usant allowance_charges_attributes:

  • Descompte (Allowance): (Opcional) {allowance_charge_indicator: "allowance"} amb:
    • percentage: Percentatge de descompte aplicat a tota la factura.
    • amount: Import fix de descompte aplicat a tota la factura.
  • Recàrrec (Charge): (Opcional) {allowance_charge_indicator: "charge"} amb:
    • percentage: Percentatge de recàrrec aplicat a tota la factura.
    • amount: Import fix de recàrrec aplicat a tota la factura.

Per a cada línia (invoice_lines_attributes) cal proporcionar les entrades següents:

  • Quantitat (quantity): Nombre d’unitats.
  • Preu (price): Preu per a la quantitat base d’unitats indicada.
  • Quantitat base (base_quantity): Nombre d’unitats al qual s’aplica el preu. Per defecte és 1. Useu-ho quan el preu s’expressa per múltiples unitats (p. ex., preu per 100 peces).
  • Impostos (taxes_attributes):
    • Name: Nom de l’impost (p. ex. VAT, IVA, IRPF).
    • Category: Categoria de l’impost.
    • Percent: Percentatge d’impost aplicat (pot ser positiu o negatiu).
  • Descompte (Allowance): (Opcional) via allowance_charges_attributes[]{allowance_charge_indicator: "allowance"} amb:
    • percentage: Percentatge de descompte aplicat a la línia.
    • amount: Import fix de descompte aplicat a la línia.
  • Recàrrec (Charge): (Opcional) via allowance_charges_attributes[]{allowance_charge_indicator: "charge"} amb:
    • percentage: Percentatge de recàrrec aplicat a la línia.
    • amount: Import fix de recàrrec aplicat a la línia.
  • Import d’extensió: (Opcional) L’import “net” total de la línia de factura abans d’aplicar impostos. Si no s’indica, l’API el calcula tal com s’explica a Imports nets a nivell de línia.
  • Mètode d’arrodoniment (rounding_method): Mètode d’arrodoniment usat en els càlculs. Per defecte és Arrodoniment cap amunt (half_up).

  • Arrodonir abans de sumar (round_before_sum): Arrodoneix els imports imposables de cada línia abans de sumar-los. Per defecte és false.

  • Aplicar impostos per línia (apply_taxes_per_line): Si és true, calcula l’import d’impost a nivell de factura aplicant l’impost a cada línia i sumant-los. En cas contrari, suma les bases imposables de totes les línies i aplica l’impost al total. Per defecte és false.

    • Ometre arrodoniment de la base imposable per línia (skip_line_taxable_base_rounding): Quan està activat, les bases imposables i els imports d’impost per línia no s’arrodonen individualment — només s’arrodoneix el total acumulat d’impostos. Per defecte és false.

    Important: Aquesta configuració és exclusivament per a comptes el ERP dels quals usa totals amb IVA inclòs, ja que es desvia del càlcul estàndard d’impostos. Requereix apply_taxes_per_line: true per tenir efecte.

Import base de línia = Quantitat * Preu / Quantitat base

Quan base_quantity és 1 (per defecte), es simplifica a Quantitat * Preu.

Quan base_quantity és superior a 1, permet expressar preus per múltiples unitats. Per exemple, si els cargols tenen un preu de 12,50 per 100 peces i se’n demanen 500:

Import base de línia = 500 * 12,50 / 100 = 62,50

Si s’ha indicat Import d’extensió (extension_amount), s’usarà com a import net de la línia en tots els càlculs. En cas contrari, es calcula l’import net de la línia.

Per a cada línia, es calcula l’import net aplicant el descompte i el recàrrec:

Import net de línia = Import base de línia - Import descompte de línia + Import recàrrec de línia

Si els descomptes o recàrrecs estan expressats com a percentatges, es calcula el seu import com:

Import recàrrec de línia = Import base de línia * (Percentatge recàrrec de línia / 100)
Import descompte de línia = Import base de línia * (Percentatge descompte de línia / 100)

Si els imports de descompte o recàrrec són fixos, es pot ometre aquest pas.

Finalment, es calcula l’import net de la línia restant el descompte i afegint el recàrrec:

Import net de línia = Import base de línia - Import descompte de línia + Import recàrrec de línia

Com que l’import net de la línia s’ha d’arrodonir a dos decimals, cal tenir en compte que les diferents parts del càlcul s’arrodonen per separat.

Si els imports de descompte/recàrrec de la línia no s’indiquen, es tracten com a 0.

Import net de línia = Import base de línia

Sumeu els imports nets de totes les línies per calcular el subtotal. Aquest càlcul depèn de la configuració round_before_sum.

  • Arrodonir abans de sumar és true: El mètode d’arrodoniment s’aplica a cada import net de línia abans de sumar-los tots.
Subtotal = ∑(mètode_arrodoniment(Import net de línia))
  • Arrodonir abans de sumar és false: El mètode d’arrodoniment s’aplica a la suma de tots els imports nets de línia.
Subtotal = mètode_arrodoniment(∑(Import net de línia))

Si s’han indicat descomptes o recàrrecs a nivell de factura:

Subtotal = ∑(Imports nets de línia) - Import descompte de factura + Import recàrrec de factura

Després de calcular l’import net de la línia, s’apliquen els impostos basant-se en els taxes_attributes. Un percentatge d’impost negatiu indica una deducció. Els impostos s’apliquen en funció de la configuració apply_taxes_per_line.

Import imposable de línia (o base) = Import net de línia

Aplicar impostos per línia és true: Els impostos s’aplicaran a cada import imposable de línia i es sumaran tots per obtenir l’import total d’impostos de la factura.

Import impost de línia = Import imposable de línia × (Percentatge impost / 100)
  • Si Arrodonir abans de sumar està actiu, l’import imposable de cada línia s’arrodoneix abans d’aplicar el percentatge d’impost.
Import impost de línia = mètode_arrodoniment(Import imposable de línia) x (Percentatge impost / 100) [Actiu]
Import impost de línia = mètode_arrodoniment(Import imposable de línia x (Percentatge impost / 100)) [Inactiu]

Càlcul d’impostos a nivell de factura (4 combinacions possibles):

  1. apply_taxes_per_line = true i round_before_sum = true
Import imposable de línia = mètode_arrodoniment(Import net de línia - Import descompte de línia)
Import impost de línia = mètode_arrodoniment(Import imposable de línia x (Percentatge impost / 100))
Import impost de factura = ∑(Imports impost de línia)
  1. apply_taxes_per_line = true i round_before_sum = false
Import imposable de línia = Import net de línia - Import descompte de línia
Import impost de línia = mètode_arrodoniment(Import imposable de línia x (Percentatge impost / 100))
Import impost de factura = ∑(Imports impost de línia)
  1. apply_taxes_per_line = false i round_before_sum = true
Import imposable de línia = mètode_arrodoniment(Import net de línia - Import descompte de línia)
Import impost de factura = Imports imposables de línia x (Percentatge impost / 100)
  1. apply_taxes_per_line = false i round_before_sum = false
Import imposable de línia = Import net de línia - Import descompte de línia
Import impost de factura = Imports imposables de línia x (Percentatge impost / 100)

Total a nivell de factura:

Total = Subtotal + Import impost de factura

Tots els valors s’arrodonen a dos decimals (que representen cèntims en la majoria de monedes).

  • Arrodoniment cap amunt (half_up): Mètode per defecte. Si el tercer decimal és 5 o superior, s’arrodoneix cap amunt; si és 4 o inferior, no canvia.
  • Arrodoniment bancari (bankers): Arrodoneix els valors intermedis al valor parell més proper.
  • Truncament (truncate): Elimina la part decimal. 1,234 i 1,236 tots dos s’arrodonen a 1,23.
  1. Càlculs a nivell de línia: Tots els imports nets a nivell de línia s’arrodonen a dos decimals abans de qualsevol càlcul posterior.
  2. Càlculs d’impostos: Els imports d’impost es calculen i s’arrodonen abans de sumar-los a l’import net de la línia.
  3. Subtotal i ajustos a nivell de factura: Els subtotals s’arrodonen abans d’aplicar els ajustos a nivell de factura.
  • Aplicar l’arrodoniment per separat a cada pas (descomptes, recàrrecs i impost) per evitar errors acumulats.
  • Arrodonir sempre a dos decimals abans d’usar el valor en càlculs posteriors.

Configuració: Mètode d’arrodoniment: bankers, Arrodonir abans de sumar: true, Aplicar impostos per línia: true

{
"invoice_lines_attributes": [
{
"quantity": 3,
"price": 33.275,
"taxes_attributes": [{ "name": "VAT", "category": "S", "percent": 21 }],
"allowance_charges_attributes": [
{ "allowance_charge_indicator": "allowance", "amount": 5 },
{ "allowance_charge_indicator": "charge", "percentage": 12.777 }
]
},
{
"quantity": 7,
"price": 5.355,
"taxes_attributes": [{ "name": "VAT", "category": "S", "percent": 21 }]
}
],
"allowance_charges_attributes": [
{ "allowance_charge_indicator": "charge", "amount": 3 }
],
"currency": "EUR"
}
{
"subtotal": 148.06,
"taxes": [{ "name": "VAT 21.00%", "base": 145.06, "amount": 30.46 }],
"total": 178.52
}

Exemple 2: Usar quantitat base per a preus per lots

Section titled “Exemple 2: Usar quantitat base per a preus per lots”
{
"invoice_lines_attributes": [
{
"description": "Steel screws M6x20",
"quantity": 500, "price": 12.50, "base_quantity": 100, "unit": 1,
"taxes_attributes": [{ "name": "VAT", "category": "S", "percent": 21 }]
},
{
"description": "A4 printing paper",
"quantity": 5000, "price": 45.00, "base_quantity": 1000, "unit": 1,
"taxes_attributes": [{ "name": "VAT", "category": "S", "percent": 21 }]
}
],
"currency": "EUR"
}
{
"subtotal": 287.50,
"taxes": [{ "name": "VAT 21.00%", "base": 287.50, "amount": 60.38 }],
"total": 347.88
}