32require
'../../main.inc.php';
33require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountancyexport.class.php';
34require_once DOL_DOCUMENT_ROOT.
'/core/lib/accounting.lib.php';
35require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/lettering.class.php';
36require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/bookkeeping.class.php';
37require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountingjournal.class.php';
38require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formfile.class.php';
39require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formother.class.php';
40require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formaccounting.class.php';
41require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
42require_once DOL_DOCUMENT_ROOT.
'/core/lib/admin.lib.php';
53$langs->loadLangs(array(
"accountancy",
"compta"));
57$action =
GETPOST(
'action',
'aZ09');
58$massaction =
GETPOST(
'massaction',
'alpha');
59$confirm =
GETPOST(
'confirm',
'alpha');
60$toselect =
GETPOST(
'toselect',
'array');
61$contextpage =
GETPOST(
'contextpage',
'aZ') ?
GETPOST(
'contextpage',
'aZ') :
'bookkeepinglist';
62$search_mvt_num =
GETPOST(
'search_mvt_num',
'alpha');
63$search_doc_type =
GETPOST(
"search_doc_type",
'alpha');
64$search_doc_ref =
GETPOST(
"search_doc_ref",
'alpha');
65$search_date_startyear =
GETPOSTINT(
'search_date_startyear');
66$search_date_startmonth =
GETPOSTINT(
'search_date_startmonth');
67$search_date_startday =
GETPOSTINT(
'search_date_startday');
68$search_date_endyear =
GETPOSTINT(
'search_date_endyear');
69$search_date_endmonth =
GETPOSTINT(
'search_date_endmonth');
70$search_date_endday =
GETPOSTINT(
'search_date_endday');
71$search_date_start =
dol_mktime(0, 0, 0, $search_date_startmonth, $search_date_startday, $search_date_startyear);
72$search_date_end =
dol_mktime(23, 59, 59, $search_date_endmonth, $search_date_endday, $search_date_endyear);
74$search_date_creation_startyear =
GETPOSTINT(
'search_date_creation_startyear');
75$search_date_creation_startmonth =
GETPOSTINT(
'search_date_creation_startmonth');
76$search_date_creation_startday =
GETPOSTINT(
'search_date_creation_startday');
77$search_date_creation_endyear =
GETPOSTINT(
'search_date_creation_endyear');
78$search_date_creation_endmonth =
GETPOSTINT(
'search_date_creation_endmonth');
79$search_date_creation_endday =
GETPOSTINT(
'search_date_creation_endday');
80$search_date_creation_start =
dol_mktime(0, 0, 0, $search_date_creation_startmonth, $search_date_creation_startday, $search_date_creation_startyear);
81$search_date_creation_end =
dol_mktime(23, 59, 59, $search_date_creation_endmonth, $search_date_creation_endday, $search_date_creation_endyear);
82$search_date_modification_startyear =
GETPOSTINT(
'search_date_modification_startyear');
83$search_date_modification_startmonth =
GETPOSTINT(
'search_date_modification_startmonth');
84$search_date_modification_startday =
GETPOSTINT(
'search_date_modification_startday');
85$search_date_modification_endyear =
GETPOSTINT(
'search_date_modification_endyear');
86$search_date_modification_endmonth =
GETPOSTINT(
'search_date_modification_endmonth');
87$search_date_modification_endday =
GETPOSTINT(
'search_date_modification_endday');
88$search_date_modification_start =
dol_mktime(0, 0, 0, $search_date_modification_startmonth, $search_date_modification_startday, $search_date_modification_startyear);
89$search_date_modification_end =
dol_mktime(23, 59, 59, $search_date_modification_endmonth, $search_date_modification_endday, $search_date_modification_endyear);
90$search_date_export_startyear =
GETPOSTINT(
'search_date_export_startyear');
91$search_date_export_startmonth =
GETPOSTINT(
'search_date_export_startmonth');
92$search_date_export_startday =
GETPOSTINT(
'search_date_export_startday');
93$search_date_export_endyear =
GETPOSTINT(
'search_date_export_endyear');
94$search_date_export_endmonth =
GETPOSTINT(
'search_date_export_endmonth');
95$search_date_export_endday =
GETPOSTINT(
'search_date_export_endday');
96$search_date_export_start =
dol_mktime(0, 0, 0, $search_date_export_startmonth, $search_date_export_startday, $search_date_export_startyear);
97$search_date_export_end =
dol_mktime(23, 59, 59, $search_date_export_endmonth, $search_date_export_endday, $search_date_export_endyear);
98$search_date_validation_startyear =
GETPOSTINT(
'search_date_validation_startyear');
99$search_date_validation_startmonth =
GETPOSTINT(
'search_date_validation_startmonth');
100$search_date_validation_startday =
GETPOSTINT(
'search_date_validation_startday');
101$search_date_validation_endyear =
GETPOSTINT(
'search_date_validation_endyear');
102$search_date_validation_endmonth =
GETPOSTINT(
'search_date_validation_endmonth');
103$search_date_validation_endday =
GETPOSTINT(
'search_date_validation_endday');
104$search_date_validation_start =
dol_mktime(0, 0, 0, $search_date_validation_startmonth, $search_date_validation_startday, $search_date_validation_startyear);
105$search_date_validation_end =
dol_mktime(23, 59, 59, $search_date_validation_endmonth, $search_date_validation_endday, $search_date_validation_endyear);
106$search_import_key =
GETPOST(
"search_import_key",
'alpha');
110 $action =
'delbookkeepingyear';
112if (
GETPOST(
"button_export_file_x") ||
GETPOST(
"button_export_file.x") ||
GETPOST(
"button_export_file")) {
113 $action =
'export_file';
116$search_account_category =
GETPOSTINT(
'search_account_category');
118$search_accountancy_code =
GETPOST(
"search_accountancy_code",
'alpha');
119$search_accountancy_code_start =
GETPOST(
'search_accountancy_code_start',
'alpha');
120if ($search_accountancy_code_start == - 1) {
121 $search_accountancy_code_start =
'';
123$search_accountancy_code_end =
GETPOST(
'search_accountancy_code_end',
'alpha');
124if ($search_accountancy_code_end == - 1) {
125 $search_accountancy_code_end =
'';
128$search_accountancy_aux_code =
GETPOST(
"search_accountancy_aux_code",
'alpha');
129$search_accountancy_aux_code_start =
GETPOST(
'search_accountancy_aux_code_start',
'alpha');
130if ($search_accountancy_aux_code_start == - 1) {
131 $search_accountancy_aux_code_start =
'';
133$search_accountancy_aux_code_end =
GETPOST(
'search_accountancy_aux_code_end',
'alpha');
134if ($search_accountancy_aux_code_end == - 1) {
135 $search_accountancy_aux_code_end =
'';
137$search_mvt_label =
GETPOST(
'search_mvt_label',
'alpha');
138$search_direction =
GETPOST(
'search_direction',
'alpha');
139$search_debit =
GETPOST(
'search_debit',
'alpha');
140$search_credit =
GETPOST(
'search_credit',
'alpha');
141$search_ledger_code =
GETPOST(
'search_ledger_code',
'array');
142$search_lettering_code =
GETPOST(
'search_lettering_code',
'alpha');
143$search_not_reconciled =
GETPOST(
'search_not_reconciled',
'alpha');
147$sortfield =
GETPOST(
'sortfield',
'aZ09comma');
148$sortorder =
GETPOST(
'sortorder',
'aZ09comma');
149$optioncss =
GETPOST(
'optioncss',
'alpha');
151if (empty($page) || $page < 0) {
154$offset = $limit * $page;
155$pageprev = $page - 1;
156$pagenext = $page + 1;
157if ($sortorder ==
"") {
160if ($sortfield ==
"") {
161 $sortfield =
"t.piece_num,t.rowid";
166$hookmanager->initHooks(array(
'bookkeepingexport'));
169$form =
new Form($db);
171if (!in_array($action, array(
'export_file',
'delmouv',
'delmouvconfirm')) && !GETPOSTISSET(
'begin') && !GETPOSTISSET(
'formfilteraction') &&
GETPOSTINT(
'page') ==
'' && !
GETPOSTINT(
'noreset') && $user->hasRight(
'accounting',
'mouvements',
'export')) {
172 if (empty($search_date_start) && empty($search_date_end) && !GETPOSTISSET(
'restore_lastsearch_values') && !
GETPOST(
'search_accountancy_code_start')) {
173 $query =
"SELECT date_start, date_end from ".MAIN_DB_PREFIX.
"accounting_fiscalyear ";
174 $query .=
" where date_start < '".$db->idate(
dol_now()).
"' and date_end > '".$db->idate(
dol_now()).
"' limit 1";
175 $res = $db->query($query);
177 if ($db->num_rows($res) > 0) {
178 $fiscalYear = $db->fetch_object($res);
179 $search_date_start = strtotime($fiscalYear->date_start);
180 $search_date_end = strtotime($fiscalYear->date_end);
187 $year_end = $year_start + 1;
188 $month_end = $month_start - 1;
189 if ($month_end < 1) {
193 $search_date_start =
dol_mktime(0, 0, 0, $month_start, 1, $year_start);
201 't.piece_num' => array(
'label' => $langs->trans(
"TransactionNumShort"),
'checked' => 1),
202 't.code_journal' => array(
'label' => $langs->trans(
"Codejournal"),
'checked' => 1),
203 't.doc_date' => array(
'label' => $langs->trans(
"Docdate"),
'checked' => 1),
204 't.doc_ref' => array(
'label' => $langs->trans(
"Piece"),
'checked' => 1),
205 't.numero_compte' => array(
'label' => $langs->trans(
"AccountAccountingShort"),
'checked' => 1),
206 't.subledger_account' => array(
'label' => $langs->trans(
"SubledgerAccount"),
'checked' => 1),
207 't.label_operation' => array(
'label' => $langs->trans(
"Label"),
'checked' => 1),
208 't.debit' => array(
'label' => $langs->trans(
"AccountingDebit"),
'checked' => 1),
209 't.credit' => array(
'label' => $langs->trans(
"AccountingCredit"),
'checked' => 1),
210 't.lettering_code' => array(
'label' => $langs->trans(
"LetteringCode"),
'checked' => 1),
211 't.date_creation' => array(
'label' => $langs->trans(
"DateCreation"),
'checked' => 0),
212 't.tms' => array(
'label' => $langs->trans(
"DateModification"),
'checked' => 0),
213 't.date_export' => array(
'label' => $langs->trans(
"DateExport"),
'checked' => 1),
214 't.date_validated' => array(
'label' => $langs->trans(
"DateValidationAndLock"),
'checked' => -1,
'enabled' => !
getDolGlobalString(
"ACCOUNTANCY_DISABLE_CLOSURE_LINE_BY_LINE")),
215 't.import_key' => array(
'label' => $langs->trans(
"ImportId"),
'checked' => 0,
'position' => 1100),
219 unset($arrayfields[
't.lettering_code']);
223$listofformat = $accountancyexport->getType();
225if (empty($listofformat[$formatexportset])) {
226 $formatexportset = 1;
231if (!isModEnabled(
'accounting')) {
234if ($user->socid > 0) {
237if (!$user->hasRight(
'accounting',
'mouvements',
'lire')) {
248if (
GETPOST(
'cancel',
'alpha')) {
252if (!
GETPOST(
'confirmmassaction',
'alpha')) {
256$parameters = array(
'socid' => $socid);
257$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
262if (empty($reshook)) {
263 include DOL_DOCUMENT_ROOT.
'/core/actions_changeselectedfields.inc.php';
265 if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
266 $search_mvt_num =
'';
267 $search_doc_type =
'';
268 $search_doc_ref =
'';
269 $search_doc_date =
'';
270 $search_account_category =
'';
271 $search_accountancy_code =
'';
272 $search_accountancy_code_start =
'';
273 $search_accountancy_code_end =
'';
274 $search_accountancy_aux_code =
'';
275 $search_accountancy_aux_code_start =
'';
276 $search_accountancy_aux_code_end =
'';
277 $search_mvt_label =
'';
278 $search_direction =
'';
279 $search_ledger_code = array();
280 $search_date_startyear =
'';
281 $search_date_startmonth =
'';
282 $search_date_startday =
'';
283 $search_date_endyear =
'';
284 $search_date_endmonth =
'';
285 $search_date_endday =
'';
286 $search_date_start =
'';
287 $search_date_end =
'';
288 $search_date_creation_startyear =
'';
289 $search_date_creation_startmonth =
'';
290 $search_date_creation_startday =
'';
291 $search_date_creation_endyear =
'';
292 $search_date_creation_endmonth =
'';
293 $search_date_creation_endday =
'';
294 $search_date_creation_start =
'';
295 $search_date_creation_end =
'';
296 $search_date_modification_startyear =
'';
297 $search_date_modification_startmonth =
'';
298 $search_date_modification_startday =
'';
299 $search_date_modification_endyear =
'';
300 $search_date_modification_endmonth =
'';
301 $search_date_modification_endday =
'';
302 $search_date_modification_start =
'';
303 $search_date_modification_end =
'';
304 $search_date_export_startyear =
'';
305 $search_date_export_startmonth =
'';
306 $search_date_export_startday =
'';
307 $search_date_export_endyear =
'';
308 $search_date_export_endmonth =
'';
309 $search_date_export_endday =
'';
310 $search_date_export_start =
'';
311 $search_date_export_end =
'';
312 $search_date_validation_startyear =
'';
313 $search_date_validation_startmonth =
'';
314 $search_date_validation_startday =
'';
315 $search_date_validation_endyear =
'';
316 $search_date_validation_endmonth =
'';
317 $search_date_validation_endday =
'';
318 $search_date_validation_start =
'';
319 $search_date_validation_end =
'';
322 $search_lettering_code =
'';
323 $search_not_reconciled =
'';
324 $search_import_key =
'';
330 if (!empty($search_date_start)) {
331 $filter[
't.doc_date>='] = $search_date_start;
333 $param .=
'&search_date_startmonth='.((int) $tmp[
'mon']).
'&search_date_startday='.((int) $tmp[
'mday']).
'&search_date_startyear='.((int) $tmp[
'year']);
335 if (!empty($search_date_end)) {
336 $filter[
't.doc_date<='] = $search_date_end;
338 $param .=
'&search_date_endmonth='.((int) $tmp[
'mon']).
'&search_date_endday='.((int) $tmp[
'mday']).
'&search_date_endyear='.((int) $tmp[
'year']);
340 if (!empty($search_doc_date)) {
341 $filter[
't.doc_date'] = $search_doc_date;
343 $param .=
'&doc_datemonth='.((int) $tmp[
'mon']).
'&doc_dateday='.((int) $tmp[
'mday']).
'&doc_dateyear='.((int) $tmp[
'year']);
345 if (!empty($search_doc_type)) {
346 $filter[
't.doc_type'] = $search_doc_type;
347 $param .=
'&search_doc_type='.urlencode($search_doc_type);
349 if (!empty($search_doc_ref)) {
350 $filter[
't.doc_ref'] = $search_doc_ref;
351 $param .=
'&search_doc_ref='.urlencode($search_doc_ref);
353 if ($search_account_category !=
'-1' && !empty($search_account_category)) {
354 require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountancycategory.class.php';
357 $listofaccountsforgroup = $accountingcategory->getCptsCat(0,
'fk_accounting_category = '.((
int) $search_account_category));
358 $listofaccountsforgroup2 = array();
359 if (is_array($listofaccountsforgroup)) {
360 foreach ($listofaccountsforgroup as $tmpval) {
361 $listofaccountsforgroup2[] =
"'".$db->escape($tmpval[
'account_number']).
"'";
364 $filter[
't.search_accounting_code_in'] = implode(
',', $listofaccountsforgroup2);
365 $param .=
'&search_account_category='.urlencode((
string) ($search_account_category));
367 if (!empty($search_accountancy_code)) {
368 $filter[
't.numero_compte'] = $search_accountancy_code;
369 $param .=
'&search_accountancy_code='.urlencode($search_accountancy_code);
371 if (!empty($search_accountancy_code_start)) {
372 $filter[
't.numero_compte>='] = $search_accountancy_code_start;
373 $param .=
'&search_accountancy_code_start='.urlencode($search_accountancy_code_start);
375 if (!empty($search_accountancy_code_end)) {
376 $filter[
't.numero_compte<='] = $search_accountancy_code_end;
377 $param .=
'&search_accountancy_code_end='.urlencode($search_accountancy_code_end);
379 if (!empty($search_accountancy_aux_code)) {
380 $filter[
't.subledger_account'] = $search_accountancy_aux_code;
381 $param .=
'&search_accountancy_aux_code='.urlencode($search_accountancy_aux_code);
383 if (!empty($search_accountancy_aux_code_start)) {
384 $filter[
't.subledger_account>='] = $search_accountancy_aux_code_start;
385 $param .=
'&search_accountancy_aux_code_start='.urlencode($search_accountancy_aux_code_start);
387 if (!empty($search_accountancy_aux_code_end)) {
388 $filter[
't.subledger_account<='] = $search_accountancy_aux_code_end;
389 $param .=
'&search_accountancy_aux_code_end='.urlencode($search_accountancy_aux_code_end);
391 if (!empty($search_mvt_label)) {
392 $filter[
't.label_operation'] = $search_mvt_label;
393 $param .=
'&search_mvt_label='.urlencode($search_mvt_label);
395 if (!empty($search_direction)) {
396 $filter[
't.sens'] = $search_direction;
397 $param .=
'&search_direction='.urlencode($search_direction);
399 if (!empty($search_ledger_code)) {
400 $filter[
't.code_journal'] = $search_ledger_code;
401 foreach ($search_ledger_code as $code) {
402 $param .=
'&search_ledger_code[]='.urlencode($code);
405 if (!empty($search_mvt_num)) {
406 $filter[
't.piece_num'] = $search_mvt_num;
407 $param .=
'&search_mvt_num='.urlencode((
string) ($search_mvt_num));
409 if (!empty($search_date_creation_start)) {
410 $filter[
't.date_creation>='] = $search_date_creation_start;
412 $param .=
'&search_date_creation_startmonth='.((int) $tmp[
'mon']).
'&search_date_creation_startday='.((int) $tmp[
'mday']).
'&search_date_creation_startyear='.((int) $tmp[
'year']);
414 if (!empty($search_date_creation_end)) {
415 $filter[
't.date_creation<='] = $search_date_creation_end;
417 $param .=
'&search_date_creation_endmonth='.((int) $tmp[
'mon']).
'&search_date_creation_endday='.((int) $tmp[
'mday']).
'&search_date_creation_endyear='.((int) $tmp[
'year']);
419 if (!empty($search_date_modification_start)) {
420 $filter[
't.tms>='] = $search_date_modification_start;
421 $tmp =
dol_getdate($search_date_modification_start);
422 $param .=
'&search_date_modification_startmonth='.((int) $tmp[
'mon']).
'&search_date_modification_startday='.((int) $tmp[
'mday']).
'&search_date_modification_startyear='.((int) $tmp[
'year']);
424 if (!empty($search_date_modification_end)) {
425 $filter[
't.tms<='] = $search_date_modification_end;
427 $param .=
'&search_date_modification_endmonth='.((int) $tmp[
'mon']).
'&search_date_modification_endday='.((int) $tmp[
'mday']).
'&search_date_modification_endyear='.((int) $tmp[
'year']);
429 if (!empty($search_date_export_start)) {
430 $filter[
't.date_export>='] = $search_date_export_start;
432 $param .=
'&search_date_export_startmonth='.((int) $tmp[
'mon']).
'&search_date_export_startday='.((int) $tmp[
'mday']).
'&search_date_export_startyear='.((int) $tmp[
'year']);
434 if (!empty($search_date_export_end)) {
435 $filter[
't.date_export<='] = $search_date_export_end;
437 $param .=
'&search_date_export_endmonth='.((int) $tmp[
'mon']).
'&search_date_export_endday='.((int) $tmp[
'mday']).
'&search_date_export_endyear='.((int) $tmp[
'year']);
439 if (!empty($search_date_validation_start)) {
440 $filter[
't.date_validated>='] = $search_date_validation_start;
442 $param .=
'&search_date_validation_startmonth='.((int) $tmp[
'mon']).
'&search_date_validation_startday='.((int) $tmp[
'mday']).
'&search_date_validation_startyear='.((int) $tmp[
'year']);
444 if (!empty($search_date_validation_end)) {
445 $filter[
't.date_validated<='] = $search_date_validation_end;
447 $param .=
'&search_date_validation_endmonth='.((int) $tmp[
'mon']).
'&search_date_validation_endday='.((int) $tmp[
'mday']).
'&search_date_validation_endyear='.((int) $tmp[
'year']);
449 if (!empty($search_debit)) {
450 $filter[
't.debit'] = $search_debit;
451 $param .=
'&search_debit='.urlencode($search_debit);
453 if (!empty($search_credit)) {
454 $filter[
't.credit'] = $search_credit;
455 $param .=
'&search_credit='.urlencode($search_credit);
457 if (!empty($search_lettering_code)) {
458 $filter[
't.lettering_code'] = $search_lettering_code;
459 $param .=
'&search_lettering_code='.urlencode($search_lettering_code);
461 if (!empty($search_not_reconciled)) {
462 $filter[
't.reconciled_option'] = $search_not_reconciled;
463 $param .=
'&search_not_reconciled='.urlencode($search_not_reconciled);
465 if (!empty($search_import_key)) {
466 $filter[
't.import_key'] = $search_import_key;
467 $param .=
'&search_import_key='.urlencode($search_import_key);
470 if ($action ==
'setreexport' && $user->hasRight(
'accounting',
'mouvements',
'export')) {
478 setEventMessages($langs->trans(
"ExportOfPiecesAlreadyExportedIsDisable"),
null,
'mesgs');
480 setEventMessages($langs->trans(
"ExportOfPiecesAlreadyExportedIsEnable"),
null,
'warnings');
488 $objectclass =
'Bookkeeping';
489 $objectlabel =
'Bookkeeping';
490 $permissiontoread = ($user->hasRight(
'societe',
'lire') == 1);
491 $permissiontodelete = ($user->hasRight(
'societe',
'supprimer') == 1);
492 $permissiontoadd = ($user->hasRight(
'societe',
'creer') == 1);
493 $uploaddir =
$conf->societe->dir_output;
494 include DOL_DOCUMENT_ROOT.
'/core/actions_massactions.inc.php';
503$sql .=
" t.doc_date,";
504$sql .=
" t.doc_type,";
505$sql .=
" t.doc_ref,";
507$sql .=
" t.fk_docdet,";
508$sql .=
" t.thirdparty_code,";
509$sql .=
" t.subledger_account,";
510$sql .=
" t.subledger_label,";
511$sql .=
" t.numero_compte,";
512$sql .=
" t.label_compte,";
513$sql .=
" t.label_operation,";
516$sql .=
" t.lettering_code,";
517$sql .=
" t.date_lettering,";
518$sql .=
" t.montant as amount,";
520$sql .=
" t.fk_user_author,";
521$sql .=
" t.import_key,";
522$sql .=
" t.code_journal,";
523$sql .=
" t.journal_label,";
524$sql .=
" t.piece_num,";
525$sql .=
" t.date_creation,";
526$sql .=
" t.date_lim_reglement,";
527$sql .=
" t.tms as date_modification,";
528$sql .=
" t.date_export,";
529$sql .=
" t.date_validated as date_validation,";
530$sql .=
" t.import_key";
534$sql .=
' FROM '.MAIN_DB_PREFIX.$object->table_element.
' as t';
537if (count($filter) > 0) {
538 foreach ($filter as $key => $value) {
539 if ($key ==
't.doc_date') {
540 $sqlwhere[] = $db->sanitize($key).
" = '".$db->idate($value).
"'";
541 } elseif ($key ==
't.doc_date>=') {
542 $sqlwhere[] =
"t.doc_date >= '".$db->idate($value).
"'";
543 } elseif ($key ==
't.doc_date<=') {
544 $sqlwhere[] =
"t.doc_date <= '".$db->idate($value).
"'";
545 } elseif ($key ==
't.doc_date>') {
546 $sqlwhere[] =
"t.doc_date > '".$db->idate($value).
"'";
547 } elseif ($key ==
't.doc_date<') {
548 $sqlwhere[] =
"t.doc_date < '".$db->idate($value).
"'";
549 } elseif ($key ==
't.numero_compte>=') {
550 $sqlwhere[] =
"t.numero_compte >= '".$db->escape($value).
"'";
551 } elseif ($key ==
't.numero_compte<=') {
552 $sqlwhere[] =
"t.numero_compte <= '".$db->escape($value).
"'";
553 } elseif ($key ==
't.subledger_account>=') {
554 $sqlwhere[] =
"t.subledger_account >= '".$db->escape($value).
"'";
555 } elseif ($key ==
't.subledger_account<=') {
556 $sqlwhere[] =
"t.subledger_account <= '".$db->escape($value).
"'";
557 } elseif ($key ==
't.fk_doc' || $key ==
't.fk_docdet' || $key ==
't.piece_num') {
558 $sqlwhere[] = $db->sanitize($key).
'='.((int) $value);
559 } elseif ($key ==
't.subledger_account' || $key ==
't.numero_compte') {
560 $sqlwhere[] = $db->sanitize($key).
" LIKE '".$db->escape($db->escapeforlike($value)).
"%'";
561 } elseif ($key ==
't.subledger_account') {
563 } elseif ($key ==
't.tms>=') {
564 $sqlwhere[] =
"t.tms >= '".$db->idate($value).
"'";
565 } elseif ($key ==
't.tms<=') {
566 $sqlwhere[] =
"t.tms <= '".$db->idate($value).
"'";
567 } elseif ($key ==
't.date_creation>=') {
568 $sqlwhere[] =
"t.date_creation >= '".$db->idate($value).
"'";
569 } elseif ($key ==
't.date_creation<=') {
570 $sqlwhere[] =
"t.date_creation <= '".$db->idate($value).
"'";
571 } elseif ($key ==
't.date_export>=') {
572 $sqlwhere[] =
"t.date_export >= '".$db->idate($value).
"'";
573 } elseif ($key ==
't.date_export<=') {
574 $sqlwhere[] =
"t.date_export <= '".$db->idate($value).
"'";
575 } elseif ($key ==
't.date_validated>=') {
576 $sqlwhere[] =
"t.date_validated >= '".$db->idate($value).
"'";
577 } elseif ($key ==
't.date_validated<=') {
578 $sqlwhere[] =
"t.date_validated <= '".$db->idate($value).
"'";
579 } elseif ($key ==
't.credit' || $key ==
't.debit') {
581 } elseif ($key ==
't.reconciled_option') {
582 $sqlwhere[] =
't.lettering_code IS NULL';
583 } elseif ($key ==
't.code_journal' && !empty($value)) {
584 if (is_array($value)) {
585 $sqlwhere[] =
natural_search(
"t.code_journal", implode(
',', $value), 3, 1);
589 } elseif ($key ==
't.search_accounting_code_in' && !empty($value)) {
590 $sqlwhere[] =
't.numero_compte IN ('.$db->sanitize($value, 1).
')';
596$sql .=
' WHERE t.entity IN ('.getEntity(
'accountancy').
')';
598 $sql .=
" AND t.date_export IS NULL";
600if (count($sqlwhere) > 0) {
601 $sql .=
' AND '.implode(
' AND ', $sqlwhere);
608if ($action ==
'export_fileconfirm' && $user->hasRight(
'accounting',
'mouvements',
'export')) {
613 $nbtotalofrecords = 0;
619 $sqlforcount = preg_replace(
'/^'.preg_quote($sqlfields,
'/').
'/',
'SELECT COUNT(*) as nbtotalofrecords', $sql);
620 $sqlforcount = preg_replace(
'/GROUP BY .*$/',
'', $sqlforcount);
621 $resql = $db->query($sqlforcount);
623 $objforcount = $db->fetch_object($resql);
624 $nbtotalofrecords = $objforcount->nbtotalofrecords;
640 $result =
$object->fetchAll($sortorder, $sortfield, $limit, $offset, $filter,
'AND', (
getDolGlobalString(
'ACCOUNTING_REEXPORT') ? 1 : 0));
647 $notexportlettering =
GETPOST(
'notexportlettering',
'alpha');
650 if (!empty($notexportlettering)) {
651 if (is_array(
$object->lines)) {
652 foreach (
$object->lines as $k => $movement) {
653 unset(
$object->lines[$k]->lettering_code);
654 unset(
$object->lines[$k]->date_lettering);
659 $notifiedexportdate =
GETPOST(
'notifiedexportdate',
'alpha');
660 $notifiedvalidationdate =
GETPOST(
'notifiedvalidationdate',
'alpha');
661 $withAttachment = !empty(trim(
GETPOST(
'notifiedexportfull',
'alphanohtml'))) ? 1 : 0;
665 $result = $accountancyexport->export(
$object->lines, $formatexport, $withAttachment, 1, 1, 1);
670 if (!empty($notifiedexportdate) || !empty($notifiedvalidationdate)) {
671 if (is_array(
$object->lines)) {
672 dol_syslog(
"/accountancy/bookkeeping/list.php Function export_file set movements as exported", LOG_DEBUG);
675 foreach (
$object->lines as $movement) {
680 if (!empty($notifiedexportdate) && empty($movement->date_export)) {
681 $setfields .= ($setfields ?
"," :
"").
" date_export = '".$db->idate($now).
"'";
683 if (!empty($notifiedvalidationdate) && empty($movement->date_validation)) {
684 $setfields .= ($setfields ?
"," :
"").
" date_validated = '".$db->idate($now).
"'";
688 $sql =
" UPDATE ".MAIN_DB_PREFIX.
"accounting_bookkeeping";
689 $sql .=
" SET ".$setfields;
690 $sql .=
" WHERE rowid = ".((int) $movement->id);
692 $result = $db->query($sql);
701 $accountancyexport->errors[] = $langs->trans(
'NotAllExportedMovementsCouldBeRecordedAsExportedOrValidated');
711 $downloadFilePath = $accountancyexport->generatedfiledata[
'downloadFilePath'];
712 $downloadFileMimeType = $accountancyexport->generatedfiledata[
'downloadFileMimeType'];
713 $downloadFileFullName = $accountancyexport->generatedfiledata[
'downloadFileFullName'];
718 header(
'Content-Description: File Transfer');
722 header(
'Content-Disposition: attachment; filename="'.$downloadFileFullName.
'"');
724 header(
'Content-Disposition: inline; filename="'.$downloadFileFullName.
'"');
727 header(
'Cache-Control: Public, must-revalidate');
728 header(
'Pragma: public');
729 header(
'Content-Length: ' .
dol_filesize($downloadFilePath));
736 header(
'Location: '.$_SERVER[
'PHP_SELF']);
749$title_page = $langs->trans(
"Operations").
' - '.$langs->trans(
"ExportAccountancy");
752$nbtotalofrecords =
'';
755 $sqlforcount = preg_replace(
'/^'.preg_quote($sqlfields,
'/').
'/',
'SELECT COUNT(*) as nbtotalofrecords', $sql);
756 $sqlforcount = preg_replace(
'/GROUP BY .*$/',
'', $sqlforcount);
757 $resql = $db->query($sqlforcount);
759 $objforcount = $db->fetch_object($resql);
760 $nbtotalofrecords = $objforcount->nbtotalofrecords;
765 if (($page * $limit) > $nbtotalofrecords) {
773$sql .= $db->order($sortfield, $sortorder);
775 $sql .= $db->plimit($limit + 1, $offset);
778$resql = $db->query($sql);
784$num = $db->num_rows($resql);
786$arrayofselected = is_array($toselect) ? $toselect : array();
790$help_url =
'EN:Module_Double_Entry_Accounting#Exports|FR:Module_Comptabilité_en_Partie_Double#Exports';
792llxHeader(
'', $title_page, $help_url,
'', 0, 0,
'',
'',
'',
'mod-accountancy accountancy-consultation page-export');
796if ($action ==
'export_file') {
797 $form_question = array();
799 $form_question[
'formatexport'] = array(
800 'name' =>
'formatexport',
802 'label' => $langs->trans(
'Modelcsv'),
803 'values' => $listofformat,
804 'default' => $formatexportset,
805 'morecss' =>
'minwidth200 maxwidth200'
808 $form_question[
'separator0'] = array(
'name' =>
'separator0',
'type' =>
'separator');
812 $checked =
getDolGlobalString(
'ACCOUNTING_DEFAULT_NOT_EXPORT_LETTERING') ?
'true' :
'false';
813 $form_question[
'notexportlettering'] = array(
814 'name' =>
'notexportlettering',
815 'type' =>
'checkbox',
816 'label' => $langs->trans(
'NotExportLettering'),
820 $form_question[
'separator1'] = array(
'name' =>
'separator1',
'type' =>
'separator');
824 $checked = (!isset(
$conf->global->ACCOUNTING_DEFAULT_NOT_NOTIFIED_EXPORT_DATE) ||
getDolGlobalString(
'ACCOUNTING_DEFAULT_NOT_NOTIFIED_EXPORT_DATE'));
825 $form_question[
'notifiedexportdate'] = array(
826 'name' =>
'notifiedexportdate',
827 'type' =>
'checkbox',
828 'label' => $langs->trans(
'NotifiedExportDate'),
829 'value' => (
getDolGlobalString(
'ACCOUNTING_DEFAULT_NOT_NOTIFIED_EXPORT_DATE') ?
'false' :
'true'),
832 $form_question[
'separator2'] = array(
'name' =>
'separator2',
'type' =>
'separator');
837 $form_question[
'notifiedvalidationdate'] = array(
838 'name' =>
'notifiedvalidationdate',
839 'type' =>
'checkbox',
840 'label' => $langs->trans(
'NotifiedValidationDate', $langs->transnoentitiesnoconv(
"MenuAccountancyClosure")),
844 $form_question[
'separator3'] = array(
'name' =>
'separator3',
'type' =>
'separator');
848 $exportTypesWithDocs = array(
849 AccountancyExport::$EXPORT_TYPE_QUADRATUS,
850 AccountancyExport::$EXPORT_TYPE_FEC,
851 AccountancyExport::$EXPORT_TYPE_FEC2
854 $form_question[
'notifiedexportfull'] = array(
855 'name' =>
'notifiedexportfull',
856 'type' =>
'checkbox',
857 'label' => $langs->trans(
'NotifiedExportFull'),
861 $formconfirm = $form->formconfirm($_SERVER[
"PHP_SELF"].
'?'.$param, $langs->trans(
"ExportFilteredList").
'...', $langs->trans(
'ConfirmExportFile'),
'export_fileconfirm', $form_question,
'', 1, 500, 700);
863 $formconfirm .=
'<script>
864 jQuery(document).ready(function() {
865 const exportTypesWithDocs = ['.implode(
',', $exportTypesWithDocs).
'];
866 const $formatExport = jQuery("#formatexport");
868 function toggleExportFull() {
869 const $checkbox = jQuery("#notifiedexportfull");
870 const show = exportTypesWithDocs.indexOf(parseInt($formatExport.val())) !== -1;
871 $checkbox.closest(".tagtr").toggle(show);
873 $checkbox.prop("checked", false); // remove checked if hidden
877 $formatExport.on("change", toggleExportFull);
887if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
888 $param .=
'&contextpage='.urlencode($contextpage);
890if ($limit > 0 && $limit !=
$conf->liste_limit) {
891 $param .=
'&limit='.urlencode($limit);
895$arrayofmassactions = array();
896$massactionbutton = $form->selectMassAction($massaction, $arrayofmassactions);
898print
'<form method="POST" id="searchFormList" action="'.$_SERVER[
"PHP_SELF"].
'">';
899print
'<input type="hidden" name="token" value="'.newToken().
'">';
900print
'<input type="hidden" name="action" value="list">';
901if ($optioncss !=
'') {
902 print
'<input type="hidden" name="optioncss" value="'.urlencode($optioncss).
'">';
904print
'<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
905print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
906print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
907print
'<input type="hidden" name="contextpage" value="'.$contextpage.
'">';
910 $buttonLabel = $langs->trans(
"ExportFilteredList");
912 $buttonLabel = $langs->trans(
"ExportList");
915$parameters = array(
'param' => $param);
916$reshook = $hookmanager->executeHooks(
'addMoreActionsButtonsList', $parameters, $object, $action);
921$newcardbutton = empty($hookmanager->resPrint) ?
'' : $hookmanager->resPrint;
922if (empty($reshook)) {
925 $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"');
926 $newcardbutton .=
'<span class="valignmiddle marginrightonly paddingleft">'.$langs->trans(
"ClickToShowAlreadyExportedLines").
'</span>';
927 $newcardbutton .=
'</a>';
929 $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"');
930 $newcardbutton .=
'<span class="valignmiddle marginrightonly paddingleft">'.$langs->trans(
"DocsAlreadyExportedAreIncluded").
'</span>';
931 $newcardbutton .=
'</a>';
934 if ($user->hasRight(
'accounting',
'mouvements',
'export')) {
935 $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'));
939print_barre_liste($title_page, $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords,
'title_accountancy', 0, $newcardbutton,
'', $limit, 0, 0, 1);
943 print
info_admin($langs->trans(
"WarningDataDisappearsWhenDataIsExported"), 0, 0,
'0',
'hideonsmartphone info');
950include DOL_DOCUMENT_ROOT.
'/core/tpl/massactions_pre.tpl.php';
952$varpage = empty($contextpage) ? $_SERVER[
"PHP_SELF"] : $contextpage;
953$selectedfields = $form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage,
getDolGlobalString(
'MAIN_CHECKBOX_LEFT_COLUMN'));
954if ($massactionbutton && $contextpage !=
'poslist') {
955 $selectedfields .= $form->showCheckAddButtons(
'checkforselect', 1);
960if (!empty($search_account_category)) {
961 $moreforfilter .=
'<div class="divsearchfield">';
962 $moreforfilter .= $langs->trans(
'AccountingCategory').
': ';
963 $moreforfilter .=
'<div class="nowrap inline-block">';
964 $moreforfilter .= $formaccounting->select_accounting_category($search_account_category,
'search_account_category', 1, 0, 0, 0);
965 $moreforfilter .=
'</div>';
966 $moreforfilter .=
'</div>';
969$parameters = array();
970$reshook = $hookmanager->executeHooks(
'printFieldPreListTitle', $parameters, $object, $action);
971if (empty($reshook)) {
972 $moreforfilter .= $hookmanager->resPrint;
974 $moreforfilter = $hookmanager->resPrint;
978 print
'<div class="liste_titre liste_titre_bydiv centpercent">';
979 print $moreforfilter;
983print
'<div class="div-table-responsive">';
984print
'<table class="tagtable liste'.($moreforfilter ?
" listwithfilterbefore" :
"").
'">';
987print
'<tr class="liste_titre_filter">';
990 print
'<td class="liste_titre center">';
991 $searchpicto = $form->showFilterButtons(
'left');
996if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
997 print
'<td class="liste_titre"><input type="text" class="width50" name="search_mvt_num" value="'.dol_escape_htmltag($search_mvt_num).
'"></td>';
1000if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
1001 print
'<td class="liste_titre center">';
1002 print $formaccounting->multi_select_journal($search_ledger_code,
'search_ledger_code', 0, 1, 1, 1,
'small maxwidth75');
1006if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1007 print
'<td class="liste_titre center">';
1008 print
'<div class="nowrapfordate">';
1009 print $form->selectDate($search_date_start ? $search_date_start : -1,
'search_date_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1011 print
'<div class="nowrapfordate">';
1012 print $form->selectDate($search_date_end ? $search_date_end : -1,
'search_date_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1017if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
1018 print
'<td class="liste_titre"><input type="text" name="search_doc_ref" class="width75" value="'.dol_escape_htmltag($search_doc_ref).
'"></td>';
1021if (!empty($arrayfields[
't.numero_compte'][
'checked'])) {
1022 print
'<td class="liste_titre">';
1023 print
'<div class="nowrap">';
1024 print $formaccounting->select_account($search_accountancy_code_start,
'search_accountancy_code_start', $langs->trans(
'From'), array(), 1, 1,
'maxwidth150',
'account');
1026 print
'<div class="nowrap">';
1027 print $formaccounting->select_account($search_accountancy_code_end,
'search_accountancy_code_end', $langs->trans(
'to'), array(), 1, 1,
'maxwidth150',
'account');
1032if (!empty($arrayfields[
't.subledger_account'][
'checked'])) {
1033 print
'<td class="liste_titre">';
1037 print
'<div class="nowrap">';
1039 print $formaccounting->select_auxaccount($search_accountancy_aux_code_start,
'search_accountancy_aux_code_start', $langs->trans(
'From'),
'maxwidth150',
'subledgeraccount');
1041 print
'<div class="nowrap">';
1042 print $formaccounting->select_auxaccount($search_accountancy_aux_code_end,
'search_accountancy_aux_code_end', $langs->trans(
'to'),
'maxwidth150',
'subledgeraccount');
1045 print
'<input type="text" class="maxwidth75" name="search_accountancy_aux_code" value="'.dol_escape_htmltag($search_accountancy_aux_code).
'">';
1050if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1051 print
'<td class="liste_titre">';
1052 print
'<input type="text" size="7" class="flat" name="search_mvt_label" value="'.dol_escape_htmltag($search_mvt_label).
'"/>';
1056if (!empty($arrayfields[
't.debit'][
'checked'])) {
1057 print
'<td class="liste_titre right">';
1058 print
'<input type="text" class="flat" name="search_debit" size="4" value="'.dol_escape_htmltag($search_debit).
'">';
1062if (!empty($arrayfields[
't.credit'][
'checked'])) {
1063 print
'<td class="liste_titre right">';
1064 print
'<input type="text" class="flat" name="search_credit" size="4" value="'.dol_escape_htmltag($search_credit).
'">';
1068if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1069 print
'<td class="liste_titre center">';
1070 print
'<input type="text" size="3" class="flat" name="search_lettering_code" value="'.dol_escape_htmltag($search_lettering_code).
'"/>';
1071 print
'<br><span class="nowrap"><input type="checkbox" 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>';
1076$parameters = array(
'arrayfields' => $arrayfields);
1077$reshook = $hookmanager->executeHooks(
'printFieldListOption', $parameters);
1078print $hookmanager->resPrint;
1081if (!empty($arrayfields[
't.date_creation'][
'checked'])) {
1082 print
'<td class="liste_titre center">';
1083 print
'<div class="nowrapfordate">';
1084 print $form->selectDate($search_date_creation_start,
'search_date_creation_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1086 print
'<div class="nowrapfordate">';
1087 print $form->selectDate($search_date_creation_end,
'search_date_creation_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1092if (!empty($arrayfields[
't.tms'][
'checked'])) {
1093 print
'<td class="liste_titre center">';
1094 print
'<div class="nowrapfordate">';
1095 print $form->selectDate($search_date_modification_start,
'search_date_modification_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1097 print
'<div class="nowrapfordate">';
1098 print $form->selectDate($search_date_modification_end,
'search_date_modification_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1103if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1104 print
'<td class="liste_titre center">';
1105 print
'<div class="nowrapfordate">';
1106 print $form->selectDate($search_date_export_start,
'search_date_export_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1108 print
'<div class="nowrapfordate">';
1109 print $form->selectDate($search_date_export_end,
'search_date_export_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1114if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1115 print
'<td class="liste_titre center">';
1116 print
'<div class="nowrapfordate">';
1117 print $form->selectDate($search_date_validation_start,
'search_date_validation_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1119 print
'<div class="nowrapfordate">';
1120 print $form->selectDate($search_date_validation_end,
'search_date_validation_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1124if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1125 print
'<td class="liste_titre center">';
1126 print
'<input class="flat searchstring maxwidth50" type="text" name="search_import_key" value="'.dol_escape_htmltag($search_import_key).
'">';
1131 print
'<td class="liste_titre center">';
1132 $searchpicto = $form->showFilterButtons();
1138print
'<tr class="liste_titre">';
1140 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch actioncolumn ');
1142if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
1143 print_liste_field_titre($arrayfields[
't.piece_num'][
'label'], $_SERVER[
'PHP_SELF'],
"t.piece_num",
"", $param,
"", $sortfield, $sortorder);
1145if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
1146 print_liste_field_titre($arrayfields[
't.code_journal'][
'label'], $_SERVER[
'PHP_SELF'],
"t.code_journal",
"", $param,
'', $sortfield, $sortorder,
'center ');
1148if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1149 print_liste_field_titre($arrayfields[
't.doc_date'][
'label'], $_SERVER[
'PHP_SELF'],
"t.doc_date",
"", $param,
'', $sortfield, $sortorder,
'center ');
1151if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
1152 print_liste_field_titre($arrayfields[
't.doc_ref'][
'label'], $_SERVER[
'PHP_SELF'],
"t.doc_ref",
"", $param,
"", $sortfield, $sortorder);
1154if (!empty($arrayfields[
't.numero_compte'][
'checked'])) {
1155 print_liste_field_titre($arrayfields[
't.numero_compte'][
'label'], $_SERVER[
'PHP_SELF'],
"t.numero_compte",
"", $param,
"", $sortfield, $sortorder);
1157if (!empty($arrayfields[
't.subledger_account'][
'checked'])) {
1158 print_liste_field_titre($arrayfields[
't.subledger_account'][
'label'], $_SERVER[
'PHP_SELF'],
"t.subledger_account",
"", $param,
"", $sortfield, $sortorder);
1160if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1161 print_liste_field_titre($arrayfields[
't.label_operation'][
'label'], $_SERVER[
'PHP_SELF'],
"t.label_operation",
"", $param,
"", $sortfield, $sortorder);
1163if (!empty($arrayfields[
't.debit'][
'checked'])) {
1164 print_liste_field_titre($arrayfields[
't.debit'][
'label'], $_SERVER[
'PHP_SELF'],
"t.debit",
"", $param,
'', $sortfield, $sortorder,
'right ');
1166if (!empty($arrayfields[
't.credit'][
'checked'])) {
1167 print_liste_field_titre($arrayfields[
't.credit'][
'label'], $_SERVER[
'PHP_SELF'],
"t.credit",
"", $param,
'', $sortfield, $sortorder,
'right ');
1169if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1170 print_liste_field_titre($arrayfields[
't.lettering_code'][
'label'], $_SERVER[
'PHP_SELF'],
"t.lettering_code",
"", $param,
'', $sortfield, $sortorder,
'center ');
1173$parameters = array(
'arrayfields' => $arrayfields,
'param' => $param,
'sortfield' => $sortfield,
'sortorder' => $sortorder);
1174$reshook = $hookmanager->executeHooks(
'printFieldListTitle', $parameters);
1175print $hookmanager->resPrint;
1176if (!empty($arrayfields[
't.date_creation'][
'checked'])) {
1177 print_liste_field_titre($arrayfields[
't.date_creation'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_creation",
"", $param,
'', $sortfield, $sortorder,
'center ');
1179if (!empty($arrayfields[
't.tms'][
'checked'])) {
1180 print_liste_field_titre($arrayfields[
't.tms'][
'label'], $_SERVER[
'PHP_SELF'],
"t.tms",
"", $param,
'', $sortfield, $sortorder,
'center ');
1182if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1183 print_liste_field_titre($arrayfields[
't.date_export'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_export,t.doc_date",
"", $param,
'', $sortfield, $sortorder,
'center ');
1185if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1186 print_liste_field_titre($arrayfields[
't.date_validated'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_validated,t.doc_date",
"", $param,
'', $sortfield, $sortorder,
'center ');
1188if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1189 print_liste_field_titre($arrayfields[
't.import_key'][
'label'], $_SERVER[
"PHP_SELF"],
"t.import_key",
"", $param,
'', $sortfield, $sortorder,
'center ');
1192 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch ');
1202$totalarray = array();
1203$totalarray[
'nbfield'] = 0;
1204$totalarray[
'val'] = array();
1205$totalarray[
'val'][
'totaldebit'] = 0;
1206$totalarray[
'val'][
'totalcredit'] = 0;
1208while ($i < min($num, $limit)) {
1209 $obj = $db->fetch_object($resql);
1214 $line->id = $obj->rowid;
1215 $line->doc_date = $db->jdate($obj->doc_date);
1216 $line->doc_type = $obj->doc_type;
1217 $line->doc_ref = $obj->doc_ref;
1218 $line->fk_doc = $obj->fk_doc;
1219 $line->fk_docdet = $obj->fk_docdet;
1220 $line->thirdparty_code = $obj->thirdparty_code;
1221 $line->subledger_account = $obj->subledger_account;
1222 $line->subledger_label = $obj->subledger_label;
1223 $line->numero_compte = $obj->numero_compte;
1224 $line->label_compte = $obj->label_compte;
1225 $line->label_operation = $obj->label_operation;
1226 $line->debit = $obj->debit;
1227 $line->credit = $obj->credit;
1228 $line->montant = $obj->amount;
1229 $line->amount = $obj->amount;
1230 $line->sens = $obj->sens;
1231 $line->lettering_code = $obj->lettering_code;
1232 $line->fk_user_author = $obj->fk_user_author;
1233 $line->import_key = $obj->import_key;
1234 $line->code_journal = $obj->code_journal;
1235 $line->journal_label = $obj->journal_label;
1236 $line->piece_num = $obj->piece_num;
1237 $line->date_creation = $db->jdate($obj->date_creation);
1238 $line->date_modification = $db->jdate($obj->date_modification);
1239 $line->date_export = $db->jdate($obj->date_export);
1240 $line->date_validation = $db->jdate($obj->date_validation);
1242 print
'<tr class="oddeven">';
1245 print
'<td class="nowraponall center">';
1246 if (($massactionbutton || $massaction) && $contextpage !=
'poslist') {
1248 if (in_array($line->id, $arrayofselected)) {
1251 print
'<input id="cb'.$line->id.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$line->id.
'"'.($selected ?
' checked="checked"' :
'').
' />';
1255 $totalarray[
'nbfield']++;
1260 if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
1263 $object->piece_num = $line->piece_num;
1264 print
$object->getNomUrl(1,
'', 0,
'', 1);
1267 $totalarray[
'nbfield']++;
1272 if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
1274 $result = $accountingjournal->fetch(0, $line->code_journal);
1275 $journaltoshow = (($result > 0) ? $accountingjournal->getNomUrl(0, 0, 0,
'', 0) : $line->code_journal);
1276 print
'<td class="center tdoverflowmax150">'.$journaltoshow.
'</td>';
1278 $totalarray[
'nbfield']++;
1283 if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1284 print
'<td class="center">'.dol_print_date($line->doc_date,
'day').
'</td>';
1286 $totalarray[
'nbfield']++;
1292 if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
1294 $objectstatic =
null;
1295 if ($line->doc_type ==
'customer_invoice') {
1296 $langs->loadLangs(array(
'bills'));
1298 require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
1299 $objectstatic =
new Facture($db);
1300 $objectstatic->fetch($line->fk_doc);
1302 if ($objectstatic->id > 0) {
1305 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.$objectstatic->id;
1306 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir);
1308 } elseif ($line->doc_type ==
'supplier_invoice') {
1309 $langs->loadLangs(array(
'bills'));
1311 require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.facture.class.php';
1313 $objectstatic->fetch($line->fk_doc);
1315 if ($objectstatic->id > 0) {
1316 $modulepart =
'invoice_supplier';
1318 $filedir =
$conf->fournisseur->facture->dir_output.
'/'.
get_exdir($line->fk_doc, 2, 0, 0, $objectstatic, $objectstatic->element).dol_sanitizeFileName($line->doc_ref);
1319 $subdir =
get_exdir($objectstatic->id, 2, 0, 0, $objectstatic, $objectstatic->element).dol_sanitizeFileName($line->doc_ref);
1320 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $subdir, $filedir);
1322 } elseif ($line->doc_type ==
'expense_report') {
1323 $langs->loadLangs(array(
'trips'));
1325 require_once DOL_DOCUMENT_ROOT.
'/expensereport/class/expensereport.class.php';
1327 $objectstatic->fetch($line->fk_doc);
1329 if ($objectstatic->id > 0) {
1332 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.$objectstatic->id;
1333 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir);
1335 } elseif ($line->doc_type ==
'bank') {
1336 require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
1338 $objectstatic->fetch($line->fk_doc);
1343 $labeltoshowhtml =
'';
1344 $labeltoshowalt =
'';
1345 if (($objectstatic instanceof
CommonObject) && in_array($line->doc_type, array(
'customer_invoice',
'supplier_invoice',
'expense_report'))) {
1346 if ($objectstatic->id > 0) {
1347 $labeltoshowhtml .= $objectstatic->getNomUrl(1,
'', 0, 0,
'', 0, -1, 1);
1348 $labeltoshowhtml .= $documentlink;
1349 $labeltoshowalt .= $objectstatic->ref;
1351 $labeltoshowhtml =
'<span class="opacitymedium">'.$langs->trans(
"Deleted").
'</span>';
1353 } elseif ($line->doc_type ==
'bank') {
1354 $labeltoshowhtml .= $objectstatic->getNomUrl(1);
1355 $labeltoshowalt .= $objectstatic->ref;
1356 $bank_ref = strstr($line->doc_ref,
'-');
1357 $labeltoshowhtml .=
" " . $bank_ref;
1358 $labeltoshowalt .=
" " . $bank_ref;
1360 $labeltoshowhtml .= $line->doc_ref;
1361 $labeltoshowalt .= $line->doc_ref;
1364 print
'<td class="nowraponall tdoverflowmax150" title="'.dolPrintHTMLForAttribute($labeltoshowalt).
'">';
1365 print $labeltoshowhtml;
1368 $totalarray[
'nbfield']++;
1373 if (!empty($arrayfields[
't.numero_compte'][
'checked'])) {
1374 print
'<td>'.length_accountg($line->numero_compte).
'</td>';
1376 $totalarray[
'nbfield']++;
1381 if (!empty($arrayfields[
't.subledger_account'][
'checked'])) {
1382 print
'<td>'.length_accounta($line->subledger_account).
'</td>';
1384 $totalarray[
'nbfield']++;
1389 if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1390 print
'<td class="small tdoverflowmax200" title="'.dol_escape_htmltag($line->label_operation).
'">'.
dol_escape_htmltag($line->label_operation).
'</td>';
1392 $totalarray[
'nbfield']++;
1397 if (!empty($arrayfields[
't.debit'][
'checked'])) {
1398 print
'<td class="right nowraponall amount">'.($line->debit != 0 ?
price($line->debit) :
'').
'</td>';
1400 $totalarray[
'nbfield']++;
1403 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'totaldebit';
1405 $totalarray[
'val'][
'totaldebit'] += $line->debit;
1409 if (!empty($arrayfields[
't.credit'][
'checked'])) {
1410 print
'<td class="right nowraponall amount">'.($line->credit != 0 ?
price($line->credit) :
'').
'</td>';
1412 $totalarray[
'nbfield']++;
1415 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'totalcredit';
1417 $totalarray[
'val'][
'totalcredit'] += $line->credit;
1421 if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1422 print
'<td class="center">'.$line->lettering_code.
'</td>';
1424 $totalarray[
'nbfield']++;
1429 $parameters = array(
'arrayfields' => $arrayfields,
'obj' => $obj,
'i' => $i,
'totalarray' => &$totalarray);
1430 $reshook = $hookmanager->executeHooks(
'printFieldListValue', $parameters);
1431 print $hookmanager->resPrint;
1434 if (!empty($arrayfields[
't.date_creation'][
'checked'])) {
1435 print
'<td class="center">'.dol_print_date($line->date_creation,
'dayhour',
'tzuserrel').
'</td>';
1437 $totalarray[
'nbfield']++;
1442 if (!empty($arrayfields[
't.tms'][
'checked'])) {
1443 print
'<td class="center">'.dol_print_date($line->date_modification,
'dayhour',
'tzuserrel').
'</td>';
1445 $totalarray[
'nbfield']++;
1450 if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1451 print
'<td class="center nowraponall">'.dol_print_date($line->date_export,
'dayhour',
'tzuserrel').
'</td>';
1453 $totalarray[
'nbfield']++;
1458 if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1459 print
'<td class="center nowraponall">'.dol_print_date($line->date_validation,
'dayhour',
'tzuserrel').
'</td>';
1461 $totalarray[
'nbfield']++;
1465 if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1466 print
'<td class="tdoverflowmax100">'.$obj->import_key.
"</td>\n";
1468 $totalarray[
'nbfield']++;
1474 print
'<td class="nowraponall center">';
1475 if (($massactionbutton || $massaction) && $contextpage !=
'poslist') {
1477 if (in_array($line->id, $arrayofselected)) {
1480 print
'<input id="cb'.$line->id.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$line->id.
'"'.($selected ?
' checked="checked"' :
'').
' />';
1484 $totalarray[
'nbfield']++;
1495include DOL_DOCUMENT_ROOT.
'/core/tpl/list_print_total.tpl.php';
1500 foreach ($arrayfields as $key => $val) {
1501 if (!empty($val[
'checked'])) {
1505 print
'<tr><td colspan="'.$colspan.
'"><span class="opacitymedium">'.$langs->trans(
"NoRecordFound").
'</span></td></tr>';
1508$parameters = array(
'arrayfields' => $arrayfields,
'sql' => $sql);
1509$reshook = $hookmanager->executeHooks(
'printFieldListFooter', $parameters, $object, $action);
1510print $hookmanager->resPrint;
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
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).
llxFooter($comment='', $zone='private', $disabledoutputofmessages=0)
Empty footer.
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader($head='', $title='', $help_url='', $target='', $disablejs=0, $disablehead=0, $arrayofjs='', $arrayofcss='', $morequerystring='', $morecssonbody='', $replacemainareaby='', $disablenofollow=0, $disablenoindex=0)
Empty header.
Class to manage bank transaction lines.
Class to manage categories of an accounting account.
Manage the different format accountancy export.
Class to manage accounting journals.
Class to manage Ledger (General Ledger and Subledger)
Parent class of all other business classes (invoices, contracts, proposals, orders,...
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_filesize($pathoffile)
Return size of a file.
dol_mktime($hour, $minute, $second, $month, $day, $year, $gm='auto', $check=1)
Return a timestamp date built from detailed information (by default a local PHP server timestamp) Rep...
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0, $attop=0)
Set event messages in dol_events session object.
print_barre_liste($title, $page, $file, $options='', $sortfield='', $sortorder='', $morehtmlcenter='', $num=-1, $totalnboflines='', $picto='generic', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limit=-1, $selectlimitsuffix=0, $hidenavigation=0, $pagenavastextinput=0, $morehtmlrightbeforearrow='')
Print a title with navigation controls for pagination.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2, $allowothertags=array())
Show picto whatever it's its name (generic function)
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
dolGetButtonTitle($label, $helpText='', $iconClass='fa fa-file', $url='', $id='', $status=1, $params=array())
Function dolGetButtonTitle : this kind of buttons are used in title in list.
natural_search($fields, $value, $mode=0, $nofirstand=0)
Generate natural SQL search string for a criteria (this criteria can be tested on one or several fiel...
price($amount, $form=0, $outlangs='', $trunc=1, $rounding=-1, $forcerounding=-1, $currency_code='')
Function to format a value into an amount for visual output Function used into PDF and HTML pages.
dol_now($mode='auto')
Return date for now.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
dol_print_date($time, $format='', $tzoutput='auto', $outputlangs=null, $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
newToken()
Return the value of token currently saved into session with name 'newtoken'.
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.
readfileLowMemory($fullpath_original_file_osencoded, $method=-1)
Return a file on output using a low memory.
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
dol_sanitizeFileName($str, $newstr='_', $unaccent=1, $includequotes=0)
Clean a string to use it as a file name.
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
info_admin($text, $infoonimgalt=0, $nodiv=0, $admin='1', $morecss='hideonsmartphone', $textfordropdown='', $picto='')
Show information in HTML for admin users or standard users.
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...
if(!defined( 'NOREQUIREMENU')) if(!empty(GETPOST('seteventmessages', 'alpha'))) if(!function_exists("llxHeader")) top_httphead($contenttype='text/html', $forcenocache=0)
Show HTTP header.
global $conf
The following vars must be defined: $type2label $form $conf, $lang, The following vars may also be de...
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.