/** * Collect address subtotal * * @param Mage_Sales_Model_Order_Address $address * @return Mage_Sales_Model_Order_Address_Total_Subtotal */ public function collect(TinyBrick_OrderEdit_Model_Order_Address $address) { /** * Reset subtotal information */ $address->setSubtotal(0); $address->setBaseSubtotal(0); $address->setTotalQty(0); $address->setBaseTotalPriceIncTax(0); $address->setGrandTotal(0); $address->setBaseGrandTotal(0); $order = $address->getOrder(); /** * Process address items */ $items = $order->getOrderItems(); foreach ($items as $item) { if (!$this->_initItem($address, $item) || $item->getQtyOrdered() <= 0) { //$this->_removeItem($address, $item); } } /** * Initialize grand totals */ $address->setGrandTotal($address->getSubtotal()); $address->setBaseGrandTotal($address->getBaseSubtotal()); return $this; }
/** * Checks to see if there is a discount for the customer * @param TinyBrick_OrderEdit_Model_Order_Address $address * @return TinyBrick_OrderEdit_Model_Order_Address_Total_Discount */ public function collect(TinyBrick_OrderEdit_Model_Order_Address $address) { $order = $address->getOrder(); $eventArgs = array('website_id' => Mage::app()->getStore($order->getStoreId())->getWebsiteId(), 'customer_group_id' => $order->getCustomerGroupId(), 'coupon_code' => $order->getCouponCode()); $address->setFreeShipping(0); $totalDiscountAmount = 0; $subtotalWithDiscount = 0; $baseTotalDiscountAmount = 0; $baseSubtotalWithDiscount = 0; $items = $order->getOrderItems(); if (!count($items)) { $address->setDiscountAmount($totalDiscountAmount); $address->setSubtotalWithDiscount($subtotalWithDiscount); $address->setBaseDiscountAmount($baseTotalDiscountAmount); $address->setBaseSubtotalWithDiscount($baseSubtotalWithDiscount); return $this; } $hasDiscount = false; foreach ($items as $item) { if ($item->getNoDiscount()) { $item->setDiscountAmount(0); $item->setBaseDiscountAmount(0); $item->setRowTotalWithDiscount($item->getRowTotal()); $item->setBaseRowTotalWithDiscount($item->getRowTotal()); $subtotalWithDiscount += $item->getRowTotal(); $baseSubtotalWithDiscount += $item->getBaseRowTotal(); } else { /** * Child item discount we calculate for parent */ if ($item->getParentItemId()) { continue; } $eventArgs['item'] = $item; //Mage::dispatchEvent('quickorderedit_order_address_discount_item', $eventArgs); if ($item->getDiscountAmount() || $item->getFreeShipping()) { $hasDiscount = true; } $totalDiscountAmount += $item->getDiscountAmount(); $baseTotalDiscountAmount += $item->getDiscountAmount(); $item->setRowTotalWithDiscount($item->getRowTotal() - $item->getDiscountAmount()); $item->setBaseRowTotalWithDiscount($item->getBaseRowTotal() - $item->getDiscountAmount()); $subtotalWithDiscount += $item->getRowTotalWithDiscount(); $baseSubtotalWithDiscount += $item->getBaseRowTotalWithDiscount(); } } $order->setDiscountAmount(-$totalDiscountAmount); $order->setSubtotalWithDiscount($subtotalWithDiscount); $order->setBaseDiscountAmount(-$baseTotalDiscountAmount); $order->setBaseSubtotalWithDiscount($baseSubtotalWithDiscount); $order->setGrandTotal($order->getGrandTotal() + $order->getDiscountAmount()); $order->setBaseGrandTotal($order->getBaseGrandTotal() + $order->getBaseDiscountAmount()); return $this; }
/** * Fetch the new taxes for the address * @param TinyBrick_OrderEdit_Model_Order_Address $address * @return TinyBrick_OrderEdit_Model_Order_Address_Total_Tax */ public function fetch(TinyBrick_OrderEdit_Model_Order_Address $address) { $applied = $address->getAppliedTaxes(); $store = $address->getOrder()->getStore(); $amount = $address->getTaxAmount(); if ($amount != 0 || Mage::helper('tax')->displayZeroTax($store)) { $address->addTotal(array('code' => $this->getCode(), 'title' => Mage::helper('sales')->__('Tax'), 'full_info' => $applied ? $applied : array(), 'value' => $amount)); } return $this; }
/** * Fetch subtotal for order * @param TinyBrick_OrderEdit_Model_Order_Address $address * @return TinyBrick_OrderEdit_Model_Order_Address_Total_Shipping */ public function fetch(TinyBrick_OrderEdit_Model_Order_Address $address) { $amount = $address->getOrder()->getShippingAmount(); if ($amount != 0 || $address->getOrder()->getShippingDescription()) { $address->getOrder()->addTotal(array('code' => $this->getCode(), 'title' => Mage::helper('sales')->__('Shipping & Handling') . ' (' . $address->getOrder()->getShippingDescription() . ')', 'value' => $address->getOrder()->getShippingAmount())); } return $this; }
/** * Declare address model * * @param Mage_Sales_Model_Quote_Address $address * @return Mage_Sales_Model_Quote_Address_Item */ public function setAddress(TinyBrick_OrderEdit_Model_Order_Address $address) { $this->_address = $address; $this->_order = $address->getOrder(); return $this; }