diff --git a/htdocs/expedition/dispatch.php b/htdocs/expedition/dispatch.php index 01b98c22a0c..bf7b23b21d3 100644 --- a/htdocs/expedition/dispatch.php +++ b/htdocs/expedition/dispatch.php @@ -159,6 +159,7 @@ if ($action == 'updatelines' && $usercancreate) { } $newqty = price2num(GETPOST($qty, 'alpha'), 'MS'); + //var_dump("modebatch=".$modebatch." newqty=".$newqty." ent=".$ent." idline=".$idline); // We ask to move a qty if (($modebatch == "batch" && $newqty >= 0) || ($modebatch == "barcode" && $newqty != 0)) { @@ -200,7 +201,7 @@ if ($action == 'updatelines' && $usercancreate) { $qtystart = 0; if ($idline > 0) { - $result = $expeditiondispatch->fetch($idline); + $result = $expeditiondispatch->fetch($idline); // get line from llx_expeditiondet if ($result < 0) { setEventMessages($expeditiondispatch->error, $expeditiondispatch->errors, 'errors'); $error++; @@ -225,13 +226,31 @@ if ($action == 'updatelines' && $usercancreate) { $sellby = dol_mktime(0, 0, 0, GETPOST('dlc'.$suffixkeyfordate.'month'), GETPOST('dlc'.$suffixkeyfordate.'day'), GETPOST('dlc'.$suffixkeyfordate.'year'), ''); $eatby = dol_mktime(0, 0, 0, GETPOST('dluo'.$suffixkeyfordate.'month'), GETPOST('dluo'.$suffixkeyfordate.'day'), GETPOST('dluo'.$suffixkeyfordate.'year')); - $sql = "UPDATE ".MAIN_DB_PREFIX.$expeditionlinebatch->table_element." SET"; - $sql .= " eatby = ".($eatby ? "'".$db->idate($eatby)."'" : "null"); - $sql .= " , sellby = ".($sellby ? "'".$db->idate($sellby)."'" : "null"); - $sql .= " , qty = ".((float) $newqty); - // TODO Add a column fk_warehouse - $sql .= " WHERE fk_expeditiondet = ".((int) $idline); - $sql .= " AND batch = '".$db->escape($lot)."'"; + $sqlsearchdet = "SELECT rowid FROM ".MAIN_DB_PREFIX.$expeditionlinebatch->table_element; + $sqlsearchdet .= " WHERE fk_expeditiondet = ".((int) $idline); + $sqlsearchdet .= " AND batch = '".$db->escape($lot)."'"; + $resqlsearchdet = $db->query($sqlsearchdet); + + if ($resqlsearchdet) { + $objsearchdet = $db->fetch_object($resqlsearchdet); + } else { + dol_print_error($db); + } + + if ($objsearchdet) { + $sql = "UPDATE ".MAIN_DB_PREFIX.$expeditionlinebatch->table_element." SET"; + $sql .= " eatby = ".($eatby ? "'".$db->idate($eatby)."'" : "null"); + $sql .= " , sellby = ".($sellby ? "'".$db->idate($sellby)."'" : "null"); + $sql .= " , qty = ".((float) $newqty); + // TODO Add a column fk_warehouse + $sql .= " WHERE rowid = ".((int) $objsearchdet->rowid); + } else { + $sql = "INSERT INTO ".MAIN_DB_PREFIX.$expeditionlinebatch->table_element." ("; + $sql .= "fk_expeditiondet, eatby, sellby, batch, qty, fk_origin_stock)"; + // TODO Add a column fk_warehouse + $sql .= " VALUES (".((int) $idline).", ".($eatby ? "'".$db->idate($eatby)."'" : "null").", ".($sellby ? "'".$db->idate($sellby)."'" : "null").", "; + $sql .= " '".$db->escape($lot)."', ".((float) $newqty).", 0)"; + } } else { $sql = " DELETE FROM ".MAIN_DB_PREFIX.$expeditionlinebatch->table_element; $sql .= " WHERE fk_expeditiondet = ".((int) $idline); @@ -239,7 +258,7 @@ if ($action == 'updatelines' && $usercancreate) { } $resql = $db->query($sql); - if (!$db->query($sql)) { + if (!$resql) { dol_print_error($db); $error++; } @@ -317,6 +336,7 @@ if ($action == 'updatelines' && $usercancreate) { } } } + if ($error > 0) { $db->rollback(); setEventMessages($error, $errors, 'errors'); @@ -446,7 +466,7 @@ if ($object->id > 0 || !empty($object->ref)) { print '
'; print '
'; - print ''; + print '
'; // Linked documents if ($typeobject == 'commande' && $object->$typeobject->id && isModEnabled('commande')) { @@ -605,11 +625,11 @@ if ($object->id > 0 || !empty($object->ref)) { } print ''; if ($object->status == Expedition::STATUS_DRAFT) { - print ''; } - print ''; if (!empty($conf->global->SUPPLIER_ORDER_CAN_UPDATE_BUYINGPRICE_DURING_RECEIPT)) { @@ -749,7 +769,8 @@ if ($object->id > 0 || !empty($object->ref)) { $sql .= " FROM ".MAIN_DB_PREFIX."commande_fournisseur_dispatch as cfd"; $sql .= " WHERE cfd.fk_commandefourndet = ".(int) $objp->rowid;*/ - $sql = "SELECT ed.rowid, ed.qty, ed.fk_entrepot, eb.batch, eb.eatby, eb.sellby, cd.fk_product FROM ".MAIN_DB_PREFIX."expeditiondet as ed"; + $sql = "SELECT ed.rowid, ed.qty, ed.fk_entrepot, eb.batch, eb.eatby, eb.sellby, cd.fk_product"; + $sql .= " FROM ".MAIN_DB_PREFIX."expeditiondet as ed"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."expeditiondet_batch as eb on ed.rowid = eb.fk_expeditiondet"; $sql .= " JOIN ".MAIN_DB_PREFIX."commandedet as cd on ed.fk_origin_line = cd.rowid"; $sql .= " WHERE ed.fk_origin_line =".(int) $objp->rowid; @@ -765,7 +786,7 @@ if ($object->id > 0 || !empty($object->ref)) { $suffix = "_".$j."_".$i; $objd = $db->fetch_object($resultsql); - if (isModEnabled('productbatch') && !empty($objd->batch)) { + if (isModEnabled('productbatch') && (!empty($objd->batch) || (is_null($objd->batch) && $tmpproduct->status_batch > 0))) { $type = 'batch'; // Enable hooks to append additional columns @@ -802,7 +823,7 @@ if ($object->id > 0 || !empty($object->ref)) { print ''; print ''; if (empty($conf->global->PRODUCT_DISABLE_SELLBY)) {
'.$langs->trans("QtyOrdered").''.$langs->trans("QtyToDispatchShort"); // Qty to dispatch (sum for all lines of batch detail if there is) + print ''.$langs->trans("QtyToShip"); // Qty to dispatch (sum for all lines of batch detail if there is) } else { print ''.$langs->trans("QtyDispatchedShort").''.$langs->trans("QtyToDispatchShort"); + print ''.$langs->trans("Details"); print ''; - print ''; + print ''; //print ''; print '