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[
'id']).
"'";
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 if (
getDolGlobalString(
'ACCOUNTING_EXPORT_MODELCSV') == AccountancyExport::$EXPORT_TYPE_QUADRATUS
770 ||
getDolGlobalString(
'ACCOUNTING_EXPORT_MODELCSV') == AccountancyExport::$EXPORT_TYPE_FEC
771 ||
getDolGlobalString(
'ACCOUNTING_EXPORT_MODELCSV') == AccountancyExport::$EXPORT_TYPE_FEC2
773 $form_question[
'notifiedexportfull'] = array(
774 'name' =>
'notifiedexportfull',
775 'type' =>
'checkbox',
776 'label' => $langs->trans(
'NotifiedExportFull'),
781 $formconfirm = $form->formconfirm($_SERVER[
"PHP_SELF"].
'?'.$param, $langs->trans(
"ExportFilteredList").
'...', $langs->trans(
'ConfirmExportFile'),
'export_fileconfirm', $form_question,
'', 1, 420, 600);
788if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
789 $param .=
'&contextpage='.urlencode($contextpage);
791if ($limit > 0 && $limit != $conf->liste_limit) {
792 $param .=
'&limit='.urlencode($limit);
796$arrayofmassactions = array();
797$massactionbutton = $form->selectMassAction($massaction, $arrayofmassactions);
799print
'<form method="POST" id="searchFormList" action="'.$_SERVER[
"PHP_SELF"].
'">';
800print
'<input type="hidden" name="token" value="'.newToken().
'">';
801print
'<input type="hidden" name="action" value="list">';
802if ($optioncss !=
'') {
803 print
'<input type="hidden" name="optioncss" value="'.urlencode($optioncss).
'">';
805print
'<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
806print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
807print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
808print
'<input type="hidden" name="contextpage" value="'.$contextpage.
'">';
811 $buttonLabel = $langs->trans(
"ExportFilteredList");
813 $buttonLabel = $langs->trans(
"ExportList");
816$parameters = array(
'param' => $param);
817$reshook = $hookmanager->executeHooks(
'addMoreActionsButtonsList', $parameters, $object, $action);
822$newcardbutton = empty($hookmanager->resPrint) ?
'' : $hookmanager->resPrint;
823if (empty($reshook)) {
826 $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"');
827 $newcardbutton .=
'<span class="valignmiddle marginrightonly paddingleft">'.$langs->trans(
"ClickToShowAlreadyExportedLines").
'</span>';
828 $newcardbutton .=
'</a>';
830 $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"');
831 $newcardbutton .=
'<span class="valignmiddle marginrightonly paddingleft">'.$langs->trans(
"DocsAlreadyExportedAreIncluded").
'</span>';
832 $newcardbutton .=
'</a>';
835 if ($user->hasRight(
'accounting',
'mouvements',
'export')) {
836 $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'));
840print_barre_liste($title_page, $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords,
'title_accountancy', 0, $newcardbutton,
'', $limit, 0, 0, 1);
844 print
info_admin($langs->trans(
"WarningDataDisappearsWhenDataIsExported"), 0, 0, 0,
'hideonsmartphone info');
851include DOL_DOCUMENT_ROOT.
'/core/tpl/massactions_pre.tpl.php';
853$varpage = empty($contextpage) ? $_SERVER[
"PHP_SELF"] : $contextpage;
854$selectedfields = $form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage,
getDolGlobalString(
'MAIN_CHECKBOX_LEFT_COLUMN',
''));
855if ($massactionbutton && $contextpage !=
'poslist') {
856 $selectedfields .= $form->showCheckAddButtons(
'checkforselect', 1);
860$moreforfilter .=
'<div class="divsearchfield">';
861$moreforfilter .= $langs->trans(
'AccountingCategory').
': ';
862$moreforfilter .=
'<div class="nowrap inline-block">';
863$moreforfilter .= $formaccounting->select_accounting_category($search_account_category,
'search_account_category', 1, 0, 0, 0);
864$moreforfilter .=
'</div>';
865$moreforfilter .=
'</div>';
867$parameters = array();
868$reshook = $hookmanager->executeHooks(
'printFieldPreListTitle', $parameters, $object, $action);
869if (empty($reshook)) {
870 $moreforfilter .= $hookmanager->resPrint;
872 $moreforfilter = $hookmanager->resPrint;
875print
'<div class="liste_titre liste_titre_bydiv centpercent">';
879print
'<div class="div-table-responsive">';
880print
'<table class="tagtable liste'.($moreforfilter ?
" listwithfilterbefore" :
"").
'">';
883print
'<tr class="liste_titre_filter">';
886 print
'<td class="liste_titre center">';
887 $searchpicto = $form->showFilterButtons(
'left');
892if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
893 print
'<td class="liste_titre"><input type="text" name="search_mvt_num" size="6" value="'.dol_escape_htmltag($search_mvt_num).
'"></td>';
896if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
897 print
'<td class="liste_titre center">';
898 print $formaccounting->multi_select_journal($search_ledger_code,
'search_ledger_code', 0, 1, 1, 1,
'small maxwidth75');
902if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
903 print
'<td class="liste_titre center">';
904 print
'<div class="nowrapfordate">';
905 print $form->selectDate($search_date_start ? $search_date_start : -1,
'search_date_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
907 print
'<div class="nowrapfordate">';
908 print $form->selectDate($search_date_end ? $search_date_end : -1,
'search_date_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
913if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
914 print
'<td class="liste_titre"><input type="text" name="search_doc_ref" size="8" value="'.dol_escape_htmltag($search_doc_ref).
'"></td>';
917if (!empty($arrayfields[
't.numero_compte'][
'checked'])) {
918 print
'<td class="liste_titre">';
919 print
'<div class="nowrap">';
920 print $formaccounting->select_account($search_accountancy_code_start,
'search_accountancy_code_start', $langs->trans(
'From'), array(), 1, 1,
'maxwidth150',
'account');
922 print
'<div class="nowrap">';
923 print $formaccounting->select_account($search_accountancy_code_end,
'search_accountancy_code_end', $langs->trans(
'to'), array(), 1, 1,
'maxwidth150',
'account');
928if (!empty($arrayfields[
't.subledger_account'][
'checked'])) {
929 print
'<td class="liste_titre">';
933 print
'<div class="nowrap">';
935 print $formaccounting->select_auxaccount($search_accountancy_aux_code_start,
'search_accountancy_aux_code_start', $langs->trans(
'From'),
'maxwidth250',
'subledgeraccount');
937 print
'<div class="nowrap">';
938 print $formaccounting->select_auxaccount($search_accountancy_aux_code_end,
'search_accountancy_aux_code_end', $langs->trans(
'to'),
'maxwidth250',
'subledgeraccount');
941 print
'<input type="text" class="maxwidth75" name="search_accountancy_aux_code" value="'.dol_escape_htmltag($search_accountancy_aux_code).
'">';
946if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
947 print
'<td class="liste_titre">';
948 print
'<input type="text" size="7" class="flat" name="search_mvt_label" value="'.dol_escape_htmltag($search_mvt_label).
'"/>';
952if (!empty($arrayfields[
't.debit'][
'checked'])) {
953 print
'<td class="liste_titre right">';
954 print
'<input type="text" class="flat" name="search_debit" size="4" value="'.dol_escape_htmltag($search_debit).
'">';
958if (!empty($arrayfields[
't.credit'][
'checked'])) {
959 print
'<td class="liste_titre right">';
960 print
'<input type="text" class="flat" name="search_credit" size="4" value="'.dol_escape_htmltag($search_credit).
'">';
964if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
965 print
'<td class="liste_titre center">';
966 print
'<input type="text" size="3" class="flat" name="search_lettering_code" value="'.dol_escape_htmltag($search_lettering_code).
'"/>';
967 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>';
972$parameters = array(
'arrayfields'=>$arrayfields);
973$reshook = $hookmanager->executeHooks(
'printFieldListOption', $parameters);
974print $hookmanager->resPrint;
977if (!empty($arrayfields[
't.date_creation'][
'checked'])) {
978 print
'<td class="liste_titre center">';
979 print
'<div class="nowrapfordate">';
980 print $form->selectDate($search_date_creation_start,
'search_date_creation_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
982 print
'<div class="nowrapfordate">';
983 print $form->selectDate($search_date_creation_end,
'search_date_creation_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
988if (!empty($arrayfields[
't.tms'][
'checked'])) {
989 print
'<td class="liste_titre center">';
990 print
'<div class="nowrapfordate">';
991 print $form->selectDate($search_date_modification_start,
'search_date_modification_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
993 print
'<div class="nowrapfordate">';
994 print $form->selectDate($search_date_modification_end,
'search_date_modification_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
999if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1000 print
'<td class="liste_titre center">';
1001 print
'<div class="nowrapfordate">';
1002 print $form->selectDate($search_date_export_start,
'search_date_export_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1004 print
'<div class="nowrapfordate">';
1005 print $form->selectDate($search_date_export_end,
'search_date_export_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1010if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1011 print
'<td class="liste_titre center">';
1012 print
'<div class="nowrapfordate">';
1013 print $form->selectDate($search_date_validation_start,
'search_date_validation_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1015 print
'<div class="nowrapfordate">';
1016 print $form->selectDate($search_date_validation_end,
'search_date_validation_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1020if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1021 print
'<td class="liste_titre center">';
1022 print
'<input class="flat searchstring maxwidth50" type="text" name="search_import_key" value="'.dol_escape_htmltag($search_import_key).
'">';
1027 print
'<td class="liste_titre center">';
1028 $searchpicto = $form->showFilterButtons();
1034print
'<tr class="liste_titre">';
1036 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch actioncolumn ');
1038if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
1039 print_liste_field_titre($arrayfields[
't.piece_num'][
'label'], $_SERVER[
'PHP_SELF'],
"t.piece_num",
"", $param,
"", $sortfield, $sortorder);
1041if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
1042 print_liste_field_titre($arrayfields[
't.code_journal'][
'label'], $_SERVER[
'PHP_SELF'],
"t.code_journal",
"", $param,
'', $sortfield, $sortorder,
'center ');
1044if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1045 print_liste_field_titre($arrayfields[
't.doc_date'][
'label'], $_SERVER[
'PHP_SELF'],
"t.doc_date",
"", $param,
'', $sortfield, $sortorder,
'center ');
1047if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
1048 print_liste_field_titre($arrayfields[
't.doc_ref'][
'label'], $_SERVER[
'PHP_SELF'],
"t.doc_ref",
"", $param,
"", $sortfield, $sortorder);
1050if (!empty($arrayfields[
't.numero_compte'][
'checked'])) {
1051 print_liste_field_titre($arrayfields[
't.numero_compte'][
'label'], $_SERVER[
'PHP_SELF'],
"t.numero_compte",
"", $param,
"", $sortfield, $sortorder);
1053if (!empty($arrayfields[
't.subledger_account'][
'checked'])) {
1054 print_liste_field_titre($arrayfields[
't.subledger_account'][
'label'], $_SERVER[
'PHP_SELF'],
"t.subledger_account",
"", $param,
"", $sortfield, $sortorder);
1056if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1057 print_liste_field_titre($arrayfields[
't.label_operation'][
'label'], $_SERVER[
'PHP_SELF'],
"t.label_operation",
"", $param,
"", $sortfield, $sortorder);
1059if (!empty($arrayfields[
't.debit'][
'checked'])) {
1060 print_liste_field_titre($arrayfields[
't.debit'][
'label'], $_SERVER[
'PHP_SELF'],
"t.debit",
"", $param,
'', $sortfield, $sortorder,
'right ');
1062if (!empty($arrayfields[
't.credit'][
'checked'])) {
1063 print_liste_field_titre($arrayfields[
't.credit'][
'label'], $_SERVER[
'PHP_SELF'],
"t.credit",
"", $param,
'', $sortfield, $sortorder,
'right ');
1065if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1066 print_liste_field_titre($arrayfields[
't.lettering_code'][
'label'], $_SERVER[
'PHP_SELF'],
"t.lettering_code",
"", $param,
'', $sortfield, $sortorder,
'center ');
1069$parameters = array(
'arrayfields'=>$arrayfields,
'param'=>$param,
'sortfield'=>$sortfield,
'sortorder'=>$sortorder);
1070$reshook = $hookmanager->executeHooks(
'printFieldListTitle', $parameters);
1071print $hookmanager->resPrint;
1072if (!empty($arrayfields[
't.date_creation'][
'checked'])) {
1073 print_liste_field_titre($arrayfields[
't.date_creation'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_creation",
"", $param,
'', $sortfield, $sortorder,
'center ');
1075if (!empty($arrayfields[
't.tms'][
'checked'])) {
1076 print_liste_field_titre($arrayfields[
't.tms'][
'label'], $_SERVER[
'PHP_SELF'],
"t.tms",
"", $param,
'', $sortfield, $sortorder,
'center ');
1078if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1079 print_liste_field_titre($arrayfields[
't.date_export'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_export,t.doc_date",
"", $param,
'', $sortfield, $sortorder,
'center ');
1081if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1082 print_liste_field_titre($arrayfields[
't.date_validated'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_validated,t.doc_date",
"", $param,
'', $sortfield, $sortorder,
'center ');
1084if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1085 print_liste_field_titre($arrayfields[
't.import_key'][
'label'], $_SERVER[
"PHP_SELF"],
"t.import_key",
"", $param,
'', $sortfield, $sortorder,
'center ');
1088 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch ');
1098$totalarray = array();
1099$totalarray[
'nbfield'] = 0;
1102$totalarray[
'val'] = array();
1103$totalarray[
'val'][
'totaldebit'] = 0;
1104$totalarray[
'val'][
'totalcredit'] = 0;
1106while ($i < min($num, $limit)) {
1107 $obj = $db->fetch_object($resql);
1112 $line->id = $obj->rowid;
1113 $line->doc_date = $db->jdate($obj->doc_date);
1114 $line->doc_type = $obj->doc_type;
1115 $line->doc_ref = $obj->doc_ref;
1116 $line->fk_doc = $obj->fk_doc;
1117 $line->fk_docdet = $obj->fk_docdet;
1118 $line->thirdparty_code = $obj->thirdparty_code;
1119 $line->subledger_account = $obj->subledger_account;
1120 $line->subledger_label = $obj->subledger_label;
1121 $line->numero_compte = $obj->numero_compte;
1122 $line->label_compte = $obj->label_compte;
1123 $line->label_operation = $obj->label_operation;
1124 $line->debit = $obj->debit;
1125 $line->credit = $obj->credit;
1126 $line->montant = $obj->amount;
1127 $line->amount = $obj->amount;
1128 $line->sens = $obj->sens;
1129 $line->lettering_code = $obj->lettering_code;
1130 $line->fk_user_author = $obj->fk_user_author;
1131 $line->import_key = $obj->import_key;
1132 $line->code_journal = $obj->code_journal;
1133 $line->journal_label = $obj->journal_label;
1134 $line->piece_num = $obj->piece_num;
1135 $line->date_creation = $db->jdate($obj->date_creation);
1136 $line->date_modification = $db->jdate($obj->date_modification);
1137 $line->date_export = $db->jdate($obj->date_export);
1138 $line->date_validation = $db->jdate($obj->date_validation);
1140 $total_debit += $line->debit;
1141 $total_credit += $line->credit;
1143 print
'<tr class="oddeven">';
1146 print
'<td class="nowraponall center">';
1147 if (($massactionbutton || $massaction) && $contextpage !=
'poslist') {
1149 if (in_array($line->id, $arrayofselected)) {
1152 print
'<input id="cb'.$line->id.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$line->id.
'"'.($selected ?
' checked="checked"' :
'').
' />';
1156 $totalarray[
'nbfield']++;
1161 if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
1163 $object->id = $line->id;
1164 $object->piece_num = $line->piece_num;
1165 print $object->getNomUrl(1,
'', 0,
'', 1);
1168 $totalarray[
'nbfield']++;
1173 if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
1175 $result = $accountingjournal->fetch(
'', $line->code_journal);
1176 $journaltoshow = (($result > 0) ? $accountingjournal->getNomUrl(0, 0, 0,
'', 0) : $line->code_journal);
1177 print
'<td class="center tdoverflowmax150">'.$journaltoshow.
'</td>';
1179 $totalarray[
'nbfield']++;
1184 if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1185 print
'<td class="center">'.dol_print_date($line->doc_date,
'day').
'</td>';
1187 $totalarray[
'nbfield']++;
1192 if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
1193 if ($line->doc_type ==
'customer_invoice') {
1194 $langs->loadLangs(array(
'bills'));
1196 require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
1197 $objectstatic =
new Facture($db);
1198 $objectstatic->fetch($line->fk_doc);
1202 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.$objectstatic->id;
1203 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir);
1204 } elseif ($line->doc_type ==
'supplier_invoice') {
1205 $langs->loadLangs(array(
'bills'));
1207 require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.facture.class.php';
1209 $objectstatic->fetch($line->fk_doc);
1212 $filedir = $conf->fournisseur->facture->dir_output.
'/'.
get_exdir($line->fk_doc, 2, 0, 0, $objectstatic, $objectstatic->element).dol_sanitizeFileName($line->doc_ref);
1213 $subdir =
get_exdir($objectstatic->id, 2, 0, 0, $objectstatic, $objectstatic->element).dol_sanitizeFileName($line->doc_ref);
1214 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $subdir, $filedir);
1215 } elseif ($line->doc_type ==
'expense_report') {
1216 $langs->loadLangs(array(
'trips'));
1218 require_once DOL_DOCUMENT_ROOT.
'/expensereport/class/expensereport.class.php';
1220 $objectstatic->fetch($line->fk_doc);
1224 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.$objectstatic->id;
1225 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir);
1226 } elseif ($line->doc_type ==
'bank') {
1227 require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
1229 $objectstatic->fetch($line->fk_doc);
1235 $labeltoshowalt =
'';
1236 if ($line->doc_type ==
'customer_invoice' || $line->doc_type ==
'supplier_invoice' || $line->doc_type ==
'expense_report') {
1237 $labeltoshow .= $objectstatic->getNomUrl(1,
'', 0, 0,
'', 0, -1, 1);
1238 $labeltoshow .= $documentlink;
1239 $labeltoshowalt .= $objectstatic->ref;
1240 } elseif ($line->doc_type ==
'bank') {
1241 $labeltoshow .= $objectstatic->getNomUrl(1);
1242 $labeltoshowalt .= $objectstatic->ref;
1243 $bank_ref = strstr($line->doc_ref,
'-');
1244 $labeltoshow .=
" " . $bank_ref;
1245 $labeltoshowalt .=
" " . $bank_ref;
1247 $labeltoshow .= $line->doc_ref;
1248 $labeltoshowalt .= $line->doc_ref;
1251 print
'<td class="nowraponall tdoverflowmax200" title="'.dol_escape_htmltag($labeltoshowalt).
'">';
1255 $totalarray[
'nbfield']++;
1260 if (!empty($arrayfields[
't.numero_compte'][
'checked'])) {
1261 print
'<td>'.length_accountg($line->numero_compte).
'</td>';
1263 $totalarray[
'nbfield']++;
1268 if (!empty($arrayfields[
't.subledger_account'][
'checked'])) {
1269 print
'<td>'.length_accounta($line->subledger_account).
'</td>';
1271 $totalarray[
'nbfield']++;
1276 if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1277 print
'<td class="small tdoverflowmax200" title="'.dol_escape_htmltag($line->label_operation).
'">'.
dol_escape_htmltag($line->label_operation).
'</td>';
1279 $totalarray[
'nbfield']++;
1284 if (!empty($arrayfields[
't.debit'][
'checked'])) {
1285 print
'<td class="right nowraponall amount">'.($line->debit != 0 ?
price($line->debit) :
'').
'</td>';
1287 $totalarray[
'nbfield']++;
1290 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'totaldebit';
1292 $totalarray[
'val'][
'totaldebit'] += $line->debit;
1296 if (!empty($arrayfields[
't.credit'][
'checked'])) {
1297 print
'<td class="right nowraponall amount">'.($line->credit != 0 ?
price($line->credit) :
'').
'</td>';
1299 $totalarray[
'nbfield']++;
1302 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'totalcredit';
1304 $totalarray[
'val'][
'totalcredit'] += $line->credit;
1308 if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1309 print
'<td class="center">'.$line->lettering_code.
'</td>';
1311 $totalarray[
'nbfield']++;
1316 $parameters = array(
'arrayfields'=>$arrayfields,
'obj'=>$obj,
'i'=>$i,
'totalarray'=>&$totalarray);
1317 $reshook = $hookmanager->executeHooks(
'printFieldListValue', $parameters);
1318 print $hookmanager->resPrint;
1321 if (!empty($arrayfields[
't.date_creation'][
'checked'])) {
1322 print
'<td class="center">'.dol_print_date($line->date_creation,
'dayhour',
'tzuserrel').
'</td>';
1324 $totalarray[
'nbfield']++;
1329 if (!empty($arrayfields[
't.tms'][
'checked'])) {
1330 print
'<td class="center">'.dol_print_date($line->date_modification,
'dayhour',
'tzuserrel').
'</td>';
1332 $totalarray[
'nbfield']++;
1337 if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1338 print
'<td class="center nowraponall">'.dol_print_date($line->date_export,
'dayhour',
'tzuserrel').
'</td>';
1340 $totalarray[
'nbfield']++;
1345 if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1346 print
'<td class="center nowraponall">'.dol_print_date($line->date_validation,
'dayhour',
'tzuserrel').
'</td>';
1348 $totalarray[
'nbfield']++;
1352 if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1353 print
'<td class="tdoverflowmax100">'.$obj->import_key.
"</td>\n";
1355 $totalarray[
'nbfield']++;
1361 print
'<td class="nowraponall center">';
1362 if (($massactionbutton || $massaction) && $contextpage !=
'poslist') {
1364 if (in_array($line->id, $arrayofselected)) {
1367 print
'<input id="cb'.$line->id.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$line->id.
'"'.($selected ?
' checked="checked"' :
'').
' />';
1371 $totalarray[
'nbfield']++;
1382include DOL_DOCUMENT_ROOT.
'/core/tpl/list_print_total.tpl.php';
1387 foreach ($arrayfields as $key => $val) {
1388 if (!empty($val[
'checked'])) {
1392 print
'<tr><td colspan="'.$colspan.
'"><span class="opacitymedium">'.$langs->trans(
"NoRecordFound").
'</span></td></tr>';
1395$parameters = array(
'arrayfields'=>$arrayfields,
'sql'=>$sql);
1396$reshook = $hookmanager->executeHooks(
'printFieldListFooter', $parameters, $object, $action);
1397print $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.