2012-06-27 68 views
2

我無法檢索訂單上使用的禮品卡代碼和金額。例如在Mage/Sales/Model/Order/Pdf/Abstract.php中,有一段代碼與Sales/Order模型一起工作。即Magento:獲取禮品卡代碼和金額

($order instanceof Mage_Sales_Model_Order) is true in the PDF example 

$order = Mage::getModel('sales/order')->load($orderID); in another example 

在該獲取打印發票PDF,總部分顯示的是使用以及使用該優惠券代碼的禮品卡。優惠券代碼可以通過$order->getCouponCode()獲得。

如何獲取$order的禮品卡代碼和金額?我試過

$order->getGiftcertCode(); 
$order->getGiftcertAmount(); 

但是這些不會返回任何東西。有任何想法嗎?

回答

3

可能有幾種方法可以做到這一點,但我沒有必要這麼做,所以僅僅通過查看Magento數據庫中的sales_flat_order表,我可以看到有很多可以使用的字段引用不同的禮品卡金額:

base_gift_cards_amount 
gift_cards_amount 
base_gift_cards_invoiced 
gift_cards_invoiced 
base_gift_cards_refunded 
gift_cards_refunded 

這些可以用下面的調用訪問:

$order->getBaseGiftCardsAmount(); 
$order->getGiftCardsAmount(); 
$order->getBaseGiftCardsInvoiced(); 
$order->getGiftCardsInvoiced(); 
$order->getBaseGiftCardsRefunded(); 
$order->getGiftCardsRefunded(); 

您要使用的一個可能是$order->getGiftCardsAmount()

爲了獲取禮品卡的詳細信息,它們作爲序列化數組存儲在上表的「gift_cards」列中。因此,要獲得該數組,調用

$cards = unserialize($order->getGiftCards()); 

的print_r $卡,你會看到這樣的內容:

Array 
(
    [0] => Array 
     (
      [i] => 1 
      [c] => {{Gift Card Code}} 
      [a] => {{Gift Card Amount}} 
      [ba] => {{Gift Card Base Amount}} 
     ) 

) 

所以

foreach ($cards as $card) { 
    echo "Code: " . $card['c'] . "\n"; 
    echo "Amount: " . $card['a'] . "\n"; 
} 

應該只是罰款。

+0

Genuis!可能指向我,我將如何計算'$ order'變量可用的方法(您列出的那些調用)?我瀏覽了網上的Magento文檔,但是我很難找到任何相關的東西。 – musicliftsme

+0

實際上這很簡單,在Magento中,任何數據「getters」或「setters」的函數名都是動態的。它們是從數據名稱開始的,通常這是數據庫中的列。例如,如果數據庫列中的數據被稱爲'gift_cards_amount',則可以調用' - > getGiftCardsAmount()',這與' - > getData(「gift_cards_amount」)相同。這就是爲什麼你不會在很多'get'和'set'相關函數中找到任何文檔。 –

+0

這真的很好知道。我在本地主機上安裝了一個社區版本來檢查數據庫(不是那裏的禮品卡的東西)以供將來參考!謝謝! – musicliftsme