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",
"other"));
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:int');
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'];
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"));
757 if (!empty($conf->dol_use_jmobile)) {
758 print
"\n".
'<div class="fichecenter"><div class="nowrap">'.
"\n";
761 if ($companystatic->client && !empty($companystatic->code_compta_client)) {
762 if ($mode !=
'customer') {
763 if (!empty($companystatic->code_compta_client)) {
764 $subledger_start_account = $subledger_end_account = $companystatic->code_compta_client;
766 $subledger_start_account = $subledger_end_account =
'';
768 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.
'">';
770 print
'<span class="a-mesure marginleftonly marginrightonly">';
773 print $langs->trans(
"CustomerAccountancyCodeShort");
774 if ($mode !=
'customer') {
781 if ($companystatic->fournisseur && !empty($companystatic->code_compta_fournisseur)) {
782 if ($mode !=
'supplier') {
783 if (!empty($companystatic->code_compta_fournisseur)) {
784 $subledger_start_account = $subledger_end_account = $companystatic->code_compta_fournisseur;
786 $subledger_start_account = $subledger_end_account =
'';
788 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.
'">';
790 print
'<span class="a-mesure marginleftonly marginrightonly">';
792 print $langs->trans(
"SupplierAccountancyCodeShort");
793 if ($mode !=
'supplier') {
800 if (!empty($conf->dol_use_jmobile)) {
801 print
'</div></div>';
810$nbtotalofrecords =
'';
813 if ($type ==
'sub') {
814 $nbtotalofrecords =
$object->fetchAllByAccount($sortorder, $sortfield, 0, 0, $filter,
'AND', 1, 1);
816 $nbtotalofrecords =
$object->fetchAllByAccount($sortorder, $sortfield, 0, 0, $filter,
'AND', 0, 1);
819 if ($nbtotalofrecords < 0) {
827 if ($type ==
'sub') {
828 $result =
$object->fetchAllByAccount($sortorder, $sortfield, $limit, $offset, $filter,
'AND', 1);
830 $result =
$object->fetchAllByAccount($sortorder, $sortfield, $limit, $offset, $filter,
'AND', 0);
840$arrayofselected = is_array($toselect) ? $toselect : array();
847$arrayofmassactions = array();
848if (
getDolGlobalInt(
'ACCOUNTING_ENABLE_LETTERING') && $user->hasRight(
'accounting',
'mouvements',
'creer')) {
849 $arrayofmassactions[
'letteringauto'] =
img_picto(
'',
'check',
'class="pictofixedwidth"') . $langs->trans(
'LetteringAuto');
850 $arrayofmassactions[
'preunletteringauto'] =
img_picto(
'',
'uncheck',
'class="pictofixedwidth"') . $langs->trans(
'UnletteringAuto');
851 $arrayofmassactions[
'letteringmanual'] =
img_picto(
'',
'check',
'class="pictofixedwidth"') . $langs->trans(
'LetteringManual');
852 if ($type ==
'sub') {
853 $arrayofmassactions[
'letteringpartial'] =
img_picto(
'',
'check',
'class="pictofixedwidth"') . $langs->trans(
'LetteringPartial');
855 $arrayofmassactions[
'preunletteringmanual'] =
img_picto(
'',
'uncheck',
'class="pictofixedwidth"') . $langs->trans(
'UnletteringManual');
857if ($user->hasRight(
'accounting',
'mouvements',
'creer')) {
858 $arrayofmassactions[
'preclonebookkeepingwriting'] =
img_picto(
'',
'clone',
'class="pictofixedwidth"').$langs->trans(
"Clone");
860if ($user->hasRight(
'accounting',
'mouvements',
'creer')) {
861 $arrayofmassactions[
'preassignaccountbookkeepingwriting'] =
img_picto(
'',
'fa-exchange-alt',
'class="pictofixedwidth"').$langs->trans(
"AssignAccount");
863if ($user->hasRight(
'accounting',
'mouvements',
'creer')) {
864 $arrayofmassactions[
'prereturnaccountbookkeepingwriting'] =
img_picto(
'',
'undo',
'class="pictofixedwidth"').$langs->trans(
"ReturnAccount");
866if ($user->hasRight(
'accounting',
'mouvements',
'supprimer')) {
867 $arrayofmassactions[
'predeletebookkeepingwriting'] =
img_picto(
'',
'delete',
'class="pictofixedwidth"').$langs->trans(
"Delete");
870if (
GETPOSTINT(
'nomassaction') || in_array($massaction, array(
'preunletteringauto',
'preunletteringmanual',
'predeletebookkeepingwriting',
'preclonebookkeepingwriting',
'preassignaccountbookkeepingwriting',
'prereturnaccountbookkeepingwriting'))) {
871 $arrayofmassactions = array();
873$massactionbutton = $form->selectMassAction($massaction, $arrayofmassactions);
875print
'<form method="POST" id="searchFormList" action="'.dolBuildUrl($_SERVER[
"PHP_SELF"]).
'">';
876print
'<input type="hidden" name="token" value="'.newToken().
'">';
877print
'<input type="hidden" name="action" value="list">';
878if ($optioncss !=
'') {
879 print
'<input type="hidden" name="optioncss" value="'.$optioncss.
'">';
881print
'<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
882print
'<input type="hidden" name="type" value="'.$type.
'">';
884 print
'<input type="hidden" name="socid" value="' . $socid .
'">';
886print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
887print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
888print
'<input type="hidden" name="contextpage" value="'.$contextpage.
'">';
890$parameters = array(
'param' => $param);
891$reshook = $hookmanager->executeHooks(
'addMoreActionsButtonsList', $parameters, $object, $action);
896$newcardbutton = empty($hookmanager->resPrint) ?
'' : $hookmanager->resPrint;
898if (empty($reshook)) {
901 $newcardbutton =
dolGetButtonTitle($langs->trans(
'ViewFlatList'),
'',
'fa fa-list paddingleft imgforviewmode', DOL_URL_ROOT .
'/accountancy/bookkeeping/list.php?' . $param);
902 if ($type ==
'sub') {
903 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'GroupByAccountAccounting'),
'',
'fa fa-stream paddingleft imgforviewmode', DOL_URL_ROOT .
'/accountancy/bookkeeping/listbyaccount.php?' . $url_param,
'', 1, array(
'morecss' =>
'marginleftonly'));
904 $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'));
906 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'GroupByAccountAccounting'),
'',
'fa fa-stream paddingleft imgforviewmode', DOL_URL_ROOT .
'/accountancy/bookkeeping/listbyaccount.php?' . $url_param,
'', 1, array(
'morecss' =>
'marginleftonly btnTitleSelected'));
907 $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'));
910 $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'));
914 $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);
917if ($contextpage != $_SERVER[
"PHP_SELF"]) {
918 $param .=
'&contextpage='.urlencode($contextpage);
920if ($limit > 0 && $limit != $conf->liste_limit) {
921 $param .=
'&limit='.((int) $limit);
924print_barre_liste($title_page, $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords,
'title_accountancy', 0, $newcardbutton,
'', $limit, 0, 0, 1);
926if ($massaction ==
'preunletteringauto') {
927 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassUnletteringAuto"), $langs->trans(
"ConfirmMassUnletteringQuestion", count($toselect)),
"unletteringauto",
null,
'', 0, 200, 500, 1);
928} elseif ($massaction ==
'preunletteringmanual') {
929 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassUnletteringManual"), $langs->trans(
"ConfirmMassUnletteringQuestion", count($toselect)),
"unletteringmanual",
null,
'', 0, 200, 500, 1);
930} elseif ($massaction ==
'predeletebookkeepingwriting') {
931 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassDeleteBookkeepingWriting"), $langs->trans(
"ConfirmMassDeleteBookkeepingWritingQuestion", count($toselect)),
"deletebookkeepingwriting",
null,
'', 0, 200, 500, 1);
932} elseif ($massaction ==
'preassignaccountbookkeepingwriting') {
933 $input = $formaccounting->select_account(
'',
'account', 1);
934 $formquestion = array(array(
'type' =>
'other',
'name' =>
'account',
'label' =>
'<span class="fieldrequired">' . $langs->trans(
"AccountAccountingShort") .
'</span>',
'value' => $input),);
935 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"confirmMassAssignAccountBookkeepingWritingConfirm"), $langs->trans(
"ConfirmMassAssignAccountBookkeepingWritingQuestion", count($toselect)),
"assignaccountbookkeepingwriting", $formquestion,
'', 0, 200, 500, 1);
936} elseif ($massaction ==
'preclonebookkeepingwriting') {
937 $input1 = $form->selectDate(
'',
'massdate', 0, 0, 0,
"create_mvt", 1, 1);
938 $input2 = $formaccounting->select_journal($journal_code,
'code_journal', 0, 0, 1, 1).
'</td>';
939 $formquestion = array(
942 'name' =>
'massdate',
943 'label' =>
'<span class="fieldrequired">' . $langs->trans(
"Docdate") .
'</span>',
949 $formquestion[] = array(
951 'name' =>
'code_journal',
952 'label' =>
'<span class="fieldrequired">' . $langs->trans(
"Codejournal") .
'</span>',
957 print $form->formconfirm(
958 $_SERVER[
"PHP_SELF"],
959 $langs->trans(
"ConfirmMassCloneBookkeepingWriting"),
960 $langs->trans(
"ConfirmMassCloneBookkeepingWritingQuestion", count($toselect)),
961 "clonebookkeepingwriting",
965} elseif ($massaction ==
'prereturnaccountbookkeepingwriting') {
966 $input1 = $form->selectDate(
'',
'massdate', 0, 0, 0,
"create_mvt", 1, 1);
967 $formquestion = array(array(
'type' =>
'other',
'name' =>
'massdate',
'label' =>
'<span class="fieldrequired">' . $langs->trans(
"Docdate") .
'</span>',
'value' => $input1));
968 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassReturnAccountBookkeepingWriting"), $langs->trans(
"ConfirmMassReturnAccountBookkeepingWritingQuestion", count($toselect)),
"returnaccountbookkeepingwriting", $formquestion,
'', 0, 200, 500, 1);
971include DOL_DOCUMENT_ROOT.
'/core/tpl/massactions_pre.tpl.php';
973$varpage = empty($contextpage) ? $_SERVER[
"PHP_SELF"] : $contextpage;
974$selectedfields = $form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage,
getDolGlobalString(
'MAIN_CHECKBOX_LEFT_COLUMN'));
975if ($massactionbutton && $contextpage !=
'poslist') {
976 $selectedfields .= $form->showCheckAddButtons(
'checkforselect', 1);
980if (preg_match(
'/^asc/i', $sortorder)) {
987if ($type ==
'sub' && !$socid) {
988 print
info_admin($langs->trans(
"WarningRecordWithoutSubledgerAreExcluded"));
995$moreforfilter .=
'<div class="divsearchfield">';
996$moreforfilter .= $langs->trans(
'AccountAccounting').
': ';
997$moreforfilter .=
'<div class="nowrap inline-block">';
1000 $moreforfilter .= $formaccounting->select_auxaccount($search_accountancy_code_start,
'search_accountancy_code_start', $langs->trans(
'From'),
'maxwidth200');
1002 $moreforfilter .=
'<input type="text" class="maxwidth150" name="search_accountancy_code_start" value="'.dol_escape_htmltag($search_accountancy_code_start).
'" placeholder="'.$langs->trans(
'From').
'">';
1005 $moreforfilter .= $formaccounting->select_account($search_accountancy_code_start,
'search_accountancy_code_start', $langs->trans(
'From'), array(), 1, 1,
'maxwidth200');
1007$moreforfilter .=
' ';
1008if ($type ==
'sub') {
1010 $moreforfilter .= $formaccounting->select_auxaccount($search_accountancy_code_end,
'search_accountancy_code_end', $langs->trans(
'to'),
'maxwidth200');
1012 $moreforfilter .=
'<input type="text" class="maxwidth150" name="search_accountancy_code_end" value="'.dol_escape_htmltag($search_accountancy_code_end).
'" placeholder="'.$langs->trans(
'to').
'">';
1015 $moreforfilter .= $formaccounting->select_account($search_accountancy_code_end,
'search_accountancy_code_end', $langs->trans(
'to'), array(), 1, 1,
'maxwidth200');
1019 $moreforfilter .=
' <a id="previous_account" accesskey="p" title="' . $conf->browser->stringforfirstkey .
' p" class="classfortooltip" href="#"><i class="fa fa-chevron-left"></i></a>';
1020 $moreforfilter .=
' <a id="next_account" accesskey="n" title="' . $conf->browser->stringforfirstkey .
' n" class="classfortooltip" href="#"><i class="fa fa-chevron-right"></i></a>';
1021 $moreforfilter .= <<<SCRIPT
1022<script
type=
"text/javascript">
1023 jQuery(document).ready(
function() {
1024 var searchFormList = $(
'#searchFormList');
1025 var searchAccountancyCodeStart = $(
'#search_accountancy_code_start');
1026 var searchAccountancyCodeEnd = $(
'#search_accountancy_code_end');
1027 jQuery(
'#previous_account').on(
'click',
function() {
1028 var previousOption = searchAccountancyCodeStart.find(
'option:selected').prev(
'option');
1029 if (previousOption.length == 1) searchAccountancyCodeStart.val(previousOption.attr(
'value'));
1030 searchAccountancyCodeEnd.val(searchAccountancyCodeStart.val());
1031 searchFormList.submit();
1033 jQuery(
'#next_account').on(
'click',
function() {
1034 var nextOption = searchAccountancyCodeStart.find(
'option:selected').next(
'option');
1035 if (nextOption.length == 1) searchAccountancyCodeStart.val(nextOption.attr(
'value'));
1036 searchAccountancyCodeEnd.val(searchAccountancyCodeStart.val());
1037 searchFormList.submit();
1039 jQuery(
'input[name="search_mvt_num"]').on(
"keypress",
function(event) {
1046$moreforfilter .=
'</div>';
1047$moreforfilter .=
'</div>';
1050 $moreforfilter .=
'<div class="divsearchfield">';
1051 $moreforfilter .= $langs->trans(
'AccountingCategory') .
': ';
1052 $moreforfilter .=
'<div class="nowrap inline-block">';
1053 $moreforfilter .= $formaccounting->select_accounting_category($search_account_category,
'search_account_category', 1, 0, 0, 0);
1054 $moreforfilter .=
'</div>';
1055 $moreforfilter .=
'</div>';
1058$parameters = array();
1059$reshook = $hookmanager->executeHooks(
'printFieldPreListTitle', $parameters, $object, $action);
1060if (empty($reshook)) {
1061 $moreforfilter .= $hookmanager->resPrint;
1063 $moreforfilter = $hookmanager->resPrint;
1066print
'<div class="liste_titre liste_titre_bydiv centpercent">';
1067print $moreforfilter;
1070print
'<div class="div-table-responsive">';
1071print
'<table class="tagtable liste centpercent listwithfilterbefore">';
1074print
'<tr class="liste_titre_filter">';
1077 print
'<td class="liste_titre center">';
1078 $searchpicto = $form->showFilterButtons(
'left');
1083if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
1084 print
'<td class="liste_titre"><input type="text" name="search_mvt_num" class="width50" value="'.dol_escape_htmltag($search_mvt_num).
'"></td>';
1087if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
1088 print
'<td class="liste_titre center">';
1089 print $formaccounting->multi_select_journal($search_ledger_code,
'search_ledger_code', 0, 1, 1, 1,
'maxwidth75');
1093if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1094 print
'<td class="liste_titre center">';
1095 print
'<div class="nowrapfordate">';
1096 print $form->selectDate($search_date_start,
'search_date_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1098 print
'<div class="nowrapfordate">';
1099 print $form->selectDate($search_date_end,
'search_date_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1104if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
1105 print
'<td class="liste_titre"><input type="text" size="7" class="flat" name="search_doc_ref" value="'.dol_escape_htmltag($search_doc_ref).
'"/></td>';
1108if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1109 print
'<td class="liste_titre"><input type="text" size="7" class="flat" name="search_label_operation" value="'.dol_escape_htmltag($search_label_operation).
'"/></td>';
1112if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1113 print
'<td class="liste_titre center">';
1114 print
'<input type="text" size="3" class="flat" name="search_lettering_code" value="'.$search_lettering_code.
'"/>';
1115 print
'<br><span class="nowrap"><input type="checkbox" name="search_not_reconciled" value="notreconciled"'.($search_not_reconciled ==
'notreconciled' ?
' checked' :
'').
'>'.$langs->trans(
"NotReconciled").
'</span>';
1119if (!empty($arrayfields[
't.debit'][
'checked'])) {
1120 print
'<td class="liste_titre right"><input type="text" class="flat" name="search_debit" size="4" value="'.dol_escape_htmltag($search_debit).
'"></td>';
1123if (!empty($arrayfields[
't.credit'][
'checked'])) {
1124 print
'<td class="liste_titre right"><input type="text" class="flat" name="search_credit" size="4" value="'.dol_escape_htmltag($search_credit).
'"></td>';
1127if (!empty($arrayfields[
't.balance'][
'checked'])) {
1131if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1132 print
'<td class="liste_titre center">';
1133 print
'<div class="nowrapfordate">';
1134 print $form->selectDate($search_date_export_start,
'search_date_export_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1136 print
'<div class="nowrapfordate">';
1137 print $form->selectDate($search_date_export_end,
'search_date_export_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1142if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1143 print
'<td class="liste_titre center">';
1144 print
'<div class="nowrapfordate">';
1145 print $form->selectDate($search_date_validation_start,
'search_date_validation_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1147 print
'<div class="nowrapfordate">';
1148 print $form->selectDate($search_date_validation_end,
'search_date_validation_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1153if (!empty($arrayfields[
't.date_lim_reglement'][
'checked'])) {
1154 print
'<td class="liste_titre center">';
1155 print
'<div class="nowrapfordate">';
1156 print $form->selectDate($search_date_due_start,
'search_date_due_start_', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1158 print
'<div class="nowrapfordate">';
1159 print $form->selectDate($search_date_due_end,
'search_date_due_end_', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1163if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1164 print
'<td class="liste_titre center">';
1165 print
'<input class="flat searchstring maxwidth50" type="text" name="search_import_key" value="'.dol_escape_htmltag($search_import_key).
'">';
1170$parameters = array(
'arrayfields' => $arrayfields);
1171$reshook = $hookmanager->executeHooks(
'printFieldListOption', $parameters);
1172print $hookmanager->resPrint;
1176 print
'<td class="liste_titre center">';
1177 $searchpicto = $form->showFilterButtons();
1183print
'<tr class="liste_titre">';
1185 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch ');
1187if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
1188 print_liste_field_titre($arrayfields[
't.piece_num'][
'label'], $_SERVER[
'PHP_SELF'],
"t.piece_num",
"", $param,
'', $sortfield, $sortorder,
'tdoverflowmax80imp ');
1190if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
1191 print_liste_field_titre($arrayfields[
't.code_journal'][
'label'], $_SERVER[
'PHP_SELF'],
"t.code_journal",
"", $param,
'', $sortfield, $sortorder,
'center ');
1193if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1194 print_liste_field_titre($arrayfields[
't.doc_date'][
'label'], $_SERVER[
'PHP_SELF'],
"t.doc_date",
"", $param,
'', $sortfield, $sortorder,
'center ');
1196if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
1197 print_liste_field_titre($arrayfields[
't.doc_ref'][
'label'], $_SERVER[
'PHP_SELF'],
"t.doc_ref",
"", $param,
"", $sortfield, $sortorder);
1199if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1200 print_liste_field_titre($arrayfields[
't.label_operation'][
'label'], $_SERVER[
'PHP_SELF'],
"t.label_operation",
"", $param,
"", $sortfield, $sortorder);
1202if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1203 print_liste_field_titre($arrayfields[
't.lettering_code'][
'label'], $_SERVER[
'PHP_SELF'],
"t.lettering_code",
"", $param,
'', $sortfield, $sortorder,
'center ');
1205if (!empty($arrayfields[
't.debit'][
'checked'])) {
1206 print_liste_field_titre($arrayfields[
't.debit'][
'label'], $_SERVER[
'PHP_SELF'],
"t.debit",
"", $param,
'', $sortfield, $sortorder,
'right ');
1208if (!empty($arrayfields[
't.credit'][
'checked'])) {
1209 print_liste_field_titre($arrayfields[
't.credit'][
'label'], $_SERVER[
'PHP_SELF'],
"t.credit",
"", $param,
'', $sortfield, $sortorder,
'right ');
1211if (!empty($arrayfields[
't.balance'][
'checked'])) {
1212 print_liste_field_titre($arrayfields[
't.balance'][
'label'],
"",
"",
"", $param,
'', $sortfield, $sortorder,
'right ');
1214if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1215 print_liste_field_titre($arrayfields[
't.date_export'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_export",
"", $param,
'', $sortfield, $sortorder,
'center ');
1217if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1218 print_liste_field_titre($arrayfields[
't.date_validated'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_validated",
"", $param,
'', $sortfield, $sortorder,
'center ');
1221if (!empty($arrayfields[
't.date_lim_reglement'][
'checked'])) {
1222 print_liste_field_titre($arrayfields[
't.date_lim_reglement'][
'label'], $_SERVER[
'PHP_SELF'],
't.date_lim_reglement',
'', $param,
'', $sortfield, $sortorder,
'center ');
1224if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1225 print_liste_field_titre($arrayfields[
't.import_key'][
'label'], $_SERVER[
"PHP_SELF"],
"t.import_key",
"", $param,
'', $sortfield, $sortorder,
'center ');
1228$parameters = array(
'arrayfields' => $arrayfields,
'param' => $param,
'sortfield' => $sortfield,
'sortorder' => $sortorder);
1229$reshook = $hookmanager->executeHooks(
'printFieldListTitle', $parameters);
1230print $hookmanager->resPrint;
1232 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch ');
1236$displayed_account_number =
null;
1238$objectstatic =
null;
1248$sous_total_debit = 0;
1249$sous_total_credit = 0;
1262if (!empty($arrayfields[
't.piece_num'][
'checked'])) { $colspan++; }
1263if (!empty($arrayfields[
't.code_journal'][
'checked'])) { $colspan++; }
1264if (!empty($arrayfields[
't.doc_date'][
'checked'])) { $colspan++; }
1265if (!empty($arrayfields[
't.doc_ref'][
'checked'])) { $colspan++; }
1266if (!empty($arrayfields[
't.label_operation'][
'checked'])) { $colspan++; }
1267if (!empty($arrayfields[
't.date_export'][
'checked'])) { $colspanend++; }
1268if (!empty($arrayfields[
't.date_validated'][
'checked'])) { $colspanend++; }
1269if (!empty($arrayfields[
't.lettering_code'][
'checked'])) { $colspanend++; }
1275while ($i < min($num, $limit)) {
1278 if ($type ==
'sub') {
1290 if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
1293 if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
1296 if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1299 if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
1302 if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1305 if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1309 if (!empty($arrayfields[
't.balance'][
'checked'])) {
1312 if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1315 if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1319 if (!empty($arrayfields[
't.date_lim_reglement'][
'checked'])) {
1322 if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1325 if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1334 if ($accountg != $displayed_account_number || !isset($displayed_account_number)) {
1336 if (isset($displayed_account_number)) {
1337 print
'<tr class="liste_total">';
1338 if ($type ==
'sub') {
1339 print
'<td class="right" colspan="' . $colspan .
'">' . $langs->trans(
"TotalForAccount") .
' ' .
length_accounta($displayed_account_number) .
':</td>';
1341 print
'<td class="right" colspan="' . $colspan .
'">' . $langs->trans(
"TotalForAccount") .
' ' .
length_accountg($displayed_account_number) .
':</td>';
1343 print
'<td class="nowrap right">'.price(
price2num($sous_total_debit,
'MT')).
'</td>';
1344 print
'<td class="nowrap right">'.price(
price2num($sous_total_credit,
'MT')).
'</td>';
1345 if ($colspanend > 0) {
1346 print
'<td colspan="'.$colspanend.
'"></td>';
1350 $balance = $sous_total_debit - $sous_total_credit;
1351 print
'<tr class="liste_total">';
1352 print
'<td class="right" colspan="'.$colspan.
'">'.$langs->trans(
"Balance").
':</td>';
1354 print
'<td class="nowraponall right">';
1355 print
price(
price2num($sous_total_debit - $sous_total_credit,
'MT'));
1360 print
'<td class="nowraponall right">';
1361 print
price(
price2num($sous_total_credit - $sous_total_debit,
'MT'));
1364 if ($colspanend > 0) {
1365 print
'<td colspan="'.$colspanend.
'"></td>';
1371 print
'<tr class="trforbreaknobg">';
1372 print
'<td colspan="'.($totalarray[
'nbfield'] ?
$totalarray[
'nbfield'] : count($arrayfields) + 1).
'" class="tdforbreak">';
1373 if ($type ==
'sub') {
1374 if ($line->subledger_account !=
"" && $line->subledger_account !=
'-1') {
1375 print empty($line->subledger_label) ?
'<span class="error">'.$langs->trans(
"Unknown").
'</span>' : $line->subledger_label;
1380 print
'<span class="error">' . $langs->trans(
"Unknown");
1381 if ($line->subledger_label) {
1382 print
' (' . $line->subledger_label .
')';
1383 $htmltext =
'EmptyStringForSubledgerAccountButSubledgerLabelDefined';
1385 $htmltext =
'EmptyStringForSubledgerAccountAndSubledgerLabel';
1387 print $form->textwithpicto(
'', $htmltext);
1391 if ($line->numero_compte !=
"" && $line->numero_compte !=
'-1') {
1394 print
'<span class="error">' . $langs->trans(
"Unknown") .
'</span>';
1400 $displayed_account_number = $accountg;
1402 $sous_total_debit = 0;
1403 $sous_total_credit = 0;
1406 print
'<tr class="oddeven">';
1409 print
'<td class="nowraponall center">';
1410 if (($massactionbutton || $massaction) && $contextpage !=
'poslist') {
1412 if (in_array($line->id, $arrayofselected)) {
1415 print
'<input id="cb' . $line->id .
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="' . $line->id .
'"' . ($selected ?
' checked="checked"' :
'') .
' />';
1423 if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
1424 print
'<td class="nowraponall">';
1426 $object->piece_num = $line->piece_num;
1428 print
$object->getNomUrl(1,
'', 0,
'', 1);
1429 print
'<span class="hideonsmartphone">';
1430 if (!empty($line->date_export)) {
1431 print
img_picto($langs->trans(
"DateExport").
": ".
dol_print_date($line->date_export,
'dayhour').
" (".$langs->trans(
"TransactionExportDesc").
")",
'fa-file-export',
'class="paddingleft pictofixedwidth opacitymedium"');
1433 if (!empty($line->date_validation)) {
1434 print
img_picto($langs->trans(
"DateValidation").
": ".
dol_print_date($line->date_validation,
'dayhour').
" (".$langs->trans(
"TransactionBlockedLockedDesc").
")",
'fa-lock',
'class="paddingleft pictofixedwidth opacitymedium"');
1444 if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
1446 $result = $accountingjournal->fetch(0, $line->code_journal);
1447 $journaltoshow = (($result > 0) ? $accountingjournal->getNomUrl(0, 0, 0,
'', 0) : $line->code_journal);
1448 print
'<td class="center tdoverflowmax80">'.$journaltoshow.
'</td>';
1455 if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1456 print
'<td class="center">'.dol_print_date($line->doc_date,
'day').
'</td>';
1464 if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
1465 if ($line->doc_type ==
'customer_invoice') {
1466 $langs->loadLangs(array(
'bills'));
1468 require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
1469 $objectstatic =
new Facture($db);
1470 $objectstatic->fetch($line->fk_doc);
1475 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.$objectstatic->id;
1476 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir);
1477 } elseif ($line->doc_type ==
'supplier_invoice') {
1478 $langs->loadLangs(array(
'bills'));
1480 require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.facture.class.php';
1482 $objectstatic->fetch($line->fk_doc);
1484 $modulepart =
'invoice_supplier';
1486 $filedir = $conf->fournisseur->facture->dir_output.
'/'.
get_exdir($line->fk_doc, 2, 0, 0, $objectstatic, $modulepart).dol_sanitizeFileName($line->doc_ref);
1487 $subdir =
get_exdir($objectstatic->id, 2, 0, 0, $objectstatic, $modulepart).dol_sanitizeFileName($line->doc_ref);
1488 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $subdir, $filedir);
1489 } elseif ($line->doc_type ==
'expense_report') {
1490 $langs->loadLangs(array(
'trips'));
1492 require_once DOL_DOCUMENT_ROOT.
'/expensereport/class/expensereport.class.php';
1494 $objectstatic->fetch($line->fk_doc);
1499 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.$objectstatic->id;
1500 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir);
1501 } elseif ($line->doc_type ==
'bank') {
1502 require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
1504 $objectstatic->fetch($line->fk_doc);
1509 print
'<td class="tdoverflowmax250">';
1512 if ($line->doc_type ==
'customer_invoice' || $line->doc_type ==
'supplier_invoice' || $line->doc_type ==
'expense_report') {
1513 print $objectstatic->getNomUrl(1,
'', 0, 0,
'', 0, -1, 1);
1514 print $documentlink;
1515 } elseif ($line->doc_type ==
'bank') {
1516 print $objectstatic->getNomUrl(1);
1517 $bank_ref = strstr($line->doc_ref,
'-');
1518 print
' <span class="classfortooltip" title="'.dol_escape_htmltag($line->doc_ref).
'">'.
dol_escape_htmltag($bank_ref).
'</span>';
1520 print $line->doc_ref;
1530 if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1532 $doc_ref = preg_replace(
'/\(.*\)/',
'', $line->doc_ref);
1534 print
'<td class="small tdoverflowmax350 classfortooltip" title="'.dol_escape_htmltag($line->label_operation).
'">'.
dol_escape_htmltag($line->label_operation).
'</td>';
1536 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>';
1544 if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1545 print
'<td class="center">'.dol_escape_htmltag((
string) $line->lettering_code).
'</td>';
1552 if (!empty($arrayfields[
't.debit'][
'checked'])) {
1553 print
'<td class="right nowraponall amount">'.($line->debit != 0 ?
price($line->debit) :
'').
'</td>';
1560 $totalarray[
'val'][
'totaldebit'] += (float) $line->debit;
1564 if (!empty($arrayfields[
't.credit'][
'checked'])) {
1565 print
'<td class="right nowraponall amount">'.($line->credit != 0 ?
price($line->credit) :
'').
'</td>';
1572 $totalarray[
'val'][
'totalcredit'] += (float) $line->credit;
1576 if (!empty($arrayfields[
't.balance'][
'checked'])) {
1577 print
'<td class="right nowraponall amount">'.price(
price2num($sous_total_debit + $line->debit - $sous_total_credit - $line->credit,
'MT')).
'</td>';
1584 $totalarray[
'val'][
'totalbalance'] += $line->debit - $line->credit;
1588 if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1589 print
'<td class="center">'.dol_print_date($line->date_export,
'dayhour').
'</td>';
1596 if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1597 print
'<td class="center">'.dol_print_date($line->date_validation,
'dayhour').
'</td>';
1604 if (!empty($arrayfields[
't.date_lim_reglement'][
'checked'])) {
1605 print
'<td class="center">'.dol_print_date($line->date_lim_reglement,
'day').
'</td>';
1611 if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1612 print
'<td class="tdoverflowmax125" title="'.dol_escape_htmltag($line->import_key).
'">'.
dol_escape_htmltag($line->import_key).
"</td>\n";
1619 $parameters = array(
'arrayfields' => $arrayfields,
'obj' => $line);
1620 $reshook = $hookmanager->executeHooks(
'printFieldListValue', $parameters);
1621 print $hookmanager->resPrint;
1625 print
'<td class="nowraponall center">';
1626 if (($massactionbutton || $massaction) && $contextpage !=
'poslist') {
1628 if (in_array($line->id, $arrayofselected)) {
1631 print
'<input id="cb' . $line->id .
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="' . $line->id .
'"' . ($selected ?
' checked="checked"' :
'') .
' />';
1640 $sous_total_debit += $line->debit;
1641 $sous_total_credit += $line->credit;
1648if ($num > 0 && $colspan > 0) {
1649 print
'<tr class="liste_total">';
1650 print
'<td class="right" colspan="'.$colspan.
'">'.$langs->trans(
"TotalForAccount").
' '.$accountg.
':</td>';
1651 print
'<td class="nowrap right">'.price(
price2num($sous_total_debit,
'MT')).
'</td>';
1652 print
'<td class="nowrap right">'.price(
price2num($sous_total_credit,
'MT')).
'</td>';
1653 if ($colspanend > 0) {
1654 print
'<td colspan="'.$colspanend.
'"></td>';
1659 $balance = $sous_total_debit - $sous_total_credit;
1660 print
'<tr class="liste_total">';
1661 print
'<td class="right" colspan="'.$colspan.
'">'.$langs->trans(
"Balance").
':</td>';
1663 print
'<td class="nowraponall right">';
1664 print
price(
price2num($sous_total_debit - $sous_total_credit,
'MT'));
1669 print
'<td class="nowraponall right">';
1670 print
price(
price2num($sous_total_credit - $sous_total_debit,
'MT'));
1673 if ($colspanend > 0) {
1674 print
'<td colspan="'.$colspanend.
'"></td>';
1681if (!empty($totalarray[
'val'][
'totaldebit'])) {
1684if (!empty($totalarray[
'val'][
'totalcredit'])) {
1685 $totalarray[
'val'][
'totalcredit'] = (float)
price2num($totalarray[
'val'][
'totalcredit'],
'MT');
1687if (!empty($totalarray[
'val'][
'totalbalance'])) {
1688 $totalarray[
'val'][
'totalbalance'] = (float)
price2num($totalarray[
'val'][
'totaldebit'] - $totalarray[
'val'][
'totalcredit'],
'MT');
1693include DOL_DOCUMENT_ROOT.
'/core/tpl/list_print_total.tpl.php';
1698 foreach ($arrayfields as $key => $val) {
1699 if (!empty($val[
'checked'])) {
1703 print
'<tr><td colspan="'.$colspan.
'"><span class="opacitymedium">'.$langs->trans(
"NoRecordFound").
'</span></td></tr>';
1706$parameters = array(
'arrayfields' => $arrayfields);
1707$reshook = $hookmanager->executeHooks(
'printFieldListFooter', $parameters, $object, $action);
1708print $hookmanager->resPrint;
if(! $sortfield) if(! $sortorder) $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_now($mode='gmt')
Return date for now.
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.
dol_sanitizeFileName($str, $newstr='_', $unaccent=1, $includequotes=0, $allowdash=0)
Clean a string to use it as a file name.
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.
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_print_date($time, $format='', $tzoutput='auto', $outputlangs=null, $encodetooutput=false, $decorate=0)
Output date in a string format according to outputlangs (or langs if not defined).
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
isModEnabled($module)
Is Dolibarr module enabled.
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...
if(preg_match('/(crypted|dolcrypt):/i', $dolibarr_main_db_pass)||!empty($dolibarr_main_db_encrypted_pass)) $conf db type
'integer', 'integer:ObjectClass:PathToClass[:AddCreateButtonOrNot[:Filter[:Sortfield]]]',...
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.