Exemplo n.º 1
0
 /**
  * public function to update status of order
  *
  * @param   INTEGER  $order_id   : int id of order
  * @param   STRING   $status     : string status of order
  * @param   STRING   $comment    : string default='' comment added if any
  * @param   INTEGER  $send_mail  : int default=1 weather to send status change mail or not.
  * @param   INTEGER  $store_id   :: INTEGER (1/0) if we are updating store product status
  *
  * @return  void
  */
 public function updatestatus($order_id, $status, $comment = '', $send_mail = 1, $store_id = 0)
 {
     global $mainframe;
     $params = JComponentHelper::getParams('com_quick2cart');
     $comquick2cartHelper = new comquick2cartHelper();
     $productHelper = new productHelper();
     $mainframe = JFactory::getApplication();
     $order_oldstatus = '';
     $db = JFactory::getDBO();
     if ($send_mail == 1) {
         // For changing store product order
         if (!empty($store_id)) {
             $query = 'SELECT o.status FROM `#__kart_order_item` as o WHERE o.order_id =' . $order_id . ' AND o.`store_id`=' . $store_id . ' order by `order_item_id`';
         } else {
             $query = "SELECT o.status FROM #__kart_orders as o WHERE o.id =" . $order_id;
         }
         $db->setQuery($query);
         $order_oldstatus = $db->loadResult();
     }
     switch ($status) {
         case 'C':
             // To reduce stock
             $usestock = $params->get('usestock');
             $outofstock_allowship = $params->get('outofstock_allowship');
             // $outofstock_allowship==1)
             if ($usestock == 1 && $order_oldstatus != $status) {
                 $comquick2cartHelper->updateItemStock($order_id);
                 $comquick2cartHelper->updateStoreFee($order_id);
                 $productHelper->addEntryInOrderItemFiles($order_id);
                 $productHelper->addPoint($order_id);
             }
             break;
     }
     $res = new stdClass();
     // UPDATING STORE ORDER CHANGES
     if (!empty($store_id)) {
         // Change ORDER_ITEM STATUS// here i want order_item_id to update status of all order item releated to store
         $isOrderStatusChanged = $comquick2cartHelper->updateOrderItemStatus($order_id, $store_id, $status);
         // 1 for order status change, 0 for order item change
         if (empty($isOrderStatusChanged)) {
             // $return ;
         }
     } else {
         // IF admin changes ORDER status
         if (empty($status) || $status == -1) {
             $res->status = $status;
         }
         $res->id = $order_id;
         if (!$db->updateObject('#__kart_orders', $res, 'id')) {
             return 2;
         }
         $isOrderStatusChanged = $comquick2cartHelper->updateOrderItemStatus($order_id, 0, $status);
         // UPDATE ORDER ITEM STATUS ALSO
     }
     // Call the plugin and get the result
     $query = "SELECT o.* FROM #__kart_orders as o WHERE o.id =" . $order_id;
     $db->setQuery($query);
     $orderobj = $db->loadObject();
     $dispatcher = JDispatcher::getInstance();
     JPluginHelper::importPlugin('system');
     $result = $dispatcher->trigger('Onq2cOrderUpdate', array($orderobj));
     // END Q2C Sample development
     //if ($send_mail == 1 && $order_oldstatus != $status)
     if ($send_mail == 1) {
         $params = JComponentHelper::getParams('com_quick2cart');
         // $adminemails = comquick2cartHelper::adminMails();
         $query = "SELECT ou.user_id,ou.user_email,ou.firstname FROM #__kart_users as ou WHERE ou.address_type='BT' AND ou.order_id = " . $order_id;
         $db->setQuery($query);
         $orderuser = $db->loadObjectList();
         // Change for backward compatiblity for user info not saving order id against it
         if (empty($orderuser)) {
             $query = "SELECT ou.user_id,ou.user_email,ou.firstname\n\t\t\t\t\t\t\tFROM #__kart_users as ou\n\t\t\t\t\t\t\tWHERE ou.address_type='BT' AND ou.order_id IS NULL\n\t\t\t\t\t\t\tAND ou.user_id = (SELECT o.user_info_id FROM #__kart_orders as o WHERE o.id =" . $order_id . ")";
             $db->setQuery($query);
             $orderuser = $db->loadObjectList();
         }
         $orderuser = $orderuser[0];
         switch ($status) {
             case 'C':
                 $orderstatus = JText::_('QTC_CONFR');
                 /*for invoice*/
                 $useinvoice = $params->get('useinvoice', '1');
                 if ($useinvoice == '1') {
                     $this->invoice = 1;
                     $jinput = JFactory::getApplication()->input;
                     $jinput->set('orderid', $order_id);
                     $order = $order_bk = $comquick2cartHelper->getorderinfo($order_id);
                     $this->orderinfo = $order['order_info'];
                     $this->orderitems = $order['items'];
                     $this->orders_site = 1;
                     $this->orders_email = 1;
                     $this->order_authorized = 1;
                     if ($this->orderinfo[0]->address_type == 'BT') {
                         $billemail = $this->orderinfo[0]->user_email;
                     } elseif ($this->orderinfo[1]->address_type == 'BT') {
                         $billemail = $this->orderinfo[1]->user_email;
                     }
                     $fullorder_id = $order['order_info'][0]->prefix . $order_id;
                     $this->qtcSystemEmails = 1;
                     if (!JFactory::getUser()->id && $params->get('guest')) {
                         $jinput->set('email', md5($billemail));
                     }
                     // Getting the site info for site invoice layout
                     $this->siteInvoiceInfo = $this->getSiteInvoiceInfo();
                     // Check for view override
                     $view = $comquick2cartHelper->getViewpath('orders', 'order');
                     ob_start();
                     include $view;
                     $invoicehtml = ob_get_contents();
                     ob_end_clean();
                 }
                 /*for invoice*/
                 break;
             case 'RF':
                 $orderstatus = JText::_('QTC_REFUN');
                 break;
             case 'S':
                 $orderstatus = JText::_('QTC_SHIP');
                 break;
             case 'E':
                 $orderstatus = JText::_('QTC_ERR');
                 break;
             case 'P':
                 $orderstatus = JText::_('QTC_PENDIN');
                 break;
             default:
                 $orderstatus = $status;
                 break;
         }
         $fullorder_id = $orderobj->prefix . $order_id;
         if (!empty($store_id)) {
             $productStatus = $comquick2cartHelper->getProductStatus($order_id);
             $body = JText::sprintf('QTC_STORE_PRODUCT_STATUS_CHANGE_BODY', $productStatus);
         } else {
             $body = JText::_('QTC_STATUS_CHANGE_BODY');
         }
         $site = $mainframe->getCfg('sitename');
         if ($comment) {
             $comment = str_replace('{COMMENT}', $comment, JText::_('QTC_COMMENT_TEXT'));
         } else {
             $comment = '';
         }
         $find = array('{ORDERNO}', '{STATUS}', '{SITENAME}', '{NAME}', '{COMMENTTEXT}');
         $replace = array($fullorder_id, $orderstatus, $site, $orderuser->firstname, $comment);
         $body = str_replace($find, $replace, $body);
         $guest_email = '';
         if (!$orderuser->user_id && $params->get('guest')) {
             $guest_email = "&email=" . md5($orderuser->user_email);
         }
         $Itemid = $comquick2cartHelper->getitemid('index.php?option=com_quick2cart&view=orders');
         $tempLink = JRoute::_('index.php?option=com_quick2cart&view=orders&layout=order' . $guest_email . '&orderid=' . $order_id . '&Itemid=' . $Itemid);
         $link = JUri::root() . substr($tempLink, strlen(JUri::base(true)) + 1);
         $order_link = '<a href="' . $link . '">' . JText::_('QTC_ORDER_GUEST_LINK') . '</a>';
         $body = str_replace('{LINK}', $order_link, $body);
         $body = nl2br($body);
         // GETTING BODY AND MAIL SUBJECT
         if (!empty($invoicehtml)) {
             $body = $body . '<div>' . JText::_('QTC_ORDER_INVOICE_IN_MAIL') . '</div>' . $invoicehtml;
             $subject = JText::sprintf('QTC_INVOICE_MAIL_SUB', $site, $fullorder_id);
         } else {
             $subject = JText::sprintf('QTC_STATUS_CHANGE_SUBJECT', $fullorder_id);
         }
         // Call the plugin and get the result
         $dispatcher = JDispatcher::getInstance();
         JPluginHelper::importPlugin('system');
         $result = $dispatcher->trigger('OnBeforeq2cOrderUpdateEmail', array($orderobj, $subject, $body));
         if (!empty($result[0])) {
             $subject = $result[0][0];
             $body = $result[0][1];
         }
         // Send mail
         $comquick2cartHelper->sendmail($orderuser->user_email, $subject, $body, $params->get('sale_mail'));
     }
 }