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;