mirror of
https://github.com/Dolibarr/dolibarr.git
synced 2025-02-20 13:46:52 +01:00
Debug v17
This commit is contained in:
parent
9972277679
commit
58238166d8
|
|
@ -180,7 +180,8 @@ NEW: Widgets: Add widget of open opportunities
|
|||
NEW: Use an ajax component to swith prospection status on thidparty list
|
||||
NEW: Comment on survey is possible only after vote.
|
||||
NEW: Add partial payment reason "withholding tax"
|
||||
|
||||
NEW: A new tab for reception and shipment
|
||||
|
||||
For developers or integrators:
|
||||
------------------------------
|
||||
|
||||
|
|
|
|||
|
|
@ -25,9 +25,9 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* \file htdocs/fourn/expedition/dispatch.php
|
||||
* \file htdocs/expedition/dispatch.php
|
||||
* \ingroup expedition
|
||||
* \brief Page to dispatch expediting
|
||||
* \brief Page to dispatch shipments
|
||||
*/
|
||||
|
||||
// Load Dolibarr environment
|
||||
|
|
@ -96,7 +96,7 @@ if ($id > 0 || !empty($ref)) {
|
|||
}
|
||||
|
||||
// $id is id of a purchase order.
|
||||
$result = restrictedArea($user, 'expedition', $object->id, '');
|
||||
$result = restrictedArea($user, 'expedition', $object, '');
|
||||
|
||||
if (!isModEnabled('stock')) {
|
||||
accessforbidden();
|
||||
|
|
@ -150,7 +150,7 @@ if ($action == 'updatelines' && $usercancreate) {
|
|||
$lot = '';
|
||||
$dDLUO = '';
|
||||
$dDLC = '';
|
||||
if ($modebatch == "batch") { //TODO: Make imposible to input non existing batchcode
|
||||
if ($modebatch == "batch") { //TODO: Make impossible to input non existing batchcode
|
||||
$lot = GETPOST('lot_number_'.$reg[1].'_'.$reg[2]);
|
||||
$dDLUO = dol_mktime(12, 0, 0, GETPOST('dluo_'.$reg[1].'_'.$reg[2].'month', 'int'), GETPOST('dluo_'.$reg[1].'_'.$reg[2].'day', 'int'), GETPOST('dluo_'.$reg[1].'_'.$reg[2].'year', 'int'));
|
||||
$dDLC = dol_mktime(12, 0, 0, GETPOST('dlc_'.$reg[1].'_'.$reg[2].'month', 'int'), GETPOST('dlc_'.$reg[1].'_'.$reg[2].'day', 'int'), GETPOST('dlc_'.$reg[1].'_'.$reg[2].'year', 'int'));
|
||||
|
|
@ -313,7 +313,7 @@ $form = new Form($db);
|
|||
$formproduct = new FormProduct($db);
|
||||
$warehouse_static = new Entrepot($db);
|
||||
|
||||
$title = $langs->trans('Shipment');
|
||||
$title = $object->ref." - ".$langs->trans('ShipmentDistribution');
|
||||
$help_url = 'EN:Module_Shipments|FR:Module_Expéditions|ES:Módulo_Expediciones|DE:Modul_Lieferungen';
|
||||
$morejs = array('/expedition/js/lib_dispatch.js.php');
|
||||
|
||||
|
|
@ -440,7 +440,6 @@ if ($id > 0 || !empty($ref)) {
|
|||
print '<table class="nobordernopadding" width="100%"><tr><td>';
|
||||
print $langs->trans('DateDeliveryPlanned');
|
||||
print '</td>';
|
||||
|
||||
if ($action != 'editdate_livraison') {
|
||||
print '<td class="right"><a class="editfielda" href="'.$_SERVER["PHP_SELF"].'?action=editdate_livraison&token='.newToken().'&id='.$object->id.'">'.img_edit($langs->trans('SetDeliveryDate'), 1).'</a></td>';
|
||||
}
|
||||
|
|
@ -460,8 +459,9 @@ if ($id > 0 || !empty($ref)) {
|
|||
print '</tr></table>';
|
||||
|
||||
print '<br><center>';
|
||||
print '<a href="#" id="resetalltoexpected" class="marginrightonly paddingright marginleftonly paddingleft">'.img_picto("", 'eraser', 'class="pictofixedwidth"').$langs->trans("ResetQtyToDispatch").'</a></td>';
|
||||
print '<a href="#" id="autoreset" class="marginrightonly paddingright marginleftonly paddingleft">'.img_picto("", 'eraser', 'class="pictofixedwidth"').$langs->trans("Reset").'</a></td>';
|
||||
print '<a href="#" id="resetalltoexpected" class="marginrightonly paddingright marginleftonly paddingleft">'.img_picto("", 'autofill', 'class="pictofixedwidth"').$langs->trans("RestoreWithCurrentQtySaved").'</a></td>';
|
||||
// Link to clear qty
|
||||
print '<a href="#" id="autoreset" class="marginrightonly paddingright marginleftonly paddingleft">'.img_picto("", 'eraser', 'class="pictofixedwidth"').$langs->trans("ClearQtys").'</a></td>';
|
||||
print '<center>';
|
||||
|
||||
print '<br>';
|
||||
|
|
@ -477,16 +477,14 @@ if ($id > 0 || !empty($ref)) {
|
|||
|
||||
print '<form method="post" action="'.$_SERVER["PHP_SELF"].'">';
|
||||
|
||||
|
||||
print '<input type="hidden" name="token" value="'.newToken().'">';
|
||||
print '<input type="hidden" name="action" value="updatelines">';
|
||||
print '<input type="hidden" name="id" value="'.$object->id.'">';
|
||||
|
||||
|
||||
print '<div class="div-table-responsive-no-min">';
|
||||
print '<table class="noborder centpercent">';
|
||||
|
||||
// Set $products_dispatched with qty dispatched for each product id
|
||||
// Get list of lines from the shipments $products_dispatched with qty dispatched for each product id
|
||||
$products_dispatched = array();
|
||||
$sql = "SELECT ed.fk_origin_line as rowid, sum(ed.qty) as qty";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."expeditiondet as ed";
|
||||
|
|
@ -501,14 +499,14 @@ if ($id > 0 || !empty($ref)) {
|
|||
if ($num) {
|
||||
while ($i < $num) {
|
||||
$objd = $db->fetch_object($resql);
|
||||
$products_dispatched[$objd->rowid] = price2num($objd->qty, 5);
|
||||
$products_dispatched[$objd->rowid] = price2num($objd->qty, 'MS');
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
$db->free($resql);
|
||||
}
|
||||
//$sql = "SELECT l.rowid, l.fk_product, l.subprice, l.remise_percent, l.ref AS sref, SUM(l.qty) as qty,";
|
||||
$sql = "SELECT l.rowid, l.fk_product, l.subprice, l.remise_percent, l.ref_ext AS sref, l.qty as qty,";
|
||||
$sql = "SELECT l.rowid, l.fk_product, l.subprice, l.remise_percent, '' AS sref, l.qty as qty,";
|
||||
$sql .= " p.ref, p.label, p.tobatch, p.fk_default_warehouse";
|
||||
// Enable hooks to alter the SQL query (SELECT)
|
||||
$parameters = array();
|
||||
|
|
@ -529,7 +527,6 @@ if ($id > 0 || !empty($ref)) {
|
|||
if (empty($conf->global->STOCK_SUPPORTS_SERVICES)) {
|
||||
$sql .= " AND l.product_type = 0";
|
||||
}
|
||||
|
||||
// Enable hooks to alter the SQL query (WHERE)
|
||||
$parameters = array();
|
||||
$reshook = $hookmanager->executeHooks(
|
||||
|
|
@ -640,7 +637,7 @@ if ($id > 0 || !empty($ref)) {
|
|||
print '<!-- Line to dispatch '.$suffix.' -->'."\n";
|
||||
// hidden fields for js function
|
||||
print '<input id="qty_ordered'.$suffix.'" type="hidden" value="'.$objp->qty.'">';
|
||||
print '<input id="qty_dispatched'.$suffix.'" type="hidden" data-dispatched="'.(float) $alreadydispatched.'" value="'.(float) $alreadydispatched.'">';
|
||||
print '<input id="qty_dispatched'.$suffix.'" type="hidden" data-dispatched="'.((float) $alreadydispatched).'" value="'.(float) $alreadydispatched.'">';
|
||||
print '<tr class="oddeven">';
|
||||
|
||||
if (empty($conf->cache['product'][$objp->fk_product])) {
|
||||
|
|
@ -673,7 +670,7 @@ if ($id > 0 || !empty($ref)) {
|
|||
print $linktoprod;
|
||||
print "</td>";
|
||||
print '<td class="dispatch_batch_number">';
|
||||
print $langs->trans("ProductDoesNotUseBatchSerial");
|
||||
print '<span class="opacitymedium small">'.$langs->trans("ProductDoesNotUseBatchSerial").'</span>';
|
||||
print '</td>';
|
||||
if (empty($conf->global->PRODUCT_DISABLE_SELLBY)) {
|
||||
print '<td class="dispatch_dlc"></td>';
|
||||
|
|
@ -687,6 +684,7 @@ if ($id > 0 || !empty($ref)) {
|
|||
print $linktoprod;
|
||||
print "</td>";
|
||||
}
|
||||
|
||||
// Define unit price for PMP calculation
|
||||
$up_ht_disc = $objp->subprice;
|
||||
if (!empty($objp->remise_percent) && empty($conf->global->STOCK_EXCLUDE_DISCOUNT_FOR_PMP)) {
|
||||
|
|
@ -724,6 +722,7 @@ if ($id > 0 || !empty($ref)) {
|
|||
while ($j < $numd) {
|
||||
$suffix = "_".$j."_".$i;
|
||||
$objd = $db->fetch_object($resultsql);
|
||||
|
||||
if (isModEnabled('productbatch') && !empty($objd->batch)) {
|
||||
$type = 'batch';
|
||||
|
||||
|
|
@ -754,12 +753,15 @@ if ($id > 0 || !empty($ref)) {
|
|||
print '<input id="fk_commandedet'.$suffix.'" name="fk_commandedet'.$suffix.'" type="hidden" value="'.$objp->rowid.'">';
|
||||
print '<input id="idline'.$suffix.'" name="idline'.$suffix.'" type="hidden" value="'.$objd->rowid.'">';
|
||||
print '<input name="product_batch'.$suffix.'" type="hidden" value="'.$objd->fk_product.'">';
|
||||
|
||||
print '<!-- This is a U.P. (may include discount or not depending on STOCK_EXCLUDE_DISCOUNT_FOR_PMP. will be used for PMP calculation) -->';
|
||||
print '<input class="maxwidth75" name="pu'.$suffix.'" type="hidden" value="'.price2num($up_ht_disc, 'MU').'">';
|
||||
|
||||
print '</td>';
|
||||
|
||||
print '<td>';
|
||||
print '<input disabled="" type="text" class="inputlotnumber quatrevingtquinzepercent" id="lot_number'.$suffix.'" name="lot_number'.$suffix.'" value="'.$objd->batch.'">';
|
||||
print '<input type="hidden" class="inputlotnumber quatrevingtquinzepercent" id="lot_number'.$suffix.'" name="lot_number'.$suffix.'" value="'.$objd->batch.'">';
|
||||
//print '<input type="hidden" class="inputlotnumber quatrevingtquinzepercent" id="lot_number'.$suffix.'" name="lot_number'.$suffix.'" value="'.$objd->batch.'">';
|
||||
print '</td>';
|
||||
if (empty($conf->global->PRODUCT_DISABLE_SELLBY)) {
|
||||
print '<td class="nowraponall">';
|
||||
|
|
@ -807,6 +809,7 @@ if ($id > 0 || !empty($ref)) {
|
|||
print '<input id="fk_commandedet'.$suffix.'" name="fk_commandedet'.$suffix.'" type="hidden" value="'.$objp->rowid.'">';
|
||||
print '<input id="idline'.$suffix.'" name="idline'.$suffix.'" type="hidden" value="'.$objd->rowid.'">';
|
||||
print '<input name="product'.$suffix.'" type="hidden" value="'.$objd->fk_product.'">';
|
||||
print '<!-- This is a up (may include discount or not depending on STOCK_EXCLUDE_DISCOUNT_FOR_PMP. will be used for PMP calculation) -->';
|
||||
print '<input class="maxwidth75" name="pu'.$suffix.'" type="hidden" value="'.price2num($up_ht_disc, 'MU').'">';
|
||||
print '</td>';
|
||||
}
|
||||
|
|
@ -863,6 +866,7 @@ if ($id > 0 || !empty($ref)) {
|
|||
}
|
||||
$suffix = "_".$j."_".$i;
|
||||
}
|
||||
|
||||
if ($j == 0) {
|
||||
if (isModEnabled('productbatch') && !empty($objp->tobatch)) {
|
||||
$type = 'batch';
|
||||
|
|
@ -894,10 +898,13 @@ if ($id > 0 || !empty($ref)) {
|
|||
print '<input id="fk_commandedet'.$suffix.'" name="fk_commandedet'.$suffix.'" type="hidden" value="'.$objp->rowid.'">';
|
||||
print '<input id="idline'.$suffix.'" name="idline'.$suffix.'" type="hidden" value="-1">';
|
||||
print '<input name="product_batch'.$suffix.'" type="hidden" value="'.$objp->fk_product.'">';
|
||||
|
||||
print '<!-- This is a up (may include discount or not depending on STOCK_EXCLUDE_DISCOUNT_FOR_PMP. will be used for PMP calculation) -->';
|
||||
print '<input class="maxwidth75" name="pu'.$suffix.'" type="hidden" value="'.price2num($up_ht_disc, 'MU').'">';
|
||||
print '</td>';
|
||||
|
||||
print '<td>';
|
||||
print '<input type="text" class="inputlotnumber quatrevingtquinzepercent" id="lot_number'.$suffix.'" name="lot_number'.$suffix.'" value="">';
|
||||
print '<input type="text" class="inputlotnumber quatrevingtquinzepercent" id="lot_number'.$suffix.'" name="lot_number'.$suffix.'" value="'.GETPOST('lot_number'.$suffix).'">';
|
||||
print '</td>';
|
||||
if (empty($conf->global->PRODUCT_DISABLE_SELLBY)) {
|
||||
print '<td class="nowraponall">';
|
||||
|
|
@ -945,12 +952,15 @@ if ($id > 0 || !empty($ref)) {
|
|||
print '<input id="fk_commandedet'.$suffix.'" name="fk_commandedet'.$suffix.'" type="hidden" value="'.$objp->rowid.'">';
|
||||
print '<input id="idline'.$suffix.'" name="idline'.$suffix.'" type="hidden" value="-1">';
|
||||
print '<input name="product'.$suffix.'" type="hidden" value="'.$objp->fk_product.'">';
|
||||
|
||||
print '<!-- This is a up (may include discount or not depending on STOCK_EXCLUDE_DISCOUNT_FOR_PMP. will be used for PMP calculation) -->';
|
||||
print '<input class="maxwidth75" name="pu'.$suffix.'" type="hidden" value="'.price2num($up_ht_disc, 'MU').'">';
|
||||
print '</td>';
|
||||
}
|
||||
// Qty to dispatch
|
||||
print '<td class="right">';
|
||||
print '<a href="#" id="reset'.$suffix.'" class="resetline">'.img_picto($langs->trans("Reset"), 'eraser', 'class="pictofixedwidth opacitymedium"').'</a>';
|
||||
print '<input id="qty'.$suffix.'" onchange="onChangeDispatchLineQty($(this))" name="qty'.$suffix.'" data-index="'.$i.'" data-type="text" class="width50 right qtydispatchinput" value="'.(GETPOSTISSET('qty'.$suffix) ? GETPOST('qty'.$suffix, 'int') : (empty($conf->global->SUPPLIER_ORDER_DISPATCH_FORCE_QTY_INPUT_TO_ZERO) ? $remaintodispatch : 0)).'">';
|
||||
print '<input id="qty'.$suffix.'" onchange="onChangeDispatchLineQty($(this))" name="qty'.$suffix.'" data-index="'.$i.'" data-type="text" class="width50 right qtydispatchinput" value="'.(GETPOSTISSET('qty'.$suffix) ? GETPOST('qty'.$suffix, 'int') : (empty($conf->global->SUPPLIER_ORDER_DISPATCH_FORCE_QTY_INPUT_TO_ZERO) ? $remaintodispatch : 0)).'" data-expected="'.$remaintodispatch.'">';
|
||||
print '</td>';
|
||||
print '<td>';
|
||||
if (isModEnabled('productbatch') && $objp->tobatch > 0) {
|
||||
|
|
@ -962,6 +972,7 @@ if ($id > 0 || !empty($ref)) {
|
|||
}
|
||||
|
||||
print '</td>';
|
||||
|
||||
// Warehouse
|
||||
print '<td class="right">';
|
||||
if (count($listwarehouses) > 1) {
|
||||
|
|
@ -1065,6 +1076,7 @@ if ($id > 0 || !empty($ref)) {
|
|||
var fk_default_warehouse = $("option:selected", this).val();
|
||||
$("select[name^=entrepot_]").val(fk_default_warehouse).change();
|
||||
});
|
||||
|
||||
$("#autoreset").click(function() {
|
||||
$(".autoresettr").each(function(){
|
||||
id = $(this).attr("name");
|
||||
|
|
@ -1087,6 +1099,7 @@ if ($id > 0 || !empty($ref)) {
|
|||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
$("#resetalltoexpected").click(function(){
|
||||
$(".qtydispatchinput").each(function(){
|
||||
console.log("We reset to expected "+$(this).attr("id")+" qty to dispatch");
|
||||
|
|
@ -1094,6 +1107,7 @@ if ($id > 0 || !empty($ref)) {
|
|||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
$(".resetline").click(function(){
|
||||
id = $(this).attr("id");
|
||||
id = id.split("reset_");
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
// or see https://www.gnu.org/
|
||||
|
||||
/**
|
||||
* \file htdocs/fourn/js/lib_dispatch.js.php
|
||||
* \file htdocs/expedition/js/lib_dispatch.js.php
|
||||
* \brief File that include javascript functions used for dispatching qty/stock/lot
|
||||
*/
|
||||
|
||||
|
|
@ -98,7 +98,7 @@ function addDispatchLine(index, type, mode) {
|
|||
}
|
||||
console.log("qtyDispatched=" + qtyDispatched + " qtyOrdered=" + qtyOrdered+ " qty=" + qty);
|
||||
|
||||
if (qtyOrdered - qtyDispatched < 1) {
|
||||
if (qty <= 1) {
|
||||
window.alert("Remain quantity to dispatch is too low to be split");
|
||||
} else {
|
||||
oldlineqty = qtyDispatched;
|
||||
|
|
@ -180,7 +180,7 @@ function addDispatchLine(index, type, mode) {
|
|||
$("#lot_number_" + (nbrTrs) + "_" + index).val("")
|
||||
$("#idline_" + (nbrTrs) + "_" + index).val("-1")
|
||||
$("#qty_" + (nbrTrs) + "_" + index).data('expected', "0");
|
||||
$("input[type='hidden']#lot_number_" + (nbrTrs) + "_" + index).remove();
|
||||
//$("input[type='hidden']#lot_number_" + (nbrTrs) + "_" + index).remove();
|
||||
$("#lot_number_" + (nbrTrs) + "_" + index).removeAttr("disabled");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -113,8 +113,8 @@ if (!isModEnabled('stock')) {
|
|||
accessforbidden();
|
||||
}
|
||||
|
||||
$usercancreate = $user->rights->reception->creer;
|
||||
$permissiontoadd = $usercancreate; // Used by the include of actions_addupdatedelete.inc.php
|
||||
$usercancreate = $user->hasRight('reception', 'creer');
|
||||
$permissiontoadd = $usercancreate; // Used by the include of actions_addupdatedelete.inc.php
|
||||
|
||||
|
||||
/*
|
||||
|
|
@ -426,6 +426,7 @@ if ($id > 0 || !empty($ref)) {
|
|||
print '</td>';
|
||||
print '</tr>';
|
||||
print '</table>';
|
||||
|
||||
print '<br><center>';
|
||||
print '<a href="#" id="resetalltoexpected" class="marginrightonly paddingright marginleftonly paddingleft">'.img_picto("", 'autofill', 'class="pictofixedwidth"').$langs->trans("RestoreWithCurrentQtySaved").'</a></td>';
|
||||
// Link to clear qty
|
||||
|
|
@ -445,12 +446,10 @@ if ($id > 0 || !empty($ref)) {
|
|||
|
||||
print '<form method="post" action="'.$_SERVER["PHP_SELF"].'">';
|
||||
|
||||
|
||||
print '<input type="hidden" name="token" value="'.newToken().'">';
|
||||
print '<input type="hidden" name="action" value="updatelines">';
|
||||
print '<input type="hidden" name="id" value="'.$object->id.'">';
|
||||
|
||||
|
||||
print '<div class="div-table-responsive-no-min">';
|
||||
print '<table class="noborder centpercent">';
|
||||
|
||||
|
|
@ -727,7 +726,7 @@ if ($id > 0 || !empty($ref)) {
|
|||
print '<input id="idline'.$suffix.'" name="idline'.$suffix.'" type="hidden" value="'.$objd->rowid.'">';
|
||||
print '<input name="product_batch'.$suffix.'" type="hidden" value="'.$objd->fk_product.'">';
|
||||
|
||||
print '<!-- This is a up (may include discount or not depending on STOCK_EXCLUDE_DISCOUNT_FOR_PMP. will be used for PMP calculation) -->';
|
||||
print '<!-- This is a U.P. (may include discount or not depending on STOCK_EXCLUDE_DISCOUNT_FOR_PMP. will be used for PMP calculation) -->';
|
||||
if (!empty($conf->global->SUPPLIER_ORDER_EDIT_BUYINGPRICE_DURING_RECEIPT)) { // Not tested !
|
||||
print $langs->trans("BuyingPrice").': <input class="maxwidth75" name="pu'.$suffix.'" type="text" value="'.price2num($up_ht_disc, 'MU').'">';
|
||||
} else {
|
||||
|
|
@ -971,7 +970,7 @@ if ($id > 0 || !empty($ref)) {
|
|||
// Qty to dispatch
|
||||
print '<td class="right">';
|
||||
print '<a href="#" id="reset'.$suffix.'" class="resetline">'.img_picto($langs->trans("Reset"), 'eraser', 'class="pictofixedwidth opacitymedium"').'</a>';
|
||||
print '<input id="qty'.$suffix.'" onchange="onChangeDispatchLineQty($(this))" name="qty'.$suffix.'" data-index="'.$i.'" data-type="text" class="width50 right qtydispatchinput" value="'.(GETPOSTISSET('qty'.$suffix) ? GETPOST('qty'.$suffix, 'int') : (empty($conf->global->SUPPLIER_ORDER_DISPATCH_FORCE_QTY_INPUT_TO_ZERO) ? $remaintodispatch : 0)).'">';
|
||||
print '<input id="qty'.$suffix.'" onchange="onChangeDispatchLineQty($(this))" name="qty'.$suffix.'" data-index="'.$i.'" data-type="text" class="width50 right qtydispatchinput" value="'.(GETPOSTISSET('qty'.$suffix) ? GETPOST('qty'.$suffix, 'int') : (empty($conf->global->SUPPLIER_ORDER_DISPATCH_FORCE_QTY_INPUT_TO_ZERO) ? $remaintodispatch : 0)).'" data-expected="'.$remaintodispatch.'">';
|
||||
print '</td>';
|
||||
print '<td>';
|
||||
if (isModEnabled('productbatch') && $objp->tobatch > 0) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user