Example #1
0
 public function renderKpis()
 {
     $time = time();
     $kpis = array();
     /* The data generation is located in AdminStatsControllerCore */
     $helper = new HelperKpi();
     $helper->id = 'box-conversion-rate';
     $helper->icon = 'icon-sort-by-attributes-alt';
     //$helper->chart = true;
     $helper->color = 'color1';
     $helper->title = $this->l('Conversion Rate', null, null, false);
     $helper->subtitle = $this->l('30 days', null, null, false);
     if (ConfigurationKPI::get('CONVERSION_RATE') !== false) {
         $helper->value = ConfigurationKPI::get('CONVERSION_RATE');
     }
     if (ConfigurationKPI::get('CONVERSION_RATE_CHART') !== false) {
         $helper->data = ConfigurationKPI::get('CONVERSION_RATE_CHART');
     }
     if (ConfigurationKPI::get('CONVERSION_RATE_EXPIRE') < $time) {
         $helper->source = $this->context->link->getAdminLink('AdminStats') . '&ajax=1&action=getKpi&kpi=conversion_rate';
     }
     $kpis[] = $helper->generate();
     $helper = new HelperKpi();
     $helper->id = 'box-carts';
     $helper->icon = 'icon-shopping-cart';
     $helper->color = 'color2';
     $helper->title = $this->l('Abandoned Carts', null, null, false);
     $helper->subtitle = $this->l('Today', null, null, false);
     $helper->href = $this->context->link->getAdminLink('AdminCarts');
     if (ConfigurationKPI::get('ABANDONED_CARTS') !== false) {
         $helper->value = ConfigurationKPI::get('ABANDONED_CARTS');
     }
     if (ConfigurationKPI::get('ABANDONED_CARTS_EXPIRE') < $time) {
         $helper->source = $this->context->link->getAdminLink('AdminStats') . '&ajax=1&action=getKpi&kpi=abandoned_cart';
     }
     $kpis[] = $helper->generate();
     $helper = new HelperKpi();
     $helper->id = 'box-average-order';
     $helper->icon = 'icon-money';
     $helper->color = 'color3';
     $helper->title = $this->l('Average Order Value', null, null, false);
     $helper->subtitle = $this->l('30 days', null, null, false);
     if (ConfigurationKPI::get('AVG_ORDER_VALUE') !== false) {
         $helper->value = ConfigurationKPI::get('AVG_ORDER_VALUE');
     }
     if (ConfigurationKPI::get('AVG_ORDER_VALUE_EXPIRE') < $time) {
         $helper->source = $this->context->link->getAdminLink('AdminStats') . '&ajax=1&action=getKpi&kpi=average_order_value';
     }
     $kpis[] = $helper->generate();
     $helper = new HelperKpi();
     $helper->id = 'box-net-profit-visitor';
     $helper->icon = 'icon-user';
     $helper->color = 'color4';
     $helper->title = $this->l('Net Profit per Visitor', null, null, false);
     $helper->subtitle = $this->l('30 days', null, null, false);
     if (ConfigurationKPI::get('NETPROFIT_VISITOR') !== false) {
         $helper->value = ConfigurationKPI::get('NETPROFIT_VISITOR');
     }
     if (ConfigurationKPI::get('NETPROFIT_VISITOR_EXPIRE') < $time) {
         $helper->source = $this->context->link->getAdminLink('AdminStats') . '&ajax=1&action=getKpi&kpi=netprofit_visitor';
     }
     $kpis[] = $helper->generate();
     $helper = new HelperKpiRow();
     $helper->kpis = $kpis;
     return $helper->generate();
 }
 public function renderKpis()
 {
     $time = time();
     $kpis = array();
     /* The data generation is located in AdminStatsControllerCore */
     $helper = new HelperKpi();
     $helper->id = 'box-pending-messages';
     $helper->icon = 'icon-envelope';
     $helper->color = 'color1';
     $helper->href = $this->context->link->getAdminLink('AdminCustomerThreads');
     $helper->title = $this->l('Pending Discussion Threads', null, null, false);
     if (ConfigurationKPI::get('PENDING_MESSAGES') !== false) {
         $helper->value = ConfigurationKPI::get('PENDING_MESSAGES');
     }
     $helper->source = $this->context->link->getAdminLink('AdminStats') . '&ajax=1&action=getKpi&kpi=pending_messages';
     $helper->refresh = (bool) (ConfigurationKPI::get('PENDING_MESSAGES_EXPIRE') < $time);
     $kpis[] = $helper->generate();
     $helper = new HelperKpi();
     $helper->id = 'box-age';
     $helper->icon = 'icon-time';
     $helper->color = 'color2';
     $helper->title = $this->l('Average Response Time', null, null, false);
     $helper->subtitle = $this->l('30 days', null, null, false);
     if (ConfigurationKPI::get('AVG_MSG_RESPONSE_TIME') !== false) {
         $helper->value = ConfigurationKPI::get('AVG_MSG_RESPONSE_TIME');
     }
     $helper->source = $this->context->link->getAdminLink('AdminStats') . '&ajax=1&action=getKpi&kpi=avg_msg_response_time';
     $helper->refresh = (bool) (ConfigurationKPI::get('AVG_MSG_RESPONSE_TIME_EXPIRE') < $time);
     $kpis[] = $helper->generate();
     $helper = new HelperKpi();
     $helper->id = 'box-messages-per-thread';
     $helper->icon = 'icon-copy';
     $helper->color = 'color3';
     $helper->title = $this->l('Messages per Thread', null, null, false);
     $helper->subtitle = $this->l('30 day', null, null, false);
     if (ConfigurationKPI::get('MESSAGES_PER_THREAD') !== false) {
         $helper->value = ConfigurationKPI::get('MESSAGES_PER_THREAD');
     }
     $helper->source = $this->context->link->getAdminLink('AdminStats') . '&ajax=1&action=getKpi&kpi=messages_per_thread';
     $helper->refresh = (bool) (ConfigurationKPI::get('MESSAGES_PER_THREAD_EXPIRE') < $time);
     $kpis[] = $helper->generate();
     $helper = new HelperKpiRow();
     $helper->kpis = $kpis;
     return $helper->generate();
 }
 public function renderKpis()
 {
     $time = time();
     $kpis = array();
     /* The data generation is located in AdminStatsControllerCore */
     $helper = new HelperKpi();
     $helper->id = 'box-installed-modules';
     $helper->icon = 'icon-puzzle-piece';
     $helper->color = 'color1';
     $helper->title = $this->l('Installed Modules', null, null, false);
     if (ConfigurationKPI::get('INSTALLED_MODULES') !== false && ConfigurationKPI::get('INSTALLED_MODULES') != '') {
         $helper->value = ConfigurationKPI::get('INSTALLED_MODULES');
     }
     if (ConfigurationKPI::get('INSTALLED_MODULES_EXPIRE') < $time) {
         $helper->source = $this->context->link->getAdminLink('AdminStats') . '&ajax=1&action=getKpi&kpi=installed_modules';
     }
     $kpis[] = $helper->generate();
     $helper = new HelperKpi();
     $helper->id = 'box-disabled-modules';
     $helper->icon = 'icon-off';
     $helper->color = 'color2';
     $helper->title = $this->l('Disabled Modules', null, null, false);
     if (ConfigurationKPI::get('DISABLED_MODULES') !== false && ConfigurationKPI::get('DISABLED_MODULES') != '') {
         $helper->value = ConfigurationKPI::get('DISABLED_MODULES');
     }
     if (ConfigurationKPI::get('DISABLED_MODULES_EXPIRE') < $time) {
         $helper->source = $this->context->link->getAdminLink('AdminStats') . '&ajax=1&action=getKpi&kpi=disabled_modules';
     }
     $kpis[] = $helper->generate();
     $helper = new HelperKpi();
     $helper->id = 'box-update-modules';
     $helper->icon = 'icon-refresh';
     $helper->color = 'color3';
     $helper->title = $this->l('Modules to update', null, null, false);
     if (ConfigurationKPI::get('UPDATE_MODULES') !== false && ConfigurationKPI::get('UPDATE_MODULES') != '') {
         $helper->value = ConfigurationKPI::get('UPDATE_MODULES');
     }
     if (ConfigurationKPI::get('UPDATE_MODULES_EXPIRE') < $time) {
         $helper->source = $this->context->link->getAdminLink('AdminStats') . '&ajax=1&action=getKpi&kpi=update_modules';
     }
     $kpis[] = $helper->generate();
     $helper = new HelperKpiRow();
     $helper->kpis = $kpis;
     return $helper->generate();
 }
Example #4
0
 public function renderView()
 {
     if (!($cart = $this->loadObject(true))) {
         return;
     }
     $customer = new Customer($cart->id_customer);
     $currency = new Currency($cart->id_currency);
     $this->context->cart = $cart;
     $this->context->currency = $currency;
     $this->context->customer = $customer;
     $this->toolbar_title = sprintf($this->l('Cart #%06d'), $this->context->cart->id);
     $products = $cart->getProducts();
     $customized_datas = Product::getAllCustomizedDatas((int) $cart->id);
     Product::addCustomizationPrice($products, $customized_datas);
     $summary = $cart->getSummaryDetails();
     /* Display order information */
     $id_order = (int) Order::getOrderByCartId($cart->id);
     $order = new Order($id_order);
     if (Validate::isLoadedObject($order)) {
         $tax_calculation_method = $order->getTaxCalculationMethod();
         $id_shop = (int) $order->id_shop;
     } else {
         $id_shop = (int) $cart->id_shop;
         $tax_calculation_method = Group::getPriceDisplayMethod(Group::getCurrent()->id);
     }
     if ($tax_calculation_method == PS_TAX_EXC) {
         $total_products = $summary['total_products'];
         $total_discounts = $summary['total_discounts_tax_exc'];
         $total_wrapping = $summary['total_wrapping_tax_exc'];
         $total_price = $summary['total_price_without_tax'];
         $total_shipping = $summary['total_shipping_tax_exc'];
     } else {
         $total_products = $summary['total_products_wt'];
         $total_discounts = $summary['total_discounts'];
         $total_wrapping = $summary['total_wrapping'];
         $total_price = $summary['total_price'];
         $total_shipping = $summary['total_shipping'];
     }
     foreach ($products as $k => &$product) {
         if ($tax_calculation_method == PS_TAX_EXC) {
             $product['product_price'] = $product['price'];
             $product['product_total'] = $product['total'];
         } else {
             $product['product_price'] = $product['price_wt'];
             $product['product_total'] = $product['total_wt'];
         }
         $image = array();
         if (isset($product['id_product_attribute']) && (int) $product['id_product_attribute']) {
             $image = Db::getInstance()->getRow('SELECT id_image FROM ' . _DB_PREFIX_ . 'product_attribute_image WHERE id_product_attribute = ' . (int) $product['id_product_attribute']);
         }
         if (!isset($image['id_image'])) {
             $image = Db::getInstance()->getRow('SELECT id_image FROM ' . _DB_PREFIX_ . 'image WHERE id_product = ' . (int) $product['id_product'] . ' AND cover = 1');
         }
         $product_obj = new Product($product['id_product']);
         $product['qty_in_stock'] = StockAvailable::getQuantityAvailableByProduct($product['id_product'], isset($product['id_product_attribute']) ? $product['id_product_attribute'] : null, (int) $id_shop);
         $image_product = new Image($image['id_image']);
         $product['image'] = isset($image['id_image']) ? ImageManager::thumbnail(_PS_IMG_DIR_ . 'p/' . $image_product->getExistingImgPath() . '.jpg', 'product_mini_' . (int) $product['id_product'] . (isset($product['id_product_attribute']) ? '_' . (int) $product['id_product_attribute'] : '') . '.jpg', 45, 'jpg') : '--';
     }
     $helper = new HelperKpi();
     $helper->id = 'box-kpi-cart';
     $helper->icon = 'icon-shopping-cart';
     $helper->color = 'color1';
     $helper->title = $this->l('Total Cart', null, null, false);
     $helper->subtitle = sprintf($this->l('Cart #%06d', null, null, false), $cart->id);
     $helper->value = Tools::displayPrice($total_price, $currency);
     $kpi = $helper->generate();
     $this->tpl_view_vars = array('kpi' => $kpi, 'products' => $products, 'discounts' => $cart->getCartRules(), 'order' => $order, 'cart' => $cart, 'currency' => $currency, 'customer' => $customer, 'customer_stats' => $customer->getStats(), 'total_products' => $total_products, 'total_discounts' => $total_discounts, 'total_wrapping' => $total_wrapping, 'total_price' => $total_price, 'total_shipping' => $total_shipping, 'customized_datas' => $customized_datas);
     return parent::renderView();
 }
 public function renderKpis()
 {
     $time = time();
     $kpis = array();
     /* The data generation is located in AdminStatsControllerCore */
     $helper = new HelperKpi();
     $helper->id = 'box-gender';
     $helper->icon = 'icon-male';
     $helper->color = 'color1';
     $helper->title = $this->l('Customers', null, null, false);
     $helper->subtitle = $this->l('All Time', null, null, false);
     if (ConfigurationKPI::get('CUSTOMER_MAIN_GENDER', $this->context->language->id) !== false) {
         $helper->value = ConfigurationKPI::get('CUSTOMER_MAIN_GENDER', $this->context->language->id);
     }
     $helper->source = $this->context->link->getAdminLink('AdminStats') . '&ajax=1&action=getKpi&kpi=customer_main_gender';
     $helper->refresh = (bool) (ConfigurationKPI::get('CUSTOMER_MAIN_GENDER_EXPIRE', $this->context->language->id) < $time);
     $kpis[] = $helper->generate();
     $helper = new HelperKpi();
     $helper->id = 'box-age';
     $helper->icon = 'icon-calendar';
     $helper->color = 'color2';
     $helper->title = $this->l('Average Age', 'AdminTab', null, false);
     $helper->subtitle = $this->l('All Time', null, null, false);
     if (ConfigurationKPI::get('AVG_CUSTOMER_AGE', $this->context->language->id) !== false) {
         $helper->value = ConfigurationKPI::get('AVG_CUSTOMER_AGE', $this->context->language->id);
     }
     $helper->source = $this->context->link->getAdminLink('AdminStats') . '&ajax=1&action=getKpi&kpi=avg_customer_age';
     $helper->refresh = (bool) (ConfigurationKPI::get('AVG_CUSTOMER_AGE_EXPIRE', $this->context->language->id) < $time);
     $kpis[] = $helper->generate();
     $helper = new HelperKpi();
     $helper->id = 'box-orders';
     $helper->icon = 'icon-retweet';
     $helper->color = 'color3';
     $helper->title = $this->l('Orders per Customer', null, null, false);
     $helper->subtitle = $this->l('All Time', null, null, false);
     if (ConfigurationKPI::get('ORDERS_PER_CUSTOMER') !== false) {
         $helper->value = ConfigurationKPI::get('ORDERS_PER_CUSTOMER');
     }
     $helper->source = $this->context->link->getAdminLink('AdminStats') . '&ajax=1&action=getKpi&kpi=orders_per_customer';
     $helper->refresh = (bool) (ConfigurationKPI::get('ORDERS_PER_CUSTOMER_EXPIRE') < $time);
     $kpis[] = $helper->generate();
     $helper = new HelperKpi();
     $helper->id = 'box-newsletter';
     $helper->icon = 'icon-envelope';
     $helper->color = 'color4';
     $helper->title = $this->l('Newsletter Registrations', null, null, false);
     $helper->subtitle = $this->l('All Time', null, null, false);
     if (ConfigurationKPI::get('NEWSLETTER_REGISTRATIONS') !== false) {
         $helper->value = ConfigurationKPI::get('NEWSLETTER_REGISTRATIONS');
     }
     $helper->source = $this->context->link->getAdminLink('AdminStats') . '&ajax=1&action=getKpi&kpi=newsletter_registrations';
     $helper->refresh = (bool) (ConfigurationKPI::get('NEWSLETTER_REGISTRATIONS_EXPIRE') < $time);
     $kpis[] = $helper->generate();
     $helper = new HelperKpiRow();
     $helper->kpis = $kpis;
     return $helper->generate();
 }
Example #6
0
 public function renderKpis()
 {
     $time = time();
     $kpis = array();
     /* The data generation is located in AdminStatsControllerCore */
     if (Configuration::get('PS_STOCK_MANAGEMENT')) {
         $helper = new HelperKpi();
         $helper->id = 'box-products-stock';
         $helper->icon = 'icon-archive';
         $helper->color = 'color1';
         $helper->title = $this->l('Items in Stock', null, null, false);
         if (ConfigurationKPI::get('PERCENT_PRODUCT_STOCK') !== false) {
             $helper->value = ConfigurationKPI::get('PERCENT_PRODUCT_STOCK');
         }
         if (ConfigurationKPI::get('PERCENT_PRODUCT_STOCK_EXPIRE') < $time) {
             $helper->source = $this->context->link->getAdminLink('AdminStats') . '&ajax=1&action=getKpi&kpi=percent_product_stock';
         }
         $kpis[] = $helper->generate();
     }
     $helper = new HelperKpi();
     $helper->id = 'box-avg-gross-margin';
     $helper->icon = 'icon-tags';
     $helper->color = 'color2';
     $helper->title = $this->l('Average Gross Margin', null, null, false);
     if (ConfigurationKPI::get('PRODUCT_AVG_GROSS_MARGIN') !== false) {
         $helper->value = ConfigurationKPI::get('PRODUCT_AVG_GROSS_MARGIN');
     }
     if (ConfigurationKPI::get('PRODUCT_AVG_GROSS_MARGIN_EXPIRE') < $time) {
         $helper->source = $this->context->link->getAdminLink('AdminStats') . '&ajax=1&action=getKpi&kpi=product_avg_gross_margin';
     }
     $kpis[] = $helper->generate();
     $helper = new HelperKpi();
     $helper->id = 'box-8020-sales-catalog';
     $helper->icon = 'icon-beaker';
     $helper->color = 'color3';
     $helper->title = $this->l('80% of your sales', null, null, false);
     $helper->subtitle = $this->l('30 days', null, null, false);
     if (ConfigurationKPI::get('8020_SALES_CATALOG') !== false) {
         $helper->value = ConfigurationKPI::get('8020_SALES_CATALOG');
     }
     if (ConfigurationKPI::get('8020_SALES_CATALOG_EXPIRE') < $time) {
         $helper->source = $this->context->link->getAdminLink('AdminStats') . '&ajax=1&action=getKpi&kpi=8020_sales_catalog';
     }
     $kpis[] = $helper->generate();
     $helper = new HelperKpi();
     $helper->id = 'box-disabled-products';
     $helper->icon = 'icon-off';
     $helper->color = 'color4';
     $helper->href = $this->context->link->getAdminLink('AdminProducts');
     $helper->title = $this->l('Disabled Products', null, null, false);
     if (ConfigurationKPI::get('DISABLED_PRODUCTS') !== false) {
         $helper->value = ConfigurationKPI::get('DISABLED_PRODUCTS');
     }
     if (ConfigurationKPI::get('DISABLED_PRODUCTS_EXPIRE') < $time) {
         $helper->source = $this->context->link->getAdminLink('AdminStats') . '&ajax=1&action=getKpi&kpi=disabled_products';
     }
     $kpis[] = $helper->generate();
     $helper = new HelperKpiRow();
     $helper->kpis = $kpis;
     return $helper->generate();
 }
 public function renderKpis()
 {
     $time = time();
     $kpis = array();
     /* The data generation is located in AdminStatsControllerCore */
     if (Configuration::get('PS_STOCK_MANAGEMENT')) {
         $helper = new HelperKpi();
         $helper->id = 'box-products-stock';
         $helper->icon = 'icon-archive';
         $helper->color = 'color1';
         $helper->title = $this->l('Out of stock items', null, null, false);
         if (ConfigurationKPI::get('PERCENT_PRODUCT_OUT_OF_STOCK') !== false) {
             $helper->value = ConfigurationKPI::get('PERCENT_PRODUCT_OUT_OF_STOCK');
         }
         $helper->source = $this->context->link->getAdminLink('AdminStats') . '&ajax=1&action=getKpi&kpi=percent_product_out_of_stock';
         $helper->tooltip = $this->l('X% of your products for sale are out of stock.', null, null, false);
         $helper->refresh = (bool) (ConfigurationKPI::get('PERCENT_PRODUCT_OUT_OF_STOCK_EXPIRE') < $time);
         $helper->href = Context::getContext()->link->getAdminLink('AdminProducts') . '&productFilter_sav!quantity=0&productFilter_active=1&submitFilterproduct=1';
         $kpis[] = $helper->generate();
     }
     $helper = new HelperKpi();
     $helper->id = 'box-avg-gross-margin';
     $helper->icon = 'icon-tags';
     $helper->color = 'color2';
     $helper->title = $this->l('Average Gross Margin', null, null, false);
     if (ConfigurationKPI::get('PRODUCT_AVG_GROSS_MARGIN') !== false) {
         $helper->value = ConfigurationKPI::get('PRODUCT_AVG_GROSS_MARGIN');
     }
     $helper->source = $this->context->link->getAdminLink('AdminStats') . '&ajax=1&action=getKpi&kpi=product_avg_gross_margin';
     $helper->tooltip = $this->l('The gross margin is the difference between the retail price and the wholesale price, on all your products for sale.', null, null, false);
     $helper->refresh = (bool) (ConfigurationKPI::get('PRODUCT_AVG_GROSS_MARGIN_EXPIRE') < $time);
     $kpis[] = $helper->generate();
     $helper = new HelperKpi();
     $helper->id = 'box-8020-sales-catalog';
     $helper->icon = 'icon-beaker';
     $helper->color = 'color3';
     $helper->title = $this->l('Purchased references', null, null, false);
     $helper->subtitle = $this->l('30 days', null, null, false);
     if (ConfigurationKPI::get('8020_SALES_CATALOG') !== false) {
         $helper->value = ConfigurationKPI::get('8020_SALES_CATALOG');
     }
     $helper->source = $this->context->link->getAdminLink('AdminStats') . '&ajax=1&action=getKpi&kpi=8020_sales_catalog';
     $helper->tooltip = $this->l('X% of your references have been purchased for the past 30 days', null, null, false);
     $helper->refresh = (bool) (ConfigurationKPI::get('8020_SALES_CATALOG_EXPIRE') < $time);
     if (Module::isInstalled('statsbestproducts')) {
         $helper->href = Context::getContext()->link->getAdminLink('AdminStats') . '&module=statsbestproducts&datepickerFrom=' . date('Y-m-d', strtotime('-30 days')) . '&datepickerTo=' . date('Y-m-d');
     }
     $kpis[] = $helper->generate();
     $helper = new HelperKpi();
     $helper->id = 'box-disabled-products';
     $helper->icon = 'icon-off';
     $helper->color = 'color4';
     $helper->href = $this->context->link->getAdminLink('AdminProducts');
     $helper->title = $this->l('Disabled Products', null, null, false);
     if (ConfigurationKPI::get('DISABLED_PRODUCTS') !== false) {
         $helper->value = ConfigurationKPI::get('DISABLED_PRODUCTS');
     }
     $helper->source = $this->context->link->getAdminLink('AdminStats') . '&ajax=1&action=getKpi&kpi=disabled_products';
     $helper->refresh = (bool) (ConfigurationKPI::get('DISABLED_PRODUCTS_EXPIRE') < $time);
     $helper->tooltip = $this->l('X% of your products are disabled and not visible to your customers', null, null, false);
     $helper->href = Context::getContext()->link->getAdminLink('AdminProducts') . '&productFilter_active=0&submitFilterproduct=1';
     $kpis[] = $helper->generate();
     $helper = new HelperKpiRow();
     $helper->kpis = $kpis;
     return $helper->generate();
 }
 public function renderKpis()
 {
     $time = time();
     $kpis = array();
     /* The data generation is located in AdminStatsControllerCore */
     $helper = new HelperKpi();
     $helper->id = 'box-disabled-categories';
     $helper->icon = 'icon-off';
     $helper->color = 'color1';
     $helper->title = $this->l('Disabled Categories', null, null, false);
     if (ConfigurationKPI::get('DISABLED_CATEGORIES') !== false) {
         $helper->value = ConfigurationKPI::get('DISABLED_CATEGORIES');
     }
     if (ConfigurationKPI::get('DISABLED_CATEGORIES_EXPIRE') < $time) {
         $helper->source = $this->context->link->getAdminLink('AdminStats') . '&ajax=1&action=getKpi&kpi=disabled_categories';
     }
     $kpis[] = $helper->generate();
     $helper = new HelperKpi();
     $helper->id = 'box-empty-categories';
     $helper->icon = 'icon-bookmark-empty';
     $helper->color = 'color2';
     $helper->href = $this->context->link->getAdminLink('AdminTracking');
     $helper->title = $this->l('Empty Categories', null, null, false);
     if (ConfigurationKPI::get('EMPTY_CATEGORIES') !== false) {
         $helper->value = ConfigurationKPI::get('EMPTY_CATEGORIES');
     }
     if (ConfigurationKPI::get('EMPTY_CATEGORIES_EXPIRE') < $time) {
         $helper->source = $this->context->link->getAdminLink('AdminStats') . '&ajax=1&action=getKpi&kpi=empty_categories';
     }
     $kpis[] = $helper->generate();
     $helper = new HelperKpi();
     $helper->id = 'box-top-category';
     $helper->icon = 'icon-money';
     $helper->color = 'color3';
     $helper->title = $this->l('Top Category', null, null, false);
     $helper->subtitle = $this->l('30 days', null, null, false);
     if (ConfigurationKPI::get('TOP_CATEGORY', $this->context->employee->id_lang) !== false) {
         $helper->value = ConfigurationKPI::get('TOP_CATEGORY', $this->context->employee->id_lang);
     }
     if (ConfigurationKPI::get('TOP_CATEGORY_EXPIRE', $this->context->employee->id_lang) < $time) {
         $helper->source = $this->context->link->getAdminLink('AdminStats') . '&ajax=1&action=getKpi&kpi=top_category';
     }
     $kpis[] = $helper->generate();
     $helper = new HelperKpi();
     $helper->id = 'box-products-per-category';
     $helper->icon = 'icon-search';
     $helper->color = 'color4';
     $helper->title = $this->l('Average number of products per category', null, null, false);
     if (ConfigurationKPI::get('PRODUCTS_PER_CATEGORY') !== false) {
         $helper->value = ConfigurationKPI::get('PRODUCTS_PER_CATEGORY');
     }
     if (ConfigurationKPI::get('PRODUCTS_PER_CATEGORY_EXPIRE') < $time) {
         $helper->source = $this->context->link->getAdminLink('AdminStats') . '&ajax=1&action=getKpi&kpi=products_per_category';
     }
     $kpis[] = $helper->generate();
     $helper = new HelperKpiRow();
     $helper->kpis = $kpis;
     return $helper->generate();
 }
 public function renderKpis()
 {
     $time = time();
     $kpis = array();
     /* The data generation is located in AdminStatsControllerCore */
     $helper = new HelperKpi();
     $helper->id = 'box-languages';
     $helper->icon = 'icon-microphone';
     $helper->color = 'color1';
     $helper->title = $this->l('Enabled Languages', null, null, false);
     if (ConfigurationKPI::get('ENABLED_LANGUAGES') !== false) {
         $helper->value = ConfigurationKPI::get('ENABLED_LANGUAGES');
     }
     if (ConfigurationKPI::get('ENABLED_LANGUAGES_EXPIRE') < $time) {
         $helper->source = $this->context->link->getAdminLink('AdminStats') . '&ajax=1&action=getKpi&kpi=enabled_languages';
     }
     $kpis[] = $helper->generate();
     $helper = new HelperKpi();
     $helper->id = 'box-country';
     $helper->icon = 'icon-home';
     $helper->color = 'color2';
     $helper->title = $this->l('Main Country', null, null, false);
     $helper->subtitle = $this->l('30 Days', null, null, false);
     if (ConfigurationKPI::get('MAIN_COUNTRY', $this->context->language->id) !== false) {
         $helper->value = ConfigurationKPI::get('MAIN_COUNTRY', $this->context->language->id);
     }
     if (ConfigurationKPI::get('MAIN_COUNTRY_EXPIRE', $this->context->language->id) < $time) {
         $helper->source = $this->context->link->getAdminLink('AdminStats') . '&ajax=1&action=getKpi&kpi=main_country';
     }
     $kpis[] = $helper->generate();
     $helper = new HelperKpi();
     $helper->id = 'box-translations';
     $helper->icon = 'icon-list';
     $helper->color = 'color3';
     $helper->title = $this->l('Front Office Translations', null, null, false);
     if (ConfigurationKPI::get('FRONTOFFICE_TRANSLATIONS') !== false) {
         $helper->value = ConfigurationKPI::get('FRONTOFFICE_TRANSLATIONS');
     }
     if (ConfigurationKPI::get('FRONTOFFICE_TRANSLATIONS_EXPIRE') < $time) {
         $helper->source = $this->context->link->getAdminLink('AdminStats') . '&ajax=1&action=getKpi&kpi=frontoffice_translations';
     }
     $kpis[] = $helper->generate();
     $helper = new HelperKpiRow();
     $helper->kpis = $kpis;
     return $helper->generate();
 }
 public function renderKpis()
 {
     $time = time();
     $kpis = array();
     /* The data generation is located in AdminStatsControllerCore */
     if (Configuration::get('PS_STOCK_MANAGEMENT')) {
         $helper = new HelperKpi();
         $helper->id = 'box-products-stock';
         $helper->icon = 'local_shipping';
         $helper->color = 'color1';
         $helper->title = $this->l('Out of stock items', null, null, false);
         if (ConfigurationKPI::get('PERCENT_PRODUCT_OUT_OF_STOCK') !== false) {
             $helper->value = ConfigurationKPI::get('PERCENT_PRODUCT_OUT_OF_STOCK');
         }
         $helper->source = $this->context->link->getAdminLink('AdminStats') . '&ajax=1&action=getKpi&kpi=percent_product_out_of_stock';
         $helper->tooltip = sprintf($this->l('%s of your products for sale are out of stock.', null, null, false), $helper->value);
         $helper->refresh = (bool) (ConfigurationKPI::get('PERCENT_PRODUCT_OUT_OF_STOCK_EXPIRE') < $time);
         $product_token = Tools::getAdminToken('AdminProducts' . (int) Tab::getIdFromClassName('AdminProducts') . (int) Context::getContext()->employee->id);
         $urlParams = ['filter_column_sav_quantity' => '<=0', 'filter_column_active' => '1', 'token' => $product_token, 'submitFilterproduct' => 1];
         $helper->href = preg_replace("/\\?.*\$/", '?tab=AdminProducts&productFilter_sav!quantity=0&productFilter_active=1&submitFilterproduct=1&token=' . $product_token, Context::getContext()->link->getAdminLink('AdminProducts', true, $urlParams));
         $kpis[] = $helper->generate();
     }
     $helper = new HelperKpi();
     $helper->id = 'box-avg-gross-margin';
     $helper->icon = 'label';
     $helper->color = 'color2';
     $helper->title = $this->l('Average Gross Margin %', null, null, false);
     if (ConfigurationKPI::get('PRODUCT_AVG_GROSS_MARGIN') !== false) {
         $helper->value = ConfigurationKPI::get('PRODUCT_AVG_GROSS_MARGIN');
     }
     $helper->source = $this->context->link->getAdminLink('AdminStats') . '&ajax=1&action=getKpi&kpi=product_avg_gross_margin';
     $helper->tooltip = sprintf($this->l('Gross margin expressed in percentage assesses how cost-effectively you sell your goods. Out of $100, you will retain $%s to cover profit and expenses.', null, null, false), str_replace('%', '', $helper->value));
     $helper->refresh = (bool) (ConfigurationKPI::get('PRODUCT_AVG_GROSS_MARGIN_EXPIRE') < $time);
     $kpis[] = $helper->generate();
     $helper = new HelperKpi();
     $helper->id = 'box-8020-sales-catalog';
     $helper->icon = 'whatshot';
     $helper->color = 'color3';
     $helper->title = $this->l('Catalog popularity', null, null, false);
     $helper->subtitle = $this->l('30 days', null, null, false);
     if (ConfigurationKPI::get('8020_SALES_CATALOG') !== false) {
         $helper->value = ConfigurationKPI::get('8020_SALES_CATALOG');
     }
     $helper->source = $this->context->link->getAdminLink('AdminStats') . '&ajax=1&action=getKpi&kpi=8020_sales_catalog';
     $helper->tooltip = sprintf($this->l('Within your catalog, %s of your products have had sales in the last 30 days', null, null, false), $helper->value);
     $helper->refresh = (bool) (ConfigurationKPI::get('8020_SALES_CATALOG_EXPIRE') < $time);
     $moduleManagerBuilder = ModuleManagerBuilder::getInstance();
     $moduleManager = $moduleManagerBuilder->build();
     if ($moduleManager->isInstalled('statsbestproducts')) {
         $helper->href = Context::getContext()->link->getAdminLink('AdminStats') . '&module=statsbestproducts&datepickerFrom=' . date('Y-m-d', strtotime('-30 days')) . '&datepickerTo=' . date('Y-m-d');
     }
     $kpis[] = $helper->generate();
     $helper = new HelperKpi();
     $helper->id = 'box-disabled-products';
     $helper->icon = 'visibility_off';
     $helper->color = 'color4';
     $helper->title = $this->l('Disabled Products', null, null, false);
     if (ConfigurationKPI::get('DISABLED_PRODUCTS') !== false) {
         $helper->value = ConfigurationKPI::get('DISABLED_PRODUCTS');
     }
     $helper->source = $this->context->link->getAdminLink('AdminStats') . '&ajax=1&action=getKpi&kpi=disabled_products';
     $helper->refresh = (bool) (ConfigurationKPI::get('DISABLED_PRODUCTS_EXPIRE') < $time);
     $helper->tooltip = sprintf($this->l('%s of your products are disabled and not visible to your customers', null, null, false), $helper->value);
     $product_token = Tools::getAdminToken('AdminProducts' . (int) Tab::getIdFromClassName('AdminProducts') . (int) Context::getContext()->employee->id);
     $urlParams = ['filter_column_active' => '0', 'token' => $product_token, 'submitFilterproduct' => 1];
     $helper->href = preg_replace("/\\?.*\$/", '?tab=AdminProducts&productFilter_active=0&submitFilterproduct=1&token=' . $product_token, Context::getContext()->link->getAdminLink('AdminProducts', true, $urlParams));
     $kpis[] = $helper->generate();
     $helper = new HelperKpiRow();
     $helper->kpis = $kpis;
     return $helper->generate();
 }
 public function renderView()
 {
     /** @var Cart $cart */
     if (!($cart = $this->loadObject(true))) {
         return;
     }
     $customer = new Customer($cart->id_customer);
     $currency = new Currency($cart->id_currency);
     $this->context->cart = $cart;
     $this->context->currency = $currency;
     $this->context->customer = $customer;
     $this->toolbar_title = sprintf($this->l('Cart #%06d'), $this->context->cart->id);
     $products = $cart->getProducts();
     $customized_datas = Product::getAllCustomizedDatas((int) $cart->id);
     Product::addCustomizationPrice($products, $customized_datas);
     $summary = $cart->getSummaryDetails();
     /* Display order information */
     $id_order = (int) Order::getOrderByCartId($cart->id);
     $order = new Order($id_order);
     if (Validate::isLoadedObject($order)) {
         $tax_calculation_method = $order->getTaxCalculationMethod();
         $id_shop = (int) $order->id_shop;
     } else {
         $id_shop = (int) $cart->id_shop;
         $tax_calculation_method = Group::getPriceDisplayMethod(Group::getCurrent()->id);
     }
     if ($tax_calculation_method == PS_TAX_EXC) {
         $total_products = $summary['total_products'];
         $total_discounts = $summary['total_discounts_tax_exc'];
         $total_wrapping = $summary['total_wrapping_tax_exc'];
         $total_price = $summary['total_price_without_tax'];
         $total_shipping = $summary['total_shipping_tax_exc'];
     } else {
         $total_products = $summary['total_products_wt'];
         $total_discounts = $summary['total_discounts'];
         $total_wrapping = $summary['total_wrapping'];
         $total_price = $summary['total_price'];
         $total_shipping = $summary['total_shipping'];
     }
     foreach ($products as $k => &$product) {
         if ($tax_calculation_method == PS_TAX_EXC) {
             $product['product_price'] = $product['price'];
             $product['product_total'] = $product['total'];
         } else {
             $product['product_price'] = $product['price_wt'];
             $product['product_total'] = $product['total_wt'];
         }
         $image = array();
         if (isset($product['id_product_attribute']) && (int) $product['id_product_attribute']) {
             $image = Db::getInstance()->getRow('SELECT id_image FROM ' . _DB_PREFIX_ . 'product_attribute_image WHERE id_product_attribute = ' . (int) $product['id_product_attribute']);
         }
         if (!isset($image['id_image'])) {
             $image = Db::getInstance()->getRow('SELECT id_image FROM ' . _DB_PREFIX_ . 'image WHERE id_product = ' . (int) $product['id_product'] . ' AND cover = 1');
         }
         $product['qty_in_stock'] = StockAvailable::getQuantityAvailableByProduct($product['id_product'], isset($product['id_product_attribute']) ? $product['id_product_attribute'] : null, (int) $id_shop);
         $image_product = new Image($image['id_image']);
         $product['image'] = isset($image['id_image']) ? ImageManager::thumbnail(_PS_IMG_DIR_ . 'p/' . $image_product->getExistingImgPath() . '.jpg', 'product_mini_' . (int) $product['id_product'] . (isset($product['id_product_attribute']) ? '_' . (int) $product['id_product_attribute'] : '') . '.jpg', 45, 'jpg') : '--';
     }
     $helper = new HelperKpi();
     $helper->id = 'box-kpi-cart';
     $helper->icon = 'icon-shopping-cart';
     $helper->color = 'color1';
     $helper->title = $this->l('Total Cart', null, null, false);
     $helper->subtitle = sprintf($this->l('Cart #%06d', null, null, false), $cart->id);
     $helper->value = Tools::displayPrice($total_price, $currency);
     $kpi = $helper->generate();
     // by webkul to show rooms available in the cart
     $cart_id = $cart->id;
     $cart_detail_data = array();
     $cart_detail_data_obj = new HotelCartBookingData();
     $cart_detail_data = $cart_detail_data_obj->getCartCurrentDataByCartId((int) $cart_id);
     if ($cart_detail_data) {
         foreach ($cart_detail_data as $key => $value) {
             $product_image_id = Product::getCover($value['id_product']);
             $link_rewrite = (new Product((int) $value['id_product'], Configuration::get('PS_LANG_DEFAULT')))->link_rewrite[Configuration::get('PS_LANG_DEFAULT')];
             if ($product_image_id) {
                 $cart_detail_data[$key]['image_link'] = $this->context->link->getImageLink($link_rewrite, $product_image_id['id_image'], 'small_default');
             } else {
                 $cart_detail_data[$key]['image_link'] = $this->context->link->getImageLink($link_rewrite, $this->context->language->iso_code . "-default", 'small_default');
             }
             $cart_detail_data[$key]['room_type'] = (new Product((int) $value['id_product']))->name[Configuration::get('PS_LANG_DEFAULT')];
             $cart_detail_data[$key]['room_num'] = (new HotelRoomInformation((int) $value['id_room']))->room_num;
             $cart_detail_data[$key]['date_from'] = (new DateTime($value['date_from']))->format('d-M Y');
             $cart_detail_data[$key]['date_to'] = (new DateTime($value['date_to']))->format('d-M Y');
         }
     }
     //end
     $this->tpl_view_vars = array('cart_detail_data' => $cart_detail_data, 'kpi' => $kpi, 'products' => $products, 'discounts' => $cart->getCartRules(), 'order' => $order, 'cart' => $cart, 'currency' => $currency, 'customer' => $customer, 'customer_stats' => $customer->getStats(), 'total_products' => $total_products, 'total_discounts' => $total_discounts, 'total_wrapping' => $total_wrapping, 'total_price' => $total_price, 'total_shipping' => $total_shipping, 'customized_datas' => $customized_datas, 'tax_calculation_method' => $tax_calculation_method);
     return parent::renderView();
 }