/** * Get customer balance model using sales entity * * @param Mage_Sales_Model_Quote|Mage_Sales_Model_Order $salesEntity * * @return Enterprise_CustomerBalance_Model_Balance|bool */ public function getCustomerBalanceModelFromSalesEntity($salesEntity) { if ($salesEntity instanceof Mage_Sales_Model_Order) { $customerId = $salesEntity->getCustomerId(); $quote = $salesEntity->getQuote(); } elseif ($salesEntity instanceof Mage_Sales_Model_Quote) { $customerId = $salesEntity->getCustomer()->getId(); $quote = $salesEntity; } else { return false; } if (!$customerId) { return false; } $customerBalanceModel = Mage::getModel('enterprise_customerbalance/balance')->setCustomerId($customerId)->setWebsiteId(Mage::app()->getStore($salesEntity->getStoreId())->getWebsiteId())->loadByCustomer(); if ($quote->getBaseCustomerBalanceVirtualAmount() > 0) { $customerBalanceModel->setAmount($customerBalanceModel->getAmount() + $quote->getBaseCustomerBalanceVirtualAmount()); } return $customerBalanceModel; }
/** * Retrieve storeId from object * * @param OnePica_AvaTax_Model_Sales_Quote_Address|Mage_Sales_Model_Order $object * @return int */ protected function _getStoreIdByObject($object) { if ($object instanceof OnePica_AvaTax_Model_Sales_Quote_Address) { return $object->getQuote()->getStoreId(); } return $object->getStoreId(); }
/** * get shipping address with the highest subtotal amount. * * @param Mage_Sales_Model_Order * @return Mage_Sales_Model_Order_Address|null */ protected function getPrimaryShippingAddress(Mage_Sales_Model_Order $order) { $collection = $order->getAddressesCollection(); $address = $collection->getItemByColumnValue('quote_address_id', $this->getQuotePrimaryShippingAddressId($order->getQuote())); return $address; }
/** * @param Mage_Sales_Model_Order $order * * @return array */ public function buildPlanItemsForSubscription($order) { $list = []; $orderItems = $order->getItemsCollection(); $orderSubtotal = $order->getQuote()->getSubtotal(); $orderDiscount = $order->getDiscountAmount() * -1; $discount = null; if (!empty($orderDiscount)) { $discountPercentage = $orderDiscount * 100 / $orderSubtotal; $discountPercentage = number_format(floor($discountPercentage * 100) / 100, 2); $discount = [['discount_type' => 'percentage', 'percentage' => $discountPercentage]]; } foreach ($orderItems as $item) { $product = Mage::getModel('catalog/product')->load($item->getProductId()); if ($product->getTypeID() !== 'subscription') { Mage::throwException("O produto {$item->getName()} não é uma assinatura."); return false; } $productVindiId = $this->findOrCreateProduct(array('sku' => $item->getSku(), 'name' => $item->getName())); for ($i = 1; $i <= $item->getQtyOrdered(); $i++) { $list[] = ['product_id' => $productVindiId, 'pricing_schema' => ['price' => $item->getPrice()], 'discounts' => $discount]; } } // Create product for shipping $productVindiId = $this->findOrCreateProduct(array('sku' => 'frete', 'name' => 'Frete')); $list[] = ['product_id' => $productVindiId, 'pricing_schema' => ['price' => $order->getShippingAmount()]]; return $list; }
/** * Get tax class id * * @param OnePica_AvaTax_Model_Sales_Quote_Address|Mage_Sales_Model_Order $object * @return int */ protected function _getTaxClassId($object) { if ($object instanceof OnePica_AvaTax_Model_Sales_Quote_Address) { return $object->getQuote()->getCustomerTaxClassId(); } return Mage::getSingleton('customer/group')->load($object->getCustomerGroupId())->getTaxClassId(); }