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