/** * Initialize creditmemo state based on requested parameters * * @param Mage_Sales_Model_Order_Creditmemo $creditmemo * @param array $data */ protected function _initCreditmemoData($creditmemo, $data) { if (isset($data['shipping_amount'])) { $creditmemo->setBaseShippingAmount((double) $data['shipping_amount']); } if (isset($data['adjustment_positive'])) { $creditmemo->setAdjustmentPositive($data['adjustment_positive']); } if (isset($data['adjustment_negative'])) { $creditmemo->setAdjustmentNegative($data['adjustment_negative']); } }
/** * The grand total is explicitly set from the totalCredit value in the payload * Compute any adjustments necessary to make the credit memo total up properly * * @param Mage_Sales_Model_Order_Creditmemo $creditmemo * @return Mage_Sales_Model_Order_Creditmemo */ protected function _fixupTotals(Mage_Sales_Model_Order_Creditmemo $creditmemo) { $creditmemo->setBaseShippingAmount(0.0)->setShippingAmount(0.0)->setBaseTaxAmount(0.0)->setTaxAmount(0.0); // totalCredit is passed as a negative number but the credit memo uses // positive numbers for refunds so use abs() to get rid of negative numbers $grandTotal = abs($this->_payload->getTotalCredit()); $subTotal = $creditmemo->getBaseSubtotal(); $creditmemo->setBaseGrandTotal($grandTotal); $creditmemo->setGrandTotal($grandTotal); if ($grandTotal < $subTotal) { $creditmemo->setAdjustmentNegative($subTotal - $grandTotal); } elseif ($grandTotal > $subTotal) { $creditmemo->setAdjustmentPositive($grandTotal - $subTotal); } return $creditmemo; }