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'));
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),
214$parameters = array(
'arrayfields' => &$arrayfields);
215$reshook = $hookmanager->executeHooks(
'completeArrayFields', $parameters, $object, $action);
218 unset($arrayfields[
't.lettering_code']);
226if ($user->socid > 0) {
229if (!$user->hasRight(
'accounting',
'mouvements',
'lire')) {
234$permissiontoread = $user->hasRight(
'accounting',
'mouvements',
'lire');
235$permissiontoadd = $user->hasRight(
'accounting',
'mouvements',
'creer');
236$permissiontodelete = $user->hasRight(
'accounting',
'mouvements',
'supprimer');
237$permissiontoexport = $user->hasRight(
'accounting',
'mouvements',
'export');
247if (
GETPOST(
'cancel',
'alpha')) {
251if (!
GETPOST(
'confirmmassaction',
'alpha') &&
252 !in_array($massaction, [
253 'pregeneralunmatchingmanual',
254 'predeletebookkeepingwriting',
255 'preclonebookkeepingwriting',
256 'preassignaccountbookkeepingwriting',
257 'prereturnaccountbookkeepingwriting'
262$parameters = array(
'socid' => $socid);
263$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
268if (empty($reshook)) {
269 include DOL_DOCUMENT_ROOT.
'/core/actions_changeselectedfields.inc.php';
271 if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
272 $search_mvt_num =
'';
273 $search_doc_type =
'';
274 $search_doc_ref =
'';
275 $search_doc_date =
'';
276 $search_account_category =
'';
277 $search_accountancy_code =
'';
278 $search_accountancy_code_start =
'';
279 $search_accountancy_code_end =
'';
280 $search_accountancy_aux_code =
'';
281 $search_accountancy_aux_code_start =
'';
282 $search_accountancy_aux_code_end =
'';
283 $search_mvt_label =
'';
284 $search_direction =
'';
285 $search_ledger_code = array();
286 $search_date_start =
'';
287 $search_date_end =
'';
288 $search_date_creation_start =
'';
289 $search_date_creation_end =
'';
290 $search_date_modification_start =
'';
291 $search_date_modification_end =
'';
292 $search_date_export_start =
'';
293 $search_date_export_end =
'';
294 $search_date_validation_start =
'';
295 $search_date_validation_end =
'';
297 $search_date_due_start_day =
'';
298 $search_date_due_start_month =
'';
299 $search_date_due_start_year =
'';
300 $search_date_due_start =
'';
302 $search_date_due_end_day =
'';
303 $search_date_due_end_month =
'';
304 $search_date_due_end_year =
'';
305 $search_date_due_end =
'';
308 $search_lettering_code =
'';
309 $search_not_reconciled =
'';
310 $search_import_key =
'';
312 unset($_SESSION[
'DOLDATE_search_date_start_accountancy_day']);
313 unset($_SESSION[
'DOLDATE_search_date_start_accountancy_month']);
314 unset($_SESSION[
'DOLDATE_search_date_start_accountancy_year']);
315 unset($_SESSION[
'DOLDATE_search_date_end_accountancy_day']);
316 unset($_SESSION[
'DOLDATE_search_date_end_accountancy_month']);
317 unset($_SESSION[
'DOLDATE_search_date_end_accountancy_year']);
321 if (!empty($search_date_start)) {
322 $filter[
't.doc_date>='] = $search_date_start;
324 $param .=
'&search_date_startmonth='.((int) $tmp[
'mon']).
'&search_date_startday='.((int) $tmp[
'mday']).
'&search_date_startyear='.((int) $tmp[
'year']);
326 if (!empty($search_date_end)) {
327 $filter[
't.doc_date<='] = $search_date_end;
329 $param .=
'&search_date_endmonth='.((int) $tmp[
'mon']).
'&search_date_endday='.((int) $tmp[
'mday']).
'&search_date_endyear='.((int) $tmp[
'year']);
331 if (!empty($search_doc_date)) {
332 $filter[
't.doc_date'] = $search_doc_date;
334 $param .=
'&doc_datemonth='.((int) $tmp[
'mon']).
'&doc_dateday='.((int) $tmp[
'mday']).
'&doc_dateyear='.((int) $tmp[
'year']);
336 if (!empty($search_doc_type)) {
337 $filter[
't.doc_type'] = $search_doc_type;
338 $param .=
'&search_doc_type='.urlencode($search_doc_type);
340 if (!empty($search_doc_ref)) {
341 $filter[
't.doc_ref'] = $search_doc_ref;
342 $param .=
'&search_doc_ref='.urlencode($search_doc_ref);
344 if ($search_account_category !=
'-1' && !empty($search_account_category)) {
345 require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountancycategory.class.php';
348 $listofaccountsforgroup = $accountingcategory->getCptsCat(0,
'fk_accounting_category = '.((
int) $search_account_category));
349 $listofaccountsforgroup2 = array();
350 if (is_array($listofaccountsforgroup)) {
351 foreach ($listofaccountsforgroup as $tmpval) {
352 $listofaccountsforgroup2[] =
"'".$db->escape((
string) $tmpval[
'account_number']).
"'";
355 if (!empty($listofaccountsforgroup2)) {
356 $filter[
't.search_accounting_code_in'] = implode(
',', $listofaccountsforgroup2);
358 $filter[
't.search_accounting_code_in'] =
"''";
359 setEventMessages($langs->trans(
"ThisCategoryHasNoItems"),
null,
'warnings');
361 $param .=
'&search_account_category='.urlencode((
string) ($search_account_category));
363 if (!empty($search_accountancy_code)) {
364 $filter[
't.numero_compte'] = $search_accountancy_code;
365 $param .=
'&search_accountancy_code='.urlencode($search_accountancy_code);
367 if (!empty($search_accountancy_code_start)) {
368 $filter[
't.numero_compte>='] = $search_accountancy_code_start;
369 $param .=
'&search_accountancy_code_start='.urlencode($search_accountancy_code_start);
371 if (!empty($search_accountancy_code_end)) {
372 $filter[
't.numero_compte<='] = $search_accountancy_code_end;
373 $param .=
'&search_accountancy_code_end='.urlencode($search_accountancy_code_end);
375 if (!empty($search_accountancy_aux_code)) {
376 $filter[
't.subledger_account'] = $search_accountancy_aux_code;
377 $param .=
'&search_accountancy_aux_code='.urlencode($search_accountancy_aux_code);
379 if (!empty($search_accountancy_aux_code_start)) {
380 $filter[
't.subledger_account>='] = $search_accountancy_aux_code_start;
381 $param .=
'&search_accountancy_aux_code_start='.urlencode($search_accountancy_aux_code_start);
383 if (!empty($search_accountancy_aux_code_end)) {
384 $filter[
't.subledger_account<='] = $search_accountancy_aux_code_end;
385 $param .=
'&search_accountancy_aux_code_end='.urlencode($search_accountancy_aux_code_end);
387 if (!empty($search_mvt_label)) {
388 $filter[
't.label_operation'] = $search_mvt_label;
389 $param .=
'&search_mvt_label='.urlencode($search_mvt_label);
391 if (!empty($search_direction)) {
392 $filter[
't.sens'] = $search_direction;
393 $param .=
'&search_direction='.urlencode($search_direction);
395 if (!empty($search_ledger_code)) {
396 $filter[
't.code_journal'] = $search_ledger_code;
397 foreach ($search_ledger_code as $code) {
398 $param .=
'&search_ledger_code[]='.urlencode($code);
401 if (!empty($search_mvt_num)) {
402 $filter[
't.piece_num'] = $search_mvt_num;
403 $param .=
'&search_mvt_num='.urlencode((
string) ($search_mvt_num));
405 if (!empty($search_date_creation_start)) {
406 $filter[
't.date_creation>='] = $search_date_creation_start;
408 $param .=
'&search_date_creation_startmonth='.((int) $tmp[
'mon']).
'&search_date_creation_startday='.((int) $tmp[
'mday']).
'&search_date_creation_startyear='.((int) $tmp[
'year']);
410 if (!empty($search_date_creation_end)) {
411 $filter[
't.date_creation<='] = $search_date_creation_end;
413 $param .=
'&search_date_creation_endmonth='.((int) $tmp[
'mon']).
'&search_date_creation_endday='.((int) $tmp[
'mday']).
'&search_date_creation_endyear='.((int) $tmp[
'year']);
415 if (!empty($search_date_modification_start)) {
416 $filter[
't.tms>='] = $search_date_modification_start;
417 $tmp =
dol_getdate($search_date_modification_start);
418 $param .=
'&search_date_modification_startmonth='.((int) $tmp[
'mon']).
'&search_date_modification_startday='.((int) $tmp[
'mday']).
'&search_date_modification_startyear='.((int) $tmp[
'year']);
420 if (!empty($search_date_modification_end)) {
421 $filter[
't.tms<='] = $search_date_modification_end;
423 $param .=
'&search_date_modification_endmonth='.((int) $tmp[
'mon']).
'&search_date_modification_endday='.((int) $tmp[
'mday']).
'&search_date_modification_endyear='.((int) $tmp[
'year']);
425 if (!empty($search_date_export_start)) {
426 $filter[
't.date_export>='] = $search_date_export_start;
428 $param .=
'&search_date_export_startmonth='.((int) $tmp[
'mon']).
'&search_date_export_startday='.((int) $tmp[
'mday']).
'&search_date_export_startyear='.((int) $tmp[
'year']);
430 if (!empty($search_date_export_end)) {
431 $filter[
't.date_export<='] = $search_date_export_end;
433 $param .=
'&search_date_export_endmonth='.((int) $tmp[
'mon']).
'&search_date_export_endday='.((int) $tmp[
'mday']).
'&search_date_export_endyear='.((int) $tmp[
'year']);
435 if (!empty($search_date_validation_start)) {
436 $filter[
't.date_validated>='] = $search_date_validation_start;
438 $param .=
'&search_date_validation_startmonth='.((int) $tmp[
'mon']).
'&search_date_validation_startday='.((int) $tmp[
'mday']).
'&search_date_validation_startyear='.((int) $tmp[
'year']);
440 if (!empty($search_date_validation_end)) {
441 $filter[
't.date_validated<='] = $search_date_validation_end;
443 $param .=
'&search_date_validation_endmonth='.((int) $tmp[
'mon']).
'&search_date_validation_endday='.((int) $tmp[
'mday']).
'&search_date_validation_endyear='.((int) $tmp[
'year']);
446 if (!empty($search_date_due_start)) {
447 $filter[
't.date_lim_reglement>='] = $search_date_due_start;
448 $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;
451 if (!empty($search_date_due_end)) {
452 $filter[
't.date_lim_reglement<='] = $search_date_due_end;
453 $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;
455 if (!empty($search_debit)) {
456 $filter[
't.debit'] = $search_debit;
457 $param .=
'&search_debit='.urlencode($search_debit);
459 if (!empty($search_credit)) {
460 $filter[
't.credit'] = $search_credit;
461 $param .=
'&search_credit='.urlencode($search_credit);
463 if (!empty($search_lettering_code)) {
464 $filter[
't.lettering_code'] = $search_lettering_code;
465 $param .=
'&search_lettering_code='.urlencode($search_lettering_code);
467 if (!empty($search_not_reconciled)) {
468 $filter[
't.reconciled_option'] = $search_not_reconciled;
469 $param .=
'&search_not_reconciled='.urlencode($search_not_reconciled);
471 if (!empty($search_import_key)) {
472 $filter[
't.import_key'] = $search_import_key;
473 $param .=
'&search_import_key='.urlencode($search_import_key);
477 if ($action ===
'exporttopdf' && $permissiontoadd) {
478 $object->fetchAll(
'ASC,ASC,ASC',
'code_journal,doc_date,piece_num', 0, 0, $filter);
479 require_once DOL_DOCUMENT_ROOT .
'/core/modules/accountancy/doc/pdf_bookkeeping.modules.php';
481 $pdf->fromDate = $search_date_start;
482 $pdf->toDate = $search_date_end;
484 $result = $pdf->write_file($object, $langs);
495 $objectclass =
'Bookkeeping';
496 $objectlabel =
'Bookkeeping';
497 $uploaddir =
$conf->societe->dir_output;
501 include DOL_DOCUMENT_ROOT.
'/core/actions_massactions.inc.php';
503 if (!$error && $action ==
'deletebookkeepingwriting' && $confirm ==
"yes" && $user->hasRight(
'accounting',
'mouvements',
'supprimer')) {
508 $nb_lettering = $lettering->bookkeepingLetteringAll($toselect,
true);
509 if ($nb_lettering < 0) {
518 foreach ($toselect as $toselectid) {
519 $result =
$object->fetch($toselectid);
520 if ($result > 0 && (!isset(
$object->date_validation) ||
$object->date_validation ===
'')) {
529 } elseif ($result < 0) {
533 } elseif (isset(
$object->date_validation) &&
$object->date_validation !=
'') {
534 setEventMessages($langs->trans(
"ValidatedRecordWhereFound"),
null,
'errors');
547 } elseif ($nbok > 0) {
553 header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?noreset=1".($param ?
'&'.$param :
''));
561 if (!$error && $action ==
'clonebookkeepingwriting' && $confirm ==
"yes" && $user->hasRight(
'accounting',
'mouvements',
'creer')) {
562 $result =
$object->newCloneMass($toselect, $journal_code, $massdate);
568 header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?noreset=1".($param ?
'&'.$param :
''));
576 if (!$error && $action ==
'assignaccountbookkeepingwriting' && $confirm ==
"yes" && $user->hasRight(
'accounting',
'mouvements',
'creer')) {
577 $result =
$object->assignAccountMass($toselect, (
int) $account);
583 header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?noreset=1".($param ?
'&'.$param :
''));
591 if (!$error && $action ==
'returnaccountbookkeepingwriting' && $confirm ==
"yes" && $user->hasRight(
'accounting',
'mouvements',
'creer')) {
592 $result =
$object->newReturnAccount($toselect, $journal_code, $massdate);
598 header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?noreset=1".($param ?
'&'.$param :
''));
607 if ($massaction ==
'generalmatchingmanual' && $permissiontoadd) {
609 $result = $lettering->updateGeneralMatching($toselect);
613 setEventMessages($langs->trans($result == 0 ?
'AccountancyNoMachingModified' :
'AccountancyOneMatchingModifiedSuccessfully'), array(),
'mesgs');
614 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
617 } elseif ($massaction ==
'generalmatchingpartial' && $permissiontoadd) {
619 $result = $lettering->updateGeneralMatching($toselect,
true);
623 setEventMessages($langs->trans($result == 0 ?
'AccountancyNoMachingModified' :
'AccountancyOneMatchingModifiedSuccessfully'), array(),
'mesgs');
624 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
627 } elseif ($action ==
'generalunmatchingmanual' && $confirm ==
'yes' && $permissiontodelete) {
629 $result = $lettering->deleteGeneralMatching($toselect);
633 setEventMessages($langs->trans($result == 0 ?
'AccountancyNoUnmatchingModified' :
'AccountancyOneUnmatchingModifiedSuccessfully'), [],
'mesgs');
634 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
647$sql .=
" t.doc_date,";
648$sql .=
" t.doc_type,";
649$sql .=
" t.doc_ref,";
651$sql .=
" t.fk_docdet,";
652$sql .=
" t.thirdparty_code,";
653$sql .=
" t.subledger_account,";
654$sql .=
" t.subledger_label,";
655$sql .=
" t.numero_compte,";
656$sql .=
" t.label_compte,";
657$sql .=
" t.label_operation,";
660$sql .=
" t.lettering_code,";
661$sql .=
" t.matching_general,";
662$sql .=
" t.montant as amount,";
664$sql .=
" t.fk_user_author,";
665$sql .=
" t.import_key,";
666$sql .=
" t.code_journal,";
667$sql .=
" t.journal_label,";
668$sql .=
" t.piece_num,";
670$sql .=
" t.date_creation,";
671$sql .=
" t.tms as date_modification,";
672$sql .=
" t.date_export,";
673$sql .=
" t.date_validated as date_validation,";
674$sql .=
" t.date_lim_reglement,";
675$sql .=
" t.import_key";
679$sql .=
' FROM '.MAIN_DB_PREFIX.$object->table_element.
' as t';
682if (count($filter) > 0) {
683 foreach ($filter as $key => $value) {
684 if ($key ==
't.doc_date') {
685 $sqlwhere[] =
$db->sanitize($key).
" = '".
$db->idate($value).
"'";
686 } elseif ($key ==
't.doc_date>=') {
687 $sqlwhere[] =
"t.doc_date >= '".$db->idate($value).
"'";
688 } elseif ($key ==
't.doc_date<=') {
689 $sqlwhere[] =
"t.doc_date <= '".$db->idate($value).
"'";
690 } elseif ($key ==
't.numero_compte>=') {
691 $sqlwhere[] =
"t.numero_compte >= '".$db->escape($value).
"'";
692 } elseif ($key ==
't.numero_compte<=') {
693 $sqlwhere[] =
"t.numero_compte <= '".$db->escape($value).
"'";
694 } elseif ($key ==
't.subledger_account>=') {
695 $sqlwhere[] =
"t.subledger_account >= '".$db->escape($value).
"'";
696 } elseif ($key ==
't.subledger_account<=') {
697 $sqlwhere[] =
"t.subledger_account <= '".$db->escape($value).
"'";
700 } elseif ($key ==
't.subledger_account' || $key ==
't.numero_compte') {
701 $sqlwhere[] =
$db->sanitize($key).
" LIKE '".
$db->escape(
$db->escapeforlike($value)).
"%'";
704 } elseif ($key ==
't.tms>=') {
705 $sqlwhere[] =
"t.tms >= '".$db->idate($value).
"'";
706 } elseif ($key ==
't.tms<=') {
707 $sqlwhere[] =
"t.tms <= '".$db->idate($value).
"'";
708 } elseif ($key ==
't.date_creation>=') {
709 $sqlwhere[] =
"t.date_creation >= '".$db->idate($value).
"'";
710 } elseif ($key ==
't.date_creation<=') {
711 $sqlwhere[] =
"t.date_creation <= '".$db->idate($value).
"'";
712 } elseif ($key ==
't.date_export>=') {
713 $sqlwhere[] =
"t.date_export >= '".$db->idate($value).
"'";
714 } elseif ($key ==
't.date_export<=') {
715 $sqlwhere[] =
"t.date_export <= '".$db->idate($value).
"'";
716 } elseif ($key ==
't.date_validated>=') {
717 $sqlwhere[] =
"t.date_validated >= '".$db->idate($value).
"'";
718 } elseif ($key ==
't.date_validated<=') {
719 $sqlwhere[] =
"t.date_validated <= '".$db->idate($value).
"'";
720 } elseif ($key ==
't.date_lim_reglement>=') {
721 $sqlwhere[] =
"t.date_lim_reglement >= '".$db->idate($value).
"'";
722 } elseif ($key ==
't.date_lim_reglement<=') {
723 $sqlwhere[] =
"t.date_lim_reglement <= '".$db->idate($value).
"'";
724 } elseif ($key ==
't.credit' || $key ==
't.debit') {
726 } elseif ($key ==
't.reconciled_option') {
727 $sqlwhere[] =
't.lettering_code IS NULL';
728 } elseif ($key ==
't.code_journal' && !empty($value)) {
729 if (is_array($value)) {
730 $sqlwhere[] =
natural_search(
"t.code_journal", implode(
',', $value), 3, 1);
734 } elseif ($key ==
't.search_accounting_code_in' && !empty($value)) {
735 $sqlwhere[] =
't.numero_compte IN ('.$db->sanitize($value, 1).
')';
741$sql .=
' WHERE t.entity IN ('.getEntity(
'accountancy').
')';
743if (count($sqlwhere) > 0) {
744 $sql .=
' AND '.implode(
' AND ', $sqlwhere);
755$title_page = $langs->trans(
"Operations").
' - '.$langs->trans(
"Journals");
758$nbtotalofrecords =
'';
761 $sqlforcount = preg_replace(
'/^'.preg_quote($sqlfields,
'/').
'/',
'SELECT COUNT(*) as nbtotalofrecords', $sql);
762 $sqlforcount = preg_replace(
'/GROUP BY .*$/',
'', $sqlforcount);
763 $resql =
$db->query($sqlforcount);
765 $objforcount =
$db->fetch_object($resql);
766 $nbtotalofrecords = $objforcount->nbtotalofrecords;
771 if (($page * $limit) > (
int) $nbtotalofrecords) {
780$sql .=
$db->order($sortfield, $sortorder);
782 $sql .=
$db->plimit($limit + 1, $offset);
785$resql =
$db->query($sql);
791$num =
$db->num_rows($resql);
793$arrayofselected = is_array($toselect) ? $toselect : array();
797$help_url =
'EN:Module_Double_Entry_Accounting|FR:Module_Comptabilité_en_Partie_Double';
798llxHeader(
'', $title_page, $help_url,
'', 0, 0,
'',
'',
'',
'mod-accountancy accountancy-consultation page-journal');
806if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
807 $param .=
'&contextpage='.urlencode($contextpage);
809if ($limit > 0 && $limit !=
$conf->liste_limit) {
810 $param .=
'&limit='.((int) $limit);
814$arrayofmassactions = array();
815if (
getDolGlobalInt(
'ACCOUNTING_ENABLE_LETTERING') && $user->hasRight(
'accounting',
'mouvements',
'creer')) {
816 $arrayofmassactions[
'generalmatchingmanual'] =
img_picto(
'',
'check',
'class="pictofixedwidth"') . $langs->trans(
'GeneralMatchingManual');
817 $arrayofmassactions[
'generalmatchingpartial'] =
img_picto(
'',
'check',
'class="pictofixedwidth"') . $langs->trans(
'GeneralMatchingPartial');
818 $arrayofmassactions[
'pregeneralunmatchingmanual'] =
img_picto(
'',
'uncheck',
'class="pictofixedwidth"') . $langs->trans(
'GeneralUnmatchingManual');
820if ($user->hasRight(
'accounting',
'mouvements',
'creer')) {
821 $arrayofmassactions[
'preclonebookkeepingwriting'] =
img_picto(
'',
'clone',
'class="pictofixedwidth"').$langs->trans(
"Clone");
823if ($user->hasRight(
'accounting',
'mouvements',
'creer')) {
824 $arrayofmassactions[
'preassignaccountbookkeepingwriting'] =
img_picto(
'',
'fa-exchange-alt',
'class="pictofixedwidth"').$langs->trans(
"AssignAccount");
826if ($user->hasRight(
'accounting',
'mouvements',
'creer')) {
827 $arrayofmassactions[
'prereturnaccountbookkeepingwriting'] =
img_picto(
'',
'undo',
'class="pictofixedwidth"').$langs->trans(
"ReturnAccount");
829if ($user->hasRight(
'accounting',
'mouvements',
'supprimer')) {
830 $arrayofmassactions[
'predeletebookkeepingwriting'] =
img_picto(
'',
'delete',
'class="pictofixedwidth"').$langs->trans(
"Delete");
834 || in_array($massaction,
836 'pregeneralunmatchingmanual',
837 'predeletebookkeepingwriting',
838 'preclonebookkeepingwriting',
839 'preassignaccountbookkeepingwriting',
840 'prereturnaccountbookkeepingwriting'
843 $arrayofmassactions = array();
845$massactionbutton = $form->selectMassAction($massaction, $arrayofmassactions);
847print
'<form method="POST" id="searchFormList" action="'.dolBuildUrl($_SERVER[
"PHP_SELF"]).
'">';
848print
'<input type="hidden" name="token" value="'.newToken().
'">';
849print
'<input type="hidden" name="action" value="list">';
850if ($optioncss !=
'') {
851 print
'<input type="hidden" name="optioncss" value="'.urlencode($optioncss).
'">';
853print
'<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
854print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
855print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
856print
'<input type="hidden" name="contextpage" value="'.$contextpage.
'">';
859 $buttonLabel = $langs->trans(
"ExportFilteredList");
861 $buttonLabel = $langs->trans(
"ExportList");
864$parameters = array(
'param' => $param);
865$reshook = $hookmanager->executeHooks(
'addMoreActionsButtonsList', $parameters, $object, $action);
870$newcardbutton = empty($hookmanager->resPrint) ?
'' : $hookmanager->resPrint;
872if (empty($reshook)) {
873 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'ViewFlatList'),
'',
'fa fa-list paddingleft imgforviewmode', DOL_URL_ROOT.
'/accountancy/bookkeeping/list.php?'.$param,
'', 1, array(
'morecss' =>
'marginleftonly btnTitleSelected'));
874 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'GroupByAccountAccounting'),
'',
'fa fa-stream paddingleft imgforviewmode', DOL_URL_ROOT.
'/accountancy/bookkeeping/listbyaccount.php?'.$param,
'', 1, array(
'morecss' =>
'marginleftonly'));
875 $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'));
876 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'ExportToPdf'),
'',
'fa fa-file-pdf paddingleft', $_SERVER[
'PHP_SELF'] .
'?token=' .
newToken() .
'&action=exporttopdf&' . $param,
'', $permissiontoexport, array(
'morecss' =>
'marginleftonly'));
878 $url =
'./card.php?action=create'.(!empty($type) ?
'&type=sub' :
'').
'&backtopage='.urlencode($_SERVER[
'PHP_SELF']);
879 if (!empty($socid)) {
880 $url .=
'&socid='.$socid;
883 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'NewAccountingMvt'),
'',
'fa fa-plus-circle paddingleft', $url,
'', $permissiontoadd);
886print_barre_liste($title_page, $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords,
'title_accountancy', 0, $newcardbutton,
'', $limit, 0, 0, 1);
888if ($massaction ==
'pregeneralunmatchingmanual') {
889 print $form->formconfirm($_SERVER[
'PHP_SELF'], $langs->trans(
'ConfirmMassGeneralUnmatchingManual'), $langs->trans(
"ConfirmMassGeneralUnmatchingQuestion", count($toselect)),
"generalunmatchingmanual",
null,
'', 0, 200, 500, 1);
890} elseif ($massaction ==
'predeletebookkeepingwriting') {
891 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassDeleteBookkeepingWriting"), $langs->trans(
"ConfirmMassDeleteBookkeepingWritingQuestion", count($toselect)),
"deletebookkeepingwriting",
null,
'', 0, 200, 500, 1);
892} elseif ($massaction ==
'preassignaccountbookkeepingwriting') {
893 $input = $formaccounting->select_account(
'',
'account', 1);
894 $formquestion = array(array(
'type' =>
'other',
'name' =>
'account',
'label' =>
'<span class="fieldrequired">' . $langs->trans(
"AccountAccountingShort") .
'</span>',
'value' => $input),);
895 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"confirmMassAssignAccountBookkeepingWritingConfirm"), $langs->trans(
"ConfirmMassAssignAccountBookkeepingWritingQuestion", count($toselect)),
"assignaccountbookkeepingwriting", $formquestion,
'', 0, 200, 500, 1);
896} elseif ($massaction ==
'preclonebookkeepingwriting') {
897 $input1 = $form->selectDate(
'',
'massdate', 0, 0, 0,
"create_mvt", 1, 1);
898 $input2 = $formaccounting->select_journal($journal_code,
'code_journal', 0, 0, 1, 1) .
'</td>';
899 $formquestion = array(
902 'name' =>
'massdate',
903 'label' =>
'<span class="fieldrequired">' . $langs->trans(
"Docdate") .
'</span>',
909 $formquestion[] = array(
911 'name' =>
'code_journal',
912 'label' =>
'<span class="fieldrequired">' . $langs->trans(
"Codejournal") .
'</span>',
917 print $form->formconfirm(
918 $_SERVER[
"PHP_SELF"],
919 $langs->trans(
"ConfirmMassCloneBookkeepingWriting"),
920 $langs->trans(
"ConfirmMassCloneBookkeepingWritingQuestion", count($toselect)),
921 "clonebookkeepingwriting",
925} elseif ($massaction ==
'prereturnaccountbookkeepingwriting') {
926 $input1 = $form->selectDate(
'',
'massdate', 0, 0, 0,
"create_mvt", 1, 1);
927 $formquestion = array(array(
'type' =>
'other',
'name' =>
'massdate',
'label' =>
'<span class="fieldrequired">' . $langs->trans(
"Docdate") .
'</span>',
'value' => $input1));
928 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassReturnAccountBookkeepingWriting"), $langs->trans(
"ConfirmMassReturnAccountBookkeepingWritingQuestion", count($toselect)),
"returnaccountbookkeepingwriting", $formquestion,
'', 0, 200, 500, 1);
935include DOL_DOCUMENT_ROOT.
'/core/tpl/massactions_pre.tpl.php';
937$varpage = empty($contextpage) ? $_SERVER[
"PHP_SELF"] : $contextpage;
938$selectedfields = $form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage,
$conf->main_checkbox_left_column);
939if ($massactionbutton && $contextpage !=
'poslist') {
940 $selectedfields .= $form->showCheckAddButtons(
'checkforselect', 1);
944$moreforfilter .=
'<div class="divsearchfield">';
945$moreforfilter .= $langs->trans(
'AccountingCategory').
': ';
946$moreforfilter .=
'<div class="nowrap inline-block">';
947$moreforfilter .= $formaccounting->select_accounting_category($search_account_category,
'search_account_category', 1, 0, 0, 0);
948$moreforfilter .=
'</div>';
949$moreforfilter .=
'</div>';
951$parameters = array();
952$reshook = $hookmanager->executeHooks(
'printFieldPreListTitle', $parameters, $object, $action);
953if (empty($reshook)) {
954 $moreforfilter .= $hookmanager->resPrint;
956 $moreforfilter = $hookmanager->resPrint;
959print
'<div class="liste_titre liste_titre_bydiv centpercent">';
963print
'<div class="div-table-responsive">';
964print
'<table class="tagtable liste'.($moreforfilter ?
" listwithfilterbefore" :
"").
'">';
967print
'<tr class="liste_titre_filter">';
969if (
$conf->main_checkbox_left_column) {
970 print
'<td class="liste_titre center">';
971 $searchpicto = $form->showFilterButtons(
'left');
976if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
977 print
'<td class="liste_titre"><input type="text" name="search_mvt_num" size="6" value="'.dol_escape_htmltag($search_mvt_num).
'"></td>';
980if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
981 print
'<td class="liste_titre center">';
982 print $formaccounting->multi_select_journal($search_ledger_code,
'search_ledger_code', 0, 1, 1, 1,
'maxwidth75');
986if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
987 print
'<td class="liste_titre center">';
988 print
'<div class="nowrapfordate">';
989 print $form->selectDate($search_date_start ? $search_date_start : -1,
'search_date_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
991 print
'<div class="nowrapfordate">';
992 print $form->selectDate($search_date_end ? $search_date_end : -1,
'search_date_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
997if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
998 print
'<td class="liste_titre"><input type="text" name="search_doc_ref" class="width75" value="'.dol_escape_htmltag($search_doc_ref).
'"></td>';
1001if (!empty($arrayfields[
't.numero_compte'][
'checked'])) {
1002 print
'<td class="liste_titre">';
1003 print
'<div class="nowrap">';
1004 print $formaccounting->select_account($search_accountancy_code_start,
'search_accountancy_code_start', $langs->trans(
'From'), array(), 1, 1,
'maxwidth150',
'account');
1006 print
'<div class="nowrap">';
1007 print $formaccounting->select_account($search_accountancy_code_end,
'search_accountancy_code_end', $langs->trans(
'to'), array(), 1, 1,
'maxwidth150',
'account');
1012if (!empty($arrayfields[
't.subledger_account'][
'checked'])) {
1013 print
'<td class="liste_titre">';
1014 print
'<div class="nowrap">';
1015 print $formaccounting->select_auxaccount($search_accountancy_aux_code_start,
'search_accountancy_aux_code_start', $langs->trans(
'From'),
'maxwidth250',
'subledgeraccount');
1017 print
'<div class="nowrap">';
1018 print $formaccounting->select_auxaccount($search_accountancy_aux_code_end,
'search_accountancy_aux_code_end', $langs->trans(
'to'),
'maxwidth250',
'subledgeraccount');
1023if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1024 print
'<td class="liste_titre">';
1025 print
'<input type="text" size="7" class="flat" name="search_mvt_label" value="'.dol_escape_htmltag($search_mvt_label).
'"/>';
1029if (!empty($arrayfields[
't.debit'][
'checked'])) {
1030 print
'<td class="liste_titre right">';
1031 print
'<input type="text" class="flat" name="search_debit" size="4" value="'.dol_escape_htmltag($search_debit).
'">';
1035if (!empty($arrayfields[
't.credit'][
'checked'])) {
1036 print
'<td class="liste_titre right">';
1037 print
'<input type="text" class="flat" name="search_credit" size="4" value="'.dol_escape_htmltag($search_credit).
'">';
1041if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1042 print
'<td class="liste_titre center">';
1043 print
'<input type="text" size="3" class="flat" name="search_lettering_code" value="'.dol_escape_htmltag($search_lettering_code).
'"/>';
1044 print
'<br><span class="nowrap"><input type="checkbox" name="search_not_reconciled" value="notreconciled"'.($search_not_reconciled ==
'notreconciled' ?
' checked' :
'').
'>'.$langs->trans(
"NotReconciled").
'</span>';
1049$parameters = array(
'arrayfields' => $arrayfields);
1050$reshook = $hookmanager->executeHooks(
'printFieldListOption', $parameters);
1051print $hookmanager->resPrint;
1054if (!empty($arrayfields[
't.date_creation'][
'checked'])) {
1055 print
'<td class="liste_titre center">';
1056 print
'<div class="nowrapfordate">';
1057 print $form->selectDate($search_date_creation_start,
'search_date_creation_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1059 print
'<div class="nowrapfordate">';
1060 print $form->selectDate($search_date_creation_end,
'search_date_creation_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1065if (!empty($arrayfields[
't.tms'][
'checked'])) {
1066 print
'<td class="liste_titre center">';
1067 print
'<div class="nowrapfordate">';
1068 print $form->selectDate($search_date_modification_start,
'search_date_modification_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1070 print
'<div class="nowrapfordate">';
1071 print $form->selectDate($search_date_modification_end,
'search_date_modification_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1076if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1077 print
'<td class="liste_titre center">';
1078 print
'<div class="nowrapfordate">';
1079 print $form->selectDate($search_date_export_start,
'search_date_export_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1081 print
'<div class="nowrapfordate">';
1082 print $form->selectDate($search_date_export_end,
'search_date_export_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1087if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1088 print
'<td class="liste_titre center">';
1089 print
'<div class="nowrapfordate">';
1090 print $form->selectDate($search_date_validation_start,
'search_date_validation_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1092 print
'<div class="nowrapfordate">';
1093 print $form->selectDate($search_date_validation_end,
'search_date_validation_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1098if (!empty($arrayfields[
't.date_lim_reglement'][
'checked'])) {
1099 print
'<td class="liste_titre center">';
1100 print
'<div class="nowrapfordate">';
1101 print $form->selectDate($search_date_due_start,
'search_date_due_start_', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1103 print
'<div class="nowrapfordate">';
1104 print $form->selectDate($search_date_due_end,
'search_date_due_end_', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1108if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1109 print
'<td class="liste_titre center">';
1110 print
'<input class="flat searchstring maxwidth50" type="text" name="search_import_key" value="'.dol_escape_htmltag($search_import_key).
'">';
1114if (!
$conf->main_checkbox_left_column) {
1115 print
'<td class="liste_titre center">';
1116 $searchpicto = $form->showFilterButtons();
1122print
'<tr class="liste_titre">';
1123if (
$conf->main_checkbox_left_column) {
1124 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch actioncolumn ');
1126if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
1127 print_liste_field_titre($arrayfields[
't.piece_num'][
'label'], $_SERVER[
'PHP_SELF'],
"t.piece_num",
"", $param,
"", $sortfield, $sortorder);
1129if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
1130 print_liste_field_titre($arrayfields[
't.code_journal'][
'label'], $_SERVER[
'PHP_SELF'],
"t.code_journal",
"", $param,
'', $sortfield, $sortorder,
'center ');
1132if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1133 print_liste_field_titre($arrayfields[
't.doc_date'][
'label'], $_SERVER[
'PHP_SELF'],
"t.doc_date",
"", $param,
'', $sortfield, $sortorder,
'center ');
1135if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
1136 print_liste_field_titre($arrayfields[
't.doc_ref'][
'label'], $_SERVER[
'PHP_SELF'],
"t.doc_ref",
"", $param,
"", $sortfield, $sortorder);
1138if (!empty($arrayfields[
't.numero_compte'][
'checked'])) {
1139 print_liste_field_titre($arrayfields[
't.numero_compte'][
'label'], $_SERVER[
'PHP_SELF'],
"t.numero_compte",
"", $param,
"", $sortfield, $sortorder);
1141if (!empty($arrayfields[
't.subledger_account'][
'checked'])) {
1142 print_liste_field_titre($arrayfields[
't.subledger_account'][
'label'], $_SERVER[
'PHP_SELF'],
"t.subledger_account",
"", $param,
"", $sortfield, $sortorder);
1144if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1145 print_liste_field_titre($arrayfields[
't.label_operation'][
'label'], $_SERVER[
'PHP_SELF'],
"t.label_operation",
"", $param,
"", $sortfield, $sortorder);
1147if (!empty($arrayfields[
't.debit'][
'checked'])) {
1148 print_liste_field_titre($arrayfields[
't.debit'][
'label'], $_SERVER[
'PHP_SELF'],
"t.debit",
"", $param,
'', $sortfield, $sortorder,
'right ');
1150if (!empty($arrayfields[
't.credit'][
'checked'])) {
1151 print_liste_field_titre($arrayfields[
't.credit'][
'label'], $_SERVER[
'PHP_SELF'],
"t.credit",
"", $param,
'', $sortfield, $sortorder,
'right ');
1153if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1154 print_liste_field_titre($arrayfields[
't.lettering_code'][
'label'], $_SERVER[
'PHP_SELF'],
"t.lettering_code",
"", $param,
'', $sortfield, $sortorder,
'center ');
1157$parameters = array(
'arrayfields' => $arrayfields,
'param' => $param,
'sortfield' => $sortfield,
'sortorder' => $sortorder);
1158$reshook = $hookmanager->executeHooks(
'printFieldListTitle', $parameters);
1159print $hookmanager->resPrint;
1160if (!empty($arrayfields[
't.date_creation'][
'checked'])) {
1161 print_liste_field_titre($arrayfields[
't.date_creation'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_creation",
"", $param,
'', $sortfield, $sortorder,
'center ');
1163if (!empty($arrayfields[
't.tms'][
'checked'])) {
1164 print_liste_field_titre($arrayfields[
't.tms'][
'label'], $_SERVER[
'PHP_SELF'],
"t.tms",
"", $param,
'', $sortfield, $sortorder,
'center ');
1166if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1167 print_liste_field_titre($arrayfields[
't.date_export'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_export,t.doc_date",
"", $param,
'', $sortfield, $sortorder,
'center ');
1169if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1170 print_liste_field_titre($arrayfields[
't.date_validated'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_validated,t.doc_date",
"", $param,
'', $sortfield, $sortorder,
'center ');
1173if (!empty($arrayfields[
't.date_lim_reglement'][
'checked'])) {
1174 print_liste_field_titre($arrayfields[
't.date_lim_reglement'][
'label'], $_SERVER[
'PHP_SELF'],
't.date_lim_reglement',
'', $param,
'', $sortfield, $sortorder,
'center ');
1176if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1177 print_liste_field_titre($arrayfields[
't.import_key'][
'label'], $_SERVER[
"PHP_SELF"],
"t.import_key",
"", $param,
'', $sortfield, $sortorder,
'center ');
1179if (!
$conf->main_checkbox_left_column) {
1180 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch ');
1196while ($i < min($num, $limit)) {
1197 $obj =
$db->fetch_object($resql);
1202 $line->id = $obj->rowid;
1203 $line->doc_date =
$db->jdate($obj->doc_date);
1204 $line->doc_type = $obj->doc_type;
1205 $line->doc_ref = $obj->doc_ref;
1206 $line->fk_doc = $obj->fk_doc;
1207 $line->fk_docdet = $obj->fk_docdet;
1208 $line->thirdparty_code = $obj->thirdparty_code;
1209 $line->subledger_account = $obj->subledger_account;
1210 $line->subledger_label = $obj->subledger_label;
1211 $line->numero_compte = $obj->numero_compte;
1212 $line->label_compte = $obj->label_compte;
1213 $line->label_operation = $obj->label_operation;
1214 $line->debit = $obj->debit;
1215 $line->credit = $obj->credit;
1216 $line->montant = $obj->amount;
1217 $line->amount = $obj->amount;
1218 $line->sens = $obj->sens;
1219 $line->lettering_code = $obj->lettering_code;
1220 $line->matching_general = $obj->matching_general;
1221 $line->fk_user_author = $obj->fk_user_author;
1222 $line->import_key = $obj->import_key;
1223 $line->code_journal = $obj->code_journal;
1224 $line->journal_label = $obj->journal_label;
1225 $line->piece_num = $obj->piece_num;
1226 $line->ref = $obj->ref;
1227 $line->date_creation =
$db->jdate($obj->date_creation);
1228 $line->date_modification =
$db->jdate($obj->date_modification);
1229 $line->date_export =
$db->jdate($obj->date_export);
1230 $line->date_validation =
$db->jdate($obj->date_validation);
1232 $line->date_lim_reglement =
$db->jdate($obj->date_lim_reglement);
1234 print
'<tr class="oddeven">';
1236 if (
$conf->main_checkbox_left_column) {
1237 print
'<td class="nowraponall center">';
1238 if (($massactionbutton || $massaction) && $contextpage !=
'poslist') {
1240 if (in_array($line->id, $arrayofselected)) {
1243 print
'<input id="cb'.$line->id.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$line->id.
'"'.($selected ?
' checked="checked"' :
'').
' />';
1252 if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
1253 print
'<td class="nowraponall">';
1255 $object->piece_num = $line->piece_num;
1257 print
$object->getNomUrl(1,
'', 0,
'', 1);
1258 print
'<span class="hideonsmartphone">';
1259 if (!empty($line->date_export)) {
1260 print
img_picto($langs->trans(
"DateExport").
": ".
dol_print_date($line->date_export,
'dayhour').
" (".$langs->trans(
"TransactionExportDesc").
")",
'fa-file-export',
'class="paddingleft pictofixedwidth opacitymedium"');
1262 if (!empty($line->date_validation)) {
1263 print
img_picto($langs->trans(
"DateValidation").
": ".
dol_print_date($line->date_validation,
'dayhour').
" (".$langs->trans(
"TransactionBlockedLockedDesc").
")",
'fa-lock',
'class="paddingleft pictofixedwidth opacitymedium"');
1273 if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
1274 if (empty(
$conf->cache[
'accountingjournal'][$line->code_journal])) {
1276 $accountingjournal->fetch(0, $line->code_journal);
1277 $conf->cache[
'accountingjournal'][$line->code_journal] = $accountingjournal;
1279 $accountingjournal =
$conf->cache[
'accountingjournal'][$line->code_journal];
1282 $journaltoshow = (($accountingjournal->id > 0) ? $accountingjournal->getNomUrl(0, 0, 0,
'', 0) : $line->code_journal);
1283 print
'<td class="center tdoverflowmax150">'.$journaltoshow.
'</td>';
1290 if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1291 print
'<td class="center">'.dol_print_date($line->doc_date,
'day').
'</td>';
1299 if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
1301 $objectstatic =
null;
1303 if ($line->doc_type ===
'customer_invoice') {
1304 $langs->loadLangs(array(
'bills'));
1306 require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
1308 $objectstatic->fetch($line->fk_doc);
1313 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.$objectstatic->id;
1314 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir);
1315 } elseif ($line->doc_type ===
'supplier_invoice') {
1316 $langs->loadLangs(array(
'bills'));
1318 require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.facture.class.php';
1320 $objectstatic->fetch($line->fk_doc);
1322 $modulepart =
'invoice_supplier';
1327 $filedir =
getMultidirOutput($objectstatic,
'', 1).dol_sanitizeFileName($line->doc_ref);
1328 $subdir =
getMultidirOutput($objectstatic,
'', 1,
'outputrel').dol_sanitizeFileName($line->doc_ref);
1331 if ($objectstatic->id > 0) {
1332 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $subdir, $filedir);
1334 $documentlink = $line->doc_ref;
1336 } elseif ($line->doc_type ===
'expense_report') {
1337 $langs->loadLangs(array(
'trips'));
1339 require_once DOL_DOCUMENT_ROOT.
'/expensereport/class/expensereport.class.php';
1341 $objectstatic->fetch($line->fk_doc);
1346 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.$objectstatic->id;
1347 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir);
1348 } elseif ($line->doc_type ===
'bank') {
1349 require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
1351 $objectstatic->fetch($line->fk_doc);
1357 $labeltoshowalt =
'';
1358 $classforlabel =
'';
1359 if (($line->doc_type ===
'customer_invoice' || $line->doc_type ===
'supplier_invoice' || $line->doc_type ===
'expense_report') && is_object($objectstatic)) {
1360 $labeltoshow .= $objectstatic->getNomUrl(1,
'', 0, 0,
'', 0, -1, 1);
1361 $labeltoshow .= $documentlink;
1362 $labeltoshowalt .= $objectstatic->ref;
1363 } elseif ($line->doc_type ===
'bank' && is_object($objectstatic)) {
1364 $labeltoshow .= $objectstatic->getNomUrl(1);
1365 $labeltoshowalt .= $objectstatic->ref;
1366 $bank_ref = strstr($line->doc_ref,
'-');
1367 $labeltoshow .=
" " . $bank_ref;
1368 $labeltoshowalt .=
" " . $bank_ref;
1370 $labeltoshow .= $line->doc_ref;
1371 $labeltoshowalt .= $line->doc_ref;
1372 $classforlabel =
'tdoverflowmax250';
1375 print
'<td class="nowraponall'.($classforlabel ?
' '.$classforlabel :
'').
'" title="'.
dol_escape_htmltag($labeltoshowalt).
'">';
1384 if (!empty($arrayfields[
't.numero_compte'][
'checked'])) {
1385 print
'<td>'.length_accountg($line->numero_compte).
'</td>';
1392 if (!empty($arrayfields[
't.subledger_account'][
'checked'])) {
1393 print
'<td>'.length_accounta($line->subledger_account).
'</td>';
1400 if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1401 print
'<td class="small tdoverflowmax200" title="'.dol_escape_htmltag($line->label_operation).
'">'.
dol_escape_htmltag($line->label_operation).
'</td>';
1408 if (!empty($arrayfields[
't.debit'][
'checked'])) {
1409 print
'<td class="right nowraponall amount">'.($line->debit != 0 ?
price($line->debit) :
'').
'</td>';
1420 if (!empty($arrayfields[
't.credit'][
'checked'])) {
1421 print
'<td class="right nowraponall amount">'.($line->credit != 0 ?
price($line->credit) :
'').
'</td>';
1428 $totalarray[
'val'][
'totalcredit'] += $line->credit;
1432 if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1436 if (!empty($line->matching_general)) {
1437 $tooltipText .= $langs->trans(
'GeneralMatching');
1439 $badge .=
"badge-status4";
1440 } elseif (empty($line->matching_general) && !empty($line->lettering_code)) {
1441 $tooltipText .= $langs->trans(
'AuxiliaryMatching');
1443 $badge .=
"badge-status1";
1445 print
'<td class="center classfortooltip" title="'.$tooltipText.
'"><span class="badge '.$badge.
'"><i class="fas '.$icon.
' fa-xs"></i> '.$line->lettering_code.
'</span></td>';
1452 $parameters = array(
'arrayfields' => $arrayfields,
'obj' => $obj,
'i' => $i,
'totalarray' => &
$totalarray);
1453 $reshook = $hookmanager->executeHooks(
'printFieldListValue', $parameters);
1454 print $hookmanager->resPrint;
1457 if (!empty($arrayfields[
't.date_creation'][
'checked'])) {
1458 print
'<td class="center">'.dol_print_date($line->date_creation,
'dayhour',
'tzuserrel').
'</td>';
1465 if (!empty($arrayfields[
't.tms'][
'checked'])) {
1466 print
'<td class="center">'.dol_print_date($line->date_modification,
'dayhour',
'tzuserrel').
'</td>';
1473 if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1474 print
'<td class="center nowraponall">'.dol_print_date($line->date_export,
'dayhour',
'tzuserrel').
'</td>';
1481 if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1482 print
'<td class="center nowraponall">'.dol_print_date($line->date_validation,
'dayhour',
'tzuserrel').
'</td>';
1489 if (!empty($arrayfields[
't.date_lim_reglement'][
'checked'])) {
1490 print
'<td class="center">'.dol_print_date($line->date_lim_reglement,
'day').
'</td>';
1496 if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1497 print
'<td class="tdoverflowmax125" title="'.dol_escape_htmltag($obj->import_key).
'">'.
dol_escape_htmltag($obj->import_key).
"</td>\n";
1504 if (!
$conf->main_checkbox_left_column) {
1505 print
'<td class="nowraponall center">';
1506 if (($massactionbutton || $massaction) && $contextpage !=
'poslist') {
1508 if (in_array($line->id, $arrayofselected)) {
1511 print
'<input id="cb'.$line->id.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$line->id.
'"'.($selected ?
' checked="checked"' :
'').
' />';
1526include DOL_DOCUMENT_ROOT.
'/core/tpl/list_print_total.tpl.php';
1531 foreach ($arrayfields as $key => $val) {
1532 if (!empty($val[
'checked'])) {
1536 print
'<tr><td colspan="'.$colspan.
'"><span class="opacitymedium">'.$langs->trans(
"NoRecordFound").
'</span></td></tr>';
1539$parameters = array(
'arrayfields' => $arrayfields,
'sql' => $sql);
1540$reshook = $hookmanager->executeHooks(
'printFieldListFooter', $parameters, $object, $action);
1541print $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...
GETPOSTDATE($prefix, $hourTime='', $gm='auto', $saverestore='')
Helper function that combines values of a dolibarr DatePicker (such as Form\selectDate) for year,...
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.
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.
newToken()
Return the value of token currently saved into session with name 'newtoken'.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0, $nodefault=0)
Return value of a param into GET or POST supervariable.
GETPOSTINT($paramname, $method=0, $nodefault=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
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.
dol_getdate($timestamp, $fast=false, $forcetimezone='')
Return an array with locale date info.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0, $attop=0)
Set event messages in dol_events session object.
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)
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.
dolGetButtonTitleSeparator($moreClass="")
Add space between dolGetButtonTitle.
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
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.