31require
'../../main.inc.php';
32require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountancyexport.class.php';
33require_once DOL_DOCUMENT_ROOT.
'/core/lib/accounting.lib.php';
34require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/lettering.class.php';
35require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/bookkeeping.class.php';
36require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountingjournal.class.php';
37require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formfile.class.php';
38require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formother.class.php';
39require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formaccounting.class.php';
40require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
41require_once DOL_DOCUMENT_ROOT.
'/core/lib/admin.lib.php';
44$langs->loadLangs(array(
"accountancy",
"compta"));
46$socid =
GETPOST(
'socid',
'int');
48$action =
GETPOST(
'action',
'aZ09');
49$massaction =
GETPOST(
'massaction',
'alpha');
50$confirm =
GETPOST(
'confirm',
'alpha');
51$toselect =
GETPOST(
'toselect',
'array');
52$contextpage =
GETPOST(
'contextpage',
'aZ') ?
GETPOST(
'contextpage',
'aZ') :
'bookkeepinglist';
53$search_mvt_num =
GETPOST(
'search_mvt_num',
'int');
54$search_doc_type =
GETPOST(
"search_doc_type",
'alpha');
55$search_doc_ref =
GETPOST(
"search_doc_ref",
'alpha');
56$search_date_startyear =
GETPOST(
'search_date_startyear',
'int');
57$search_date_startmonth =
GETPOST(
'search_date_startmonth',
'int');
58$search_date_startday =
GETPOST(
'search_date_startday',
'int');
59$search_date_endyear =
GETPOST(
'search_date_endyear',
'int');
60$search_date_endmonth =
GETPOST(
'search_date_endmonth',
'int');
61$search_date_endday =
GETPOST(
'search_date_endday',
'int');
62$search_date_start =
dol_mktime(0, 0, 0, $search_date_startmonth, $search_date_startday, $search_date_startyear);
63$search_date_end =
dol_mktime(23, 59, 59, $search_date_endmonth, $search_date_endday, $search_date_endyear);
65$search_date_creation_startyear =
GETPOST(
'search_date_creation_startyear',
'int');
66$search_date_creation_startmonth =
GETPOST(
'search_date_creation_startmonth',
'int');
67$search_date_creation_startday =
GETPOST(
'search_date_creation_startday',
'int');
68$search_date_creation_endyear =
GETPOST(
'search_date_creation_endyear',
'int');
69$search_date_creation_endmonth =
GETPOST(
'search_date_creation_endmonth',
'int');
70$search_date_creation_endday =
GETPOST(
'search_date_creation_endday',
'int');
71$search_date_creation_start =
dol_mktime(0, 0, 0, $search_date_creation_startmonth, $search_date_creation_startday, $search_date_creation_startyear);
72$search_date_creation_end =
dol_mktime(23, 59, 59, $search_date_creation_endmonth, $search_date_creation_endday, $search_date_creation_endyear);
73$search_date_modification_startyear =
GETPOST(
'search_date_modification_startyear',
'int');
74$search_date_modification_startmonth =
GETPOST(
'search_date_modification_startmonth',
'int');
75$search_date_modification_startday =
GETPOST(
'search_date_modification_startday',
'int');
76$search_date_modification_endyear =
GETPOST(
'search_date_modification_endyear',
'int');
77$search_date_modification_endmonth =
GETPOST(
'search_date_modification_endmonth',
'int');
78$search_date_modification_endday =
GETPOST(
'search_date_modification_endday',
'int');
79$search_date_modification_start =
dol_mktime(0, 0, 0, $search_date_modification_startmonth, $search_date_modification_startday, $search_date_modification_startyear);
80$search_date_modification_end =
dol_mktime(23, 59, 59, $search_date_modification_endmonth, $search_date_modification_endday, $search_date_modification_endyear);
81$search_date_export_startyear =
GETPOST(
'search_date_export_startyear',
'int');
82$search_date_export_startmonth =
GETPOST(
'search_date_export_startmonth',
'int');
83$search_date_export_startday =
GETPOST(
'search_date_export_startday',
'int');
84$search_date_export_endyear =
GETPOST(
'search_date_export_endyear',
'int');
85$search_date_export_endmonth =
GETPOST(
'search_date_export_endmonth',
'int');
86$search_date_export_endday =
GETPOST(
'search_date_export_endday',
'int');
87$search_date_export_start =
dol_mktime(0, 0, 0, $search_date_export_startmonth, $search_date_export_startday, $search_date_export_startyear);
88$search_date_export_end =
dol_mktime(23, 59, 59, $search_date_export_endmonth, $search_date_export_endday, $search_date_export_endyear);
89$search_date_validation_startyear =
GETPOST(
'search_date_validation_startyear',
'int');
90$search_date_validation_startmonth =
GETPOST(
'search_date_validation_startmonth',
'int');
91$search_date_validation_startday =
GETPOST(
'search_date_validation_startday',
'int');
92$search_date_validation_endyear =
GETPOST(
'search_date_validation_endyear',
'int');
93$search_date_validation_endmonth =
GETPOST(
'search_date_validation_endmonth',
'int');
94$search_date_validation_endday =
GETPOST(
'search_date_validation_endday',
'int');
95$search_date_validation_start =
dol_mktime(0, 0, 0, $search_date_validation_startmonth, $search_date_validation_startday, $search_date_validation_startyear);
96$search_date_validation_end =
dol_mktime(23, 59, 59, $search_date_validation_endmonth, $search_date_validation_endday, $search_date_validation_endyear);
97$search_import_key =
GETPOST(
"search_import_key",
'alpha');
101 $action =
'delbookkeepingyear';
103if (
GETPOST(
"button_export_file_x") ||
GETPOST(
"button_export_file.x") ||
GETPOST(
"button_export_file")) {
104 $action =
'export_file';
107$search_account_category =
GETPOST(
'search_account_category',
'int');
109$search_accountancy_code =
GETPOST(
"search_accountancy_code",
'alpha');
110$search_accountancy_code_start =
GETPOST(
'search_accountancy_code_start',
'alpha');
111if ($search_accountancy_code_start == - 1) {
112 $search_accountancy_code_start =
'';
114$search_accountancy_code_end =
GETPOST(
'search_accountancy_code_end',
'alpha');
115if ($search_accountancy_code_end == - 1) {
116 $search_accountancy_code_end =
'';
119$search_accountancy_aux_code =
GETPOST(
"search_accountancy_aux_code",
'alpha');
120$search_accountancy_aux_code_start =
GETPOST(
'search_accountancy_aux_code_start',
'alpha');
121if ($search_accountancy_aux_code_start == - 1) {
122 $search_accountancy_aux_code_start =
'';
124$search_accountancy_aux_code_end =
GETPOST(
'search_accountancy_aux_code_end',
'alpha');
125if ($search_accountancy_aux_code_end == - 1) {
126 $search_accountancy_aux_code_end =
'';
128$search_mvt_label =
GETPOST(
'search_mvt_label',
'alpha');
129$search_direction =
GETPOST(
'search_direction',
'alpha');
130$search_debit =
GETPOST(
'search_debit',
'alpha');
131$search_credit =
GETPOST(
'search_credit',
'alpha');
132$search_ledger_code =
GETPOST(
'search_ledger_code',
'array');
133$search_lettering_code =
GETPOST(
'search_lettering_code',
'alpha');
134$search_not_reconciled =
GETPOST(
'search_not_reconciled',
'alpha');
138$sortfield =
GETPOST(
'sortfield',
'aZ09comma');
139$sortorder =
GETPOST(
'sortorder',
'aZ09comma');
140$optioncss =
GETPOST(
'optioncss',
'alpha');
141$page = GETPOSTISSET(
'pageplusone') ? (
GETPOST(
'pageplusone') - 1) :
GETPOST(
"page",
'int');
142if (empty($page) || $page < 0) {
145$offset = $limit * $page;
146$pageprev = $page - 1;
147$pagenext = $page + 1;
148if ($sortorder ==
"") {
151if ($sortfield ==
"") {
152 $sortfield =
"t.piece_num,t.rowid";
157$hookmanager->initHooks(array(
'bookkeepingexport'));
160$form =
new Form($db);
162if (!in_array($action, array(
'export_file',
'delmouv',
'delmouvconfirm')) && !GETPOSTISSET(
'begin') && !GETPOSTISSET(
'formfilteraction') &&
GETPOST(
'page',
'int') ==
'' && !
GETPOST(
'noreset',
'int') && $user->hasRight(
'accounting',
'mouvements',
'export')) {
163 if (empty($search_date_start) && empty($search_date_end) && !GETPOSTISSET(
'restore_lastsearch_values') && !
GETPOST(
'search_accountancy_code_start')) {
164 $query =
"SELECT date_start, date_end from ".MAIN_DB_PREFIX.
"accounting_fiscalyear ";
165 $query .=
" where date_start < '".$db->idate(
dol_now()).
"' and date_end > '".$db->idate(
dol_now()).
"' limit 1";
166 $res = $db->query($query);
168 if ($res->num_rows > 0) {
169 $fiscalYear = $db->fetch_object($res);
170 $search_date_start = strtotime($fiscalYear->date_start);
171 $search_date_end = strtotime($fiscalYear->date_end);
178 $year_end = $year_start + 1;
179 $month_end = $month_start - 1;
180 if ($month_end < 1) {
184 $search_date_start =
dol_mktime(0, 0, 0, $month_start, 1, $year_start);
192 't.piece_num'=>array(
'label'=>$langs->trans(
"TransactionNumShort"),
'checked'=>1),
193 't.code_journal'=>array(
'label'=>$langs->trans(
"Codejournal"),
'checked'=>1),
194 't.doc_date'=>array(
'label'=>$langs->trans(
"Docdate"),
'checked'=>1),
195 't.doc_ref'=>array(
'label'=>$langs->trans(
"Piece"),
'checked'=>1),
196 't.numero_compte'=>array(
'label'=>$langs->trans(
"AccountAccountingShort"),
'checked'=>1),
197 't.subledger_account'=>array(
'label'=>$langs->trans(
"SubledgerAccount"),
'checked'=>1),
198 't.label_operation'=>array(
'label'=>$langs->trans(
"Label"),
'checked'=>1),
199 't.debit'=>array(
'label'=>$langs->trans(
"AccountingDebit"),
'checked'=>1),
200 't.credit'=>array(
'label'=>$langs->trans(
"AccountingCredit"),
'checked'=>1),
201 't.lettering_code'=>array(
'label'=>$langs->trans(
"LetteringCode"),
'checked'=>1),
202 't.date_creation'=>array(
'label'=>$langs->trans(
"DateCreation"),
'checked'=>0),
203 't.tms'=>array(
'label'=>$langs->trans(
"DateModification"),
'checked'=>0),
204 't.date_export'=>array(
'label'=>$langs->trans(
"DateExport"),
'checked'=>1),
205 't.date_validated'=>array(
'label'=>$langs->trans(
"DateValidationAndLock"),
'checked'=>1,
'enabled'=>!
getDolGlobalString(
"ACCOUNTANCY_DISABLE_CLOSURE_LINE_BY_LINE")),
206 't.import_key'=>array(
'label'=>$langs->trans(
"ImportId"),
'checked'=>0,
'position'=>1100),
210 unset($arrayfields[
't.lettering_code']);
214$listofformat = $accountancyexport->getType();
216if (empty($listofformat[$formatexportset])) {
217 $formatexportset = 1;
222if (!isModEnabled(
'accounting')) {
225if ($user->socid > 0) {
228if (!$user->hasRight(
'accounting',
'mouvements',
'lire')) {
239if (
GETPOST(
'cancel',
'alpha')) {
243if (!
GETPOST(
'confirmmassaction',
'alpha')) {
247$parameters = array(
'socid'=>$socid);
248$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
253if (empty($reshook)) {
254 include DOL_DOCUMENT_ROOT.
'/core/actions_changeselectedfields.inc.php';
256 if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
257 $search_mvt_num =
'';
258 $search_doc_type =
'';
259 $search_doc_ref =
'';
260 $search_doc_date =
'';
261 $search_account_category =
'';
262 $search_accountancy_code =
'';
263 $search_accountancy_code_start =
'';
264 $search_accountancy_code_end =
'';
265 $search_accountancy_aux_code =
'';
266 $search_accountancy_aux_code_start =
'';
267 $search_accountancy_aux_code_end =
'';
268 $search_mvt_label =
'';
269 $search_direction =
'';
270 $search_ledger_code = array();
271 $search_date_startyear =
'';
272 $search_date_startmonth =
'';
273 $search_date_startday =
'';
274 $search_date_endyear =
'';
275 $search_date_endmonth =
'';
276 $search_date_endday =
'';
277 $search_date_start =
'';
278 $search_date_end =
'';
279 $search_date_creation_startyear =
'';
280 $search_date_creation_startmonth =
'';
281 $search_date_creation_startday =
'';
282 $search_date_creation_endyear =
'';
283 $search_date_creation_endmonth =
'';
284 $search_date_creation_endday =
'';
285 $search_date_creation_start =
'';
286 $search_date_creation_end =
'';
287 $search_date_modification_startyear =
'';
288 $search_date_modification_startmonth =
'';
289 $search_date_modification_startday =
'';
290 $search_date_modification_endyear =
'';
291 $search_date_modification_endmonth =
'';
292 $search_date_modification_endday =
'';
293 $search_date_modification_start =
'';
294 $search_date_modification_end =
'';
295 $search_date_export_startyear =
'';
296 $search_date_export_startmonth =
'';
297 $search_date_export_startday =
'';
298 $search_date_export_endyear =
'';
299 $search_date_export_endmonth =
'';
300 $search_date_export_endday =
'';
301 $search_date_export_start =
'';
302 $search_date_export_end =
'';
303 $search_date_validation_startyear =
'';
304 $search_date_validation_startmonth =
'';
305 $search_date_validation_startday =
'';
306 $search_date_validation_endyear =
'';
307 $search_date_validation_endmonth =
'';
308 $search_date_validation_endday =
'';
309 $search_date_validation_start =
'';
310 $search_date_validation_end =
'';
313 $search_lettering_code =
'';
314 $search_not_reconciled =
'';
315 $search_import_key =
'';
321 if (!empty($search_date_start)) {
322 $filter[
't.doc_date>='] = $search_date_start;
324 $param .=
'&search_date_startmonth='.urlencode($tmp[
'mon']).
'&search_date_startday='.urlencode($tmp[
'mday']).
'&search_date_startyear='.urlencode($tmp[
'year']);
326 if (!empty($search_date_end)) {
327 $filter[
't.doc_date<='] = $search_date_end;
329 $param .=
'&search_date_endmonth='.urlencode($tmp[
'mon']).
'&search_date_endday='.urlencode($tmp[
'mday']).
'&search_date_endyear='.urlencode($tmp[
'year']);
331 if (!empty($search_doc_date)) {
332 $filter[
't.doc_date'] = $search_doc_date;
334 $param .=
'&doc_datemonth='.urlencode($tmp[
'mon']).
'&doc_dateday='.urlencode($tmp[
'mday']).
'&doc_dateyear='.urlencode($tmp[
'year']);
336 if (!empty($search_doc_type)) {
337 $filter[
't.doc_type'] = $search_doc_type;
338 $param .=
'&search_doc_type='.urlencode($search_doc_type);
340 if (!empty($search_doc_ref)) {
341 $filter[
't.doc_ref'] = $search_doc_ref;
342 $param .=
'&search_doc_ref='.urlencode($search_doc_ref);
344 if ($search_account_category !=
'-1' && !empty($search_account_category)) {
345 require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountancycategory.class.php';
348 $listofaccountsforgroup = $accountingcategory->getCptsCat(0,
'fk_accounting_category = '.((
int) $search_account_category));
349 $listofaccountsforgroup2 = array();
350 if (is_array($listofaccountsforgroup)) {
351 foreach ($listofaccountsforgroup as $tmpval) {
352 $listofaccountsforgroup2[] =
"'".$db->escape($tmpval[
'account_number']).
"'";
355 $filter[
't.search_accounting_code_in'] = join(
',', $listofaccountsforgroup2);
356 $param .=
'&search_account_category='.urlencode($search_account_category);
358 if (!empty($search_accountancy_code)) {
359 $filter[
't.numero_compte'] = $search_accountancy_code;
360 $param .=
'&search_accountancy_code='.urlencode($search_accountancy_code);
362 if (!empty($search_accountancy_code_start)) {
363 $filter[
't.numero_compte>='] = $search_accountancy_code_start;
364 $param .=
'&search_accountancy_code_start='.urlencode($search_accountancy_code_start);
366 if (!empty($search_accountancy_code_end)) {
367 $filter[
't.numero_compte<='] = $search_accountancy_code_end;
368 $param .=
'&search_accountancy_code_end='.urlencode($search_accountancy_code_end);
370 if (!empty($search_accountancy_aux_code)) {
371 $filter[
't.subledger_account'] = $search_accountancy_aux_code;
372 $param .=
'&search_accountancy_aux_code='.urlencode($search_accountancy_aux_code);
374 if (!empty($search_accountancy_aux_code_start)) {
375 $filter[
't.subledger_account>='] = $search_accountancy_aux_code_start;
376 $param .=
'&search_accountancy_aux_code_start='.urlencode($search_accountancy_aux_code_start);
378 if (!empty($search_accountancy_aux_code_end)) {
379 $filter[
't.subledger_account<='] = $search_accountancy_aux_code_end;
380 $param .=
'&search_accountancy_aux_code_end='.urlencode($search_accountancy_aux_code_end);
382 if (!empty($search_mvt_label)) {
383 $filter[
't.label_operation'] = $search_mvt_label;
384 $param .=
'&search_mvt_label='.urlencode($search_mvt_label);
386 if (!empty($search_direction)) {
387 $filter[
't.sens'] = $search_direction;
388 $param .=
'&search_direction='.urlencode($search_direction);
390 if (!empty($search_ledger_code)) {
391 $filter[
't.code_journal'] = $search_ledger_code;
392 foreach ($search_ledger_code as $code) {
393 $param .=
'&search_ledger_code[]='.urlencode($code);
396 if (!empty($search_mvt_num)) {
397 $filter[
't.piece_num'] = $search_mvt_num;
398 $param .=
'&search_mvt_num='.urlencode($search_mvt_num);
400 if (!empty($search_date_creation_start)) {
401 $filter[
't.date_creation>='] = $search_date_creation_start;
403 $param .=
'&search_date_creation_startmonth='.urlencode($tmp[
'mon']).
'&search_date_creation_startday='.urlencode($tmp[
'mday']).
'&search_date_creation_startyear='.urlencode($tmp[
'year']);
405 if (!empty($search_date_creation_end)) {
406 $filter[
't.date_creation<='] = $search_date_creation_end;
408 $param .=
'&search_date_creation_endmonth='.urlencode($tmp[
'mon']).
'&search_date_creation_endday='.urlencode($tmp[
'mday']).
'&search_date_creation_endyear='.urlencode($tmp[
'year']);
410 if (!empty($search_date_modification_start)) {
411 $filter[
't.tms>='] = $search_date_modification_start;
412 $tmp =
dol_getdate($search_date_modification_start);
413 $param .=
'&search_date_modification_startmonth='.urlencode($tmp[
'mon']).
'&search_date_modification_startday='.urlencode($tmp[
'mday']).
'&search_date_modification_startyear='.urlencode($tmp[
'year']);
415 if (!empty($search_date_modification_end)) {
416 $filter[
't.tms<='] = $search_date_modification_end;
418 $param .=
'&search_date_modification_endmonth='.urlencode($tmp[
'mon']).
'&search_date_modification_endday='.urlencode($tmp[
'mday']).
'&search_date_modification_endyear='.urlencode($tmp[
'year']);
420 if (!empty($search_date_export_start)) {
421 $filter[
't.date_export>='] = $search_date_export_start;
423 $param .=
'&search_date_export_startmonth='.urlencode($tmp[
'mon']).
'&search_date_export_startday='.urlencode($tmp[
'mday']).
'&search_date_export_startyear='.urlencode($tmp[
'year']);
425 if (!empty($search_date_export_end)) {
426 $filter[
't.date_export<='] = $search_date_export_end;
428 $param .=
'&search_date_export_endmonth='.urlencode($tmp[
'mon']).
'&search_date_export_endday='.urlencode($tmp[
'mday']).
'&search_date_export_endyear='.urlencode($tmp[
'year']);
430 if (!empty($search_date_validation_start)) {
431 $filter[
't.date_validated>='] = $search_date_validation_start;
433 $param .=
'&search_date_validation_startmonth='.urlencode($tmp[
'mon']).
'&search_date_validation_startday='.urlencode($tmp[
'mday']).
'&search_date_validation_startyear='.urlencode($tmp[
'year']);
435 if (!empty($search_date_validation_end)) {
436 $filter[
't.date_validated<='] = $search_date_validation_end;
438 $param .=
'&search_date_validation_endmonth='.urlencode($tmp[
'mon']).
'&search_date_validation_endday='.urlencode($tmp[
'mday']).
'&search_date_validation_endyear='.urlencode($tmp[
'year']);
440 if (!empty($search_debit)) {
441 $filter[
't.debit'] = $search_debit;
442 $param .=
'&search_debit='.urlencode($search_debit);
444 if (!empty($search_credit)) {
445 $filter[
't.credit'] = $search_credit;
446 $param .=
'&search_credit='.urlencode($search_credit);
448 if (!empty($search_lettering_code)) {
449 $filter[
't.lettering_code'] = $search_lettering_code;
450 $param .=
'&search_lettering_code='.urlencode($search_lettering_code);
452 if (!empty($search_not_reconciled)) {
453 $filter[
't.reconciled_option'] = $search_not_reconciled;
454 $param .=
'&search_not_reconciled='.urlencode($search_not_reconciled);
456 if (!empty($search_import_key)) {
457 $filter[
't.import_key'] = $search_import_key;
458 $param .=
'&search_import_key='.urlencode($search_import_key);
461 if ($action ==
'setreexport') {
462 $setreexport =
GETPOST(
'value',
'int');
463 if (!
dolibarr_set_const($db,
"ACCOUNTING_REEXPORT", $setreexport,
'yesno', 0,
'', $conf->entity)) {
469 setEventMessages($langs->trans(
"ExportOfPiecesAlreadyExportedIsDisable"),
null,
'mesgs');
471 setEventMessages($langs->trans(
"ExportOfPiecesAlreadyExportedIsEnable"),
null,
'warnings');
479 $objectclass =
'Bookkeeping';
480 $objectlabel =
'Bookkeeping';
481 $permissiontoread = $user->hasRight(
'societe',
'lire');
482 $permissiontodelete = $user->hasRight(
'societe',
'supprimer');
483 $permissiontoadd = $user->hasRight(
'societe',
'creer');
484 $uploaddir = $conf->societe->dir_output;
485 include DOL_DOCUMENT_ROOT.
'/core/actions_massactions.inc.php';
494$sql .=
" t.doc_date,";
495$sql .=
" t.doc_type,";
496$sql .=
" t.doc_ref,";
498$sql .=
" t.fk_docdet,";
499$sql .=
" t.thirdparty_code,";
500$sql .=
" t.subledger_account,";
501$sql .=
" t.subledger_label,";
502$sql .=
" t.numero_compte,";
503$sql .=
" t.label_compte,";
504$sql .=
" t.label_operation,";
507$sql .=
" t.lettering_code,";
508$sql .=
" t.montant as amount,";
510$sql .=
" t.fk_user_author,";
511$sql .=
" t.import_key,";
512$sql .=
" t.code_journal,";
513$sql .=
" t.journal_label,";
514$sql .=
" t.piece_num,";
515$sql .=
" t.date_creation,";
516$sql .=
" t.tms as date_modification,";
517$sql .=
" t.date_export,";
518$sql .=
" t.date_validated as date_validation,";
519$sql .=
" t.import_key";
523$sql .=
' FROM '.MAIN_DB_PREFIX.$object->table_element.
' as t';
526if (count($filter) > 0) {
527 foreach ($filter as $key => $value) {
528 if ($key ==
't.doc_date') {
529 $sqlwhere[] = $key.
"='".$db->idate($value).
"'";
530 } elseif ($key ==
't.doc_date>=' || $key ==
't.doc_date<=') {
531 $sqlwhere[] = $key.
"'".$db->idate($value).
"'";
532 } elseif ($key ==
't.numero_compte>=' || $key ==
't.numero_compte<=' || $key ==
't.subledger_account>=' || $key ==
't.subledger_account<=') {
533 $sqlwhere[] = $key.
"'".$db->escape($value).
"'";
534 } elseif ($key ==
't.fk_doc' || $key ==
't.fk_docdet' || $key ==
't.piece_num') {
535 $sqlwhere[] = $key.
'='.((int) $value);
536 } elseif ($key ==
't.subledger_account' || $key ==
't.numero_compte') {
537 $sqlwhere[] = $key.
" LIKE '".$db->escape($value).
"%'";
538 } elseif ($key ==
't.subledger_account') {
540 } elseif ($key ==
't.date_creation>=' || $key ==
't.date_creation<=') {
541 $sqlwhere[] = $key.
"'".$db->idate($value).
"'";
542 } elseif ($key ==
't.tms>=' || $key ==
't.tms<=') {
543 $sqlwhere[] = $key.
"'".$db->idate($value).
"'";
544 } elseif ($key ==
't.date_export>=' || $key ==
't.date_export<=') {
545 $sqlwhere[] = $key.
"'".$db->idate($value).
"'";
546 } elseif ($key ==
't.date_validated>=' || $key ==
't.date_validated<=') {
547 $sqlwhere[] = $key.
"'".$db->idate($value).
"'";
548 } elseif ($key ==
't.credit' || $key ==
't.debit') {
550 } elseif ($key ==
't.reconciled_option') {
551 $sqlwhere[] =
't.lettering_code IS NULL';
552 } elseif ($key ==
't.code_journal' && !empty($value)) {
553 if (is_array($value)) {
554 $sqlwhere[] =
natural_search(
"t.code_journal", join(
',', $value), 3, 1);
558 } elseif ($key ==
't.search_accounting_code_in' && !empty($value)) {
559 $sqlwhere[] =
't.numero_compte IN ('.$db->sanitize($value, 1).
')';
565$sql .=
' WHERE t.entity IN ('.getEntity(
'accountancy').
')';
567 $sql .=
" AND t.date_export IS NULL";
569if (count($sqlwhere) > 0) {
570 $sql .=
' AND '.implode(
' AND ', $sqlwhere);
577if ($action ==
'export_fileconfirm' && $user->hasRight(
'accounting',
'mouvements',
'export')) {
580 $result = $object->fetchAll($sortorder, $sortfield, 0, 0, $filter,
'AND', (!
getDolGlobalString(
'ACCOUNTING_REEXPORT') ? 0 : 1));
588 $formatexport =
GETPOST(
'formatexport',
'int');
589 $notexportlettering =
GETPOST(
'notexportlettering',
'alpha');
591 if (!empty($notexportlettering)) {
592 if (is_array($object->lines)) {
593 foreach ($object->lines as $k => $movement) {
594 unset($object->lines[$k]->lettering_code);
595 unset($object->lines[$k]->date_lettering);
600 $notifiedexportdate =
GETPOST(
'notifiedexportdate',
'alpha');
601 $notifiedvalidationdate =
GETPOST(
'notifiedvalidationdate',
'alpha');
602 $withAttachment = !empty(trim(
GETPOST(
'notifiedexportfull',
'alphanohtml'))) ? 1 : 0;
605 $result = $accountancyexport->export($object->lines, $formatexport, $withAttachment);
611 if (!empty($notifiedexportdate) || !empty($notifiedvalidationdate)) {
612 if (is_array($object->lines)) {
613 dol_syslog(
"/accountancy/bookkeeping/list.php Function export_file Specify movements as exported", LOG_DEBUG);
619 foreach ($object->lines as $movement) {
623 if (!empty($notifiedexportdate) && empty($movement->date_export)) {
624 $setfields .= ($setfields ?
"," :
"").
" date_export = '".$db->idate($now).
"'";
626 if (!empty($notifiedvalidationdate) && empty($movement->date_validation)) {
627 $setfields .= ($setfields ?
"," :
"").
" date_validated = '".$db->idate($now).
"'";
631 $sql =
" UPDATE ".MAIN_DB_PREFIX.
"accounting_bookkeeping";
632 $sql .=
" SET ".$setfields;
633 $sql .=
" WHERE rowid = ".((int) $movement->id);
635 $result = $db->query($sql);
647 $accountancyexport->errors[] = $langs->trans(
'NotAllExportedMovementsCouldBeRecordedAsExportedOrValidated');
656 header(
'Location: '.$_SERVER[
'PHP_SELF']);
670$title_page = $langs->trans(
"Operations").
' - '.$langs->trans(
"ExportAccountancy");
673$nbtotalofrecords =
'';
676 $sqlforcount = preg_replace(
'/^'.preg_quote($sqlfields,
'/').
'/',
'SELECT COUNT(*) as nbtotalofrecords', $sql);
677 $sqlforcount = preg_replace(
'/GROUP BY .*$/',
'', $sqlforcount);
678 $resql = $db->query($sqlforcount);
680 $objforcount = $db->fetch_object($resql);
681 $nbtotalofrecords = $objforcount->nbtotalofrecords;
686 if (($page * $limit) > $nbtotalofrecords) {
694$sql .= $db->order($sortfield, $sortorder);
696 $sql .= $db->plimit($limit + 1, $offset);
699$resql = $db->query($sql);
705$num = $db->num_rows($resql);
707$arrayofselected = is_array($toselect) ? $toselect : array();
711$help_url =
'EN:Module_Double_Entry_Accounting#Exports|FR:Module_Comptabilité_en_Partie_Double#Exports';
717if ($action ==
'export_file') {
718 $form_question = array();
720 $form_question[
'formatexport'] = array(
721 'name' =>
'formatexport',
723 'label' => $langs->trans(
'Modelcsv'),
724 'values' => $listofformat,
725 'default' => $formatexportset,
726 'morecss' =>
'minwidth200 maxwidth200'
729 $form_question[
'separator0'] = array(
'name'=>
'separator0',
'type'=>
'separator');
733 $checked =
getDolGlobalString(
'ACCOUNTING_DEFAULT_NOT_EXPORT_LETTERING') ?
'true' :
'false';
734 $form_question[
'notexportlettering'] = array(
735 'name' =>
'notexportlettering',
736 'type' =>
'checkbox',
737 'label' => $langs->trans(
'NotExportLettering'),
741 $form_question[
'separator1'] = array(
'name'=>
'separator1',
'type'=>
'separator');
745 $checked = (!isset($conf->global->ACCOUNTING_DEFAULT_NOT_NOTIFIED_EXPORT_DATE) ||
getDolGlobalString(
'ACCOUNTING_DEFAULT_NOT_NOTIFIED_EXPORT_DATE'));
746 $form_question[
'notifiedexportdate'] = array(
747 'name' =>
'notifiedexportdate',
748 'type' =>
'checkbox',
749 'label' => $langs->trans(
'NotifiedExportDate'),
750 'value' => (
getDolGlobalString(
'ACCOUNTING_DEFAULT_NOT_NOTIFIED_EXPORT_DATE') ?
'false' :
'true'),
753 $form_question[
'separator2'] = array(
'name'=>
'separator2',
'type'=>
'separator');
757 $checked = (isset($conf->global->ACCOUNTING_DEFAULT_NOT_NOTIFIED_VALIDATION_DATE) ||
getDolGlobalString(
'ACCOUNTING_DEFAULT_NOT_NOTIFIED_VALIDATION_DATE'));
758 $form_question[
'notifiedvalidationdate'] = array(
759 'name' =>
'notifiedvalidationdate',
760 'type' =>
'checkbox',
761 'label' => $langs->trans(
'NotifiedValidationDate', $langs->transnoentitiesnoconv(
"MenuAccountancyClosure")),
765 $form_question[
'separator3'] = array(
'name'=>
'separator3',
'type'=>
'separator');
769 $exportTypesWithDocs = array(
770 AccountancyExport::$EXPORT_TYPE_QUADRATUS,
771 AccountancyExport::$EXPORT_TYPE_FEC,
772 AccountancyExport::$EXPORT_TYPE_FEC2
775 $form_question[
'notifiedexportfull'] = array(
776 'name' =>
'notifiedexportfull',
777 'type' =>
'checkbox',
778 'label' => $langs->trans(
'NotifiedExportFull'),
782 $formconfirm = $form->formconfirm($_SERVER[
"PHP_SELF"].
'?'.$param, $langs->trans(
"ExportFilteredList").
'...', $langs->trans(
'ConfirmExportFile'),
'export_fileconfirm', $form_question,
'', 1, 500, 600);
784 $formconfirm .=
'<script>
785 jQuery(document).ready(function() {
786 const exportTypesWithDocs = ['.implode(
',', $exportTypesWithDocs).
'];
787 const $formatExport = jQuery("#formatexport");
789 function toggleExportFull() {
790 const $checkbox = jQuery("#notifiedexportfull");
791 const show = exportTypesWithDocs.indexOf(parseInt($formatExport.val())) !== -1;
792 $checkbox.closest(".tagtr").toggle(show);
794 $checkbox.prop("checked", false); // remove checked if hidden
798 $formatExport.on("change", toggleExportFull);
808if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
809 $param .=
'&contextpage='.urlencode($contextpage);
811if ($limit > 0 && $limit != $conf->liste_limit) {
812 $param .=
'&limit='.urlencode($limit);
816$arrayofmassactions = array();
817$massactionbutton = $form->selectMassAction($massaction, $arrayofmassactions);
819print
'<form method="POST" id="searchFormList" action="'.$_SERVER[
"PHP_SELF"].
'">';
820print
'<input type="hidden" name="token" value="'.newToken().
'">';
821print
'<input type="hidden" name="action" value="list">';
822if ($optioncss !=
'') {
823 print
'<input type="hidden" name="optioncss" value="'.urlencode($optioncss).
'">';
825print
'<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
826print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
827print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
828print
'<input type="hidden" name="contextpage" value="'.$contextpage.
'">';
831 $buttonLabel = $langs->trans(
"ExportFilteredList");
833 $buttonLabel = $langs->trans(
"ExportList");
836$parameters = array(
'param' => $param);
837$reshook = $hookmanager->executeHooks(
'addMoreActionsButtonsList', $parameters, $object, $action);
842$newcardbutton = empty($hookmanager->resPrint) ?
'' : $hookmanager->resPrint;
843if (empty($reshook)) {
846 $newcardbutton .=
'<a class="valignmiddle" href="'.$_SERVER[
'PHP_SELF'].
'?action=setreexport&token='.newToken().
'&value=1'.($param ?
'&'.$param :
'').
'&sortfield='.urlencode($sortfield).
'&sortorder='.urlencode($sortorder).
'">'.
img_picto($langs->trans(
"ClickToShowAlreadyExportedLines"),
'switch_off',
'class="small size15x valignmiddle"');
847 $newcardbutton .=
'<span class="valignmiddle marginrightonly paddingleft">'.$langs->trans(
"ClickToShowAlreadyExportedLines").
'</span>';
848 $newcardbutton .=
'</a>';
850 $newcardbutton .=
'<a class="valignmiddle" href="'.$_SERVER[
'PHP_SELF'].
'?action=setreexport&token='.newToken().
'&value=0'.($param ?
'&'.$param :
'').
'&sortfield='.urlencode($sortfield).
'&sortorder='.urlencode($sortorder).
'">'.
img_picto($langs->trans(
"DocsAlreadyExportedAreIncluded"),
'switch_on',
'class="warning size15x valignmiddle"');
851 $newcardbutton .=
'<span class="valignmiddle marginrightonly paddingleft">'.$langs->trans(
"DocsAlreadyExportedAreIncluded").
'</span>';
852 $newcardbutton .=
'</a>';
855 if ($user->hasRight(
'accounting',
'mouvements',
'export')) {
856 $newcardbutton .=
dolGetButtonTitle($buttonLabel, $langs->trans(
"ExportFilteredList"),
'fa fa-file-export paddingleft', $_SERVER[
"PHP_SELF"].
'?action=export_file&token='.newToken().($param ?
'&'.$param :
'').
'&sortfield='.urlencode($sortfield).
'&sortorder='.urlencode($sortorder), $user->hasRight(
'accounting',
'mouvements',
'export'));
860print_barre_liste($title_page, $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords,
'title_accountancy', 0, $newcardbutton,
'', $limit, 0, 0, 1);
864 print
info_admin($langs->trans(
"WarningDataDisappearsWhenDataIsExported"), 0, 0, 0,
'hideonsmartphone info');
871include DOL_DOCUMENT_ROOT.
'/core/tpl/massactions_pre.tpl.php';
873$varpage = empty($contextpage) ? $_SERVER[
"PHP_SELF"] : $contextpage;
874$selectedfields = $form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage,
getDolGlobalString(
'MAIN_CHECKBOX_LEFT_COLUMN',
''));
875if ($massactionbutton && $contextpage !=
'poslist') {
876 $selectedfields .= $form->showCheckAddButtons(
'checkforselect', 1);
880$moreforfilter .=
'<div class="divsearchfield">';
881$moreforfilter .= $langs->trans(
'AccountingCategory').
': ';
882$moreforfilter .=
'<div class="nowrap inline-block">';
883$moreforfilter .= $formaccounting->select_accounting_category($search_account_category,
'search_account_category', 1, 0, 0, 0);
884$moreforfilter .=
'</div>';
885$moreforfilter .=
'</div>';
887$parameters = array();
888$reshook = $hookmanager->executeHooks(
'printFieldPreListTitle', $parameters, $object, $action);
889if (empty($reshook)) {
890 $moreforfilter .= $hookmanager->resPrint;
892 $moreforfilter = $hookmanager->resPrint;
895print
'<div class="liste_titre liste_titre_bydiv centpercent">';
899print
'<div class="div-table-responsive">';
900print
'<table class="tagtable liste'.($moreforfilter ?
" listwithfilterbefore" :
"").
'">';
903print
'<tr class="liste_titre_filter">';
906 print
'<td class="liste_titre center">';
907 $searchpicto = $form->showFilterButtons(
'left');
912if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
913 print
'<td class="liste_titre"><input type="text" name="search_mvt_num" size="6" value="'.dol_escape_htmltag($search_mvt_num).
'"></td>';
916if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
917 print
'<td class="liste_titre center">';
918 print $formaccounting->multi_select_journal($search_ledger_code,
'search_ledger_code', 0, 1, 1, 1,
'small maxwidth75');
922if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
923 print
'<td class="liste_titre center">';
924 print
'<div class="nowrapfordate">';
925 print $form->selectDate($search_date_start ? $search_date_start : -1,
'search_date_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
927 print
'<div class="nowrapfordate">';
928 print $form->selectDate($search_date_end ? $search_date_end : -1,
'search_date_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
933if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
934 print
'<td class="liste_titre"><input type="text" name="search_doc_ref" size="8" value="'.dol_escape_htmltag($search_doc_ref).
'"></td>';
937if (!empty($arrayfields[
't.numero_compte'][
'checked'])) {
938 print
'<td class="liste_titre">';
939 print
'<div class="nowrap">';
940 print $formaccounting->select_account($search_accountancy_code_start,
'search_accountancy_code_start', $langs->trans(
'From'), array(), 1, 1,
'maxwidth150',
'account');
942 print
'<div class="nowrap">';
943 print $formaccounting->select_account($search_accountancy_code_end,
'search_accountancy_code_end', $langs->trans(
'to'), array(), 1, 1,
'maxwidth150',
'account');
948if (!empty($arrayfields[
't.subledger_account'][
'checked'])) {
949 print
'<td class="liste_titre">';
953 print
'<div class="nowrap">';
955 print $formaccounting->select_auxaccount($search_accountancy_aux_code_start,
'search_accountancy_aux_code_start', $langs->trans(
'From'),
'maxwidth250',
'subledgeraccount');
957 print
'<div class="nowrap">';
958 print $formaccounting->select_auxaccount($search_accountancy_aux_code_end,
'search_accountancy_aux_code_end', $langs->trans(
'to'),
'maxwidth250',
'subledgeraccount');
961 print
'<input type="text" class="maxwidth75" name="search_accountancy_aux_code" value="'.dol_escape_htmltag($search_accountancy_aux_code).
'">';
966if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
967 print
'<td class="liste_titre">';
968 print
'<input type="text" size="7" class="flat" name="search_mvt_label" value="'.dol_escape_htmltag($search_mvt_label).
'"/>';
972if (!empty($arrayfields[
't.debit'][
'checked'])) {
973 print
'<td class="liste_titre right">';
974 print
'<input type="text" class="flat" name="search_debit" size="4" value="'.dol_escape_htmltag($search_debit).
'">';
978if (!empty($arrayfields[
't.credit'][
'checked'])) {
979 print
'<td class="liste_titre right">';
980 print
'<input type="text" class="flat" name="search_credit" size="4" value="'.dol_escape_htmltag($search_credit).
'">';
984if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
985 print
'<td class="liste_titre center">';
986 print
'<input type="text" size="3" class="flat" name="search_lettering_code" value="'.dol_escape_htmltag($search_lettering_code).
'"/>';
987 print
'<br><span class="nowrap"><input type="checkbox" id="search_not_reconciled" name="search_not_reconciled" value="notreconciled"'.($search_not_reconciled ==
'notreconciled' ?
' checked' :
'').
'><label for="search_not_reconciled">'.$langs->trans(
"NotReconciled").
'</label></span>';
992$parameters = array(
'arrayfields'=>$arrayfields);
993$reshook = $hookmanager->executeHooks(
'printFieldListOption', $parameters);
994print $hookmanager->resPrint;
997if (!empty($arrayfields[
't.date_creation'][
'checked'])) {
998 print
'<td class="liste_titre center">';
999 print
'<div class="nowrapfordate">';
1000 print $form->selectDate($search_date_creation_start,
'search_date_creation_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1002 print
'<div class="nowrapfordate">';
1003 print $form->selectDate($search_date_creation_end,
'search_date_creation_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1008if (!empty($arrayfields[
't.tms'][
'checked'])) {
1009 print
'<td class="liste_titre center">';
1010 print
'<div class="nowrapfordate">';
1011 print $form->selectDate($search_date_modification_start,
'search_date_modification_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1013 print
'<div class="nowrapfordate">';
1014 print $form->selectDate($search_date_modification_end,
'search_date_modification_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1019if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1020 print
'<td class="liste_titre center">';
1021 print
'<div class="nowrapfordate">';
1022 print $form->selectDate($search_date_export_start,
'search_date_export_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1024 print
'<div class="nowrapfordate">';
1025 print $form->selectDate($search_date_export_end,
'search_date_export_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1030if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1031 print
'<td class="liste_titre center">';
1032 print
'<div class="nowrapfordate">';
1033 print $form->selectDate($search_date_validation_start,
'search_date_validation_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1035 print
'<div class="nowrapfordate">';
1036 print $form->selectDate($search_date_validation_end,
'search_date_validation_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1040if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1041 print
'<td class="liste_titre center">';
1042 print
'<input class="flat searchstring maxwidth50" type="text" name="search_import_key" value="'.dol_escape_htmltag($search_import_key).
'">';
1047 print
'<td class="liste_titre center">';
1048 $searchpicto = $form->showFilterButtons();
1054print
'<tr class="liste_titre">';
1056 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch actioncolumn ');
1058if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
1059 print_liste_field_titre($arrayfields[
't.piece_num'][
'label'], $_SERVER[
'PHP_SELF'],
"t.piece_num",
"", $param,
"", $sortfield, $sortorder);
1061if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
1062 print_liste_field_titre($arrayfields[
't.code_journal'][
'label'], $_SERVER[
'PHP_SELF'],
"t.code_journal",
"", $param,
'', $sortfield, $sortorder,
'center ');
1064if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1065 print_liste_field_titre($arrayfields[
't.doc_date'][
'label'], $_SERVER[
'PHP_SELF'],
"t.doc_date",
"", $param,
'', $sortfield, $sortorder,
'center ');
1067if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
1068 print_liste_field_titre($arrayfields[
't.doc_ref'][
'label'], $_SERVER[
'PHP_SELF'],
"t.doc_ref",
"", $param,
"", $sortfield, $sortorder);
1070if (!empty($arrayfields[
't.numero_compte'][
'checked'])) {
1071 print_liste_field_titre($arrayfields[
't.numero_compte'][
'label'], $_SERVER[
'PHP_SELF'],
"t.numero_compte",
"", $param,
"", $sortfield, $sortorder);
1073if (!empty($arrayfields[
't.subledger_account'][
'checked'])) {
1074 print_liste_field_titre($arrayfields[
't.subledger_account'][
'label'], $_SERVER[
'PHP_SELF'],
"t.subledger_account",
"", $param,
"", $sortfield, $sortorder);
1076if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1077 print_liste_field_titre($arrayfields[
't.label_operation'][
'label'], $_SERVER[
'PHP_SELF'],
"t.label_operation",
"", $param,
"", $sortfield, $sortorder);
1079if (!empty($arrayfields[
't.debit'][
'checked'])) {
1080 print_liste_field_titre($arrayfields[
't.debit'][
'label'], $_SERVER[
'PHP_SELF'],
"t.debit",
"", $param,
'', $sortfield, $sortorder,
'right ');
1082if (!empty($arrayfields[
't.credit'][
'checked'])) {
1083 print_liste_field_titre($arrayfields[
't.credit'][
'label'], $_SERVER[
'PHP_SELF'],
"t.credit",
"", $param,
'', $sortfield, $sortorder,
'right ');
1085if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1086 print_liste_field_titre($arrayfields[
't.lettering_code'][
'label'], $_SERVER[
'PHP_SELF'],
"t.lettering_code",
"", $param,
'', $sortfield, $sortorder,
'center ');
1089$parameters = array(
'arrayfields'=>$arrayfields,
'param'=>$param,
'sortfield'=>$sortfield,
'sortorder'=>$sortorder);
1090$reshook = $hookmanager->executeHooks(
'printFieldListTitle', $parameters);
1091print $hookmanager->resPrint;
1092if (!empty($arrayfields[
't.date_creation'][
'checked'])) {
1093 print_liste_field_titre($arrayfields[
't.date_creation'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_creation",
"", $param,
'', $sortfield, $sortorder,
'center ');
1095if (!empty($arrayfields[
't.tms'][
'checked'])) {
1096 print_liste_field_titre($arrayfields[
't.tms'][
'label'], $_SERVER[
'PHP_SELF'],
"t.tms",
"", $param,
'', $sortfield, $sortorder,
'center ');
1098if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1099 print_liste_field_titre($arrayfields[
't.date_export'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_export,t.doc_date",
"", $param,
'', $sortfield, $sortorder,
'center ');
1101if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1102 print_liste_field_titre($arrayfields[
't.date_validated'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_validated,t.doc_date",
"", $param,
'', $sortfield, $sortorder,
'center ');
1104if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1105 print_liste_field_titre($arrayfields[
't.import_key'][
'label'], $_SERVER[
"PHP_SELF"],
"t.import_key",
"", $param,
'', $sortfield, $sortorder,
'center ');
1108 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch ');
1118$totalarray = array();
1119$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 $total_debit += $line->debit;
1161 $total_credit += $line->credit;
1163 print
'<tr class="oddeven">';
1166 print
'<td class="nowraponall center">';
1167 if (($massactionbutton || $massaction) && $contextpage !=
'poslist') {
1169 if (in_array($line->id, $arrayofselected)) {
1172 print
'<input id="cb'.$line->id.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$line->id.
'"'.($selected ?
' checked="checked"' :
'').
' />';
1176 $totalarray[
'nbfield']++;
1181 if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
1183 $object->id = $line->id;
1184 $object->piece_num = $line->piece_num;
1185 print $object->getNomUrl(1,
'', 0,
'', 1);
1188 $totalarray[
'nbfield']++;
1193 if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
1195 $result = $accountingjournal->fetch(
'', $line->code_journal);
1196 $journaltoshow = (($result > 0) ? $accountingjournal->getNomUrl(0, 0, 0,
'', 0) : $line->code_journal);
1197 print
'<td class="center tdoverflowmax150">'.$journaltoshow.
'</td>';
1199 $totalarray[
'nbfield']++;
1204 if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1205 print
'<td class="center">'.dol_print_date($line->doc_date,
'day').
'</td>';
1207 $totalarray[
'nbfield']++;
1212 if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
1213 if ($line->doc_type ==
'customer_invoice') {
1214 $langs->loadLangs(array(
'bills'));
1216 require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
1217 $objectstatic =
new Facture($db);
1218 $objectstatic->fetch($line->fk_doc);
1222 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.$objectstatic->id;
1223 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir);
1224 } elseif ($line->doc_type ==
'supplier_invoice') {
1225 $langs->loadLangs(array(
'bills'));
1227 require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.facture.class.php';
1229 $objectstatic->fetch($line->fk_doc);
1232 $filedir = $conf->fournisseur->facture->dir_output.
'/'.
get_exdir($line->fk_doc, 2, 0, 0, $objectstatic, $objectstatic->element).dol_sanitizeFileName($line->doc_ref);
1233 $subdir =
get_exdir($objectstatic->id, 2, 0, 0, $objectstatic, $objectstatic->element).dol_sanitizeFileName($line->doc_ref);
1234 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $subdir, $filedir);
1235 } elseif ($line->doc_type ==
'expense_report') {
1236 $langs->loadLangs(array(
'trips'));
1238 require_once DOL_DOCUMENT_ROOT.
'/expensereport/class/expensereport.class.php';
1240 $objectstatic->fetch($line->fk_doc);
1244 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.$objectstatic->id;
1245 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir);
1246 } elseif ($line->doc_type ==
'bank') {
1247 require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
1249 $objectstatic->fetch($line->fk_doc);
1255 $labeltoshowalt =
'';
1256 if ($line->doc_type ==
'customer_invoice' || $line->doc_type ==
'supplier_invoice' || $line->doc_type ==
'expense_report') {
1257 $labeltoshow .= $objectstatic->getNomUrl(1,
'', 0, 0,
'', 0, -1, 1);
1258 $labeltoshow .= $documentlink;
1259 $labeltoshowalt .= $objectstatic->ref;
1260 } elseif ($line->doc_type ==
'bank') {
1261 $labeltoshow .= $objectstatic->getNomUrl(1);
1262 $labeltoshowalt .= $objectstatic->ref;
1263 $bank_ref = strstr($line->doc_ref,
'-');
1264 $labeltoshow .=
" " . $bank_ref;
1265 $labeltoshowalt .=
" " . $bank_ref;
1267 $labeltoshow .= $line->doc_ref;
1268 $labeltoshowalt .= $line->doc_ref;
1271 print
'<td class="nowraponall tdoverflowmax200" title="'.dol_escape_htmltag($labeltoshowalt).
'">';
1275 $totalarray[
'nbfield']++;
1280 if (!empty($arrayfields[
't.numero_compte'][
'checked'])) {
1281 print
'<td>'.length_accountg($line->numero_compte).
'</td>';
1283 $totalarray[
'nbfield']++;
1288 if (!empty($arrayfields[
't.subledger_account'][
'checked'])) {
1289 print
'<td>'.length_accounta($line->subledger_account).
'</td>';
1291 $totalarray[
'nbfield']++;
1296 if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1297 print
'<td class="small tdoverflowmax200" title="'.dol_escape_htmltag($line->label_operation).
'">'.
dol_escape_htmltag($line->label_operation).
'</td>';
1299 $totalarray[
'nbfield']++;
1304 if (!empty($arrayfields[
't.debit'][
'checked'])) {
1305 print
'<td class="right nowraponall amount">'.($line->debit != 0 ?
price($line->debit) :
'').
'</td>';
1307 $totalarray[
'nbfield']++;
1310 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'totaldebit';
1312 $totalarray[
'val'][
'totaldebit'] += $line->debit;
1316 if (!empty($arrayfields[
't.credit'][
'checked'])) {
1317 print
'<td class="right nowraponall amount">'.($line->credit != 0 ?
price($line->credit) :
'').
'</td>';
1319 $totalarray[
'nbfield']++;
1322 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'totalcredit';
1324 $totalarray[
'val'][
'totalcredit'] += $line->credit;
1328 if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1329 print
'<td class="center">'.$line->lettering_code.
'</td>';
1331 $totalarray[
'nbfield']++;
1336 $parameters = array(
'arrayfields'=>$arrayfields,
'obj'=>$obj,
'i'=>$i,
'totalarray'=>&$totalarray);
1337 $reshook = $hookmanager->executeHooks(
'printFieldListValue', $parameters);
1338 print $hookmanager->resPrint;
1341 if (!empty($arrayfields[
't.date_creation'][
'checked'])) {
1342 print
'<td class="center">'.dol_print_date($line->date_creation,
'dayhour',
'tzuserrel').
'</td>';
1344 $totalarray[
'nbfield']++;
1349 if (!empty($arrayfields[
't.tms'][
'checked'])) {
1350 print
'<td class="center">'.dol_print_date($line->date_modification,
'dayhour',
'tzuserrel').
'</td>';
1352 $totalarray[
'nbfield']++;
1357 if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1358 print
'<td class="center nowraponall">'.dol_print_date($line->date_export,
'dayhour',
'tzuserrel').
'</td>';
1360 $totalarray[
'nbfield']++;
1365 if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1366 print
'<td class="center nowraponall">'.dol_print_date($line->date_validation,
'dayhour',
'tzuserrel').
'</td>';
1368 $totalarray[
'nbfield']++;
1372 if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1373 print
'<td class="tdoverflowmax100">'.$obj->import_key.
"</td>\n";
1375 $totalarray[
'nbfield']++;
1381 print
'<td class="nowraponall center">';
1382 if (($massactionbutton || $massaction) && $contextpage !=
'poslist') {
1384 if (in_array($line->id, $arrayofselected)) {
1387 print
'<input id="cb'.$line->id.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$line->id.
'"'.($selected ?
' checked="checked"' :
'').
' />';
1391 $totalarray[
'nbfield']++;
1402include DOL_DOCUMENT_ROOT.
'/core/tpl/list_print_total.tpl.php';
1407 foreach ($arrayfields as $key => $val) {
1408 if (!empty($val[
'checked'])) {
1412 print
'<tr><td colspan="'.$colspan.
'"><span class="opacitymedium">'.$langs->trans(
"NoRecordFound").
'</span></td></tr>';
1415$parameters = array(
'arrayfields'=>$arrayfields,
'sql'=>$sql);
1416$reshook = $hookmanager->executeHooks(
'printFieldListFooter', $parameters, $object, $action);
1417print $hookmanager->resPrint;
dolibarr_set_const($db, $name, $value, $type='chaine', $visible=0, $note='', $entity=1)
Insert a parameter (key,value) into database (delete old key then insert it again).
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.
Manage the different format accountancy export.
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 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 a 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.
info_admin($text, $infoonimgalt=0, $nodiv=0, $admin='1', $morecss='hideonsmartphone', $textfordropdown='')
Show information for admin users or standard users.
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.
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
get_exdir($num, $level, $alpha, $withoutslash, $object, $modulepart='')
Return a path to have a the directory according to object where files are stored.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
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.