Jump to content

Modifier le prix d'un produit


Recommended Posts

Salut !

 

Je souhaite modifier le prix des produit en fonction de divers critères complexes, d'un manière plus globale qu'avec des déclinaisons, par exemple.

 

Je n'ai pas de problèmes pour mettre en place l'algorithme permettant de calculer le prix, mais par contre je ne vois pas trop où intervenir pour modifier le prix !

 

Faut-il surcharger la méthode Product :: getPriceStatic et/ou Product ::priceCalculation ? Les overrides fonctionnent-ils avec les méthodes statiques ?

 

Bien évidemment, il faut que cette modification du prix soit visible sur le front, dans la commande, dans les factures, etc...

 

Merci pour vos lumières.

Link to comment
Share on other sites

Bon, je me réponds à moi-même...

 

On peut donc étendre la classe ProductCore et surcharger la méthode statique getPriceStatic() et ses... 14 paramètres (!!!). Elle est elle-même appelée par la méthode d'instance getPrice(), donc c'est central.

 

Par exemple, pour mettre tout à 1€ :

 

class Product extends ProductCore {

public static function getPriceStatic(
 $id_product,
 $usetax = true,
 $id_product_attribute = NULL,
 $decimals = 6,
 $divisor = NULL,
 $only_reduc = false,
 $usereduc = true,
 $quantity = 1,
 $forceAssociatedTax = false,
 $id_customer = NULL,
 $id_cart = NULL,
 $id_address = NULL,
 &$specificPriceOutput = NULL,
 $with_ecotax = TRUE) {

    return ((float) 1.0);

}

}

 

 

Cependant, en traçant les appels de cette méthode avec de simples echo, on voit que (sur les listes de produits, du moins) la méthode est appelée plusieurs fois, avec les paramètres qui changent :

 

id_product = 5643
usetax =
id_product_attribute =
decimals = 6
divisor =
only_reduc =
usereduc = 1
quantity = 1
forceAssociatedTax =
---
id_product = 5643
usetax = 1
id_product_attribute =
decimals = 2
divisor =
only_reduc =
usereduc = 1
quantity = 1
forceAssociatedTax =
---
id_product = 5643
usetax = 1
id_product_attribute =
decimals = 6
divisor =
only_reduc =
usereduc =
quantity = 1
forceAssociatedTax =
---
id_product = 5643
usetax =
id_product_attribute = 0
decimals = 6
divisor =
only_reduc = 1
usereduc = 1
quantity = 1
forceAssociatedTax = 1

 

(Vide signifie false ou null, comme vous le savez)

 

On voit donc que la méthode est appellée 4 fois...

 

On comprend bien à quoi sert le paramètre $usetax (prix TTC ou HT), mais par contre on a du mal à comprendre la signification des paramètres $only_reduc, $usereduc et $forceAssociatedTax...

 

De plus, si on met tous les produits à 1€ comme dans l'exemple ci-dessus, on voit "PRIX REDUIT" sur la page catégorie, sur la page produit c'est l'ancien prix qui est affiché, mais ça s'ajoute bien à 1€ dans le panier...

 

Bref y a-t-il quelqu'un pour démêmer ce plat de spaghettis ? ;-)

Link to comment
Share on other sites

  • 2 weeks later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...
tracking pixeltracking pixel