public function render(Varien_Object $row) { if ($row->getCommissionType() == 'percentage') { return sprintf("%.2f", $row->getCommission()) . '%'; } else { return Mage::app()->getStore()->getBaseCurrency()->format($row->getCommission()); } }
public function calculateCommissionBeforeEdit($observer) { /* hainh edit 25-04-2014 */ if (!Mage::helper('affiliateplusprogram')->isPluginEnabled()) { return; } $order = $observer->getEvent()->getOrder(); $order->setQuote(Mage::getModel('sales/quote')->load($order->getQuoteId())); $items = $order->getAllItems(); $affiliateInfo = $observer->getEvent()->getAffiliateInfo(); $commissionObj = $observer->getEvent()->getCommissionObj(); $commission = $commissionObj->getCommission(); $orderItemIds = $commissionObj->getOrderItemIds(); $orderItemNames = $commissionObj->getOrderItemNames(); $commissionItems = $commissionObj->getCommissionItems(); $extraContent = $commissionObj->getExtraContent(); $tierCommissions = $commissionObj->getTierCommissions(); $account = $observer->getEvent()->getAccount(); $programId = $observer->getEvent()->getProgramId(); $storeId = Mage::getSingleton('adminhtml/session_quote')->getStoreId(); if ($account->getAccountId()) { if ($programId) { $program = Mage::getModel('affiliateplusprogram/program')->setStoreId($storeId)->load($programId); if (!$program) { return $this; } // $commissionObj->setDefaultCommission(false); if (!$program->validateOrder($order)) { return $this; } } else { return $this; } foreach ($items as $item) { $affiliateplusCommissionItem = ''; if ($item->getParentItemId()) { continue; } if (Mage::getSingleton('checkout/session')->getData('affiliate_coupon_code') && $account->getStatus() == 1) { $commissionObj->setDefaultCommission(false); if (!$program->validateItem($item)) { continue; } } else { if (in_array($item->getId(), $commissionItems)) { continue; } $program = Mage::helper('affiliateplusprogram')->initProgram($account->getId(), $order)->getProgramByItemAccount($item, $account); } if (!$program) { continue; } $affiliateType = $program->getAffiliateType() ? $program->getAffiliateType() : $this->_getConfigHelper()->getCommissionConfig('affiliate_type'); /* Changed BY Adam for customize function: Commission for whole cart 22/07/2014 */ $baseItemsPrice = 0; // total price of the items that belong to this program. foreach ($items as $_item) { if ($_item->getParentItemId()) { continue; } if (!$program->validateItem($_item)) { continue; } // Changed By Adam 01/08/2014: don't calculate the items that belong to higher program's priority if (!Mage::getSingleton('checkout/session')->getData('affiliate_coupon_code') && Mage::helper('affiliateplusprogram')->checkItemInHigherPriorityProgram($account->getId(), $_item, $program->getPriority())) { continue; } if ($_item->getHasChildren() && $_item->isChildrenCalculated()) { foreach ($_item->getChildrenItems() as $child) { $baseItemsPrice += $_item->getQtyOrdered() * ($child->getQtyOrdered() * $child->getBasePrice() - $child->getBaseDiscountAmount() - $child->getBaseAffiliateplusAmount()); } } elseif ($_item->getProduct()) { $baseItemsPrice += $_item->getQtyOrdered() * $_item->getBasePrice() - $_item->getBaseDiscountAmount() - $_item->getBaseAffiliateplusAmount(); } } /* Endcode */ if ($item->getHasChildren() && $item->isChildrenCalculated()) { $childHasCommission = false; foreach ($item->getChildrenItems() as $child) { $affiliateplusCommissionItem = ''; if ($affiliateType == 'profit') { $baseProfit = $child->getBasePrice() - $child->getBaseCost(); } else { $baseProfit = $child->getBasePrice(); } $baseProfit = $child->getQtyOrdered() * $baseProfit - $child->getBaseDiscountAmount() - $child->getBaseAffiliateplusAmount(); if ($baseProfit <= 0) { continue; } $commissionType = $program->getCommissionType(); $commissionValue = floatval($program->getCommission()); if (Mage::helper('affiliateplus/cookie')->getNumberOrdered()) { if ($program->getSecCommission()) { $commissionType = $program->getSecCommissionType(); $commissionValue = floatval($program->getSecondaryCommission()); } } if (!$commissionValue) { continue; } $childHasCommission = true; /* Changed BY Adam commission for whole cart 22/07/2014 */ if ($commissionType == 'cart_fixed') { $commissionValue = min($commissionValue, $baseItemsPrice); $itemPrice = $child->getQtyOrdered() * $child->getBasePrice() - $child->getBaseDiscountAmount() - $child->getBaseAffiliateplusAmount(); $itemCommission = $itemPrice * $commissionValue / $baseItemsPrice; } elseif ($commissionType == 'fixed') { $itemCommission = min($child->getQtyOrdered() * $commissionValue, $baseProfit); } elseif ($commissionType == 'percentage') { if ($commissionValue > 100) { $commissionValue = 100; } if ($commissionValue < 0) { $commissionValue = 0; } $itemCommission = $baseProfit * $commissionValue / 100; } $affiliateplusCommissionItem .= $itemCommission . ","; $commissionObject = new Varien_Object(array('profit' => $baseProfit, 'commission' => $itemCommission, 'tier_commission' => array(), 'base_item_price' => $baseItemsPrice, 'affiliateplus_commission_item' => $affiliateplusCommissionItem)); Mage::dispatchEvent('affiliateplusprogram_calculate_tier_commission', array('item' => $child, 'account' => $account, 'commission_obj' => $commissionObject, 'program' => $program)); if ($commissionObject->getTierCommission()) { $tierCommissions[$child->getId()] = $commissionObject->getTierCommission(); } $commission += $commissionObject->getCommission(); $child->setAffiliateplusCommission($commissionObject->getCommission()); $child->setAffiliateplusCommissionItem($commissionObject->getAffiliateplusCommissionItem()); if (!isset($extraContent[$program->getId()]['total_amount'])) { $extraContent[$program->getId()]['total_amount'] = 0; } $extraContent[$program->getId()]['total_amount'] += $child->getBasePrice(); if (!isset($extraContent[$program->getId()]['commission'])) { $extraContent[$program->getId()]['commission'] = 0; } $extraContent[$program->getId()]['commission'] += $commissionObject->getCommission(); $orderItemIds[] = $child->getProduct()->getId(); $orderItemNames[] = $child->getName(); $extraContent[$program->getId()]['order_item_ids'][] = $child->getProduct()->getId(); $extraContent[$program->getId()]['order_item_names'][] = $child->getName(); } if ($childHasCommission) { // $orderItemIds[] = $item->getProduct()->getId(); // $orderItemNames[] = $item->getName(); $commissionItems[] = $item->getId(); $extraContent[$program->getId()]['program_name'] = $program->getName(); // $extraContent[$program->getId()]['order_item_ids'][] = $item->getProduct()->getId(); // $extraContent[$program->getId()]['order_item_names'][] = $item->getName(); } } else { if ($affiliateType == 'profit') { $baseProfit = $item->getBasePrice() - $item->getBaseCost(); } else { $baseProfit = $item->getBasePrice(); } $baseProfit = $item->getQtyOrdered() * $baseProfit - $item->getBaseDiscountAmount() - $item->getBaseAffiliateplusAmount(); if ($baseProfit <= 0) { continue; } $commissionType = $program->getCommissionType(); $commissionValue = floatval($program->getCommission()); if (Mage::helper('affiliateplus/cookie')->getNumberOrdered() > 1 || Mage::helper('affiliateplus/cookie')->getNumberOrdered() && !$order->getOriginalIncrementId()) { if ($program->getSecCommission()) { $commissionType = $program->getSecCommissionType(); $commissionValue = floatval($program->getSecondaryCommission()); } } if (!$commissionValue) { continue; } //jack if ($item->getProduct()) { $productId = $item->getProduct()->getId(); } else { $productId = $item->getProductId(); } // $orderItemIds[] = $productId; $orderItemNames[] = $item->getName(); $commissionItems[] = $item->getId(); /* Changed BY Adam: commission for whole cart 22/07/2014 */ if ($commissionType == 'cart_fixed') { $commissionValue = min($commissionValue, $baseItemsPrice); $itemPrice = $item->getQtyOrdered() * $item->getBasePrice() - $item->getBaseDiscountAmount() - $item->getBaseAffiliateplusAmount(); $itemCommission = $itemPrice * $commissionValue / $baseItemsPrice; } elseif ($commissionType == 'fixed') { $itemCommission = min($item->getQtyOrdered() * $commissionValue, $baseProfit); } elseif ($commissionType == 'percentage') { if ($commissionValue > 100) { $commissionValue = 100; } if ($commissionValue < 0) { $commissionValue = 0; } $itemCommission = $baseProfit * $commissionValue / 100; } $affiliateplusCommissionItem .= $itemCommission . ","; $commissionObject = new Varien_Object(array('profit' => $baseProfit, 'commission' => $itemCommission, 'tier_commission' => array(), 'base_item_price' => $baseItemsPrice, 'affiliateplus_commission_item' => $affiliateplusCommissionItem)); Mage::dispatchEvent('affiliateplusprogram_calculate_tier_commission', array('item' => $item, 'account' => $account, 'commission_obj' => $commissionObject, 'program' => $program)); if ($commissionObject->getTierCommission()) { $tierCommissions[$item->getId()] = $commissionObject->getTierCommission(); } $commission += $commissionObject->getCommission(); $item->setAffiliateplusCommission($commissionObject->getCommission()); $item->setAffiliateplusCommissionItem($commissionObject->getAffiliateplusCommissionItem()); $extraContent[$program->getId()]['program_name'] = $program->getName(); $extraContent[$program->getId()]['order_item_ids'][] = $item->getProduct()->getId(); $extraContent[$program->getId()]['order_item_names'][] = $item->getName(); if (!isset($extraContent[$program->getId()]['total_amount'])) { $extraContent[$program->getId()]['total_amount'] = 0; } $extraContent[$program->getId()]['total_amount'] += $item->getBasePrice(); if (!isset($extraContent[$program->getId()]['commission'])) { $extraContent[$program->getId()]['commission'] = 0; } $extraContent[$program->getId()]['commission'] += $commissionObject->getCommission(); } } $commissionObj->setCommission($commission); $commissionObj->setOrderItemIds($orderItemIds); $commissionObj->setOrderItemNames($orderItemNames); $commissionObj->setCommissionItems($commissionItems); $commissionObj->setExtraContent($extraContent); $commissionObj->setTierCommissions($tierCommissions); return $this; } return $this; }
public function calculateCommissionBefore($observer) { $order = $observer->getEvent()->getOrder(); $order->setQuote(Mage::getModel('sales/quote')->load($order->getQuoteId())); $items = $order->getAllItems(); $affiliateInfo = $observer->getEvent()->getAffiliateInfo(); $commissionObj = $observer->getEvent()->getCommissionObj(); $commission = $commissionObj->getCommission(); $orderItemIds = $commissionObj->getOrderItemIds(); $orderItemNames = $commissionObj->getOrderItemNames(); $commissionItems = $commissionObj->getCommissionItems(); $extraContent = $commissionObj->getExtraContent(); $tierCommissions = $commissionObj->getTierCommissions(); foreach ($affiliateInfo as $info) { if ($account = $info['account']) { if ($account->getUsingCoupon()) { $program = $account->getUsingProgram(); if (!$program) { return $this; } $commissionObj->setDefaultCommission(false); if (!$program->validateOrder($order)) { return $this; } } foreach ($items as $item) { if ($item->getParentItemId()) { continue; } if ($account->getUsingCoupon()) { if (!$program->validateItem($item)) { continue; } } else { if (in_array($item->getId(), $commissionItems)) { continue; } $program = Mage::helper('affiliateplusprogram')->initProgram($account->getId(), $order)->getProgramByItemAccount($item, $account); } if (!$program) { continue; } $affiliateType = $program->getAffiliateType() ? $program->getAffiliateType() : $this->_getConfigHelper()->getCommissionConfig('affiliate_type'); if ($item->getHasChildren() && $item->isChildrenCalculated()) { $childHasCommission = false; foreach ($item->getChildrenItems() as $child) { if ($affiliateType == 'profit') { $baseProfit = $child->getBasePrice() - $child->getBaseCost(); } else { $baseProfit = $child->getBasePrice(); } $baseProfit = $child->getQtyOrdered() * $baseProfit - $child->getBaseDiscountAmount() - $child->getBaseAffiliateplusAmount(); if ($baseProfit <= 0) { continue; } $commissionType = $program->getCommissionType(); $commissionValue = floatval($program->getCommission()); if (Mage::helper('affiliateplus/cookie')->getNumberOrdered()) { if ($program->getSecCommission()) { $commissionType = $program->getSecCommissionType(); $commissionValue = floatval($program->getSecondaryCommission()); } } if (!$commissionValue) { continue; } $childHasCommission = true; if ($commissionType == 'fixed') { $itemCommission = min($child->getQtyOrdered() * $commissionValue, $baseProfit); } elseif ($commissionType == 'percentage') { if ($commissionValue > 100) { $commissionValue = 100; } if ($commissionValue < 0) { $commissionValue = 0; } $itemCommission = $baseProfit * $commissionValue / 100; } $commissionObject = new Varien_Object(array('profit' => $baseProfit, 'commission' => $itemCommission, 'tier_commission' => array())); Mage::dispatchEvent('affiliateplusprogram_calculate_tier_commission', array('item' => $child, 'account' => $account, 'commission_obj' => $commissionObject, 'program' => $program)); if ($commissionObject->getTierCommission()) { $tierCommissions[$child->getId()] = $commissionObject->getTierCommission(); } $commission += $commissionObject->getCommission(); $child->setAffiliateplusCommission($commissionObject->getCommission()); if (!isset($extraContent[$program->getId()]['total_amount'])) { $extraContent[$program->getId()]['total_amount'] = 0; } $extraContent[$program->getId()]['total_amount'] += $child->getBasePrice(); if (!isset($extraContent[$program->getId()]['commission'])) { $extraContent[$program->getId()]['commission'] = 0; } $extraContent[$program->getId()]['commission'] += $commissionObject->getCommission(); $orderItemIds[] = $child->getProduct()->getId(); $orderItemNames[] = $child->getName(); $extraContent[$program->getId()]['order_item_ids'][] = $child->getProduct()->getId(); $extraContent[$program->getId()]['order_item_names'][] = $child->getName(); } if ($childHasCommission) { // $orderItemIds[] = $item->getProduct()->getId(); // $orderItemNames[] = $item->getName(); $commissionItems[] = $item->getId(); $extraContent[$program->getId()]['program_name'] = $program->getName(); // $extraContent[$program->getId()]['order_item_ids'][] = $item->getProduct()->getId(); // $extraContent[$program->getId()]['order_item_names'][] = $item->getName(); } } else { if ($affiliateType == 'profit') { $baseProfit = $item->getBasePrice() - $item->getBaseCost(); } else { $baseProfit = $item->getBasePrice(); } $baseProfit = $item->getQtyOrdered() * $baseProfit - $item->getBaseDiscountAmount() - $item->getBaseAffiliateplusAmount(); if ($baseProfit <= 0) { continue; } $commissionType = $program->getCommissionType(); $commissionValue = floatval($program->getCommission()); if (Mage::helper('affiliateplus/cookie')->getNumberOrdered()) { if ($program->getSecCommission()) { $commissionType = $program->getSecCommissionType(); $commissionValue = floatval($program->getSecondaryCommission()); } } if (!$commissionValue) { continue; } $orderItemIds[] = $item->getProduct()->getId(); $orderItemNames[] = $item->getName(); $commissionItems[] = $item->getId(); if ($commissionType == 'fixed') { $itemCommission = min($item->getQtyOrdered() * $commissionValue, $baseProfit); } elseif ($commissionType == 'percentage') { if ($commissionValue > 100) { $commissionValue = 100; } if ($commissionValue < 0) { $commissionValue = 0; } $itemCommission = $baseProfit * $commissionValue / 100; } $commissionObject = new Varien_Object(array('profit' => $baseProfit, 'commission' => $itemCommission, 'tier_commission' => array())); Mage::dispatchEvent('affiliateplusprogram_calculate_tier_commission', array('item' => $item, 'account' => $account, 'commission_obj' => $commissionObject, 'program' => $program)); if ($commissionObject->getTierCommission()) { $tierCommissions[$item->getId()] = $commissionObject->getTierCommission(); } $commission += $commissionObject->getCommission(); $item->setAffiliateplusCommission($commissionObject->getCommission()); $extraContent[$program->getId()]['program_name'] = $program->getName(); $extraContent[$program->getId()]['order_item_ids'][] = $item->getProduct()->getId(); $extraContent[$program->getId()]['order_item_names'][] = $item->getName(); if (!isset($extraContent[$program->getId()]['total_amount'])) { $extraContent[$program->getId()]['total_amount'] = 0; } $extraContent[$program->getId()]['total_amount'] += $item->getBasePrice(); if (!isset($extraContent[$program->getId()]['commission'])) { $extraContent[$program->getId()]['commission'] = 0; } $extraContent[$program->getId()]['commission'] += $commissionObject->getCommission(); } } $commissionObj->setCommission($commission); $commissionObj->setOrderItemIds($orderItemIds); $commissionObj->setOrderItemNames($orderItemNames); $commissionObj->setCommissionItems($commissionItems); $commissionObj->setExtraContent($extraContent); $commissionObj->setTierCommissions($tierCommissions); return $this; } } return $this; }
public function orderPlaceAfter($observer) { $order = $observer['order']; // check to run this function 1 time for 1 order if (Mage::getSingleton('core/session')->getData("affiliateplus_order_placed_" . $order->getId())) { return $this; } Mage::getSingleton('core/session')->setData("affiliateplus_order_placed_" . $order->getId(), true); // Use Store Credit to Checkout if ($baseAmount = $order->getBaseAffiliateCredit()) { $session = Mage::getSingleton('checkout/session'); $session->setUseAffiliateCredit(''); $session->setAffiliateCredit(0); $account = Mage::getSingleton('affiliateplus/session')->getAccount(); $payment = Mage::getModel('affiliateplus/payment')->setPaymentMethod('credit')->setAmount(-$baseAmount)->setAccountId($account->getId())->setAccountName($account->getName())->setAccountEmail($account->getEmail())->setRequestTime(now())->setStatus(3)->setIsRequest(1)->setIsPayerFee(0)->setData('is_created_by_recurring', 1)->setData('is_refund_balance', 1); if (Mage::helper('affiliateplus/config')->getSharingConfig('balance') == 'store') { $payment->setStoreIds($order->getStoreId()); } $paymentMethod = $payment->getPayment(); $paymentMethod->addData(array('order_id' => $order->getId(), 'order_increment_id' => $order->getIncrementId(), 'base_paid_amount' => -$baseAmount, 'paid_amount' => -$order->getAffiliateCredit())); try { $payment->save(); $paymentMethod->savePaymentMethodInfo(); } catch (Exception $e) { } } if (!$order->getBaseSubtotal()) { return $this; } $affiliateInfo = Mage::helper('affiliateplus/cookie')->getAffiliateInfo(); $account = ''; foreach ($affiliateInfo as $info) { if ($info['account']) { $account = $info['account']; break; } } if ($account && $account->getId()) { // Log affiliate tracking referal - only when has sales if ($this->_getConfigHelper()->getCommissionConfig('life_time_sales')) { $tracksCollection = Mage::getResourceModel('affiliateplus/tracking_collection'); if ($order->getCustomerId()) { $tracksCollection->getSelect()->where("customer_id = {$order->getCustomerId()} OR customer_email = ?", $order->getCustomerEmail()); } else { $tracksCollection->addFieldToFilter('customer_email', $order->getCustomerEmail()); } if (!$tracksCollection->getSize()) { try { Mage::getModel('affiliateplus/tracking')->setData(array('account_id' => $account->getId(), 'customer_id' => $order->getCustomerId(), 'customer_email' => $order->getCustomerEmail(), 'created_time' => now()))->save(); } catch (Exception $e) { } } } $baseDiscount = $order->getBaseAffiliateplusDiscount(); //$maxCommission = $order->getBaseGrandTotal() - $order->getBaseShippingAmount(); // Before calculate commission $commissionObj = new Varien_Object(array('commission' => 0, 'default_commission' => true, 'order_item_ids' => array(), 'order_item_names' => array(), 'commission_items' => array(), 'extra_content' => array(), 'tier_commissions' => array())); Mage::dispatchEvent('affiliateplus_calculate_commission_before', array('order' => $order, 'affiliate_info' => $affiliateInfo, 'commission_obj' => $commissionObj)); $commissionType = $this->_getConfigHelper()->getCommissionConfig('commission_type'); $commissionValue = floatval($this->_getConfigHelper()->getCommissionConfig('commission')); if (Mage::helper('affiliateplus/cookie')->getNumberOrdered()) { if ($this->_getConfigHelper()->getCommissionConfig('use_secondary')) { $commissionType = $this->_getConfigHelper()->getCommissionConfig('secondary_type'); $commissionValue = floatval($this->_getConfigHelper()->getCommissionConfig('secondary_commission')); } } $commission = $commissionObj->getCommission(); $orderItemIds = $commissionObj->getOrderItemIds(); $orderItemNames = $commissionObj->getOrderItemNames(); $commissionItems = $commissionObj->getCommissionItems(); $extraContent = $commissionObj->getExtraContent(); $tierCommissions = $commissionObj->getTierCommissions(); $defaultItemIds = array(); $defaultItemNames = array(); $defaultAmount = 0; $defCommission = 0; if ($commissionValue && $commissionObj->getDefaultCommission()) { if ($commissionType == 'percentage') { if ($commissionValue > 100) { $commissionValue = 100; } if ($commissionValue < 0) { $commissionValue = 0; } } foreach ($order->getAllItems() as $item) { if ($item->getParentItemId()) { continue; } if (in_array($item->getId(), $commissionItems)) { continue; } if ($item->getHasChildren() && $item->isChildrenCalculated()) { // $childHasCommission = false; foreach ($item->getChildrenItems() as $child) { if ($this->_getConfigHelper()->getCommissionConfig('affiliate_type') == 'profit') { $baseProfit = $child->getBasePrice() - $child->getBaseCost(); } else { $baseProfit = $child->getBasePrice(); } $baseProfit = $child->getQtyOrdered() * $baseProfit - $child->getBaseDiscountAmount() - $child->getBaseAffiliateplusAmount(); if ($baseProfit <= 0) { continue; } // $childHasCommission = true; if ($commissionType == 'fixed') { $defaultCommission = min($child->getQtyOrdered() * $commissionValue, $baseProfit); } elseif ($commissionType == 'percentage') { $defaultCommission = $baseProfit * $commissionValue / 100; } $commissionObj = new Varien_Object(array('profit' => $baseProfit, 'commission' => $defaultCommission, 'tier_commission' => array())); Mage::dispatchEvent('affiliateplus_calculate_tier_commission', array('item' => $child, 'account' => $account, 'commission_obj' => $commissionObj)); if ($commissionObj->getTierCommission()) { $tierCommissions[$child->getId()] = $commissionObj->getTierCommission(); } $commission += $commissionObj->getCommission(); $child->setAffiliateplusCommission($commissionObj->getCommission()); $defCommission += $commissionObj->getCommission(); $defaultAmount += $child->getBasePrice(); $orderItemIds[] = $child->getProduct()->getId(); $orderItemNames[] = $child->getName(); $defaultItemIds[] = $child->getProduct()->getId(); $defaultItemNames[] = $child->getName(); } // if ($childHasCommission) { // $orderItemIds[] = $item->getProduct()->getId(); // $orderItemNames[] = $item->getName(); // $defaultItemIds[] = $item->getProduct()->getId(); // $defaultItemNames[] = $item->getName(); // } } else { if ($this->_getConfigHelper()->getCommissionConfig('affiliate_type') == 'profit') { $baseProfit = $item->getBasePrice() - $item->getBaseCost(); } else { $baseProfit = $item->getBasePrice(); } $baseProfit = $item->getQtyOrdered() * $baseProfit - $item->getBaseDiscountAmount() - $item->getBaseAffiliateplusAmount(); if ($baseProfit <= 0) { continue; } $orderItemIds[] = $item->getProduct()->getId(); $orderItemNames[] = $item->getName(); $defaultItemIds[] = $item->getProduct()->getId(); $defaultItemNames[] = $item->getName(); if ($commissionType == 'fixed') { $defaultCommission = min($item->getQtyOrdered() * $commissionValue, $baseProfit); } elseif ($commissionType == 'percentage') { $defaultCommission = $baseProfit * $commissionValue / 100; } $commissionObj = new Varien_Object(array('profit' => $baseProfit, 'commission' => $defaultCommission, 'tier_commission' => array())); Mage::dispatchEvent('affiliateplus_calculate_tier_commission', array('item' => $item, 'account' => $account, 'commission_obj' => $commissionObj)); if ($commissionObj->getTierCommission()) { $tierCommissions[$item->getId()] = $commissionObj->getTierCommission(); } $commission += $commissionObj->getCommission(); $item->setAffiliateplusCommission($commissionObj->getCommission()); $defCommission += $commissionObj->getCommission(); $defaultAmount += $item->getBasePrice(); } } } if (!$baseDiscount && !$commission) { return $this; } // $customer = Mage::getSingleton('customer/session')->getCustomer(); // Create transaction $transactionData = array('account_id' => $account->getId(), 'account_name' => $account->getName(), 'account_email' => $account->getEmail(), 'customer_id' => $order->getCustomerId(), 'customer_email' => $order->getCustomerEmail(), 'order_id' => $order->getId(), 'order_number' => $order->getIncrementId(), 'order_item_ids' => implode(',', $orderItemIds), 'order_item_names' => implode(',', $orderItemNames), 'total_amount' => $order->getBaseSubtotal(), 'discount' => $baseDiscount, 'commission' => $commission, 'created_time' => now(), 'status' => '2', 'store_id' => Mage::app()->getStore()->getId(), 'extra_content' => $extraContent, 'tier_commissions' => $tierCommissions, 'default_item_ids' => $defaultItemIds, 'default_item_names' => $defaultItemNames, 'default_commission' => $defCommission, 'default_amount' => $defaultAmount, 'type' => 3); if ($account->getUsingCoupon()) { $session = Mage::getSingleton('checkout/session'); $transactionData['coupon_code'] = $session->getData('affiliate_coupon_code'); if ($program = $account->getUsingProgram()) { $transactionData['program_id'] = $program->getId(); $transactionData['program_name'] = $program->getName(); } else { $transactionData['program_id'] = 0; $transactionData['program_name'] = 'Affiliate Program'; } $session->unsetData('affiliate_coupon_code'); $session->unsetData('affiliate_coupon_data'); } $transaction = Mage::getModel('affiliateplus/transaction')->setData($transactionData)->setId(null); Mage::dispatchEvent('affiliateplus_calculate_commission_after', array('transaction' => $transaction, 'order' => $order, 'affiliate_info' => $affiliateInfo)); try { $transaction->save(); Mage::dispatchEvent('affiliateplus_recalculate_commission', array('transaction' => $transaction, 'order' => $order, 'affiliate_info' => $affiliateInfo)); if ($transaction->getIsChangedData()) { $transaction->save(); } Mage::dispatchEvent('affiliateplus_created_transaction', array('transaction' => $transaction, 'order' => $order, 'affiliate_info' => $affiliateInfo)); $transaction->sendMailNewTransactionToAccount(); $transaction->sendMailNewTransactionToSales(); } catch (Exception $e) { // Exception } } }
public function orderPlaceAfter($observer) { $order = $observer['order']; if (!$order->getBaseSubtotal()) { return $this; } $affiliateInfo = Mage::helper('affiliateplus/cookie')->getAffiliateInfo(); $account = ''; foreach ($affiliateInfo as $info) { if ($info['account']) { $account = $info['account']; break; } } if ($account && $account->getId()) { $baseDiscount = $order->getBaseAffiliateplusDiscount(); $maxCommission = $order->getBaseGrandTotal() - $order->getBaseShippingAmount(); // Before calculate commission $commissionObj = new Varien_Object(array('commission' => 0, 'default_commission' => true, 'order_item_ids' => array(), 'order_item_names' => array(), 'commission_items' => array(), 'extra_content' => array())); Mage::dispatchEvent('affiliateplus_calculate_commission_before', array('order' => $order, 'affiliate_info' => $affiliateInfo, 'commission_obj' => $commissionObj)); $commissionValue = floatval($this->_getConfigHelper()->getGeneralConfig('commission')); $commission = $commissionObj->getCommission(); $orderItemIds = $commissionObj->getOrderItemIds(); $orderItemNames = $commissionObj->getOrderItemNames(); $commissionItems = $commissionObj->getCommissionItems(); $extraContent = $commissionObj->getExtraContent(); if ($commissionValue && $commissionObj->getDefaultCommission()) { if ($this->_getConfigHelper()->getGeneralConfig('commission_type') == 'percentage') { if ($commissionValue > 100) { $commissionValue = 100; } if ($commissionValue < 0) { $commissionValue = 0; } } foreach ($order->getAllItems() as $item) { if (in_array($item->getId(), $commissionItems)) { continue; } if ($this->_getConfigHelper()->getGeneralConfig('affiliate_type') == 'profit') { $baseProfit = $item->getBasePrice() - $item->getBaseCost(); } else { $baseProfit = $item->getBasePrice(); } if ($baseProfit <= 0) { continue; } $orderItemIds[] = $item->getProduct()->getId(); $orderItemNames[] = $item->getName(); $defaultItemIds[] = $item->getProduct()->getId(); $defaultItemNames[] = $item->getName(); if ($this->_getConfigHelper()->getGeneralConfig('commission_type') == 'fixed') { $defaultCommission = $item->getQtyOrdered() * min($commissionValue, $baseProfit); } elseif ($this->_getConfigHelper()->getGeneralConfig('commission_type') == 'percentage') { $defaultCommission = $item->getQtyOrdered() * $baseProfit * $commissionValue / 100; } $commission += $defaultCommission; $defaultAmount = $item->getBasePrice(); } //if ($this->_getConfigHelper()->getGeneralConfig('commission_type') == 'percentage') // $commission = $maxCommission * $commissionValue / 100; } $originalCommission = $commission; $ratio = $maxCommission / $order->getBaseSubtotal(); $commission = $ratio * $originalCommission; if ($commission > $maxCommission) { $commission = $maxCommission; } if (!$baseDiscount && !$commission) { return $this; } $customer = Mage::getSingleton('customer/session')->getCustomer(); // Calculate Addition commission $commissionPlus = 0; $salesHelper = Mage::helper('affiliateplus/sales'); // Monthly commission if ($salesHelper->getConfig('month')) { $commissionLevels = $salesHelper->getMonthlyCommission(); if ($levels = count($commissionLevels)) { $accountSales = $salesHelper->getAccountSales($account->getId()); // + $order->getBaseSubtotal(); foreach ($commissionLevels as $commissionLV) { if ($accountSales >= $commissionLV['sales']) { $commissionPlus = $commissionLV['commission']; break; } } } } // Yearly commission if ($salesHelper->getConfig('year')) { $commissionLevels = $salesHelper->getYearlyCommission(); if ($levels = count($commissionLevels)) { $yearlyPlus = 0; $accountSales = $salesHelper->getAccountSales($account->getId(), 'Y-'); // + $order->getBaseSubtotal(); foreach ($commissionLevels as $commissionLV) { if ($accountSales >= $commissionLV['sales']) { $yearlyPlus = $commissionLV['commission']; break; } } $commissionPlus += $yearlyPlus; } } // Create transaction $transactionData = array('account_id' => $account->getId(), 'account_name' => $account->getName(), 'account_email' => $account->getEmail(), 'customer_id' => $customer->getId(), 'customer_email' => $customer->getEmail(), 'order_id' => $order->getId(), 'order_number' => $order->getIncrementId(), 'order_item_ids' => implode(',', $orderItemIds), 'order_item_names' => implode(',', $orderItemNames), 'total_amount' => $order->getBaseSubtotal(), 'discount' => $baseDiscount, 'commission' => $commission, 'created_time' => now(), 'status' => '2', 'store_id' => Mage::app()->getStore()->getId(), 'extra_content' => $extraContent, 'ratio' => $ratio, 'original_commission' => $originalCommission, 'default_item_ids' => $defaultItemIds, 'default_item_names' => $defaultItemNames, 'default_commission' => $defaultCommission, 'default_amount' => $defaultAmount); if ($salesHelper->getConfig('commission_type') == 'percentage') { $transactionData['percent_plus'] = $commissionPlus; $transactionData['commission_plus'] = 0; } else { $transactionData['percent_plus'] = 0; $transactionData['commission_plus'] = $commissionPlus; } $transaction = Mage::getModel('affiliateplus/transaction')->setData($transactionData)->setId(null); Mage::dispatchEvent('affiliateplus_calculate_commission_after', array('transaction' => $transaction, 'order' => $order, 'affiliate_info' => $affiliateInfo)); try { $transaction->save(); Mage::dispatchEvent('affiliateplus_recalculate_commission', array('transaction' => $transaction, 'order' => $order, 'affiliate_info' => $affiliateInfo)); $transaction->save(); Mage::dispatchEvent('affiliateplus_created_transaction', array('transaction' => $transaction, 'order' => $order, 'affiliate_info' => $affiliateInfo)); $transaction->sendMailNewTransactionToAccount(); $transaction->sendMailNewTransactionToSales(); } catch (Exception $e) { // Exception } } }
public function createNewTransaction($order) { // Changed By Adam 28/07/2014 if (!Mage::helper('affiliateplus')->isAffiliateModuleEnabled()) { return; } $orderId = Mage::getSingleton('adminhtml/session_quote')->getOrder()->getId(); $currentOrderEdit = Mage::getModel('sales/order')->load($orderId); $customerEmail = $currentOrderEdit->getCustomerEmail(); $originalIncrementId = $currentOrderEdit->getIncrementId(); $transactionAffiliate = Mage::getModel('affiliateplus/transaction')->getCollection()->addFieldToFilter('order_number', $originalIncrementId)->getFirstItem(); /* process code in the case : life time affiliate Edit By Jack */ $account = ''; $lifeTimeAff = false; // Changed By Adam 15/10/2014: 2014-10-15T07:59:02+00:00 ERR (3): Notice: Undefined variable: couponCode in C:\xampp\htdocs\project\magento1.5.0.1\app\code\local\Magestore\Affiliateplus\Model\Observer.php on line 1077 $couponCode = Mage::getSingleton('checkout/session')->getData('affiliate_coupon_code'); $isEnableCouponPlugin = Mage::helper('core')->isModuleEnabled('Magestore_Affiliatepluscoupon'); $affiliateInfo = Mage::helper('affiliateplus/cookie')->getAffiliateInfo(); if (!$orderId) { // when create a new order // life time $customerOrderId = $order->getCustomerId(); $accountAndProgramData = Mage::helper('affiliateplus')->getAccountAndProgramData($customerOrderId); $programId = $accountAndProgramData->getProgramId(); $programName = $accountAndProgramData->getProgramName(); $lifeTimeAff = $accountAndProgramData->getLifetimeAff(); $account = $accountAndProgramData->getAccount(); } else { // when edit order if (!$couponCode && $transactionAffiliate->getCouponCode() || !$isEnableCouponPlugin) { /* when remove coupon of old order or un-enable coupon plugin */ $accountAndProgramData = new Varien_Object(array('program_id' => '', 'program_name' => '', 'account' => $account, 'lifetime_aff' => $lifeTimeAff)); $customerOrderId = $order->getCustomerId(); $accountAndProgramData = Mage::helper('affiliateplus')->getAccountAndProgramData($customerOrderId); $account = $accountAndProgramData->getAccount(); if ($account) { // life time $programId = $accountAndProgramData->getProgramId(); $programName = $accountAndProgramData->getProgramName(); $lifeTimeAff = $accountAndProgramData->getLifetimeAff(); } else { // not life time // get information from old order $accountIdByTransaction = $transactionAffiliate->getAccountId(); $account = Mage::getModel('affiliateplus/account')->load($accountIdByTransaction); $programId = $transactionAffiliate->getProgramId(); $programName = $transactionAffiliate->getProgramName(); if (!$programId && !$programName) { // if program id = null and program = null => get information from session $programData = Mage::getSingleton('checkout/session')->getProgramData(); if ($programData) { $programId = $programData->getData('program_id'); $programName = $programData->getData('name'); } } } } else { $programData = Mage::getSingleton('checkout/session')->getProgramData(); if (!$couponCode) { if ($programData) { $programId = $programData->getData('program_id'); $programName = $programData->getData('name'); } $accountIdByTransaction = $transactionAffiliate->getAccountId(); $account = Mage::getModel('affiliateplus/account')->load($accountIdByTransaction); } } } /* end process code */ $baseDiscount = $order->getBaseAffiliateplusDiscount(); //$maxCommission = $order->getBaseGrandTotal() - $order->getBaseShippingAmount(); // Before calculate commission $commissionObj = new Varien_Object(array('commission' => 0, 'default_commission' => true, 'order_item_ids' => array(), 'order_item_names' => array(), 'commission_items' => array(), 'extra_content' => array(), 'tier_commissions' => array())); if (!$isEnableCouponPlugin || !Mage::helper('core')->isModuleEnabled('Magestore_Affiliatepluscoupon')) { $session = Mage::getSingleton('checkout/session'); $session->unsAffiliateCouponCode(); } if ($couponCode && $isEnableCouponPlugin) { $affiliateInfo = Mage::helper('affiliateplus/cookie')->getAffiliateInfo(); foreach ($affiliateInfo as $info) { if ($info['account']) { $account = $info['account']; break; } } if ($account->getUsingCoupon()) { $program = $account->getUsingProgram(); if ($program) { $programId = $program->getId(); $programName = $program->getName(); } else { $programId = 0; $programName = 'Affiliate Program'; } } } if (!$account) { return $this; } // Log affiliate tracking referal - only when has sales if ($this->_getConfigHelper()->getCommissionConfig('life_time_sales')) { $tracksCollection = Mage::getResourceModel('affiliateplus/tracking_collection'); if ($order->getCustomerId()) { $tracksCollection->getSelect()->where("customer_id = {$order->getCustomerId()} OR customer_email = ?", $order->getCustomerEmail()); } else { $tracksCollection->addFieldToFilter('customer_email', $order->getCustomerEmail()); } if (!$tracksCollection->getSize()) { try { Mage::getModel('affiliateplus/tracking')->setData(array('account_id' => $account->getId(), 'customer_id' => $order->getCustomerId(), 'customer_email' => $order->getCustomerEmail(), 'created_time' => now()))->save(); } catch (Exception $e) { } } } Mage::dispatchEvent('affiliateplus_calculate_commission_before_edit', array('order' => $order, 'program_id' => $programId, 'commission_obj' => $commissionObj, 'account' => $account)); $storeId = Mage::getSingleton('adminhtml/session_quote')->getStoreId(); $commissionType = $this->_getConfigHelper()->getCommissionConfig('commission_type', $storeId); $commissionValue = floatval($this->_getConfigHelper()->getCommissionConfig('commission', $storeId)); if ($orderId && Mage::helper('affiliateplus/cookie')->getNumberOrdered() > 1 || !$orderId && Mage::helper('affiliateplus/cookie')->getNumberOrdered()) { if ($this->_getConfigHelper()->getCommissionConfig('use_secondary', $storeId)) { $commissionType = $this->_getConfigHelper()->getCommissionConfig('secondary_type', $storeId); $commissionValue = floatval($this->_getConfigHelper()->getCommissionConfig('secondary_commission', $storeId)); } } $commission = $commissionObj->getCommission(); $orderItemIds = $commissionObj->getOrderItemIds(); $orderItemNames = $commissionObj->getOrderItemNames(); $commissionItems = $commissionObj->getCommissionItems(); $extraContent = $commissionObj->getExtraContent(); $tierCommissions = $commissionObj->getTierCommissions(); $defaultItemIds = array(); $defaultItemNames = array(); $defaultAmount = 0; $defCommission = 0; /* set Condition Edit By Jack */ // if(isset($count) && $count == 0 && count($extraContent) == 0) // return $this; /* */ /* Changed By Adam to customize function: Commission for whole cart 22/07/2014 */ // Calculate the total price of items ~~ baseSubtotal $baseItemsPrice = 0; foreach ($order->getAllItems() as $item) { if ($item->getParentItemId()) { continue; } // Kiem tra xem item da tinh trong program nao chua, neu roi thi ko tinh nua if (in_array($item->getId(), $commissionItems)) { continue; } if ($item->getHasChildren() && $item->isChildrenCalculated()) { foreach ($item->getChildrenItems() as $child) { $baseItemsPrice += $item->getQtyOrdered() * ($child->getQtyOrdered() * $child->getBasePrice() - $child->getBaseDiscountAmount() - $child->getBaseAffiliateplusAmount()); //$baseItemsPrice += $item->getQtyOrdered() * ($child->getQty() * $child->getBasePrice() - $child->getBaseDiscountAmount() - $child->getBaseAffiliateplusAmount()); } } elseif ($item->getProduct()) { $baseItemsPrice += $item->getQtyOrdered() * $item->getBasePrice() - $item->getBaseDiscountAmount() - $item->getBaseAffiliateplusAmount(); } } if ($commissionValue && $commissionObj->getDefaultCommission()) { if ($commissionType == 'percentage') { if ($commissionValue > 100) { $commissionValue = 100; } if ($commissionValue < 0) { $commissionValue = 0; } } foreach ($order->getAllItems() as $item) { $affiliateplusCommissionItem = ''; if ($item->getParentItemId()) { continue; } if (in_array($item->getId(), $commissionItems)) { continue; } if ($item->getHasChildren() && $item->isChildrenCalculated()) { // $childHasCommission = false; foreach ($item->getChildrenItems() as $child) { $affiliateplusCommissionItem = ''; if ($this->_getConfigHelper()->getCommissionConfig('affiliate_type') == 'profit') { $baseProfit = $child->getBasePrice() - $child->getBaseCost(); } else { $baseProfit = $child->getBasePrice(); } $baseProfit = $child->getQtyOrdered() * $baseProfit - $child->getBaseDiscountAmount() - $child->getBaseAffiliateplusAmount(); if ($baseProfit <= 0) { continue; } // $childHasCommission = true; /* Changed By Adam: Commission for whole cart 22/07/2014 */ if ($commissionType == "cart_fixed") { $commissionValue = min($commissionValue, $baseItemsPrice); $itemPrice = $child->getQtyOrdered() * $child->getBasePrice() - $child->getBaseDiscountAmount() - $child->getBaseAffiliateplusAmount(); $itemCommission = $itemPrice * $commissionValue / $baseItemsPrice; $defaultCommission = min($itemPrice * $commissionValue / $baseItemsPrice, $baseProfit); } elseif ($commissionType == 'fixed') { $defaultCommission = min($child->getQtyOrdered() * $commissionValue, $baseProfit); } elseif ($commissionType == 'percentage') { $defaultCommission = $baseProfit * $commissionValue / 100; } $affiliateplusCommissionItem .= $defaultCommission . ","; $commissionObj = new Varien_Object(array('profit' => $baseProfit, 'commission' => $defaultCommission, 'tier_commission' => array(), 'base_item_price' => $baseItemsPrice, 'affiliateplus_commission_item' => $affiliateplusCommissionItem)); Mage::dispatchEvent('affiliateplus_calculate_tier_commission', array('item' => $child, 'account' => $account, 'commission_obj' => $commissionObj)); if ($commissionObj->getTierCommission()) { $tierCommissions[$child->getId()] = $commissionObj->getTierCommission(); } $commission += $commissionObj->getCommission(); $child->setAffiliateplusCommission($commissionObj->getCommission()); $child->setAffiliateplusCommissionItem($commissionObj->getAffiliateplusCommissionItem()); $defCommission += $commissionObj->getCommission(); $defaultAmount += $child->getBasePrice(); // Changed by Adam 15/10/2014 // $orderItemIds[] = $child->getProduct()->getId(); $orderItemIds[] = $child->getProductId(); $orderItemNames[] = $child->getName(); // Changed by Adam 15/10/2014 // $defaultItemIds[] = $child->getProduct()->getId(); $defaultItemIds[] = $child->getProductId(); $defaultItemNames[] = $child->getName(); } // if ($childHasCommission) { // $orderItemIds[] = $item->getProduct()->getId(); // $orderItemNames[] = $item->getName(); // $defaultItemIds[] = $item->getProduct()->getId(); // $defaultItemNames[] = $item->getName(); // } } else { if ($this->_getConfigHelper()->getCommissionConfig('affiliate_type') == 'profit') { $baseProfit = $item->getBasePrice() - $item->getBaseCost(); } else { $baseProfit = $item->getBasePrice(); } //Zend_Debug::dump($item->getBaseAffiliateplusAmount());die; $baseProfit = $item->getQtyOrdered() * $baseProfit - $item->getBaseDiscountAmount() - $item->getBaseAffiliateplusAmount(); if ($baseProfit <= 0) { continue; } // Changed by Adam 15/10/2014: Call to a member function getId() on a non-object in C:\xampp\htdocs\project\magento1.5.0.1\app\code\local\Magestore\Affiliateplus\Model\Observer.php on line 1315 // $orderItemIds[] = $item->getProduct()->getId(); $orderItemIds[] = $item->getProduct() ? $item->getProduct()->getId() : $item->getProductId(); $orderItemNames[] = $item->getName(); // Changed by Adam 15/10/2014 $defaultItemIds[] = $item->getProduct() ? $item->getProduct()->getId() : $item->getProductId(); $defaultItemNames[] = $item->getName(); /* Changed BY Adam 22/07/2014 */ if ($commissionType == 'cart_fixed') { $commissionValue = min($commissionValue, $baseItemsPrice); $itemPrice = $item->getQtyOrdered() * $item->getBasePrice() - $item->getBaseDiscountAmount() - $item->getBaseAffiliateplusAmount(); $itemCommission = $itemPrice * $commissionValue / $baseItemsPrice; $defaultCommission = min($itemPrice * $commissionValue / $baseItemsPrice, $baseProfit); } elseif ($commissionType == 'fixed') { $defaultCommission = min($item->getQtyOrdered() * $commissionValue, $baseProfit); } elseif ($commissionType == 'percentage') { $defaultCommission = $baseProfit * $commissionValue / 100; } $affiliateplusCommissionItem .= $defaultCommission . ","; $commissionObj = new Varien_Object(array('profit' => $baseProfit, 'commission' => $defaultCommission, 'tier_commission' => array(), 'base_item_price' => $baseItemsPrice, 'affiliateplus_commission_item' => $affiliateplusCommissionItem)); Mage::dispatchEvent('affiliateplus_calculate_tier_commission', array('item' => $item, 'account' => $account, 'commission_obj' => $commissionObj)); if ($commissionObj->getTierCommission()) { $tierCommissions[$item->getId()] = $commissionObj->getTierCommission(); } $commission += $commissionObj->getCommission(); $item->setAffiliateplusCommission($commissionObj->getCommission()); // Changed By Adam 14/08/2014: Invoice tung phan $item->setAffiliateplusCommissionItem($commissionObj->getAffiliateplusCommissionItem()); $defCommission += $commissionObj->getCommission(); $defaultAmount += $item->getBasePrice(); } } } /* if remove coupon, then return Edit By Jack */ $currentCouponCode = $transactionAffiliate->getCouponCode(); if ($currentCouponCode && !Mage::getSingleton('checkout/session')->getData('affiliate_coupon_code') && !$baseDiscount || $account->getStatus() == 2) { $commission = 0; } //set Commission Value Mage::getSingleton('adminhtml/session_quote')->setCommission($commission); /* end if */ if (!$baseDiscount && !$commission) { return $this; } // Create transaction $storeId = Mage::getSingleton('adminhtml/session_quote')->getStore()->getId(); $transactionData = array('account_id' => $account->getId(), 'account_name' => $account->getName(), 'account_email' => $account->getEmail(), 'customer_id' => $order->getCustomerId(), 'customer_email' => $order->getCustomerEmail(), 'order_id' => $order->getId(), 'order_number' => $order->getIncrementId(), 'order_item_ids' => implode(',', $orderItemIds), 'order_item_names' => implode(',', $orderItemNames), 'total_amount' => $order->getBaseSubtotal(), 'discount' => $baseDiscount, 'commission' => $commission, 'created_time' => now(), 'status' => '2', 'store_id' => $storeId, 'extra_content' => $extraContent, 'tier_commissions' => $tierCommissions, 'default_item_ids' => $defaultItemIds, 'default_item_names' => $defaultItemNames, 'default_commission' => $defCommission, 'default_amount' => $defaultAmount, 'type' => 3, 'program_id' => $programId, 'program_name' => $programName, 'coupon_code' => Mage::getSingleton('checkout/session')->getData('affiliate_coupon_code')); $transaction = Mage::getModel('affiliateplus/transaction')->setData($transactionData)->setId(null); $transactionLatest = Mage::getModel('affiliateplus/transaction')->getCollection()->getLastItem(); try { if ($transactionLatest->getOrderNumber() != $transactionData['order_number']) { $transaction->save(); if ($transaction->getIsChangedData()) { $transaction->save(); } if (!$affiliateInfo) { $affiliateInfo = ''; } Mage::dispatchEvent('affiliateplus_recalculate_commission', array('transaction' => $transaction, 'order' => $order, 'affiliate_info' => $affiliateInfo)); Mage::dispatchEvent('affiliateplus_created_transaction', array('transaction' => $transaction, 'order' => $order)); $transaction->sendMailNewTransactionToAccount(); $transaction->sendMailNewTransactionToSales(); } } catch (Exception $e) { // Exception } }