31 require
'../../main.inc.php';
32 require_once DOL_DOCUMENT_ROOT.
'/core/lib/accounting.lib.php';
33 require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/lettering.class.php';
34 require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/bookkeeping.class.php';
35 require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountingjournal.class.php';
36 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formfile.class.php';
37 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formother.class.php';
38 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formaccounting.class.php';
39 require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
40 require_once DOL_DOCUMENT_ROOT.
'/core/lib/admin.lib.php';
43 $langs->loadLangs(array(
"accountancy",
"compta"));
45 $socid =
GETPOST(
'socid',
'int');
47 $action =
GETPOST(
'action',
'aZ09');
48 $massaction =
GETPOST(
'massaction',
'alpha');
49 $confirm =
GETPOST(
'confirm',
'alpha');
50 $toselect =
GETPOST(
'toselect',
'array');
51 $contextpage =
GETPOST(
'contextpage',
'aZ') ?
GETPOST(
'contextpage',
'aZ') :
'bookkeepinglist';
52 $search_mvt_num =
GETPOST(
'search_mvt_num',
'int');
53 $search_doc_type =
GETPOST(
"search_doc_type",
'alpha');
54 $search_doc_ref =
GETPOST(
"search_doc_ref",
'alpha');
55 $search_date_startyear =
GETPOST(
'search_date_startyear',
'int');
56 $search_date_startmonth =
GETPOST(
'search_date_startmonth',
'int');
57 $search_date_startday =
GETPOST(
'search_date_startday',
'int');
58 $search_date_endyear =
GETPOST(
'search_date_endyear',
'int');
59 $search_date_endmonth =
GETPOST(
'search_date_endmonth',
'int');
60 $search_date_endday =
GETPOST(
'search_date_endday',
'int');
61 $search_date_start =
dol_mktime(0, 0, 0, $search_date_startmonth, $search_date_startday, $search_date_startyear);
62 $search_date_end =
dol_mktime(23, 59, 59, $search_date_endmonth, $search_date_endday, $search_date_endyear);
64 $search_date_creation_startyear =
GETPOST(
'search_date_creation_startyear',
'int');
65 $search_date_creation_startmonth =
GETPOST(
'search_date_creation_startmonth',
'int');
66 $search_date_creation_startday =
GETPOST(
'search_date_creation_startday',
'int');
67 $search_date_creation_endyear =
GETPOST(
'search_date_creation_endyear',
'int');
68 $search_date_creation_endmonth =
GETPOST(
'search_date_creation_endmonth',
'int');
69 $search_date_creation_endday =
GETPOST(
'search_date_creation_endday',
'int');
70 $search_date_creation_start =
dol_mktime(0, 0, 0, $search_date_creation_startmonth, $search_date_creation_startday, $search_date_creation_startyear);
71 $search_date_creation_end =
dol_mktime(23, 59, 59, $search_date_creation_endmonth, $search_date_creation_endday, $search_date_creation_endyear);
72 $search_date_modification_startyear =
GETPOST(
'search_date_modification_startyear',
'int');
73 $search_date_modification_startmonth =
GETPOST(
'search_date_modification_startmonth',
'int');
74 $search_date_modification_startday =
GETPOST(
'search_date_modification_startday',
'int');
75 $search_date_modification_endyear =
GETPOST(
'search_date_modification_endyear',
'int');
76 $search_date_modification_endmonth =
GETPOST(
'search_date_modification_endmonth',
'int');
77 $search_date_modification_endday =
GETPOST(
'search_date_modification_endday',
'int');
78 $search_date_modification_start =
dol_mktime(0, 0, 0, $search_date_modification_startmonth, $search_date_modification_startday, $search_date_modification_startyear);
79 $search_date_modification_end =
dol_mktime(23, 59, 59, $search_date_modification_endmonth, $search_date_modification_endday, $search_date_modification_endyear);
80 $search_date_export_startyear =
GETPOST(
'search_date_export_startyear',
'int');
81 $search_date_export_startmonth =
GETPOST(
'search_date_export_startmonth',
'int');
82 $search_date_export_startday =
GETPOST(
'search_date_export_startday',
'int');
83 $search_date_export_endyear =
GETPOST(
'search_date_export_endyear',
'int');
84 $search_date_export_endmonth =
GETPOST(
'search_date_export_endmonth',
'int');
85 $search_date_export_endday =
GETPOST(
'search_date_export_endday',
'int');
86 $search_date_export_start =
dol_mktime(0, 0, 0, $search_date_export_startmonth, $search_date_export_startday, $search_date_export_startyear);
87 $search_date_export_end =
dol_mktime(23, 59, 59, $search_date_export_endmonth, $search_date_export_endday, $search_date_export_endyear);
88 $search_date_validation_startyear =
GETPOST(
'search_date_validation_startyear',
'int');
89 $search_date_validation_startmonth =
GETPOST(
'search_date_validation_startmonth',
'int');
90 $search_date_validation_startday =
GETPOST(
'search_date_validation_startday',
'int');
91 $search_date_validation_endyear =
GETPOST(
'search_date_validation_endyear',
'int');
92 $search_date_validation_endmonth =
GETPOST(
'search_date_validation_endmonth',
'int');
93 $search_date_validation_endday =
GETPOST(
'search_date_validation_endday',
'int');
94 $search_date_validation_start =
dol_mktime(0, 0, 0, $search_date_validation_startmonth, $search_date_validation_startday, $search_date_validation_startyear);
95 $search_date_validation_end =
dol_mktime(23, 59, 59, $search_date_validation_endmonth, $search_date_validation_endday, $search_date_validation_endyear);
96 $search_import_key =
GETPOST(
"search_import_key",
'alpha');
98 $search_account_category =
GETPOST(
'search_account_category',
'int');
100 $search_accountancy_code =
GETPOST(
"search_accountancy_code",
'alpha');
101 $search_accountancy_code_start =
GETPOST(
'search_accountancy_code_start',
'alpha');
102 if ($search_accountancy_code_start == - 1) {
103 $search_accountancy_code_start =
'';
105 $search_accountancy_code_end =
GETPOST(
'search_accountancy_code_end',
'alpha');
106 if ($search_accountancy_code_end == - 1) {
107 $search_accountancy_code_end =
'';
110 $search_accountancy_aux_code =
GETPOST(
"search_accountancy_aux_code",
'alpha');
111 $search_accountancy_aux_code_start =
GETPOST(
'search_accountancy_aux_code_start',
'alpha');
112 if ($search_accountancy_aux_code_start == - 1) {
113 $search_accountancy_aux_code_start =
'';
115 $search_accountancy_aux_code_end =
GETPOST(
'search_accountancy_aux_code_end',
'alpha');
116 if ($search_accountancy_aux_code_end == - 1) {
117 $search_accountancy_aux_code_end =
'';
119 $search_mvt_label =
GETPOST(
'search_mvt_label',
'alpha');
120 $search_direction =
GETPOST(
'search_direction',
'alpha');
121 $search_debit =
GETPOST(
'search_debit',
'alpha');
122 $search_credit =
GETPOST(
'search_credit',
'alpha');
123 $search_ledger_code =
GETPOST(
'search_ledger_code',
'array');
124 $search_lettering_code =
GETPOST(
'search_lettering_code',
'alpha');
125 $search_not_reconciled =
GETPOST(
'search_not_reconciled',
'alpha');
128 $limit =
GETPOST(
'limit',
'int') ?
GETPOST(
'limit',
'int') : (empty($conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION) ? $conf->liste_limit : $conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION);
129 $sortfield =
GETPOST(
'sortfield',
'aZ09comma');
130 $sortorder =
GETPOST(
'sortorder',
'aZ09comma');
131 $optioncss =
GETPOST(
'optioncss',
'alpha');
133 if (empty($page) || $page < 0) {
136 $offset = $limit * $page;
137 $pageprev = $page - 1;
138 $pagenext = $page + 1;
139 if ($sortorder ==
"") {
142 if ($sortfield ==
"") {
143 $sortfield =
"t.piece_num,t.rowid";
148 $hookmanager->initHooks(array(
'bookkeepinglist'));
153 if (!in_array($action, array(
'delmouv',
'delmouvconfirm')) && !
GETPOSTISSET(
'begin') && !
GETPOSTISSET(
'formfilteraction') &&
GETPOST(
'page',
'int') ==
'' && !
GETPOST(
'noreset',
'int') && $user->hasRight(
'accounting',
'mouvements',
'export')) {
154 if (empty($search_date_start) && empty($search_date_end) && !
GETPOSTISSET(
'restore_lastsearch_values') && !
GETPOST(
'search_accountancy_code_start')) {
155 $query =
"SELECT date_start, date_end from ".MAIN_DB_PREFIX.
"accounting_fiscalyear ";
156 $query .=
" where date_start < '".$db->idate(
dol_now()).
"' and date_end > '".$db->idate(
dol_now()).
"' limit 1";
157 $res = $db->query($query);
159 if ($res->num_rows > 0) {
160 $fiscalYear = $db->fetch_object($res);
161 $search_date_start = strtotime($fiscalYear->date_start);
162 $search_date_end = strtotime($fiscalYear->date_end);
164 $month_start = ($conf->global->SOCIETE_FISCAL_MONTH_START ? ($conf->global->SOCIETE_FISCAL_MONTH_START) : 1);
169 $year_end = $year_start + 1;
170 $month_end = $month_start - 1;
171 if ($month_end < 1) {
175 $search_date_start =
dol_mktime(0, 0, 0, $month_start, 1, $year_start);
182 $arrayfields = array(
183 't.piece_num'=>array(
'label'=>$langs->trans(
"TransactionNumShort"),
'checked'=>1),
184 't.code_journal'=>array(
'label'=>$langs->trans(
"Codejournal"),
'checked'=>1),
185 't.doc_date'=>array(
'label'=>$langs->trans(
"Docdate"),
'checked'=>1),
186 't.doc_ref'=>array(
'label'=>$langs->trans(
"Piece"),
'checked'=>1),
187 't.numero_compte'=>array(
'label'=>$langs->trans(
"AccountAccountingShort"),
'checked'=>1),
188 't.subledger_account'=>array(
'label'=>$langs->trans(
"SubledgerAccount"),
'checked'=>1),
189 't.label_operation'=>array(
'label'=>$langs->trans(
"Label"),
'checked'=>1),
190 't.debit'=>array(
'label'=>$langs->trans(
"AccountingDebit"),
'checked'=>1),
191 't.credit'=>array(
'label'=>$langs->trans(
"AccountingCredit"),
'checked'=>1),
192 't.lettering_code'=>array(
'label'=>$langs->trans(
"LetteringCode"),
'checked'=>1),
193 't.date_creation'=>array(
'label'=>$langs->trans(
"DateCreation"),
'checked'=>0),
194 't.tms'=>array(
'label'=>$langs->trans(
"DateModification"),
'checked'=>0),
195 't.date_export'=>array(
'label'=>$langs->trans(
"DateExport"),
'checked'=>0),
196 't.date_validated'=>array(
'label'=>$langs->trans(
"DateValidationAndLock"),
'checked'=>0,
'enabled'=>!
getDolGlobalString(
"ACCOUNTANCY_DISABLE_CLOSURE_LINE_BY_LINE")),
197 't.import_key'=>array(
'label'=>$langs->trans(
"ImportId"),
'checked'=>0,
'position'=>1100),
200 if (empty($conf->global->ACCOUNTING_ENABLE_LETTERING)) {
201 unset($arrayfields[
't.lettering_code']);
209 if ($user->socid > 0) {
212 if (!$user->hasRight(
'accounting',
'mouvements',
'lire')) {
223 if (
GETPOST(
'cancel',
'alpha')) {
224 $action =
'list'; $massaction =
'';
226 if (!
GETPOST(
'confirmmassaction',
'alpha') && $massaction !=
'preunletteringauto' && $massaction !=
'preunletteringmanual' && $massaction !=
'predeletebookkeepingwriting') {
230 $parameters = array(
'socid'=>$socid);
231 $reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
236 if (empty($reshook)) {
237 include DOL_DOCUMENT_ROOT.
'/core/actions_changeselectedfields.inc.php';
239 if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
240 $search_mvt_num =
'';
241 $search_doc_type =
'';
242 $search_doc_ref =
'';
243 $search_doc_date =
'';
244 $search_account_category =
'';
245 $search_accountancy_code =
'';
246 $search_accountancy_code_start =
'';
247 $search_accountancy_code_end =
'';
248 $search_accountancy_aux_code =
'';
249 $search_accountancy_aux_code_start =
'';
250 $search_accountancy_aux_code_end =
'';
251 $search_mvt_label =
'';
252 $search_direction =
'';
253 $search_ledger_code = array();
254 $search_date_startyear =
'';
255 $search_date_startmonth =
'';
256 $search_date_startday =
'';
257 $search_date_endyear =
'';
258 $search_date_endmonth =
'';
259 $search_date_endday =
'';
260 $search_date_start =
'';
261 $search_date_end =
'';
262 $search_date_creation_startyear =
'';
263 $search_date_creation_startmonth =
'';
264 $search_date_creation_startday =
'';
265 $search_date_creation_endyear =
'';
266 $search_date_creation_endmonth =
'';
267 $search_date_creation_endday =
'';
268 $search_date_creation_start =
'';
269 $search_date_creation_end =
'';
270 $search_date_modification_startyear =
'';
271 $search_date_modification_startmonth =
'';
272 $search_date_modification_startday =
'';
273 $search_date_modification_endyear =
'';
274 $search_date_modification_endmonth =
'';
275 $search_date_modification_endday =
'';
276 $search_date_modification_start =
'';
277 $search_date_modification_end =
'';
278 $search_date_export_startyear =
'';
279 $search_date_export_startmonth =
'';
280 $search_date_export_startday =
'';
281 $search_date_export_endyear =
'';
282 $search_date_export_endmonth =
'';
283 $search_date_export_endday =
'';
284 $search_date_export_start =
'';
285 $search_date_export_end =
'';
286 $search_date_validation_startyear =
'';
287 $search_date_validation_startmonth =
'';
288 $search_date_validation_startday =
'';
289 $search_date_validation_endyear =
'';
290 $search_date_validation_endmonth =
'';
291 $search_date_validation_endday =
'';
292 $search_date_validation_start =
'';
293 $search_date_validation_end =
'';
296 $search_lettering_code =
'';
297 $search_not_reconciled =
'';
298 $search_import_key =
'';
304 if (!empty($search_date_start)) {
305 $filter[
't.doc_date>='] = $search_date_start;
307 $param .=
'&search_date_startmonth='.urlencode($tmp[
'mon']).
'&search_date_startday='.urlencode($tmp[
'mday']).
'&search_date_startyear='.urlencode($tmp[
'year']);
309 if (!empty($search_date_end)) {
310 $filter[
't.doc_date<='] = $search_date_end;
312 $param .=
'&search_date_endmonth='.urlencode($tmp[
'mon']).
'&search_date_endday='.urlencode($tmp[
'mday']).
'&search_date_endyear='.urlencode($tmp[
'year']);
314 if (!empty($search_doc_date)) {
315 $filter[
't.doc_date'] = $search_doc_date;
317 $param .=
'&doc_datemonth='.urlencode($tmp[
'mon']).
'&doc_dateday='.urlencode($tmp[
'mday']).
'&doc_dateyear='.urlencode($tmp[
'year']);
319 if (!empty($search_doc_type)) {
320 $filter[
't.doc_type'] = $search_doc_type;
321 $param .=
'&search_doc_type='.urlencode($search_doc_type);
323 if (!empty($search_doc_ref)) {
324 $filter[
't.doc_ref'] = $search_doc_ref;
325 $param .=
'&search_doc_ref='.urlencode($search_doc_ref);
327 if ($search_account_category !=
'-1' && !empty($search_account_category)) {
328 require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountancycategory.class.php';
331 $listofaccountsforgroup = $accountingcategory->getCptsCat(0,
'fk_accounting_category = '.((
int) $search_account_category));
332 $listofaccountsforgroup2 = array();
333 if (is_array($listofaccountsforgroup)) {
334 foreach ($listofaccountsforgroup as $tmpval) {
335 $listofaccountsforgroup2[] =
"'".$db->escape($tmpval[
'id']).
"'";
338 $filter[
't.search_accounting_code_in'] = join(
',', $listofaccountsforgroup2);
339 $param .=
'&search_account_category='.urlencode($search_account_category);
341 if (!empty($search_accountancy_code)) {
342 $filter[
't.numero_compte'] = $search_accountancy_code;
343 $param .=
'&search_accountancy_code='.urlencode($search_accountancy_code);
345 if (!empty($search_accountancy_code_start)) {
346 $filter[
't.numero_compte>='] = $search_accountancy_code_start;
347 $param .=
'&search_accountancy_code_start='.urlencode($search_accountancy_code_start);
349 if (!empty($search_accountancy_code_end)) {
350 $filter[
't.numero_compte<='] = $search_accountancy_code_end;
351 $param .=
'&search_accountancy_code_end='.urlencode($search_accountancy_code_end);
353 if (!empty($search_accountancy_aux_code)) {
354 $filter[
't.subledger_account'] = $search_accountancy_aux_code;
355 $param .=
'&search_accountancy_aux_code='.urlencode($search_accountancy_aux_code);
357 if (!empty($search_accountancy_aux_code_start)) {
358 $filter[
't.subledger_account>='] = $search_accountancy_aux_code_start;
359 $param .=
'&search_accountancy_aux_code_start='.urlencode($search_accountancy_aux_code_start);
361 if (!empty($search_accountancy_aux_code_end)) {
362 $filter[
't.subledger_account<='] = $search_accountancy_aux_code_end;
363 $param .=
'&search_accountancy_aux_code_end='.urlencode($search_accountancy_aux_code_end);
365 if (!empty($search_mvt_label)) {
366 $filter[
't.label_operation'] = $search_mvt_label;
367 $param .=
'&search_mvt_label='.urlencode($search_mvt_label);
369 if (!empty($search_direction)) {
370 $filter[
't.sens'] = $search_direction;
371 $param .=
'&search_direction='.urlencode($search_direction);
373 if (!empty($search_ledger_code)) {
374 $filter[
't.code_journal'] = $search_ledger_code;
375 foreach ($search_ledger_code as $code) {
376 $param .=
'&search_ledger_code[]='.urlencode($code);
379 if (!empty($search_mvt_num)) {
380 $filter[
't.piece_num'] = $search_mvt_num;
381 $param .=
'&search_mvt_num='.urlencode($search_mvt_num);
383 if (!empty($search_date_creation_start)) {
384 $filter[
't.date_creation>='] = $search_date_creation_start;
386 $param .=
'&search_date_creation_startmonth='.urlencode($tmp[
'mon']).
'&search_date_creation_startday='.urlencode($tmp[
'mday']).
'&search_date_creation_startyear='.urlencode($tmp[
'year']);
388 if (!empty($search_date_creation_end)) {
389 $filter[
't.date_creation<='] = $search_date_creation_end;
391 $param .=
'&search_date_creation_endmonth='.urlencode($tmp[
'mon']).
'&search_date_creation_endday='.urlencode($tmp[
'mday']).
'&search_date_creation_endyear='.urlencode($tmp[
'year']);
393 if (!empty($search_date_modification_start)) {
394 $filter[
't.tms>='] = $search_date_modification_start;
395 $tmp =
dol_getdate($search_date_modification_start);
396 $param .=
'&search_date_modification_startmonth='.urlencode($tmp[
'mon']).
'&search_date_modification_startday='.urlencode($tmp[
'mday']).
'&search_date_modification_startyear='.urlencode($tmp[
'year']);
398 if (!empty($search_date_modification_end)) {
399 $filter[
't.tms<='] = $search_date_modification_end;
401 $param .=
'&search_date_modification_endmonth='.urlencode($tmp[
'mon']).
'&search_date_modification_endday='.urlencode($tmp[
'mday']).
'&search_date_modification_endyear='.urlencode($tmp[
'year']);
403 if (!empty($search_date_export_start)) {
404 $filter[
't.date_export>='] = $search_date_export_start;
406 $param .=
'&search_date_export_startmonth='.urlencode($tmp[
'mon']).
'&search_date_export_startday='.urlencode($tmp[
'mday']).
'&search_date_export_startyear='.urlencode($tmp[
'year']);
408 if (!empty($search_date_export_end)) {
409 $filter[
't.date_export<='] = $search_date_export_end;
411 $param .=
'&search_date_export_endmonth='.urlencode($tmp[
'mon']).
'&search_date_export_endday='.urlencode($tmp[
'mday']).
'&search_date_export_endyear='.urlencode($tmp[
'year']);
413 if (!empty($search_date_validation_start)) {
414 $filter[
't.date_validated>='] = $search_date_validation_start;
416 $param .=
'&search_date_validation_startmonth='.urlencode($tmp[
'mon']).
'&search_date_validation_startday='.urlencode($tmp[
'mday']).
'&search_date_validation_startyear='.urlencode($tmp[
'year']);
418 if (!empty($search_date_validation_end)) {
419 $filter[
't.date_validated<='] = $search_date_validation_end;
421 $param .=
'&search_date_validation_endmonth='.urlencode($tmp[
'mon']).
'&search_date_validation_endday='.urlencode($tmp[
'mday']).
'&search_date_validation_endyear='.urlencode($tmp[
'year']);
423 if (!empty($search_debit)) {
424 $filter[
't.debit'] = $search_debit;
425 $param .=
'&search_debit='.urlencode($search_debit);
427 if (!empty($search_credit)) {
428 $filter[
't.credit'] = $search_credit;
429 $param .=
'&search_credit='.urlencode($search_credit);
431 if (!empty($search_lettering_code)) {
432 $filter[
't.lettering_code'] = $search_lettering_code;
433 $param .=
'&search_lettering_code='.urlencode($search_lettering_code);
435 if (!empty($search_not_reconciled)) {
436 $filter[
't.reconciled_option'] = $search_not_reconciled;
437 $param .=
'&search_not_reconciled='.urlencode($search_not_reconciled);
439 if (!empty($search_import_key)) {
440 $filter[
't.import_key'] = $search_import_key;
441 $param .=
'&search_import_key='.urlencode($search_import_key);
445 $objectclass =
'Bookkeeping';
446 $objectlabel =
'Bookkeeping';
447 $permissiontoread = $user->hasRight(
'societe',
'lire');
448 $permissiontodelete = $user->hasRight(
'societe',
'supprimer');
449 $permissiontoadd = $user->hasRight(
'societe',
'creer');
450 $uploaddir = $conf->societe->dir_output;
451 include DOL_DOCUMENT_ROOT.
'/core/actions_massactions.inc.php';
453 if (!$error && $action ==
'deletebookkeepingwriting' && $confirm ==
"yes" && $user->hasRight(
'accounting',
'mouvements',
'supprimer')) {
458 $nb_lettering = $lettering->bookkeepingLetteringAll($toselect,
true);
459 if ($nb_lettering < 0) {
467 foreach ($toselect as $toselectid) {
468 $result = $object->fetch($toselectid);
469 if ($result > 0 && (!isset($object->date_validation) || $object->date_validation ===
'')) {
470 $result = $object->deleteMvtNum($object->piece_num);
478 } elseif ($result < 0) {
492 } elseif ($nbok > 0) {
498 header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?noreset=1".($param ?
'&'.$param :
''));
506 if (!$error &&
getDolGlobalInt(
'ACCOUNTING_ENABLE_LETTERING') && $user->hasRight(
'accounting',
'mouvements',
'creer')) {
507 if ($massaction ==
'letteringauto') {
509 $nb_lettering = $lettering->bookkeepingLetteringAll($toselect);
510 if ($nb_lettering < 0) {
513 $nb_lettering = max(0, abs($nb_lettering) - 2);
514 } elseif ($nb_lettering == 0) {
516 setEventMessages($langs->trans(
'AccountancyNoLetteringModified'), array(),
'mesgs');
518 if ($nb_lettering == 1) {
519 setEventMessages($langs->trans(
'AccountancyOneLetteringModifiedSuccessfully'), array(),
'mesgs');
520 } elseif ($nb_lettering > 1) {
521 setEventMessages($langs->trans(
'AccountancyLetteringModifiedSuccessfully', $nb_lettering), array(),
'mesgs');
525 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
528 } elseif ($massaction ==
'letteringmanual') {
530 $result = $lettering->updateLettering($toselect);
534 setEventMessages($langs->trans(
'AccountancyOneLetteringModifiedSuccessfully'), array(),
'mesgs');
535 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
538 } elseif ($action ==
'unletteringauto' && $confirm ==
"yes") {
540 $nb_lettering = $lettering->bookkeepingLetteringAll($toselect,
true);
541 if ($nb_lettering < 0) {
544 $nb_lettering = max(0, abs($nb_lettering) - 2);
545 } elseif ($nb_lettering == 0) {
547 setEventMessages($langs->trans(
'AccountancyNoUnletteringModified'), array(),
'mesgs');
549 if ($nb_lettering == 1) {
550 setEventMessages($langs->trans(
'AccountancyOneUnletteringModifiedSuccessfully'), array(),
'mesgs');
551 } elseif ($nb_lettering > 1) {
552 setEventMessages($langs->trans(
'AccountancyUnletteringModifiedSuccessfully', $nb_lettering), array(),
'mesgs');
556 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
559 } elseif ($action ==
'unletteringmanual' && $confirm ==
"yes") {
561 $nb_lettering = $lettering->deleteLettering($toselect);
565 setEventMessages($langs->trans(
'AccountancyOneUnletteringModifiedSuccessfully'), array(),
'mesgs');
566 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
579 $sql .=
" t.doc_date,";
580 $sql .=
" t.doc_type,";
581 $sql .=
" t.doc_ref,";
582 $sql .=
" t.fk_doc,";
583 $sql .=
" t.fk_docdet,";
584 $sql .=
" t.thirdparty_code,";
585 $sql .=
" t.subledger_account,";
586 $sql .=
" t.subledger_label,";
587 $sql .=
" t.numero_compte,";
588 $sql .=
" t.label_compte,";
589 $sql .=
" t.label_operation,";
591 $sql .=
" t.credit,";
592 $sql .=
" t.lettering_code,";
593 $sql .=
" t.montant as amount,";
595 $sql .=
" t.fk_user_author,";
596 $sql .=
" t.import_key,";
597 $sql .=
" t.code_journal,";
598 $sql .=
" t.journal_label,";
599 $sql .=
" t.piece_num,";
600 $sql .=
" t.date_creation,";
601 $sql .=
" t.tms as date_modification,";
602 $sql .=
" t.date_export,";
603 $sql .=
" t.date_validated as date_validation,";
604 $sql .=
" t.import_key";
608 $sql .=
' FROM '.MAIN_DB_PREFIX.$object->table_element.
' as t';
611 if (count($filter) > 0) {
612 foreach ($filter as $key => $value) {
613 if ($key ==
't.doc_date') {
614 $sqlwhere[] = $key.
"='".$db->idate($value).
"'";
615 } elseif ($key ==
't.doc_date>=' || $key ==
't.doc_date<=') {
616 $sqlwhere[] = $key.
"'".$db->idate($value).
"'";
617 } elseif ($key ==
't.numero_compte>=' || $key ==
't.numero_compte<=' || $key ==
't.subledger_account>=' || $key ==
't.subledger_account<=') {
618 $sqlwhere[] = $key.
"'".$db->escape($value).
"'";
619 } elseif ($key ==
't.fk_doc' || $key ==
't.fk_docdet' || $key ==
't.piece_num') {
620 $sqlwhere[] = $key.
'='.((int) $value);
621 } elseif ($key ==
't.subledger_account' || $key ==
't.numero_compte') {
622 $sqlwhere[] = $key.
" LIKE '".$db->escape($value).
"%'";
623 } elseif ($key ==
't.subledger_account') {
625 } elseif ($key ==
't.date_creation>=' || $key ==
't.date_creation<=') {
626 $sqlwhere[] = $key.
"'".$db->idate($value).
"'";
627 } elseif ($key ==
't.tms>=' || $key ==
't.tms<=') {
628 $sqlwhere[] = $key.
"'".$db->idate($value).
"'";
629 } elseif ($key ==
't.date_export>=' || $key ==
't.date_export<=') {
630 $sqlwhere[] = $key.
"'".$db->idate($value).
"'";
631 } elseif ($key ==
't.date_validated>=' || $key ==
't.date_validated<=') {
632 $sqlwhere[] = $key.
"'".$db->idate($value).
"'";
633 } elseif ($key ==
't.credit' || $key ==
't.debit') {
635 } elseif ($key ==
't.reconciled_option') {
636 $sqlwhere[] =
't.lettering_code IS NULL';
637 } elseif ($key ==
't.code_journal' && !empty($value)) {
638 if (is_array($value)) {
639 $sqlwhere[] =
natural_search(
"t.code_journal", join(
',', $value), 3, 1);
643 } elseif ($key ==
't.search_accounting_code_in' && !empty($value)) {
644 $sqlwhere[] =
't.numero_compte IN ('.$db->sanitize($value, 1).
')';
650 $sql .=
' WHERE t.entity IN ('.getEntity(
'accountancy').
')';
652 if (count($sqlwhere) > 0) {
653 $sql .=
' AND '.implode(
' AND ', $sqlwhere);
664 $title_page = $langs->trans(
"Operations").
' - '.$langs->trans(
"Journals");
667 $nbtotalofrecords =
'';
670 $sqlforcount = preg_replace(
'/^'.preg_quote($sqlfields,
'/').
'/',
'SELECT COUNT(*) as nbtotalofrecords',
$sql);
671 $sqlforcount = preg_replace(
'/GROUP BY .*$/',
'', $sqlforcount);
672 $resql = $db->query($sqlforcount);
674 $objforcount = $db->fetch_object($resql);
675 $nbtotalofrecords = $objforcount->nbtotalofrecords;
680 if (($page * $limit) > $nbtotalofrecords) {
688 $sql .= $db->order($sortfield, $sortorder);
690 $sql .= $db->plimit($limit + 1, $offset);
693 $resql = $db->query(
$sql);
699 $num = $db->num_rows($resql);
701 $arrayofselected = is_array($toselect) ? $toselect : array();
714 if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
715 $param .=
'&contextpage='.urlencode($contextpage);
717 if ($limit > 0 && $limit != $conf->liste_limit) {
718 $param .=
'&limit='.((int) $limit);
722 $arrayofmassactions = array();
723 if (
getDolGlobalInt(
'ACCOUNTING_ENABLE_LETTERING') && $user->hasRight(
'accounting',
'mouvements',
'creer')) {
724 $arrayofmassactions[
'letteringauto'] =
img_picto(
'',
'check',
'class="pictofixedwidth"') . $langs->trans(
'LetteringAuto');
725 $arrayofmassactions[
'preunletteringauto'] =
img_picto(
'',
'uncheck',
'class="pictofixedwidth"') . $langs->trans(
'UnletteringAuto');
726 $arrayofmassactions[
'letteringmanual'] =
img_picto(
'',
'check',
'class="pictofixedwidth"') . $langs->trans(
'LetteringManual');
727 $arrayofmassactions[
'preunletteringmanual'] =
img_picto(
'',
'uncheck',
'class="pictofixedwidth"') . $langs->trans(
'UnletteringManual');
729 if ($user->hasRight(
'accounting',
'mouvements',
'supprimer')) {
730 $arrayofmassactions[
'predeletebookkeepingwriting'] =
img_picto(
'',
'delete',
'class="pictofixedwidth"').$langs->trans(
"Delete");
732 if (
GETPOST(
'nomassaction',
'int') || in_array($massaction, array(
'preunletteringauto',
'preunletteringmanual',
'predeletebookkeepingwriting'))) {
733 $arrayofmassactions = array();
735 $massactionbutton =
$form->selectMassAction($massaction, $arrayofmassactions);
737 print
'<form method="POST" id="searchFormList" action="'.$_SERVER[
"PHP_SELF"].
'">';
738 print
'<input type="hidden" name="token" value="'.newToken().
'">';
739 print
'<input type="hidden" name="action" value="list">';
740 if ($optioncss !=
'') {
741 print
'<input type="hidden" name="optioncss" value="'.urlencode($optioncss).
'">';
743 print
'<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
744 print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
745 print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
746 print
'<input type="hidden" name="contextpage" value="'.$contextpage.
'">';
748 if (count($filter)) {
749 $buttonLabel = $langs->trans(
"ExportFilteredList");
751 $buttonLabel = $langs->trans(
"ExportList");
754 $parameters = array(
'param' => $param);
755 $reshook = $hookmanager->executeHooks(
'addMoreActionsButtonsList', $parameters, $object, $action);
760 $newcardbutton = empty($hookmanager->resPrint) ?
'' : $hookmanager->resPrint;
762 if (empty($reshook)) {
763 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'ViewFlatList'),
'',
'fa fa-list paddingleft imgforviewmode', DOL_URL_ROOT.
'/accountancy/bookkeeping/list.php?'.$param,
'', 1, array(
'morecss' =>
'marginleftonly btnTitleSelected'));
764 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'GroupByAccountAccounting'),
'',
'fa fa-stream paddingleft imgforviewmode', DOL_URL_ROOT.
'/accountancy/bookkeeping/listbyaccount.php?'.$param,
'', 1, array(
'morecss' =>
'marginleftonly'));
765 $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'));
767 $url =
'./card.php?action=create';
768 if (!empty($socid)) {
769 $url .=
'&socid='.$socid;
771 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'NewAccountingMvt'),
'',
'fa fa-plus-circle paddingleft', $url,
'', $user->hasRight(
'accounting',
'mouvements',
'creer'));
774 print_barre_liste($title_page, $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords,
'title_accountancy', 0, $newcardbutton,
'', $limit, 0, 0, 1);
776 if ($massaction ==
'preunletteringauto') {
777 print
$form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassUnletteringAuto"), $langs->trans(
"ConfirmMassUnletteringQuestion", count($toselect)),
"unletteringauto",
null,
'', 0, 200, 500, 1);
778 } elseif ($massaction ==
'preunletteringmanual') {
779 print
$form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassUnletteringManual"), $langs->trans(
"ConfirmMassUnletteringQuestion", count($toselect)),
"unletteringmanual",
null,
'', 0, 200, 500, 1);
780 } elseif ($massaction ==
'predeletebookkeepingwriting') {
781 print
$form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassDeleteBookkeepingWriting"), $langs->trans(
"ConfirmMassDeleteBookkeepingWritingQuestion", count($toselect)),
"deletebookkeepingwriting",
null,
'', 0, 200, 500, 1);
788 include DOL_DOCUMENT_ROOT.
'/core/tpl/massactions_pre.tpl.php';
790 $varpage = empty($contextpage) ? $_SERVER[
"PHP_SELF"] : $contextpage;
791 $selectedfields =
$form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage,
getDolGlobalString(
'MAIN_CHECKBOX_LEFT_COLUMN',
''));
792 if ($massactionbutton && $contextpage !=
'poslist') {
793 $selectedfields .=
$form->showCheckAddButtons(
'checkforselect', 1);
797 $moreforfilter .=
'<div class="divsearchfield">';
798 $moreforfilter .= $langs->trans(
'AccountingCategory').
': ';
799 $moreforfilter .=
'<div class="nowrap inline-block">';
800 $moreforfilter .= $formaccounting->select_accounting_category($search_account_category,
'search_account_category', 1, 0, 0, 0);
801 $moreforfilter .=
'</div>';
802 $moreforfilter .=
'</div>';
804 $parameters = array();
805 $reshook = $hookmanager->executeHooks(
'printFieldPreListTitle', $parameters, $object, $action);
806 if (empty($reshook)) {
807 $moreforfilter .= $hookmanager->resPrint;
809 $moreforfilter = $hookmanager->resPrint;
812 print
'<div class="liste_titre liste_titre_bydiv centpercent">';
813 print $moreforfilter;
816 print
'<div class="div-table-responsive">';
817 print
'<table class="tagtable liste'.($moreforfilter ?
" listwithfilterbefore" :
"").
'">';
820 print
'<tr class="liste_titre_filter">';
823 print
'<td class="liste_titre center">';
824 $searchpicto =
$form->showFilterButtons(
'left');
829 if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
830 print
'<td class="liste_titre"><input type="text" name="search_mvt_num" size="6" value="'.dol_escape_htmltag($search_mvt_num).
'"></td>';
833 if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
834 print
'<td class="liste_titre center">';
835 print $formaccounting->multi_select_journal($search_ledger_code,
'search_ledger_code', 0, 1, 1, 1,
'small maxwidth75');
839 if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
840 print
'<td class="liste_titre center">';
841 print
'<div class="nowrap">';
842 print
$form->selectDate($search_date_start ? $search_date_start : -1,
'search_date_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
844 print
'<div class="nowrap">';
845 print
$form->selectDate($search_date_end ? $search_date_end : -1,
'search_date_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
850 if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
851 print
'<td class="liste_titre"><input type="text" name="search_doc_ref" size="8" value="'.dol_escape_htmltag($search_doc_ref).
'"></td>';
854 if (!empty($arrayfields[
't.numero_compte'][
'checked'])) {
855 print
'<td class="liste_titre">';
856 print
'<div class="nowrap">';
857 print $formaccounting->select_account($search_accountancy_code_start,
'search_accountancy_code_start', $langs->trans(
'From'), array(), 1, 1,
'maxwidth150',
'account');
859 print
'<div class="nowrap">';
860 print $formaccounting->select_account($search_accountancy_code_end,
'search_accountancy_code_end', $langs->trans(
'to'), array(), 1, 1,
'maxwidth150',
'account');
865 if (!empty($arrayfields[
't.subledger_account'][
'checked'])) {
866 print
'<td class="liste_titre">';
869 if (!empty($conf->global->ACCOUNTANCY_COMBO_FOR_AUX)) {
870 print
'<div class="nowrap">';
872 print $formaccounting->select_auxaccount($search_accountancy_aux_code_start,
'search_accountancy_aux_code_start', $langs->trans(
'From'),
'maxwidth250',
'subledgeraccount');
874 print
'<div class="nowrap">';
875 print $formaccounting->select_auxaccount($search_accountancy_aux_code_end,
'search_accountancy_aux_code_end', $langs->trans(
'to'),
'maxwidth250',
'subledgeraccount');
878 print
'<input type="text" class="maxwidth75" name="search_accountancy_aux_code" value="'.dol_escape_htmltag($search_accountancy_aux_code).
'">';
883 if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
884 print
'<td class="liste_titre">';
885 print
'<input type="text" size="7" class="flat" name="search_mvt_label" value="'.dol_escape_htmltag($search_mvt_label).
'"/>';
889 if (!empty($arrayfields[
't.debit'][
'checked'])) {
890 print
'<td class="liste_titre right">';
891 print
'<input type="text" class="flat" name="search_debit" size="4" value="'.dol_escape_htmltag($search_debit).
'">';
895 if (!empty($arrayfields[
't.credit'][
'checked'])) {
896 print
'<td class="liste_titre right">';
897 print
'<input type="text" class="flat" name="search_credit" size="4" value="'.dol_escape_htmltag($search_credit).
'">';
901 if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
902 print
'<td class="liste_titre center">';
903 print
'<input type="text" size="3" class="flat" name="search_lettering_code" value="'.dol_escape_htmltag($search_lettering_code).
'"/>';
904 print
'<br><span class="nowrap"><input type="checkbox" name="search_not_reconciled" value="notreconciled"'.($search_not_reconciled ==
'notreconciled' ?
' checked' :
'').
'>'.$langs->trans(
"NotReconciled").
'</span>';
909 $parameters = array(
'arrayfields'=>$arrayfields);
910 $reshook = $hookmanager->executeHooks(
'printFieldListOption', $parameters);
911 print $hookmanager->resPrint;
914 if (!empty($arrayfields[
't.date_creation'][
'checked'])) {
915 print
'<td class="liste_titre center">';
916 print
'<div class="nowrap">';
917 print
$form->selectDate($search_date_creation_start,
'search_date_creation_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
919 print
'<div class="nowrap">';
920 print
$form->selectDate($search_date_creation_end,
'search_date_creation_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
925 if (!empty($arrayfields[
't.tms'][
'checked'])) {
926 print
'<td class="liste_titre center">';
927 print
'<div class="nowrap">';
928 print
$form->selectDate($search_date_modification_start,
'search_date_modification_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
930 print
'<div class="nowrap">';
931 print
$form->selectDate($search_date_modification_end,
'search_date_modification_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
936 if (!empty($arrayfields[
't.date_export'][
'checked'])) {
937 print
'<td class="liste_titre center">';
938 print
'<div class="nowrap">';
939 print
$form->selectDate($search_date_export_start,
'search_date_export_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
941 print
'<div class="nowrap">';
942 print
$form->selectDate($search_date_export_end,
'search_date_export_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
947 if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
948 print
'<td class="liste_titre center">';
949 print
'<div class="nowrap">';
950 print
$form->selectDate($search_date_validation_start,
'search_date_validation_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
952 print
'<div class="nowrap">';
953 print
$form->selectDate($search_date_validation_end,
'search_date_validation_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
957 if (!empty($arrayfields[
't.import_key'][
'checked'])) {
958 print
'<td class="liste_titre center">';
959 print
'<input class="flat searchstring maxwidth50" type="text" name="search_import_key" value="'.dol_escape_htmltag($search_import_key).
'">';
964 print
'<td class="liste_titre center">';
965 $searchpicto =
$form->showFilterButtons();
971 print
'<tr class="liste_titre">';
973 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch actioncolumn ');}
974 if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
975 print_liste_field_titre($arrayfields[
't.piece_num'][
'label'], $_SERVER[
'PHP_SELF'],
"t.piece_num",
"", $param,
"", $sortfield, $sortorder);
977 if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
978 print_liste_field_titre($arrayfields[
't.code_journal'][
'label'], $_SERVER[
'PHP_SELF'],
"t.code_journal",
"", $param,
'', $sortfield, $sortorder,
'center ');
980 if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
981 print_liste_field_titre($arrayfields[
't.doc_date'][
'label'], $_SERVER[
'PHP_SELF'],
"t.doc_date",
"", $param,
'', $sortfield, $sortorder,
'center ');
983 if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
984 print_liste_field_titre($arrayfields[
't.doc_ref'][
'label'], $_SERVER[
'PHP_SELF'],
"t.doc_ref",
"", $param,
"", $sortfield, $sortorder);
986 if (!empty($arrayfields[
't.numero_compte'][
'checked'])) {
987 print_liste_field_titre($arrayfields[
't.numero_compte'][
'label'], $_SERVER[
'PHP_SELF'],
"t.numero_compte",
"", $param,
"", $sortfield, $sortorder);
989 if (!empty($arrayfields[
't.subledger_account'][
'checked'])) {
990 print_liste_field_titre($arrayfields[
't.subledger_account'][
'label'], $_SERVER[
'PHP_SELF'],
"t.subledger_account",
"", $param,
"", $sortfield, $sortorder);
992 if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
993 print_liste_field_titre($arrayfields[
't.label_operation'][
'label'], $_SERVER[
'PHP_SELF'],
"t.label_operation",
"", $param,
"", $sortfield, $sortorder);
995 if (!empty($arrayfields[
't.debit'][
'checked'])) {
996 print_liste_field_titre($arrayfields[
't.debit'][
'label'], $_SERVER[
'PHP_SELF'],
"t.debit",
"", $param,
'', $sortfield, $sortorder,
'right ');
998 if (!empty($arrayfields[
't.credit'][
'checked'])) {
999 print_liste_field_titre($arrayfields[
't.credit'][
'label'], $_SERVER[
'PHP_SELF'],
"t.credit",
"", $param,
'', $sortfield, $sortorder,
'right ');
1001 if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1002 print_liste_field_titre($arrayfields[
't.lettering_code'][
'label'], $_SERVER[
'PHP_SELF'],
"t.lettering_code",
"", $param,
'', $sortfield, $sortorder,
'center ');
1005 $parameters = array(
'arrayfields'=>$arrayfields,
'param'=>$param,
'sortfield'=>$sortfield,
'sortorder'=>$sortorder);
1006 $reshook = $hookmanager->executeHooks(
'printFieldListTitle', $parameters);
1007 print $hookmanager->resPrint;
1008 if (!empty($arrayfields[
't.date_creation'][
'checked'])) {
1009 print_liste_field_titre($arrayfields[
't.date_creation'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_creation",
"", $param,
'', $sortfield, $sortorder,
'center ');
1011 if (!empty($arrayfields[
't.tms'][
'checked'])) {
1012 print_liste_field_titre($arrayfields[
't.tms'][
'label'], $_SERVER[
'PHP_SELF'],
"t.tms",
"", $param,
'', $sortfield, $sortorder,
'center ');
1014 if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1015 print_liste_field_titre($arrayfields[
't.date_export'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_export,t.doc_date",
"", $param,
'', $sortfield, $sortorder,
'center ');
1017 if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1018 print_liste_field_titre($arrayfields[
't.date_validated'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_validated,t.doc_date",
"", $param,
'', $sortfield, $sortorder,
'center ');
1020 if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1021 print_liste_field_titre($arrayfields[
't.import_key'][
'label'], $_SERVER[
"PHP_SELF"],
"t.import_key",
"", $param,
'', $sortfield, $sortorder,
'center ');
1024 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch ');
1034 $totalarray = array();
1035 $totalarray[
'nbfield'] = 0;
1038 $totalarray[
'val'] = array ();
1039 $totalarray[
'val'][
'totaldebit'] = 0;
1040 $totalarray[
'val'][
'totalcredit'] = 0;
1042 while ($i < min($num, $limit)) {
1043 $obj = $db->fetch_object($resql);
1048 $line->id = $obj->rowid;
1049 $line->doc_date = $db->jdate($obj->doc_date);
1050 $line->doc_type = $obj->doc_type;
1051 $line->doc_ref = $obj->doc_ref;
1052 $line->fk_doc = $obj->fk_doc;
1053 $line->fk_docdet = $obj->fk_docdet;
1054 $line->thirdparty_code = $obj->thirdparty_code;
1055 $line->subledger_account = $obj->subledger_account;
1056 $line->subledger_label = $obj->subledger_label;
1057 $line->numero_compte = $obj->numero_compte;
1058 $line->label_compte = $obj->label_compte;
1059 $line->label_operation = $obj->label_operation;
1060 $line->debit = $obj->debit;
1061 $line->credit = $obj->credit;
1062 $line->montant = $obj->amount;
1063 $line->amount = $obj->amount;
1064 $line->sens = $obj->sens;
1065 $line->lettering_code = $obj->lettering_code;
1066 $line->fk_user_author = $obj->fk_user_author;
1067 $line->import_key = $obj->import_key;
1068 $line->code_journal = $obj->code_journal;
1069 $line->journal_label = $obj->journal_label;
1070 $line->piece_num = $obj->piece_num;
1071 $line->date_creation = $db->jdate($obj->date_creation);
1072 $line->date_modification = $db->jdate($obj->date_modification);
1073 $line->date_export = $db->jdate($obj->date_export);
1074 $line->date_validation = $db->jdate($obj->date_validation);
1076 $total_debit += $line->debit;
1077 $total_credit += $line->credit;
1079 print
'<tr class="oddeven">';
1082 print
'<td class="nowraponall center">';
1083 if (($massactionbutton || $massaction) && $contextpage !=
'poslist') {
1085 if (in_array($line->id, $arrayofselected)) {
1088 print
'<input id="cb'.$line->id.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$line->id.
'"'.($selected ?
' checked="checked"' :
'').
' />';
1092 $totalarray[
'nbfield']++;
1097 if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
1099 $object->id = $line->id;
1100 $object->piece_num = $line->piece_num;
1101 print $object->getNomUrl(1,
'', 0,
'', 1);
1104 $totalarray[
'nbfield']++;
1109 if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
1111 $result = $accountingjournal->fetch(
'', $line->code_journal);
1112 $journaltoshow = (($result > 0) ? $accountingjournal->getNomUrl(0, 0, 0,
'', 0) : $line->code_journal);
1113 print
'<td class="center tdoverflowmax150">'.$journaltoshow.
'</td>';
1115 $totalarray[
'nbfield']++;
1120 if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1121 print
'<td class="center">'.dol_print_date($line->doc_date,
'day').
'</td>';
1123 $totalarray[
'nbfield']++;
1128 if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
1129 if ($line->doc_type ==
'customer_invoice') {
1130 $langs->loadLangs(array(
'bills'));
1132 require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
1133 $objectstatic =
new Facture($db);
1134 $objectstatic->fetch($line->fk_doc);
1139 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.$objectstatic->id;
1140 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir);
1141 } elseif ($line->doc_type ==
'supplier_invoice') {
1142 $langs->loadLangs(array(
'bills'));
1144 require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.facture.class.php';
1146 $objectstatic->fetch($line->fk_doc);
1150 $filedir = $conf->fournisseur->facture->dir_output.
'/'.
get_exdir($line->fk_doc, 2, 0, 0, $objectstatic, $modulepart).dol_sanitizeFileName($line->doc_ref);
1151 $subdir =
get_exdir($objectstatic->id, 2, 0, 0, $objectstatic, $modulepart).dol_sanitizeFileName($line->doc_ref);
1152 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $subdir, $filedir);
1153 } elseif ($line->doc_type ==
'expense_report') {
1154 $langs->loadLangs(array(
'trips'));
1156 require_once DOL_DOCUMENT_ROOT.
'/expensereport/class/expensereport.class.php';
1158 $objectstatic->fetch($line->fk_doc);
1163 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.$objectstatic->id;
1164 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir);
1165 } elseif ($line->doc_type ==
'bank') {
1166 require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
1168 $objectstatic->fetch($line->fk_doc);
1174 $labeltoshowalt =
'';
1175 if ($line->doc_type ==
'customer_invoice' || $line->doc_type ==
'supplier_invoice' || $line->doc_type ==
'expense_report') {
1176 $labeltoshow .= $objectstatic->getNomUrl(1,
'', 0, 0,
'', 0, -1, 1);
1177 $labeltoshow .= $documentlink;
1178 $labeltoshowalt .= $objectstatic->ref;
1179 } elseif ($line->doc_type ==
'bank') {
1180 $labeltoshow .= $objectstatic->getNomUrl(1);
1181 $labeltoshowalt .= $objectstatic->ref;
1182 $bank_ref = strstr($line->doc_ref,
'-');
1183 $labeltoshow .=
" " . $bank_ref;
1184 $labeltoshowalt .=
" " . $bank_ref;
1186 $labeltoshow .= $line->doc_ref;
1187 $labeltoshowalt .= $line->doc_ref;
1190 print
'<td class="nowraponall tdoverflowmax200" title="'.dol_escape_htmltag($labeltoshowalt).
'">';
1194 $totalarray[
'nbfield']++;
1199 if (!empty($arrayfields[
't.numero_compte'][
'checked'])) {
1200 print
'<td>'.length_accountg($line->numero_compte).
'</td>';
1202 $totalarray[
'nbfield']++;
1207 if (!empty($arrayfields[
't.subledger_account'][
'checked'])) {
1208 print
'<td>'.length_accounta($line->subledger_account).
'</td>';
1210 $totalarray[
'nbfield']++;
1215 if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1216 print
'<td class="small tdoverflowmax200" title="'.dol_escape_htmltag($line->label_operation).
'">'.
dol_escape_htmltag($line->label_operation).
'</td>';
1218 $totalarray[
'nbfield']++;
1223 if (!empty($arrayfields[
't.debit'][
'checked'])) {
1224 print
'<td class="right nowraponall amount">'.($line->debit != 0 ?
price($line->debit) :
'').
'</td>';
1226 $totalarray[
'nbfield']++;
1229 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'totaldebit';
1231 $totalarray[
'val'][
'totaldebit'] += $line->debit;
1235 if (!empty($arrayfields[
't.credit'][
'checked'])) {
1236 print
'<td class="right nowraponall amount">'.($line->credit != 0 ?
price($line->credit) :
'').
'</td>';
1238 $totalarray[
'nbfield']++;
1241 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'totalcredit';
1243 $totalarray[
'val'][
'totalcredit'] += $line->credit;
1247 if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1248 print
'<td class="center">'.$line->lettering_code.
'</td>';
1250 $totalarray[
'nbfield']++;
1255 $parameters = array(
'arrayfields'=>$arrayfields,
'obj'=>$obj,
'i'=>$i,
'totalarray'=>&$totalarray);
1256 $reshook = $hookmanager->executeHooks(
'printFieldListValue', $parameters);
1257 print $hookmanager->resPrint;
1260 if (!empty($arrayfields[
't.date_creation'][
'checked'])) {
1261 print
'<td class="center">'.dol_print_date($line->date_creation,
'dayhour',
'tzuserrel').
'</td>';
1263 $totalarray[
'nbfield']++;
1268 if (!empty($arrayfields[
't.tms'][
'checked'])) {
1269 print
'<td class="center">'.dol_print_date($line->date_modification,
'dayhour',
'tzuserrel').
'</td>';
1271 $totalarray[
'nbfield']++;
1276 if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1277 print
'<td class="center nowraponall">'.dol_print_date($line->date_export,
'dayhour',
'tzuserrel').
'</td>';
1279 $totalarray[
'nbfield']++;
1284 if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1285 print
'<td class="center nowraponall">'.dol_print_date($line->date_validation,
'dayhour',
'tzuserrel').
'</td>';
1287 $totalarray[
'nbfield']++;
1291 if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1292 print
'<td class="tdoverflowmax100">'.$obj->import_key.
"</td>\n";
1294 $totalarray[
'nbfield']++;
1300 print
'<td class="nowraponall center">';
1301 if (($massactionbutton || $massaction) && $contextpage !=
'poslist') {
1303 if (in_array($line->id, $arrayofselected)) {
1306 print
'<input id="cb'.$line->id.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$line->id.
'"'.($selected ?
' checked="checked"' :
'').
' />';
1310 $totalarray[
'nbfield']++;
1321 include DOL_DOCUMENT_ROOT.
'/core/tpl/list_print_total.tpl.php';
1326 foreach ($arrayfields as $key => $val) {
1327 if (!empty($val[
'checked'])) {
1331 print
'<tr><td colspan="'.$colspan.
'"><span class="opacitymedium">'.$langs->trans(
"NoRecordFound").
'</span></td></tr>';
1334 $parameters = array(
'arrayfields'=>$arrayfields,
'sql'=>
$sql);
1335 $reshook = $hookmanager->executeHooks(
'printFieldListFooter', $parameters, $object, $action);
1336 print $hookmanager->resPrint;
if(!defined('NOREQUIRESOC')) if(!defined('NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined('NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined('NOREQUIREAJAX')) llxHeader()
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.
if(isModEnabled('facture') && $user->hasRight('facture', 'lire')) if((isModEnabled('fournisseur') &&empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->hasRight("fournisseur", "facture", "lire"))||(isModEnabled('supplier_invoice') && $user->hasRight("supplier_invoice", "lire"))) if(isModEnabled('don') && $user->hasRight('don', 'lire')) if(isModEnabled('tax') &&!empty($user->rights->tax->charges->lire)) if(isModEnabled('facture') &&isModEnabled('commande') && $user->hasRight("commande", "lire") &&empty($conf->global->WORKFLOW_DISABLE_CREATE_INVOICE_FROM_ORDER)) $sql
Social contributions to pay.
if($cancel &&! $id) if($action=='add' &&! $cancel) if($action=='delete') if($id) $form
Actions.
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 informations (by default a local PHP server timestamp) Re...
dol_print_error($db='', $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
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_print_date($time, $format='', $tzoutput='auto', $outputlangs='', $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
dol_now($mode='auto')
Return date for now.
getDolGlobalInt($key, $default=0)
Return dolibarr global constant int value.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
print_liste_field_titre($name, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $tooltip="", $forcenowrapcolumntitle=0)
Show title line of an array.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0)
Set event messages in dol_events session object.
print_barre_liste($titre, $page, $file, $options='', $sortfield='', $sortorder='', $morehtmlcenter='', $num=-1, $totalnboflines='', $picto='generic', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limit=-1, $hideselectlimit=0, $hidenavigation=0, $pagenavastextinput=0, $morehtmlrightbeforearrow='')
Print a title with navigation controls for pagination.
dol_sanitizeFileName($str, $newstr='_', $unaccent=1)
Clean a string to use it as a file name.
GETPOSTISSET($paramname)
Return true if we are in a context of submitting the parameter $paramname from a POST of a form.
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
isModEnabled($module)
Is Dolibarr module enabled.
get_exdir($num, $level, $alpha, $withoutslash, $object, $modulepart='')
Return a path to have a the directory according to object where files are stored.
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...
$formconfirm
if ($action == 'delbookkeepingyear') {
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.