diff --git a/htdocs/product/list.php b/htdocs/product/list.php index 356253cfab7..4a00c711040 100644 --- a/htdocs/product/list.php +++ b/htdocs/product/list.php @@ -43,6 +43,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/product.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; require_once DOL_DOCUMENT_ROOT.'/product/class/html.formproduct.class.php'; +require_once DOL_DOCUMENT_ROOT.'/workstation/class/workstation.class.php'; if (isModEnabled('categorie')) { require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcategory.class.php'; @@ -69,6 +70,7 @@ $search_ref = GETPOST("search_ref", 'alpha'); $search_ref_supplier = GETPOST("search_ref_supplier", 'alpha'); $search_barcode = GETPOST("search_barcode", 'alpha'); $search_label = GETPOST("search_label", 'alpha'); +$search_default_workstation = GETPOST("search_default_workstation", 'alpha'); $search_type = GETPOST("search_type", 'int'); $search_vatrate = GETPOST("search_vatrate", 'alpha'); $searchCategoryProductOperator = 0; @@ -230,6 +232,7 @@ $arrayfields = array( 'p.volume'=>array('label'=>'Volume', 'checked'=>0, 'enabled'=>(isModEnabled("product") && empty($conf->global->PRODUCT_DISABLE_VOLUME) && $type != '1'), 'position'=>30), 'p.volume_units'=>array('label'=>'VolumeUnits', 'checked'=>0, 'enabled'=>(isModEnabled("product") && empty($conf->global->PRODUCT_DISABLE_VOLUME) && $type != '1'), 'position'=>31), 'cu.label'=>array('label'=>"DefaultUnitToShow", 'checked'=>0, 'enabled'=>(isModEnabled("product") && !empty($conf->global->PRODUCT_USE_UNITS)), 'position'=>32), + 'p.fk_default_workstation'=>array('label'=>'DefaultWorkstation', 'checked'=>0, 'enabled'=>isModEnabled('workstation') && $type == 1, 'position'=>33), 'p.sellprice'=>array('label'=>"SellingPrice", 'checked'=>1, 'enabled'=>empty($conf->global->PRODUIT_MULTIPRICES), 'position'=>40), 'p.tva_tx'=>array('label'=>"VATRate", 'checked'=>0, 'enabled'=>empty($conf->global->PRODUIT_MULTIPRICES), 'position'=>41), 'p.minbuyprice'=>array('label'=>"BuyingPriceMinShort", 'checked'=>1, 'enabled'=>(!empty($user->rights->fournisseur->lire)), 'position'=>42), @@ -331,6 +334,7 @@ if (empty($reshook)) { $search_ref = ""; $search_ref_supplier = ""; $search_label = ""; + $search_default_workstation = ""; $search_barcode = ""; $searchCategoryProductOperator = 0; $searchCategoryProductList = array(); @@ -409,7 +413,10 @@ if ($search_type != '' && $search_type != '-1') { $sql = 'SELECT p.rowid, p.ref, p.label, p.fk_product_type, p.barcode, p.price, p.tva_tx, p.price_ttc, p.price_base_type, p.entity,'; $sql .= ' p.fk_product_type, p.duration, p.finished, p.tosell, p.tobuy, p.seuil_stock_alerte, p.desiredstock,'; -$sql .= ' p.tobatch,'; +$sql .= ' p.tobatch, '; +if (isModEnabled('workstation')) { + $sql .= ' p.fk_default_workstation, ws.status as status_workstation, ws.ref as ref_workstation, '; +} if (empty($conf->global->MAIN_PRODUCT_PERENTITY_SHARED)) { $sql .= " p.accountancy_code_sell, p.accountancy_code_sell_intra, p.accountancy_code_sell_export, p.accountancy_code_buy, p.accountancy_code_buy_intra, p.accountancy_code_buy_export,"; } else { @@ -438,6 +445,9 @@ $sql .= $hookmanager->resPrint; $sqlfields = $sql; // $sql fields to remove for count total $sql .= ' FROM '.MAIN_DB_PREFIX.'product as p'; +if (isModEnabled('workstation')) { + $sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "workstation_workstation ws ON (p.fk_default_workstation = ws.rowid)"; +} if (!empty($conf->global->MAIN_PRODUCT_PERENTITY_SHARED)) { $sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "product_perentity as ppe ON ppe.fk_product = p.rowid AND ppe.entity = " . ((int) $conf->entity); } @@ -493,6 +503,9 @@ if ($search_ref) { if ($search_label) { $sql .= natural_search('p.label', $search_label); } +if ($search_default_workstation) { + $sql .= natural_search('ws.ref', $search_default_workstation); +} if ($search_barcode) { $sql .= natural_search('p.barcode', $search_barcode); } @@ -587,6 +600,9 @@ $sql .= ' p.weight, p.weight_units, p.length, p.length_units, p.width, p.width_u if (!empty($conf->global->PRODUCT_USE_UNITS)) { $sql .= ', p.fk_unit, cu.label'; } +if (isModEnabled('workstation')) { + $sql .= ', p.fk_default_workstation, ws.status, ws.ref '; +} if (isModEnabled('variants') && (!empty($conf->global->PRODUIT_ATTRIBUTES_HIDECHILD) && !$show_childproducts)) { $sql .= ', pac.rowid'; @@ -699,6 +715,9 @@ if ($search_barcode) { if ($search_label) { $param .= "&search_label=".urlencode($search_label); } +if ($search_default_workstation) { + $param .= "&search_default_workstation=".urlencode($search_default_workstation); +} if ($search_tosell != '') { $param .= "&search_tosell=".urlencode($search_tosell); } @@ -1015,6 +1034,13 @@ if (!empty($arrayfields['cu.label']['checked'])) { print ''; } +// Default workstation +if (!empty($arrayfields['p.fk_default_workstation']['checked'])) { + print ''; + print ''; + print ''; +} + // Sell price if (!empty($arrayfields['p.sellprice']['checked'])) { print ''; @@ -1230,6 +1256,9 @@ if (!empty($arrayfields['p.volume_units']['checked'])) { if (!empty($arrayfields['cu.label']['checked'])) { print_liste_field_titre($arrayfields['cu.label']['label'], $_SERVER['PHP_SELF'], '', '', $param, '', $sortfield, $sortorder, 'center '); } +if (!empty($arrayfields['p.fk_default_workstation']['checked'])) { + print_liste_field_titre($arrayfields['p.fk_default_workstation']['label'], $_SERVER['PHP_SELF'], 'ws.ref', '', $param, '', $sortfield, $sortorder); +} if (!empty($arrayfields['p.sellprice']['checked'])) { print_liste_field_titre($arrayfields['p.sellprice']['label'], $_SERVER["PHP_SELF"], "", "", $param, '', $sortfield, $sortorder, 'right '); } @@ -1322,6 +1351,7 @@ print "\n"; $product_static = new Product($db); +$static_ws = new Workstation($db); $product_fourn = new ProductFournisseur($db); $i = 0; @@ -1665,6 +1695,22 @@ while ($i < min($num, $limit)) { } } + // Default Workstation + if (!empty($arrayfields['p.fk_default_workstation']['checked'])) { + print ''; + if (!empty($obj->fk_default_workstation)) { + $static_ws->id = $obj->fk_default_workstation; + $static_ws->ref = $obj->ref_workstation; + $static_ws->status = $obj->status_workstation; + + print $static_ws->getNomUrl(1); + } + print ''; + if (!$i) { + $totalarray['nbfield']++; + } + } + // Sell price if (!empty($arrayfields['p.sellprice']['checked'])) { print '';