31require
'../../main.inc.php';
33require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formaccounting.class.php';
34require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formother.class.php';
35require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formcompany.class.php';
36require_once DOL_DOCUMENT_ROOT.
'/product/class/product.class.php';
37require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.facture.class.php';
38require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.product.class.php';
39require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountingaccount.class.php';
40require_once DOL_DOCUMENT_ROOT.
'/core/lib/accounting.lib.php';
41require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
42require_once DOL_DOCUMENT_ROOT.
'/core/lib/company.lib.php';
54$langs->loadLangs(array(
"bills",
"companies",
"compta",
"accountancy",
"other",
"productbatch",
"products"));
56$action =
GETPOST(
'action',
'aZ09');
57$massaction =
GETPOST(
'massaction',
'alpha');
58$confirm =
GETPOST(
'confirm',
'alpha');
59$toselect =
GETPOST(
'toselect',
'array');
60$contextpage =
GETPOST(
'contextpage',
'aZ') ?
GETPOST(
'contextpage',
'aZ') :
'accountancysupplierlist';
61$optioncss =
GETPOST(
'optioncss',
'alpha');
63$default_account =
GETPOSTINT(
'default_account');
66$mesCasesCochees =
GETPOST(
'toselect',
'array');
69$search_lineid =
GETPOST(
'search_lineid',
'alpha');
70$search_societe =
GETPOST(
'search_societe',
'alpha');
71$search_ref =
GETPOST(
'search_ref',
'alpha');
72$search_ref_supplier =
GETPOST(
'search_ref_supplier',
'alpha');
73$search_invoice =
GETPOST(
'search_invoice',
'alpha');
74$search_label =
GETPOST(
'search_label',
'alpha');
75$search_desc =
GETPOST(
'search_desc',
'alpha');
76$search_amount =
GETPOST(
'search_amount',
'alpha');
77$search_account =
GETPOST(
'search_account',
'alpha');
78$search_vat =
GETPOST(
'search_vat',
'alpha');
79$search_date_startday =
GETPOSTINT(
'search_date_startday');
80$search_date_startmonth =
GETPOSTINT(
'search_date_startmonth');
81$search_date_startyear =
GETPOSTINT(
'search_date_startyear');
82$search_date_endday =
GETPOSTINT(
'search_date_endday');
83$search_date_endmonth =
GETPOSTINT(
'search_date_endmonth');
84$search_date_endyear =
GETPOSTINT(
'search_date_endyear');
85$search_date_start =
dol_mktime(0, 0, 0, $search_date_startmonth, $search_date_startday, $search_date_startyear);
86$search_date_end =
dol_mktime(23, 59, 59, $search_date_endmonth, $search_date_endday, $search_date_endyear);
87$search_country =
GETPOST(
'search_country',
'aZ09');
88$search_tvaintra =
GETPOST(
'search_tvaintra',
'alpha');
92$sortfield =
GETPOST(
'sortfield',
'aZ09comma');
93$sortorder =
GETPOST(
'sortorder',
'aZ09comma');
95if (empty($page) || $page < 0) {
98$offset = $limit * $page;
100$pagenext = $page + 1;
102 $sortfield =
"f.datef, f.ref, l.rowid";
113$hookmanager->initHooks(array($contextpage));
121if (!isModEnabled(
'accounting')) {
124if ($user->socid > 0) {
127if (!$user->hasRight(
'accounting',
'bind',
'write')) {
132 'l.rowid' => array(
'label' =>
"LineId",
'position' => 1,
'checked' =>
'1',
'enabled' =>
'1'),
133 'f.ref' => array(
'label' =>
"Invoice",
'position' => 1,
'checked' =>
'1',
'enabled' =>
'1'),
134 'f.libelle' => array(
'label' =>
"InvoiceLabel",
'position' => 1,
'checked' =>
'-1',
'enabled' =>
'1'),
135 'f.datef' => array(
'label' =>
"Date",
'position' => 1,
'checked' =>
'1',
'enabled' =>
'1'),
136 'p.ref' => array(
'label' =>
"ProductRef",
'position' => 1,
'checked' =>
'1',
'enabled' =>
'1'),
137 'l.description' => array(
'label' =>
"ProductDescription",
'position' => 1,
'checked' =>
'-1',
'enabled' =>
'1'),
138 'l.total_ht' => array(
'label' =>
"Amount",
'position' => 1,
'checked' =>
'1',
'enabled' =>
'1'),
139 'l.tva_tx' => array(
'label' =>
"VATRate",
'position' => 1,
'checked' =>
'1',
'enabled' =>
'1'),
140 's.nom' => array(
'label' =>
"ThirdParty",
'position' => 1,
'checked' =>
'1',
'enabled' =>
'1'),
141 'co.label' => array(
'label' =>
"Country",
'position' => 1,
'checked' =>
'1',
'enabled' =>
'1'),
142 's.tva_intra' => array(
'label' =>
"VATIntraShort",
'position' => 1,
'checked' =>
'1',
'enabled' =>
'1'),
143 'aa.data_suggest' => array(
'label' =>
"DataUsedToSuggestAccount",
'position' => 1,
'checked' =>
'1',
'enabled' =>
'1'),
144 'aa.account_number' => array(
'label' =>
"AccountAccountingSuggest",
'position' => 1,
'checked' =>
'1',
'enabled' =>
'1'),
150if (empty($search_date_start) &&
getDolGlobalInt(
'ACCOUNTING_DATE_START_BINDING')) {
151 $search_date_start = $db->idate(
getDolGlobalInt(
'ACCOUNTING_DATE_START_BINDING'));
161if (
GETPOST(
'cancel',
'alpha')) {
165if (!
GETPOST(
'confirmmassaction',
'alpha') && $massaction !=
'presend' && $massaction !=
'confirm_presend') {
169$parameters = array(
'arrayfields' => &$arrayfields);
170$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
175if (empty($reshook)) {
177 include DOL_DOCUMENT_ROOT.
'/core/actions_changeselectedfields.inc.php';
180 if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
181 $search_societe =
'';
184 $search_ref_supplier =
'';
185 $search_invoice =
'';
189 $search_account =
'';
191 $search_date_startday =
'';
192 $search_date_startmonth =
'';
193 $search_date_startyear =
'';
194 $search_date_endday =
'';
195 $search_date_endmonth =
'';
196 $search_date_endyear =
'';
197 $search_date_start =
'';
198 $search_date_end =
'';
199 $search_country =
'';
200 $search_tvaintra =
'';
204 $objectclass =
'AccountingAccount';
205 $permissiontoread = $user->hasRight(
'accounting',
'read');
206 $permissiontodelete = $user->hasRight(
'accounting',
'delete');
207 $uploaddir =
$conf->accounting->dir_output;
208 include DOL_DOCUMENT_ROOT.
'/core/actions_massactions.inc.php';
212if ($massaction ==
'ventil' && $user->hasRight(
'accounting',
'bind',
'write')) {
215 if (!empty($mesCasesCochees)) {
216 $msg =
'<div>'.$langs->trans(
"SelectedLines").
': '.count($mesCasesCochees).
'</div>';
217 $msg .=
'<div class="detail">';
222 foreach ($mesCasesCochees as $maLigneCochee) {
223 $maLigneCourante = explode(
"_", $maLigneCochee);
224 $monId = $maLigneCourante[0];
227 if ($monCompte <= 0) {
228 $msg .=
'<div><span class="error">'.$langs->trans(
"Lineofinvoice").
' '.$monId.
' - '.$langs->trans(
"NoAccountSelected").
'</span></div>';
231 $sql =
" UPDATE ".MAIN_DB_PREFIX.
"facture_fourn_det";
232 $sql .=
" SET fk_code_ventilation = ".((int) $monCompte);
233 $sql .=
" WHERE rowid = ".((int) $monId);
236 $accountventilated->fetch($monCompte,
'', 1);
238 dol_syslog(
'accountancy/supplier/list.php', LOG_DEBUG);
239 if ($db->query($sql)) {
240 $msg .=
'<div><span class="green">'.$langs->trans(
"Lineofinvoice").
' '.$monId.
' - '.$langs->trans(
"VentilatedinAccount").
' : '.
length_accountg($accountventilated->account_number).
'</span></div>';
243 $msg .=
'<div><span class="error">'.$langs->trans(
"ErrorDB").
' : '.$langs->trans(
"Lineofinvoice").
' '.$monId.
' - '.$langs->trans(
"NotVentilatedinAccount").
' : '.
length_accountg($accountventilated->account_number).
'<br> <pre>'.$sql.
'</pre></span></div>';
251 $msg .=
'<div>'.$langs->trans(
"EndProcessing").
'</div>';
255if (
GETPOST(
'sortfield') ==
'f.datef, f.ref, l.rowid') {
256 $value = (
GETPOST(
'sortorder') ==
'asc,asc,asc' ? 0 : 1);
257 require_once DOL_DOCUMENT_ROOT.
'/core/lib/admin.lib.php';
258 $res =
dolibarr_set_const($db,
"ACCOUNTING_LIST_SORT_VENTILATION_TODO", $value,
'yesno', 0,
'',
$conf->entity);
266$form =
new Form($db);
269$help_url =
'EN:Module_Double_Entry_Accounting|FR:Module_Comptabilité_en_Partie_Double#Liaisons_comptables';
271llxHeader(
'', $langs->trans(
"SuppliersVentilation"), $help_url,
'', 0, 0,
'',
'',
'',
'bodyforlist mod-accountancy accountancy-supplier page-list');
273if (empty($chartaccountcode)) {
274 print $langs->trans(
"ErrorChartOfAccountSystemNotSelected");
282$sql =
"SELECT f.rowid as facid, f.ref, f.ref_supplier, f.libelle as invoice_label, f.datef, f.type as ftype, f.fk_facture_source,";
283$sql .=
" l.rowid, l.fk_product, l.description, l.total_ht, l.fk_code_ventilation, l.product_type as type_l, l.tva_tx as tva_tx_line, l.vat_src_code,";
284$sql .=
" p.rowid as product_id, p.ref as product_ref, p.label as product_label, p.fk_product_type as type, p.tva_tx as tva_tx_prod,";
286 $sql .=
" ppe.accountancy_code_sell as code_sell, ppe.accountancy_code_sell_intra as code_sell_intra, ppe.accountancy_code_sell_export as code_sell_export,";
287 $sql .=
" ppe.accountancy_code_buy as code_buy, ppe.accountancy_code_buy_intra as code_buy_intra, ppe.accountancy_code_buy_export as code_buy_export,";
289 $sql .=
" p.accountancy_code_sell as code_sell, p.accountancy_code_sell_intra as code_sell_intra, p.accountancy_code_sell_export as code_sell_export,";
290 $sql .=
" p.accountancy_code_buy as code_buy, p.accountancy_code_buy_intra as code_buy_intra, p.accountancy_code_buy_export as code_buy_export,";
292$sql .=
" p.tosell as status, p.tobuy as status_buy,";
293$sql .=
" aa.rowid as aarowid, aa2.rowid as aarowid_intra, aa3.rowid as aarowid_export, aa4.rowid as aarowid_thirdparty,";
294$sql .=
" co.code as country_code, co.label as country_label,";
295$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,";
297 $sql .=
" spe.accountancy_code_customer as code_compta_client,";
298 $sql .=
" spe.accountancy_code_supplier as code_compta_fournisseur,";
299 $sql .=
" spe.accountancy_code_buy as company_code_buy";
301 $sql .=
" s.code_compta as code_compta_client,";
302 $sql .=
" s.code_compta_fournisseur,";
303 $sql .=
" s.accountancy_code_buy as company_code_buy";
305$parameters = array();
306$reshook = $hookmanager->executeHooks(
'printFieldListSelect', $parameters);
307$sql .= $hookmanager->resPrint;
308$sql .=
" FROM ".MAIN_DB_PREFIX.
"facture_fourn as f";
309$sql .=
" INNER JOIN ".MAIN_DB_PREFIX.
"societe as s ON s.rowid = f.fk_soc";
311 $sql .=
" LEFT JOIN " . MAIN_DB_PREFIX .
"societe_perentity as spe ON spe.fk_soc = s.rowid AND spe.entity = " . ((int)
$conf->entity);
313$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"c_country as co ON co.rowid = s.fk_pays ";
314$sql .=
" INNER JOIN ".MAIN_DB_PREFIX.
"facture_fourn_det as l ON f.rowid = l.fk_facture_fourn";
315$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"product as p ON p.rowid = l.fk_product";
317 $sql .=
" LEFT JOIN " . MAIN_DB_PREFIX .
"product_perentity as ppe ON ppe.fk_product = p.rowid AND ppe.entity = " . ((int)
$conf->entity);
319$alias_societe_perentity = !
getDolGlobalString(
'MAIN_COMPANY_PERENTITY_SHARED') ?
"s" :
"spe";
320$alias_product_perentity = !
getDolGlobalString(
'MAIN_PRODUCT_PERENTITY_SHARED') ?
"p" :
"ppe";
321$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"accounting_account as aa ON " . $alias_product_perentity .
".accountancy_code_buy = aa.account_number AND aa.active = 1 AND aa.fk_pcg_version = '".$db->escape($chartaccountcode).
"' AND aa.entity = ".
$conf->entity;
322$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"accounting_account as aa2 ON " . $alias_product_perentity .
".accountancy_code_buy_intra = aa2.account_number AND aa2.active = 1 AND aa2.fk_pcg_version = '".$db->escape($chartaccountcode).
"' AND aa2.entity = ".
$conf->entity;
323$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"accounting_account as aa3 ON " . $alias_product_perentity .
".accountancy_code_buy_export = aa3.account_number AND aa3.active = 1 AND aa3.fk_pcg_version = '".$db->escape($chartaccountcode).
"' AND aa3.entity = ".
$conf->entity;
324$sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"accounting_account as aa4 ON " . $alias_societe_perentity .
".accountancy_code_buy = aa4.account_number AND aa4.active = 1 AND aa4.fk_pcg_version = '".$db->escape($chartaccountcode).
"' AND aa4.entity = ".
$conf->entity;
326$parameters = array();
327$reshook = $hookmanager->executeHooks(
'printFieldListFrom', $parameters, $object, $action);
328$sql .= $hookmanager->resPrint;
330$sql .=
" WHERE f.fk_statut > 0 AND l.fk_code_ventilation <= 0";
331$sql .=
" AND l.product_type <= 2";
333if (strlen($search_lineid)) {
336if (strlen($search_societe)) {
339if (strlen(trim($search_invoice))) {
340 $sql .=
natural_search(array(
"f.ref",
"f.ref_supplier"), $search_invoice);
342if (strlen(trim($search_ref))) {
348if (strlen(trim($search_label))) {
349 $sql .=
natural_search(array(
"p.label",
"f.libelle"), $search_label);
351if (strlen(trim($search_desc))) {
354if (strlen(trim($search_amount))) {
357if (strlen(trim($search_account))) {
360if (strlen(trim($search_vat))) {
363if ($search_date_start) {
364 $sql .=
" AND f.datef >= '".$db->idate($search_date_start).
"'";
366if ($search_date_end) {
367 $sql .=
" AND f.datef <= '".$db->idate($search_date_end).
"'";
369if (strlen(trim($search_country))) {
371 $country_code_in_EEC = $country_code_in_EEC_without_me =
'';
372 foreach ($arrayofcode as $key => $value) {
373 $country_code_in_EEC .= ($country_code_in_EEC ?
"," :
"").
"'".$value.
"'";
374 if ($value != $mysoc->country_code) {
375 $country_code_in_EEC_without_me .= ($country_code_in_EEC_without_me ?
"," :
"").
"'".$value.
"'";
378 if ($search_country ==
'special_allnotme') {
379 $sql .=
" AND co.code <> '".$db->escape($mysoc->country_code).
"'";
380 } elseif ($search_country ==
'special_eec') {
381 $sql .=
" AND co.code IN (".$db->sanitize($country_code_in_EEC, 1).
")";
382 } elseif ($search_country ==
'special_eecnotme') {
383 $sql .=
" AND co.code IN (".$db->sanitize($country_code_in_EEC_without_me, 1).
")";
384 } elseif ($search_country ==
'special_noteec') {
385 $sql .=
" AND co.code NOT IN (".$db->sanitize($country_code_in_EEC, 1).
")";
390if (strlen(trim($search_tvaintra))) {
398$sql .=
" AND f.entity IN (".getEntity(
'facture_fourn', 0).
")";
401$parameters = array();
402$reshook = $hookmanager->executeHooks(
'printFieldListWhere', $parameters);
403$sql .= $hookmanager->resPrint;
405$sql .= $db->order($sortfield, $sortorder);
408$nbtotalofrecords =
'';
410 $result = $db->query($sql);
411 $nbtotalofrecords = $db->num_rows($result);
412 if (($page * $limit) > $nbtotalofrecords) {
418$sql .= $db->plimit($limit + 1, $offset);
420dol_syslog(
'accountancy/supplier/list.php', LOG_DEBUG);
423if ($db->type ==
'mysqli') {
424 $db->query(
"SET SQL_BIG_SELECTS=1");
427$result = $db->query($sql);
429 $num_lines = $db->num_rows($result);
432 $arrayofselected = is_array($toselect) ? $toselect : array();
435 if ($contextpage != $_SERVER[
"PHP_SELF"]) {
436 $param .=
'&contextpage='.urlencode($contextpage);
438 if ($limit > 0 && $limit !=
$conf->liste_limit) {
439 $param .=
'&limit='.((int) $limit);
441 if ($search_lineid) {
442 $param .=
'&search_lineid='.urlencode((
string) ($search_lineid));
444 if ($search_societe) {
445 $param .=
'&search_societe='.urlencode($search_societe);
447 if ($search_date_startday) {
448 $param .=
'&search_date_startday='.urlencode((
string) ($search_date_startday));
450 if ($search_date_startmonth) {
451 $param .=
'&search_date_startmonth='.urlencode((
string) ($search_date_startmonth));
453 if ($search_date_startyear) {
454 $param .=
'&search_date_startyear='.urlencode((
string) ($search_date_startyear));
456 if ($search_date_endday) {
457 $param .=
'&search_date_endday='.urlencode((
string) ($search_date_endday));
459 if ($search_date_endmonth) {
460 $param .=
'&search_date_endmonth='.urlencode((
string) ($search_date_endmonth));
462 if ($search_date_endyear) {
463 $param .=
'&search_date_endyear='.urlencode((
string) ($search_date_endyear));
465 if ($search_invoice) {
466 $param .=
'&search_invoice='.urlencode($search_invoice);
469 $param .=
'&search_ref='.urlencode($search_ref);
471 if ($search_ref_supplier) {
472 $param .=
'&search_ref_supplier='.urlencode($search_ref_supplier);
475 $param .=
'&search_label='.urlencode($search_label);
478 $param .=
'&search_desc='.urlencode($search_desc);
480 if ($search_amount) {
481 $param .=
'&search_amount='.urlencode($search_amount);
484 $param .=
'&search_vat='.urlencode($search_vat);
486 if ($search_country) {
487 $param .=
"&search_country=".urlencode($search_country);
489 if ($search_tvaintra) {
490 $param .=
"&search_tvaintra=".urlencode($search_tvaintra);
493 $parameters = array(
'param' => &$param);
494 $reshook = $hookmanager->executeHooks(
'printFieldListSearchParam', $parameters, $object, $action);
495 $param .= $hookmanager->resPrint;
497 $arrayofmassactions = array(
498 'set_default_account' =>
img_picto(
'',
'check',
'class="pictofixedwidth"').$langs->trans(
"ConfirmPreselectAccount"),
499 'ventil' =>
img_picto(
'',
'check',
'class="pictofixedwidth"').$langs->trans(
"Ventilate")
505 $massactionbutton =
'';
506 if ($massaction !==
'set_default_account') {
507 $massactionbutton = $form->selectMassAction(
'ventil', $arrayofmassactions, 1);
510 print
'<form action="'.$_SERVER[
"PHP_SELF"].
'" method="post">'.
"\n";
511 print
'<input type="hidden" name="action" value="ventil">';
512 if ($optioncss !=
'') {
513 print
'<input type="hidden" name="optioncss" value="'.$optioncss.
'">';
515 print
'<input type="hidden" name="token" value="'.newToken().
'">';
516 print
'<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
517 print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
518 print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
519 print
'<input type="hidden" name="page" value="'.$page.
'">';
522 print_barre_liste($langs->trans(
"InvoiceLines").
'<br><span class="opacitymedium small">'.$langs->trans(
"DescVentilTodoCustomer").
'</span>', $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder, (
string) $massactionbutton, $num_lines, $nbtotalofrecords,
'title_accountancy', 0,
'',
'', $limit, 0, 0, 1);
524 if ($massaction ==
'set_default_account') {
525 $formquestion = array();
526 $formquestion[] = array(
'type' =>
'other',
527 'name' =>
'set_default_account',
528 'label' => $langs->trans(
"AccountancyCode"),
529 'value' => $formaccounting->select_account(
'',
'default_account', 1, array(), 0, 0,
'maxwidth200 maxwidthonsmartphone',
'cachewithshowemptyone'));
530 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmPreselectAccount"), $langs->trans(
"ConfirmPreselectAccountQuestion", count($toselect)),
"confirm_set_default_account", $formquestion, 1, 0, 200, 500, 1);
539 $varpage = $contextpage;
540 $htmlofselectarray = $form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage,
$conf->main_checkbox_left_column);
541 $selectedfields = $htmlofselectarray;
542 $selectedfields .= $form->showCheckAddButtons(
'checkforselect', 1);
544 print
'<div class="div-table-responsive">';
545 print
'<table class="tagtable liste'.($moreforfilter ?
" listwithfilterbefore" :
"").
'">'.
"\n";
548 print
'<tr class="liste_titre_filter">';
550 if (
$conf->main_checkbox_left_column) {
551 print
'<td class="liste_titre maxwidthsearch center actioncolumn">';
552 $searchpicto = $form->showFilterButtons(
'left');
557 if (!empty($arrayfields[
'l.rowid'][
'checked'])) {
558 print
'<td class="liste_titre" data-key="lineid">';
559 print
'<input type="text" class="flat maxwidth40" name="search_lineid" value="'.dol_escape_htmltag($search_lineid).
'">';
563 if (!empty($arrayfields[
'f.ref'][
'checked'])) {
564 print
'<td class="liste_titre" data-key="invoice">';
565 print
'<input type="text" class="flat maxwidth50" name="search_invoice" value="'.dol_escape_htmltag($search_invoice).
'">';
569 if (!empty($arrayfields[
'f.label'][
'checked'])) {
570 print
'<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_label" value="'.dol_escape_htmltag($search_label).
'"></td>';
573 if (!empty($arrayfields[
'f.datef'][
'checked'])) {
574 print
'<td class="liste_titre center">';
575 print
'<div class="nowrapfordate">';
576 print $form->selectDate($search_date_start ? $search_date_start : -1,
'search_date_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'From'));
578 print
'<div class="nowrapfordate">';
579 print $form->selectDate($search_date_end ? $search_date_end : -1,
'search_date_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'to'));
584 if (!empty($arrayfields[
'p.ref'][
'checked'])) {
585 print
'<td class="liste_titre" data-key="ref">';
586 print
'<input type="text" class="flat maxwidth50" name="search_ref" value="'.dol_escape_htmltag($search_ref).
'">';
590 if (!empty($arrayfields[
'l.description'][
'checked'])) {
591 print
'<td class="liste_titre" data-key="desc">';
592 print
'<input type="text" class="flat maxwidth50" name="search_desc" value="'.dol_escape_htmltag($search_desc).
'">';
596 if (!empty($arrayfields[
'l.total_ht'][
'checked'])) {
597 print
'<td class="liste_titre" data-key="amount">';
598 print
'<input type="text" class="right flat maxwidth50" name="search_amount" value="'.dol_escape_htmltag($search_amount).
'">';
602 if (!empty($arrayfields[
'l.tva_tx'][
'checked'])) {
603 print
'<td class="liste_titre" data-key="vat">';
604 print
'<input type="text" class="right flat maxwidth50" placeholder="%" name="search_vat" size="1" value="'.dol_escape_htmltag($search_vat).
'">';
608 if (!empty($arrayfields[
's.nom'][
'checked'])) {
609 print
'<td class="liste_titre" data-key="societe">';
610 print
'<input type="text" class="flat maxwidth75imp" name="search_societe" value="'.dol_escape_htmltag($search_societe).
'">';
614 if (!empty($arrayfields[
'co.label'][
'checked'])) {
615 print
'<td class="liste_titre" data-key="country">';
616 print $form->select_country($search_country,
'search_country',
'', 0,
'maxwidth125',
'code2', 1, 0, 1);
620 if (!empty($arrayfields[
's.tva_intra'][
'checked'])) {
621 print
'<td class="liste_titre">';
622 print
'<input type="text" class="flat maxwidth50" name="search_tvaintra" value="'.dol_escape_htmltag($search_tvaintra).
'">';
626 if (!empty($arrayfields[
'aa.data_suggest'][
'checked'])) {
627 print
'<td class="liste_titre"></td>';
630 if (!empty($arrayfields[
'aa.account_number'][
'checked'])) {
631 print
'<td class="liste_titre"></td>';
634 $parameters = array(
'arrayfields' => $arrayfields);
635 $reshook = $hookmanager->executeHooks(
'printFieldListOption', $parameters, $object, $action);
636 print $hookmanager->resPrint;
638 if (!
$conf->main_checkbox_left_column) {
639 print
'<td class="liste_titre center maxwidthsearch actioncolumn">';
640 $searchpicto = $form->showFilterButtons();
651 print
'<tr class="liste_titre">';
653 if (
$conf->main_checkbox_left_column) {
654 print
getTitleFieldOfList($selectedfields, 0, $_SERVER[
"PHP_SELF"],
'',
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch ').
"\n";
658 if (!empty($arrayfields[
'l.rowid'][
'checked'])) {
659 print_liste_field_titre($arrayfields[
'l.rowid'][
'label'], $_SERVER[
"PHP_SELF"],
"l.rowid",
"", $param,
'', $sortfield, $sortorder);
663 if (!empty($arrayfields[
'f.ref'][
'checked'])) {
664 print_liste_field_titre($arrayfields[
'f.ref'][
'label'], $_SERVER[
"PHP_SELF"],
"f.ref",
"", $param,
'', $sortfield, $sortorder);
668 if (!empty($arrayfields[
'f.libelle'][
'checked'])) {
669 print_liste_field_titre($arrayfields[
'f.libelle'][
'label'], $_SERVER[
"PHP_SELF"],
"f.libelle",
"", $param,
'', $sortfield, $sortorder);
673 if (!empty($arrayfields[
'f.datef'][
'checked'])) {
674 print_liste_field_titre($arrayfields[
'f.datef'][
'label'], $_SERVER[
"PHP_SELF"],
"f.datef, f.ref, l.rowid",
"", $param,
'', $sortfield, $sortorder,
'center ');
678 if (!empty($arrayfields[
'p.ref'][
'checked'])) {
679 print_liste_field_titre($arrayfields[
'p.ref'][
'label'], $_SERVER[
"PHP_SELF"],
"p.ref",
"", $param,
'', $sortfield, $sortorder);
683 if (!empty($arrayfields[
'l.description'][
'checked'])) {
684 print_liste_field_titre($arrayfields[
'l.description'][
'label'], $_SERVER[
"PHP_SELF"],
"l.description",
"", $param,
'', $sortfield, $sortorder);
688 if (!empty($arrayfields[
'l.total_ht'][
'checked'])) {
689 print_liste_field_titre($arrayfields[
'l.total_ht'][
'label'], $_SERVER[
"PHP_SELF"],
"l.total_ht",
"", $param,
'', $sortfield, $sortorder,
'right ');
693 if (!empty($arrayfields[
'l.tva_tx'][
'checked'])) {
694 print_liste_field_titre($arrayfields[
'l.tva_tx'][
'label'], $_SERVER[
"PHP_SELF"],
"l.tva_tx",
"", $param,
'', $sortfield, $sortorder,
'right ');
698 if (!empty($arrayfields[
's.nom'][
'checked'])) {
699 print_liste_field_titre($arrayfields[
's.nom'][
'label'], $_SERVER[
"PHP_SELF"],
"s.nom",
"", $param,
'', $sortfield, $sortorder);
703 if (!empty($arrayfields[
'co.label'][
'checked'])) {
704 print_liste_field_titre($arrayfields[
'co.label'][
'label'], $_SERVER[
"PHP_SELF"],
"co.label",
"", $param,
'', $sortfield, $sortorder);
708 if (!empty($arrayfields[
's.tva_intra'][
'checked'])) {
709 print_liste_field_titre($arrayfields[
's.tva_intra'][
'label'], $_SERVER[
"PHP_SELF"],
"s.tva_intra",
"", $param,
'', $sortfield, $sortorder);
713 if (!empty($arrayfields[
'aa.data_suggest'][
'checked'])) {
714 print_liste_field_titre($arrayfields[
'aa.data_suggest'][
'label'], $_SERVER[
"PHP_SELF"],
"aa.account_number",
"", $param,
'', $sortfield, $sortorder);
718 if (!empty($arrayfields[
'aa.account_number'][
'checked'])) {
719 print_liste_field_titre($arrayfields[
'aa.account_number'][
'label'], $_SERVER[
"PHP_SELF"],
"aa.account_number",
"", $param,
'', $sortfield, $sortorder);
723 $parameters = array(
'arrayfields' => $arrayfields,
'param' => $param,
'sortfield' => $sortfield,
'sortorder' => $sortorder);
724 $reshook = $hookmanager->executeHooks(
'printFieldListTitle', $parameters, $object, $action);
725 print $hookmanager->resPrint;
727 if (!
$conf->main_checkbox_left_column) {
728 print
getTitleFieldOfList($selectedfields, 0, $_SERVER[
"PHP_SELF"],
'',
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch ').
"\n";
733 $thirdpartystatic =
new Societe($db);
736 $product_static =
new Product($db);
738 $accountingaccount_codetotid_cache = array();
739 $suggestedaccountingaccountfor =
'';
740 $suggestedaccountingaccountbydefaultfor =
'';
744 while ($i < min($num_lines, $limit)) {
745 $objp = $db->fetch_object($result);
754 $thirdpartystatic->id = $objp->socid;
755 $thirdpartystatic->name = $objp->name;
756 $thirdpartystatic->client = $objp->client;
757 $thirdpartystatic->fournisseur = $objp->fournisseur;
758 $thirdpartystatic->code_client = $objp->code_client;
759 $thirdpartystatic->code_compta_client = $objp->code_compta_client;
760 $thirdpartystatic->code_fournisseur = $objp->code_fournisseur;
761 $thirdpartystatic->code_compta_fournisseur = $objp->code_compta_fournisseur;
762 $thirdpartystatic->email = $objp->email;
763 $thirdpartystatic->country_code = $objp->country_code;
764 $thirdpartystatic->tva_intra = $objp->tva_intra;
765 $thirdpartystatic->code_compta_product = $objp->company_code_buy;
767 $product_static->ref = $objp->product_ref;
768 $product_static->id = $objp->product_id;
769 $product_static->type = $objp->type;
770 $product_static->label = $objp->product_label;
771 $product_static->status = $objp->status;
772 $product_static->status_buy = $objp->status_buy;
773 $product_static->accountancy_code_sell = $objp->code_sell;
774 $product_static->accountancy_code_sell_intra = $objp->code_sell_intra;
775 $product_static->accountancy_code_sell_export = $objp->code_sell_export;
776 $product_static->accountancy_code_buy = $objp->code_buy;
777 $product_static->accountancy_code_buy_intra = $objp->code_buy_intra;
778 $product_static->accountancy_code_buy_export = $objp->code_buy_export;
779 $product_static->tva_tx = $objp->tva_tx_prod;
781 $facturefourn_static->ref = $objp->ref;
782 $facturefourn_static->id = $objp->facid;
783 $facturefourn_static->type = $objp->ftype;
784 $facturefourn_static->ref_supplier = $objp->ref_supplier;
785 $facturefourn_static->label = $objp->invoice_label;
786 $facturefourn_static->date = $db->jdate($objp->datef);
787 $facturefourn_static->fk_facture_source = $objp->fk_facture_source;
789 $facturefourn_static_det->id = $objp->rowid;
790 $facturefourn_static_det->total_ht = $objp->total_ht;
791 $facturefourn_static_det->tva_tx = $objp->tva_tx_line;
792 $facturefourn_static_det->vat_src_code = $objp->vat_src_code;
793 $facturefourn_static_det->product_type = $objp->type_l;
794 $facturefourn_static_det->desc = $objp->description;
796 $accountingAccountArray = array(
797 'dom' => $objp->aarowid,
798 'intra' => $objp->aarowid_intra,
799 'export' => $objp->aarowid_export,
800 'thirdparty' => $objp->aarowid_thirdparty);
802 $code_buy_p_notset =
'';
803 $code_buy_t_notset =
'';
807 $return = $accountingAccount->getAccountingCodeToBind($mysoc, $thirdpartystatic, $product_static, $facturefourn_static, $facturefourn_static_det, $accountingAccountArray,
'supplier');
808 if (!is_array($return) && $return < 0) {
811 $suggestedid = $return[
'suggestedid'];
812 $suggestedaccountingaccountfor = $return[
'suggestedaccountingaccountfor'];
813 $suggestedaccountingaccountbydefaultfor = $return[
'suggestedaccountingaccountbydefaultfor'];
814 $code_buy_l = $return[
'code_l'];
815 $code_buy_p = $return[
'code_p'];
816 $code_buy_t = $return[
'code_t'];
820 if (!empty($code_buy_p)) {
823 $code_buy_p_notset =
'color:orange';
825 if (empty($code_buy_l) && empty($code_buy_p)) {
826 $code_buy_p_notset =
'color:red';
837 print
'<tr class="oddeven">';
840 if (
$conf->main_checkbox_left_column) {
841 print
'<td class="nowrap center actioncolumn">';
842 $selected = in_array($objp->rowid.
"_".$i, $toselect);
843 print
'<input type="checkbox" class="flat checkforselect checkforselect'.$facturefourn_static_det->id.
'" name="toselect[]" value="'.$facturefourn_static_det->id.
"_".$i.
'"'.($selected ?
" checked" :
"").
'/>'; print
'</td>';
850 if (!empty($arrayfields[
'l.rowid'][
'checked'])) {
851 print
'<td>'.$facturefourn_static_det->id.
'</td>';
855 if (!empty($arrayfields[
'f.ref'][
'checked'])) {
856 print
'<td class="nowraponall">'.$facturefourn_static->getNomUrl(1);
857 if ($objp->ref_supplier) {
858 print
'<br><span class="opacitymedium small">'.dol_escape_htmltag($objp->ref_supplier).
'</span>';
870 if (!empty($arrayfields[
'f.libelle'][
'checked'])) {
871 print
'<td class="tdoverflowmax100 small" title="'.dol_escape_htmltag($objp->invoice_label).
'">';
877 if (!empty($arrayfields[
'f.datef'][
'checked'])) {
878 print
'<td class="center">'.dol_print_date($facturefourn_static->date,
'day').
'</td>';
882 if (!empty($arrayfields[
'p.ref'][
'checked'])) {
883 print
'<td class="tdoverflowmax100">';
884 if ($product_static->id > 0) {
885 print $product_static->getNomUrl(1);
887 if ($product_static->label) {
888 print
'<br><span class="opacitymedium small">'.dol_escape_htmltag($product_static->label).
'</span>';
894 if (!empty($arrayfields[
'l.description'][
'checked'])) {
896 print
'<td class="tdoverflowmax150 small classfortooltip" title="'.dol_escape_htmltag($text).
'">';
902 if (!empty($arrayfields[
'l.total_ht'][
'checked'])) {
903 print
'<td class="right nowraponall amount">';
904 print
price($objp->total_ht);
909 if (!empty($arrayfields[
'l.tva_tx'][
'checked'])) {
910 $code_vat_differ =
'';
914 print
'<td class="right'.($code_vat_differ ?
' '.$code_vat_differ :
'').
'">';
915 print
vatrate($facturefourn_static_det->tva_tx.($facturefourn_static_det->vat_src_code ?
' ('.$facturefourn_static_det->vat_src_code.
')' :
''), false, 0, 0, 1);
920 if (!empty($arrayfields[
's.nom'][
'checked'])) {
921 print
'<td class="tdoverflowmax100">'.$thirdpartystatic->getNomUrl(1,
'supplier').
'</td>';
925 if (!empty($arrayfields[
'co.label'][
'checked'])) {
926 $labelcountry = ($objp->country_code && ($langs->trans(
"Country".$objp->country_code) !=
"Country".$objp->country_code)) ? $langs->trans(
"Country".$objp->country_code) : $objp->country_label;
927 print
'<td class="tdoverflowmax100" title="'.dol_escape_htmltag($labelcountry).
'">';
933 if (!empty($arrayfields[
'co.label'][
'checked'])) {
934 print
'<td class="tdoverflowmax80" title="'.dol_escape_htmltag($objp->tva_intra).
'">'.
dol_escape_htmltag($objp->tva_intra).
'</td>';
938 if (!empty($arrayfields[
'aa.data_suggest'][
'checked'])) {
939 print
'<td class="small">';
940 $s =
'1. '.(($facturefourn_static_det->product_type == 1) ? $langs->trans(
"DefaultForService") : $langs->trans(
"DefaultForProduct")).
': ';
943 if ($suggestedaccountingaccountbydefaultfor ==
'eec') {
944 $shelp .= $langs->trans(
"SaleEEC");
945 } elseif ($suggestedaccountingaccountbydefaultfor ==
'eecwithvat') {
946 $shelp = $langs->trans(
"SaleEECWithVAT");
947 } elseif ($suggestedaccountingaccountbydefaultfor ==
'eecwithoutvatnumber') {
948 $shelp = $langs->trans(
"SaleEECWithoutVATNumber");
950 } elseif ($suggestedaccountingaccountbydefaultfor ==
'export') {
951 $shelp .= $langs->trans(
"SaleExport");
953 $s .= ($code_buy_l > 0 ?
length_accountg($code_buy_l) :
'<span style="'.$code_buy_p_notset.
'">'.$langs->trans(
"NotDefined").
'</span>');
954 $textforrule = $form->textwithpicto($s, $shelp, 1, $ttype,
'', 0, 2,
'', 1);
955 if ($product_static->id > 0) {
956 $textforrule .=
'<br>';
957 $s =
'2. '.(($facturefourn_static_det->product_type == 1) ? $langs->trans(
"ThisService") : $langs->trans(
"ThisProduct")).
': ';
960 if ($suggestedaccountingaccountfor ==
'eec') {
961 $shelp = $langs->trans(
"SaleEEC");
962 } elseif ($suggestedaccountingaccountfor ==
'eecwithvat') {
963 $shelp = $langs->trans(
"SaleEECWithVAT");
964 } elseif ($suggestedaccountingaccountfor ==
'eecwithoutvatnumber') {
965 $shelp = $langs->trans(
"SaleEECWithoutVATNumber");
967 } elseif ($suggestedaccountingaccountfor ==
'export') {
968 $shelp = $langs->trans(
"SaleExport");
970 $s .= (empty($code_buy_p) ?
'<span style="'.$code_buy_p_notset.
'">'.$langs->trans(
"NotDefined").
'</span>' :
length_accountg($code_buy_p));
971 $textforrule .= $form->textwithpicto($s, $shelp, 1, $ttype,
'', 0, 2,
'', 1);
973 $textforrule .=
'<br>';
974 $s =
'2. '.(($objp->type_l == 1) ? $langs->trans(
"ThisService") : $langs->trans(
"ThisProduct")).
': ';
976 $s .= $langs->trans(
"NotDefined");
977 $textforrule .= $form->textwithpicto($s, $shelp, 1,
'help',
'', 0, 2,
'', 1);
980 $textforrule .=
'<br>';
981 $s =
'3. '.(($facturefourn_static_det->product_type == 1) ? $langs->trans(
"ServiceForThisThirdparty") : $langs->trans(
"ProductForThisThirdparty")).
': ';
983 $s .= ($code_buy_t > 0 ?
length_accountg($code_buy_t) :
'<span style="'.$code_buy_t_notset.
'">'.$langs->trans(
"NotDefined").
'</span>');
984 $textforrule .= $form->textwithpicto($s, $shelp, 1,
'help',
'', 0, 2,
'', 1);
991 if (!empty($arrayfields[
'aa.account_number'][
'checked'])) {
993 print $formaccounting->select_account(($default_account > 0 && $confirm ===
'yes' && in_array($objp->rowid.
"_".$i, $toselect)) ? (
string) $default_account : (string) $suggestedid,
'codeventil'.$facturefourn_static_det->id, 1, array(), 0, 0,
'codeventil maxwidth150 maxwidthonsmartphone',
'cachewithshowemptyone');
998 $parameters = array(
'arrayfields' => $arrayfields,
'obj' => $objp,
'i' => $i,
'totalarray' => &$totalarray);
999 $reshook = $hookmanager->executeHooks(
'printFieldListValue', $parameters, $object, $action);
1000 print $hookmanager->resPrint;
1002 if (!
$conf->main_checkbox_left_column) {
1003 print
'<td class="nowrap center actioncolumn">';
1004 $selected = in_array($objp->rowid.
"_".$i, $toselect);
1005 print
'<input type="checkbox" class="flat checkforselect checkforselect'.$facturefourn_static_det->id.
'" name="toselect[]" value="'.$facturefourn_static_det->id.
"_".$i.
'"'.($selected ?
" checked" :
"").
'/>';
1015 if ($num_lines == 0) {
1017 foreach ($arrayfields as $key => $val) {
1018 if (!empty($val[
'checked'])) {
1022 print
'<tr><td colspan="'.$colspan.
'"><span class="opacitymedium">'.$langs->trans(
"NoRecordFound").
'</span></td></tr>';
1025 $parameters = array(
'arrayfields' => $arrayfields,
'sql' => $sql);
1026 $reshook = $hookmanager->executeHooks(
'printFieldListFooter', $parameters, $object, $action);
1027 print $hookmanager->resPrint;
1036if ($db->type ==
'mysqli') {
1037 $db->query(
"SET SQL_BIG_SELECTS=0");
1041print
'<script type="text/javascript">
1042jQuery(document).ready(function() {
1043 jQuery(".codeventil").change(function() {
1044 var s=$(this).attr("id").replace("codeventil", "")
1045 console.log(s+" "+$(this).val());
1046 if ($(this).val() == -1) jQuery(".checkforselect"+s).prop("checked", false);
1047 else jQuery(".checkforselect"+s).prop("checked", true);
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
length_accountg($account)
Return General accounting account with defined length (used for product and miscellaneous)
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.
const TYPE_SITUATION
Situation invoice.
Class to manage suppliers invoices.
const TYPE_DEPOSIT
Deposit invoice.
const TYPE_CREDIT_NOTE
Credit note invoice.
const TYPE_REPLACEMENT
Replacement invoice.
Class to manage products or services.
Class to manage third parties objects (customers, suppliers, prospects...)
Class to manage line invoices.
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...
dol_getIdFromCode($db, $key, $tablename, $fieldkey='code', $fieldid='id', $entityfilter=0, $filters='', $useCache=true)
Return an id or code from a code or id.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0, $attop=0)
Set event messages in dol_events session object.
vatrate($rate, $addpercent=false, $info_bits=0, $usestarfornpr=0, $html=0)
Return a string with VAT rate label formatted for view output Used into pdf and HTML pages.
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.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2, $allowothertags=array())
Show picto whatever it's its name (generic function)
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...
setEventMessage($mesgs, $style='mesgs', $noduplicate=0, $attop=0)
Set event message in dol_events session object.
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.
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.