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),
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') &&
249 !in_array($massaction, [
250 'pregeneralunmatchingmanual',
251 'predeletebookkeepingwriting',
252 'preclonebookkeepingwriting',
253 'preassignaccountbookkeepingwriting',
254 'prereturnaccountbookkeepingwriting'
259$parameters = array(
'socid' => $socid);
260$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
265if (empty($reshook)) {
266 include DOL_DOCUMENT_ROOT.
'/core/actions_changeselectedfields.inc.php';
268 if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
269 $search_mvt_num =
'';
270 $search_doc_type =
'';
271 $search_doc_ref =
'';
272 $search_doc_date =
'';
273 $search_account_category =
'';
274 $search_accountancy_code =
'';
275 $search_accountancy_code_start =
'';
276 $search_accountancy_code_end =
'';
277 $search_accountancy_aux_code =
'';
278 $search_accountancy_aux_code_start =
'';
279 $search_accountancy_aux_code_end =
'';
280 $search_mvt_label =
'';
281 $search_direction =
'';
282 $search_ledger_code = array();
283 $search_date_start =
'';
284 $search_date_end =
'';
285 $search_date_creation_start =
'';
286 $search_date_creation_end =
'';
287 $search_date_modification_start =
'';
288 $search_date_modification_end =
'';
289 $search_date_export_start =
'';
290 $search_date_export_end =
'';
291 $search_date_validation_start =
'';
292 $search_date_validation_end =
'';
294 $search_date_due_start_day =
'';
295 $search_date_due_start_month =
'';
296 $search_date_due_start_year =
'';
297 $search_date_due_start =
'';
299 $search_date_due_end_day =
'';
300 $search_date_due_end_month =
'';
301 $search_date_due_end_year =
'';
302 $search_date_due_end =
'';
305 $search_lettering_code =
'';
306 $search_not_reconciled =
'';
307 $search_import_key =
'';
309 unset($_SESSION[
'DOLDATE_search_date_start_accountancy_day']);
310 unset($_SESSION[
'DOLDATE_search_date_start_accountancy_month']);
311 unset($_SESSION[
'DOLDATE_search_date_start_accountancy_year']);
312 unset($_SESSION[
'DOLDATE_search_date_end_accountancy_day']);
313 unset($_SESSION[
'DOLDATE_search_date_end_accountancy_month']);
314 unset($_SESSION[
'DOLDATE_search_date_end_accountancy_year']);
318 if (!empty($search_date_start)) {
319 $filter[
't.doc_date>='] = $search_date_start;
321 $param .=
'&search_date_startmonth='.((int) $tmp[
'mon']).
'&search_date_startday='.((int) $tmp[
'mday']).
'&search_date_startyear='.((int) $tmp[
'year']);
323 if (!empty($search_date_end)) {
324 $filter[
't.doc_date<='] = $search_date_end;
326 $param .=
'&search_date_endmonth='.((int) $tmp[
'mon']).
'&search_date_endday='.((int) $tmp[
'mday']).
'&search_date_endyear='.((int) $tmp[
'year']);
328 if (!empty($search_doc_date)) {
329 $filter[
't.doc_date'] = $search_doc_date;
331 $param .=
'&doc_datemonth='.((int) $tmp[
'mon']).
'&doc_dateday='.((int) $tmp[
'mday']).
'&doc_dateyear='.((int) $tmp[
'year']);
333 if (!empty($search_doc_type)) {
334 $filter[
't.doc_type'] = $search_doc_type;
335 $param .=
'&search_doc_type='.urlencode($search_doc_type);
337 if (!empty($search_doc_ref)) {
338 $filter[
't.doc_ref'] = $search_doc_ref;
339 $param .=
'&search_doc_ref='.urlencode($search_doc_ref);
341 if ($search_account_category !=
'-1' && !empty($search_account_category)) {
342 require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountancycategory.class.php';
345 $listofaccountsforgroup = $accountingcategory->getCptsCat(0,
'fk_accounting_category = '.((
int) $search_account_category));
346 $listofaccountsforgroup2 = array();
347 if (is_array($listofaccountsforgroup)) {
348 foreach ($listofaccountsforgroup as $tmpval) {
349 $listofaccountsforgroup2[] =
"'".$db->escape((
string) $tmpval[
'account_number']).
"'";
352 if (!empty($listofaccountsforgroup2)) {
353 $filter[
't.search_accounting_code_in'] = implode(
',', $listofaccountsforgroup2);
355 $filter[
't.search_accounting_code_in'] =
"''";
356 setEventMessages($langs->trans(
"ThisCategoryHasNoItems"),
null,
'warnings');
358 $param .=
'&search_account_category='.urlencode((
string) ($search_account_category));
360 if (!empty($search_accountancy_code)) {
361 $filter[
't.numero_compte'] = $search_accountancy_code;
362 $param .=
'&search_accountancy_code='.urlencode($search_accountancy_code);
364 if (!empty($search_accountancy_code_start)) {
365 $filter[
't.numero_compte>='] = $search_accountancy_code_start;
366 $param .=
'&search_accountancy_code_start='.urlencode($search_accountancy_code_start);
368 if (!empty($search_accountancy_code_end)) {
369 $filter[
't.numero_compte<='] = $search_accountancy_code_end;
370 $param .=
'&search_accountancy_code_end='.urlencode($search_accountancy_code_end);
372 if (!empty($search_accountancy_aux_code)) {
373 $filter[
't.subledger_account'] = $search_accountancy_aux_code;
374 $param .=
'&search_accountancy_aux_code='.urlencode($search_accountancy_aux_code);
376 if (!empty($search_accountancy_aux_code_start)) {
377 $filter[
't.subledger_account>='] = $search_accountancy_aux_code_start;
378 $param .=
'&search_accountancy_aux_code_start='.urlencode($search_accountancy_aux_code_start);
380 if (!empty($search_accountancy_aux_code_end)) {
381 $filter[
't.subledger_account<='] = $search_accountancy_aux_code_end;
382 $param .=
'&search_accountancy_aux_code_end='.urlencode($search_accountancy_aux_code_end);
384 if (!empty($search_mvt_label)) {
385 $filter[
't.label_operation'] = $search_mvt_label;
386 $param .=
'&search_mvt_label='.urlencode($search_mvt_label);
388 if (!empty($search_direction)) {
389 $filter[
't.sens'] = $search_direction;
390 $param .=
'&search_direction='.urlencode($search_direction);
392 if (!empty($search_ledger_code)) {
393 $filter[
't.code_journal'] = $search_ledger_code;
394 foreach ($search_ledger_code as $code) {
395 $param .=
'&search_ledger_code[]='.urlencode($code);
398 if (!empty($search_mvt_num)) {
399 $filter[
't.piece_num'] = $search_mvt_num;
400 $param .=
'&search_mvt_num='.urlencode((
string) ($search_mvt_num));
402 if (!empty($search_date_creation_start)) {
403 $filter[
't.date_creation>='] = $search_date_creation_start;
405 $param .=
'&search_date_creation_startmonth='.((int) $tmp[
'mon']).
'&search_date_creation_startday='.((int) $tmp[
'mday']).
'&search_date_creation_startyear='.((int) $tmp[
'year']);
407 if (!empty($search_date_creation_end)) {
408 $filter[
't.date_creation<='] = $search_date_creation_end;
410 $param .=
'&search_date_creation_endmonth='.((int) $tmp[
'mon']).
'&search_date_creation_endday='.((int) $tmp[
'mday']).
'&search_date_creation_endyear='.((int) $tmp[
'year']);
412 if (!empty($search_date_modification_start)) {
413 $filter[
't.tms>='] = $search_date_modification_start;
414 $tmp =
dol_getdate($search_date_modification_start);
415 $param .=
'&search_date_modification_startmonth='.((int) $tmp[
'mon']).
'&search_date_modification_startday='.((int) $tmp[
'mday']).
'&search_date_modification_startyear='.((int) $tmp[
'year']);
417 if (!empty($search_date_modification_end)) {
418 $filter[
't.tms<='] = $search_date_modification_end;
420 $param .=
'&search_date_modification_endmonth='.((int) $tmp[
'mon']).
'&search_date_modification_endday='.((int) $tmp[
'mday']).
'&search_date_modification_endyear='.((int) $tmp[
'year']);
422 if (!empty($search_date_export_start)) {
423 $filter[
't.date_export>='] = $search_date_export_start;
425 $param .=
'&search_date_export_startmonth='.((int) $tmp[
'mon']).
'&search_date_export_startday='.((int) $tmp[
'mday']).
'&search_date_export_startyear='.((int) $tmp[
'year']);
427 if (!empty($search_date_export_end)) {
428 $filter[
't.date_export<='] = $search_date_export_end;
430 $param .=
'&search_date_export_endmonth='.((int) $tmp[
'mon']).
'&search_date_export_endday='.((int) $tmp[
'mday']).
'&search_date_export_endyear='.((int) $tmp[
'year']);
432 if (!empty($search_date_validation_start)) {
433 $filter[
't.date_validated>='] = $search_date_validation_start;
435 $param .=
'&search_date_validation_startmonth='.((int) $tmp[
'mon']).
'&search_date_validation_startday='.((int) $tmp[
'mday']).
'&search_date_validation_startyear='.((int) $tmp[
'year']);
437 if (!empty($search_date_validation_end)) {
438 $filter[
't.date_validated<='] = $search_date_validation_end;
440 $param .=
'&search_date_validation_endmonth='.((int) $tmp[
'mon']).
'&search_date_validation_endday='.((int) $tmp[
'mday']).
'&search_date_validation_endyear='.((int) $tmp[
'year']);
443 if (!empty($search_date_due_start)) {
444 $filter[
't.date_lim_reglement>='] = $search_date_due_start;
445 $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;
448 if (!empty($search_date_due_end)) {
449 $filter[
't.date_lim_reglement<='] = $search_date_due_end;
450 $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;
452 if (!empty($search_debit)) {
453 $filter[
't.debit'] = $search_debit;
454 $param .=
'&search_debit='.urlencode($search_debit);
456 if (!empty($search_credit)) {
457 $filter[
't.credit'] = $search_credit;
458 $param .=
'&search_credit='.urlencode($search_credit);
460 if (!empty($search_lettering_code)) {
461 $filter[
't.lettering_code'] = $search_lettering_code;
462 $param .=
'&search_lettering_code='.urlencode($search_lettering_code);
464 if (!empty($search_not_reconciled)) {
465 $filter[
't.reconciled_option'] = $search_not_reconciled;
466 $param .=
'&search_not_reconciled='.urlencode($search_not_reconciled);
468 if (!empty($search_import_key)) {
469 $filter[
't.import_key'] = $search_import_key;
470 $param .=
'&search_import_key='.urlencode($search_import_key);
474 if ($action ===
'exporttopdf' && $permissiontoadd) {
475 $object->fetchAll(
'ASC,ASC,ASC',
'code_journal,doc_date,piece_num', 0, 0, $filter);
476 require_once DOL_DOCUMENT_ROOT .
'/core/modules/accountancy/doc/pdf_bookkeeping.modules.php';
478 $pdf->fromDate = $search_date_start;
479 $pdf->toDate = $search_date_end;
481 $result = $pdf->write_file($object, $langs);
492 $objectclass =
'Bookkeeping';
493 $objectlabel =
'Bookkeeping';
494 $uploaddir =
$conf->societe->dir_output;
498 include DOL_DOCUMENT_ROOT.
'/core/actions_massactions.inc.php';
500 if (!$error && $action ==
'deletebookkeepingwriting' && $confirm ==
"yes" && $user->hasRight(
'accounting',
'mouvements',
'supprimer')) {
505 $nb_lettering = $lettering->bookkeepingLetteringAll($toselect,
true);
506 if ($nb_lettering < 0) {
515 foreach ($toselect as $toselectid) {
516 $result =
$object->fetch($toselectid);
517 if ($result > 0 && (!isset(
$object->date_validation) ||
$object->date_validation ===
'')) {
526 } elseif ($result < 0) {
530 } elseif (isset(
$object->date_validation) &&
$object->date_validation !=
'') {
531 setEventMessages($langs->trans(
"ValidatedRecordWhereFound"),
null,
'errors');
544 } elseif ($nbok > 0) {
550 header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?noreset=1".($param ?
'&'.$param :
''));
558 if (!$error && $action ==
'clonebookkeepingwriting' && $confirm ==
"yes" && $user->hasRight(
'accounting',
'mouvements',
'creer')) {
559 $result =
$object->newCloneMass($toselect, $journal_code, $massdate);
565 header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?noreset=1".($param ?
'&'.$param :
''));
573 if (!$error && $action ==
'assignaccountbookkeepingwriting' && $confirm ==
"yes" && $user->hasRight(
'accounting',
'mouvements',
'creer')) {
574 $result =
$object->assignAccountMass($toselect, (
int) $account);
580 header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?noreset=1".($param ?
'&'.$param :
''));
588 if (!$error && $action ==
'returnaccountbookkeepingwriting' && $confirm ==
"yes" && $user->hasRight(
'accounting',
'mouvements',
'creer')) {
589 $result =
$object->newReturnAccount($toselect, $journal_code, $massdate);
595 header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?noreset=1".($param ?
'&'.$param :
''));
604 if ($massaction ==
'generalmatchingmanual' && $permissiontoadd) {
606 $result = $lettering->updateGeneralMatching($toselect);
610 setEventMessages($langs->trans($result == 0 ?
'AccountancyNoMachingModified' :
'AccountancyOneMatchingModifiedSuccessfully'), array(),
'mesgs');
611 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
614 } elseif ($massaction ==
'generalmatchingpartial' && $permissiontoadd) {
616 $result = $lettering->updateGeneralMatching($toselect,
true);
620 setEventMessages($langs->trans($result == 0 ?
'AccountancyNoMachingModified' :
'AccountancyOneMatchingModifiedSuccessfully'), array(),
'mesgs');
621 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
624 } elseif ($action ==
'generalunmatchingmanual' && $confirm ==
'yes' && $permissiontodelete) {
626 $result = $lettering->deleteGeneralMatching($toselect);
630 setEventMessages($langs->trans($result == 0 ?
'AccountancyNoUnmatchingModified' :
'AccountancyOneUnmatchingModifiedSuccessfully'), [],
'mesgs');
631 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
644$sql .=
" t.doc_date,";
645$sql .=
" t.doc_type,";
646$sql .=
" t.doc_ref,";
648$sql .=
" t.fk_docdet,";
649$sql .=
" t.thirdparty_code,";
650$sql .=
" t.subledger_account,";
651$sql .=
" t.subledger_label,";
652$sql .=
" t.numero_compte,";
653$sql .=
" t.label_compte,";
654$sql .=
" t.label_operation,";
657$sql .=
" t.lettering_code,";
658$sql .=
" t.matching_general,";
659$sql .=
" t.montant as amount,";
661$sql .=
" t.fk_user_author,";
662$sql .=
" t.import_key,";
663$sql .=
" t.code_journal,";
664$sql .=
" t.journal_label,";
665$sql .=
" t.piece_num,";
667$sql .=
" t.date_creation,";
668$sql .=
" t.tms as date_modification,";
669$sql .=
" t.date_export,";
670$sql .=
" t.date_validated as date_validation,";
671$sql .=
" t.date_lim_reglement,";
672$sql .=
" t.import_key";
676$sql .=
' FROM '.MAIN_DB_PREFIX.$object->table_element.
' as t';
679if (count($filter) > 0) {
680 foreach ($filter as $key => $value) {
681 if ($key ==
't.doc_date') {
682 $sqlwhere[] =
$db->sanitize($key).
" = '".
$db->idate($value).
"'";
683 } elseif ($key ==
't.doc_date>=') {
684 $sqlwhere[] =
"t.doc_date >= '".$db->idate($value).
"'";
685 } elseif ($key ==
't.doc_date<=') {
686 $sqlwhere[] =
"t.doc_date <= '".$db->idate($value).
"'";
687 } elseif ($key ==
't.numero_compte>=') {
688 $sqlwhere[] =
"t.numero_compte >= '".$db->escape($value).
"'";
689 } elseif ($key ==
't.numero_compte<=') {
690 $sqlwhere[] =
"t.numero_compte <= '".$db->escape($value).
"'";
691 } elseif ($key ==
't.subledger_account>=') {
692 $sqlwhere[] =
"t.subledger_account >= '".$db->escape($value).
"'";
693 } elseif ($key ==
't.subledger_account<=') {
694 $sqlwhere[] =
"t.subledger_account <= '".$db->escape($value).
"'";
697 } elseif ($key ==
't.subledger_account' || $key ==
't.numero_compte') {
698 $sqlwhere[] =
$db->sanitize($key).
" LIKE '".
$db->escape(
$db->escapeforlike($value)).
"%'";
701 } elseif ($key ==
't.tms>=') {
702 $sqlwhere[] =
"t.tms >= '".$db->idate($value).
"'";
703 } elseif ($key ==
't.tms<=') {
704 $sqlwhere[] =
"t.tms <= '".$db->idate($value).
"'";
705 } elseif ($key ==
't.date_creation>=') {
706 $sqlwhere[] =
"t.date_creation >= '".$db->idate($value).
"'";
707 } elseif ($key ==
't.date_creation<=') {
708 $sqlwhere[] =
"t.date_creation <= '".$db->idate($value).
"'";
709 } elseif ($key ==
't.date_export>=') {
710 $sqlwhere[] =
"t.date_export >= '".$db->idate($value).
"'";
711 } elseif ($key ==
't.date_export<=') {
712 $sqlwhere[] =
"t.date_export <= '".$db->idate($value).
"'";
713 } elseif ($key ==
't.date_validated>=') {
714 $sqlwhere[] =
"t.date_validated >= '".$db->idate($value).
"'";
715 } elseif ($key ==
't.date_validated<=') {
716 $sqlwhere[] =
"t.date_validated <= '".$db->idate($value).
"'";
717 } elseif ($key ==
't.date_lim_reglement>=') {
718 $sqlwhere[] =
"t.date_lim_reglement >= '".$db->idate($value).
"'";
719 } elseif ($key ==
't.date_lim_reglement<=') {
720 $sqlwhere[] =
"t.date_lim_reglement <= '".$db->idate($value).
"'";
721 } elseif ($key ==
't.credit' || $key ==
't.debit') {
723 } elseif ($key ==
't.reconciled_option') {
724 $sqlwhere[] =
't.lettering_code IS NULL';
725 } elseif ($key ==
't.code_journal' && !empty($value)) {
726 if (is_array($value)) {
727 $sqlwhere[] =
natural_search(
"t.code_journal", implode(
',', $value), 3, 1);
731 } elseif ($key ==
't.search_accounting_code_in' && !empty($value)) {
732 $sqlwhere[] =
't.numero_compte IN ('.$db->sanitize($value, 1).
')';
738$sql .=
' WHERE t.entity IN ('.getEntity(
'accountancy').
')';
740if (count($sqlwhere) > 0) {
741 $sql .=
' AND '.implode(
' AND ', $sqlwhere);
752$title_page = $langs->trans(
"Operations").
' - '.$langs->trans(
"Journals");
755$nbtotalofrecords =
'';
758 $sqlforcount = preg_replace(
'/^'.preg_quote($sqlfields,
'/').
'/',
'SELECT COUNT(*) as nbtotalofrecords', $sql);
759 $sqlforcount = preg_replace(
'/GROUP BY .*$/',
'', $sqlforcount);
760 $resql =
$db->query($sqlforcount);
762 $objforcount =
$db->fetch_object($resql);
763 $nbtotalofrecords = $objforcount->nbtotalofrecords;
768 if (($page * $limit) > (
int) $nbtotalofrecords) {
777$sql .=
$db->order($sortfield, $sortorder);
779 $sql .=
$db->plimit($limit + 1, $offset);
782$resql =
$db->query($sql);
788$num =
$db->num_rows($resql);
790$arrayofselected = is_array($toselect) ? $toselect : array();
794$help_url =
'EN:Module_Double_Entry_Accounting|FR:Module_Comptabilité_en_Partie_Double';
795llxHeader(
'', $title_page, $help_url,
'', 0, 0,
'',
'',
'',
'mod-accountancy accountancy-consultation page-journal');
803if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
804 $param .=
'&contextpage='.urlencode($contextpage);
806if ($limit > 0 && $limit !=
$conf->liste_limit) {
807 $param .=
'&limit='.((int) $limit);
811$arrayofmassactions = array();
812if (
getDolGlobalInt(
'ACCOUNTING_ENABLE_LETTERING') && $user->hasRight(
'accounting',
'mouvements',
'creer')) {
813 $arrayofmassactions[
'generalmatchingmanual'] =
img_picto(
'',
'check',
'class="pictofixedwidth"') . $langs->trans(
'GeneralMatchingManual');
814 $arrayofmassactions[
'generalmatchingpartial'] =
img_picto(
'',
'check',
'class="pictofixedwidth"') . $langs->trans(
'GeneralMatchingPartial');
815 $arrayofmassactions[
'pregeneralunmatchingmanual'] =
img_picto(
'',
'uncheck',
'class="pictofixedwidth"') . $langs->trans(
'GeneralUnmatchingManual');
817if ($user->hasRight(
'accounting',
'mouvements',
'creer')) {
818 $arrayofmassactions[
'preclonebookkeepingwriting'] =
img_picto(
'',
'clone',
'class="pictofixedwidth"').$langs->trans(
"Clone");
820if ($user->hasRight(
'accounting',
'mouvements',
'creer')) {
821 $arrayofmassactions[
'preassignaccountbookkeepingwriting'] =
img_picto(
'',
'fa-exchange-alt',
'class="pictofixedwidth"').$langs->trans(
"AssignAccount");
823if ($user->hasRight(
'accounting',
'mouvements',
'creer')) {
824 $arrayofmassactions[
'prereturnaccountbookkeepingwriting'] =
img_picto(
'',
'undo',
'class="pictofixedwidth"').$langs->trans(
"ReturnAccount");
826if ($user->hasRight(
'accounting',
'mouvements',
'supprimer')) {
827 $arrayofmassactions[
'predeletebookkeepingwriting'] =
img_picto(
'',
'delete',
'class="pictofixedwidth"').$langs->trans(
"Delete");
831 || in_array($massaction,
833 'pregeneralunmatchingmanual',
834 'predeletebookkeepingwriting',
835 'preclonebookkeepingwriting',
836 'preassignaccountbookkeepingwriting',
837 'prereturnaccountbookkeepingwriting'
840 $arrayofmassactions = array();
842$massactionbutton = $form->selectMassAction($massaction, $arrayofmassactions);
844print
'<form method="POST" id="searchFormList" action="'.dolBuildUrl($_SERVER[
"PHP_SELF"]).
'">';
845print
'<input type="hidden" name="token" value="'.newToken().
'">';
846print
'<input type="hidden" name="action" value="list">';
847if ($optioncss !=
'') {
848 print
'<input type="hidden" name="optioncss" value="'.urlencode($optioncss).
'">';
850print
'<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
851print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
852print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
853print
'<input type="hidden" name="contextpage" value="'.$contextpage.
'">';
856 $buttonLabel = $langs->trans(
"ExportFilteredList");
858 $buttonLabel = $langs->trans(
"ExportList");
861$parameters = array(
'param' => $param);
862$reshook = $hookmanager->executeHooks(
'addMoreActionsButtonsList', $parameters, $object, $action);
867$newcardbutton = empty($hookmanager->resPrint) ?
'' : $hookmanager->resPrint;
869if (empty($reshook)) {
870 $newcardbutton .= dolGetButtonTitle($langs->trans(
'ViewFlatList'),
'',
'fa fa-list paddingleft imgforviewmode', DOL_URL_ROOT.
'/accountancy/bookkeeping/list.php?'.$param,
'', 1, array(
'morecss' =>
'marginleftonly btnTitleSelected'));
871 $newcardbutton .= dolGetButtonTitle($langs->trans(
'GroupByAccountAccounting'),
'',
'fa fa-stream paddingleft imgforviewmode', DOL_URL_ROOT.
'/accountancy/bookkeeping/listbyaccount.php?'.$param,
'', 1, array(
'morecss' =>
'marginleftonly'));
872 $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'));
873 $newcardbutton .= dolGetButtonTitle($langs->trans(
'ExportToPdf'),
'',
'fa fa-file-pdf paddingleft', $_SERVER[
'PHP_SELF'] .
'?token=' . newToken() .
'&action=exporttopdf&' . $param,
'', $permissiontoexport, array(
'morecss' =>
'marginleftonly'));
875 $url =
'./card.php?action=create'.(!empty($type) ?
'&type=sub' :
'').
'&backtopage='.urlencode($_SERVER[
'PHP_SELF']);
876 if (!empty($socid)) {
877 $url .=
'&socid='.$socid;
879 $newcardbutton .= dolGetButtonTitleSeparator();
880 $newcardbutton .= dolGetButtonTitle($langs->trans(
'NewAccountingMvt'),
'',
'fa fa-plus-circle paddingleft', $url,
'', $permissiontoadd);
883print_barre_liste($title_page, $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords,
'title_accountancy', 0, $newcardbutton,
'', $limit, 0, 0, 1);
885if ($massaction ==
'pregeneralunmatchingmanual') {
886 print $form->formconfirm($_SERVER[
'PHP_SELF'], $langs->trans(
'ConfirmMassGeneralUnmatchingManual'), $langs->trans(
"ConfirmMassGeneralUnmatchingQuestion", count($toselect)),
"generalunmatchingmanual",
null,
'', 0, 200, 500, 1);
887} elseif ($massaction ==
'predeletebookkeepingwriting') {
888 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassDeleteBookkeepingWriting"), $langs->trans(
"ConfirmMassDeleteBookkeepingWritingQuestion", count($toselect)),
"deletebookkeepingwriting",
null,
'', 0, 200, 500, 1);
889} elseif ($massaction ==
'preassignaccountbookkeepingwriting') {
890 $input = $formaccounting->select_account(
'',
'account', 1);
891 $formquestion = array(array(
'type' =>
'other',
'name' =>
'account',
'label' =>
'<span class="fieldrequired">' . $langs->trans(
"AccountAccountingShort") .
'</span>',
'value' => $input),);
892 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"confirmMassAssignAccountBookkeepingWritingConfirm"), $langs->trans(
"ConfirmMassAssignAccountBookkeepingWritingQuestion", count($toselect)),
"assignaccountbookkeepingwriting", $formquestion,
'', 0, 200, 500, 1);
893} elseif ($massaction ==
'preclonebookkeepingwriting') {
894 $input1 = $form->selectDate(
'',
'massdate', 0, 0, 0,
"create_mvt", 1, 1);
895 $input2 = $formaccounting->select_journal($journal_code,
'code_journal', 0, 0, 1, 1) .
'</td>';
896 $formquestion = array(
899 'name' =>
'massdate',
900 'label' =>
'<span class="fieldrequired">' . $langs->trans(
"Docdate") .
'</span>',
906 $formquestion[] = array(
908 'name' =>
'code_journal',
909 'label' =>
'<span class="fieldrequired">' . $langs->trans(
"Codejournal") .
'</span>',
914 print $form->formconfirm(
915 $_SERVER[
"PHP_SELF"],
916 $langs->trans(
"ConfirmMassCloneBookkeepingWriting"),
917 $langs->trans(
"ConfirmMassCloneBookkeepingWritingQuestion", count($toselect)),
918 "clonebookkeepingwriting",
922} elseif ($massaction ==
'prereturnaccountbookkeepingwriting') {
923 $input1 = $form->selectDate(
'',
'massdate', 0, 0, 0,
"create_mvt", 1, 1);
924 $formquestion = array(array(
'type' =>
'other',
'name' =>
'massdate',
'label' =>
'<span class="fieldrequired">' . $langs->trans(
"Docdate") .
'</span>',
'value' => $input1));
925 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassReturnAccountBookkeepingWriting"), $langs->trans(
"ConfirmMassReturnAccountBookkeepingWritingQuestion", count($toselect)),
"returnaccountbookkeepingwriting", $formquestion,
'', 0, 200, 500, 1);
932include DOL_DOCUMENT_ROOT.
'/core/tpl/massactions_pre.tpl.php';
934$varpage = empty($contextpage) ? $_SERVER[
"PHP_SELF"] : $contextpage;
935$selectedfields = $form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage,
$conf->main_checkbox_left_column);
936if ($massactionbutton && $contextpage !=
'poslist') {
937 $selectedfields .= $form->showCheckAddButtons(
'checkforselect', 1);
941$moreforfilter .=
'<div class="divsearchfield">';
942$moreforfilter .= $langs->trans(
'AccountingCategory').
': ';
943$moreforfilter .=
'<div class="nowrap inline-block">';
944$moreforfilter .= $formaccounting->select_accounting_category($search_account_category,
'search_account_category', 1, 0, 0, 0);
945$moreforfilter .=
'</div>';
946$moreforfilter .=
'</div>';
948$parameters = array();
949$reshook = $hookmanager->executeHooks(
'printFieldPreListTitle', $parameters, $object, $action);
950if (empty($reshook)) {
951 $moreforfilter .= $hookmanager->resPrint;
953 $moreforfilter = $hookmanager->resPrint;
956print
'<div class="liste_titre liste_titre_bydiv centpercent">';
960print
'<div class="div-table-responsive">';
961print
'<table class="tagtable liste'.($moreforfilter ?
" listwithfilterbefore" :
"").
'">';
964print
'<tr class="liste_titre_filter">';
966if (
$conf->main_checkbox_left_column) {
967 print
'<td class="liste_titre center">';
968 $searchpicto = $form->showFilterButtons(
'left');
973if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
974 print
'<td class="liste_titre"><input type="text" name="search_mvt_num" size="6" value="'.dol_escape_htmltag($search_mvt_num).
'"></td>';
977if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
978 print
'<td class="liste_titre center">';
979 print $formaccounting->multi_select_journal($search_ledger_code,
'search_ledger_code', 0, 1, 1, 1,
'maxwidth75');
983if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
984 print
'<td class="liste_titre center">';
985 print
'<div class="nowrapfordate">';
986 print $form->selectDate($search_date_start ? $search_date_start : -1,
'search_date_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
988 print
'<div class="nowrapfordate">';
989 print $form->selectDate($search_date_end ? $search_date_end : -1,
'search_date_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
994if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
995 print
'<td class="liste_titre"><input type="text" name="search_doc_ref" class="width75" value="'.dol_escape_htmltag($search_doc_ref).
'"></td>';
998if (!empty($arrayfields[
't.numero_compte'][
'checked'])) {
999 print
'<td class="liste_titre">';
1000 print
'<div class="nowrap">';
1001 print $formaccounting->select_account($search_accountancy_code_start,
'search_accountancy_code_start', $langs->trans(
'From'), array(), 1, 1,
'maxwidth150',
'account');
1003 print
'<div class="nowrap">';
1004 print $formaccounting->select_account($search_accountancy_code_end,
'search_accountancy_code_end', $langs->trans(
'to'), array(), 1, 1,
'maxwidth150',
'account');
1009if (!empty($arrayfields[
't.subledger_account'][
'checked'])) {
1010 print
'<td class="liste_titre">';
1011 print
'<div class="nowrap">';
1012 print $formaccounting->select_auxaccount($search_accountancy_aux_code_start,
'search_accountancy_aux_code_start', $langs->trans(
'From'),
'maxwidth250',
'subledgeraccount');
1014 print
'<div class="nowrap">';
1015 print $formaccounting->select_auxaccount($search_accountancy_aux_code_end,
'search_accountancy_aux_code_end', $langs->trans(
'to'),
'maxwidth250',
'subledgeraccount');
1020if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1021 print
'<td class="liste_titre">';
1022 print
'<input type="text" size="7" class="flat" name="search_mvt_label" value="'.dol_escape_htmltag($search_mvt_label).
'"/>';
1026if (!empty($arrayfields[
't.debit'][
'checked'])) {
1027 print
'<td class="liste_titre right">';
1028 print
'<input type="text" class="flat" name="search_debit" size="4" value="'.dol_escape_htmltag($search_debit).
'">';
1032if (!empty($arrayfields[
't.credit'][
'checked'])) {
1033 print
'<td class="liste_titre right">';
1034 print
'<input type="text" class="flat" name="search_credit" size="4" value="'.dol_escape_htmltag($search_credit).
'">';
1038if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1039 print
'<td class="liste_titre center">';
1040 print
'<input type="text" size="3" class="flat" name="search_lettering_code" value="'.dol_escape_htmltag($search_lettering_code).
'"/>';
1041 print
'<br><span class="nowrap"><input type="checkbox" name="search_not_reconciled" value="notreconciled"'.($search_not_reconciled ==
'notreconciled' ?
' checked' :
'').
'>'.$langs->trans(
"NotReconciled").
'</span>';
1046$parameters = array(
'arrayfields' => $arrayfields);
1047$reshook = $hookmanager->executeHooks(
'printFieldListOption', $parameters);
1048print $hookmanager->resPrint;
1051if (!empty($arrayfields[
't.date_creation'][
'checked'])) {
1052 print
'<td class="liste_titre center">';
1053 print
'<div class="nowrapfordate">';
1054 print $form->selectDate($search_date_creation_start,
'search_date_creation_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1056 print
'<div class="nowrapfordate">';
1057 print $form->selectDate($search_date_creation_end,
'search_date_creation_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1062if (!empty($arrayfields[
't.tms'][
'checked'])) {
1063 print
'<td class="liste_titre center">';
1064 print
'<div class="nowrapfordate">';
1065 print $form->selectDate($search_date_modification_start,
'search_date_modification_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1067 print
'<div class="nowrapfordate">';
1068 print $form->selectDate($search_date_modification_end,
'search_date_modification_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1073if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1074 print
'<td class="liste_titre center">';
1075 print
'<div class="nowrapfordate">';
1076 print $form->selectDate($search_date_export_start,
'search_date_export_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1078 print
'<div class="nowrapfordate">';
1079 print $form->selectDate($search_date_export_end,
'search_date_export_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1084if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1085 print
'<td class="liste_titre center">';
1086 print
'<div class="nowrapfordate">';
1087 print $form->selectDate($search_date_validation_start,
'search_date_validation_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1089 print
'<div class="nowrapfordate">';
1090 print $form->selectDate($search_date_validation_end,
'search_date_validation_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1095if (!empty($arrayfields[
't.date_lim_reglement'][
'checked'])) {
1096 print
'<td class="liste_titre center">';
1097 print
'<div class="nowrapfordate">';
1098 print $form->selectDate($search_date_due_start,
'search_date_due_start_', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1100 print
'<div class="nowrapfordate">';
1101 print $form->selectDate($search_date_due_end,
'search_date_due_end_', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1105if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1106 print
'<td class="liste_titre center">';
1107 print
'<input class="flat searchstring maxwidth50" type="text" name="search_import_key" value="'.dol_escape_htmltag($search_import_key).
'">';
1111if (!
$conf->main_checkbox_left_column) {
1112 print
'<td class="liste_titre center">';
1113 $searchpicto = $form->showFilterButtons();
1119print
'<tr class="liste_titre">';
1120if (
$conf->main_checkbox_left_column) {
1121 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch actioncolumn ');
1123if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
1124 print_liste_field_titre($arrayfields[
't.piece_num'][
'label'], $_SERVER[
'PHP_SELF'],
"t.piece_num",
"", $param,
"", $sortfield, $sortorder);
1126if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
1127 print_liste_field_titre($arrayfields[
't.code_journal'][
'label'], $_SERVER[
'PHP_SELF'],
"t.code_journal",
"", $param,
'', $sortfield, $sortorder,
'center ');
1129if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1130 print_liste_field_titre($arrayfields[
't.doc_date'][
'label'], $_SERVER[
'PHP_SELF'],
"t.doc_date",
"", $param,
'', $sortfield, $sortorder,
'center ');
1132if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
1133 print_liste_field_titre($arrayfields[
't.doc_ref'][
'label'], $_SERVER[
'PHP_SELF'],
"t.doc_ref",
"", $param,
"", $sortfield, $sortorder);
1135if (!empty($arrayfields[
't.numero_compte'][
'checked'])) {
1136 print_liste_field_titre($arrayfields[
't.numero_compte'][
'label'], $_SERVER[
'PHP_SELF'],
"t.numero_compte",
"", $param,
"", $sortfield, $sortorder);
1138if (!empty($arrayfields[
't.subledger_account'][
'checked'])) {
1139 print_liste_field_titre($arrayfields[
't.subledger_account'][
'label'], $_SERVER[
'PHP_SELF'],
"t.subledger_account",
"", $param,
"", $sortfield, $sortorder);
1141if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1142 print_liste_field_titre($arrayfields[
't.label_operation'][
'label'], $_SERVER[
'PHP_SELF'],
"t.label_operation",
"", $param,
"", $sortfield, $sortorder);
1144if (!empty($arrayfields[
't.debit'][
'checked'])) {
1145 print_liste_field_titre($arrayfields[
't.debit'][
'label'], $_SERVER[
'PHP_SELF'],
"t.debit",
"", $param,
'', $sortfield, $sortorder,
'right ');
1147if (!empty($arrayfields[
't.credit'][
'checked'])) {
1148 print_liste_field_titre($arrayfields[
't.credit'][
'label'], $_SERVER[
'PHP_SELF'],
"t.credit",
"", $param,
'', $sortfield, $sortorder,
'right ');
1150if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1151 print_liste_field_titre($arrayfields[
't.lettering_code'][
'label'], $_SERVER[
'PHP_SELF'],
"t.lettering_code",
"", $param,
'', $sortfield, $sortorder,
'center ');
1154$parameters = array(
'arrayfields' => $arrayfields,
'param' => $param,
'sortfield' => $sortfield,
'sortorder' => $sortorder);
1155$reshook = $hookmanager->executeHooks(
'printFieldListTitle', $parameters);
1156print $hookmanager->resPrint;
1157if (!empty($arrayfields[
't.date_creation'][
'checked'])) {
1158 print_liste_field_titre($arrayfields[
't.date_creation'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_creation",
"", $param,
'', $sortfield, $sortorder,
'center ');
1160if (!empty($arrayfields[
't.tms'][
'checked'])) {
1161 print_liste_field_titre($arrayfields[
't.tms'][
'label'], $_SERVER[
'PHP_SELF'],
"t.tms",
"", $param,
'', $sortfield, $sortorder,
'center ');
1163if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1164 print_liste_field_titre($arrayfields[
't.date_export'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_export,t.doc_date",
"", $param,
'', $sortfield, $sortorder,
'center ');
1166if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1167 print_liste_field_titre($arrayfields[
't.date_validated'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_validated,t.doc_date",
"", $param,
'', $sortfield, $sortorder,
'center ');
1170if (!empty($arrayfields[
't.date_lim_reglement'][
'checked'])) {
1171 print_liste_field_titre($arrayfields[
't.date_lim_reglement'][
'label'], $_SERVER[
'PHP_SELF'],
't.date_lim_reglement',
'', $param,
'', $sortfield, $sortorder,
'center ');
1173if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1174 print_liste_field_titre($arrayfields[
't.import_key'][
'label'], $_SERVER[
"PHP_SELF"],
"t.import_key",
"", $param,
'', $sortfield, $sortorder,
'center ');
1176if (!
$conf->main_checkbox_left_column) {
1177 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch ');
1193while ($i < min($num, $limit)) {
1194 $obj =
$db->fetch_object($resql);
1199 $line->id = $obj->rowid;
1200 $line->doc_date =
$db->jdate($obj->doc_date);
1201 $line->doc_type = $obj->doc_type;
1202 $line->doc_ref = $obj->doc_ref;
1203 $line->fk_doc = $obj->fk_doc;
1204 $line->fk_docdet = $obj->fk_docdet;
1205 $line->thirdparty_code = $obj->thirdparty_code;
1206 $line->subledger_account = $obj->subledger_account;
1207 $line->subledger_label = $obj->subledger_label;
1208 $line->numero_compte = $obj->numero_compte;
1209 $line->label_compte = $obj->label_compte;
1210 $line->label_operation = $obj->label_operation;
1211 $line->debit = $obj->debit;
1212 $line->credit = $obj->credit;
1213 $line->montant = $obj->amount;
1214 $line->amount = $obj->amount;
1215 $line->sens = $obj->sens;
1216 $line->lettering_code = $obj->lettering_code;
1217 $line->matching_general = $obj->matching_general;
1218 $line->fk_user_author = $obj->fk_user_author;
1219 $line->import_key = $obj->import_key;
1220 $line->code_journal = $obj->code_journal;
1221 $line->journal_label = $obj->journal_label;
1222 $line->piece_num = $obj->piece_num;
1223 $line->ref = $obj->ref;
1224 $line->date_creation =
$db->jdate($obj->date_creation);
1225 $line->date_modification =
$db->jdate($obj->date_modification);
1226 $line->date_export =
$db->jdate($obj->date_export);
1227 $line->date_validation =
$db->jdate($obj->date_validation);
1229 $line->date_lim_reglement =
$db->jdate($obj->date_lim_reglement);
1231 print
'<tr class="oddeven">';
1233 if (
$conf->main_checkbox_left_column) {
1234 print
'<td class="nowraponall center">';
1235 if (($massactionbutton || $massaction) && $contextpage !=
'poslist') {
1237 if (in_array($line->id, $arrayofselected)) {
1240 print
'<input id="cb'.$line->id.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$line->id.
'"'.($selected ?
' checked="checked"' :
'').
' />';
1249 if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
1250 print
'<td class="nowraponall">';
1252 $object->piece_num = $line->piece_num;
1254 print
$object->getNomUrl(1,
'', 0,
'', 1);
1255 print
'<span class="hideonsmartphone">';
1256 if (!empty($line->date_export)) {
1257 print
img_picto($langs->trans(
"DateExport").
": ".
dol_print_date($line->date_export,
'dayhour').
" (".$langs->trans(
"TransactionExportDesc").
")",
'fa-file-export',
'class="paddingleft pictofixedwidth opacitymedium"');
1259 if (!empty($line->date_validation)) {
1260 print
img_picto($langs->trans(
"DateValidation").
": ".
dol_print_date($line->date_validation,
'dayhour').
" (".$langs->trans(
"TransactionBlockedLockedDesc").
")",
'fa-lock',
'class="paddingleft pictofixedwidth opacitymedium"');
1270 if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
1271 if (empty(
$conf->cache[
'accountingjournal'][$line->code_journal])) {
1273 $accountingjournal->fetch(0, $line->code_journal);
1274 $conf->cache[
'accountingjournal'][$line->code_journal] = $accountingjournal;
1276 $accountingjournal =
$conf->cache[
'accountingjournal'][$line->code_journal];
1279 $journaltoshow = (($accountingjournal->id > 0) ? $accountingjournal->getNomUrl(0, 0, 0,
'', 0) : $line->code_journal);
1280 print
'<td class="center tdoverflowmax150">'.$journaltoshow.
'</td>';
1287 if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1288 print
'<td class="center">'.dol_print_date($line->doc_date,
'day').
'</td>';
1296 if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
1298 $objectstatic =
null;
1300 if ($line->doc_type ===
'customer_invoice') {
1301 $langs->loadLangs(array(
'bills'));
1303 require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
1305 $objectstatic->fetch($line->fk_doc);
1310 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.$objectstatic->id;
1311 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir);
1312 } elseif ($line->doc_type ===
'supplier_invoice') {
1313 $langs->loadLangs(array(
'bills'));
1315 require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.facture.class.php';
1317 $objectstatic->fetch($line->fk_doc);
1319 $modulepart =
'invoice_supplier';
1324 $filedir =
getMultidirOutput($objectstatic,
'', 1).dol_sanitizeFileName($line->doc_ref);
1325 $subdir =
getMultidirOutput($objectstatic,
'', 1,
'outputrel').dol_sanitizeFileName($line->doc_ref);
1328 if ($objectstatic->id > 0) {
1329 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $subdir, $filedir);
1331 $documentlink = $line->doc_ref;
1333 } elseif ($line->doc_type ===
'expense_report') {
1334 $langs->loadLangs(array(
'trips'));
1336 require_once DOL_DOCUMENT_ROOT.
'/expensereport/class/expensereport.class.php';
1338 $objectstatic->fetch($line->fk_doc);
1343 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.$objectstatic->id;
1344 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir);
1345 } elseif ($line->doc_type ===
'bank') {
1346 require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
1348 $objectstatic->fetch($line->fk_doc);
1354 $labeltoshowalt =
'';
1355 $classforlabel =
'';
1356 if (($line->doc_type ===
'customer_invoice' || $line->doc_type ===
'supplier_invoice' || $line->doc_type ===
'expense_report') && is_object($objectstatic)) {
1357 $labeltoshow .= $objectstatic->getNomUrl(1,
'', 0, 0,
'', 0, -1, 1);
1358 $labeltoshow .= $documentlink;
1359 $labeltoshowalt .= $objectstatic->ref;
1360 } elseif ($line->doc_type ===
'bank' && is_object($objectstatic)) {
1361 $labeltoshow .= $objectstatic->getNomUrl(1);
1362 $labeltoshowalt .= $objectstatic->ref;
1363 $bank_ref = strstr($line->doc_ref,
'-');
1364 $labeltoshow .=
" " . $bank_ref;
1365 $labeltoshowalt .=
" " . $bank_ref;
1367 $labeltoshow .= $line->doc_ref;
1368 $labeltoshowalt .= $line->doc_ref;
1369 $classforlabel =
'tdoverflowmax250';
1372 print
'<td class="nowraponall'.($classforlabel ?
' '.$classforlabel :
'').
'" title="'.
dol_escape_htmltag($labeltoshowalt).
'">';
1381 if (!empty($arrayfields[
't.numero_compte'][
'checked'])) {
1382 print
'<td>'.length_accountg($line->numero_compte).
'</td>';
1389 if (!empty($arrayfields[
't.subledger_account'][
'checked'])) {
1390 print
'<td>'.length_accounta($line->subledger_account).
'</td>';
1397 if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1398 print
'<td class="small tdoverflowmax200" title="'.dol_escape_htmltag($line->label_operation).
'">'.
dol_escape_htmltag($line->label_operation).
'</td>';
1405 if (!empty($arrayfields[
't.debit'][
'checked'])) {
1406 print
'<td class="right nowraponall amount">'.($line->debit != 0 ?
price($line->debit) :
'').
'</td>';
1417 if (!empty($arrayfields[
't.credit'][
'checked'])) {
1418 print
'<td class="right nowraponall amount">'.($line->credit != 0 ?
price($line->credit) :
'').
'</td>';
1425 $totalarray[
'val'][
'totalcredit'] += $line->credit;
1429 if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1433 if (!empty($line->matching_general)) {
1434 $tooltipText .= $langs->trans(
'GeneralMatching');
1436 $badge .=
"badge-status4";
1437 } elseif (empty($line->matching_general) && !empty($line->lettering_code)) {
1438 $tooltipText .= $langs->trans(
'AuxiliaryMatching');
1440 $badge .=
"badge-status1";
1442 print
'<td class="center classfortooltip" title="'.$tooltipText.
'"><span class="badge '.$badge.
'"><i class="fas '.$icon.
' fa-xs"></i> '.$line->lettering_code.
'</span></td>';
1449 $parameters = array(
'arrayfields' => $arrayfields,
'obj' => $obj,
'i' => $i,
'totalarray' => &
$totalarray);
1450 $reshook = $hookmanager->executeHooks(
'printFieldListValue', $parameters);
1451 print $hookmanager->resPrint;
1454 if (!empty($arrayfields[
't.date_creation'][
'checked'])) {
1455 print
'<td class="center">'.dol_print_date($line->date_creation,
'dayhour',
'tzuserrel').
'</td>';
1462 if (!empty($arrayfields[
't.tms'][
'checked'])) {
1463 print
'<td class="center">'.dol_print_date($line->date_modification,
'dayhour',
'tzuserrel').
'</td>';
1470 if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1471 print
'<td class="center nowraponall">'.dol_print_date($line->date_export,
'dayhour',
'tzuserrel').
'</td>';
1478 if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1479 print
'<td class="center nowraponall">'.dol_print_date($line->date_validation,
'dayhour',
'tzuserrel').
'</td>';
1486 if (!empty($arrayfields[
't.date_lim_reglement'][
'checked'])) {
1487 print
'<td class="center">'.dol_print_date($line->date_lim_reglement,
'day').
'</td>';
1493 if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1494 print
'<td class="tdoverflowmax125" title="'.dol_escape_htmltag($obj->import_key).
'">'.
dol_escape_htmltag($obj->import_key).
"</td>\n";
1501 if (!
$conf->main_checkbox_left_column) {
1502 print
'<td class="nowraponall center">';
1503 if (($massactionbutton || $massaction) && $contextpage !=
'poslist') {
1505 if (in_array($line->id, $arrayofselected)) {
1508 print
'<input id="cb'.$line->id.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$line->id.
'"'.($selected ?
' checked="checked"' :
'').
' />';
1523include DOL_DOCUMENT_ROOT.
'/core/tpl/list_print_total.tpl.php';
1528 foreach ($arrayfields as $key => $val) {
1529 if (!empty($val[
'checked'])) {
1533 print
'<tr><td colspan="'.$colspan.
'"><span class="opacitymedium">'.$langs->trans(
"NoRecordFound").
'</span></td></tr>';
1536$parameters = array(
'arrayfields' => $arrayfields,
'sql' => $sql);
1537$reshook = $hookmanager->executeHooks(
'printFieldListFooter', $parameters, $object, $action);
1538print $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.
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.
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.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
dol_print_date($time, $format='', $tzoutput='auto', $outputlangs=null, $encodetooutput=false, $decorate=0)
Output date in a string format according to outputlangs (or langs if not defined).
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.