31require
'../../main.inc.php';
33require_once DOL_DOCUMENT_ROOT.
'/core/lib/accounting.lib.php';
34require_once DOL_DOCUMENT_ROOT.
'/core/lib/company.lib.php';
35require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/lettering.class.php';
36require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/bookkeeping.class.php';
37require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountingjournal.class.php';
38require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formaccounting.class.php';
39require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formfile.class.php';
40require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formother.class.php';
41require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
52$langs->loadLangs(array(
"accountancy",
"categories",
"compta",
"other"));
54$journal_code =
GETPOST(
'code_journal',
'alpha');
55$account =
GETPOST(
"account",
'int');
58$action =
GETPOST(
'action',
'aZ09');
60$mode = (
GETPOST(
'mode',
'alpha') ?
GETPOST(
'mode',
'alpha') :
'customer');
61$massaction =
GETPOST(
'massaction',
'alpha');
62$confirm =
GETPOST(
'confirm',
'alpha');
63$toselect =
GETPOST(
'toselect',
'array:int');
64$type =
GETPOST(
'type',
'alpha');
66 $context_default =
'bookkeepingbysubaccountlist';
68 $context_default =
'bookkeepingbyaccountlist';
70$contextpage =
GETPOST(
'contextpage',
'aZ') ?
GETPOST(
'contextpage',
'aZ') : $context_default;
72$search_doc_date =
GETPOSTDATE(
'doc_date',
'getpost');
74$search_date_startyear =
GETPOSTINT(
'search_date_startyear');
75$search_date_startmonth =
GETPOSTINT(
'search_date_startmonth');
76$search_date_startday =
GETPOSTINT(
'search_date_startday');
77$search_date_start =
GETPOSTDATE(
'search_date_start',
'getpost',
'auto',
'search_date_start_accountancy');
79$search_date_endyear =
GETPOSTINT(
'search_date_endyear');
80$search_date_endmonth =
GETPOSTINT(
'search_date_endmonth');
81$search_date_endday =
GETPOSTINT(
'search_date_endday');
82$search_date_end =
GETPOSTDATE(
'search_date_end',
'getpostend',
'auto',
'search_date_end_accountancy');
84$search_date_export_startyear =
GETPOSTINT(
'search_date_export_startyear');
85$search_date_export_startmonth =
GETPOSTINT(
'search_date_export_startmonth');
86$search_date_export_startday =
GETPOSTINT(
'search_date_export_startday');
87$search_date_export_start =
GETPOSTDATE(
'search_date_export_start',
'getpost');
89$search_date_export_endyear =
GETPOSTINT(
'search_date_export_endyear');
90$search_date_export_endmonth =
GETPOSTINT(
'search_date_export_endmonth');
91$search_date_export_endday =
GETPOSTINT(
'search_date_export_endday');
92$search_date_export_end =
GETPOSTDATE(
'search_date_export_start',
'getpostend');
94$search_date_validation_startyear =
GETPOSTINT(
'search_date_validation_startyear');
95$search_date_validation_startmonth =
GETPOSTINT(
'search_date_validation_startmonth');
96$search_date_validation_startday =
GETPOSTINT(
'search_date_validation_startday');
97$search_date_validation_start =
GETPOSTDATE(
'search_date_validation_start',
'getpost');
99$search_date_validation_endyear =
GETPOSTINT(
'search_date_validation_endyear');
100$search_date_validation_endmonth =
GETPOSTINT(
'search_date_validation_endmonth');
101$search_date_validation_endday =
GETPOSTINT(
'search_date_validation_endday');
102$search_date_validation_end =
GETPOSTDATE(
'search_date_validation_end',
'getpostend');
105$search_date_due_start_day =
GETPOSTINT(
'search_date_due_start_day');
106$search_date_due_start_month =
GETPOSTINT(
'search_date_due_start_month');
107$search_date_due_start_year =
GETPOSTINT(
'search_date_due_start_year');
108$search_date_due_start =
GETPOSTDATE(
'search_date_due_start_',
'getpost');
111$search_date_due_end_day =
GETPOSTINT(
'search_date_due_end_day');
112$search_date_due_end_month =
GETPOSTINT(
'search_date_due_end_month');
113$search_date_due_end_year =
GETPOSTINT(
'search_date_due_end_year');
114$search_date_due_end =
GETPOSTDATE(
'search_date_due_end_',
'getpostend');
116$search_import_key =
GETPOST(
"search_import_key",
'alpha');
118$search_account_category =
GETPOSTINT(
'search_account_category');
120$search_accountancy_code_start =
GETPOST(
'search_accountancy_code_start',
'alpha');
121if ($search_accountancy_code_start == - 1) {
122 $search_accountancy_code_start =
'';
124$search_accountancy_code_end =
GETPOST(
'search_accountancy_code_end',
'alpha');
125if ($search_accountancy_code_end == - 1) {
126 $search_accountancy_code_end =
'';
128$search_doc_ref =
GETPOST(
'search_doc_ref',
'alpha');
129$search_label_operation =
GETPOST(
'search_label_operation',
'alpha');
130$search_mvt_num =
GETPOST(
'search_mvt_num',
'alpha');
131$search_direction =
GETPOST(
'search_direction',
'alpha');
132$search_ledger_code =
GETPOST(
'search_ledger_code',
'array');
133$search_debit =
GETPOST(
'search_debit',
'alpha');
134$search_credit =
GETPOST(
'search_credit',
'alpha');
135$search_lettering_code =
GETPOST(
'search_lettering_code',
'alpha');
136$search_not_reconciled =
GETPOST(
'search_not_reconciled',
'alpha');
139 $action =
'delbookkeepingyear';
144$sortfield =
GETPOST(
'sortfield',
'aZ09comma');
145$sortorder =
GETPOST(
'sortorder',
'aZ09comma');
146$optioncss =
GETPOST(
'optioncss',
'alpha');
148if (empty($page) || $page < 0) {
151$offset = $limit * $page;
152$pageprev = $page - 1;
153$pagenext = $page + 1;
154if ($sortorder ==
"") {
157if ($sortfield ==
"") {
158 $sortfield =
"t.doc_date,t.rowid";
164$hookmanager->initHooks(array($context_default));
167$form =
new Form($db);
169if (empty($search_date_start) && empty($search_date_end) && !GETPOSTISSET(
'search_date_startday') && !GETPOSTISSET(
'search_date_startmonth') && !GETPOSTISSET(
'search_date_starthour')) {
170 $sql =
"SELECT date_start, date_end";
171 $sql .=
" FROM ".MAIN_DB_PREFIX.
"accounting_fiscalyear ";
173 $sql .=
" WHERE rowid = " .
getDolGlobalInt(
'ACCOUNTANCY_FISCALYEAR_DEFAULT');
175 $sql .=
" WHERE date_start < '" . $db->idate(
dol_now()) .
"' and date_end > '" . $db->idate(
dol_now()) .
"'";
177 $sql .= $db->plimit(1);
178 $res = $db->query($sql);
180 if ($res !==
false && $db->num_rows($res) > 0) {
181 $fiscalYear = $db->fetch_object($res);
182 $search_date_start = strtotime($fiscalYear->date_start);
183 $search_date_end = strtotime($fiscalYear->date_end);
190 $year_end = $year_start + 1;
191 $month_end = $month_start - 1;
192 if ($month_end < 1) {
196 $search_date_start =
dol_mktime(0, 0, 0, $month_start, 1, $year_start);
203 't.piece_num' => array(
'label' =>
"TransactionNumShort",
'checked' =>
'1'),
204 't.code_journal' => array(
'label' =>
"Codejournal",
'checked' =>
'1'),
205 't.doc_date' => array(
'label' =>
"Docdate",
'checked' =>
'1'),
206 't.doc_ref' => array(
'label' =>
"Piece",
'checked' =>
'1'),
207 't.label_operation' => array(
'label' =>
"Label",
'checked' =>
'1'),
208 't.lettering_code' => array(
'label' =>
"Lettering",
'checked' =>
'1'),
209 't.debit' => array(
'label' =>
"AccountingDebit",
'checked' =>
'1'),
210 't.credit' => array(
'label' =>
"AccountingCredit",
'checked' =>
'1'),
211 't.balance' => array(
'label' =>
"Balance",
'checked' =>
'1'),
212 't.date_export' => array(
'label' =>
"DateExport",
'checked' =>
'-1'),
213 't.date_validated' => array(
'label' =>
"DateValidation",
'checked' =>
'-1',
'enabled' => (
string) (
int) !
getDolGlobalString(
"ACCOUNTANCY_DISABLE_CLOSURE_LINE_BY_LINE")),
214 't.date_lim_reglement' => array(
'label' =>
"DateDue",
'checked' =>
'0'),
215 't.import_key' => array(
'label' =>
"ImportId",
'checked' =>
'-1',
'position' => 1100),
219 unset($arrayfields[
't.lettering_code']);
222if ($search_date_start && empty($search_date_startyear)) {
224 $search_date_startyear = $tmparray[
'year'];
225 $search_date_startmonth = $tmparray[
'mon'];
226 $search_date_startday = $tmparray[
'mday'];
228if ($search_date_end && empty($search_date_endyear)) {
230 $search_date_endyear = $tmparray[
'year'];
231 $search_date_endmonth = $tmparray[
'mon'];
232 $search_date_endday = $tmparray[
'mday'];
238if ($user->socid > 0) {
241if (!$user->hasRight(
'accounting',
'mouvements',
'lire')) {
250$permissiontoread = $user->hasRight(
'accounting',
'mouvements',
'lire');
251$permissiontoadd = $user->hasRight(
'accounting',
'mouvements',
'creer');
252$permissiontodelete = $user->hasRight(
'accounting',
'mouvements',
'supprimer');
253$permissiontoexport = $user->hasRight(
'accounting',
'mouvements',
'export');
264if (
GETPOST(
'cancel',
'alpha')) {
268if (!
GETPOST(
'confirmmassaction',
'alpha') && $massaction !=
'preunletteringauto' && $massaction !=
'preunletteringmanual' && $massaction !=
'predeletebookkeepingwriting') {
272$parameters = array(
'socid' => $socid);
273$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
278if (empty($reshook)) {
279 include DOL_DOCUMENT_ROOT.
'/core/actions_changeselectedfields.inc.php';
281 if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
282 $search_doc_date =
'';
283 $search_account_category =
'';
284 $search_accountancy_code_start =
'';
285 $search_accountancy_code_end =
'';
286 $search_label_account =
'';
287 $search_doc_ref =
'';
288 $search_label_operation =
'';
289 $search_mvt_num =
'';
290 $search_direction =
'';
291 $search_ledger_code = array();
292 $search_date_start =
'';
293 $search_date_end =
'';
294 $search_date_startyear =
'';
295 $search_date_startmonth =
'';
296 $search_date_startday =
'';
297 $search_date_endyear =
'';
298 $search_date_endmonth =
'';
299 $search_date_endday =
'';
300 $search_date_export_start =
'';
301 $search_date_export_end =
'';
302 $search_date_export_startyear =
'';
303 $search_date_export_startmonth =
'';
304 $search_date_export_startday =
'';
305 $search_date_export_endyear =
'';
306 $search_date_export_endmonth =
'';
307 $search_date_export_endday =
'';
308 $search_date_validation_start =
'';
309 $search_date_validation_end =
'';
310 $search_date_validation_startyear =
'';
311 $search_date_validation_startmonth =
'';
312 $search_date_validation_startday =
'';
313 $search_date_validation_endyear =
'';
314 $search_date_validation_endmonth =
'';
315 $search_date_validation_endday =
'';
317 $search_date_due_start_day =
'';
318 $search_date_due_start_month =
'';
319 $search_date_due_start_year =
'';
320 $search_date_due_start =
'';
322 $search_date_due_end_day =
'';
323 $search_date_due_end_month =
'';
324 $search_date_due_end_year =
'';
325 $search_date_due_end =
'';
326 $search_lettering_code =
'';
329 $search_not_reconciled =
'';
330 $search_import_key =
'';
332 unset($_SESSION[
'DOLDATE_search_date_start_accountancy_day']);
333 unset($_SESSION[
'DOLDATE_search_date_start_accountancy_month']);
334 unset($_SESSION[
'DOLDATE_search_date_start_accountancy_year']);
335 unset($_SESSION[
'DOLDATE_search_date_end_accountancy_day']);
336 unset($_SESSION[
'DOLDATE_search_date_end_accountancy_month']);
337 unset($_SESSION[
'DOLDATE_search_date_end_accountancy_year']);
340 if (!empty($socid)) {
341 $param =
'&socid='.$socid;
343 if (!empty($search_date_start)) {
344 $filter[
't.doc_date>='] = $search_date_start;
345 $param .=
'&search_date_startmonth='.$search_date_startmonth.
'&search_date_startday='.$search_date_startday.
'&search_date_startyear='.$search_date_startyear;
347 if (!empty($search_date_end)) {
348 $filter[
't.doc_date<='] = $search_date_end;
349 $param .=
'&search_date_endmonth='.$search_date_endmonth.
'&search_date_endday='.$search_date_endday.
'&search_date_endyear='.$search_date_endyear;
351 if (!empty($search_doc_date)) {
352 $filter[
't.doc_date'] = $search_doc_date;
353 $param .=
'&doc_datemonth='.GETPOSTINT(
'doc_datemonth').
'&doc_dateday='.
GETPOSTINT(
'doc_dateday').
'&doc_dateyear='.
GETPOSTINT(
'doc_dateyear');
355 if ($search_account_category !=
'-1' && !empty($search_account_category)) {
356 require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountancycategory.class.php';
359 $listofaccountsforgroup = $accountingcategory->getCptsCat(0,
'fk_accounting_category = '.((
int) $search_account_category));
360 $listofaccountsforgroup2 = array();
361 if (is_array($listofaccountsforgroup)) {
362 foreach ($listofaccountsforgroup as $tmpval) {
363 $listofaccountsforgroup2[] =
"'".$db->escape((
string) $tmpval[
'account_number']).
"'";
366 if (!empty($listofaccountsforgroup2)) {
367 $filter[
't.search_accounting_code_in'] = implode(
',', $listofaccountsforgroup2);
369 $filter[
't.search_accounting_code_in'] =
"''";
370 setEventMessages($langs->trans(
"ThisCategoryHasNoItems"),
null,
'warnings');
372 $param .=
'&search_account_category='.urlencode((
string) ($search_account_category));
374 if (!empty($search_accountancy_code_start)) {
375 if ($type ==
'sub') {
376 $filter[
't.subledger_account>='] = $search_accountancy_code_start;
378 $filter[
't.numero_compte>='] = $search_accountancy_code_start;
380 $param .=
'&search_accountancy_code_start=' . urlencode($search_accountancy_code_start);
382 if (!empty($search_accountancy_code_end)) {
383 if ($type ==
'sub') {
384 $filter[
't.subledger_account<='] = $search_accountancy_code_end;
386 $filter[
't.numero_compte<='] = $search_accountancy_code_end;
388 $param .=
'&search_accountancy_code_end=' . urlencode($search_accountancy_code_end);
390 if (!empty($search_label_account)) {
391 $filter[
't.label_compte'] = $search_label_account;
392 $param .=
'&search_label_compte='.urlencode($search_label_account);
394 if (!empty($search_mvt_num)) {
395 $filter[
't.piece_num'] = $search_mvt_num;
396 $param .=
'&search_mvt_num='.urlencode((
string) ($search_mvt_num));
398 if (!empty($search_doc_ref)) {
399 $filter[
't.doc_ref'] = $search_doc_ref;
400 $param .=
'&search_doc_ref='.urlencode($search_doc_ref);
402 if (!empty($search_label_operation)) {
403 $filter[
't.label_operation'] = $search_label_operation;
404 $param .=
'&search_label_operation='.urlencode($search_label_operation);
406 if (!empty($search_direction)) {
407 $filter[
't.sens'] = $search_direction;
408 $param .=
'&search_direction='.urlencode($search_direction);
410 if (!empty($search_ledger_code)) {
411 $filter[
't.code_journal'] = $search_ledger_code;
412 foreach ($search_ledger_code as $code) {
413 $param .=
'&search_ledger_code[]='.urlencode($code);
416 if (!empty($search_lettering_code)) {
417 $filter[
't.lettering_code'] = $search_lettering_code;
418 $param .=
'&search_lettering_code='.urlencode($search_lettering_code);
420 if (!empty($search_debit)) {
421 $filter[
't.debit'] = $search_debit;
422 $param .=
'&search_debit='.urlencode($search_debit);
424 if (!empty($search_credit)) {
425 $filter[
't.credit'] = $search_credit;
426 $param .=
'&search_credit='.urlencode($search_credit);
428 if (!empty($search_not_reconciled)) {
429 $filter[
't.reconciled_option'] = $search_not_reconciled;
430 $param .=
'&search_not_reconciled='.urlencode($search_not_reconciled);
432 if (!empty($search_date_export_start)) {
433 $filter[
't.date_export>='] = $search_date_export_start;
434 $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;
436 if (!empty($search_date_export_end)) {
437 $filter[
't.date_export<='] = $search_date_export_end;
438 $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;
440 if (!empty($search_date_validation_start)) {
441 $filter[
't.date_validated>='] = $search_date_validation_start;
442 $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;
444 if (!empty($search_date_validation_end)) {
445 $filter[
't.date_validated<='] = $search_date_validation_end;
446 $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;
449 if (!empty($search_date_due_start)) {
450 $filter[
't.date_lim_reglement>='] = $search_date_due_start;
451 $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;
454 if (!empty($search_date_due_end)) {
455 $filter[
't.date_lim_reglement<='] = $search_date_due_end;
456 $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;
458 if (!empty($search_import_key)) {
459 $filter[
't.import_key'] = $search_import_key;
460 $param .=
'&search_import_key='.urlencode($search_import_key);
463 $url_param = substr($param, 1);
465 $param =
'&type='.$type.$param;
469 if ($action ===
'exporttopdf' && $permissiontoadd) {
470 if ($type ==
"sub") {
471 $object->fetchAllByAccount($sortorder, $sortfield, 0, 0, $filter,
'AND', 1);
473 $object->fetchAllByAccount($sortorder, $sortfield, 0, 0, $filter);
475 require_once DOL_DOCUMENT_ROOT .
'/core/modules/accountancy/doc/pdf_ledger.modules.php';
477 $pdf->fromDate = $search_date_start;
478 $pdf->toDate = $search_date_end;
479 $pdf->ledgerType = $type;
481 $result = $pdf->write_file($object, $langs);
492 $objectclass =
'Bookkeeping';
493 $objectlabel =
'Bookkeeping';
494 $uploaddir = $conf->societe->dir_output;
497 include DOL_DOCUMENT_ROOT.
'/core/actions_massactions.inc.php';
499 if (!$error && $action ==
'deletebookkeepingwriting' && $confirm ==
"yes" && $user->hasRight(
'accounting',
'mouvements',
'supprimer')) {
504 $nb_lettering = $lettering->bookkeepingLetteringAll($toselect,
true);
505 if ($nb_lettering < 0) {
513 foreach ($toselect as $toselectid) {
514 $result =
$object->fetch($toselectid);
515 if ($result > 0 && (!isset(
$object->date_validation) ||
$object->date_validation ===
'')) {
524 } elseif ($result < 0) {
528 } elseif (isset(
$object->date_validation) &&
$object->date_validation !=
'') {
529 setEventMessages($langs->trans(
"ValidatedRecordWhereFound"),
null,
'errors');
542 } elseif ($nbok > 0) {
548 header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?noreset=1".($param ?
'&'.$param :
''));
556 if (!$error && $action ==
'clonebookkeepingwriting' && $confirm ==
"yes" && $user->hasRight(
'accounting',
'mouvements',
'creer')) {
557 $result =
$object->newCloneMass($toselect, $journal_code, $massdate);
563 header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?noreset=1".($param ?
'&'.$param :
''));
571 if (!$error && $action ==
'assignaccountbookkeepingwriting' && $confirm ==
"yes" && $user->hasRight(
'accounting',
'mouvements',
'creer')) {
572 $result =
$object->assignAccountMass($toselect, (
int) $account);
578 header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?noreset=1".($param ?
'&'.$param :
''));
586 if (!$error && $action ==
'returnaccountbookkeepingwriting' && $confirm ==
"yes" && $user->hasRight(
'accounting',
'mouvements',
'creer')) {
587 $result =
$object->newReturnAccount($toselect, $journal_code, $massdate);
593 header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?noreset=1".($param ?
'&'.$param :
''));
602 if ($massaction ==
'letteringauto' && $permissiontoadd) {
604 $nb_lettering = $lettering->bookkeepingLetteringAll($toselect);
605 if ($nb_lettering < 0) {
608 $nb_lettering = max(0, abs($nb_lettering) - 2);
609 } elseif ($nb_lettering == 0) {
611 setEventMessages($langs->trans(
'AccountancyNoLetteringModified'), array(),
'mesgs');
613 if ($nb_lettering == 1) {
614 setEventMessages($langs->trans(
'AccountancyOneLetteringModifiedSuccessfully'), array(),
'mesgs');
615 } elseif ($nb_lettering > 1) {
616 setEventMessages($langs->trans(
'AccountancyLetteringModifiedSuccessfully', $nb_lettering), array(),
'mesgs');
620 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
623 } elseif ($massaction ==
'letteringmanual' && $permissiontoadd) {
625 $result = $lettering->updateLettering($toselect);
629 setEventMessages($langs->trans($result == 0 ?
'AccountancyNoLetteringModified' :
'AccountancyOneLetteringModifiedSuccessfully'), array(),
'mesgs');
630 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
633 } elseif ($type ==
'sub' && $massaction ==
'letteringpartial') {
635 $result = $lettering->updateLettering($toselect, 0,
true);
639 setEventMessages($langs->trans($result == 0 ?
'AccountancyNoLetteringModified' :
'AccountancyOneLetteringModifiedSuccessfully'), array(),
'mesgs');
640 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
643 } elseif ($action ==
'unletteringauto' && $confirm ==
"yes" && $permissiontoadd) {
645 $nb_lettering = $lettering->bookkeepingLetteringAll($toselect,
true);
646 if ($nb_lettering < 0) {
649 $nb_lettering = max(0, abs($nb_lettering) - 2);
650 } elseif ($nb_lettering == 0) {
652 setEventMessages($langs->trans(
'AccountancyNoUnletteringModified'), array(),
'mesgs');
654 if ($nb_lettering == 1) {
655 setEventMessages($langs->trans(
'AccountancyOneUnletteringModifiedSuccessfully'), array(),
'mesgs');
656 } elseif ($nb_lettering > 1) {
657 setEventMessages($langs->trans(
'AccountancyUnletteringModifiedSuccessfully', $nb_lettering), array(),
'mesgs');
661 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
664 } elseif ($action ==
'unletteringmanual' && $confirm ==
"yes" && $permissiontoadd) {
666 $nb_lettering = $lettering->deleteLettering($toselect);
670 setEventMessages($langs->trans($result == 0 ?
'AccountancyNoUnletteringModified' :
'AccountancyOneUnletteringModifiedSuccessfully'), array(),
'mesgs');
671 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
686$form =
new Form($db);
688$title_page = $langs->trans(
"Operations").
' - '.$langs->trans(
"VueByAccountAccounting").
' (';
690 $title_page .= $langs->trans(
"BookkeepingSubAccount");
692 $title_page .= $langs->trans(
"Bookkeeping");
695$help_url =
'EN:Module_Double_Entry_Accounting|FR:Module_Comptabilité_en_Partie_Double';
696llxHeader(
'', $title_page, $help_url,
'', 0, 0,
'',
'',
'',
'mod-accountancy accountancy-consultation page-'.(($type ==
'sub') ?
'sub' :
'').
'ledger');
699 $companystatic =
new Societe($db);
700 $res = $companystatic->fetch($socid);
707 print
dol_get_fiche_head($head,
'accounting', $langs->trans(
"ThirdParty"), -1,
'company');
709 $linkback =
'<a href="'.DOL_URL_ROOT.
'/societe/list.php?restore_lastsearch_values=1">'.$langs->trans(
"BackToList").
'</a>';
711 dol_banner_tab($companystatic,
'socid', $linkback, ($user->socid ? 0 : 1),
'rowid',
'nom');
713 print
'<div class="fichecenter">';
715 print
'<div class="underbanner clearboth"></div>';
716 print
'<table class="border centpercent tableforfield">';
719 print
'<tr><td class="titlefield">'.$langs->trans(
'NatureOfThirdParty').
'</td><td>';
720 print $companystatic->getTypeUrl(1);
724 if ($companystatic->client && !empty($companystatic->code_client)) {
725 print
'<tr><td class="titlefield">';
726 print $langs->trans(
'CustomerCode').
'</td><td>';
728 $tmpcheck = $companystatic->check_codeclient();
729 if ($tmpcheck != 0 && $tmpcheck != -5) {
730 print
' <span class="error">('.$langs->trans(
"WrongCustomerCode").
')</span>';
736 if ($companystatic->fournisseur && !empty($companystatic->code_fournisseur)) {
737 print
'<tr><td class="titlefield">';
738 print $langs->trans(
'SupplierCode').
'</td><td>';
740 $tmpcheck = $companystatic->check_codefournisseur();
741 if ($tmpcheck != 0 && $tmpcheck != -5) {
742 print
' <span class="error">('.$langs->trans(
"WrongSupplierCode").
')</span>';
752 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="'.dolBuildUrl($_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 ($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 $moreforfilter .=
' <a id="previous_account" accesskey="p" title="' . $conf->browser->stringforfirstkey .
' p" class="classfortooltip" href="#"><i class="fa fa-chevron-left"></i></a>';
1019 $moreforfilter .=
' <a id="next_account" accesskey="n" title="' . $conf->browser->stringforfirstkey .
' n" class="classfortooltip" href="#"><i class="fa fa-chevron-right"></i></a>';
1020 $moreforfilter .= <<<SCRIPT
1021<script
type=
"text/javascript">
1022 jQuery(document).ready(
function() {
1023 var searchFormList = $(
'#searchFormList');
1024 var searchAccountancyCodeStart = $(
'#search_accountancy_code_start');
1025 var searchAccountancyCodeEnd = $(
'#search_accountancy_code_end');
1026 jQuery(
'#previous_account').on(
'click',
function() {
1027 var previousOption = searchAccountancyCodeStart.find(
'option:selected').prev(
'option');
1028 if (previousOption.length == 1) searchAccountancyCodeStart.val(previousOption.attr(
'value'));
1029 searchAccountancyCodeEnd.val(searchAccountancyCodeStart.val());
1030 searchFormList.submit();
1032 jQuery(
'#next_account').on(
'click',
function() {
1033 var nextOption = searchAccountancyCodeStart.find(
'option:selected').next(
'option');
1034 if (nextOption.length == 1) searchAccountancyCodeStart.val(nextOption.attr(
'value'));
1035 searchAccountancyCodeEnd.val(searchAccountancyCodeStart.val());
1036 searchFormList.submit();
1038 jQuery(
'input[name="search_mvt_num"]').on(
"keypress",
function(event) {
1045$moreforfilter .=
'</div>';
1046$moreforfilter .=
'</div>';
1049 $moreforfilter .=
'<div class="divsearchfield">';
1050 $moreforfilter .= $langs->trans(
'AccountingCategory') .
': ';
1051 $moreforfilter .=
'<div class="nowrap inline-block">';
1052 $moreforfilter .= $formaccounting->select_accounting_category($search_account_category,
'search_account_category', 1, 0, 0, 0);
1053 $moreforfilter .=
'</div>';
1054 $moreforfilter .=
'</div>';
1057$parameters = array();
1058$reshook = $hookmanager->executeHooks(
'printFieldPreListTitle', $parameters, $object, $action);
1059if (empty($reshook)) {
1060 $moreforfilter .= $hookmanager->resPrint;
1062 $moreforfilter = $hookmanager->resPrint;
1065print
'<div class="liste_titre liste_titre_bydiv centpercent">';
1066print $moreforfilter;
1069print
'<div class="div-table-responsive">';
1070print
'<table class="tagtable liste centpercent listwithfilterbefore">';
1073print
'<tr class="liste_titre_filter">';
1076 print
'<td class="liste_titre center">';
1077 $searchpicto = $form->showFilterButtons(
'left');
1082if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
1083 print
'<td class="liste_titre"><input type="text" name="search_mvt_num" class="width50" value="'.dol_escape_htmltag($search_mvt_num).
'"></td>';
1086if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
1087 print
'<td class="liste_titre center">';
1088 print $formaccounting->multi_select_journal($search_ledger_code,
'search_ledger_code', 0, 1, 1, 1,
'maxwidth75');
1092if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1093 print
'<td class="liste_titre center">';
1094 print
'<div class="nowrapfordate">';
1095 print $form->selectDate($search_date_start,
'search_date_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1097 print
'<div class="nowrapfordate">';
1098 print $form->selectDate($search_date_end,
'search_date_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1103if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
1104 print
'<td class="liste_titre"><input type="text" size="7" class="flat" name="search_doc_ref" value="'.dol_escape_htmltag($search_doc_ref).
'"/></td>';
1107if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1108 print
'<td class="liste_titre"><input type="text" size="7" class="flat" name="search_label_operation" value="'.dol_escape_htmltag($search_label_operation).
'"/></td>';
1111if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1112 print
'<td class="liste_titre center">';
1113 print
'<input type="text" size="3" class="flat" name="search_lettering_code" value="'.$search_lettering_code.
'"/>';
1114 print
'<br><span class="nowrap"><input type="checkbox" name="search_not_reconciled" value="notreconciled"'.($search_not_reconciled ==
'notreconciled' ?
' checked' :
'').
'>'.$langs->trans(
"NotReconciled").
'</span>';
1118if (!empty($arrayfields[
't.debit'][
'checked'])) {
1119 print
'<td class="liste_titre right"><input type="text" class="flat" name="search_debit" size="4" value="'.dol_escape_htmltag($search_debit).
'"></td>';
1122if (!empty($arrayfields[
't.credit'][
'checked'])) {
1123 print
'<td class="liste_titre right"><input type="text" class="flat" name="search_credit" size="4" value="'.dol_escape_htmltag($search_credit).
'"></td>';
1126if (!empty($arrayfields[
't.balance'][
'checked'])) {
1130if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1131 print
'<td class="liste_titre center">';
1132 print
'<div class="nowrapfordate">';
1133 print $form->selectDate($search_date_export_start,
'search_date_export_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1135 print
'<div class="nowrapfordate">';
1136 print $form->selectDate($search_date_export_end,
'search_date_export_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1141if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1142 print
'<td class="liste_titre center">';
1143 print
'<div class="nowrapfordate">';
1144 print $form->selectDate($search_date_validation_start,
'search_date_validation_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1146 print
'<div class="nowrapfordate">';
1147 print $form->selectDate($search_date_validation_end,
'search_date_validation_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1152if (!empty($arrayfields[
't.date_lim_reglement'][
'checked'])) {
1153 print
'<td class="liste_titre center">';
1154 print
'<div class="nowrapfordate">';
1155 print $form->selectDate($search_date_due_start,
'search_date_due_start_', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1157 print
'<div class="nowrapfordate">';
1158 print $form->selectDate($search_date_due_end,
'search_date_due_end_', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1162if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1163 print
'<td class="liste_titre center">';
1164 print
'<input class="flat searchstring maxwidth50" type="text" name="search_import_key" value="'.dol_escape_htmltag($search_import_key).
'">';
1169$parameters = array(
'arrayfields' => $arrayfields);
1170$reshook = $hookmanager->executeHooks(
'printFieldListOption', $parameters);
1171print $hookmanager->resPrint;
1175 print
'<td class="liste_titre center">';
1176 $searchpicto = $form->showFilterButtons();
1182print
'<tr class="liste_titre">';
1184 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch ');
1186if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
1187 print_liste_field_titre($arrayfields[
't.piece_num'][
'label'], $_SERVER[
'PHP_SELF'],
"t.piece_num",
"", $param,
'', $sortfield, $sortorder,
'tdoverflowmax80imp ');
1189if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
1190 print_liste_field_titre($arrayfields[
't.code_journal'][
'label'], $_SERVER[
'PHP_SELF'],
"t.code_journal",
"", $param,
'', $sortfield, $sortorder,
'center ');
1192if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1193 print_liste_field_titre($arrayfields[
't.doc_date'][
'label'], $_SERVER[
'PHP_SELF'],
"t.doc_date",
"", $param,
'', $sortfield, $sortorder,
'center ');
1195if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
1196 print_liste_field_titre($arrayfields[
't.doc_ref'][
'label'], $_SERVER[
'PHP_SELF'],
"t.doc_ref",
"", $param,
"", $sortfield, $sortorder);
1198if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1199 print_liste_field_titre($arrayfields[
't.label_operation'][
'label'], $_SERVER[
'PHP_SELF'],
"t.label_operation",
"", $param,
"", $sortfield, $sortorder);
1201if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1202 print_liste_field_titre($arrayfields[
't.lettering_code'][
'label'], $_SERVER[
'PHP_SELF'],
"t.lettering_code",
"", $param,
'', $sortfield, $sortorder,
'center ');
1204if (!empty($arrayfields[
't.debit'][
'checked'])) {
1205 print_liste_field_titre($arrayfields[
't.debit'][
'label'], $_SERVER[
'PHP_SELF'],
"t.debit",
"", $param,
'', $sortfield, $sortorder,
'right ');
1207if (!empty($arrayfields[
't.credit'][
'checked'])) {
1208 print_liste_field_titre($arrayfields[
't.credit'][
'label'], $_SERVER[
'PHP_SELF'],
"t.credit",
"", $param,
'', $sortfield, $sortorder,
'right ');
1210if (!empty($arrayfields[
't.balance'][
'checked'])) {
1211 print_liste_field_titre($arrayfields[
't.balance'][
'label'],
"",
"",
"", $param,
'', $sortfield, $sortorder,
'right ');
1213if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1214 print_liste_field_titre($arrayfields[
't.date_export'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_export",
"", $param,
'', $sortfield, $sortorder,
'center ');
1216if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1217 print_liste_field_titre($arrayfields[
't.date_validated'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_validated",
"", $param,
'', $sortfield, $sortorder,
'center ');
1220if (!empty($arrayfields[
't.date_lim_reglement'][
'checked'])) {
1221 print_liste_field_titre($arrayfields[
't.date_lim_reglement'][
'label'], $_SERVER[
'PHP_SELF'],
't.date_lim_reglement',
'', $param,
'', $sortfield, $sortorder,
'center ');
1223if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1224 print_liste_field_titre($arrayfields[
't.import_key'][
'label'], $_SERVER[
"PHP_SELF"],
"t.import_key",
"", $param,
'', $sortfield, $sortorder,
'center ');
1227$parameters = array(
'arrayfields' => $arrayfields,
'param' => $param,
'sortfield' => $sortfield,
'sortorder' => $sortorder);
1228$reshook = $hookmanager->executeHooks(
'printFieldListTitle', $parameters);
1229print $hookmanager->resPrint;
1231 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch ');
1235$displayed_account_number =
null;
1237$objectstatic =
null;
1247$sous_total_debit = 0;
1248$sous_total_credit = 0;
1261if (!empty($arrayfields[
't.piece_num'][
'checked'])) { $colspan++; }
1262if (!empty($arrayfields[
't.code_journal'][
'checked'])) { $colspan++; }
1263if (!empty($arrayfields[
't.doc_date'][
'checked'])) { $colspan++; }
1264if (!empty($arrayfields[
't.doc_ref'][
'checked'])) { $colspan++; }
1265if (!empty($arrayfields[
't.label_operation'][
'checked'])) { $colspan++; }
1266if (!empty($arrayfields[
't.date_export'][
'checked'])) { $colspanend++; }
1267if (!empty($arrayfields[
't.date_validated'][
'checked'])) { $colspanend++; }
1268if (!empty($arrayfields[
't.lettering_code'][
'checked'])) { $colspanend++; }
1274while ($i < min($num, $limit)) {
1277 if ($type ==
'sub') {
1289 if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
1292 if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
1295 if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1298 if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
1301 if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1304 if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1308 if (!empty($arrayfields[
't.balance'][
'checked'])) {
1311 if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1314 if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1318 if (!empty($arrayfields[
't.date_lim_reglement'][
'checked'])) {
1321 if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1324 if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1333 if ($accountg != $displayed_account_number || !isset($displayed_account_number)) {
1335 if (isset($displayed_account_number)) {
1336 print
'<tr class="liste_total">';
1337 if ($type ==
'sub') {
1338 print
'<td class="right" colspan="' . $colspan .
'">' . $langs->trans(
"TotalForAccount") .
' ' .
length_accounta($displayed_account_number) .
':</td>';
1340 print
'<td class="right" colspan="' . $colspan .
'">' . $langs->trans(
"TotalForAccount") .
' ' .
length_accountg($displayed_account_number) .
':</td>';
1342 print
'<td class="nowrap right">'.price(
price2num($sous_total_debit,
'MT')).
'</td>';
1343 print
'<td class="nowrap right">'.price(
price2num($sous_total_credit,
'MT')).
'</td>';
1344 if ($colspanend > 0) {
1345 print
'<td colspan="'.$colspanend.
'"></td>';
1349 $balance = $sous_total_debit - $sous_total_credit;
1350 print
'<tr class="liste_total">';
1351 print
'<td class="right" colspan="'.$colspan.
'">'.$langs->trans(
"Balance").
':</td>';
1353 print
'<td class="nowraponall right">';
1354 print
price(
price2num($sous_total_debit - $sous_total_credit,
'MT'));
1359 print
'<td class="nowraponall right">';
1360 print
price(
price2num($sous_total_credit - $sous_total_debit,
'MT'));
1363 if ($colspanend > 0) {
1364 print
'<td colspan="'.$colspanend.
'"></td>';
1370 print
'<tr class="trforbreaknobg">';
1371 print
'<td colspan="'.($totalarray[
'nbfield'] ?
$totalarray[
'nbfield'] : count($arrayfields) + 1).
'" class="tdforbreak">';
1372 if ($type ==
'sub') {
1373 if ($line->subledger_account !=
"" && $line->subledger_account !=
'-1') {
1374 print empty($line->subledger_label) ?
'<span class="error">'.$langs->trans(
"Unknown").
'</span>' : $line->subledger_label;
1379 print
'<span class="error">' . $langs->trans(
"Unknown");
1380 if ($line->subledger_label) {
1381 print
' (' . $line->subledger_label .
')';
1382 $htmltext =
'EmptyStringForSubledgerAccountButSubledgerLabelDefined';
1384 $htmltext =
'EmptyStringForSubledgerAccountAndSubledgerLabel';
1386 print $form->textwithpicto(
'', $htmltext);
1390 if ($line->numero_compte !=
"" && $line->numero_compte !=
'-1') {
1393 print
'<span class="error">' . $langs->trans(
"Unknown") .
'</span>';
1399 $displayed_account_number = $accountg;
1401 $sous_total_debit = 0;
1402 $sous_total_credit = 0;
1405 print
'<tr class="oddeven">';
1408 print
'<td class="nowraponall center">';
1409 if (($massactionbutton || $massaction) && $contextpage !=
'poslist') {
1411 if (in_array($line->id, $arrayofselected)) {
1414 print
'<input id="cb' . $line->id .
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="' . $line->id .
'"' . ($selected ?
' checked="checked"' :
'') .
' />';
1422 if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
1423 print
'<td class="nowraponall">';
1425 $object->piece_num = $line->piece_num;
1427 print
$object->getNomUrl(1,
'', 0,
'', 1);
1428 print
'<span class="hideonsmartphone">';
1429 if (!empty($line->date_export)) {
1430 print
img_picto($langs->trans(
"DateExport").
": ".
dol_print_date($line->date_export,
'dayhour').
" (".$langs->trans(
"TransactionExportDesc").
")",
'fa-file-export',
'class="paddingleft pictofixedwidth opacitymedium"');
1432 if (!empty($line->date_validation)) {
1433 print
img_picto($langs->trans(
"DateValidation").
": ".
dol_print_date($line->date_validation,
'dayhour').
" (".$langs->trans(
"TransactionBlockedLockedDesc").
")",
'fa-lock',
'class="paddingleft pictofixedwidth opacitymedium"');
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
" " . $bank_ref;
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(! $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.