|
@@ -1031,9 +1031,17 @@ if ($action == 'create') {
|
|
|
print "</tr>\n";
|
|
|
}
|
|
|
|
|
|
+ // $objectsrc->lines contains the line of the purchase order
|
|
|
+ // $dispatchLines is list of lines with dispatching detail (with product, qty and warehouse). One purchase order line may have n of this dispatch lines.
|
|
|
+
|
|
|
+ $arrayofpurchaselinealreadyoutput= array();
|
|
|
+
|
|
|
+ // $_POST contains fk_commandefourndet_X_Y where Y is num of product line and X is number of splitted line
|
|
|
$indiceAsked = 1;
|
|
|
- while ($indiceAsked <= $numAsked) {
|
|
|
+ while ($indiceAsked <= $numAsked) { // Loop on $dispatchLines. Warning: $dispatchLines must be sorted by fk_commandefourndet (it is a regroupment key on output)
|
|
|
$product = new Product($db);
|
|
|
+
|
|
|
+ // We search the purchase order line that is linked to the dispatchLines
|
|
|
foreach ($objectsrc->lines as $supplierLine) {
|
|
|
if ($dispatchLines[$indiceAsked]['fk_commandefourndet'] == $supplierLine->id) {
|
|
|
$line = $supplierLine;
|
|
@@ -1055,7 +1063,6 @@ if ($action == 'create') {
|
|
|
print '<!-- line fk_commandefourndet='.$line->id.' for product='.$line->fk_product.' -->'."\n";
|
|
|
print '<tr class="oddeven">'."\n";
|
|
|
|
|
|
-
|
|
|
// Product label
|
|
|
if ($line->fk_product > 0) { // If predefined product
|
|
|
$product->fetch($line->fk_product);
|
|
@@ -1064,42 +1071,45 @@ if ($action == 'create') {
|
|
|
|
|
|
print '<td>';
|
|
|
print '<a name="'.$line->id.'"></a>'; // ancre pour retourner sur la ligne
|
|
|
- print '<input type="hidden" name="productid'.$indiceAsked.'" value="'.$line->fk_product.'">';
|
|
|
+ if (! array_key_exists($line->id, $arrayofpurchaselinealreadyoutput)) { // Add test to avoid to show qty twice
|
|
|
+ print '<input type="hidden" name="productid'.$indiceAsked.'" value="'.$line->fk_product.'">';
|
|
|
|
|
|
- // Show product and description
|
|
|
- $product_static = $product;
|
|
|
+ // Show product and description
|
|
|
+ $product_static = $product;
|
|
|
|
|
|
- $text = $product_static->getNomUrl(1);
|
|
|
- $text .= ' - '.(!empty($line->label) ? $line->label : $line->product_label);
|
|
|
- $description = ($conf->global->PRODUIT_DESC_IN_FORM ? '' : dol_htmlentitiesbr($line->desc));
|
|
|
- print $form->textwithtooltip($text, $description, 3, '', '', $i);
|
|
|
+ $text = $product_static->getNomUrl(1);
|
|
|
+ $text .= ' - '.(!empty($line->label) ? $line->label : $line->product_label);
|
|
|
+ $description = ($conf->global->PRODUIT_DESC_IN_FORM ? '' : dol_htmlentitiesbr($line->desc));
|
|
|
+ print $form->textwithtooltip($text, $description, 3, '', '', $i);
|
|
|
|
|
|
- // Show range
|
|
|
- print_date_range($db->jdate($line->date_start), $db->jdate($line->date_end));
|
|
|
+ // Show range
|
|
|
+ print_date_range($db->jdate($line->date_start), $db->jdate($line->date_end));
|
|
|
|
|
|
- // Add description in form
|
|
|
- if (!empty($conf->global->PRODUIT_DESC_IN_FORM)) {
|
|
|
- print ($line->desc && $line->desc != $line->product_label) ? '<br>'.dol_htmlentitiesbr($line->desc) : '';
|
|
|
+ // Add description in form
|
|
|
+ if (!empty($conf->global->PRODUIT_DESC_IN_FORM)) {
|
|
|
+ print ($line->desc && $line->desc != $line->product_label) ? '<br>'.dol_htmlentitiesbr($line->desc) : '';
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
print '</td>';
|
|
|
} else {
|
|
|
print "<td>";
|
|
|
- if ($type == 1) {
|
|
|
- $text = img_object($langs->trans('Service'), 'service');
|
|
|
- } else {
|
|
|
- $text = img_object($langs->trans('Product'), 'product');
|
|
|
- }
|
|
|
+ if (! array_key_exists($line->id, $arrayofpurchaselinealreadyoutput)) { // Add test to avoid to show qty twice
|
|
|
+ if ($type == 1) {
|
|
|
+ $text = img_object($langs->trans('Service'), 'service');
|
|
|
+ } else {
|
|
|
+ $text = img_object($langs->trans('Product'), 'product');
|
|
|
+ }
|
|
|
|
|
|
- if (!empty($line->label)) {
|
|
|
- $text .= ' <strong>'.$line->label.'</strong>';
|
|
|
- print $form->textwithtooltip($text, $line->desc, 3, '', '', $i);
|
|
|
- } else {
|
|
|
- print $text.' '.nl2br($line->desc);
|
|
|
- }
|
|
|
+ if (!empty($line->label)) {
|
|
|
+ $text .= ' <strong>'.$line->label.'</strong>';
|
|
|
+ print $form->textwithtooltip($text, $line->desc, 3, '', '', $i);
|
|
|
+ } else {
|
|
|
+ print $text.' '.nl2br($line->desc);
|
|
|
+ }
|
|
|
|
|
|
- // Show range
|
|
|
- print_date_range($db->jdate($line->date_start), $db->jdate($line->date_end));
|
|
|
+ // Show range
|
|
|
+ print_date_range($db->jdate($line->date_start), $db->jdate($line->date_end));
|
|
|
+ }
|
|
|
print "</td>\n";
|
|
|
}
|
|
|
|
|
@@ -1110,8 +1120,11 @@ if ($action == 'create') {
|
|
|
print '<input type="text" class="maxwidth100" name="comment'.$indiceAsked.'" value="'.$defaultcomment.'">';
|
|
|
print '</td>';
|
|
|
|
|
|
- // Qty
|
|
|
- print '<td class="center">'.$line->qty;
|
|
|
+ // Qty in source purchase order line
|
|
|
+ print '<td class="center">';
|
|
|
+ if (! array_key_exists($line->id, $arrayofpurchaselinealreadyoutput)) { // Add test to avoid to show qty twice
|
|
|
+ print $line->qty;
|
|
|
+ }
|
|
|
print '<input type="hidden" name="fk_commandefournisseurdet'.$indiceAsked.'" value="'.$line->id.'">';
|
|
|
print '<input type="hidden" name="pul'.$indiceAsked.'" value="'.$line->pu_ht.'">';
|
|
|
print '<input name="qtyasked'.$indiceAsked.'" id="qtyasked'.$indiceAsked.'" type="hidden" value="'.$line->qty.'">';
|
|
@@ -1121,7 +1134,9 @@ if ($action == 'create') {
|
|
|
// Qty already received
|
|
|
print '<td class="center">';
|
|
|
$quantityDelivered = $objectsrc->receptions[$line->id];
|
|
|
- print $quantityDelivered;
|
|
|
+ if (! array_key_exists($line->id, $arrayofpurchaselinealreadyoutput)) { // Add test to avoid to show qty twice
|
|
|
+ print $quantityDelivered;
|
|
|
+ }
|
|
|
print '<input name="qtydelivered'.$indiceAsked.'" id="qtydelivered'.$indiceAsked.'" type="hidden" value="'.$quantityDelivered.'">';
|
|
|
print '</td>';
|
|
|
|
|
@@ -1190,6 +1205,9 @@ if ($action == 'create') {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ $arrayofpurchaselinealreadyoutput[$line->id] = $line->id;
|
|
|
+
|
|
|
print "</tr>\n";
|
|
|
|
|
|
$extralabelslines = $extrafields->attributes[$line->table_element];
|
|
@@ -1756,7 +1774,9 @@ if ($action == 'create') {
|
|
|
//var_dump($alreadysent);
|
|
|
}
|
|
|
|
|
|
- // Loop on each product to send/sent
|
|
|
+ $arrayofpurchaselinealreadyoutput = array();
|
|
|
+
|
|
|
+ // Loop on each product to send/sent. Warning: $lines must be sorted by ->fk_commandefourndet (it is a regroupment key on output)
|
|
|
for ($i = 0; $i < $num_prod; $i++) {
|
|
|
print '<!-- origin line id = '.$lines[$i]->origin_line_id.' -->'; // id of order line
|
|
|
print '<tr class="oddeven">';
|
|
@@ -1778,32 +1798,35 @@ if ($action == 'create') {
|
|
|
}
|
|
|
|
|
|
print '<td>';
|
|
|
-
|
|
|
- $text = $lines[$i]->product->getNomUrl(1);
|
|
|
- $text .= ' - '.$label;
|
|
|
- $description = (!empty($conf->global->PRODUIT_DESC_IN_FORM) ? '' : dol_htmlentitiesbr($lines[$i]->product->description));
|
|
|
- print $form->textwithtooltip($text, $description, 3, '', '', $i);
|
|
|
- print_date_range($lines[$i]->date_start, $lines[$i]->date_end);
|
|
|
- if (!empty($conf->global->PRODUIT_DESC_IN_FORM)) {
|
|
|
- print (!empty($lines[$i]->product->description) && $lines[$i]->description != $lines[$i]->product->description) ? '<br>'.dol_htmlentitiesbr($lines[$i]->description) : '';
|
|
|
+ if (!array_key_exists($lines[$i]->fk_commandefourndet, $arrayofpurchaselinealreadyoutput)) {
|
|
|
+ $text = $lines[$i]->product->getNomUrl(1);
|
|
|
+ $text .= ' - '.$label;
|
|
|
+ $description = (!empty($conf->global->PRODUIT_DESC_IN_FORM) ? '' : dol_htmlentitiesbr($lines[$i]->product->description));
|
|
|
+ print $form->textwithtooltip($text, $description, 3, '', '', $i);
|
|
|
+ print_date_range($lines[$i]->date_start, $lines[$i]->date_end);
|
|
|
+ if (!empty($conf->global->PRODUIT_DESC_IN_FORM)) {
|
|
|
+ print (!empty($lines[$i]->product->description) && $lines[$i]->description != $lines[$i]->product->description) ? '<br>'.dol_htmlentitiesbr($lines[$i]->description) : '';
|
|
|
+ }
|
|
|
}
|
|
|
print "</td>\n";
|
|
|
} else {
|
|
|
print "<td>";
|
|
|
- if ($lines[$i]->product_type == Product::TYPE_SERVICE) {
|
|
|
- $text = img_object($langs->trans('Service'), 'service');
|
|
|
- } else {
|
|
|
- $text = img_object($langs->trans('Product'), 'product');
|
|
|
- }
|
|
|
+ if (!array_key_exists($lines[$i]->fk_commandefourndet, $arrayofpurchaselinealreadyoutput)) {
|
|
|
+ if ($lines[$i]->product_type == Product::TYPE_SERVICE) {
|
|
|
+ $text = img_object($langs->trans('Service'), 'service');
|
|
|
+ } else {
|
|
|
+ $text = img_object($langs->trans('Product'), 'product');
|
|
|
+ }
|
|
|
|
|
|
- if (!empty($lines[$i]->label)) {
|
|
|
- $text .= ' <strong>'.$lines[$i]->label.'</strong>';
|
|
|
- print $form->textwithtooltip($text, $lines[$i]->description, 3, '', '', $i);
|
|
|
- } else {
|
|
|
- print $text.' '.nl2br($lines[$i]->description);
|
|
|
- }
|
|
|
+ if (!empty($lines[$i]->label)) {
|
|
|
+ $text .= ' <strong>'.$lines[$i]->label.'</strong>';
|
|
|
+ print $form->textwithtooltip($text, $lines[$i]->description, 3, '', '', $i);
|
|
|
+ } else {
|
|
|
+ print $text.' '.nl2br($lines[$i]->description);
|
|
|
+ }
|
|
|
|
|
|
- print_date_range($lines[$i]->date_start, $lines[$i]->date_end);
|
|
|
+ print_date_range($lines[$i]->date_start, $lines[$i]->date_end);
|
|
|
+ }
|
|
|
print "</td>\n";
|
|
|
}
|
|
|
|
|
@@ -1815,33 +1838,39 @@ if ($action == 'create') {
|
|
|
|
|
|
|
|
|
// Qty ordered
|
|
|
- print '<td class="center">'.$lines[$i]->qty_asked.'</td>';
|
|
|
+ print '<td class="center">';
|
|
|
+ if (!array_key_exists($lines[$i]->fk_commandefourndet, $arrayofpurchaselinealreadyoutput)) {
|
|
|
+ print $lines[$i]->qty_asked;
|
|
|
+ }
|
|
|
+ print '</td>';
|
|
|
|
|
|
// Qty in other receptions (with reception and warehouse used)
|
|
|
if ($origin && $origin_id > 0) {
|
|
|
print '<td class="center nowrap">';
|
|
|
- foreach ($alreadysent as $key => $val) {
|
|
|
- if ($lines[$i]->fk_commandefourndet == $key) {
|
|
|
- $j = 0;
|
|
|
- foreach ($val as $receptionline_id => $receptionline_var) {
|
|
|
- if ($receptionline_var['reception_id'] == $lines[$i]->fk_reception) {
|
|
|
- continue; // We want to show only "other receptions"
|
|
|
- }
|
|
|
-
|
|
|
- $j++;
|
|
|
- if ($j > 1) {
|
|
|
- print '<br>';
|
|
|
+ if (!array_key_exists($lines[$i]->fk_commandefourndet, $arrayofpurchaselinealreadyoutput)) {
|
|
|
+ foreach ($alreadysent as $key => $val) {
|
|
|
+ if ($lines[$i]->fk_commandefourndet == $key) {
|
|
|
+ $j = 0;
|
|
|
+ foreach ($val as $receptionline_id => $receptionline_var) {
|
|
|
+ if ($receptionline_var['reception_id'] == $lines[$i]->fk_reception) {
|
|
|
+ continue; // We want to show only "other receptions"
|
|
|
+ }
|
|
|
+
|
|
|
+ $j++;
|
|
|
+ if ($j > 1) {
|
|
|
+ print '<br>';
|
|
|
+ }
|
|
|
+ $reception_static->fetch($receptionline_var['reception_id']);
|
|
|
+ print $reception_static->getNomUrl(1);
|
|
|
+ print ' - '.$receptionline_var['qty'];
|
|
|
+
|
|
|
+ $htmltext = $langs->trans("DateValidation").' : '.(empty($receptionline_var['date_valid']) ? $langs->trans("Draft") : dol_print_date($receptionline_var['date_valid'], 'dayhour'));
|
|
|
+ if (!empty($conf->stock->enabled) && $receptionline_var['warehouse'] > 0) {
|
|
|
+ $warehousestatic->fetch($receptionline_var['warehouse']);
|
|
|
+ $htmltext .= '<br>'.$langs->trans("From").' : '.$warehousestatic->getNomUrl(1, '', 0, 1);
|
|
|
+ }
|
|
|
+ print ' '.$form->textwithpicto('', $htmltext, 1);
|
|
|
}
|
|
|
- $reception_static->fetch($receptionline_var['reception_id']);
|
|
|
- print $reception_static->getNomUrl(1);
|
|
|
- print ' - '.$receptionline_var['qty'];
|
|
|
-
|
|
|
- $htmltext = $langs->trans("DateValidation").' : '.(empty($receptionline_var['date_valid']) ? $langs->trans("Draft") : dol_print_date($receptionline_var['date_valid'], 'dayhour'));
|
|
|
- if (!empty($conf->stock->enabled) && $receptionline_var['warehouse'] > 0) {
|
|
|
- $warehousestatic->fetch($receptionline_var['warehouse']);
|
|
|
- $htmltext .= '<br>'.$langs->trans("From").' : '.$warehousestatic->getNomUrl(1, '', 0, 1);
|
|
|
- }
|
|
|
- print ' '.$form->textwithpicto('', $htmltext, 1);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -1971,6 +2000,8 @@ if ($action == 'create') {
|
|
|
}
|
|
|
print "</tr>";
|
|
|
|
|
|
+ $arrayofpurchaselinealreadyoutput[$lines[$i]->fk_commandefourndet] = $lines[$i]->fk_commandefourndet;
|
|
|
+
|
|
|
// Display lines extrafields
|
|
|
$extralabelslines = $extrafields->attributes[$lines[$i]->table_element];
|
|
|
if (is_array($extralabelslines) && count($extralabelslines) > 0) {
|