Inventory - adding same product multiple time will increase / decrease qty
This commit is contained in:
parent
9e45c9abab
commit
46a420dbd9
@ -308,6 +308,29 @@ if (empty($reshook)) {
|
|||||||
include DOL_DOCUMENT_ROOT.'/core/actions_sendmails.inc.php';*/
|
include DOL_DOCUMENT_ROOT.'/core/actions_sendmails.inc.php';*/
|
||||||
|
|
||||||
if (GETPOST('addline', 'alpha')) {
|
if (GETPOST('addline', 'alpha')) {
|
||||||
|
|
||||||
|
$sql = 'SELECT id.rowid, id.datec as date_creation, id.tms as date_modification, id.fk_inventory, id.fk_warehouse,';
|
||||||
|
$sql .= ' id.fk_product, id.batch, id.qty_stock, id.qty_view, id.qty_regulated';
|
||||||
|
$sql .= ' FROM '.MAIN_DB_PREFIX.'inventorydet as id';
|
||||||
|
$sql .= ' WHERE id.fk_inventory = '.((int) $object->id);
|
||||||
|
$sql .= ' AND id.fk_product = '.$fk_product;
|
||||||
|
|
||||||
|
$inventoryline = new InventoryLine($db);
|
||||||
|
$lineExists = $false;
|
||||||
|
$db->begin();
|
||||||
|
$resql = $db->query($sql);
|
||||||
|
if ($resql) {
|
||||||
|
$num = $db->num_rows($resql);
|
||||||
|
$i = 0;
|
||||||
|
if($num > 0){
|
||||||
|
$line = $db->fetch_object($resql);
|
||||||
|
if($inventoryline->fetch($line->rowid) > 0){
|
||||||
|
$lineExists = true;
|
||||||
|
//var_dump($inventoryline); die();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$qty= (GETPOST('qtytoadd') != '' ? price2num(GETPOST('qtytoadd', 'MS')) : null);
|
$qty= (GETPOST('qtytoadd') != '' ? price2num(GETPOST('qtytoadd', 'MS')) : null);
|
||||||
if ($fk_warehouse <= 0) {
|
if ($fk_warehouse <= 0) {
|
||||||
$error++;
|
$error++;
|
||||||
@ -317,7 +340,7 @@ if (empty($reshook)) {
|
|||||||
$error++;
|
$error++;
|
||||||
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Product")), null, 'errors');
|
setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Product")), null, 'errors');
|
||||||
}
|
}
|
||||||
if (price2num(GETPOST('qtytoadd'), 'MS') < 0) {
|
if (!$lineExists && price2num(GETPOST('qtytoadd'), 'MS') < 0) {
|
||||||
$error++;
|
$error++;
|
||||||
setEventMessages($langs->trans("FieldCannotBeNegative", $langs->transnoentitiesnoconv("RealQty")), null, 'errors');
|
setEventMessages($langs->trans("FieldCannotBeNegative", $langs->transnoentitiesnoconv("RealQty")), null, 'errors');
|
||||||
}
|
}
|
||||||
@ -341,7 +364,7 @@ if (empty($reshook)) {
|
|||||||
setEventMessages($langs->trans("ErrorProductDoesNotNeedBatchNumber", $tmpproduct->ref), null, 'errors');
|
setEventMessages($langs->trans("ErrorProductDoesNotNeedBatchNumber", $tmpproduct->ref), null, 'errors');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!$error) {
|
if (!$error && !$lineExists) {
|
||||||
$tmp = new InventoryLine($db);
|
$tmp = new InventoryLine($db);
|
||||||
$tmp->fk_inventory = $object->id;
|
$tmp->fk_inventory = $object->id;
|
||||||
$tmp->fk_warehouse = $fk_warehouse;
|
$tmp->fk_warehouse = $fk_warehouse;
|
||||||
@ -363,6 +386,31 @@ if (empty($reshook)) {
|
|||||||
$_POST['batch'] = '';
|
$_POST['batch'] = '';
|
||||||
$_POST['qtytoadd'] = '';
|
$_POST['qtytoadd'] = '';
|
||||||
}
|
}
|
||||||
|
}else if(!$error){
|
||||||
|
|
||||||
|
if(($inventoryline->qty_view + ((int) $qty)) < 0){
|
||||||
|
$error++;
|
||||||
|
setEventMessages($langs->trans("FieldCannotBeNegative", $langs->transnoentitiesnoconv("RealQty")), null, 'errors');
|
||||||
|
}else{
|
||||||
|
$inventoryline->qty_view += ((int) $qty); // price2num
|
||||||
|
$inventoryline->update($user);
|
||||||
|
//var_dump($fk_product); die();
|
||||||
|
|
||||||
|
if ($result < 0) {
|
||||||
|
$langs->load("errors");
|
||||||
|
setEventMessages("Erreur inconnue lors de la mise à jour du champ", null, 'errors');
|
||||||
|
} else {
|
||||||
|
setEventMessages("Quantité ajoutée ou soustraite à la ligne existante", null);
|
||||||
|
// Clear var
|
||||||
|
$_POST['batch'] = '';
|
||||||
|
$_POST['qtytoadd'] = '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (! $error) {
|
||||||
|
$db->commit();
|
||||||
|
} else {
|
||||||
|
$db->rollback();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -937,7 +985,6 @@ if ($object->id > 0) {
|
|||||||
|
|
||||||
$cacheOfProducts = array();
|
$cacheOfProducts = array();
|
||||||
$cacheOfWarehouses = array();
|
$cacheOfWarehouses = array();
|
||||||
|
|
||||||
//$sql = '';
|
//$sql = '';
|
||||||
$resql = $db->query($sql);
|
$resql = $db->query($sql);
|
||||||
if ($resql) {
|
if ($resql) {
|
||||||
@ -1003,7 +1050,8 @@ if ($object->id > 0) {
|
|||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
if ($object->status == $object::STATUS_DRAFT || $object->status == $object::STATUS_VALIDATED) {
|
if ($object->status == $object::STATUS_DRAFT || $object->status == $object::STATUS_VALIDATED) {
|
||||||
$qty_view = GETPOST("id_".$obj->rowid) && price2num(GETPOST("id_".$obj->rowid), 'MS') >= 0 ? GETPOST("id_".$obj->rowid) : $obj->qty_view;
|
//$qty_view = GETPOST("id_".$obj->rowid) && price2num(GETPOST("id_".$obj->rowid), 'MS') >= 0 ? GETPOST("id_".$obj->rowid) : $obj->qty_view;
|
||||||
|
$qty_view = $obj->qty_view;
|
||||||
|
|
||||||
//if (!$hasinput && $qty_view !== null && $obj->qty_stock != $qty_view) {
|
//if (!$hasinput && $qty_view !== null && $obj->qty_stock != $qty_view) {
|
||||||
if ($qty_view != '') {
|
if ($qty_view != '') {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user