diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php
index 5b6a47fa998..031d2c95235 100644
--- a/htdocs/commande/card.php
+++ b/htdocs/commande/card.php
@@ -240,6 +240,7 @@ if (empty($reshook))
{
$datecommande = dol_mktime(12, 0, 0, GETPOST('remonth'), GETPOST('reday'), GETPOST('reyear'));
$datelivraison = dol_mktime(12, 0, 0, GETPOST('liv_month'), GETPOST('liv_day'), GETPOST('liv_year'));
+ $selectedLines = GETPOST('toselect', 'array');
if ($datecommande == '') {
setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentities('Date')), null, 'errors');
@@ -346,6 +347,8 @@ if (empty($reshook))
for($i = 0; $i < $num; $i ++)
{
+ if(!in_array($lines[$i]->id, $selectedLines)) continue; // Skip unselected lines
+
$label = (! empty($lines[$i]->label) ? $lines[$i]->label : '');
$desc = (! empty($lines[$i]->desc) ? $lines[$i]->desc : '');
$product_type = (! empty($lines[$i]->product_type) ? $lines[$i]->product_type : 0);
@@ -1881,8 +1884,6 @@ if ($action == 'create' && $usercancreate)
print ' ';
print '';
- print '';
-
// Show origin lines
if (! empty($origin) && ! empty($originid) && is_object($objectsrc)) {
$title = $langs->trans('ProductsAndServices');
@@ -1890,10 +1891,12 @@ if ($action == 'create' && $usercancreate)
print '
';
- $objectsrc->printOriginLinesList();
+ $objectsrc->printOriginLinesList('', $selectedLines);
print '
';
}
+
+ print '';
} else {
// Mode view
$now = dol_now();
diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php
index 458c6a2563b..c57148124be 100644
--- a/htdocs/core/class/commonobject.class.php
+++ b/htdocs/core/class/commonobject.class.php
@@ -4186,11 +4186,12 @@ abstract class CommonObject
* But for the moment we don't know if it's possible, so we keep the method available on overloaded objects.
*
* @param string $restrictlist ''=All lines, 'services'=Restrict to services only
+ * @param array $selectedLines Array of lines id for selected lines
* @return void
*/
- public function printOriginLinesList($restrictlist = '')
+ public function printOriginLinesList($restrictlist = '', $selectedLines = array())
{
- global $langs, $hookmanager, $conf;
+ global $langs, $hookmanager, $conf, $form;
print '';
print ''.$langs->trans('Ref').' ';
@@ -4203,8 +4204,9 @@ abstract class CommonObject
{
print ''.$langs->trans('Unit').' ';
}
- print ''.$langs->trans('ReductionShort').' ';
-
+ print ''.$langs->trans('ReductionShort').' ';
+ print ''.$form->showCheckAddButtons('checkforselect', 1).' ';
+ print '';
$var = true;
$i = 0;
@@ -4223,7 +4225,7 @@ abstract class CommonObject
}
else
{
- $this->printOriginLine($line, $var, $restrictlist);
+ $this->printOriginLine($line, $var, $restrictlist, '/core/tpl', $selectedLines);
}
$i++;
@@ -4241,9 +4243,10 @@ abstract class CommonObject
* @param string $var Var
* @param string $restrictlist ''=All lines, 'services'=Restrict to services only (strike line if not)
* @param string $defaulttpldir Directory where to find the template
+ * @param array $selectedLines Array of lines id for selected lines
* @return void
*/
- public function printOriginLine($line, $var, $restrictlist = '', $defaulttpldir = '/core/tpl')
+ public function printOriginLine($line, $var, $restrictlist = '', $defaulttpldir = '/core/tpl', $selectedLines = array())
{
global $langs, $conf;
@@ -4267,6 +4270,8 @@ abstract class CommonObject
if ($line->date_fin_reel) $date_end=$line->date_fin_reel;
}
+ $this->tpl['id'] = $line->id;
+
$this->tpl['label'] = '';
if (! empty($line->fk_parent_line)) $this->tpl['label'].= img_picto('', 'rightarrow');
diff --git a/htdocs/core/tpl/originproductline.tpl.php b/htdocs/core/tpl/originproductline.tpl.php
index 2f0accd6306..e29ea678282 100644
--- a/htdocs/core/tpl/originproductline.tpl.php
+++ b/htdocs/core/tpl/originproductline.tpl.php
@@ -40,6 +40,10 @@ if($conf->global->PRODUCT_USE_UNITS)
print ''.$langs->trans($this->tpl['unit']).' ';
print ''.$this->tpl['remise_percent'].' ';
+
+$selected=1;
+if (!empty($selectedLines) && !in_array($this->tpl['id'], $selectedLines)) $selected=0;
+print ' ';
print ''."\n";
?>