हाँ, यह एक दर्द है कि Magento आदेश रिकॉर्ड में आसपास किसी भी इतिहास को नहीं छोड़ता है जब आप कैसे है कि आधार मूल्य की गणना की गई थी के संबंध में बिक्री मूल्य का उपयोग कर की तरह है।
सौभाग्य से यह खुला स्रोत है, इसलिए यदि आप चाहें तो इसे पैच कर सकते हैं।
मैंने हाल ही में एक पर्यवेक्षक लिखा है जो ऑर्डर रिकॉर्ड लोड होने पर आग लगती है, इस मुद्दे को हल करने के लिए। यह उत्पाद की वर्तमान पूर्ण-खुदरा कीमत के साथ base_price
लाइन को पार-संदर्भित करता है। यदि कोई मेल नहीं खाता है, तो यह जानकारी को किसी भी बाहरी स्क्रिप्ट पर सुनाने में मदद के लिए ऑर्डर आइटम में कुछ फ़ील्ड जोड़ता है (हमारे मामले में, एक कस्टम ऑर्डर पूर्ति स्क्रिप्ट जो Magento के SOAP API का उपयोग करके एसएपी को ऑर्डर देती है)।
यहाँ मूल विचार है - app/code/local/YourCo/SalePricing
में एक मॉड्यूल बनाने के लिए और जब Magento बताने के लिए अपने पर्यवेक्षक को चलाने के लिए app/code/local/YourCo/SalePricing/Model/Promo/Observer.php
<?php
class YourCo_SalePricing_Model_Promo_Observer
{
public function __construct()
{
}
// tag order items that have a sale-price
// with original retail price and total sale discount for this line
public function report_sale_pricing($observer)
{
$event = $observer->getEvent();
$order = $event->getOrder();
$items = $order->getAllItems();
foreach ($items as $item) {
// heads up, you may want to do this for other types as well...
if ($item->getProductType() == Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE) {
$regular_price = $this->_lookupFullRetail($item,$order->getStoreId());
$sale_price = $item->getBasePrice();
if ($regular_price - $sale_price > 0.005) {
$qty = $item->getQtyOrdered();
$total_sale_discount = ($regular_price * $qty) - ($sale_price * $qty);
$item->setFullRetailPrice((string)$regular_price);
$item->setSaleDiscount((string)$total_sale_discount);
}
}
}
}
private function _lookupFullRetail(&$item,$store_id)
{
$mpid = $item->getProductId();
$p = Mage::getModel('catalog/product')->setStoreId($store_id)->load($mpid);
return $p->getPrice();
}
}
आपका मॉड्यूल के etc/config.xml
जरूरतों में एक पर्यवेक्षक वर्ग की स्थापना:
<?xml version="1.0"?>
<config>
<global>
<models>
<yourco_salepricing>
<class>YourCo_SalePricing_Model</class>
</yourco_salepricing>
</models>
<events>
<sales_order_load_after>
<observers>
<yourco_salepricing>
<type>singleton</type>
<class>YourCo_SalePricing_Model_Promo_Observer</class>
<method>report_sale_pricing</method>
</yourco_salepricing>
</observers>
</sales_order_load_after>
</events>
</global>
</config>
app/etc/modules/...
में अपना नया मॉड्यूल सक्रिय करना सुनिश्चित करें और कॉन्फ़िगर कैच साफ़ करें ई।
अब, जब आप ऑर्डर लोड करते हैं, तो आप प्रत्येक आइटम पर लूप कर सकते हैं और $item->getFullRetailPrice() --
की जांच कर सकते हैं, अगर आपको पता है कि आइटम बिक्री पर था (ठीक है, या तो ऑर्डर देने के बाद या कीमत बढ़ गई है) । आपको अभी भी पता नहीं क्यों, यानी कौन सा बिक्री मूल्य नियम लागू था, लेकिन हमारे आवेदन के लिए हमने वास्तव में परवाह नहीं की थी, और उस जानकारी को आदेश के साथ सहेजने के लिए एक बहुत कठिन मोड होगा।
आप ऑर्डर पर कैटलॉग कीमतों को लागू नहीं कर सकते हैं। ये नियम मूल्य सूचकांक द्वारा कैटलॉग पर लागू होते हैं। उद्धरण इस अनुक्रमित मूल्य को उत्पाद मूल्य के रूप में प्राप्त करता है। – Zyava