/** * @param Mage_Sales_Model_Abstract $itemContainer * @return array */ public function extractAdditionalParams(Mage_Sales_Model_Abstract $itemContainer = null) { $invoice = null; if ($itemContainer instanceof Mage_Sales_Model_Order_Invoice && $itemContainer) { $invoice = $itemContainer; } else { if ($itemContainer instanceof Mage_Sales_Block_Order_Creditmemo && $itemContainer) { $invoice = Mage::getModel('sales/order_invoice')->load($itemContainer->getInvoiceId()); } } if ($invoice == null) { // if invoice is not set we load id hard from the request params $invoice = $this->getRefundHelper()->getInvoiceFromCreditMemoRequest(); } $this->creditmemo = $this->getRefundHelper()->getCreditMemoFromRequest(); if ($invoice instanceof Mage_Sales_Model_Order_Invoice) { $this->extractFromCreditMemoItems($invoice); // We dont extract from discount data for the moment, because partial refunds are a problem // $this->extractFromDiscountData($invoice); $this->extractFromInvoicedShippingMethod($invoice); $this->extractFromAdjustments($invoice); // Overwrite amount to fix Magentos rounding problems (eg +1ct) $this->additionalParams['AMOUNT'] = $this->amount; } return $this->additionalParams; }