2016-04-01 2 views
0

Я создаю расширение, которое экспортирует информацию о заказе в файл CSV. Я смог успешно получить доступ к информации о заказах и деталях для экспорта, но у меня возникла проблема с доступом к данным продвижения.Magento: Доступ к данным каталога и правила корзины

Я ищу, чтобы включить данные о продвижении (правила каталога и корзины), которые применяются к этому заказу в экспорте. В частности, я пытаюсь получить доступ к идентификаторам правил, именам, описаниям, кодам и применяемой сумме доллара для списка конкретных заказов.

Как получить доступ к данным продвижения в моем расширении?

Если это помогает, вот как я в настоящее время доступа к данным заказа/записи в моем продлении (квалификационный по дате кадра):

$rows = array(); // array to hold data that will be exported to CSV 
$read = Mage::getSingleton('core/resource')->getConnection('core_read'); 
$orders = $read->query("SELECT entity_id FROM sales_flat_order WHERE created_at >= '$from' AND created_at < '$today'"); 
while ($row = $orders->fetch()) { 
    $order = Mage::getModel('sales/order')->load($row['entity_id']); 
    $order_items = $read->query("SELECT item_id FROM sales_flat_order_item WHERE order_id={$order->getId()}"); 
    while ($item_row = $order_items->fetch()) { 
     $item = Mage::getModel('sales/order_item')->load($item_row['item_id']); 
     $rows[] = array(
     $order->getRealOrderId(), 
     $order->getCreatedAt(), 
     $item->getSky(), 
     $item->getQtyOrdered(), 
     .....); 
    ); // end item loop 
); // end order loop  

Заранее спасибо за любую помощь вы можете предоставить,

-Mark

ответ

0

Я считаю, что на этот вопрос был дан ответ на другой вопрос в прошлом. Вы можете найти ссылку на оригинальный вопрос и ответ здесь Magento - get price rules from order

Из этого ответа, хотя ..

//The order I want to check 
$order_id = 859; 

//Get the list of items for your order 
$items = Mage::getModel('sales/order_item') 
->getCollection() 
->addFilter('order_id',array('eq'=>$order_id)); 

//loop through each item 
foreach($items as $item){ 

    //if the item has not had a rule applied to it skip it 
    if($item->getAppliedRuleIds() == '')continue; 

    /* 
    * I cant remember in the database they might be comma separated or space if multiple rules were applied 
    * the getAppliedRuleIds() function is the one you want 
    */ 
    foreach(explode(",",$item->getAppliedRuleIds()) as $ruleID){   

     //Load the rule object 
     $rule = Mage::getModel('catalogrule/rule')->load($ruleID); 

     // Throw out some information like the rule name what product it was applied to 

     echo "<p>".$item->getSku()." had rule ".$rule->getName()."(".$item->getAppliedRuleIds().") applied </p>"; 
    } 

} 
Смежные вопросы