Le flag price

Un module de type PRODUTS, contenant le FLAG PRICE, aura la capacité de modifier le prix d’un produit.

Ce flag peut intervenirà différents niveaux.

Le flag price , coté public

Le flag coté public , intervient dans le calcul du prix, soit dans la class price.

  • Dans le panier, il aura pour objectif de prendre en compte la quantité , et ainsi, par exemple, inter-agir sur un prix par quantité.
  • Dans la class price, qui génère l’affichage de tous les produits, il interviendra pour majorer ou minorer un prix sur une quantité.

C’est la méthode ADJUST_PRICE, qui prend en charge la modification d’un prix dans le module.

Le tableau fourni lors de la demande de mise à jour du prix par un module contenant le FLAG PRICE, se compose comme suit :

array(                                    ‘products_id’
‘final_price_ht’
‘final_price_ttc’
‘final_sprice_ht’
‘final_sprice_ttc’
‘total_line
‘total_line_ttc
‘products_quantity’
);

Il est ainsi possible de modifier certaine valeur du tableau, qui sera ensuite utilisée pour gérer le prix d’un produit. Note : les tot ligne ht et ttc sont recalculé , donc si le module modifie l’un des prix les totaux seront mise à jour.

MODIFICATION DU FORMAT DE SORTIE DU PRIX

Le format de sortie du prix, est défini en modèle dans la CLASS PRICE, toutefois, pour certain module il peut être intéressant de modifier l’affichage de sortie. Dans notre exemple, nous prendrons en compte le fait de l’écotaxe, qui apparaît en sus du prix du produit, Notre affichage de prix devra donc ajouter une mention « Dont écotaxe xxx » dans l’indication du prix d’un produit.

Pour effectuer cette opération, nous utiliserons la méthode DEFINE_ONEMODELE de la class price. Il s’agit d’une méthodestatic, nous pourrons donc l’utiliser comme suit :

price::define_OneModele($product_array[‘products_id’],'<span class= »price »>%pprice</span><br /><span class= »ecotax »>Dont ecotaxe: ‘.(float)$price->view_price_with_tax($res->price_ecotax[‘ecotax_value’], $res->price_ecotax[‘ecotax_tax_class_id’]).'</span>’,’price_model’,’html’);

Cette méthode, modifie le format de sortie du prix, chaque produit qui est pris en charge par écotaxe, modifiera ainsi sont format. Pour les autres produits, l’affichage reste inchangé.

Note: nous aurions pu utiliser la méthode DEFINE_MODELE, de la class price, pour remplacer le modèle pour tous les produits.

Utilisation avec class order / order_total

Lors de la modification des prix, il peut être nécessaire/utile d’ajouter un module order_total , pour afficher dans la liste des totaux, une précision particulière pour ces modifications.

Ex : dans le cas de l’utilisation de l’extension ecotaxe. Ce module ajoute au produit un coût associé à une taxe. Il est donc nécessaire d’ajouter une  taxe, dans la liste des totaux.

Dans ce cas, nous utilisons une intégration forte entre le module et son module de order_total. Un produit ne peut appartenir à plusieurs taxes (non cumulatives) ;

Aussi dans notre cas, il est nécessaire de calculer la taxe sur la cote part écotaxe du produit, puis d’appliquer la taxe à cette valeur.

Ce calcul doit être stocké dans une variable statique publique dans la class.

class ecotaxe
extends AbstractProduct
implements InterfaceModule {
/**
var de mise en cache des ajustements de prix
Utilisé par les ot_xxx pour les sous- totaux
@p array
*/
public static $products_cache=array();

Cette variable sera utilisée par le module ot_ecotaxe :

class ot_ecotaxe
implements InterfaceModule, InterfaceAcaOrderTotal{
….
foreach($order->products as $prdct){
$value += (isset(ecotaxe::$products_cache[$prdct[‘id’]])? ecotaxe::$products_cache[$prdct[‘id’]][‘tax’]  : 0);
$txt = écotaxe::$products_cache[$prdct[‘id’]][‘tax_description’];
}
..

Dans notre exemple, le module liste les éléments de la commande, et récupère dans son module joint les détails des coûts et taxes associés.

Le flag price côte privé Backoffice

L’interaction du flag côté privé ne modifie que la structure du formulaire d’édition d’un produit. L’espace de prix sera modifié, afin de permettre de mettre à jour les informations spécifiques au module.

C’est la méthode DISPLAY_INLINE dans les modules aca qui est appelée pour prendre en charge la prise en charge du module.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *