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"; ?>