29require
'../../main.inc.php';
31require_once DOL_DOCUMENT_ROOT.
'/core/lib/accounting.lib.php';
32require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/lettering.class.php';
33require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/bookkeeping.class.php';
34require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountingjournal.class.php';
35require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formaccounting.class.php';
36require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formfile.class.php';
37require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formother.class.php';
38require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
41$langs->loadLangs(array(
"accountancy",
"compta"));
43$action =
GETPOST(
'action',
'aZ09');
44$socid =
GETPOST(
'socid',
'int');
45$massaction =
GETPOST(
'massaction',
'alpha');
46$confirm =
GETPOST(
'confirm',
'alpha');
47$toselect =
GETPOST(
'toselect',
'array');
48$type =
GETPOST(
'type',
'alpha');
50 $context_default =
'bookkeepingbysubaccountlist';
52 $context_default =
'bookkeepingbyaccountlist';
54$contextpage =
GETPOST(
'contextpage',
'aZ') ?
GETPOST(
'contextpage',
'aZ') : $context_default;
55$search_date_startyear =
GETPOST(
'search_date_startyear',
'int');
56$search_date_startmonth =
GETPOST(
'search_date_startmonth',
'int');
57$search_date_startday =
GETPOST(
'search_date_startday',
'int');
58$search_date_endyear =
GETPOST(
'search_date_endyear',
'int');
59$search_date_endmonth =
GETPOST(
'search_date_endmonth',
'int');
60$search_date_endday =
GETPOST(
'search_date_endday',
'int');
61$search_date_start =
dol_mktime(0, 0, 0, $search_date_startmonth, $search_date_startday, $search_date_startyear);
62$search_date_end =
dol_mktime(23, 59, 59, $search_date_endmonth, $search_date_endday, $search_date_endyear);
64$search_date_export_startyear =
GETPOST(
'search_date_export_startyear',
'int');
65$search_date_export_startmonth =
GETPOST(
'search_date_export_startmonth',
'int');
66$search_date_export_startday =
GETPOST(
'search_date_export_startday',
'int');
67$search_date_export_endyear =
GETPOST(
'search_date_export_endyear',
'int');
68$search_date_export_endmonth =
GETPOST(
'search_date_export_endmonth',
'int');
69$search_date_export_endday =
GETPOST(
'search_date_export_endday',
'int');
70$search_date_export_start =
dol_mktime(0, 0, 0, $search_date_export_startmonth, $search_date_export_startday, $search_date_export_startyear);
71$search_date_export_end =
dol_mktime(23, 59, 59, $search_date_export_endmonth, $search_date_export_endday, $search_date_export_endyear);
72$search_date_validation_startyear =
GETPOST(
'search_date_validation_startyear',
'int');
73$search_date_validation_startmonth =
GETPOST(
'search_date_validation_startmonth',
'int');
74$search_date_validation_startday =
GETPOST(
'search_date_validation_startday',
'int');
75$search_date_validation_endyear =
GETPOST(
'search_date_validation_endyear',
'int');
76$search_date_validation_endmonth =
GETPOST(
'search_date_validation_endmonth',
'int');
77$search_date_validation_endday =
GETPOST(
'search_date_validation_endday',
'int');
78$search_date_validation_start =
dol_mktime(0, 0, 0, $search_date_validation_startmonth, $search_date_validation_startday, $search_date_validation_startyear);
79$search_date_validation_end =
dol_mktime(23, 59, 59, $search_date_validation_endmonth, $search_date_validation_endday, $search_date_validation_endyear);
80$search_import_key =
GETPOST(
"search_import_key",
'alpha');
82$search_account_category =
GETPOST(
'search_account_category',
'int');
84$search_accountancy_code_start =
GETPOST(
'search_accountancy_code_start',
'alpha');
85if ($search_accountancy_code_start == - 1) {
86 $search_accountancy_code_start =
'';
88$search_accountancy_code_end =
GETPOST(
'search_accountancy_code_end',
'alpha');
89if ($search_accountancy_code_end == - 1) {
90 $search_accountancy_code_end =
'';
92$search_doc_ref =
GETPOST(
'search_doc_ref',
'alpha');
93$search_label_operation =
GETPOST(
'search_label_operation',
'alpha');
94$search_mvt_num =
GETPOST(
'search_mvt_num',
'int');
95$search_direction =
GETPOST(
'search_direction',
'alpha');
96$search_ledger_code =
GETPOST(
'search_ledger_code',
'array');
97$search_debit =
GETPOST(
'search_debit',
'alpha');
98$search_credit =
GETPOST(
'search_credit',
'alpha');
99$search_lettering_code =
GETPOST(
'search_lettering_code',
'alpha');
100$search_not_reconciled =
GETPOST(
'search_not_reconciled',
'alpha');
103 $action =
'delbookkeepingyear';
108$sortfield =
GETPOST(
'sortfield',
'aZ09comma');
109$sortorder =
GETPOST(
'sortorder',
'aZ09comma');
110$optioncss =
GETPOST(
'optioncss',
'alpha');
111$page = GETPOSTISSET(
'pageplusone') ? (
GETPOST(
'pageplusone') - 1) :
GETPOST(
"page",
'int');
112if (empty($page) || $page < 0) {
115$offset = $limit * $page;
116$pageprev = $page - 1;
117$pagenext = $page + 1;
118if ($sortorder ==
"") {
121if ($sortfield ==
"") {
122 $sortfield =
"t.doc_date,t.rowid";
128$hookmanager->initHooks(array($context_default));
131$form =
new Form($db);
133if (empty($search_date_start) && empty($search_date_end) && !GETPOSTISSET(
'search_date_startday') && !GETPOSTISSET(
'search_date_startmonth') && !GETPOSTISSET(
'search_date_starthour')) {
134 $sql =
"SELECT date_start, date_end from ".MAIN_DB_PREFIX.
"accounting_fiscalyear ";
135 $sql .=
" where date_start < '".$db->idate(
dol_now()).
"' and date_end > '".$db->idate(
dol_now()).
"'";
136 $sql .= $db->plimit(1);
137 $res = $db->query($sql);
139 if ($res->num_rows > 0) {
140 $fiscalYear = $db->fetch_object($res);
141 $search_date_start = strtotime($fiscalYear->date_start);
142 $search_date_end = strtotime($fiscalYear->date_end);
149 $year_end = $year_start + 1;
150 $month_end = $month_start - 1;
151 if ($month_end < 1) {
155 $search_date_start =
dol_mktime(0, 0, 0, $month_start, 1, $year_start);
162 't.piece_num'=>array(
'label'=>$langs->trans(
"TransactionNumShort"),
'checked'=>1),
163 't.code_journal'=>array(
'label'=>$langs->trans(
"Codejournal"),
'checked'=>1),
164 't.doc_date'=>array(
'label'=>$langs->trans(
"Docdate"),
'checked'=>1),
165 't.doc_ref'=>array(
'label'=>$langs->trans(
"Piece"),
'checked'=>1),
166 't.label_operation'=>array(
'label'=>$langs->trans(
"Label"),
'checked'=>1),
167 't.lettering_code'=>array(
'label'=>$langs->trans(
"Lettering"),
'checked'=>1),
168 't.debit'=>array(
'label'=>$langs->trans(
"AccountingDebit"),
'checked'=>1),
169 't.credit'=>array(
'label'=>$langs->trans(
"AccountingCredit"),
'checked'=>1),
170 't.balance'=>array(
'label'=>$langs->trans(
"Balance"),
'checked'=>1),
171 't.date_export'=>array(
'label'=>$langs->trans(
"DateExport"),
'checked'=>-1),
172 't.date_validated'=>array(
'label'=>$langs->trans(
"DateValidation"),
'checked'=>-1,
'enabled'=>!
getDolGlobalString(
"ACCOUNTANCY_DISABLE_CLOSURE_LINE_BY_LINE")),
173 't.import_key'=>array(
'label'=>$langs->trans(
"ImportId"),
'checked'=>-1,
'position'=>1100),
177 unset($arrayfields[
't.lettering_code']);
180if ($search_date_start && empty($search_date_startyear)) {
182 $search_date_startyear = $tmparray[
'year'];
183 $search_date_startmonth = $tmparray[
'mon'];
184 $search_date_startday = $tmparray[
'mday'];
186if ($search_date_end && empty($search_date_endyear)) {
188 $search_date_endyear = $tmparray[
'year'];
189 $search_date_endmonth = $tmparray[
'mon'];
190 $search_date_endday = $tmparray[
'mday'];
193if (!isModEnabled(
'accounting')) {
196if ($user->socid > 0) {
199if (!$user->hasRight(
'accounting',
'mouvements',
'lire')) {
212if (
GETPOST(
'cancel',
'alpha')) {
216if (!
GETPOST(
'confirmmassaction',
'alpha') && $massaction !=
'preunletteringauto' && $massaction !=
'preunletteringmanual' && $massaction !=
'predeletebookkeepingwriting') {
220$parameters = array(
'socid'=>$socid);
221$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
226if (empty($reshook)) {
227 include DOL_DOCUMENT_ROOT.
'/core/actions_changeselectedfields.inc.php';
229 if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
230 $search_doc_date =
'';
231 $search_account_category =
'';
232 $search_accountancy_code_start =
'';
233 $search_accountancy_code_end =
'';
234 $search_label_account =
'';
235 $search_doc_ref =
'';
236 $search_label_operation =
'';
237 $search_mvt_num =
'';
238 $search_direction =
'';
239 $search_ledger_code = array();
240 $search_date_start =
'';
241 $search_date_end =
'';
242 $search_date_startyear =
'';
243 $search_date_startmonth =
'';
244 $search_date_startday =
'';
245 $search_date_endyear =
'';
246 $search_date_endmonth =
'';
247 $search_date_endday =
'';
248 $search_date_export_start =
'';
249 $search_date_export_end =
'';
250 $search_date_export_startyear =
'';
251 $search_date_export_startmonth =
'';
252 $search_date_export_startday =
'';
253 $search_date_export_endyear =
'';
254 $search_date_export_endmonth =
'';
255 $search_date_export_endday =
'';
256 $search_date_validation_start =
'';
257 $search_date_validation_end =
'';
258 $search_date_validation_startyear =
'';
259 $search_date_validation_startmonth =
'';
260 $search_date_validation_startday =
'';
261 $search_date_validation_endyear =
'';
262 $search_date_validation_endmonth =
'';
263 $search_date_validation_endday =
'';
264 $search_lettering_code =
'';
267 $search_not_reconciled =
'';
268 $search_import_key =
'';
275 if (!empty($search_date_start)) {
276 $filter[
't.doc_date>='] = $search_date_start;
277 $param .=
'&search_date_startmonth='.$search_date_startmonth.
'&search_date_startday='.$search_date_startday.
'&search_date_startyear='.$search_date_startyear;
279 if (!empty($search_date_end)) {
280 $filter[
't.doc_date<='] = $search_date_end;
281 $param .=
'&search_date_endmonth='.$search_date_endmonth.
'&search_date_endday='.$search_date_endday.
'&search_date_endyear='.$search_date_endyear;
283 if (!empty($search_doc_date)) {
284 $filter[
't.doc_date'] = $search_doc_date;
285 $param .=
'&doc_datemonth='.GETPOST(
'doc_datemonth',
'int').
'&doc_dateday='.
GETPOST(
'doc_dateday',
'int').
'&doc_dateyear='.
GETPOST(
'doc_dateyear',
'int');
287 if ($search_account_category !=
'-1' && !empty($search_account_category)) {
288 require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountancycategory.class.php';
291 $listofaccountsforgroup = $accountingcategory->getCptsCat(0,
'fk_accounting_category = '.((
int) $search_account_category));
292 $listofaccountsforgroup2 = array();
293 if (is_array($listofaccountsforgroup)) {
294 foreach ($listofaccountsforgroup as $tmpval) {
295 $listofaccountsforgroup2[] =
"'".$db->escape($tmpval[
'account_number']).
"'";
298 $filter[
't.search_accounting_code_in'] = join(
',', $listofaccountsforgroup2);
299 $param .=
'&search_account_category='.urlencode($search_account_category);
301 if (!empty($search_accountancy_code_start)) {
302 if ($type ==
'sub') {
303 $filter[
't.subledger_account>='] = $search_accountancy_code_start;
305 $filter[
't.numero_compte>='] = $search_accountancy_code_start;
307 $param .=
'&search_accountancy_code_start=' . urlencode($search_accountancy_code_start);
309 if (!empty($search_accountancy_code_end)) {
310 if ($type ==
'sub') {
311 $filter[
't.subledger_account<='] = $search_accountancy_code_end;
313 $filter[
't.numero_compte<='] = $search_accountancy_code_end;
315 $param .=
'&search_accountancy_code_end=' . urlencode($search_accountancy_code_end);
317 if (!empty($search_label_account)) {
318 $filter[
't.label_compte'] = $search_label_account;
319 $param .=
'&search_label_compte='.urlencode($search_label_account);
321 if (!empty($search_mvt_num)) {
322 $filter[
't.piece_num'] = $search_mvt_num;
323 $param .=
'&search_mvt_num='.urlencode($search_mvt_num);
325 if (!empty($search_doc_ref)) {
326 $filter[
't.doc_ref'] = $search_doc_ref;
327 $param .=
'&search_doc_ref='.urlencode($search_doc_ref);
329 if (!empty($search_label_operation)) {
330 $filter[
't.label_operation'] = $search_label_operation;
331 $param .=
'&search_label_operation='.urlencode($search_label_operation);
333 if (!empty($search_direction)) {
334 $filter[
't.sens'] = $search_direction;
335 $param .=
'&search_direction='.urlencode($search_direction);
337 if (!empty($search_ledger_code)) {
338 $filter[
't.code_journal'] = $search_ledger_code;
339 foreach ($search_ledger_code as $code) {
340 $param .=
'&search_ledger_code[]='.urlencode($code);
343 if (!empty($search_lettering_code)) {
344 $filter[
't.lettering_code'] = $search_lettering_code;
345 $param .=
'&search_lettering_code='.urlencode($search_lettering_code);
347 if (!empty($search_debit)) {
348 $filter[
't.debit'] = $search_debit;
349 $param .=
'&search_debit='.urlencode($search_debit);
351 if (!empty($search_credit)) {
352 $filter[
't.credit'] = $search_credit;
353 $param .=
'&search_credit='.urlencode($search_credit);
355 if (!empty($search_not_reconciled)) {
356 $filter[
't.reconciled_option'] = $search_not_reconciled;
357 $param .=
'&search_not_reconciled='.urlencode($search_not_reconciled);
359 if (!empty($search_date_export_start)) {
360 $filter[
't.date_export>='] = $search_date_export_start;
361 $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;
363 if (!empty($search_date_export_end)) {
364 $filter[
't.date_export<='] = $search_date_export_end;
365 $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;
367 if (!empty($search_date_validation_start)) {
368 $filter[
't.date_validated>='] = $search_date_validation_start;
369 $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;
371 if (!empty($search_date_validation_end)) {
372 $filter[
't.date_validated<='] = $search_date_validation_end;
373 $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;
375 if (!empty($search_import_key)) {
376 $filter[
't.import_key'] = $search_import_key;
377 $param .=
'&search_import_key='.urlencode($search_import_key);
380 $url_param = substr($param, 1);
382 $param =
'&type='.$type.$param;
413 $objectclass =
'Bookkeeping';
414 $objectlabel =
'Bookkeeping';
415 $permissiontoread = $user->hasRight(
'societe',
'lire');
416 $permissiontodelete = $user->hasRight(
'societe',
'supprimer');
417 $permissiontoadd = $user->hasRight(
'societe',
'creer');
418 $uploaddir = $conf->societe->dir_output;
419 include DOL_DOCUMENT_ROOT.
'/core/actions_massactions.inc.php';
421 if (!$error && $action ==
'deletebookkeepingwriting' && $confirm ==
"yes" && $user->hasRight(
'accounting',
'mouvements',
'supprimer')) {
426 $nb_lettering = $lettering->bookkeepingLetteringAll($toselect,
true);
427 if ($nb_lettering < 0) {
435 foreach ($toselect as $toselectid) {
436 $result = $object->fetch($toselectid);
437 if ($result > 0 && (!isset($object->date_validation) || $object->date_validation ===
'')) {
438 $result = $object->deleteMvtNum($object->piece_num);
446 } elseif ($result < 0) {
450 } elseif (isset($object->date_validation) && $object->date_validation !=
'') {
451 setEventMessages($langs->trans(
"ValidatedRecordWhereFound"),
null,
'errors');
464 } elseif ($nbok > 0) {
470 header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?noreset=1".($param ?
'&'.$param :
''));
478 if (!$error &&
getDolGlobalInt(
'ACCOUNTING_ENABLE_LETTERING') && $user->hasRight(
'accounting',
'mouvements',
'creer')) {
479 if ($massaction ==
'letteringauto') {
481 $nb_lettering = $lettering->bookkeepingLetteringAll($toselect);
482 if ($nb_lettering < 0) {
485 $nb_lettering = max(0, abs($nb_lettering) - 2);
486 } elseif ($nb_lettering == 0) {
488 setEventMessages($langs->trans(
'AccountancyNoLetteringModified'), array(),
'mesgs');
490 if ($nb_lettering == 1) {
491 setEventMessages($langs->trans(
'AccountancyOneLetteringModifiedSuccessfully'), array(),
'mesgs');
492 } elseif ($nb_lettering > 1) {
493 setEventMessages($langs->trans(
'AccountancyLetteringModifiedSuccessfully', $nb_lettering), array(),
'mesgs');
497 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
500 } elseif ($massaction ==
'letteringmanual') {
502 $result = $lettering->updateLettering($toselect);
506 setEventMessages($langs->trans(
'AccountancyOneLetteringModifiedSuccessfully'), array(),
'mesgs');
507 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
510 } elseif ($action ==
'unletteringauto' && $confirm ==
"yes") {
512 $nb_lettering = $lettering->bookkeepingLetteringAll($toselect,
true);
513 if ($nb_lettering < 0) {
516 $nb_lettering = max(0, abs($nb_lettering) - 2);
517 } elseif ($nb_lettering == 0) {
519 setEventMessages($langs->trans(
'AccountancyNoUnletteringModified'), array(),
'mesgs');
521 if ($nb_lettering == 1) {
522 setEventMessages($langs->trans(
'AccountancyOneUnletteringModifiedSuccessfully'), array(),
'mesgs');
523 } elseif ($nb_lettering > 1) {
524 setEventMessages($langs->trans(
'AccountancyUnletteringModifiedSuccessfully', $nb_lettering), array(),
'mesgs');
528 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
531 } elseif ($action ==
'unletteringmanual' && $confirm ==
"yes") {
533 $nb_lettering = $lettering->deleteLettering($toselect);
537 setEventMessages($langs->trans(
'AccountancyOneUnletteringModifiedSuccessfully'), array(),
'mesgs');
538 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
553$form =
new Form($db);
555$title_page = $langs->trans(
"Operations").
' - '.$langs->trans(
"VueByAccountAccounting").
' (';
557 $title_page .= $langs->trans(
"BookkeepingSubAccount");
559 $title_page .= $langs->trans(
"Bookkeeping");
562$help_url =
'EN:Module_Double_Entry_Accounting|FR:Module_Comptabilité_en_Partie_Double';
566$nbtotalofrecords =
'';
569 if ($type ==
'sub') {
570 $nbtotalofrecords = $object->fetchAllByAccount($sortorder, $sortfield, 0, 0, $filter,
'AND', 1, 1);
572 $nbtotalofrecords = $object->fetchAllByAccount($sortorder, $sortfield, 0, 0, $filter,
'AND', 0, 1);
575 if ($nbtotalofrecords < 0) {
582 if ($type ==
'sub') {
583 $result = $object->fetchAllByAccount($sortorder, $sortfield, $limit, $offset, $filter,
'AND', 1);
585 $result = $object->fetchAllByAccount($sortorder, $sortfield, $limit, $offset, $filter,
'AND', 0);
593$arrayofselected = is_array($toselect) ? $toselect : array();
595$num = count($object->lines);
643$arrayofmassactions = array();
644if (
getDolGlobalInt(
'ACCOUNTING_ENABLE_LETTERING') && $user->hasRight(
'accounting',
'mouvements',
'creer')) {
645 $arrayofmassactions[
'letteringauto'] =
img_picto(
'',
'check',
'class="pictofixedwidth"') . $langs->trans(
'LetteringAuto');
646 $arrayofmassactions[
'preunletteringauto'] =
img_picto(
'',
'uncheck',
'class="pictofixedwidth"') . $langs->trans(
'UnletteringAuto');
647 $arrayofmassactions[
'letteringmanual'] =
img_picto(
'',
'check',
'class="pictofixedwidth"') . $langs->trans(
'LetteringManual');
648 $arrayofmassactions[
'preunletteringmanual'] =
img_picto(
'',
'uncheck',
'class="pictofixedwidth"') . $langs->trans(
'UnletteringManual');
650if ($user->hasRight(
'accounting',
'mouvements',
'supprimer')) {
651 $arrayofmassactions[
'predeletebookkeepingwriting'] =
img_picto(
'',
'delete',
'class="pictofixedwidth"').$langs->trans(
"Delete");
653if (
GETPOST(
'nomassaction',
'int') || in_array($massaction, array(
'preunletteringauto',
'preunletteringmanual',
'predeletebookkeepingwriting'))) {
654 $arrayofmassactions = array();
656$massactionbutton = $form->selectMassAction($massaction, $arrayofmassactions);
658print
'<form method="POST" id="searchFormList" action="'.$_SERVER[
"PHP_SELF"].
'">';
659print
'<input type="hidden" name="token" value="'.newToken().
'">';
660print
'<input type="hidden" name="action" value="list">';
661if ($optioncss !=
'') {
662 print
'<input type="hidden" name="optioncss" value="'.$optioncss.
'">';
664print
'<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
665print
'<input type="hidden" name="type" value="'.$type.
'">';
666print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
667print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
668print
'<input type="hidden" name="contextpage" value="'.$contextpage.
'">';
670$parameters = array(
'param' => $param);
671$reshook = $hookmanager->executeHooks(
'addMoreActionsButtonsList', $parameters, $object, $action);
676$newcardbutton = empty($hookmanager->resPrint) ?
'' : $hookmanager->resPrint;
678if (empty($reshook)) {
679 $newcardbutton =
dolGetButtonTitle($langs->trans(
'ViewFlatList'),
'',
'fa fa-list paddingleft imgforviewmode', DOL_URL_ROOT.
'/accountancy/bookkeeping/list.php?'.$param);
680 if ($type ==
'sub') {
681 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'GroupByAccountAccounting'),
'',
'fa fa-stream paddingleft imgforviewmode', DOL_URL_ROOT .
'/accountancy/bookkeeping/listbyaccount.php?' . $url_param,
'', 1, array(
'morecss' =>
'marginleftonly'));
682 $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'));
684 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'GroupByAccountAccounting'),
'',
'fa fa-stream paddingleft imgforviewmode', DOL_URL_ROOT .
'/accountancy/bookkeeping/listbyaccount.php?' . $url_param,
'', 1, array(
'morecss' =>
'marginleftonly btnTitleSelected'));
685 $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'));
688 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'NewAccountingMvt'),
'',
'fa fa-plus-circle paddingleft', DOL_URL_ROOT.
'/accountancy/bookkeeping/card.php?action=create');
691if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
692 $param .=
'&contextpage='.urlencode($contextpage);
694if ($limit > 0 && $limit != $conf->liste_limit) {
695 $param .=
'&limit='.((int) $limit);
698print_barre_liste($title_page, $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $result, $nbtotalofrecords,
'title_accountancy', 0, $newcardbutton,
'', $limit, 0, 0, 1);
700if ($massaction ==
'preunletteringauto') {
701 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassUnletteringAuto"), $langs->trans(
"ConfirmMassUnletteringQuestion", count($toselect)),
"unletteringauto",
null,
'', 0, 200, 500, 1);
702} elseif ($massaction ==
'preunletteringmanual') {
703 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassUnletteringManual"), $langs->trans(
"ConfirmMassUnletteringQuestion", count($toselect)),
"unletteringmanual",
null,
'', 0, 200, 500, 1);
704} elseif ($massaction ==
'predeletebookkeepingwriting') {
705 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassDeleteBookkeepingWriting"), $langs->trans(
"ConfirmMassDeleteBookkeepingWritingQuestion", count($toselect)),
"deletebookkeepingwriting",
null,
'', 0, 200, 500, 1);
718include DOL_DOCUMENT_ROOT.
'/core/tpl/massactions_pre.tpl.php';
720$varpage = empty($contextpage) ? $_SERVER[
"PHP_SELF"] : $contextpage;
721$selectedfields = $form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage,
getDolGlobalString(
'MAIN_CHECKBOX_LEFT_COLUMN'));
722if ($massactionbutton && $contextpage !=
'poslist') {
723 $selectedfields .= $form->showCheckAddButtons(
'checkforselect', 1);
727if (preg_match(
'/^asc/i', $sortorder)) {
735 print
info_admin($langs->trans(
"WarningRecordWithoutSubledgerAreExcluded"));
741$moreforfilter .=
'<div class="divsearchfield">';
742$moreforfilter .= $langs->trans(
'AccountAccounting').
': ';
743$moreforfilter .=
'<div class="nowrap inline-block">';
745 $moreforfilter .= $formaccounting->select_auxaccount($search_accountancy_code_start,
'search_accountancy_code_start', $langs->trans(
'From'),
'maxwidth200');
747 $moreforfilter .= $formaccounting->select_account($search_accountancy_code_start,
'search_accountancy_code_start', $langs->trans(
'From'), array(), 1, 1,
'maxwidth200');
749$moreforfilter .=
' ';
751 $moreforfilter .= $formaccounting->select_auxaccount($search_accountancy_code_end,
'search_accountancy_code_end', $langs->trans(
'to'),
'maxwidth200');
753 $moreforfilter .= $formaccounting->select_account($search_accountancy_code_end,
'search_accountancy_code_end', $langs->trans(
'to'), array(), 1, 1,
'maxwidth200');
755$stringforfirstkey = $langs->trans(
"KeyboardShortcut");
756if ($conf->browser->name ==
'chrome') {
757 $stringforfirstkey .=
' ALT +';
758} elseif ($conf->browser->name ==
'firefox') {
759 $stringforfirstkey .=
' ALT + SHIFT +';
761 $stringforfirstkey .=
' CTL +';
763$moreforfilter .=
' <a id="previous_account" accesskey="p" title="' . $stringforfirstkey .
' p" class="classfortooltip" href="#"><i class="fa fa-chevron-left"></i></a>';
764$moreforfilter .=
' <a id="next_account" accesskey="n" title="' . $stringforfirstkey .
' n" class="classfortooltip" href="#"><i class="fa fa-chevron-right"></i></a>';
765$moreforfilter .= <<<SCRIPT
766<script
type=
"text/javascript">
767 jQuery(document).ready(
function() {
768 var searchFormList = $(
'#searchFormList');
769 var searchAccountancyCodeStart = $(
'#search_accountancy_code_start');
770 var searchAccountancyCodeEnd = $(
'#search_accountancy_code_end');
771 jQuery(
'#previous_account').on(
'click',
function() {
772 var previousOption = searchAccountancyCodeStart.find(
'option:selected').prev(
'option');
773 if (previousOption.length == 1) searchAccountancyCodeStart.val(previousOption.attr(
'value'));
774 searchAccountancyCodeEnd.val(searchAccountancyCodeStart.val());
775 searchFormList.submit();
777 jQuery(
'#next_account').on(
'click',
function() {
778 var nextOption = searchAccountancyCodeStart.find(
'option:selected').next(
'option');
779 if (nextOption.length == 1) searchAccountancyCodeStart.val(nextOption.attr(
'value'));
780 searchAccountancyCodeEnd.val(searchAccountancyCodeStart.val());
781 searchFormList.submit();
783 jQuery(
'input[name="search_mvt_num"]').on(
"keypress",
function(event) {
789$moreforfilter .=
'</div>';
790$moreforfilter .=
'</div>';
792$moreforfilter .=
'<div class="divsearchfield">';
793$moreforfilter .= $langs->trans(
'AccountingCategory').
': ';
794$moreforfilter .=
'<div class="nowrap inline-block">';
795$moreforfilter .= $formaccounting->select_accounting_category($search_account_category,
'search_account_category', 1, 0, 0, 0);
796$moreforfilter .=
'</div>';
797$moreforfilter .=
'</div>';
799$parameters = array();
800$reshook = $hookmanager->executeHooks(
'printFieldPreListTitle', $parameters);
801if (empty($reshook)) {
802 $moreforfilter .= $hookmanager->resPrint;
804 $moreforfilter = $hookmanager->resPrint;
807print
'<div class="liste_titre liste_titre_bydiv centpercent">';
811print
'<div class="div-table-responsive">';
812print
'<table class="tagtable liste centpercent">';
815print
'<tr class="liste_titre_filter">';
818 print
'<td class="liste_titre center">';
819 $searchpicto = $form->showFilterButtons(
'left');
824if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
825 print
'<td class="liste_titre"><input type="text" name="search_mvt_num" class="width50" value="'.dol_escape_htmltag($search_mvt_num).
'"></td>';
828if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
829 print
'<td class="liste_titre center">';
830 print $formaccounting->multi_select_journal($search_ledger_code,
'search_ledger_code', 0, 1, 1, 1,
'maxwidth75');
834if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
835 print
'<td class="liste_titre center">';
836 print
'<div class="nowrapfordate">';
837 print $form->selectDate($search_date_start,
'search_date_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
839 print
'<div class="nowrapfordate">';
840 print $form->selectDate($search_date_end,
'search_date_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
845if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
846 print
'<td class="liste_titre"><input type="text" size="7" class="flat" name="search_doc_ref" value="'.dol_escape_htmltag($search_doc_ref).
'"/></td>';
849if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
850 print
'<td class="liste_titre"><input type="text" size="7" class="flat" name="search_label_operation" value="'.dol_escape_htmltag($search_label_operation).
'"/></td>';
853if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
854 print
'<td class="liste_titre center">';
855 print
'<input type="text" size="3" class="flat" name="search_lettering_code" value="'.$search_lettering_code.
'"/>';
856 print
'<br><span class="nowrap"><input type="checkbox" name="search_not_reconciled" value="notreconciled"'.($search_not_reconciled ==
'notreconciled' ?
' checked' :
'').
'>'.$langs->trans(
"NotReconciled").
'</span>';
860if (!empty($arrayfields[
't.debit'][
'checked'])) {
861 print
'<td class="liste_titre right"><input type="text" class="flat" name="search_debit" size="4" value="'.dol_escape_htmltag($search_debit).
'"></td>';
864if (!empty($arrayfields[
't.credit'][
'checked'])) {
865 print
'<td class="liste_titre right"><input type="text" class="flat" name="search_credit" size="4" value="'.dol_escape_htmltag($search_credit).
'"></td>';
868if (!empty($arrayfields[
't.balance'][
'checked'])) {
872if (!empty($arrayfields[
't.date_export'][
'checked'])) {
873 print
'<td class="liste_titre center">';
874 print
'<div class="nowrapfordate">';
875 print $form->selectDate($search_date_export_start,
'search_date_export_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
877 print
'<div class="nowrapfordate">';
878 print $form->selectDate($search_date_export_end,
'search_date_export_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
883if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
884 print
'<td class="liste_titre center">';
885 print
'<div class="nowrapfordate">';
886 print $form->selectDate($search_date_validation_start,
'search_date_validation_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
888 print
'<div class="nowrapfordate">';
889 print $form->selectDate($search_date_validation_end,
'search_date_validation_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
893if (!empty($arrayfields[
't.import_key'][
'checked'])) {
894 print
'<td class="liste_titre center">';
895 print
'<input class="flat searchstring maxwidth50" type="text" name="search_import_key" value="'.dol_escape_htmltag($search_import_key).
'">';
900$parameters = array(
'arrayfields'=>$arrayfields);
901$reshook = $hookmanager->executeHooks(
'printFieldListOption', $parameters);
902print $hookmanager->resPrint;
906 print
'<td class="liste_titre center">';
907 $searchpicto = $form->showFilterButtons();
913print
'<tr class="liste_titre">';
915 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch ');
917if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
918 print_liste_field_titre($arrayfields[
't.piece_num'][
'label'], $_SERVER[
'PHP_SELF'],
"t.piece_num",
"", $param,
'', $sortfield, $sortorder,
'tdoverflowmax80imp ');
920if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
921 print_liste_field_titre($arrayfields[
't.code_journal'][
'label'], $_SERVER[
'PHP_SELF'],
"t.code_journal",
"", $param,
'', $sortfield, $sortorder,
'center ');
923if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
924 print_liste_field_titre($arrayfields[
't.doc_date'][
'label'], $_SERVER[
'PHP_SELF'],
"t.doc_date",
"", $param,
'', $sortfield, $sortorder,
'center ');
926if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
927 print_liste_field_titre($arrayfields[
't.doc_ref'][
'label'], $_SERVER[
'PHP_SELF'],
"t.doc_ref",
"", $param,
"", $sortfield, $sortorder);
929if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
930 print_liste_field_titre($arrayfields[
't.label_operation'][
'label'], $_SERVER[
'PHP_SELF'],
"t.label_operation",
"", $param,
"", $sortfield, $sortorder);
932if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
933 print_liste_field_titre($arrayfields[
't.lettering_code'][
'label'], $_SERVER[
'PHP_SELF'],
"t.lettering_code",
"", $param,
'', $sortfield, $sortorder,
'center ');
935if (!empty($arrayfields[
't.debit'][
'checked'])) {
936 print_liste_field_titre($arrayfields[
't.debit'][
'label'], $_SERVER[
'PHP_SELF'],
"t.debit",
"", $param,
'', $sortfield, $sortorder,
'right ');
938if (!empty($arrayfields[
't.credit'][
'checked'])) {
939 print_liste_field_titre($arrayfields[
't.credit'][
'label'], $_SERVER[
'PHP_SELF'],
"t.credit",
"", $param,
'', $sortfield, $sortorder,
'right ');
941if (!empty($arrayfields[
't.balance'][
'checked'])) {
942 print_liste_field_titre($arrayfields[
't.balance'][
'label'],
"",
"",
"", $param,
'', $sortfield, $sortorder,
'right ');
944if (!empty($arrayfields[
't.date_export'][
'checked'])) {
945 print_liste_field_titre($arrayfields[
't.date_export'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_export",
"", $param,
'', $sortfield, $sortorder,
'center ');
947if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
948 print_liste_field_titre($arrayfields[
't.date_validated'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_validated",
"", $param,
'', $sortfield, $sortorder,
'center ');
950if (!empty($arrayfields[
't.import_key'][
'checked'])) {
951 print_liste_field_titre($arrayfields[
't.import_key'][
'label'], $_SERVER[
"PHP_SELF"],
"t.import_key",
"", $param,
'', $sortfield, $sortorder,
'center ');
954$parameters = array(
'arrayfields'=>$arrayfields,
'param'=>$param,
'sortfield'=>$sortfield,
'sortorder'=>$sortorder);
955$reshook = $hookmanager->executeHooks(
'printFieldListTitle', $parameters);
956print $hookmanager->resPrint;
958 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch ');
962$displayed_account_number =
null;
968$totalarray = array();
969$totalarray[
'val'] = array();
970$totalarray[
'nbfield'] = 0;
973$sous_total_debit = 0;
974$sous_total_credit = 0;
975$totalarray[
'val'][
'totaldebit'] = 0;
976$totalarray[
'val'][
'totalcredit'] = 0;
977$totalarray[
'val'][
'totalbalance']=0;
981if (!empty($arrayfields[
't.piece_num'][
'checked'])) { $colspan++; }
982if (!empty($arrayfields[
't.code_journal'][
'checked'])) { $colspan++; }
983if (!empty($arrayfields[
't.doc_date'][
'checked'])) { $colspan++; }
984if (!empty($arrayfields[
't.doc_ref'][
'checked'])) { $colspan++; }
985if (!empty($arrayfields[
't.label_operation'][
'checked'])) { $colspan++; }
986if (!empty($arrayfields[
't.date_export'][
'checked'])) { $colspanend++; }
987if (!empty($arrayfields[
't.date_validated'][
'checked'])) { $colspanend++; }
988if (!empty($arrayfields[
't.lettering_code'][
'checked'])) { $colspanend++; }
994while ($i < min($num, $limit)) {
995 $line = $object->lines[$i];
997 $total_debit += $line->debit;
998 $total_credit += $line->credit;
1000 if ($type ==
'sub') {
1012 if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
1015 if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
1018 if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1021 if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
1024 if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1027 if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1031 if (!empty($arrayfields[
't.balance'][
'checked'])) {
1034 if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1037 if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1040 if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1043 if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1052 if ($accountg != $displayed_account_number || !isset($displayed_account_number)) {
1054 if (isset($displayed_account_number)) {
1055 print
'<tr class="liste_total">';
1056 if ($type ==
'sub') {
1057 print
'<td class="right" colspan="' . $colspan .
'">' . $langs->trans(
"TotalForAccount") .
' ' .
length_accounta($displayed_account_number) .
':</td>';
1059 print
'<td class="right" colspan="' . $colspan .
'">' . $langs->trans(
"TotalForAccount") .
' ' .
length_accountg($displayed_account_number) .
':</td>';
1061 print
'<td class="nowrap right">'.price(
price2num($sous_total_debit,
'MT')).
'</td>';
1062 print
'<td class="nowrap right">'.price(
price2num($sous_total_credit,
'MT')).
'</td>';
1063 if ($colspanend > 0) {
1064 print
'<td colspan="'.$colspanend.
'"></td>';
1068 $balance = $sous_total_debit - $sous_total_credit;
1069 print
'<tr class="liste_total">';
1070 print
'<td class="right" colspan="'.$colspan.
'">'.$langs->trans(
"Balance").
':</td>';
1072 print
'<td class="nowraponall right">';
1073 print
price(
price2num($sous_total_debit - $sous_total_credit,
'MT'));
1078 print
'<td class="nowraponall right">';
1079 print
price(
price2num($sous_total_credit - $sous_total_debit,
'MT'));
1082 if ($colspanend > 0) {
1083 print
'<td colspan="'.$colspanend.
'"></td>';
1089 print
'<tr class="trforbreak">';
1090 print
'<td colspan="'.($totalarray[
'nbfield'] ? $totalarray[
'nbfield'] : count($arrayfields)+1).
'" class="tdforbreak">';
1091 if ($type ==
'sub') {
1092 if ($line->subledger_account !=
"" && $line->subledger_account !=
'-1') {
1093 print empty($line->subledger_label) ?
'<span class="error">'.$langs->trans(
"Unknown").
'</span>' : $line->subledger_label;
1098 print
'<span class="error">' . $langs->trans(
"Unknown");
1099 if ($line->subledger_label) {
1100 print
' (' . $line->subledger_label .
')';
1101 $htmltext =
'EmptyStringForSubledgerAccountButSubledgerLabelDefined';
1103 $htmltext =
'EmptyStringForSubledgerAccountAndSubledgerLabel';
1105 print $form->textwithpicto(
'', $htmltext);
1109 if ($line->numero_compte !=
"" && $line->numero_compte !=
'-1') {
1110 print
length_accountg($line->numero_compte) .
' : ' . $object->get_compte_desc($line->numero_compte);
1112 print
'<span class="error">' . $langs->trans(
"Unknown") .
'</span>';
1118 $displayed_account_number = $accountg;
1120 $sous_total_debit = 0;
1121 $sous_total_credit = 0;
1124 print
'<tr class="oddeven">';
1127 print
'<td class="nowraponall center">';
1128 if (($massactionbutton || $massaction) && $contextpage !=
'poslist') {
1130 if (in_array($line->id, $arrayofselected)) {
1133 print
'<input id="cb' . $line->id .
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="' . $line->id .
'"' . ($selected ?
' checked="checked"' :
'') .
' />';
1137 $totalarray[
'nbfield']++;
1141 if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
1143 $object->id = $line->id;
1144 $object->piece_num = $line->piece_num;
1145 print $object->getNomUrl(1,
'', 0,
'', 1);
1148 $totalarray[
'nbfield']++;
1153 if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
1155 $result = $accountingjournal->fetch(
'', $line->code_journal);
1156 $journaltoshow = (($result > 0) ? $accountingjournal->getNomUrl(0, 0, 0,
'', 0) : $line->code_journal);
1157 print
'<td class="center tdoverflowmax80">'.$journaltoshow.
'</td>';
1159 $totalarray[
'nbfield']++;
1164 if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1165 print
'<td class="center">'.dol_print_date($line->doc_date,
'day').
'</td>';
1167 $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);
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
" " . $bank_ref;
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'] += $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'] += $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'] =
price2num($totalarray[
'val'][
'totaldebit'],
'MT');
1383if (!empty($totalarray[
'val'][
'totalcredit'])) {
1384 $totalarray[
'val'][
'totalcredit'] =
price2num($totalarray[
'val'][
'totalcredit'],
'MT');
1386if (!empty($totalarray[
'val'][
'totalbalance'])) {
1387 $totalarray[
'val'][
'totalbalance'] =
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;
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 informations (by default a local PHP server timestamp) Re...
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_print_date($time, $format='', $tzoutput='auto', $outputlangs='', $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
dol_now($mode='auto')
Return date for now.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
print_liste_field_titre($name, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $tooltip="", $forcenowrapcolumntitle=0)
Show title line of an array.
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.
info_admin($text, $infoonimgalt=0, $nodiv=0, $admin='1', $morecss='hideonsmartphone', $textfordropdown='')
Show information for admin users or standard users.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0)
Set event messages in dol_events session object.
print_barre_liste($titre, $page, $file, $options='', $sortfield='', $sortorder='', $morehtmlcenter='', $num=-1, $totalnboflines='', $picto='generic', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limit=-1, $hideselectlimit=0, $hidenavigation=0, $pagenavastextinput=0, $morehtmlrightbeforearrow='')
Print a title with navigation controls for pagination.
dol_sanitizeFileName($str, $newstr='_', $unaccent=1)
Clean a string to use it as a file name.
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
get_exdir($num, $level, $alpha, $withoutslash, $object, $modulepart='')
Return a path to have a the directory according to object where files are stored.
dol_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.