Permettre un ordre négatif, avec un total général inférieur à 0

15

Un de nos clients a demandé à son personnel chargé de la saisie des commandes de soumettre des commandes avec un total de commandes négatif. L'application autorise déjà les éléments de campagne négatifs, ce qui fonctionne bien tant que le reste de la commande génère un total général positif.

Il semble que Magento s'efforce de ne pas avoir un total de commandes négatif. L'examen des totaux collectés montre que Magento appliquera une carte-cadeau pour le montant inverse. Si je désactive la carte-cadeau, elle applique le crédit de magasin (même si le crédit n'existe pas). Je soupçonne que ce n'est qu'une bizarrerie (et peut-être un hareng rouge).

Quelqu'un peut-il aider à déterminer où Magento force 0 comme son montant total maximum et comment nous pourrions répondre à la demande? Je ne veux pas simplement forcer le total, car je veux que Magento calcule tout normalement, juste avec l'allocation d'un Grand Total négatif.

L'esprit de la question est la faisabilité technique, mais une fois que cela est abordé, je suis intéressé par tous les «accrochages» ou pensées qui pourraient dissuader l'utilisation de totaux d'ordre négatif d'un point de vue non technique.

Morgon
la source
1
Peux-tu nous dire pourquoi tu veux ça?
benmarks
@benmarks - Comme je sais que vous le savez, parfois «c'est ce que le client veut» l'emporte sur la logique et la raison. Ils veulent donner à leurs vendeurs (en utilisant un formulaire de commande personnalisé) une liberté totale sur la création de commandes et les prix (ce qui fonctionne déjà, même pour les éléments de campagne à prix négatif - tant que le total de la commande est supérieur à 0. Cela prend simplement un pas de plus pour permettre à l'ensemble de la commande d'être négatif si vous le souhaitez). Merci pour toute l'aide que vous pourrez fournir!
Morgon
Pouvez-vous donner un exemple concret où cela serait utile?
James Anelay - TheExtensionLab
Comment allez-vous gérer les notes de crédit?
Maikel Koek
@MaikelKoek - Le client ne fait pas vraiment de notes de crédit comme c'est le cas, donc je ne pense pas que cela aurait un impact.
Morgon

Réponses:

4

Cela semble être une décision très risquée. Si vous l'avez implémenté, vous devrez remplacer une trop grande partie du noyau, ce qui rend le site extrêmement difficile à mettre à niveau et à prendre en charge.

Effectuer une recherche dans le noyau Magento pour les max(0résultats de retour dans les domaines suivants:

  • Enterprise_CustomerBalance_Model_Observer::creditmemoDataImport()
  • Enterprise_GiftCard_Model_Catalog_Product_Price_Giftcard::getFinalPrice()
  • Mage_Bundle_Model_Product_Price::getFinalPrice()
  • Mage_Catalog_Model_Product_Type_Price::getFinalPrice()
  • Mage_Catalog_Model_Product_Type_Configurable_Price::getFinalPrice()
  • Mage_Catalog_Model_Product_Type_Grouped_Price::getFinalPrice()
  • Mage_CatalogRule_Helper_Data::calcPriceRule()
  • Mage_Downloadable_Model_Product_Price::getFinalPrice()
  • Mage_SalesRule_Model_Validator::process()
  • Mage_Tax_Block_Sales_Order_Tax::_initSubtotal()
  • Mage_Tax_Model_Sales_Total_Quote_Tax (multiple uses)

Et bien d'autres dans les modèles dans les zones adminhtml et frontend. Vous devrez peut-être réécrire bon nombre de ces modèles pour obtenir la fonctionnalité souhaitée.

Vous pouvez envisager les alternatives ci-dessous:

  • Donnez aux vendeurs les connexions à la zone d'administration de Magento et permettez-leur de créer des commandes à partir de là - contrôle total sur le prix des articles, etc.
  • Utilisez le crédit en magasin si le client doit récupérer le crédit (je suppose que c'est à cela que servirait une commande avec un total négatif?)

Si vous fournissez un scénario dans lequel une commande se terminerait par un total négatif, ainsi que le raisonnement qui la sous-tend, la communauté sera en mesure de vous donner une meilleure réponse. Il est difficile de résoudre un problème comme celui-ci tant que vous ne comprenez pas la valeur commerciale derrière la décision.

jharrison.au
la source
Bon ans. J'aime ça :)
Rama Chandran M