31require
'../../main.inc.php';
33require_once DOL_DOCUMENT_ROOT.
'/core/lib/accounting.lib.php';
34require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/lettering.class.php';
35require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/bookkeeping.class.php';
36require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountingjournal.class.php';
37require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formaccounting.class.php';
38require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formfile.class.php';
39require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formother.class.php';
40require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
43$langs->loadLangs(array(
"accountancy",
"compta"));
45$action =
GETPOST(
'action',
'aZ09');
47$massaction =
GETPOST(
'massaction',
'alpha');
48$confirm =
GETPOST(
'confirm',
'alpha');
49$toselect =
GETPOST(
'toselect',
'array');
50$type =
GETPOST(
'type',
'alpha');
52 $context_default =
'bookkeepingbysubaccountlist';
54 $context_default =
'bookkeepingbyaccountlist';
56$contextpage =
GETPOST(
'contextpage',
'aZ') ?
GETPOST(
'contextpage',
'aZ') : $context_default;
57$search_date_startyear =
GETPOSTINT(
'search_date_startyear');
58$search_date_startmonth =
GETPOSTINT(
'search_date_startmonth');
59$search_date_startday =
GETPOSTINT(
'search_date_startday');
60$search_date_endyear =
GETPOSTINT(
'search_date_endyear');
61$search_date_endmonth =
GETPOSTINT(
'search_date_endmonth');
62$search_date_endday =
GETPOSTINT(
'search_date_endday');
63$search_date_start =
dol_mktime(0, 0, 0, $search_date_startmonth, $search_date_startday, $search_date_startyear);
64$search_date_end =
dol_mktime(23, 59, 59, $search_date_endmonth, $search_date_endday, $search_date_endyear);
66$search_date_export_startyear =
GETPOSTINT(
'search_date_export_startyear');
67$search_date_export_startmonth =
GETPOSTINT(
'search_date_export_startmonth');
68$search_date_export_startday =
GETPOSTINT(
'search_date_export_startday');
69$search_date_export_endyear =
GETPOSTINT(
'search_date_export_endyear');
70$search_date_export_endmonth =
GETPOSTINT(
'search_date_export_endmonth');
71$search_date_export_endday =
GETPOSTINT(
'search_date_export_endday');
72$search_date_export_start =
dol_mktime(0, 0, 0, $search_date_export_startmonth, $search_date_export_startday, $search_date_export_startyear);
73$search_date_export_end =
dol_mktime(23, 59, 59, $search_date_export_endmonth, $search_date_export_endday, $search_date_export_endyear);
74$search_date_validation_startyear =
GETPOSTINT(
'search_date_validation_startyear');
75$search_date_validation_startmonth =
GETPOSTINT(
'search_date_validation_startmonth');
76$search_date_validation_startday =
GETPOSTINT(
'search_date_validation_startday');
77$search_date_validation_endyear =
GETPOSTINT(
'search_date_validation_endyear');
78$search_date_validation_endmonth =
GETPOSTINT(
'search_date_validation_endmonth');
79$search_date_validation_endday =
GETPOSTINT(
'search_date_validation_endday');
80$search_date_validation_start =
dol_mktime(0, 0, 0, $search_date_validation_startmonth, $search_date_validation_startday, $search_date_validation_startyear);
81$search_date_validation_end =
dol_mktime(23, 59, 59, $search_date_validation_endmonth, $search_date_validation_endday, $search_date_validation_endyear);
82$search_import_key =
GETPOST(
"search_import_key",
'alpha');
84$search_account_category =
GETPOSTINT(
'search_account_category');
86$search_accountancy_code_start =
GETPOST(
'search_accountancy_code_start',
'alpha');
87if ($search_accountancy_code_start == - 1) {
88 $search_accountancy_code_start =
'';
90$search_accountancy_code_end =
GETPOST(
'search_accountancy_code_end',
'alpha');
91if ($search_accountancy_code_end == - 1) {
92 $search_accountancy_code_end =
'';
94$search_doc_ref =
GETPOST(
'search_doc_ref',
'alpha');
95$search_label_operation =
GETPOST(
'search_label_operation',
'alpha');
96$search_mvt_num =
GETPOST(
'search_mvt_num',
'alpha');
97$search_direction =
GETPOST(
'search_direction',
'alpha');
98$search_ledger_code =
GETPOST(
'search_ledger_code',
'array');
99$search_debit =
GETPOST(
'search_debit',
'alpha');
100$search_credit =
GETPOST(
'search_credit',
'alpha');
101$search_lettering_code =
GETPOST(
'search_lettering_code',
'alpha');
102$search_not_reconciled =
GETPOST(
'search_not_reconciled',
'alpha');
105 $action =
'delbookkeepingyear';
110$sortfield =
GETPOST(
'sortfield',
'aZ09comma');
111$sortorder =
GETPOST(
'sortorder',
'aZ09comma');
112$optioncss =
GETPOST(
'optioncss',
'alpha');
114if (empty($page) || $page < 0) {
117$offset = $limit * $page;
118$pageprev = $page - 1;
119$pagenext = $page + 1;
120if ($sortorder ==
"") {
123if ($sortfield ==
"") {
124 $sortfield =
"t.doc_date,t.rowid";
130$hookmanager->initHooks(array($context_default));
133$form =
new Form($db);
135if (empty($search_date_start) && empty($search_date_end) && !GETPOSTISSET(
'search_date_startday') && !GETPOSTISSET(
'search_date_startmonth') && !GETPOSTISSET(
'search_date_starthour')) {
136 $sql =
"SELECT date_start, date_end from ".MAIN_DB_PREFIX.
"accounting_fiscalyear ";
137 $sql .=
" where date_start < '".$db->idate(
dol_now()).
"' and date_end > '".$db->idate(
dol_now()).
"'";
138 $sql .= $db->plimit(1);
139 $res = $db->query($sql);
141 if ($res->num_rows > 0) {
142 $fiscalYear = $db->fetch_object($res);
143 $search_date_start = strtotime($fiscalYear->date_start);
144 $search_date_end = strtotime($fiscalYear->date_end);
151 $year_end = $year_start + 1;
152 $month_end = $month_start - 1;
153 if ($month_end < 1) {
157 $search_date_start =
dol_mktime(0, 0, 0, $month_start, 1, $year_start);
164 't.piece_num' => array(
'label' => $langs->trans(
"TransactionNumShort"),
'checked' => 1),
165 't.code_journal' => array(
'label' => $langs->trans(
"Codejournal"),
'checked' => 1),
166 't.doc_date' => array(
'label' => $langs->trans(
"Docdate"),
'checked' => 1),
167 't.doc_ref' => array(
'label' => $langs->trans(
"Piece"),
'checked' => 1),
168 't.label_operation' => array(
'label' => $langs->trans(
"Label"),
'checked' => 1),
169 't.lettering_code' => array(
'label' => $langs->trans(
"Lettering"),
'checked' => 1),
170 't.debit' => array(
'label' => $langs->trans(
"AccountingDebit"),
'checked' => 1),
171 't.credit' => array(
'label' => $langs->trans(
"AccountingCredit"),
'checked' => 1),
172 't.balance' => array(
'label' => $langs->trans(
"Balance"),
'checked' => 1),
173 't.date_export' => array(
'label' => $langs->trans(
"DateExport"),
'checked' => -1),
174 't.date_validated' => array(
'label' => $langs->trans(
"DateValidation"),
'checked' => -1,
'enabled' => !
getDolGlobalString(
"ACCOUNTANCY_DISABLE_CLOSURE_LINE_BY_LINE")),
175 't.import_key' => array(
'label' => $langs->trans(
"ImportId"),
'checked' => -1,
'position' => 1100),
179 unset($arrayfields[
't.lettering_code']);
182if ($search_date_start && empty($search_date_startyear)) {
184 $search_date_startyear = $tmparray[
'year'];
185 $search_date_startmonth = $tmparray[
'mon'];
186 $search_date_startday = $tmparray[
'mday'];
188if ($search_date_end && empty($search_date_endyear)) {
190 $search_date_endyear = $tmparray[
'year'];
191 $search_date_endmonth = $tmparray[
'mon'];
192 $search_date_endday = $tmparray[
'mday'];
195if (!isModEnabled(
'accounting')) {
198if ($user->socid > 0) {
201if (!$user->hasRight(
'accounting',
'mouvements',
'lire')) {
207$permissiontoadd = $user->hasRight(
'accounting',
'mouvements',
'creer');
216if (
GETPOST(
'cancel',
'alpha')) {
220if (!
GETPOST(
'confirmmassaction',
'alpha') && $massaction !=
'preunletteringauto' && $massaction !=
'preunletteringmanual' && $massaction !=
'predeletebookkeepingwriting') {
224$parameters = array(
'socid' => $socid);
225$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
230if (empty($reshook)) {
231 include DOL_DOCUMENT_ROOT.
'/core/actions_changeselectedfields.inc.php';
233 if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
234 $search_doc_date =
'';
235 $search_account_category =
'';
236 $search_accountancy_code_start =
'';
237 $search_accountancy_code_end =
'';
238 $search_label_account =
'';
239 $search_doc_ref =
'';
240 $search_label_operation =
'';
241 $search_mvt_num =
'';
242 $search_direction =
'';
243 $search_ledger_code = array();
244 $search_date_start =
'';
245 $search_date_end =
'';
246 $search_date_startyear =
'';
247 $search_date_startmonth =
'';
248 $search_date_startday =
'';
249 $search_date_endyear =
'';
250 $search_date_endmonth =
'';
251 $search_date_endday =
'';
252 $search_date_export_start =
'';
253 $search_date_export_end =
'';
254 $search_date_export_startyear =
'';
255 $search_date_export_startmonth =
'';
256 $search_date_export_startday =
'';
257 $search_date_export_endyear =
'';
258 $search_date_export_endmonth =
'';
259 $search_date_export_endday =
'';
260 $search_date_validation_start =
'';
261 $search_date_validation_end =
'';
262 $search_date_validation_startyear =
'';
263 $search_date_validation_startmonth =
'';
264 $search_date_validation_startday =
'';
265 $search_date_validation_endyear =
'';
266 $search_date_validation_endmonth =
'';
267 $search_date_validation_endday =
'';
268 $search_lettering_code =
'';
271 $search_not_reconciled =
'';
272 $search_import_key =
'';
279 if (!empty($search_date_start)) {
280 $filter[
't.doc_date>='] = $search_date_start;
281 $param .=
'&search_date_startmonth='.$search_date_startmonth.
'&search_date_startday='.$search_date_startday.
'&search_date_startyear='.$search_date_startyear;
283 if (!empty($search_date_end)) {
284 $filter[
't.doc_date<='] = $search_date_end;
285 $param .=
'&search_date_endmonth='.$search_date_endmonth.
'&search_date_endday='.$search_date_endday.
'&search_date_endyear='.$search_date_endyear;
287 if (!empty($search_doc_date)) {
288 $filter[
't.doc_date'] = $search_doc_date;
289 $param .=
'&doc_datemonth='.GETPOSTINT(
'doc_datemonth').
'&doc_dateday='.
GETPOSTINT(
'doc_dateday').
'&doc_dateyear='.
GETPOSTINT(
'doc_dateyear');
291 if ($search_account_category !=
'-1' && !empty($search_account_category)) {
292 require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountancycategory.class.php';
295 $listofaccountsforgroup = $accountingcategory->getCptsCat(0,
'fk_accounting_category = '.((
int) $search_account_category));
296 $listofaccountsforgroup2 = array();
297 if (is_array($listofaccountsforgroup)) {
298 foreach ($listofaccountsforgroup as $tmpval) {
299 $listofaccountsforgroup2[] =
"'".$db->escape($tmpval[
'account_number']).
"'";
302 $filter[
't.search_accounting_code_in'] = implode(
',', $listofaccountsforgroup2);
303 $param .=
'&search_account_category='.urlencode((
string) ($search_account_category));
305 if (!empty($search_accountancy_code_start)) {
306 if ($type ==
'sub') {
307 $filter[
't.subledger_account>='] = $search_accountancy_code_start;
309 $filter[
't.numero_compte>='] = $search_accountancy_code_start;
311 $param .=
'&search_accountancy_code_start=' . urlencode($search_accountancy_code_start);
313 if (!empty($search_accountancy_code_end)) {
314 if ($type ==
'sub') {
315 $filter[
't.subledger_account<='] = $search_accountancy_code_end;
317 $filter[
't.numero_compte<='] = $search_accountancy_code_end;
319 $param .=
'&search_accountancy_code_end=' . urlencode($search_accountancy_code_end);
321 if (!empty($search_label_account)) {
322 $filter[
't.label_compte'] = $search_label_account;
323 $param .=
'&search_label_compte='.urlencode($search_label_account);
325 if (!empty($search_mvt_num)) {
326 $filter[
't.piece_num'] = $search_mvt_num;
327 $param .=
'&search_mvt_num='.urlencode((
string) ($search_mvt_num));
329 if (!empty($search_doc_ref)) {
330 $filter[
't.doc_ref'] = $search_doc_ref;
331 $param .=
'&search_doc_ref='.urlencode($search_doc_ref);
333 if (!empty($search_label_operation)) {
334 $filter[
't.label_operation'] = $search_label_operation;
335 $param .=
'&search_label_operation='.urlencode($search_label_operation);
337 if (!empty($search_direction)) {
338 $filter[
't.sens'] = $search_direction;
339 $param .=
'&search_direction='.urlencode($search_direction);
341 if (!empty($search_ledger_code)) {
342 $filter[
't.code_journal'] = $search_ledger_code;
343 foreach ($search_ledger_code as $code) {
344 $param .=
'&search_ledger_code[]='.urlencode($code);
347 if (!empty($search_lettering_code)) {
348 $filter[
't.lettering_code'] = $search_lettering_code;
349 $param .=
'&search_lettering_code='.urlencode($search_lettering_code);
351 if (!empty($search_debit)) {
352 $filter[
't.debit'] = $search_debit;
353 $param .=
'&search_debit='.urlencode($search_debit);
355 if (!empty($search_credit)) {
356 $filter[
't.credit'] = $search_credit;
357 $param .=
'&search_credit='.urlencode($search_credit);
359 if (!empty($search_not_reconciled)) {
360 $filter[
't.reconciled_option'] = $search_not_reconciled;
361 $param .=
'&search_not_reconciled='.urlencode($search_not_reconciled);
363 if (!empty($search_date_export_start)) {
364 $filter[
't.date_export>='] = $search_date_export_start;
365 $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;
367 if (!empty($search_date_export_end)) {
368 $filter[
't.date_export<='] = $search_date_export_end;
369 $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;
371 if (!empty($search_date_validation_start)) {
372 $filter[
't.date_validated>='] = $search_date_validation_start;
373 $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;
375 if (!empty($search_date_validation_end)) {
376 $filter[
't.date_validated<='] = $search_date_validation_end;
377 $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;
379 if (!empty($search_import_key)) {
380 $filter[
't.import_key'] = $search_import_key;
381 $param .=
'&search_import_key='.urlencode($search_import_key);
384 $url_param = substr($param, 1);
386 $param =
'&type='.$type.$param;
417 $objectclass =
'Bookkeeping';
418 $objectlabel =
'Bookkeeping';
419 $permissiontoread = $user->hasRight(
'societe',
'lire');
420 $permissiontodelete = $user->hasRight(
'societe',
'supprimer');
421 $permissiontoadd = $user->hasRight(
'societe',
'creer');
422 $uploaddir = $conf->societe->dir_output;
423 include DOL_DOCUMENT_ROOT.
'/core/actions_massactions.inc.php';
425 if (!$error && $action ==
'deletebookkeepingwriting' && $confirm ==
"yes" && $user->hasRight(
'accounting',
'mouvements',
'supprimer')) {
430 $nb_lettering = $lettering->bookkeepingLetteringAll($toselect,
true);
431 if ($nb_lettering < 0) {
439 foreach ($toselect as $toselectid) {
440 $result =
$object->fetch($toselectid);
441 if ($result > 0 && (!isset(
$object->date_validation) ||
$object->date_validation ===
'')) {
450 } elseif ($result < 0) {
454 } elseif (isset(
$object->date_validation) &&
$object->date_validation !=
'') {
455 setEventMessages($langs->trans(
"ValidatedRecordWhereFound"),
null,
'errors');
468 } elseif ($nbok > 0) {
474 header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?noreset=1".($param ?
'&'.$param :
''));
483 if ($massaction ==
'letteringauto' && $permissiontoadd) {
485 $nb_lettering = $lettering->bookkeepingLetteringAll($toselect);
486 if ($nb_lettering < 0) {
489 $nb_lettering = max(0, abs($nb_lettering) - 2);
490 } elseif ($nb_lettering == 0) {
492 setEventMessages($langs->trans(
'AccountancyNoLetteringModified'), array(),
'mesgs');
494 if ($nb_lettering == 1) {
495 setEventMessages($langs->trans(
'AccountancyOneLetteringModifiedSuccessfully'), array(),
'mesgs');
496 } elseif ($nb_lettering > 1) {
497 setEventMessages($langs->trans(
'AccountancyLetteringModifiedSuccessfully', $nb_lettering), array(),
'mesgs');
501 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
504 } elseif ($massaction ==
'letteringmanual' && $permissiontoadd) {
506 $result = $lettering->updateLettering($toselect);
510 setEventMessages($langs->trans(
'AccountancyOneLetteringModifiedSuccessfully'), array(),
'mesgs');
511 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
514 } elseif ($action ==
'unletteringauto' && $confirm ==
"yes" && $permissiontoadd) {
516 $nb_lettering = $lettering->bookkeepingLetteringAll($toselect,
true);
517 if ($nb_lettering < 0) {
520 $nb_lettering = max(0, abs($nb_lettering) - 2);
521 } elseif ($nb_lettering == 0) {
523 setEventMessages($langs->trans(
'AccountancyNoUnletteringModified'), array(),
'mesgs');
525 if ($nb_lettering == 1) {
526 setEventMessages($langs->trans(
'AccountancyOneUnletteringModifiedSuccessfully'), array(),
'mesgs');
527 } elseif ($nb_lettering > 1) {
528 setEventMessages($langs->trans(
'AccountancyUnletteringModifiedSuccessfully', $nb_lettering), array(),
'mesgs');
532 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
535 } elseif ($action ==
'unletteringmanual' && $confirm ==
"yes" && $permissiontoadd) {
537 $nb_lettering = $lettering->deleteLettering($toselect);
541 setEventMessages($langs->trans(
'AccountancyOneUnletteringModifiedSuccessfully'), array(),
'mesgs');
542 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
557$form =
new Form($db);
559$title_page = $langs->trans(
"Operations").
' - '.$langs->trans(
"VueByAccountAccounting").
' (';
561 $title_page .= $langs->trans(
"BookkeepingSubAccount");
563 $title_page .= $langs->trans(
"Bookkeeping");
566$help_url =
'EN:Module_Double_Entry_Accounting|FR:Module_Comptabilité_en_Partie_Double';
567llxHeader(
'', $title_page, $help_url,
'', 0, 0,
'',
'',
'',
'mod-accountancy accountancy-consultation page-'.(($type ==
'sub') ?
'sub' :
'').
'ledger');
570$nbtotalofrecords =
'';
573 if ($type ==
'sub') {
574 $nbtotalofrecords =
$object->fetchAllByAccount($sortorder, $sortfield, 0, 0, $filter,
'AND', 1, 1);
576 $nbtotalofrecords =
$object->fetchAllByAccount($sortorder, $sortfield, 0, 0, $filter,
'AND', 0, 1);
579 if ($nbtotalofrecords < 0) {
586 if ($type ==
'sub') {
587 $result =
$object->fetchAllByAccount($sortorder, $sortfield, $limit, $offset, $filter,
'AND', 1);
589 $result =
$object->fetchAllByAccount($sortorder, $sortfield, $limit, $offset, $filter,
'AND', 0);
597$arrayofselected = is_array($toselect) ? $toselect : array();
647$arrayofmassactions = array();
648if (
getDolGlobalInt(
'ACCOUNTING_ENABLE_LETTERING') && $user->hasRight(
'accounting',
'mouvements',
'creer')) {
649 $arrayofmassactions[
'letteringauto'] =
img_picto(
'',
'check',
'class="pictofixedwidth"') . $langs->trans(
'LetteringAuto');
650 $arrayofmassactions[
'preunletteringauto'] =
img_picto(
'',
'uncheck',
'class="pictofixedwidth"') . $langs->trans(
'UnletteringAuto');
651 $arrayofmassactions[
'letteringmanual'] =
img_picto(
'',
'check',
'class="pictofixedwidth"') . $langs->trans(
'LetteringManual');
652 $arrayofmassactions[
'preunletteringmanual'] =
img_picto(
'',
'uncheck',
'class="pictofixedwidth"') . $langs->trans(
'UnletteringManual');
654if ($user->hasRight(
'accounting',
'mouvements',
'supprimer')) {
655 $arrayofmassactions[
'predeletebookkeepingwriting'] =
img_picto(
'',
'delete',
'class="pictofixedwidth"').$langs->trans(
"Delete");
657if (
GETPOSTINT(
'nomassaction') || in_array($massaction, array(
'preunletteringauto',
'preunletteringmanual',
'predeletebookkeepingwriting'))) {
658 $arrayofmassactions = array();
660$massactionbutton = $form->selectMassAction($massaction, $arrayofmassactions);
662print
'<form method="POST" id="searchFormList" action="'.$_SERVER[
"PHP_SELF"].
'">';
663print
'<input type="hidden" name="token" value="'.newToken().
'">';
664print
'<input type="hidden" name="action" value="list">';
665if ($optioncss !=
'') {
666 print
'<input type="hidden" name="optioncss" value="'.$optioncss.
'">';
668print
'<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
669print
'<input type="hidden" name="type" value="'.$type.
'">';
670print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
671print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
672print
'<input type="hidden" name="contextpage" value="'.$contextpage.
'">';
674$parameters = array(
'param' => $param);
675$reshook = $hookmanager->executeHooks(
'addMoreActionsButtonsList', $parameters, $object, $action);
680$newcardbutton = empty($hookmanager->resPrint) ?
'' : $hookmanager->resPrint;
682if (empty($reshook)) {
683 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'ViewFlatList'),
'',
'fa fa-list paddingleft imgforviewmode', DOL_URL_ROOT.
'/accountancy/bookkeeping/list.php?'.$param);
684 if ($type ==
'sub') {
685 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'GroupByAccountAccounting'),
'',
'fa fa-stream paddingleft imgforviewmode', DOL_URL_ROOT .
'/accountancy/bookkeeping/listbyaccount.php?' . $url_param,
'', 1, array(
'morecss' =>
'marginleftonly'));
686 $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'));
688 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'GroupByAccountAccounting'),
'',
'fa fa-stream paddingleft imgforviewmode', DOL_URL_ROOT .
'/accountancy/bookkeeping/listbyaccount.php?' . $url_param,
'', 1, array(
'morecss' =>
'marginleftonly btnTitleSelected'));
689 $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'));
692 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'NewAccountingMvt'),
'',
'fa fa-plus-circle paddingleft', DOL_URL_ROOT.
'/accountancy/bookkeeping/card.php?action=create');
695if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
696 $param .=
'&contextpage='.urlencode($contextpage);
698if ($limit > 0 && $limit != $conf->liste_limit) {
699 $param .=
'&limit='.((int) $limit);
702print_barre_liste($title_page, $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $result, $nbtotalofrecords,
'title_accountancy', 0, $newcardbutton,
'', $limit, 0, 0, 1);
704if ($massaction ==
'preunletteringauto') {
705 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassUnletteringAuto"), $langs->trans(
"ConfirmMassUnletteringQuestion", count($toselect)),
"unletteringauto",
null,
'', 0, 200, 500, 1);
706} elseif ($massaction ==
'preunletteringmanual') {
707 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassUnletteringManual"), $langs->trans(
"ConfirmMassUnletteringQuestion", count($toselect)),
"unletteringmanual",
null,
'', 0, 200, 500, 1);
708} elseif ($massaction ==
'predeletebookkeepingwriting') {
709 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassDeleteBookkeepingWriting"), $langs->trans(
"ConfirmMassDeleteBookkeepingWritingQuestion", count($toselect)),
"deletebookkeepingwriting",
null,
'', 0, 200, 500, 1);
722include DOL_DOCUMENT_ROOT.
'/core/tpl/massactions_pre.tpl.php';
724$varpage = empty($contextpage) ? $_SERVER[
"PHP_SELF"] : $contextpage;
725$selectedfields = $form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage,
getDolGlobalString(
'MAIN_CHECKBOX_LEFT_COLUMN'));
726if ($massactionbutton && $contextpage !=
'poslist') {
727 $selectedfields .= $form->showCheckAddButtons(
'checkforselect', 1);
731if (preg_match(
'/^asc/i', $sortorder)) {
739 print
info_admin($langs->trans(
"WarningRecordWithoutSubledgerAreExcluded"));
745$moreforfilter .=
'<div class="divsearchfield">';
746$moreforfilter .= $langs->trans(
'AccountAccounting').
': ';
747$moreforfilter .=
'<div class="nowrap inline-block">';
749 $moreforfilter .= $formaccounting->select_auxaccount($search_accountancy_code_start,
'search_accountancy_code_start', $langs->trans(
'From'),
'maxwidth200');
751 $moreforfilter .= $formaccounting->select_account($search_accountancy_code_start,
'search_accountancy_code_start', $langs->trans(
'From'), array(), 1, 1,
'maxwidth200');
753$moreforfilter .=
' ';
755 $moreforfilter .= $formaccounting->select_auxaccount($search_accountancy_code_end,
'search_accountancy_code_end', $langs->trans(
'to'),
'maxwidth200');
757 $moreforfilter .= $formaccounting->select_account($search_accountancy_code_end,
'search_accountancy_code_end', $langs->trans(
'to'), array(), 1, 1,
'maxwidth200');
759$stringforfirstkey = $langs->trans(
"KeyboardShortcut");
760if ($conf->browser->name ==
'chrome') {
761 $stringforfirstkey .=
' ALT +';
762} elseif ($conf->browser->name ==
'firefox') {
763 $stringforfirstkey .=
' ALT + SHIFT +';
765 $stringforfirstkey .=
' CTL +';
767$moreforfilter .=
' <a id="previous_account" accesskey="p" title="' . $stringforfirstkey .
' p" class="classfortooltip" href="#"><i class="fa fa-chevron-left"></i></a>';
768$moreforfilter .=
' <a id="next_account" accesskey="n" title="' . $stringforfirstkey .
' n" class="classfortooltip" href="#"><i class="fa fa-chevron-right"></i></a>';
769$moreforfilter .= <<<SCRIPT
770<script
type=
"text/javascript">
771 jQuery(document).ready(
function() {
772 var searchFormList = $(
'#searchFormList');
773 var searchAccountancyCodeStart = $(
'#search_accountancy_code_start');
774 var searchAccountancyCodeEnd = $(
'#search_accountancy_code_end');
775 jQuery(
'#previous_account').on(
'click',
function() {
776 var previousOption = searchAccountancyCodeStart.find(
'option:selected').prev(
'option');
777 if (previousOption.length == 1) searchAccountancyCodeStart.val(previousOption.attr(
'value'));
778 searchAccountancyCodeEnd.val(searchAccountancyCodeStart.val());
779 searchFormList.submit();
781 jQuery(
'#next_account').on(
'click',
function() {
782 var nextOption = searchAccountancyCodeStart.find(
'option:selected').next(
'option');
783 if (nextOption.length == 1) searchAccountancyCodeStart.val(nextOption.attr(
'value'));
784 searchAccountancyCodeEnd.val(searchAccountancyCodeStart.val());
785 searchFormList.submit();
787 jQuery(
'input[name="search_mvt_num"]').on(
"keypress",
function(event) {
793$moreforfilter .=
'</div>';
794$moreforfilter .=
'</div>';
796$moreforfilter .=
'<div class="divsearchfield">';
797$moreforfilter .= $langs->trans(
'AccountingCategory').
': ';
798$moreforfilter .=
'<div class="nowrap inline-block">';
799$moreforfilter .= $formaccounting->select_accounting_category($search_account_category,
'search_account_category', 1, 0, 0, 0);
800$moreforfilter .=
'</div>';
801$moreforfilter .=
'</div>';
803$parameters = array();
804$reshook = $hookmanager->executeHooks(
'printFieldPreListTitle', $parameters, $object, $action);
805if (empty($reshook)) {
806 $moreforfilter .= $hookmanager->resPrint;
808 $moreforfilter = $hookmanager->resPrint;
811print
'<div class="liste_titre liste_titre_bydiv centpercent">';
815print
'<div class="div-table-responsive">';
816print
'<table class="tagtable liste centpercent">';
819print
'<tr class="liste_titre_filter">';
822 print
'<td class="liste_titre center">';
823 $searchpicto = $form->showFilterButtons(
'left');
828if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
829 print
'<td class="liste_titre"><input type="text" name="search_mvt_num" class="width50" value="'.dol_escape_htmltag($search_mvt_num).
'"></td>';
832if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
833 print
'<td class="liste_titre center">';
834 print $formaccounting->multi_select_journal($search_ledger_code,
'search_ledger_code', 0, 1, 1, 1,
'maxwidth75');
838if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
839 print
'<td class="liste_titre center">';
840 print
'<div class="nowrapfordate">';
841 print $form->selectDate($search_date_start,
'search_date_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
843 print
'<div class="nowrapfordate">';
844 print $form->selectDate($search_date_end,
'search_date_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
849if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
850 print
'<td class="liste_titre"><input type="text" size="7" class="flat" name="search_doc_ref" value="'.dol_escape_htmltag($search_doc_ref).
'"/></td>';
853if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
854 print
'<td class="liste_titre"><input type="text" size="7" class="flat" name="search_label_operation" value="'.dol_escape_htmltag($search_label_operation).
'"/></td>';
857if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
858 print
'<td class="liste_titre center">';
859 print
'<input type="text" size="3" class="flat" name="search_lettering_code" value="'.$search_lettering_code.
'"/>';
860 print
'<br><span class="nowrap"><input type="checkbox" name="search_not_reconciled" value="notreconciled"'.($search_not_reconciled ==
'notreconciled' ?
' checked' :
'').
'>'.$langs->trans(
"NotReconciled").
'</span>';
864if (!empty($arrayfields[
't.debit'][
'checked'])) {
865 print
'<td class="liste_titre right"><input type="text" class="flat" name="search_debit" size="4" value="'.dol_escape_htmltag($search_debit).
'"></td>';
868if (!empty($arrayfields[
't.credit'][
'checked'])) {
869 print
'<td class="liste_titre right"><input type="text" class="flat" name="search_credit" size="4" value="'.dol_escape_htmltag($search_credit).
'"></td>';
872if (!empty($arrayfields[
't.balance'][
'checked'])) {
876if (!empty($arrayfields[
't.date_export'][
'checked'])) {
877 print
'<td class="liste_titre center">';
878 print
'<div class="nowrapfordate">';
879 print $form->selectDate($search_date_export_start,
'search_date_export_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
881 print
'<div class="nowrapfordate">';
882 print $form->selectDate($search_date_export_end,
'search_date_export_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
887if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
888 print
'<td class="liste_titre center">';
889 print
'<div class="nowrapfordate">';
890 print $form->selectDate($search_date_validation_start,
'search_date_validation_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
892 print
'<div class="nowrapfordate">';
893 print $form->selectDate($search_date_validation_end,
'search_date_validation_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
897if (!empty($arrayfields[
't.import_key'][
'checked'])) {
898 print
'<td class="liste_titre center">';
899 print
'<input class="flat searchstring maxwidth50" type="text" name="search_import_key" value="'.dol_escape_htmltag($search_import_key).
'">';
904$parameters = array(
'arrayfields' => $arrayfields);
905$reshook = $hookmanager->executeHooks(
'printFieldListOption', $parameters);
906print $hookmanager->resPrint;
910 print
'<td class="liste_titre center">';
911 $searchpicto = $form->showFilterButtons();
917print
'<tr class="liste_titre">';
919 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch ');
921if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
922 print_liste_field_titre($arrayfields[
't.piece_num'][
'label'], $_SERVER[
'PHP_SELF'],
"t.piece_num",
"", $param,
'', $sortfield, $sortorder,
'tdoverflowmax80imp ');
924if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
925 print_liste_field_titre($arrayfields[
't.code_journal'][
'label'], $_SERVER[
'PHP_SELF'],
"t.code_journal",
"", $param,
'', $sortfield, $sortorder,
'center ');
927if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
928 print_liste_field_titre($arrayfields[
't.doc_date'][
'label'], $_SERVER[
'PHP_SELF'],
"t.doc_date",
"", $param,
'', $sortfield, $sortorder,
'center ');
930if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
931 print_liste_field_titre($arrayfields[
't.doc_ref'][
'label'], $_SERVER[
'PHP_SELF'],
"t.doc_ref",
"", $param,
"", $sortfield, $sortorder);
933if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
934 print_liste_field_titre($arrayfields[
't.label_operation'][
'label'], $_SERVER[
'PHP_SELF'],
"t.label_operation",
"", $param,
"", $sortfield, $sortorder);
936if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
937 print_liste_field_titre($arrayfields[
't.lettering_code'][
'label'], $_SERVER[
'PHP_SELF'],
"t.lettering_code",
"", $param,
'', $sortfield, $sortorder,
'center ');
939if (!empty($arrayfields[
't.debit'][
'checked'])) {
940 print_liste_field_titre($arrayfields[
't.debit'][
'label'], $_SERVER[
'PHP_SELF'],
"t.debit",
"", $param,
'', $sortfield, $sortorder,
'right ');
942if (!empty($arrayfields[
't.credit'][
'checked'])) {
943 print_liste_field_titre($arrayfields[
't.credit'][
'label'], $_SERVER[
'PHP_SELF'],
"t.credit",
"", $param,
'', $sortfield, $sortorder,
'right ');
945if (!empty($arrayfields[
't.balance'][
'checked'])) {
946 print_liste_field_titre($arrayfields[
't.balance'][
'label'],
"",
"",
"", $param,
'', $sortfield, $sortorder,
'right ');
948if (!empty($arrayfields[
't.date_export'][
'checked'])) {
949 print_liste_field_titre($arrayfields[
't.date_export'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_export",
"", $param,
'', $sortfield, $sortorder,
'center ');
951if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
952 print_liste_field_titre($arrayfields[
't.date_validated'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_validated",
"", $param,
'', $sortfield, $sortorder,
'center ');
954if (!empty($arrayfields[
't.import_key'][
'checked'])) {
955 print_liste_field_titre($arrayfields[
't.import_key'][
'label'], $_SERVER[
"PHP_SELF"],
"t.import_key",
"", $param,
'', $sortfield, $sortorder,
'center ');
958$parameters = array(
'arrayfields' => $arrayfields,
'param' => $param,
'sortfield' => $sortfield,
'sortorder' => $sortorder);
959$reshook = $hookmanager->executeHooks(
'printFieldListTitle', $parameters);
960print $hookmanager->resPrint;
962 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch ');
966$displayed_account_number =
null;
972$totalarray = array();
973$totalarray[
'nbfield'] = 0;
974$sous_total_debit = 0;
975$sous_total_credit = 0;
976$totalarray[
'val'] = array();
977$totalarray[
'val'][
'totaldebit'] = 0;
978$totalarray[
'val'][
'totalcredit'] = 0;
979$totalarray[
'val'][
'totalbalance']=0;
983if (!empty($arrayfields[
't.piece_num'][
'checked'])) { $colspan++; }
984if (!empty($arrayfields[
't.code_journal'][
'checked'])) { $colspan++; }
985if (!empty($arrayfields[
't.doc_date'][
'checked'])) { $colspan++; }
986if (!empty($arrayfields[
't.doc_ref'][
'checked'])) { $colspan++; }
987if (!empty($arrayfields[
't.label_operation'][
'checked'])) { $colspan++; }
988if (!empty($arrayfields[
't.date_export'][
'checked'])) { $colspanend++; }
989if (!empty($arrayfields[
't.date_validated'][
'checked'])) { $colspanend++; }
990if (!empty($arrayfields[
't.lettering_code'][
'checked'])) { $colspanend++; }
996while ($i < min($num, $limit)) {
999 if ($type ==
'sub') {
1011 if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
1014 if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
1017 if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1020 if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
1023 if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1026 if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1030 if (!empty($arrayfields[
't.balance'][
'checked'])) {
1033 if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1036 if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1039 if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1042 if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1051 if ($accountg != $displayed_account_number || !isset($displayed_account_number)) {
1053 if (isset($displayed_account_number)) {
1054 print
'<tr class="liste_total">';
1055 if ($type ==
'sub') {
1056 print
'<td class="right" colspan="' . $colspan .
'">' . $langs->trans(
"TotalForAccount") .
' ' .
length_accounta($displayed_account_number) .
':</td>';
1058 print
'<td class="right" colspan="' . $colspan .
'">' . $langs->trans(
"TotalForAccount") .
' ' .
length_accountg($displayed_account_number) .
':</td>';
1060 print
'<td class="nowrap right">'.price(
price2num($sous_total_debit,
'MT')).
'</td>';
1061 print
'<td class="nowrap right">'.price(
price2num($sous_total_credit,
'MT')).
'</td>';
1062 if ($colspanend > 0) {
1063 print
'<td colspan="'.$colspanend.
'"></td>';
1067 $balance = $sous_total_debit - $sous_total_credit;
1068 print
'<tr class="liste_total">';
1069 print
'<td class="right" colspan="'.$colspan.
'">'.$langs->trans(
"Balance").
':</td>';
1071 print
'<td class="nowraponall right">';
1072 print
price(
price2num($sous_total_debit - $sous_total_credit,
'MT'));
1077 print
'<td class="nowraponall right">';
1078 print
price(
price2num($sous_total_credit - $sous_total_debit,
'MT'));
1081 if ($colspanend > 0) {
1082 print
'<td colspan="'.$colspanend.
'"></td>';
1088 print
'<tr class="trforbreak">';
1089 print
'<td colspan="'.($totalarray[
'nbfield'] ? $totalarray[
'nbfield'] : count($arrayfields) + 1).
'" class="tdforbreak">';
1090 if ($type ==
'sub') {
1091 if ($line->subledger_account !=
"" && $line->subledger_account !=
'-1') {
1092 print empty($line->subledger_label) ?
'<span class="error">'.$langs->trans(
"Unknown").
'</span>' : $line->subledger_label;
1097 print
'<span class="error">' . $langs->trans(
"Unknown");
1098 if ($line->subledger_label) {
1099 print
' (' . $line->subledger_label .
')';
1100 $htmltext =
'EmptyStringForSubledgerAccountButSubledgerLabelDefined';
1102 $htmltext =
'EmptyStringForSubledgerAccountAndSubledgerLabel';
1104 print $form->textwithpicto(
'', $htmltext);
1108 if ($line->numero_compte !=
"" && $line->numero_compte !=
'-1') {
1111 print
'<span class="error">' . $langs->trans(
"Unknown") .
'</span>';
1117 $displayed_account_number = $accountg;
1119 $sous_total_debit = 0;
1120 $sous_total_credit = 0;
1123 print
'<tr class="oddeven">';
1126 print
'<td class="nowraponall center">';
1127 if (($massactionbutton || $massaction) && $contextpage !=
'poslist') {
1129 if (in_array($line->id, $arrayofselected)) {
1132 print
'<input id="cb' . $line->id .
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="' . $line->id .
'"' . ($selected ?
' checked="checked"' :
'') .
' />';
1136 $totalarray[
'nbfield']++;
1140 if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
1143 $object->piece_num = $line->piece_num;
1144 print
$object->getNomUrl(1,
'', 0,
'', 1);
1147 $totalarray[
'nbfield']++;
1152 if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
1154 $result = $accountingjournal->fetch(0, $line->code_journal);
1155 $journaltoshow = (($result > 0) ? $accountingjournal->getNomUrl(0, 0, 0,
'', 0) : $line->code_journal);
1156 print
'<td class="center tdoverflowmax80">'.$journaltoshow.
'</td>';
1158 $totalarray[
'nbfield']++;
1163 if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1164 print
'<td class="center">'.dol_print_date($line->doc_date,
'day').
'</td>';
1166 $totalarray[
'nbfield']++;
1172 if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
1173 if ($line->doc_type ==
'customer_invoice') {
1174 $langs->loadLangs(array(
'bills'));
1176 require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
1177 $objectstatic =
new Facture($db);
1178 $objectstatic->fetch($line->fk_doc);
1183 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.$objectstatic->id;
1184 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir);
1185 } elseif ($line->doc_type ==
'supplier_invoice') {
1186 $langs->loadLangs(array(
'bills'));
1188 require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.facture.class.php';
1190 $objectstatic->fetch($line->fk_doc);
1192 $modulepart =
'invoice_supplier';
1194 $filedir = $conf->fournisseur->facture->dir_output.
'/'.
get_exdir($line->fk_doc, 2, 0, 0, $objectstatic, $modulepart).dol_sanitizeFileName($line->doc_ref);
1195 $subdir =
get_exdir($objectstatic->id, 2, 0, 0, $objectstatic, $modulepart).dol_sanitizeFileName($line->doc_ref);
1196 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $subdir, $filedir);
1197 } elseif ($line->doc_type ==
'expense_report') {
1198 $langs->loadLangs(array(
'trips'));
1200 require_once DOL_DOCUMENT_ROOT.
'/expensereport/class/expensereport.class.php';
1202 $objectstatic->fetch($line->fk_doc);
1207 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.$objectstatic->id;
1208 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir);
1209 } elseif ($line->doc_type ==
'bank') {
1210 require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
1212 $objectstatic->fetch($line->fk_doc);
1217 print
'<td class="tdoverflowmax250">';
1220 if ($line->doc_type ==
'customer_invoice' || $line->doc_type ==
'supplier_invoice' || $line->doc_type ==
'expense_report') {
1221 print $objectstatic->getNomUrl(1,
'', 0, 0,
'', 0, -1, 1);
1222 print $documentlink;
1223 } elseif ($line->doc_type ==
'bank') {
1224 print $objectstatic->getNomUrl(1);
1225 $bank_ref = strstr($line->doc_ref,
'-');
1226 print
' <span class="classfortooltip" title="'.dol_escape_htmltag($line->doc_ref).
'">'.
dol_escape_htmltag($bank_ref).
'</span>';
1228 print $line->doc_ref;
1233 $totalarray[
'nbfield']++;
1238 if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1240 $doc_ref = preg_replace(
'/\(.*\)/',
'', $line->doc_ref);
1242 print
'<td class="small tdoverflowmax350 classfortooltip" title="'.dol_escape_htmltag($line->label_operation).
'">'.
dol_escape_htmltag($line->label_operation).
'</td>';
1244 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>';
1247 $totalarray[
'nbfield']++;
1252 if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1253 print
'<td class="center">'.dol_escape_htmltag($line->lettering_code).
'</td>';
1255 $totalarray[
'nbfield']++;
1260 if (!empty($arrayfields[
't.debit'][
'checked'])) {
1261 print
'<td class="right nowraponall amount">'.($line->debit != 0 ?
price($line->debit) :
'').
'</td>';
1263 $totalarray[
'nbfield']++;
1266 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'totaldebit';
1268 $totalarray[
'val'][
'totaldebit'] += (float) $line->debit;
1272 if (!empty($arrayfields[
't.credit'][
'checked'])) {
1273 print
'<td class="right nowraponall amount">'.($line->credit != 0 ?
price($line->credit) :
'').
'</td>';
1275 $totalarray[
'nbfield']++;
1278 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'totalcredit';
1280 $totalarray[
'val'][
'totalcredit'] += (float) $line->credit;
1284 if (!empty($arrayfields[
't.balance'][
'checked'])) {
1285 print
'<td class="right nowraponall amount">'.price(
price2num($sous_total_debit + $line->debit - $sous_total_credit - $line->credit,
'MT')).
'</td>';
1287 $totalarray[
'nbfield']++;
1290 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'totalbalance';
1292 $totalarray[
'val'][
'totalbalance'] += $line->debit - $line->credit;
1296 if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1297 print
'<td class="center">'.dol_print_date($line->date_export,
'dayhour').
'</td>';
1299 $totalarray[
'nbfield']++;
1304 if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1305 print
'<td class="center">'.dol_print_date($line->date_validation,
'dayhour').
'</td>';
1307 $totalarray[
'nbfield']++;
1311 if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1312 print
'<td class="tdoverflowmax125" title="'.dol_escape_htmltag($line->import_key).
'">'.
dol_escape_htmltag($line->import_key).
"</td>\n";
1314 $totalarray[
'nbfield']++;
1319 $parameters = array(
'arrayfields' => $arrayfields,
'obj' => $line);
1320 $reshook = $hookmanager->executeHooks(
'printFieldListValue', $parameters);
1321 print $hookmanager->resPrint;
1325 print
'<td class="nowraponall center">';
1326 if (($massactionbutton || $massaction) && $contextpage !=
'poslist') {
1328 if (in_array($line->id, $arrayofselected)) {
1331 print
'<input id="cb' . $line->id .
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="' . $line->id .
'"' . ($selected ?
' checked="checked"' :
'') .
' />';
1335 $totalarray[
'nbfield']++;
1340 $sous_total_debit += $line->debit;
1341 $sous_total_credit += $line->credit;
1348if ($num > 0 && $colspan > 0) {
1349 print
'<tr class="liste_total">';
1350 print
'<td class="right" colspan="'.$colspan.
'">'.$langs->trans(
"TotalForAccount").
' '.$accountg.
':</td>';
1351 print
'<td class="nowrap right">'.price(
price2num($sous_total_debit,
'MT')).
'</td>';
1352 print
'<td class="nowrap right">'.price(
price2num($sous_total_credit,
'MT')).
'</td>';
1353 if ($colspanend > 0) {
1354 print
'<td colspan="'.$colspanend.
'"></td>';
1358 $balance = $sous_total_debit - $sous_total_credit;
1359 print
'<tr class="liste_total">';
1360 print
'<td class="right" colspan="'.$colspan.
'">'.$langs->trans(
"Balance").
':</td>';
1362 print
'<td class="nowraponall right">';
1363 print
price(
price2num($sous_total_debit - $sous_total_credit,
'MT'));
1368 print
'<td class="nowraponall right">';
1369 print
price(
price2num($sous_total_credit - $sous_total_debit,
'MT'));
1372 if ($colspanend > 0) {
1373 print
'<td colspan="'.$colspanend.
'"></td>';
1380if (!empty($totalarray[
'val'][
'totaldebit'])) {
1381 $totalarray[
'val'][
'totaldebit'] = (float)
price2num($totalarray[
'val'][
'totaldebit'],
'MT');
1383if (!empty($totalarray[
'val'][
'totalcredit'])) {
1384 $totalarray[
'val'][
'totalcredit'] = (float)
price2num($totalarray[
'val'][
'totalcredit'],
'MT');
1386if (!empty($totalarray[
'val'][
'totalbalance'])) {
1387 $totalarray[
'val'][
'totalbalance'] = (float)
price2num($totalarray[
'val'][
'totaldebit'] - $totalarray[
'val'][
'totalcredit'],
'MT');
1391include DOL_DOCUMENT_ROOT.
'/core/tpl/list_print_total.tpl.php';
1396 foreach ($arrayfields as $key => $val) {
1397 if (!empty($val[
'checked'])) {
1401 print
'<tr><td colspan="'.$colspan.
'"><span class="opacitymedium">'.$langs->trans(
"NoRecordFound").
'</span></td></tr>';
1404$parameters = array(
'arrayfields' => $arrayfields);
1405$reshook = $hookmanager->executeHooks(
'printFieldListFooter', $parameters, $object, $action);
1406print $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()
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...
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.
print_barre_liste($title, $page, $file, $options='', $sortfield='', $sortorder='', $morehtmlcenter='', $num=-1, $totalnboflines='', $picto='generic', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limit=-1, $hideselectlimit=0, $hidenavigation=0, $pagenavastextinput=0, $morehtmlrightbeforearrow='')
Print a title with navigation controls for pagination.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0)
Set event messages in dol_events session object.
dol_sanitizeFileName($str, $newstr='_', $unaccent=1)
Clean a string to use it as a file name.
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
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.