Получить промежуточный итог для каждого значения налога в Magento

#php #magento #magento-1.4

#php #magento #magento-1.4

Вопрос:

Я настраиваю код отслеживания для партнерских программ. Теперь мы назначаем разные комиссии. Один для продуктов питания и один для непродовольственных товаров. У нас также есть налоговые классы (Food, Non Food).

Мне нужно отобразить промежуточный итог для продуктов питания и промежуточный итог для непродовольственных товаров.

Я использую следующий код, но это не работает:

 <?php
    //Get Order Number amp; Order Total
    $order = Mage::getModel('sales/order')->loadByIncrementId(Mage::getSingleton('checkout/session')->getLastRealOrderId());
    $grandamount = number_format($order->getGrandTotal(),2);
    $coupon = $order->getCouponCode();
    $amountfood = number_format($order->getSubtotal('Food'), 2);
        $amountnonfood = number_format($order->getSubtotal('Non_Food'), 2);
    $discount = number_format(0.00 - $order->getDiscountAmount(), 2);
?>
  

Если я использую $amountfood = number_format($order->getSubtotal(), 2); , это работает для промежуточного итога, включающего как продовольственные, так и непродовольственные ценности.

Не мог бы кто-нибудь, пожалуйста, помочь мне с этим.

Спасибо, Дэниел

Ответ №1:

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

 $order = Mage::getModel('sales/order')->load($order_id);
$items = $order->getAllItems();
$subtotals = array();
foreach ($items as $_item) {
    if (array_key_exists($subtotals[$_item->getTaxClassId()])) {
        $subtotals[$_item->getTaxClassId()]  = $_item->getRowTotal();
    } else {
        $subtotals[$_item->getTaxClassId()] = $_item->getRowTotal();
    }
}
  

не уверен, что «если» все же необходимо.
надеюсь, это поможет