Merge branch 'fix_3.7_issue_2858' into develop

This commit is contained in:
phf 2016-06-04 18:54:55 +02:00
commit c62a69ccc8
4 changed files with 123 additions and 78 deletions

View File

@ -49,6 +49,10 @@ if($action)
{ {
$res = dolibarr_set_const($db, "STOCK_USERSTOCK_AUTOCREATE", GETPOST('STOCK_USERSTOCK_AUTOCREATE','alpha'),'chaine',0,'',$conf->entity); $res = dolibarr_set_const($db, "STOCK_USERSTOCK_AUTOCREATE", GETPOST('STOCK_USERSTOCK_AUTOCREATE','alpha'),'chaine',0,'',$conf->entity);
} }
if ($action == 'STOCK_ALLOW_NEGATIVE_TRANSFER')
{
$res = dolibarr_set_const($db, "STOCK_ALLOW_NEGATIVE_TRANSFER", GETPOST('STOCK_ALLOW_NEGATIVE_TRANSFER','alpha'),'chaine',0,'',$conf->entity);
}
// Mode of stock decrease // Mode of stock decrease
if ($action == 'STOCK_CALCULATE_ON_BILL' if ($action == 'STOCK_CALCULATE_ON_BILL'
|| $action == 'STOCK_CALCULATE_ON_VALIDATE_ORDER' || $action == 'STOCK_CALCULATE_ON_VALIDATE_ORDER'
@ -427,6 +431,22 @@ print '<input type="submit" class="button" value="'.$langs->trans("Modify").'">'
print '</form>'; print '</form>';
print "</td>\n"; print "</td>\n";
print "</tr>\n"; print "</tr>\n";
$var=!$var;
print "<tr ".$bc[$var].">";
print '<td width="60%">'.$langs->trans("WarehouseAllowNegativeTransfer").'</td>';
print '<td width="160" align="right">';
print "<form method=\"post\" action=\"stock.php\">";
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print "<input type=\"hidden\" name=\"action\" value=\"STOCK_ALLOW_NEGATIVE_TRANSFER\">";
print $form->selectyesno("STOCK_ALLOW_NEGATIVE_TRANSFER",$conf->global->STOCK_ALLOW_NEGATIVE_TRANSFER,1);
print '<input type="submit" class="button" value="'.$langs->trans("Modify").'">';
print '</form>';
print "</td>\n";
print "</tr>\n";
print '<br>'; print '<br>';
/* I keep the option/feature, but hidden to end users for the moment. If feature is used by module, no need to have users see it. /* I keep the option/feature, but hidden to end users for the moment. If feature is used by module, no need to have users see it.

View File

@ -71,7 +71,9 @@ class modStock extends DolibarrModules
$this->langfiles = array("stocks"); $this->langfiles = array("stocks");
// Constants // Constants
$this->const = array(); $this->const = array(
0=>array('STOCK_ALLOW_NEGATIVE_TRANSFER','chaine','1','',1)
);
// Boxes // Boxes
$this->boxes = array(); $this->boxes = array();

View File

@ -133,6 +133,8 @@ StockMustBeEnoughForShipment= Stock level must be enough to add product/service
MovementLabel=Label of movement MovementLabel=Label of movement
InventoryCode=Movement or inventory code InventoryCode=Movement or inventory code
IsInPackage=Contained into package IsInPackage=Contained into package
WarehouseAllowNegativeTransfer=Allow transfer even without stock
qtyToTranferIsNotEnough=You don't have enough stock from your source warehouse
ShowWarehouse=Show warehouse ShowWarehouse=Show warehouse
MovementCorrectStock=Stock correction for product %s MovementCorrectStock=Stock correction for product %s
MovementTransferStock=Stock transfer of product %s into another warehouse MovementTransferStock=Stock transfer of product %s into another warehouse

View File

@ -232,6 +232,24 @@ if ($action == "transfert_stock" && ! $cancel)
if (isset($object->pmp)) $pricesrc=$object->pmp; if (isset($object->pmp)) $pricesrc=$object->pmp;
$pricedest=$pricesrc; $pricedest=$pricesrc;
$do_tranfer = true;
if (empty($conf->global->STOCK_ALLOW_NEGATIVE_TRANSFER))
{
$fk_warehouse_source = GETPOST("id_entrepot");
$nb_unit = GETPOST("nbpiece",'int');
if (empty($object->stock_warehouse[$fk_warehouse_source]->real) || $object->stock_warehouse[$fk_warehouse_source]->real < $nb_unit)
{
$do_tranfer = false;
$result1 = $result2 = -1;
$action='';
$object->error = $langs->trans('qtyToTranferIsNotEnough');
}
}
if ($do_tranfer)
{
if ($object->hasbatch()) if ($object->hasbatch())
{ {
$pdluo = new Productbatch($db); $pdluo = new Productbatch($db);
@ -322,6 +340,9 @@ if ($action == "transfert_stock" && ! $cancel)
if ($result2 < 0) $error++; if ($result2 < 0) $error++;
} }
} }
}
if (! $error && $result1 >= 0 && $result2 >= 0) if (! $error && $result1 >= 0 && $result2 >= 0)
{ {
$db->commit(); $db->commit();