Debug MRP module
This commit is contained in:
parent
6be746e219
commit
139dfc3022
@ -66,3 +66,6 @@ AutoCloseMO=Close automatically the Manufacturing Order if quantities to consume
|
|||||||
NoStockChangeOnServices=No stock change on services
|
NoStockChangeOnServices=No stock change on services
|
||||||
ProductQtyToConsumeByMO=Product quantity still to consume by open MO
|
ProductQtyToConsumeByMO=Product quantity still to consume by open MO
|
||||||
ProductQtyToProduceByMO=Product quentity still to produce by open MO
|
ProductQtyToProduceByMO=Product quentity still to produce by open MO
|
||||||
|
AddNewConsumeLines=Add new line to consume
|
||||||
|
ProductsToConsume=Products to consume
|
||||||
|
ProductsToProduce=Products to produce
|
||||||
@ -573,17 +573,13 @@ class Mo extends CommonObject
|
|||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
|
|
||||||
// Insert lines in mrp_production table from BOM data
|
// Insert lines in mrp_production table from BOM data
|
||||||
if (!$error && $this->fk_bom > 0)
|
if (!$error)
|
||||||
{
|
{
|
||||||
// TODO Check that production has not started. If yes, we stop here.
|
// TODO Check that production has not started. If yes, we stop here.
|
||||||
|
|
||||||
$sql = 'DELETE FROM '.MAIN_DB_PREFIX.'mrp_production WHERE fk_mo = '.$this->id;
|
$sql = 'DELETE FROM '.MAIN_DB_PREFIX.'mrp_production WHERE fk_mo = '.$this->id;
|
||||||
$this->db->query($sql);
|
$this->db->query($sql);
|
||||||
|
|
||||||
include_once DOL_DOCUMENT_ROOT.'/bom/class/bom.class.php';
|
|
||||||
$bom = new Bom($this->db);
|
|
||||||
$bom->fetch($this->fk_bom);
|
|
||||||
if ($bom->id > 0)
|
|
||||||
{
|
|
||||||
$moline = new MoLine($this->db);
|
$moline = new MoLine($this->db);
|
||||||
|
|
||||||
// Line to produce
|
// Line to produce
|
||||||
@ -601,6 +597,12 @@ class Mo extends CommonObject
|
|||||||
dol_print_error($this->db, $moline->error, $moline->errors);
|
dol_print_error($this->db, $moline->error, $moline->errors);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($this->fk_bom > 0) { // If a BOM is defined, we know what to consume.
|
||||||
|
include_once DOL_DOCUMENT_ROOT.'/bom/class/bom.class.php';
|
||||||
|
$bom = new Bom($this->db);
|
||||||
|
$bom->fetch($this->fk_bom);
|
||||||
|
if ($bom->id > 0)
|
||||||
|
{
|
||||||
// Lines to consume
|
// Lines to consume
|
||||||
if (! $error) {
|
if (! $error) {
|
||||||
foreach ($bom->lines as $line)
|
foreach ($bom->lines as $line)
|
||||||
@ -638,6 +640,7 @@ class Mo extends CommonObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!$error) {
|
if (!$error) {
|
||||||
$this->db->commit();
|
$this->db->commit();
|
||||||
@ -1416,6 +1419,11 @@ class MoLine extends CommonObjectLine
|
|||||||
*/
|
*/
|
||||||
public function create(User $user, $notrigger = false)
|
public function create(User $user, $notrigger = false)
|
||||||
{
|
{
|
||||||
|
if (empty($this->qty)) {
|
||||||
|
$this->error = 'BadValueForQty';
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
return $this->createCommon($user, $notrigger);
|
return $this->createCommon($user, $notrigger);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -518,7 +518,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
|||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
print '<td>'.$langs->trans("ToConsume").'</td>';
|
print '<td>'.$langs->trans("ProductsToConsume").'</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
if (!empty($object->lines))
|
if (!empty($object->lines))
|
||||||
{
|
{
|
||||||
@ -537,7 +537,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
|||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
print '<td>'.$langs->trans("ToProduce").'</td>';
|
print '<td>'.$langs->trans("ProductsToProduce").'</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
if (!empty($object->lines))
|
if (!empty($object->lines))
|
||||||
{
|
{
|
||||||
|
|||||||
@ -162,6 +162,25 @@ if (empty($reshook))
|
|||||||
$result = $object->setStatut($object::STATUS_INPROGRESS, 0, '', 'MRP_REOPEN');
|
$result = $object->setStatut($object::STATUS_INPROGRESS, 0, '', 'MRP_REOPEN');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($action == 'confirm_addconsumeline' && GETPOST('addconsumelinebutton')) {
|
||||||
|
$moline = new MoLine($db);
|
||||||
|
|
||||||
|
// Line to produce
|
||||||
|
$moline->fk_mo = $object->id;
|
||||||
|
$moline->qty = GETPOST('qtytoadd', 'int');;
|
||||||
|
$moline->fk_product = GETPOST('productidtoadd', 'int');
|
||||||
|
$moline->role = 'toconsume';
|
||||||
|
$moline->position = 0;
|
||||||
|
|
||||||
|
$resultline = $moline->create($user, false); // Never use triggers here
|
||||||
|
if ($resultline <= 0) {
|
||||||
|
$error++;
|
||||||
|
setEventMessages($moline->error, $molines->errors, 'errors');
|
||||||
|
}
|
||||||
|
|
||||||
|
$action = '';
|
||||||
|
}
|
||||||
|
|
||||||
if (in_array($action, array('confirm_consumeorproduce', 'confirm_consumeandproduceall'))) {
|
if (in_array($action, array('confirm_consumeorproduce', 'confirm_consumeandproduceall'))) {
|
||||||
$stockmove = new MouvementStock($db);
|
$stockmove = new MouvementStock($db);
|
||||||
|
|
||||||
@ -425,21 +444,43 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
|||||||
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('ToClone'), $langs->trans('ConfirmCloneMo', $object->ref), 'confirm_clone', $formquestion, 'yes', 1);
|
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('ToClone'), $langs->trans('ConfirmCloneMo', $object->ref), 'confirm_clone', $formquestion, 'yes', 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Confirmation of action xxxx
|
// Confirmation of validation
|
||||||
if ($action == 'xxx')
|
if ($action == 'validate')
|
||||||
{
|
{
|
||||||
|
// We check that object has a temporary ref
|
||||||
|
$ref = substr($object->ref, 1, 4);
|
||||||
|
if ($ref == 'PROV') {
|
||||||
|
$object->fetch_product();
|
||||||
|
$numref = $object->getNextNumRef($object->fk_product);
|
||||||
|
} else {
|
||||||
|
$numref = $object->ref;
|
||||||
|
}
|
||||||
|
|
||||||
|
$text = $langs->trans('ConfirmValidateMo', $numref);
|
||||||
|
/*if (! empty($conf->notification->enabled))
|
||||||
|
{
|
||||||
|
require_once DOL_DOCUMENT_ROOT . '/core/class/notify.class.php';
|
||||||
|
$notify = new Notify($db);
|
||||||
|
$text .= '<br>';
|
||||||
|
$text .= $notify->confirmMessage('BOM_VALIDATE', $object->socid, $object);
|
||||||
|
}*/
|
||||||
|
|
||||||
$formquestion = array();
|
$formquestion = array();
|
||||||
/*
|
if (!empty($conf->mrp->enabled))
|
||||||
$forcecombo=0;
|
{
|
||||||
|
$langs->load("mrp");
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/product/class/html.formproduct.class.php';
|
||||||
|
$formproduct = new FormProduct($db);
|
||||||
|
$forcecombo = 0;
|
||||||
if ($conf->browser->name == 'ie') $forcecombo = 1; // There is a bug in IE10 that make combo inside popup crazy
|
if ($conf->browser->name == 'ie') $forcecombo = 1; // There is a bug in IE10 that make combo inside popup crazy
|
||||||
$formquestion = array(
|
$formquestion = array(
|
||||||
// 'text' => $langs->trans("ConfirmClone"),
|
// 'text' => $langs->trans("ConfirmClone"),
|
||||||
// array('type' => 'checkbox', 'name' => 'clone_content', 'label' => $langs->trans("CloneMainAttributes"), 'value' => 1),
|
// array('type' => 'checkbox', 'name' => 'clone_content', 'label' => $langs->trans("CloneMainAttributes"), 'value' => 1),
|
||||||
// array('type' => 'checkbox', 'name' => 'update_prices', 'label' => $langs->trans("PuttingPricesUpToDate"), 'value' => 1),
|
// array('type' => 'checkbox', 'name' => 'update_prices', 'label' => $langs->trans("PuttingPricesUpToDate"), 'value' => 1),
|
||||||
// array('type' => 'other', 'name' => 'idwarehouse', 'label' => $langs->trans("SelectWarehouseForStockDecrease"), 'value' => $formproduct->selectWarehouses(GETPOST('idwarehouse')?GETPOST('idwarehouse'):'ifone', 'idwarehouse', '', 1, 0, 0, '', 0, $forcecombo))
|
|
||||||
);
|
);
|
||||||
*/
|
}
|
||||||
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('XXX'), $text, 'confirm_xxx', $formquestion, 0, 1, 220);
|
|
||||||
|
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('Validate'), $text, 'confirm_validate', $formquestion, 0, 1, 220);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Call Hook formConfirm
|
// Call Hook formConfirm
|
||||||
@ -530,6 +571,23 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
|||||||
// Note that $action and $object may be modified by hook
|
// Note that $action and $object may be modified by hook
|
||||||
$reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action);
|
$reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action);
|
||||||
if (empty($reshook)) {
|
if (empty($reshook)) {
|
||||||
|
// Validate
|
||||||
|
if ($object->status == $object::STATUS_DRAFT)
|
||||||
|
{
|
||||||
|
if ($permissiontoadd)
|
||||||
|
{
|
||||||
|
if (empty($object->table_element_line) || (is_array($object->lines) && count($object->lines) > 0))
|
||||||
|
{
|
||||||
|
print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=validate">'.$langs->trans("Validate").'</a>';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$langs->load("errors");
|
||||||
|
print '<a class="butActionRefused" href="" title="'.$langs->trans("ErrorAddAtLeastOneLineFirst").'">'.$langs->trans("Validate").'</a>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Consume or produce
|
// Consume or produce
|
||||||
if ($object->status == Mo::STATUS_VALIDATED || $object->status == Mo::STATUS_INPROGRESS) {
|
if ($object->status == Mo::STATUS_VALIDATED || $object->status == Mo::STATUS_INPROGRESS) {
|
||||||
if ($permissiontoproduce) {
|
if ($permissiontoproduce) {
|
||||||
@ -578,7 +636,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
|||||||
print '</div>';
|
print '</div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (in_array($action, array('consumeorproduce', 'consumeandproduceall')))
|
if (in_array($action, array('consumeorproduce', 'consumeandproduceall', 'addconsumeline')))
|
||||||
{
|
{
|
||||||
print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
|
print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
|
||||||
print '<input type="hidden" name="token" value="'.newToken().'">';
|
print '<input type="hidden" name="token" value="'.newToken().'">';
|
||||||
@ -586,6 +644,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
|||||||
print '<input type="hidden" name="backtopage" value="'.$backtopage.'">';
|
print '<input type="hidden" name="backtopage" value="'.$backtopage.'">';
|
||||||
print '<input type="hidden" name="id" value="'.$id.'">';
|
print '<input type="hidden" name="id" value="'.$id.'">';
|
||||||
|
|
||||||
|
if (in_array($action, array('consumeorproduce', 'consumeandproduceall'))) {
|
||||||
$defaultstockmovementlabel = GETPOST('inventorylabel', 'alphanohtml') ? GETPOST('inventorylabel', 'alphanohtml') : $langs->trans("ProductionForRef", $object->ref);
|
$defaultstockmovementlabel = GETPOST('inventorylabel', 'alphanohtml') ? GETPOST('inventorylabel', 'alphanohtml') : $langs->trans("ProductionForRef", $object->ref);
|
||||||
//$defaultstockmovementcode = GETPOST('inventorycode', 'alphanohtml') ? GETPOST('inventorycode', 'alphanohtml') : $object->ref.'_'.dol_print_date(dol_now(), 'dayhourlog');
|
//$defaultstockmovementcode = GETPOST('inventorycode', 'alphanohtml') ? GETPOST('inventorycode', 'alphanohtml') : $object->ref.'_'.dol_print_date(dol_now(), 'dayhourlog');
|
||||||
$defaultstockmovementcode = GETPOST('inventorycode', 'alphanohtml') ? GETPOST('inventorycode', 'alphanohtml') : $langs->trans("ProductionForRef", $object->ref);
|
$defaultstockmovementcode = GETPOST('inventorycode', 'alphanohtml') ? GETPOST('inventorycode', 'alphanohtml') : $langs->trans("ProductionForRef", $object->ref);
|
||||||
@ -601,6 +660,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
|||||||
print '</div>';
|
print '</div>';
|
||||||
print '<br>';
|
print '<br>';
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -618,7 +678,8 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
|||||||
print '<div class="fichehalfleft">';
|
print '<div class="fichehalfleft">';
|
||||||
print '<div class="clearboth"></div>';
|
print '<div class="clearboth"></div>';
|
||||||
|
|
||||||
print load_fiche_titre($langs->trans('Consumption'), '', '');
|
$newlinetext = '<a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=addconsumeline">'.$langs->trans("AddNewConsumeLines").'</a>';
|
||||||
|
print load_fiche_titre($langs->trans('Consumption'), '', '', 0, '', '', $newlinetext);
|
||||||
|
|
||||||
print '<div class="div-table-responsive-no-min">';
|
print '<div class="div-table-responsive-no-min">';
|
||||||
print '<table class="noborder noshadow centpercent'.' nobottom'.'">';
|
print '<table class="noborder noshadow centpercent'.' nobottom'.'">';
|
||||||
@ -637,6 +698,22 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
|||||||
}
|
}
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
|
if ($action == 'addconsumeline') {
|
||||||
|
print '<tr class="liste_titre">';
|
||||||
|
print '<td>';
|
||||||
|
print $form->select_produits('', 'productidtoadd', '', 0, 0, -1, 2);
|
||||||
|
print '</td>';
|
||||||
|
print '<td class="right"><input type="text" name="qtytoadd" value="1"></td>';
|
||||||
|
print '<td class="right"></td>';
|
||||||
|
print '<td>';
|
||||||
|
print '<input type="submit" class="button" name="addconsumelinebutton" value="'.$langs->trans("Add").'">';
|
||||||
|
print '</td>';
|
||||||
|
if ($conf->productbatch->enabled) {
|
||||||
|
print '<td></td>';
|
||||||
|
}
|
||||||
|
print '</tr>';
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($object->lines))
|
if (!empty($object->lines))
|
||||||
{
|
{
|
||||||
$nblinetoconsume = 0;
|
$nblinetoconsume = 0;
|
||||||
@ -900,7 +977,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
|||||||
print '</div>';
|
print '</div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (in_array($action, array('consumeorproduce', 'consumeandproduceall')))
|
if (in_array($action, array('consumeorproduce', 'consumeandproduceall', 'addconsumeline')))
|
||||||
{
|
{
|
||||||
print "</form>\n";
|
print "</form>\n";
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user