30require
'../../main.inc.php';
32require_once DOL_DOCUMENT_ROOT.
'/core/lib/accounting.lib.php';
33require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/lettering.class.php';
34require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/bookkeeping.class.php';
35require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountingjournal.class.php';
36require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formaccounting.class.php';
37require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formfile.class.php';
38require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formother.class.php';
39require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
50$langs->loadLangs(array(
"accountancy",
"categories",
"compta"));
52$action =
GETPOST(
'action',
'aZ09');
54$massaction =
GETPOST(
'massaction',
'alpha');
55$confirm =
GETPOST(
'confirm',
'alpha');
56$toselect =
GETPOST(
'toselect',
'array');
57$type =
GETPOST(
'type',
'alpha');
59 $context_default =
'bookkeepingbysubaccountlist';
61 $context_default =
'bookkeepingbyaccountlist';
63$contextpage =
GETPOST(
'contextpage',
'aZ') ?
GETPOST(
'contextpage',
'aZ') : $context_default;
64$search_date_startyear =
GETPOSTINT(
'search_date_startyear');
65$search_date_startmonth =
GETPOSTINT(
'search_date_startmonth');
66$search_date_startday =
GETPOSTINT(
'search_date_startday');
67$search_date_endyear =
GETPOSTINT(
'search_date_endyear');
68$search_date_endmonth =
GETPOSTINT(
'search_date_endmonth');
69$search_date_endday =
GETPOSTINT(
'search_date_endday');
70$search_date_start =
dol_mktime(0, 0, 0, $search_date_startmonth, $search_date_startday, $search_date_startyear);
71$search_date_end =
dol_mktime(23, 59, 59, $search_date_endmonth, $search_date_endday, $search_date_endyear);
73$search_date_export_startyear =
GETPOSTINT(
'search_date_export_startyear');
74$search_date_export_startmonth =
GETPOSTINT(
'search_date_export_startmonth');
75$search_date_export_startday =
GETPOSTINT(
'search_date_export_startday');
76$search_date_export_endyear =
GETPOSTINT(
'search_date_export_endyear');
77$search_date_export_endmonth =
GETPOSTINT(
'search_date_export_endmonth');
78$search_date_export_endday =
GETPOSTINT(
'search_date_export_endday');
79$search_date_export_start =
dol_mktime(0, 0, 0, $search_date_export_startmonth, $search_date_export_startday, $search_date_export_startyear);
80$search_date_export_end =
dol_mktime(23, 59, 59, $search_date_export_endmonth, $search_date_export_endday, $search_date_export_endyear);
81$search_date_validation_startyear =
GETPOSTINT(
'search_date_validation_startyear');
82$search_date_validation_startmonth =
GETPOSTINT(
'search_date_validation_startmonth');
83$search_date_validation_startday =
GETPOSTINT(
'search_date_validation_startday');
84$search_date_validation_endyear =
GETPOSTINT(
'search_date_validation_endyear');
85$search_date_validation_endmonth =
GETPOSTINT(
'search_date_validation_endmonth');
86$search_date_validation_endday =
GETPOSTINT(
'search_date_validation_endday');
87$search_date_validation_start =
dol_mktime(0, 0, 0, $search_date_validation_startmonth, $search_date_validation_startday, $search_date_validation_startyear);
88$search_date_validation_end =
dol_mktime(23, 59, 59, $search_date_validation_endmonth, $search_date_validation_endday, $search_date_validation_endyear);
90$search_date_due_start_day =
GETPOSTINT(
'search_date_due_start_day');
91$search_date_due_start_month =
GETPOSTINT(
'search_date_due_start_month');
92$search_date_due_start_year =
GETPOSTINT(
'search_date_due_start_year');
93$search_date_due_start =
dol_mktime(0, 0, 0, $search_date_due_start_month, $search_date_due_start_day, $search_date_due_start_year);
95$search_date_due_end_day =
GETPOSTINT(
'search_date_due_end_day');
96$search_date_due_end_month =
GETPOSTINT(
'search_date_due_end_month');
97$search_date_due_end_year =
GETPOSTINT(
'search_date_due_end_year');
98$search_date_due_end =
dol_mktime(23, 59, 59, $search_date_due_end_month, $search_date_due_end_day, $search_date_due_end_year);
99$search_import_key =
GETPOST(
"search_import_key",
'alpha');
101$search_account_category =
GETPOSTINT(
'search_account_category');
103$search_accountancy_code_start =
GETPOST(
'search_accountancy_code_start',
'alpha');
104if ($search_accountancy_code_start == - 1) {
105 $search_accountancy_code_start =
'';
107$search_accountancy_code_end =
GETPOST(
'search_accountancy_code_end',
'alpha');
108if ($search_accountancy_code_end == - 1) {
109 $search_accountancy_code_end =
'';
111$search_doc_ref =
GETPOST(
'search_doc_ref',
'alpha');
112$search_label_operation =
GETPOST(
'search_label_operation',
'alpha');
113$search_mvt_num =
GETPOST(
'search_mvt_num',
'alpha');
114$search_direction =
GETPOST(
'search_direction',
'alpha');
115$search_ledger_code =
GETPOST(
'search_ledger_code',
'array');
116$search_debit =
GETPOST(
'search_debit',
'alpha');
117$search_credit =
GETPOST(
'search_credit',
'alpha');
118$search_lettering_code =
GETPOST(
'search_lettering_code',
'alpha');
119$search_not_reconciled =
GETPOST(
'search_not_reconciled',
'alpha');
122 $action =
'delbookkeepingyear';
127$sortfield =
GETPOST(
'sortfield',
'aZ09comma');
128$sortorder =
GETPOST(
'sortorder',
'aZ09comma');
129$optioncss =
GETPOST(
'optioncss',
'alpha');
131if (empty($page) || $page < 0) {
134$offset = $limit * $page;
135$pageprev = $page - 1;
136$pagenext = $page + 1;
137if ($sortorder ==
"") {
140if ($sortfield ==
"") {
141 $sortfield =
"t.doc_date,t.rowid";
147$hookmanager->initHooks(array($context_default));
150$form =
new Form($db);
152if (empty($search_date_start) && empty($search_date_end) && !GETPOSTISSET(
'search_date_startday') && !GETPOSTISSET(
'search_date_startmonth') && !GETPOSTISSET(
'search_date_starthour')) {
153 $sql =
"SELECT date_start, date_end from ".MAIN_DB_PREFIX.
"accounting_fiscalyear ";
154 $sql .=
" where date_start < '".$db->idate(
dol_now()).
"' and date_end > '".$db->idate(
dol_now()).
"'";
155 $sql .= $db->plimit(1);
156 $res = $db->query($sql);
158 if ($res !==
false && $db->num_rows($res) > 0) {
159 $fiscalYear = $db->fetch_object($res);
160 $search_date_start = strtotime($fiscalYear->date_start);
161 $search_date_end = strtotime($fiscalYear->date_end);
168 $year_end = $year_start + 1;
169 $month_end = $month_start - 1;
170 if ($month_end < 1) {
174 $search_date_start =
dol_mktime(0, 0, 0, $month_start, 1, $year_start);
181 't.piece_num' => array(
'label' => $langs->trans(
"TransactionNumShort"),
'checked' => 1),
182 't.code_journal' => array(
'label' => $langs->trans(
"Codejournal"),
'checked' => 1),
183 't.doc_date' => array(
'label' => $langs->trans(
"Docdate"),
'checked' => 1),
184 't.doc_ref' => array(
'label' => $langs->trans(
"Piece"),
'checked' => 1),
185 't.label_operation' => array(
'label' => $langs->trans(
"Label"),
'checked' => 1),
186 't.lettering_code' => array(
'label' => $langs->trans(
"Lettering"),
'checked' => 1),
187 't.debit' => array(
'label' => $langs->trans(
"AccountingDebit"),
'checked' => 1),
188 't.credit' => array(
'label' => $langs->trans(
"AccountingCredit"),
'checked' => 1),
189 't.balance' => array(
'label' => $langs->trans(
"Balance"),
'checked' => 1),
190 't.date_export' => array(
'label' => $langs->trans(
"DateExport"),
'checked' => -1),
191 't.date_validated' => array(
'label' => $langs->trans(
"DateValidation"),
'checked' => -1,
'enabled' => !
getDolGlobalString(
"ACCOUNTANCY_DISABLE_CLOSURE_LINE_BY_LINE")),
192 't.date_lim_reglement' => array(
'label' => $langs->trans(
"DateDue"),
'checked' => 0),
193 't.import_key' => array(
'label' => $langs->trans(
"ImportId"),
'checked' => -1,
'position' => 1100),
197 unset($arrayfields[
't.lettering_code']);
200if ($search_date_start && empty($search_date_startyear)) {
202 $search_date_startyear = $tmparray[
'year'];
203 $search_date_startmonth = $tmparray[
'mon'];
204 $search_date_startday = $tmparray[
'mday'];
206if ($search_date_end && empty($search_date_endyear)) {
208 $search_date_endyear = $tmparray[
'year'];
209 $search_date_endmonth = $tmparray[
'mon'];
210 $search_date_endday = $tmparray[
'mday'];
213if (!isModEnabled(
'accounting')) {
216if ($user->socid > 0) {
219if (!$user->hasRight(
'accounting',
'mouvements',
'lire')) {
227$permissiontoadd = $user->hasRight(
'accounting',
'mouvements',
'creer');
238if (
GETPOST(
'cancel',
'alpha')) {
242if (!
GETPOST(
'confirmmassaction',
'alpha') && $massaction !=
'preunletteringauto' && $massaction !=
'preunletteringmanual' && $massaction !=
'predeletebookkeepingwriting') {
246$parameters = array(
'socid' => $socid);
247$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
252if (empty($reshook)) {
253 include DOL_DOCUMENT_ROOT.
'/core/actions_changeselectedfields.inc.php';
255 if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
256 $search_doc_date =
'';
257 $search_account_category =
'';
258 $search_accountancy_code_start =
'';
259 $search_accountancy_code_end =
'';
260 $search_label_account =
'';
261 $search_doc_ref =
'';
262 $search_label_operation =
'';
263 $search_mvt_num =
'';
264 $search_direction =
'';
265 $search_ledger_code = array();
266 $search_date_start =
'';
267 $search_date_end =
'';
268 $search_date_startyear =
'';
269 $search_date_startmonth =
'';
270 $search_date_startday =
'';
271 $search_date_endyear =
'';
272 $search_date_endmonth =
'';
273 $search_date_endday =
'';
274 $search_date_export_start =
'';
275 $search_date_export_end =
'';
276 $search_date_export_startyear =
'';
277 $search_date_export_startmonth =
'';
278 $search_date_export_startday =
'';
279 $search_date_export_endyear =
'';
280 $search_date_export_endmonth =
'';
281 $search_date_export_endday =
'';
282 $search_date_validation_start =
'';
283 $search_date_validation_end =
'';
284 $search_date_validation_startyear =
'';
285 $search_date_validation_startmonth =
'';
286 $search_date_validation_startday =
'';
287 $search_date_validation_endyear =
'';
288 $search_date_validation_endmonth =
'';
289 $search_date_validation_endday =
'';
291 $search_date_due_start_day =
'';
292 $search_date_due_start_month =
'';
293 $search_date_due_start_year =
'';
294 $search_date_due_start =
'';
296 $search_date_due_end_day =
'';
297 $search_date_due_end_month =
'';
298 $search_date_due_end_year =
'';
299 $search_date_due_end =
'';
300 $search_lettering_code =
'';
303 $search_not_reconciled =
'';
304 $search_import_key =
'';
308 if (!empty($search_date_start)) {
309 $filter[
't.doc_date>='] = $search_date_start;
310 $param .=
'&search_date_startmonth='.$search_date_startmonth.
'&search_date_startday='.$search_date_startday.
'&search_date_startyear='.$search_date_startyear;
312 if (!empty($search_date_end)) {
313 $filter[
't.doc_date<='] = $search_date_end;
314 $param .=
'&search_date_endmonth='.$search_date_endmonth.
'&search_date_endday='.$search_date_endday.
'&search_date_endyear='.$search_date_endyear;
316 if (!empty($search_doc_date)) {
317 $filter[
't.doc_date'] = $search_doc_date;
318 $param .=
'&doc_datemonth='.GETPOSTINT(
'doc_datemonth').
'&doc_dateday='.
GETPOSTINT(
'doc_dateday').
'&doc_dateyear='.
GETPOSTINT(
'doc_dateyear');
320 if ($search_account_category !=
'-1' && !empty($search_account_category)) {
321 require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountancycategory.class.php';
324 $listofaccountsforgroup = $accountingcategory->getCptsCat(0,
'fk_accounting_category = '.((
int) $search_account_category));
325 $listofaccountsforgroup2 = array();
326 if (is_array($listofaccountsforgroup)) {
327 foreach ($listofaccountsforgroup as $tmpval) {
328 $listofaccountsforgroup2[] =
"'".$db->escape($tmpval[
'account_number']).
"'";
331 if (!empty($listofaccountsforgroup2)) {
332 $filter[
't.search_accounting_code_in'] = implode(
',', $listofaccountsforgroup2);
334 $filter[
't.search_accounting_code_in'] =
"''";
335 setEventMessages($langs->trans(
"ThisCategoryHasNoItems"),
null,
'warnings');
337 $param .=
'&search_account_category='.urlencode((
string) ($search_account_category));
339 if (!empty($search_accountancy_code_start)) {
340 if ($type ==
'sub') {
341 $filter[
't.subledger_account>='] = $search_accountancy_code_start;
343 $filter[
't.numero_compte>='] = $search_accountancy_code_start;
345 $param .=
'&search_accountancy_code_start=' . urlencode($search_accountancy_code_start);
347 if (!empty($search_accountancy_code_end)) {
348 if ($type ==
'sub') {
349 $filter[
't.subledger_account<='] = $search_accountancy_code_end;
351 $filter[
't.numero_compte<='] = $search_accountancy_code_end;
353 $param .=
'&search_accountancy_code_end=' . urlencode($search_accountancy_code_end);
355 if (!empty($search_label_account)) {
356 $filter[
't.label_compte'] = $search_label_account;
357 $param .=
'&search_label_compte='.urlencode($search_label_account);
359 if (!empty($search_mvt_num)) {
360 $filter[
't.piece_num'] = $search_mvt_num;
361 $param .=
'&search_mvt_num='.urlencode((
string) ($search_mvt_num));
363 if (!empty($search_doc_ref)) {
364 $filter[
't.doc_ref'] = $search_doc_ref;
365 $param .=
'&search_doc_ref='.urlencode($search_doc_ref);
367 if (!empty($search_label_operation)) {
368 $filter[
't.label_operation'] = $search_label_operation;
369 $param .=
'&search_label_operation='.urlencode($search_label_operation);
371 if (!empty($search_direction)) {
372 $filter[
't.sens'] = $search_direction;
373 $param .=
'&search_direction='.urlencode($search_direction);
375 if (!empty($search_ledger_code)) {
376 $filter[
't.code_journal'] = $search_ledger_code;
377 foreach ($search_ledger_code as $code) {
378 $param .=
'&search_ledger_code[]='.urlencode($code);
381 if (!empty($search_lettering_code)) {
382 $filter[
't.lettering_code'] = $search_lettering_code;
383 $param .=
'&search_lettering_code='.urlencode($search_lettering_code);
385 if (!empty($search_debit)) {
386 $filter[
't.debit'] = $search_debit;
387 $param .=
'&search_debit='.urlencode($search_debit);
389 if (!empty($search_credit)) {
390 $filter[
't.credit'] = $search_credit;
391 $param .=
'&search_credit='.urlencode($search_credit);
393 if (!empty($search_not_reconciled)) {
394 $filter[
't.reconciled_option'] = $search_not_reconciled;
395 $param .=
'&search_not_reconciled='.urlencode($search_not_reconciled);
397 if (!empty($search_date_export_start)) {
398 $filter[
't.date_export>='] = $search_date_export_start;
399 $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;
401 if (!empty($search_date_export_end)) {
402 $filter[
't.date_export<='] = $search_date_export_end;
403 $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;
405 if (!empty($search_date_validation_start)) {
406 $filter[
't.date_validated>='] = $search_date_validation_start;
407 $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;
409 if (!empty($search_date_validation_end)) {
410 $filter[
't.date_validated<='] = $search_date_validation_end;
411 $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;
414 if (!empty($search_date_due_start)) {
415 $filter[
't.date_lim_reglement>='] = $search_date_due_start;
416 $param .=
'&search_date_due_start_day='.$search_date_due_start_day.
'&search_date_due_start_month='.$search_date_due_start_month.
'&search_date_due_start_year='.$search_date_due_start_year;
419 if (!empty($search_date_due_end)) {
420 $filter[
't.date_lim_reglement<='] = $search_date_due_end;
421 $param .=
'&search_date_due_end_day='.$search_date_due_end_day.
'&search_date_due_end_month='.$search_date_due_end_month.
'&search_date_due_end_year='.$search_date_due_end_year;
423 if (!empty($search_import_key)) {
424 $filter[
't.import_key'] = $search_import_key;
425 $param .=
'&search_import_key='.urlencode($search_import_key);
428 $url_param = substr($param, 1);
430 $param =
'&type='.$type.$param;
461 $objectclass =
'Bookkeeping';
462 $objectlabel =
'Bookkeeping';
463 $permissiontoread = $user->hasRight(
'societe',
'lire');
464 $permissiontodelete = $user->hasRight(
'societe',
'supprimer');
465 $permissiontoadd = $user->hasRight(
'societe',
'creer');
466 $uploaddir =
$conf->societe->dir_output;
469 include DOL_DOCUMENT_ROOT.
'/core/actions_massactions.inc.php';
471 if (!$error && $action ==
'deletebookkeepingwriting' && $confirm ==
"yes" && $user->hasRight(
'accounting',
'mouvements',
'supprimer')) {
476 $nb_lettering = $lettering->bookkeepingLetteringAll($toselect,
true);
477 if ($nb_lettering < 0) {
485 foreach ($toselect as $toselectid) {
486 $result =
$object->fetch($toselectid);
487 if ($result > 0 && (!isset(
$object->date_validation) ||
$object->date_validation ===
'')) {
496 } elseif ($result < 0) {
500 } elseif (isset(
$object->date_validation) &&
$object->date_validation !=
'') {
501 setEventMessages($langs->trans(
"ValidatedRecordWhereFound"),
null,
'errors');
514 } elseif ($nbok > 0) {
520 header(
"Location: ".$_SERVER[
"PHP_SELF"].
"?noreset=1".($param ?
'&'.$param :
''));
529 if ($massaction ==
'letteringauto' && $permissiontoadd) {
531 $nb_lettering = $lettering->bookkeepingLetteringAll($toselect);
532 if ($nb_lettering < 0) {
535 $nb_lettering = max(0, abs($nb_lettering) - 2);
536 } elseif ($nb_lettering == 0) {
538 setEventMessages($langs->trans(
'AccountancyNoLetteringModified'), array(),
'mesgs');
540 if ($nb_lettering == 1) {
541 setEventMessages($langs->trans(
'AccountancyOneLetteringModifiedSuccessfully'), array(),
'mesgs');
542 } elseif ($nb_lettering > 1) {
543 setEventMessages($langs->trans(
'AccountancyLetteringModifiedSuccessfully', $nb_lettering), array(),
'mesgs');
547 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
550 } elseif ($massaction ==
'letteringmanual' && $permissiontoadd) {
552 $result = $lettering->updateLettering($toselect);
556 setEventMessages($langs->trans($result == 0 ?
'AccountancyNoLetteringModified' :
'AccountancyOneLetteringModifiedSuccessfully'), array(),
'mesgs');
557 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
560 } elseif ($type ==
'sub' && $massaction ==
'letteringpartial') {
562 $result = $lettering->updateLettering($toselect,
false,
true);
566 setEventMessages($langs->trans($result == 0 ?
'AccountancyNoLetteringModified' :
'AccountancyOneLetteringModifiedSuccessfully'), array(),
'mesgs');
567 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
570 } elseif ($action ==
'unletteringauto' && $confirm ==
"yes" && $permissiontoadd) {
572 $nb_lettering = $lettering->bookkeepingLetteringAll($toselect,
true);
573 if ($nb_lettering < 0) {
576 $nb_lettering = max(0, abs($nb_lettering) - 2);
577 } elseif ($nb_lettering == 0) {
579 setEventMessages($langs->trans(
'AccountancyNoUnletteringModified'), array(),
'mesgs');
581 if ($nb_lettering == 1) {
582 setEventMessages($langs->trans(
'AccountancyOneUnletteringModifiedSuccessfully'), array(),
'mesgs');
583 } elseif ($nb_lettering > 1) {
584 setEventMessages($langs->trans(
'AccountancyUnletteringModifiedSuccessfully', $nb_lettering), array(),
'mesgs');
588 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
591 } elseif ($action ==
'unletteringmanual' && $confirm ==
"yes" && $permissiontoadd) {
593 $nb_lettering = $lettering->deleteLettering($toselect);
597 setEventMessages($langs->trans($result == 0 ?
'AccountancyNoUnletteringModified' :
'AccountancyOneUnletteringModifiedSuccessfully'), array(),
'mesgs');
598 header(
'Location: ' . $_SERVER[
'PHP_SELF'] .
'?noreset=1' . $param);
613$form =
new Form($db);
615$title_page = $langs->trans(
"Operations").
' - '.$langs->trans(
"VueByAccountAccounting").
' (';
617 $title_page .= $langs->trans(
"BookkeepingSubAccount");
619 $title_page .= $langs->trans(
"Bookkeeping");
622$help_url =
'EN:Module_Double_Entry_Accounting|FR:Module_Comptabilité_en_Partie_Double';
623llxHeader(
'', $title_page, $help_url,
'', 0, 0,
'',
'',
'',
'mod-accountancy accountancy-consultation page-'.(($type ==
'sub') ?
'sub' :
'').
'ledger');
626$nbtotalofrecords =
'';
629 if ($type ==
'sub') {
630 $nbtotalofrecords =
$object->fetchAllByAccount($sortorder, $sortfield, 0, 0, $filter,
'AND', 1, 1);
632 $nbtotalofrecords =
$object->fetchAllByAccount($sortorder, $sortfield, 0, 0, $filter,
'AND', 0, 1);
635 if ($nbtotalofrecords < 0) {
643 if ($type ==
'sub') {
644 $result =
$object->fetchAllByAccount($sortorder, $sortfield, $limit, $offset, $filter,
'AND', 1);
646 $result =
$object->fetchAllByAccount($sortorder, $sortfield, $limit, $offset, $filter,
'AND', 0);
656$arrayofselected = is_array($toselect) ? $toselect : array();
704$arrayofmassactions = array();
705if (
getDolGlobalInt(
'ACCOUNTING_ENABLE_LETTERING') && $user->hasRight(
'accounting',
'mouvements',
'creer')) {
706 $arrayofmassactions[
'letteringauto'] =
img_picto(
'',
'check',
'class="pictofixedwidth"') . $langs->trans(
'LetteringAuto');
707 $arrayofmassactions[
'preunletteringauto'] =
img_picto(
'',
'uncheck',
'class="pictofixedwidth"') . $langs->trans(
'UnletteringAuto');
708 $arrayofmassactions[
'letteringmanual'] =
img_picto(
'',
'check',
'class="pictofixedwidth"') . $langs->trans(
'LetteringManual');
709 if ($type ==
'sub') {
710 $arrayofmassactions[
'letteringpartial'] =
img_picto(
'',
'check',
'class="pictofixedwidth"') . $langs->trans(
'LetteringPartial');
712 $arrayofmassactions[
'preunletteringmanual'] =
img_picto(
'',
'uncheck',
'class="pictofixedwidth"') . $langs->trans(
'UnletteringManual');
714if ($user->hasRight(
'accounting',
'mouvements',
'supprimer')) {
715 $arrayofmassactions[
'predeletebookkeepingwriting'] =
img_picto(
'',
'delete',
'class="pictofixedwidth"').$langs->trans(
"Delete");
717if (
GETPOSTINT(
'nomassaction') || in_array($massaction, array(
'preunletteringauto',
'preunletteringmanual',
'predeletebookkeepingwriting'))) {
718 $arrayofmassactions = array();
720$massactionbutton = $form->selectMassAction($massaction, $arrayofmassactions);
722print
'<form method="POST" id="searchFormList" action="'.$_SERVER[
"PHP_SELF"].
'">';
723print
'<input type="hidden" name="token" value="'.newToken().
'">';
724print
'<input type="hidden" name="action" value="list">';
725if ($optioncss !=
'') {
726 print
'<input type="hidden" name="optioncss" value="'.$optioncss.
'">';
728print
'<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
729print
'<input type="hidden" name="type" value="'.$type.
'">';
730print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
731print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
732print
'<input type="hidden" name="contextpage" value="'.$contextpage.
'">';
734$parameters = array(
'param' => $param);
735$reshook = $hookmanager->executeHooks(
'addMoreActionsButtonsList', $parameters, $object, $action);
740$newcardbutton = empty($hookmanager->resPrint) ?
'' : $hookmanager->resPrint;
742if (empty($reshook)) {
743 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'ViewFlatList'),
'',
'fa fa-list paddingleft imgforviewmode', DOL_URL_ROOT.
'/accountancy/bookkeeping/list.php?'.$param);
744 if ($type ==
'sub') {
745 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'GroupByAccountAccounting'),
'',
'fa fa-stream paddingleft imgforviewmode', DOL_URL_ROOT .
'/accountancy/bookkeeping/listbyaccount.php?' . $url_param,
'', 1, array(
'morecss' =>
'marginleftonly'));
746 $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'));
748 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'GroupByAccountAccounting'),
'',
'fa fa-stream paddingleft imgforviewmode', DOL_URL_ROOT .
'/accountancy/bookkeeping/listbyaccount.php?' . $url_param,
'', 1, array(
'morecss' =>
'marginleftonly btnTitleSelected'));
749 $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'));
752 $newcardbutton .=
dolGetButtonTitle($langs->trans(
'NewAccountingMvt'),
'',
'fa fa-plus-circle paddingleft', DOL_URL_ROOT.
'/accountancy/bookkeeping/card.php?action=create');
755if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
756 $param .=
'&contextpage='.urlencode($contextpage);
758if ($limit > 0 && $limit !=
$conf->liste_limit) {
759 $param .=
'&limit='.((int) $limit);
762print_barre_liste($title_page, $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords,
'title_accountancy', 0, $newcardbutton,
'', $limit, 0, 0, 1);
764if ($massaction ==
'preunletteringauto') {
765 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassUnletteringAuto"), $langs->trans(
"ConfirmMassUnletteringQuestion", count($toselect)),
"unletteringauto",
null,
'', 0, 200, 500, 1);
766} elseif ($massaction ==
'preunletteringmanual') {
767 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassUnletteringManual"), $langs->trans(
"ConfirmMassUnletteringQuestion", count($toselect)),
"unletteringmanual",
null,
'', 0, 200, 500, 1);
768} elseif ($massaction ==
'predeletebookkeepingwriting') {
769 print $form->formconfirm($_SERVER[
"PHP_SELF"], $langs->trans(
"ConfirmMassDeleteBookkeepingWriting"), $langs->trans(
"ConfirmMassDeleteBookkeepingWritingQuestion", count($toselect)),
"deletebookkeepingwriting",
null,
'', 0, 200, 500, 1);
782include DOL_DOCUMENT_ROOT.
'/core/tpl/massactions_pre.tpl.php';
784$varpage = empty($contextpage) ? $_SERVER[
"PHP_SELF"] : $contextpage;
785$selectedfields = $form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage,
getDolGlobalString(
'MAIN_CHECKBOX_LEFT_COLUMN'));
786if ($massactionbutton && $contextpage !=
'poslist') {
787 $selectedfields .= $form->showCheckAddButtons(
'checkforselect', 1);
791if (preg_match(
'/^asc/i', $sortorder)) {
799 print
info_admin($langs->trans(
"WarningRecordWithoutSubledgerAreExcluded"));
805$moreforfilter .=
'<div class="divsearchfield">';
806$moreforfilter .= $langs->trans(
'AccountAccounting').
': ';
807$moreforfilter .=
'<div class="nowrap inline-block">';
810 $moreforfilter .= $formaccounting->select_auxaccount($search_accountancy_code_start,
'search_accountancy_code_start', $langs->trans(
'From'),
'maxwidth200');
812 $moreforfilter .=
'<input type="text" class="maxwidth150" name="search_accountancy_code_start" value="'.dol_escape_htmltag($search_accountancy_code_start).
'" placeholder="'.$langs->trans(
'From').
'">';
815 $moreforfilter .= $formaccounting->select_account($search_accountancy_code_start,
'search_accountancy_code_start', $langs->trans(
'From'), array(), 1, 1,
'maxwidth200');
817$moreforfilter .=
' ';
820 $moreforfilter .= $formaccounting->select_auxaccount($search_accountancy_code_end,
'search_accountancy_code_end', $langs->trans(
'to'),
'maxwidth200');
822 $moreforfilter .=
'<input type="text" class="maxwidth150" name="search_accountancy_code_end" value="'.dol_escape_htmltag($search_accountancy_code_end).
'" placeholder="'.$langs->trans(
'to').
'">';
825 $moreforfilter .= $formaccounting->select_account($search_accountancy_code_end,
'search_accountancy_code_end', $langs->trans(
'to'), array(), 1, 1,
'maxwidth200');
827$stringforfirstkey = $langs->trans(
"KeyboardShortcut");
828if (
$conf->browser->name ==
'chrome') {
829 $stringforfirstkey .=
' ALT +';
830} elseif (
$conf->browser->name ==
'firefox') {
831 $stringforfirstkey .=
' ALT + SHIFT +';
833 $stringforfirstkey .=
' CTL +';
835$moreforfilter .=
' <a id="previous_account" accesskey="p" title="' . $stringforfirstkey .
' p" class="classfortooltip" href="#"><i class="fa fa-chevron-left"></i></a>';
836$moreforfilter .=
' <a id="next_account" accesskey="n" title="' . $stringforfirstkey .
' n" class="classfortooltip" href="#"><i class="fa fa-chevron-right"></i></a>';
837$moreforfilter .= <<<SCRIPT
838<script
type=
"text/javascript">
839 jQuery(document).ready(
function() {
840 var searchFormList = $(
'#searchFormList');
841 var searchAccountancyCodeStart = $(
'#search_accountancy_code_start');
842 var searchAccountancyCodeEnd = $(
'#search_accountancy_code_end');
843 jQuery(
'#previous_account').on(
'click',
function() {
844 var previousOption = searchAccountancyCodeStart.find(
'option:selected').prev(
'option');
845 if (previousOption.length == 1) searchAccountancyCodeStart.val(previousOption.attr(
'value'));
846 searchAccountancyCodeEnd.val(searchAccountancyCodeStart.val());
847 searchFormList.submit();
849 jQuery(
'#next_account').on(
'click',
function() {
850 var nextOption = searchAccountancyCodeStart.find(
'option:selected').next(
'option');
851 if (nextOption.length == 1) searchAccountancyCodeStart.val(nextOption.attr(
'value'));
852 searchAccountancyCodeEnd.val(searchAccountancyCodeStart.val());
853 searchFormList.submit();
855 jQuery(
'input[name="search_mvt_num"]').on(
"keypress",
function(event) {
861$moreforfilter .=
'</div>';
862$moreforfilter .=
'</div>';
864$moreforfilter .=
'<div class="divsearchfield">';
865$moreforfilter .= $langs->trans(
'AccountingCategory').
': ';
866$moreforfilter .=
'<div class="nowrap inline-block">';
867$moreforfilter .= $formaccounting->select_accounting_category($search_account_category,
'search_account_category', 1, 0, 0, 0);
868$moreforfilter .=
'</div>';
869$moreforfilter .=
'</div>';
871$parameters = array();
872$reshook = $hookmanager->executeHooks(
'printFieldPreListTitle', $parameters, $object, $action);
873if (empty($reshook)) {
874 $moreforfilter .= $hookmanager->resPrint;
876 $moreforfilter = $hookmanager->resPrint;
879print
'<div class="liste_titre liste_titre_bydiv centpercent">';
883print
'<div class="div-table-responsive">';
884print
'<table class="tagtable liste centpercent listwithfilterbefore">';
887print
'<tr class="liste_titre_filter">';
890 print
'<td class="liste_titre center">';
891 $searchpicto = $form->showFilterButtons(
'left');
896if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
897 print
'<td class="liste_titre"><input type="text" name="search_mvt_num" class="width50" value="'.dol_escape_htmltag($search_mvt_num).
'"></td>';
900if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
901 print
'<td class="liste_titre center">';
902 print $formaccounting->multi_select_journal($search_ledger_code,
'search_ledger_code', 0, 1, 1, 1,
'maxwidth75');
906if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
907 print
'<td class="liste_titre center">';
908 print
'<div class="nowrapfordate">';
909 print $form->selectDate($search_date_start,
'search_date_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
911 print
'<div class="nowrapfordate">';
912 print $form->selectDate($search_date_end,
'search_date_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
917if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
918 print
'<td class="liste_titre"><input type="text" size="7" class="flat" name="search_doc_ref" value="'.dol_escape_htmltag($search_doc_ref).
'"/></td>';
921if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
922 print
'<td class="liste_titre"><input type="text" size="7" class="flat" name="search_label_operation" value="'.dol_escape_htmltag($search_label_operation).
'"/></td>';
925if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
926 print
'<td class="liste_titre center">';
927 print
'<input type="text" size="3" class="flat" name="search_lettering_code" value="'.$search_lettering_code.
'"/>';
928 print
'<br><span class="nowrap"><input type="checkbox" name="search_not_reconciled" value="notreconciled"'.($search_not_reconciled ==
'notreconciled' ?
' checked' :
'').
'>'.$langs->trans(
"NotReconciled").
'</span>';
932if (!empty($arrayfields[
't.debit'][
'checked'])) {
933 print
'<td class="liste_titre right"><input type="text" class="flat" name="search_debit" size="4" value="'.dol_escape_htmltag($search_debit).
'"></td>';
936if (!empty($arrayfields[
't.credit'][
'checked'])) {
937 print
'<td class="liste_titre right"><input type="text" class="flat" name="search_credit" size="4" value="'.dol_escape_htmltag($search_credit).
'"></td>';
940if (!empty($arrayfields[
't.balance'][
'checked'])) {
944if (!empty($arrayfields[
't.date_export'][
'checked'])) {
945 print
'<td class="liste_titre center">';
946 print
'<div class="nowrapfordate">';
947 print $form->selectDate($search_date_export_start,
'search_date_export_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
949 print
'<div class="nowrapfordate">';
950 print $form->selectDate($search_date_export_end,
'search_date_export_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
955if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
956 print
'<td class="liste_titre center">';
957 print
'<div class="nowrapfordate">';
958 print $form->selectDate($search_date_validation_start,
'search_date_validation_start', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
960 print
'<div class="nowrapfordate">';
961 print $form->selectDate($search_date_validation_end,
'search_date_validation_end', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
966if (!empty($arrayfields[
't.date_lim_reglement'][
'checked'])) {
967 print
'<td class="liste_titre center">';
968 print
'<div class="nowrapfordate">';
969 print $form->selectDate($search_date_due_start,
'search_date_due_start_', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"From"));
971 print
'<div class="nowrapfordate">';
972 print $form->selectDate($search_date_due_end,
'search_date_due_end_', 0, 0, 1,
'', 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
"to"));
976if (!empty($arrayfields[
't.import_key'][
'checked'])) {
977 print
'<td class="liste_titre center">';
978 print
'<input class="flat searchstring maxwidth50" type="text" name="search_import_key" value="'.dol_escape_htmltag($search_import_key).
'">';
983$parameters = array(
'arrayfields' => $arrayfields);
984$reshook = $hookmanager->executeHooks(
'printFieldListOption', $parameters);
985print $hookmanager->resPrint;
989 print
'<td class="liste_titre center">';
990 $searchpicto = $form->showFilterButtons();
996print
'<tr class="liste_titre">';
998 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch ');
1000if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
1001 print_liste_field_titre($arrayfields[
't.piece_num'][
'label'], $_SERVER[
'PHP_SELF'],
"t.piece_num",
"", $param,
'', $sortfield, $sortorder,
'tdoverflowmax80imp ');
1003if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
1004 print_liste_field_titre($arrayfields[
't.code_journal'][
'label'], $_SERVER[
'PHP_SELF'],
"t.code_journal",
"", $param,
'', $sortfield, $sortorder,
'center ');
1006if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1007 print_liste_field_titre($arrayfields[
't.doc_date'][
'label'], $_SERVER[
'PHP_SELF'],
"t.doc_date",
"", $param,
'', $sortfield, $sortorder,
'center ');
1009if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
1010 print_liste_field_titre($arrayfields[
't.doc_ref'][
'label'], $_SERVER[
'PHP_SELF'],
"t.doc_ref",
"", $param,
"", $sortfield, $sortorder);
1012if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1013 print_liste_field_titre($arrayfields[
't.label_operation'][
'label'], $_SERVER[
'PHP_SELF'],
"t.label_operation",
"", $param,
"", $sortfield, $sortorder);
1015if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1016 print_liste_field_titre($arrayfields[
't.lettering_code'][
'label'], $_SERVER[
'PHP_SELF'],
"t.lettering_code",
"", $param,
'', $sortfield, $sortorder,
'center ');
1018if (!empty($arrayfields[
't.debit'][
'checked'])) {
1019 print_liste_field_titre($arrayfields[
't.debit'][
'label'], $_SERVER[
'PHP_SELF'],
"t.debit",
"", $param,
'', $sortfield, $sortorder,
'right ');
1021if (!empty($arrayfields[
't.credit'][
'checked'])) {
1022 print_liste_field_titre($arrayfields[
't.credit'][
'label'], $_SERVER[
'PHP_SELF'],
"t.credit",
"", $param,
'', $sortfield, $sortorder,
'right ');
1024if (!empty($arrayfields[
't.balance'][
'checked'])) {
1025 print_liste_field_titre($arrayfields[
't.balance'][
'label'],
"",
"",
"", $param,
'', $sortfield, $sortorder,
'right ');
1027if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1028 print_liste_field_titre($arrayfields[
't.date_export'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_export",
"", $param,
'', $sortfield, $sortorder,
'center ');
1030if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1031 print_liste_field_titre($arrayfields[
't.date_validated'][
'label'], $_SERVER[
'PHP_SELF'],
"t.date_validated",
"", $param,
'', $sortfield, $sortorder,
'center ');
1034if (!empty($arrayfields[
't.date_lim_reglement'][
'checked'])) {
1035 print_liste_field_titre($arrayfields[
't.date_lim_reglement'][
'label'], $_SERVER[
'PHP_SELF'],
't.date_lim_reglement',
'', $param,
'', $sortfield, $sortorder,
'center ');
1037if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1038 print_liste_field_titre($arrayfields[
't.import_key'][
'label'], $_SERVER[
"PHP_SELF"],
"t.import_key",
"", $param,
'', $sortfield, $sortorder,
'center ');
1041$parameters = array(
'arrayfields' => $arrayfields,
'param' => $param,
'sortfield' => $sortfield,
'sortorder' => $sortorder);
1042$reshook = $hookmanager->executeHooks(
'printFieldListTitle', $parameters);
1043print $hookmanager->resPrint;
1045 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch ');
1049$displayed_account_number =
null;
1051$objectstatic =
null;
1059$totalarray = array();
1060$totalarray[
'nbfield'] = 0;
1061$sous_total_debit = 0;
1062$sous_total_credit = 0;
1063$totalarray[
'val'] = array();
1064$totalarray[
'val'][
'totaldebit'] = 0;
1065$totalarray[
'val'][
'totalcredit'] = 0;
1066$totalarray[
'val'][
'totalbalance'] = 0;
1075if (!empty($arrayfields[
't.piece_num'][
'checked'])) { $colspan++; }
1076if (!empty($arrayfields[
't.code_journal'][
'checked'])) { $colspan++; }
1077if (!empty($arrayfields[
't.doc_date'][
'checked'])) { $colspan++; }
1078if (!empty($arrayfields[
't.doc_ref'][
'checked'])) { $colspan++; }
1079if (!empty($arrayfields[
't.label_operation'][
'checked'])) { $colspan++; }
1080if (!empty($arrayfields[
't.date_export'][
'checked'])) { $colspanend++; }
1081if (!empty($arrayfields[
't.date_validated'][
'checked'])) { $colspanend++; }
1082if (!empty($arrayfields[
't.lettering_code'][
'checked'])) { $colspanend++; }
1088while ($i < min($num, $limit)) {
1091 if ($type ==
'sub') {
1103 if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
1106 if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
1109 if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1112 if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
1115 if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1118 if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1122 if (!empty($arrayfields[
't.balance'][
'checked'])) {
1125 if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1128 if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1132 if (!empty($arrayfields[
't.date_lim_reglement'][
'checked'])) {
1135 if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1138 if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1147 if ($accountg != $displayed_account_number || !isset($displayed_account_number)) {
1149 if (isset($displayed_account_number)) {
1150 print
'<tr class="liste_total">';
1151 if ($type ==
'sub') {
1152 print
'<td class="right" colspan="' . $colspan .
'">' . $langs->trans(
"TotalForAccount") .
' ' .
length_accounta($displayed_account_number) .
':</td>';
1154 print
'<td class="right" colspan="' . $colspan .
'">' . $langs->trans(
"TotalForAccount") .
' ' .
length_accountg($displayed_account_number) .
':</td>';
1156 print
'<td class="nowrap right">'.price(
price2num($sous_total_debit,
'MT')).
'</td>';
1157 print
'<td class="nowrap right">'.price(
price2num($sous_total_credit,
'MT')).
'</td>';
1158 if ($colspanend > 0) {
1159 print
'<td colspan="'.$colspanend.
'"></td>';
1163 $balance = $sous_total_debit - $sous_total_credit;
1164 print
'<tr class="liste_total">';
1165 print
'<td class="right" colspan="'.$colspan.
'">'.$langs->trans(
"Balance").
':</td>';
1167 print
'<td class="nowraponall right">';
1168 print
price(
price2num($sous_total_debit - $sous_total_credit,
'MT'));
1173 print
'<td class="nowraponall right">';
1174 print
price(
price2num($sous_total_credit - $sous_total_debit,
'MT'));
1177 if ($colspanend > 0) {
1178 print
'<td colspan="'.$colspanend.
'"></td>';
1184 print
'<tr class="trforbreak">';
1185 print
'<td colspan="'.($totalarray[
'nbfield'] ? $totalarray[
'nbfield'] : count($arrayfields) + 1).
'" class="tdforbreak">';
1186 if ($type ==
'sub') {
1187 if ($line->subledger_account !=
"" && $line->subledger_account !=
'-1') {
1188 print empty($line->subledger_label) ?
'<span class="error">'.$langs->trans(
"Unknown").
'</span>' : $line->subledger_label;
1193 print
'<span class="error">' . $langs->trans(
"Unknown");
1194 if ($line->subledger_label) {
1195 print
' (' . $line->subledger_label .
')';
1196 $htmltext =
'EmptyStringForSubledgerAccountButSubledgerLabelDefined';
1198 $htmltext =
'EmptyStringForSubledgerAccountAndSubledgerLabel';
1200 print $form->textwithpicto(
'', $htmltext);
1204 if ($line->numero_compte !=
"" && $line->numero_compte !=
'-1') {
1207 print
'<span class="error">' . $langs->trans(
"Unknown") .
'</span>';
1213 $displayed_account_number = $accountg;
1215 $sous_total_debit = 0;
1216 $sous_total_credit = 0;
1219 print
'<tr class="oddeven">';
1222 print
'<td class="nowraponall center">';
1223 if (($massactionbutton || $massaction) && $contextpage !=
'poslist') {
1225 if (in_array($line->id, $arrayofselected)) {
1228 print
'<input id="cb' . $line->id .
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="' . $line->id .
'"' . ($selected ?
' checked="checked"' :
'') .
' />';
1232 $totalarray[
'nbfield']++;
1236 if (!empty($arrayfields[
't.piece_num'][
'checked'])) {
1239 $object->piece_num = $line->piece_num;
1240 print
$object->getNomUrl(1,
'', 0,
'', 1);
1243 $totalarray[
'nbfield']++;
1248 if (!empty($arrayfields[
't.code_journal'][
'checked'])) {
1250 $result = $accountingjournal->fetch(0, $line->code_journal);
1251 $journaltoshow = (($result > 0) ? $accountingjournal->getNomUrl(0, 0, 0,
'', 0) : $line->code_journal);
1252 print
'<td class="center tdoverflowmax80">'.$journaltoshow.
'</td>';
1254 $totalarray[
'nbfield']++;
1259 if (!empty($arrayfields[
't.doc_date'][
'checked'])) {
1260 print
'<td class="center">'.dol_print_date($line->doc_date,
'day').
'</td>';
1262 $totalarray[
'nbfield']++;
1268 if (!empty($arrayfields[
't.doc_ref'][
'checked'])) {
1269 if ($line->doc_type ==
'customer_invoice') {
1270 $langs->loadLangs(array(
'bills'));
1272 require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
1273 $objectstatic =
new Facture($db);
1274 $objectstatic->fetch($line->fk_doc);
1279 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.$objectstatic->id;
1280 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir);
1281 } elseif ($line->doc_type ==
'supplier_invoice') {
1282 $langs->loadLangs(array(
'bills'));
1284 require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.facture.class.php';
1286 $objectstatic->fetch($line->fk_doc);
1288 $modulepart =
'invoice_supplier';
1290 $filedir =
$conf->fournisseur->facture->dir_output.
'/'.
get_exdir($line->fk_doc, 2, 0, 0, $objectstatic, $modulepart).dol_sanitizeFileName($line->doc_ref);
1291 $subdir =
get_exdir($objectstatic->id, 2, 0, 0, $objectstatic, $modulepart).dol_sanitizeFileName($line->doc_ref);
1292 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $subdir, $filedir);
1293 } elseif ($line->doc_type ==
'expense_report') {
1294 $langs->loadLangs(array(
'trips'));
1296 require_once DOL_DOCUMENT_ROOT.
'/expensereport/class/expensereport.class.php';
1298 $objectstatic->fetch($line->fk_doc);
1303 $urlsource = $_SERVER[
'PHP_SELF'].
'?id='.$objectstatic->id;
1304 $documentlink = $formfile->getDocumentsLink($objectstatic->element, $filename, $filedir);
1305 } elseif ($line->doc_type ==
'bank') {
1306 require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
1308 $objectstatic->fetch($line->fk_doc);
1313 print
'<td class="tdoverflowmax250">';
1316 if ($line->doc_type ==
'customer_invoice' || $line->doc_type ==
'supplier_invoice' || $line->doc_type ==
'expense_report') {
1317 print $objectstatic->getNomUrl(1,
'', 0, 0,
'', 0, -1, 1);
1318 print $documentlink;
1319 } elseif ($line->doc_type ==
'bank') {
1320 print $objectstatic->getNomUrl(1);
1321 $bank_ref = strstr($line->doc_ref,
'-');
1322 print
" " . $bank_ref;
1324 print $line->doc_ref;
1329 $totalarray[
'nbfield']++;
1334 if (!empty($arrayfields[
't.label_operation'][
'checked'])) {
1336 $doc_ref = preg_replace(
'/\(.*\)/',
'', $line->doc_ref);
1338 print
'<td class="small tdoverflowmax350 classfortooltip" title="'.dol_escape_htmltag($line->label_operation).
'">'.
dol_escape_htmltag($line->label_operation).
'</td>';
1340 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>';
1343 $totalarray[
'nbfield']++;
1348 if (!empty($arrayfields[
't.lettering_code'][
'checked'])) {
1349 print
'<td class="center">'.dol_escape_htmltag($line->lettering_code).
'</td>';
1351 $totalarray[
'nbfield']++;
1356 if (!empty($arrayfields[
't.debit'][
'checked'])) {
1357 print
'<td class="right nowraponall amount">'.($line->debit != 0 ?
price($line->debit) :
'').
'</td>';
1359 $totalarray[
'nbfield']++;
1362 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'totaldebit';
1364 $totalarray[
'val'][
'totaldebit'] += (float) $line->debit;
1368 if (!empty($arrayfields[
't.credit'][
'checked'])) {
1369 print
'<td class="right nowraponall amount">'.($line->credit != 0 ?
price($line->credit) :
'').
'</td>';
1371 $totalarray[
'nbfield']++;
1374 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'totalcredit';
1376 $totalarray[
'val'][
'totalcredit'] += (float) $line->credit;
1380 if (!empty($arrayfields[
't.balance'][
'checked'])) {
1381 print
'<td class="right nowraponall amount">'.price(
price2num($sous_total_debit + $line->debit - $sous_total_credit - $line->credit,
'MT')).
'</td>';
1383 $totalarray[
'nbfield']++;
1386 $totalarray[
'pos'][$totalarray[
'nbfield']] =
'totalbalance';
1388 $totalarray[
'val'][
'totalbalance'] += $line->debit - $line->credit;
1392 if (!empty($arrayfields[
't.date_export'][
'checked'])) {
1393 print
'<td class="center">'.dol_print_date($line->date_export,
'dayhour').
'</td>';
1395 $totalarray[
'nbfield']++;
1400 if (!empty($arrayfields[
't.date_validated'][
'checked'])) {
1401 print
'<td class="center">'.dol_print_date($line->date_validation,
'dayhour').
'</td>';
1403 $totalarray[
'nbfield']++;
1408 if (!empty($arrayfields[
't.date_lim_reglement'][
'checked'])) {
1409 print
'<td class="center">'.dol_print_date($line->date_lim_reglement,
'day').
'</td>';
1411 $totalarray[
'nbfield']++;
1415 if (!empty($arrayfields[
't.import_key'][
'checked'])) {
1416 print
'<td class="tdoverflowmax125" title="'.dol_escape_htmltag($line->import_key).
'">'.
dol_escape_htmltag($line->import_key).
"</td>\n";
1418 $totalarray[
'nbfield']++;
1423 $parameters = array(
'arrayfields' => $arrayfields,
'obj' => $line);
1424 $reshook = $hookmanager->executeHooks(
'printFieldListValue', $parameters);
1425 print $hookmanager->resPrint;
1429 print
'<td class="nowraponall center">';
1430 if (($massactionbutton || $massaction) && $contextpage !=
'poslist') {
1432 if (in_array($line->id, $arrayofselected)) {
1435 print
'<input id="cb' . $line->id .
'" class="flat checkforselect" type="checkbox" name="toselect[]" value="' . $line->id .
'"' . ($selected ?
' checked="checked"' :
'') .
' />';
1439 $totalarray[
'nbfield']++;
1444 $sous_total_debit += $line->debit;
1445 $sous_total_credit += $line->credit;
1452if ($num > 0 && $colspan > 0) {
1453 print
'<tr class="liste_total">';
1454 print
'<td class="right" colspan="'.$colspan.
'">'.$langs->trans(
"TotalForAccount").
' '.$accountg.
':</td>';
1455 print
'<td class="nowrap right">'.price(
price2num($sous_total_debit,
'MT')).
'</td>';
1456 print
'<td class="nowrap right">'.price(
price2num($sous_total_credit,
'MT')).
'</td>';
1457 if ($colspanend > 0) {
1458 print
'<td colspan="'.$colspanend.
'"></td>';
1462 $balance = $sous_total_debit - $sous_total_credit;
1463 print
'<tr class="liste_total">';
1464 print
'<td class="right" colspan="'.$colspan.
'">'.$langs->trans(
"Balance").
':</td>';
1466 print
'<td class="nowraponall right">';
1467 print
price(
price2num($sous_total_debit - $sous_total_credit,
'MT'));
1472 print
'<td class="nowraponall right">';
1473 print
price(
price2num($sous_total_credit - $sous_total_debit,
'MT'));
1476 if ($colspanend > 0) {
1477 print
'<td colspan="'.$colspanend.
'"></td>';
1484if (!empty($totalarray[
'val'][
'totaldebit'])) {
1485 $totalarray[
'val'][
'totaldebit'] = (float)
price2num($totalarray[
'val'][
'totaldebit'],
'MT');
1487if (!empty($totalarray[
'val'][
'totalcredit'])) {
1488 $totalarray[
'val'][
'totalcredit'] = (float)
price2num($totalarray[
'val'][
'totalcredit'],
'MT');
1490if (!empty($totalarray[
'val'][
'totalbalance'])) {
1491 $totalarray[
'val'][
'totalbalance'] = (float)
price2num($totalarray[
'val'][
'totaldebit'] - $totalarray[
'val'][
'totalcredit'],
'MT');
1495include DOL_DOCUMENT_ROOT.
'/core/tpl/list_print_total.tpl.php';
1500 foreach ($arrayfields as $key => $val) {
1501 if (!empty($val[
'checked'])) {
1505 print
'<tr><td colspan="'.$colspan.
'"><span class="opacitymedium">'.$langs->trans(
"NoRecordFound").
'</span></td></tr>';
1508$parameters = array(
'arrayfields' => $arrayfields);
1509$reshook = $hookmanager->executeHooks(
'printFieldListFooter', $parameters, $object, $action);
1510print $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.
llxFooter($comment='', $zone='private', $disabledoutputofmessages=0)
Empty footer.
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader($head='', $title='', $help_url='', $target='', $disablejs=0, $disablehead=0, $arrayofjs='', $arrayofcss='', $morequerystring='', $morecssonbody='', $replacemainareaby='', $disablenofollow=0, $disablenoindex=0)
Empty header.
Class to manage bank transaction lines.
Class to manage categories of an accounting account.
Class to manage accounting journals.
Class to manage Ledger (General Ledger and Subledger)
Class to manage Trips and Expenses.
Class to manage suppliers invoices.
Class to manage invoices.
dol_get_last_day($year, $month=12, $gm=false)
Return GMT time for last day of a month or year.
dol_mktime($hour, $minute, $second, $month, $day, $year, $gm='auto', $check=1)
Return a timestamp date built from detailed information (by default a local PHP server timestamp) Rep...
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0, $attop=0)
Set event messages in dol_events session object.
print_barre_liste($title, $page, $file, $options='', $sortfield='', $sortorder='', $morehtmlcenter='', $num=-1, $totalnboflines='', $picto='generic', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limit=-1, $selectlimitsuffix=0, $hidenavigation=0, $pagenavastextinput=0, $morehtmlrightbeforearrow='')
Print a title with navigation controls for pagination.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2, $allowothertags=array())
Show picto whatever it's its name (generic function)
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
price2num($amount, $rounding='', $option=0)
Function that return a number with universal decimal format (decimal separator is '.
dolGetButtonTitle($label, $helpText='', $iconClass='fa fa-file', $url='', $id='', $status=1, $params=array())
Function dolGetButtonTitle : this kind of buttons are used in title in list.
price($amount, $form=0, $outlangs='', $trunc=1, $rounding=-1, $forcerounding=-1, $currency_code='')
Function to format a value into an amount for visual output Function used into PDF and HTML pages.
dol_now($mode='auto')
Return date for now.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
dol_print_date($time, $format='', $tzoutput='auto', $outputlangs=null, $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
print_liste_field_titre($name, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $tooltip="", $forcenowrapcolumntitle=0)
Show title line of an array.
dolGetButtonTitleSeparator($moreClass="")
Add space between dolGetButtonTitle.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
dol_sanitizeFileName($str, $newstr='_', $unaccent=1, $includequotes=0)
Clean a string to use it as a file name.
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
info_admin($text, $infoonimgalt=0, $nodiv=0, $admin='1', $morecss='hideonsmartphone', $textfordropdown='', $picto='')
Show information in HTML for admin users or standard users.
get_exdir($num, $level, $alpha, $withoutslash, $object, $modulepart='')
Return a path to have a the directory according to object where files are stored.
dol_getdate($timestamp, $fast=false, $forcetimezone='')
Return an array with locale date info.
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $noescapetags='', $escapeonlyhtmltags=0, $cleanalsojavascript=0)
Returns text escaped for inclusion in HTML alt or title or value tags, or into values of HTML input f...
$formconfirm
if ($action == 'delbookkeepingyear') {
global $conf
The following vars must be defined: $type2label $form $conf, $lang, The following vars may also be de...
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.