public function update_message() { $app = JFactory::getApplication(); $order_id = $app->input->get('order_id'); $customer_id = $app->input->get('customer_id'); $order = new JeproshopOrderModelOrder($order_id); if (isset($order)) { if ($this->viewAccess()) { $customer = new JeproshopCustomerModelCustomer($customer_id); if (!JeproshopTools::isLoadedObject($customer, 'customer_id')) { JError::raiseError(JText::_('COM_JEPROSHOP_CUSTOMER_IS_INVALID_MESSAGE')); } elseif (!$inputMessage) { JError::raiseError(JText::_('COM_JEPROSHOP_THE_MESSAGE_CANNOT_BE_BLANK_MESSAGE')); } else { /** Get Message rules anf check fields validity */ $rules = JeproshopMessageModelMessage::getValidationRules(); foreach ($rules->required as $field) { $value = $app->input->get($field) == false; if ($value && (string) $value != '0') { if ($order_id || $field != 'passwd') { JError::raiseError($field . ' ' . JText::_('COM_JEPROSHOP_IS_REQUIRED_FIELD_MESSAGE')); } } } foreach ($rules->size as $field => $maxLength) { if ($app->input->get($field) && strlen($field) > $maxLength) { JError::raiseError($field . ' ' . JText::_('COM_JEPROSHOP_FIELD_IS_TOO_LONG_LABEL') . ' ' . $maxLength . ' ' . JText::_('COM_JEPROSHOP_MAX_CHARS_LABEL')); } } foreach ($rules->validate as $field => $function) { if ($app->input->get($field)) { if (!JeproshopTools::$function()) { JError::raiseError(JText::_('COm_JEPROSHOP_FIELD_IS_INVALID_LABEL')); } } } if (12) { $customer_thread_id = JeproshopCustomerThreadModelCustomerThread::getCustomerThreadIdByEmailAndOrderId($customer->email, $order->order_id); if (!$customer_thread_id) { $customerThread = new JeproshopCustomerThreadModelCustomerThread(); $customerThread->contact_id = 0; $customerThread->customer_id = (int) $order->customer_id; $customerThread->shop_id = (int) $context->shop->shop_id; $customerThread->order_id = (int) $order->order_id; $customerThread->lang_id = (int) $context->language->lang_id; $customerThread->email = $customer->email; $customerThread->status = 'open'; $customerThread->token = JeproshopTools::passwdGen(12); $customerThread->add(); } else { $customerThread = new JeproshopCustomerThreadModelCustomerThread((int) $customer_thread_id); } $customerMessage = new JeproshopCustomerMessageModelCustomerMessage(); $customerMessage->customer_thread_id = $customerThread->customer_thread_id; $customerMessage->employee_id = (int) $context->employee->employee_id; $customerMessage->message = $app->input->get('message'); $customerMessage->private = $app->input->get('visibility'); if (!$customerMessage->add()) { JError::raiseError(JText::_('COM_JEPROSHOP_AN_ERROR_WHILE_')); } elseif ($customerMessage->private) { $app->redirect('index.php?option=com_jeproshop&view=order&task=view&order_id=' . (int) $order->order_id); } else { } } } } } }
public function renderView($tpl = NULL) { if (!isset($this->context) || $this->context == null) { $this->context = JeproshopContext::getContext(); } $app = JFactory::getApplication(); $order = new JeproshopOrderModelOrder($app->input->get('order_id')); if (!JeproshopTools::isLoadedObject($order, 'order_id')) { JError::raiseError(500, JText::_('COM_JEPROSHOP_THE_ORDER_CANNOT_BE_FOUND_WITHIN_YOUR_DATA_BASE_MESSAGE')); } $customer = new JeproshopCustomerModelCustomer($order->customer_id); $carrier = new JeproshopCarrierModelCarrier($order->carrier_id); $products = $this->getProducts($order); $currency = new JeproshopCurrencyModelCurrency((int) $order->currency_id); // Carrier module call $carrier_module_call = null; if ($carrier->is_module) { /*$module = Module::getInstanceByName($carrier->external_module_name); if (method_exists($module, 'displayInfoByCart')) $carrier_module_call = call_user_func(array($module, 'displayInfoByCart'), $order->id_cart); */ } // Retrieve addresses information $addressInvoice = new JeproshopAddressModelAddress($order->address_invoice_id, $this->context->language->lang_id); if (JeproshopTools::isLoadedObject($addressInvoice, 'address_id') && $addressInvoice->state_id) { $invoiceState = new JeproshopStateModelState((int) $addressInvoice->state_id); } if ($order->address_invoice_id == $order->address_delivery_id) { $addressDelivery = $addressInvoice; if (isset($invoiceState)) { $deliveryState = $invoiceState; } } else { $addressDelivery = new JeproshopAddressModelAddress($order->address_delivery_id, $this->context->language->lang_id); if (JeproshopTools::isLoadedObject($addressDelivery, 'address_id') && $addressDelivery->state_id) { $deliveryState = new JeproshopStateModelState((int) $addressDelivery->state_id); } } $title = JText::_('COM_JEPROSHOP_ORDER_LABEL') . ' '; //todo learn how to display //$toolbar_title = sprintf($this->l('Order #%1$d (%2$s) - %3$s %4$s'), $order->order_id, $order->reference, $customer->firstname, $customer->lastname); if (JeproshopShopModelShop::isFeaturePublished()) { $shop = new JeproshopShopModelShop((int) $order->shop_id); //$this->toolbar_title .= ' - '.sprintf($this->l('Shop: %s'), $shop->name); } JToolBarHelper::title($title); // gets warehouses to ship products, if and only if advanced stock management is activated $warehouse_list = null; $order_details = $order->getOrderDetailList(); foreach ($order_details as $order_detail) { $product = new JeproshopProductModelProduct($order_detail->product_id); if (JeproshopSettingModelSetting::getValue('advanced_stock_management') && $product->advanced_stock_management) { $warehouses = JeproshopWarehouseModelWarehouse::getWarehousesByProductId($order_detail->product_id, $order_detail->product_attribute_id); foreach ($warehouses as $warehouse) { if (!isset($warehouse_list[$warehouse->warehouse_id])) { $warehouse_list[$warehouse->warehouse_id] = $warehouse; } } } } $payment_methods = array(); /*foreach (PaymentModule::getInstalledPaymentModules() as $payment) { $module = Module::getInstanceByName($payment['name']); if (Validate::isLoadedObject($module) && $module->active) $payment_methods[] = $module->displayName; }*/ // display warning if there are products out of stock $display_out_of_stock_warning = false; $current_order_status = $order->getCurrentOrderStatus(); if (JeproshopSettingModelSetting::getValue('stock_management') && (!JeproshopTools::isLoadedObject($current_order_status, 'order_id') || $current_order_status->delivery != 1 && $current_order_status->shipped != 1)) { $display_out_of_stock_warning = true; } // products current stock (from stock_available) foreach ($products as &$product) { $product->current_stock = JeproshopStockAvailableModelStockAvailable::getQuantityAvailableByProduct($product->product_id, $product->product_attribute_id, $product->shop_id); $resume = JeproshopOrderSlipModelOrderSlip::getProductSlipResume($product->order_detail_id); $product->quantity_refundable = $product->product_quantity - $resume->product_quantity; $product->amount_refundable = $product->total_price_tax_incl - $resume->amount_tax_incl; $product->amount_refund = JeproshopTools::displayPrice($resume->amount_tax_incl, $currency); $product->refund_history = JeproshopOrderSlipModelOrderSlip::getProductSlipDetail($product->order_detail_id); $product->return_history = JeproshopOrderReturnModelOrderReturn::getProductReturnDetail($product->order_detail_id); // if the current stock requires a warning if ($product->current_stock == 0 && $display_out_of_stock_warning) { JError::raiseWarning(500, JText::_('COM_JEPROSHOP_THIS_PRODUCT_IS_OUT_OF_STOCK_LABEL') . ' : ' . $product->product_name); } if ($product->warehouse_id != 0) { $warehouse = new JeproshopWarehouseModelWarehouse((int) $product->warehouse_id); $product->warehouse_name = $warehouse->name; } else { $product->warehouse_name = '--'; } } //$gender = new Gender((int)$customer->id_gender, $this->context->language->id); $history = $order->getHistory($this->context->language->lang_id); foreach ($history as &$order_state) { $order_state->text_color = JeproshopTools::getBrightness($order_state->color) < 128 ? 'white' : 'black'; } $this->setLayout('view'); $this->assignRef('order', $order); $cart = new JeproshopCartModelCart($order->cart_id); $this->assignRef('cart', $cart); $this->assignRef('customer', $customer); $customer_addresses = $customer->getAddresses($this->context->language->lang_id); $this->assignRef('customer_addresses', $customer_addresses); $this->assignRef('delivery_address', $addressDelivery); $this->assignRef('deliveryState', isset($deliveryState) ? $deliveryState : null); $this->assignRef('invoice_address', $addressInvoice); $this->assignRef('invoiceState', isset($invoiceState) ? $invoiceState : null); $customerStats = $customer->getStats(); $this->assignRef('customerStats', $customerStats); $this->assignRef('products', $products); $discounts = $order->getCartRules(); $this->assignRef('discounts', $discounts); $orderTotalPaid = $order->getOrdersTotalPaid(); $this->assignRef('orders_total_paid_tax_incl', $orderTotalPaid); // Get the sum of total_paid_tax_incl of the order with similar reference $totalPaid = $order->getTotalPaid(); $this->assignRef('total_paid', $totalPaid); $returns = JeproshopOrderReturnModelOrderReturn::getOrdersReturn($order->customer_id, $order->order_id); $this->assignRef('returns', $returns); $customerThreads = JeproshopCustomerThreadModelCustomerThread::getCustomerMessages($order->customer_id); $this->assignRef('customer_thread_message', $customerThreads); $orderMessages = JeproshopOrderMessageModelOrderMessage::getOrderMessages($order->lang_id); $this->assignRef('order_messages', $orderMessages); $messages = JeproshopMessageModelMessage::getMessagesByOrderId($order->order_id, true); $this->assignRef('messages', $messages); $carrier = new JeproshopCarrierModelCarrier($order->carrier_id); $this->assignRef('carrier', $carrier); $this->assignRef('history', $history); $statues = JeproshopOrderStatusModelOrderStatus::getOrderStatus($this->context->language->lang_id); $this->assignRef('order_statues', $statues); $this->assignRef('warehouse_list', $warehouse_list); $sources = JeproshopConnectionSourceModelConnectionSource::getOrderSources($order->order_id); $this->assignRef('sources', $sources); $orderStatus = $order->getCurrentOrderStatus(); $this->assignRef('current_status', $orderStatus); $this->assignRef('currency', new JeproshopCurrencyModelCurrency($order->currency_id)); $currencies = JeproshopCurrencyModelCurrency::getCurrenciesByShopId($order->shop_id); $this->assignRef('currencies', $currencies); $previousOrder = $order->getPreviousOrderId(); $this->assignRef('previousOrder', $previousOrder); $nextOrder = $order->getNextOrderId(); $this->assignRef('nextOrder', $nextOrder); //$this->assignRef('current_index', self::$currentIndex); $this->assignRef('carrier_module_call', $carrier_module_call); $this->assignRef('iso_code_lang', $this->context->language->iso_code); $this->assignRef('lang_id', $this->context->language->lang_id); $can_edit = true; $this->assignRef('can_edit', $can_edit); //($this->tabAccess['edit'] == 1)); $this->assignRef('current_id_lang', $this->context->language->lang_id); $invoiceCollection = $order->getInvoicesCollection(); $this->assignRef('invoices_collection', $invoiceCollection); $unPaid = $order->getNotPaidInvoicesCollection(); $this->assignRef('not_paid_invoices_collection', $unPaid); $this->assignRef('payment_methods', $payment_methods); $invoiceAllowed = JeproshopSettingModelSetting::getValue('invoice_allowed'); $this->assignRef('invoice_management_active', $invoiceAllowed); $display_warehouse = (int) JeproshopSettingModelSetting::getValue('advanced_stock_management'); $this->assignRef('display_warehouse', $display_warehouse); $stockManagement = JeproshopSettingModelSetting::getValue('stock_management'); $this->assignRef('stock_management', $stockManagement); /*$this->assignRef('HOOK_CONTENT_ORDER', Hook::exec('displayAdminOrderContentOrder', array( 'order' => $order, 'products' => $products, 'customer' => $customer) ), $this->assignRef('HOOK_CONTENT_SHIP' => Hook::exec('displayAdminOrderContentShip', array( 'order' => $order, 'products' => $products, 'customer' => $customer) ), $this->assignRef('HOOK_TAB_ORDER' => Hook::exec('displayAdminOrderTabOrder', array( 'order' => $order, 'products' => $products, 'customer' => $customer) $this->assignRef('HOOK_TAB_SHIP' => Hook::exec('displayAdminOrderTabShip', array( $this->assignRef('order' => $order, $this->assignRef('products' => $products, $this->assignRef('customer' => $customer) */ $this->addToolBar(); $this->sideBar = JHtmlSideBar::render(); parent::display($tpl); }