2016-04-01 3 views
0

Ich erstelle eine Erweiterung, die ausgefüllte Bestellinformationen in eine CSV-Datei exportiert. Ich konnte erfolgreich auf Bestell- und Artikelinformationen für den Export zugreifen, habe jedoch ein Problem beim Zugriff auf Angebotsdaten.Magento: Zugriff auf Katalog- und Einkaufswagenregeldaten

Ich möchte die Werbungsdaten (Katalog- und Einkaufswagenregeln), die auf diesen Auftrag angewendet werden, in den Export einschließen. Insbesondere versuche ich, auf die Regel-IDs, Namen, Beschreibungen, Codes und den angewendeten Dollarbetrag für eine Liste spezifischer Aufträge zuzugreifen.

Wie würde ich auf die Angebotsdaten in meiner Erweiterung zugreifen?

Wenn es hilft, ist hier, wie ich zur Zeit Auftrag/Artikeldaten in meiner Erweiterung (Qualifikation nach Datum Rahmen) am Zugriff auf:

$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  

Vielen Dank im Voraus für jede Hilfe, die Sie zur Verfügung stellen können,

-Mark

Antwort

0

Ich glaube, dass diese Frage auf eine andere Frage in der Vergangenheit beantwortet wurde. Sie können den Link auf die ursprüngliche Frage finden und obwohl hier Magento - get price rules from order

Von dieser Antwort ..

//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>"; 
    } 

}