21if (empty($conf) || !is_object($conf)) {
22 print
"Error, template page can't be called as URL";
26'@phan-var-force CommonObject $this';
30if (empty($form) || !is_object($form)) {
31 $form =
new Form($db);
34$qtytoconsumeforline = $this->tpl[
'qty'] / (!empty($this->tpl[
'efficiency']) ? $this->tpl[
'efficiency'] : 1);
38$qtytoconsumeforline =
price2num($qtytoconsumeforline,
'MS');
41if ($line->fk_product > 0) {
42 $tmpproduct->fetch($line->fk_product);
44$tmpbom =
new BOM($db);
45if ($line->fk_bom_child > 0) {
46 $res = $tmpbom->fetch($line->fk_bom_child);
51<!-- BEGIN PHP TEMPLATE originproductline.tpl.php -->
53print
'<tr class="oddeven'.(empty($this->tpl[
'strike']) ?
'' :
' strikefordisabled').
'">';
57 print $tmpproduct->getNomUrl(1);
59 print
' ' . $langs->trans(
"or") .
' ';
60 print $tmpbom->getNomUrl(1);
61 print
' <a class="collapse_bom" id="collapse-' . $line->id .
'" href="#">';
66 print $this->tpl[
'label'];
70print
'<td class="right">'.$this->tpl[
'qty'].(($this->tpl[
'efficiency'] > 0 && $this->tpl[
'efficiency'] < 1) ?
' / '.$form->textwithpicto($this->tpl[
'efficiency'], $langs->trans(
"ValueOfMeansLoss")).
' = '.$qtytoconsumeforline :
'').
'</td>';
72print
'<td class="right">'.measuringUnitString($this->tpl[
'fk_unit'],
'',
'', 1).
'</td>';
74print
'<td class="center">';
75if ($tmpproduct->isStockManaged()) {
76 print(empty($this->tpl[
'stock']) ? 0 :
price2num($this->tpl[
'stock'],
'MS'));
77 if ($this->tpl[
'seuil_stock_alerte'] !=
'' && ($this->tpl[
'stock'] < $this->tpl[
'seuil_stock_alerte'])) {
78 print
' '.img_warning($langs->trans(
"StockLowerThanLimit", $this->tpl[
'seuil_stock_alerte']));
82print
'<td class="center">';
83if ($tmpproduct->isStockManaged()) {
84 print((empty($this->tpl[
'virtual_stock']) ? 0 :
price2num($this->tpl[
'virtual_stock'],
'MS')));
85 if ($this->tpl[
'seuil_stock_alerte'] !=
'' && ($this->tpl[
'virtual_stock'] < $this->tpl[
'seuil_stock_alerte'])) {
86 print
' '.img_warning($langs->trans(
"StockLowerThanLimit", $this->tpl[
'seuil_stock_alerte']));
90print
'<td class="center">'.($this->tpl[
'qty_frozen'] ?
yn($this->tpl[
'qty_frozen']) :
'').
'</td>';
91print
'<td class="center">'.($this->tpl[
'disable_stock_change'] ?
yn($this->tpl[
'disable_stock_change']) :
'').
'</td>';
95if (!empty($selectedLines) && !in_array($this->tpl[
'id'], $selectedLines)) {
100 print
'<td class="center">';
101 print
'<input type="checkbox" name="bomlineid[]" value="' . $line->id .
'">';
104 print
'<td class="center"></td>';
114$sql =
'SELECT rowid, fk_bom_child, fk_product, qty FROM '.MAIN_DB_PREFIX.
'bom_bomline AS bl';
115$sql .=
' WHERE fk_bom ='. (int) $tmpbom->id;
116$resql = $db->query($sql);
120 while ($obj = $db->fetch_object($resql)) {
121 $sub_bom_product =
new Product($db);
122 $sub_bom_product->fetch($obj->fk_product);
123 $sub_bom_product->load_stock();
125 $sub_bom =
new BOM($db);
126 $sub_bom->fetch($obj->fk_bom_child);
128 $sub_bom_line =
new BOMLine($db);
129 $sub_bom_line->fetch($obj->rowid);
133 print
'<tr style="display:none" class="sub_bom_lines" parentid="'.$line->id.
'">';
135 print
'<tr class="sub_bom_lines" parentid="'.$line->id.
'">';
139 print
'<td style="padding-left: 5%" id="sub_bom_product_'.$sub_bom_line->id.
'">';
140 if (!empty($obj->fk_bom_child)) {
141 print $sub_bom_product->getNomUrl(1);
142 print
' '.$langs->trans(
'or').
' ';
143 print $sub_bom->getNomUrl(1);
145 print $sub_bom_product->getNomUrl(1);
150 if ($sub_bom_line->qty_frozen > 0) {
151 print
'<td class="linecolqty nowrap right" id="sub_bom_qty_'.$sub_bom_line->id.
'">'.
price($sub_bom_line->qty, 0,
'', 0, 0).
'</td>';
153 print
'<td class="linecolqty nowrap right" id="sub_bom_qty_'.$sub_bom_line->id.
'">'.
price($sub_bom_line->qty * (
float) $line->qty, 0,
'', 0, 0).
'</td>';
157 print
'<td class="linecolunit nowrap right" id="sub_bom_unit_'.$sub_bom_line->id.
'">'.
measuringUnitString($sub_bom_line->fk_unit,
'',
'', 1).
'</td>';
160 if ($sub_bom_product->stock_reel > 0) {
161 print
'<td class="linecolstockreel nowrap center" id="sub_bom_stock_reel_'.$sub_bom_product->stock_reel.
'">'.$sub_bom_product->stock_reel.
'</td>';
163 print
'<td class="linecolstockreel nowrap center" id="sub_bom_stock_reel_'.$sub_bom_product->stock_reel.
'"> </td>';
167 if ($sub_bom_product->stock_theorique > 0) {
168 print
'<td class="linecolstocktheorique nowrap center" id="sub_bom_stock_theorique_'.$sub_bom_product->stock_theorique.
'">'.$sub_bom_product->stock_theorique.
'</td>';
170 print
'<td class="linecolstocktheorique nowrap center" id="sub_bom_stock_theorique_'.$sub_bom_product->stock_theorique.
'"> </td>';
174 if ($sub_bom_line->qty_frozen > 0) {
175 print
'<td class="linecolqtyfrozen nowrap right" id="sub_bom_qty_frozen_'.$sub_bom_line->qty_frozen.
'">'.$langs->trans(
'Yes').
'</td>';
177 print
'<td class="linecolqtyfrozen nowrap right" id="sub_bom_qty_frozen_'.$sub_bom_line->qty_frozen.
'"> </td>';
181 if ($sub_bom_line->disable_stock_change > 0) {
182 print
'<td class="linecoldisablestockchange nowrap right" id="sub_bom_stock_change_'.$sub_bom_line->id.
'">'.
yn($sub_bom_line->disable_stock_change).
'</td>';
184 print
'<td class="linecoldisablestockchange nowrap right" id="sub_bom_stock_change_'.$sub_bom_line->id.
'"> </td>';
193<!-- END PHP TEMPLATE originproductline.tpl.php -->
Class to manage products or services.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
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.
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.