function updateStatusForOneOrder($virtuemart_order_id, $inputOrder, $useTriggers = true) { // vmdebug('updateStatusForOneOrder', $inputOrder); /* Update the order */ $data = $this->getTable('orders'); $data->load($virtuemart_order_id); $old_order_status = $data->order_status; $data->bind($inputOrder); //First we must call the payment, the payment manipulates the result of the order_status if ($useTriggers) { if (!class_exists('vmPSPlugin')) { require JPATH_VM_PLUGINS . DS . 'vmpsplugin.php'; } // Payment decides what to do when order status is updated JPluginHelper::importPlugin('vmpayment'); $_dispatcher = JDispatcher::getInstance(); //Should we add this? $inputOrder $_returnValues = $_dispatcher->trigger('plgVmOnUpdateOrderPayment', array(&$data, $old_order_status)); foreach ($_returnValues as $_returnValue) { if ($_returnValue === true) { break; // Plugin was successfull } elseif ($_returnValue === false) { return false; // Plugin failed } // Ignore null status and look for the next returnValue } JPluginHelper::importPlugin('vmshipment'); $_dispatcher = JDispatcher::getInstance(); //Should we add this? $inputOrder $_returnValues = $_dispatcher->trigger('plgVmOnUpdateOrderShipment', array(&$data, $old_order_status)); /** * If an order gets cancelled, fire a plugin event, perhaps * some authorization needs to be voided */ if ($data->order_status == "X") { JPluginHelper::importPlugin('vmpayment'); //Should we add this? $inputOrder $_dispatcher = JDispatcher::getInstance(); $_dispatcher->trigger('plgVmOnCancelPayment', array(&$data, $old_order_status)); } } if ($data->store()) { $task = JRequest::getCmd('task', 0); $view = JRequest::getWord('view', 0); /*if($task=='edit'){ $update_lines = JRequest::getInt('update_lines'); } else /*/ if ($task == 'updatestatus' and $view == 'orders') { $update_lines = JRequest::getVar('orders[' . $virtuemart_order_id . '][update_lines]'); } else { $update_lines = 1; } if ($update_lines !== 0) { vmdebug('$update_lines ' . $update_lines); $q = 'SELECT virtuemart_order_item_id FROM #__virtuemart_order_items WHERE virtuemart_order_id="' . $virtuemart_order_id . '"'; $db = JFactory::getDBO(); $db->setQuery($q); $order_items = $db->loadObjectList(); if ($order_items) { // vmdebug('updateStatusForOneOrder',$data); foreach ($order_items as $order_item) { //$this->updateSingleItem($order_item->virtuemart_order_item_id, $data->order_status, $order['comments'] , $virtuemart_order_id, $data->order_pass); $this->updateSingleItem($order_item->virtuemart_order_item_id, $data); } } } /* Update the order history */ $this->_updateOrderHist($virtuemart_order_id, $data->order_status, $inputOrder['customer_notified'], $inputOrder['comments']); // When the plugins did not already notified the user, do it here (the normal way) //Attention the ! prevents at the moment that an email is sent. But it should used that way. // if (!$inputOrder['customer_notified']) { $this->notifyCustomer($data->virtuemart_order_id, $inputOrder); // } //mod fazan 23/10/2012 per glimlag coupon if ($data->order_status == 'C') { require_once JPATH_ADMINISTRATOR . '/components/com_vmcoupons/classes/RSCoupons.class.php'; RSCoupons::OnBuyProductCouponGenarate($data->virtuemart_order_id, $data->virtuemart_user_id); RSCoupons::OnExceedsThresholds($data->order_total, $data->virtuemart_user_id); RSCoupons::OnPaymentMethodCouponGenarate($data->virtuemart_paymentmethod_id, $data->virtuemart_user_id); RSCoupons::OnBuyProductOnCategoryCouponGenarate($data->virtuemart_order_id, $data->virtuemart_user_id); RSCoupons::OnShopperGroupCouponGenarate($data->virtuemart_user_id); RSCoupons::OnShopperNameCouponGenarate($data->virtuemart_user_id); RSCoupons::UpdateGenaratedCoupons($data->coupon_code, $data->virtuemart_order_id, $data->virtuemart_user_id); } //end mod fazan 23/10/2012 per glimlag coupon JPluginHelper::importPlugin('vmcoupon'); $dispatcher = JDispatcher::getInstance(); $returnValues = $dispatcher->trigger('plgVmCouponUpdateOrderStatus', array($data, $old_order_status)); if (!empty($returnValues)) { foreach ($returnValues as $returnValue) { if ($returnValue !== null) { return $returnValue; } } } return true; } else { return false; } }
function OnExceedsThresholds($money, $userid) { //validity test $db =& JFactory::getDBO(); $query = "SELECT * FROM #__license"; $db->setQuery($query, 0, 1); $rows = $db->loadObjectList(); foreach ($rows as $code) { $code->security_code; } $test = new test_dependent(); $valid = $test->start_rs($_SERVER['HTTP_HOST'], $code->security_code); if ($valid == 0) { return; } //end validity test $sql_cpn = "select * from #__virtuemart_coupontype where type=2 and published=1 order by `order` asc"; $db->setQuery($sql_cpn); $moneytype = $db->loadObjectList(); $order_num = NULL; foreach ($moneytype as $moneythr) { $threshold = $moneythr->typevalue; $time = time(); $timee = time() + $moneythr->validity * 24 * 60 * 60; $coupon_id = $moneythr->id; if ($threshold <= $money) { if ($order_num == NULL) { $order_num = $moneythr->order; } if ($order_num !== $moneythr->order) { break; } $userinfo =& JFactory::getUser($userid); $username = $userinfo->username; $email = $userinfo->email; $coupon = RSCoupons::genRandomString(); $cpn_ins = "insert into #__virtuemart_generatedcoupon set name='" . $coupon . "',\r\n\t\t\t\t\tawd_userid=" . $userid . ",\r\n\t\t\t\t\tawd_user='******',\r\n\t\t\t\t\tawd_amount=" . $moneythr->amount . ",\r\n\t\t\t\t\tcoupon_id='" . $coupon_id . "',\r\n\t\t\t\t\tamounttype=" . $moneythr->amounttype . ",\r\n\t\t\t\t\tvalid_from=" . $time . ", valid_till=" . $timee . ",\r\n\t\t\t\t\tremain_use=" . $moneythr->awarded . ",\r\n\t\t\t\t\tpublished=1,\r\n\t\t\t\t\tcoupontype=2, minamount=" . $moneythr->minamount . ""; $db->setQuery($cpn_ins); $db->Query(); JTable::addIncludePath(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_vmcoupons' . DS . 'tables'); $query = "SELECT * FROM #__virtuemart_parameters LIMIT 1"; $db->setQuery($query); $parameter = $db->loadObject(); $ad_email = $parameter->ad_email; $currency = $parameter->currency; $emailsubject = $parameter->exceedthr_email_subject; $emailbody = $parameter->exceedthr_email_body; $clickatell_user = $parameter->clickatell_user; $clickatell_pass = $parameter->clickatell_pass; $clickatell_api_id = $parameter->clickatell_api_id; $clickatell_sender = $parameter->clickatell_sender; if ($moneythr->mailtocustomer == 1) { RSCoupons::sendmailtouser($coupon, $moneythr->validity, $moneythr->amount, $moneythr->amounttype, $currency, $moneythr->awarded, $ad_email, $email, $username, $emailsubject, $emailbody); } if ($moneythr->mailtoadmin == 1) { RSCoupons::sendmailtoadmin($coupon, $moneythr->validity, $moneythr->amount, $moneythr->amounttype, $currency, $moneythr->awarded, $ad_email, $emailsubject); } if ($moneythr->sendsms == 1) { RSCoupons::sendthesms($coupon, $moneythr->validity, $moneythr->amounttype, $moneythr->amount, $userid, $clickatell_user, $clickatell_pass, $clickatell_api_id, $clickatell_sender, $currency); } break; } } }