30require
'../../main.inc.php';
32require_once DOL_DOCUMENT_ROOT.
'/core/lib/accounting.lib.php';
33require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/lettering.class.php';
34require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/bookkeeping.class.php';
35require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountingjournal.class.php';
36require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formaccounting.class.php';
37require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formfile.class.php';
38require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formother.class.php';
39require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
42$langs->loadLangs(array(
"accountancy",
"compta"));
44$action =
GETPOST(
'action',
'aZ09');
46$massaction =
GETPOST(
'massaction',
'alpha');
47$confirm =
GETPOST(
'confirm',
'alpha');
48$toselect =
GETPOST(
'toselect',
'array');
49$type =
GETPOST(
'type',
'alpha');
51 $context_default =
'bookkeepingbysubaccountlist';
53 $context_default =
'bookkeepingbyaccountlist';
55$contextpage =
GETPOST(
'contextpage',
'aZ') ?
GETPOST(
'contextpage',
'aZ') : $context_default;
56$search_date_startyear =
GETPOSTINT(
'search_date_startyear');
57$search_date_startmonth =
GETPOSTINT(
'search_date_startmonth');
58$search_date_startday =
GETPOSTINT(
'search_date_startday');
59$search_date_endyear =
GETPOSTINT(
'search_date_endyear');
60$search_date_endmonth =
GETPOSTINT(
'search_date_endmonth');
61$search_date_endday =
GETPOSTINT(
'search_date_endday');
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_export_startyear =
GETPOSTINT(
'search_date_export_startyear');
66$search_date_export_startmonth =
GETPOSTINT(
'search_date_export_startmonth');
67$search_date_export_startday =
GETPOSTINT(
'search_date_export_startday');
68$search_date_export_endyear =
GETPOSTINT(
'search_date_export_endyear');
69$search_date_export_endmonth =
GETPOSTINT(
'search_date_export_endmonth');
70$search_date_export_endday =
GETPOSTINT(
'search_date_export_endday');
71$search_date_export_start =
dol_mktime(0, 0, 0, $search_date_export_startmonth, $search_date_export_startday, $search_date_export_startyear);
72$search_date_export_end =
dol_mktime(23, 59, 59, $search_date_export_endmonth, $search_date_export_endday, $search_date_export_endyear);
73$search_date_validation_startyear =
GETPOSTINT(
'search_date_validation_startyear');
74$search_date_validation_startmonth =
GETPOSTINT(
'search_date_validation_startmonth');
75$search_date_validation_startday =
GETPOSTINT(
'search_date_validation_startday');
76$search_date_validation_endyear =
GETPOSTINT(
'search_date_validation_endyear');
77$search_date_validation_endmonth =
GETPOSTINT(
'search_date_validation_endmonth');
78$search_date_validation_endday =
GETPOSTINT(
'search_date_validation_endday');
79$search_date_validation_start =
dol_mktime(0, 0, 0, $search_date_validation_startmonth, $search_date_validation_startday, $search_date_validation_startyear);
80$search_date_validation_end =
dol_mktime(23, 59, 59, $search_date_validation_endmonth, $search_date_validation_endday, $search_date_validation_endyear);
82$search_date_due_start_day =
GETPOSTINT(
'search_date_due_start_day');
83$search_date_due_start_month =
GETPOSTINT(
'search_date_due_start_month');
84$search_date_due_start_year =
GETPOSTINT(
'search_date_due_start_year');
85$search_date_due_start =
dol_mktime(0, 0, 0, $search_date_due_start_month, $search_date_due_start_day, $search_date_due_start_year);
87$search_date_due_end_day =
GETPOSTINT(
'search_date_due_end_day');
88$search_date_due_end_month =
GETPOSTINT(
'search_date_due_end_month');
89$search_date_due_end_year =
GETPOSTINT(
'search_date_due_end_year');
90$search_date_due_end =
dol_mktime(23, 59, 59, $search_date_due_end_month, $search_date_due_end_day, $search_date_due_end_year);
91$search_import_key =
GETPOST(
"search_import_key",
'alpha');
93$search_account_category =
GETPOSTINT(
'search_account_category');
95$search_accountancy_code_start =
GETPOST(
'search_accountancy_code_start',
'alpha');
96if ($search_accountancy_code_start == - 1) {
97 $search_accountancy_code_start =
'';
99$search_accountancy_code_end =
GETPOST(
'search_accountancy_code_end',
'alpha');
100if ($search_accountancy_code_end == - 1) {
101 $search_accountancy_code_end =
'';
103$search_doc_ref =
GETPOST(
'search_doc_ref',
'alpha');
104$search_label_operation =
GETPOST(
'search_label_operation',
'alpha');
105$search_mvt_num =
GETPOST(
'search_mvt_num',
'alpha');
106$search_direction =
GETPOST(
'search_direction',
'alpha');
107$search_ledger_code =
GETPOST(
'search_ledger_code',
'array');
108$search_debit =
GETPOST(
'search_debit',
'alpha');
109$search_credit =
GETPOST(
'search_credit',
'alpha');
110$search_lettering_code =
GETPOST(
'search_lettering_code',
'alpha');
111$search_not_reconciled =
GETPOST(
'search_not_reconciled',
'alpha');
114 $action =
'delbookkeepingyear';
119$sortfield =
GETPOST(
'sortfield',
'aZ09comma');
120$sortorder =
GETPOST(
'sortorder',
'aZ09comma');
121$optioncss =
GETPOST(
'optioncss',
'alpha');
123if (empty($page) || $page < 0) {
126$offset = $limit * $page;
127$pageprev = $page - 1;
128$pagenext = $page + 1;
129if ($sortorder ==
"") {
132if ($sortfield ==
"") {
133 $sortfield =
"t.doc_date,t.rowid";
139$hookmanager->initHooks(array($context_default));
142$form =
new Form($db);
144if (empty($search_date_start) && empty($search_date_end) && !GETPOSTISSET(
'search_date_startday') && !GETPOSTISSET(
'search_date_startmonth') && !GETPOSTISSET(
'search_date_starthour')) {
145 $sql =
"SELECT date_start, date_end from ".MAIN_DB_PREFIX.
"accounting_fiscalyear ";
146 $sql .=
" where date_start < '".$db->idate(
dol_now()).
"' and date_end > '".$db->idate(
dol_now()).
"'";
147 $sql .= $db->plimit(1);
148 $res = $db->query($sql);
150 if ($res->num_rows > 0) {
151 $fiscalYear = $db->fetch_object($res);
152 $search_date_start = strtotime($fiscalYear->date_start);
153 $search_date_end = strtotime($fiscalYear->date_end);
160 $year_end = $year_start + 1;
161 $month_end = $month_start - 1;
162 if ($month_end < 1) {
166 $search_date_start =
dol_mktime(0, 0, 0, $month_start, 1, $year_start);
173 't.piece_num' => array(
'label' => $langs->trans(
"TransactionNumShort"),
'checked' => 1),
174 't.code_journal' => array(
'label' => $langs->trans(
"Codejournal"),
'checked' => 1),
175 't.doc_date' => array(
'label' => $langs->trans(
"Docdate"),
'checked' => 1),
176 't.doc_ref' => array(
'label' => $langs->trans(
"Piece"),
'checked' => 1),
177 't.label_operation' => array(
'label' => $langs->trans(
"Label"),
'checked' => 1),
178 't.lettering_code' => array(
'label' => $langs->trans(
"Lettering"),
'checked' => 1),
179 't.debit' => array(
'label' => $langs->trans(
"AccountingDebit"),
'checked' => 1),
180 't.credit' => array(
'label' => $langs->trans(
"AccountingCredit"),
'checked' => 1),
181 't.balance' => array(
'label' => $langs->trans(
"Balance"),
'checked' => 1),
182 't.date_export' => array(
'label' => $langs->trans(
"DateExport"),
'checked' => -1),
183 't.date_validated' => array(
'label' => $langs->trans(
"DateValidation"),
'checked' => -1,
'enabled' => !
getDolGlobalString(
"ACCOUNTANCY_DISABLE_CLOSURE_LINE_BY_LINE")),
184 't.date_lim_reglement' => array(
'label' => $langs->trans(
"DateDue"),
'checked' => 0),
185 't.import_key' => array(
'label' => $langs->trans(
"ImportId"),
'checked' => -1,
'position' => 1100),
189 unset($arrayfields[
't.lettering_code']);
192if ($search_date_start && empty($search_date_startyear)) {
194 $search_date_startyear = $tmparray[
'year'];
195 $search_date_startmonth = $tmparray[
'mon'];
196 $search_date_startday = $tmparray[
'mday'];
198if ($search_date_end && empty($search_date_endyear)) {
200 $search_date_endyear = $tmparray[
'year'];
201 $search_date_endmonth = $tmparray[
'mon'];
202 $search_date_endday = $tmparray[
'mday'];
205if (!isModEnabled(
'accounting')) {
208if ($user->socid > 0) {
211if (!$user->hasRight(
'accounting',
'mouvements',
'lire')) {
219$permissiontoadd = $user->hasRight(
'accounting',
'mouvements',
'creer');
230if (
GETPOST(
'cancel',
'alpha')) {
234if (!
GETPOST(
'confirmmassaction',
'alpha') && $massaction !=
'preunletteringauto' && $massaction !=
'preunletteringmanual' && $massaction !=
'predeletebookkeepingwriting') {
238$parameters = array(
'socid' => $socid);
239$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
244if (empty($reshook)) {
245 include DOL_DOCUMENT_ROOT.
'/core/actions_changeselectedfields.inc.php';
247 if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
248 $search_doc_date =
'';
249 $search_account_category =
'';
250 $search_accountancy_code_start =
'';
251 $search_accountancy_code_end =
'';
252 $search_label_account =
'';
253 $search_doc_ref =
'';
254 $search_label_operation =
'';
255 $search_mvt_num =
'';
256 $search_direction =
'';
257 $search_ledger_code = array();
258 $search_date_start =
'';
259 $search_date_end =
'';
260 $search_date_startyear =
'';
261 $search_date_startmonth =
'';
262 $search_date_startday =
'';
263 $search_date_endyear =
'';
264 $search_date_endmonth =
'';
265 $search_date_endday =
'';
266 $search_date_export_start =
'';
267 $search_date_export_end =
'';
268 $search_date_export_startyear =
'';
269 $search_date_export_startmonth =
'';
270 $search_date_export_startday =
'';
271 $search_date_export_endyear =
'';
272 $search_date_export_endmonth =
'';
273 $search_date_export_endday =
'';
274 $search_date_validation_start =
'';
275 $search_date_validation_end =
'';
276 $search_date_validation_startyear =
'';
277 $search_date_validation_startmonth =
'';
278 $search_date_validation_startday =
'';
279 $search_date_validation_endyear =
'';
280 $search_date_validation_endmonth =
'';
281 $search_date_validation_endday =
'';
283 $search_date_due_start_day =
'';
284 $search_date_due_start_month =
'';
285 $search_date_due_start_year =
'';
286 $search_date_due_start =
'';
288 $search_date_due_end_day =
'';
289 $search_date_due_end_month =
'';
290 $search_date_due_end_year =
'';
291 $search_date_due_end =
'';
292 $search_lettering_code =
'';
295 $search_not_reconciled =
'';
296 $search_import_key =
'';
300 if (!empty($search_date_start)) {
301 $filter[
't.doc_date>='] = $search_date_start;
302 $param .=
'&search_date_startmonth='.$search_date_startmonth.
'&search_date_startday='.$search_date_startday.
'&search_date_startyear='.$search_date_startyear;
304 if (!empty($search_date_end)) {
305 $filter[
't.doc_date<='] = $search_date_end;
306 $param .=
'&search_date_endmonth='.$search_date_endmonth.
'&search_date_endday='.$search_date_endday.
'&search_date_endyear='.$search_date_endyear;
308 if (!empty($search_doc_date)) {
309 $filter[
't.doc_date'] = $search_doc_date;
310 $param .=
'&doc_datemonth='.GETPOSTINT(
'doc_datemonth').
'&doc_dateday='.
GETPOSTINT(
'doc_dateday').
'&doc_dateyear='.
GETPOSTINT(
'doc_dateyear');
312 if ($search_account_category !=
'-1' && !empty($search_account_category)) {
313 require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountancycategory.class.php';
316 $listofaccountsforgroup = $accountingcategory->getCptsCat(0,
'fk_accounting_category = '.((
int) $search_account_category));
317 $listofaccountsforgroup2 = array();
318 if (is_array($listofaccountsforgroup)) {
319 foreach ($listofaccountsforgroup as $tmpval) {
320 $listofaccountsforgroup2[] =
"'".$db->escape($tmpval[
'id']).
"'";
323 $filter[
't.search_accounting_code_in'] = implode(
',', $listofaccountsforgroup2);
324 $param .=
'&search_account_category='.urlencode((
string) ($search_account_category));
326 if (!empty($search_accountancy_code_start)) {
327 if ($type ==
'sub') {
328 $filter[
't.subledger_account>='] = $search_accountancy_code_start;
330 $filter[
't.numero_compte>='] = $search_accountancy_code_start;
332 $param .=
'&search_accountancy_code_start=' . urlencode($search_accountancy_code_start);
334 if (!empty($search_accountancy_code_end)) {
335 if ($type ==
'sub') {
336 $filter[
't.subledger_account<='] = $search_accountancy_code_end;
338 $filter[
't.numero_compte<='] = $search_accountancy_code_end;
340 $param .=
'&search_accountancy_code_end=' . urlencode($search_accountancy_code_end);
342 if (!empty($search_label_account)) {
343 $filter[
't.label_compte'] = $search_label_account;
344 $param .=
'&search_label_compte='.urlencode($search_label_account);
346 if (!empty($search_mvt_num)) {
347 $filter[
't.piece_num'] = $search_mvt_num;
348 $param .=
'&search_mvt_num='.urlencode((
string) ($search_mvt_num));
350 if (!empty($search_doc_ref)) {
351 $filter[
't.doc_ref'] = $search_doc_ref;
352 $param .=
'&search_doc_ref='.urlencode($search_doc_ref);
354 if (!empty($search_label_operation)) {
355 $filter[
't.label_operation'] = $search_label_operation;
356 $param .=
'&search_label_operation='.urlencode($search_label_operation);
358 if (!empty($search_direction)) {
359 $filter[
't.sens'] = $search_direction;
360 $param .=
'&search_direction='.urlencode($search_direction);
362 if (!empty($search_ledger_code)) {
363 $filter[
't.code_journal'] = $search_ledger_code;
364 foreach ($search_ledger_code as $code) {
365 $param .=
'&search_ledger_code[]='.urlencode($code);
368 if (!empty($search_lettering_code)) {
369 $filter[
't.lettering_code'] = $search_lettering_code;
370 $param .=
'&search_lettering_code='.urlencode($search_lettering_code);
372 if (!empty($search_debit)) {
373 $filter[
't.debit'] = $search_debit;
374 $param .=
'&search_debit='.urlencode($search_debit);
376 if (!empty($search_credit)) {
377 $filter[
't.credit'] = $search_credit;
378 $param .=
'&search_credit='.urlencode($search_credit);
380 if (!empty($search_not_reconciled)) {
381 $filter[
't.reconciled_option'] = $search_not_reconciled;
382 $param .=
'&search_not_reconciled='.urlencode($search_not_reconciled);
384 if (!empty($search_date_export_start)) {
385 $filter[
't.date_export>='] = $search_date_export_start;
386 $param .=
'&search_date_export_startmonth='.$search_date_export_startmonth.
'&search_date_export_startday='.$search_date_export_startday.
'&search_date_export_startyear='.$search_date_export_startyear;
388 if (!empty($search_date_export_end)) {
389 $filter[
't.date_export<='] = $search_date_export_end;
390 $param .=
'&search_date_export_endmonth='.$search_date_export_endmonth.
'&search_date_export_endday='.$search_date_export_endday.
'&search_date_export_endyear='.$search_date_export_endyear;
392 if (!empty($search_date_validation_start)) {
393 $filter[
't.date_validated>='] = $search_date_validation_start;
394 $param .=
'&search_date_validation_startmonth='.$search_date_validation_startmonth.
'&search_date_validation_startday='.$search_date_validation_startday.
'&search_date_validation_startyear='.$search_date_validation_startyear;
396 if (!empty($search_date_validation_end)) {
397 $filter[
't.date_validated<='] = $search_date_validation_end;
398 $param .=
'&search_date_validation_endmonth='.$search_date_validation_endmonth.
'&search_date_validation_endday='.$search_date_validation_endday.
'&search_date_validation_endyear='.$search_date_validation_endyear;
401 if (!empty($search_date_due_start)) {
402 $filter[
't.date_lim_reglement>='] = $search_date_due_start;
403 $param .=
'&search_date_due_start_day='.$search_date_due_start_day.
'&search_date_due_start_month='.$search_date_due_start_month.
'&search_date_due_start_year='.$search_date_due_start_year;
406 if (!empty($search_date_due_end)) {
407 $filter[
't.date_lim_reglement<='] = $search_date_due_end;
408 $param .=
'&search_date_due_end_day='.$search_date_due_end_day.
'&search_date_due_end_month='.$search_date_due_end_month.
'&search_date_due_end_year='.$search_date_due_end_year;
410 if (!empty($search_import_key)) {
411 $filter[
't.import_key'] = $search_import_key;
412 $param .=
'&search_import_key='.urlencode($search_import_key);
415 $url_param = substr($param, 1);
417 $param =
'&type='.$type.$param;
448 $objectclass =
'Bookkeeping';
449 $objectlabel =
'Bookkeeping';
450 $permissiontoread = $user->hasRight(
'societe',
'lire');
451 $permissiontodelete = $user->hasRight(
'societe',
'supprimer');
452 $permissiontoadd = $user->hasRight(
'societe',
'creer');
453 $uploaddir = $conf->societe->dir_output;
454 include DOL_DOCUMENT_ROOT.
'/core/actions_massactions.inc.php';
456 if (!$error && $action ==
'deletebookkeepingwriting' && $confirm ==
"yes" && $user->hasRight(
'accounting',
'mouvements',
'supprimer')) {
461 $nb_lettering = $lettering->bookkeepingLetteringAll($toselect,
true);
462 if ($nb_lettering < 0) {
470 foreach ($toselect as $toselectid) {
471 $result =
$object->fetch($toselectid);
472 if ($result > 0 && (!isset(
$object->date_validation) ||
$object->date_validation ===
'')) {
481 } elseif ($result < 0) {
485 } elseif (isset(
$object->date_validation) &&
$object->date_validation !=
'') {
486 setEventMessages($langs->trans(
"ValidatedRecordWhereFound"),
null,
'errors');
499 } elseif ($nbok > 0) {
505 header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?noreset=1".($param ?
'&'.$param :
''));
514 if ($massaction ==
'letteringauto' && $permissiontoadd) {
516 $nb_lettering = $lettering->bookkeepingLetteringAll($toselect);
517 if ($nb_lettering < 0) {
520 $nb_lettering = max(0, abs($nb_lettering) - 2);
521 } elseif ($nb_lettering == 0) {
523 setEventMessages($langs->trans(
'AccountancyNoLetteringModified'), array(),
'mesgs');
525 if ($nb_lettering == 1) {
526 setEventMessages($langs->trans(
'AccountancyOneLetteringModifiedSuccessfully'), array(),
'mesgs');
527 } elseif ($nb_lettering > 1) {
528 setEventMessages($langs->trans(
'AccountancyLetteringModifiedSuccessfully', $nb_lettering), array(),
'mesgs');
532 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
535 } elseif ($massaction ==
'letteringmanual' && $permissiontoadd) {
537 $result = $lettering->updateLettering($toselect);
541 setEventMessages($langs->trans($result == 0 ?
'AccountancyNoLetteringModified' :
'AccountancyOneLetteringModifiedSuccessfully'), array(),
'mesgs');
542 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
545 } elseif ($type ==
'sub' && $massaction ==
'letteringpartial') {
547 $result = $lettering->updateLettering($toselect,
false,
true);
551 setEventMessages($langs->trans($result == 0 ?
'AccountancyNoLetteringModified' :
'AccountancyOneLetteringModifiedSuccessfully'), array(),
'mesgs');
552 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
555 } elseif ($action ==
'unletteringauto' && $confirm ==
"yes" && $permissiontoadd) {
557 $nb_lettering = $lettering->bookkeepingLetteringAll($toselect,
true);
558 if ($nb_lettering < 0) {
561 $nb_lettering = max(0, abs($nb_lettering) - 2);
562 } elseif ($nb_lettering == 0) {
564 setEventMessages($langs->trans(
'AccountancyNoUnletteringModified'), array(),
'mesgs');
566 if ($nb_lettering == 1) {
567 setEventMessages($langs->trans(
'AccountancyOneUnletteringModifiedSuccessfully'), array(),
'mesgs');
568 } elseif ($nb_lettering > 1) {
569 setEventMessages($langs->trans(
'AccountancyUnletteringModifiedSuccessfully', $nb_lettering), array(),
'mesgs');
573 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
576 } elseif ($action ==
'unletteringmanual' && $confirm ==
"yes" && $permissiontoadd) {
578 $nb_lettering = $lettering->deleteLettering($toselect);
582 setEventMessages($langs->trans($result == 0 ?
'AccountancyNoUnletteringModified' :
'AccountancyOneUnletteringModifiedSuccessfully'), array(),
'mesgs');
583 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
598$form =
new Form($db);
600$title_page = $langs->trans(
"Operations").
' - '.$langs->trans(
"VueByAccountAccounting").
' (';
602 $title_page .= $langs->trans(
"BookkeepingSubAccount");
604 $title_page .= $langs->trans(
"Bookkeeping");
607$help_url =
'EN:Module_Double_Entry_Accounting|FR:Module_Comptabilité_en_Partie_Double';
608llxHeader(
'', $title_page, $help_url,
'', 0, 0,
'',
'',
'',
'mod-accountancy accountancy-consultation page-'.(($type ==
'sub') ?
'sub' :
'').
'ledger');
611$nbtotalofrecords =
'';
614 if ($type ==
'sub') {
615 $nbtotalofrecords =
$object->fetchAllByAccount($sortorder, $sortfield, 0, 0, $filter,
'AND', 1, 1);
617 $nbtotalofrecords =
$object->fetchAllByAccount($sortorder, $sortfield, 0, 0, $filter,
'AND', 0, 1);
620 if ($nbtotalofrecords < 0) {
628 if ($type ==
'sub') {
629 $result =
$object->fetchAllByAccount($sortorder, $sortfield, $limit, $offset, $filter,
'AND', 1);
631 $result =
$object->fetchAllByAccount($sortorder, $sortfield, $limit, $offset, $filter,
'AND', 0);
641$arrayofselected = is_array($toselect) ? $toselect : array();
689$arrayofmassactions = array();
690if (
getDolGlobalInt(
'ACCOUNTING_ENABLE_LETTERING') && $user->hasRight(
'accounting',
'mouvements',
'creer')) {
691 $arrayofmassactions[
'letteringauto'] =
img_picto(
'',
'check',
'class="pictofixedwidth"') . $langs->trans(
'LetteringAuto');
692 $arrayofmassactions[
'preunletteringauto'] =
img_picto(
'',
'uncheck',
'class="pictofixedwidth"') . $langs->trans(
'UnletteringAuto');
693 $arrayofmassactions[
'letteringmanual'] =
img_picto(
'',
'check',
'class="pictofixedwidth"') . $langs->trans(
'LetteringManual');
694 if ($type ==
'sub') {
695 $arrayofmassactions[
'letteringpartial'] =
img_picto(
'',
'check',
'class="pictofixedwidth"') . $langs->trans(
'LetteringPartial');
697 $arrayofmassactions[
'preunletteringmanual'] =
img_picto(
'',
'uncheck',
'class="pictofixedwidth"') . $langs->trans(
'UnletteringManual');
699if ($user->hasRight(
'accounting',
'mouvements',
'supprimer')) {
700 $arrayofmassactions[
'predeletebookkeepingwriting'] =
img_picto(
'',
'delete',
'class="pictofixedwidth"').$langs->trans(
"Delete");
702if (
GETPOSTINT(
'nomassaction') || in_array($massaction, array(
'preunletteringauto',
'preunletteringmanual',
'predeletebookkeepingwriting'))) {
703 $arrayofmassactions = array();
705$massactionbutton = $form->selectMassAction($massaction, $arrayofmassactions);
707print
'<form method="POST" id="searchFormList" action="'.$_SERVER[
"PHP_SELF"].
'">';
708print
'<input type="hidden" name="token" value="'.newToken().
'">';
709print
'<input type="hidden" name="action" value="list">';
710if ($optioncss !=
'') {
711 print
'<input type="hidden" name="optioncss" value="'.$optioncss.
'">';
713print
'<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
714print
'<input type="hidden" name="type" value="'.$type.
'">';
715print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
716print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
717print
'<input type="hidden" name="contextpage" value="'.$contextpage.
'">';
719$parameters = array(
'param' => $param);
720$reshook = $hookmanager->executeHooks(
'addMoreActionsButtonsList', $parameters, $object, $action);
725$newcardbutton = empty($hookmanager->resPrint) ?
'' : $hookmanager->resPrint;
727if (empty($reshook)) {
728 $newcardbutton =
dolGetButtonTitle($langs->trans(
'ViewFlatList'),
'',
'fa fa-list paddingleft imgforviewmode', DOL_URL_ROOT.
'/accountancy/bookkeeping/list.php?'.$param);
729 if ($type ==
'sub') {
730 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'GroupByAccountAccounting'),
'',
'fa fa-stream paddingleft imgforviewmode', DOL_URL_ROOT .
'/accountancy/bookkeeping/listbyaccount.php?' . $url_param,
'', 1, array(
'morecss' =>
'marginleftonly'));
731 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'GroupBySubAccountAccounting'),
'',
'fa fa-align-left vmirror paddingleft imgforviewmode', DOL_URL_ROOT .
'/accountancy/bookkeeping/listbyaccount.php?type=sub&' . $url_param,
'', 1, array(
'morecss' =>
'marginleftonly btnTitleSelected'));
733 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'GroupByAccountAccounting'),
'',
'fa fa-stream paddingleft imgforviewmode', DOL_URL_ROOT .
'/accountancy/bookkeeping/listbyaccount.php?' . $url_param,
'', 1, array(
'morecss' =>
'marginleftonly btnTitleSelected'));
734 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'GroupBySubAccountAccounting'),
'',
'fa fa-align-left vmirror paddingleft imgforviewmode', DOL_URL_ROOT .
'/accountancy/bookkeeping/listbyaccount.php?type=sub&' . $url_param,
'', 1, array(
'morecss' =>
'marginleftonly'));
737 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'NewAccountingMvt'),
'',
'fa fa-plus-circle paddingleft', DOL_URL_ROOT.
'/accountancy/bookkeeping/card.php?action=create');
740if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
741 $param .=
'&contextpage='.urlencode($contextpage);
743if ($limit > 0 && $limit != $conf->liste_limit) {
744 $param .=
'&limit='.((int) $limit);
747print_barre_liste($title_page, $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords,
'title_accountancy', 0, $newcardbutton,
'', $limit, 0, 0, 1);
749if ($massaction ==
'preunletteringauto') {
750 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassUnletteringAuto"), $langs->trans(
"ConfirmMassUnletteringQuestion", count($toselect)),
"unletteringauto",
null,
'', 0, 200, 500, 1);
751} elseif ($massaction ==
'preunletteringmanual') {
752 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassUnletteringManual"), $langs->trans(
"ConfirmMassUnletteringQuestion", count($toselect)),
"unletteringmanual",
null,
'', 0, 200, 500, 1);
753} elseif ($massaction ==
'predeletebookkeepingwriting') {
754 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassDeleteBookkeepingWriting"), $langs->trans(
"ConfirmMassDeleteBookkeepingWritingQuestion", count($toselect)),
"deletebookkeepingwriting",
null,
'', 0, 200, 500, 1);
767include DOL_DOCUMENT_ROOT.
'/core/tpl/massactions_pre.tpl.php';
769$varpage = empty($contextpage) ? $_SERVER[
"PHP_SELF"] : $contextpage;
770$selectedfields = $form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage,
getDolGlobalString(
'MAIN_CHECKBOX_LEFT_COLUMN'));
771if ($massactionbutton && $contextpage !=
'poslist') {
772 $selectedfields .= $form->showCheckAddButtons(
'checkforselect', 1);
776if (preg_match(
'/^asc/i', $sortorder)) {
784 print
info_admin($langs->trans(
"WarningRecordWithoutSubledgerAreExcluded"));
790$moreforfilter .=
'<div class="divsearchfield">';
791$moreforfilter .= $langs->trans(
'AccountAccounting').
': ';
792$moreforfilter .=
'<div class="nowrap inline-block">';
794 $moreforfilter .= $formaccounting->select_auxaccount($search_accountancy_code_start,
'search_accountancy_code_start', $langs->trans(
'From'),
'maxwidth200');
796 $moreforfilter .= $formaccounting->select_account($search_accountancy_code_start,
'search_accountancy_code_start', $langs->trans(
'From'), array(), 1, 1,
'maxwidth200');
798$moreforfilter .=
' ';
800 $moreforfilter .= $formaccounting->select_auxaccount($search_accountancy_code_end,
'search_accountancy_code_end', $langs->trans(
'to'),
'maxwidth200');
802 $moreforfilter .= $formaccounting->select_account($search_accountancy_code_end,
'search_accountancy_code_end', $langs->trans(
'to'), array(), 1, 1,
'maxwidth200');
804$stringforfirstkey = $langs->trans(
"KeyboardShortcut");
805if ($conf->browser->name ==
'chrome') {
806 $stringforfirstkey .=
' ALT +';
807} elseif ($conf->browser->name ==
'firefox') {
808 $stringforfirstkey .=
' ALT + SHIFT +';
810 $stringforfirstkey .=
' CTL +';
812$moreforfilter .=
' <a id="previous_account" accesskey="p" title="' . $stringforfirstkey .
' p" class="classfortooltip" href="#"><i class="fa fa-chevron-left"></i></a>';
813$moreforfilter .=
' <a id="next_account" accesskey="n" title="' . $stringforfirstkey .
' n" class="classfortooltip" href="#"><i class="fa fa-chevron-right"></i></a>';
814$moreforfilter .= <<<SCRIPT
815<script
type=
"text/javascript">
816 jQuery(document).ready(
function() {
817 var searchFormList = $(
'#searchFormList');
818 var searchAccountancyCodeStart = $(
'#search_accountancy_code_start');
819 var searchAccountancyCodeEnd = $(
'#search_accountancy_code_end');
820 jQuery(
'#previous_account').on(
'click',
function() {
821 var previousOption = searchAccountancyCodeStart.find(
'option:selected').prev(
'option');
822 if (previousOption.length == 1) searchAccountancyCodeStart.val(previousOption.attr(
'value'));
823 searchAccountancyCodeEnd.val(searchAccountancyCodeStart.val());
824 searchFormList.submit();
826 jQuery(
'#next_account').on(
'click',
function() {
827 var nextOption = searchAccountancyCodeStart.find(
'option:selected').next(
'option');
828 if (nextOption.length == 1) searchAccountancyCodeStart.val(nextOption.attr(
'value'));
829 searchAccountancyCodeEnd.val(searchAccountancyCodeStart.val());
830 searchFormList.submit();
832 jQuery(
'input[name="search_mvt_num"]').on(
"keypress",
function(event) {
838$moreforfilter .=
'</div>';
839$moreforfilter .=
'</div>';
841$moreforfilter .=
'<div class="divsearchfield">';
842$moreforfilter .= $langs->trans(
'AccountingCategory').
': ';
843$moreforfilter .=
'<div class="nowrap inline-block">';
844$moreforfilter .= $formaccounting->select_accounting_category($search_account_category,
'search_account_category', 1, 0, 0, 0);
845$moreforfilter .=
'</div>';
846$moreforfilter .=
'</div>';
848$parameters = array();
849$reshook = $hookmanager->executeHooks(
'printFieldPreListTitle', $parameters, $object, $action);
850if (empty($reshook)) {
851 $moreforfilter .= $hookmanager->resPrint;
853 $moreforfilter = $hookmanager->resPrint;
856print
'<div class="liste_titre liste_titre_bydiv centpercent">';
860print
'<div class="div-table-responsive">';
861print
'<table class="tagtable liste centpercent listwithfilterbefore">';
864print
'<tr class="liste_titre_filter">';
867 print
'<td class="liste_titre center">';
868 $searchpicto = $form->showFilterButtons(
'left');
873if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
874 print
'<td class="liste_titre"><input type="text" name="search_mvt_num" class="width50" value="'.dol_escape_htmltag($search_mvt_num).
'"></td>';
877if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
878 print
'<td class="liste_titre center">';
879 print $formaccounting->multi_select_journal($search_ledger_code,
'search_ledger_code', 0, 1, 1, 1,
'maxwidth75');
883if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
884 print
'<td class="liste_titre center">';
885 print
'<div class="nowrapfordate">';
886 print $form->selectDate($search_date_start,
'search_date_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
888 print
'<div class="nowrapfordate">';
889 print $form->selectDate($search_date_end,
'search_date_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
894if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
895 print
'<td class="liste_titre"><input type="text" size="7" class="flat" name="search_doc_ref" value="'.dol_escape_htmltag($search_doc_ref).
'"/></td>';
898if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
899 print
'<td class="liste_titre"><input type="text" size="7" class="flat" name="search_label_operation" value="'.dol_escape_htmltag($search_label_operation).
'"/></td>';
902if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
903 print
'<td class="liste_titre center">';
904 print
'<input type="text" size="3" class="flat" name="search_lettering_code" value="'.$search_lettering_code.
'"/>';
905 print
'<br><span class="nowrap"><input type="checkbox" name="search_not_reconciled" value="notreconciled"'.($search_not_reconciled ==
'notreconciled' ?
' checked' :
'').
'>'.$langs->trans(
"NotReconciled").
'</span>';
909if (!empty($arrayfields[
't.debit'][
'checked'])) {
910 print
'<td class="liste_titre right"><input type="text" class="flat" name="search_debit" size="4" value="'.dol_escape_htmltag($search_debit).
'"></td>';
913if (!empty($arrayfields[
't.credit'][
'checked'])) {
914 print
'<td class="liste_titre right"><input type="text" class="flat" name="search_credit" size="4" value="'.dol_escape_htmltag($search_credit).
'"></td>';
917if (!empty($arrayfields[
't.balance'][
'checked'])) {
921if (!empty($arrayfields[
't.date_export'][
'checked'])) {
922 print
'<td class="liste_titre center">';
923 print
'<div class="nowrapfordate">';
924 print $form->selectDate($search_date_export_start,
'search_date_export_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
926 print
'<div class="nowrapfordate">';
927 print $form->selectDate($search_date_export_end,
'search_date_export_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
932if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
933 print
'<td class="liste_titre center">';
934 print
'<div class="nowrapfordate">';
935 print $form->selectDate($search_date_validation_start,
'search_date_validation_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
937 print
'<div class="nowrapfordate">';
938 print $form->selectDate($search_date_validation_end,
'search_date_validation_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
943if (!empty($arrayfields[
't.date_lim_reglement'][
'checked'])) {
944 print
'<td class="liste_titre center">';
945 print
'<div class="nowrapfordate">';
946 print $form->selectDate($search_date_due_start,
'search_date_due_start_', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
948 print
'<div class="nowrapfordate">';
949 print $form->selectDate($search_date_due_end,
'search_date_due_end_', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
953if (!empty($arrayfields[
't.import_key'][
'checked'])) {
954 print
'<td class="liste_titre center">';
955 print
'<input class="flat searchstring maxwidth50" type="text" name="search_import_key" value="'.dol_escape_htmltag($search_import_key).
'">';
960$parameters = array(
'arrayfields' => $arrayfields);
961$reshook = $hookmanager->executeHooks(
'printFieldListOption', $parameters);
962print $hookmanager->resPrint;
966 print
'<td class="liste_titre center">';
967 $searchpicto = $form->showFilterButtons();
973print
'<tr class="liste_titre">';
975 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch ');
977if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
978 print_liste_field_titre($arrayfields[
't.piece_num'][
'label'], $_SERVER[
'PHP_SELF'],
"t.piece_num",
"", $param,
'', $sortfield, $sortorder,
'tdoverflowmax80imp ');
980if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
981 print_liste_field_titre($arrayfields[
't.code_journal'][
'label'], $_SERVER[
'PHP_SELF'],
"t.code_journal",
"", $param,
'', $sortfield, $sortorder,
'center ');
983if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
984 print_liste_field_titre($arrayfields[
't.doc_date'][
'label'], $_SERVER[
'PHP_SELF'],
"t.doc_date",
"", $param,
'', $sortfield, $sortorder,
'center ');
986if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
987 print_liste_field_titre($arrayfields[
't.doc_ref'][
'label'], $_SERVER[
'PHP_SELF'],
"t.doc_ref",
"", $param,
"", $sortfield, $sortorder);
989if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
990 print_liste_field_titre($arrayfields[
't.label_operation'][
'label'], $_SERVER[
'PHP_SELF'],
"t.label_operation",
"", $param,
"", $sortfield, $sortorder);
992if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
993 print_liste_field_titre($arrayfields[
't.lettering_code'][
'label'], $_SERVER[
'PHP_SELF'],
"t.lettering_code",
"", $param,
'', $sortfield, $sortorder,
'center ');
995if (!empty($arrayfields[
't.debit'][
'checked'])) {
996 print_liste_field_titre($arrayfields[
't.debit'][
'label'], $_SERVER[
'PHP_SELF'],
"t.debit",
"", $param,
'', $sortfield, $sortorder,
'right ');
998if (!empty($arrayfields[
't.credit'][
'checked'])) {
999 print_liste_field_titre($arrayfields[
't.credit'][
'label'], $_SERVER[
'PHP_SELF'],
"t.credit",
"", $param,
'', $sortfield, $sortorder,
'right ');
1001if (!empty($arrayfields[
't.balance'][
'checked'])) {
1002 print_liste_field_titre($arrayfields[
't.balance'][
'label'],
"",
"",
"", $param,
'', $sortfield, $sortorder,
'right ');
1004if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1005 print_liste_field_titre($arrayfields[
't.date_export'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_export",
"", $param,
'', $sortfield, $sortorder,
'center ');
1007if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1008 print_liste_field_titre($arrayfields[
't.date_validated'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_validated",
"", $param,
'', $sortfield, $sortorder,
'center ');
1011if (!empty($arrayfields[
't.date_lim_reglement'][
'checked'])) {
1012 print_liste_field_titre($arrayfields[
't.date_lim_reglement'][
'label'], $_SERVER[
'PHP_SELF'],
't.date_lim_reglement',
'', $param,
'', $sortfield, $sortorder,
'center ');
1014if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1015 print_liste_field_titre($arrayfields[
't.import_key'][
'label'], $_SERVER[
"PHP_SELF"],
"t.import_key",
"", $param,
'', $sortfield, $sortorder,
'center ');
1018$parameters = array(
'arrayfields' => $arrayfields,
'param' => $param,
'sortfield' => $sortfield,
'sortorder' => $sortorder);
1019$reshook = $hookmanager->executeHooks(
'printFieldListTitle', $parameters);
1020print $hookmanager->resPrint;
1022 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch ');
1026$displayed_account_number =
null;
1028$objectstatic =
null;
1036$totalarray = array();
1037$totalarray[
'nbfield'] = 0;
1038$sous_total_debit = 0;
1039$sous_total_credit = 0;
1040$totalarray[
'val'] = array();
1041$totalarray[
'val'][
'totaldebit'] = 0;
1042$totalarray[
'val'][
'totalcredit'] = 0;
1043$totalarray[
'val'][
'totalbalance'] = 0;
1050while ($i < min($num, $limit)) {
1053 if ($type ==
'sub') {
1065 if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
1068 if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
1071 if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1074 if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
1077 if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1080 if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1084 if (!empty($arrayfields[
't.balance'][
'checked'])) {
1087 if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1090 if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1094 if (!empty($arrayfields[
't.date_lim_reglement'][
'checked'])) {
1097 if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1100 if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1109 if ($accountg != $displayed_account_number || !isset($displayed_account_number)) {
1111 if (isset($displayed_account_number)) {
1112 print
'<tr class="liste_total">';
1113 if ($type ==
'sub') {
1114 print
'<td class="right" colspan="' . $colspan .
'">' . $langs->trans(
"TotalForAccount") .
' ' .
length_accounta($displayed_account_number) .
':</td>';
1116 print
'<td class="right" colspan="' . $colspan .
'">' . $langs->trans(
"TotalForAccount") .
' ' .
length_accountg($displayed_account_number) .
':</td>';
1118 print
'<td class="nowrap right">'.price(
price2num($sous_total_debit,
'MT')).
'</td>';
1119 print
'<td class="nowrap right">'.price(
price2num($sous_total_credit,
'MT')).
'</td>';
1120 if ($colspanend > 0) {
1121 print
'<td colspan="'.$colspanend.
'"></td>';
1125 $balance = $sous_total_debit - $sous_total_credit;
1126 print
'<tr class="liste_total">';
1127 print
'<td class="right" colspan="'.$colspan.
'">'.$langs->trans(
"Balance").
':</td>';
1129 print
'<td class="nowraponall right">';
1130 print
price(
price2num($sous_total_debit - $sous_total_credit,
'MT'));
1135 print
'<td class="nowraponall right">';
1136 print
price(
price2num($sous_total_credit - $sous_total_debit,
'MT'));
1139 if ($colspanend > 0) {
1140 print
'<td colspan="'.$colspanend.
'"></td>';
1146 print
'<tr class="trforbreak">';
1147 print
'<td colspan="'.($totalarray[
'nbfield'] ? $totalarray[
'nbfield'] : count($arrayfields) + 1).
'" class="tdforbreak">';
1148 if ($type ==
'sub') {
1149 if ($line->subledger_account !=
"" && $line->subledger_account !=
'-1') {
1150 print empty($line->subledger_label) ?
'<span class="error">'.$langs->trans(
"Unknown").
'</span>' : $line->subledger_label;
1155 print
'<span class="error">' . $langs->trans(
"Unknown");
1156 if ($line->subledger_label) {
1157 print
' (' . $line->subledger_label .
')';
1158 $htmltext =
'EmptyStringForSubledgerAccountButSubledgerLabelDefined';
1160 $htmltext =
'EmptyStringForSubledgerAccountAndSubledgerLabel';
1162 print $form->textwithpicto(
'', $htmltext);
1166 if ($line->numero_compte !=
"" && $line->numero_compte !=
'-1') {
1169 print
'<span class="error">' . $langs->trans(
"Unknown") .
'</span>';
1175 $displayed_account_number = $accountg;
1177 $sous_total_debit = 0;
1178 $sous_total_credit = 0;
1183 print
'<tr class="oddeven">';
1186 print
'<td class="nowraponall center">';
1187 if (($massactionbutton || $massaction) && $contextpage !=
'poslist') {
1189 if (in_array($line->id, $arrayofselected)) {
1192 print
'<input id="cb' . $line->id .
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="' . $line->id .
'"' . ($selected ?
' checked="checked"' :
'') .
' />';
1196 $totalarray[
'nbfield']++;
1200 if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
1203 $object->piece_num = $line->piece_num;
1204 print
$object->getNomUrl(1,
'', 0,
'', 1);
1207 $totalarray[
'nbfield']++;
1212 if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
1214 $result = $accountingjournal->fetch(0, $line->code_journal);
1215 $journaltoshow = (($result > 0) ? $accountingjournal->getNomUrl(0, 0, 0,
'', 0) : $line->code_journal);
1216 print
'<td class="center tdoverflowmax80">'.$journaltoshow.
'</td>';
1218 $totalarray[
'nbfield']++;
1223 if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1224 print
'<td class="center">'.dol_print_date($line->doc_date,
'day').
'</td>';
1226 $totalarray[
'nbfield']++;
1232 if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
1233 if ($line->doc_type ==
'customer_invoice') {
1234 $langs->loadLangs(array(
'bills'));
1236 require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
1237 $objectstatic =
new Facture($db);
1238 $objectstatic->fetch($line->fk_doc);
1243 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.$objectstatic->id;
1244 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir);
1245 } elseif ($line->doc_type ==
'supplier_invoice') {
1246 $langs->loadLangs(array(
'bills'));
1248 require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.facture.class.php';
1250 $objectstatic->fetch($line->fk_doc);
1252 $modulepart =
'invoice_supplier';
1254 $filedir = $conf->fournisseur->facture->dir_output.
'/'.
get_exdir($line->fk_doc, 2, 0, 0, $objectstatic, $modulepart).dol_sanitizeFileName($line->doc_ref);
1255 $subdir =
get_exdir($objectstatic->id, 2, 0, 0, $objectstatic, $modulepart).dol_sanitizeFileName($line->doc_ref);
1256 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $subdir, $filedir);
1257 } elseif ($line->doc_type ==
'expense_report') {
1258 $langs->loadLangs(array(
'trips'));
1260 require_once DOL_DOCUMENT_ROOT.
'/expensereport/class/expensereport.class.php';
1262 $objectstatic->fetch($line->fk_doc);
1267 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.$objectstatic->id;
1268 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir);
1269 } elseif ($line->doc_type ==
'bank') {
1270 require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
1272 $objectstatic->fetch($line->fk_doc);
1277 print
'<td class="tdoverflowmax250">';
1280 if ($line->doc_type ==
'customer_invoice' || $line->doc_type ==
'supplier_invoice' || $line->doc_type ==
'expense_report') {
1281 print $objectstatic->getNomUrl(1,
'', 0, 0,
'', 0, -1, 1);
1282 print $documentlink;
1283 } elseif ($line->doc_type ==
'bank') {
1284 print $objectstatic->getNomUrl(1);
1285 $bank_ref = strstr($line->doc_ref,
'-');
1286 print
" " . $bank_ref;
1288 print $line->doc_ref;
1293 $totalarray[
'nbfield']++;
1298 if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1300 $doc_ref = preg_replace(
'/\(.*\)/',
'', $line->doc_ref);
1302 print
'<td class="small tdoverflowmax350 classfortooltip" title="'.dol_escape_htmltag($line->label_operation).
'">'.
dol_escape_htmltag($line->label_operation).
'</td>';
1304 print
'<td class="small tdoverflowmax350 classfortooltip" title="'.dol_escape_htmltag($line->label_operation.($line->label_operation ?
'<br>' :
'').
'<span style="font-size:0.8em">('.
length_accounta($line->subledger_account).
')').
'">'.
dol_escape_htmltag($line->label_operation).($line->label_operation ?
'<br>' :
'').
'<span style="font-size:0.8em">('.
dol_escape_htmltag(
length_accounta($line->subledger_account)).
')</span></td>';
1307 $totalarray[
'nbfield']++;
1312 if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1313 print
'<td class="center">'.dol_escape_htmltag($line->lettering_code).
'</td>';
1315 $totalarray[
'nbfield']++;
1320 if (!empty($arrayfields[
't.debit'][
'checked'])) {
1321 print
'<td class="right nowraponall amount">'.($line->debit != 0 ?
price($line->debit) :
'').
'</td>';
1323 $totalarray[
'nbfield']++;
1326 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'totaldebit';
1328 $totalarray[
'val'][
'totaldebit'] += (float) $line->debit;
1332 if (!empty($arrayfields[
't.credit'][
'checked'])) {
1333 print
'<td class="right nowraponall amount">'.($line->credit != 0 ?
price($line->credit) :
'').
'</td>';
1335 $totalarray[
'nbfield']++;
1338 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'totalcredit';
1340 $totalarray[
'val'][
'totalcredit'] += (float) $line->credit;
1344 if (!empty($arrayfields[
't.balance'][
'checked'])) {
1345 print
'<td class="right nowraponall amount">'.price(
price2num($sous_total_debit + $line->debit - $sous_total_credit - $line->credit,
'MT')).
'</td>';
1347 $totalarray[
'nbfield']++;
1350 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'totalbalance';
1352 $totalarray[
'val'][
'totalbalance'] += $line->debit - $line->credit;
1356 if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1357 print
'<td class="center">'.dol_print_date($line->date_export,
'dayhour').
'</td>';
1359 $totalarray[
'nbfield']++;
1364 if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1365 print
'<td class="center">'.dol_print_date($line->date_validation,
'dayhour').
'</td>';
1367 $totalarray[
'nbfield']++;
1372 if (!empty($arrayfields[
't.date_lim_reglement'][
'checked'])) {
1373 print
'<td class="center">'.dol_print_date($line->date_lim_reglement,
'day').
'</td>';
1375 $totalarray[
'nbfield']++;
1379 if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1380 print
'<td class="tdoverflowmax125" title="'.dol_escape_htmltag($line->import_key).
'">'.
dol_escape_htmltag($line->import_key).
"</td>\n";
1382 $totalarray[
'nbfield']++;
1387 $parameters = array(
'arrayfields' => $arrayfields,
'obj' => $line);
1388 $reshook = $hookmanager->executeHooks(
'printFieldListValue', $parameters);
1389 print $hookmanager->resPrint;
1393 print
'<td class="nowraponall center">';
1394 if (($massactionbutton || $massaction) && $contextpage !=
'poslist') {
1396 if (in_array($line->id, $arrayofselected)) {
1399 print
'<input id="cb' . $line->id .
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="' . $line->id .
'"' . ($selected ?
' checked="checked"' :
'') .
' />';
1403 $totalarray[
'nbfield']++;
1408 $sous_total_debit += $line->debit;
1409 $sous_total_credit += $line->credit;
1416if ($num > 0 && $colspan > 0) {
1417 print
'<tr class="liste_total">';
1418 print
'<td class="right" colspan="'.$colspan.
'">'.$langs->trans(
"TotalForAccount").
' '.$accountg.
':</td>';
1419 print
'<td class="nowrap right">'.price(
price2num($sous_total_debit,
'MT')).
'</td>';
1420 print
'<td class="nowrap right">'.price(
price2num($sous_total_credit,
'MT')).
'</td>';
1421 if ($colspanend > 0) {
1422 print
'<td colspan="'.$colspanend.
'"></td>';
1426 $balance = $sous_total_debit - $sous_total_credit;
1427 print
'<tr class="liste_total">';
1428 print
'<td class="right" colspan="'.$colspan.
'">'.$langs->trans(
"Balance").
':</td>';
1430 print
'<td class="nowraponall right">';
1431 print
price(
price2num($sous_total_debit - $sous_total_credit,
'MT'));
1436 print
'<td class="nowraponall right">';
1437 print
price(
price2num($sous_total_credit - $sous_total_debit,
'MT'));
1440 if ($colspanend > 0) {
1441 print
'<td colspan="'.$colspanend.
'"></td>';
1448if (!empty($totalarray[
'val'][
'totaldebit'])) {
1449 $totalarray[
'val'][
'totaldebit'] = (float)
price2num($totalarray[
'val'][
'totaldebit'],
'MT');
1451if (!empty($totalarray[
'val'][
'totalcredit'])) {
1452 $totalarray[
'val'][
'totalcredit'] = (float)
price2num($totalarray[
'val'][
'totalcredit'],
'MT');
1454if (!empty($totalarray[
'val'][
'totalbalance'])) {
1455 $totalarray[
'val'][
'totalbalance'] = (float)
price2num($totalarray[
'val'][
'totaldebit'] - $totalarray[
'val'][
'totalcredit'],
'MT');
1459include DOL_DOCUMENT_ROOT.
'/core/tpl/list_print_total.tpl.php';
1464 foreach ($arrayfields as $key => $val) {
1465 if (!empty($val[
'checked'])) {
1469 print
'<tr><td colspan="'.$colspan.
'"><span class="opacitymedium">'.$langs->trans(
"NoRecordFound").
'</span></td></tr>';
1472$parameters = array(
'arrayfields' => $arrayfields);
1473$reshook = $hookmanager->executeHooks(
'printFieldListFooter', $parameters, $object, $action);
1474print $hookmanager->resPrint;
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
length_accountg($account)
Return General accounting account with defined length (used for product and miscellaneous)
length_accounta($accounta)
Return Auxiliary accounting account of thirdparties with defined length.
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader($head='', $title='', $help_url='', $target='', $disablejs=0, $disablehead=0, $arrayofjs='', $arrayofcss='', $morequerystring='', $morecssonbody='', $replacemainareaby='', $disablenofollow=0, $disablenoindex=0)
Empty header.
Class to manage bank transaction lines.
Class to manage categories of an accounting account.
Class to manage accounting journals.
Class to manage Ledger (General Ledger and Subledger)
Class to manage Trips and Expenses.
Class to manage suppliers invoices.
Class to manage invoices.
dol_get_last_day($year, $month=12, $gm=false)
Return GMT time for last day of a month or year.
dol_mktime($hour, $minute, $second, $month, $day, $year, $gm='auto', $check=1)
Return a timestamp date built from detailed information (by default a local PHP server timestamp) Rep...
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0, $attop=0)
Set event messages in dol_events session object.
print_barre_liste($title, $page, $file, $options='', $sortfield='', $sortorder='', $morehtmlcenter='', $num=-1, $totalnboflines='', $picto='generic', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limit=-1, $selectlimitsuffix=0, $hidenavigation=0, $pagenavastextinput=0, $morehtmlrightbeforearrow='')
Print a title with navigation controls for pagination.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
price2num($amount, $rounding='', $option=0)
Function that return a number with universal decimal format (decimal separator is '.
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.
price($amount, $form=0, $outlangs='', $trunc=1, $rounding=-1, $forcerounding=-1, $currency_code='')
Function to format a value into an amount for visual output Function used into PDF and HTML pages.
dol_now($mode='auto')
Return date for now.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
dol_print_date($time, $format='', $tzoutput='auto', $outputlangs=null, $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
print_liste_field_titre($name, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $tooltip="", $forcenowrapcolumntitle=0)
Show title line of an array.
dolGetButtonTitleSeparator($moreClass="")
Add space between dolGetButtonTitle.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
dol_sanitizeFileName($str, $newstr='_', $unaccent=1)
Clean a string to use it as a file name.
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
info_admin($text, $infoonimgalt=0, $nodiv=0, $admin='1', $morecss='hideonsmartphone', $textfordropdown='', $picto='')
Show information in HTML for admin users or standard users.
get_exdir($num, $level, $alpha, $withoutslash, $object, $modulepart='')
Return a path to have a the directory according to object where files are stored.
dol_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') {
if(preg_match('/crypted:/i', $dolibarr_main_db_pass)||!empty($dolibarr_main_db_encrypted_pass)) $conf db type
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.