public function collect(Mage_Sales_Model_Order_Invoice $invoice)
 {
     // Changed By Adam 22/09/2014
     if (!Mage::helper('affiliateplus')->isAffiliateModuleEnabled()) {
         return $this;
     }
     $baseDiscount = 0;
     $discount = 0;
     $order = $invoice->getOrder();
     $baseOrderDiscount = $order->getBaseAffiliateCredit();
     $orderDiscount = $order->getAffiliateCredit();
     if ($invoice->getBaseGrandTotal() < 0.0001 || $baseOrderDiscount >= 0) {
         return $this;
     }
     $baseInvoicedDiscount = 0;
     $invoicedDiscount = 0;
     foreach ($order->getInvoiceCollection() as $_invoice) {
         $baseInvoicedDiscount += $_invoice->getBaseAffiliateCredit();
         $invoicedDiscount += $_invoice->getAffiliateCredit();
     }
     if ($invoice->isLast()) {
         $baseDiscount = $baseOrderDiscount - $baseInvoicedDiscount;
         $discount = $orderDiscount - $invoicedDiscount;
     } else {
         //            edit by viet
         $baseOrderTotal = $order->getBaseSubtotalInclTax();
         // - $baseOrderDiscount;
         $baseDiscount = $baseOrderDiscount * $invoice->getBaseSubtotalInclTax() / $baseOrderTotal;
         $discount = $orderDiscount * $invoice->getBaseSubtotalInclTax() / $baseOrderTotal;
         //            end by viet
         if ($baseDiscount < $baseOrderDiscount) {
             $baseDiscount = $baseOrderDiscount;
             $discount = $orderDiscount;
         }
     }
     if ($baseDiscount) {
         $baseDiscount = Mage::app()->getStore()->roundPrice($baseDiscount);
         $discount = Mage::app()->getStore()->roundPrice($discount);
         $invoice->setBaseAffiliateCredit($baseDiscount);
         $invoice->setAffiliateCredit($discount);
         $invoice->setBaseGrandTotal($invoice->getBaseGrandTotal() + $baseDiscount);
         $invoice->setGrandTotal($invoice->getGrandTotal() + $discount);
     }
     return $this;
 }
Example #2
0
 public function collect(Mage_Sales_Model_Order_Invoice $invoice)
 {
     $baseDiscount = 0;
     $discount = 0;
     $order = $invoice->getOrder();
     $baseOrderDiscount = $order->getBaseAffiliateCredit();
     $orderDiscount = $order->getAffiliateCredit();
     if ($invoice->getBaseGrandTotal() < 0.0001 || $baseOrderDiscount >= 0) {
         return $this;
     }
     $baseInvoicedDiscount = 0;
     $invoicedDiscount = 0;
     foreach ($order->getInvoiceCollection() as $_invoice) {
         $baseInvoicedDiscount += $_invoice->getBaseAffiliateCredit();
         $invoicedDiscount += $_invoice->getAffiliateCredit();
     }
     if ($invoice->isLast()) {
         $baseDiscount = $baseOrderDiscount - $baseInvoicedDiscount;
         $discount = $orderDiscount - $invoicedDiscount;
     } else {
         $baseOrderTotal = $order->getBaseGrandTotal() - $baseOrderDiscount;
         $baseDiscount = $baseOrderDiscount * $invoice->getBaseGrandTotal() / $baseOrderTotal;
         $discount = $orderDiscount * $invoice->getBaseGrandTotal() / $baseOrderTotal;
         if ($baseDiscount < $baseOrderDiscount) {
             $baseDiscount = $baseOrderDiscount;
             $discount = $orderDiscount;
         }
     }
     if ($baseDiscount) {
         $baseDiscount = Mage::app()->getStore()->roundPrice($baseDiscount);
         $discount = Mage::app()->getStore()->roundPrice($discount);
         $invoice->setBaseAffiliateCredit($baseDiscount);
         $invoice->setAffiliateCredit($discount);
         $invoice->setBaseGrandTotal($invoice->getBaseGrandTotal() + $baseDiscount);
         $invoice->setGrandTotal($invoice->getGrandTotal() + $discount);
     }
     return $this;
 }