/**
 * @param unknown_type $message
 * @param Db $db
 * @return void|boolean
 */
function processMessage($message, $db)
{
    //$message = Tools::jsonDecode('{"id_event":5,"date_event":"2012-03-14 13:07:18","reference":"274","id_customer":"10687"}', true);
    //$message = Tools::jsonDecode($response->body->ReceiveMessageResult->Message->Body, true);
    $message = Tools::jsonDecode($message, true);
    $id_event = $message['id_event'];
    if ($id_event == ONLINE_ORDER) {
        VBRewards::addRewardPoints($message['id_customer'], $id_event, 0, 100, 'Online payment bonus - Order no ' . $message['reference'], $message['reference'], $message['date_event']);
        return;
    }
    if ($id_event == EVENT_REGISTRATION) {
        VBRewards::addRewardPoints($message['id_customer'], $id_event, 0, 50, 'Registration/Sign-up', $message['reference'], $message['date_event']);
        return;
    }
    if (isset($message['first_order']) && $message['first_order']) {
        VBRewards::addRewardPoints($message['id_customer'], $id_event, 7, 50, 'First Order Bonus - Order no ' . $message['reference'], $message['reference'], $message['date_event']);
        return;
    }
    if (isset($message['first_review']) && $message['first_review']) {
        VBRewards::addRewardPoints($message['id_customer'], $id_event, 9, 50, 'Product Review - First review bonus', $message['reference'], $message['date_event']);
        return;
    }
    $res = $db->ExecuteS("select le.id_event, le.name as 'event_name', r.id_rule, r.name as 'rule_name', re.execute_sequence\n\t\t\t\t\t\t\tfrom vb_rules r\n\t\t\t\t\t\t\tinner join vb_loyalty_rule_events re on (r.id_rule = re.id_rule)\n\t\t\t\t\t\t\tinner join vb_loyalty_events le on le.id_event = re.id_event\n\t\t\t\t\t\t\twhere le.id_event = " . $message['id_event'] . " order by le.id_event, re.execute_sequence");
    foreach ($res as $rule_row) {
        if ($rule_row['id_rule'] == 9 || $rule_row['id_rule'] == 7) {
            continue;
        }
        $rewards_rule = RewardRules::getRule($rule_row['rule_name']);
        $rewards_rule->init($db);
        $rewards_rule->processEvent($db, $message);
        echo PHP_EOL;
    }
    return false;
}
 public function processEvent($db, $message)
 {
     echo "processing order_feedback";
     $id_customer = $message['id_customer'];
     $id_event = $message['id_event'];
     $date_add = $message['date_event'];
     $reference = (int) $message['reference'];
     $order = new Order($reference);
     //this order feedback is not from the same customer who placed this order
     if ((int) $order->id_customer != (int) $id_customer) {
         return false;
     }
     $result = $db->getRow("select \n                                        count(*) as processed\n                                    from \n                                        vb_customer_rewards\n                                    where \n                                        reference = " . $reference . "\n                                        and id_customer = " . $id_customer . "\n                                        and id_event = " . EVENT_ORDER_FEEDBACK);
     //Feedback reward for this order is already processed
     if ((int) $result['processed'] === 1) {
         return false;
     }
     // only one entry per day ( for multiple order feedbacks also )
     $todayPoints = $this->getTodaysOrderFeedbackPoints($db, $id_customer);
     if ($todayPoints === 0) {
         VBRewards::addRewardPoints($id_customer, $id_event, self::$id_rule, self::$order_feedback_points, 'Order Feedback', $reference, $date_add);
         return true;
     }
     $todayRewardId = (int) $todayPoints['id_reward'];
     $todayTotalPoints = (int) $todayPoints['points_awarded'] + self::$order_feedback_points;
     $todayBalance = VBRewards::getCustomerPoints($id_customer) + self::$order_feedback_points;
     $db->Execute("  UPDATE\n                                vb_customer_rewards \n                            SET \n                                points_awarded = " . $todayTotalPoints . ", balance = " . $todayBalance . "\n                            WHERE \n                                id_reward = " . $todayRewardId);
     $db->Execute("  UPDATE \n                                vb_customer_reward_balance \n                            SET \n                                balance = " . $todayBalance . "\n                            WHERE \n                                id_customer = " . (int) $id_customer);
     return true;
 }
示例#3
0
 public function processEvent($db, $message)
 {
     //Not processing this indusdiva
     return true;
     $id_customer = $message['id_customer'];
     $id_event = $message['id_event'];
     $date_add = $message['date_event'];
     $order = new Order((int) $message['reference']);
     if (self::rewardExistsForReference($id_customer, $id_event, self::$id_rule, $message['reference'])) {
         echo 'skipping processed reward' . PHP_EOL;
         return;
     }
     $points_added = $order->total_paid_real * self::$valid_order_points;
     VBRewards::addRewardPoints($id_customer, $id_event, self::$id_rule, $points_added, 'Order delivered - Order no ' . $order->id, $order->id, $date_add);
 }
 public function processEvent($db, $message)
 {
     echo "processing first_order_bonus : " . self::$first_order_bonus;
     $id_customer = $message['id_customer'];
     $id_event = $message['id_event'];
     if (self::rewardExistsForReference($id_customer, $id_event, self::$id_rule, $message['reference'])) {
         echo 'skipping processed reward' . PHP_EOL;
         return;
     }
     $date_add = $message['date_event'];
     $order = new Order((int) $message['reference']);
     if (Customer::getTotalDeliveredForCustomer($id_customer) == 1) {
         $points_added = self::$first_order_bonus;
         VBRewards::addRewardPoints($id_customer, $id_event, self::$id_rule, $points_added, 'First Order Bonus - Order no ' . $order->id, $order->id, $date_add);
     }
 }
 public function processEvent($db, $message)
 {
     echo "processing facebook_page_like . " . self::$facebook_page_like_points . PHP_EOL;
     $id_customer = $message['id_customer'];
     $id_event = $message['id_event'];
     $date_add = $message['date_event'];
     $reference = $message['reference'];
     $result = $db->getRow(" select \n                                    count(*) as 'page_likes'\n                                from \n                                    vb_customer_rewards\n\t\t\t\twhere \n                                    id_customer = " . $id_customer . "\n                                    and id_event = " . EVENT_FACEBOOK_PAGE_LIKE);
     $page_likes = (int) $result['page_likes'];
     $result = $db->getRow(" select \n                                    count(*) as 'page_unlikes'\n                                from \n                                    vb_customer_rewards\n\t\t\t\twhere \n                                    id_customer = " . $id_customer . "\n                                    and id_event = " . EVENT_FACEBOOK_PAGE_UNLIKE);
     $page_unlikes = (int) $result['page_unlikes'];
     if ($page_likes - $page_unlikes === 0) {
         VBRewards::addRewardPoints($id_customer, $id_event, self::$id_rule, self::$facebook_page_like_points, 'Facebook Like of Indusdiva Page', $reference, $date_add);
     }
     return true;
 }
 public function processEvent($db, $message)
 {
     echo "processing order_value_bonus : " . self::$order_value_bonus_150 . " : " . self::$order_value_bonus_250 . " : " . self::$order_value_bonus_500 . " : " . self::$order_value_bonus_750 . " : " . self::$order_value_bonus_1000 . " : " . self::$order_value_bonus_1500;
     $id_customer = $message['id_customer'];
     $id_event = $message['id_event'];
     if (self::rewardExistsForReference($id_customer, $id_event, self::$id_rule, $message['reference'])) {
         echo 'skipping processed reward' . PHP_EOL;
         return;
     }
     $date_add = $message['date_event'];
     $order = new Order((int) $message['reference']);
     $points_added = 0;
     $description = '';
     $actual_paid = $order->total_paid_real / $order->conversion_rate;
     if ($actual_paid >= 1500) {
         $description = 'Order Value Bonus (Above 1,500) - Order no ' . $order->id;
         $points_added = self::$order_value_bonus_1500;
     } else {
         if ($actual_paid >= 1000) {
             $description = 'Order Value Bonus (Above 1,000) - Order no ' . $order->id;
             $points_added = self::$order_value_bonus_1000;
         } else {
             if ($actual_paid >= 750) {
                 $description = 'Order Value Bonus (Above 750) - Order no ' . $order->id;
                 $points_added = self::$order_value_bonus_750;
             } else {
                 if ($actual_paid >= 500) {
                     $description = 'Order Value Bonus (Above 500) - Order no ' . $order->id;
                     $points_added = self::$order_value_bonus_500;
                 } else {
                     if ($actual_paid >= 250) {
                         $description = 'Order Value Bonus (Above 250) - Order no ' . $order->id;
                         $points_added = self::$order_value_bonus_250;
                     } else {
                         if ($actual_paid >= 150) {
                             $description = 'Order Value Bonus (Above 150) - Order no ' . $order->id;
                             $points_added = self::$order_value_bonus_150;
                         }
                     }
                 }
             }
         }
     }
     if ($points_added) {
         VBRewards::addRewardPoints($id_customer, $id_event, self::$id_rule, $points_added, $description, $order->id, $date_add);
     }
 }
 public function processEvent($db, $message)
 {
     echo "processing wishlist_product_facebook_share";
     $id_customer = $message['id_customer'];
     $id_event = $message['id_event'];
     $date_add = $message['date_event'];
     $reference = (int) $message['reference'];
     $result = $db->getRow("select \n                                        count(*) as processed\n                                    from \n                                        vb_customer_rewards\n                                    where \n                                        reference = " . $reference . "\n                                        and id_customer = " . $id_customer . "\n                                        and id_event = " . EVENT_WISHLIST_PRODUCT_FACEBOOK_SHARE);
     //Feedback reward for this order is already processed
     if ((int) $result['processed'] === 1) {
         return false;
     }
     $result = $db->getRow("select \n                                        sum(points_awarded) points_awarded, sum(points_deducted) points_deducted\n                                    from \n                                        vb_customer_rewards\n                                    where \n                                        id_customer = " . $id_customer . "\n                                        and id_event = " . EVENT_WISHLIST_PRODUCT_FACEBOOK_SHARE);
     $points_awarded = (int) $result['points_awarded'];
     $points_deducted = (int) $result['points_deducted'];
     $total_points_awarded = $points_awarded - $points_deducted;
     //limit for points awarded is reached
     if ($total_points_awarded >= 25 * self::$wishlist_product_facebook_share_points) {
         return false;
     }
     /*$todayPoints = $this->getTodaysWLSharePoints($db, $id_customer);
     
             if (!$todayPoints) {
                 VBRewards::addRewardPoints($id_customer, $id_event, self::$id_rule, self::$wishlist_product_facebook_share_points, 'Wishlist Product Share', $reference, $date_add);
                 return true;
             }
     
             $todayRewardId = (int) $todayPoints['id_reward'];
             $todayTotalPoints = (int) $todayPoints['points_awarded'] + self::$wishlist_product_facebook_share_points;
             $todayBalance = VBRewards::getCustomerPoints($id_customer) + self::$wishlist_product_facebook_share_points;
     
             $db->Execute(
                     "UPDATE vb_customer_rewards 
     						SET points_awarded = " . $todayTotalPoints . ", 
     						balance = " . $todayBalance . "
     						WHERE id_reward = " . $todayRewardId);
     
             $db->Execute("UPDATE vb_customer_reward_balance 
     						SET balance = " . $todayBalance . "
     						WHERE id_customer = " . (int) $id_customer);
     
                                                    
              
              */
     VBRewards::addRewardPoints($id_customer, $id_event, self::$id_rule, self::$wishlist_product_facebook_share_points, 'Wishlist Product Share', $reference, $date_add);
     return true;
 }
 public function processEvent($db, $message)
 {
     echo "processing product_review_approved : " . self::$product_review_points;
     $id_customer = $message['id_customer'];
     $id_event = $message['id_event'];
     $date_add = $message['date_event'];
     $reference = $message['reference'];
     /*
                     if($this->getTotalReviewPoints($db, $id_customer) > 2500)
         return;
     */
     if (self::rewardExistsForReference($id_customer, $id_event, self::$id_rule, $message['reference'])) {
         echo 'skipping processed reward' . PHP_EOL;
         return;
     }
     $points_added = self::$product_review_points;
     $product_name = $this->getProductName($db, (int) $reference);
     VBRewards::addRewardPoints($id_customer, $id_event, self::$id_rule, $points_added, 'Product Review - ' . $product_name, $reference, $date_add);
 }
 public function processEvent($db, $message)
 {
     return true;
     echo "processing first_approved_review_bonus : ";
     $id_customer = $message['id_customer'];
     $id_event = $message['id_event'];
     $date_add = $message['date_event'];
     $reference = $message['reference'];
     if (self::rewardExistsForReference($id_customer, $id_event, self::$id_rule, $message['reference'])) {
         echo 'skipping processed reward' . PHP_EOL;
         return;
     }
     //get the number of approved reviews
     $result = Db::getInstance()->getRow("select count(*) as 'total_approved' from ps_product_comment where validate = 1 and id_customer = " . $id_customer);
     if ($result['total_approved'] == 1) {
         $points_added = self::$first_review_bonus;
         VBRewards::addRewardPoints($id_customer, $id_event, self::$id_rule, $points_added, 'Product Review - First review bonus', $reference, $date_add);
     }
 }
 public function processEvent($db, $message)
 {
     echo "processing write_testimonial";
     $id_customer = $message['id_customer'];
     $id_event = $message['id_event'];
     $date_add = $message['date_event'];
     $reference = (int) $message['reference'];
     // only one entry per day ( for multiple order feedbacks also )
     $todayPoints = $this->getTodaysTestimonialPoints($db, $id_customer);
     if (!$todayPoints) {
         VBRewards::addRewardPoints($id_customer, $id_event, self::$id_rule, self::$write_testimonial_points, 'For Writing Testimonial', $reference, $date_add);
         return true;
     }
     $todayRewardId = (int) $todayPoints['id_reward'];
     $todayTotalPoints = (int) $todayPoints['points_awarded'] + self::$write_testimonial_points;
     $todayBalance = VBRewards::getCustomerPoints($id_customer) + self::$write_testimonial_points;
     $db->Execute("  UPDATE\n                                vb_customer_rewards \n                            SET \n                                points_awarded = " . $todayTotalPoints . ", balance = " . $todayBalance . "\n                            WHERE \n                                id_reward = " . $todayRewardId);
     $db->Execute("  UPDATE \n                                vb_customer_reward_balance \n                            SET \n                                balance = " . $todayBalance . "\n                            WHERE \n                                id_customer = " . (int) $id_customer);
     return true;
 }
 public function processEvent($db, $message)
 {
     echo "processing order_facebook_share";
     $id_customer = $message['id_customer'];
     $id_event = $message['id_event'];
     $date_add = $message['date_event'];
     $reference = (int) $message['reference'];
     $order = new Order($reference);
     //this order facebook share is not from the same customer who placed this order
     if ((int) $order->id_customer != (int) $id_customer) {
         return false;
     }
     $result = $db->getRow("select \n                                        count(*) as processed\n                                    from \n                                        vb_customer_rewards\n                                    where \n                                        reference = " . $reference . "\n                                        and id_customer = " . $id_customer . "\n                                        and id_event = " . EVENT_ORDER_FACEBOOK_SHARE);
     //Feedback reward for this order is already processed
     if ((int) $result['processed'] === 1) {
         return false;
     }
     VBRewards::addRewardPoints($id_customer, $id_event, self::$id_rule, self::$order_facebook_share_points, "Share Order Products on Facebook (Order - {$reference})", $reference, $date_add);
     return true;
 }
 public function processEvent($db, $message)
 {
     echo "processing referral_order_bonus : " . self::$referral_order_bonus_10 . " : " . self::$referral_order_bonus_25;
     $id_customer = $message['id_customer'];
     $id_event = $message['id_event'];
     $reference = $message['reference'];
     $date_add = $message['date_event'];
     if (Customer::getTotalDeliveredForCustomer($id_customer) == 1) {
         $customer = new Customer($id_customer);
         if (!$customer->id_referrer) {
             return;
         }
         $id_referrer = $customer->id_referrer;
         //get total reffered order for this referrer
         $referrals = Customer::getCustomerReferrals($id_referrer);
         $countReferredOrders = 0;
         foreach ($referrals as $referral) {
             if ($referral['total_delivered'] > 0) {
                 $countReferredOrders++;
             }
         }
         $points_added = 0;
         $description = '';
         if ($countReferredOrders == 10) {
             $description = 'Bonus Points - 10 friends referred';
             $points_added = self::$referral_order_bonus_10;
         }
         /*else if($countReferredOrders == 25)
         		{
         		    $description = 'Bonus Points - 25 friends referred';
         		    $points_added = self::$referral_order_bonus_25;
         		}*/
         if (self::rewardExistsForReference($id_referrer, $id_event, self::$id_rule, $reference)) {
             echo 'skipping processed reward' . PHP_EOL;
             return;
         }
         if ($points_added) {
             VBRewards::addRewardPoints($id_referrer, $id_event, self::$id_rule, $points_added, $description, $reference, $date_add);
         }
     }
 }
 public function processEvent($db, $message)
 {
     echo "processing google_plus_click : " . self::$google_plus_click_points;
     $id_customer = $message['id_customer'];
     $id_event = $message['id_event'];
     $date_add = $message['date_event'];
     $reference = $message['reference'];
     $result = $db->getRow("select sum(points_awarded) as 'total_points'\n\t\t\t\t\t\t\t\tfrom vb_customer_rewards\n\t\t\t\t\t\t\t\twhere id_customer = " . $id_customer . "\n\t\t\t\t\t\t\t\tand id_event = " . EVENT_GOOGLE_LIKE);
     if (!$result || $result['total_points'] == 0) {
         VBRewards::addRewardPoints($id_customer, $id_event, self::$id_rule, self::$google_plus_click_points, 'Google Plus Share', $reference, $date_add);
         return true;
     } else {
         $points_awarded = (int) $result['total_points'];
     }
     $result = $db->getRow("select sum(points_deducted) as 'total_points'\n\t\t\t\t\t\t\t\tfrom vb_customer_rewards\n\t\t\t\t\t\t\t\twhere id_customer = " . $id_customer . "\n\t\t\t\t\t\t\t\tand id_event = " . EVENT_GOOGLE_UNLIKE);
     if (!$result['total_points'] || $result['total_points'] == 0) {
         $points_deducted = 0;
     } else {
         $points_deducted = (int) $result['total_points'];
     }
     if ($points_awarded - $points_deducted >= 25 * self::$google_plus_click_points) {
         echo 'total points limit reached';
         return;
     }
     $todayPoints = $this->getTodaysGPlusPoints($db, $id_customer);
     if (!$todayPoints) {
         VBRewards::addRewardPoints($id_customer, $id_event, self::$id_rule, self::$google_plus_click_points, 'Google Plus Share', $reference, $date_add);
         return true;
     }
     $todayRewardId = (int) $todayPoints['id_reward'];
     $todayTotalPoints = (int) $todayPoints['points_awarded'] + self::$google_plus_click_points;
     $todayBalance = VBRewards::getCustomerPoints($id_customer) + self::$google_plus_click_points;
     $db->Execute("UPDATE vb_customer_rewards \n\t\t\t\t\t\tSET points_awarded = " . $todayTotalPoints . ", \n\t\t\t\t\t\tbalance = " . $todayBalance . "\n\t\t\t\t\t\tWHERE id_reward = " . $todayRewardId);
     $db->Execute("UPDATE vb_customer_reward_balance \n\t\t\t\t\t\tSET balance = " . $todayBalance . "\n\t\t\t\t\t\tWHERE id_customer = " . (int) $id_customer);
     return true;
 }
 public function processEvent($db, $message)
 {
     echo "processing referral_order_points : " . self::$referral_order_points;
     $id_customer = $message['id_customer'];
     $id_event = $message['id_event'];
     $reference = (int) $message['reference'];
     $date_add = $message['date_event'];
     if (Customer::getTotalDeliveredForCustomer($id_customer) == 1) {
         $customer = new Customer($id_customer);
         if (!$customer->id_referrer) {
             return;
         }
         $id_referrer = $customer->id_referrer;
         $points_added = self::$referral_order_points;
         if (self::rewardExistsForReference($id_referrer, $id_event, self::$id_rule, $reference)) {
             echo 'skipping processed reward referral bonus' . PHP_EOL;
             return;
         }
         $order = new Order((int) $reference);
         $referred_customer = new Customer($order->id_customer);
         VBRewards::addRewardPoints($id_referrer, $id_event, self::$id_rule, $points_added, "First order by a friend - " . $referred_customer->email, $reference, $date_add);
         VBRewards::addRewardPoints($id_customer, $id_event, self::$id_rule, $points_added, "First order through referral", $reference, $date_add);
     }
 }
示例#15
0
    public function addWithemail($autodate = true, $templateVars = false)
    {
        $lastOrderState = $this->getLastOrderState($this->id_order);
        if (!parent::add($autodate)) {
            return false;
        }
        $result = Db::getInstance()->getRow('
			SELECT osl.`template`, c.`lastname`, c.`firstname`, osl.`name` AS osname, c.`email`
			FROM `' . _DB_PREFIX_ . 'order_history` oh
				LEFT JOIN `' . _DB_PREFIX_ . 'orders` o ON oh.`id_order` = o.`id_order`
				LEFT JOIN `' . _DB_PREFIX_ . 'customer` c ON o.`id_customer` = c.`id_customer`
				LEFT JOIN `' . _DB_PREFIX_ . 'order_state` os ON oh.`id_order_state` = os.`id_order_state`
				LEFT JOIN `' . _DB_PREFIX_ . 'order_state_lang` osl ON (os.`id_order_state` = osl.`id_order_state` AND osl.`id_lang` = o.`id_lang`)
			WHERE oh.`id_order_history` = ' . (int) $this->id . '
				AND os.`send_email` = 1');
        $order = new Order((int) $this->id_order);
        if (isset($result['template']) and Validate::isEmail($result['email'])) {
            $topic = $result['osname'];
            $data = array('{lastname}' => $result['lastname'], '{firstname}' => $result['firstname'], '{id_order}' => (int) $this->id_order);
            if ($templateVars) {
                $data = array_merge($data, $templateVars);
            }
            $data['{total_paid}'] = Tools::displayPrice((double) $order->total_paid, new Currency((int) $order->id_currency), false);
            $data['{order_name}'] = sprintf("#%06d", (int) $order->id);
            // An additional email is sent the first time a virtual item is validated
            if ($virtualProducts = $order->getVirtualProducts() and (!$lastOrderState or !$lastOrderState->logable) and $newOrderState = new OrderState($this->id_order_state, Configuration::get('PS_LANG_DEFAULT')) and $newOrderState->logable) {
                global $smarty;
                $assign = array();
                foreach ($virtualProducts as $key => $virtualProduct) {
                    $id_product_download = ProductDownload::getIdFromIdProduct($virtualProduct['product_id']);
                    $product_download = new ProductDownload($id_product_download);
                    $assign[$key]['name'] = $product_download->display_filename;
                    $dl_link = $product_download->getTextLink(false, $virtualProduct['download_hash']) . '&id_order=' . $order->id . '&secure_key=' . $order->secure_key;
                    $assign[$key]['link'] = $dl_link;
                    if ($virtualProduct['download_deadline'] != '0000-00-00 00:00:00') {
                        $assign[$key]['deadline'] = Tools::displayDate($virtualProduct['download_deadline'], $order->id_lang);
                    }
                    if ($product_download->nb_downloadable != 0) {
                        $assign[$key]['downloadable'] = $product_download->nb_downloadable;
                    }
                }
                $smarty->assign('virtualProducts', $assign);
                $smarty->assign('id_order', $order->id);
                $iso = Language::getIsoById((int) $order->id_lang);
                $links = $smarty->fetch(_PS_MAIL_DIR_ . $iso . '/download-product.tpl');
                $tmpArray = array('{nbProducts}' => count($virtualProducts), '{virtualProducts}' => $links);
                $data = array_merge($data, $tmpArray);
                global $_LANGMAIL;
                Mail::Send((int) $order->id_lang, 'download_product', Mail::l('Virtual product to download'), $data, $result['email'], $result['firstname'] . ' ' . $result['lastname']);
            }
            //custom subjects
            $emailSubject = $topic;
            $smsText = '';
            $delivery = new Address((int) $order->id_address_delivery);
            if ($this->id_order_state == _PS_OS_CANCELED_) {
                $emailSubject = 'Your order #' . $order->id . ' with IndusDiva.com has been cancelled';
                $smsText = 'Dear customer, your order #' . $order->id . ' with IndusDiva.com has been cancelled. www.indusdiva.com';
                Tools::sendSMS($delivery->phone_mobile, $smsText);
            } else {
                if ($this->id_order_state == _PS_OS_REFUND_) {
                    $emailSubject = 'Refund of your payment at IndusDiva.com';
                    $smsText = 'Dear customer, an amount of ' . Tools::displayPrice((double) $order->total_paid) . ' has been credited to your account against your order #' . $order->id . ' at IndusDiva.com. www.indusdiva.com';
                    Tools::sendSMS($delivery->phone_mobile, $smsText);
                }
            }
            if (Validate::isLoadedObject($order)) {
                Mail::Send((int) $order->id_lang, $result['template'], $emailSubject, $data, $result['email'], $result['firstname'] . ' ' . $result['lastname']);
            }
        }
        /* Send loyalty rules message */
        if ($this->id_order_state == _PS_OS_DELIVERED_) {
            $customer = new Customer($order->id_customer);
            $customer->total_delivered++;
            $customer->update();
            Tools::sendSQSRuleMessage(EVENT_ORDER_DELIVERED, $order->id, $order->id_customer, $this->date_add);
        } else {
            if ($this->id_order_state == _PS_OS_CANCELED_) {
                $order_cart = new Cart($order->id_cart);
                $points_redeemed = $order_cart->getPoints();
                if ($points_redeemed) {
                    VBRewards::addRewardPoints($order->id_customer, EVENT_ORDER_CANCELLED, 0, $points_redeemed, 'Redemption order cancelled - Order no ' . $order->id, $order->id, $order->date_add);
                }
                /*
                			//if online payment bonus awarded
                			$reward = rule_base::getReward($order->id_customer, ONLINE_ORDER, 0, $order->id);
                if($reward)
                {
                    $points_removed = $reward['points_awarded'];
                    VBRewards::removeRewardPoints($order->id_customer, EVENT_ORDER_CANCELLED, 0, $points_removed, 'Order Cancellation - Bonus coins reverted - Order no ' . $order->id, $order->id, $this->date_add);
                }
                */
                //if the order was delivered
                if ($lastOrderState->id == _PS_OS_DELIVERED_) {
                    $customer = new Customer($order->id_customer);
                    $customer->total_delivered--;
                    $customer->update();
                    Tools::sendSQSRuleMessage(EVENT_ORDER_CANCELLED, $order->id, $order->id_customer, $this->date_add);
                }
            } else {
                if ($this->id_order_state == _PS_OS_PREPARATION_) {
                    if ($lastOrderState->id == _PS_OS_CANCELED_) {
                        $order_cart = new Cart($order->id_cart);
                        $points_redeemed = $order_cart->getPoints();
                        if ($points_redeemed > 0) {
                            VBRewards::removeRewardPoints($order->id_customer, EVENT_POINTS_REDEEMED, 0, $points_redeemed, 'Coins redeemed - Order no ' . $order->id, $order->id, $order->date_add);
                        }
                    }
                }
            }
        }
        return true;
    }