// SupplyOrders: fixed products loaded under a particular threshold. StockMvt: CSV export
This commit is contained in:
@@ -431,4 +431,19 @@ class WarehouseCore extends ObjectModel
|
|||||||
|
|
||||||
return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($query);
|
return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($query);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
/**
|
||||||
|
* For a given $id_warehouse, returns its name
|
||||||
|
* @param int $id_warehouse
|
||||||
|
* @return string name
|
||||||
|
*/
|
||||||
|
public static function getWarehouseNameById($id_warehouse)
|
||||||
|
{
|
||||||
|
$query = new DbQuery();
|
||||||
|
$query->select('name');
|
||||||
|
$query->from('warehouse');
|
||||||
|
$query->where('id_warehouse = '.(int)$id_warehouse);
|
||||||
|
return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($query);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|||||||
@@ -162,7 +162,20 @@ class AdminStockMvtControllerCore extends AdminController
|
|||||||
array_unshift($warehouses, array('id_warehouse' => -1, 'name' => $this->l('All Warehouses')));
|
array_unshift($warehouses, array('id_warehouse' => -1, 'name' => $this->l('All Warehouses')));
|
||||||
$this->tpl_list_vars['list_warehouses'] = $warehouses;
|
$this->tpl_list_vars['list_warehouses'] = $warehouses;
|
||||||
|
|
||||||
return parent::renderList();
|
// sets toolbar
|
||||||
|
$this->initToolbar();
|
||||||
|
|
||||||
|
// renders list
|
||||||
|
$list = parent::renderList();
|
||||||
|
|
||||||
|
// if export requested
|
||||||
|
if (Tools::isSubmit('csv'))
|
||||||
|
{
|
||||||
|
$this->renderCSV();
|
||||||
|
die;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $list;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -207,4 +220,52 @@ class AdminStockMvtControllerCore extends AdminController
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
/**
|
||||||
|
* @see AdminController::initToolbar();
|
||||||
|
*/
|
||||||
|
public function initToolbar()
|
||||||
|
{
|
||||||
|
$this->toolbar_btn['export-csv'] = array(
|
||||||
|
'short' => 'Export this list as CSV',
|
||||||
|
'href' => $this->context->link->getAdminLink('AdminStockMvt').'&csv',
|
||||||
|
'desc' => $this->l('Export (CSV)'),
|
||||||
|
);
|
||||||
|
parent::initToolbar();
|
||||||
|
unset($this->toolbar_btn['new']);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Exports CSV
|
||||||
|
*/
|
||||||
|
public function renderCSV()
|
||||||
|
{
|
||||||
|
if (!$this->_list)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// header
|
||||||
|
if ($this->getCurrentWarehouseId() != -1)
|
||||||
|
$filename = $this->l('stock_mvt').'_'.Warehouse::getWarehouseNameById($this->getCurrentWarehouseId()).'.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', 'firstname', 'lastname', 'quantity',
|
||||||
|
'date', 'sign', 'price_te', 'product_name', 'label', 'reference', 'ean13', 'upc');
|
||||||
|
echo sprintf("%s\n", implode(';', $keys));
|
||||||
|
|
||||||
|
// puts rows
|
||||||
|
foreach ($this->_list as $row)
|
||||||
|
{
|
||||||
|
// unsets not needed keys
|
||||||
|
unset($row['id_stock_mvt'], $row['id_stock'], $row['id_stock_mvt_reason'],
|
||||||
|
$row['id_employee'], $row['last_wa'], $row['current_wa'], $row['referer'], $row['id_currency'], $row['employee']);
|
||||||
|
// puts one row
|
||||||
|
echo sprintf("%s\n", implode(';', array_map(array('CSVCore', 'wrap'), $row)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|||||||
@@ -1053,6 +1053,9 @@ class AdminSupplyOrdersControllerCore extends AdminController
|
|||||||
$this->loadProducts($quantity_threshold);
|
$this->loadProducts($quantity_threshold);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Exports CSV
|
||||||
|
*/
|
||||||
protected function renderCSV()
|
protected function renderCSV()
|
||||||
{
|
{
|
||||||
// exports orders
|
// exports orders
|
||||||
@@ -1813,38 +1816,37 @@ class AdminSupplyOrdersControllerCore extends AdminController
|
|||||||
|
|
||||||
// gets products
|
// gets products
|
||||||
$query = new DbQuery();
|
$query = new DbQuery();
|
||||||
$query->select('s.id_product,
|
$query->select('ps.id_product,
|
||||||
s.id_product_attribute,
|
ps.id_product_attribute,
|
||||||
ps.product_supplier_reference as supplier_reference,
|
ps.product_supplier_reference as supplier_reference,
|
||||||
ps.product_supplier_price_te as unit_price_te,
|
ps.product_supplier_price_te as unit_price_te,
|
||||||
ps.id_currency,
|
ps.id_currency,
|
||||||
IFNULL(pa.reference, IFNULL(p.reference, \'\')) as reference,
|
IFNULL(pa.reference, IFNULL(p.reference, \'\')) as reference,
|
||||||
IFNULL(pa.ean13, IFNULL(p.ean13, \'\')) as ean13,
|
IFNULL(pa.ean13, IFNULL(p.ean13, \'\')) as ean13,
|
||||||
IFNULL(pa.upc, IFNULL(p.upc, \'\')) as upc');
|
IFNULL(pa.upc, IFNULL(p.upc, \'\')) as upc');
|
||||||
$query->from('stock s');
|
$query->from('product_supplier ps');
|
||||||
$query->innerJoin('product_supplier ps ON
|
$query->leftJoin('stock s ON
|
||||||
(
|
(
|
||||||
ps.id_product = s.id_product
|
s.id_product = ps.id_product
|
||||||
AND
|
AND
|
||||||
ps.id_product_attribute = s.id_product_attribute
|
s.id_product_attribute = ps.id_product_attribute
|
||||||
AND
|
)');
|
||||||
ps.id_supplier = '.(int)$supply_order->id_supplier.'
|
|
||||||
)');
|
|
||||||
$query->innerJoin('warehouse_product_location wpl ON
|
$query->innerJoin('warehouse_product_location wpl ON
|
||||||
(
|
(
|
||||||
wpl.id_product = s.id_product
|
wpl.id_product = ps.id_product
|
||||||
AND
|
AND
|
||||||
wpl.id_product_attribute = s.id_product_attribute
|
wpl.id_product_attribute = ps.id_product_attribute
|
||||||
AND
|
AND
|
||||||
wpl.id_warehouse = '.(int)$supply_order->id_warehouse.'
|
wpl.id_warehouse = '.(int)$supply_order->id_warehouse.'
|
||||||
)');
|
)');
|
||||||
$query->leftJoin('product p ON (p.id_product = s.id_product)');
|
$query->leftJoin('product p ON (p.id_product = ps.id_product)');
|
||||||
$query->leftJoin('product_attribute pa ON
|
$query->leftJoin('product_attribute pa ON
|
||||||
(
|
(
|
||||||
pa.id_product_attribute = s.id_product_attribute
|
pa.id_product_attribute = ps.id_product_attribute
|
||||||
AND
|
AND
|
||||||
p.id_product = s.id_product
|
p.id_product = ps.id_product
|
||||||
)');
|
)');
|
||||||
|
$query->where('ps.id_supplier = '.(int)$supply_order->id_supplier);
|
||||||
|
|
||||||
// gets items
|
// gets items
|
||||||
$items = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($query);
|
$items = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($query);
|
||||||
@@ -1857,10 +1859,10 @@ class AdminSupplyOrdersControllerCore extends AdminController
|
|||||||
$manager = StockManagerFactory::getManager();
|
$manager = StockManagerFactory::getManager();
|
||||||
foreach ($items as $item)
|
foreach ($items as $item)
|
||||||
{
|
{
|
||||||
if ($manager->getProductRealQuantities($item['id_product'], $item['id_product_attribute'], $supply_order->id_warehouse, true) < $threshold)
|
if ($manager->getProductRealQuantities($item['id_product'], $item['id_product_attribute'], $supply_order->id_warehouse, true) <= $threshold)
|
||||||
{
|
{
|
||||||
$product_currency = new Currency($item['id_currency']);
|
$product_currency = new Currency($item['id_currency']);
|
||||||
if (!Validate::isLoadedObject($order_currency))
|
if (Validate::isLoadedObject($product_currency))
|
||||||
{
|
{
|
||||||
// sets supply_order_detail
|
// sets supply_order_detail
|
||||||
$supply_order_detail = new SupplyOrderDetail();
|
$supply_order_detail = new SupplyOrderDetail();
|
||||||
|
|||||||
Reference in New Issue
Block a user