Exemplo n.º 1
0
 /**
  * Exports CSV
  */
 public function renderCSV()
 {
     if (!$this->_list) {
         return;
     }
     // header
     if (Tools::getValue('id_warehouse') != -1) {
         $filename = $this->l('stock_mvt') . '_' . Warehouse::getWarehouseNameById((int) Tools::getValue('id_warehouse')) . '.csv';
     } else {
         $filename = $this->l('stock_mvt') . '.csv';
     }
     header('Content-type: text/csv');
     header('Cache-Control: no-store, no-cache');
     header('Content-disposition: attachment; filename="' . $filename);
     // puts keys
     $keys = array('id_order', 'id_supply_order', 'emloyee_firstname', 'employee_lastname', 'physical_quantity', 'date_add', 'sign', 'price_te', 'product_name', 'label', 'product_reference', 'product_ean13', 'product_upc');
     echo sprintf("%s\n", implode(';', $keys));
     // puts rows
     foreach ($this->_list as $row) {
         $row_csv = array($row['id_order'], $row['id_supply_order'], $row['employee_firstname'], $row['employee_lastname'], $row['physical_quantity'], $row['date_add'], $row['sign'], $row['price_te'], $row['product_name'], $row['reason'], $row['product_reference'], $row['product_ean13'], $row['product_upc']);
         // puts one row
         echo sprintf("%s\n", implode(';', array_map(array('CSVCore', 'wrap'), $row_csv)));
     }
 }
 /**
  * Exports CSV
  */
 public function renderCSV()
 {
     if (count($this->_list) <= 0) {
         return;
     }
     // sets warehouse id and warehouse name
     $id_warehouse = (int) Tools::getValue('id_warehouse');
     $warehouse_name = Warehouse::getWarehouseNameById($id_warehouse);
     // if quantities requested
     if (Tools::isSubmit('csv_quantities')) {
         // filename
         $filename = $this->l('stock_instant_state_quantities') . '_' . $warehouse_name . '.csv';
         // header
         header('Content-type: text/csv');
         header('Cache-Control: no-store, no-cache must-revalidate');
         header('Content-disposition: attachment; filename="' . $filename);
         // puts keys
         $keys = array('id_product', 'id_product_attribute', 'reference', 'ean13', 'upc', 'name', 'physical_quantity', 'usable_quantity', 'real_quantity');
         echo sprintf("%s\n", implode(';', $keys));
         // puts rows
         foreach ($this->_list as $row) {
             $row_csv = array($row['id_product'], $row['id_product_attribute'], $row['reference'], $row['ean13'], $row['upc'], $row['name'], $row['physical_quantity'], $row['usable_quantity'], $row['real_quantity']);
             // puts one row
             echo sprintf("%s\n", implode(';', array_map(array('CSVCore', 'wrap'), $row_csv)));
         }
     } elseif (Tools::isSubmit('csv_prices')) {
         // sets filename
         $filename = $this->l('stock_instant_state_prices') . '_' . $warehouse_name . '.csv';
         // header
         header('Content-type: text/csv');
         header('Cache-Control: no-store, no-cache must-revalidate');
         header('Content-disposition: attachment; filename="' . $filename);
         // puts keys
         $keys = array('id_product', 'id_product_attribute', 'reference', 'ean13', 'upc', 'name', 'price_te', 'physical_quantity', 'usable_quantity');
         echo sprintf("%s\n", implode(';', $keys));
         foreach ($this->_list as $row) {
             $id_product = (int) $row['id_product'];
             $id_product_attribute = (int) $row['id_product_attribute'];
             // gets prices
             $query = new DbQuery();
             $query->select('s.price_te, SUM(s.physical_quantity) as physical_quantity, SUM(s.usable_quantity) as usable_quantity');
             $query->from('stock', 's');
             $query->leftJoin('warehouse', 'w', 'w.id_warehouse = s.id_warehouse');
             $query->where('s.id_product = ' . $id_product . ' AND s.id_product_attribute = ' . $id_product_attribute);
             $query->where('s.id_warehouse = ' . $id_warehouse);
             $query->groupBy('s.price_te');
             $datas = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($query);
             // puts data
             foreach ($datas as $data) {
                 $row_csv = array($row['id_product'], $row['id_product_attribute'], $row['reference'], $row['ean13'], $row['upc'], $row['name'], $data['price_te'], $data['physical_quantity'], $data['usable_quantity']);
                 // puts one row
                 echo sprintf("%s\n", implode(';', array_map(array('CSVCore', 'wrap'), $row_csv)));
             }
         }
     }
 }
    public function getCustomList()
    {
        // if we get warehouse id from GET (case first diplay)
        if (Tools::isSubmit('warehouseA') && Tools::isSubmit('warehouseB')) {
            // Get warehouse value selected or not
            $this->context->cookie->warehouseA = Tools::getValue('warehouseA');
            $this->context->cookie->warehouseB = Tools::getValue('warehouseB');
            // if we have a good warehourse id, display
            if ($this->context->cookie->warehouseA != -1 && $this->context->cookie->warehouseA != '' && ($this->context->cookie->warehouseB != -1 && $this->context->cookie->warehouseB != '')) {
                $this->show_toolbar = false;
                $id_warehouseA = Tools::isSubmit('warehouseA') ? Tools::getValue('warehouseA') : $this->context->cookie->warehouseA;
                $id_warehouseB = Tools::isSubmit('warehouseB') ? Tools::getValue('warehouseB') : $this->context->cookie->warehouseB;
                // Add additional columns
                $AColumns = array('qte_transfer' => array('title' => $this->l('Transfer'), 'align' => 'center', 'search' => false, 'orderby' => false, 'callback' => 'renderQteTransferColumn'), 'quantity_after' => array('title' => $this->l('After transfer'), 'align' => 'center', 'search' => false, 'orderby' => false, 'class' => 'quantity_after text-center'), 'direction' => array('title' => $this->l(''), 'align' => 'center', 'search' => false, 'orderby' => false, 'class' => 'direction text-center', 'callback' => 'renderDirectionColumn'), 'physical_quantity2' => array('title' => $this->l('Physical quantity'), 'align' => 'center', 'search' => false, 'orderby' => true, 'class' => 'physical_quantity2 text-center'), 'usable_quantity2' => array('title' => $this->l('Usable quantity'), 'align' => 'center', 'search' => false, 'orderby' => true, 'class' => 'usable_quantity2 text-center'), 'new_stock' => array('title' => $this->l('New stock'), 'align' => 'center', 'search' => false, 'orderby' => false, 'class' => 'new_stock text-center'));
                // column displayed
                $this->fields_list = array_merge($this->baseColumns, $AColumns);
                $this->context->smarty->assign(array('warehouse_name' => $this->l('Source warehouse') . ' : ' . Warehouse::getWarehouseNameById($id_warehouseA), 'warehouse2_name' => $this->l('Destination warehouse') . ' : ' . Warehouse::getWarehouseNameById($id_warehouseB), 'warehouse_id' => 'stockA', 'warehouse_real_id' => $id_warehouseA, 'warehouse2_id' => 'stockB', 'warehouse2_real_id' => $id_warehouseB, 'ps_version_sup_1550' => version_compare(_PS_VERSION_, '1.5.5.0', '>=')));
                $this->table = 'stock';
                $this->className = 'Stock';
                $this->list_no_link = true;
                $this->table = 'stock';
                $this->className = 'Stock';
                $this->identifier = 'id_stock';
                $this->_orderBy = 'name';
                $this->_select = '
                                            "-->" as direction,
                                            IFNULL(CONCAT(pl.name, \' : \', GROUP_CONCAT(DISTINCT agl.`name`, \' - \', al.name SEPARATOR \', \')),pl.name) as name,
                                            a.ean13 as EAN,
                                            w.id_currency,
                                            if (a.id_product_attribute = 0, a.id_product, CONCAT(a.id_product, ";", a.id_product_attribute)) as ids,
                                            0 as qte_transfer,
                                            a.physical_quantity as quantity_after,
                                            s2.physical_quantity as physical_quantity2,
                                            s2.usable_quantity as usable_quantity2,
                                            s2.physical_quantity as new_stock,
                                            a.id_stock as id_stock_s1,
                                            s2.id_stock as id_stock_s2';
                $this->_join .= ' LEFT JOIN `' . _DB_PREFIX_ . 'product_lang` pl ON (
                                        a.id_product = pl.id_product
                                        AND pl.id_lang = ' . (int) $this->context->language->id . ')';
                $this->_join .= ' LEFT JOIN `' . _DB_PREFIX_ . 'product_attribute_combination` pac ON (pac.id_product_attribute = a.id_product_attribute)';
                $this->_join .= ' LEFT JOIN `' . _DB_PREFIX_ . 'attribute` atr ON (atr.id_attribute = pac.id_attribute)';
                $this->_join .= ' LEFT JOIN `' . _DB_PREFIX_ . 'attribute_lang` al ON (
					al.id_attribute = pac.id_attribute
					AND al.id_lang = ' . (int) $this->context->language->id . ')';
                $this->_join .= ' LEFT JOIN `' . _DB_PREFIX_ . 'attribute_group_lang` agl ON (
					agl.id_attribute_group = atr.id_attribute_group
					AND agl.id_lang = ' . (int) $this->context->language->id . ')';
                $this->_join .= 'LEFT JOIN `' . _DB_PREFIX_ . 'warehouse` w ON (w.id_warehouse = a.id_warehouse)';
                $this->_join .= 'INNER JOIN ' . _DB_PREFIX_ . 'product p ON a.id_product = p.id_product ';
                $this->_join .= 'LEFT JOIN ' . _DB_PREFIX_ . 'product_attribute pa ON (a.id_product = pa.id_product AND a.id_product_attribute = pa.id_product_attribute)';
                $this->_join .= 'LEFT JOIN ' . _DB_PREFIX_ . 'manufacturer m ON m.id_manufacturer = p.id_manufacturer ';
                $this->_join .= 'LEFT JOIN ' . _DB_PREFIX_ . 'stock s2 ON (a.id_product = s2.id_product AND a.id_product_attribute = s2.id_product_attribute AND s2.id_warehouse = \'' . $id_warehouseB . '\')';
                $this->_group = "GROUP BY a.id_product, a.id_product_attribute";
                $this->_where .= "AND w.id_warehouse = " . $id_warehouseA;
                // FILTERS
                // Brand filter
                if (($id_manufacturer = $this->getCurrentValue('id_manufacturer')) != false) {
                    $this->_where .= ' AND m.id_manufacturer = ' . $id_manufacturer;
                }
                // Category filter
                if (($id_category = $this->getCurrentValue('id_category')) != false) {
                    $this->_where .= ' AND a.id_product IN (
											SELECT cp.id_product
											FROM ' . _DB_PREFIX_ . 'category_product cp
											WHERE cp.id_category = ' . $id_category . '
							)';
                }
                // Provider filter
                if (($id_supplier = $this->getCurrentValue('id_supplier')) != false) {
                    $this->_where .= ' AND a.id_product IN (
											SELECT ps.id_product
											FROM ' . _DB_PREFIX_ . 'product_supplier ps
											WHERE ps.id_supplier = ' . $id_supplier . '
							)';
                }
                $nameOrEan = pSQL($this->getCurrentValue('name_or_ean', ''));
                if ($nameOrEan != false && $nameOrEan != '') {
                    $this->_where .= ' AND (a.ean13 LIKE \'%' . $nameOrEan . '%\' OR pl.name LIKE \'%' . $nameOrEan . '%\' OR al.name  LIKE \'%' . $nameOrEan . '%\')';
                }
                $list = $this->renderList();
                return $list;
            } else {
                // empty cookie display form :  correction if selection warehouse + change controller
                $cookie = new Cookie('psAdmin');
                $cookie->warehouseA = '';
                $cookie->warehouseB = '';
            }
        }
    }
 public function getContent()
 {
     // assign smarty values
     $this->smarty->assign(array('products' => $this->products, 'stockA' => Warehouse::getWarehouseNameById(Tools::getValue('stockA')), 'stockB' => Warehouse::getWarehouseNameById(Tools::getValue('stockB'))));
     return $this->smarty->fetch(_PS_MODULE_DIR_ . 'erpillicopresta/views/templates/admin/stock_transfer/transfers.tpl');
 }
 public function renderAdvancedStockManagementColumn($advanced_stock_management, $data)
 {
     $warning = '';
     if (!$this->advanced_stock_management) {
         if ($advanced_stock_management == '1') {
             $warning = '<img src="../img/admin/warning.gif" class="cluetip" title="' . $this->l('Product IS USED with advanced stock management') . '"/>';
         }
     } else {
         if ($advanced_stock_management == '0') {
             $warning = '<img src="../img/admin/warning.gif" class="cluetip" title="' . $this->l('Product IS NOT USED with advanced stock management') . '"/>';
         }
     }
     // in the case where the product has stock in warehouse without be located in this warehouse
     if ((int) Tools::getValue('id_warehouse') > 0 && (int) $data['id_warehouse_product_location'] == '0') {
         $warehouse_name = Warehouse::getWarehouseNameById(Tools::getValue('id_warehouse'));
         if (!empty($warehouse_name)) {
             $message = sprintf($this->l('Product has stock in "%s" warehouse without being registered in this warehouse !'), $warehouse_name);
             $warning .= ' &nbsp; <img src="../img/admin/warning.gif" class="cluetip" title="' . $message . '"/>';
         }
     }
     return $warning;
 }