Evet, o taban fiyat hesaplanması ile ilgili olarak satış fiyatlandırma kullandığınızda Magento sipariş kaydında etrafında herhangi geçmişini bırakmaz tür bir ağrı var.
Neyse ki açık kaynak kodludur, bu nedenle isterseniz bunu yamalayabilirsiniz.
Geçenlerde, sipariş kaydı yüklendiğinde, bu sorunu çözmek için ateşleyen bir gözlemci yazdım. Ürünün mevcut perakende satış fiyatı ile base_price
hattını çapraz referanslar. Bir uyumsuzluk varsa, bu bilgiyi dinleyen herhangi bir harici komut dosyasına (bu durumda, siparişleri Magento'nun SOAP API'sini kullanarak SAP'ye geçiren özel bir sipariş yerine getirme betiği) göstermeye yardımcı olmak için sipariş öğesine bir çift alan ekler.
<?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/code/local/YourCo/SalePricing
bir modül yapmak ve gözlemci ne zaman çalıştırılacağını magento anlatmak için 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();
}
}
Kişisel modülün etc/config.xml
ihtiyaçlarını gözlemci sınıfını ayarlamak -
İşte temel fikir
Yeni modülünüzü app/etc/modules/...
içinde etkinleştirdiğinizden emin olun ve yapılandırma önbelleğini temizleyin. e.
Şimdi, siparişi yüklediğinizde, her bir öğenin üstesinden gelebilir ve eğer varsa $item->getFullRetailPrice() --
için kontrol edebilirsiniz, öğenin satışta olduğunu biliyorsunuz (siparişin verilişinden bu yana ya da fiyat yükseldi) . Hala nedenini, yani hangi satış fiyatı kuralının geçerli olduğunu bilmiyorsunuz, fakat bizim uygulamamız için gerçekten önemsemedik ve bu bilgiyi siparişle birlikte saklamak çok daha zor bir mod olurdu. gerçi size yardımcı olabilir ne
Katalog fiyatlarının hiçbir şekilde sipariş üzerine uygulanmasını sağlayamıyorsunuz. Bu kurallar fiyat endeksleyici tarafından kataloga uygulanır. Alıntı bu endekslenmiş fiyatı ürün fiyatı olarak alır. – Zyava