Apparence
Pricing & taxe
Le pricing applique la mécanique des pipelines au prix d'un produit et aux totaux d'un panier. Cette page en donne le détail : décomposition du prix, taxe et devise, commande figée.
Le prix d'un produit
Un prix traverse une chaîne de PriceModifier (voir pipelines), sur un PriceContext :
php
final class PriceContext
{
public function __construct(
public readonly Product $product,
public readonly int $quantity,
public readonly ?Authenticatable $customer,
public Money $price, // prix HT — muté en chaîne
public array $trace = [], // audit des transformations
) {}
}Les maillons raisonnent en HT. Le résultat est un objet Price décomposé :
php
$price->exclTax(); // HT (Money), après modifiers
$price->inclTax(); // TTC (Money)
$price->tax(); // montant de taxe seulTaxe & devise : maillons cœur de fin de chaîne
La taxe est résolue après tous les modifiers, par le TaxResolver (remplaçable), à partir de la règle de taxe du produit et de la zone fiscale courante (CurrentAreaResolver). Vous n'appliquez jamais la taxe dans un modifier.
Tout est calculé en Brick\Money\Money — exact, arrondi à l'échelle de la devise aux frontières d'affichage, jamais en float.
Les totaux
Le panier affiche des lignes contribuées par des TotalsModifier (livraison, remise…), agrégées en Money : ligne « produits » + lignes contribuées = ligne « total ». Voir pipelines — les totaux.
Panier vivant vs commande figée
- Panier : les modifiers s'exécutent, les prix sont recalculés en direct.
- Commande : au placement, les lignes sont figées dans
price_components(JSON, en devise de référence et du client). Une commande se relit sans aucun package installé — supprimer un transporteur après coup ne change pas une commande passée.
Points d'extension de ce domaine
| Je veux… | Point d'extension |
|---|---|
| modifier un prix | PriceModifier + PriceModifierRegistry |
| ajouter une ligne de totaux | TotalsModifier + TotalsModifierRegistry |
| changer le calcul de taxe | TaxResolver |
| changer la zone fiscale courante | CurrentAreaResolver |
| réordonner les maillons | config/pricing.php |
Voir aussi
- Les pipelines — la mécanique et les exemples complets.
- Les résolveurs — taxe, zone, devise.