33require
'../../main.inc.php';
41require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formaccounting.class.php';
42require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formfiscalyear.class.php';
43require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formfile.class.php';
44require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formother.class.php';
45require_once DOL_DOCUMENT_ROOT.
'/core/lib/accounting.lib.php';
46require_once DOL_DOCUMENT_ROOT.
'/core/lib/admin.lib.php';
47require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
48require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountingjournal.class.php';
49require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/bookkeeping.class.php';
50require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/lettering.class.php';
53$langs->loadLangs(array(
"accountancy",
"categories",
"compta",
"other"));
57$journal_code =
GETPOST(
'code_journal',
'alpha');
58$account =
GETPOST(
"account",
'int');
62$action =
GETPOST(
'action',
'aZ09');
63$massaction =
GETPOST(
'massaction',
'alpha');
64$confirm =
GETPOST(
'confirm',
'alpha');
65$toselect =
GETPOST(
'toselect',
'array:int');
66$contextpage =
GETPOST(
'contextpage',
'aZ') ?
GETPOST(
'contextpage',
'aZ') : str_replace(
'_',
'', basename(dirname(__FILE__)).basename(__FILE__,
'.php'));
69$search_mvt_num =
GETPOST(
'search_mvt_num',
'alpha');
70$search_doc_type =
GETPOST(
"search_doc_type",
'alpha');
71$search_doc_ref =
GETPOST(
"search_doc_ref",
'alpha');
73$search_doc_date =
GETPOSTDATE(
'doc_date',
'getpost');
75$search_date_start =
GETPOSTDATE(
'search_date_start',
'getpost',
'auto',
'search_date_start_accountancy');
76$search_date_end =
GETPOSTDATE(
'search_date_end',
'getpostend',
'auto',
'search_date_end_accountancy');
78$search_date_creation_start =
GETPOSTDATE(
'search_date_creation_start',
'getpost');
79$search_date_creation_end =
GETPOSTDATE(
'search_date_creation_end',
'getpostend');
81$search_date_modification_start =
GETPOSTDATE(
'search_date_modification_start',
'getpost');
82$search_date_modification_end =
GETPOSTDATE(
'search_date_modification_end',
'getpostend');
84$search_date_export_start =
GETPOSTDATE(
'search_date_export_start',
'getpost');
85$search_date_export_end =
GETPOSTDATE(
'search_date_export_end',
'getpostend');
87$search_date_validation_start =
GETPOSTDATE(
'search_date_validation_start',
'getpost');
88$search_date_validation_end =
GETPOSTDATE(
'search_date_validation_end',
'getpostend');
91$search_date_due_start_day =
GETPOSTINT(
'search_date_due_start_day');
92$search_date_due_start_month =
GETPOSTINT(
'search_date_due_start_month');
93$search_date_due_start_year =
GETPOSTINT(
'search_date_due_start_year');
94$search_date_due_start =
GETPOSTDATE(
'search_date_due_start_',
'getpost');
97$search_date_due_end_day =
GETPOSTINT(
'search_date_due_end_day');
98$search_date_due_end_month =
GETPOSTINT(
'search_date_due_end_month');
99$search_date_due_end_year =
GETPOSTINT(
'search_date_due_end_year');
100$search_date_due_end =
GETPOSTDATE(
'search_date_due_end_',
'getpostend');
102$search_import_key =
GETPOST(
"search_import_key",
'alpha');
104$search_account_category =
GETPOSTINT(
'search_account_category');
106$search_accountancy_code =
GETPOST(
"search_accountancy_code",
'alpha');
107$search_accountancy_code_start =
GETPOST(
'search_accountancy_code_start',
'alpha');
108if ($search_accountancy_code_start == - 1) {
109 $search_accountancy_code_start =
'';
111$search_accountancy_code_end =
GETPOST(
'search_accountancy_code_end',
'alpha');
112if ($search_accountancy_code_end == - 1) {
113 $search_accountancy_code_end =
'';
116$search_accountancy_aux_code =
GETPOST(
"search_accountancy_aux_code",
'alpha');
117$search_accountancy_aux_code_start =
GETPOST(
'search_accountancy_aux_code_start',
'alpha');
118if ($search_accountancy_aux_code_start == - 1) {
119 $search_accountancy_aux_code_start =
'';
121$search_accountancy_aux_code_end =
GETPOST(
'search_accountancy_aux_code_end',
'alpha');
122if ($search_accountancy_aux_code_end == - 1) {
123 $search_accountancy_aux_code_end =
'';
125$search_mvt_label =
GETPOST(
'search_mvt_label',
'alpha');
126$search_direction =
GETPOST(
'search_direction',
'alpha');
127$search_debit =
GETPOST(
'search_debit',
'alpha');
128$search_credit =
GETPOST(
'search_credit',
'alpha');
129$search_ledger_code =
GETPOST(
'search_ledger_code',
'array');
130$search_lettering_code =
GETPOST(
'search_lettering_code',
'alpha');
131$search_not_reconciled =
GETPOST(
'search_not_reconciled',
'alpha');
135$sortfield =
GETPOST(
'sortfield',
'aZ09comma');
136$sortorder =
GETPOST(
'sortorder',
'aZ09comma');
137$optioncss =
GETPOST(
'optioncss',
'alpha');
139if (empty($page) || $page < 0) {
142$offset = $limit * $page;
143$pageprev = $page - 1;
144$pagenext = $page + 1;
145if ($sortorder ==
"") {
148if ($sortfield ==
"") {
149 $sortfield =
"t.piece_num,t.rowid";
154$hookmanager->initHooks(array(
'bookkeepinglist'));
158$form =
new Form($db);
160if (!in_array($action, array(
'delmouv',
'delmouvconfirm')) && !GETPOSTISSET(
'begin') && !GETPOSTISSET(
'formfilteraction') &&
GETPOST(
'page',
'alpha') ==
'' && !
GETPOSTINT(
'noreset') && $user->hasRight(
'accounting',
'mouvements',
'export')) {
161 if (empty($search_date_start) && empty($search_date_end) && !GETPOSTISSET(
'restore_lastsearch_values') && !
GETPOST(
'search_mvt_num') && !
GETPOST(
'search_accountancy_code_start')) {
162 $sql =
"SELECT date_start, date_end";
163 $sql .=
" FROM ".MAIN_DB_PREFIX.
"accounting_fiscalyear ";
165 $sql .=
" WHERE rowid = " .
getDolGlobalInt(
'ACCOUNTANCY_FISCALYEAR_DEFAULT');
167 $sql .=
" WHERE date_start < '" . $db->idate(
dol_now()) .
"' and date_end > '" . $db->idate(
dol_now()) .
"'";
169 $sql .= $db->plimit(1);
170 $res = $db->query($sql);
172 if ($db->num_rows($res) > 0) {
173 $fiscalYear = $db->fetch_object($res);
174 $search_date_start = strtotime($fiscalYear->date_start);
175 $search_date_end = strtotime($fiscalYear->date_end);
182 $year_end = $year_start + 1;
183 $month_end = $month_start - 1;
184 if ($month_end < 1) {
188 $search_date_start =
dol_mktime(0, 0, 0, $month_start, 1, $year_start);
196 't.piece_num' => array(
'label' => $langs->trans(
"TransactionNumShort"),
'checked' =>
'1'),
197 't.code_journal' => array(
'label' => $langs->trans(
"Codejournal"),
'checked' =>
'1'),
198 't.doc_date' => array(
'label' => $langs->trans(
"Docdate"),
'checked' =>
'1'),
199 't.doc_ref' => array(
'label' => $langs->trans(
"Piece"),
'checked' =>
'1'),
200 't.numero_compte' => array(
'label' => $langs->trans(
"AccountAccountingShort"),
'checked' =>
'1'),
201 't.subledger_account' => array(
'label' => $langs->trans(
"SubledgerAccount"),
'checked' =>
'1'),
202 't.label_operation' => array(
'label' => $langs->trans(
"Label"),
'checked' =>
'1'),
203 't.debit' => array(
'label' => $langs->trans(
"AccountingDebit"),
'checked' =>
'1'),
204 't.credit' => array(
'label' => $langs->trans(
"AccountingCredit"),
'checked' =>
'1'),
205 't.lettering_code' => array(
'label' => $langs->trans(
"LetteringCode"),
'checked' =>
'1'),
206 't.date_creation' => array(
'label' => $langs->trans(
"DateCreation"),
'checked' =>
'0'),
207 't.tms' => array(
'label' => $langs->trans(
"DateModification"),
'checked' =>
'0'),
208 't.date_export' => array(
'label' => $langs->trans(
"DateExport"),
'checked' =>
'0'),
209 't.date_validated' => array(
'label' => $langs->trans(
"DateValidationAndLock"),
'checked' =>
'0',
'enabled' => (
string) (
int) !
getDolGlobalString(
"ACCOUNTANCY_DISABLE_CLOSURE_LINE_BY_LINE")),
210 't.date_lim_reglement' => array(
'label' => $langs->trans(
"DateDue"),
'checked' =>
'0'),
211 't.import_key' => array(
'label' => $langs->trans(
"ImportId"),
'checked' =>
'0',
'position' => 1100),
215 unset($arrayfields[
't.lettering_code']);
223if ($user->socid > 0) {
226if (!$user->hasRight(
'accounting',
'mouvements',
'lire')) {
231$permissiontoread = $user->hasRight(
'accounting',
'mouvements',
'lire');
232$permissiontoadd = $user->hasRight(
'accounting',
'mouvements',
'creer');
233$permissiontodelete = $user->hasRight(
'accounting',
'mouvements',
'supprimer');
234$permissiontoexport = $user->hasRight(
'accounting',
'mouvements',
'export');
244if (
GETPOST(
'cancel',
'alpha')) {
248if (!
GETPOST(
'confirmmassaction',
'alpha') && $massaction !=
'preunletteringauto' && $massaction !=
'preunletteringmanual' && $massaction !=
'predeletebookkeepingwriting' && $massaction !=
'preclonebookkeepingwriting' && $massaction !=
'preassignaccountbookkeepingwriting' && $massaction !=
'prereturnaccountbookkeepingwriting') {
252$parameters = array(
'socid' => $socid);
253$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
258if (empty($reshook)) {
259 include DOL_DOCUMENT_ROOT.
'/core/actions_changeselectedfields.inc.php';
261 if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
262 $search_mvt_num =
'';
263 $search_doc_type =
'';
264 $search_doc_ref =
'';
265 $search_doc_date =
'';
266 $search_account_category =
'';
267 $search_accountancy_code =
'';
268 $search_accountancy_code_start =
'';
269 $search_accountancy_code_end =
'';
270 $search_accountancy_aux_code =
'';
271 $search_accountancy_aux_code_start =
'';
272 $search_accountancy_aux_code_end =
'';
273 $search_mvt_label =
'';
274 $search_direction =
'';
275 $search_ledger_code = array();
276 $search_date_start =
'';
277 $search_date_end =
'';
278 $search_date_creation_start =
'';
279 $search_date_creation_end =
'';
280 $search_date_modification_start =
'';
281 $search_date_modification_end =
'';
282 $search_date_export_start =
'';
283 $search_date_export_end =
'';
284 $search_date_validation_start =
'';
285 $search_date_validation_end =
'';
287 $search_date_due_start_day =
'';
288 $search_date_due_start_month =
'';
289 $search_date_due_start_year =
'';
290 $search_date_due_start =
'';
292 $search_date_due_end_day =
'';
293 $search_date_due_end_month =
'';
294 $search_date_due_end_year =
'';
295 $search_date_due_end =
'';
298 $search_lettering_code =
'';
299 $search_not_reconciled =
'';
300 $search_import_key =
'';
302 unset($_SESSION[
'DOLDATE_search_date_start_accountancy_day']);
303 unset($_SESSION[
'DOLDATE_search_date_start_accountancy_month']);
304 unset($_SESSION[
'DOLDATE_search_date_start_accountancy_year']);
305 unset($_SESSION[
'DOLDATE_search_date_end_accountancy_day']);
306 unset($_SESSION[
'DOLDATE_search_date_end_accountancy_month']);
307 unset($_SESSION[
'DOLDATE_search_date_end_accountancy_year']);
311 if (!empty($search_date_start)) {
312 $filter[
't.doc_date>='] = $search_date_start;
314 $param .=
'&search_date_startmonth='.((int) $tmp[
'mon']).
'&search_date_startday='.((int) $tmp[
'mday']).
'&search_date_startyear='.((int) $tmp[
'year']);
316 if (!empty($search_date_end)) {
317 $filter[
't.doc_date<='] = $search_date_end;
319 $param .=
'&search_date_endmonth='.((int) $tmp[
'mon']).
'&search_date_endday='.((int) $tmp[
'mday']).
'&search_date_endyear='.((int) $tmp[
'year']);
321 if (!empty($search_doc_date)) {
322 $filter[
't.doc_date'] = $search_doc_date;
324 $param .=
'&doc_datemonth='.((int) $tmp[
'mon']).
'&doc_dateday='.((int) $tmp[
'mday']).
'&doc_dateyear='.((int) $tmp[
'year']);
326 if (!empty($search_doc_type)) {
327 $filter[
't.doc_type'] = $search_doc_type;
328 $param .=
'&search_doc_type='.urlencode($search_doc_type);
330 if (!empty($search_doc_ref)) {
331 $filter[
't.doc_ref'] = $search_doc_ref;
332 $param .=
'&search_doc_ref='.urlencode($search_doc_ref);
334 if ($search_account_category !=
'-1' && !empty($search_account_category)) {
335 require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountancycategory.class.php';
338 $listofaccountsforgroup = $accountingcategory->getCptsCat(0,
'fk_accounting_category = '.((
int) $search_account_category));
339 $listofaccountsforgroup2 = array();
340 if (is_array($listofaccountsforgroup)) {
341 foreach ($listofaccountsforgroup as $tmpval) {
342 $listofaccountsforgroup2[] =
"'".$db->escape((
string) $tmpval[
'account_number']).
"'";
345 if (!empty($listofaccountsforgroup2)) {
346 $filter[
't.search_accounting_code_in'] = implode(
',', $listofaccountsforgroup2);
348 $filter[
't.search_accounting_code_in'] =
"''";
349 setEventMessages($langs->trans(
"ThisCategoryHasNoItems"),
null,
'warnings');
351 $param .=
'&search_account_category='.urlencode((
string) ($search_account_category));
353 if (!empty($search_accountancy_code)) {
354 $filter[
't.numero_compte'] = $search_accountancy_code;
355 $param .=
'&search_accountancy_code='.urlencode($search_accountancy_code);
357 if (!empty($search_accountancy_code_start)) {
358 $filter[
't.numero_compte>='] = $search_accountancy_code_start;
359 $param .=
'&search_accountancy_code_start='.urlencode($search_accountancy_code_start);
361 if (!empty($search_accountancy_code_end)) {
362 $filter[
't.numero_compte<='] = $search_accountancy_code_end;
363 $param .=
'&search_accountancy_code_end='.urlencode($search_accountancy_code_end);
365 if (!empty($search_accountancy_aux_code)) {
366 $filter[
't.subledger_account'] = $search_accountancy_aux_code;
367 $param .=
'&search_accountancy_aux_code='.urlencode($search_accountancy_aux_code);
369 if (!empty($search_accountancy_aux_code_start)) {
370 $filter[
't.subledger_account>='] = $search_accountancy_aux_code_start;
371 $param .=
'&search_accountancy_aux_code_start='.urlencode($search_accountancy_aux_code_start);
373 if (!empty($search_accountancy_aux_code_end)) {
374 $filter[
't.subledger_account<='] = $search_accountancy_aux_code_end;
375 $param .=
'&search_accountancy_aux_code_end='.urlencode($search_accountancy_aux_code_end);
377 if (!empty($search_mvt_label)) {
378 $filter[
't.label_operation'] = $search_mvt_label;
379 $param .=
'&search_mvt_label='.urlencode($search_mvt_label);
381 if (!empty($search_direction)) {
382 $filter[
't.sens'] = $search_direction;
383 $param .=
'&search_direction='.urlencode($search_direction);
385 if (!empty($search_ledger_code)) {
386 $filter[
't.code_journal'] = $search_ledger_code;
387 foreach ($search_ledger_code as $code) {
388 $param .=
'&search_ledger_code[]='.urlencode($code);
391 if (!empty($search_mvt_num)) {
392 $filter[
't.piece_num'] = $search_mvt_num;
393 $param .=
'&search_mvt_num='.urlencode((
string) ($search_mvt_num));
395 if (!empty($search_date_creation_start)) {
396 $filter[
't.date_creation>='] = $search_date_creation_start;
398 $param .=
'&search_date_creation_startmonth='.((int) $tmp[
'mon']).
'&search_date_creation_startday='.((int) $tmp[
'mday']).
'&search_date_creation_startyear='.((int) $tmp[
'year']);
400 if (!empty($search_date_creation_end)) {
401 $filter[
't.date_creation<='] = $search_date_creation_end;
403 $param .=
'&search_date_creation_endmonth='.((int) $tmp[
'mon']).
'&search_date_creation_endday='.((int) $tmp[
'mday']).
'&search_date_creation_endyear='.((int) $tmp[
'year']);
405 if (!empty($search_date_modification_start)) {
406 $filter[
't.tms>='] = $search_date_modification_start;
407 $tmp =
dol_getdate($search_date_modification_start);
408 $param .=
'&search_date_modification_startmonth='.((int) $tmp[
'mon']).
'&search_date_modification_startday='.((int) $tmp[
'mday']).
'&search_date_modification_startyear='.((int) $tmp[
'year']);
410 if (!empty($search_date_modification_end)) {
411 $filter[
't.tms<='] = $search_date_modification_end;
413 $param .=
'&search_date_modification_endmonth='.((int) $tmp[
'mon']).
'&search_date_modification_endday='.((int) $tmp[
'mday']).
'&search_date_modification_endyear='.((int) $tmp[
'year']);
415 if (!empty($search_date_export_start)) {
416 $filter[
't.date_export>='] = $search_date_export_start;
418 $param .=
'&search_date_export_startmonth='.((int) $tmp[
'mon']).
'&search_date_export_startday='.((int) $tmp[
'mday']).
'&search_date_export_startyear='.((int) $tmp[
'year']);
420 if (!empty($search_date_export_end)) {
421 $filter[
't.date_export<='] = $search_date_export_end;
423 $param .=
'&search_date_export_endmonth='.((int) $tmp[
'mon']).
'&search_date_export_endday='.((int) $tmp[
'mday']).
'&search_date_export_endyear='.((int) $tmp[
'year']);
425 if (!empty($search_date_validation_start)) {
426 $filter[
't.date_validated>='] = $search_date_validation_start;
428 $param .=
'&search_date_validation_startmonth='.((int) $tmp[
'mon']).
'&search_date_validation_startday='.((int) $tmp[
'mday']).
'&search_date_validation_startyear='.((int) $tmp[
'year']);
430 if (!empty($search_date_validation_end)) {
431 $filter[
't.date_validated<='] = $search_date_validation_end;
433 $param .=
'&search_date_validation_endmonth='.((int) $tmp[
'mon']).
'&search_date_validation_endday='.((int) $tmp[
'mday']).
'&search_date_validation_endyear='.((int) $tmp[
'year']);
436 if (!empty($search_date_due_start)) {
437 $filter[
't.date_lim_reglement>='] = $search_date_due_start;
438 $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;
441 if (!empty($search_date_due_end)) {
442 $filter[
't.date_lim_reglement<='] = $search_date_due_end;
443 $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;
445 if (!empty($search_debit)) {
446 $filter[
't.debit'] = $search_debit;
447 $param .=
'&search_debit='.urlencode($search_debit);
449 if (!empty($search_credit)) {
450 $filter[
't.credit'] = $search_credit;
451 $param .=
'&search_credit='.urlencode($search_credit);
453 if (!empty($search_lettering_code)) {
454 $filter[
't.lettering_code'] = $search_lettering_code;
455 $param .=
'&search_lettering_code='.urlencode($search_lettering_code);
457 if (!empty($search_not_reconciled)) {
458 $filter[
't.reconciled_option'] = $search_not_reconciled;
459 $param .=
'&search_not_reconciled='.urlencode($search_not_reconciled);
461 if (!empty($search_import_key)) {
462 $filter[
't.import_key'] = $search_import_key;
463 $param .=
'&search_import_key='.urlencode($search_import_key);
467 if ($action ===
'exporttopdf' && $permissiontoadd) {
468 $object->fetchAll(
'ASC,ASC,ASC',
'code_journal,doc_date,piece_num', 0, 0, $filter);
469 require_once DOL_DOCUMENT_ROOT .
'/core/modules/accountancy/doc/pdf_bookkeeping.modules.php';
471 $pdf->fromDate = $search_date_start;
472 $pdf->toDate = $search_date_end;
474 $result = $pdf->write_file($object, $langs);
485 $objectclass =
'Bookkeeping';
486 $objectlabel =
'Bookkeeping';
487 $uploaddir = $conf->societe->dir_output;
491 include DOL_DOCUMENT_ROOT.
'/core/actions_massactions.inc.php';
493 if (!$error && $action ==
'deletebookkeepingwriting' && $confirm ==
"yes" && $user->hasRight(
'accounting',
'mouvements',
'supprimer')) {
498 $nb_lettering = $lettering->bookkeepingLetteringAll($toselect,
true);
499 if ($nb_lettering < 0) {
508 foreach ($toselect as $toselectid) {
509 $result =
$object->fetch($toselectid);
510 if ($result > 0 && (!isset(
$object->date_validation) ||
$object->date_validation ===
'')) {
519 } elseif ($result < 0) {
523 } elseif (isset(
$object->date_validation) &&
$object->date_validation !=
'') {
524 setEventMessages($langs->trans(
"ValidatedRecordWhereFound"),
null,
'errors');
537 } elseif ($nbok > 0) {
543 header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?noreset=1".($param ?
'&'.$param :
''));
551 if (!$error && $action ==
'clonebookkeepingwriting' && $confirm ==
"yes" && $user->hasRight(
'accounting',
'mouvements',
'creer')) {
552 $result =
$object->newCloneMass($toselect, $journal_code, $massdate);
558 header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?noreset=1".($param ?
'&'.$param :
''));
566 if (!$error && $action ==
'assignaccountbookkeepingwriting' && $confirm ==
"yes" && $user->hasRight(
'accounting',
'mouvements',
'creer')) {
567 $result =
$object->assignAccountMass($toselect, (
int) $account);
573 header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?noreset=1".($param ?
'&'.$param :
''));
581 if (!$error && $action ==
'returnaccountbookkeepingwriting' && $confirm ==
"yes" && $user->hasRight(
'accounting',
'mouvements',
'creer')) {
582 $result =
$object->newReturnAccount($toselect, $journal_code, $massdate);
588 header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?noreset=1".($param ?
'&'.$param :
''));
597 if ($massaction ==
'letteringauto' && $permissiontoadd) {
599 $nb_lettering = $lettering->bookkeepingLetteringAll($toselect);
600 if ($nb_lettering < 0) {
603 $nb_lettering = max(0, abs($nb_lettering) - 2);
604 } elseif ($nb_lettering == 0) {
606 setEventMessages($langs->trans(
'AccountancyNoLetteringModified'), array(),
'mesgs');
608 if ($nb_lettering == 1) {
609 setEventMessages($langs->trans(
'AccountancyOneLetteringModifiedSuccessfully'), array(),
'mesgs');
610 } elseif ($nb_lettering > 1) {
611 setEventMessages($langs->trans(
'AccountancyLetteringModifiedSuccessfully', $nb_lettering), array(),
'mesgs');
615 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
618 } elseif ($massaction ==
'letteringmanual' && $permissiontoadd) {
620 $result = $lettering->updateLettering($toselect);
624 setEventMessages($langs->trans(
'AccountancyOneLetteringModifiedSuccessfully'), array(),
'mesgs');
625 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
628 } elseif ($action ==
'unletteringauto' && $confirm ==
"yes" && $permissiontoadd) {
630 $nb_lettering = $lettering->bookkeepingLetteringAll($toselect,
true);
631 if ($nb_lettering < 0) {
634 $nb_lettering = max(0, abs($nb_lettering) - 2);
635 } elseif ($nb_lettering == 0) {
637 setEventMessages($langs->trans(
'AccountancyNoUnletteringModified'), array(),
'mesgs');
639 if ($nb_lettering == 1) {
640 setEventMessages($langs->trans(
'AccountancyOneUnletteringModifiedSuccessfully'), array(),
'mesgs');
641 } elseif ($nb_lettering > 1) {
642 setEventMessages($langs->trans(
'AccountancyUnletteringModifiedSuccessfully', $nb_lettering), array(),
'mesgs');
646 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
649 } elseif ($action ==
'unletteringmanual' && $confirm ==
"yes" && $permissiontoadd) {
651 $nb_lettering = $lettering->deleteLettering($toselect);
652 if ($nb_lettering < 0) {
655 setEventMessages($langs->trans(
'AccountancyOneUnletteringModifiedSuccessfully'), array(),
'mesgs');
656 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
669$sql .=
" t.doc_date,";
670$sql .=
" t.doc_type,";
671$sql .=
" t.doc_ref,";
673$sql .=
" t.fk_docdet,";
674$sql .=
" t.thirdparty_code,";
675$sql .=
" t.subledger_account,";
676$sql .=
" t.subledger_label,";
677$sql .=
" t.numero_compte,";
678$sql .=
" t.label_compte,";
679$sql .=
" t.label_operation,";
682$sql .=
" t.lettering_code,";
683$sql .=
" t.montant as amount,";
685$sql .=
" t.fk_user_author,";
686$sql .=
" t.import_key,";
687$sql .=
" t.code_journal,";
688$sql .=
" t.journal_label,";
689$sql .=
" t.piece_num,";
691$sql .=
" t.date_creation,";
692$sql .=
" t.tms as date_modification,";
693$sql .=
" t.date_export,";
694$sql .=
" t.date_validated as date_validation,";
695$sql .=
" t.date_lim_reglement,";
696$sql .=
" t.import_key";
700$sql .=
' FROM '.MAIN_DB_PREFIX.$object->table_element.
' as t';
703if (count($filter) > 0) {
704 foreach ($filter as $key => $value) {
705 if ($key ==
't.doc_date') {
706 $sqlwhere[] = $db->sanitize($key).
" = '".$db->idate($value).
"'";
707 } elseif ($key ==
't.doc_date>=') {
708 $sqlwhere[] =
"t.doc_date >= '".$db->idate($value).
"'";
709 } elseif ($key ==
't.doc_date<=') {
710 $sqlwhere[] =
"t.doc_date <= '".$db->idate($value).
"'";
711 } elseif ($key ==
't.numero_compte>=') {
712 $sqlwhere[] =
"t.numero_compte >= '".$db->escape($value).
"'";
713 } elseif ($key ==
't.numero_compte<=') {
714 $sqlwhere[] =
"t.numero_compte <= '".$db->escape($value).
"'";
715 } elseif ($key ==
't.subledger_account>=') {
716 $sqlwhere[] =
"t.subledger_account >= '".$db->escape($value).
"'";
717 } elseif ($key ==
't.subledger_account<=') {
718 $sqlwhere[] =
"t.subledger_account <= '".$db->escape($value).
"'";
721 } elseif ($key ==
't.subledger_account' || $key ==
't.numero_compte') {
722 $sqlwhere[] = $db->sanitize($key).
" LIKE '".$db->escape($db->escapeforlike($value)).
"%'";
725 } elseif ($key ==
't.tms>=') {
726 $sqlwhere[] =
"t.tms >= '".$db->idate($value).
"'";
727 } elseif ($key ==
't.tms<=') {
728 $sqlwhere[] =
"t.tms <= '".$db->idate($value).
"'";
729 } elseif ($key ==
't.date_creation>=') {
730 $sqlwhere[] =
"t.date_creation >= '".$db->idate($value).
"'";
731 } elseif ($key ==
't.date_creation<=') {
732 $sqlwhere[] =
"t.date_creation <= '".$db->idate($value).
"'";
733 } elseif ($key ==
't.date_export>=') {
734 $sqlwhere[] =
"t.date_export >= '".$db->idate($value).
"'";
735 } elseif ($key ==
't.date_export<=') {
736 $sqlwhere[] =
"t.date_export <= '".$db->idate($value).
"'";
737 } elseif ($key ==
't.date_validated>=') {
738 $sqlwhere[] =
"t.date_validated >= '".$db->idate($value).
"'";
739 } elseif ($key ==
't.date_validated<=') {
740 $sqlwhere[] =
"t.date_validated <= '".$db->idate($value).
"'";
741 } elseif ($key ==
't.date_lim_reglement>=') {
742 $sqlwhere[] =
"t.date_lim_reglement >= '".$db->idate($value).
"'";
743 } elseif ($key ==
't.date_lim_reglement<=') {
744 $sqlwhere[] =
"t.date_lim_reglement <= '".$db->idate($value).
"'";
745 } elseif ($key ==
't.credit' || $key ==
't.debit') {
747 } elseif ($key ==
't.reconciled_option') {
748 $sqlwhere[] =
't.lettering_code IS NULL';
749 } elseif ($key ==
't.code_journal' && !empty($value)) {
750 if (is_array($value)) {
751 $sqlwhere[] =
natural_search(
"t.code_journal", implode(
',', $value), 3, 1);
755 } elseif ($key ==
't.search_accounting_code_in' && !empty($value)) {
756 $sqlwhere[] =
't.numero_compte IN ('.$db->sanitize($value, 1).
')';
762$sql .=
' WHERE t.entity IN ('.getEntity(
'accountancy').
')';
764if (count($sqlwhere) > 0) {
765 $sql .=
' AND '.implode(
' AND ', $sqlwhere);
776$title_page = $langs->trans(
"Operations").
' - '.$langs->trans(
"Journals");
779$nbtotalofrecords =
'';
782 $sqlforcount = preg_replace(
'/^'.preg_quote($sqlfields,
'/').
'/',
'SELECT COUNT(*) as nbtotalofrecords', $sql);
783 $sqlforcount = preg_replace(
'/GROUP BY .*$/',
'', $sqlforcount);
784 $resql = $db->query($sqlforcount);
786 $objforcount = $db->fetch_object($resql);
787 $nbtotalofrecords = $objforcount->nbtotalofrecords;
792 if (($page * $limit) > (
int) $nbtotalofrecords) {
801$sql .= $db->order($sortfield, $sortorder);
803 $sql .= $db->plimit($limit + 1, $offset);
806$resql = $db->query($sql);
812$num = $db->num_rows($resql);
814$arrayofselected = is_array($toselect) ? $toselect : array();
818$help_url =
'EN:Module_Double_Entry_Accounting|FR:Module_Comptabilité_en_Partie_Double';
819llxHeader(
'', $title_page, $help_url,
'', 0, 0,
'',
'',
'',
'mod-accountancy accountancy-consultation page-journal');
827if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
828 $param .=
'&contextpage='.urlencode($contextpage);
830if ($limit > 0 && $limit != $conf->liste_limit) {
831 $param .=
'&limit='.((int) $limit);
835$arrayofmassactions = array();
836if (
getDolGlobalInt(
'ACCOUNTING_ENABLE_LETTERING') && $user->hasRight(
'accounting',
'mouvements',
'creer')) {
837 $arrayofmassactions[
'letteringauto'] =
img_picto(
'',
'check',
'class="pictofixedwidth"') . $langs->trans(
'LetteringAuto');
838 $arrayofmassactions[
'preunletteringauto'] =
img_picto(
'',
'uncheck',
'class="pictofixedwidth"') . $langs->trans(
'UnletteringAuto');
839 $arrayofmassactions[
'letteringmanual'] =
img_picto(
'',
'check',
'class="pictofixedwidth"') . $langs->trans(
'LetteringManual');
840 $arrayofmassactions[
'preunletteringmanual'] =
img_picto(
'',
'uncheck',
'class="pictofixedwidth"') . $langs->trans(
'UnletteringManual');
842if ($user->hasRight(
'accounting',
'mouvements',
'creer')) {
843 $arrayofmassactions[
'preclonebookkeepingwriting'] =
img_picto(
'',
'clone',
'class="pictofixedwidth"').$langs->trans(
"Clone");
845if ($user->hasRight(
'accounting',
'mouvements',
'creer')) {
846 $arrayofmassactions[
'preassignaccountbookkeepingwriting'] =
img_picto(
'',
'fa-exchange-alt',
'class="pictofixedwidth"').$langs->trans(
"AssignAccount");
848if ($user->hasRight(
'accounting',
'mouvements',
'creer')) {
849 $arrayofmassactions[
'prereturnaccountbookkeepingwriting'] =
img_picto(
'',
'undo',
'class="pictofixedwidth"').$langs->trans(
"ReturnAccount");
851if ($user->hasRight(
'accounting',
'mouvements',
'supprimer')) {
852 $arrayofmassactions[
'predeletebookkeepingwriting'] =
img_picto(
'',
'delete',
'class="pictofixedwidth"').$langs->trans(
"Delete");
855if (
GETPOSTINT(
'nomassaction') || in_array($massaction, array(
'preunletteringauto',
'preunletteringmanual',
'predeletebookkeepingwriting',
'preclonebookkeepingwriting',
'preassignaccountbookkeepingwriting',
'prereturnaccountbookkeepingwriting'))) {
856 $arrayofmassactions = array();
858$massactionbutton = $form->selectMassAction($massaction, $arrayofmassactions);
860print
'<form method="POST" id="searchFormList" action="'.dolBuildUrl($_SERVER[
"PHP_SELF"]).
'">';
861print
'<input type="hidden" name="token" value="'.newToken().
'">';
862print
'<input type="hidden" name="action" value="list">';
863if ($optioncss !=
'') {
864 print
'<input type="hidden" name="optioncss" value="'.urlencode($optioncss).
'">';
866print
'<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
867print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
868print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
869print
'<input type="hidden" name="contextpage" value="'.$contextpage.
'">';
872 $buttonLabel = $langs->trans(
"ExportFilteredList");
874 $buttonLabel = $langs->trans(
"ExportList");
877$parameters = array(
'param' => $param);
878$reshook = $hookmanager->executeHooks(
'addMoreActionsButtonsList', $parameters, $object, $action);
883$newcardbutton = empty($hookmanager->resPrint) ?
'' : $hookmanager->resPrint;
885if (empty($reshook)) {
886 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'ViewFlatList'),
'',
'fa fa-list paddingleft imgforviewmode', DOL_URL_ROOT.
'/accountancy/bookkeeping/list.php?'.$param,
'', 1, array(
'morecss' =>
'marginleftonly btnTitleSelected'));
887 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'GroupByAccountAccounting'),
'',
'fa fa-stream paddingleft imgforviewmode', DOL_URL_ROOT.
'/accountancy/bookkeeping/listbyaccount.php?'.$param,
'', 1, array(
'morecss' =>
'marginleftonly'));
888 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'GroupBySubAccountAccounting'),
'',
'fa fa-align-left vmirror paddingleft imgforviewmode', DOL_URL_ROOT.
'/accountancy/bookkeeping/listbyaccount.php?type=sub'.$param,
'', 1, array(
'morecss' =>
'marginleftonly'));
889 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'ExportToPdf'),
'',
'fa fa-file-pdf paddingleft', $_SERVER[
'PHP_SELF'] .
'?action=exporttopdf&' . $param,
'', $permissiontoexport, array(
'morecss' =>
'marginleftonly'));
891 $url =
'./card.php?action=create'.(!empty($type) ?
'&type=sub' :
'').
'&backtopage='.urlencode($_SERVER[
'PHP_SELF']);
892 if (!empty($socid)) {
893 $url .=
'&socid='.$socid;
896 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'NewAccountingMvt'),
'',
'fa fa-plus-circle paddingleft', $url,
'', $permissiontoadd);
899print_barre_liste($title_page, $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords,
'title_accountancy', 0, $newcardbutton,
'', $limit, 0, 0, 1);
901if ($massaction ==
'preunletteringauto') {
902 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassUnletteringAuto"), $langs->trans(
"ConfirmMassUnletteringQuestion", count($toselect)),
"unletteringauto",
null,
'', 0, 200, 500, 1);
903} elseif ($massaction ==
'preunletteringmanual') {
904 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassUnletteringManual"), $langs->trans(
"ConfirmMassUnletteringQuestion", count($toselect)),
"unletteringmanual",
null,
'', 0, 200, 500, 1);
905} elseif ($massaction ==
'predeletebookkeepingwriting') {
906 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassDeleteBookkeepingWriting"), $langs->trans(
"ConfirmMassDeleteBookkeepingWritingQuestion", count($toselect)),
"deletebookkeepingwriting",
null,
'', 0, 200, 500, 1);
907} elseif ($massaction ==
'preassignaccountbookkeepingwriting') {
908 $input = $formaccounting->select_account(
'',
'account', 1);
909 $formquestion = array(array(
'type' =>
'other',
'name' =>
'account',
'label' =>
'<span class="fieldrequired">' . $langs->trans(
"AccountAccountingShort") .
'</span>',
'value' => $input),);
910 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"confirmMassAssignAccountBookkeepingWritingConfirm"), $langs->trans(
"ConfirmMassAssignAccountBookkeepingWritingQuestion", count($toselect)),
"assignaccountbookkeepingwriting", $formquestion,
'', 0, 200, 500, 1);
911} elseif ($massaction ==
'preclonebookkeepingwriting') {
912 $input1 = $form->selectDate(
'',
'massdate', 0, 0, 0,
"create_mvt", 1, 1);
913 $input2 = $formaccounting->select_journal($journal_code,
'code_journal', 0, 0, 1, 1) .
'</td>';
914 $formquestion = array(
917 'name' =>
'massdate',
918 'label' =>
'<span class="fieldrequired">' . $langs->trans(
"Docdate") .
'</span>',
924 $formquestion[] = array(
926 'name' =>
'code_journal',
927 'label' =>
'<span class="fieldrequired">' . $langs->trans(
"Codejournal") .
'</span>',
932 print $form->formconfirm(
933 $_SERVER[
"PHP_SELF"],
934 $langs->trans(
"ConfirmMassCloneBookkeepingWriting"),
935 $langs->trans(
"ConfirmMassCloneBookkeepingWritingQuestion", count($toselect)),
936 "clonebookkeepingwriting",
940} elseif ($massaction ==
'prereturnaccountbookkeepingwriting') {
941 $input1 = $form->selectDate(
'',
'massdate', 0, 0, 0,
"create_mvt", 1, 1);
942 $formquestion = array(array(
'type' =>
'other',
'name' =>
'massdate',
'label' =>
'<span class="fieldrequired">' . $langs->trans(
"Docdate") .
'</span>',
'value' => $input1));
943 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassReturnAccountBookkeepingWriting"), $langs->trans(
"ConfirmMassReturnAccountBookkeepingWritingQuestion", count($toselect)),
"returnaccountbookkeepingwriting", $formquestion,
'', 0, 200, 500, 1);
950include DOL_DOCUMENT_ROOT.
'/core/tpl/massactions_pre.tpl.php';
952$varpage = empty($contextpage) ? $_SERVER[
"PHP_SELF"] : $contextpage;
953$selectedfields = $form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage,
getDolGlobalString(
'MAIN_CHECKBOX_LEFT_COLUMN'));
954if ($massactionbutton && $contextpage !=
'poslist') {
955 $selectedfields .= $form->showCheckAddButtons(
'checkforselect', 1);
959$moreforfilter .=
'<div class="divsearchfield">';
960$moreforfilter .= $langs->trans(
'AccountingCategory').
': ';
961$moreforfilter .=
'<div class="nowrap inline-block">';
962$moreforfilter .= $formaccounting->select_accounting_category($search_account_category,
'search_account_category', 1, 0, 0, 0);
963$moreforfilter .=
'</div>';
964$moreforfilter .=
'</div>';
966$parameters = array();
967$reshook = $hookmanager->executeHooks(
'printFieldPreListTitle', $parameters, $object, $action);
968if (empty($reshook)) {
969 $moreforfilter .= $hookmanager->resPrint;
971 $moreforfilter = $hookmanager->resPrint;
974print
'<div class="liste_titre liste_titre_bydiv centpercent">';
978print
'<div class="div-table-responsive">';
979print
'<table class="tagtable liste'.($moreforfilter ?
" listwithfilterbefore" :
"").
'">';
982print
'<tr class="liste_titre_filter">';
985 print
'<td class="liste_titre center">';
986 $searchpicto = $form->showFilterButtons(
'left');
991if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
992 print
'<td class="liste_titre"><input type="text" name="search_mvt_num" size="6" value="'.dol_escape_htmltag($search_mvt_num).
'"></td>';
995if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
996 print
'<td class="liste_titre center">';
997 print $formaccounting->multi_select_journal($search_ledger_code,
'search_ledger_code', 0, 1, 1, 1,
'maxwidth75');
1001if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1002 print
'<td class="liste_titre center">';
1003 print
'<div class="nowrapfordate">';
1004 print $form->selectDate($search_date_start ? $search_date_start : -1,
'search_date_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1006 print
'<div class="nowrapfordate">';
1007 print $form->selectDate($search_date_end ? $search_date_end : -1,
'search_date_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1012if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
1013 print
'<td class="liste_titre"><input type="text" name="search_doc_ref" class="width75" value="'.dol_escape_htmltag($search_doc_ref).
'"></td>';
1016if (!empty($arrayfields[
't.numero_compte'][
'checked'])) {
1017 print
'<td class="liste_titre">';
1018 print
'<div class="nowrap">';
1019 print $formaccounting->select_account($search_accountancy_code_start,
'search_accountancy_code_start', $langs->trans(
'From'), array(), 1, 1,
'maxwidth150',
'account');
1021 print
'<div class="nowrap">';
1022 print $formaccounting->select_account($search_accountancy_code_end,
'search_accountancy_code_end', $langs->trans(
'to'), array(), 1, 1,
'maxwidth150',
'account');
1027if (!empty($arrayfields[
't.subledger_account'][
'checked'])) {
1028 print
'<td class="liste_titre">';
1032 print
'<div class="nowrap">';
1034 print $formaccounting->select_auxaccount($search_accountancy_aux_code_start,
'search_accountancy_aux_code_start', $langs->trans(
'From'),
'maxwidth250',
'subledgeraccount');
1036 print
'<div class="nowrap">';
1037 print $formaccounting->select_auxaccount($search_accountancy_aux_code_end,
'search_accountancy_aux_code_end', $langs->trans(
'to'),
'maxwidth250',
'subledgeraccount');
1040 print
'<input type="text" class="maxwidth75" name="search_accountancy_aux_code" value="'.dol_escape_htmltag($search_accountancy_aux_code).
'">';
1045if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1046 print
'<td class="liste_titre">';
1047 print
'<input type="text" size="7" class="flat" name="search_mvt_label" value="'.dol_escape_htmltag($search_mvt_label).
'"/>';
1051if (!empty($arrayfields[
't.debit'][
'checked'])) {
1052 print
'<td class="liste_titre right">';
1053 print
'<input type="text" class="flat" name="search_debit" size="4" value="'.dol_escape_htmltag($search_debit).
'">';
1057if (!empty($arrayfields[
't.credit'][
'checked'])) {
1058 print
'<td class="liste_titre right">';
1059 print
'<input type="text" class="flat" name="search_credit" size="4" value="'.dol_escape_htmltag($search_credit).
'">';
1063if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1064 print
'<td class="liste_titre center">';
1065 print
'<input type="text" size="3" class="flat" name="search_lettering_code" value="'.dol_escape_htmltag($search_lettering_code).
'"/>';
1066 print
'<br><span class="nowrap"><input type="checkbox" name="search_not_reconciled" value="notreconciled"'.($search_not_reconciled ==
'notreconciled' ?
' checked' :
'').
'>'.$langs->trans(
"NotReconciled").
'</span>';
1071$parameters = array(
'arrayfields' => $arrayfields);
1072$reshook = $hookmanager->executeHooks(
'printFieldListOption', $parameters);
1073print $hookmanager->resPrint;
1076if (!empty($arrayfields[
't.date_creation'][
'checked'])) {
1077 print
'<td class="liste_titre center">';
1078 print
'<div class="nowrapfordate">';
1079 print $form->selectDate($search_date_creation_start,
'search_date_creation_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1081 print
'<div class="nowrapfordate">';
1082 print $form->selectDate($search_date_creation_end,
'search_date_creation_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1087if (!empty($arrayfields[
't.tms'][
'checked'])) {
1088 print
'<td class="liste_titre center">';
1089 print
'<div class="nowrapfordate">';
1090 print $form->selectDate($search_date_modification_start,
'search_date_modification_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1092 print
'<div class="nowrapfordate">';
1093 print $form->selectDate($search_date_modification_end,
'search_date_modification_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1098if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1099 print
'<td class="liste_titre center">';
1100 print
'<div class="nowrapfordate">';
1101 print $form->selectDate($search_date_export_start,
'search_date_export_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1103 print
'<div class="nowrapfordate">';
1104 print $form->selectDate($search_date_export_end,
'search_date_export_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1109if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1110 print
'<td class="liste_titre center">';
1111 print
'<div class="nowrapfordate">';
1112 print $form->selectDate($search_date_validation_start,
'search_date_validation_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1114 print
'<div class="nowrapfordate">';
1115 print $form->selectDate($search_date_validation_end,
'search_date_validation_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1120if (!empty($arrayfields[
't.date_lim_reglement'][
'checked'])) {
1121 print
'<td class="liste_titre center">';
1122 print
'<div class="nowrapfordate">';
1123 print $form->selectDate($search_date_due_start,
'search_date_due_start_', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1125 print
'<div class="nowrapfordate">';
1126 print $form->selectDate($search_date_due_end,
'search_date_due_end_', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1130if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1131 print
'<td class="liste_titre center">';
1132 print
'<input class="flat searchstring maxwidth50" type="text" name="search_import_key" value="'.dol_escape_htmltag($search_import_key).
'">';
1137 print
'<td class="liste_titre center">';
1138 $searchpicto = $form->showFilterButtons();
1144print
'<tr class="liste_titre">';
1146 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch actioncolumn ');
1148if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
1149 print_liste_field_titre($arrayfields[
't.piece_num'][
'label'], $_SERVER[
'PHP_SELF'],
"t.piece_num",
"", $param,
"", $sortfield, $sortorder);
1151if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
1152 print_liste_field_titre($arrayfields[
't.code_journal'][
'label'], $_SERVER[
'PHP_SELF'],
"t.code_journal",
"", $param,
'', $sortfield, $sortorder,
'center ');
1154if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1155 print_liste_field_titre($arrayfields[
't.doc_date'][
'label'], $_SERVER[
'PHP_SELF'],
"t.doc_date",
"", $param,
'', $sortfield, $sortorder,
'center ');
1157if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
1158 print_liste_field_titre($arrayfields[
't.doc_ref'][
'label'], $_SERVER[
'PHP_SELF'],
"t.doc_ref",
"", $param,
"", $sortfield, $sortorder);
1160if (!empty($arrayfields[
't.numero_compte'][
'checked'])) {
1161 print_liste_field_titre($arrayfields[
't.numero_compte'][
'label'], $_SERVER[
'PHP_SELF'],
"t.numero_compte",
"", $param,
"", $sortfield, $sortorder);
1163if (!empty($arrayfields[
't.subledger_account'][
'checked'])) {
1164 print_liste_field_titre($arrayfields[
't.subledger_account'][
'label'], $_SERVER[
'PHP_SELF'],
"t.subledger_account",
"", $param,
"", $sortfield, $sortorder);
1166if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1167 print_liste_field_titre($arrayfields[
't.label_operation'][
'label'], $_SERVER[
'PHP_SELF'],
"t.label_operation",
"", $param,
"", $sortfield, $sortorder);
1169if (!empty($arrayfields[
't.debit'][
'checked'])) {
1170 print_liste_field_titre($arrayfields[
't.debit'][
'label'], $_SERVER[
'PHP_SELF'],
"t.debit",
"", $param,
'', $sortfield, $sortorder,
'right ');
1172if (!empty($arrayfields[
't.credit'][
'checked'])) {
1173 print_liste_field_titre($arrayfields[
't.credit'][
'label'], $_SERVER[
'PHP_SELF'],
"t.credit",
"", $param,
'', $sortfield, $sortorder,
'right ');
1175if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1176 print_liste_field_titre($arrayfields[
't.lettering_code'][
'label'], $_SERVER[
'PHP_SELF'],
"t.lettering_code",
"", $param,
'', $sortfield, $sortorder,
'center ');
1179$parameters = array(
'arrayfields' => $arrayfields,
'param' => $param,
'sortfield' => $sortfield,
'sortorder' => $sortorder);
1180$reshook = $hookmanager->executeHooks(
'printFieldListTitle', $parameters);
1181print $hookmanager->resPrint;
1182if (!empty($arrayfields[
't.date_creation'][
'checked'])) {
1183 print_liste_field_titre($arrayfields[
't.date_creation'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_creation",
"", $param,
'', $sortfield, $sortorder,
'center ');
1185if (!empty($arrayfields[
't.tms'][
'checked'])) {
1186 print_liste_field_titre($arrayfields[
't.tms'][
'label'], $_SERVER[
'PHP_SELF'],
"t.tms",
"", $param,
'', $sortfield, $sortorder,
'center ');
1188if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1189 print_liste_field_titre($arrayfields[
't.date_export'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_export,t.doc_date",
"", $param,
'', $sortfield, $sortorder,
'center ');
1191if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1192 print_liste_field_titre($arrayfields[
't.date_validated'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_validated,t.doc_date",
"", $param,
'', $sortfield, $sortorder,
'center ');
1195if (!empty($arrayfields[
't.date_lim_reglement'][
'checked'])) {
1196 print_liste_field_titre($arrayfields[
't.date_lim_reglement'][
'label'], $_SERVER[
'PHP_SELF'],
't.date_lim_reglement',
'', $param,
'', $sortfield, $sortorder,
'center ');
1198if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1199 print_liste_field_titre($arrayfields[
't.import_key'][
'label'], $_SERVER[
"PHP_SELF"],
"t.import_key",
"", $param,
'', $sortfield, $sortorder,
'center ');
1202 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch ');
1218while ($i < min($num, $limit)) {
1219 $obj = $db->fetch_object($resql);
1224 $line->id = $obj->rowid;
1225 $line->doc_date = $db->jdate($obj->doc_date);
1226 $line->doc_type = $obj->doc_type;
1227 $line->doc_ref = $obj->doc_ref;
1228 $line->fk_doc = $obj->fk_doc;
1229 $line->fk_docdet = $obj->fk_docdet;
1230 $line->thirdparty_code = $obj->thirdparty_code;
1231 $line->subledger_account = $obj->subledger_account;
1232 $line->subledger_label = $obj->subledger_label;
1233 $line->numero_compte = $obj->numero_compte;
1234 $line->label_compte = $obj->label_compte;
1235 $line->label_operation = $obj->label_operation;
1236 $line->debit = $obj->debit;
1237 $line->credit = $obj->credit;
1238 $line->montant = $obj->amount;
1239 $line->amount = $obj->amount;
1240 $line->sens = $obj->sens;
1241 $line->lettering_code = $obj->lettering_code;
1242 $line->fk_user_author = $obj->fk_user_author;
1243 $line->import_key = $obj->import_key;
1244 $line->code_journal = $obj->code_journal;
1245 $line->journal_label = $obj->journal_label;
1246 $line->piece_num = $obj->piece_num;
1247 $line->ref = $obj->ref;
1248 $line->date_creation = $db->jdate($obj->date_creation);
1249 $line->date_modification = $db->jdate($obj->date_modification);
1250 $line->date_export = $db->jdate($obj->date_export);
1251 $line->date_validation = $db->jdate($obj->date_validation);
1253 $line->date_lim_reglement = $db->jdate($obj->date_lim_reglement);
1255 print
'<tr class="oddeven">';
1258 print
'<td class="nowraponall center">';
1259 if (($massactionbutton || $massaction) && $contextpage !=
'poslist') {
1261 if (in_array($line->id, $arrayofselected)) {
1264 print
'<input id="cb'.$line->id.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$line->id.
'"'.($selected ?
' checked="checked"' :
'').
' />';
1273 if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
1274 print
'<td class="nowraponall">';
1276 $object->piece_num = $line->piece_num;
1278 print
$object->getNomUrl(1,
'', 0,
'', 1);
1279 print
'<span class="hideonsmartphone">';
1280 if (!empty($line->date_export)) {
1281 print
img_picto($langs->trans(
"DateExport").
": ".
dol_print_date($line->date_export,
'dayhour').
" (".$langs->trans(
"TransactionExportDesc").
")",
'fa-file-export',
'class="paddingleft pictofixedwidth opacitymedium"');
1283 if (!empty($line->date_validation)) {
1284 print
img_picto($langs->trans(
"DateValidation").
": ".
dol_print_date($line->date_validation,
'dayhour').
" (".$langs->trans(
"TransactionBlockedLockedDesc").
")",
'fa-lock',
'class="paddingleft pictofixedwidth opacitymedium"');
1294 if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
1295 if (empty($conf->cache[
'accountingjournal'][$line->code_journal])) {
1297 $accountingjournal->fetch(0, $line->code_journal);
1298 $conf->cache[
'accountingjournal'][$line->code_journal] = $accountingjournal;
1300 $accountingjournal = $conf->cache[
'accountingjournal'][$line->code_journal];
1303 $journaltoshow = (($accountingjournal->id > 0) ? $accountingjournal->getNomUrl(0, 0, 0,
'', 0) : $line->code_journal);
1304 print
'<td class="center tdoverflowmax150">'.$journaltoshow.
'</td>';
1311 if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1312 print
'<td class="center">'.dol_print_date($line->doc_date,
'day').
'</td>';
1320 if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
1322 $objectstatic =
null;
1324 if ($line->doc_type ===
'customer_invoice') {
1325 $langs->loadLangs(array(
'bills'));
1327 require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
1328 $objectstatic =
new Facture($db);
1329 $objectstatic->fetch($line->fk_doc);
1334 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.$objectstatic->id;
1335 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir);
1336 } elseif ($line->doc_type ===
'supplier_invoice') {
1337 $langs->loadLangs(array(
'bills'));
1339 require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.facture.class.php';
1341 $objectstatic->fetch($line->fk_doc);
1343 $modulepart =
'invoice_supplier';
1348 $filedir =
getMultidirOutput($objectstatic,
'', 1).dol_sanitizeFileName($line->doc_ref);
1349 $subdir =
getMultidirOutput($objectstatic,
'', 1,
'outputrel').dol_sanitizeFileName($line->doc_ref);
1352 if ($objectstatic->id > 0) {
1353 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $subdir, $filedir);
1355 $documentlink = $line->doc_ref;
1357 } elseif ($line->doc_type ===
'expense_report') {
1358 $langs->loadLangs(array(
'trips'));
1360 require_once DOL_DOCUMENT_ROOT.
'/expensereport/class/expensereport.class.php';
1362 $objectstatic->fetch($line->fk_doc);
1367 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.$objectstatic->id;
1368 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir);
1369 } elseif ($line->doc_type ===
'bank') {
1370 require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
1372 $objectstatic->fetch($line->fk_doc);
1378 $labeltoshowalt =
'';
1379 $classforlabel =
'';
1380 if (($line->doc_type ===
'customer_invoice' || $line->doc_type ===
'supplier_invoice' || $line->doc_type ===
'expense_report') && is_object($objectstatic)) {
1381 $labeltoshow .= $objectstatic->getNomUrl(1,
'', 0, 0,
'', 0, -1, 1);
1382 $labeltoshow .= $documentlink;
1383 $labeltoshowalt .= $objectstatic->ref;
1384 } elseif ($line->doc_type ===
'bank' && is_object($objectstatic)) {
1385 $labeltoshow .= $objectstatic->getNomUrl(1);
1386 $labeltoshowalt .= $objectstatic->ref;
1387 $bank_ref = strstr($line->doc_ref,
'-');
1388 $labeltoshow .=
" " . $bank_ref;
1389 $labeltoshowalt .=
" " . $bank_ref;
1391 $labeltoshow .= $line->doc_ref;
1392 $labeltoshowalt .= $line->doc_ref;
1393 $classforlabel =
'tdoverflowmax250';
1396 print
'<td class="nowraponall'.($classforlabel ?
' '.$classforlabel :
'').
'" title="'.
dol_escape_htmltag($labeltoshowalt).
'">';
1405 if (!empty($arrayfields[
't.numero_compte'][
'checked'])) {
1406 print
'<td>'.length_accountg($line->numero_compte).
'</td>';
1413 if (!empty($arrayfields[
't.subledger_account'][
'checked'])) {
1414 print
'<td>'.length_accounta($line->subledger_account).
'</td>';
1421 if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1422 print
'<td class="small tdoverflowmax200" title="'.dol_escape_htmltag($line->label_operation).
'">'.
dol_escape_htmltag($line->label_operation).
'</td>';
1429 if (!empty($arrayfields[
't.debit'][
'checked'])) {
1430 print
'<td class="right nowraponall amount">'.($line->debit != 0 ?
price($line->debit) :
'').
'</td>';
1441 if (!empty($arrayfields[
't.credit'][
'checked'])) {
1442 print
'<td class="right nowraponall amount">'.($line->credit != 0 ?
price($line->credit) :
'').
'</td>';
1449 $totalarray[
'val'][
'totalcredit'] += $line->credit;
1453 if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1454 print
'<td class="center">'.$line->lettering_code.
'</td>';
1461 $parameters = array(
'arrayfields' => $arrayfields,
'obj' => $obj,
'i' => $i,
'totalarray' => &$totalarray);
1462 $reshook = $hookmanager->executeHooks(
'printFieldListValue', $parameters);
1463 print $hookmanager->resPrint;
1466 if (!empty($arrayfields[
't.date_creation'][
'checked'])) {
1467 print
'<td class="center">'.dol_print_date($line->date_creation,
'dayhour',
'tzuserrel').
'</td>';
1474 if (!empty($arrayfields[
't.tms'][
'checked'])) {
1475 print
'<td class="center">'.dol_print_date($line->date_modification,
'dayhour',
'tzuserrel').
'</td>';
1482 if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1483 print
'<td class="center nowraponall">'.dol_print_date($line->date_export,
'dayhour',
'tzuserrel').
'</td>';
1490 if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1491 print
'<td class="center nowraponall">'.dol_print_date($line->date_validation,
'dayhour',
'tzuserrel').
'</td>';
1498 if (!empty($arrayfields[
't.date_lim_reglement'][
'checked'])) {
1499 print
'<td class="center">'.dol_print_date($line->date_lim_reglement,
'day').
'</td>';
1505 if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1506 print
'<td class="tdoverflowmax125" title="'.dol_escape_htmltag($obj->import_key).
'">'.
dol_escape_htmltag($obj->import_key).
"</td>\n";
1514 print
'<td class="nowraponall center">';
1515 if (($massactionbutton || $massaction) && $contextpage !=
'poslist') {
1517 if (in_array($line->id, $arrayofselected)) {
1520 print
'<input id="cb'.$line->id.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$line->id.
'"'.($selected ?
' checked="checked"' :
'').
' />';
1535include DOL_DOCUMENT_ROOT.
'/core/tpl/list_print_total.tpl.php';
1540 foreach ($arrayfields as $key => $val) {
1541 if (!empty($val[
'checked'])) {
1545 print
'<tr><td colspan="'.$colspan.
'"><span class="opacitymedium">'.$langs->trans(
"NoRecordFound").
'</span></td></tr>';
1548$parameters = array(
'arrayfields' => $arrayfields,
'sql' => $sql);
1549$reshook = $hookmanager->executeHooks(
'printFieldListFooter', $parameters, $object, $action);
1550print $hookmanager->resPrint;
if(! $sortfield) if(! $sortorder) $object
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 build sending documents with model Espadon.
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.
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.
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.
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.
natural_search($fields, $value, $mode=0, $nofirstand=0, $sqltoadd='')
Generate natural SQL search string for a criteria (this criteria can be tested on one or several fiel...
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.
if(!function_exists( 'utf8_encode')) if(!function_exists('utf8_decode')) if(!function_exists( 'str_starts_with')) if(!function_exists('str_ends_with')) if(!function_exists( 'str_contains')) getMultidirOutput($object, $module='', $forobject=0, $mode='output')
Return the full path of the directory where a module (or an object of a module) stores its files.
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).
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
isModEnabled($module)
Is Dolibarr module enabled.
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...
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.