20if (empty($conf) || !is_object($conf)) {
21 print
"Error, template page can't be called as URL";
27if (!empty($form) && !is_object($form)) {
28 $form =
new Form($db);
31$qtytoconsumeforline = $this->tpl[
'qty'] / (!empty($this->tpl[
'efficiency']) ? $this->tpl[
'efficiency'] : 1);
35$qtytoconsumeforline =
price2num($qtytoconsumeforline,
'MS');
38if ($line->fk_product > 0) {
39 $tmpproduct->fetch($line->fk_product);
41$tmpbom =
new BOM($db);
42if ($line->fk_bom_child > 0) {
43 $res = $tmpbom->fetch($line->fk_bom_child);
48<!-- BEGIN PHP TEMPLATE originproductline.tpl.php -->
50print
'<tr class="oddeven'.(empty($this->tpl[
'strike']) ?
'' :
' strikefordisabled').
'">';
54 print $tmpproduct->getNomUrl(1);
56 print
' ' . $langs->trans(
"or") .
' ';
57 print $tmpbom->getNomUrl(1);
58 print
' <a class="collapse_bom" id="collapse-' . $line->id .
'" href="#">';
63 print $this->tpl[
'label'];
67print
'<td class="right">'.$this->tpl[
'qty'].(($this->tpl[
'efficiency'] > 0 && $this->tpl[
'efficiency'] < 1) ?
' / '.$form->textwithpicto($this->tpl[
'efficiency'], $langs->trans(
"ValueOfMeansLoss")).
' = '.$qtytoconsumeforline :
'').
'</td>';
69print
'<td class="right">'.measuringUnitString($this->tpl[
'fk_unit'],
'',
'', 1).
'</td>';
70print
'<td class="center">';
71if ($tmpproduct->isStockManaged()) {
72 print (empty($this->tpl[
'stock']) ? 0 :
price2num($this->tpl[
'stock'],
'MS'));
73 if ($this->tpl[
'seuil_stock_alerte'] !=
'' && ($this->tpl[
'stock'] < $this->tpl[
'seuil_stock_alerte'])) {
74 print
' '.img_warning($langs->trans(
"StockLowerThanLimit", $this->tpl[
'seuil_stock_alerte']));
78print
'<td class="center">';
79if ($tmpproduct->isStockManaged()) {
80 print ((empty($this->tpl[
'virtual_stock']) ? 0 :
price2num($this->tpl[
'virtual_stock'],
'MS')));
81 if ($this->tpl[
'seuil_stock_alerte'] !=
'' && ($this->tpl[
'virtual_stock'] < $this->tpl[
'seuil_stock_alerte'])) {
82 print
' '.img_warning($langs->trans(
"StockLowerThanLimit", $this->tpl[
'seuil_stock_alerte']));
86print
'<td class="center">'.($this->tpl[
'qty_frozen'] ?
yn($this->tpl[
'qty_frozen']) :
'').
'</td>';
87print
'<td class="center">'.($this->tpl[
'disable_stock_change'] ?
yn($this->tpl[
'disable_stock_change']) :
'').
'</td>';
91if (!empty($selectedLines) && !in_array($this->tpl[
'id'], $selectedLines)) {
96 print
'<td class="center">';
97 print
'<input type="checkbox" name="bomlineid[]" value="' . $line->id .
'">';
100 print
'<td class="center"></td>';
110$sql =
'SELECT rowid, fk_bom_child, fk_product, qty FROM '.MAIN_DB_PREFIX.
'bom_bomline AS bl';
111$sql.=
' WHERE fk_bom ='. (int) $tmpbom->id;
112$resql = $db->query($sql);
116 while ($obj = $db->fetch_object($resql)) {
117 $sub_bom_product =
new Product($db);
118 $sub_bom_product->fetch($obj->fk_product);
119 $sub_bom_product->load_stock();
121 $sub_bom =
new BOM($db);
122 $sub_bom->fetch($obj->fk_bom_child);
124 $sub_bom_line =
new BOMLine($db);
125 $sub_bom_line->fetch($obj->rowid);
129 print
'<tr style="display:none" class="sub_bom_lines" parentid="'.$line->id.
'">';
131 print
'<tr class="sub_bom_lines" parentid="'.$line->id.
'">';
135 print
'<td style="padding-left: 5%" id="sub_bom_product_'.$sub_bom_line->id.
'">';
136 if (!empty($obj->fk_bom_child)) {
137 print $sub_bom_product->getNomUrl(1);
138 print
' '.$langs->trans(
'or').
' ';
139 print $sub_bom->getNomUrl(1);
141 print $sub_bom_product->getNomUrl(1);
146 if ($sub_bom_line->qty_frozen > 0) {
147 print
'<td class="linecolqty nowrap right" id="sub_bom_qty_'.$sub_bom_line->id.
'">'.
price($sub_bom_line->qty, 0,
'', 0, 0).
'</td>';
149 print
'<td class="linecolqty nowrap right" id="sub_bom_qty_'.$sub_bom_line->id.
'">'.
price($sub_bom_line->qty * $line->qty, 0,
'', 0, 0).
'</td>';
153 print
'<td class="linecolunit nowrap right" id="sub_bom_unit_'.$sub_bom_line->id.
'">'.
measuringUnitString($sub_bom_line->fk_unit,
'',
'', 1).
'</td>';
156 if ($sub_bom_product->stock_reel > 0) {
157 print
'<td class="linecolstockreel nowrap center" id="sub_bom_stock_reel_'.$sub_bom_product->stock_reel.
'">'.$sub_bom_product->stock_reel.
'</td>';
159 print
'<td class="linecolstockreel nowrap center" id="sub_bom_stock_reel_'.$sub_bom_product->stock_reel.
'"> </td>';
163 if ($sub_bom_product->stock_theorique > 0) {
164 print
'<td class="linecolstocktheorique nowrap center" id="sub_bom_stock_theorique_'.$sub_bom_product->stock_theorique.
'">'.$sub_bom_product->stock_theorique.
'</td>';
166 print
'<td class="linecolstocktheorique nowrap center" id="sub_bom_stock_theorique_'.$sub_bom_product->stock_theorique.
'"> </td>';
170 if ($sub_bom_line->qty_frozen > 0) {
171 print
'<td class="linecolqtyfrozen nowrap right" id="sub_bom_qty_frozen_'.$sub_bom_line->qty_frozen.
'">'.$langs->trans(
'Yes').
'</td>';
173 print
'<td class="linecolqtyfrozen nowrap right" id="sub_bom_qty_frozen_'.$sub_bom_line->qty_frozen.
'"> </td>';
177 if ($sub_bom_line->disable_stock_change > 0) {
178 print
'<td class="linecoldisablestockchange nowrap right" id="sub_bom_stock_change_'.$sub_bom_line->id.
'">'.
yn($sub_bom_line->disable_stock_change).
'</td>';
180 print
'<td class="linecoldisablestockchange nowrap right" id="sub_bom_stock_change_'.$sub_bom_line->id.
'"> </td>';
189<!-- END PHP TEMPLATE originproductline.tpl.php -->
Class to manage products or services.
yn($yesno, $case=1, $color=0)
Return yes or no in current language.
price2num($amount, $rounding='', $option=0)
Function that return a number with universal decimal format (decimal separator is '.
price($amount, $form=0, $outlangs='', $trunc=1, $rounding=-1, $forcerounding=-1, $currency_code='')
Function to format a value into an amount for visual output Function used into PDF and HTML pages.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
measuringUnitString($unit, $measuring_style='', $scale='', $use_short_label=0, $outputlangs=null)
Return translation label of a unit key.