dolibarr  16.0.1
originproductline.tpl.php
1 <?php
2 /* Copyright (C) 2010-2012 Regis Houssin <regis.houssin@inodbox.com>
3  * Copyright (C) 2017 Charlie Benke <charlie@patas-monkey.com>
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 3 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program. If not, see <https://www.gnu.org/licenses/>.
17  */
18 
19 // Protection to avoid direct call of template
20 if (empty($conf) || !is_object($conf)) {
21  print "Error, template page can't be called as URL";
22  exit;
23 }
24 
25 global $db;
26 
27 if (!empty($form) && !is_object($form)) {
28  $form = new Form($db);
29 }
30 
31 $qtytoconsumeforline = $this->tpl['qty'] / ( ! empty($this->tpl['efficiency']) ? $this->tpl['efficiency'] : 1 );
32 /*if ((empty($this->tpl['qty_frozen']) && $this->tpl['qty_bom'] > 1)) {
33  $qtytoconsumeforline = $qtytoconsumeforline / $this->tpl['qty_bom'];
34 }*/
35 $qtytoconsumeforline = price2num($qtytoconsumeforline, 'MS');
36 
37 $tmpproduct = new Product($db);
38 $tmpproduct->fetch($line->fk_product);
39 $tmpbom = new BOM($db);
40 $res = $tmpbom->fetch($line->fk_bom_child);
41 
42 ?>
43 
44 <!-- BEGIN PHP TEMPLATE originproductline.tpl.php -->
45 <?php
46 print '<tr class="oddeven'.(empty($this->tpl['strike']) ? '' : ' strikefordisabled').'">';
47 // Ref or label
48 print '<td>';
49 if ($res) {
50  print $tmpproduct->getNomUrl(1);
51  if ($tmpbom->id) {
52  print ' ' . $langs->trans("or") . ' ';
53  print $tmpbom->getNomUrl(1);
54  print ' <a class="collapse_bom" id="collapse-' . $line->id . '" href="#">';
55  print (empty($conf->global->BOM_SHOW_ALL_BOM_BY_DEFAULT) ? img_picto('', 'folder') : img_picto('', 'folder-open'));
56  }
57  print '</a>';
58 } else {
59  print $this->tpl['label'];
60 }
61 print '</td>';
62 // Qty
63 print '<td class="right">'.$this->tpl['qty'].(($this->tpl['efficiency'] > 0 && $this->tpl['efficiency'] < 1) ? ' / '.$form->textwithpicto($this->tpl['efficiency'], $langs->trans("ValueOfMeansLoss")).' = '.$qtytoconsumeforline : '').'</td>';
64 print '<td class="center">'.(empty($this->tpl['stock']) ? 0 : price2num($this->tpl['stock'], 'MS'));
65 if ($this->tpl['seuil_stock_alerte'] != '' && ($this->tpl['stock'] < $this->tpl['seuil_stock_alerte'])) {
66  print ' '.img_warning($langs->trans("StockLowerThanLimit", $this->tpl['seuil_stock_alerte']));
67 }
68 print '</td>';
69 print '<td class="center">'.((empty($this->tpl['virtual_stock']) ? 0 : price2num($this->tpl['virtual_stock'], 'MS')));
70 if ($this->tpl['seuil_stock_alerte'] != '' && ($this->tpl['virtual_stock'] < $this->tpl['seuil_stock_alerte'])) {
71  print ' '.img_warning($langs->trans("StockLowerThanLimit", $this->tpl['seuil_stock_alerte']));
72 }
73 print '</td>';
74 print '<td class="center">'.($this->tpl['qty_frozen'] ? yn($this->tpl['qty_frozen']) : '').'</td>';
75 print '<td class="center">'.($this->tpl['disable_stock_change'] ? yn($this->tpl['disable_stock_change']) : '').'</td>';
76 //print '<td class="right">'.$this->tpl['efficiency'].'</td>';
77 
78 $selected = 1;
79 if (!empty($selectedLines) && !in_array($this->tpl['id'], $selectedLines)) {
80  $selected = 0;
81 }
82 
83 if ($tmpbom->id > 0) {
84  print '<td class="center">';
85  print '<input type="checkbox" name="bomlineid[]" value="' . $line->id . '">';
86  print '</td>';
87 } else {
88  print '<td class="center"></td>';
89 }
90 
91 //print '<td class="center">';
92 //print '<input id="cb'.$this->tpl['id'].'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$this->tpl['id'].'"'.($selected?' checked="checked"':'').'>';
93 //print '</td>';
94 
95 print '</tr>'."\n";
96 
97 // Select of all the sub-BOM lines
98 $sql = 'SELECT rowid, fk_bom_child, fk_product, qty FROM '.MAIN_DB_PREFIX.'bom_bomline AS bl';
99 $sql.= ' WHERE fk_bom ='. (int) $tmpbom->id;
100 $resql = $db->query($sql);
101 
102 if ($resql) {
103  // Loop on all the sub-BOM lines if they exist
104  while ($obj = $db->fetch_object($resql)) {
105  $sub_bom_product = new Product($db);
106  $sub_bom_product->fetch($obj->fk_product);
107  $sub_bom_product->load_stock();
108 
109  $sub_bom = new BOM($db);
110  $sub_bom->fetch($obj->fk_bom_child);
111 
112  $sub_bom_line = new BOMLine($db);
113  $sub_bom_line->fetch($obj->rowid);
114 
115  //If hidden conf is set, we show directly all the sub-BOM lines
116  if (empty($conf->global->BOM_SHOW_ALL_BOM_BY_DEFAULT)) {
117  print '<tr style="display:none" class="sub_bom_lines" parentid="'.$line->id.'">';
118  } else {
119  print '<tr class="sub_bom_lines" parentid="'.$line->id.'">';
120  }
121 
122  // Product OR BOM
123  print '<td style="padding-left: 5%" id="sub_bom_product_'.$sub_bom_line->id.'">';
124  if (!empty($obj->fk_bom_child)) {
125  print $sub_bom_product->getNomUrl(1);
126  print ' '.$langs->trans('or').' ';
127  print $sub_bom->getNomUrl(1);
128  } else {
129  print $sub_bom_product->getNomUrl(1);
130  print '</td>';
131  }
132 
133  // Qty
134  if ($sub_bom_line->qty_frozen > 0) {
135  print '<td class="linecolqty nowrap right" id="sub_bom_qty_'.$sub_bom_line->id.'">'.price($sub_bom_line->qty, 0, '', 0, 0).'</td>';
136  } else {
137  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>';
138  }
139 
140  // Stock rĂ©el
141  if ($sub_bom_product->stock_reel > 0) {
142  print '<td class="linecolstockreel nowrap center" id="sub_bom_stock_reel_'.$sub_bom_product->stock_reel.'">'.$sub_bom_product->stock_reel.'</td>';
143  } else {
144  print '<td class="linecolstockreel nowrap center" id="sub_bom_stock_reel_'.$sub_bom_product->stock_reel.'">&nbsp;</td>';
145  }
146 
147  // Stock virtuel
148  if ($sub_bom_product->stock_theorique > 0) {
149  print '<td class="linecolstocktheorique nowrap center" id="sub_bom_stock_theorique_'.$sub_bom_product->stock_theorique.'">'.$sub_bom_product->stock_theorique.'</td>';
150  } else {
151  print '<td class="linecolstocktheorique nowrap center" id="sub_bom_stock_theorique_'.$sub_bom_product->stock_theorique.'">&nbsp;</td>';
152  }
153 
154  // Frozen qty
155  if ($sub_bom_line->qty_frozen > 0) {
156  print '<td class="linecolqtyfrozen nowrap right" id="sub_bom_qty_frozen_'.$sub_bom_line->qty_frozen.'">'.$langs->trans('Yes').'</td>';
157  } else {
158  print '<td class="linecolqtyfrozen nowrap right" id="sub_bom_qty_frozen_'.$sub_bom_line->qty_frozen.'">&nbsp;</td>';
159  }
160 
161  // Disable stock change
162  if ($sub_bom_line->disable_stock_change > 0) {
163  print '<td class="linecoldisablestockchange nowrap right" id="sub_bom_stock_change_'.$sub_bom_line->id.'">'.yn($sub_bom_line->disable_stock_change).'</td>';
164  } else {
165  print '<td class="linecoldisablestockchange nowrap right" id="sub_bom_stock_change_'.$sub_bom_line->id.'">&nbsp;</td>';
166  }
167 
168  print '<td></td>';
169  print '<td></td>';
170  }
171 }
172 
173 ?>
174 <!-- END PHP TEMPLATE originproductline.tpl.php -->
yn($yesno, $case=1, $color=0)
Return yes or no in current language.
if($cancel &&!$id) if($action== 'add'&&!$cancel) if($action== 'delete') if($id) $form
Actions.
Definition: card.php:142
Class for BOM.
Definition: bom.class.php:33
Class to manage products or services.
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...
Class to manage generation of HTML components Only common components must be here.
Class for BOMLine.
Definition: bom.class.php:1198
price2num($amount, $rounding= '', $option=0)
Function that return a number with universal decimal format (decimal separator is &#39;...
img_picto($titlealt, $picto, $moreatt= '', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt= '', $morecss= '', $marginleftonlyshort=2)
Show picto whatever it&#39;s its name (generic function)
if(isModEnabled('facture')&&!empty($user->rights->facture->lire)) if((isModEnabled('fournisseur')&&empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)&&$user->rights->fournisseur->facture->lire)||(isModEnabled('supplier_invoice')&&$user->rights->supplier_invoice->lire)) if(isModEnabled('don')&&!empty($user->rights->don->lire)) if(isModEnabled('tax')&&!empty($user->rights->tax->charges->lire)) if(isModEnabled('facture')&&isModEnabled('commande')&&$user->rights->commande->lire &&empty($conf->global->WORKFLOW_DISABLE_CREATE_INVOICE_FROM_ORDER)) $resql
Social contributions to pay.
Definition: index.php:742