Jeden z naszych klientów poprosił o możliwość złożenia przez personel wprowadzający zamówienia zamówień o ujemnej sumie zamówień. Aplikacja już dopuszcza ujemne elementy zamówienia, które działają dobrze, o ile reszta zamówienia daje dodatnią sumę całkowitą.
Wygląda na to, że Magento bardzo stara się nie mieć ujemnej sumy zamówień. Analiza zebranych sum pokazuje, że Magento zastosuje kartę podarunkową na odwrotną kwotę. Jeśli wyłączę kartę podarunkową, dotyczy to Kredytu sklepowego (nawet jeśli kredyt nie istnieje). Podejrzewam, że to tylko dziwactwo (i prawdopodobnie czerwony śledź).
Czy ktokolwiek może pomóc wskazać, gdzie Magento wymusza 0 jako maksymalną sumę całkowitą oraz w jaki sposób możemy spełnić prośbę? Nie chcę po prostu ustawiać sumy na siłę, ponieważ chcę, aby Magento obliczał wszystko normalnie, tylko z uwzględnieniem ujemnej sumy całkowitej.
Istotą tego pytania jest techniczna wykonalność, ale kiedy to zostanie rozwiązane, jestem zainteresowany wszelkimi „gotchami” lub myślami, które mogą zniechęcić do stosowania sum ujemnych z nietechnicznego punktu widzenia.
źródło
Odpowiedzi:
To wydaje się bardzo ryzykowną decyzją. Jeśli go zaimplementowałeś, będziesz musiał zastąpić zbyt wiele rdzenia, co bardzo utrudni aktualizację i obsługę witryny.
Przeprowadzenie wyszukiwania w rdzeniu Magento w celu uzyskania
max(0
zwrotów skutkuje w następujących obszarach: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)
I wiele innych w szablonach w obszarach adminhtml i frontend. Konieczne może być przepisanie wielu z tych modeli, aby osiągnąć pożądaną funkcjonalność.
Możesz rozważyć poniższe alternatywy:
Jeśli podasz scenariusz, w którym zamówienie zakończy się ujemną sumą, a także uzasadnienie, społeczność będzie w stanie udzielić lepszej odpowiedzi. Trudno rozwiązać taki problem, dopóki nie zrozumiesz wartości biznesowej stojącej za decyzją.
źródło