diff --git a/app/code/Mage/Checkout/Model/Cart/Api.php b/app/code/Mage/Checkout/Model/Cart/Api.php index 7eb79c58f64e6..252171462fa01 100644 --- a/app/code/Mage/Checkout/Model/Cart/Api.php +++ b/app/code/Mage/Checkout/Model/Cart/Api.php @@ -74,8 +74,10 @@ public function create($store = null) $quote = Mage::getModel('Mage_Sales_Model_Quote'); $quote->setStoreId($storeId) ->setIsActive(false) - ->setIsMultiShipping(false) - ->save(); + ->setIsMultiShipping(false); + $quote->getBillingAddress(); + $quote->getShippingAddress(); + $quote->save(); } catch (Mage_Core_Exception $e) { $this->_fault('create_quote_fault', $e->getMessage()); } diff --git a/app/code/Mage/Sales/Model/Order/Creditmemo/Item.php b/app/code/Mage/Sales/Model/Order/Creditmemo/Item.php index c871d04b0bde1..b95b47f94da18 100644 --- a/app/code/Mage/Sales/Model/Order/Creditmemo/Item.php +++ b/app/code/Mage/Sales/Model/Order/Creditmemo/Item.php @@ -249,7 +249,7 @@ public function calcRowTotal() $rowTotalInclTax = $orderItem->getRowTotalInclTax(); $baseRowTotalInclTax = $orderItem->getBaseRowTotalInclTax(); - if (!$this->isLast()) { + if (!$this->isLast() && $orderItemQtyInvoiced > 0) { $availableQty = $orderItemQtyInvoiced - $orderItem->getQtyRefunded(); $rowTotal = $creditmemo->roundPrice($rowTotal / $availableQty * $this->getQty()); $baseRowTotal = $creditmemo->roundPrice($baseRowTotal / $availableQty * $this->getQty(), 'base'); diff --git a/app/code/Mage/Sales/Model/Order/Creditmemo/Total/Tax.php b/app/code/Mage/Sales/Model/Order/Creditmemo/Total/Tax.php index 8b0925c73cb13..ba13b109f3190 100644 --- a/app/code/Mage/Sales/Model/Order/Creditmemo/Total/Tax.php +++ b/app/code/Mage/Sales/Model/Order/Creditmemo/Total/Tax.php @@ -57,7 +57,7 @@ public function collect(Mage_Sales_Model_Order_Creditmemo $creditmemo) $baseTax = $baseOrderItemTax - $orderItem->getTaxRefunded(); $hiddenTax = $orderItem->getHiddenTaxAmount() - $orderItem->getHiddenTaxRefunded(); $baseHiddenTax = $orderItem->getBaseHiddenTaxAmount() - $orderItem->getBaseHiddenTaxRefunded(); - if (!$item->isLast()) { + if (!$item->isLast() && $orderItemQty > 0) { $availableQty = $orderItemQty - $orderItem->getQtyRefunded(); $tax = $creditmemo->roundPrice($tax / $availableQty * $item->getQty()); $baseTax = $creditmemo->roundPrice($baseTax / $availableQty * $item->getQty(), 'base');