dolibarr  20.0.0-beta
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-2024 Alexandre Spangaro <aspangaro@easya.solutions>
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', 'alpha'); // Can be '> 100'
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 = GETPOSTINT('search_date_startday');
59 $search_date_startmonth = GETPOSTINT('search_date_startmonth');
60 $search_date_startyear = GETPOSTINT('search_date_startyear');
61 $search_date_endday = GETPOSTINT('search_date_endday');
62 $search_date_endmonth = GETPOSTINT('search_date_endmonth');
63 $search_date_endyear = GETPOSTINT('search_date_endyear');
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', 'aZ09');
67 $search_tvaintra = GETPOST('search_tvaintra', 'alpha');
68 
69 // Load variable for pagination
70 $limit = GETPOSTINT('limit') ? GETPOSTINT('limit') : getDolGlobalString('ACCOUNTING_LIMIT_LIST_VENTILATION', $conf->liste_limit);
71 $sortfield = GETPOST('sortfield', 'aZ09comma');
72 $sortorder = GETPOST('sortorder', 'aZ09comma');
73 $page = GETPOSTISSET('pageplusone') ? (GETPOSTINT('pageplusone') - 1) : GETPOSTINT("page");
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 (getDolGlobalInt('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', 'bind', 'write')) {
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 (!(GETPOSTINT('account_parent') >= 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=".(GETPOSTINT('account_parent') > 0 ? GETPOSTINT('account_parent') : '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 $help_url = 'EN:Module_Double_Entry_Accounting|FR:Module_Comptabilit&eacute;_en_Partie_Double#Liaisons_comptables';
184 
185 llxHeader('', $langs->trans("SuppliersVentilation").' - '.$langs->trans("Dispatched"), $help_url);
186 
187 print '<script type="text/javascript">
188  $(function () {
189  $(\'#select-all\').click(function(event) {
190  // Iterate each checkbox
191  $(\':checkbox\').each(function() {
192  this.checked = true;
193  });
194  });
195  $(\'#unselect-all\').click(function(event) {
196  // Iterate each checkbox
197  $(\':checkbox\').each(function() {
198  this.checked = false;
199  });
200  });
201  });
202  </script>';
203 
204 /*
205  * Supplier Invoice lines
206  */
207 $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,";
208 $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,";
209 $sql .= " aa.rowid as fk_compte, aa.label as label_account, aa.labelshort as labelshort_account, aa.account_number,";
210 $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,";
211 if (getDolGlobalString('MAIN_PRODUCT_PERENTITY_SHARED')) {
212  $sql .= " ppe.accountancy_code_buy, ppe.accountancy_code_buy_intra, ppe.accountancy_code_buy_export,";
213 } else {
214  $sql .= " p.accountancy_code_buy, p.accountancy_code_buy_intra, p.accountancy_code_buy_export,";
215 }
216 $sql .= " co.code as country_code, co.label as country,";
217 $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";
218 if (getDolGlobalString('MAIN_COMPANY_PERENTITY_SHARED')) {
219  $sql .= ", spe.accountancy_code_customer as code_compta_client";
220  $sql .= ", spe.accountancy_code_supplier as code_compta_fournisseur";
221 } else {
222  $sql .= ", s.code_compta as code_compta_client";
223  $sql .= ", s.code_compta_fournisseur";
224 }
225 $parameters = array();
226 $reshook = $hookmanager->executeHooks('printFieldListSelect', $parameters); // Note that $action and $object may have been modified by hook
227 $sql .= $hookmanager->resPrint;
228 $sql .= " FROM ".MAIN_DB_PREFIX."facture_fourn_det as l";
229 $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product as p ON p.rowid = l.fk_product";
230 if (getDolGlobalString('MAIN_PRODUCT_PERENTITY_SHARED')) {
231  $sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "product_perentity as ppe ON ppe.fk_product = p.rowid AND ppe.entity = " . ((int) $conf->entity);
232 }
233 $sql .= " INNER JOIN ".MAIN_DB_PREFIX."accounting_account as aa ON aa.rowid = l.fk_code_ventilation";
234 $sql .= " INNER JOIN ".MAIN_DB_PREFIX."facture_fourn as f ON f.rowid = l.fk_facture_fourn";
235 $sql .= " INNER JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid = f.fk_soc";
236 if (getDolGlobalString('MAIN_COMPANY_PERENTITY_SHARED')) {
237  $sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "societe_perentity as spe ON spe.fk_soc = s.rowid AND spe.entity = " . ((int) $conf->entity);
238 }
239 $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_country as co ON co.rowid = s.fk_pays ";
240 $sql .= " WHERE f.rowid = l.fk_facture_fourn and f.fk_statut >= 1 AND l.fk_code_ventilation <> 0 ";
241 // Add search filter like
242 if ($search_societe) {
243  $sql .= natural_search('s.nom', $search_societe);
244 }
245 if ($search_lineid) {
246  $sql .= natural_search("l.rowid", $search_lineid, 1);
247 }
248 if (strlen(trim($search_invoice))) {
249  $sql .= natural_search(array("f.ref", "f.ref_supplier"), $search_invoice);
250 }
251 /*if (strlen(trim($search_ref_supplier))) {
252  $sql .= natural_search("f.ref_supplier", $search_ref_supplier);
253 }*/
254 if (strlen(trim($search_label))) {
255  $sql .= natural_search("f.libelle", $search_label);
256 }
257 if (strlen(trim($search_ref))) {
258  $sql .= natural_search("p.ref", $search_ref);
259 }
260 if (strlen(trim($search_desc))) {
261  $sql .= natural_search("l.description", $search_desc);
262 }
263 if (strlen(trim($search_amount))) {
264  $sql .= natural_search("l.total_ht", $search_amount, 1);
265 }
266 if (strlen(trim($search_account))) {
267  $sql .= natural_search("aa.account_number", $search_account);
268 }
269 if (strlen(trim($search_vat))) {
270  $sql .= natural_search("l.tva_tx", price2num($search_vat), 1);
271 }
272 if ($search_date_start) {
273  $sql .= " AND f.datef >= '".$db->idate($search_date_start)."'";
274 }
275 if ($search_date_end) {
276  $sql .= " AND f.datef <= '".$db->idate($search_date_end)."'";
277 }
278 if (strlen(trim($search_country))) {
279  $arrayofcode = getCountriesInEEC();
280  $country_code_in_EEC = $country_code_in_EEC_without_me = '';
281  foreach ($arrayofcode as $key => $value) {
282  $country_code_in_EEC .= ($country_code_in_EEC ? "," : "")."'".$value."'";
283  if ($value != $mysoc->country_code) {
284  $country_code_in_EEC_without_me .= ($country_code_in_EEC_without_me ? "," : "")."'".$value."'";
285  }
286  }
287  if ($search_country == 'special_allnotme') {
288  $sql .= " AND co.code <> '".$db->escape($mysoc->country_code)."'";
289  } elseif ($search_country == 'special_eec') {
290  $sql .= " AND co.code IN (".$db->sanitize($country_code_in_EEC, 1).")";
291  } elseif ($search_country == 'special_eecnotme') {
292  $sql .= " AND co.code IN (".$db->sanitize($country_code_in_EEC_without_me, 1).")";
293  } elseif ($search_country == 'special_noteec') {
294  $sql .= " AND co.code NOT IN (".$db->sanitize($country_code_in_EEC, 1).")";
295  } else {
296  $sql .= natural_search("co.code", $search_country);
297  }
298 }
299 if (strlen(trim($search_tvaintra))) {
300  $sql .= natural_search("s.tva_intra", $search_tvaintra);
301 }
302 $sql .= " AND f.entity IN (".getEntity('facture_fourn', 0).")"; // We don't share object for accountancy
303 
304 // Add where from hooks
305 $parameters = array();
306 $reshook = $hookmanager->executeHooks('printFieldListWhere', $parameters); // Note that $action and $object may have been modified by hook
307 $sql .= $hookmanager->resPrint;
308 
309 $sql .= $db->order($sortfield, $sortorder);
310 
311 // Count total nb of records
312 $nbtotalofrecords = '';
313 if (!getDolGlobalInt('MAIN_DISABLE_FULL_SCANLIST')) {
314  $result = $db->query($sql);
315  $nbtotalofrecords = $db->num_rows($result);
316  if (($page * $limit) > $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0
317  $page = 0;
318  $offset = 0;
319  }
320 }
321 
322 $sql .= $db->plimit($limit + 1, $offset);
323 
324 dol_syslog("accountancy/supplier/lines.php", LOG_DEBUG);
325 $result = $db->query($sql);
326 if ($result) {
327  $num_lines = $db->num_rows($result);
328  $i = 0;
329 
330  $param = '';
331  if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) {
332  $param .= '&contextpage='.urlencode($contextpage);
333  }
334  if ($limit > 0 && $limit != $conf->liste_limit) {
335  $param .= '&limit='.((int) $limit);
336  }
337  if ($search_societe) {
338  $param .= "&search_societe=".urlencode($search_societe);
339  }
340  if ($search_invoice) {
341  $param .= "&search_invoice=".urlencode($search_invoice);
342  }
343  if ($search_ref) {
344  $param .= "&search_ref=".urlencode($search_ref);
345  }
346  /*if ($search_ref_supplier) {
347  $param .= '&search_ref_supplier='.urlencode($search_ref_supplier);
348  }*/
349  if ($search_label) {
350  $param .= "&search_label=".urlencode($search_label);
351  }
352  if ($search_desc) {
353  $param .= "&search_desc=".urlencode($search_desc);
354  }
355  if ($search_account) {
356  $param .= "&search_account=".urlencode($search_account);
357  }
358  if ($search_vat) {
359  $param .= "&search_vat=".urlencode($search_vat);
360  }
361  if ($search_date_startday) {
362  $param .= '&search_date_startday='.urlencode((string) ($search_date_startday));
363  }
364  if ($search_date_startmonth) {
365  $param .= '&search_date_startmonth='.urlencode((string) ($search_date_startmonth));
366  }
367  if ($search_date_startyear) {
368  $param .= '&search_date_startyear='.urlencode((string) ($search_date_startyear));
369  }
370  if ($search_date_endday) {
371  $param .= '&search_date_endday='.urlencode((string) ($search_date_endday));
372  }
373  if ($search_date_endmonth) {
374  $param .= '&search_date_endmonth='.urlencode((string) ($search_date_endmonth));
375  }
376  if ($search_date_endyear) {
377  $param .= '&search_date_endyear='.urlencode((string) ($search_date_endyear));
378  }
379  if ($search_country) {
380  $param .= "&search_country=".urlencode($search_country);
381  }
382  if ($search_tvaintra) {
383  $param .= "&search_tvaintra=".urlencode($search_tvaintra);
384  }
385 
386  print '<form action="'.$_SERVER["PHP_SELF"].'" method="post">'."\n";
387  print '<input type="hidden" name="action" value="ventil">';
388  if ($optioncss != '') {
389  print '<input type="hidden" name="optioncss" value="'.$optioncss.'">';
390  }
391  print '<input type="hidden" name="token" value="'.newToken().'">';
392  print '<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
393  print '<input type="hidden" name="sortfield" value="'.$sortfield.'">';
394  print '<input type="hidden" name="sortorder" value="'.$sortorder.'">';
395  print '<input type="hidden" name="page" value="'.$page.'">';
396 
397  // @phan-suppress-next-line PhanPluginSuspiciousParamOrder
398  print_barre_liste($langs->trans("InvoiceLinesDone"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num_lines, $nbtotalofrecords, 'title_accountancy', 0, '', '', $limit);
399  print '<span class="opacitymedium">'.$langs->trans("DescVentilDoneSupplier").'</span><br>';
400 
401  print '<br><div class="inline-block divButAction paddingbottom">'.$langs->trans("ChangeAccount").' ';
402  print $formaccounting->select_account($account_parent, 'account_parent', 2, array(), 0, 0, 'maxwidth300 maxwidthonsmartphone valignmiddle');
403  print '<input type="submit" class="button small smallpaddingimp valignmiddle" value="'.$langs->trans("ChangeBinding").'"/></div>';
404 
405  $moreforfilter = '';
406 
407  print '<div class="div-table-responsive">';
408  print '<table class="tagtable liste'.($moreforfilter ? " listwithfilterbefore" : "").'">'."\n";
409 
410  // We add search filter
411  print '<tr class="liste_titre_filter">';
412  print '<td class="liste_titre"><input type="text" class="flat maxwidth40" name="search_lineid" value="'.dol_escape_htmltag($search_lineid).'"></td>';
413  print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_invoice" value="'.dol_escape_htmltag($search_invoice).'"></td>';
414  //print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_ref_supplier" value="'.dol_escape_htmltag($search_ref_supplier).'"></td>';
415  print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_label" value="'.dol_escape_htmltag($search_label).'"></td>';
416  print '<td class="liste_titre center">';
417  print '<div class="nowrapfordate">';
418  print $form->selectDate($search_date_start ? $search_date_start : -1, 'search_date_start', 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans('From'));
419  print '</div>';
420  print '<div class="nowrapfordate">';
421  print $form->selectDate($search_date_end ? $search_date_end : -1, 'search_date_end', 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans('to'));
422  print '</div>';
423  print '</td>';
424  print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_ref" value="'.dol_escape_htmltag($search_ref).'"></td>';
425  print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_desc" value="'.dol_escape_htmltag($search_desc).'"></td>';
426  print '<td class="liste_titre right"><input type="text" class="right flat maxwidth50" name="search_amount" value="'.dol_escape_htmltag($search_amount).'"></td>';
427  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>';
428  print '<td class="liste_titre"><input type="text" class="flat maxwidth75imp" name="search_societe" value="'.dol_escape_htmltag($search_societe).'"></td>';
429  print '<td class="liste_titre">';
430  print $form->select_country($search_country, 'search_country', '', 0, 'maxwidth100', 'code2', 1, 0, 1);
431  // print '<input type="text" class="flat maxwidth50" name="search_country" value="' . dol_escape_htmltag($search_country) . '">';
432  print '</td>';
433  print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_tvaintra" value="'.dol_escape_htmltag($search_tvaintra).'"></td>';
434  print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_account" value="'.dol_escape_htmltag($search_account).'"></td>';
435  print '<td class="liste_titre center">';
436  $searchpicto = $form->showFilterButtons();
437  print $searchpicto;
438  print "</td></tr>\n";
439 
440  print '<tr class="liste_titre">';
441  print_liste_field_titre("LineId", $_SERVER["PHP_SELF"], "l.rowid", "", $param, '', $sortfield, $sortorder);
442  print_liste_field_titre("Invoice", $_SERVER["PHP_SELF"], "f.ref", "", $param, '', $sortfield, $sortorder);
443  //print_liste_field_titre("RefSupplier", $_SERVER["PHP_SELF"], "f.ref_supplier", "", $param, '', $sortfield, $sortorder);
444  print_liste_field_titre("InvoiceLabel", $_SERVER["PHP_SELF"], "f.libelle", "", $param, '', $sortfield, $sortorder);
445  print_liste_field_titre("Date", $_SERVER["PHP_SELF"], "f.datef, f.ref, l.rowid", "", $param, '', $sortfield, $sortorder, 'center ');
446  print_liste_field_titre("ProductRef", $_SERVER["PHP_SELF"], "p.ref", "", $param, '', $sortfield, $sortorder);
447  //print_liste_field_titre("ProductLabel", $_SERVER["PHP_SELF"], "p.label", "", $param, '', $sortfield, $sortorder);
448  print_liste_field_titre("ProductDescription", $_SERVER["PHP_SELF"], "l.description", "", $param, '', $sortfield, $sortorder);
449  print_liste_field_titre("Amount", $_SERVER["PHP_SELF"], "l.total_ht", "", $param, '', $sortfield, $sortorder, 'right ');
450  print_liste_field_titre("VATRate", $_SERVER["PHP_SELF"], "l.tva_tx", "", $param, '', $sortfield, $sortorder, 'right ');
451  print_liste_field_titre("ThirdParty", $_SERVER["PHP_SELF"], "s.nom", "", $param, '', $sortfield, $sortorder);
452  print_liste_field_titre("Country", $_SERVER["PHP_SELF"], "co.label", "", $param, '', $sortfield, $sortorder);
453  print_liste_field_titre("VATIntraShort", $_SERVER["PHP_SELF"], "s.tva_intra", "", $param, '', $sortfield, $sortorder);
454  print_liste_field_titre("AccountAccounting", $_SERVER["PHP_SELF"], "aa.account_number", "", $param, '', $sortfield, $sortorder);
455  $checkpicto = $form->showCheckAddButtons();
456  print_liste_field_titre($checkpicto, '', '', '', '', '', '', '', 'center ');
457  print "</tr>\n";
458 
459  $thirdpartystatic = new Societe($db);
460  $facturefournisseur_static = new FactureFournisseur($db);
461  $productstatic = new ProductFournisseur($db);
462  $accountingaccountstatic = new AccountingAccount($db);
463 
464  $i = 0;
465  while ($i < min($num_lines, $limit)) {
466  $objp = $db->fetch_object($result);
467 
468  $facturefournisseur_static->ref = $objp->ref;
469  $facturefournisseur_static->id = $objp->facid;
470  $facturefournisseur_static->type = $objp->ftype;
471  $facturefournisseur_static->ref_supplier = $objp->ref_supplier;
472  $facturefournisseur_static->label = $objp->invoice_label;
473 
474  $thirdpartystatic->id = $objp->socid;
475  $thirdpartystatic->name = $objp->name;
476  $thirdpartystatic->client = $objp->client;
477  $thirdpartystatic->fournisseur = $objp->fournisseur;
478  $thirdpartystatic->code_client = $objp->code_client;
479  $thirdpartystatic->code_compta_client = $objp->code_compta_client;
480  $thirdpartystatic->code_fournisseur = $objp->code_fournisseur;
481  $thirdpartystatic->code_compta_fournisseur = $objp->code_compta_fournisseur;
482  $thirdpartystatic->email = $objp->email;
483  $thirdpartystatic->country_code = $objp->country_code;
484 
485  $productstatic->ref = $objp->product_ref;
486  $productstatic->id = $objp->product_id;
487  $productstatic->label = $objp->product_label;
488  $productstatic->type = $objp->line_type;
489  $productstatic->status = $objp->tosell;
490  $productstatic->status_buy = $objp->tobuy;
491  $productstatic->accountancy_code_buy = $objp->accountancy_code_buy;
492  $productstatic->accountancy_code_buy_intra = $objp->accountancy_code_buy_intra;
493  $productstatic->accountancy_code_buy_export = $objp->accountancy_code_buy_export;
494 
495  $accountingaccountstatic->rowid = $objp->fk_compte;
496  $accountingaccountstatic->label = $objp->label_account;
497  $accountingaccountstatic->labelshort = $objp->labelshort_account;
498  $accountingaccountstatic->account_number = $objp->account_number;
499 
500  print '<tr class="oddeven">';
501 
502  // Line id
503  print '<td>'.$objp->rowid.'</td>';
504 
505  // Ref Invoice
506  print '<td class="nowraponall">'.$facturefournisseur_static->getNomUrl(1);
507  if ($objp->ref_supplier) {
508  print '<br><span class="opacitymedium small">'.dol_escape_htmltag($objp->ref_supplier).'</span>';
509  }
510  print '</td>';
511 
512  // Ref supplier invoice
513  /*
514  print '<td class="tdoverflowmax100" title="'.dol_escape_htmltag($objp->ref_supplier).'">';
515  print $objp->ref_supplier;
516  print '</td>';
517  */
518 
519  // Supplier invoice label
520  print '<td class="tdoverflowmax200 small" title="'.dol_escape_htmltag($objp->invoice_label).'">';
521  print dol_escape_htmltag($objp->invoice_label);
522  print '</td>';
523 
524  // Date invoice
525  print '<td class="center">'.dol_print_date($db->jdate($objp->datef), 'day').'</td>';
526 
527  // Ref Product
528  print '<td class="tdoverflowmax100">';
529  if ($productstatic->id > 0) {
530  print $productstatic->getNomUrl(1);
531  }
532  if ($productstatic->id > 0 && $objp->product_label) {
533  print '<br>';
534  }
535  if ($objp->product_label) {
536  print '<span class="opacitymedium">'.$objp->product_label.'</span>';
537  }
538  print '</td>';
539 
540  $text = dolGetFirstLineOfText(dol_string_nohtmltag($objp->description, 1));
541  print '<td class="tdoverflowmax200 small" title="'.dol_escape_htmltag($text).'">';
542  $trunclength = getDolGlobalInt('ACCOUNTING_LENGTH_DESCRIPTION', 32);
543  print $form->textwithtooltip(dol_trunc($text, $trunclength), $objp->description);
544  print '</td>';
545 
546  print '<td class="right nowraponall amount">'.price($objp->total_ht).'</td>';
547 
548  print '<td class="right">'.vatrate($objp->tva_tx.($objp->vat_src_code ? ' ('.$objp->vat_src_code.')' : '')).'</td>';
549 
550  // Thirdparty
551  print '<td class="tdoverflowmax100">'.$thirdpartystatic->getNomUrl(1, 'supplier').'</td>';
552 
553  // Country
554  print '<td>';
555  if ($objp->country_code) {
556  print $langs->trans("Country".$objp->country_code).' ('.$objp->country_code.')';
557  }
558  print '</td>';
559 
560  print '<td class="tdoverflowmax80" title="'.dol_escape_htmltag($objp->tva_intra).'">'.dol_escape_htmltag($objp->tva_intra).'</td>';
561 
562  print '<td class="tdoverflowmax200" title="'.dol_escape_htmltag($accountingaccountstatic->label).'">';
563  print '<a class="editfielda" href="./card.php?id='.$objp->rowid.'&backtopage='.urlencode($_SERVER["PHP_SELF"].($param ? '?'.$param : '')).'">';
564  print img_edit();
565  print '</a> ';
566  print $accountingaccountstatic->getNomUrl(0, 1, 1, '', 1);
567  print '</td>';
568 
569  print '<td class="center"><input type="checkbox" class="checkforaction" name="changeaccount[]" value="'.$objp->rowid.'"/></td>';
570 
571  print '</tr>';
572  $i++;
573  }
574  if ($num_lines == 0) {
575  print '<tr><td colspan="13"><span class="opacitymedium">'.$langs->trans("NoRecordFound").'</span></td></tr>';
576  }
577 
578  print '</table>';
579  print "</div>";
580 
581  if ($nbtotalofrecords > $limit) {
582  print_barre_liste('', $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num_lines, $nbtotalofrecords, '', 0, '', '', $limit, 1);
583  }
584 
585  print '</form>';
586 } else {
587  print $db->lasterror();
588 }
589 
590 // End of page
591 llxFooter();
592 $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:656
if(!defined('NOREQUIRESOC')) if(!defined('NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined('NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined('NOREQUIREAJAX')) llxHeader()
Empty header.
Definition: wrapper.php:55
llxFooter()
Empty footer.
Definition: wrapper.php:69
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.
Class 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('invoice') && $user->hasRight('facture', 'lire')) if((isModEnabled('fournisseur') &&!getDolGlobalString('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') && $user->hasRight('tax', 'charges', 'lire')) if(isModEnabled('invoice') &&isModEnabled('order') && $user->hasRight("commande", "lire") &&!getDolGlobalString('WORKFLOW_DISABLE_CREATE_INVOICE_FROM_ORDER')) $sql
Social contributions to pay.
Definition: index.php:745
dol_mktime($hour, $minute, $second, $month, $day, $year, $gm='auto', $check=1)
Return a timestamp date built from detailed information (by default a local PHP server timestamp) Rep...
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
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 a 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.
print_barre_liste($title, $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.
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.
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.
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
isModEnabled($module)
Is Dolibarr module enabled.
img_edit($titlealt='default', $float=0, $other='')
Show logo edit/modify 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.