29require
'../../main.inc.php';
30require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formaccounting.class.php';
31require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formother.class.php';
32require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formcompany.class.php';
33require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
34require_once DOL_DOCUMENT_ROOT.
'/product/class/product.class.php';
35require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountingaccount.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';
50$langs->loadLangs(array(
"bills",
"compta",
"accountancy",
"productbatch",
"products"));
52$optioncss =
GETPOST(
'optioncss',
'aZ');
54$account_parent =
GETPOST(
'account_parent');
55$changeaccount =
GETPOST(
'changeaccount',
'array');
57$search_societe =
GETPOST(
'search_societe',
'alpha');
58$search_lineid =
GETPOST(
'search_lineid',
'alpha');
59$search_ref =
GETPOST(
'search_ref',
'alpha');
60$search_invoice =
GETPOST(
'search_invoice',
'alpha');
61$search_label =
GETPOST(
'search_label',
'alpha');
62$search_desc =
GETPOST(
'search_desc',
'alpha');
63$search_amount =
GETPOST(
'search_amount',
'alpha');
64$search_account =
GETPOST(
'search_account',
'alpha');
65$search_vat =
GETPOST(
'search_vat',
'alpha');
66$search_date_startday =
GETPOSTINT(
'search_date_startday');
67$search_date_startmonth =
GETPOSTINT(
'search_date_startmonth');
68$search_date_startyear =
GETPOSTINT(
'search_date_startyear');
69$search_date_endday =
GETPOSTINT(
'search_date_endday');
70$search_date_endmonth =
GETPOSTINT(
'search_date_endmonth');
71$search_date_endyear =
GETPOSTINT(
'search_date_endyear');
72$search_date_start =
dol_mktime(0, 0, 0, $search_date_startmonth, $search_date_startday, $search_date_startyear);
73$search_date_end =
dol_mktime(23, 59, 59, $search_date_endmonth, $search_date_endday, $search_date_endyear);
74$search_country =
GETPOST(
'search_country',
'aZ09');
75$search_tvaintra =
GETPOST(
'search_tvaintra',
'alpha');
79$sortfield =
GETPOST(
'sortfield',
'aZ09comma');
80$sortorder =
GETPOST(
'sortorder',
'aZ09comma');
82if (empty($page) || $page < 0) {
85$offset = $limit * $page;
89 $sortfield =
"f.datef, f.ref, fd.rowid";
100if (!isModEnabled(
'accounting')) {
103if ($user->socid > 0) {
106if (!$user->hasRight(
'accounting',
'bind',
'write')) {
111$contextpage =
'accountancycustomerlines';
112$hookmanager->initHooks([$contextpage ]);
117 'fd.rowid' => array(
'label' =>
"LineId",
'position' => 1,
'checked' =>
'1',
'enabled' =>
'1'),
118 'f.ref' => array(
'label' =>
"Invoice",
'position' => 1,
'checked' =>
'1',
'enabled' =>
'1'),
119 'f.datef' => array(
'label' =>
"Date",
'position' => 1,
'checked' =>
'1',
'enabled' =>
'1'),
120 'p.ref' => array(
'label' =>
"ProductRef",
'position' => 1,
'checked' =>
'1',
'enabled' =>
'1'),
121 'fd.description' => array(
'label' =>
"ProductDescription",
'position' => 1,
'checked' =>
'1',
'enabled' =>
'1'),
122 'fd.total_ht' => array(
'label' =>
"Amount",
'position' => 1,
'checked' =>
'1',
'enabled' =>
'1'),
123 'fd.tva_tx' => array(
'label' =>
"VATRate",
'position' => 1,
'checked' =>
'1',
'enabled' =>
'1'),
124 's.nom' => array(
'label' =>
"ThirdParty",
'position' => 1,
'checked' =>
'1',
'enabled' =>
'1'),
125 'co.label' => array(
'label' =>
"Country",
'position' => 1,
'checked' =>
'1',
'enabled' =>
'1'),
126 's.tva_intra' => array(
'label' =>
"VATIntra",
'position' => 1,
'checked' =>
'1',
'enabled' =>
'1'),
127 'aa.account_number' => array(
'label' =>
"AccountAccounting",
'position' => 1,
'checked' =>
'1',
'enabled' =>
'1'),
136$parameters = array(
'arrayfields' => &$arrayfields);
137$reshook = $hookmanager->executeHooks(
'doActions', $parameters,
$object, $action);
142if (empty($reshook)) {
144 include DOL_DOCUMENT_ROOT.
'/core/actions_changeselectedfields.inc.php';
147 if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
148 $search_societe =
'';
151 $search_invoice =
'';
155 $search_account =
'';
157 $search_date_startday =
'';
158 $search_date_startmonth =
'';
159 $search_date_startyear =
'';
160 $search_date_endday =
'';
161 $search_date_endmonth =
'';
162 $search_date_endyear =
'';
163 $search_date_start =
'';
164 $search_date_end =
'';
165 $search_country =
'';
166 $search_tvaintra =
'';
169 if (is_array($changeaccount) && count($changeaccount) > 0 && $user->hasRight(
'accounting',
'bind',
'write')) {
174 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"Account")),
null,
'errors');
180 $sql1 =
"UPDATE ".MAIN_DB_PREFIX.
"facturedet";
181 $sql1 .=
" SET fk_code_ventilation = ".(GETPOSTINT(
'account_parent') > 0 ?
GETPOSTINT(
'account_parent') : 0);
182 $sql1 .=
' WHERE rowid IN ('.$db->sanitize(implode(
',', $changeaccount)).
')';
184 dol_syslog(
'accountancy/customer/lines.php::changeaccount sql= '.$sql1);
185 $resql1 = $db->query($sql1);
198 $account_parent =
'';
203if (
GETPOST(
'sortfield') ==
'f.datef, f.ref, fd.rowid') {
204 $value = (
GETPOST(
'sortorder') ==
'asc,asc,asc' ? 0 : 1);
205 require_once DOL_DOCUMENT_ROOT.
'/core/lib/admin.lib.php';
206 $res =
dolibarr_set_const($db,
"ACCOUNTING_LIST_SORT_VENTILATION_DONE", $value,
'yesno', 0,
'',
$conf->entity);
213$form =
new Form($db);
216$help_url =
'EN:Module_Double_Entry_Accounting|FR:Module_Comptabilité_en_Partie_Double#Liaisons_comptables';
218llxHeader(
'', $langs->trans(
"CustomersVentilation").
' - '.$langs->trans(
"Dispatched"), $help_url,
'', 0, 0,
'',
'',
'',
'mod-accountancy accountancy-customer page-lines');
220print
'<script type="text/javascript">
222 $(\'#select-all\').click(function(event) {
223 // Iterate each checkbox
224 $(\':checkbox\').each(function() {
228 $(\'#unselect-all\').click(function(event) {
229 // Iterate each checkbox
230 $(\':checkbox\').each(function() {
231 this.checked = false;
240$sql =
"SELECT f.rowid as facid, f.ref as ref, f.type as ftype, f.situation_cycle_ref, f.datef, f.ref_client,";
241$sql .=
" fd.rowid, fd.description, fd.product_type as line_type, fd.total_ht, fd.total_tva, fd.tva_tx, fd.vat_src_code, fd.total_ttc, fd.situation_percent,";
242$sql .=
" s.rowid as socid, s.nom as name, s.code_client,";
244 $sql .=
" spe.accountancy_code_customer as code_compta_client,";
245 $sql .=
" spe.accountancy_code_supplier as code_compta_fournisseur,";
247 $sql .=
" s.code_compta as code_compta_client,";
248 $sql .=
" s.code_compta_fournisseur,";
250$sql .=
" p.rowid as product_id, p.fk_product_type as product_type, p.ref as product_ref, p.label as product_label, p.tobuy, p.tosell,";
252 $sql .=
" ppe.accountancy_code_sell, ppe.accountancy_code_sell_intra, ppe.accountancy_code_sell_export,";
254 $sql .=
" p.accountancy_code_sell, p.accountancy_code_sell_intra, p.accountancy_code_sell_export,";
256$sql .=
" aa.rowid as fk_compte, aa.account_number, aa.label as label_account, aa.labelshort as labelshort_account,";
257$sql .=
" fd.situation_percent,";
258$sql .=
" co.code as country_code, co.label as country,";
259$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";
260$parameters = array();
261$reshook = $hookmanager->executeHooks(
'printFieldListSelect', $parameters);
262$sql .= $hookmanager->resPrint;
263$sql .=
" FROM ".MAIN_DB_PREFIX.
"facturedet as fd";
264$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p ON p.rowid = fd.fk_product";
266 $sql .=
" LEFT JOIN " . MAIN_DB_PREFIX .
"product_perentity as ppe ON ppe.fk_product = p.rowid AND ppe.entity = " . ((int)
$conf->entity);
268$sql .=
" INNER JOIN ".MAIN_DB_PREFIX.
"accounting_account as aa ON aa.rowid = fd.fk_code_ventilation";
269$sql .=
" INNER JOIN ".MAIN_DB_PREFIX.
"facture as f ON f.rowid = fd.fk_facture";
270$sql .=
" INNER JOIN ".MAIN_DB_PREFIX.
"societe as s ON s.rowid = f.fk_soc";
272 $sql .=
" LEFT JOIN " . MAIN_DB_PREFIX .
"societe_perentity as spe ON spe.fk_soc = s.rowid AND spe.entity = " . ((int)
$conf->entity);
274$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"c_country as co ON co.rowid = s.fk_pays ";
276$parameters = array();
277$reshook = $hookmanager->executeHooks(
'printFieldListFrom', $parameters,
$object, $action);
278$sql .= $hookmanager->resPrint;
279$sql .=
" WHERE fd.fk_code_ventilation > 0";
280$sql .=
" AND f.entity IN (".getEntity(
'invoice', 0).
")";
281$sql .=
" AND f.fk_statut > 0";
288if ($search_societe) {
294if (strlen(trim($search_invoice))) {
297if (strlen(trim($search_ref))) {
300if (strlen(trim($search_label))) {
303if (strlen(trim($search_desc))) {
306if (strlen(trim($search_amount))) {
309if (strlen(trim($search_account))) {
312if (strlen(trim($search_vat))) {
315if ($search_date_start) {
316 $sql .=
" AND f.datef >= '".$db->idate($search_date_start).
"'";
318if ($search_date_end) {
319 $sql .=
" AND f.datef <= '".$db->idate($search_date_end).
"'";
321if (strlen(trim($search_country))) {
323 $country_code_in_EEC = $country_code_in_EEC_without_me =
'';
324 foreach ($arrayofcode as $key => $value) {
325 $country_code_in_EEC .= ($country_code_in_EEC ?
"," :
"").
"'".$value.
"'";
326 if ($value != $mysoc->country_code) {
327 $country_code_in_EEC_without_me .= ($country_code_in_EEC_without_me ?
"," :
"").
"'".$value.
"'";
330 if ($search_country ==
'special_allnotme') {
331 $sql .=
" AND co.code <> '".$db->escape($mysoc->country_code).
"'";
332 } elseif ($search_country ==
'special_eec') {
333 $sql .=
" AND co.code IN (".$db->sanitize($country_code_in_EEC, 1).
")";
334 } elseif ($search_country ==
'special_eecnotme') {
335 $sql .=
" AND co.code IN (".$db->sanitize($country_code_in_EEC_without_me, 1).
")";
336 } elseif ($search_country ==
'special_noteec') {
337 $sql .=
" AND co.code NOT IN (".$db->sanitize($country_code_in_EEC, 1).
")";
342if (strlen(trim($search_tvaintra))) {
345$sql .=
" AND f.entity IN (".getEntity(
'invoice', 0).
")";
347$parameters = array();
348$reshook = $hookmanager->executeHooks(
'printFieldListWhere', $parameters);
349$sql .= $hookmanager->resPrint;
351$sql .= $db->order($sortfield, $sortorder);
354$nbtotalofrecords =
'';
356 $result = $db->query($sql);
357 $nbtotalofrecords = $db->num_rows($result);
358 if (($page * $limit) > $nbtotalofrecords) {
364$sql .= $db->plimit($limit + 1, $offset);
366dol_syslog(
"/accountancy/customer/lines.php", LOG_DEBUG);
367$result = $db->query($sql);
369 $num_lines = $db->num_rows($result);
373 if ($contextpage != $_SERVER[
"PHP_SELF"]) {
374 $param .=
'&contextpage='.urlencode($contextpage);
376 if ($limit > 0 && $limit !=
$conf->liste_limit) {
377 $param .=
'&limit='.((int) $limit);
379 if ($search_societe) {
380 $param .=
"&search_societe=".urlencode($search_societe);
382 if ($search_invoice) {
383 $param .=
"&search_invoice=".urlencode($search_invoice);
386 $param .=
"&search_ref=".urlencode($search_ref);
389 $param .=
"&search_label=".urlencode($search_label);
392 $param .=
"&search_desc=".urlencode($search_desc);
394 if ($search_account) {
395 $param .=
"&search_account=".urlencode($search_account);
398 $param .=
"&search_vat=".urlencode($search_vat);
400 if ($search_date_startday) {
401 $param .=
'&search_date_startday='.urlencode((
string) ($search_date_startday));
403 if ($search_date_startmonth) {
404 $param .=
'&search_date_startmonth='.urlencode((
string) ($search_date_startmonth));
406 if ($search_date_startyear) {
407 $param .=
'&search_date_startyear='.urlencode((
string) ($search_date_startyear));
409 if ($search_date_endday) {
410 $param .=
'&search_date_endday='.urlencode((
string) ($search_date_endday));
412 if ($search_date_endmonth) {
413 $param .=
'&search_date_endmonth='.urlencode((
string) ($search_date_endmonth));
415 if ($search_date_endyear) {
416 $param .=
'&search_date_endyear='.urlencode((
string) ($search_date_endyear));
418 if ($search_country) {
419 $param .=
"&search_country=".urlencode($search_country);
421 if ($search_tvaintra) {
422 $param .=
"&search_tvaintra=".urlencode($search_tvaintra);
425 $parameters = array(
'param' => &$param);
426 $reshook = $hookmanager->executeHooks(
'printFieldListSearchParam', $parameters,
$object, $action);
427 $param .= $hookmanager->resPrint;
429 print
'<form action="'.$_SERVER[
"PHP_SELF"].
'" method="post">'.
"\n";
430 print
'<input type="hidden" name="action" value="ventil">';
431 if ($optioncss !=
'') {
432 print
'<input type="hidden" name="optioncss" value="'.$optioncss.
'">';
434 print
'<input type="hidden" name="token" value="'.newToken().
'">';
435 print
'<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
436 print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
437 print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
438 print
'<input type="hidden" name="page" value="'.$page.
'">';
441 print_barre_liste($langs->trans(
"InvoiceLinesDone").
'<br><span class="opacitymedium small">'.$langs->trans(
"DescVentilDoneCustomer").
'</span>', $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder,
'', $num_lines, $nbtotalofrecords,
'title_accountancy', 0,
'',
'', $limit, 0, 0, 1);
443 print
'<br>'.$langs->trans(
"ChangeAccount").
' <div class="inline-block paddingbottom marginbottomonly">';
444 print $formaccounting->select_account($account_parent,
'account_parent', 2, array(), 0, 0,
'maxwidth300 maxwidthonsmartphone valignmiddle');
445 print
'<input type="submit" class="button small smallpaddingimp valignmiddle" value="'.$langs->trans(
"ChangeBinding").
'"/></div>';
449 $varpage = $contextpage;
450 $htmlofselectarray = $form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage,
$conf->main_checkbox_left_column);
451 $selectedfields = $htmlofselectarray;
452 $selectedfields .= $form->showCheckAddButtons(
'checkforselect', 1);
454 print
'<div class="div-table-responsive">';
455 print
'<table class="tagtable liste'.($moreforfilter ?
" listwithfilterbefore" :
"").
'">'.
"\n";
457 print
'<tr class="liste_titre_filter">';
459 if (
$conf->main_checkbox_left_column) {
460 print
'<td class="liste_titre maxwidthsearch center actioncolumn">';
461 $searchpicto = $form->showFilterButtons(
'left');
466 if (!empty($arrayfields[
'fd.rowid'][
'checked'])) {
467 print
'<td class="liste_titre" data-key="lineid">';
468 print
'<input type="text" class="flat maxwidth40" name="search_lineid" value="'.dol_escape_htmltag($search_lineid).
'">';
472 if (!empty($arrayfields[
'f.ref'][
'checked'])) {
473 print
'<td class="liste_titre" data-key="invoice">';
474 print
'<input type="text" class="flat maxwidth50" name="search_invoice" value="'.dol_escape_htmltag($search_invoice).
'">';
478 if (!empty($arrayfields[
'f.datef'][
'checked'])) {
479 print
'<td class="liste_titre center">';
480 print
'<div class="nowrapfordate">';
481 print $form->selectDate($search_date_start ? $search_date_start : -1,
'search_date_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'From'));
483 print
'<div class="nowrapfordate">';
484 print $form->selectDate($search_date_end ? $search_date_end : -1,
'search_date_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'to'));
489 if (!empty($arrayfields[
'p.ref'][
'checked'])) {
490 print
'<td class="liste_titre" data-key="ref">';
491 print
'<input type="text" class="flat maxwidth50" name="search_ref" value="'.dol_escape_htmltag($search_ref).
'">';
496 if (!empty($arrayfields[
'fd.description'][
'checked'])) {
497 print
'<td class="liste_titre" data-key="desc">';
498 print
'<input type="text" class="flat maxwidth50" name="search_desc" value="'.dol_escape_htmltag($search_desc).
'">';
502 if (!empty($arrayfields[
'fd.total_ht'][
'checked'])) {
503 print
'<td class="liste_titre" data-key="amount">';
504 print
'<input type="text" class="right flat maxwidth50" name="search_amount" value="'.dol_escape_htmltag($search_amount).
'">';
508 if (!empty($arrayfields[
'fd.tva_tx'][
'checked'])) {
509 print
'<td class="liste_titre" data-key="vat">';
510 print
'<input type="text" class="right flat maxwidth50" placeholder="%" name="search_vat" size="1" value="'.dol_escape_htmltag($search_vat).
'">';
514 if (!empty($arrayfields[
's.nom'][
'checked'])) {
515 print
'<td class="liste_titre" data-key="societe">';
516 print
'<input type="text" class="flat maxwidth75imp" name="search_societe" value="'.dol_escape_htmltag($search_societe).
'">';
520 if (!empty($arrayfields[
'co.label'][
'checked'])) {
521 print
'<td class="liste_titre" data-key="country">';
522 print $form->select_country($search_country,
'search_country',
'', 0,
'maxwidth125',
'code2', 1, 0, 1);
527 if (!empty($arrayfields[
's.tva_intra'][
'checked'])) {
528 print
'<td class="liste_titre">';
529 print
'<input type="text" class="flat maxwidth50" name="search_tvaintra" value="'.dol_escape_htmltag($search_tvaintra).
'">';
533 if (!empty($arrayfields[
'aa.account_number'][
'checked'])) {
534 print
'<td class="liste_titre">';
535 print
'<input type="text" class="flat maxwidth50" name="search_account" value="'.dol_escape_htmltag($search_account).
'">';
539 $parameters = array(
'arrayfields' => $arrayfields);
540 $reshook = $hookmanager->executeHooks(
'printFieldListOption', $parameters,
$object, $action);
541 print $hookmanager->resPrint;
543 if (!
$conf->main_checkbox_left_column) {
544 print
'<td class="liste_titre center maxwidthsearch actioncolumn">';
545 $searchpicto = $form->showFilterButtons();
557 print
'<tr class="liste_titre">';
559 if (
$conf->main_checkbox_left_column) {
560 print
getTitleFieldOfList($selectedfields, 0, $_SERVER[
"PHP_SELF"],
'',
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch ').
"\n";
564 if (!empty($arrayfields[
'fd.rowid'][
'checked'])) {
565 print_liste_field_titre($arrayfields[
'fd.rowid'][
'label'], $_SERVER[
"PHP_SELF"],
"fd.rowid",
"", $param,
'', $sortfield, $sortorder);
569 if (!empty($arrayfields[
'f.ref'][
'checked'])) {
570 print_liste_field_titre($arrayfields[
'f.ref'][
'label'], $_SERVER[
"PHP_SELF"],
"f.ref",
"", $param,
'', $sortfield, $sortorder);
574 if (!empty($arrayfields[
'f.datef'][
'checked'])) {
575 print_liste_field_titre($arrayfields[
'f.datef'][
'label'], $_SERVER[
"PHP_SELF"],
"f.datef, f.ref, fd.rowid",
"", $param,
'', $sortfield, $sortorder,
'center ');
579 if (!empty($arrayfields[
'p.ref'][
'checked'])) {
580 print_liste_field_titre($arrayfields[
'p.ref'][
'label'], $_SERVER[
"PHP_SELF"],
"p.ref",
"", $param,
'', $sortfield, $sortorder);
585 if (!empty($arrayfields[
'fd.description'][
'checked'])) {
586 print_liste_field_titre($arrayfields[
'fd.description'][
'label'], $_SERVER[
"PHP_SELF"],
"fd.description",
"", $param,
'', $sortfield, $sortorder);
590 if (!empty($arrayfields[
'fd.total_ht'][
'checked'])) {
591 print_liste_field_titre($arrayfields[
'fd.total_ht'][
'label'], $_SERVER[
"PHP_SELF"],
"fd.total_ht",
"", $param,
'', $sortfield, $sortorder,
'right ');
595 if (!empty($arrayfields[
'fd.tva_tx'][
'checked'])) {
596 print_liste_field_titre($arrayfields[
'fd.tva_tx'][
'label'], $_SERVER[
"PHP_SELF"],
"fd.tva_tx",
"", $param,
'', $sortfield, $sortorder,
'right ');
600 if (!empty($arrayfields[
's.nom'][
'checked'])) {
601 print_liste_field_titre($arrayfields[
's.nom'][
'label'], $_SERVER[
"PHP_SELF"],
"s.nom",
"", $param,
'', $sortfield, $sortorder);
605 if (!empty($arrayfields[
'co.label'][
'checked'])) {
606 print_liste_field_titre($arrayfields[
'co.label'][
'label'], $_SERVER[
"PHP_SELF"],
"co.label",
"", $param,
'', $sortfield, $sortorder);
610 if (!empty($arrayfields[
's.tva_intra'][
'checked'])) {
611 print_liste_field_titre($arrayfields[
's.tva_intra'][
'label'], $_SERVER[
"PHP_SELF"],
"s.tva_intra",
"", $param,
'', $sortfield, $sortorder);
615 if (!empty($arrayfields[
'aa.account_number'][
'checked'])) {
616 print_liste_field_titre($arrayfields[
'aa.account_number'][
'label'], $_SERVER[
"PHP_SELF"],
"aa.account_number",
"", $param,
'', $sortfield, $sortorder);
620 $parameters = array(
'arrayfields' => $arrayfields,
'param' => $param,
'sortfield' => $sortfield,
'sortorder' => $sortorder);
621 $reshook = $hookmanager->executeHooks(
'printFieldListTitle', $parameters,
$object, $action);
622 print $hookmanager->resPrint;
624 if (!
$conf->main_checkbox_left_column) {
625 print
getTitleFieldOfList($selectedfields, 0, $_SERVER[
"PHP_SELF"],
'',
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch ').
"\n";
630 $thirdpartystatic =
new Societe($db);
631 $facturestatic =
new Facture($db);
632 $productstatic =
new Product($db);
638 while ($i < min($num_lines, $limit)) {
639 $objp = $db->fetch_object($result);
641 $facturestatic->ref = $objp->ref;
642 $facturestatic->id = $objp->facid;
643 $facturestatic->type = $objp->ftype;
645 $thirdpartystatic->id = $objp->socid;
646 $thirdpartystatic->name = $objp->name;
647 $thirdpartystatic->client = $objp->client;
648 $thirdpartystatic->fournisseur = $objp->fournisseur;
649 $thirdpartystatic->code_client = $objp->code_client;
650 $thirdpartystatic->code_compta_client = $objp->code_compta_client;
651 $thirdpartystatic->code_fournisseur = $objp->code_fournisseur;
652 $thirdpartystatic->code_compta_fournisseur = $objp->code_compta_fournisseur;
653 $thirdpartystatic->email = $objp->email;
654 $thirdpartystatic->country_code = $objp->country_code;
656 $productstatic->ref = $objp->product_ref;
657 $productstatic->id = $objp->product_id;
658 $productstatic->label = $objp->product_label;
659 $productstatic->type = $objp->line_type;
660 $productstatic->status = $objp->tosell;
661 $productstatic->status_buy = $objp->tobuy;
662 $productstatic->accountancy_code_sell = $objp->accountancy_code_sell;
663 $productstatic->accountancy_code_sell_intra = $objp->accountancy_code_sell_intra;
664 $productstatic->accountancy_code_sell_export = $objp->accountancy_code_sell_export;
666 $accountingaccountstatic->rowid = $objp->fk_compte;
667 $accountingaccountstatic->label = $objp->label_account;
668 $accountingaccountstatic->labelshort = $objp->labelshort_account;
669 $accountingaccountstatic->account_number = $objp->account_number;
671 print
'<tr class="oddeven">';
674 if (
$conf->main_checkbox_left_column) {
675 print
'<td class="nowrap center actioncolumn">';
676 $selected = in_array($objp->rowid, $changeaccount);
677 print
'<input id="cb'.$objp->rowid.
'" class="flat checkforselect checkforaction" type="checkbox" name="changeaccount[]" value="'.$objp->rowid.
'"'.($selected ?
' checked="checked"' :
'').
'>';
684 if (!empty($arrayfields[
'fd.rowid'][
'checked'])) {
685 print
'<td>'.$objp->rowid.
'</td>';
689 if (!empty($arrayfields[
'f.ref'][
'checked'])) {
690 print
'<td class="nowraponall tdoverflowmax125">'.$facturestatic->getNomUrl(1).
'</td>';
694 if (!empty($arrayfields[
'f.datef'][
'checked'])) {
695 print
'<td class="center">'.dol_print_date($db->jdate($objp->datef),
'day').
'</td>';
699 if (!empty($arrayfields[
'p.ref'][
'checked'])) {
700 print
'<td class="tdoverflowmax100">';
701 if ($productstatic->id > 0) {
702 print $productstatic->getNomUrl(1);
709 if ($objp->product_label) {
710 print
'<span class="opacitymedium">'.$objp->product_label.
'</span>';
718 if (!empty($arrayfields[
'fd.description'][
'checked'])) {
720 print
'<td class="tdoverflowmax200 small" title="'.dol_escape_htmltag($text).
'">';
722 print $form->textwithtooltip(
dol_trunc($text, $trunclength), $objp->description);
727 if (!empty($arrayfields[
'fd.total_ht'][
'checked'])) {
728 print
'<td class="right nowraponall amount">';
731 $situation_ratio = 1;
733 if ($objp->situation_cycle_ref) {
735 if ($objp->situation_percent == 0) {
736 $situation_ratio = 0;
739 $line->fetch($objp->rowid);
742 $prev_progress = $line->get_prev_progress($objp->facid);
744 $situation_ratio = ($objp->situation_percent - $prev_progress) / $objp->situation_percent;
747 print
price($objp->total_ht * $situation_ratio);
749 print
price($objp->total_ht);
755 if (!empty($arrayfields[
'fd.tva_tx'][
'checked'])) {
756 print
'<td class="right">'.vatrate($objp->tva_tx.($objp->vat_src_code ?
' ('.$objp->vat_src_code.
')' :
'')).
'</td>';
760 if (!empty($arrayfields[
's.nom'][
'checked'])) {
761 print
'<td class="tdoverflowmax100">'.$thirdpartystatic->getNomUrl(1,
'customer').
'</td>';
765 if (!empty($arrayfields[
'co.label'][
'checked'])) {
766 print
'<td class="tdoverflowmax125" title="'.dolPrintHTML($langs->trans(
"Country".$objp->country_code).
' ('.$objp->country_code.
')').
'">';
767 if ($objp->country_code) {
768 print $langs->trans(
"Country".$objp->country_code).
' ('.$objp->country_code.
')';
774 if (!empty($arrayfields[
's.tva_intra'][
'checked'])) {
775 print
'<td class="tdoverflowmax80" title="'.dol_escape_htmltag($objp->tva_intra).
'">'.
dol_escape_htmltag($objp->tva_intra).
'</td>';
779 if (!empty($arrayfields[
'aa.account_number'][
'checked'])) {
780 print
'<td class="tdoverflowmax200" title="'.dol_escape_htmltag($accountingaccountstatic->label).
'">';
781 print
'<a class="editfielda" href="./card.php?id='.$objp->rowid.
'&backtopage='.urlencode($_SERVER[
"PHP_SELF"].($param ?
'?'.$param :
'')).
'">';
784 print $accountingaccountstatic->getNomUrl(0, 1, 1,
'', 1);
790 $parameters = array(
'arrayfields' => $arrayfields,
'obj' => $objp,
'i' => $i,
'totalarray' => &
$totalarray);
791 $reshook = $hookmanager->executeHooks(
'printFieldListValue', $parameters,
$object, $action);
792 print $hookmanager->resPrint;
795 if (!
$conf->main_checkbox_left_column) {
796 print
'<td class="nowrap center actioncolumn">';
797 $selected = in_array($objp->rowid, $changeaccount);
798 print
'<input id="cb'.$objp->rowid.
'" class="flat checkforselect checkforaction" type="checkbox" name="changeaccount[]" value="'.$objp->rowid.
'"'.($selected ?
' checked="checked"' :
'').
'>';
808 if ($num_lines == 0) {
810 foreach ($arrayfields as $key => $val) {
811 if (!empty($val[
'checked'])) {
815 print
'<tr><td colspan="'.$colspan.
'"><span class="opacitymedium">'.$langs->trans(
"NoRecordFound").
'</span></td></tr>';
818 $parameters = array(
'arrayfields' => $arrayfields,
'sql' => $sql);
819 $reshook = $hookmanager->executeHooks(
'printFieldListFooter', $parameters,
$object, $action);
820 print $hookmanager->resPrint;
825 if ($nbtotalofrecords > $limit) {
826 print_barre_liste(
'', $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder,
'', $num_lines, $nbtotalofrecords,
'', 0,
'',
'', $limit, 1);
831 print $db->lasterror();
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
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).
llxFooter($comment='', $zone='private', $disabledoutputofmessages=0)
Empty footer.
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader($head='', $title='', $help_url='', $target='', $disablejs=0, $disablehead=0, $arrayofjs='', $arrayofcss='', $morequerystring='', $morecssonbody='', $replacemainareaby='', $disablenofollow=0, $disablenoindex=0)
Empty header.
Class to manage accounting accounts.
Class to manage invoices.
const TYPE_REPLACEMENT
Replacement invoice.
const TYPE_SITUATION
Situation invoice.
const TYPE_DEPOSIT
Deposit invoice.
const TYPE_CREDIT_NOTE
Credit note invoice.
Class to manage invoice lines.
Class to manage products or services.
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...
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0, $attop=0)
Set event messages in dol_events session object.
print_liste_field_titre($name, $file="", $field="", $begin="", $param="", $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, $selectlimitsuffix=0, $hidenavigation=0, $pagenavastextinput=0, $morehtmlrightbeforearrow='')
Print a title with navigation controls for pagination.
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...
price($amount, $form=0, $outlangs='', $trunc=1, $rounding=-1, $forcerounding=-1, $currency_code='')
Function to format a value into an amount for visual output Function used into PDF and HTML pages.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
dol_sort_array(&$array, $index, $order='asc', $natsort=0, $case_sensitive=0, $keepindex=0)
Advanced sort array by the value of a given key, which produces ascending (default) or descending out...
getTitleFieldOfList($name, $thead=0, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $disablesortlink=0, $tooltip='', $forcenowrapcolumntitle=0)
Get 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.
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 a 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...
global $conf
The following vars must be defined: $type2label $form $conf, $lang, The following vars may also be de...
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.