Ejemplo n.º 1
0
    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;
        }
    }
Ejemplo n.º 2
0
 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;
         }
     }
 }