31 require
'../../main.inc.php';
32 require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountancyexport.class.php';
33 require_once DOL_DOCUMENT_ROOT.
'/core/lib/accounting.lib.php';
34 require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/lettering.class.php';
35 require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/bookkeeping.class.php';
36 require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountingjournal.class.php';
37 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formfile.class.php';
38 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formother.class.php';
39 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formaccounting.class.php';
40 require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
41 require_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';
103 if (
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');
111 if ($search_accountancy_code_start == - 1) {
112 $search_accountancy_code_start =
'';
114 $search_accountancy_code_end =
GETPOST(
'search_accountancy_code_end',
'alpha');
115 if ($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');
121 if ($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');
125 if ($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');
142 if (empty($page) || $page < 0) {
145 $offset = $limit * $page;
146 $pageprev = $page - 1;
147 $pagenext = $page + 1;
148 if ($sortorder ==
"") {
151 if ($sortfield ==
"") {
152 $sortfield =
"t.piece_num,t.rowid";
157 $hookmanager->initHooks(array(
'bookkeepingexport'));
162 if (!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);
191 $arrayfields = array(
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),
209 if (empty($conf->global->ACCOUNTING_ENABLE_LETTERING)) {
210 unset($arrayfields[
't.lettering_code']);
214 $listofformat = $accountancyexport->getType();
216 if (empty($listofformat[$formatexportset])) {
217 $formatexportset = 1;
225 if ($user->socid > 0) {
228 if (!$user->hasRight(
'accounting',
'mouvements',
'lire')) {
239 if (
GETPOST(
'cancel',
'alpha')) {
240 $action =
'list'; $massaction =
'';
242 if (!
GETPOST(
'confirmmassaction',
'alpha')) {
246 $parameters = array(
'socid'=>$socid);
247 $reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
252 if (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,";
496 $sql .=
" t.fk_doc,";
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,";
505 $sql .=
" t.credit,";
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';
525 if (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').
')';
565 if (empty($conf->global->ACCOUNTING_REEXPORT)) {
566 $sql .=
" AND t.date_export IS NULL";
568 if (count($sqlwhere) > 0) {
569 $sql .=
' AND '.implode(
' AND ', $sqlwhere);
576 if ($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();
715 if ($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);
783 if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
784 $param .=
'&contextpage='.urlencode($contextpage);
786 if ($limit > 0 && $limit != $conf->liste_limit) {
787 $param .=
'&limit='.urlencode($limit);
791 $arrayofmassactions = array();
792 $massactionbutton =
$form->selectMassAction($massaction, $arrayofmassactions);
794 print
'<form method="POST" id="searchFormList" action="'.$_SERVER[
"PHP_SELF"].
'">';
795 print
'<input type="hidden" name="token" value="'.newToken().
'">';
796 print
'<input type="hidden" name="action" value="list">';
797 if ($optioncss !=
'') {
798 print
'<input type="hidden" name="optioncss" value="'.urlencode($optioncss).
'">';
800 print
'<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
801 print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
802 print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
803 print
'<input type="hidden" name="contextpage" value="'.$contextpage.
'">';
805 if (count($filter)) {
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;
818 if (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'));
835 print_barre_liste($title_page, $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords,
'title_accountancy', 0, $newcardbutton,
'', $limit, 0, 0, 1);
838 if (empty($conf->global->ACCOUNTING_REEXPORT)) {
839 print
info_admin($langs->trans(
"WarningDataDisappearsWhenDataIsExported"), 0, 0, 0,
'hideonsmartphone info');
846 include 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',
''));
850 if ($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);
864 if (empty($reshook)) {
865 $moreforfilter .= $hookmanager->resPrint;
867 $moreforfilter = $hookmanager->resPrint;
870 print
'<div class="liste_titre liste_titre_bydiv centpercent">';
871 print $moreforfilter;
874 print
'<div class="div-table-responsive">';
875 print
'<table class="tagtable liste'.($moreforfilter ?
" listwithfilterbefore" :
"").
'">';
878 print
'<tr class="liste_titre_filter">';
881 print
'<td class="liste_titre center">';
882 $searchpicto =
$form->showFilterButtons(
'left');
887 if (!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>';
891 if (!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');
897 if (!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"));
908 if (!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>';
912 if (!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');
923 if (!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).
'">';
941 if (!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).
'"/>';
947 if (!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).
'">';
953 if (!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).
'">';
959 if (!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);
969 print $hookmanager->resPrint;
972 if (!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"));
983 if (!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"));
994 if (!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"));
1005 if (!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"));
1015 if (!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();
1029 print
'<tr class="liste_titre">';
1031 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch actioncolumn ');}
1032 if (!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);
1035 if (!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 ');
1038 if (!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 ');
1041 if (!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);
1044 if (!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);
1047 if (!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);
1050 if (!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);
1053 if (!empty($arrayfields[
't.debit'][
'checked'])) {
1054 print_liste_field_titre($arrayfields[
't.debit'][
'label'], $_SERVER[
'PHP_SELF'],
"t.debit",
"", $param,
'', $sortfield, $sortorder,
'right ');
1056 if (!empty($arrayfields[
't.credit'][
'checked'])) {
1057 print_liste_field_titre($arrayfields[
't.credit'][
'label'], $_SERVER[
'PHP_SELF'],
"t.credit",
"", $param,
'', $sortfield, $sortorder,
'right ');
1059 if (!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);
1065 print $hookmanager->resPrint;
1066 if (!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 ');
1069 if (!empty($arrayfields[
't.tms'][
'checked'])) {
1070 print_liste_field_titre($arrayfields[
't.tms'][
'label'], $_SERVER[
'PHP_SELF'],
"t.tms",
"", $param,
'', $sortfield, $sortorder,
'center ');
1072 if (!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 ');
1075 if (!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 ');
1078 if (!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;
1100 while ($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);
1197 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.$objectstatic->id;
1198 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir);
1199 } elseif ($line->doc_type ==
'supplier_invoice') {
1200 $langs->loadLangs(array(
'bills'));
1202 require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.facture.class.php';
1204 $objectstatic->fetch($line->fk_doc);
1208 $filedir = $conf->fournisseur->facture->dir_output.
'/'.
get_exdir($line->fk_doc, 2, 0, 0, $objectstatic, $modulepart).dol_sanitizeFileName($line->doc_ref);
1209 $subdir =
get_exdir($objectstatic->id, 2, 0, 0, $objectstatic, $modulepart).dol_sanitizeFileName($line->doc_ref);
1210 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $subdir, $filedir);
1211 } elseif ($line->doc_type ==
'expense_report') {
1212 $langs->loadLangs(array(
'trips'));
1214 require_once DOL_DOCUMENT_ROOT.
'/expensereport/class/expensereport.class.php';
1216 $objectstatic->fetch($line->fk_doc);
1221 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.$objectstatic->id;
1222 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir);
1223 } elseif ($line->doc_type ==
'bank') {
1224 require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
1226 $objectstatic->fetch($line->fk_doc);
1232 $labeltoshowalt =
'';
1233 if ($line->doc_type ==
'customer_invoice' || $line->doc_type ==
'supplier_invoice' || $line->doc_type ==
'expense_report') {
1234 $labeltoshow .= $objectstatic->getNomUrl(1,
'', 0, 0,
'', 0, -1, 1);
1235 $labeltoshow .= $documentlink;
1236 $labeltoshowalt .= $objectstatic->ref;
1237 } elseif ($line->doc_type ==
'bank') {
1238 $labeltoshow .= $objectstatic->getNomUrl(1);
1239 $labeltoshowalt .= $objectstatic->ref;
1240 $bank_ref = strstr($line->doc_ref,
'-');
1241 $labeltoshow .=
" " . $bank_ref;
1242 $labeltoshowalt .=
" " . $bank_ref;
1244 $labeltoshow .= $line->doc_ref;
1245 $labeltoshowalt .= $line->doc_ref;
1248 print
'<td class="nowraponall tdoverflowmax200" title="'.dol_escape_htmltag($labeltoshowalt).
'">';
1252 $totalarray[
'nbfield']++;
1257 if (!empty($arrayfields[
't.numero_compte'][
'checked'])) {
1258 print
'<td>'.length_accountg($line->numero_compte).
'</td>';
1260 $totalarray[
'nbfield']++;
1265 if (!empty($arrayfields[
't.subledger_account'][
'checked'])) {
1266 print
'<td>'.length_accounta($line->subledger_account).
'</td>';
1268 $totalarray[
'nbfield']++;
1273 if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1274 print
'<td class="small tdoverflowmax200" title="'.dol_escape_htmltag($line->label_operation).
'">'.
dol_escape_htmltag($line->label_operation).
'</td>';
1276 $totalarray[
'nbfield']++;
1281 if (!empty($arrayfields[
't.debit'][
'checked'])) {
1282 print
'<td class="right nowraponall amount">'.($line->debit != 0 ?
price($line->debit) :
'').
'</td>';
1284 $totalarray[
'nbfield']++;
1287 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'totaldebit';
1289 $totalarray[
'val'][
'totaldebit'] += $line->debit;
1293 if (!empty($arrayfields[
't.credit'][
'checked'])) {
1294 print
'<td class="right nowraponall amount">'.($line->credit != 0 ?
price($line->credit) :
'').
'</td>';
1296 $totalarray[
'nbfield']++;
1299 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'totalcredit';
1301 $totalarray[
'val'][
'totalcredit'] += $line->credit;
1305 if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1306 print
'<td class="center">'.$line->lettering_code.
'</td>';
1308 $totalarray[
'nbfield']++;
1313 $parameters = array(
'arrayfields'=>$arrayfields,
'obj'=>$obj,
'i'=>$i,
'totalarray'=>&$totalarray);
1314 $reshook = $hookmanager->executeHooks(
'printFieldListValue', $parameters);
1315 print $hookmanager->resPrint;
1318 if (!empty($arrayfields[
't.date_creation'][
'checked'])) {
1319 print
'<td class="center">'.dol_print_date($line->date_creation,
'dayhour',
'tzuserrel').
'</td>';
1321 $totalarray[
'nbfield']++;
1326 if (!empty($arrayfields[
't.tms'][
'checked'])) {
1327 print
'<td class="center">'.dol_print_date($line->date_modification,
'dayhour',
'tzuserrel').
'</td>';
1329 $totalarray[
'nbfield']++;
1334 if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1335 print
'<td class="center nowraponall">'.dol_print_date($line->date_export,
'dayhour',
'tzuserrel').
'</td>';
1337 $totalarray[
'nbfield']++;
1342 if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1343 print
'<td class="center nowraponall">'.dol_print_date($line->date_validation,
'dayhour',
'tzuserrel').
'</td>';
1345 $totalarray[
'nbfield']++;
1349 if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1350 print
'<td class="tdoverflowmax100">'.$obj->import_key.
"</td>\n";
1352 $totalarray[
'nbfield']++;
1358 print
'<td class="nowraponall center">';
1359 if (($massactionbutton || $massaction) && $contextpage !=
'poslist') {
1361 if (in_array($line->id, $arrayofselected)) {
1364 print
'<input id="cb'.$line->id.
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="'.$line->id.
'"'.($selected ?
' checked="checked"' :
'').
' />';
1368 $totalarray[
'nbfield']++;
1379 include DOL_DOCUMENT_ROOT.
'/core/tpl/list_print_total.tpl.php';
1384 foreach ($arrayfields as $key => $val) {
1385 if (!empty($val[
'checked'])) {
1389 print
'<tr><td colspan="'.$colspan.
'"><span class="opacitymedium">'.$langs->trans(
"NoRecordFound").
'</span></td></tr>';
1392 $parameters = array(
'arrayfields'=>$arrayfields,
'sql'=>
$sql);
1393 $reshook = $hookmanager->executeHooks(
'printFieldListFooter', $parameters, $object, $action);
1394 print $hookmanager->resPrint;
dolibarr_set_const($db, $name, $value, $type='chaine', $visible=0, $note='', $entity=1)
Insert a parameter (key,value) into database (delete old key then insert it again).
if(!defined('NOREQUIRESOC')) if(!defined('NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined('NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined('NOREQUIREAJAX')) llxHeader()
Empty header.
Class to manage bank transaction lines.
Class to manage categories of an accounting account.
Manage the different format accountancy export.
Class to manage accounting journals.
Class to manage Ledger (General Ledger and Subledger)
Class to manage Trips and Expenses.
Class to manage suppliers invoices.
Class to manage invoices.
if(isModEnabled('facture') && $user->hasRight('facture', 'lire')) if((isModEnabled('fournisseur') &&empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->hasRight("fournisseur", "facture", "lire"))||(isModEnabled('supplier_invoice') && $user->hasRight("supplier_invoice", "lire"))) if(isModEnabled('don') && $user->hasRight('don', 'lire')) if(isModEnabled('tax') &&!empty($user->rights->tax->charges->lire)) if(isModEnabled('facture') &&isModEnabled('commande') && $user->hasRight("commande", "lire") &&empty($conf->global->WORKFLOW_DISABLE_CREATE_INVOICE_FROM_ORDER)) $sql
Social contributions to pay.
if($cancel &&! $id) if($action=='add' &&! $cancel) if($action=='delete') if($id) $form
Actions.
dol_get_last_day($year, $month=12, $gm=false)
Return GMT time for last day of a month or year.
dol_mktime($hour, $minute, $second, $month, $day, $year, $gm='auto', $check=1)
Return a timestamp date built from detailed informations (by default a local PHP server timestamp) Re...
dol_print_error($db='', $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
dolGetButtonTitle($label, $helpText='', $iconClass='fa fa-file', $url='', $id='', $status=1, $params=array())
Function dolGetButtonTitle : this kind of buttons are used in title in list.
natural_search($fields, $value, $mode=0, $nofirstand=0)
Generate natural SQL search string for a criteria (this criteria can be tested on one or several fiel...
price($amount, $form=0, $outlangs='', $trunc=1, $rounding=-1, $forcerounding=-1, $currency_code='')
Function to format a value into an amount for visual output Function used into PDF and HTML pages.
dol_print_date($time, $format='', $tzoutput='auto', $outputlangs='', $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
dol_now($mode='auto')
Return date for now.
getDolGlobalInt($key, $default=0)
Return dolibarr global constant int value.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
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.
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.
GETPOSTISSET($paramname)
Return true if we are in a context of submitting the parameter $paramname from a POST of a form.
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
isModEnabled($module)
Is Dolibarr module enabled.
get_exdir($num, $level, $alpha, $withoutslash, $object, $modulepart='')
Return a path to have a the directory according to object where files are stored.
dol_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...
$formconfirm
if ($action == 'delbookkeepingyear') {
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.