32require
'../../main.inc.php';
34require_once DOL_DOCUMENT_ROOT.
'/core/lib/accounting.lib.php';
35require_once DOL_DOCUMENT_ROOT.
'/core/lib/company.lib.php';
36require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/lettering.class.php';
37require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/bookkeeping.class.php';
38require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountingjournal.class.php';
39require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formaccounting.class.php';
40require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formfile.class.php';
41require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formother.class.php';
42require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
53$langs->loadLangs(array(
"accountancy",
"categories",
"compta"));
55$journal_code =
GETPOST(
'code_journal',
'alpha');
56$account =
GETPOST(
"account",
'int');
59$action =
GETPOST(
'action',
'aZ09');
61$mode = (
GETPOST(
'mode',
'alpha') ?
GETPOST(
'mode',
'alpha') :
'customer');
62$massaction =
GETPOST(
'massaction',
'alpha');
63$confirm =
GETPOST(
'confirm',
'alpha');
64$toselect =
GETPOST(
'toselect',
'array');
65$type =
GETPOST(
'type',
'alpha');
67 $context_default =
'bookkeepingbysubaccountlist';
69 $context_default =
'bookkeepingbyaccountlist';
71$contextpage =
GETPOST(
'contextpage',
'aZ') ?
GETPOST(
'contextpage',
'aZ') : $context_default;
73$search_doc_date =
GETPOSTDATE(
'doc_date',
'getpost');
75$search_date_startyear =
GETPOSTINT(
'search_date_startyear');
76$search_date_startmonth =
GETPOSTINT(
'search_date_startmonth');
77$search_date_startday =
GETPOSTINT(
'search_date_startday');
78$search_date_start =
GETPOSTDATE(
'search_date_start',
'getpost',
'auto',
'search_date_start_accountancy');
80$search_date_endyear =
GETPOSTINT(
'search_date_endyear');
81$search_date_endmonth =
GETPOSTINT(
'search_date_endmonth');
82$search_date_endday =
GETPOSTINT(
'search_date_endday');
83$search_date_end =
GETPOSTDATE(
'search_date_end',
'getpostend',
'auto',
'search_date_end_accountancy');
85$search_date_export_startyear =
GETPOSTINT(
'search_date_export_startyear');
86$search_date_export_startmonth =
GETPOSTINT(
'search_date_export_startmonth');
87$search_date_export_startday =
GETPOSTINT(
'search_date_export_startday');
88$search_date_export_start =
GETPOSTDATE(
'search_date_export_start',
'getpost');
90$search_date_export_endyear =
GETPOSTINT(
'search_date_export_endyear');
91$search_date_export_endmonth =
GETPOSTINT(
'search_date_export_endmonth');
92$search_date_export_endday =
GETPOSTINT(
'search_date_export_endday');
93$search_date_export_end =
GETPOSTDATE(
'search_date_export_start',
'getpostend');
95$search_date_validation_startyear =
GETPOSTINT(
'search_date_validation_startyear');
96$search_date_validation_startmonth =
GETPOSTINT(
'search_date_validation_startmonth');
97$search_date_validation_startday =
GETPOSTINT(
'search_date_validation_startday');
98$search_date_validation_start =
GETPOSTDATE(
'search_date_validation_start',
'getpost');
100$search_date_validation_endyear =
GETPOSTINT(
'search_date_validation_endyear');
101$search_date_validation_endmonth =
GETPOSTINT(
'search_date_validation_endmonth');
102$search_date_validation_endday =
GETPOSTINT(
'search_date_validation_endday');
103$search_date_validation_end =
GETPOSTDATE(
'search_date_validation_end',
'getpostend');
106$search_date_due_start_day =
GETPOSTINT(
'search_date_due_start_day');
107$search_date_due_start_month =
GETPOSTINT(
'search_date_due_start_month');
108$search_date_due_start_year =
GETPOSTINT(
'search_date_due_start_year');
109$search_date_due_start =
GETPOSTDATE(
'search_date_due_start_',
'getpost');
112$search_date_due_end_day =
GETPOSTINT(
'search_date_due_end_day');
113$search_date_due_end_month =
GETPOSTINT(
'search_date_due_end_month');
114$search_date_due_end_year =
GETPOSTINT(
'search_date_due_end_year');
115$search_date_due_end =
GETPOSTDATE(
'search_date_due_end_',
'getpostend');
117$search_import_key =
GETPOST(
"search_import_key",
'alpha');
119$search_account_category =
GETPOSTINT(
'search_account_category');
121$search_accountancy_code_start =
GETPOST(
'search_accountancy_code_start',
'alpha');
122if ($search_accountancy_code_start == - 1) {
123 $search_accountancy_code_start =
'';
125$search_accountancy_code_end =
GETPOST(
'search_accountancy_code_end',
'alpha');
126if ($search_accountancy_code_end == - 1) {
127 $search_accountancy_code_end =
'';
129$search_doc_ref =
GETPOST(
'search_doc_ref',
'alpha');
130$search_label_operation =
GETPOST(
'search_label_operation',
'alpha');
131$search_mvt_num =
GETPOST(
'search_mvt_num',
'alpha');
132$search_direction =
GETPOST(
'search_direction',
'alpha');
133$search_ledger_code =
GETPOST(
'search_ledger_code',
'array');
134$search_debit =
GETPOST(
'search_debit',
'alpha');
135$search_credit =
GETPOST(
'search_credit',
'alpha');
136$search_lettering_code =
GETPOST(
'search_lettering_code',
'alpha');
137$search_not_reconciled =
GETPOST(
'search_not_reconciled',
'alpha');
140 $action =
'delbookkeepingyear';
145$sortfield =
GETPOST(
'sortfield',
'aZ09comma');
146$sortorder =
GETPOST(
'sortorder',
'aZ09comma');
147$optioncss =
GETPOST(
'optioncss',
'alpha');
149if (empty($page) || $page < 0) {
152$offset = $limit * $page;
153$pageprev = $page - 1;
154$pagenext = $page + 1;
155if ($sortorder ==
"") {
158if ($sortfield ==
"") {
159 $sortfield =
"t.doc_date,t.rowid";
165$hookmanager->initHooks(array($context_default));
168$form =
new Form($db);
170if (empty($search_date_start) && empty($search_date_end) && !GETPOSTISSET(
'search_date_startday') && !GETPOSTISSET(
'search_date_startmonth') && !GETPOSTISSET(
'search_date_starthour')) {
171 $sql =
"SELECT date_start, date_end";
172 $sql .=
" FROM ".MAIN_DB_PREFIX.
"accounting_fiscalyear ";
174 $sql .=
" WHERE rowid = " .
getDolGlobalInt(
'ACCOUNTANCY_FISCALYEAR_DEFAULT');
176 $sql .=
" WHERE date_start < '" . $db->idate(
dol_now()) .
"' and date_end > '" . $db->idate(
dol_now()) .
"'";
178 $sql .= $db->plimit(1);
179 $res = $db->query($sql);
181 if ($res !==
false && $db->num_rows($res) > 0) {
182 $fiscalYear = $db->fetch_object($res);
183 $search_date_start = strtotime($fiscalYear->date_start);
184 $search_date_end = strtotime($fiscalYear->date_end);
191 $year_end = $year_start + 1;
192 $month_end = $month_start - 1;
193 if ($month_end < 1) {
197 $search_date_start =
dol_mktime(0, 0, 0, $month_start, 1, $year_start);
204 't.piece_num' => array(
'label' =>
"TransactionNumShort",
'checked' =>
'1'),
205 't.code_journal' => array(
'label' =>
"Codejournal",
'checked' =>
'1'),
206 't.doc_date' => array(
'label' =>
"Docdate",
'checked' =>
'1'),
207 't.doc_ref' => array(
'label' =>
"Piece",
'checked' =>
'1'),
208 't.label_operation' => array(
'label' =>
"Label",
'checked' =>
'1'),
209 't.lettering_code' => array(
'label' =>
"Lettering",
'checked' =>
'1'),
210 't.debit' => array(
'label' =>
"AccountingDebit",
'checked' =>
'1'),
211 't.credit' => array(
'label' =>
"AccountingCredit",
'checked' =>
'1'),
212 't.balance' => array(
'label' =>
"Balance",
'checked' =>
'1'),
213 't.date_export' => array(
'label' =>
"DateExport",
'checked' =>
'-1'),
214 't.date_validated' => array(
'label' =>
"DateValidation",
'checked' =>
'-1',
'enabled' => (
string) (
int) !
getDolGlobalString(
"ACCOUNTANCY_DISABLE_CLOSURE_LINE_BY_LINE")),
215 't.date_lim_reglement' => array(
'label' =>
"DateDue",
'checked' =>
'0'),
216 't.import_key' => array(
'label' =>
"ImportId",
'checked' =>
'-1',
'position' => 1100),
220 unset($arrayfields[
't.lettering_code']);
223if ($search_date_start && empty($search_date_startyear)) {
225 $search_date_startyear = $tmparray[
'year'];
226 $search_date_startmonth = $tmparray[
'mon'];
227 $search_date_startday = $tmparray[
'mday'];
229if ($search_date_end && empty($search_date_endyear)) {
231 $search_date_endyear = $tmparray[
'year'];
232 $search_date_endmonth = $tmparray[
'mon'];
233 $search_date_endday = $tmparray[
'mday'];
236if (!isModEnabled(
'accounting')) {
239if ($user->socid > 0) {
242if (!$user->hasRight(
'accounting',
'mouvements',
'lire')) {
251$permissiontoread = $user->hasRight(
'accounting',
'mouvements',
'lire');
252$permissiontoadd = $user->hasRight(
'accounting',
'mouvements',
'creer');
253$permissiontodelete = $user->hasRight(
'accounting',
'mouvements',
'supprimer');
254$permissiontoexport = $user->hasRight(
'accounting',
'mouvements',
'export');
265if (
GETPOST(
'cancel',
'alpha')) {
269if (!
GETPOST(
'confirmmassaction',
'alpha') && $massaction !=
'preunletteringauto' && $massaction !=
'preunletteringmanual' && $massaction !=
'predeletebookkeepingwriting') {
273$parameters = array(
'socid' => $socid);
274$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
279if (empty($reshook)) {
280 include DOL_DOCUMENT_ROOT.
'/core/actions_changeselectedfields.inc.php';
282 if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
283 $search_doc_date =
'';
284 $search_account_category =
'';
285 $search_accountancy_code_start =
'';
286 $search_accountancy_code_end =
'';
287 $search_label_account =
'';
288 $search_doc_ref =
'';
289 $search_label_operation =
'';
290 $search_mvt_num =
'';
291 $search_direction =
'';
292 $search_ledger_code = array();
293 $search_date_start =
'';
294 $search_date_end =
'';
295 $search_date_startyear =
'';
296 $search_date_startmonth =
'';
297 $search_date_startday =
'';
298 $search_date_endyear =
'';
299 $search_date_endmonth =
'';
300 $search_date_endday =
'';
301 $search_date_export_start =
'';
302 $search_date_export_end =
'';
303 $search_date_export_startyear =
'';
304 $search_date_export_startmonth =
'';
305 $search_date_export_startday =
'';
306 $search_date_export_endyear =
'';
307 $search_date_export_endmonth =
'';
308 $search_date_export_endday =
'';
309 $search_date_validation_start =
'';
310 $search_date_validation_end =
'';
311 $search_date_validation_startyear =
'';
312 $search_date_validation_startmonth =
'';
313 $search_date_validation_startday =
'';
314 $search_date_validation_endyear =
'';
315 $search_date_validation_endmonth =
'';
316 $search_date_validation_endday =
'';
318 $search_date_due_start_day =
'';
319 $search_date_due_start_month =
'';
320 $search_date_due_start_year =
'';
321 $search_date_due_start =
'';
323 $search_date_due_end_day =
'';
324 $search_date_due_end_month =
'';
325 $search_date_due_end_year =
'';
326 $search_date_due_end =
'';
327 $search_lettering_code =
'';
330 $search_not_reconciled =
'';
331 $search_import_key =
'';
333 unset($_SESSION[
'DOLDATE_search_date_start_accountancy_day']);
334 unset($_SESSION[
'DOLDATE_search_date_start_accountancy_month']);
335 unset($_SESSION[
'DOLDATE_search_date_start_accountancy_year']);
336 unset($_SESSION[
'DOLDATE_search_date_end_accountancy_day']);
337 unset($_SESSION[
'DOLDATE_search_date_end_accountancy_month']);
338 unset($_SESSION[
'DOLDATE_search_date_end_accountancy_year']);
341 if (!empty($socid)) {
342 $param =
'&socid='.$socid;
344 if (!empty($search_date_start)) {
345 $filter[
't.doc_date>='] = $search_date_start;
346 $param .=
'&search_date_startmonth='.$search_date_startmonth.
'&search_date_startday='.$search_date_startday.
'&search_date_startyear='.$search_date_startyear;
348 if (!empty($search_date_end)) {
349 $filter[
't.doc_date<='] = $search_date_end;
350 $param .=
'&search_date_endmonth='.$search_date_endmonth.
'&search_date_endday='.$search_date_endday.
'&search_date_endyear='.$search_date_endyear;
352 if (!empty($search_doc_date)) {
353 $filter[
't.doc_date'] = $search_doc_date;
354 $param .=
'&doc_datemonth='.GETPOSTINT(
'doc_datemonth').
'&doc_dateday='.
GETPOSTINT(
'doc_dateday').
'&doc_dateyear='.
GETPOSTINT(
'doc_dateyear');
356 if ($search_account_category !=
'-1' && !empty($search_account_category)) {
357 require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountancycategory.class.php';
360 $listofaccountsforgroup = $accountingcategory->getCptsCat(0,
'fk_accounting_category = '.((
int) $search_account_category));
361 $listofaccountsforgroup2 = array();
362 if (is_array($listofaccountsforgroup)) {
363 foreach ($listofaccountsforgroup as $tmpval) {
364 $listofaccountsforgroup2[] =
"'".$db->escape((
string) $tmpval[
'account_number']).
"'";
367 if (!empty($listofaccountsforgroup2)) {
368 $filter[
't.search_accounting_code_in'] = implode(
',', $listofaccountsforgroup2);
370 $filter[
't.search_accounting_code_in'] =
"''";
371 setEventMessages($langs->trans(
"ThisCategoryHasNoItems"),
null,
'warnings');
373 $param .=
'&search_account_category='.urlencode((
string) ($search_account_category));
375 if (!empty($search_accountancy_code_start)) {
376 if ($type ==
'sub') {
377 $filter[
't.subledger_account>='] = $search_accountancy_code_start;
379 $filter[
't.numero_compte>='] = $search_accountancy_code_start;
381 $param .=
'&search_accountancy_code_start=' . urlencode($search_accountancy_code_start);
383 if (!empty($search_accountancy_code_end)) {
384 if ($type ==
'sub') {
385 $filter[
't.subledger_account<='] = $search_accountancy_code_end;
387 $filter[
't.numero_compte<='] = $search_accountancy_code_end;
389 $param .=
'&search_accountancy_code_end=' . urlencode($search_accountancy_code_end);
391 if (!empty($search_label_account)) {
392 $filter[
't.label_compte'] = $search_label_account;
393 $param .=
'&search_label_compte='.urlencode($search_label_account);
395 if (!empty($search_mvt_num)) {
396 $filter[
't.piece_num'] = $search_mvt_num;
397 $param .=
'&search_mvt_num='.urlencode((
string) ($search_mvt_num));
399 if (!empty($search_doc_ref)) {
400 $filter[
't.doc_ref'] = $search_doc_ref;
401 $param .=
'&search_doc_ref='.urlencode($search_doc_ref);
403 if (!empty($search_label_operation)) {
404 $filter[
't.label_operation'] = $search_label_operation;
405 $param .=
'&search_label_operation='.urlencode($search_label_operation);
407 if (!empty($search_direction)) {
408 $filter[
't.sens'] = $search_direction;
409 $param .=
'&search_direction='.urlencode($search_direction);
411 if (!empty($search_ledger_code)) {
412 $filter[
't.code_journal'] = $search_ledger_code;
413 foreach ($search_ledger_code as $code) {
414 $param .=
'&search_ledger_code[]='.urlencode($code);
417 if (!empty($search_lettering_code)) {
418 $filter[
't.lettering_code'] = $search_lettering_code;
419 $param .=
'&search_lettering_code='.urlencode($search_lettering_code);
421 if (!empty($search_debit)) {
422 $filter[
't.debit'] = $search_debit;
423 $param .=
'&search_debit='.urlencode($search_debit);
425 if (!empty($search_credit)) {
426 $filter[
't.credit'] = $search_credit;
427 $param .=
'&search_credit='.urlencode($search_credit);
429 if (!empty($search_not_reconciled)) {
430 $filter[
't.reconciled_option'] = $search_not_reconciled;
431 $param .=
'&search_not_reconciled='.urlencode($search_not_reconciled);
433 if (!empty($search_date_export_start)) {
434 $filter[
't.date_export>='] = $search_date_export_start;
435 $param .=
'&search_date_export_startmonth='.$search_date_export_startmonth.
'&search_date_export_startday='.$search_date_export_startday.
'&search_date_export_startyear='.$search_date_export_startyear;
437 if (!empty($search_date_export_end)) {
438 $filter[
't.date_export<='] = $search_date_export_end;
439 $param .=
'&search_date_export_endmonth='.$search_date_export_endmonth.
'&search_date_export_endday='.$search_date_export_endday.
'&search_date_export_endyear='.$search_date_export_endyear;
441 if (!empty($search_date_validation_start)) {
442 $filter[
't.date_validated>='] = $search_date_validation_start;
443 $param .=
'&search_date_validation_startmonth='.$search_date_validation_startmonth.
'&search_date_validation_startday='.$search_date_validation_startday.
'&search_date_validation_startyear='.$search_date_validation_startyear;
445 if (!empty($search_date_validation_end)) {
446 $filter[
't.date_validated<='] = $search_date_validation_end;
447 $param .=
'&search_date_validation_endmonth='.$search_date_validation_endmonth.
'&search_date_validation_endday='.$search_date_validation_endday.
'&search_date_validation_endyear='.$search_date_validation_endyear;
450 if (!empty($search_date_due_start)) {
451 $filter[
't.date_lim_reglement>='] = $search_date_due_start;
452 $param .=
'&search_date_due_start_day='.$search_date_due_start_day.
'&search_date_due_start_month='.$search_date_due_start_month.
'&search_date_due_start_year='.$search_date_due_start_year;
455 if (!empty($search_date_due_end)) {
456 $filter[
't.date_lim_reglement<='] = $search_date_due_end;
457 $param .=
'&search_date_due_end_day='.$search_date_due_end_day.
'&search_date_due_end_month='.$search_date_due_end_month.
'&search_date_due_end_year='.$search_date_due_end_year;
459 if (!empty($search_import_key)) {
460 $filter[
't.import_key'] = $search_import_key;
461 $param .=
'&search_import_key='.urlencode($search_import_key);
464 $url_param = substr($param, 1);
466 $param =
'&type='.$type.$param;
470 if ($action ===
'exporttopdf' && $permissiontoadd) {
471 if ($type ==
"sub") {
472 $object->fetchAllByAccount($sortorder, $sortfield, 0, 0, $filter,
'AND', 1);
474 $object->fetchAllByAccount($sortorder, $sortfield, 0, 0, $filter);
476 require_once DOL_DOCUMENT_ROOT .
'/core/modules/accountancy/doc/pdf_ledger.modules.php';
478 $pdf->fromDate = $search_date_start;
479 $pdf->toDate = $search_date_end;
480 $pdf->ledgerType = $type;
482 $result = $pdf->write_file($object, $langs);
493 $objectclass =
'Bookkeeping';
494 $objectlabel =
'Bookkeeping';
495 $uploaddir =
$conf->societe->dir_output;
498 include DOL_DOCUMENT_ROOT.
'/core/actions_massactions.inc.php';
500 if (!$error && $action ==
'deletebookkeepingwriting' && $confirm ==
"yes" && $user->hasRight(
'accounting',
'mouvements',
'supprimer')) {
505 $nb_lettering = $lettering->bookkeepingLetteringAll($toselect,
true);
506 if ($nb_lettering < 0) {
514 foreach ($toselect as $toselectid) {
515 $result =
$object->fetch($toselectid);
516 if ($result > 0 && (!isset(
$object->date_validation) ||
$object->date_validation ===
'')) {
525 } elseif ($result < 0) {
529 } elseif (isset(
$object->date_validation) &&
$object->date_validation !=
'') {
530 setEventMessages($langs->trans(
"ValidatedRecordWhereFound"),
null,
'errors');
543 } elseif ($nbok > 0) {
549 header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?noreset=1".($param ?
'&'.$param :
''));
557 if (!$error && $action ==
'clonebookkeepingwriting' && $confirm ==
"yes" && $user->hasRight(
'accounting',
'mouvements',
'creer')) {
558 $result =
$object->newCloneMass($toselect, $journal_code, $massdate);
564 header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?noreset=1".($param ?
'&'.$param :
''));
572 if (!$error && $action ==
'assignaccountbookkeepingwriting' && $confirm ==
"yes" && $user->hasRight(
'accounting',
'mouvements',
'creer')) {
573 $result =
$object->assignAccountMass($toselect, (
int) $account);
579 header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?noreset=1".($param ?
'&'.$param :
''));
587 if (!$error && $action ==
'returnaccountbookkeepingwriting' && $confirm ==
"yes" && $user->hasRight(
'accounting',
'mouvements',
'creer')) {
588 $result =
$object->newReturnAccount($toselect, $journal_code, $massdate);
594 header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?noreset=1".($param ?
'&'.$param :
''));
603 if ($massaction ==
'letteringauto' && $permissiontoadd) {
605 $nb_lettering = $lettering->bookkeepingLetteringAll($toselect);
606 if ($nb_lettering < 0) {
609 $nb_lettering = max(0, abs($nb_lettering) - 2);
610 } elseif ($nb_lettering == 0) {
612 setEventMessages($langs->trans(
'AccountancyNoLetteringModified'), array(),
'mesgs');
614 if ($nb_lettering == 1) {
615 setEventMessages($langs->trans(
'AccountancyOneLetteringModifiedSuccessfully'), array(),
'mesgs');
616 } elseif ($nb_lettering > 1) {
617 setEventMessages($langs->trans(
'AccountancyLetteringModifiedSuccessfully', $nb_lettering), array(),
'mesgs');
621 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
624 } elseif ($massaction ==
'letteringmanual' && $permissiontoadd) {
626 $result = $lettering->updateLettering($toselect);
630 setEventMessages($langs->trans($result == 0 ?
'AccountancyNoLetteringModified' :
'AccountancyOneLetteringModifiedSuccessfully'), array(),
'mesgs');
631 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
634 } elseif ($type ==
'sub' && $massaction ==
'letteringpartial') {
636 $result = $lettering->updateLettering($toselect, 0,
true);
640 setEventMessages($langs->trans($result == 0 ?
'AccountancyNoLetteringModified' :
'AccountancyOneLetteringModifiedSuccessfully'), array(),
'mesgs');
641 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
644 } elseif ($action ==
'unletteringauto' && $confirm ==
"yes" && $permissiontoadd) {
646 $nb_lettering = $lettering->bookkeepingLetteringAll($toselect,
true);
647 if ($nb_lettering < 0) {
650 $nb_lettering = max(0, abs($nb_lettering) - 2);
651 } elseif ($nb_lettering == 0) {
653 setEventMessages($langs->trans(
'AccountancyNoUnletteringModified'), array(),
'mesgs');
655 if ($nb_lettering == 1) {
656 setEventMessages($langs->trans(
'AccountancyOneUnletteringModifiedSuccessfully'), array(),
'mesgs');
657 } elseif ($nb_lettering > 1) {
658 setEventMessages($langs->trans(
'AccountancyUnletteringModifiedSuccessfully', $nb_lettering), array(),
'mesgs');
662 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
665 } elseif ($action ==
'unletteringmanual' && $confirm ==
"yes" && $permissiontoadd) {
667 $nb_lettering = $lettering->deleteLettering($toselect);
671 setEventMessages($langs->trans($result == 0 ?
'AccountancyNoUnletteringModified' :
'AccountancyOneUnletteringModifiedSuccessfully'), array(),
'mesgs');
672 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
687$form =
new Form($db);
689$title_page = $langs->trans(
"Operations").
' - '.$langs->trans(
"VueByAccountAccounting").
' (';
691 $title_page .= $langs->trans(
"BookkeepingSubAccount");
693 $title_page .= $langs->trans(
"Bookkeeping");
696$help_url =
'EN:Module_Double_Entry_Accounting|FR:Module_Comptabilité_en_Partie_Double';
697llxHeader(
'', $title_page, $help_url,
'', 0, 0,
'',
'',
'',
'mod-accountancy accountancy-consultation page-'.(($type ==
'sub') ?
'sub' :
'').
'ledger');
700 $companystatic =
new Societe($db);
701 $res = $companystatic->fetch($socid);
708 print
dol_get_fiche_head($head,
'accounting', $langs->trans(
"ThirdParty"), -1,
'company');
710 $linkback =
'<a href="'.DOL_URL_ROOT.
'/societe/list.php?restore_lastsearch_values=1">'.$langs->trans(
"BackToList").
'</a>';
712 dol_banner_tab($companystatic,
'socid', $linkback, ($user->socid ? 0 : 1),
'rowid',
'nom');
714 print
'<div class="fichecenter">';
716 print
'<div class="underbanner clearboth"></div>';
717 print
'<table class="border centpercent tableforfield">';
720 print
'<tr><td class="titlefield">'.$langs->trans(
'NatureOfThirdParty').
'</td><td>';
721 print $companystatic->getTypeUrl(1);
725 if ($companystatic->client && !empty($companystatic->code_client)) {
726 print
'<tr><td class="titlefield">';
727 print $langs->trans(
'CustomerCode').
'</td><td>';
729 $tmpcheck = $companystatic->check_codeclient();
730 if ($tmpcheck != 0 && $tmpcheck != -5) {
731 print
' <span class="error">('.$langs->trans(
"WrongCustomerCode").
')</span>';
737 if ($companystatic->fournisseur && !empty($companystatic->code_fournisseur)) {
738 print
'<tr><td class="titlefield">';
739 print $langs->trans(
'SupplierCode').
'</td><td>';
741 $tmpcheck = $companystatic->check_codefournisseur();
742 if ($tmpcheck != 0 && $tmpcheck != -5) {
743 print
' <span class="error">('.$langs->trans(
"WrongSupplierCode").
')</span>';
753 print
info_admin($langs->trans(
"WarningThisPageContainsOnlyEntriesTransferredInAccounting")).
'';
756 if (!empty(
$conf->dol_use_jmobile)) {
757 print
"\n".
'<div class="fichecenter"><div class="nowrap">'.
"\n";
760 if ($companystatic->client && !empty($companystatic->code_compta_client)) {
761 if ($mode !=
'customer') {
762 if (!empty($companystatic->code_compta_client)) {
763 $subledger_start_account = $subledger_end_account = $companystatic->code_compta_client;
765 $subledger_start_account = $subledger_end_account =
'';
767 print
'<a class="a-mesure-disabled marginleftonly marginrightonly reposition" href="' . $_SERVER[
"PHP_SELF"] .
'?mode=customer&socid='.$socid.
'&type=sub&search_accountancy_code_start='.$subledger_start_account.
'&search_accountancy_code_end='.$subledger_end_account.
'">';
769 print
'<span class="a-mesure marginleftonly marginrightonly">';
772 print $langs->trans(
"CustomerAccountancyCodeShort");
773 if ($mode !=
'customer') {
780 if ($companystatic->fournisseur && !empty($companystatic->code_compta_fournisseur)) {
781 if ($mode !=
'supplier') {
782 if (!empty($companystatic->code_compta_fournisseur)) {
783 $subledger_start_account = $subledger_end_account = $companystatic->code_compta_fournisseur;
785 $subledger_start_account = $subledger_end_account =
'';
787 print
'<a class="a-mesure-disabled marginleftonly marginrightonly reposition" href="' . $_SERVER[
"PHP_SELF"] .
'?mode=supplier&socid='.$socid.
'&type=sub&search_accountancy_code_start='.$subledger_start_account.
'&search_accountancy_code_end='.$subledger_end_account.
'">';
789 print
'<span class="a-mesure marginleftonly marginrightonly">';
791 print $langs->trans(
"SupplierAccountancyCodeShort");
792 if ($mode !=
'supplier') {
799 if (!empty(
$conf->dol_use_jmobile)) {
800 print
'</div></div>';
809$nbtotalofrecords =
'';
812 if ($type ==
'sub') {
813 $nbtotalofrecords =
$object->fetchAllByAccount($sortorder, $sortfield, 0, 0, $filter,
'AND', 1, 1);
815 $nbtotalofrecords =
$object->fetchAllByAccount($sortorder, $sortfield, 0, 0, $filter,
'AND', 0, 1);
818 if ($nbtotalofrecords < 0) {
826 if ($type ==
'sub') {
827 $result =
$object->fetchAllByAccount($sortorder, $sortfield, $limit, $offset, $filter,
'AND', 1);
829 $result =
$object->fetchAllByAccount($sortorder, $sortfield, $limit, $offset, $filter,
'AND', 0);
839$arrayofselected = is_array($toselect) ? $toselect : array();
846$arrayofmassactions = array();
847if (
getDolGlobalInt(
'ACCOUNTING_ENABLE_LETTERING') && $user->hasRight(
'accounting',
'mouvements',
'creer')) {
848 $arrayofmassactions[
'letteringauto'] =
img_picto(
'',
'check',
'class="pictofixedwidth"') . $langs->trans(
'LetteringAuto');
849 $arrayofmassactions[
'preunletteringauto'] =
img_picto(
'',
'uncheck',
'class="pictofixedwidth"') . $langs->trans(
'UnletteringAuto');
850 $arrayofmassactions[
'letteringmanual'] =
img_picto(
'',
'check',
'class="pictofixedwidth"') . $langs->trans(
'LetteringManual');
851 if ($type ==
'sub') {
852 $arrayofmassactions[
'letteringpartial'] =
img_picto(
'',
'check',
'class="pictofixedwidth"') . $langs->trans(
'LetteringPartial');
854 $arrayofmassactions[
'preunletteringmanual'] =
img_picto(
'',
'uncheck',
'class="pictofixedwidth"') . $langs->trans(
'UnletteringManual');
856if ($user->hasRight(
'accounting',
'mouvements',
'creer')) {
857 $arrayofmassactions[
'preclonebookkeepingwriting'] =
img_picto(
'',
'clone',
'class="pictofixedwidth"').$langs->trans(
"Clone");
859if ($user->hasRight(
'accounting',
'mouvements',
'creer')) {
860 $arrayofmassactions[
'preassignaccountbookkeepingwriting'] =
img_picto(
'',
'fa-exchange-alt',
'class="pictofixedwidth"').$langs->trans(
"AssignAccount");
862if ($user->hasRight(
'accounting',
'mouvements',
'creer')) {
863 $arrayofmassactions[
'prereturnaccountbookkeepingwriting'] =
img_picto(
'',
'undo',
'class="pictofixedwidth"').$langs->trans(
"ReturnAccount");
865if ($user->hasRight(
'accounting',
'mouvements',
'supprimer')) {
866 $arrayofmassactions[
'predeletebookkeepingwriting'] =
img_picto(
'',
'delete',
'class="pictofixedwidth"').$langs->trans(
"Delete");
869if (
GETPOSTINT(
'nomassaction') || in_array($massaction, array(
'preunletteringauto',
'preunletteringmanual',
'predeletebookkeepingwriting',
'preclonebookkeepingwriting',
'preassignaccountbookkeepingwriting',
'prereturnaccountbookkeepingwriting'))) {
870 $arrayofmassactions = array();
872$massactionbutton = $form->selectMassAction($massaction, $arrayofmassactions);
874print
'<form method="POST" id="searchFormList" action="'.$_SERVER[
"PHP_SELF"].
'">';
875print
'<input type="hidden" name="token" value="'.newToken().
'">';
876print
'<input type="hidden" name="action" value="list">';
877if ($optioncss !=
'') {
878 print
'<input type="hidden" name="optioncss" value="'.$optioncss.
'">';
880print
'<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
881print
'<input type="hidden" name="type" value="'.$type.
'">';
883 print
'<input type="hidden" name="socid" value="' . $socid .
'">';
885print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
886print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
887print
'<input type="hidden" name="contextpage" value="'.$contextpage.
'">';
889$parameters = array(
'param' => $param);
890$reshook = $hookmanager->executeHooks(
'addMoreActionsButtonsList', $parameters, $object, $action);
895$newcardbutton = empty($hookmanager->resPrint) ?
'' : $hookmanager->resPrint;
897if (empty($reshook)) {
900 $newcardbutton =
dolGetButtonTitle($langs->trans(
'ViewFlatList'),
'',
'fa fa-list paddingleft imgforviewmode', DOL_URL_ROOT .
'/accountancy/bookkeeping/list.php?' . $param);
901 if ($type ==
'sub') {
902 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'GroupByAccountAccounting'),
'',
'fa fa-stream paddingleft imgforviewmode', DOL_URL_ROOT .
'/accountancy/bookkeeping/listbyaccount.php?' . $url_param,
'', 1, array(
'morecss' =>
'marginleftonly'));
903 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'GroupBySubAccountAccounting'),
'',
'fa fa-align-left vmirror paddingleft imgforviewmode', DOL_URL_ROOT .
'/accountancy/bookkeeping/listbyaccount.php?type=sub&' . $url_param,
'', 1, array(
'morecss' =>
'marginleftonly btnTitleSelected'));
905 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'GroupByAccountAccounting'),
'',
'fa fa-stream paddingleft imgforviewmode', DOL_URL_ROOT .
'/accountancy/bookkeeping/listbyaccount.php?' . $url_param,
'', 1, array(
'morecss' =>
'marginleftonly btnTitleSelected'));
906 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'GroupBySubAccountAccounting'),
'',
'fa fa-align-left vmirror paddingleft imgforviewmode', DOL_URL_ROOT .
'/accountancy/bookkeeping/listbyaccount.php?type=sub&' . $url_param,
'', 1, array(
'morecss' =>
'marginleftonly'));
909 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'ExportToPdf'),
'',
'fa fa-file-pdf paddingleft', $_SERVER[
'PHP_SELF'] .
'?action=exporttopdf'.(!empty($type) ?
'&type=sub' :
'').
'&' . $url_param,
'', $permissiontoexport, array(
'morecss' =>
'marginleftonly'));
913 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'NewAccountingMvt'),
'',
'fa fa-plus-circle paddingleft', DOL_URL_ROOT.
'/accountancy/bookkeeping/card.php?action=create'.(!empty($type) ?
'&type=sub' :
'').
'&backtopage='.urlencode($_SERVER[
'PHP_SELF']),
'', $permissiontoadd);
916if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
917 $param .=
'&contextpage='.urlencode($contextpage);
919if ($limit > 0 && $limit !=
$conf->liste_limit) {
920 $param .=
'&limit='.((int) $limit);
923print_barre_liste($title_page, $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords,
'title_accountancy', 0, $newcardbutton,
'', $limit, 0, 0, 1);
925if ($massaction ==
'preunletteringauto') {
926 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassUnletteringAuto"), $langs->trans(
"ConfirmMassUnletteringQuestion", count($toselect)),
"unletteringauto",
null,
'', 0, 200, 500, 1);
927} elseif ($massaction ==
'preunletteringmanual') {
928 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassUnletteringManual"), $langs->trans(
"ConfirmMassUnletteringQuestion", count($toselect)),
"unletteringmanual",
null,
'', 0, 200, 500, 1);
929} elseif ($massaction ==
'predeletebookkeepingwriting') {
930 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassDeleteBookkeepingWriting"), $langs->trans(
"ConfirmMassDeleteBookkeepingWritingQuestion", count($toselect)),
"deletebookkeepingwriting",
null,
'', 0, 200, 500, 1);
931} elseif ($massaction ==
'preassignaccountbookkeepingwriting') {
932 $input = $formaccounting->select_account(
'',
'account', 1);
933 $formquestion = array(array(
'type' =>
'other',
'name' =>
'account',
'label' =>
'<span class="fieldrequired">' . $langs->trans(
"AccountAccountingShort") .
'</span>',
'value' => $input),);
934 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"confirmMassAssignAccountBookkeepingWritingConfirm"), $langs->trans(
"ConfirmMassAssignAccountBookkeepingWritingQuestion", count($toselect)),
"assignaccountbookkeepingwriting", $formquestion,
'', 0, 200, 500, 1);
935} elseif ($massaction ==
'preclonebookkeepingwriting') {
936 $input1 = $form->selectDate(
'',
'massdate', 0, 0, 0,
"create_mvt", 1, 1);
937 $input2 = $formaccounting->select_journal($journal_code,
'code_journal', 0, 0, 1, 1).
'</td>';
938 $formquestion = array(
941 'name' =>
'massdate',
942 'label' =>
'<span class="fieldrequired">' . $langs->trans(
"Docdate") .
'</span>',
948 $formquestion[] = array(
950 'name' =>
'code_journal',
951 'label' =>
'<span class="fieldrequired">' . $langs->trans(
"Codejournal") .
'</span>',
956 print $form->formconfirm(
957 $_SERVER[
"PHP_SELF"],
958 $langs->trans(
"ConfirmMassCloneBookkeepingWriting"),
959 $langs->trans(
"ConfirmMassCloneBookkeepingWritingQuestion", count($toselect)),
960 "clonebookkeepingwriting",
964} elseif ($massaction ==
'prereturnaccountbookkeepingwriting') {
965 $input1 = $form->selectDate(
'',
'massdate', 0, 0, 0,
"create_mvt", 1, 1);
966 $formquestion = array(array(
'type' =>
'other',
'name' =>
'massdate',
'label' =>
'<span class="fieldrequired">' . $langs->trans(
"Docdate") .
'</span>',
'value' => $input1));
967 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassReturnAccountBookkeepingWriting"), $langs->trans(
"ConfirmMassReturnAccountBookkeepingWritingQuestion", count($toselect)),
"returnaccountbookkeepingwriting", $formquestion,
'', 0, 200, 500, 1);
970include DOL_DOCUMENT_ROOT.
'/core/tpl/massactions_pre.tpl.php';
972$varpage = empty($contextpage) ? $_SERVER[
"PHP_SELF"] : $contextpage;
973$selectedfields = $form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage,
getDolGlobalString(
'MAIN_CHECKBOX_LEFT_COLUMN'));
974if ($massactionbutton && $contextpage !=
'poslist') {
975 $selectedfields .= $form->showCheckAddButtons(
'checkforselect', 1);
979if (preg_match(
'/^asc/i', $sortorder)) {
986if ($type ==
'sub' && !$socid) {
987 print
info_admin($langs->trans(
"WarningRecordWithoutSubledgerAreExcluded"));
994$moreforfilter .=
'<div class="divsearchfield">';
995$moreforfilter .= $langs->trans(
'AccountAccounting').
': ';
996$moreforfilter .=
'<div class="nowrap inline-block">';
999 $moreforfilter .= $formaccounting->select_auxaccount($search_accountancy_code_start,
'search_accountancy_code_start', $langs->trans(
'From'),
'maxwidth200');
1001 $moreforfilter .=
'<input type="text" class="maxwidth150" name="search_accountancy_code_start" value="'.dol_escape_htmltag($search_accountancy_code_start).
'" placeholder="'.$langs->trans(
'From').
'">';
1004 $moreforfilter .= $formaccounting->select_account($search_accountancy_code_start,
'search_accountancy_code_start', $langs->trans(
'From'), array(), 1, 1,
'maxwidth200');
1006$moreforfilter .=
' ';
1007if ($type ==
'sub') {
1009 $moreforfilter .= $formaccounting->select_auxaccount($search_accountancy_code_end,
'search_accountancy_code_end', $langs->trans(
'to'),
'maxwidth200');
1011 $moreforfilter .=
'<input type="text" class="maxwidth150" name="search_accountancy_code_end" value="'.dol_escape_htmltag($search_accountancy_code_end).
'" placeholder="'.$langs->trans(
'to').
'">';
1014 $moreforfilter .= $formaccounting->select_account($search_accountancy_code_end,
'search_accountancy_code_end', $langs->trans(
'to'), array(), 1, 1,
'maxwidth200');
1018 $stringforfirstkey = $langs->trans(
"KeyboardShortcut");
1019 if (
$conf->browser->name ==
'chrome') {
1020 $stringforfirstkey .=
' ALT +';
1021 } elseif (
$conf->browser->name ==
'firefox') {
1022 $stringforfirstkey .=
' ALT + SHIFT +';
1024 $stringforfirstkey .=
' CTL +';
1026 $moreforfilter .=
' <a id="previous_account" accesskey="p" title="' . $stringforfirstkey .
' p" class="classfortooltip" href="#"><i class="fa fa-chevron-left"></i></a>';
1027 $moreforfilter .=
' <a id="next_account" accesskey="n" title="' . $stringforfirstkey .
' n" class="classfortooltip" href="#"><i class="fa fa-chevron-right"></i></a>';
1028 $moreforfilter .= <<<SCRIPT
1029<script
type=
"text/javascript">
1030 jQuery(document).ready(
function() {
1031 var searchFormList = $(
'#searchFormList');
1032 var searchAccountancyCodeStart = $(
'#search_accountancy_code_start');
1033 var searchAccountancyCodeEnd = $(
'#search_accountancy_code_end');
1034 jQuery(
'#previous_account').on(
'click',
function() {
1035 var previousOption = searchAccountancyCodeStart.find(
'option:selected').prev(
'option');
1036 if (previousOption.length == 1) searchAccountancyCodeStart.val(previousOption.attr(
'value'));
1037 searchAccountancyCodeEnd.val(searchAccountancyCodeStart.val());
1038 searchFormList.submit();
1040 jQuery(
'#next_account').on(
'click',
function() {
1041 var nextOption = searchAccountancyCodeStart.find(
'option:selected').next(
'option');
1042 if (nextOption.length == 1) searchAccountancyCodeStart.val(nextOption.attr(
'value'));
1043 searchAccountancyCodeEnd.val(searchAccountancyCodeStart.val());
1044 searchFormList.submit();
1046 jQuery(
'input[name="search_mvt_num"]').on(
"keypress",
function(event) {
1053$moreforfilter .=
'</div>';
1054$moreforfilter .=
'</div>';
1057 $moreforfilter .=
'<div class="divsearchfield">';
1058 $moreforfilter .= $langs->trans(
'AccountingCategory') .
': ';
1059 $moreforfilter .=
'<div class="nowrap inline-block">';
1060 $moreforfilter .= $formaccounting->select_accounting_category($search_account_category,
'search_account_category', 1, 0, 0, 0);
1061 $moreforfilter .=
'</div>';
1062 $moreforfilter .=
'</div>';
1065$parameters = array();
1066$reshook = $hookmanager->executeHooks(
'printFieldPreListTitle', $parameters, $object, $action);
1067if (empty($reshook)) {
1068 $moreforfilter .= $hookmanager->resPrint;
1070 $moreforfilter = $hookmanager->resPrint;
1073print
'<div class="liste_titre liste_titre_bydiv centpercent">';
1074print $moreforfilter;
1077print
'<div class="div-table-responsive">';
1078print
'<table class="tagtable liste centpercent listwithfilterbefore">';
1081print
'<tr class="liste_titre_filter">';
1084 print
'<td class="liste_titre center">';
1085 $searchpicto = $form->showFilterButtons(
'left');
1090if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
1091 print
'<td class="liste_titre"><input type="text" name="search_mvt_num" class="width50" value="'.dol_escape_htmltag($search_mvt_num).
'"></td>';
1094if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
1095 print
'<td class="liste_titre center">';
1096 print $formaccounting->multi_select_journal($search_ledger_code,
'search_ledger_code', 0, 1, 1, 1,
'maxwidth75');
1100if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1101 print
'<td class="liste_titre center">';
1102 print
'<div class="nowrapfordate">';
1103 print $form->selectDate($search_date_start,
'search_date_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1105 print
'<div class="nowrapfordate">';
1106 print $form->selectDate($search_date_end,
'search_date_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1111if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
1112 print
'<td class="liste_titre"><input type="text" size="7" class="flat" name="search_doc_ref" value="'.dol_escape_htmltag($search_doc_ref).
'"/></td>';
1115if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1116 print
'<td class="liste_titre"><input type="text" size="7" class="flat" name="search_label_operation" value="'.dol_escape_htmltag($search_label_operation).
'"/></td>';
1119if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1120 print
'<td class="liste_titre center">';
1121 print
'<input type="text" size="3" class="flat" name="search_lettering_code" value="'.$search_lettering_code.
'"/>';
1122 print
'<br><span class="nowrap"><input type="checkbox" name="search_not_reconciled" value="notreconciled"'.($search_not_reconciled ==
'notreconciled' ?
' checked' :
'').
'>'.$langs->trans(
"NotReconciled").
'</span>';
1126if (!empty($arrayfields[
't.debit'][
'checked'])) {
1127 print
'<td class="liste_titre right"><input type="text" class="flat" name="search_debit" size="4" value="'.dol_escape_htmltag($search_debit).
'"></td>';
1130if (!empty($arrayfields[
't.credit'][
'checked'])) {
1131 print
'<td class="liste_titre right"><input type="text" class="flat" name="search_credit" size="4" value="'.dol_escape_htmltag($search_credit).
'"></td>';
1134if (!empty($arrayfields[
't.balance'][
'checked'])) {
1138if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1139 print
'<td class="liste_titre center">';
1140 print
'<div class="nowrapfordate">';
1141 print $form->selectDate($search_date_export_start,
'search_date_export_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1143 print
'<div class="nowrapfordate">';
1144 print $form->selectDate($search_date_export_end,
'search_date_export_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1149if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1150 print
'<td class="liste_titre center">';
1151 print
'<div class="nowrapfordate">';
1152 print $form->selectDate($search_date_validation_start,
'search_date_validation_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1154 print
'<div class="nowrapfordate">';
1155 print $form->selectDate($search_date_validation_end,
'search_date_validation_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1160if (!empty($arrayfields[
't.date_lim_reglement'][
'checked'])) {
1161 print
'<td class="liste_titre center">';
1162 print
'<div class="nowrapfordate">';
1163 print $form->selectDate($search_date_due_start,
'search_date_due_start_', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1165 print
'<div class="nowrapfordate">';
1166 print $form->selectDate($search_date_due_end,
'search_date_due_end_', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1170if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1171 print
'<td class="liste_titre center">';
1172 print
'<input class="flat searchstring maxwidth50" type="text" name="search_import_key" value="'.dol_escape_htmltag($search_import_key).
'">';
1177$parameters = array(
'arrayfields' => $arrayfields);
1178$reshook = $hookmanager->executeHooks(
'printFieldListOption', $parameters);
1179print $hookmanager->resPrint;
1183 print
'<td class="liste_titre center">';
1184 $searchpicto = $form->showFilterButtons();
1190print
'<tr class="liste_titre">';
1192 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch ');
1194if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
1195 print_liste_field_titre($arrayfields[
't.piece_num'][
'label'], $_SERVER[
'PHP_SELF'],
"t.piece_num",
"", $param,
'', $sortfield, $sortorder,
'tdoverflowmax80imp ');
1197if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
1198 print_liste_field_titre($arrayfields[
't.code_journal'][
'label'], $_SERVER[
'PHP_SELF'],
"t.code_journal",
"", $param,
'', $sortfield, $sortorder,
'center ');
1200if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1201 print_liste_field_titre($arrayfields[
't.doc_date'][
'label'], $_SERVER[
'PHP_SELF'],
"t.doc_date",
"", $param,
'', $sortfield, $sortorder,
'center ');
1203if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
1204 print_liste_field_titre($arrayfields[
't.doc_ref'][
'label'], $_SERVER[
'PHP_SELF'],
"t.doc_ref",
"", $param,
"", $sortfield, $sortorder);
1206if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1207 print_liste_field_titre($arrayfields[
't.label_operation'][
'label'], $_SERVER[
'PHP_SELF'],
"t.label_operation",
"", $param,
"", $sortfield, $sortorder);
1209if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1210 print_liste_field_titre($arrayfields[
't.lettering_code'][
'label'], $_SERVER[
'PHP_SELF'],
"t.lettering_code",
"", $param,
'', $sortfield, $sortorder,
'center ');
1212if (!empty($arrayfields[
't.debit'][
'checked'])) {
1213 print_liste_field_titre($arrayfields[
't.debit'][
'label'], $_SERVER[
'PHP_SELF'],
"t.debit",
"", $param,
'', $sortfield, $sortorder,
'right ');
1215if (!empty($arrayfields[
't.credit'][
'checked'])) {
1216 print_liste_field_titre($arrayfields[
't.credit'][
'label'], $_SERVER[
'PHP_SELF'],
"t.credit",
"", $param,
'', $sortfield, $sortorder,
'right ');
1218if (!empty($arrayfields[
't.balance'][
'checked'])) {
1219 print_liste_field_titre($arrayfields[
't.balance'][
'label'],
"",
"",
"", $param,
'', $sortfield, $sortorder,
'right ');
1221if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1222 print_liste_field_titre($arrayfields[
't.date_export'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_export",
"", $param,
'', $sortfield, $sortorder,
'center ');
1224if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1225 print_liste_field_titre($arrayfields[
't.date_validated'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_validated",
"", $param,
'', $sortfield, $sortorder,
'center ');
1228if (!empty($arrayfields[
't.date_lim_reglement'][
'checked'])) {
1229 print_liste_field_titre($arrayfields[
't.date_lim_reglement'][
'label'], $_SERVER[
'PHP_SELF'],
't.date_lim_reglement',
'', $param,
'', $sortfield, $sortorder,
'center ');
1231if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1232 print_liste_field_titre($arrayfields[
't.import_key'][
'label'], $_SERVER[
"PHP_SELF"],
"t.import_key",
"", $param,
'', $sortfield, $sortorder,
'center ');
1235$parameters = array(
'arrayfields' => $arrayfields,
'param' => $param,
'sortfield' => $sortfield,
'sortorder' => $sortorder);
1236$reshook = $hookmanager->executeHooks(
'printFieldListTitle', $parameters);
1237print $hookmanager->resPrint;
1239 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch ');
1243$displayed_account_number =
null;
1245$objectstatic =
null;
1255$sous_total_debit = 0;
1256$sous_total_credit = 0;
1269if (!empty($arrayfields[
't.piece_num'][
'checked'])) { $colspan++; }
1270if (!empty($arrayfields[
't.code_journal'][
'checked'])) { $colspan++; }
1271if (!empty($arrayfields[
't.doc_date'][
'checked'])) { $colspan++; }
1272if (!empty($arrayfields[
't.doc_ref'][
'checked'])) { $colspan++; }
1273if (!empty($arrayfields[
't.label_operation'][
'checked'])) { $colspan++; }
1274if (!empty($arrayfields[
't.date_export'][
'checked'])) { $colspanend++; }
1275if (!empty($arrayfields[
't.date_validated'][
'checked'])) { $colspanend++; }
1276if (!empty($arrayfields[
't.lettering_code'][
'checked'])) { $colspanend++; }
1282while ($i < min($num, $limit)) {
1285 if ($type ==
'sub') {
1297 if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
1300 if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
1303 if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1306 if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
1309 if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1312 if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1316 if (!empty($arrayfields[
't.balance'][
'checked'])) {
1319 if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1322 if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1326 if (!empty($arrayfields[
't.date_lim_reglement'][
'checked'])) {
1329 if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1332 if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1341 if ($accountg != $displayed_account_number || !isset($displayed_account_number)) {
1343 if (isset($displayed_account_number)) {
1344 print
'<tr class="liste_total">';
1345 if ($type ==
'sub') {
1346 print
'<td class="right" colspan="' . $colspan .
'">' . $langs->trans(
"TotalForAccount") .
' ' .
length_accounta($displayed_account_number) .
':</td>';
1348 print
'<td class="right" colspan="' . $colspan .
'">' . $langs->trans(
"TotalForAccount") .
' ' .
length_accountg($displayed_account_number) .
':</td>';
1350 print
'<td class="nowrap right">'.price(
price2num($sous_total_debit,
'MT')).
'</td>';
1351 print
'<td class="nowrap right">'.price(
price2num($sous_total_credit,
'MT')).
'</td>';
1352 if ($colspanend > 0) {
1353 print
'<td colspan="'.$colspanend.
'"></td>';
1357 $balance = $sous_total_debit - $sous_total_credit;
1358 print
'<tr class="liste_total">';
1359 print
'<td class="right" colspan="'.$colspan.
'">'.$langs->trans(
"Balance").
':</td>';
1361 print
'<td class="nowraponall right">';
1362 print
price(
price2num($sous_total_debit - $sous_total_credit,
'MT'));
1367 print
'<td class="nowraponall right">';
1368 print
price(
price2num($sous_total_credit - $sous_total_debit,
'MT'));
1371 if ($colspanend > 0) {
1372 print
'<td colspan="'.$colspanend.
'"></td>';
1378 print
'<tr class="trforbreaknobg">';
1379 print
'<td colspan="'.($totalarray[
'nbfield'] ?
$totalarray[
'nbfield'] : count($arrayfields) + 1).
'" class="tdforbreak">';
1380 if ($type ==
'sub') {
1381 if ($line->subledger_account !=
"" && $line->subledger_account !=
'-1') {
1382 print empty($line->subledger_label) ?
'<span class="error">'.$langs->trans(
"Unknown").
'</span>' : $line->subledger_label;
1387 print
'<span class="error">' . $langs->trans(
"Unknown");
1388 if ($line->subledger_label) {
1389 print
' (' . $line->subledger_label .
')';
1390 $htmltext =
'EmptyStringForSubledgerAccountButSubledgerLabelDefined';
1392 $htmltext =
'EmptyStringForSubledgerAccountAndSubledgerLabel';
1394 print $form->textwithpicto(
'', $htmltext);
1398 if ($line->numero_compte !=
"" && $line->numero_compte !=
'-1') {
1401 print
'<span class="error">' . $langs->trans(
"Unknown") .
'</span>';
1407 $displayed_account_number = $accountg;
1409 $sous_total_debit = 0;
1410 $sous_total_credit = 0;
1413 print
'<tr class="oddeven">';
1416 print
'<td class="nowraponall center">';
1417 if (($massactionbutton || $massaction) && $contextpage !=
'poslist') {
1419 if (in_array($line->id, $arrayofselected)) {
1422 print
'<input id="cb' . $line->id .
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="' . $line->id .
'"' . ($selected ?
' checked="checked"' :
'') .
' />';
1430 if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
1433 $object->piece_num = $line->piece_num;
1435 print
$object->getNomUrl(1,
'', 0,
'', 1);
1443 if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
1445 $result = $accountingjournal->fetch(0, $line->code_journal);
1446 $journaltoshow = (($result > 0) ? $accountingjournal->getNomUrl(0, 0, 0,
'', 0) : $line->code_journal);
1447 print
'<td class="center tdoverflowmax80">'.$journaltoshow.
'</td>';
1454 if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1455 print
'<td class="center">'.dol_print_date($line->doc_date,
'day').
'</td>';
1463 if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
1464 if ($line->doc_type ==
'customer_invoice') {
1465 $langs->loadLangs(array(
'bills'));
1467 require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
1468 $objectstatic =
new Facture($db);
1469 $objectstatic->fetch($line->fk_doc);
1474 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.$objectstatic->id;
1475 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir);
1476 } elseif ($line->doc_type ==
'supplier_invoice') {
1477 $langs->loadLangs(array(
'bills'));
1479 require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.facture.class.php';
1481 $objectstatic->fetch($line->fk_doc);
1483 $modulepart =
'invoice_supplier';
1485 $filedir =
$conf->fournisseur->facture->dir_output.
'/'.
get_exdir($line->fk_doc, 2, 0, 0, $objectstatic, $modulepart).dol_sanitizeFileName($line->doc_ref);
1486 $subdir =
get_exdir($objectstatic->id, 2, 0, 0, $objectstatic, $modulepart).dol_sanitizeFileName($line->doc_ref);
1487 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $subdir, $filedir);
1488 } elseif ($line->doc_type ==
'expense_report') {
1489 $langs->loadLangs(array(
'trips'));
1491 require_once DOL_DOCUMENT_ROOT.
'/expensereport/class/expensereport.class.php';
1493 $objectstatic->fetch($line->fk_doc);
1498 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.$objectstatic->id;
1499 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir);
1500 } elseif ($line->doc_type ==
'bank') {
1501 require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
1503 $objectstatic->fetch($line->fk_doc);
1508 print
'<td class="tdoverflowmax250">';
1511 if ($line->doc_type ==
'customer_invoice' || $line->doc_type ==
'supplier_invoice' || $line->doc_type ==
'expense_report') {
1512 print $objectstatic->getNomUrl(1,
'', 0, 0,
'', 0, -1, 1);
1513 print $documentlink;
1514 } elseif ($line->doc_type ==
'bank') {
1515 print $objectstatic->getNomUrl(1);
1516 $bank_ref = strstr($line->doc_ref,
'-');
1517 print
' <span class="classfortooltip" title="'.dol_escape_htmltag($line->doc_ref).
'">'.
dol_escape_htmltag($bank_ref).
'</span>';
1519 print $line->doc_ref;
1529 if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1531 $doc_ref = preg_replace(
'/\(.*\)/',
'', $line->doc_ref);
1533 print
'<td class="small tdoverflowmax350 classfortooltip" title="'.dol_escape_htmltag($line->label_operation).
'">'.
dol_escape_htmltag($line->label_operation).
'</td>';
1535 print
'<td class="small tdoverflowmax350 classfortooltip" title="'.dol_escape_htmltag($line->label_operation.($line->label_operation ?
'<br>' :
'').
'<span style="font-size:0.8em">('.
length_accounta($line->subledger_account).
')').
'">'.
dol_escape_htmltag($line->label_operation).($line->label_operation ?
'<br>' :
'').
'<span style="font-size:0.8em">('.
dol_escape_htmltag(
length_accounta($line->subledger_account)).
')</span></td>';
1543 if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1544 print
'<td class="center">'.dol_escape_htmltag((
string) $line->lettering_code).
'</td>';
1551 if (!empty($arrayfields[
't.debit'][
'checked'])) {
1552 print
'<td class="right nowraponall amount">'.($line->debit != 0 ?
price($line->debit) :
'').
'</td>';
1559 $totalarray[
'val'][
'totaldebit'] += (float) $line->debit;
1563 if (!empty($arrayfields[
't.credit'][
'checked'])) {
1564 print
'<td class="right nowraponall amount">'.($line->credit != 0 ?
price($line->credit) :
'').
'</td>';
1571 $totalarray[
'val'][
'totalcredit'] += (float) $line->credit;
1575 if (!empty($arrayfields[
't.balance'][
'checked'])) {
1576 print
'<td class="right nowraponall amount">'.price(
price2num($sous_total_debit + $line->debit - $sous_total_credit - $line->credit,
'MT')).
'</td>';
1583 $totalarray[
'val'][
'totalbalance'] += $line->debit - $line->credit;
1587 if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1588 print
'<td class="center">'.dol_print_date($line->date_export,
'dayhour').
'</td>';
1595 if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1596 print
'<td class="center">'.dol_print_date($line->date_validation,
'dayhour').
'</td>';
1603 if (!empty($arrayfields[
't.date_lim_reglement'][
'checked'])) {
1604 print
'<td class="center">'.dol_print_date($line->date_lim_reglement,
'day').
'</td>';
1610 if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1611 print
'<td class="tdoverflowmax125" title="'.dol_escape_htmltag($line->import_key).
'">'.
dol_escape_htmltag($line->import_key).
"</td>\n";
1618 $parameters = array(
'arrayfields' => $arrayfields,
'obj' => $line);
1619 $reshook = $hookmanager->executeHooks(
'printFieldListValue', $parameters);
1620 print $hookmanager->resPrint;
1624 print
'<td class="nowraponall center">';
1625 if (($massactionbutton || $massaction) && $contextpage !=
'poslist') {
1627 if (in_array($line->id, $arrayofselected)) {
1630 print
'<input id="cb' . $line->id .
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="' . $line->id .
'"' . ($selected ?
' checked="checked"' :
'') .
' />';
1639 $sous_total_debit += $line->debit;
1640 $sous_total_credit += $line->credit;
1647if ($num > 0 && $colspan > 0) {
1648 print
'<tr class="liste_total">';
1649 print
'<td class="right" colspan="'.$colspan.
'">'.$langs->trans(
"TotalForAccount").
' '.$accountg.
':</td>';
1650 print
'<td class="nowrap right">'.price(
price2num($sous_total_debit,
'MT')).
'</td>';
1651 print
'<td class="nowrap right">'.price(
price2num($sous_total_credit,
'MT')).
'</td>';
1652 if ($colspanend > 0) {
1653 print
'<td colspan="'.$colspanend.
'"></td>';
1658 $balance = $sous_total_debit - $sous_total_credit;
1659 print
'<tr class="liste_total">';
1660 print
'<td class="right" colspan="'.$colspan.
'">'.$langs->trans(
"Balance").
':</td>';
1662 print
'<td class="nowraponall right">';
1663 print
price(
price2num($sous_total_debit - $sous_total_credit,
'MT'));
1668 print
'<td class="nowraponall right">';
1669 print
price(
price2num($sous_total_credit - $sous_total_debit,
'MT'));
1672 if ($colspanend > 0) {
1673 print
'<td colspan="'.$colspanend.
'"></td>';
1680if (!empty($totalarray[
'val'][
'totaldebit'])) {
1683if (!empty($totalarray[
'val'][
'totalcredit'])) {
1684 $totalarray[
'val'][
'totalcredit'] = (float)
price2num($totalarray[
'val'][
'totalcredit'],
'MT');
1686if (!empty($totalarray[
'val'][
'totalbalance'])) {
1687 $totalarray[
'val'][
'totalbalance'] = (float)
price2num($totalarray[
'val'][
'totaldebit'] - $totalarray[
'val'][
'totalcredit'],
'MT');
1692include DOL_DOCUMENT_ROOT.
'/core/tpl/list_print_total.tpl.php';
1697 foreach ($arrayfields as $key => $val) {
1698 if (!empty($val[
'checked'])) {
1702 print
'<tr><td colspan="'.$colspan.
'"><span class="opacitymedium">'.$langs->trans(
"NoRecordFound").
'</span></td></tr>';
1705$parameters = array(
'arrayfields' => $arrayfields);
1706$reshook = $hookmanager->executeHooks(
'printFieldListFooter', $parameters, $object, $action);
1707print $hookmanager->resPrint;
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)
length_accounta($accounta)
Return Auxiliary accounting account of thirdparties with defined length.
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 bank transaction lines.
Class to manage categories of an accounting account.
Class to manage accounting journals.
Class to manage Ledger (General Ledger and Subledger)
Class to manage Trips and Expenses.
Class to manage suppliers invoices.
Class to manage invoices.
Class to manage third parties objects (customers, suppliers, prospects...)
Class to build sending documents with model Espadon.
societe_prepare_head(Societe $object)
Return array of tabs to used on pages for third parties cards.
dol_get_last_day($year, $month=12, $gm=false)
Return GMT time for last day of a month or year.
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.
GETPOSTDATE($prefix, $hourTime='', $gm='auto', $saverestore='')
Helper function that combines values of a dolibarr DatePicker (such as Form\selectDate) for year,...
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.
showValueWithClipboardCPButton($valuetocopy, $showonlyonhover=1, $texttoshow='')
Create a button to copy $valuetocopy in the clipboard (for copy and paste feature).
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.
dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limittoshow=0, $moretabssuffix='', $dragdropfile=0, $morecssdiv='')
Show tabs of a record.
price2num($amount, $rounding='', $option=0)
Function that return a number with universal decimal format (decimal separator is '.
dolGetButtonTitle($label, $helpText='', $iconClass='fa fa-file', $url='', $id='', $status=1, $params=array())
Function dolGetButtonTitle : this kind of buttons are used in title in list.
dol_get_fiche_end($notab=0)
Return tab footer of a card.
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.
dol_now($mode='auto')
Return date for now.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
dol_print_date($time, $format='', $tzoutput='auto', $outputlangs=null, $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
dolGetButtonTitleSeparator($moreClass="")
Add space between dolGetButtonTitle.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
dol_sanitizeFileName($str, $newstr='_', $unaccent=1, $includequotes=0)
Clean a string to use it as a file name.
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
info_admin($text, $infoonimgalt=0, $nodiv=0, $admin='1', $morecss='hideonsmartphone', $textfordropdown='', $picto='')
Show information in HTML for admin users or standard users.
get_exdir($num, $level, $alpha, $withoutslash, $object, $modulepart='')
Return a path to have a the directory according to object where files are stored.
dol_getdate($timestamp, $fast=false, $forcetimezone='')
Return an array with locale date info.
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...
if(preg_match('/(crypted|dolcrypt):/i', $dolibarr_main_db_pass)||!empty($dolibarr_main_db_encrypted_pass)) $conf db type
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.