dolibarr  17.0.4
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 -->
Class for BOM.
Definition: bom.class.php:37
Class for BOMLine.
Definition: bom.class.php:1545
Class to manage generation of HTML components Only common components must be here.
Class to manage products or services.
if(isModEnabled('facture') &&!empty($user->rights->facture->lire)) if((isModEnabled('fournisseur') &&empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->hasRight("fournisseur", "facture", "lire"))||(isModEnabled('supplier_invoice') && $user->hasRight("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->hasRight("commande", "lire") &&empty($conf->global->WORKFLOW_DISABLE_CREATE_INVOICE_FROM_ORDER)) $resql
Social contributions to pay.
Definition: index.php:745
if($cancel &&! $id) if($action=='add' &&! $cancel) if($action=='delete') if($id) $form
Actions.
Definition: card.php:143
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)