Récupérer la base HT lors du calcul des montants des différents taux de TVA
Bonjour,
Grâce au filtre |commande_totalise_taxes
, nous pouvons donc calculer les montants pour chaque taux de TVA des différents objets de la commande.
Mais, il pourrait être intéressant, pour affichage, de pouvoir également récupérer le montant HT sur lequel s'applique chaque taux de TVA.
Cela se joue donc dans la fonction filtre_commande_totalise_taxes_dist($prix_ht = null, $prix_ttc = null, $taxe = null)
(https://git.spip.net/spip-contrib-extensions/commandes/src/commit/9129ba650f434e3cdf13b6dded0be672398ba09a/commandes_fonctions.php#L76).
J'ai dans un premier temps surchargé cette fonction pour faire en sorte de retourner un tableau associatif contenant et le montant de TVA et la base HT correspondante, de la sorte:
function filtre_commande_totalise_taxes($prix_ht = null, $prix_ttc = null, $taxe = null) {
static $taxes = [];
if (is_null($prix_ht) or !strlen($prix_ht)) {
// par defaut on reset le tableau mais si on a a besoin plusieurs fois,
$return = $taxes;
// possible de le garder en passant n'importe quoi non vide en second argument
if (is_null($prix_ttc) or !strlen($prix_ttc)) {
$taxes = [];
}
return $return;
}
if (
$prix_ht
and $prix_ttc
and $prix_ht = floatval(str_replace(',', '.', $prix_ht))
and $prix_ttc = floatval(str_replace(',', '.', $prix_ttc))
and (floatval($prix_ttc) - floatval($prix_ht)) > 0.001
) {
$taux = $taxe ? (string)round(floatval($taxe) * 100, 1) : (string)round((floatval($prix_ttc) / floatval($prix_ht) - 1.0) * 100, 1);
if (!isset($taxes[$taux])) {
$taxes[$taux] = [
'ht' => 0,
'taxes' => 0,
];
}
$taxes[$taux]['ht'] += $prix_ht;
$taxes[$taux]['taxes'] += ($prix_ttc - $prix_ht);
}
return '';
}
En image, cela permet cet avant/après :
Je me demandais si nous ne pouvions pas envisager d'apporter cette évolution au plugin Commandes directement ; mais se pose la question alors de l'implémentation pour ne pas tout casser chez les utilisateurs du plugin.
À vous lire :)