36require
'../../main.inc.php';
37require_once DOL_DOCUMENT_ROOT.
'/core/lib/report.lib.php';
38require_once DOL_DOCUMENT_ROOT.
'/core/lib/date.lib.php';
39require_once DOL_DOCUMENT_ROOT.
'/core/lib/bank.lib.php';
40require_once DOL_DOCUMENT_ROOT.
'/core/lib/accounting.lib.php';
41require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountingaccount.class.php';
42require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/accountingjournal.class.php';
43require_once DOL_DOCUMENT_ROOT.
'/societe/class/societe.class.php';
44require_once DOL_DOCUMENT_ROOT.
'/user/class/user.class.php';
45require_once DOL_DOCUMENT_ROOT.
'/adherents/class/adherent.class.php';
46require_once DOL_DOCUMENT_ROOT.
'/compta/sociales/class/chargesociales.class.php';
47require_once DOL_DOCUMENT_ROOT.
'/compta/paiement/class/paiement.class.php';
48require_once DOL_DOCUMENT_ROOT.
'/don/class/don.class.php';
49require_once DOL_DOCUMENT_ROOT.
'/don/class/paymentdonation.class.php';
50require_once DOL_DOCUMENT_ROOT.
'/compta/tva/class/tva.class.php';
51require_once DOL_DOCUMENT_ROOT.
'/salaries/class/paymentsalary.class.php';
52require_once DOL_DOCUMENT_ROOT.
'/compta/facture/class/facture.class.php';
53require_once DOL_DOCUMENT_ROOT.
'/fourn/class/paiementfourn.class.php';
54require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.facture.class.php';
55require_once DOL_DOCUMENT_ROOT.
'/fourn/class/fournisseur.class.php';
56require_once DOL_DOCUMENT_ROOT.
'/accountancy/class/bookkeeping.class.php';
57require_once DOL_DOCUMENT_ROOT.
'/societe/class/client.class.php';
58require_once DOL_DOCUMENT_ROOT.
'/expensereport/class/expensereport.class.php';
59require_once DOL_DOCUMENT_ROOT.
'/expensereport/class/paymentexpensereport.class.php';
60require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/paymentvarious.class.php';
61require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
62require_once DOL_DOCUMENT_ROOT.
'/loan/class/loan.class.php';
63require_once DOL_DOCUMENT_ROOT.
'/loan/class/paymentloan.class.php';
64require_once DOL_DOCUMENT_ROOT.
'/adherents/class/subscription.class.php';
75$langs->loadLangs(array(
"companies",
"other",
"compta",
"banks",
"bills",
"donations",
"loan",
"accountancy",
"trips",
"salaries",
"hrm",
"members"));
80$date_startmonth =
GETPOSTINT(
'date_startmonth');
86$in_bookkeeping =
GETPOST(
'in_bookkeeping',
'aZ09');
89if ($only_rappro == 0) {
96$action =
GETPOST(
'action',
'aZ09');
98if ($in_bookkeeping ==
'') {
99 $in_bookkeeping =
'notyet';
104if (!isModEnabled(
'accounting')) {
107if ($user->socid > 0) {
110if (!$user->hasRight(
'accounting',
'bind',
'write')) {
121$date_start =
dol_mktime(0, 0, 0, $date_startmonth, $date_startday, $date_startyear);
122$date_end =
dol_mktime(23, 59, 59, $date_endmonth, $date_endday, $date_endyear);
125$pastmonthyear =
null;
127if (empty($date_startmonth)) {
130 $date_start = $dates[
'date_start'];
131 $pastmonthyear = $dates[
'pastmonthyear'];
132 $pastmonth = $dates[
'pastmonth'];
134if (empty($date_endmonth)) {
137 $date_end = $dates[
'date_end'];
138 $pastmonthyear = $dates[
'pastmonthyear'];
139 $pastmonth = $dates[
'pastmonth'];
142if (!GETPOSTISSET(
'date_startmonth') && (empty($date_start) || empty($date_end))) {
144 $date_end =
dol_get_last_day((
int) $pastmonthyear, (
int) $pastmonth,
false);
149$sql =
"SELECT b.rowid, b.dateo as do, b.datev as dv, b.amount, b.amount_main_currency, b.label, b.rappro, b.num_releve, b.num_chq, b.fk_type, b.fk_account,";
150$sql .=
" ba.courant, ba.ref as baref, ba.account_number, ba.fk_accountancy_journal,";
151$sql .=
" soc.rowid as socid, soc.nom as name, soc.email as email, bu1.type as typeop_company,";
153 $sql .=
" spe.accountancy_code_customer_general,";
154 $sql .=
" spe.accountancy_code_customer as code_compta_client,";
155 $sql .=
" spe.accountancy_code_supplier_general,";
156 $sql .=
" spe.accountancy_code_supplier as code_compta_fournisseur,";
158 $sql .=
" soc.accountancy_code_customer_general,";
159 $sql .=
" soc.code_compta as code_compta_client,";
160 $sql .=
" soc.accountancy_code_supplier_general,";
161 $sql .=
" soc.code_compta_fournisseur,";
163$sql .=
" u.accountancy_code_user_general, u.accountancy_code, u.rowid as userid, u.lastname as lastname, u.firstname as firstname, u.email as useremail, u.statut as userstatus,";
164$sql .=
" bu2.type as typeop_user,";
165$sql .=
" bu3.type as typeop_payment, bu4.type as typeop_payment_supplier";
166$sql .=
" FROM ".$db->prefix().
"bank as b";
167$sql .=
" JOIN ".$db->prefix().
"bank_account as ba on b.fk_account = ba.rowid";
168$sql .=
" LEFT JOIN ".$db->prefix().
"bank_url as bu1 ON bu1.fk_bank = b.rowid AND bu1.type='company'";
169$sql .=
" LEFT JOIN ".$db->prefix().
"bank_url as bu2 ON bu2.fk_bank = b.rowid AND bu2.type='user'";
170$sql .=
" LEFT JOIN ".$db->prefix().
"bank_url as bu3 ON bu3.fk_bank = b.rowid AND bu3.type='payment'";
171$sql .=
" LEFT JOIN ".$db->prefix().
"bank_url as bu4 ON bu4.fk_bank = b.rowid AND bu4.type='payment_supplier'";
172$sql .=
" LEFT JOIN ".$db->prefix().
"societe as soc on bu1.url_id=soc.rowid";
174 $sql .=
" LEFT JOIN " . $db->prefix() .
"societe_perentity as spe ON spe.fk_soc = soc.rowid AND spe.entity = " . ((int)
$conf->entity);
176$sql .=
" LEFT JOIN ".$db->prefix().
"user as u on bu2.url_id=u.rowid";
177$sql .=
" WHERE ba.fk_accountancy_journal=".((int) $id_journal);
178$sql .=
" AND b.amount <> 0 AND ba.entity IN (".getEntity(
'bank_account', 0).
")";
179if ($date_start && $date_end) {
180 $sql .=
" AND b.dateo >= '".$db->idate($date_start).
"' AND b.dateo <= '".$db->idate($date_end).
"'";
184 $sql .=
" AND b.dateo >= '".$db->idate(
getDolGlobalInt(
'ACCOUNTING_DATE_START_BINDING')).
"'";
187if ($in_bookkeeping ==
'already') {
188 $sql .=
" AND (b.rowid IN (SELECT fk_doc FROM ".$db->prefix().
"accounting_bookkeeping as ab WHERE ab.doc_type='bank') )";
190if ($in_bookkeeping ==
'notyet') {
191 $sql .=
" AND (b.rowid NOT IN (SELECT fk_doc FROM ".$db->prefix().
"accounting_bookkeeping as ab WHERE ab.doc_type='bank') )";
193if ($only_rappro == 2) {
194 $sql .=
" AND (b.rappro = '1')";
196$sql .=
" ORDER BY b.datev";
202$societestatic =
new Societe($db);
203$userstatic =
new User($db);
204$bankaccountstatic =
new Account($db);
207$paymentvatstatic =
new Tva($db);
219$account_transfer =
'NotDefined';
223$accountingjournalstatic->fetch($id_journal);
224$journal = $accountingjournalstatic->code;
225$journal_label = $accountingjournalstatic->label;
227$tabcompany = array();
233$tabmoreinfo = array();
236@phan-var-force array<array{id:mixed,name:mixed,code_compta_client:string,email:string}> $tabcompany
237@phan-var-force array<array{id:int,name:string,lastname:string,firstname:string,email:string,accountancy_code:string,status:int> $tabuser
238@phan-var-force array<int,array{date:string,type_payment:string,ref:string,fk_bank:int,ban_account_ref:string,fk_bank_account:int,lib:string,type:string}> $tabpay
239@phan-var-force array<array{lib:string,date?:int|string,type_payment?:string,ref?:string,fk_bank?:int,ban_account_ref?:string,fk_bank_account?:int,type?:string,bank_account_ref?:string,paymentid?:int,paymentsupplierid?:int,soclib?:string,paymentscid?:int,paymentdonationid?:int,paymentsubscriptionid?:int,paymentvatid?:int,paymentsalid?:int,paymentexpensereport?:int,paymentvariousid?:int,account_various?:string,paymentloanid?:int}> $tabtp
242$account_customer =
'NotDefined';
243$account_supplier =
'NotDefined';
244$account_employee =
'NotDefined';
247dol_syslog(
"accountancy/journal/bankjournal.php", LOG_DEBUG);
248$result = $db->query($sql);
250 $num = $db->num_rows($result);
256 $account_employee =
getDolGlobalString(
'SALARIES_ACCOUNTING_ACCOUNT_PAYMENT',
'NotDefined');
257 $account_expensereport =
getDolGlobalString(
'ACCOUNTING_ACCOUNT_EXPENSEREPORT',
'NotDefined');
259 $account_pay_donation =
getDolGlobalString(
'DONATION_ACCOUNTINGACCOUNT',
'NotDefined');
260 $account_pay_subscription =
getDolGlobalString(
'ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT',
'NotDefined');
261 $account_transfer =
getDolGlobalString(
'ACCOUNTING_ACCOUNT_TRANSFER_CASH',
'NotDefined');
270 $obj = $db->fetch_object($result);
272 $lineisapurchase = -1;
275 if ($obj->label ==
'(SupplierInvoicePayment)' || $obj->label ==
'(SupplierInvoicePaymentBack)') {
276 $lineisapurchase = 1;
278 if ($obj->label ==
'(CustomerInvoicePayment)' || $obj->label ==
'(CustomerInvoicePaymentBack)') {
282 if ($lineisapurchase < 0) {
283 if ($obj->typeop_payment_supplier ==
'payment_supplier') {
284 $lineisapurchase = 1;
287 if ($lineisasale < 0) {
288 if ($obj->typeop_payment ==
'payment') {
296 $compta_bank = $obj->account_number;
299 $compta_soc =
'NotDefined';
300 $accountancy_code_general =
'NotDefined';
301 if ($lineisapurchase > 0) {
302 $accountancy_code_general = (!empty($obj->accountancy_code_supplier_general) && $obj->accountancy_code_supplier_general !=
'-1') ? $obj->accountancy_code_supplier_general : $account_supplier;
303 $compta_soc = (($obj->code_compta_fournisseur !=
"") ? $obj->code_compta_fournisseur : $account_supplier);
305 if ($lineisasale > 0) {
306 $accountancy_code_general = (!empty($obj->accountancy_code_customer_general) && $obj->accountancy_code_customer_general !=
'-1') ? $obj->accountancy_code_customer_general : $account_customer;
307 $compta_soc = (!empty($obj->code_compta_client) ? $obj->code_compta_client : $account_customer);
310 $tabcompany[$obj->rowid] = array(
312 'name' => $obj->name,
313 'code_compta' => $compta_soc,
314 'accountancy_code_general' => $accountancy_code_general,
315 'email' => $obj->email
321 $accountancy_code_user_general = (!empty($obj->accountancy_code_user_general)) ? $obj->accountancy_code_user_general : $account_employee;
322 $compta_user = (!empty($obj->accountancy_code) ? $obj->accountancy_code :
'');
324 $tabuser[$obj->rowid] = array(
325 'id' => $obj->userid,
327 'lastname' => $obj->lastname,
328 'firstname' => $obj->firstname,
329 'email' => $obj->useremail,
330 'accountancy_code_general' => $accountancy_code_user_general,
331 'accountancy_code' => $compta_user,
332 'status' => $obj->userstatus
336 $tabpay[$obj->rowid][
"date"] = $db->jdate($obj->do);
337 $tabpay[$obj->rowid][
"type_payment"] = $obj->fk_type;
338 $tabpay[$obj->rowid][
"ref"] = $obj->label;
339 $tabpay[$obj->rowid][
"fk_bank"] = $obj->rowid;
340 $tabpay[$obj->rowid][
"bank_account_ref"] = $obj->baref;
341 $tabpay[$obj->rowid][
"fk_bank_account"] = $obj->fk_account;
343 if (preg_match(
'/^\((.*)\)$/i', $obj->label, $reg)) {
344 $tabpay[$obj->rowid][
"lib"] = $langs->trans($reg[1]);
346 $tabpay[$obj->rowid][
"lib"] =
dol_trunc($obj->label, 60);
350 $links =
$object->get_url($obj->rowid);
355 $tabpay[$obj->rowid][
'type'] =
'unknown';
356 $tabtype[$obj->rowid] =
'unknown';
357 $tabmoreinfo[$obj->rowid] = array();
359 $amounttouse = $obj->amount;
360 if (!empty($obj->amount_main_currency)) {
362 $amounttouse = $obj->amount_main_currency;
366 if (is_array($links) && count($links) > 0) {
371 $is_expensereport =
false;
372 foreach ($links as $v) {
373 if ($v[
'type'] ==
'sc') {
377 if ($v[
'type'] ==
'payment_salary') {
381 if ($v[
'type'] ==
'payment_expensereport') {
382 $is_expensereport =
true;
388 foreach ($links as $key => $val) {
389 if ($links[$key][
'type'] ==
'user' && !$is_sc && !$is_salary && !$is_expensereport) {
394 if (in_array($links[$key][
'type'], array(
'sc',
'payment_sc',
'payment',
'payment_supplier',
'payment_vat',
'payment_expensereport',
'banktransfert',
'payment_donation',
'member',
'payment_loan',
'payment_salary',
'payment_various'))) {
398 $tabpay[$obj->rowid][
'type'] = $links[$key][
'type'];
399 $tabtype[$obj->rowid] = $links[$key][
'type'];
410 if ($links[$key][
'type'] ==
'withdraw') {
411 $tabmoreinfo[$obj->rowid][
'withdraw'] = 1;
414 if ($links[$key][
'type'] ==
'payment') {
415 $paymentstatic->id = $links[$key][
'url_id'];
416 $paymentstatic->ref = (string) $links[$key][
'url_id'];
417 $tabpay[$obj->rowid][
"lib"] .=
' '.$paymentstatic->getNomUrl(2,
'',
'');
418 $tabpay[$obj->rowid][
"paymentid"] = $paymentstatic->id;
419 } elseif ($links[$key][
'type'] ==
'payment_supplier') {
420 $paymentsupplierstatic->id = $links[$key][
'url_id'];
421 $paymentsupplierstatic->ref = (string) $links[$key][
'url_id'];
422 $tabpay[$obj->rowid][
"lib"] .=
' '.$paymentsupplierstatic->getNomUrl(2);
423 $tabpay[$obj->rowid][
"paymentsupplierid"] = $paymentsupplierstatic->id;
424 } elseif ($links[$key][
'type'] ==
'company') {
425 $societestatic->id = $links[$key][
'url_id'];
426 $societestatic->name = $links[$key][
'label'];
427 $societestatic->email = $tabcompany[$obj->rowid][
'email'];
428 $tabpay[$obj->rowid][
"soclib"] = $societestatic->getNomUrl(1,
'', 30);
430 if (empty($tabtp[$obj->rowid][$compta_soc])) {
431 $tabtp[$obj->rowid][$compta_soc] = $amounttouse;
433 $tabtp[$obj->rowid][$compta_soc] += $amounttouse;
436 } elseif ($links[$key][
'type'] ==
'user') {
437 $userstatic->id = $links[$key][
'url_id'];
438 $userstatic->name = $links[$key][
'label'];
439 $userstatic->email = $tabuser[$obj->rowid][
'email'];
440 $userstatic->firstname = $tabuser[$obj->rowid][
'firstname'];
441 $userstatic->lastname = $tabuser[$obj->rowid][
'lastname'];
442 $userstatic->status = $tabuser[$obj->rowid][
'status'];
443 $userstatic->accountancy_code_user_general = $tabuser[$obj->rowid][
'accountancy_code_general'];
444 $userstatic->accountancy_code = $tabuser[$obj->rowid][
'accountancy_code'];
449 if ($userstatic->id > 0) {
451 $tabpay[$obj->rowid][
"soclib"] .=
' '.$userstatic->getNomUrl(-1,
'accountancy', 0);
453 $tabpay[$obj->rowid][
"soclib"] = $userstatic->getNomUrl(-1,
'accountancy', 0);
456 $tabpay[$obj->rowid][
"soclib"] =
'???';
463 $tabtp[$obj->rowid][$compta_user] += $amounttouse;
466 } elseif ($links[$key][
'type'] ==
'sc') {
467 $chargestatic->id = $links[$key][
'url_id'];
468 $chargestatic->ref = (string) $links[$key][
'url_id'];
470 $tabpay[$obj->rowid][
"lib"] .=
' '.$chargestatic->getNomUrl(2);
472 if (preg_match(
'/^\((.*)\)$/i', $links[$key][
'label'], $reg)) {
473 if ($reg[1] ==
'socialcontribution') {
474 $reg[1] =
'SocialContribution';
476 $chargestatic->label = $langs->trans($reg[1]);
478 $chargestatic->label = $links[$key][
'label'];
480 $chargestatic->ref = $chargestatic->label;
499 $resultmid = $tmpcharge->fetch($chargestatic->id);
501 $chargestatic->type_label = $tmpcharge->type_label;
502 $chargestatic->type_code = $tmpcharge->type_code;
503 $chargestatic->type_accountancy_code = $tmpcharge->type_accountancy_code;
505 $tabtp[$obj->rowid][$tmpcharge->type_accountancy_code] = isset($tabtp[$obj->rowid][$tmpcharge->type_accountancy_code]) ? $tabtp[$obj->rowid][$tmpcharge->type_accountancy_code] + $amounttouse : $amounttouse;
508 $tabpay[$obj->rowid][
"soclib"] = $chargestatic->getNomUrl(1,
'30');
509 $tabpay[$obj->rowid][
"paymentscid"] = $chargestatic->id;
510 } elseif ($links[$key][
'type'] ==
'payment_donation') {
511 $paymentdonstatic->id = $links[$key][
'url_id'];
512 $paymentdonstatic->ref = (string) $links[$key][
'url_id'];
513 $paymentdonstatic->fk_donation = $links[$key][
'url_id'];
514 $tabpay[$obj->rowid][
"lib"] .=
' '.$paymentdonstatic->getNomUrl(2);
515 $tabpay[$obj->rowid][
"paymentdonationid"] = $paymentdonstatic->id;
516 $tabtp[$obj->rowid][$account_pay_donation] = isset($tabtp[$obj->rowid][$account_pay_donation]) ? $tabtp[$obj->rowid][$account_pay_donation] + $amounttouse : $amounttouse;
517 } elseif ($links[$key][
'type'] ==
'member') {
518 $paymentsubscriptionstatic->id = $links[$key][
'url_id'];
519 $paymentsubscriptionstatic->ref = (string) $links[$key][
'url_id'];
520 $paymentsubscriptionstatic->label = $links[$key][
'label'];
521 $tabpay[$obj->rowid][
"lib"] .=
' '.$paymentsubscriptionstatic->getNomUrl(2);
522 $tabpay[$obj->rowid][
"paymentsubscriptionid"] = $paymentsubscriptionstatic->id;
523 $paymentsubscriptionstatic->fetch($paymentsubscriptionstatic->id);
524 $tabtp[$obj->rowid][$account_pay_subscription] = isset($tabtp[$obj->rowid][$account_pay_subscription]) ? $tabtp[$obj->rowid][$account_pay_subscription] + $amounttouse : $amounttouse;
525 } elseif ($links[$key][
'type'] ==
'payment_vat') {
526 $paymentvatstatic->id = $links[$key][
'url_id'];
527 $paymentvatstatic->ref = (string) $links[$key][
'url_id'];
528 $paymentvatstatic->label = $links[$key][
'label'];
529 $tabpay[$obj->rowid][
"lib"] .=
' '.$paymentvatstatic->getNomUrl(2);
530 $tabpay[$obj->rowid][
"paymentvatid"] = $paymentvatstatic->id;
531 $tabtp[$obj->rowid][$account_pay_vat] = isset($tabtp[$obj->rowid][$account_pay_vat]) ? $tabtp[$obj->rowid][$account_pay_vat] + $amounttouse : $amounttouse;
532 } elseif ($links[$key][
'type'] ==
'payment_salary') {
533 $paymentsalstatic->id = $links[$key][
'url_id'];
534 $paymentsalstatic->ref = (string) $links[$key][
'url_id'];
535 $paymentsalstatic->label = $links[$key][
'label'];
536 $tabpay[$obj->rowid][
"lib"] .=
' '.$paymentsalstatic->getNomUrl(2);
537 $tabpay[$obj->rowid][
"paymentsalid"] = $paymentsalstatic->id;
541 if (
getDolGlobalString(
'ACCOUNTANCY_AUTOFIX_MISSING_LINK_TO_USER_ON_SALARY_BANK_PAYMENT')) {
542 $tmpsalary =
new Salary($db);
543 $tmpsalary->fetch($paymentsalstatic->id);
544 $tmpsalary->fetch_user($tmpsalary->fk_user);
546 $userstatic->id = $tmpsalary->user->id;
547 $userstatic->name = $tmpsalary->user->name;
548 $userstatic->email = $tmpsalary->user->email;
549 $userstatic->firstname = $tmpsalary->user->firstname;
550 $userstatic->lastname = $tmpsalary->user->lastname;
551 $userstatic->status = $tmpsalary->user->status;
552 $userstatic->accountancy_code = $tmpsalary->user->accountancy_code;
554 if ($userstatic->id > 0) {
555 $tabpay[$obj->rowid][
"soclib"] = $userstatic->getNomUrl(1,
'accountancy', 0);
557 $tabpay[$obj->rowid][
"soclib"] =
'???';
560 if (empty($obj->typeop_user)) {
561 $accountancy_code_user_general = (!empty($obj->accountancy_code_user_general)) ? $obj->accountancy_code_user_general : $account_employee;
562 $compta_user = $userstatic->accountancy_code;
564 $tabtp[$obj->rowid][$compta_user] += $amounttouse;
565 $tabuser[$obj->rowid] = array(
566 'id' => $userstatic->id,
568 'lastname' => $userstatic->lastname,
569 'firstname' => $userstatic->firstname,
570 'email' => $userstatic->email,
571 'accountancy_code_general' => $accountancy_code_user_general,
572 'accountancy_code' => $compta_user,
573 'status' => $userstatic->status
578 } elseif ($links[$key][
'type'] ==
'payment_expensereport') {
579 $paymentexpensereportstatic->id = $links[$key][
'url_id'];
580 $tabpay[$obj->rowid][
"lib"] .= $paymentexpensereportstatic->getNomUrl(2);
581 $tabpay[$obj->rowid][
"paymentexpensereport"] = $paymentexpensereportstatic->id;
582 } elseif ($links[$key][
'type'] ==
'payment_various') {
583 $paymentvariousstatic->id = $links[$key][
'url_id'];
584 $paymentvariousstatic->ref = (string) $links[$key][
'url_id'];
585 $paymentvariousstatic->label = $links[$key][
'label'];
586 $tabpay[$obj->rowid][
"lib"] .=
' '.$paymentvariousstatic->getNomUrl(2);
587 $tabpay[$obj->rowid][
"paymentvariousid"] = $paymentvariousstatic->id;
588 $paymentvariousstatic->fetch($paymentvariousstatic->id);
589 $account_various = (!empty($paymentvariousstatic->accountancy_code) ? $paymentvariousstatic->accountancy_code :
'NotDefined');
590 $account_subledger = (!empty($paymentvariousstatic->subledger_account) ? $paymentvariousstatic->subledger_account :
'');
591 $tabpay[$obj->rowid][
"account_various"] = $account_various;
592 $tabtp[$obj->rowid][$account_subledger] = isset($tabtp[$obj->rowid][$account_subledger]) ? $tabtp[$obj->rowid][$account_subledger] + $amounttouse : $amounttouse;
593 } elseif ($links[$key][
'type'] ==
'payment_loan') {
594 $paymentloanstatic->id = $links[$key][
'url_id'];
595 $paymentloanstatic->ref = (string) $links[$key][
'url_id'];
596 $paymentloanstatic->fk_loan = $links[$key][
'url_id'];
597 $tabpay[$obj->rowid][
"lib"] .=
' '.$paymentloanstatic->getNomUrl(2);
598 $tabpay[$obj->rowid][
"paymentloanid"] = $paymentloanstatic->id;
600 $sqlmid =
'SELECT pl.amount_capital, pl.amount_insurance, pl.amount_interest, l.accountancy_account_capital, l.accountancy_account_insurance, l.accountancy_account_interest';
601 $sqlmid .=
' FROM '.MAIN_DB_PREFIX.
'payment_loan as pl, '.MAIN_DB_PREFIX.
'loan as l';
602 $sqlmid .=
' WHERE l.rowid = pl.fk_loan AND pl.fk_bank = '.((int) $obj->rowid);
604 dol_syslog(
"accountancy/journal/bankjournal.php:: sqlmid=".$sqlmid, LOG_DEBUG);
605 $resultmid = $db->query($sqlmid);
607 $objmid = $db->fetch_object($resultmid);
608 $tabtp[$obj->rowid][$objmid->accountancy_account_capital] = isset($objmid->amount_capital) ? ($tabtp[$obj->rowid][$objmid->accountancy_account_capital] ?? 0) - $objmid->amount_capital : 0;
609 $tabtp[$obj->rowid][$objmid->accountancy_account_insurance] = isset($objmid->amount_insurance) ? ($tabtp[$obj->rowid][$objmid->accountancy_account_insurance] ?? 0) - $objmid->amount_insurance : 0;
610 $tabtp[$obj->rowid][$objmid->accountancy_account_interest] = isset($objmid->amount_interest) ? ($tabtp[$obj->rowid][$objmid->accountancy_account_interest] ?? 0) - $objmid->amount_interest : 0;
612 } elseif ($links[$key][
'type'] ==
'banktransfert') {
613 $accountLinestatic->fetch($links[$key][
'url_id']);
614 $tabpay[$obj->rowid][
"lib"] .=
' '.$langs->trans(
"BankTransfer").
' '.$accountLinestatic ->getNomUrl(1);
615 $tabtp[$obj->rowid][$account_transfer] = isset($tabtp[$obj->rowid][$account_transfer]) ? $tabtp[$obj->rowid][$account_transfer] + $amounttouse : $amounttouse;
616 $bankaccountstatic->fetch($tabpay[$obj->rowid][
'fk_bank_account']);
617 $tabpay[$obj->rowid][
"soclib"] = $bankaccountstatic->getNomUrl(2);
622 if (empty($tabbq[$obj->rowid][$compta_bank])) {
623 $tabbq[$obj->rowid][$compta_bank] = $amounttouse;
625 $tabbq[$obj->rowid][$compta_bank] += $amounttouse;
630 if (empty($tabtp[$obj->rowid]) && !empty($tabmoreinfo[$obj->rowid][
'withdraw'])) {
631 foreach ($links as $key => $val) {
632 if ($links[$key][
'type'] ==
'payment') {
634 $tmppayment->fetch($links[$key][
'url_id']);
635 $arrayofamounts = $tmppayment->getAmountsArray();
636 if (is_array($arrayofamounts)) {
637 foreach ($arrayofamounts as $invoiceid => $amount) {
638 $tmpinvoice->fetch($invoiceid);
639 $tmpinvoice->fetch_thirdparty();
640 if ($tmpinvoice->thirdparty->code_compta_client) {
641 $tabtp[$obj->rowid][$tmpinvoice->thirdparty->code_compta_client] += $amount;
650 if (empty($tabtp[$obj->rowid])) {
651 $tabtp[$obj->rowid][
'NotDefined'] = $tabbq[$obj->rowid][$compta_bank];
663if (!$error && $action ==
'writebookkeeping' && $user->hasRight(
'accounting',
'bind',
'write')) {
667 $accountingaccountcustomer->fetch(0,
getDolGlobalString(
'ACCOUNTING_ACCOUNT_CUSTOMER'),
true);
670 $accountingaccountsupplier->fetch(0,
getDolGlobalString(
'ACCOUNTING_ACCOUNT_SUPPLIER'),
true);
673 $accountingaccountpayment->fetch(0,
getDolGlobalString(
'SALARIES_ACCOUNTING_ACCOUNT_PAYMENT'),
true);
676 $accountingaccountexpensereport->fetch(0,
getDolGlobalString(
'ACCOUNTING_ACCOUNT_EXPENSEREPORT'),
true);
679 $accountingaccountsuspense->fetch(0,
getDolGlobalString(
'ACCOUNTING_ACCOUNT_SUSPENSE'),
true);
682 foreach ($tabpay as $key => $val) {
697 if (is_array($tabbq[$key])) {
699 foreach ($tabbq[$key] as $k => $mt) {
701 if (empty(
$conf->cache[
'accountingaccountincurrententity'][$k])) {
703 $accountingaccount->fetch(0, $k,
true);
704 $conf->cache[
'accountingaccountincurrententity'][$k] = $accountingaccount;
706 $accountingaccount =
$conf->cache[
'accountingaccountincurrententity'][$k];
709 $account_label = $accountingaccount->label;
712 if (!empty($val[
'lib'])) {
716 if (!empty($val[
'soclib'])) {
717 $reflabel .=
" / ".dol_string_nohtmltag($val[
'soclib']);
721 $bookkeeping->doc_date = $val[
"date"];
722 $bookkeeping->doc_ref = $ref;
723 $bookkeeping->doc_type =
'bank';
724 $bookkeeping->fk_doc = $key;
725 $bookkeeping->fk_docdet = $val[
"fk_bank"];
727 $bookkeeping->numero_compte = $k;
728 $bookkeeping->label_compte = $account_label;
730 $bookkeeping->label_operation = $reflabel;
731 $bookkeeping->montant = $mt;
732 $bookkeeping->sens = ($mt >= 0) ?
'D' :
'C';
733 $bookkeeping->debit = ($mt >= 0 ? $mt : 0);
734 $bookkeeping->credit = ($mt < 0 ? -$mt : 0);
735 $bookkeeping->code_journal = $journal;
736 $bookkeeping->journal_label = $langs->transnoentities($journal_label);
737 $bookkeeping->fk_user_author = $user->id;
738 $bookkeeping->date_creation = $now;
741 $bookkeeping->subledger_account =
'';
742 $bookkeeping->label_operation = $reflabel;
743 $bookkeeping->entity =
$conf->entity;
745 $totaldebit += $bookkeeping->debit;
746 $totalcredit += $bookkeeping->credit;
748 $result = $bookkeeping->create($user);
750 if ($bookkeeping->error ==
'BookkeepingRecordAlreadyExists') {
753 setEventMessages(
'Transaction for ('.$bookkeeping->doc_type.
', '.$bookkeeping->fk_doc.
', '.$bookkeeping->fk_docdet.
') were already recorded',
null,
'warnings');
765 if (!$errorforline) {
766 if (is_array($tabtp[$key])) {
768 foreach ($tabtp[$key] as $k => $mt) {
773 if (!empty($val[
'lib'])) {
776 if ($tabtype[$key] ==
'banktransfert') {
777 $reflabel .=
dol_string_nohtmltag($langs->transnoentitiesnoconv(
'TransitionalAccount').
' '.$account_transfer);
783 $bookkeeping->doc_date = $val[
"date"];
784 $bookkeeping->doc_ref = $ref;
785 $bookkeeping->doc_type =
'bank';
786 $bookkeeping->fk_doc = $key;
787 $bookkeeping->fk_docdet = $val[
"fk_bank"];
789 $bookkeeping->label_operation = $reflabel;
790 $bookkeeping->montant = $mt;
791 $bookkeeping->sens = ($mt < 0) ?
'D' :
'C';
792 $bookkeeping->debit = ($mt < 0 ? -$mt : 0);
793 $bookkeeping->credit = ($mt >= 0) ? $mt : 0;
794 $bookkeeping->code_journal = $journal;
795 $bookkeeping->journal_label = $langs->transnoentities($journal_label);
796 $bookkeeping->fk_user_author = $user->id;
797 $bookkeeping->date_creation = $now;
799 if ($tabtype[$key] ==
'payment') {
801 $bookkeeping->subledger_account = $k;
802 $bookkeeping->subledger_label = $tabcompany[$key][
'name'];
803 $bookkeeping->numero_compte = $tabcompany[$key][
'accountancy_code_general'];
804 $bookkeeping->label_compte = $accountingaccountcustomer->label;
805 } elseif ($tabtype[$key] ==
'payment_supplier') {
807 $bookkeeping->subledger_account = $k;
808 $bookkeeping->subledger_label = $tabcompany[$key][
'name'];
809 $bookkeeping->numero_compte = $tabcompany[$key][
'accountancy_code_general'];
810 $bookkeeping->label_compte = $accountingaccountsupplier->label;
811 } elseif ($tabtype[$key] ==
'payment_expensereport') {
812 $bookkeeping->subledger_account = $tabuser[$key][
'accountancy_code'];
813 $bookkeeping->subledger_label = $tabuser[$key][
'name'];
815 $bookkeeping->label_compte = $accountingaccountexpensereport->label;
816 } elseif ($tabtype[$key] ==
'payment_salary') {
817 $bookkeeping->subledger_account = $tabuser[$key][
'accountancy_code'];
818 $bookkeeping->subledger_label = $tabuser[$key][
'name'];
819 $bookkeeping->numero_compte = $tabuser[$key][
'accountancy_code_general'];
820 $bookkeeping->label_compte = $accountingaccountpayment->label;
821 } elseif (in_array($tabtype[$key], array(
'sc',
'payment_sc'))) {
822 $bookkeeping->subledger_account =
'';
823 $bookkeeping->subledger_label =
'';
824 if (empty(
$conf->cache[
'accountingaccountincurrententity'][$k])) {
826 $accountingaccount->fetch(0, $k,
true);
827 $conf->cache[
'accountingaccountincurrententity'][$k] = $accountingaccount;
829 $accountingaccount =
$conf->cache[
'accountingaccountincurrententity'][$k];
831 $bookkeeping->numero_compte = $k;
832 $bookkeeping->label_compte = $accountingaccount->label;
833 } elseif ($tabtype[$key] ==
'payment_vat') {
834 $bookkeeping->subledger_account =
'';
835 $bookkeeping->subledger_label =
'';
836 if (empty(
$conf->cache[
'accountingaccountincurrententity'][$k])) {
838 $accountingaccount->fetch(0, $k,
true);
839 $conf->cache[
'accountingaccountincurrententity'][$k] = $accountingaccount;
841 $accountingaccount =
$conf->cache[
'accountingaccountincurrententity'][$k];
843 $bookkeeping->numero_compte = $k;
844 $bookkeeping->label_compte = $accountingaccount->label;
845 } elseif ($tabtype[$key] ==
'payment_donation') {
846 $bookkeeping->subledger_account =
'';
847 $bookkeeping->subledger_label =
'';
848 if (empty(
$conf->cache[
'accountingaccountincurrententity'][$k])) {
850 $accountingaccount->fetch(0, $k,
true);
851 $conf->cache[
'accountingaccountincurrententity'][$k] = $accountingaccount;
853 $accountingaccount =
$conf->cache[
'accountingaccountincurrententity'][$k];
855 $bookkeeping->numero_compte = $k;
856 $bookkeeping->label_compte = $accountingaccount->label;
857 } elseif ($tabtype[$key] ==
'member') {
858 $bookkeeping->subledger_account =
'';
859 $bookkeeping->subledger_label =
'';
860 if (empty(
$conf->cache[
'accountingaccountincurrententity'][$k])) {
862 $accountingaccount->fetch(0, $k,
true);
863 $conf->cache[
'accountingaccountincurrententity'][$k] = $accountingaccount;
865 $accountingaccount =
$conf->cache[
'accountingaccountincurrententity'][$k];
867 $bookkeeping->numero_compte = $k;
868 $bookkeeping->label_compte = $accountingaccount->label;
869 } elseif ($tabtype[$key] ==
'payment_loan') {
870 $bookkeeping->subledger_account =
'';
871 $bookkeeping->subledger_label =
'';
872 if (empty(
$conf->cache[
'accountingaccountincurrententity'][$k])) {
874 $accountingaccount->fetch(0, $k,
true);
875 $conf->cache[
'accountingaccountincurrententity'][$k] = $accountingaccount;
877 $accountingaccount =
$conf->cache[
'accountingaccountincurrententity'][$k];
879 $bookkeeping->numero_compte = $k;
880 $bookkeeping->label_compte = $accountingaccount->label;
881 } elseif ($tabtype[$key] ==
'payment_various') {
882 $bookkeeping->subledger_account = $k;
883 $bookkeeping->subledger_label = $tabcompany[$key][
'name'];
884 if (empty(
$conf->cache[
'accountingaccountincurrententity'][$tabpay[$key][
"account_various"]])) {
886 $accountingaccount->fetch(0, $tabpay[$key][
"account_various"],
true);
887 $conf->cache[
'accountingaccountincurrententity'][$tabpay[$key][
"account_various"]] = $accountingaccount;
889 $accountingaccount =
$conf->cache[
'accountingaccountincurrententity'][$tabpay[$key][
"account_various"]];
891 $bookkeeping->numero_compte = $tabpay[$key][
"account_various"];
892 $bookkeeping->label_compte = $accountingaccount->label;
893 } elseif ($tabtype[$key] ==
'banktransfert') {
894 $bookkeeping->subledger_account =
'';
895 $bookkeeping->subledger_label =
'';
896 if (empty(
$conf->cache[
'accountingaccountincurrententity'][$k])) {
898 $accountingaccount->fetch(0, $k,
true);
899 $conf->cache[
'accountingaccountincurrententity'][$k] = $accountingaccount;
901 $accountingaccount =
$conf->cache[
'accountingaccountincurrententity'][$k];
903 $bookkeeping->numero_compte = $k;
904 $bookkeeping->label_compte = $accountingaccount->label;
906 if ($tabtype[$key] ==
'unknown') {
908 $bookkeeping->subledger_account =
'';
909 $bookkeeping->subledger_label =
'';
911 $bookkeeping->label_compte = $accountingaccountsuspense->label;
914 $bookkeeping->label_operation = $reflabel;
915 $bookkeeping->entity =
$conf->entity;
917 $totaldebit += $bookkeeping->debit;
918 $totalcredit += $bookkeeping->credit;
920 $result = $bookkeeping->create($user);
922 if ($bookkeeping->error ==
'BookkeepingRecordAlreadyExists') {
925 setEventMessages(
'Transaction for ('.$bookkeeping->doc_type.
', '.$bookkeeping->fk_doc.
', '.$bookkeeping->fk_docdet.
') were already recorded',
null,
'warnings');
933 require_once DOL_DOCUMENT_ROOT .
'/accountancy/class/lettering.class.php';
935 $nb_lettering = $lettering_static->bookkeepingLetteringAll(array($bookkeeping->id));
941 foreach ($tabbq[$key] as $k => $mt) {
944 if (!empty($val[
'lib'])) {
950 $bookkeeping->doc_date = $val[
"date"];
951 $bookkeeping->doc_ref = $ref;
952 $bookkeeping->doc_type =
'bank';
953 $bookkeeping->fk_doc = $key;
954 $bookkeeping->fk_docdet = $val[
"fk_bank"];
955 $bookkeeping->montant = $mt;
956 $bookkeeping->sens = ($mt < 0) ?
'D' :
'C';
957 $bookkeeping->debit = ($mt < 0 ? -$mt : 0);
958 $bookkeeping->credit = ($mt >= 0) ? $mt : 0;
959 $bookkeeping->code_journal = $journal;
960 $bookkeeping->journal_label = $langs->transnoentities($journal_label);
961 $bookkeeping->fk_user_author = $user->id;
962 $bookkeeping->date_creation = $now;
963 $bookkeeping->label_compte =
'';
964 $bookkeeping->label_operation = $reflabel;
965 $bookkeeping->entity =
$conf->entity;
967 $totaldebit += $bookkeeping->debit;
968 $totalcredit += $bookkeeping->credit;
970 $result = $bookkeeping->create($user);
973 if ($bookkeeping->error ==
'BookkeepingRecordAlreadyExists') {
976 setEventMessages(
'Transaction for ('.$bookkeeping->doc_type.
', '.$bookkeeping->fk_doc.
', '.$bookkeeping->fk_docdet.
') were already recorded',
null,
'warnings');
991 setEventMessages(
'We tried to insert a non balanced transaction in book for '.$ref.
'. Canceled. Surely a bug.',
null,
'errors');
994 if (!$errorforline) {
1001 if ($error >= $MAXNBERRORS) {
1002 setEventMessages($langs->trans(
"ErrorTooManyErrorsProcessStopped").
' (>'.$MAXNBERRORS.
')',
null,
'errors');
1008 if (empty($error) && count($tabpay) > 0) {
1010 } elseif (count($tabpay) == $error) {
1013 setEventMessages($langs->trans(
"GeneralLedgerSomeRecordWasNotRecorded"),
null,
'warnings');
1019 if (count($tabpay) != $error) {
1020 $param =
'id_journal='.$id_journal;
1021 $param .=
'&date_startday='.$date_startday;
1022 $param .=
'&date_startmonth='.$date_startmonth;
1023 $param .=
'&date_startyear='.$date_startyear;
1024 $param .=
'&date_endday='.$date_endday;
1025 $param .=
'&date_endmonth='.$date_endmonth;
1026 $param .=
'&date_endyear='.$date_endyear;
1027 $param .=
'&in_bookkeeping='.$in_bookkeeping;
1028 header(
"Location: ".$_SERVER[
'PHP_SELF'].($param ?
'?'.$param :
''));
1036if ($action ==
'exportcsv' && $user->hasRight(
'accounting',
'bind',
'write')) {
1039 $filename =
'journal';
1040 $type_export =
'journal';
1041 include DOL_DOCUMENT_ROOT.
'/accountancy/tpl/export_journal.tpl.php';
1044 print
'"'.$langs->transnoentitiesnoconv(
"BankId").
'"'.$sep;
1045 print
'"'.$langs->transnoentitiesnoconv(
"Date").
'"'.$sep;
1046 print
'"'.$langs->transnoentitiesnoconv(
"PaymentMode").
'"'.$sep;
1047 print
'"'.$langs->transnoentitiesnoconv(
"AccountAccounting").
'"'.$sep;
1048 print
'"'.$langs->transnoentitiesnoconv(
"SubledgerAccount").
'"'.$sep;
1049 print
'"'.$langs->transnoentitiesnoconv(
"Label").
'"'.$sep;
1050 print
'"'.$langs->transnoentitiesnoconv(
"AccountingDebit").
'"'.$sep;
1051 print
'"'.$langs->transnoentitiesnoconv(
"AccountingCredit").
'"'.$sep;
1052 print
'"'.$langs->transnoentitiesnoconv(
"Journal").
'"'.$sep;
1053 print
'"'.$langs->transnoentitiesnoconv(
"Note").
'"'.$sep;
1056 foreach ($tabpay as $key => $val) {
1062 foreach ($tabbq[$key] as $k => $mt) {
1065 if (!empty($val[
'lib'])) {
1069 if (!empty($val[
'soclib'])) {
1070 $reflabel .=
" / ".dol_string_nohtmltag($val[
'soclib']);
1073 print
'"'.$key.
'"'.$sep;
1074 print
'"'.$date.
'"'.$sep;
1075 print
'"'.$val[
"type_payment"].
'"'.$sep;
1076 print
'"'.length_accountg(html_entity_decode($k)).
'"'.$sep;
1078 print
'"'.$reflabel.
'"'.$sep;
1079 print
'"'.($mt >= 0 ?
price($mt) :
'').
'"'.$sep;
1080 print
'"'.($mt < 0 ?
price(-$mt) :
'').
'"'.$sep;
1081 print
'"'.$journal.
'"'.$sep;
1082 print
'"'.dol_string_nohtmltag($ref).
'"'.$sep;
1088 if (is_array($tabtp[$key])) {
1089 foreach ($tabtp[$key] as $k => $mt) {
1092 if (!empty($val[
'lib'])) {
1095 if ($tabtype[$key] ==
'banktransfert') {
1096 $reflabel .=
dol_string_nohtmltag($langs->transnoentitiesnoconv(
'TransitionalAccount').
' '.$account_transfer);
1101 print
'"'.$key.
'"'.$sep;
1102 print
'"'.$date.
'"'.$sep;
1103 print
'"'.$val[
"type_payment"].
'"'.$sep;
1104 if ($tabtype[$key] ==
'payment_supplier') {
1105 $account_ledger = (!empty($obj->accountancy_code_supplier_general)) ? $obj->accountancy_code_supplier_general : $account_supplier;
1106 print
'"'.length_accountg($account_ledger).
'"'.$sep;
1107 } elseif ($tabtype[$key] ==
'payment') {
1108 $account_ledger = (!empty($obj->accountancy_code_customer_general)) ? $obj->accountancy_code_customer_general : $account_customer;
1109 print
'"'.length_accountg($account_ledger).
'"'.$sep;
1110 } elseif ($tabtype[$key] ==
'payment_expensereport') {
1111 print
'"'.length_accountg(
getDolGlobalString(
'ACCOUNTING_ACCOUNT_EXPENSEREPORT')).
'"'.$sep;
1112 } elseif ($tabtype[$key] ==
'payment_salary') {
1113 $account_ledger = (!empty($obj->accountancy_code_user_general)) ? $obj->accountancy_code_user_general : $account_employee;
1114 print
'"'.length_accountg($account_ledger).
'"'.$sep;
1116 print
'"'.length_accountg(html_entity_decode($k)).
'"'.$sep;
1118 print
'"'.length_accounta(html_entity_decode($k)).
'"'.$sep;
1119 print
'"'.$reflabel.
'"'.$sep;
1120 print
'"'.($mt < 0 ?
price(-$mt) :
'').
'"'.$sep;
1121 print
'"'.($mt >= 0 ?
price($mt) :
'').
'"'.$sep;
1122 print
'"'.$journal.
'"'.$sep;
1123 print
'"'.dol_string_nohtmltag($ref).
'"'.$sep;
1128 foreach ($tabbq[$key] as $k => $mt) {
1131 if (!empty($val[
'lib'])) {
1136 print
'"'.$key.
'"'.$sep;
1137 print
'"'.$date.
'"'.$sep;
1138 print
'"'.$val[
"type_payment"].
'"'.$sep;
1139 print
'"'.length_accountg(
getDolGlobalString(
'ACCOUNTING_ACCOUNT_SUSPENSE')).
'"'.$sep;
1141 print
'"'.$reflabel.
'"'.$sep;
1142 print
'"'.($mt < 0 ?
price(-$mt) :
'').
'"'.$sep;
1143 print
'"'.($mt >= 0 ?
price($mt) :
'').
'"'.$sep;
1144 print
'"'.$journal.
'"'.$sep;
1145 print
'"'.dol_string_nohtmltag($ref).
'"'.$sep;
1158$form =
new Form($db);
1160if (empty($action) || $action ==
'view') {
1161 $invoicestatic =
new Facture($db);
1164 $vatstatic =
new Tva($db);
1165 $donationstatic =
new Don($db);
1166 $loanstatic =
new Loan($db);
1167 $salarystatic =
new Salary($db);
1170 $title = $langs->trans(
"GenerationOfAccountingEntries").
' - '.$accountingjournalstatic->getNomUrl(0, 2, 1,
'', 1);
1171 $help_url =
'EN:Module_Double_Entry_Accounting|FR:Module_Comptabilité_en_Partie_Double#Génération_des_écritures_en_comptabilité';
1177 $description = $langs->trans(
"DescJournalOnlyBindedVisible").
'<br>';
1179 $listofchoices = array(
1180 'notyet' => $langs->trans(
"NotYetInGeneralLedger"),
1181 'already' => $langs->trans(
"AlreadyInGeneralLedger")
1183 $period = $form->selectDate($date_start ? $date_start : -1,
'date_start', 0, 0, 0,
'', 1, 0).
' - '.$form->selectDate($date_end ? $date_end : -1,
'date_end', 0, 0, 0,
'', 1, 0);
1184 $period .=
'<span class="valignmiddle"> - '.$langs->trans(
"JournalizationInLedgerStatus").
' </span>'.$form->selectarray(
'in_bookkeeping', $listofchoices, $in_bookkeeping, 1, 0, 0,
'', 0, 0, 0,
'',
'minwidth75 valignmiddle');
1186 $varlink =
'id_journal='.$id_journal;
1190 $listofchoices = array(
1191 1 => $langs->trans(
"TransfertAllBankLines"),
1192 2 => $langs->trans(
"TransfertOnlyConciliatedBankLine")
1194 $moreoptions = [
"BankLineConciliated" => $form->selectarray(
'only_rappro', $listofchoices, $only_rappro, 0, 0, 0,
'', 0, 0, 0,
'',
'minwidth75 valignmiddle')];
1196 journalHead($nom,
'', $period, $periodlink, $description, $builddate, $exportlink, array(
'action' =>
''),
'', $varlink, $moreoptions);
1203 $sql =
"SELECT COUNT(rowid) as nb FROM ".MAIN_DB_PREFIX.
"accounting_fiscalyear WHERE entity = ".((int)
$conf->entity);
1204 $resql = $db->query($sql);
1206 $obj = $db->fetch_object($resql);
1207 if ($obj->nb == 0) {
1208 print
'<br><div class="warning">'.img_warning().
' '.$langs->trans(
"TheFiscalPeriodIsNotDefined");
1209 $desc =
' : '.$langs->trans(
"AccountancyAreaDescFiscalPeriod", 4,
'{link}');
1210 $desc = str_replace(
'{link}',
'<strong>'.$langs->transnoentitiesnoconv(
"MenuAccountancy").
'-'.$langs->transnoentitiesnoconv(
"Setup").
"-".$langs->transnoentitiesnoconv(
"FiscalPeriod").
'</strong>', $desc);
1220 $sql =
"SELECT COUNT(rowid) as nb FROM ".MAIN_DB_PREFIX.
"bank_account WHERE entity = ".((int)
$conf->entity).
" AND fk_accountancy_journal IS NULL AND clos=0";
1221 $resql = $db->query($sql);
1223 $obj = $db->fetch_object($resql);
1225 print
'<br><div class="warning">'.img_warning().
' '.$langs->trans(
"TheJournalCodeIsNotDefinedOnSomeBankAccount");
1226 $desc =
' : '.$langs->trans(
"AccountancyAreaDescBank", 6,
'{link}');
1227 $desc = str_replace(
'{link}',
'<strong>'.$langs->transnoentitiesnoconv(
"MenuAccountancy").
'-'.$langs->transnoentitiesnoconv(
"Setup").
"-".$langs->transnoentitiesnoconv(
"BankAccounts").
'</strong>', $desc);
1243 print($desc ?
'' :
'<br>').
'<div class="warning">'.
img_warning().
' '.$langs->trans(
"SomeMandatoryStepsOfSetupWereNotDone");
1244 $desc =
' : '.$langs->trans(
"AccountancyAreaDescMisc", 4,
'{link}');
1245 $desc = str_replace(
'{link}',
'<strong>'.$langs->transnoentitiesnoconv(
"MenuAccountancy").
'-'.$langs->transnoentitiesnoconv(
"Setup").
"-".$langs->transnoentitiesnoconv(
"MenuDefaultAccounts").
'</strong>', $desc);
1251 print
'<br><div class="tabsAction tabsActionNoBottom centerimp">';
1253 if (
getDolGlobalString(
'ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL') && $in_bookkeeping ==
'notyet') {
1254 print
'<input type="button" class="butAction" name="exportcsv" value="'.$langs->trans(
"ExportDraftJournal").
'" onclick="launch_export();" />';
1259 print
'<input type="button" class="butActionRefused classfortooltip" title="'.dol_escape_htmltag($langs->trans(
"SomeMandatoryStepsOfSetupWereNotDone")).
'" value="'.$langs->trans(
"WriteBookKeeping").
'" />';
1261 if ($in_bookkeeping ==
'notyet') {
1262 print
'<input type="button" class="butAction" name="writebookkeeping" value="'.$langs->trans(
"WriteBookKeeping").
'" onclick="writebookkeeping();" />';
1264 print
'<a class="butActionRefused classfortooltip" name="writebookkeeping">'.$langs->trans(
"WriteBookKeeping").
'</a>';
1272 <script type="text/javascript">
1273 function launch_export() {
1274 console.log("Set value into form and submit");
1275 $("div.fiche form input[name=\"action\"]").val("exportcsv");
1276 $("div.fiche form input[type=\"submit\"]").click();
1277 $("div.fiche form input[name=\"action\"]").val("");
1279 function writebookkeeping() {
1280 console.log("Set value into form and submit");
1281 $("div.fiche form input[name=\"action\"]").val("writebookkeeping");
1282 $("div.fiche form input[type=\"submit\"]").click();
1283 $("div.fiche form input[name=\"action\"]").val("");
1293 print
'<div class="div-table-responsive">';
1294 print
'<table class="noborder centpercent">';
1295 print
'<tr class="liste_titre">';
1296 print
"<td>".$langs->trans(
"Date").
"</td>";
1297 print
"<td>".$langs->trans(
"Piece").
' ('.$langs->trans(
"ObjectsRef").
")</td>";
1298 print
"<td>".$langs->trans(
"AccountAccounting").
"</td>";
1299 print
"<td>".$langs->trans(
"SubledgerAccount").
"</td>";
1300 print
"<td>".$langs->trans(
"LabelOperation").
"</td>";
1301 print
'<td class="center">'.$langs->trans(
"PaymentMode").
"</td>";
1302 print
'<td class="right">'.$langs->trans(
"AccountingDebit").
"</td>";
1303 print
'<td class="right">'.$langs->trans(
"AccountingCredit").
"</td>";
1306 foreach ($tabpay as $key => $val) {
1312 foreach ($tabbq[$key] as $k => $mt) {
1315 if (!empty($val[
'lib'])) {
1316 $reflabel .= $val[
'lib'].
" / ";
1318 $reflabel .= $langs->trans(
"Bank").
' '.$val[
'bank_account_ref'];
1319 if (!empty($val[
'soclib'])) {
1320 $reflabel .=
" / ".$val[
'soclib'];
1324 print
'<!-- Bank bank.rowid='.$key.
'=accounting_bookkeeping.fk_doc (accounting_bookkeeping.doc_type=\'bank\') type='.$tabpay[$key][
'type'].
' ref='.$tabpay[$key][
'ref'].
' -->';
1325 print
'<tr class="oddeven">';
1328 print
"<td>".$date.
"</td>";
1331 print
'<td class="maxwidth300 nopaddingtopimp nopaddingbottomimp">'.dol_escape_htmltag($ref).
"</td>";
1335 if (empty($accounttoshow) || $accounttoshow ==
'NotDefined') {
1336 $accounttoshow =
'<span class="error">'.$langs->trans(
"BankAccountNotDefined").
'</span>';
1338 print
'<td class="maxwidth300" title="'.dol_escape_htmltag(
dol_string_nohtmltag($accounttoshow)).
'">';
1339 print $accounttoshow;
1343 print
'<td class="maxwidth300">';
1353 print
'<td class="maxwidth300 nopaddingtopimp nopaddingbottomimp">';
1357 print
'<td class="center">'.$val[
"type_payment"].
"</td>";
1358 print
'<td class="right nowraponall amount">'.($mt >= 0 ?
price($mt) :
'').
"</td>";
1359 print
'<td class="right nowraponall amount">'.($mt < 0 ?
price(-$mt) :
'').
"</td>";
1367 if (is_array($tabtp[$key])) {
1368 foreach ($tabtp[$key] as $k => $mt) {
1371 if (!empty($val[
'lib'])) {
1372 $reflabel .= $val[
'lib'].(!empty($val[
'soclib']) ?
" / " :
"");
1374 if ($tabtype[$key] ==
'banktransfert') {
1375 $reflabel .= $langs->trans(
'TransitionalAccount').
' '.$account_transfer;
1377 $reflabel .= isset($val[
'soclib']) ? $val[
'soclib'] :
"";
1380 print
'<!-- Thirdparty bank.rowid='.$key.
'=accounting_bookkeeping.fk_doc (accounting_bookkeeping.doc_type=\'bank\') type='.$tabpay[$key][
'type'].
' ref='.$tabpay[$key][
'ref'].
' -->';
1381 print
'<tr class="oddeven">';
1384 print
"<td>".$date.
"</td>";
1387 print
'<td class="nopaddingtopimp nopaddingbottomimp">'.dol_escape_htmltag($ref).
"</td>";
1391 $account_ledger = $k;
1393 if ($tabtype[$key] ==
'payment') {
1394 $account_ledger = (!empty($obj->accountancy_code_customer_general)) ? $obj->accountancy_code_customer_general : $account_customer;
1396 if ($tabtype[$key] ==
'payment_supplier') {
1397 $account_ledger = (!empty($obj->accountancy_code_supplier_general)) ? $obj->accountancy_code_supplier_general : $account_supplier;
1399 if ($tabtype[$key] ==
'payment_expensereport') {
1402 if ($tabtype[$key] ==
'payment_salary') {
1403 $account_ledger = (!empty($obj->accountancy_code_user_general)) ? $obj->accountancy_code_user_general : $account_employee;
1405 if ($tabtype[$key] ==
'payment_vat') {
1408 if ($tabtype[$key] ==
'member') {
1411 if ($tabtype[$key] ==
'payment_various') {
1412 $account_ledger = $tabpay[$key][
"account_various"];
1415 if (empty($accounttoshow) || $accounttoshow ==
'NotDefined') {
1416 if ($tabtype[$key] ==
'unknown') {
1419 $accounttoshow =
'<span class="error small">'.$langs->trans(
'UnknownAccountForThirdpartyAndWaitingAccountNotDefinedBlocking').
'</span>';
1421 $accounttoshow =
'<span class="warning small">'.$langs->trans(
'UnknownAccountForThirdparty',
length_accountg(
getDolGlobalString(
'ACCOUNTING_ACCOUNT_SUSPENSE'))).
'</span>';
1425 $errorstring =
'UnknownAccountForThirdpartyBlocking';
1426 if ($tabtype[$key] ==
'payment') {
1427 $errorstring =
'MainAccountForCustomersNotDefined';
1429 if ($tabtype[$key] ==
'payment_supplier') {
1430 $errorstring =
'MainAccountForSuppliersNotDefined';
1432 if ($tabtype[$key] ==
'payment_expensereport') {
1433 $errorstring =
'MainAccountForUsersNotDefined';
1435 if ($tabtype[$key] ==
'payment_salary') {
1436 $errorstring =
'MainAccountForUsersNotDefined';
1438 if ($tabtype[$key] ==
'payment_vat') {
1439 $errorstring =
'MainAccountForVatPaymentNotDefined';
1441 if ($tabtype[$key] ==
'member') {
1442 $errorstring =
'MainAccountForSubscriptionPaymentNotDefined';
1444 $accounttoshow =
'<span class="error small">'.$langs->trans($errorstring).
'</span>';
1447 print
'<td class="maxwidth300" title="'.dol_escape_htmltag(
dol_string_nohtmltag($accounttoshow)).
'">';
1448 print $accounttoshow;
1452 $accounttoshowsubledger =
'';
1453 if (in_array($tabtype[$key], array(
'payment',
'payment_supplier',
'payment_expensereport',
'payment_salary',
'payment_various'))) {
1455 if ($accounttoshow != $accounttoshowsubledger) {
1456 if (empty($accounttoshowsubledger) || $accounttoshowsubledger ==
'NotDefined') {
1458 if (!empty($tabcompany[$key][
'code_compta'])) {
1459 if (in_array($tabtype[$key], array(
'payment_various'))) {
1461 $accounttoshowsubledger =
'<span class="warning small twolinesmax">'.$langs->trans(
"ThirdpartyAccountNotDefinedOrThirdPartyUnknownSubledgerIgnored").
'</span>';
1462 } elseif (in_array($tabtype[$key], array(
'payment_salary'))) {
1463 $accounttoshowsubledger =
'<span class="warning small twolinesmax">'.$langs->trans(
"ThirdpartyAccountNotDefinedOrThirdPartyUnknownSubledgerIgnored2").
'</span>';
1465 $accounttoshowsubledger =
'<span class="warning small twolinesmax">'.$langs->trans(
"ThirdpartyAccountNotDefinedOrThirdPartyUnknown", $tabcompany[$key][
'code_compta']).
'</span>';
1468 $accounttoshowsubledger =
'<span class="error small twolinesmax">'.$langs->trans(
"ThirdpartyAccountNotDefinedOrThirdPartyUnknownBlocking").
'</span>';
1472 $accounttoshowsubledger =
'';
1475 print
'<td class="maxwidth300 nopaddingtopimp nopaddingbottomimp" title="'.dolPrintHTMLForAttribute(
dol_string_nohtmltag($accounttoshowsubledger)).
'">';
1476 print $accounttoshowsubledger;
1480 print
'<td class="nopaddingtopimpo paddingbottomimp">';
1484 print
'<td class="center">'.$val[
"type_payment"].
"</td>";
1486 print
'<td class="right nowraponall amount">'.($mt < 0 ?
price(-$mt) :
'').
"</td>";
1488 print
'<td class="right nowraponall amount">'.($mt >= 0 ?
price($mt) :
'').
"</td>";
1496 foreach ($tabbq[$key] as $k => $mt) {
1499 if (!empty($val[
'lib'])) {
1500 $reflabel .= $val[
'lib'].
" / ";
1502 $reflabel .=
'WaitingAccount';
1504 print
'<!-- Wait bank.rowid='.$key.
' -->';
1505 print
'<tr class="oddeven">';
1506 print
"<td>".$date.
"</td>";
1507 print
"<td>".$ref.
"</td>";
1520 print
"<td>".dol_escape_htmltag($reflabel).
"</td>";
1521 print
'<td class="center">'.$val[
"type_payment"].
"</td>";
1522 print
'<td class="right nowraponall amount">'.($mt < 0 ?
price(-$mt) :
'').
"</td>";
1523 print
'<td class="right nowraponall amount">'.($mt >= 0 ?
price($mt) :
'').
"</td>";
1534 print
'<tr class="oddeven"><td colspan="'.$colspan.
'"><span class="opacitymedium">'.$langs->trans(
"NoRecordFound").
'</span></td></tr>';
1561 if ($ref ==
'(SupplierInvoicePayment)' || $ref ==
'(SupplierInvoicePaymentBack)') {
1562 $ref = $langs->transnoentitiesnoconv(
'Supplier');
1564 if ($ref ==
'(CustomerInvoicePayment)' || $ref ==
'(CustomerInvoicePaymentBack)') {
1565 $ref = $langs->transnoentitiesnoconv(
'Customer');
1567 if ($ref ==
'(SocialContributionPayment)') {
1568 $ref = $langs->transnoentitiesnoconv(
'SocialContribution');
1570 if ($ref ==
'(DonationPayment)') {
1571 $ref = $langs->transnoentitiesnoconv(
'Donation');
1573 if ($ref ==
'(SubscriptionPayment)') {
1574 $ref = $langs->transnoentitiesnoconv(
'Subscription');
1576 if ($ref ==
'(ExpenseReportPayment)') {
1577 $ref = $langs->transnoentitiesnoconv(
'Employee');
1579 if ($ref ==
'(LoanPayment)') {
1580 $ref = $langs->transnoentitiesnoconv(
'Loan');
1582 if ($ref ==
'(payment_salary)') {
1583 $ref = $langs->transnoentitiesnoconv(
'Employee');
1587 if ($typerecord ==
'payment') {
1589 $sqlmid =
"SELECT payfac.fk_facture as id, ".$db->ifsql(
'f1.rowid IS NULL',
'f.ref',
'f1.ref').
" as ref";
1590 $sqlmid .=
" FROM ".$db->prefix().
"paiement_facture as payfac";
1591 $sqlmid .=
" LEFT JOIN ".$db->prefix().
"facture as f ON f.rowid = payfac.fk_facture";
1592 $sqlmid .=
" LEFT JOIN ".$db->prefix().
"societe_remise_except as sre ON sre.fk_facture_source = payfac.fk_facture";
1593 $sqlmid .=
" LEFT JOIN ".$db->prefix().
"facture as f1 ON f1.rowid = sre.fk_facture";
1594 $sqlmid .=
" WHERE payfac.fk_paiement=".((int) $val[
'paymentid']);
1596 $sqlmid =
"SELECT payfac.fk_facture as id, f.ref as ref";
1597 $sqlmid .=
" FROM ".$db->prefix().
"paiement_facture as payfac";
1598 $sqlmid .=
" INNER JOIN ".$db->prefix().
"facture as f ON f.rowid = payfac.fk_facture";
1599 $sqlmid .=
" WHERE payfac.fk_paiement=".((int) $val[
'paymentid']);
1601 $ref = $langs->transnoentitiesnoconv(
"Invoice");
1602 } elseif ($typerecord ==
'payment_supplier') {
1603 $sqlmid =
'SELECT payfac.fk_facturefourn as id, f.ref';
1604 $sqlmid .=
" FROM ".MAIN_DB_PREFIX.
"paiementfourn_facturefourn as payfac, ".MAIN_DB_PREFIX.
"facture_fourn as f";
1605 $sqlmid .=
" WHERE payfac.fk_facturefourn = f.rowid AND payfac.fk_paiementfourn=".((int) $val[
"paymentsupplierid"]);
1606 $ref = $langs->transnoentitiesnoconv(
"SupplierInvoice");
1607 } elseif ($typerecord ==
'payment_expensereport') {
1608 $sqlmid =
'SELECT e.rowid as id, e.ref';
1609 $sqlmid .=
" FROM ".MAIN_DB_PREFIX.
"payment_expensereport as pe, ".MAIN_DB_PREFIX.
"expensereport as e";
1610 $sqlmid .=
" WHERE pe.rowid=".((int) $val[
"paymentexpensereport"]).
" AND pe.fk_expensereport = e.rowid";
1611 $ref = $langs->transnoentitiesnoconv(
"ExpenseReport");
1612 } elseif ($typerecord ==
'payment_salary') {
1613 $sqlmid =
'SELECT s.rowid as ref';
1614 $sqlmid .=
" FROM ".MAIN_DB_PREFIX.
"payment_salary as s";
1615 $sqlmid .=
" WHERE s.rowid=".((int) $val[
"paymentsalid"]);
1616 $ref = $langs->transnoentitiesnoconv(
"SalaryPayment");
1617 } elseif ($typerecord ==
'sc') {
1618 $sqlmid =
'SELECT sc.rowid as ref';
1619 $sqlmid .=
" FROM ".MAIN_DB_PREFIX.
"paiementcharge as sc";
1620 $sqlmid .=
" WHERE sc.rowid=".((int) $val[
"paymentscid"]);
1621 $ref = $langs->transnoentitiesnoconv(
"SocialContribution");
1622 } elseif ($typerecord ==
'payment_vat') {
1623 $sqlmid =
'SELECT v.rowid as ref';
1624 $sqlmid .=
" FROM ".MAIN_DB_PREFIX.
"tva as v";
1625 $sqlmid .=
" WHERE v.rowid=".((int) $val[
"paymentvatid"]);
1626 $ref = $langs->transnoentitiesnoconv(
"PaymentVat");
1627 } elseif ($typerecord ==
'payment_donation') {
1628 $sqlmid =
'SELECT payd.fk_donation as ref';
1629 $sqlmid .=
" FROM ".MAIN_DB_PREFIX.
"payment_donation as payd";
1630 $sqlmid .=
" WHERE payd.fk_donation=".((int) $val[
"paymentdonationid"]);
1631 $ref = $langs->transnoentitiesnoconv(
"Donation");
1632 } elseif ($typerecord ==
'payment_loan') {
1633 $sqlmid =
'SELECT l.rowid as ref';
1634 $sqlmid .=
" FROM ".MAIN_DB_PREFIX.
"payment_loan as l";
1635 $sqlmid .=
" WHERE l.rowid=".((int) $val[
"paymentloanid"]);
1636 $ref = $langs->transnoentitiesnoconv(
"LoanPayment");
1637 } elseif ($typerecord ==
'payment_various') {
1638 $sqlmid =
'SELECT v.rowid as ref';
1639 $sqlmid .=
" FROM ".MAIN_DB_PREFIX.
"payment_various as v";
1640 $sqlmid .=
" WHERE v.rowid=".((int) $val[
"paymentvariousid"]);
1641 $ref = $langs->transnoentitiesnoconv(
"VariousPayment");
1644 if (empty($sqlmid)) {
1645 dol_syslog(
"Found a typerecord=".$typerecord.
" not supported", LOG_WARNING);
1649 dol_syslog(
"accountancy/journal/bankjournal.php::sqlmid=".$sqlmid, LOG_DEBUG);
1650 $resultmid = $db->query($sqlmid);
1652 while ($objmid = $db->fetch_object($resultmid)) {
1653 $ref .=
' '.$objmid->ref;
1660 $ref =
dol_trunc($langs->transnoentitiesnoconv(
"BankId").
' '.$val[
'fk_bank'].
' - '.$ref, 295);
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)
journalHead($nom, $variant, $period, $periodlink, $description, $builddate, $exportlink='', $moreparam=array(), $calcmode='', $varlink='', $moreoptions=array())
Show header of a page used to transfer/dispatch data in accounting.
getDefaultDatesForTransfer()
Return Default dates for transfer based on periodicity option in accountancy setup.
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.
getSourceDocRef($val, $typerecord)
Return source for doc_ref of a bank transaction.
Class to manage bank accounts.
Class to manage bank transaction lines.
Class to manage accounting accounts.
Class to manage accounting journals.
Class to manage Ledger (General Ledger and Subledger)
Class for managing the social charges.
Class to manage donations.
Class to manage Trips and Expenses.
Class to manage suppliers invoices.
Class to manage invoices.
Class to manage payments for supplier invoices.
Class to manage payments of customer invoices.
Class to manage payments of donations.
Class to manage payments of expense report.
Class to manage payments of loans.
Class to manage payments of salaries.
Class to manage various payments.
Class to manage salary payments.
Class to manage third parties objects (customers, suppliers, prospects...)
Class to manage subscriptions of foundation members.
Class to manage VAT - Value-added tax (also known in French as TVA - Taxe sur la valeur ajoutée)
Class to manage Dolibarr users.
dol_get_first_day($year, $month=1, $gm=false)
Return GMT time for first day of a month or year.
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.
img_warning($titlealt='default', $moreatt='', $morecss='pictowarning')
Show warning logo.
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
dol_string_nohtmltag($stringtoclean, $removelinefeed=1, $pagecodeto='UTF-8', $strip_tags=0, $removedoublespaces=1)
Clean a string from all HTML tags and entities.
price2num($amount, $rounding='', $option=0)
Function that return a number with universal decimal format (decimal separator is '.
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).
dolGetFirstLastname($firstname, $lastname, $nameorder=-1)
Return firstname and lastname in correct order.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
dol_trunc($string, $size=40, $trunc='right', $stringencoding='UTF-8', $nodot=0, $display=0)
Truncate a string to a particular length adding '…' if string larger than length.
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
global $conf
The following vars must be defined: $type2label $form $conf, $lang, The following vars may also be de...
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.