dolibarr  18.0.6
lines.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (C) 2013-2016 Olivier Geffroy <jeff@jeffinfo.com>
3  * Copyright (C) 2013-2022 Alexandre Spangaro <aspangaro@open-dsi.fr>
4  * Copyright (C) 2014-2015 Ari Elbaz (elarifr) <github@accedinfo.com>
5  * Copyright (C) 2013-2016 Florian Henry <florian.henry@open-concept.pro>
6  * Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 3 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program. If not, see <https://www.gnu.org/licenses/>.
20  */
21 
27 require '../../main.inc.php';
28 
29 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formaccounting.class.php';
30 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
31 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
32 require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php';
33 require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.product.class.php';
34 require_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountingaccount.class.php';
35 require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
36 require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php';
37 require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
38 require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
39 
40 // Load translation files required by the page
41 $langs->loadLangs(array("compta", "bills", "other", "accountancy", "productbatch", "products"));
42 
43 $optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print')
44 
45 $account_parent = GETPOST('account_parent');
46 $changeaccount = GETPOST('changeaccount');
47 // Search Getpost
48 $search_societe = GETPOST('search_societe', 'alpha');
49 $search_lineid = GETPOST('search_lineid', 'int');
50 $search_ref = GETPOST('search_ref', 'alpha');
51 $search_invoice = GETPOST('search_invoice', 'alpha');
52 //$search_ref_supplier = GETPOST('search_ref_supplier', 'alpha');
53 $search_label = GETPOST('search_label', 'alpha');
54 $search_desc = GETPOST('search_desc', 'alpha');
55 $search_amount = GETPOST('search_amount', 'alpha');
56 $search_account = GETPOST('search_account', 'alpha');
57 $search_vat = GETPOST('search_vat', 'alpha');
58 $search_date_startday = GETPOST('search_date_startday', 'int');
59 $search_date_startmonth = GETPOST('search_date_startmonth', 'int');
60 $search_date_startyear = GETPOST('search_date_startyear', 'int');
61 $search_date_endday = GETPOST('search_date_endday', 'int');
62 $search_date_endmonth = GETPOST('search_date_endmonth', 'int');
63 $search_date_endyear = GETPOST('search_date_endyear', 'int');
64 $search_date_start = dol_mktime(0, 0, 0, $search_date_startmonth, $search_date_startday, $search_date_startyear); // Use tzserver
65 $search_date_end = dol_mktime(23, 59, 59, $search_date_endmonth, $search_date_endday, $search_date_endyear);
66 $search_country = GETPOST('search_country', 'alpha');
67 $search_tvaintra = GETPOST('search_tvaintra', 'alpha');
68 
69 // Load variable for pagination
70 $limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : (empty($conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION) ? $conf->liste_limit : $conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION);
71 $sortfield = GETPOST('sortfield', 'aZ09comma');
72 $sortorder = GETPOST('sortorder', 'aZ09comma');
73 $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int');
74 if (empty($page) || $page < 0) {
75  $page = 0;
76 }
77 $offset = $limit * $page;
78 $pageprev = $page - 1;
79 $pagenext = $page + 1;
80 if (!$sortfield) {
81  $sortfield = "f.datef, f.ref, l.rowid";
82 }
83 if (!$sortorder) {
84  if ($conf->global->ACCOUNTING_LIST_SORT_VENTILATION_DONE > 0) {
85  $sortorder = "DESC";
86  } else {
87  $sortorder = "ASC";
88  }
89 }
90 
91 $formaccounting = new FormAccounting($db);
92 
93 // Security check
94 if (!isModEnabled('accounting')) {
96 }
97 if ($user->socid > 0) {
99 }
100 if (!$user->hasRight('accounting', 'mouvements', 'lire')) {
101  accessforbidden();
102 }
103 
104 
105 $formaccounting = new FormAccounting($db);
106 
107 
108 /*
109  * Actions
110  */
111 
112 // Purge search criteria
113 if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) { // All tests are required to be compatible with all browsers
114  $search_societe = '';
115  $search_lineid = '';
116  $search_ref = '';
117  $search_invoice = '';
118  //$search_ref_supplier = '';
119  $search_label = '';
120  $search_desc = '';
121  $search_amount = '';
122  $search_account = '';
123  $search_vat = '';
124  $search_date_startday = '';
125  $search_date_startmonth = '';
126  $search_date_startyear = '';
127  $search_date_endday = '';
128  $search_date_endmonth = '';
129  $search_date_endyear = '';
130  $search_date_start = '';
131  $search_date_end = '';
132  $search_country = '';
133  $search_tvaintra = '';
134 }
135 
136 if (is_array($changeaccount) && count($changeaccount) > 0 && $user->hasRight('accounting', 'bind', 'write')) {
137  $error = 0;
138 
139  if (!(GETPOST('account_parent', 'int') >= 0)) {
140  $error++;
141  setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Account")), null, 'errors');
142  }
143 
144  if (!$error) {
145  $db->begin();
146 
147  $sql1 = "UPDATE ".MAIN_DB_PREFIX."facture_fourn_det";
148  $sql1 .= " SET fk_code_ventilation=".(GETPOST('account_parent', 'int') > 0 ? GETPOST('account_parent', 'int') : '0');
149  $sql1 .= ' WHERE rowid IN ('.$db->sanitize(implode(',', $changeaccount)).')';
150 
151  dol_syslog('accountancy/supplier/lines.php::changeaccount sql= '.$sql1);
152  $resql1 = $db->query($sql1);
153  if (!$resql1) {
154  $error++;
155  setEventMessages($db->lasterror(), null, 'errors');
156  }
157  if (!$error) {
158  $db->commit();
159  setEventMessages($langs->trans("Save"), null, 'mesgs');
160  } else {
161  $db->rollback();
162  setEventMessages($db->lasterror(), null, 'errors');
163  }
164 
165  $account_parent = ''; // Protection to avoid to mass apply it a second time
166  }
167 }
168 
169 if (GETPOST('sortfield') == 'f.datef, f.ref, l.rowid') {
170  $value = (GETPOST('sortorder') == 'asc,asc,asc' ? 0 : 1);
171  require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
172  $res = dolibarr_set_const($db, "ACCOUNTING_LIST_SORT_VENTILATION_DONE", $value, 'yesno', 0, '', $conf->entity);
173 }
174 
175 
176 /*
177  * View
178  */
179 
180 $form = new Form($db);
181 $formother = new FormOther($db);
182 
183 llxHeader('', $langs->trans("SuppliersVentilation").' - '.$langs->trans("Dispatched"));
184 
185 print '<script type="text/javascript">
186  $(function () {
187  $(\'#select-all\').click(function(event) {
188  // Iterate each checkbox
189  $(\':checkbox\').each(function() {
190  this.checked = true;
191  });
192  });
193  $(\'#unselect-all\').click(function(event) {
194  // Iterate each checkbox
195  $(\':checkbox\').each(function() {
196  this.checked = false;
197  });
198  });
199  });
200  </script>';
201 
202 /*
203  * Supplier Invoice lines
204  */
205 $sql = "SELECT f.rowid as facid, f.ref as ref, f.ref_supplier, f.type as ftype, f.libelle as invoice_label, f.datef, f.fk_soc,";
206 $sql .= " l.rowid, l.fk_product, l.product_type as line_type, l.description, l.total_ht , l.qty, l.tva_tx, l.vat_src_code,";
207 $sql .= " aa.rowid as fk_compte, aa.label as label_account, aa.labelshort as labelshort_account, aa.account_number,";
208 $sql .= " p.rowid as product_id, p.fk_product_type as product_type, p.ref as product_ref, p.label as product_label, p.fk_product_type as type, p.tobuy, p.tosell,";
209 if (!empty($conf->global->MAIN_PRODUCT_PERENTITY_SHARED)) {
210  $sql .= " ppe.accountancy_code_buy, ppe.accountancy_code_buy_intra, ppe.accountancy_code_buy_export,";
211 } else {
212  $sql .= " p.accountancy_code_buy, p.accountancy_code_buy_intra, p.accountancy_code_buy_export,";
213 }
214 $sql .= " co.code as country_code, co.label as country,";
215 $sql .= " s.rowid as socid, s.nom as name, s.tva_intra, s.email, s.town, s.zip, s.fk_pays, s.client, s.fournisseur, s.code_client, s.code_fournisseur";
216 if (!empty($conf->global->MAIN_COMPANY_PERENTITY_SHARED)) {
217  $sql .= ", spe.accountancy_code_customer as code_compta_client";
218  $sql .= ", spe.accountancy_code_supplier as code_compta_fournisseur";
219 } else {
220  $sql .= ", s.code_compta as code_compta_client";
221  $sql .= ", s.code_compta_fournisseur";
222 }
223 $parameters = array();
224 $reshook = $hookmanager->executeHooks('printFieldListSelect', $parameters); // Note that $action and $object may have been modified by hook
225 $sql .= $hookmanager->resPrint;
226 $sql .= " FROM ".MAIN_DB_PREFIX."facture_fourn_det as l";
227 $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product as p ON p.rowid = l.fk_product";
228 if (!empty($conf->global->MAIN_PRODUCT_PERENTITY_SHARED)) {
229  $sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "product_perentity as ppe ON ppe.fk_product = p.rowid AND ppe.entity = " . ((int) $conf->entity);
230 }
231 $sql .= " INNER JOIN ".MAIN_DB_PREFIX."accounting_account as aa ON aa.rowid = l.fk_code_ventilation";
232 $sql .= " INNER JOIN ".MAIN_DB_PREFIX."facture_fourn as f ON f.rowid = l.fk_facture_fourn";
233 $sql .= " INNER JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid = f.fk_soc";
234 if (!empty($conf->global->MAIN_COMPANY_PERENTITY_SHARED)) {
235  $sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "societe_perentity as spe ON spe.fk_soc = s.rowid AND spe.entity = " . ((int) $conf->entity);
236 }
237 $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_country as co ON co.rowid = s.fk_pays ";
238 $sql .= " WHERE f.rowid = l.fk_facture_fourn and f.fk_statut >= 1 AND l.fk_code_ventilation <> 0 ";
239 // Add search filter like
240 if ($search_societe) {
241  $sql .= natural_search('s.nom', $search_societe);
242 }
243 if ($search_lineid) {
244  $sql .= natural_search("l.rowid", $search_lineid, 1);
245 }
246 if (strlen(trim($search_invoice))) {
247  $sql .= natural_search(array("f.ref", "f.ref_supplier"), $search_invoice);
248 }
249 /*if (strlen(trim($search_ref_supplier))) {
250  $sql .= natural_search("f.ref_supplier", $search_ref_supplier);
251 }*/
252 if (strlen(trim($search_label))) {
253  $sql .= natural_search("f.libelle", $search_label);
254 }
255 if (strlen(trim($search_ref))) {
256  $sql .= natural_search("p.ref", $search_ref);
257 }
258 if (strlen(trim($search_desc))) {
259  $sql .= natural_search("l.description", $search_desc);
260 }
261 if (strlen(trim($search_amount))) {
262  $sql .= natural_search("l.total_ht", $search_amount, 1);
263 }
264 if (strlen(trim($search_account))) {
265  $sql .= natural_search("aa.account_number", $search_account);
266 }
267 if (strlen(trim($search_vat))) {
268  $sql .= natural_search("l.tva_tx", price2num($search_vat), 1);
269 }
270 if ($search_date_start) {
271  $sql .= " AND f.datef >= '".$db->idate($search_date_start)."'";
272 }
273 if ($search_date_end) {
274  $sql .= " AND f.datef <= '".$db->idate($search_date_end)."'";
275 }
276 if (strlen(trim($search_country))) {
277  $arrayofcode = getCountriesInEEC();
278  $country_code_in_EEC = $country_code_in_EEC_without_me = '';
279  foreach ($arrayofcode as $key => $value) {
280  $country_code_in_EEC .= ($country_code_in_EEC ? "," : "")."'".$value."'";
281  if ($value != $mysoc->country_code) {
282  $country_code_in_EEC_without_me .= ($country_code_in_EEC_without_me ? "," : "")."'".$value."'";
283  }
284  }
285  if ($search_country == 'special_allnotme') {
286  $sql .= " AND co.code <> '".$db->escape($mysoc->country_code)."'";
287  } elseif ($search_country == 'special_eec') {
288  $sql .= " AND co.code IN (".$db->sanitize($country_code_in_EEC, 1).")";
289  } elseif ($search_country == 'special_eecnotme') {
290  $sql .= " AND co.code IN (".$db->sanitize($country_code_in_EEC_without_me, 1).")";
291  } elseif ($search_country == 'special_noteec') {
292  $sql .= " AND co.code NOT IN (".$db->sanitize($country_code_in_EEC, 1).")";
293  } else {
294  $sql .= natural_search("co.code", $search_country);
295  }
296 }
297 if (strlen(trim($search_tvaintra))) {
298  $sql .= natural_search("s.tva_intra", $search_tvaintra);
299 }
300 $sql .= " AND f.entity IN (".getEntity('facture_fourn', 0).")"; // We don't share object for accountancy
301 
302 // Add where from hooks
303 $parameters = array();
304 $reshook = $hookmanager->executeHooks('printFieldListWhere', $parameters); // Note that $action and $object may have been modified by hook
305 $sql .= $hookmanager->resPrint;
306 
307 $sql .= $db->order($sortfield, $sortorder);
308 
309 // Count total nb of records
310 $nbtotalofrecords = '';
311 if (!getDolGlobalInt('MAIN_DISABLE_FULL_SCANLIST')) {
312  $result = $db->query($sql);
313  $nbtotalofrecords = $db->num_rows($result);
314  if (($page * $limit) > $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
315  $page = 0;
316  $offset = 0;
317  }
318 }
319 
320 $sql .= $db->plimit($limit + 1, $offset);
321 
322 dol_syslog("accountancy/supplier/lines.php", LOG_DEBUG);
323 $result = $db->query($sql);
324 if ($result) {
325  $num_lines = $db->num_rows($result);
326  $i = 0;
327 
328  $param = '';
329  if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) {
330  $param .= '&contextpage='.urlencode($contextpage);
331  }
332  if ($limit > 0 && $limit != $conf->liste_limit) {
333  $param .= '&limit='.((int) $limit);
334  }
335  if ($search_societe) {
336  $param .= "&search_societe=".urlencode($search_societe);
337  }
338  if ($search_invoice) {
339  $param .= "&search_invoice=".urlencode($search_invoice);
340  }
341  if ($search_ref) {
342  $param .= "&search_ref=".urlencode($search_ref);
343  }
344  /*if ($search_ref_supplier) {
345  $param .= '&search_ref_supplier='.urlencode($search_ref_supplier);
346  }*/
347  if ($search_label) {
348  $param .= "&search_label=".urlencode($search_label);
349  }
350  if ($search_desc) {
351  $param .= "&search_desc=".urlencode($search_desc);
352  }
353  if ($search_account) {
354  $param .= "&search_account=".urlencode($search_account);
355  }
356  if ($search_vat) {
357  $param .= "&search_vat=".urlencode($search_vat);
358  }
359  if ($search_date_startday) {
360  $param .= '&search_date_startday='.urlencode($search_date_startday);
361  }
362  if ($search_date_startmonth) {
363  $param .= '&search_date_startmonth='.urlencode($search_date_startmonth);
364  }
365  if ($search_date_startyear) {
366  $param .= '&search_date_startyear='.urlencode($search_date_startyear);
367  }
368  if ($search_date_endday) {
369  $param .= '&search_date_endday='.urlencode($search_date_endday);
370  }
371  if ($search_date_endmonth) {
372  $param .= '&search_date_endmonth='.urlencode($search_date_endmonth);
373  }
374  if ($search_date_endyear) {
375  $param .= '&search_date_endyear='.urlencode($search_date_endyear);
376  }
377  if ($search_country) {
378  $param .= "&search_country=".urlencode($search_country);
379  }
380  if ($search_tvaintra) {
381  $param .= "&search_tvaintra=".urlencode($search_tvaintra);
382  }
383 
384  print '<form action="'.$_SERVER["PHP_SELF"].'" method="post">'."\n";
385  print '<input type="hidden" name="action" value="ventil">';
386  if ($optioncss != '') {
387  print '<input type="hidden" name="optioncss" value="'.$optioncss.'">';
388  }
389  print '<input type="hidden" name="token" value="'.newToken().'">';
390  print '<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
391  print '<input type="hidden" name="sortfield" value="'.$sortfield.'">';
392  print '<input type="hidden" name="sortorder" value="'.$sortorder.'">';
393  print '<input type="hidden" name="page" value="'.$page.'">';
394 
395  print_barre_liste($langs->trans("InvoiceLinesDone"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num_lines, $nbtotalofrecords, 'title_accountancy', 0, '', '', $limit);
396  print '<span class="opacitymedium">'.$langs->trans("DescVentilDoneSupplier").'</span><br>';
397 
398  print '<br><div class="inline-block divButAction paddingbottom">'.$langs->trans("ChangeAccount").' ';
399  print $formaccounting->select_account($account_parent, 'account_parent', 2, array(), 0, 0, 'maxwidth300 maxwidthonsmartphone valignmiddle');
400  print '<input type="submit" class="button small valignmiddle" value="'.$langs->trans("ChangeBinding").'"/></div>';
401 
402  $moreforfilter = '';
403 
404  print '<div class="div-table-responsive">';
405  print '<table class="tagtable liste'.($moreforfilter ? " listwithfilterbefore" : "").'">'."\n";
406 
407  // We add search filter
408  print '<tr class="liste_titre_filter">';
409  print '<td class="liste_titre"><input type="text" class="flat maxwidth25" name="search_lineid" value="'.dol_escape_htmltag($search_lineid).'"></td>';
410  print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_invoice" value="'.dol_escape_htmltag($search_invoice).'"></td>';
411  //print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_ref_supplier" value="'.dol_escape_htmltag($search_ref_supplier).'"></td>';
412  print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_label" value="'.dol_escape_htmltag($search_label).'"></td>';
413  print '<td class="liste_titre center">';
414  print '<div class="nowrap">';
415  print $form->selectDate($search_date_start ? $search_date_start : -1, 'search_date_start', 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans('From'));
416  print '</div>';
417  print '<div class="nowrap">';
418  print $form->selectDate($search_date_end ? $search_date_end : -1, 'search_date_end', 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans('to'));
419  print '</div>';
420  print '</td>';
421  print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_ref" value="'.dol_escape_htmltag($search_ref).'"></td>';
422  print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_desc" value="'.dol_escape_htmltag($search_desc).'"></td>';
423  print '<td class="liste_titre right"><input type="text" class="right flat maxwidth50" name="search_amount" value="'.dol_escape_htmltag($search_amount).'"></td>';
424  print '<td class="liste_titre right"><input type="text" class="right flat maxwidth50" name="search_vat" placeholder="%" size="1" value="'.dol_escape_htmltag($search_vat).'"></td>';
425  print '<td class="liste_titre"><input type="text" class="flat maxwidth75imp" name="search_societe" value="'.dol_escape_htmltag($search_societe).'"></td>';
426  print '<td class="liste_titre">';
427  print $form->select_country($search_country, 'search_country', '', 0, 'maxwidth100', 'code2', 1, 0, 1);
428  // print '<input type="text" class="flat maxwidth50" name="search_country" value="' . dol_escape_htmltag($search_country) . '">';
429  print '</td>';
430  print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_tvaintra" value="'.dol_escape_htmltag($search_tvaintra).'"></td>';
431  print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_account" value="'.dol_escape_htmltag($search_account).'"></td>';
432  print '<td class="liste_titre center">';
433  $searchpicto = $form->showFilterButtons();
434  print $searchpicto;
435  print "</td></tr>\n";
436 
437  print '<tr class="liste_titre">';
438  print_liste_field_titre("LineId", $_SERVER["PHP_SELF"], "l.rowid", "", $param, '', $sortfield, $sortorder);
439  print_liste_field_titre("Invoice", $_SERVER["PHP_SELF"], "f.ref", "", $param, '', $sortfield, $sortorder);
440  //print_liste_field_titre("RefSupplier", $_SERVER["PHP_SELF"], "f.ref_supplier", "", $param, '', $sortfield, $sortorder);
441  print_liste_field_titre("InvoiceLabel", $_SERVER["PHP_SELF"], "f.libelle", "", $param, '', $sortfield, $sortorder);
442  print_liste_field_titre("Date", $_SERVER["PHP_SELF"], "f.datef, f.ref, l.rowid", "", $param, '', $sortfield, $sortorder, 'center ');
443  print_liste_field_titre("ProductRef", $_SERVER["PHP_SELF"], "p.ref", "", $param, '', $sortfield, $sortorder);
444  //print_liste_field_titre("ProductLabel", $_SERVER["PHP_SELF"], "p.label", "", $param, '', $sortfield, $sortorder);
445  print_liste_field_titre("ProductDescription", $_SERVER["PHP_SELF"], "l.description", "", $param, '', $sortfield, $sortorder);
446  print_liste_field_titre("Amount", $_SERVER["PHP_SELF"], "l.total_ht", "", $param, '', $sortfield, $sortorder, 'right ');
447  print_liste_field_titre("VATRate", $_SERVER["PHP_SELF"], "l.tva_tx", "", $param, '', $sortfield, $sortorder, 'right ');
448  print_liste_field_titre("ThirdParty", $_SERVER["PHP_SELF"], "s.nom", "", $param, '', $sortfield, $sortorder);
449  print_liste_field_titre("Country", $_SERVER["PHP_SELF"], "co.label", "", $param, '', $sortfield, $sortorder);
450  print_liste_field_titre("VATIntraShort", $_SERVER["PHP_SELF"], "s.tva_intra", "", $param, '', $sortfield, $sortorder);
451  print_liste_field_titre("AccountAccounting", $_SERVER["PHP_SELF"], "aa.account_number", "", $param, '', $sortfield, $sortorder);
452  $checkpicto = $form->showCheckAddButtons();
453  print_liste_field_titre($checkpicto, '', '', '', '', '', '', '', 'center ');
454  print "</tr>\n";
455 
456  $thirdpartystatic = new Societe($db);
457  $facturefournisseur_static = new FactureFournisseur($db);
458  $productstatic = new ProductFournisseur($db);
459  $accountingaccountstatic = new AccountingAccount($db);
460 
461  $i = 0;
462  while ($i < min($num_lines, $limit)) {
463  $objp = $db->fetch_object($result);
464 
465  $facturefournisseur_static->ref = $objp->ref;
466  $facturefournisseur_static->id = $objp->facid;
467  $facturefournisseur_static->type = $objp->ftype;
468  $facturefournisseur_static->ref_supplier = $objp->ref_supplier;
469  $facturefournisseur_static->label = $objp->invoice_label;
470 
471  $thirdpartystatic->id = $objp->socid;
472  $thirdpartystatic->name = $objp->name;
473  $thirdpartystatic->client = $objp->client;
474  $thirdpartystatic->fournisseur = $objp->fournisseur;
475  $thirdpartystatic->code_client = $objp->code_client;
476  $thirdpartystatic->code_compta_client = $objp->code_compta_client;
477  $thirdpartystatic->code_fournisseur = $objp->code_fournisseur;
478  $thirdpartystatic->code_compta_fournisseur = $objp->code_compta_fournisseur;
479  $thirdpartystatic->email = $objp->email;
480  $thirdpartystatic->country_code = $objp->country_code;
481 
482  $productstatic->ref = $objp->product_ref;
483  $productstatic->id = $objp->product_id;
484  $productstatic->label = $objp->product_label;
485  $productstatic->type = $objp->line_type;
486  $productstatic->status = $objp->tosell;
487  $productstatic->status_buy = $objp->tobuy;
488  $productstatic->accountancy_code_buy = $objp->accountancy_code_buy;
489  $productstatic->accountancy_code_buy_intra = $objp->accountancy_code_buy_intra;
490  $productstatic->accountancy_code_buy_export = $objp->accountancy_code_buy_export;
491 
492  $accountingaccountstatic->rowid = $objp->fk_compte;
493  $accountingaccountstatic->label = $objp->label_account;
494  $accountingaccountstatic->labelshort = $objp->labelshort_account;
495  $accountingaccountstatic->account_number = $objp->account_number;
496 
497  print '<tr class="oddeven">';
498 
499  // Line id
500  print '<td>'.$objp->rowid.'</td>';
501 
502  // Ref Invoice
503  print '<td class="nowraponall">'.$facturefournisseur_static->getNomUrl(1);
504  if ($objp->ref_supplier) {
505  print '<br><span class="opacitymedium small">'.dol_escape_htmltag($objp->ref_supplier).'</span>';
506  }
507  print '</td>';
508 
509  // Ref supplier invoice
510  /*
511  print '<td class="tdoverflowmax100" title="'.dol_escape_htmltag($objp->ref_supplier).'">';
512  print $objp->ref_supplier;
513  print '</td>';
514  */
515 
516  // Supplier invoice label
517  print '<td class="tdoverflowonsmartphone small" title="'.dol_escape_htmltag($objp->invoice_label).'">';
518  print $objp->invoice_label;
519  print '</td>';
520 
521  // Date invoice
522  print '<td class="center">'.dol_print_date($db->jdate($objp->datef), 'day').'</td>';
523 
524  // Ref Product
525  print '<td class="tdoverflowmax100">';
526  if ($productstatic->id > 0) {
527  print $productstatic->getNomUrl(1);
528  }
529  if ($productstatic->id > 0 && $objp->product_label) {
530  print '<br>';
531  }
532  if ($objp->product_label) {
533  print '<span class="opacitymedium">'.$objp->product_label.'</span>';
534  }
535  print '</td>';
536 
537  print '<td class="tdoverflowonsmartphone small">';
538  $text = dolGetFirstLineOfText(dol_string_nohtmltag($objp->description, 1));
539  $trunclength = empty($conf->global->ACCOUNTING_LENGTH_DESCRIPTION) ? 32 : $conf->global->ACCOUNTING_LENGTH_DESCRIPTION;
540  print $form->textwithtooltip(dol_trunc($text, $trunclength), $objp->description);
541  print '</td>';
542 
543  print '<td class="right nowraponall amount">'.price($objp->total_ht).'</td>';
544 
545  print '<td class="right">'.vatrate($objp->tva_tx.($objp->vat_src_code ? ' ('.$objp->vat_src_code.')' : '')).'</td>';
546 
547  // Thirdparty
548  print '<td class="tdoverflowmax100">'.$thirdpartystatic->getNomUrl(1, 'supplier').'</td>';
549 
550  // Country
551  print '<td>';
552  if ($objp->country_code) {
553  print $langs->trans("Country".$objp->country_code).' ('.$objp->country_code.')';
554  }
555  print '</td>';
556 
557  print '<td class="tdoverflowmax80" title="'.dol_escape_htmltag($objp->tva_intra).'">'.dol_escape_htmltag($objp->tva_intra).'</td>';
558 
559  print '<td>';
560  print $accountingaccountstatic->getNomUrl(0, 1, 1, '', 1);
561  print ' <a class="editfielda" href="./card.php?id='.$objp->rowid.'&backtopage='.urlencode($_SERVER["PHP_SELF"].($param ? '?'.$param : '')).'">';
562  print img_edit();
563  print '</a></td>';
564  print '<td class="center"><input type="checkbox" class="checkforaction" name="changeaccount[]" value="'.$objp->rowid.'"/></td>';
565 
566  print '</tr>';
567  $i++;
568  }
569  if ($num_lines == 0) {
570  print '<tr><td colspan="13"><span class="opacitymedium">'.$langs->trans("NoRecordFound").'</span></td></tr>';
571  }
572 
573  print '</table>';
574  print "</div>";
575 
576  if ($nbtotalofrecords > $limit) {
577  print_barre_liste('', $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num_lines, $nbtotalofrecords, '', 0, '', '', $limit, 1);
578  }
579 
580  print '</form>';
581 } else {
582  print $db->lasterror();
583 }
584 
585 // End of page
586 llxFooter();
587 $db->close();
dolibarr_set_const($db, $name, $value, $type='chaine', $visible=0, $note='', $entity=1)
Insert a parameter (key,value) into database (delete old key then insert it again).
Definition: admin.lib.php:638
if(!defined('NOREQUIRESOC')) if(!defined('NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined('NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined('NOREQUIREAJAX')) llxHeader()
Empty header.
Definition: wrapper.php:56
llxFooter()
Empty footer.
Definition: wrapper.php:70
Class to manage accounting accounts.
Class to manage suppliers invoices.
Class to manage generation of HTML components for accounting management.
Class to manage generation of HTML components Only common components must be here.
Classe permettant la generation de composants html autre Only common components are here.
Class to manage predefined suppliers products.
Class to manage third parties objects (customers, suppliers, prospects...)
getCountriesInEEC()
Return list of countries that are inside the EEC (European Economic Community) Note: Try to keep this...
if(isModEnabled('facture') && $user->hasRight('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') && $user->hasRight('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)) $sql
Social contributions to pay.
Definition: index.php:746
if($cancel &&! $id) if($action=='add' &&! $cancel) if($action=='delete') if($id) $form
Actions.
Definition: card.php:143
dol_mktime($hour, $minute, $second, $month, $day, $year, $gm='auto', $check=1)
Return a timestamp date built from detailed informations (by default a local PHP server timestamp) Re...
dolGetFirstLineOfText($text, $nboflines=1, $charset='UTF-8')
Return first line of text.
dol_string_nohtmltag($stringtoclean, $removelinefeed=1, $pagecodeto='UTF-8', $strip_tags=0, $removedoublespaces=1)
Clean a string from all HTML tags and entities.
price2num($amount, $rounding='', $option=0)
Function that return a number with universal decimal format (decimal separator is '.
natural_search($fields, $value, $mode=0, $nofirstand=0)
Generate natural SQL search string for a criteria (this criteria can be tested on one or several fiel...
getDolGlobalInt($key, $default=0)
Return dolibarr global constant int value.
print_liste_field_titre($name, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $tooltip="", $forcenowrapcolumntitle=0)
Show title line of an array.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0)
Set event messages in dol_events session object.
print_barre_liste($titre, $page, $file, $options='', $sortfield='', $sortorder='', $morehtmlcenter='', $num=-1, $totalnboflines='', $picto='generic', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limit=-1, $hideselectlimit=0, $hidenavigation=0, $pagenavastextinput=0, $morehtmlrightbeforearrow='')
Print a title with navigation controls for pagination.
dol_trunc($string, $size=40, $trunc='right', $stringencoding='UTF-8', $nodot=0, $display=0)
Truncate a string to a particular length adding '…' if string larger than length.
GETPOSTISSET($paramname)
Return true if we are in a context of submitting the parameter $paramname from a POST of a form.
isModEnabled($module)
Is Dolibarr module enabled.
img_edit($titlealt='default', $float=0, $other='')
Show logo editer/modifier fiche.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $noescapetags='', $escapeonlyhtmltags=0, $cleanalsojavascript=0)
Returns text escaped for inclusion in HTML alt or title or value tags, or into values of HTML input f...
if(!defined( 'CSRFCHECK_WITH_TOKEN'))
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.