dolibarr 19.0.3
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
27require '../../main.inc.php';
28
29require_once DOL_DOCUMENT_ROOT.'/core/class/html.formaccounting.class.php';
30require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
31require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
32require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php';
33require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.product.class.php';
34require_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountingaccount.class.php';
35require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
36require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php';
37require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
38require_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') : getDolGlobalString('ACCOUNTING_LIMIT_LIST_VENTILATION', $conf->liste_limit);
71$sortfield = GETPOST('sortfield', 'aZ09comma');
72$sortorder = GETPOST('sortorder', 'aZ09comma');
73$page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int');
74if (empty($page) || $page < 0) {
75 $page = 0;
76}
77$offset = $limit * $page;
78$pageprev = $page - 1;
79$pagenext = $page + 1;
80if (!$sortfield) {
81 $sortfield = "f.datef, f.ref, l.rowid";
82}
83if (!$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
94if (!isModEnabled('accounting')) {
96}
97if ($user->socid > 0) {
99}
100if (!$user->hasRight('accounting', 'mouvements', 'lire')) {
102}
103
104
105$formaccounting = new FormAccounting($db);
106
107
108/*
109 * Actions
110 */
111
112// Purge search criteria
113if (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
136if (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
169if (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
185llxHeader('', $langs->trans("SuppliersVentilation").' - '.$langs->trans("Dispatched"), $help_url);
186
187print '<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,";
211if (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";
218if (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";
230if (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";
236if (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
242if ($search_societe) {
243 $sql .= natural_search('s.nom', $search_societe);
244}
245if ($search_lineid) {
246 $sql .= natural_search("l.rowid", $search_lineid, 1);
247}
248if (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}*/
254if (strlen(trim($search_label))) {
255 $sql .= natural_search("f.libelle", $search_label);
256}
257if (strlen(trim($search_ref))) {
258 $sql .= natural_search("p.ref", $search_ref);
259}
260if (strlen(trim($search_desc))) {
261 $sql .= natural_search("l.description", $search_desc);
262}
263if (strlen(trim($search_amount))) {
264 $sql .= natural_search("l.total_ht", $search_amount, 1);
265}
266if (strlen(trim($search_account))) {
267 $sql .= natural_search("aa.account_number", $search_account);
268}
269if (strlen(trim($search_vat))) {
270 $sql .= natural_search("l.tva_tx", price2num($search_vat), 1);
271}
272if ($search_date_start) {
273 $sql .= " AND f.datef >= '".$db->idate($search_date_start)."'";
274}
275if ($search_date_end) {
276 $sql .= " AND f.datef <= '".$db->idate($search_date_end)."'";
277}
278if (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}
299if (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 = '';
313if (!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
324dol_syslog("accountancy/supplier/lines.php", LOG_DEBUG);
325$result = $db->query($sql);
326if ($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($search_date_startday);
363 }
364 if ($search_date_startmonth) {
365 $param .= '&search_date_startmonth='.urlencode($search_date_startmonth);
366 }
367 if ($search_date_startyear) {
368 $param .= '&search_date_startyear='.urlencode($search_date_startyear);
369 }
370 if ($search_date_endday) {
371 $param .= '&search_date_endday='.urlencode($search_date_endday);
372 }
373 if ($search_date_endmonth) {
374 $param .= '&search_date_endmonth='.urlencode($search_date_endmonth);
375 }
376 if ($search_date_endyear) {
377 $param .= '&search_date_endyear='.urlencode($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 print_barre_liste($langs->trans("InvoiceLinesDone"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num_lines, $nbtotalofrecords, 'title_accountancy', 0, '', '', $limit);
398 print '<span class="opacitymedium">'.$langs->trans("DescVentilDoneSupplier").'</span><br>';
399
400 print '<br><div class="inline-block divButAction paddingbottom">'.$langs->trans("ChangeAccount").' ';
401 print $formaccounting->select_account($account_parent, 'account_parent', 2, array(), 0, 0, 'maxwidth300 maxwidthonsmartphone valignmiddle');
402 print '<input type="submit" class="button small valignmiddle" value="'.$langs->trans("ChangeBinding").'"/></div>';
403
404 $moreforfilter = '';
405
406 print '<div class="div-table-responsive">';
407 print '<table class="tagtable liste'.($moreforfilter ? " listwithfilterbefore" : "").'">'."\n";
408
409 // We add search filter
410 print '<tr class="liste_titre_filter">';
411 print '<td class="liste_titre"><input type="text" class="flat maxwidth25" name="search_lineid" value="'.dol_escape_htmltag($search_lineid).'"></td>';
412 print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_invoice" value="'.dol_escape_htmltag($search_invoice).'"></td>';
413 //print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_ref_supplier" value="'.dol_escape_htmltag($search_ref_supplier).'"></td>';
414 print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_label" value="'.dol_escape_htmltag($search_label).'"></td>';
415 print '<td class="liste_titre center">';
416 print '<div class="nowrapfordate">';
417 print $form->selectDate($search_date_start ? $search_date_start : -1, 'search_date_start', 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans('From'));
418 print '</div>';
419 print '<div class="nowrapfordate">';
420 print $form->selectDate($search_date_end ? $search_date_end : -1, 'search_date_end', 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans('to'));
421 print '</div>';
422 print '</td>';
423 print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_ref" value="'.dol_escape_htmltag($search_ref).'"></td>';
424 print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_desc" value="'.dol_escape_htmltag($search_desc).'"></td>';
425 print '<td class="liste_titre right"><input type="text" class="right flat maxwidth50" name="search_amount" value="'.dol_escape_htmltag($search_amount).'"></td>';
426 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>';
427 print '<td class="liste_titre"><input type="text" class="flat maxwidth75imp" name="search_societe" value="'.dol_escape_htmltag($search_societe).'"></td>';
428 print '<td class="liste_titre">';
429 print $form->select_country($search_country, 'search_country', '', 0, 'maxwidth100', 'code2', 1, 0, 1);
430 // print '<input type="text" class="flat maxwidth50" name="search_country" value="' . dol_escape_htmltag($search_country) . '">';
431 print '</td>';
432 print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_tvaintra" value="'.dol_escape_htmltag($search_tvaintra).'"></td>';
433 print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_account" value="'.dol_escape_htmltag($search_account).'"></td>';
434 print '<td class="liste_titre center">';
435 $searchpicto = $form->showFilterButtons();
436 print $searchpicto;
437 print "</td></tr>\n";
438
439 print '<tr class="liste_titre">';
440 print_liste_field_titre("LineId", $_SERVER["PHP_SELF"], "l.rowid", "", $param, '', $sortfield, $sortorder);
441 print_liste_field_titre("Invoice", $_SERVER["PHP_SELF"], "f.ref", "", $param, '', $sortfield, $sortorder);
442 //print_liste_field_titre("RefSupplier", $_SERVER["PHP_SELF"], "f.ref_supplier", "", $param, '', $sortfield, $sortorder);
443 print_liste_field_titre("InvoiceLabel", $_SERVER["PHP_SELF"], "f.libelle", "", $param, '', $sortfield, $sortorder);
444 print_liste_field_titre("Date", $_SERVER["PHP_SELF"], "f.datef, f.ref, l.rowid", "", $param, '', $sortfield, $sortorder, 'center ');
445 print_liste_field_titre("ProductRef", $_SERVER["PHP_SELF"], "p.ref", "", $param, '', $sortfield, $sortorder);
446 //print_liste_field_titre("ProductLabel", $_SERVER["PHP_SELF"], "p.label", "", $param, '', $sortfield, $sortorder);
447 print_liste_field_titre("ProductDescription", $_SERVER["PHP_SELF"], "l.description", "", $param, '', $sortfield, $sortorder);
448 print_liste_field_titre("Amount", $_SERVER["PHP_SELF"], "l.total_ht", "", $param, '', $sortfield, $sortorder, 'right ');
449 print_liste_field_titre("VATRate", $_SERVER["PHP_SELF"], "l.tva_tx", "", $param, '', $sortfield, $sortorder, 'right ');
450 print_liste_field_titre("ThirdParty", $_SERVER["PHP_SELF"], "s.nom", "", $param, '', $sortfield, $sortorder);
451 print_liste_field_titre("Country", $_SERVER["PHP_SELF"], "co.label", "", $param, '', $sortfield, $sortorder);
452 print_liste_field_titre("VATIntraShort", $_SERVER["PHP_SELF"], "s.tva_intra", "", $param, '', $sortfield, $sortorder);
453 print_liste_field_titre("AccountAccounting", $_SERVER["PHP_SELF"], "aa.account_number", "", $param, '', $sortfield, $sortorder);
454 $checkpicto = $form->showCheckAddButtons();
455 print_liste_field_titre($checkpicto, '', '', '', '', '', '', '', 'center ');
456 print "</tr>\n";
457
458 $thirdpartystatic = new Societe($db);
459 $facturefournisseur_static = new FactureFournisseur($db);
460 $productstatic = new ProductFournisseur($db);
461 $accountingaccountstatic = new AccountingAccount($db);
462
463 $i = 0;
464 while ($i < min($num_lines, $limit)) {
465 $objp = $db->fetch_object($result);
466
467 $facturefournisseur_static->ref = $objp->ref;
468 $facturefournisseur_static->id = $objp->facid;
469 $facturefournisseur_static->type = $objp->ftype;
470 $facturefournisseur_static->ref_supplier = $objp->ref_supplier;
471 $facturefournisseur_static->label = $objp->invoice_label;
472
473 $thirdpartystatic->id = $objp->socid;
474 $thirdpartystatic->name = $objp->name;
475 $thirdpartystatic->client = $objp->client;
476 $thirdpartystatic->fournisseur = $objp->fournisseur;
477 $thirdpartystatic->code_client = $objp->code_client;
478 $thirdpartystatic->code_compta_client = $objp->code_compta_client;
479 $thirdpartystatic->code_fournisseur = $objp->code_fournisseur;
480 $thirdpartystatic->code_compta_fournisseur = $objp->code_compta_fournisseur;
481 $thirdpartystatic->email = $objp->email;
482 $thirdpartystatic->country_code = $objp->country_code;
483
484 $productstatic->ref = $objp->product_ref;
485 $productstatic->id = $objp->product_id;
486 $productstatic->label = $objp->product_label;
487 $productstatic->type = $objp->line_type;
488 $productstatic->status = $objp->tosell;
489 $productstatic->status_buy = $objp->tobuy;
490 $productstatic->accountancy_code_buy = $objp->accountancy_code_buy;
491 $productstatic->accountancy_code_buy_intra = $objp->accountancy_code_buy_intra;
492 $productstatic->accountancy_code_buy_export = $objp->accountancy_code_buy_export;
493
494 $accountingaccountstatic->rowid = $objp->fk_compte;
495 $accountingaccountstatic->label = $objp->label_account;
496 $accountingaccountstatic->labelshort = $objp->labelshort_account;
497 $accountingaccountstatic->account_number = $objp->account_number;
498
499 print '<tr class="oddeven">';
500
501 // Line id
502 print '<td>'.$objp->rowid.'</td>';
503
504 // Ref Invoice
505 print '<td class="nowraponall">'.$facturefournisseur_static->getNomUrl(1);
506 if ($objp->ref_supplier) {
507 print '<br><span class="opacitymedium small">'.dol_escape_htmltag($objp->ref_supplier).'</span>';
508 }
509 print '</td>';
510
511 // Ref supplier invoice
512 /*
513 print '<td class="tdoverflowmax100" title="'.dol_escape_htmltag($objp->ref_supplier).'">';
514 print $objp->ref_supplier;
515 print '</td>';
516 */
517
518 // Supplier invoice label
519 print '<td class="tdoverflowonsmartphone small" title="'.dol_escape_htmltag($objp->invoice_label).'">';
520 print $objp->invoice_label;
521 print '</td>';
522
523 // Date invoice
524 print '<td class="center">'.dol_print_date($db->jdate($objp->datef), 'day').'</td>';
525
526 // Ref Product
527 print '<td class="tdoverflowmax100">';
528 if ($productstatic->id > 0) {
529 print $productstatic->getNomUrl(1);
530 }
531 if ($productstatic->id > 0 && $objp->product_label) {
532 print '<br>';
533 }
534 if ($objp->product_label) {
535 print '<span class="opacitymedium">'.$objp->product_label.'</span>';
536 }
537 print '</td>';
538
539 print '<td class="tdoverflowonsmartphone small">';
540 $text = dolGetFirstLineOfText(dol_string_nohtmltag($objp->description, 1));
541 $trunclength = getDolGlobalInt('ACCOUNTING_LENGTH_DESCRIPTION', 32);
542 print $form->textwithtooltip(dol_trunc($text, $trunclength), $objp->description);
543 print '</td>';
544
545 print '<td class="right nowraponall amount">'.price($objp->total_ht).'</td>';
546
547 print '<td class="right">'.vatrate($objp->tva_tx.($objp->vat_src_code ? ' ('.$objp->vat_src_code.')' : '')).'</td>';
548
549 // Thirdparty
550 print '<td class="tdoverflowmax100">'.$thirdpartystatic->getNomUrl(1, 'supplier').'</td>';
551
552 // Country
553 print '<td>';
554 if ($objp->country_code) {
555 print $langs->trans("Country".$objp->country_code).' ('.$objp->country_code.')';
556 }
557 print '</td>';
558
559 print '<td class="tdoverflowmax80" title="'.dol_escape_htmltag($objp->tva_intra).'">'.dol_escape_htmltag($objp->tva_intra).'</td>';
560
561 print '<td>';
562 print $accountingaccountstatic->getNomUrl(0, 1, 1, '', 1);
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></td>';
566 print '<td class="center"><input type="checkbox" class="checkforaction" name="changeaccount[]" value="'.$objp->rowid.'"/></td>';
567
568 print '</tr>';
569 $i++;
570 }
571 if ($num_lines == 0) {
572 print '<tr><td colspan="13"><span class="opacitymedium">'.$langs->trans("NoRecordFound").'</span></td></tr>';
573 }
574
575 print '</table>';
576 print "</div>";
577
578 if ($nbtotalofrecords > $limit) {
579 print_barre_liste('', $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num_lines, $nbtotalofrecords, '', 0, '', '', $limit, 1);
580 }
581
582 print '</form>';
583} else {
584 print $db->lasterror();
585}
586
587// End of page
588llxFooter();
589$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).
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.
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...
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 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.
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.
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
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...
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.