public function collect(Mage_Sales_Model_Order_Creditmemo $creditmemo) { $store = $creditmemo->getStore(); $totalTax = 0; $baseTotalTax = 0; $weeeTaxAmount = 0; $baseWeeeTaxAmount = 0; foreach ($creditmemo->getAllItems() as $item) { $orderItem = $item->getOrderItem(); if ($orderItem->isDummy()) { continue; } $orderItemQty = $orderItem->getQtyOrdered(); $weeeRowDiscountAmount = $orderItem->getDiscountAppliedForWeeeTax(); $weeeDiscountAmount = $creditmemo->roundPrice($weeeRowDiscountAmount / $orderItemQty * $item->getQty(), 'regular', true); $baseWeeeRowDiscountAmount = $orderItem->getBaseDiscountAppliedForWeeeTax(); $baseWeeeDiscountAmount = $creditmemo->roundPrice($baseWeeeRowDiscountAmount / $orderItemQty * $item->getQty(), 'base', true); $weeeAmountExclTax = (Mage::helper('weee')->getWeeeTaxInclTax($item) - Mage::helper('weee')->getTotalTaxAppliedForWeeeTax($item)) * $item->getQty(); $totalTax += $weeeAmountExclTax - $weeeDiscountAmount; $baseWeeeAmountExclTax = (Mage::helper('weee')->getBaseWeeeTaxInclTax($item) - Mage::helper('weee')->getBaseTotalTaxAppliedForWeeeTax($item)) * $item->getQty(); $baseTotalTax += $baseWeeeAmountExclTax - $baseWeeeDiscountAmount; $item->setWeeeTaxAppliedRowAmount($weeeAmountExclTax); $item->setBaseWeeeTaxAppliedRowAmount($baseWeeeAmountExclTax); $weeeTaxAmount += Mage::helper('weee')->getWeeeTaxInclTax($item) * $item->getQty(); $baseWeeeTaxAmount += Mage::helper('weee')->getBaseWeeeTaxInclTax($item) * $item->getQty(); $newApplied = array(); $applied = Mage::helper('weee')->getApplied($item); foreach ($applied as $one) { $one['base_row_amount'] = $one['base_amount'] * $item->getQty(); $one['row_amount'] = $one['amount'] * $item->getQty(); $one['base_row_amount_incl_tax'] = $one['base_amount_incl_tax'] * $item->getQty(); $one['row_amount_incl_tax'] = $one['amount_incl_tax'] * $item->getQty(); $one['weee_discount'] = $weeeDiscountAmount; $one['base_weee_discount'] = $baseWeeeDiscountAmount; $newApplied[] = $one; } Mage::helper('weee')->setApplied($item, $newApplied); $item->setWeeeTaxRowDisposition($item->getWeeeTaxDisposition() * $item->getQty()); $item->setBaseWeeeTaxRowDisposition($item->getBaseWeeeTaxDisposition() * $item->getQty()); } /* * please refer the description in weee - invoice section for reasoning */ if (Mage::helper('weee')->includeInSubtotal($store)) { $creditmemo->setSubtotal($creditmemo->getSubtotal() + $totalTax); $creditmemo->setBaseSubtotal($creditmemo->getBaseSubtotal() + $baseTotalTax); } else { $creditmemo->setTaxAmount($creditmemo->getTaxAmount() + $totalTax); $creditmemo->setBaseTaxAmount($creditmemo->getBaseTaxAmount() + $baseTotalTax); } //Increment the subtotal $creditmemo->setSubtotalInclTax($creditmemo->getSubtotalInclTax() + $weeeTaxAmount); $creditmemo->setBaseSubtotalInclTax($creditmemo->getBaseSubtotalInclTax() + $baseWeeeTaxAmount); //Increment the grand total $creditmemo->setGrandTotal($creditmemo->getGrandTotal() + $totalTax); $creditmemo->setBaseGrandTotal($creditmemo->getBaseGrandTotal() + $baseTotalTax); return $this; }
public function collect(Mage_Sales_Model_Order_Creditmemo $creditmemo) { // Changed By Adam 22/09/2014 if (!Mage::helper('affiliateplus')->isAffiliateModuleEnabled()) { return $this; } $baseDiscount = 0; $discount = 0; $order = $creditmemo->getOrder(); $baseOrderDiscount = $order->getBaseAffiliateCredit(); $orderDiscount = $order->getAffiliateCredit(); if ($creditmemo->getBaseGrandTotal() < 0.0001 || $baseOrderDiscount >= 0) { return $this; } $baseInvoicedDiscount = 0; $invoicedDiscount = 0; foreach ($order->getCreditmemosCollection() as $_creditmemo) { $baseInvoicedDiscount += $_creditmemo->getBaseAffiliateCredit(); $invoicedDiscount += $_creditmemo->getAffiliateCredit(); } $baseOrderTotal = $order->getBaseSubtotalInclTax(); // - $baseOrderDiscount; $baseDiscount = $baseOrderDiscount * $creditmemo->getBaseSubtotalInclTax() / $baseOrderTotal; $discount = $orderDiscount * $creditmemo->getBaseSubtotalInclTax() / $baseOrderTotal; if ($baseDiscount < $baseOrderDiscount) { $baseDiscount = $baseOrderDiscount; $discount = $orderDiscount; } if ($baseDiscount) { $baseDiscount = Mage::app()->getStore()->roundPrice($baseDiscount); $discount = Mage::app()->getStore()->roundPrice($discount); $creditmemo->setBaseAffiliateCredit($baseDiscount); $creditmemo->setAffiliateCredit($discount); $creditmemo->setBaseGrandTotal($creditmemo->getBaseGrandTotal() + $baseDiscount); $creditmemo->setGrandTotal($creditmemo->getGrandTotal() + $discount); $creditmemo->setAllowZeroGrandTotal(true); } return $this; }
public function collect(Mage_Sales_Model_Order_Creditmemo $creditmemo) { $baseDiscount = 0; $discount = 0; $order = $creditmemo->getOrder(); $baseOrderDiscount = $order->getBaseAffiliateCredit(); $orderDiscount = $order->getAffiliateCredit(); if ($creditmemo->getBaseGrandTotal() < 0.0001 || $baseOrderDiscount >= 0) { return $this; } $baseInvoicedDiscount = 0; $invoicedDiscount = 0; foreach ($order->getCreditmemosCollection() as $_creditmemo) { $baseInvoicedDiscount += $_creditmemo->getBaseAffiliateCredit(); $invoicedDiscount += $_creditmemo->getAffiliateCredit(); } // edit by viet $baseOrderTotal = $order->getBaseSubtotalInclTax(); //- $baseOrderDiscount; $baseDiscount = $baseOrderDiscount * $creditmemo->getBaseSubtotalInclTax() / $baseOrderTotal; $discount = $orderDiscount * $creditmemo->getBaseSubtotalInclTax() / $baseOrderTotal; // end edit if ($baseDiscount < $baseOrderDiscount) { $baseDiscount = $baseOrderDiscount; $discount = $orderDiscount; } if ($baseDiscount) { $baseDiscount = Mage::app()->getStore()->roundPrice($baseDiscount); $discount = Mage::app()->getStore()->roundPrice($discount); $creditmemo->setBaseAffiliateCredit($baseDiscount); $creditmemo->setAffiliateCredit($discount); $creditmemo->setBaseGrandTotal($creditmemo->getBaseGrandTotal() + $baseDiscount); $creditmemo->setGrandTotal($creditmemo->getGrandTotal() + $discount); $creditmemo->setAllowZeroGrandTotal(true); } return $this; }