33require
'../../main.inc.php';
41require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formaccounting.class.php';
42require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formfiscalyear.class.php';
43require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formfile.class.php';
44require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formother.class.php';
45require_once DOL_DOCUMENT_ROOT.
'/core/lib/accounting.lib.php';
46require_once DOL_DOCUMENT_ROOT.
'/core/lib/admin.lib.php';
47require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
48require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountingjournal.class.php';
49require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/bookkeeping.class.php';
50require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/lettering.class.php';
53$langs->loadLangs(array(
"accountancy",
"categories",
"compta",
"other"));
57$journal_code =
GETPOST(
'code_journal',
'alpha');
58$account =
GETPOST(
"account",
'int');
62$action =
GETPOST(
'action',
'aZ09');
63$massaction =
GETPOST(
'massaction',
'alpha');
64$confirm =
GETPOST(
'confirm',
'alpha');
65$toselect =
GETPOST(
'toselect',
'array:int');
66$contextpage =
GETPOST(
'contextpage',
'aZ') ?
GETPOST(
'contextpage',
'aZ') : str_replace(
'_',
'', basename(dirname(__FILE__)).basename(__FILE__,
'.php'));
69$search_mvt_num =
GETPOST(
'search_mvt_num',
'alpha');
70$search_doc_type =
GETPOST(
"search_doc_type",
'alpha');
71$search_doc_ref =
GETPOST(
"search_doc_ref",
'alpha');
73$search_doc_date =
GETPOSTDATE(
'doc_date',
'getpost');
75$search_date_start =
GETPOSTDATE(
'search_date_start',
'getpost',
'auto',
'search_date_start_accountancy');
76$search_date_end =
GETPOSTDATE(
'search_date_end',
'getpostend',
'auto',
'search_date_end_accountancy');
78$search_date_creation_start =
GETPOSTDATE(
'search_date_creation_start',
'getpost');
79$search_date_creation_end =
GETPOSTDATE(
'search_date_creation_end',
'getpostend');
81$search_date_modification_start =
GETPOSTDATE(
'search_date_modification_start',
'getpost');
82$search_date_modification_end =
GETPOSTDATE(
'search_date_modification_end',
'getpostend');
84$search_date_export_start =
GETPOSTDATE(
'search_date_export_start',
'getpost');
85$search_date_export_end =
GETPOSTDATE(
'search_date_export_end',
'getpostend');
87$search_date_validation_start =
GETPOSTDATE(
'search_date_validation_start',
'getpost');
88$search_date_validation_end =
GETPOSTDATE(
'search_date_validation_end',
'getpostend');
91$search_date_due_start_day =
GETPOSTINT(
'search_date_due_start_day');
92$search_date_due_start_month =
GETPOSTINT(
'search_date_due_start_month');
93$search_date_due_start_year =
GETPOSTINT(
'search_date_due_start_year');
94$search_date_due_start =
GETPOSTDATE(
'search_date_due_start_',
'getpost');
97$search_date_due_end_day =
GETPOSTINT(
'search_date_due_end_day');
98$search_date_due_end_month =
GETPOSTINT(
'search_date_due_end_month');
99$search_date_due_end_year =
GETPOSTINT(
'search_date_due_end_year');
100$search_date_due_end =
GETPOSTDATE(
'search_date_due_end_',
'getpostend');
102$search_import_key =
GETPOST(
"search_import_key",
'alpha');
104$search_account_category =
GETPOSTINT(
'search_account_category');
106$search_accountancy_code =
GETPOST(
"search_accountancy_code",
'alpha');
107$search_accountancy_code_start =
GETPOST(
'search_accountancy_code_start',
'alpha');
108if ($search_accountancy_code_start == - 1) {
109 $search_accountancy_code_start =
'';
111$search_accountancy_code_end =
GETPOST(
'search_accountancy_code_end',
'alpha');
112if ($search_accountancy_code_end == - 1) {
113 $search_accountancy_code_end =
'';
116$search_accountancy_aux_code =
GETPOST(
"search_accountancy_aux_code",
'alpha');
117$search_accountancy_aux_code_start =
GETPOST(
'search_accountancy_aux_code_start',
'alpha');
118if ($search_accountancy_aux_code_start == - 1) {
119 $search_accountancy_aux_code_start =
'';
121$search_accountancy_aux_code_end =
GETPOST(
'search_accountancy_aux_code_end',
'alpha');
122if ($search_accountancy_aux_code_end == - 1) {
123 $search_accountancy_aux_code_end =
'';
125$search_mvt_label =
GETPOST(
'search_mvt_label',
'alpha');
126$search_direction =
GETPOST(
'search_direction',
'alpha');
127$search_debit =
GETPOST(
'search_debit',
'alpha');
128$search_credit =
GETPOST(
'search_credit',
'alpha');
129$search_ledger_code =
GETPOST(
'search_ledger_code',
'array');
130$search_lettering_code =
GETPOST(
'search_lettering_code',
'alpha');
131$search_not_reconciled =
GETPOST(
'search_not_reconciled',
'alpha');
135$sortfield =
GETPOST(
'sortfield',
'aZ09comma');
136$sortorder =
GETPOST(
'sortorder',
'aZ09comma');
137$optioncss =
GETPOST(
'optioncss',
'alpha');
139if (empty($page) || $page < 0) {
142$offset = $limit * $page;
143$pageprev = $page - 1;
144$pagenext = $page + 1;
145if ($sortorder ==
"") {
148if ($sortfield ==
"") {
149 $sortfield =
"t.piece_num,t.rowid";
154$hookmanager->initHooks(array(
'bookkeepinglist'));
158$form =
new Form($db);
160if (!in_array($action, array(
'delmouv',
'delmouvconfirm')) && !GETPOSTISSET(
'begin') && !GETPOSTISSET(
'formfilteraction') &&
GETPOST(
'page',
'alpha') ==
'' && !
GETPOSTINT(
'noreset') && $user->hasRight(
'accounting',
'mouvements',
'export')) {
161 if (empty($search_date_start) && empty($search_date_end) && !GETPOSTISSET(
'restore_lastsearch_values') && !
GETPOST(
'search_mvt_num') && !
GETPOST(
'search_accountancy_code_start')) {
162 $sql =
"SELECT date_start, date_end";
163 $sql .=
" FROM ".MAIN_DB_PREFIX.
"accounting_fiscalyear ";
165 $sql .=
" WHERE rowid = " .
getDolGlobalInt(
'ACCOUNTANCY_FISCALYEAR_DEFAULT');
167 $sql .=
" WHERE date_start < '" . $db->idate(
dol_now()) .
"' and date_end > '" . $db->idate(
dol_now()) .
"'";
169 $sql .= $db->plimit(1);
170 $res = $db->query($sql);
172 if ($db->num_rows($res) > 0) {
173 $fiscalYear = $db->fetch_object($res);
174 $search_date_start = strtotime($fiscalYear->date_start);
175 $search_date_end = strtotime($fiscalYear->date_end);
182 $year_end = $year_start + 1;
183 $month_end = $month_start - 1;
184 if ($month_end < 1) {
188 $search_date_start =
dol_mktime(0, 0, 0, $month_start, 1, $year_start);
196 't.piece_num' => array(
'label' => $langs->trans(
"TransactionNumShort"),
'checked' =>
'1'),
197 't.code_journal' => array(
'label' => $langs->trans(
"Codejournal"),
'checked' =>
'1'),
198 't.doc_date' => array(
'label' => $langs->trans(
"Docdate"),
'checked' =>
'1'),
199 't.doc_ref' => array(
'label' => $langs->trans(
"Piece"),
'checked' =>
'1'),
200 't.numero_compte' => array(
'label' => $langs->trans(
"AccountAccountingShort"),
'checked' =>
'1'),
201 't.subledger_account' => array(
'label' => $langs->trans(
"SubledgerAccount"),
'checked' =>
'1'),
202 't.label_operation' => array(
'label' => $langs->trans(
"Label"),
'checked' =>
'1'),
203 't.debit' => array(
'label' => $langs->trans(
"AccountingDebit"),
'checked' =>
'1'),
204 't.credit' => array(
'label' => $langs->trans(
"AccountingCredit"),
'checked' =>
'1'),
205 't.lettering_code' => array(
'label' => $langs->trans(
"LetteringCode"),
'checked' =>
'1'),
206 't.date_creation' => array(
'label' => $langs->trans(
"DateCreation"),
'checked' =>
'0'),
207 't.tms' => array(
'label' => $langs->trans(
"DateModification"),
'checked' =>
'0'),
208 't.date_export' => array(
'label' => $langs->trans(
"DateExport"),
'checked' =>
'0'),
209 't.date_validated' => array(
'label' => $langs->trans(
"DateValidationAndLock"),
'checked' =>
'0',
'enabled' => (
string) (
int) !
getDolGlobalString(
"ACCOUNTANCY_DISABLE_CLOSURE_LINE_BY_LINE")),
210 't.date_lim_reglement' => array(
'label' => $langs->trans(
"DateDue"),
'checked' =>
'0'),
211 't.import_key' => array(
'label' => $langs->trans(
"ImportId"),
'checked' =>
'0',
'position' => 1100),
215 unset($arrayfields[
't.lettering_code']);
223if ($user->socid > 0) {
226if (!$user->hasRight(
'accounting',
'mouvements',
'lire')) {
231$permissiontoread = $user->hasRight(
'accounting',
'mouvements',
'lire');
232$permissiontoadd = $user->hasRight(
'accounting',
'mouvements',
'creer');
233$permissiontodelete = $user->hasRight(
'accounting',
'mouvements',
'supprimer');
234$permissiontoexport = $user->hasRight(
'accounting',
'mouvements',
'export');
244if (
GETPOST(
'cancel',
'alpha')) {
248if (!
GETPOST(
'confirmmassaction',
'alpha') && $massaction !=
'preunletteringauto' && $massaction !=
'preunletteringmanual' && $massaction !=
'predeletebookkeepingwriting' && $massaction !=
'preclonebookkeepingwriting' && $massaction !=
'preassignaccountbookkeepingwriting' && $massaction !=
'prereturnaccountbookkeepingwriting') {
252$parameters = array(
'socid' => $socid);
253$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
258if (empty($reshook)) {
259 include DOL_DOCUMENT_ROOT.
'/core/actions_changeselectedfields.inc.php';
261 if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
262 $search_mvt_num =
'';
263 $search_doc_type =
'';
264 $search_doc_ref =
'';
265 $search_doc_date =
'';
266 $search_account_category =
'';
267 $search_accountancy_code =
'';
268 $search_accountancy_code_start =
'';
269 $search_accountancy_code_end =
'';
270 $search_accountancy_aux_code =
'';
271 $search_accountancy_aux_code_start =
'';
272 $search_accountancy_aux_code_end =
'';
273 $search_mvt_label =
'';
274 $search_direction =
'';
275 $search_ledger_code = array();
276 $search_date_start =
'';
277 $search_date_end =
'';
278 $search_date_creation_start =
'';
279 $search_date_creation_end =
'';
280 $search_date_modification_start =
'';
281 $search_date_modification_end =
'';
282 $search_date_export_start =
'';
283 $search_date_export_end =
'';
284 $search_date_validation_start =
'';
285 $search_date_validation_end =
'';
287 $search_date_due_start_day =
'';
288 $search_date_due_start_month =
'';
289 $search_date_due_start_year =
'';
290 $search_date_due_start =
'';
292 $search_date_due_end_day =
'';
293 $search_date_due_end_month =
'';
294 $search_date_due_end_year =
'';
295 $search_date_due_end =
'';
298 $search_lettering_code =
'';
299 $search_not_reconciled =
'';
300 $search_import_key =
'';
302 unset($_SESSION[
'DOLDATE_search_date_start_accountancy_day']);
303 unset($_SESSION[
'DOLDATE_search_date_start_accountancy_month']);
304 unset($_SESSION[
'DOLDATE_search_date_start_accountancy_year']);
305 unset($_SESSION[
'DOLDATE_search_date_end_accountancy_day']);
306 unset($_SESSION[
'DOLDATE_search_date_end_accountancy_month']);
307 unset($_SESSION[
'DOLDATE_search_date_end_accountancy_year']);
311 if (!empty($search_date_start)) {
312 $filter[
't.doc_date>='] = $search_date_start;
314 $param .=
'&search_date_startmonth='.((int) $tmp[
'mon']).
'&search_date_startday='.((int) $tmp[
'mday']).
'&search_date_startyear='.((int) $tmp[
'year']);
316 if (!empty($search_date_end)) {
317 $filter[
't.doc_date<='] = $search_date_end;
319 $param .=
'&search_date_endmonth='.((int) $tmp[
'mon']).
'&search_date_endday='.((int) $tmp[
'mday']).
'&search_date_endyear='.((int) $tmp[
'year']);
321 if (!empty($search_doc_date)) {
322 $filter[
't.doc_date'] = $search_doc_date;
324 $param .=
'&doc_datemonth='.((int) $tmp[
'mon']).
'&doc_dateday='.((int) $tmp[
'mday']).
'&doc_dateyear='.((int) $tmp[
'year']);
326 if (!empty($search_doc_type)) {
327 $filter[
't.doc_type'] = $search_doc_type;
328 $param .=
'&search_doc_type='.urlencode($search_doc_type);
330 if (!empty($search_doc_ref)) {
331 $filter[
't.doc_ref'] = $search_doc_ref;
332 $param .=
'&search_doc_ref='.urlencode($search_doc_ref);
334 if ($search_account_category !=
'-1' && !empty($search_account_category)) {
335 require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountancycategory.class.php';
338 $listofaccountsforgroup = $accountingcategory->getCptsCat(0,
'fk_accounting_category = '.((
int) $search_account_category));
339 $listofaccountsforgroup2 = array();
340 if (is_array($listofaccountsforgroup)) {
341 foreach ($listofaccountsforgroup as $tmpval) {
342 $listofaccountsforgroup2[] =
"'".$db->escape((
string) $tmpval[
'account_number']).
"'";
345 if (!empty($listofaccountsforgroup2)) {
346 $filter[
't.search_accounting_code_in'] = implode(
',', $listofaccountsforgroup2);
348 $filter[
't.search_accounting_code_in'] =
"''";
349 setEventMessages($langs->trans(
"ThisCategoryHasNoItems"),
null,
'warnings');
351 $param .=
'&search_account_category='.urlencode((
string) ($search_account_category));
353 if (!empty($search_accountancy_code)) {
354 $filter[
't.numero_compte'] = $search_accountancy_code;
355 $param .=
'&search_accountancy_code='.urlencode($search_accountancy_code);
357 if (!empty($search_accountancy_code_start)) {
358 $filter[
't.numero_compte>='] = $search_accountancy_code_start;
359 $param .=
'&search_accountancy_code_start='.urlencode($search_accountancy_code_start);
361 if (!empty($search_accountancy_code_end)) {
362 $filter[
't.numero_compte<='] = $search_accountancy_code_end;
363 $param .=
'&search_accountancy_code_end='.urlencode($search_accountancy_code_end);
365 if (!empty($search_accountancy_aux_code)) {
366 $filter[
't.subledger_account'] = $search_accountancy_aux_code;
367 $param .=
'&search_accountancy_aux_code='.urlencode($search_accountancy_aux_code);
369 if (!empty($search_accountancy_aux_code_start)) {
370 $filter[
't.subledger_account>='] = $search_accountancy_aux_code_start;
371 $param .=
'&search_accountancy_aux_code_start='.urlencode($search_accountancy_aux_code_start);
373 if (!empty($search_accountancy_aux_code_end)) {
374 $filter[
't.subledger_account<='] = $search_accountancy_aux_code_end;
375 $param .=
'&search_accountancy_aux_code_end='.urlencode($search_accountancy_aux_code_end);
377 if (!empty($search_mvt_label)) {
378 $filter[
't.label_operation'] = $search_mvt_label;
379 $param .=
'&search_mvt_label='.urlencode($search_mvt_label);
381 if (!empty($search_direction)) {
382 $filter[
't.sens'] = $search_direction;
383 $param .=
'&search_direction='.urlencode($search_direction);
385 if (!empty($search_ledger_code)) {
386 $filter[
't.code_journal'] = $search_ledger_code;
387 foreach ($search_ledger_code as $code) {
388 $param .=
'&search_ledger_code[]='.urlencode($code);
391 if (!empty($search_mvt_num)) {
392 $filter[
't.piece_num'] = $search_mvt_num;
393 $param .=
'&search_mvt_num='.urlencode((
string) ($search_mvt_num));
395 if (!empty($search_date_creation_start)) {
396 $filter[
't.date_creation>='] = $search_date_creation_start;
398 $param .=
'&search_date_creation_startmonth='.((int) $tmp[
'mon']).
'&search_date_creation_startday='.((int) $tmp[
'mday']).
'&search_date_creation_startyear='.((int) $tmp[
'year']);
400 if (!empty($search_date_creation_end)) {
401 $filter[
't.date_creation<='] = $search_date_creation_end;
403 $param .=
'&search_date_creation_endmonth='.((int) $tmp[
'mon']).
'&search_date_creation_endday='.((int) $tmp[
'mday']).
'&search_date_creation_endyear='.((int) $tmp[
'year']);
405 if (!empty($search_date_modification_start)) {
406 $filter[
't.tms>='] = $search_date_modification_start;
407 $tmp =
dol_getdate($search_date_modification_start);
408 $param .=
'&search_date_modification_startmonth='.((int) $tmp[
'mon']).
'&search_date_modification_startday='.((int) $tmp[
'mday']).
'&search_date_modification_startyear='.((int) $tmp[
'year']);
410 if (!empty($search_date_modification_end)) {
411 $filter[
't.tms<='] = $search_date_modification_end;
413 $param .=
'&search_date_modification_endmonth='.((int) $tmp[
'mon']).
'&search_date_modification_endday='.((int) $tmp[
'mday']).
'&search_date_modification_endyear='.((int) $tmp[
'year']);
415 if (!empty($search_date_export_start)) {
416 $filter[
't.date_export>='] = $search_date_export_start;
418 $param .=
'&search_date_export_startmonth='.((int) $tmp[
'mon']).
'&search_date_export_startday='.((int) $tmp[
'mday']).
'&search_date_export_startyear='.((int) $tmp[
'year']);
420 if (!empty($search_date_export_end)) {
421 $filter[
't.date_export<='] = $search_date_export_end;
423 $param .=
'&search_date_export_endmonth='.((int) $tmp[
'mon']).
'&search_date_export_endday='.((int) $tmp[
'mday']).
'&search_date_export_endyear='.((int) $tmp[
'year']);
425 if (!empty($search_date_validation_start)) {
426 $filter[
't.date_validated>='] = $search_date_validation_start;
428 $param .=
'&search_date_validation_startmonth='.((int) $tmp[
'mon']).
'&search_date_validation_startday='.((int) $tmp[
'mday']).
'&search_date_validation_startyear='.((int) $tmp[
'year']);
430 if (!empty($search_date_validation_end)) {
431 $filter[
't.date_validated<='] = $search_date_validation_end;
433 $param .=
'&search_date_validation_endmonth='.((int) $tmp[
'mon']).
'&search_date_validation_endday='.((int) $tmp[
'mday']).
'&search_date_validation_endyear='.((int) $tmp[
'year']);
436 if (!empty($search_date_due_start)) {
437 $filter[
't.date_lim_reglement>='] = $search_date_due_start;
438 $param .=
'&search_date_due_start_day='.$search_date_due_start_day.
'&search_date_due_start_month='.$search_date_due_start_month.
'&search_date_due_start_year='.$search_date_due_start_year;
441 if (!empty($search_date_due_end)) {
442 $filter[
't.date_lim_reglement<='] = $search_date_due_end;
443 $param .=
'&search_date_due_end_day='.$search_date_due_end_day.
'&search_date_due_end_month='.$search_date_due_end_month.
'&search_date_due_end_year='.$search_date_due_end_year;
445 if (!empty($search_debit)) {
446 $filter[
't.debit'] = $search_debit;
447 $param .=
'&search_debit='.urlencode($search_debit);
449 if (!empty($search_credit)) {
450 $filter[
't.credit'] = $search_credit;
451 $param .=
'&search_credit='.urlencode($search_credit);
453 if (!empty($search_lettering_code)) {
454 $filter[
't.lettering_code'] = $search_lettering_code;
455 $param .=
'&search_lettering_code='.urlencode($search_lettering_code);
457 if (!empty($search_not_reconciled)) {
458 $filter[
't.reconciled_option'] = $search_not_reconciled;
459 $param .=
'&search_not_reconciled='.urlencode($search_not_reconciled);
461 if (!empty($search_import_key)) {
462 $filter[
't.import_key'] = $search_import_key;
463 $param .=
'&search_import_key='.urlencode($search_import_key);
467 if ($action ===
'exporttopdf' && $permissiontoadd) {
468 $object->fetchAll(
'ASC,ASC,ASC',
'code_journal,doc_date,piece_num', 0, 0, $filter);
469 require_once DOL_DOCUMENT_ROOT .
'/core/modules/accountancy/doc/pdf_bookkeeping.modules.php';
471 $pdf->fromDate = $search_date_start;
472 $pdf->toDate = $search_date_end;
474 $result = $pdf->write_file($object, $langs);
485 $objectclass =
'Bookkeeping';
486 $objectlabel =
'Bookkeeping';
487 $uploaddir = $conf->societe->dir_output;
491 include DOL_DOCUMENT_ROOT.
'/core/actions_massactions.inc.php';
493 if (!$error && $action ==
'deletebookkeepingwriting' && $confirm ==
"yes" && $user->hasRight(
'accounting',
'mouvements',
'supprimer')) {
498 $nb_lettering = $lettering->bookkeepingLetteringAll($toselect,
true);
499 if ($nb_lettering < 0) {
508 foreach ($toselect as $toselectid) {
509 $result =
$object->fetch($toselectid);
510 if ($result > 0 && (!isset(
$object->date_validation) ||
$object->date_validation ===
'')) {
514 } elseif ($result == 0) {
515 setEventMessages($langs->trans(
"ErrorBookkeepingDocDateNotOnActiveFiscalPeriod"),
null,
'errors');
523 } elseif ($result < 0) {
527 } elseif (isset(
$object->date_validation) &&
$object->date_validation !=
'') {
528 setEventMessages($langs->trans(
"ValidatedRecordWhereFound"),
null,
'errors');
541 } elseif ($nbok > 0) {
547 header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?noreset=1".($param ?
'&'.$param :
''));
555 if (!$error && $action ==
'clonebookkeepingwriting' && $confirm ==
"yes" && $user->hasRight(
'accounting',
'mouvements',
'creer')) {
556 $result =
$object->newCloneMass($toselect, $journal_code, $massdate);
562 header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?noreset=1".($param ?
'&'.$param :
''));
570 if (!$error && $action ==
'assignaccountbookkeepingwriting' && $confirm ==
"yes" && $user->hasRight(
'accounting',
'mouvements',
'creer')) {
571 $result =
$object->assignAccountMass($toselect, (
int) $account);
577 header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?noreset=1".($param ?
'&'.$param :
''));
585 if (!$error && $action ==
'returnaccountbookkeepingwriting' && $confirm ==
"yes" && $user->hasRight(
'accounting',
'mouvements',
'creer')) {
586 $result =
$object->newReturnAccount($toselect, $journal_code, $massdate);
592 header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?noreset=1".($param ?
'&'.$param :
''));
601 if ($massaction ==
'letteringauto' && $permissiontoadd) {
603 $nb_lettering = $lettering->bookkeepingLetteringAll($toselect);
604 if ($nb_lettering < 0) {
607 $nb_lettering = max(0, abs($nb_lettering) - 2);
608 } elseif ($nb_lettering == 0) {
610 setEventMessages($langs->trans(
'AccountancyNoLetteringModified'), array(),
'mesgs');
612 if ($nb_lettering == 1) {
613 setEventMessages($langs->trans(
'AccountancyOneLetteringModifiedSuccessfully'), array(),
'mesgs');
614 } elseif ($nb_lettering > 1) {
615 setEventMessages($langs->trans(
'AccountancyLetteringModifiedSuccessfully', $nb_lettering), array(),
'mesgs');
619 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
622 } elseif ($massaction ==
'letteringmanual' && $permissiontoadd) {
624 $result = $lettering->updateLettering($toselect);
628 setEventMessages($langs->trans(
'AccountancyOneLetteringModifiedSuccessfully'), array(),
'mesgs');
629 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
632 } elseif ($action ==
'unletteringauto' && $confirm ==
"yes" && $permissiontoadd) {
634 $nb_lettering = $lettering->bookkeepingLetteringAll($toselect,
true);
635 if ($nb_lettering < 0) {
638 $nb_lettering = max(0, abs($nb_lettering) - 2);
639 } elseif ($nb_lettering == 0) {
641 setEventMessages($langs->trans(
'AccountancyNoUnletteringModified'), array(),
'mesgs');
643 if ($nb_lettering == 1) {
644 setEventMessages($langs->trans(
'AccountancyOneUnletteringModifiedSuccessfully'), array(),
'mesgs');
645 } elseif ($nb_lettering > 1) {
646 setEventMessages($langs->trans(
'AccountancyUnletteringModifiedSuccessfully', $nb_lettering), array(),
'mesgs');
650 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
653 } elseif ($action ==
'unletteringmanual' && $confirm ==
"yes" && $permissiontoadd) {
655 $nb_lettering = $lettering->deleteLettering($toselect);
656 if ($nb_lettering < 0) {
659 setEventMessages($langs->trans(
'AccountancyOneUnletteringModifiedSuccessfully'), array(),
'mesgs');
660 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
673$sql .=
" t.doc_date,";
674$sql .=
" t.doc_type,";
675$sql .=
" t.doc_ref,";
677$sql .=
" t.fk_docdet,";
678$sql .=
" t.thirdparty_code,";
679$sql .=
" t.subledger_account,";
680$sql .=
" t.subledger_label,";
681$sql .=
" t.numero_compte,";
682$sql .=
" t.label_compte,";
683$sql .=
" t.label_operation,";
686$sql .=
" t.lettering_code,";
687$sql .=
" t.montant as amount,";
689$sql .=
" t.fk_user_author,";
690$sql .=
" t.import_key,";
691$sql .=
" t.code_journal,";
692$sql .=
" t.journal_label,";
693$sql .=
" t.piece_num,";
695$sql .=
" t.date_creation,";
696$sql .=
" t.tms as date_modification,";
697$sql .=
" t.date_export,";
698$sql .=
" t.date_validated as date_validation,";
699$sql .=
" t.date_lim_reglement,";
700$sql .=
" t.import_key";
704$sql .=
' FROM '.MAIN_DB_PREFIX.$object->table_element.
' as t';
707if (count($filter) > 0) {
708 foreach ($filter as $key => $value) {
709 if ($key ==
't.doc_date') {
710 $sqlwhere[] = $db->sanitize($key).
" = '".$db->idate($value).
"'";
711 } elseif ($key ==
't.doc_date>=') {
712 $sqlwhere[] =
"t.doc_date >= '".$db->idate($value).
"'";
713 } elseif ($key ==
't.doc_date<=') {
714 $sqlwhere[] =
"t.doc_date <= '".$db->idate($value).
"'";
715 } elseif ($key ==
't.numero_compte>=') {
716 $sqlwhere[] =
"t.numero_compte >= '".$db->escape($value).
"'";
717 } elseif ($key ==
't.numero_compte<=') {
718 $sqlwhere[] =
"t.numero_compte <= '".$db->escape($value).
"'";
719 } elseif ($key ==
't.subledger_account>=') {
720 $sqlwhere[] =
"t.subledger_account >= '".$db->escape($value).
"'";
721 } elseif ($key ==
't.subledger_account<=') {
722 $sqlwhere[] =
"t.subledger_account <= '".$db->escape($value).
"'";
723 } elseif ($key ==
't.piece_num') {
726 } elseif ($key ==
't.subledger_account' || $key ==
't.numero_compte') {
727 $sqlwhere[] = $db->sanitize($key).
" LIKE '".$db->escape($db->escapeforlike($value)).
"%'";
730 } elseif ($key ==
't.tms>=') {
731 $sqlwhere[] =
"t.tms >= '".$db->idate($value).
"'";
732 } elseif ($key ==
't.tms<=') {
733 $sqlwhere[] =
"t.tms <= '".$db->idate($value).
"'";
734 } elseif ($key ==
't.date_creation>=') {
735 $sqlwhere[] =
"t.date_creation >= '".$db->idate($value).
"'";
736 } elseif ($key ==
't.date_creation<=') {
737 $sqlwhere[] =
"t.date_creation <= '".$db->idate($value).
"'";
738 } elseif ($key ==
't.date_export>=') {
739 $sqlwhere[] =
"t.date_export >= '".$db->idate($value).
"'";
740 } elseif ($key ==
't.date_export<=') {
741 $sqlwhere[] =
"t.date_export <= '".$db->idate($value).
"'";
742 } elseif ($key ==
't.date_validated>=') {
743 $sqlwhere[] =
"t.date_validated >= '".$db->idate($value).
"'";
744 } elseif ($key ==
't.date_validated<=') {
745 $sqlwhere[] =
"t.date_validated <= '".$db->idate($value).
"'";
746 } elseif ($key ==
't.date_lim_reglement>=') {
747 $sqlwhere[] =
"t.date_lim_reglement >= '".$db->idate($value).
"'";
748 } elseif ($key ==
't.date_lim_reglement<=') {
749 $sqlwhere[] =
"t.date_lim_reglement <= '".$db->idate($value).
"'";
750 } elseif ($key ==
't.credit' || $key ==
't.debit') {
752 } elseif ($key ==
't.reconciled_option') {
753 $sqlwhere[] =
't.lettering_code IS NULL';
754 } elseif ($key ==
't.code_journal' && !empty($value)) {
755 if (is_array($value)) {
756 $sqlwhere[] =
natural_search(
"t.code_journal", implode(
',', $value), 3, 1);
760 } elseif ($key ==
't.search_accounting_code_in' && !empty($value)) {
761 $sqlwhere[] =
't.numero_compte IN ('.$db->sanitize($value, 1).
')';
767$sql .=
' WHERE t.entity IN ('.getEntity(
'accountancy').
')';
769if (count($sqlwhere) > 0) {
770 $sql .=
' AND '.implode(
' AND ', $sqlwhere);
781$title_page = $langs->trans(
"Operations").
' - '.$langs->trans(
"Journals");
784$nbtotalofrecords =
'';
787 $sqlforcount = preg_replace(
'/^'.preg_quote($sqlfields,
'/').
'/',
'SELECT COUNT(*) as nbtotalofrecords', $sql);
788 $sqlforcount = preg_replace(
'/GROUP BY .*$/',
'', $sqlforcount);
789 $resql = $db->query($sqlforcount);
791 $objforcount = $db->fetch_object($resql);
792 $nbtotalofrecords = $objforcount->nbtotalofrecords;
797 if (($page * $limit) > (
int) $nbtotalofrecords) {
806$sql .= $db->order($sortfield, $sortorder);
808 $sql .= $db->plimit($limit + 1, $offset);
811$resql = $db->query($sql);
817$num = $db->num_rows($resql);
819$arrayofselected = is_array($toselect) ? $toselect : array();
823$help_url =
'EN:Module_Double_Entry_Accounting|FR:Module_Comptabilité_en_Partie_Double';
824llxHeader(
'', $title_page, $help_url,
'', 0, 0,
'',
'',
'',
'mod-accountancy accountancy-consultation page-journal');
832if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
833 $param .=
'&contextpage='.urlencode($contextpage);
835if ($limit > 0 && $limit != $conf->liste_limit) {
836 $param .=
'&limit='.((int) $limit);
840$arrayofmassactions = array();
841if (
getDolGlobalInt(
'ACCOUNTING_ENABLE_LETTERING') && $user->hasRight(
'accounting',
'mouvements',
'creer')) {
842 $arrayofmassactions[
'letteringauto'] =
img_picto(
'',
'check',
'class="pictofixedwidth"') . $langs->trans(
'LetteringAuto');
843 $arrayofmassactions[
'preunletteringauto'] =
img_picto(
'',
'uncheck',
'class="pictofixedwidth"') . $langs->trans(
'UnletteringAuto');
844 $arrayofmassactions[
'letteringmanual'] =
img_picto(
'',
'check',
'class="pictofixedwidth"') . $langs->trans(
'LetteringManual');
845 $arrayofmassactions[
'preunletteringmanual'] =
img_picto(
'',
'uncheck',
'class="pictofixedwidth"') . $langs->trans(
'UnletteringManual');
847if ($user->hasRight(
'accounting',
'mouvements',
'creer')) {
848 $arrayofmassactions[
'preclonebookkeepingwriting'] =
img_picto(
'',
'clone',
'class="pictofixedwidth"').$langs->trans(
"Clone");
850if ($user->hasRight(
'accounting',
'mouvements',
'creer')) {
851 $arrayofmassactions[
'preassignaccountbookkeepingwriting'] =
img_picto(
'',
'fa-exchange-alt',
'class="pictofixedwidth"').$langs->trans(
"AssignAccount");
853if ($user->hasRight(
'accounting',
'mouvements',
'creer')) {
854 $arrayofmassactions[
'prereturnaccountbookkeepingwriting'] =
img_picto(
'',
'undo',
'class="pictofixedwidth"').$langs->trans(
"ReturnAccount");
856if ($user->hasRight(
'accounting',
'mouvements',
'supprimer')) {
857 $arrayofmassactions[
'predeletebookkeepingwriting'] =
img_picto(
'',
'delete',
'class="pictofixedwidth"').$langs->trans(
"Delete");
860if (
GETPOSTINT(
'nomassaction') || in_array($massaction, array(
'preunletteringauto',
'preunletteringmanual',
'predeletebookkeepingwriting',
'preclonebookkeepingwriting',
'preassignaccountbookkeepingwriting',
'prereturnaccountbookkeepingwriting'))) {
861 $arrayofmassactions = array();
863$massactionbutton = $form->selectMassAction($massaction, $arrayofmassactions);
865print
'<form method="POST" id="searchFormList" action="'.dolBuildUrl($_SERVER[
"PHP_SELF"]).
'">';
866print
'<input type="hidden" name="token" value="'.newToken().
'">';
867print
'<input type="hidden" name="action" value="list">';
868if ($optioncss !=
'') {
869 print
'<input type="hidden" name="optioncss" value="'.urlencode($optioncss).
'">';
871print
'<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
872print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
873print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
874print
'<input type="hidden" name="contextpage" value="'.$contextpage.
'">';
877 $buttonLabel = $langs->trans(
"ExportFilteredList");
879 $buttonLabel = $langs->trans(
"ExportList");
882$parameters = array(
'param' => $param);
883$reshook = $hookmanager->executeHooks(
'addMoreActionsButtonsList', $parameters, $object, $action);
888$newcardbutton = empty($hookmanager->resPrint) ?
'' : $hookmanager->resPrint;
890if (empty($reshook)) {
891 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'ViewFlatList'),
'',
'fa fa-list paddingleft imgforviewmode', DOL_URL_ROOT.
'/accountancy/bookkeeping/list.php?'.$param,
'', 1, array(
'morecss' =>
'marginleftonly btnTitleSelected'));
892 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'GroupByAccountAccounting'),
'',
'fa fa-stream paddingleft imgforviewmode', DOL_URL_ROOT.
'/accountancy/bookkeeping/listbyaccount.php?'.$param,
'', 1, array(
'morecss' =>
'marginleftonly'));
893 $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'));
894 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'ExportToPdf'),
'',
'fa fa-file-pdf paddingleft', $_SERVER[
'PHP_SELF'] .
'?action=exporttopdf&' . $param,
'', $permissiontoexport, array(
'morecss' =>
'marginleftonly'));
896 $url =
'./card.php?action=create'.(!empty($type) ?
'&type=sub' :
'').
'&backtopage='.urlencode($_SERVER[
'PHP_SELF']);
897 if (!empty($socid)) {
898 $url .=
'&socid='.$socid;
901 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'NewAccountingMvt'),
'',
'fa fa-plus-circle paddingleft', $url,
'', $permissiontoadd);
904print_barre_liste($title_page, $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords,
'title_accountancy', 0, $newcardbutton,
'', $limit, 0, 0, 1);
906if ($massaction ==
'preunletteringauto') {
907 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassUnletteringAuto"), $langs->trans(
"ConfirmMassUnletteringQuestion", count($toselect)),
"unletteringauto",
null,
'', 0, 200, 500, 1);
908} elseif ($massaction ==
'preunletteringmanual') {
909 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassUnletteringManual"), $langs->trans(
"ConfirmMassUnletteringQuestion", count($toselect)),
"unletteringmanual",
null,
'', 0, 200, 500, 1);
910} elseif ($massaction ==
'predeletebookkeepingwriting') {
911 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassDeleteBookkeepingWriting"), $langs->trans(
"ConfirmMassDeleteBookkeepingWritingQuestion", count($toselect)),
"deletebookkeepingwriting",
null,
'', 0, 200, 500, 1);
912} elseif ($massaction ==
'preassignaccountbookkeepingwriting') {
913 $input = $formaccounting->select_account(
'',
'account', 1);
914 $formquestion = array(array(
'type' =>
'other',
'name' =>
'account',
'label' =>
'<span class="fieldrequired">' . $langs->trans(
"AccountAccountingShort") .
'</span>',
'value' => $input),);
915 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"confirmMassAssignAccountBookkeepingWritingConfirm"), $langs->trans(
"ConfirmMassAssignAccountBookkeepingWritingQuestion", count($toselect)),
"assignaccountbookkeepingwriting", $formquestion,
'', 0, 200, 500, 1);
916} elseif ($massaction ==
'preclonebookkeepingwriting') {
917 $input1 = $form->selectDate(
'',
'massdate', 0, 0, 0,
"create_mvt", 1, 1);
918 $input2 = $formaccounting->select_journal($journal_code,
'code_journal', 0, 0, 1, 1) .
'</td>';
919 $formquestion = array(
922 'name' =>
'massdate',
923 'label' =>
'<span class="fieldrequired">' . $langs->trans(
"Docdate") .
'</span>',
929 $formquestion[] = array(
931 'name' =>
'code_journal',
932 'label' =>
'<span class="fieldrequired">' . $langs->trans(
"Codejournal") .
'</span>',
937 print $form->formconfirm(
938 $_SERVER[
"PHP_SELF"],
939 $langs->trans(
"ConfirmMassCloneBookkeepingWriting"),
940 $langs->trans(
"ConfirmMassCloneBookkeepingWritingQuestion", count($toselect)),
941 "clonebookkeepingwriting",
945} elseif ($massaction ==
'prereturnaccountbookkeepingwriting') {
946 $input1 = $form->selectDate(
'',
'massdate', 0, 0, 0,
"create_mvt", 1, 1);
947 $formquestion = array(array(
'type' =>
'other',
'name' =>
'massdate',
'label' =>
'<span class="fieldrequired">' . $langs->trans(
"Docdate") .
'</span>',
'value' => $input1));
948 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassReturnAccountBookkeepingWriting"), $langs->trans(
"ConfirmMassReturnAccountBookkeepingWritingQuestion", count($toselect)),
"returnaccountbookkeepingwriting", $formquestion,
'', 0, 200, 500, 1);
955include DOL_DOCUMENT_ROOT.
'/core/tpl/massactions_pre.tpl.php';
957$varpage = empty($contextpage) ? $_SERVER[
"PHP_SELF"] : $contextpage;
958$selectedfields = $form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage,
getDolGlobalString(
'MAIN_CHECKBOX_LEFT_COLUMN'));
959if ($massactionbutton && $contextpage !=
'poslist') {
960 $selectedfields .= $form->showCheckAddButtons(
'checkforselect', 1);
964$moreforfilter .=
'<div class="divsearchfield">';
965$moreforfilter .= $langs->trans(
'AccountingCategory').
': ';
966$moreforfilter .=
'<div class="nowrap inline-block">';
967$moreforfilter .= $formaccounting->select_accounting_category($search_account_category,
'search_account_category', 1, 0, 0, 0);
968$moreforfilter .=
'</div>';
969$moreforfilter .=
'</div>';
971$parameters = array();
972$reshook = $hookmanager->executeHooks(
'printFieldPreListTitle', $parameters, $object, $action);
973if (empty($reshook)) {
974 $moreforfilter .= $hookmanager->resPrint;
976 $moreforfilter = $hookmanager->resPrint;
979print
'<div class="liste_titre liste_titre_bydiv centpercent">';
983print
'<div class="div-table-responsive">';
984print
'<table class="tagtable liste'.($moreforfilter ?
" listwithfilterbefore" :
"").
'">';
987print
'<tr class="liste_titre_filter">';
990 print
'<td class="liste_titre center">';
991 $searchpicto = $form->showFilterButtons(
'left');
996if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
997 print
'<td class="liste_titre"><input type="text" name="search_mvt_num" size="6" value="'.dol_escape_htmltag($search_mvt_num).
'"></td>';
1000if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
1001 print
'<td class="liste_titre center">';
1002 print $formaccounting->multi_select_journal($search_ledger_code,
'search_ledger_code', 0, 1, 1, 1,
'maxwidth75');
1006if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1007 print
'<td class="liste_titre center">';
1008 print
'<div class="nowrapfordate">';
1009 print $form->selectDate($search_date_start ? $search_date_start : -1,
'search_date_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1011 print
'<div class="nowrapfordate">';
1012 print $form->selectDate($search_date_end ? $search_date_end : -1,
'search_date_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1017if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
1018 print
'<td class="liste_titre"><input type="text" name="search_doc_ref" class="width75" value="'.dol_escape_htmltag($search_doc_ref).
'"></td>';
1021if (!empty($arrayfields[
't.numero_compte'][
'checked'])) {
1022 print
'<td class="liste_titre">';
1023 print
'<div class="nowrap">';
1024 print $formaccounting->select_account($search_accountancy_code_start,
'search_accountancy_code_start', $langs->trans(
'From'), array(), 1, 1,
'maxwidth150',
'account');
1026 print
'<div class="nowrap">';
1027 print $formaccounting->select_account($search_accountancy_code_end,
'search_accountancy_code_end', $langs->trans(
'to'), array(), 1, 1,
'maxwidth150',
'account');
1032if (!empty($arrayfields[
't.subledger_account'][
'checked'])) {
1033 print
'<td class="liste_titre">';
1037 print
'<div class="nowrap">';
1039 print $formaccounting->select_auxaccount($search_accountancy_aux_code_start,
'search_accountancy_aux_code_start', $langs->trans(
'From'),
'maxwidth250',
'subledgeraccount');
1041 print
'<div class="nowrap">';
1042 print $formaccounting->select_auxaccount($search_accountancy_aux_code_end,
'search_accountancy_aux_code_end', $langs->trans(
'to'),
'maxwidth250',
'subledgeraccount');
1045 print
'<input type="text" class="maxwidth75" name="search_accountancy_aux_code" value="'.dol_escape_htmltag($search_accountancy_aux_code).
'">';
1050if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1051 print
'<td class="liste_titre">';
1052 print
'<input type="text" size="7" class="flat" name="search_mvt_label" value="'.dol_escape_htmltag($search_mvt_label).
'"/>';
1056if (!empty($arrayfields[
't.debit'][
'checked'])) {
1057 print
'<td class="liste_titre right">';
1058 print
'<input type="text" class="flat" name="search_debit" size="4" value="'.dol_escape_htmltag($search_debit).
'">';
1062if (!empty($arrayfields[
't.credit'][
'checked'])) {
1063 print
'<td class="liste_titre right">';
1064 print
'<input type="text" class="flat" name="search_credit" size="4" value="'.dol_escape_htmltag($search_credit).
'">';
1068if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1069 print
'<td class="liste_titre center">';
1070 print
'<input type="text" size="3" class="flat" name="search_lettering_code" value="'.dol_escape_htmltag($search_lettering_code).
'"/>';
1071 print
'<br><span class="nowrap"><input type="checkbox" name="search_not_reconciled" value="notreconciled"'.($search_not_reconciled ==
'notreconciled' ?
' checked' :
'').
'>'.$langs->trans(
"NotReconciled").
'</span>';
1076$parameters = array(
'arrayfields' => $arrayfields);
1077$reshook = $hookmanager->executeHooks(
'printFieldListOption', $parameters);
1078print $hookmanager->resPrint;
1081if (!empty($arrayfields[
't.date_creation'][
'checked'])) {
1082 print
'<td class="liste_titre center">';
1083 print
'<div class="nowrapfordate">';
1084 print $form->selectDate($search_date_creation_start,
'search_date_creation_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1086 print
'<div class="nowrapfordate">';
1087 print $form->selectDate($search_date_creation_end,
'search_date_creation_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1092if (!empty($arrayfields[
't.tms'][
'checked'])) {
1093 print
'<td class="liste_titre center">';
1094 print
'<div class="nowrapfordate">';
1095 print $form->selectDate($search_date_modification_start,
'search_date_modification_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1097 print
'<div class="nowrapfordate">';
1098 print $form->selectDate($search_date_modification_end,
'search_date_modification_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1103if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1104 print
'<td class="liste_titre center">';
1105 print
'<div class="nowrapfordate">';
1106 print $form->selectDate($search_date_export_start,
'search_date_export_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1108 print
'<div class="nowrapfordate">';
1109 print $form->selectDate($search_date_export_end,
'search_date_export_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1114if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1115 print
'<td class="liste_titre center">';
1116 print
'<div class="nowrapfordate">';
1117 print $form->selectDate($search_date_validation_start,
'search_date_validation_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1119 print
'<div class="nowrapfordate">';
1120 print $form->selectDate($search_date_validation_end,
'search_date_validation_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1125if (!empty($arrayfields[
't.date_lim_reglement'][
'checked'])) {
1126 print
'<td class="liste_titre center">';
1127 print
'<div class="nowrapfordate">';
1128 print $form->selectDate($search_date_due_start,
'search_date_due_start_', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1130 print
'<div class="nowrapfordate">';
1131 print $form->selectDate($search_date_due_end,
'search_date_due_end_', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1135if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1136 print
'<td class="liste_titre center">';
1137 print
'<input class="flat searchstring maxwidth50" type="text" name="search_import_key" value="'.dol_escape_htmltag($search_import_key).
'">';
1142 print
'<td class="liste_titre center">';
1143 $searchpicto = $form->showFilterButtons();
1149print
'<tr class="liste_titre">';
1151 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch actioncolumn ');
1153if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
1154 print_liste_field_titre($arrayfields[
't.piece_num'][
'label'], $_SERVER[
'PHP_SELF'],
"t.piece_num",
"", $param,
"", $sortfield, $sortorder);
1156if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
1157 print_liste_field_titre($arrayfields[
't.code_journal'][
'label'], $_SERVER[
'PHP_SELF'],
"t.code_journal",
"", $param,
'', $sortfield, $sortorder,
'center ');
1159if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1160 print_liste_field_titre($arrayfields[
't.doc_date'][
'label'], $_SERVER[
'PHP_SELF'],
"t.doc_date",
"", $param,
'', $sortfield, $sortorder,
'center ');
1162if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
1163 print_liste_field_titre($arrayfields[
't.doc_ref'][
'label'], $_SERVER[
'PHP_SELF'],
"t.doc_ref",
"", $param,
"", $sortfield, $sortorder);
1165if (!empty($arrayfields[
't.numero_compte'][
'checked'])) {
1166 print_liste_field_titre($arrayfields[
't.numero_compte'][
'label'], $_SERVER[
'PHP_SELF'],
"t.numero_compte",
"", $param,
"", $sortfield, $sortorder);
1168if (!empty($arrayfields[
't.subledger_account'][
'checked'])) {
1169 print_liste_field_titre($arrayfields[
't.subledger_account'][
'label'], $_SERVER[
'PHP_SELF'],
"t.subledger_account",
"", $param,
"", $sortfield, $sortorder);
1171if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1172 print_liste_field_titre($arrayfields[
't.label_operation'][
'label'], $_SERVER[
'PHP_SELF'],
"t.label_operation",
"", $param,
"", $sortfield, $sortorder);
1174if (!empty($arrayfields[
't.debit'][
'checked'])) {
1175 print_liste_field_titre($arrayfields[
't.debit'][
'label'], $_SERVER[
'PHP_SELF'],
"t.debit",
"", $param,
'', $sortfield, $sortorder,
'right ');
1177if (!empty($arrayfields[
't.credit'][
'checked'])) {
1178 print_liste_field_titre($arrayfields[
't.credit'][
'label'], $_SERVER[
'PHP_SELF'],
"t.credit",
"", $param,
'', $sortfield, $sortorder,
'right ');
1180if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1181 print_liste_field_titre($arrayfields[
't.lettering_code'][
'label'], $_SERVER[
'PHP_SELF'],
"t.lettering_code",
"", $param,
'', $sortfield, $sortorder,
'center ');
1184$parameters = array(
'arrayfields' => $arrayfields,
'param' => $param,
'sortfield' => $sortfield,
'sortorder' => $sortorder);
1185$reshook = $hookmanager->executeHooks(
'printFieldListTitle', $parameters);
1186print $hookmanager->resPrint;
1187if (!empty($arrayfields[
't.date_creation'][
'checked'])) {
1188 print_liste_field_titre($arrayfields[
't.date_creation'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_creation",
"", $param,
'', $sortfield, $sortorder,
'center ');
1190if (!empty($arrayfields[
't.tms'][
'checked'])) {
1191 print_liste_field_titre($arrayfields[
't.tms'][
'label'], $_SERVER[
'PHP_SELF'],
"t.tms",
"", $param,
'', $sortfield, $sortorder,
'center ');
1193if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1194 print_liste_field_titre($arrayfields[
't.date_export'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_export,t.doc_date",
"", $param,
'', $sortfield, $sortorder,
'center ');
1196if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1197 print_liste_field_titre($arrayfields[
't.date_validated'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_validated,t.doc_date",
"", $param,
'', $sortfield, $sortorder,
'center ');
1200if (!empty($arrayfields[
't.date_lim_reglement'][
'checked'])) {
1201 print_liste_field_titre($arrayfields[
't.date_lim_reglement'][
'label'], $_SERVER[
'PHP_SELF'],
't.date_lim_reglement',
'', $param,
'', $sortfield, $sortorder,
'center ');
1203if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1204 print_liste_field_titre($arrayfields[
't.import_key'][
'label'], $_SERVER[
"PHP_SELF"],
"t.import_key",
"", $param,
'', $sortfield, $sortorder,
'center ');
1207 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch ');
1223while ($i < min($num, $limit)) {
1224 $obj = $db->fetch_object($resql);
1229 $line->id = $obj->rowid;
1230 $line->doc_date = $db->jdate($obj->doc_date);
1231 $line->doc_type = $obj->doc_type;
1232 $line->doc_ref = $obj->doc_ref;
1233 $line->fk_doc = $obj->fk_doc;
1234 $line->fk_docdet = $obj->fk_docdet;
1235 $line->thirdparty_code = $obj->thirdparty_code;
1236 $line->subledger_account = $obj->subledger_account;
1237 $line->subledger_label = $obj->subledger_label;
1238 $line->numero_compte = $obj->numero_compte;
1239 $line->label_compte = $obj->label_compte;
1240 $line->label_operation = $obj->label_operation;
1241 $line->debit = $obj->debit;
1242 $line->credit = $obj->credit;
1243 $line->montant = $obj->amount;
1244 $line->amount = $obj->amount;
1245 $line->sens = $obj->sens;
1246 $line->lettering_code = $obj->lettering_code;
1247 $line->fk_user_author = $obj->fk_user_author;
1248 $line->import_key = $obj->import_key;
1249 $line->code_journal = $obj->code_journal;
1250 $line->journal_label = $obj->journal_label;
1251 $line->piece_num = $obj->piece_num;
1252 $line->ref = $obj->ref;
1253 $line->date_creation = $db->jdate($obj->date_creation);
1254 $line->date_modification = $db->jdate($obj->date_modification);
1255 $line->date_export = $db->jdate($obj->date_export);
1256 $line->date_validation = $db->jdate($obj->date_validation);
1258 $line->date_lim_reglement = $db->jdate($obj->date_lim_reglement);
1260 print
'<tr class="oddeven">';
1263 print
'<td class="nowraponall center">';
1264 if (($massactionbutton || $massaction) && $contextpage !=
'poslist') {
1266 if (in_array($line->id, $arrayofselected)) {
1269 print
'<input id="cb'.$line->id.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$line->id.
'"'.($selected ?
' checked="checked"' :
'').
' />';
1278 if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
1279 print
'<td class="nowraponall">';
1281 $object->piece_num = $line->piece_num;
1283 print
$object->getNomUrl(1,
'', 0,
'', 1);
1284 print
'<span class="hideonsmartphone">';
1285 if (!empty($line->date_export)) {
1286 print
img_picto($langs->trans(
"DateExport").
": ".
dol_print_date($line->date_export,
'dayhour').
" (".$langs->trans(
"TransactionExportDesc").
")",
'fa-file-export',
'class="paddingleft pictofixedwidth opacitymedium"');
1288 if (!empty($line->date_validation)) {
1289 print
img_picto($langs->trans(
"DateValidation").
": ".
dol_print_date($line->date_validation,
'dayhour').
" (".$langs->trans(
"TransactionBlockedLockedDesc").
")",
'fa-lock',
'class="paddingleft pictofixedwidth opacitymedium"');
1299 if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
1300 if (empty($conf->cache[
'accountingjournal'][$line->code_journal])) {
1302 $accountingjournal->fetch(0, $line->code_journal);
1303 $conf->cache[
'accountingjournal'][$line->code_journal] = $accountingjournal;
1305 $accountingjournal = $conf->cache[
'accountingjournal'][$line->code_journal];
1308 $journaltoshow = (($accountingjournal->id > 0) ? $accountingjournal->getNomUrl(0, 0, 0,
'', 0) : $line->code_journal);
1309 print
'<td class="center tdoverflowmax150">'.$journaltoshow.
'</td>';
1316 if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1317 print
'<td class="center">'.dol_print_date($line->doc_date,
'day').
'</td>';
1325 if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
1327 $objectstatic =
null;
1329 if ($line->doc_type ===
'customer_invoice') {
1330 $langs->loadLangs(array(
'bills'));
1332 require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
1333 $objectstatic =
new Facture($db);
1334 $objectstatic->fetch($line->fk_doc);
1339 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.$objectstatic->id;
1340 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir);
1341 } elseif ($line->doc_type ===
'supplier_invoice') {
1342 $langs->loadLangs(array(
'bills'));
1344 require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.facture.class.php';
1346 $objectstatic->fetch($line->fk_doc);
1348 $modulepart =
'invoice_supplier';
1353 $filedir =
getMultidirOutput($objectstatic,
'', 1).dol_sanitizeFileName($line->doc_ref);
1354 $subdir =
getMultidirOutput($objectstatic,
'', 1,
'outputrel').dol_sanitizeFileName($line->doc_ref);
1357 if ($objectstatic->id > 0) {
1358 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $subdir, $filedir);
1360 $documentlink = $line->doc_ref;
1362 } elseif ($line->doc_type ===
'expense_report') {
1363 $langs->loadLangs(array(
'trips'));
1365 require_once DOL_DOCUMENT_ROOT.
'/expensereport/class/expensereport.class.php';
1367 $objectstatic->fetch($line->fk_doc);
1372 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.$objectstatic->id;
1373 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir);
1374 } elseif ($line->doc_type ===
'bank') {
1375 require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
1377 $objectstatic->fetch($line->fk_doc);
1383 $labeltoshowalt =
'';
1384 $classforlabel =
'';
1385 if (($line->doc_type ===
'customer_invoice' || $line->doc_type ===
'supplier_invoice' || $line->doc_type ===
'expense_report') && is_object($objectstatic)) {
1386 $labeltoshow .= $objectstatic->getNomUrl(1,
'', 0, 0,
'', 0, -1, 1);
1387 $labeltoshow .= $documentlink;
1388 $labeltoshowalt .= $objectstatic->ref;
1389 } elseif ($line->doc_type ===
'bank' && is_object($objectstatic)) {
1390 $labeltoshow .= $objectstatic->getNomUrl(1);
1391 $labeltoshowalt .= $objectstatic->ref;
1392 $bank_ref = strstr($line->doc_ref,
'-');
1393 $labeltoshow .=
" " . $bank_ref;
1394 $labeltoshowalt .=
" " . $bank_ref;
1396 $labeltoshow .= $line->doc_ref;
1397 $labeltoshowalt .= $line->doc_ref;
1398 $classforlabel =
'tdoverflowmax250';
1401 print
'<td class="nowraponall'.($classforlabel ?
' '.$classforlabel :
'').
'" title="'.
dol_escape_htmltag($labeltoshowalt).
'">';
1410 if (!empty($arrayfields[
't.numero_compte'][
'checked'])) {
1411 print
'<td>'.length_accountg($line->numero_compte).
'</td>';
1418 if (!empty($arrayfields[
't.subledger_account'][
'checked'])) {
1419 print
'<td>'.length_accounta($line->subledger_account).
'</td>';
1426 if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1427 print
'<td class="small tdoverflowmax200" title="'.dol_escape_htmltag($line->label_operation).
'">'.
dol_escape_htmltag($line->label_operation).
'</td>';
1434 if (!empty($arrayfields[
't.debit'][
'checked'])) {
1435 print
'<td class="right nowraponall amount">'.($line->debit != 0 ?
price($line->debit) :
'').
'</td>';
1446 if (!empty($arrayfields[
't.credit'][
'checked'])) {
1447 print
'<td class="right nowraponall amount">'.($line->credit != 0 ?
price($line->credit) :
'').
'</td>';
1454 $totalarray[
'val'][
'totalcredit'] += $line->credit;
1458 if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1459 print
'<td class="center">'.$line->lettering_code.
'</td>';
1466 $parameters = array(
'arrayfields' => $arrayfields,
'obj' => $obj,
'i' => $i,
'totalarray' => &$totalarray);
1467 $reshook = $hookmanager->executeHooks(
'printFieldListValue', $parameters);
1468 print $hookmanager->resPrint;
1471 if (!empty($arrayfields[
't.date_creation'][
'checked'])) {
1472 print
'<td class="center">'.dol_print_date($line->date_creation,
'dayhour',
'tzuserrel').
'</td>';
1479 if (!empty($arrayfields[
't.tms'][
'checked'])) {
1480 print
'<td class="center">'.dol_print_date($line->date_modification,
'dayhour',
'tzuserrel').
'</td>';
1487 if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1488 print
'<td class="center nowraponall">'.dol_print_date($line->date_export,
'dayhour',
'tzuserrel').
'</td>';
1495 if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1496 print
'<td class="center nowraponall">'.dol_print_date($line->date_validation,
'dayhour',
'tzuserrel').
'</td>';
1503 if (!empty($arrayfields[
't.date_lim_reglement'][
'checked'])) {
1504 print
'<td class="center">'.dol_print_date($line->date_lim_reglement,
'day').
'</td>';
1510 if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1511 print
'<td class="tdoverflowmax125" title="'.dol_escape_htmltag($obj->import_key).
'">'.
dol_escape_htmltag($obj->import_key).
"</td>\n";
1519 print
'<td class="nowraponall center">';
1520 if (($massactionbutton || $massaction) && $contextpage !=
'poslist') {
1522 if (in_array($line->id, $arrayofselected)) {
1525 print
'<input id="cb'.$line->id.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$line->id.
'"'.($selected ?
' checked="checked"' :
'').
' />';
1540include DOL_DOCUMENT_ROOT.
'/core/tpl/list_print_total.tpl.php';
1545 foreach ($arrayfields as $key => $val) {
1546 if (!empty($val[
'checked'])) {
1550 print
'<tr><td colspan="'.$colspan.
'"><span class="opacitymedium">'.$langs->trans(
"NoRecordFound").
'</span></td></tr>';
1553$parameters = array(
'arrayfields' => $arrayfields,
'sql' => $sql);
1554$reshook = $hookmanager->executeHooks(
'printFieldListFooter', $parameters, $object, $action);
1555print $hookmanager->resPrint;
if(! $sortfield) if(! $sortorder) $object
llxFooter($comment='', $zone='private', $disabledoutputofmessages=0)
Empty footer.
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader($head='', $title='', $help_url='', $target='', $disablejs=0, $disablehead=0, $arrayofjs='', $arrayofcss='', $morequerystring='', $morecssonbody='', $replacemainareaby='', $disablenofollow=0, $disablenoindex=0)
Empty header.
Class to manage bank transaction lines.
Class to manage categories of an accounting account.
Class to manage accounting journals.
Class to manage Ledger (General Ledger and Subledger)
Class to manage Trips and Expenses.
Class to manage suppliers invoices.
Class to manage invoices.
Class to build sending documents with model Espadon.
dol_get_last_day($year, $month=12, $gm=false)
Return GMT time for last day of a month or year.
dol_now($mode='gmt')
Return date for now.
dol_mktime($hour, $minute, $second, $month, $day, $year, $gm='auto', $check=1)
Return a timestamp date built from detailed information (by default a local PHP server timestamp) Rep...
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0, $attop=0)
Set event messages in dol_events session object.
GETPOSTDATE($prefix, $hourTime='', $gm='auto', $saverestore='')
Helper function that combines values of a dolibarr DatePicker (such as Form\selectDate) for year,...
print_liste_field_titre($name, $file="", $field="", $begin="", $param="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $tooltip="", $forcenowrapcolumntitle=0)
Show title line of an array.
print_barre_liste($title, $page, $file, $options='', $sortfield='', $sortorder='', $morehtmlcenter='', $num=-1, $totalnboflines='', $picto='generic', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limit=-1, $selectlimitsuffix=0, $hidenavigation=0, $pagenavastextinput=0, $morehtmlrightbeforearrow='')
Print a title with navigation controls for pagination.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2, $allowothertags=array())
Show picto whatever it's its name (generic function)
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
dolGetButtonTitle($label, $helpText='', $iconClass='fa fa-file', $url='', $id='', $status=1, $params=array())
Function dolGetButtonTitle : this kind of buttons are used in title in list.
setEventMessage($mesgs, $style='mesgs', $noduplicate=0, $attop=0)
Set event message in dol_events session object.
dol_sanitizeFileName($str, $newstr='_', $unaccent=1, $includequotes=0, $allowdash=0)
Clean a string to use it as a file name.
price($amount, $form=0, $outlangs='', $trunc=1, $rounding=-1, $forcerounding=-1, $currency_code='')
Function to format a value into an amount for visual output Function used into PDF and HTML pages.
natural_search($fields, $value, $mode=0, $nofirstand=0, $sqltoadd='')
Generate natural SQL search string for a criteria (this criteria can be tested on one or several fiel...
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
dolGetButtonTitleSeparator($moreClass="")
Add space between dolGetButtonTitle.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
if(!function_exists( 'utf8_encode')) if(!function_exists('utf8_decode')) if(!function_exists( 'str_starts_with')) if(!function_exists('str_ends_with')) if(!function_exists( 'str_contains')) getMultidirOutput($object, $module='', $forobject=0, $mode='output')
Return the full path of the directory where a module (or an object of a module) stores its files.
dol_print_date($time, $format='', $tzoutput='auto', $outputlangs=null, $encodetooutput=false, $decorate=0)
Output date in a string format according to outputlangs (or langs if not defined).
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
isModEnabled($module)
Is Dolibarr module enabled.
dol_getdate($timestamp, $fast=false, $forcetimezone='')
Return an array with locale date info.
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $noescapetags='', $escapeonlyhtmltags=0, $cleanalsojavascript=0)
Returns text escaped for inclusion in HTML alt or title or value tags, or into values of HTML input f...
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.