dolibarr 20.0.0
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', '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");
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', 'bind', 'write')) {
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 (!(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
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, '', 0, 0, '', '', '', 'mod-accountancy accountancy-supplier page-lines');
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((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 tdoverflowmax125">';
507 print $facturefournisseur_static->getNomUrl(1);
508 if ($objp->ref_supplier) {
509 print '<br><span class="opacitymedium small">'.dol_escape_htmltag($objp->ref_supplier).'</span>';
510 }
511 print '</td>';
512
513 // Ref supplier invoice
514 /*
515 print '<td class="tdoverflowmax100" title="'.dol_escape_htmltag($objp->ref_supplier).'">';
516 print $objp->ref_supplier;
517 print '</td>';
518 */
519
520 // Supplier invoice label
521 print '<td class="tdoverflowmax125 small" title="'.dol_escape_htmltag($objp->invoice_label).'">';
522 print dol_escape_htmltag($objp->invoice_label);
523 print '</td>';
524
525 // Date invoice
526 print '<td class="center">'.dol_print_date($db->jdate($objp->datef), 'day').'</td>';
527
528 // Ref Product
529 print '<td class="tdoverflowmax100">';
530 if ($productstatic->id > 0) {
531 print $productstatic->getNomUrl(1);
532 }
533 if ($productstatic->id > 0 && $objp->product_label) {
534 print '<br>';
535 }
536 if ($objp->product_label) {
537 print '<span class="opacitymedium">'.$objp->product_label.'</span>';
538 }
539 print '</td>';
540
541 $text = dolGetFirstLineOfText(dol_string_nohtmltag($objp->description, 1));
542 print '<td class="tdoverflowmax200 small" title="'.dol_escape_htmltag($text).'">';
543 $trunclength = getDolGlobalInt('ACCOUNTING_LENGTH_DESCRIPTION', 32);
544 print $form->textwithtooltip(dol_trunc($text, $trunclength), $objp->description);
545 print '</td>';
546
547 print '<td class="right nowraponall amount">'.price($objp->total_ht).'</td>';
548
549 print '<td class="right">'.vatrate($objp->tva_tx.($objp->vat_src_code ? ' ('.$objp->vat_src_code.')' : '')).'</td>';
550
551 // Thirdparty
552 print '<td class="tdoverflowmax100">'.$thirdpartystatic->getNomUrl(1, 'supplier').'</td>';
553
554 // Country
555 print '<td class="tdoverflowmax100">';
556 if ($objp->country_code) {
557 print $langs->trans("Country".$objp->country_code).' ('.$objp->country_code.')';
558 }
559 print '</td>';
560
561 print '<td class="tdoverflowmax80" title="'.dol_escape_htmltag($objp->tva_intra).'">'.dol_escape_htmltag($objp->tva_intra).'</td>';
562
563 print '<td class="tdoverflowmax200" title="'.dol_escape_htmltag($accountingaccountstatic->label).'">';
564 print '<a class="editfielda" href="./card.php?id='.$objp->rowid.'&backtopage='.urlencode($_SERVER["PHP_SELF"].($param ? '?'.$param : '')).'">';
565 print img_edit();
566 print '</a> ';
567 print $accountingaccountstatic->getNomUrl(0, 1, 1, '', 1);
568 print '</td>';
569
570 print '<td class="center"><input type="checkbox" class="checkforaction" name="changeaccount[]" value="'.$objp->rowid.'"/></td>';
571
572 print '</tr>';
573 $i++;
574 }
575 if ($num_lines == 0) {
576 print '<tr><td colspan="13"><span class="opacitymedium">'.$langs->trans("NoRecordFound").'</span></td></tr>';
577 }
578
579 print '</table>';
580 print "</div>";
581
582 if ($nbtotalofrecords > $limit) {
583 print_barre_liste('', $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num_lines, $nbtotalofrecords, '', 0, '', '', $limit, 1);
584 }
585
586 print '</form>';
587} else {
588 print $db->lasterror();
589}
590
591// End of page
592llxFooter();
593$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.
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...
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.
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
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...
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.