/** * 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')); } }