32require
'../../main.inc.php';
33require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formaccounting.class.php';
34require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formfile.class.php';
35require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formother.class.php';
36require_once DOL_DOCUMENT_ROOT.
'/core/lib/accounting.lib.php';
37require_once DOL_DOCUMENT_ROOT.
'/core/lib/admin.lib.php';
38require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
39require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountingjournal.class.php';
40require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/bookkeeping.class.php';
41require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/lettering.class.php';
44$langs->loadLangs(array(
"accountancy",
"compta"));
50$action =
GETPOST(
'action',
'aZ09');
51$massaction =
GETPOST(
'massaction',
'alpha');
52$confirm =
GETPOST(
'confirm',
'alpha');
53$toselect =
GETPOST(
'toselect',
'array');
54$contextpage =
GETPOST(
'contextpage',
'aZ') ?
GETPOST(
'contextpage',
'aZ') :
'bookkeepinglist';
57$search_mvt_num =
GETPOST(
'search_mvt_num',
'alpha');
58$search_doc_type =
GETPOST(
"search_doc_type",
'alpha');
59$search_doc_ref =
GETPOST(
"search_doc_ref",
'alpha');
60$search_date_startyear =
GETPOSTINT(
'search_date_startyear');
61$search_date_startmonth =
GETPOSTINT(
'search_date_startmonth');
62$search_date_startday =
GETPOSTINT(
'search_date_startday');
63$search_date_endyear =
GETPOSTINT(
'search_date_endyear');
64$search_date_endmonth =
GETPOSTINT(
'search_date_endmonth');
65$search_date_endday =
GETPOSTINT(
'search_date_endday');
66$search_date_start =
dol_mktime(0, 0, 0, $search_date_startmonth, $search_date_startday, $search_date_startyear);
67$search_date_end =
dol_mktime(23, 59, 59, $search_date_endmonth, $search_date_endday, $search_date_endyear);
69$search_date_creation_startyear =
GETPOSTINT(
'search_date_creation_startyear');
70$search_date_creation_startmonth =
GETPOSTINT(
'search_date_creation_startmonth');
71$search_date_creation_startday =
GETPOSTINT(
'search_date_creation_startday');
72$search_date_creation_endyear =
GETPOSTINT(
'search_date_creation_endyear');
73$search_date_creation_endmonth =
GETPOSTINT(
'search_date_creation_endmonth');
74$search_date_creation_endday =
GETPOSTINT(
'search_date_creation_endday');
75$search_date_creation_start =
dol_mktime(0, 0, 0, $search_date_creation_startmonth, $search_date_creation_startday, $search_date_creation_startyear);
76$search_date_creation_end =
dol_mktime(23, 59, 59, $search_date_creation_endmonth, $search_date_creation_endday, $search_date_creation_endyear);
77$search_date_modification_startyear =
GETPOSTINT(
'search_date_modification_startyear');
78$search_date_modification_startmonth =
GETPOSTINT(
'search_date_modification_startmonth');
79$search_date_modification_startday =
GETPOSTINT(
'search_date_modification_startday');
80$search_date_modification_endyear =
GETPOSTINT(
'search_date_modification_endyear');
81$search_date_modification_endmonth =
GETPOSTINT(
'search_date_modification_endmonth');
82$search_date_modification_endday =
GETPOSTINT(
'search_date_modification_endday');
83$search_date_modification_start =
dol_mktime(0, 0, 0, $search_date_modification_startmonth, $search_date_modification_startday, $search_date_modification_startyear);
84$search_date_modification_end =
dol_mktime(23, 59, 59, $search_date_modification_endmonth, $search_date_modification_endday, $search_date_modification_endyear);
85$search_date_export_startyear =
GETPOSTINT(
'search_date_export_startyear');
86$search_date_export_startmonth =
GETPOSTINT(
'search_date_export_startmonth');
87$search_date_export_startday =
GETPOSTINT(
'search_date_export_startday');
88$search_date_export_endyear =
GETPOSTINT(
'search_date_export_endyear');
89$search_date_export_endmonth =
GETPOSTINT(
'search_date_export_endmonth');
90$search_date_export_endday =
GETPOSTINT(
'search_date_export_endday');
91$search_date_export_start =
dol_mktime(0, 0, 0, $search_date_export_startmonth, $search_date_export_startday, $search_date_export_startyear);
92$search_date_export_end =
dol_mktime(23, 59, 59, $search_date_export_endmonth, $search_date_export_endday, $search_date_export_endyear);
93$search_date_validation_startyear =
GETPOSTINT(
'search_date_validation_startyear');
94$search_date_validation_startmonth =
GETPOSTINT(
'search_date_validation_startmonth');
95$search_date_validation_startday =
GETPOSTINT(
'search_date_validation_startday');
96$search_date_validation_endyear =
GETPOSTINT(
'search_date_validation_endyear');
97$search_date_validation_endmonth =
GETPOSTINT(
'search_date_validation_endmonth');
98$search_date_validation_endday =
GETPOSTINT(
'search_date_validation_endday');
99$search_date_validation_start =
dol_mktime(0, 0, 0, $search_date_validation_startmonth, $search_date_validation_startday, $search_date_validation_startyear);
100$search_date_validation_end =
dol_mktime(23, 59, 59, $search_date_validation_endmonth, $search_date_validation_endday, $search_date_validation_endyear);
102$search_date_due_start_day =
GETPOSTINT(
'search_date_due_start_day');
103$search_date_due_start_month =
GETPOSTINT(
'search_date_due_start_month');
104$search_date_due_start_year =
GETPOSTINT(
'search_date_due_start_year');
105$search_date_due_start =
dol_mktime(0, 0, 0, $search_date_due_start_month, $search_date_due_start_day, $search_date_due_start_year);
107$search_date_due_end_day =
GETPOSTINT(
'search_date_due_end_day');
108$search_date_due_end_month =
GETPOSTINT(
'search_date_due_end_month');
109$search_date_due_end_year =
GETPOSTINT(
'search_date_due_end_year');
110$search_date_due_end =
dol_mktime(23, 59, 59, $search_date_due_end_month, $search_date_due_end_day, $search_date_due_end_year);
111$search_import_key =
GETPOST(
"search_import_key",
'alpha');
113$search_account_category =
GETPOSTINT(
'search_account_category');
115$search_accountancy_code =
GETPOST(
"search_accountancy_code",
'alpha');
116$search_accountancy_code_start =
GETPOST(
'search_accountancy_code_start',
'alpha');
117if ($search_accountancy_code_start == - 1) {
118 $search_accountancy_code_start =
'';
120$search_accountancy_code_end =
GETPOST(
'search_accountancy_code_end',
'alpha');
121if ($search_accountancy_code_end == - 1) {
122 $search_accountancy_code_end =
'';
125$search_accountancy_aux_code =
GETPOST(
"search_accountancy_aux_code",
'alpha');
126$search_accountancy_aux_code_start =
GETPOST(
'search_accountancy_aux_code_start',
'alpha');
127if ($search_accountancy_aux_code_start == - 1) {
128 $search_accountancy_aux_code_start =
'';
130$search_accountancy_aux_code_end =
GETPOST(
'search_accountancy_aux_code_end',
'alpha');
131if ($search_accountancy_aux_code_end == - 1) {
132 $search_accountancy_aux_code_end =
'';
134$search_mvt_label =
GETPOST(
'search_mvt_label',
'alpha');
135$search_direction =
GETPOST(
'search_direction',
'alpha');
136$search_debit =
GETPOST(
'search_debit',
'alpha');
137$search_credit =
GETPOST(
'search_credit',
'alpha');
138$search_ledger_code =
GETPOST(
'search_ledger_code',
'array');
139$search_lettering_code =
GETPOST(
'search_lettering_code',
'alpha');
140$search_not_reconciled =
GETPOST(
'search_not_reconciled',
'alpha');
144$sortfield =
GETPOST(
'sortfield',
'aZ09comma');
145$sortorder =
GETPOST(
'sortorder',
'aZ09comma');
146$optioncss =
GETPOST(
'optioncss',
'alpha');
148if (empty($page) || $page < 0) {
151$offset = $limit * $page;
152$pageprev = $page - 1;
153$pagenext = $page + 1;
154if ($sortorder ==
"") {
157if ($sortfield ==
"") {
158 $sortfield =
"t.piece_num,t.rowid";
163$hookmanager->initHooks(array(
'bookkeepinglist'));
166$form =
new Form($db);
168if (!in_array($action, array(
'delmouv',
'delmouvconfirm')) && !GETPOSTISSET(
'begin') && !GETPOSTISSET(
'formfilteraction') &&
GETPOST(
'page',
'alpha') ==
'' && !
GETPOSTINT(
'noreset') && $user->hasRight(
'accounting',
'mouvements',
'export')) {
169 if (empty($search_date_start) && empty($search_date_end) && !GETPOSTISSET(
'restore_lastsearch_values') && !
GETPOST(
'search_accountancy_code_start')) {
170 $query =
"SELECT date_start, date_end from ".MAIN_DB_PREFIX.
"accounting_fiscalyear ";
171 $query .=
" where date_start < '".$db->idate(
dol_now()).
"' and date_end > '".$db->idate(
dol_now()).
"' limit 1";
172 $res = $db->query($query);
174 if ($db->num_rows($res) > 0) {
175 $fiscalYear = $db->fetch_object($res);
176 $search_date_start = strtotime($fiscalYear->date_start);
177 $search_date_end = strtotime($fiscalYear->date_end);
184 $year_end = $year_start + 1;
185 $month_end = $month_start - 1;
186 if ($month_end < 1) {
190 $search_date_start =
dol_mktime(0, 0, 0, $month_start, 1, $year_start);
198 't.piece_num' => array(
'label' => $langs->trans(
"TransactionNumShort"),
'checked' => 1),
199 't.code_journal' => array(
'label' => $langs->trans(
"Codejournal"),
'checked' => 1),
200 't.doc_date' => array(
'label' => $langs->trans(
"Docdate"),
'checked' => 1),
201 't.doc_ref' => array(
'label' => $langs->trans(
"Piece"),
'checked' => 1),
202 't.numero_compte' => array(
'label' => $langs->trans(
"AccountAccountingShort"),
'checked' => 1),
203 't.subledger_account' => array(
'label' => $langs->trans(
"SubledgerAccount"),
'checked' => 1),
204 't.label_operation' => array(
'label' => $langs->trans(
"Label"),
'checked' => 1),
205 't.debit' => array(
'label' => $langs->trans(
"AccountingDebit"),
'checked' => 1),
206 't.credit' => array(
'label' => $langs->trans(
"AccountingCredit"),
'checked' => 1),
207 't.lettering_code' => array(
'label' => $langs->trans(
"LetteringCode"),
'checked' => 1),
208 't.date_creation' => array(
'label' => $langs->trans(
"DateCreation"),
'checked' => 0),
209 't.tms' => array(
'label' => $langs->trans(
"DateModification"),
'checked' => 0),
210 't.date_export' => array(
'label' => $langs->trans(
"DateExport"),
'checked' => 0),
211 't.date_validated' => array(
'label' => $langs->trans(
"DateValidationAndLock"),
'checked' => 0,
'enabled' => !
getDolGlobalString(
"ACCOUNTANCY_DISABLE_CLOSURE_LINE_BY_LINE")),
212 't.date_lim_reglement' => array(
'label' => $langs->trans(
"DateDue"),
'checked' => 0),
213 't.import_key' => array(
'label' => $langs->trans(
"ImportId"),
'checked' => 0,
'position' => 1100),
217 unset($arrayfields[
't.lettering_code']);
222if (!isModEnabled(
'accounting')) {
225if ($user->socid > 0) {
228if (!$user->hasRight(
'accounting',
'mouvements',
'lire')) {
232$permissiontoadd = $user->hasRight(
'accounting',
'mouvements',
'creer');
241if (
GETPOST(
'cancel',
'alpha')) {
245if (!
GETPOST(
'confirmmassaction',
'alpha') && $massaction !=
'preunletteringauto' && $massaction !=
'preunletteringmanual' && $massaction !=
'predeletebookkeepingwriting') {
249$parameters = array(
'socid' => $socid);
250$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
255if (empty($reshook)) {
256 include DOL_DOCUMENT_ROOT.
'/core/actions_changeselectedfields.inc.php';
258 if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
259 $search_mvt_num =
'';
260 $search_doc_type =
'';
261 $search_doc_ref =
'';
262 $search_doc_date =
'';
263 $search_account_category =
'';
264 $search_accountancy_code =
'';
265 $search_accountancy_code_start =
'';
266 $search_accountancy_code_end =
'';
267 $search_accountancy_aux_code =
'';
268 $search_accountancy_aux_code_start =
'';
269 $search_accountancy_aux_code_end =
'';
270 $search_mvt_label =
'';
271 $search_direction =
'';
272 $search_ledger_code = array();
273 $search_date_startyear =
'';
274 $search_date_startmonth =
'';
275 $search_date_startday =
'';
276 $search_date_endyear =
'';
277 $search_date_endmonth =
'';
278 $search_date_endday =
'';
279 $search_date_start =
'';
280 $search_date_end =
'';
281 $search_date_creation_startyear =
'';
282 $search_date_creation_startmonth =
'';
283 $search_date_creation_startday =
'';
284 $search_date_creation_endyear =
'';
285 $search_date_creation_endmonth =
'';
286 $search_date_creation_endday =
'';
287 $search_date_creation_start =
'';
288 $search_date_creation_end =
'';
289 $search_date_modification_startyear =
'';
290 $search_date_modification_startmonth =
'';
291 $search_date_modification_startday =
'';
292 $search_date_modification_endyear =
'';
293 $search_date_modification_endmonth =
'';
294 $search_date_modification_endday =
'';
295 $search_date_modification_start =
'';
296 $search_date_modification_end =
'';
297 $search_date_export_startyear =
'';
298 $search_date_export_startmonth =
'';
299 $search_date_export_startday =
'';
300 $search_date_export_endyear =
'';
301 $search_date_export_endmonth =
'';
302 $search_date_export_endday =
'';
303 $search_date_export_start =
'';
304 $search_date_export_end =
'';
305 $search_date_validation_startyear =
'';
306 $search_date_validation_startmonth =
'';
307 $search_date_validation_startday =
'';
308 $search_date_validation_endyear =
'';
309 $search_date_validation_endmonth =
'';
310 $search_date_validation_endday =
'';
311 $search_date_validation_start =
'';
312 $search_date_validation_end =
'';
314 $search_date_due_start_day =
'';
315 $search_date_due_start_month =
'';
316 $search_date_due_start_year =
'';
317 $search_date_due_start =
'';
319 $search_date_due_end_day =
'';
320 $search_date_due_end_month =
'';
321 $search_date_due_end_year =
'';
322 $search_date_due_end =
'';
325 $search_lettering_code =
'';
326 $search_not_reconciled =
'';
327 $search_import_key =
'';
333 if (!empty($search_date_start)) {
334 $filter[
't.doc_date>='] = $search_date_start;
336 $param .=
'&search_date_startmonth='.((int) $tmp[
'mon']).
'&search_date_startday='.((int) $tmp[
'mday']).
'&search_date_startyear='.((int) $tmp[
'year']);
338 if (!empty($search_date_end)) {
339 $filter[
't.doc_date<='] = $search_date_end;
341 $param .=
'&search_date_endmonth='.((int) $tmp[
'mon']).
'&search_date_endday='.((int) $tmp[
'mday']).
'&search_date_endyear='.((int) $tmp[
'year']);
343 if (!empty($search_doc_date)) {
344 $filter[
't.doc_date'] = $search_doc_date;
346 $param .=
'&doc_datemonth='.((int) $tmp[
'mon']).
'&doc_dateday='.((int) $tmp[
'mday']).
'&doc_dateyear='.((int) $tmp[
'year']);
348 if (!empty($search_doc_type)) {
349 $filter[
't.doc_type'] = $search_doc_type;
350 $param .=
'&search_doc_type='.urlencode($search_doc_type);
352 if (!empty($search_doc_ref)) {
353 $filter[
't.doc_ref'] = $search_doc_ref;
354 $param .=
'&search_doc_ref='.urlencode($search_doc_ref);
356 if ($search_account_category !=
'-1' && !empty($search_account_category)) {
357 require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountancycategory.class.php';
360 $listofaccountsforgroup = $accountingcategory->getCptsCat(0,
'fk_accounting_category = '.((
int) $search_account_category));
361 $listofaccountsforgroup2 = array();
362 if (is_array($listofaccountsforgroup)) {
363 foreach ($listofaccountsforgroup as $tmpval) {
364 $listofaccountsforgroup2[] =
"'".$db->escape($tmpval[
'id']).
"'";
367 $filter[
't.search_accounting_code_in'] = implode(
',', $listofaccountsforgroup2);
368 $param .=
'&search_account_category='.urlencode((
string) ($search_account_category));
370 if (!empty($search_accountancy_code)) {
371 $filter[
't.numero_compte'] = $search_accountancy_code;
372 $param .=
'&search_accountancy_code='.urlencode($search_accountancy_code);
374 if (!empty($search_accountancy_code_start)) {
375 $filter[
't.numero_compte>='] = $search_accountancy_code_start;
376 $param .=
'&search_accountancy_code_start='.urlencode($search_accountancy_code_start);
378 if (!empty($search_accountancy_code_end)) {
379 $filter[
't.numero_compte<='] = $search_accountancy_code_end;
380 $param .=
'&search_accountancy_code_end='.urlencode($search_accountancy_code_end);
382 if (!empty($search_accountancy_aux_code)) {
383 $filter[
't.subledger_account'] = $search_accountancy_aux_code;
384 $param .=
'&search_accountancy_aux_code='.urlencode($search_accountancy_aux_code);
386 if (!empty($search_accountancy_aux_code_start)) {
387 $filter[
't.subledger_account>='] = $search_accountancy_aux_code_start;
388 $param .=
'&search_accountancy_aux_code_start='.urlencode($search_accountancy_aux_code_start);
390 if (!empty($search_accountancy_aux_code_end)) {
391 $filter[
't.subledger_account<='] = $search_accountancy_aux_code_end;
392 $param .=
'&search_accountancy_aux_code_end='.urlencode($search_accountancy_aux_code_end);
394 if (!empty($search_mvt_label)) {
395 $filter[
't.label_operation'] = $search_mvt_label;
396 $param .=
'&search_mvt_label='.urlencode($search_mvt_label);
398 if (!empty($search_direction)) {
399 $filter[
't.sens'] = $search_direction;
400 $param .=
'&search_direction='.urlencode($search_direction);
402 if (!empty($search_ledger_code)) {
403 $filter[
't.code_journal'] = $search_ledger_code;
404 foreach ($search_ledger_code as $code) {
405 $param .=
'&search_ledger_code[]='.urlencode($code);
408 if (!empty($search_mvt_num)) {
409 $filter[
't.piece_num'] = $search_mvt_num;
410 $param .=
'&search_mvt_num='.urlencode((
string) ($search_mvt_num));
412 if (!empty($search_date_creation_start)) {
413 $filter[
't.date_creation>='] = $search_date_creation_start;
415 $param .=
'&search_date_creation_startmonth='.((int) $tmp[
'mon']).
'&search_date_creation_startday='.((int) $tmp[
'mday']).
'&search_date_creation_startyear='.((int) $tmp[
'year']);
417 if (!empty($search_date_creation_end)) {
418 $filter[
't.date_creation<='] = $search_date_creation_end;
420 $param .=
'&search_date_creation_endmonth='.((int) $tmp[
'mon']).
'&search_date_creation_endday='.((int) $tmp[
'mday']).
'&search_date_creation_endyear='.((int) $tmp[
'year']);
422 if (!empty($search_date_modification_start)) {
423 $filter[
't.tms>='] = $search_date_modification_start;
424 $tmp =
dol_getdate($search_date_modification_start);
425 $param .=
'&search_date_modification_startmonth='.((int) $tmp[
'mon']).
'&search_date_modification_startday='.((int) $tmp[
'mday']).
'&search_date_modification_startyear='.((int) $tmp[
'year']);
427 if (!empty($search_date_modification_end)) {
428 $filter[
't.tms<='] = $search_date_modification_end;
430 $param .=
'&search_date_modification_endmonth='.((int) $tmp[
'mon']).
'&search_date_modification_endday='.((int) $tmp[
'mday']).
'&search_date_modification_endyear='.((int) $tmp[
'year']);
432 if (!empty($search_date_export_start)) {
433 $filter[
't.date_export>='] = $search_date_export_start;
435 $param .=
'&search_date_export_startmonth='.((int) $tmp[
'mon']).
'&search_date_export_startday='.((int) $tmp[
'mday']).
'&search_date_export_startyear='.((int) $tmp[
'year']);
437 if (!empty($search_date_export_end)) {
438 $filter[
't.date_export<='] = $search_date_export_end;
440 $param .=
'&search_date_export_endmonth='.((int) $tmp[
'mon']).
'&search_date_export_endday='.((int) $tmp[
'mday']).
'&search_date_export_endyear='.((int) $tmp[
'year']);
442 if (!empty($search_date_validation_start)) {
443 $filter[
't.date_validated>='] = $search_date_validation_start;
445 $param .=
'&search_date_validation_startmonth='.((int) $tmp[
'mon']).
'&search_date_validation_startday='.((int) $tmp[
'mday']).
'&search_date_validation_startyear='.((int) $tmp[
'year']);
447 if (!empty($search_date_validation_end)) {
448 $filter[
't.date_validated<='] = $search_date_validation_end;
450 $param .=
'&search_date_validation_endmonth='.((int) $tmp[
'mon']).
'&search_date_validation_endday='.((int) $tmp[
'mday']).
'&search_date_validation_endyear='.((int) $tmp[
'year']);
453 if (!empty($search_date_due_start)) {
454 $filter[
't.date_lim_reglement>='] = $search_date_due_start;
455 $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;
458 if (!empty($search_date_due_end)) {
459 $filter[
't.date_lim_reglement<='] = $search_date_due_end;
460 $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;
462 if (!empty($search_debit)) {
463 $filter[
't.debit'] = $search_debit;
464 $param .=
'&search_debit='.urlencode($search_debit);
466 if (!empty($search_credit)) {
467 $filter[
't.credit'] = $search_credit;
468 $param .=
'&search_credit='.urlencode($search_credit);
470 if (!empty($search_lettering_code)) {
471 $filter[
't.lettering_code'] = $search_lettering_code;
472 $param .=
'&search_lettering_code='.urlencode($search_lettering_code);
474 if (!empty($search_not_reconciled)) {
475 $filter[
't.reconciled_option'] = $search_not_reconciled;
476 $param .=
'&search_not_reconciled='.urlencode($search_not_reconciled);
478 if (!empty($search_import_key)) {
479 $filter[
't.import_key'] = $search_import_key;
480 $param .=
'&search_import_key='.urlencode($search_import_key);
484 $objectclass =
'Bookkeeping';
485 $objectlabel =
'Bookkeeping';
486 $permissiontoread = $user->hasRight(
'societe',
'lire');
487 $permissiontodelete = $user->hasRight(
'societe',
'supprimer');
488 $permissiontoadd = $user->hasRight(
'societe',
'creer');
489 $uploaddir = $conf->societe->dir_output;
490 include DOL_DOCUMENT_ROOT.
'/core/actions_massactions.inc.php';
492 if (!$error && $action ==
'deletebookkeepingwriting' && $confirm ==
"yes" && $user->hasRight(
'accounting',
'mouvements',
'supprimer')) {
497 $nb_lettering = $lettering->bookkeepingLetteringAll($toselect,
true);
498 if ($nb_lettering < 0) {
507 foreach ($toselect as $toselectid) {
508 $result =
$object->fetch($toselectid);
509 if ($result > 0 && (!isset(
$object->date_validation) ||
$object->date_validation ===
'')) {
518 } elseif ($result < 0) {
522 } elseif (isset(
$object->date_validation) &&
$object->date_validation !=
'') {
523 setEventMessages($langs->trans(
"ValidatedRecordWhereFound"),
null,
'errors');
536 } elseif ($nbok > 0) {
542 header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?noreset=1".($param ?
'&'.$param :
''));
551 if ($massaction ==
'letteringauto' && $permissiontoadd) {
553 $nb_lettering = $lettering->bookkeepingLetteringAll($toselect);
554 if ($nb_lettering < 0) {
557 $nb_lettering = max(0, abs($nb_lettering) - 2);
558 } elseif ($nb_lettering == 0) {
560 setEventMessages($langs->trans(
'AccountancyNoLetteringModified'), array(),
'mesgs');
562 if ($nb_lettering == 1) {
563 setEventMessages($langs->trans(
'AccountancyOneLetteringModifiedSuccessfully'), array(),
'mesgs');
564 } elseif ($nb_lettering > 1) {
565 setEventMessages($langs->trans(
'AccountancyLetteringModifiedSuccessfully', $nb_lettering), array(),
'mesgs');
569 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
572 } elseif ($massaction ==
'letteringmanual' && $permissiontoadd) {
574 $result = $lettering->updateLettering($toselect);
578 setEventMessages($langs->trans(
'AccountancyOneLetteringModifiedSuccessfully'), array(),
'mesgs');
579 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
582 } elseif ($action ==
'unletteringauto' && $confirm ==
"yes" && $permissiontoadd) {
584 $nb_lettering = $lettering->bookkeepingLetteringAll($toselect,
true);
585 if ($nb_lettering < 0) {
588 $nb_lettering = max(0, abs($nb_lettering) - 2);
589 } elseif ($nb_lettering == 0) {
591 setEventMessages($langs->trans(
'AccountancyNoUnletteringModified'), array(),
'mesgs');
593 if ($nb_lettering == 1) {
594 setEventMessages($langs->trans(
'AccountancyOneUnletteringModifiedSuccessfully'), array(),
'mesgs');
595 } elseif ($nb_lettering > 1) {
596 setEventMessages($langs->trans(
'AccountancyUnletteringModifiedSuccessfully', $nb_lettering), array(),
'mesgs');
600 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
603 } elseif ($action ==
'unletteringmanual' && $confirm ==
"yes" && $permissiontoadd) {
605 $nb_lettering = $lettering->deleteLettering($toselect);
606 if ($nb_lettering < 0) {
609 setEventMessages($langs->trans(
'AccountancyOneUnletteringModifiedSuccessfully'), array(),
'mesgs');
610 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
623$sql .=
" t.doc_date,";
624$sql .=
" t.doc_type,";
625$sql .=
" t.doc_ref,";
627$sql .=
" t.fk_docdet,";
628$sql .=
" t.thirdparty_code,";
629$sql .=
" t.subledger_account,";
630$sql .=
" t.subledger_label,";
631$sql .=
" t.numero_compte,";
632$sql .=
" t.label_compte,";
633$sql .=
" t.label_operation,";
636$sql .=
" t.lettering_code,";
637$sql .=
" t.montant as amount,";
639$sql .=
" t.fk_user_author,";
640$sql .=
" t.import_key,";
641$sql .=
" t.code_journal,";
642$sql .=
" t.journal_label,";
643$sql .=
" t.piece_num,";
644$sql .=
" t.date_creation,";
645$sql .=
" t.tms as date_modification,";
646$sql .=
" t.date_export,";
647$sql .=
" t.date_validated as date_validation,";
648$sql .=
" t.date_lim_reglement,";
649$sql .=
" t.import_key";
653$sql .=
' FROM '.MAIN_DB_PREFIX.$object->table_element.
' as t';
656if (count($filter) > 0) {
657 foreach ($filter as $key => $value) {
658 if ($key ==
't.doc_date') {
659 $sqlwhere[] = $db->sanitize($key).
" = '".$db->idate($value).
"'";
660 } elseif ($key ==
't.doc_date>=') {
661 $sqlwhere[] =
"t.doc_date >= '".$db->idate($value).
"'";
662 } elseif ($key ==
't.doc_date<=') {
663 $sqlwhere[] =
"t.doc_date <= '".$db->idate($value).
"'";
664 } elseif ($key ==
't.doc_date>') {
665 $sqlwhere[] =
"t.doc_date > '".$db->idate($value).
"'";
666 } elseif ($key ==
't.doc_date<') {
667 $sqlwhere[] =
"t.doc_date < '".$db->idate($value).
"'";
668 } elseif ($key ==
't.numero_compte>=') {
669 $sqlwhere[] =
"t.numero_compte >= '".$db->escape($value).
"'";
670 } elseif ($key ==
't.numero_compte<=') {
671 $sqlwhere[] =
"t.numero_compte <= '".$db->escape($value).
"'";
672 } elseif ($key ==
't.subledger_account>=') {
673 $sqlwhere[] =
"t.subledger_account >= '".$db->escape($value).
"'";
674 } elseif ($key ==
't.subledger_account<=') {
675 $sqlwhere[] =
"t.subledger_account <= '".$db->escape($value).
"'";
676 } elseif ($key ==
't.fk_doc' || $key ==
't.fk_docdet' || $key ==
't.piece_num') {
677 $sqlwhere[] = $db->sanitize($key).
' = '.((int) $value);
678 } elseif ($key ==
't.subledger_account' || $key ==
't.numero_compte') {
679 $sqlwhere[] = $db->sanitize($key).
" LIKE '".$db->escape($db->escapeforlike($value)).
"%'";
680 } elseif ($key ==
't.subledger_account') {
682 } elseif ($key ==
't.tms>=') {
683 $sqlwhere[] =
"t.tms >= '".$db->idate($value).
"'";
684 } elseif ($key ==
't.tms<=') {
685 $sqlwhere[] =
"t.tms <= '".$db->idate($value).
"'";
686 } elseif ($key ==
't.date_creation>=') {
687 $sqlwhere[] =
"t.date_creation >= '".$db->idate($value).
"'";
688 } elseif ($key ==
't.date_creation<=') {
689 $sqlwhere[] =
"t.date_creation <= '".$db->idate($value).
"'";
690 } elseif ($key ==
't.date_export>=') {
691 $sqlwhere[] =
"t.date_export >= '".$db->idate($value).
"'";
692 } elseif ($key ==
't.date_export<=') {
693 $sqlwhere[] =
"t.date_export <= '".$db->idate($value).
"'";
694 } elseif ($key ==
't.date_validated>=') {
695 $sqlwhere[] =
"t.date_validated >= '".$db->idate($value).
"'";
696 } elseif ($key ==
't.date_validated<=') {
697 $sqlwhere[] =
"t.date_validated <= '".$db->idate($value).
"'";
698 } elseif ($key ==
't.date_lim_reglement>=') {
699 $sqlwhere[] =
"t.date_lim_reglement >= '".$db->idate($value).
"'";
700 } elseif ($key ==
't.date_lim_reglement<=') {
701 $sqlwhere[] =
"t.date_lim_reglement <= '".$db->idate($value).
"'";
702 } elseif ($key ==
't.credit' || $key ==
't.debit') {
704 } elseif ($key ==
't.reconciled_option') {
705 $sqlwhere[] =
't.lettering_code IS NULL';
706 } elseif ($key ==
't.code_journal' && !empty($value)) {
707 if (is_array($value)) {
708 $sqlwhere[] =
natural_search(
"t.code_journal", implode(
',', $value), 3, 1);
712 } elseif ($key ==
't.search_accounting_code_in' && !empty($value)) {
713 $sqlwhere[] =
't.numero_compte IN ('.$db->sanitize($value, 1).
')';
719$sql .=
' WHERE t.entity IN ('.getEntity(
'accountancy').
')';
721if (count($sqlwhere) > 0) {
722 $sql .=
' AND '.implode(
' AND ', $sqlwhere);
733$title_page = $langs->trans(
"Operations").
' - '.$langs->trans(
"Journals");
736$nbtotalofrecords =
'';
739 $sqlforcount = preg_replace(
'/^'.preg_quote($sqlfields,
'/').
'/',
'SELECT COUNT(*) as nbtotalofrecords', $sql);
740 $sqlforcount = preg_replace(
'/GROUP BY .*$/',
'', $sqlforcount);
741 $resql = $db->query($sqlforcount);
743 $objforcount = $db->fetch_object($resql);
744 $nbtotalofrecords = $objforcount->nbtotalofrecords;
749 if (($page * $limit) > $nbtotalofrecords) {
757$sql .= $db->order($sortfield, $sortorder);
759 $sql .= $db->plimit($limit + 1, $offset);
762$resql = $db->query($sql);
768$num = $db->num_rows($resql);
770$arrayofselected = is_array($toselect) ? $toselect : array();
774$help_url =
'EN:Module_Double_Entry_Accounting|FR:Module_Comptabilité_en_Partie_Double';
775llxHeader(
'', $title_page, $help_url,
'', 0, 0,
'',
'',
'',
'mod-accountancy accountancy-consultation page-journal');
783if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
784 $param .=
'&contextpage='.urlencode($contextpage);
786if ($limit > 0 && $limit != $conf->liste_limit) {
787 $param .=
'&limit='.((int) $limit);
791$arrayofmassactions = array();
792if (
getDolGlobalInt(
'ACCOUNTING_ENABLE_LETTERING') && $user->hasRight(
'accounting',
'mouvements',
'creer')) {
793 $arrayofmassactions[
'letteringauto'] =
img_picto(
'',
'check',
'class="pictofixedwidth"') . $langs->trans(
'LetteringAuto');
794 $arrayofmassactions[
'preunletteringauto'] =
img_picto(
'',
'uncheck',
'class="pictofixedwidth"') . $langs->trans(
'UnletteringAuto');
795 $arrayofmassactions[
'letteringmanual'] =
img_picto(
'',
'check',
'class="pictofixedwidth"') . $langs->trans(
'LetteringManual');
796 $arrayofmassactions[
'preunletteringmanual'] =
img_picto(
'',
'uncheck',
'class="pictofixedwidth"') . $langs->trans(
'UnletteringManual');
798if ($user->hasRight(
'accounting',
'mouvements',
'supprimer')) {
799 $arrayofmassactions[
'predeletebookkeepingwriting'] =
img_picto(
'',
'delete',
'class="pictofixedwidth"').$langs->trans(
"Delete");
801if (
GETPOSTINT(
'nomassaction') || in_array($massaction, array(
'preunletteringauto',
'preunletteringmanual',
'predeletebookkeepingwriting'))) {
802 $arrayofmassactions = array();
804$massactionbutton = $form->selectMassAction($massaction, $arrayofmassactions);
806print
'<form method="POST" id="searchFormList" action="'.$_SERVER[
"PHP_SELF"].
'">';
807print
'<input type="hidden" name="token" value="'.newToken().
'">';
808print
'<input type="hidden" name="action" value="list">';
809if ($optioncss !=
'') {
810 print
'<input type="hidden" name="optioncss" value="'.urlencode($optioncss).
'">';
812print
'<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
813print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
814print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
815print
'<input type="hidden" name="contextpage" value="'.$contextpage.
'">';
818 $buttonLabel = $langs->trans(
"ExportFilteredList");
820 $buttonLabel = $langs->trans(
"ExportList");
823$parameters = array(
'param' => $param);
824$reshook = $hookmanager->executeHooks(
'addMoreActionsButtonsList', $parameters, $object, $action);
829$newcardbutton = empty($hookmanager->resPrint) ?
'' : $hookmanager->resPrint;
831if (empty($reshook)) {
832 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'ViewFlatList'),
'',
'fa fa-list paddingleft imgforviewmode', DOL_URL_ROOT.
'/accountancy/bookkeeping/list.php?'.$param,
'', 1, array(
'morecss' =>
'marginleftonly btnTitleSelected'));
833 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'GroupByAccountAccounting'),
'',
'fa fa-stream paddingleft imgforviewmode', DOL_URL_ROOT.
'/accountancy/bookkeeping/listbyaccount.php?'.$param,
'', 1, array(
'morecss' =>
'marginleftonly'));
834 $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'));
836 $url =
'./card.php?action=create';
837 if (!empty($socid)) {
838 $url .=
'&socid='.$socid;
841 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'NewAccountingMvt'),
'',
'fa fa-plus-circle paddingleft', $url,
'', $user->hasRight(
'accounting',
'mouvements',
'creer'));
844print_barre_liste($title_page, $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords,
'title_accountancy', 0, $newcardbutton,
'', $limit, 0, 0, 1);
846if ($massaction ==
'preunletteringauto') {
847 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassUnletteringAuto"), $langs->trans(
"ConfirmMassUnletteringQuestion", count($toselect)),
"unletteringauto",
null,
'', 0, 200, 500, 1);
848} elseif ($massaction ==
'preunletteringmanual') {
849 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassUnletteringManual"), $langs->trans(
"ConfirmMassUnletteringQuestion", count($toselect)),
"unletteringmanual",
null,
'', 0, 200, 500, 1);
850} elseif ($massaction ==
'predeletebookkeepingwriting') {
851 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassDeleteBookkeepingWriting"), $langs->trans(
"ConfirmMassDeleteBookkeepingWritingQuestion", count($toselect)),
"deletebookkeepingwriting",
null,
'', 0, 200, 500, 1);
858include DOL_DOCUMENT_ROOT.
'/core/tpl/massactions_pre.tpl.php';
860$varpage = empty($contextpage) ? $_SERVER[
"PHP_SELF"] : $contextpage;
861$selectedfields = $form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage,
getDolGlobalString(
'MAIN_CHECKBOX_LEFT_COLUMN'));
862if ($massactionbutton && $contextpage !=
'poslist') {
863 $selectedfields .= $form->showCheckAddButtons(
'checkforselect', 1);
867$moreforfilter .=
'<div class="divsearchfield">';
868$moreforfilter .= $langs->trans(
'AccountingCategory').
': ';
869$moreforfilter .=
'<div class="nowrap inline-block">';
870$moreforfilter .= $formaccounting->select_accounting_category($search_account_category,
'search_account_category', 1, 0, 0, 0);
871$moreforfilter .=
'</div>';
872$moreforfilter .=
'</div>';
874$parameters = array();
875$reshook = $hookmanager->executeHooks(
'printFieldPreListTitle', $parameters, $object, $action);
876if (empty($reshook)) {
877 $moreforfilter .= $hookmanager->resPrint;
879 $moreforfilter = $hookmanager->resPrint;
882print
'<div class="liste_titre liste_titre_bydiv centpercent">';
886print
'<div class="div-table-responsive">';
887print
'<table class="tagtable liste'.($moreforfilter ?
" listwithfilterbefore" :
"").
'">';
890print
'<tr class="liste_titre_filter">';
893 print
'<td class="liste_titre center">';
894 $searchpicto = $form->showFilterButtons(
'left');
899if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
900 print
'<td class="liste_titre"><input type="text" name="search_mvt_num" size="6" value="'.dol_escape_htmltag($search_mvt_num).
'"></td>';
903if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
904 print
'<td class="liste_titre center">';
905 print $formaccounting->multi_select_journal($search_ledger_code,
'search_ledger_code', 0, 1, 1, 1,
'small maxwidth75');
909if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
910 print
'<td class="liste_titre center">';
911 print
'<div class="nowrapfordate">';
912 print $form->selectDate($search_date_start ? $search_date_start : -1,
'search_date_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
914 print
'<div class="nowrapfordate">';
915 print $form->selectDate($search_date_end ? $search_date_end : -1,
'search_date_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
920if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
921 print
'<td class="liste_titre"><input type="text" name="search_doc_ref" size="8" value="'.dol_escape_htmltag($search_doc_ref).
'"></td>';
924if (!empty($arrayfields[
't.numero_compte'][
'checked'])) {
925 print
'<td class="liste_titre">';
926 print
'<div class="nowrap">';
927 print $formaccounting->select_account($search_accountancy_code_start,
'search_accountancy_code_start', $langs->trans(
'From'), array(), 1, 1,
'maxwidth150',
'account');
929 print
'<div class="nowrap">';
930 print $formaccounting->select_account($search_accountancy_code_end,
'search_accountancy_code_end', $langs->trans(
'to'), array(), 1, 1,
'maxwidth150',
'account');
935if (!empty($arrayfields[
't.subledger_account'][
'checked'])) {
936 print
'<td class="liste_titre">';
940 print
'<div class="nowrap">';
942 print $formaccounting->select_auxaccount($search_accountancy_aux_code_start,
'search_accountancy_aux_code_start', $langs->trans(
'From'),
'maxwidth250',
'subledgeraccount');
944 print
'<div class="nowrap">';
945 print $formaccounting->select_auxaccount($search_accountancy_aux_code_end,
'search_accountancy_aux_code_end', $langs->trans(
'to'),
'maxwidth250',
'subledgeraccount');
948 print
'<input type="text" class="maxwidth75" name="search_accountancy_aux_code" value="'.dol_escape_htmltag($search_accountancy_aux_code).
'">';
953if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
954 print
'<td class="liste_titre">';
955 print
'<input type="text" size="7" class="flat" name="search_mvt_label" value="'.dol_escape_htmltag($search_mvt_label).
'"/>';
959if (!empty($arrayfields[
't.debit'][
'checked'])) {
960 print
'<td class="liste_titre right">';
961 print
'<input type="text" class="flat" name="search_debit" size="4" value="'.dol_escape_htmltag($search_debit).
'">';
965if (!empty($arrayfields[
't.credit'][
'checked'])) {
966 print
'<td class="liste_titre right">';
967 print
'<input type="text" class="flat" name="search_credit" size="4" value="'.dol_escape_htmltag($search_credit).
'">';
971if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
972 print
'<td class="liste_titre center">';
973 print
'<input type="text" size="3" class="flat" name="search_lettering_code" value="'.dol_escape_htmltag($search_lettering_code).
'"/>';
974 print
'<br><span class="nowrap"><input type="checkbox" name="search_not_reconciled" value="notreconciled"'.($search_not_reconciled ==
'notreconciled' ?
' checked' :
'').
'>'.$langs->trans(
"NotReconciled").
'</span>';
979$parameters = array(
'arrayfields' => $arrayfields);
980$reshook = $hookmanager->executeHooks(
'printFieldListOption', $parameters);
981print $hookmanager->resPrint;
984if (!empty($arrayfields[
't.date_creation'][
'checked'])) {
985 print
'<td class="liste_titre center">';
986 print
'<div class="nowrapfordate">';
987 print $form->selectDate($search_date_creation_start,
'search_date_creation_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
989 print
'<div class="nowrapfordate">';
990 print $form->selectDate($search_date_creation_end,
'search_date_creation_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
995if (!empty($arrayfields[
't.tms'][
'checked'])) {
996 print
'<td class="liste_titre center">';
997 print
'<div class="nowrapfordate">';
998 print $form->selectDate($search_date_modification_start,
'search_date_modification_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1000 print
'<div class="nowrapfordate">';
1001 print $form->selectDate($search_date_modification_end,
'search_date_modification_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1006if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1007 print
'<td class="liste_titre center">';
1008 print
'<div class="nowrapfordate">';
1009 print $form->selectDate($search_date_export_start,
'search_date_export_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1011 print
'<div class="nowrapfordate">';
1012 print $form->selectDate($search_date_export_end,
'search_date_export_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1017if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1018 print
'<td class="liste_titre center">';
1019 print
'<div class="nowrapfordate">';
1020 print $form->selectDate($search_date_validation_start,
'search_date_validation_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1022 print
'<div class="nowrapfordate">';
1023 print $form->selectDate($search_date_validation_end,
'search_date_validation_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1028if (!empty($arrayfields[
't.date_lim_reglement'][
'checked'])) {
1029 print
'<td class="liste_titre center">';
1030 print
'<div class="nowrapfordate">';
1031 print $form->selectDate($search_date_due_start,
'search_date_due_start_', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1033 print
'<div class="nowrapfordate">';
1034 print $form->selectDate($search_date_due_end,
'search_date_due_end_', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1038if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1039 print
'<td class="liste_titre center">';
1040 print
'<input class="flat searchstring maxwidth50" type="text" name="search_import_key" value="'.dol_escape_htmltag($search_import_key).
'">';
1045 print
'<td class="liste_titre center">';
1046 $searchpicto = $form->showFilterButtons();
1052print
'<tr class="liste_titre">';
1054 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch actioncolumn ');
1056if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
1057 print_liste_field_titre($arrayfields[
't.piece_num'][
'label'], $_SERVER[
'PHP_SELF'],
"t.piece_num",
"", $param,
"", $sortfield, $sortorder);
1059if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
1060 print_liste_field_titre($arrayfields[
't.code_journal'][
'label'], $_SERVER[
'PHP_SELF'],
"t.code_journal",
"", $param,
'', $sortfield, $sortorder,
'center ');
1062if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1063 print_liste_field_titre($arrayfields[
't.doc_date'][
'label'], $_SERVER[
'PHP_SELF'],
"t.doc_date",
"", $param,
'', $sortfield, $sortorder,
'center ');
1065if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
1066 print_liste_field_titre($arrayfields[
't.doc_ref'][
'label'], $_SERVER[
'PHP_SELF'],
"t.doc_ref",
"", $param,
"", $sortfield, $sortorder);
1068if (!empty($arrayfields[
't.numero_compte'][
'checked'])) {
1069 print_liste_field_titre($arrayfields[
't.numero_compte'][
'label'], $_SERVER[
'PHP_SELF'],
"t.numero_compte",
"", $param,
"", $sortfield, $sortorder);
1071if (!empty($arrayfields[
't.subledger_account'][
'checked'])) {
1072 print_liste_field_titre($arrayfields[
't.subledger_account'][
'label'], $_SERVER[
'PHP_SELF'],
"t.subledger_account",
"", $param,
"", $sortfield, $sortorder);
1074if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1075 print_liste_field_titre($arrayfields[
't.label_operation'][
'label'], $_SERVER[
'PHP_SELF'],
"t.label_operation",
"", $param,
"", $sortfield, $sortorder);
1077if (!empty($arrayfields[
't.debit'][
'checked'])) {
1078 print_liste_field_titre($arrayfields[
't.debit'][
'label'], $_SERVER[
'PHP_SELF'],
"t.debit",
"", $param,
'', $sortfield, $sortorder,
'right ');
1080if (!empty($arrayfields[
't.credit'][
'checked'])) {
1081 print_liste_field_titre($arrayfields[
't.credit'][
'label'], $_SERVER[
'PHP_SELF'],
"t.credit",
"", $param,
'', $sortfield, $sortorder,
'right ');
1083if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1084 print_liste_field_titre($arrayfields[
't.lettering_code'][
'label'], $_SERVER[
'PHP_SELF'],
"t.lettering_code",
"", $param,
'', $sortfield, $sortorder,
'center ');
1087$parameters = array(
'arrayfields' => $arrayfields,
'param' => $param,
'sortfield' => $sortfield,
'sortorder' => $sortorder);
1088$reshook = $hookmanager->executeHooks(
'printFieldListTitle', $parameters);
1089print $hookmanager->resPrint;
1090if (!empty($arrayfields[
't.date_creation'][
'checked'])) {
1091 print_liste_field_titre($arrayfields[
't.date_creation'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_creation",
"", $param,
'', $sortfield, $sortorder,
'center ');
1093if (!empty($arrayfields[
't.tms'][
'checked'])) {
1094 print_liste_field_titre($arrayfields[
't.tms'][
'label'], $_SERVER[
'PHP_SELF'],
"t.tms",
"", $param,
'', $sortfield, $sortorder,
'center ');
1096if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1097 print_liste_field_titre($arrayfields[
't.date_export'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_export,t.doc_date",
"", $param,
'', $sortfield, $sortorder,
'center ');
1099if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1100 print_liste_field_titre($arrayfields[
't.date_validated'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_validated,t.doc_date",
"", $param,
'', $sortfield, $sortorder,
'center ');
1103if (!empty($arrayfields[
't.date_lim_reglement'][
'checked'])) {
1104 print_liste_field_titre($arrayfields[
't.date_lim_reglement'][
'label'], $_SERVER[
'PHP_SELF'],
't.date_lim_reglement',
'', $param,
'', $sortfield, $sortorder,
'center ');
1106if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1107 print_liste_field_titre($arrayfields[
't.import_key'][
'label'], $_SERVER[
"PHP_SELF"],
"t.import_key",
"", $param,
'', $sortfield, $sortorder,
'center ');
1110 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch ');
1120$totalarray = array();
1121$totalarray[
'nbfield'] = 0;
1122$totalarray[
'val'] = array();
1123$totalarray[
'val'][
'totaldebit'] = 0;
1124$totalarray[
'val'][
'totalcredit'] = 0;
1126while ($i < min($num, $limit)) {
1127 $obj = $db->fetch_object($resql);
1132 $line->id = $obj->rowid;
1133 $line->doc_date = $db->jdate($obj->doc_date);
1134 $line->doc_type = $obj->doc_type;
1135 $line->doc_ref = $obj->doc_ref;
1136 $line->fk_doc = $obj->fk_doc;
1137 $line->fk_docdet = $obj->fk_docdet;
1138 $line->thirdparty_code = $obj->thirdparty_code;
1139 $line->subledger_account = $obj->subledger_account;
1140 $line->subledger_label = $obj->subledger_label;
1141 $line->numero_compte = $obj->numero_compte;
1142 $line->label_compte = $obj->label_compte;
1143 $line->label_operation = $obj->label_operation;
1144 $line->debit = $obj->debit;
1145 $line->credit = $obj->credit;
1146 $line->montant = $obj->amount;
1147 $line->amount = $obj->amount;
1148 $line->sens = $obj->sens;
1149 $line->lettering_code = $obj->lettering_code;
1150 $line->fk_user_author = $obj->fk_user_author;
1151 $line->import_key = $obj->import_key;
1152 $line->code_journal = $obj->code_journal;
1153 $line->journal_label = $obj->journal_label;
1154 $line->piece_num = $obj->piece_num;
1155 $line->date_creation = $db->jdate($obj->date_creation);
1156 $line->date_modification = $db->jdate($obj->date_modification);
1157 $line->date_export = $db->jdate($obj->date_export);
1158 $line->date_validation = $db->jdate($obj->date_validation);
1160 $line->date_lim_reglement = $db->jdate($obj->date_lim_reglement);
1162 print
'<tr class="oddeven">';
1165 print
'<td class="nowraponall center">';
1166 if (($massactionbutton || $massaction) && $contextpage !=
'poslist') {
1168 if (in_array($line->id, $arrayofselected)) {
1171 print
'<input id="cb'.$line->id.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$line->id.
'"'.($selected ?
' checked="checked"' :
'').
' />';
1175 $totalarray[
'nbfield']++;
1180 if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
1183 $object->piece_num = $line->piece_num;
1184 print
$object->getNomUrl(1,
'', 0,
'', 1);
1187 $totalarray[
'nbfield']++;
1192 if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
1193 if (empty($conf->cache[
'accountingjournal'][$line->code_journal])) {
1195 $accountingjournal->fetch(0, $line->code_journal);
1196 $conf->cache[
'accountingjournal'][$line->code_journal] = $accountingjournal;
1198 $accountingjournal = $conf->cache[
'accountingjournal'][$line->code_journal];
1201 $journaltoshow = (($accountingjournal->id > 0) ? $accountingjournal->getNomUrl(0, 0, 0,
'', 0) : $line->code_journal);
1202 print
'<td class="center tdoverflowmax150">'.$journaltoshow.
'</td>';
1204 $totalarray[
'nbfield']++;
1209 if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1210 print
'<td class="center">'.dol_print_date($line->doc_date,
'day').
'</td>';
1212 $totalarray[
'nbfield']++;
1218 if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
1219 $objectstatic =
null;
1221 if ($line->doc_type ===
'customer_invoice') {
1222 $langs->loadLangs(array(
'bills'));
1224 require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
1225 $objectstatic =
new Facture($db);
1226 $objectstatic->fetch($line->fk_doc);
1231 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.$objectstatic->id;
1232 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir);
1233 } elseif ($line->doc_type ===
'supplier_invoice') {
1234 $langs->loadLangs(array(
'bills'));
1236 require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.facture.class.php';
1238 $objectstatic->fetch($line->fk_doc);
1240 $modulepart =
'invoice_supplier';
1245 $filedir =
getMultidirOutput($objectstatic,
'', 1).dol_sanitizeFileName($line->doc_ref);
1246 $subdir =
getMultidirOutput($objectstatic,
'', 1,
'outputrel').dol_sanitizeFileName($line->doc_ref);
1249 if ($objectstatic->id > 0) {
1250 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $subdir, $filedir);
1252 $documentlink = $line->doc_ref;
1254 } elseif ($line->doc_type ===
'expense_report') {
1255 $langs->loadLangs(array(
'trips'));
1257 require_once DOL_DOCUMENT_ROOT.
'/expensereport/class/expensereport.class.php';
1259 $objectstatic->fetch($line->fk_doc);
1264 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.$objectstatic->id;
1265 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir);
1266 } elseif ($line->doc_type ===
'bank') {
1267 require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
1269 $objectstatic->fetch($line->fk_doc);
1275 $labeltoshowalt =
'';
1276 $classforlabel =
'';
1277 if (($line->doc_type ===
'customer_invoice' || $line->doc_type ===
'supplier_invoice' || $line->doc_type ===
'expense_report') && is_object($objectstatic)) {
1278 $labeltoshow .= $objectstatic->getNomUrl(1,
'', 0, 0,
'', 0, -1, 1);
1279 $labeltoshow .= $documentlink;
1280 $labeltoshowalt .= $objectstatic->ref;
1281 } elseif ($line->doc_type ===
'bank' && is_object($objectstatic)) {
1282 $labeltoshow .= $objectstatic->getNomUrl(1);
1283 $labeltoshowalt .= $objectstatic->ref;
1284 $bank_ref = strstr($line->doc_ref,
'-');
1285 $labeltoshow .=
" " . $bank_ref;
1286 $labeltoshowalt .=
" " . $bank_ref;
1288 $labeltoshow .= $line->doc_ref;
1289 $labeltoshowalt .= $line->doc_ref;
1290 $classforlabel =
'tdoverflowmax250';
1293 print
'<td class="nowraponall'.($classforlabel ?
' '.$classforlabel :
'').
'" title="'.
dol_escape_htmltag($labeltoshowalt).
'">';
1297 $totalarray[
'nbfield']++;
1302 if (!empty($arrayfields[
't.numero_compte'][
'checked'])) {
1303 print
'<td>'.length_accountg($line->numero_compte).
'</td>';
1305 $totalarray[
'nbfield']++;
1310 if (!empty($arrayfields[
't.subledger_account'][
'checked'])) {
1311 print
'<td>'.length_accounta($line->subledger_account).
'</td>';
1313 $totalarray[
'nbfield']++;
1318 if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1319 print
'<td class="small tdoverflowmax200" title="'.dol_escape_htmltag($line->label_operation).
'">'.
dol_escape_htmltag($line->label_operation).
'</td>';
1321 $totalarray[
'nbfield']++;
1326 if (!empty($arrayfields[
't.debit'][
'checked'])) {
1327 print
'<td class="right nowraponall amount">'.($line->debit != 0 ?
price($line->debit) :
'').
'</td>';
1329 $totalarray[
'nbfield']++;
1332 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'totaldebit';
1334 $totalarray[
'val'][
'totaldebit'] += $line->debit;
1338 if (!empty($arrayfields[
't.credit'][
'checked'])) {
1339 print
'<td class="right nowraponall amount">'.($line->credit != 0 ?
price($line->credit) :
'').
'</td>';
1341 $totalarray[
'nbfield']++;
1344 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'totalcredit';
1346 $totalarray[
'val'][
'totalcredit'] += $line->credit;
1350 if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1351 print
'<td class="center">'.$line->lettering_code.
'</td>';
1353 $totalarray[
'nbfield']++;
1358 $parameters = array(
'arrayfields' => $arrayfields,
'obj' => $obj,
'i' => $i,
'totalarray' => &$totalarray);
1359 $reshook = $hookmanager->executeHooks(
'printFieldListValue', $parameters);
1360 print $hookmanager->resPrint;
1363 if (!empty($arrayfields[
't.date_creation'][
'checked'])) {
1364 print
'<td class="center">'.dol_print_date($line->date_creation,
'dayhour',
'tzuserrel').
'</td>';
1366 $totalarray[
'nbfield']++;
1371 if (!empty($arrayfields[
't.tms'][
'checked'])) {
1372 print
'<td class="center">'.dol_print_date($line->date_modification,
'dayhour',
'tzuserrel').
'</td>';
1374 $totalarray[
'nbfield']++;
1379 if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1380 print
'<td class="center nowraponall">'.dol_print_date($line->date_export,
'dayhour',
'tzuserrel').
'</td>';
1382 $totalarray[
'nbfield']++;
1387 if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1388 print
'<td class="center nowraponall">'.dol_print_date($line->date_validation,
'dayhour',
'tzuserrel').
'</td>';
1390 $totalarray[
'nbfield']++;
1395 if (!empty($arrayfields[
't.date_lim_reglement'][
'checked'])) {
1396 print
'<td class="center">'.dol_print_date($line->date_lim_reglement,
'day').
'</td>';
1398 $totalarray[
'nbfield']++;
1402 if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1403 print
'<td class="tdoverflowmax125" title="'.dol_escape_htmltag($obj->import_key).
'">'.
dol_escape_htmltag($obj->import_key).
"</td>\n";
1405 $totalarray[
'nbfield']++;
1411 print
'<td class="nowraponall center">';
1412 if (($massactionbutton || $massaction) && $contextpage !=
'poslist') {
1414 if (in_array($line->id, $arrayofselected)) {
1417 print
'<input id="cb'.$line->id.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$line->id.
'"'.($selected ?
' checked="checked"' :
'').
' />';
1421 $totalarray[
'nbfield']++;
1432include DOL_DOCUMENT_ROOT.
'/core/tpl/list_print_total.tpl.php';
1437 foreach ($arrayfields as $key => $val) {
1438 if (!empty($val[
'checked'])) {
1442 print
'<tr><td colspan="'.$colspan.
'"><span class="opacitymedium">'.$langs->trans(
"NoRecordFound").
'</span></td></tr>';
1445$parameters = array(
'arrayfields' => $arrayfields,
'sql' => $sql);
1446$reshook = $hookmanager->executeHooks(
'printFieldListFooter', $parameters, $object, $action);
1447print $hookmanager->resPrint;
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
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.
dol_get_last_day($year, $month=12, $gm=false)
Return GMT time for last day of a month or year.
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.
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)
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.
natural_search($fields, $value, $mode=0, $nofirstand=0)
Generate natural SQL search string for a criteria (this criteria can be tested on one or several fiel...
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.
dol_now($mode='auto')
Return date for now.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
dol_print_date($time, $format='', $tzoutput='auto', $outputlangs=null, $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
print_liste_field_titre($name, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $tooltip="", $forcenowrapcolumntitle=0)
Show title line of an array.
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_sanitizeFileName($str, $newstr='_', $unaccent=1)
Clean a string to use it as a file name.
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.
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.