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');
137$limit =
GETPOST(
'limit',
'int') ?
GETPOST(
'limit',
'int') : (empty($conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION) ? $conf->liste_limit : $conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION);
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);
173 $month_start = ($conf->global->SOCIETE_FISCAL_MONTH_START ? ($conf->global->SOCIETE_FISCAL_MONTH_START) : 1);
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),
209if (empty($conf->global->ACCOUNTING_ENABLE_LETTERING)) {
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')) {
240 $action =
'list'; $massaction =
'';
242if (!
GETPOST(
'confirmmassaction',
'alpha')) {
246$parameters = array(
'socid'=>$socid);
247$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
252if (empty($reshook)) {
253 include DOL_DOCUMENT_ROOT.
'/core/actions_changeselectedfields.inc.php';
255 if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
256 $search_mvt_num =
'';
257 $search_doc_type =
'';
258 $search_doc_ref =
'';
259 $search_doc_date =
'';
260 $search_account_category =
'';
261 $search_accountancy_code =
'';
262 $search_accountancy_code_start =
'';
263 $search_accountancy_code_end =
'';
264 $search_accountancy_aux_code =
'';
265 $search_accountancy_aux_code_start =
'';
266 $search_accountancy_aux_code_end =
'';
267 $search_mvt_label =
'';
268 $search_direction =
'';
269 $search_ledger_code = array();
270 $search_date_startyear =
'';
271 $search_date_startmonth =
'';
272 $search_date_startday =
'';
273 $search_date_endyear =
'';
274 $search_date_endmonth =
'';
275 $search_date_endday =
'';
276 $search_date_start =
'';
277 $search_date_end =
'';
278 $search_date_creation_startyear =
'';
279 $search_date_creation_startmonth =
'';
280 $search_date_creation_startday =
'';
281 $search_date_creation_endyear =
'';
282 $search_date_creation_endmonth =
'';
283 $search_date_creation_endday =
'';
284 $search_date_creation_start =
'';
285 $search_date_creation_end =
'';
286 $search_date_modification_startyear =
'';
287 $search_date_modification_startmonth =
'';
288 $search_date_modification_startday =
'';
289 $search_date_modification_endyear =
'';
290 $search_date_modification_endmonth =
'';
291 $search_date_modification_endday =
'';
292 $search_date_modification_start =
'';
293 $search_date_modification_end =
'';
294 $search_date_export_startyear =
'';
295 $search_date_export_startmonth =
'';
296 $search_date_export_startday =
'';
297 $search_date_export_endyear =
'';
298 $search_date_export_endmonth =
'';
299 $search_date_export_endday =
'';
300 $search_date_export_start =
'';
301 $search_date_export_end =
'';
302 $search_date_validation_startyear =
'';
303 $search_date_validation_startmonth =
'';
304 $search_date_validation_startday =
'';
305 $search_date_validation_endyear =
'';
306 $search_date_validation_endmonth =
'';
307 $search_date_validation_endday =
'';
308 $search_date_validation_start =
'';
309 $search_date_validation_end =
'';
312 $search_lettering_code =
'';
313 $search_not_reconciled =
'';
314 $search_import_key =
'';
320 if (!empty($search_date_start)) {
321 $filter[
't.doc_date>='] = $search_date_start;
323 $param .=
'&search_date_startmonth='.urlencode($tmp[
'mon']).
'&search_date_startday='.urlencode($tmp[
'mday']).
'&search_date_startyear='.urlencode($tmp[
'year']);
325 if (!empty($search_date_end)) {
326 $filter[
't.doc_date<='] = $search_date_end;
328 $param .=
'&search_date_endmonth='.urlencode($tmp[
'mon']).
'&search_date_endday='.urlencode($tmp[
'mday']).
'&search_date_endyear='.urlencode($tmp[
'year']);
330 if (!empty($search_doc_date)) {
331 $filter[
't.doc_date'] = $search_doc_date;
333 $param .=
'&doc_datemonth='.urlencode($tmp[
'mon']).
'&doc_dateday='.urlencode($tmp[
'mday']).
'&doc_dateyear='.urlencode($tmp[
'year']);
335 if (!empty($search_doc_type)) {
336 $filter[
't.doc_type'] = $search_doc_type;
337 $param .=
'&search_doc_type='.urlencode($search_doc_type);
339 if (!empty($search_doc_ref)) {
340 $filter[
't.doc_ref'] = $search_doc_ref;
341 $param .=
'&search_doc_ref='.urlencode($search_doc_ref);
343 if ($search_account_category !=
'-1' && !empty($search_account_category)) {
344 require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountancycategory.class.php';
347 $listofaccountsforgroup = $accountingcategory->getCptsCat(0,
'fk_accounting_category = '.((
int) $search_account_category));
348 $listofaccountsforgroup2 = array();
349 if (is_array($listofaccountsforgroup)) {
350 foreach ($listofaccountsforgroup as $tmpval) {
351 $listofaccountsforgroup2[] =
"'".$db->escape($tmpval[
'id']).
"'";
354 $filter[
't.search_accounting_code_in'] = join(
',', $listofaccountsforgroup2);
355 $param .=
'&search_account_category='.urlencode($search_account_category);
357 if (!empty($search_accountancy_code)) {
358 $filter[
't.numero_compte'] = $search_accountancy_code;
359 $param .=
'&search_accountancy_code='.urlencode($search_accountancy_code);
361 if (!empty($search_accountancy_code_start)) {
362 $filter[
't.numero_compte>='] = $search_accountancy_code_start;
363 $param .=
'&search_accountancy_code_start='.urlencode($search_accountancy_code_start);
365 if (!empty($search_accountancy_code_end)) {
366 $filter[
't.numero_compte<='] = $search_accountancy_code_end;
367 $param .=
'&search_accountancy_code_end='.urlencode($search_accountancy_code_end);
369 if (!empty($search_accountancy_aux_code)) {
370 $filter[
't.subledger_account'] = $search_accountancy_aux_code;
371 $param .=
'&search_accountancy_aux_code='.urlencode($search_accountancy_aux_code);
373 if (!empty($search_accountancy_aux_code_start)) {
374 $filter[
't.subledger_account>='] = $search_accountancy_aux_code_start;
375 $param .=
'&search_accountancy_aux_code_start='.urlencode($search_accountancy_aux_code_start);
377 if (!empty($search_accountancy_aux_code_end)) {
378 $filter[
't.subledger_account<='] = $search_accountancy_aux_code_end;
379 $param .=
'&search_accountancy_aux_code_end='.urlencode($search_accountancy_aux_code_end);
381 if (!empty($search_mvt_label)) {
382 $filter[
't.label_operation'] = $search_mvt_label;
383 $param .=
'&search_mvt_label='.urlencode($search_mvt_label);
385 if (!empty($search_direction)) {
386 $filter[
't.sens'] = $search_direction;
387 $param .=
'&search_direction='.urlencode($search_direction);
389 if (!empty($search_ledger_code)) {
390 $filter[
't.code_journal'] = $search_ledger_code;
391 foreach ($search_ledger_code as $code) {
392 $param .=
'&search_ledger_code[]='.urlencode($code);
395 if (!empty($search_mvt_num)) {
396 $filter[
't.piece_num'] = $search_mvt_num;
397 $param .=
'&search_mvt_num='.urlencode($search_mvt_num);
399 if (!empty($search_date_creation_start)) {
400 $filter[
't.date_creation>='] = $search_date_creation_start;
402 $param .=
'&search_date_creation_startmonth='.urlencode($tmp[
'mon']).
'&search_date_creation_startday='.urlencode($tmp[
'mday']).
'&search_date_creation_startyear='.urlencode($tmp[
'year']);
404 if (!empty($search_date_creation_end)) {
405 $filter[
't.date_creation<='] = $search_date_creation_end;
407 $param .=
'&search_date_creation_endmonth='.urlencode($tmp[
'mon']).
'&search_date_creation_endday='.urlencode($tmp[
'mday']).
'&search_date_creation_endyear='.urlencode($tmp[
'year']);
409 if (!empty($search_date_modification_start)) {
410 $filter[
't.tms>='] = $search_date_modification_start;
411 $tmp =
dol_getdate($search_date_modification_start);
412 $param .=
'&search_date_modification_startmonth='.urlencode($tmp[
'mon']).
'&search_date_modification_startday='.urlencode($tmp[
'mday']).
'&search_date_modification_startyear='.urlencode($tmp[
'year']);
414 if (!empty($search_date_modification_end)) {
415 $filter[
't.tms<='] = $search_date_modification_end;
417 $param .=
'&search_date_modification_endmonth='.urlencode($tmp[
'mon']).
'&search_date_modification_endday='.urlencode($tmp[
'mday']).
'&search_date_modification_endyear='.urlencode($tmp[
'year']);
419 if (!empty($search_date_export_start)) {
420 $filter[
't.date_export>='] = $search_date_export_start;
422 $param .=
'&search_date_export_startmonth='.urlencode($tmp[
'mon']).
'&search_date_export_startday='.urlencode($tmp[
'mday']).
'&search_date_export_startyear='.urlencode($tmp[
'year']);
424 if (!empty($search_date_export_end)) {
425 $filter[
't.date_export<='] = $search_date_export_end;
427 $param .=
'&search_date_export_endmonth='.urlencode($tmp[
'mon']).
'&search_date_export_endday='.urlencode($tmp[
'mday']).
'&search_date_export_endyear='.urlencode($tmp[
'year']);
429 if (!empty($search_date_validation_start)) {
430 $filter[
't.date_validated>='] = $search_date_validation_start;
432 $param .=
'&search_date_validation_startmonth='.urlencode($tmp[
'mon']).
'&search_date_validation_startday='.urlencode($tmp[
'mday']).
'&search_date_validation_startyear='.urlencode($tmp[
'year']);
434 if (!empty($search_date_validation_end)) {
435 $filter[
't.date_validated<='] = $search_date_validation_end;
437 $param .=
'&search_date_validation_endmonth='.urlencode($tmp[
'mon']).
'&search_date_validation_endday='.urlencode($tmp[
'mday']).
'&search_date_validation_endyear='.urlencode($tmp[
'year']);
439 if (!empty($search_debit)) {
440 $filter[
't.debit'] = $search_debit;
441 $param .=
'&search_debit='.urlencode($search_debit);
443 if (!empty($search_credit)) {
444 $filter[
't.credit'] = $search_credit;
445 $param .=
'&search_credit='.urlencode($search_credit);
447 if (!empty($search_lettering_code)) {
448 $filter[
't.lettering_code'] = $search_lettering_code;
449 $param .=
'&search_lettering_code='.urlencode($search_lettering_code);
451 if (!empty($search_not_reconciled)) {
452 $filter[
't.reconciled_option'] = $search_not_reconciled;
453 $param .=
'&search_not_reconciled='.urlencode($search_not_reconciled);
455 if (!empty($search_import_key)) {
456 $filter[
't.import_key'] = $search_import_key;
457 $param .=
'&search_import_key='.urlencode($search_import_key);
460 if ($action ==
'setreexport') {
461 $setreexport =
GETPOST(
'value',
'int');
462 if (!
dolibarr_set_const($db,
"ACCOUNTING_REEXPORT", $setreexport,
'yesno', 0,
'', $conf->entity)) {
467 if (empty($conf->global->ACCOUNTING_REEXPORT)) {
468 setEventMessages($langs->trans(
"ExportOfPiecesAlreadyExportedIsDisable"),
null,
'mesgs');
470 setEventMessages($langs->trans(
"ExportOfPiecesAlreadyExportedIsEnable"),
null,
'warnings');
478 $objectclass =
'Bookkeeping';
479 $objectlabel =
'Bookkeeping';
480 $permissiontoread = $user->hasRight(
'societe',
'lire');
481 $permissiontodelete = $user->hasRight(
'societe',
'supprimer');
482 $permissiontoadd = $user->hasRight(
'societe',
'creer');
483 $uploaddir = $conf->societe->dir_output;
484 include DOL_DOCUMENT_ROOT.
'/core/actions_massactions.inc.php';
493$sql .=
" t.doc_date,";
494$sql .=
" t.doc_type,";
495$sql .=
" t.doc_ref,";
497$sql .=
" t.fk_docdet,";
498$sql .=
" t.thirdparty_code,";
499$sql .=
" t.subledger_account,";
500$sql .=
" t.subledger_label,";
501$sql .=
" t.numero_compte,";
502$sql .=
" t.label_compte,";
503$sql .=
" t.label_operation,";
506$sql .=
" t.lettering_code,";
507$sql .=
" t.montant as amount,";
509$sql .=
" t.fk_user_author,";
510$sql .=
" t.import_key,";
511$sql .=
" t.code_journal,";
512$sql .=
" t.journal_label,";
513$sql .=
" t.piece_num,";
514$sql .=
" t.date_creation,";
515$sql .=
" t.tms as date_modification,";
516$sql .=
" t.date_export,";
517$sql .=
" t.date_validated as date_validation,";
518$sql .=
" t.import_key";
522$sql .=
' FROM '.MAIN_DB_PREFIX.$object->table_element.
' as t';
525if (count($filter) > 0) {
526 foreach ($filter as $key => $value) {
527 if ($key ==
't.doc_date') {
528 $sqlwhere[] = $key.
"='".$db->idate($value).
"'";
529 } elseif ($key ==
't.doc_date>=' || $key ==
't.doc_date<=') {
530 $sqlwhere[] = $key.
"'".$db->idate($value).
"'";
531 } elseif ($key ==
't.numero_compte>=' || $key ==
't.numero_compte<=' || $key ==
't.subledger_account>=' || $key ==
't.subledger_account<=') {
532 $sqlwhere[] = $key.
"'".$db->escape($value).
"'";
533 } elseif ($key ==
't.fk_doc' || $key ==
't.fk_docdet' || $key ==
't.piece_num') {
534 $sqlwhere[] = $key.
'='.((int) $value);
535 } elseif ($key ==
't.subledger_account' || $key ==
't.numero_compte') {
536 $sqlwhere[] = $key.
" LIKE '".$db->escape($value).
"%'";
537 } elseif ($key ==
't.subledger_account') {
539 } elseif ($key ==
't.date_creation>=' || $key ==
't.date_creation<=') {
540 $sqlwhere[] = $key.
"'".$db->idate($value).
"'";
541 } elseif ($key ==
't.tms>=' || $key ==
't.tms<=') {
542 $sqlwhere[] = $key.
"'".$db->idate($value).
"'";
543 } elseif ($key ==
't.date_export>=' || $key ==
't.date_export<=') {
544 $sqlwhere[] = $key.
"'".$db->idate($value).
"'";
545 } elseif ($key ==
't.date_validated>=' || $key ==
't.date_validated<=') {
546 $sqlwhere[] = $key.
"'".$db->idate($value).
"'";
547 } elseif ($key ==
't.credit' || $key ==
't.debit') {
549 } elseif ($key ==
't.reconciled_option') {
550 $sqlwhere[] =
't.lettering_code IS NULL';
551 } elseif ($key ==
't.code_journal' && !empty($value)) {
552 if (is_array($value)) {
553 $sqlwhere[] =
natural_search(
"t.code_journal", join(
',', $value), 3, 1);
557 } elseif ($key ==
't.search_accounting_code_in' && !empty($value)) {
558 $sqlwhere[] =
't.numero_compte IN ('.$db->sanitize($value, 1).
')';
564$sql .=
' WHERE t.entity IN ('.getEntity(
'accountancy').
')';
565if (empty($conf->global->ACCOUNTING_REEXPORT)) {
566 $sql .=
" AND t.date_export IS NULL";
568if (count($sqlwhere) > 0) {
569 $sql .=
' AND '.implode(
' AND ', $sqlwhere);
576if ($action ==
'export_fileconfirm' && $user->hasRight(
'accounting',
'mouvements',
'export')) {
579 $result = $object->fetchAll($sortorder, $sortfield, 0, 0, $filter,
'AND', (empty($conf->global->ACCOUNTING_REEXPORT) ? 0 : 1));
587 $formatexport =
GETPOST(
'formatexport',
'int');
588 $notexportlettering =
GETPOST(
'notexportlettering',
'alpha');
590 if (!empty($notexportlettering)) {
591 if (is_array($object->lines)) {
592 foreach ($object->lines as $k => $movement) {
593 unset($object->lines[$k]->lettering_code);
594 unset($object->lines[$k]->date_lettering);
599 $notifiedexportdate =
GETPOST(
'notifiedexportdate',
'alpha');
600 $notifiedvalidationdate =
GETPOST(
'notifiedvalidationdate',
'alpha');
601 $withAttachment = !empty(trim(
GETPOST(
'notifiedexportfull',
'alphanohtml'))) ? 1 : 0;
604 $result = $accountancyexport->export($object->lines, $formatexport, $withAttachment);
610 if (!empty($notifiedexportdate) || !empty($notifiedvalidationdate)) {
611 if (is_array($object->lines)) {
612 dol_syslog(
"/accountancy/bookkeeping/list.php Function export_file Specify movements as exported", LOG_DEBUG);
618 foreach ($object->lines as $movement) {
622 if (!empty($notifiedexportdate) && empty($movement->date_export)) {
623 $setfields .= ($setfields ?
"," :
"").
" date_export = '".$db->idate($now).
"'";
625 if (!empty($notifiedvalidationdate) && empty($movement->date_validation)) {
626 $setfields .= ($setfields ?
"," :
"").
" date_validated = '".$db->idate($now).
"'";
630 $sql =
" UPDATE ".MAIN_DB_PREFIX.
"accounting_bookkeeping";
631 $sql .=
" SET ".$setfields;
632 $sql .=
" WHERE rowid = ".((int) $movement->id);
634 $result = $db->query($sql);
646 $accountancyexport->errors[] = $langs->trans(
'NotAllExportedMovementsCouldBeRecordedAsExportedOrValidated');
655 header(
'Location: '.$_SERVER[
'PHP_SELF']);
669$title_page = $langs->trans(
"Operations").
' - '.$langs->trans(
"ExportAccountancy");
672$nbtotalofrecords =
'';
675 $sqlforcount = preg_replace(
'/^'.preg_quote($sqlfields,
'/').
'/',
'SELECT COUNT(*) as nbtotalofrecords', $sql);
676 $sqlforcount = preg_replace(
'/GROUP BY .*$/',
'', $sqlforcount);
677 $resql = $db->query($sqlforcount);
679 $objforcount = $db->fetch_object($resql);
680 $nbtotalofrecords = $objforcount->nbtotalofrecords;
685 if (($page * $limit) > $nbtotalofrecords) {
693$sql .= $db->order($sortfield, $sortorder);
695 $sql .= $db->plimit($limit + 1, $offset);
698$resql = $db->query($sql);
704$num = $db->num_rows($resql);
706$arrayofselected = is_array($toselect) ? $toselect : array();
715if ($action ==
'export_file') {
716 $form_question = array();
718 $form_question[
'formatexport'] = array(
719 'name' =>
'formatexport',
721 'label' => $langs->trans(
'Modelcsv'),
722 'values' => $listofformat,
723 'default' => $formatexportset,
724 'morecss' =>
'minwidth200 maxwidth200'
727 $form_question[
'separator0'] = array(
'name'=>
'separator0',
'type'=>
'separator');
731 $checked = !empty($conf->global->ACCOUNTING_DEFAULT_NOT_EXPORT_LETTERING) ?
'true' :
'false';
732 $form_question[
'notexportlettering'] = array(
733 'name' =>
'notexportlettering',
734 'type' =>
'checkbox',
735 'label' => $langs->trans(
'NotExportLettering'),
739 $form_question[
'separator1'] = array(
'name'=>
'separator1',
'type'=>
'separator');
743 $checked = (!isset($conf->global->ACCOUNTING_DEFAULT_NOT_NOTIFIED_EXPORT_DATE) || !empty($conf->global->ACCOUNTING_DEFAULT_NOT_NOTIFIED_EXPORT_DATE));
744 $form_question[
'notifiedexportdate'] = array(
745 'name' =>
'notifiedexportdate',
746 'type' =>
'checkbox',
747 'label' => $langs->trans(
'NotifiedExportDate'),
748 'value' => (!empty($conf->global->ACCOUNTING_DEFAULT_NOT_NOTIFIED_EXPORT_DATE) ?
'false' :
'true'),
751 $form_question[
'separator2'] = array(
'name'=>
'separator2',
'type'=>
'separator');
755 $checked = (isset($conf->global->ACCOUNTING_DEFAULT_NOT_NOTIFIED_VALIDATION_DATE) || !empty($conf->global->ACCOUNTING_DEFAULT_NOT_NOTIFIED_VALIDATION_DATE));
756 $form_question[
'notifiedvalidationdate'] = array(
757 'name' =>
'notifiedvalidationdate',
758 'type' =>
'checkbox',
759 'label' => $langs->trans(
'NotifiedValidationDate', $langs->transnoentitiesnoconv(
"MenuAccountancyClosure")),
763 $form_question[
'separator3'] = array(
'name'=>
'separator3',
'type'=>
'separator');
767 if (
getDolGlobalString(
'ACCOUNTING_EXPORT_MODELCSV') == AccountancyExport::$EXPORT_TYPE_QUADRATUS) {
768 $form_question[
'notifiedexportfull'] = array(
769 'name' =>
'notifiedexportfull',
770 'type' =>
'checkbox',
771 'label' => $langs->trans(
'NotifiedExportFull'),
776 $formconfirm = $form->formconfirm($_SERVER[
"PHP_SELF"].
'?'.$param, $langs->trans(
"ExportFilteredList").
'...', $langs->trans(
'ConfirmExportFile'),
'export_fileconfirm', $form_question,
'', 1, 420, 600);
783if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
784 $param .=
'&contextpage='.urlencode($contextpage);
786if ($limit > 0 && $limit != $conf->liste_limit) {
787 $param .=
'&limit='.urlencode($limit);
791$arrayofmassactions = array();
792$massactionbutton = $form->selectMassAction($massaction, $arrayofmassactions);
794print
'<form method="POST" id="searchFormList" action="'.$_SERVER[
"PHP_SELF"].
'">';
795print
'<input type="hidden" name="token" value="'.newToken().
'">';
796print
'<input type="hidden" name="action" value="list">';
797if ($optioncss !=
'') {
798 print
'<input type="hidden" name="optioncss" value="'.urlencode($optioncss).
'">';
800print
'<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
801print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
802print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
803print
'<input type="hidden" name="contextpage" value="'.$contextpage.
'">';
806 $buttonLabel = $langs->trans(
"ExportFilteredList");
808 $buttonLabel = $langs->trans(
"ExportList");
811$parameters = array(
'param' => $param);
812$reshook = $hookmanager->executeHooks(
'addMoreActionsButtonsList', $parameters, $object, $action);
817$newcardbutton = empty($hookmanager->resPrint) ?
'' : $hookmanager->resPrint;
818if (empty($reshook)) {
820 if (empty($conf->global->ACCOUNTING_REEXPORT)) {
821 $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"');
822 $newcardbutton .=
'<span class="valignmiddle marginrightonly paddingleft">'.$langs->trans(
"ClickToShowAlreadyExportedLines").
'</span>';
823 $newcardbutton .=
'</a>';
825 $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"');
826 $newcardbutton .=
'<span class="valignmiddle marginrightonly paddingleft">'.$langs->trans(
"DocsAlreadyExportedAreIncluded").
'</span>';
827 $newcardbutton .=
'</a>';
830 if ($user->hasRight(
'accounting',
'mouvements',
'export')) {
831 $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'));
835print_barre_liste($title_page, $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords,
'title_accountancy', 0, $newcardbutton,
'', $limit, 0, 0, 1);
838if (empty($conf->global->ACCOUNTING_REEXPORT)) {
839 print
info_admin($langs->trans(
"WarningDataDisappearsWhenDataIsExported"), 0, 0, 0,
'hideonsmartphone info');
846include DOL_DOCUMENT_ROOT.
'/core/tpl/massactions_pre.tpl.php';
848$varpage = empty($contextpage) ? $_SERVER[
"PHP_SELF"] : $contextpage;
849$selectedfields = $form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage,
getDolGlobalString(
'MAIN_CHECKBOX_LEFT_COLUMN',
''));
850if ($massactionbutton && $contextpage !=
'poslist') {
851 $selectedfields .= $form->showCheckAddButtons(
'checkforselect', 1);
855$moreforfilter .=
'<div class="divsearchfield">';
856$moreforfilter .= $langs->trans(
'AccountingCategory').
': ';
857$moreforfilter .=
'<div class="nowrap inline-block">';
858$moreforfilter .= $formaccounting->select_accounting_category($search_account_category,
'search_account_category', 1, 0, 0, 0);
859$moreforfilter .=
'</div>';
860$moreforfilter .=
'</div>';
862$parameters = array();
863$reshook = $hookmanager->executeHooks(
'printFieldPreListTitle', $parameters, $object, $action);
864if (empty($reshook)) {
865 $moreforfilter .= $hookmanager->resPrint;
867 $moreforfilter = $hookmanager->resPrint;
870print
'<div class="liste_titre liste_titre_bydiv centpercent">';
874print
'<div class="div-table-responsive">';
875print
'<table class="tagtable liste'.($moreforfilter ?
" listwithfilterbefore" :
"").
'">';
878print
'<tr class="liste_titre_filter">';
881 print
'<td class="liste_titre center">';
882 $searchpicto = $form->showFilterButtons(
'left');
887if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
888 print
'<td class="liste_titre"><input type="text" name="search_mvt_num" size="6" value="'.dol_escape_htmltag($search_mvt_num).
'"></td>';
891if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
892 print
'<td class="liste_titre center">';
893 print $formaccounting->multi_select_journal($search_ledger_code,
'search_ledger_code', 0, 1, 1, 1,
'small maxwidth75');
897if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
898 print
'<td class="liste_titre center">';
899 print
'<div class="nowrap">';
900 print $form->selectDate($search_date_start ? $search_date_start : -1,
'search_date_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
902 print
'<div class="nowrap">';
903 print $form->selectDate($search_date_end ? $search_date_end : -1,
'search_date_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
908if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
909 print
'<td class="liste_titre"><input type="text" name="search_doc_ref" size="8" value="'.dol_escape_htmltag($search_doc_ref).
'"></td>';
912if (!empty($arrayfields[
't.numero_compte'][
'checked'])) {
913 print
'<td class="liste_titre">';
914 print
'<div class="nowrap">';
915 print $formaccounting->select_account($search_accountancy_code_start,
'search_accountancy_code_start', $langs->trans(
'From'), array(), 1, 1,
'maxwidth150',
'account');
917 print
'<div class="nowrap">';
918 print $formaccounting->select_account($search_accountancy_code_end,
'search_accountancy_code_end', $langs->trans(
'to'), array(), 1, 1,
'maxwidth150',
'account');
923if (!empty($arrayfields[
't.subledger_account'][
'checked'])) {
924 print
'<td class="liste_titre">';
927 if (!empty($conf->global->ACCOUNTANCY_COMBO_FOR_AUX)) {
928 print
'<div class="nowrap">';
930 print $formaccounting->select_auxaccount($search_accountancy_aux_code_start,
'search_accountancy_aux_code_start', $langs->trans(
'From'),
'maxwidth250',
'subledgeraccount');
932 print
'<div class="nowrap">';
933 print $formaccounting->select_auxaccount($search_accountancy_aux_code_end,
'search_accountancy_aux_code_end', $langs->trans(
'to'),
'maxwidth250',
'subledgeraccount');
936 print
'<input type="text" class="maxwidth75" name="search_accountancy_aux_code" value="'.dol_escape_htmltag($search_accountancy_aux_code).
'">';
941if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
942 print
'<td class="liste_titre">';
943 print
'<input type="text" size="7" class="flat" name="search_mvt_label" value="'.dol_escape_htmltag($search_mvt_label).
'"/>';
947if (!empty($arrayfields[
't.debit'][
'checked'])) {
948 print
'<td class="liste_titre right">';
949 print
'<input type="text" class="flat" name="search_debit" size="4" value="'.dol_escape_htmltag($search_debit).
'">';
953if (!empty($arrayfields[
't.credit'][
'checked'])) {
954 print
'<td class="liste_titre right">';
955 print
'<input type="text" class="flat" name="search_credit" size="4" value="'.dol_escape_htmltag($search_credit).
'">';
959if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
960 print
'<td class="liste_titre center">';
961 print
'<input type="text" size="3" class="flat" name="search_lettering_code" value="'.dol_escape_htmltag($search_lettering_code).
'"/>';
962 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>';
967$parameters = array(
'arrayfields'=>$arrayfields);
968$reshook = $hookmanager->executeHooks(
'printFieldListOption', $parameters);
969print $hookmanager->resPrint;
972if (!empty($arrayfields[
't.date_creation'][
'checked'])) {
973 print
'<td class="liste_titre center">';
974 print
'<div class="nowrap">';
975 print $form->selectDate($search_date_creation_start,
'search_date_creation_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
977 print
'<div class="nowrap">';
978 print $form->selectDate($search_date_creation_end,
'search_date_creation_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
983if (!empty($arrayfields[
't.tms'][
'checked'])) {
984 print
'<td class="liste_titre center">';
985 print
'<div class="nowrap">';
986 print $form->selectDate($search_date_modification_start,
'search_date_modification_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
988 print
'<div class="nowrap">';
989 print $form->selectDate($search_date_modification_end,
'search_date_modification_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
994if (!empty($arrayfields[
't.date_export'][
'checked'])) {
995 print
'<td class="liste_titre center">';
996 print
'<div class="nowrap">';
997 print $form->selectDate($search_date_export_start,
'search_date_export_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
999 print
'<div class="nowrap">';
1000 print $form->selectDate($search_date_export_end,
'search_date_export_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1005if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1006 print
'<td class="liste_titre center">';
1007 print
'<div class="nowrap">';
1008 print $form->selectDate($search_date_validation_start,
'search_date_validation_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
1010 print
'<div class="nowrap">';
1011 print $form->selectDate($search_date_validation_end,
'search_date_validation_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
1015if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1016 print
'<td class="liste_titre center">';
1017 print
'<input class="flat searchstring maxwidth50" type="text" name="search_import_key" value="'.dol_escape_htmltag($search_import_key).
'">';
1022 print
'<td class="liste_titre center">';
1023 $searchpicto = $form->showFilterButtons();
1029print
'<tr class="liste_titre">';
1031 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch actioncolumn ');}
1032if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
1033 print_liste_field_titre($arrayfields[
't.piece_num'][
'label'], $_SERVER[
'PHP_SELF'],
"t.piece_num",
"", $param,
"", $sortfield, $sortorder);
1035if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
1036 print_liste_field_titre($arrayfields[
't.code_journal'][
'label'], $_SERVER[
'PHP_SELF'],
"t.code_journal",
"", $param,
'', $sortfield, $sortorder,
'center ');
1038if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1039 print_liste_field_titre($arrayfields[
't.doc_date'][
'label'], $_SERVER[
'PHP_SELF'],
"t.doc_date",
"", $param,
'', $sortfield, $sortorder,
'center ');
1041if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
1042 print_liste_field_titre($arrayfields[
't.doc_ref'][
'label'], $_SERVER[
'PHP_SELF'],
"t.doc_ref",
"", $param,
"", $sortfield, $sortorder);
1044if (!empty($arrayfields[
't.numero_compte'][
'checked'])) {
1045 print_liste_field_titre($arrayfields[
't.numero_compte'][
'label'], $_SERVER[
'PHP_SELF'],
"t.numero_compte",
"", $param,
"", $sortfield, $sortorder);
1047if (!empty($arrayfields[
't.subledger_account'][
'checked'])) {
1048 print_liste_field_titre($arrayfields[
't.subledger_account'][
'label'], $_SERVER[
'PHP_SELF'],
"t.subledger_account",
"", $param,
"", $sortfield, $sortorder);
1050if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1051 print_liste_field_titre($arrayfields[
't.label_operation'][
'label'], $_SERVER[
'PHP_SELF'],
"t.label_operation",
"", $param,
"", $sortfield, $sortorder);
1053if (!empty($arrayfields[
't.debit'][
'checked'])) {
1054 print_liste_field_titre($arrayfields[
't.debit'][
'label'], $_SERVER[
'PHP_SELF'],
"t.debit",
"", $param,
'', $sortfield, $sortorder,
'right ');
1056if (!empty($arrayfields[
't.credit'][
'checked'])) {
1057 print_liste_field_titre($arrayfields[
't.credit'][
'label'], $_SERVER[
'PHP_SELF'],
"t.credit",
"", $param,
'', $sortfield, $sortorder,
'right ');
1059if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1060 print_liste_field_titre($arrayfields[
't.lettering_code'][
'label'], $_SERVER[
'PHP_SELF'],
"t.lettering_code",
"", $param,
'', $sortfield, $sortorder,
'center ');
1063$parameters = array(
'arrayfields'=>$arrayfields,
'param'=>$param,
'sortfield'=>$sortfield,
'sortorder'=>$sortorder);
1064$reshook = $hookmanager->executeHooks(
'printFieldListTitle', $parameters);
1065print $hookmanager->resPrint;
1066if (!empty($arrayfields[
't.date_creation'][
'checked'])) {
1067 print_liste_field_titre($arrayfields[
't.date_creation'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_creation",
"", $param,
'', $sortfield, $sortorder,
'center ');
1069if (!empty($arrayfields[
't.tms'][
'checked'])) {
1070 print_liste_field_titre($arrayfields[
't.tms'][
'label'], $_SERVER[
'PHP_SELF'],
"t.tms",
"", $param,
'', $sortfield, $sortorder,
'center ');
1072if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1073 print_liste_field_titre($arrayfields[
't.date_export'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_export,t.doc_date",
"", $param,
'', $sortfield, $sortorder,
'center ');
1075if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1076 print_liste_field_titre($arrayfields[
't.date_validated'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_validated,t.doc_date",
"", $param,
'', $sortfield, $sortorder,
'center ');
1078if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1079 print_liste_field_titre($arrayfields[
't.import_key'][
'label'], $_SERVER[
"PHP_SELF"],
"t.import_key",
"", $param,
'', $sortfield, $sortorder,
'center ');
1082 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch ');
1092$totalarray = array();
1093$totalarray[
'nbfield'] = 0;
1096$totalarray[
'val'] = array ();
1097$totalarray[
'val'][
'totaldebit'] = 0;
1098$totalarray[
'val'][
'totalcredit'] = 0;
1100while ($i < min($num, $limit)) {
1101 $obj = $db->fetch_object($resql);
1106 $line->id = $obj->rowid;
1107 $line->doc_date = $db->jdate($obj->doc_date);
1108 $line->doc_type = $obj->doc_type;
1109 $line->doc_ref = $obj->doc_ref;
1110 $line->fk_doc = $obj->fk_doc;
1111 $line->fk_docdet = $obj->fk_docdet;
1112 $line->thirdparty_code = $obj->thirdparty_code;
1113 $line->subledger_account = $obj->subledger_account;
1114 $line->subledger_label = $obj->subledger_label;
1115 $line->numero_compte = $obj->numero_compte;
1116 $line->label_compte = $obj->label_compte;
1117 $line->label_operation = $obj->label_operation;
1118 $line->debit = $obj->debit;
1119 $line->credit = $obj->credit;
1120 $line->montant = $obj->amount;
1121 $line->amount = $obj->amount;
1122 $line->sens = $obj->sens;
1123 $line->lettering_code = $obj->lettering_code;
1124 $line->fk_user_author = $obj->fk_user_author;
1125 $line->import_key = $obj->import_key;
1126 $line->code_journal = $obj->code_journal;
1127 $line->journal_label = $obj->journal_label;
1128 $line->piece_num = $obj->piece_num;
1129 $line->date_creation = $db->jdate($obj->date_creation);
1130 $line->date_modification = $db->jdate($obj->date_modification);
1131 $line->date_export = $db->jdate($obj->date_export);
1132 $line->date_validation = $db->jdate($obj->date_validation);
1134 $total_debit += $line->debit;
1135 $total_credit += $line->credit;
1137 print
'<tr class="oddeven">';
1140 print
'<td class="nowraponall center">';
1141 if (($massactionbutton || $massaction) && $contextpage !=
'poslist') {
1143 if (in_array($line->id, $arrayofselected)) {
1146 print
'<input id="cb'.$line->id.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$line->id.
'"'.($selected ?
' checked="checked"' :
'').
' />';
1150 $totalarray[
'nbfield']++;
1155 if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
1157 $object->id = $line->id;
1158 $object->piece_num = $line->piece_num;
1159 print $object->getNomUrl(1,
'', 0,
'', 1);
1162 $totalarray[
'nbfield']++;
1167 if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
1169 $result = $accountingjournal->fetch(
'', $line->code_journal);
1170 $journaltoshow = (($result > 0) ? $accountingjournal->getNomUrl(0, 0, 0,
'', 0) : $line->code_journal);
1171 print
'<td class="center tdoverflowmax150">'.$journaltoshow.
'</td>';
1173 $totalarray[
'nbfield']++;
1178 if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1179 print
'<td class="center">'.dol_print_date($line->doc_date,
'day').
'</td>';
1181 $totalarray[
'nbfield']++;
1186 if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
1187 if ($line->doc_type ==
'customer_invoice') {
1188 $langs->loadLangs(array(
'bills'));
1190 require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
1191 $objectstatic =
new Facture($db);
1192 $objectstatic->fetch($line->fk_doc);
1196 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.$objectstatic->id;
1197 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir);
1198 } elseif ($line->doc_type ==
'supplier_invoice') {
1199 $langs->loadLangs(array(
'bills'));
1201 require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.facture.class.php';
1203 $objectstatic->fetch($line->fk_doc);
1206 $filedir = $conf->fournisseur->facture->dir_output.
'/'.
get_exdir($line->fk_doc, 2, 0, 0, $objectstatic, $objectstatic->element).dol_sanitizeFileName($line->doc_ref);
1207 $subdir =
get_exdir($objectstatic->id, 2, 0, 0, $objectstatic, $objectstatic->element).dol_sanitizeFileName($line->doc_ref);
1208 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $subdir, $filedir);
1209 } elseif ($line->doc_type ==
'expense_report') {
1210 $langs->loadLangs(array(
'trips'));
1212 require_once DOL_DOCUMENT_ROOT.
'/expensereport/class/expensereport.class.php';
1214 $objectstatic->fetch($line->fk_doc);
1218 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.$objectstatic->id;
1219 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir);
1220 } elseif ($line->doc_type ==
'bank') {
1221 require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
1223 $objectstatic->fetch($line->fk_doc);
1229 $labeltoshowalt =
'';
1230 if ($line->doc_type ==
'customer_invoice' || $line->doc_type ==
'supplier_invoice' || $line->doc_type ==
'expense_report') {
1231 $labeltoshow .= $objectstatic->getNomUrl(1,
'', 0, 0,
'', 0, -1, 1);
1232 $labeltoshow .= $documentlink;
1233 $labeltoshowalt .= $objectstatic->ref;
1234 } elseif ($line->doc_type ==
'bank') {
1235 $labeltoshow .= $objectstatic->getNomUrl(1);
1236 $labeltoshowalt .= $objectstatic->ref;
1237 $bank_ref = strstr($line->doc_ref,
'-');
1238 $labeltoshow .=
" " . $bank_ref;
1239 $labeltoshowalt .=
" " . $bank_ref;
1241 $labeltoshow .= $line->doc_ref;
1242 $labeltoshowalt .= $line->doc_ref;
1245 print
'<td class="nowraponall tdoverflowmax200" title="'.dol_escape_htmltag($labeltoshowalt).
'">';
1249 $totalarray[
'nbfield']++;
1254 if (!empty($arrayfields[
't.numero_compte'][
'checked'])) {
1255 print
'<td>'.length_accountg($line->numero_compte).
'</td>';
1257 $totalarray[
'nbfield']++;
1262 if (!empty($arrayfields[
't.subledger_account'][
'checked'])) {
1263 print
'<td>'.length_accounta($line->subledger_account).
'</td>';
1265 $totalarray[
'nbfield']++;
1270 if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1271 print
'<td class="small tdoverflowmax200" title="'.dol_escape_htmltag($line->label_operation).
'">'.
dol_escape_htmltag($line->label_operation).
'</td>';
1273 $totalarray[
'nbfield']++;
1278 if (!empty($arrayfields[
't.debit'][
'checked'])) {
1279 print
'<td class="right nowraponall amount">'.($line->debit != 0 ?
price($line->debit) :
'').
'</td>';
1281 $totalarray[
'nbfield']++;
1284 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'totaldebit';
1286 $totalarray[
'val'][
'totaldebit'] += $line->debit;
1290 if (!empty($arrayfields[
't.credit'][
'checked'])) {
1291 print
'<td class="right nowraponall amount">'.($line->credit != 0 ?
price($line->credit) :
'').
'</td>';
1293 $totalarray[
'nbfield']++;
1296 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'totalcredit';
1298 $totalarray[
'val'][
'totalcredit'] += $line->credit;
1302 if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1303 print
'<td class="center">'.$line->lettering_code.
'</td>';
1305 $totalarray[
'nbfield']++;
1310 $parameters = array(
'arrayfields'=>$arrayfields,
'obj'=>$obj,
'i'=>$i,
'totalarray'=>&$totalarray);
1311 $reshook = $hookmanager->executeHooks(
'printFieldListValue', $parameters);
1312 print $hookmanager->resPrint;
1315 if (!empty($arrayfields[
't.date_creation'][
'checked'])) {
1316 print
'<td class="center">'.dol_print_date($line->date_creation,
'dayhour',
'tzuserrel').
'</td>';
1318 $totalarray[
'nbfield']++;
1323 if (!empty($arrayfields[
't.tms'][
'checked'])) {
1324 print
'<td class="center">'.dol_print_date($line->date_modification,
'dayhour',
'tzuserrel').
'</td>';
1326 $totalarray[
'nbfield']++;
1331 if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1332 print
'<td class="center nowraponall">'.dol_print_date($line->date_export,
'dayhour',
'tzuserrel').
'</td>';
1334 $totalarray[
'nbfield']++;
1339 if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1340 print
'<td class="center nowraponall">'.dol_print_date($line->date_validation,
'dayhour',
'tzuserrel').
'</td>';
1342 $totalarray[
'nbfield']++;
1346 if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1347 print
'<td class="tdoverflowmax100">'.$obj->import_key.
"</td>\n";
1349 $totalarray[
'nbfield']++;
1355 print
'<td class="nowraponall center">';
1356 if (($massactionbutton || $massaction) && $contextpage !=
'poslist') {
1358 if (in_array($line->id, $arrayofselected)) {
1361 print
'<input id="cb'.$line->id.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$line->id.
'"'.($selected ?
' checked="checked"' :
'').
' />';
1365 $totalarray[
'nbfield']++;
1376include DOL_DOCUMENT_ROOT.
'/core/tpl/list_print_total.tpl.php';
1381 foreach ($arrayfields as $key => $val) {
1382 if (!empty($val[
'checked'])) {
1386 print
'<tr><td colspan="'.$colspan.
'"><span class="opacitymedium">'.$langs->trans(
"NoRecordFound").
'</span></td></tr>';
1389$parameters = array(
'arrayfields'=>$arrayfields,
'sql'=>$sql);
1390$reshook = $hookmanager->executeHooks(
'printFieldListFooter', $parameters, $object, $action);
1391print $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 accounts.
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 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.