diff --git a/htdocs/admin/stock.php b/htdocs/admin/stock.php index 067da1dd91e..9f18ebb1657 100644 --- a/htdocs/admin/stock.php +++ b/htdocs/admin/stock.php @@ -41,45 +41,43 @@ $action = GETPOST('action','alpha'); * Actions */ -if ($action == 'STOCK_USERSTOCK_AUTOCREATE') -{ - $db->begin(); - $res = dolibarr_set_const($db, "STOCK_USERSTOCK_AUTOCREATE", GETPOST('STOCK_USERSTOCK_AUTOCREATE','alpha'),'chaine',0,'',$conf->entity); -} -// Mode of stock decrease -if ($action == 'STOCK_CALCULATE_ON_BILL' -|| $action == 'STOCK_CALCULATE_ON_VALIDATE_ORDER' -|| $action == 'STOCK_CALCULATE_ON_SHIPMENT') -{ - $db->begin(); - $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_BILL", '','chaine',0,'',$conf->entity); - $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_VALIDATE_ORDER", '','chaine',0,'',$conf->entity); - $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_SHIPMENT", '','chaine',0,'',$conf->entity); - if ($action == 'STOCK_CALCULATE_ON_BILL') $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_BILL", GETPOST('STOCK_CALCULATE_ON_BILL','alpha'),'chaine',0,'',$conf->entity); - if ($action == 'STOCK_CALCULATE_ON_VALIDATE_ORDER') $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_VALIDATE_ORDER", GETPOST('STOCK_CALCULATE_ON_VALIDATE_ORDER','alpha'),'chaine',0,'',$conf->entity); - if ($action == 'STOCK_CALCULATE_ON_SHIPMENT') $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_SHIPMENT", GETPOST('STOCK_CALCULATE_ON_SHIPMENT','alpha'),'chaine',0,'',$conf->entity); -} -// Mode of stock increase -if ($action == 'STOCK_CALCULATE_ON_SUPPLIER_BILL' -|| $action == 'STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER' -|| $action == 'STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER') -{ - $db->begin(); - $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_SUPPLIER_BILL", '','chaine',0,'',$conf->entity); - $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER", '','chaine',0,'',$conf->entity); - $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER", '','chaine',0,'',$conf->entity); - if ($action == 'STOCK_CALCULATE_ON_SUPPLIER_BILL') $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_SUPPLIER_BILL", GETPOST('STOCK_CALCULATE_ON_SUPPLIER_BILL','alpha'),'chaine',0,'',$conf->entity); - if ($action == 'STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER') $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER", GETPOST('STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER','alpha'),'chaine',0,'',$conf->entity); - if ($action == 'STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER') $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER", GETPOST('STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER','alpha'),'chaine',0,'',$conf->entity); -} - -if($action == 'USE_VIRTUAL_STOCK') { - $db->begin(); - $res = dolibarr_set_const($db, "USE_VIRTUAL_STOCK", GETPOST('USE_VIRTUAL_STOCK','alpha'),'chaine',0,'',$conf->entity); -} - if($action) { + $db->begin(); + + if ($action == 'STOCK_USERSTOCK_AUTOCREATE') + { + $res = dolibarr_set_const($db, "STOCK_USERSTOCK_AUTOCREATE", GETPOST('STOCK_USERSTOCK_AUTOCREATE','alpha'),'chaine',0,'',$conf->entity); + } + // Mode of stock decrease + if ($action == 'STOCK_CALCULATE_ON_BILL' + || $action == 'STOCK_CALCULATE_ON_VALIDATE_ORDER' + || $action == 'STOCK_CALCULATE_ON_SHIPMENT') + { + $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_BILL", '','chaine',0,'',$conf->entity); + $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_VALIDATE_ORDER", '','chaine',0,'',$conf->entity); + $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_SHIPMENT", '','chaine',0,'',$conf->entity); + if ($action == 'STOCK_CALCULATE_ON_BILL') $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_BILL", GETPOST('STOCK_CALCULATE_ON_BILL','alpha'),'chaine',0,'',$conf->entity); + if ($action == 'STOCK_CALCULATE_ON_VALIDATE_ORDER') $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_VALIDATE_ORDER", GETPOST('STOCK_CALCULATE_ON_VALIDATE_ORDER','alpha'),'chaine',0,'',$conf->entity); + if ($action == 'STOCK_CALCULATE_ON_SHIPMENT') $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_SHIPMENT", GETPOST('STOCK_CALCULATE_ON_SHIPMENT','alpha'),'chaine',0,'',$conf->entity); + } + // Mode of stock increase + if ($action == 'STOCK_CALCULATE_ON_SUPPLIER_BILL' + || $action == 'STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER' + || $action == 'STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER') + { + $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_SUPPLIER_BILL", '','chaine',0,'',$conf->entity); + $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER", '','chaine',0,'',$conf->entity); + $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER", '','chaine',0,'',$conf->entity); + if ($action == 'STOCK_CALCULATE_ON_SUPPLIER_BILL') $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_SUPPLIER_BILL", GETPOST('STOCK_CALCULATE_ON_SUPPLIER_BILL','alpha'),'chaine',0,'',$conf->entity); + if ($action == 'STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER') $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER", GETPOST('STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER','alpha'),'chaine',0,'',$conf->entity); + if ($action == 'STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER') $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER", GETPOST('STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER','alpha'),'chaine',0,'',$conf->entity); + } + + if($action == 'STOCK_USE_VIRTUAL_STOCK') { + $res = dolibarr_set_const($db, "STOCK_USE_VIRTUAL_STOCK", GETPOST('STOCK_USE_VIRTUAL_STOCK','alpha'),'chaine',0,'',$conf->entity); + } + if (! $res > 0) $error++; if (! $error) @@ -249,25 +247,34 @@ if (! empty($conf->fournisseur->enabled)) print ''; -print '
'; -print ''; -print ''; -print " \n"; -print " \n"; -print ''."\n"; -$var = !$var; -print ""; -print ''; -print '\n"; -print "\n"; -print '
".$langs->trans("RuleForStockReplenishment")." 
'.$langs->trans("UseVirtualStock").''; -print "
"; -print ''; -print ""; -print $form->selectyesno("USE_VIRTUAL_STOCK",$conf->global->USE_VIRTUAL_STOCK,1); -print ''; -print '
'; -print "
'; + +$virtualdiffersfromphysical=0; +if (! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT) + || ! empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER) + ) $virtualdiffersfromphysical=1; // According to increase/decrease stock options, virtual and physical stock may differs. + +if ($virtualdiffersfromphysical) +{ + print '
'; + print ''; + print ''; + print " \n"; + print " \n"; + print ''."\n"; + $var = !$var; + print ""; + print ''; + print '\n"; + print "\n"; + print '
".$langs->trans("RuleForStockReplenishment")." ".img_help('help',$langs->trans("VirtualDiffersFromPhysical"))." 
'.$langs->trans("UseVirtualStockByDefault").''; + print "
"; + print ''; + print ""; + print $form->selectyesno("STOCK_USE_VIRTUAL_STOCK",$conf->global->STOCK_USE_VIRTUAL_STOCK,1); + print ''; + print '
'; + print "
'; +} $db->close(); diff --git a/htdocs/langs/en_US/stocks.lang b/htdocs/langs/en_US/stocks.lang index 4d55ae663e1..032412cc322 100644 --- a/htdocs/langs/en_US/stocks.lang +++ b/htdocs/langs/en_US/stocks.lang @@ -94,14 +94,20 @@ DesiredStock=Desired stock StockToBuy=To order Replenishment=Replenishment ReplenishmentOrders=Replenishment orders -UseVirtualStock=Use virtual stock instead of physical stock +VirtualDiffersFromPhysical=According to increase/decrease stock options, physical stock and virtual stock (physical + current orders) may differs +UseVirtualStockByDefault=Use virtual stock by default, instead of physical stock, for replenishment feature +UseVirtualStock=Use virtual stock +UsePhysicalStock=Use physical stock +CurentSelectionMode=Curent selection mode +CurentlyUsingVirtualStock=Virtual stock +CurentlyUsingPhysicalStock=Physical stock RuleForStockReplenishment=Rule for stocks replenishment SelectProductWithNotNullQty=Select at least one product with a qty not null and a supplier AlertOnly= Alerts only WarehouseForStockDecrease=The warehouse %s will be used for stock decrease WarehouseForStockIncrease=The warehouse %s will be used for stock increase ForThisWarehouse=For this warehouse -ReplenishmentStatusDesc=This is list of all product with a physical stock lower than desired stock (or alert value if checkbox "alert only" is checked) and suggest you to create supplier orders to fill the difference. +ReplenishmentStatusDesc=This is list of all product with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked), and suggest you to create supplier orders to fill the difference. ReplenishmentOrdersDesc=This is list of all opened supplier orders Replenishments=Replenishments NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s) diff --git a/htdocs/product/stock/replenish.php b/htdocs/product/stock/replenish.php index 887a23ac0bc..b1c0e4a6041 100644 --- a/htdocs/product/stock/replenish.php +++ b/htdocs/product/stock/replenish.php @@ -170,6 +170,19 @@ if ($action == 'order' && isset($_POST['valid'])) * View */ +$virtualdiffersfromphysical=0; +if (! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT) + || ! empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER) + ) $virtualdiffersfromphysical=1; // According to increase/decrease stock options, virtual and physical stock may differs. + +$usevirtualstock=-1; +if ($virtualdiffersfromphysical) +{ + $usevirtualstock=($conf->global->STOCK_USE_VIRTUAL_STOCK?1:0); + if (GETPOST('mode')=='virtual') $usevirtualstock=1; + if (GETPOST('mode')=='physical') $usevirtualstock=0; +} + $title = $langs->trans('Status'); $sql = 'SELECT p.rowid, p.ref, p.label, p.price,'; @@ -251,7 +264,20 @@ $head[1][2] = 'replenishorders'; dol_fiche_head($head, 'replenish', $langs->trans('Replenishment'), 0, 'stock'); -print $langs->trans("ReplenishmentStatusDesc").'

'; +print $langs->trans("ReplenishmentStatusDesc").'
'."\n"; +if ($usevirtualstock == 1) +{ + print $langs->trans("CurentSelectionMode").': '; + print $langs->trans("CurentlyUsingVirtualStock").' - '; + print ''.$langs->trans("UsePhysicalStock").'
'; +} +if ($usevirtualstock == 0) +{ + print $langs->trans("CurentSelectionMode").': '; + print $langs->trans("CurentlyUsingPhysicalStock").' - '; + print ''.$langs->trans("UseVirtualStock").'
'; +} +print '
'."\n"; if ($sref || $snom || $sall || $salert || GETPOST('search', 'alpha')) { $filters = '&sref=' . $sref . '&snom=' . $snom; @@ -344,14 +370,11 @@ print_liste_field_titre( $sortfield, $sortorder ); -if ($conf->global->USE_VIRTUAL_STOCK) -{ - $stocklabel = $langs->trans('VirtualStock'); -} -else -{ - $stocklabel = $langs->trans('PhysicalStock'); -} + +$stocklabel = $langs->trans('Stock'); +if ($usevirtualstock == 1) $stocklabel = $langs->trans('VirtualStock'); +if ($usevirtualstock == 0) $stocklabel = $langs->trans('PhysicalStock'); + print_liste_field_titre( $stocklabel, $_SERVER["PHP_SELF"], @@ -449,9 +472,9 @@ while ($i < min($num, $limit)) $prod->type = $objp->fk_product_type; $ordered = ordered($prod->id); - if ($conf->global->USE_VIRTUAL_STOCK) + if ($usevirtualstock) { - //compute virtual stock + // If option to increase/decrease is not on an object validation, virtual stock may differs from physical stock. $prod->fetch($prod->id); $result=$prod->load_stats_commande(0, '1,2'); if ($result < 0) { @@ -609,4 +632,4 @@ function toggle(source) llxFooter(); $db->close(); -?> +?> \ No newline at end of file