public function display($tpl = null) { $app = JFactory::getApplication(); $user = JFactory::getUser(); $this->params = Djcatalog2Helper::getParams(); $this->state = $this->get('State'); $this->item = $this->get('Item'); if (empty($this->item)) { return JError::raiseError(404, JText::_('COM_DJCATALOG2_ORDER_NOT_FOUND')); return; } if ($user->guest) { $return_url = base64_encode(DJCatalogHelperRoute::getOrderRoute($this->item->id)); $app->redirect(JRoute::_('index.php?option=com_users&view=login&return=' . $return_url, false), JText::_('COM_DJCATALOG2_PLEASE_LOGIN')); return true; } if ($user->id != $this->item->user_id) { return JError::raiseWarning(403, JText::_('JERROR_ALERTNOAUTHOR')); } $this->items = $this->item->items; // Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseError(500, implode("\n", $errors)); return false; } $this->_prepareDocument(); parent::display($tpl); }
public function confirm() { JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); if ($this->allowCheckout() == false) { return false; } $app = JFactory::getApplication(); $date = JFactory::getDate(); $model = $this->getModel('Order'); $db = JFactory::getDbo(); $post_data = $this->input->post->get('jform', array(), 'array'); $basket = Djcatalog2HelperCart::getInstance(); $items = $basket->getItems(); $user = Djcatalog2Helper::getUser(); $user_data = Djcatalog2Helper::getUserProfile($user->id); $user_data = JArrayHelper::fromObject($user_data); $form = $model->getForm(array(), false); if (!$form) { $app->enqueueMessage($model->getError(), 'error'); return false; } $form_data = array(); $fields = $form->getFieldset('basicprofile'); foreach ($fields as $field) { if (isset($user_data[$field->fieldname])) { $form_data[$field->fieldname] = $user_data[$field->fieldname]; } if (isset($post_data['djcatalog2profile'][$field->fieldname])) { $form_data[$field->fieldname] = $post_data['djcatalog2profile'][$field->fieldname]; } if (!isset($form_data[$field->fieldname])) { $form_data[$field->fieldname] = null; } } $data = array('djcatalog2profile' => $form_data); if (empty($data) || empty($data['djcatalog2profile'])) { $data = array('djcatalog2profile' => $user_data); } // Test whether the data is valid. $validData = $model->validate($form, $data); // Check for validation errors. if ($validData === false) { // Get the validation messages. $errors = $model->getErrors(); // Push up to three validation messages out to the user. for ($i = 0, $n = count($errors); $i < $n && $i < 3; $i++) { if ($errors[$i] instanceof Exception) { $app->enqueueMessage($errors[$i]->getMessage(), 'warning'); } else { $app->enqueueMessage($errors[$i], 'warning'); } } // Save the data in the session. $app->setUserState('com_djcatalog2.order.data', $data); // Redirect back to the quote screen. $this->setRedirect(JRoute::_(DJCatalogHelperRoute::getQueryRoute(), false)); return false; } $totals = $basket->getTotal(); $tax_rules = $user_data->tax_rules; $app->setUserState('com_djcatalog2.order.data', $validData); $orderData = $validData['djcatalog2profile']; $order = array(); $order['id'] = null; $order['user_id'] = $user->id; if (($user->guest || empty($user->email)) && !empty($orderData['email'])) { $quote['email'] = $orderData['email']; } else { $quote['email'] = $user->email; } $order['order_number'] = null; $order['invoice_number'] = null; $order['created_date'] = $date->toSql(true); $order['total'] = $totals['net']; $order['tax'] = $totals['tax']; $order['grand_total'] = $totals['gross']; $order['payment_method'] = ''; $order['currency'] = ''; $order['status'] = $user->guest ? 'N' : 'A'; $quote['firstname'] = $orderData['firstname']; $quote['lastname'] = $orderData['lastname']; $quote['company'] = $orderData['company']; $quote['address'] = $orderData['address']; $quote['city'] = $orderData['city']; $quote['postcode'] = $orderData['postcode']; $quote['country_id'] = $orderData['country_id']; if ((empty($orderData['country_name']) || $orderData['country_name'] == '*') && !empty($orderData['country_id'])) { $db->setQuery('select country_name from #__djc2_countries where id=' . (int) $orderData['country_id']); $country = $db->loadResult(); $quote['country'] = $country ? $country : ''; } else { $quote['country'] = $orderData['country_name']; } $quote['vat_id'] = $orderData['vat_id']; $quote['customer_note'] = $orderData['customer_note']; $order_items = array(); foreach ($items as $item) { $record = array(); $record['id'] = 0; $record['item_id'] = $item->id; $record['item_name'] = $item->name; $record['quantity'] = $item->_quantity; $record['cost'] = $item->_prices['total']['net']; $record['base_cost'] = $item->_prices['base']['net']; $record['tax'] = $item->_prices['total']['tax']; $record['total'] = $item->_prices['total']['gross']; $record['tax_rate'] = isset($tax_rules[$item->tax_rate_id]) && $item->tax_rate_id > 0 ? round($tax_rules[$item->tax_rate_id] / 100, 4) : 0; $order_items[] = $record; } $order['order_items'] = array(); foreach ($order_items as $pos => $rec) { foreach ($rec as $key => $value) { if (!isset($order['order_items'][$key])) { $order['order_items'][$key] = array(); } $order['order_items'][$key][] = $value; } } if ($model->save($order) == false) { $msg = $model->getError(); $app->redirect(JRoute::_(DJCatalogHelperRoute::getCheckoutRoute(), false), JText::_('COM_DJCATALOG2_ORDER_STORE_ERRROR') . ' ' . $msg); return false; } $basket->clear(); $order['id'] = $model->getState('order.id'); $order['order_number'] = $model->getState('order.number'); $order['items'] = $order_items; if ($this->_sendEmail($order, 'order') == false) { $app->enqueueMessage(JText::_('COM_DJCATLAOG2_ORDER_NOTIFICATION_ERROR'), 'error'); } $app->redirect(JRoute::_(DJCatalogHelperRoute::getOrderRoute($order['id']), false), JText::_('COM_DJCATALOG2_ORDER_SENT')); return true; }
?> </td> <td align="center"><?php echo DJCatalog2HtmlHelper::formatPrice($item['tax'], $params, false); ?> </td> <td align="center"><?php echo DJCatalog2HtmlHelper::formatPrice($item['total'], $params, false); ?> </td> </tr> <?php } ?> </tbody> </table> <br /> <p> <?php echo JText::_('COM_DJCATALOG2_EMAIL_ORDER_CLIENT_FOOTER'); ?> <a href="<?php echo JRoute::_(DJCatalogHelperRoute::getOrderRoute($data['id']), true, -1); ?> "> <?php echo JText::_('COM_DJCATALOG2_EMAIL_ORDER_CLIENT_LINK'); ?> </a> </p> </div>
echo JText::_('COM_DJCATALOG2_ORDER_STATUS'); ?> </th> <th class="djc_thead djc_thead_order_total"> <?php echo JText::_('COM_DJCATALOG2_ORDER_FINAL_PRICE'); ?> </th> </tr> </thead> <tbody> <?php $k = 1; foreach ($this->items as $item) { $k = 1 - $k; $order_url = JRoute::_(DJCatalogHelperRoute::getOrderRoute($item->id)); ?> <tr class="cat-list-row<?php echo $k; ?> djc_row<?php echo $k; ?> "> <td class="djc_td_order_no"> <a href="<?php echo $order_url; ?> "><?php echo str_pad($item->order_number, 5, '0', STR_PAD_LEFT); ?>
* * You should have received a copy of the GNU General Public License * along with DJ-Catalog2. If not, see <http://www.gnu.org/licenses/>. * */ defined('_JEXEC') or die('Restricted access'); $params = JComponentHelper::getParams('com_djcatalog2'); require_once JPATH_ROOT . DS . 'components' . DS . 'com_djcatalog2' . DS . 'helpers' . DS . 'route.php'; ?> <div style="width: 800px; margin: 0 auto"> <p> <?php echo JText::sprintf('COM_DJCATALOG2_EMAIL_ORDER_STATUS_CLIENT_HEADER', $data['firstname'], JText::_('COM_DJCATALOG2_ORDER_STATUS_' . $data['status']), str_pad($data['order_number'], 5, '0', STR_PAD_LEFT)); ?> </p> <p> <?php echo JText::_('COM_DJCATALOG2_EMAIL_ORDER_CLIENT_FOOTER'); ?> <a href="<?php echo JUri::root(false) . DJCatalogHelperRoute::getOrderRoute($data['id']); ?> "> <?php echo JText::_('COM_DJCATALOG2_EMAIL_ORDER_CLIENT_LINK'); ?> </a> </p> </div>