36require
'../../main.inc.php';
38require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formother.class.php';
39require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formaccounting.class.php';
40require_once DOL_DOCUMENT_ROOT.
'/core/lib/bank.lib.php';
42require_once DOL_DOCUMENT_ROOT.
'/societe/class/societe.class.php';
43require_once DOL_DOCUMENT_ROOT.
'/user/class/user.class.php';
44require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
45require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/bankcateg.class.php';
46require_once DOL_DOCUMENT_ROOT.
'/adherents/class/adherent.class.php';
47require_once DOL_DOCUMENT_ROOT.
'/compta/sociales/class/chargesociales.class.php';
48require_once DOL_DOCUMENT_ROOT.
'/compta/tva/class/paymentvat.class.php';
49require_once DOL_DOCUMENT_ROOT.
'/compta/paiement/class/paiement.class.php';
50require_once DOL_DOCUMENT_ROOT.
'/compta/sociales/class/paymentsocialcontribution.class.php';
51require_once DOL_DOCUMENT_ROOT.
'/compta/tva/class/tva.class.php';
52require_once DOL_DOCUMENT_ROOT.
'/salaries/class/paymentsalary.class.php';
53require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/paymentvarious.class.php';
54require_once DOL_DOCUMENT_ROOT.
'/compta/prelevement/class/bonprelevement.class.php';
55require_once DOL_DOCUMENT_ROOT.
'/don/class/don.class.php';
56require_once DOL_DOCUMENT_ROOT.
'/don/class/paymentdonation.class.php';
57require_once DOL_DOCUMENT_ROOT.
'/expensereport/class/paymentexpensereport.class.php';
58require_once DOL_DOCUMENT_ROOT.
'/loan/class/loan.class.php';
59require_once DOL_DOCUMENT_ROOT.
'/fourn/class/paiementfourn.class.php';
60require_once DOL_DOCUMENT_ROOT.
'/compta/paiement/cheque/class/remisecheque.class.php';
63$langs->loadLangs(array(
"banks",
"bills",
"categories",
"companies",
"margins",
"salaries",
"loan",
"donations",
"trips",
"members",
"compta",
"accountancy"));
67$action =
GETPOST(
'action',
'aZ09');
68$cancel =
GETPOST(
'cancel',
'alpha');
69$confirm =
GETPOST(
'confirm',
'alpha');
70$contextpage =
'bankentrieslist';
71$massaction =
GETPOST(
'massaction',
'alpha');
72$optioncss =
GETPOST(
'optioncss',
'aZ09');
76$search_debit =
GETPOST(
"search_debit",
'alpha');
77$search_credit =
GETPOST(
"search_credit",
'alpha');
78$search_type =
GETPOST(
"search_type",
'alpha');
79$search_account =
GETPOST(
"search_account",
'int') ?
GETPOST(
"search_account",
'int') :
GETPOST(
"account",
'int');
80$search_accountancy_code =
GETPOST(
'search_accountancy_code',
'alpha') ?
GETPOST(
'search_accountancy_code',
'alpha') :
GETPOST(
'accountancy_code',
'alpha');
82$search_ref =
GETPOST(
'search_ref',
'alpha');
83$search_description =
GETPOST(
"search_description",
'alpha');
88$search_thirdparty_user =
GETPOST(
"search_thirdparty",
'alpha') ?
GETPOST(
"search_thirdparty",
'alpha') :
GETPOST(
"thirdparty",
'alpha');
89$search_req_nb =
GETPOST(
"req_nb",
'alpha');
90$search_num_releve =
GETPOST(
"search_num_releve",
'alpha');
91$search_conciliated =
GETPOST(
"search_conciliated",
'int');
92$search_fk_bordereau =
GETPOST(
"search_fk_bordereau",
'int');
93$optioncss =
GETPOST(
'optioncss',
'alpha');
94$toselect =
GETPOST(
'toselect',
'array');
95$num_releve =
GETPOST(
"num_releve",
"alpha");
101$sortfield =
GETPOST(
'sortfield',
'aZ09comma');
102$sortorder =
GETPOST(
'sortorder',
'aZ09comma');
104if (empty($page) || $page < 0 ||
GETPOST(
'button_search',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
108$offset = $limit * $page;
109$pageprev = $page - 1;
110$pagenext = $page + 1;
112 $sortorder =
'desc,desc,desc';
115 $sortfield =
'b.datev,b.dateo,b.rowid';
119if ($id > 0 || !empty($ref)) {
120 $result =
$object->fetch($id, $ref);
124 $langs->load(
"errors");
125 print($langs->trans(
'ErrorRecordNotFound'));
131$contextpage =
'banktransactionlist'.(empty(
$object->id) ?
'' :
'-'.$object->id);
133$mode_balance_ok =
false;
135if (($sortfield ==
'b.datev' || $sortfield ==
'b.datev,b.dateo,b.rowid')) {
136 $sortfield =
'b.datev,b.dateo,b.rowid';
137 if ($id > 0 || !empty($ref) || $search_account > 0) {
138 $mode_balance_ok =
true;
143$hookmanager->initHooks(array(
'banktransactionlist', $contextpage));
146$extrafieldsobjectkey =
'bank';
149$extrafields->fetch_name_optionals_label($extrafieldsobjectkey);
150$search_array_options = $extrafields->getOptionalsFromPost($extrafieldsobjectkey,
'',
'search_');
153 'b.rowid' => array(
'label' => $langs->trans(
"Ref"),
'checked' => 1,
'position' => 10),
154 'b.label' => array(
'label' => $langs->trans(
"Description"),
'checked' => 1,
'position' => 20),
155 'b.dateo' => array(
'label' => $langs->trans(
"DateOperationShort"),
'checked' => -1,
'position' => 30),
156 'b.datev' => array(
'label' => $langs->trans(
"DateValueShort"),
'checked' => 1,
'position' => 40),
157 'type' => array(
'label' => $langs->trans(
"Type"),
'checked' => 1,
'position' => 50),
158 'b.num_chq' => array(
'label' => $langs->trans(
"Numero"),
'checked' => 0,
'position' => 60),
159 'b.fk_bordereau' => array(
'label' => $langs->trans(
"ChequeNumber"),
'checked' => 0,
'position' => 65),
160 'bu.label' => array(
'label' => $langs->trans(
"ThirdParty").
'/'.$langs->trans(
"User"),
'checked' => 1,
'position' => 70),
161 'ba.ref' => array(
'label' => $langs->trans(
"BankAccount"),
'checked' => (($id > 0 || !empty($ref)) ? 0 : 1),
'position' => 80),
162 'b.debit' => array(
'label' => $langs->trans(
"Debit"),
'checked' => 1,
'position' => 90),
163 'b.credit' => array(
'label' => $langs->trans(
"Credit"),
'checked' => 1,
'position' => 100),
164 'balancebefore' => array(
'label' => $langs->trans(
"BalanceBefore"),
'checked' => 0,
'position' => 110),
165 'balance' => array(
'label' => $langs->trans(
"Balance"),
'checked' => 1,
'position' => 120),
166 'b.num_releve' => array(
'label' => $langs->trans(
"AccountStatement"),
'checked' => 1,
'position' => 130),
167 'b.conciliated' => array(
'label' => $langs->trans(
"BankLineReconciled"),
'enabled' =>
$object->rappro,
'checked' => ($action ==
'reconcile' ? 1 : 0),
'position' => 140),
170include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_array_fields.tpl.php';
176$fieldvalue = (!empty($id) ?
$id : (!empty($ref) ? $ref :
''));
177$fieldtype = (!empty($ref) ?
'ref' :
'rowid');
180 $socid = $user->socid;
182 $result =
restrictedArea($user,
'banque', $fieldvalue,
'bank_account&bank_account',
'',
'', $fieldtype);
185 $socid = $user->socid;
195if (
GETPOST(
'cancel',
'alpha')) {
199if (!
GETPOST(
'confirmmassaction',
'alpha') && $massaction !=
'presend' && $massaction !=
'confirm_presend') {
203$parameters = array();
204$reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
209include DOL_DOCUMENT_ROOT.
'/core/actions_changeselectedfields.inc.php';
211if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
212 $search_dt_start =
'';
214 $search_dv_start =
'';
222 $search_description =
'';
223 $search_thirdparty_user =
'';
224 $search_num_releve =
'';
225 $search_conciliated =
'';
226 $search_fk_bordereau =
'';
229 $search_account =
"";
230 if ($id > 0 || !empty($ref)) {
235if (empty($reshook)) {
236 $objectclass =
'Account';
237 $objectlabel =
'BankTransaction';
238 $permissiontoread = $user->hasRight(
'banque',
'lire');
239 $permissiontodelete = $user->hasRight(
'banque',
'modifier');
240 $uploaddir = $conf->bank->dir_output;
241 include DOL_DOCUMENT_ROOT.
'/core/actions_massactions.inc.php';
244$rowids =
GETPOST(
'rowid',
'array');
247if ((
GETPOST(
'confirm_savestatement',
'alpha') ||
GETPOST(
'confirm_reconcile',
'alpha'))
248 && (
GETPOST(
"num_releve",
"alpha") || !empty($rowids))
249 && $user->hasRight(
'banque',
'consolidate')
250 && (!GETPOSTISSET(
'pageplusone') || (
GETPOST(
'pageplusone') ==
GETPOST(
'pageplusoneold')))) {
254 $num_releve =
GETPOST(
"num_releve",
"alpha");
259 $rowids =
GETPOST(
'rowid',
'array');
261 if (!empty($rowids) && is_array($rowids)) {
262 foreach ($rowids as $row) {
264 $result = $bankline->fetch($row);
265 $bankline->num_releve = $num_releve;
266 $result = $bankline->update_conciliation($user,
GETPOST(
"cat"),
GETPOST(
'confirm_reconcile',
'alpha') ? 1 : 0);
274 if (!$error && count($rowids) > 0) {
275 setEventMessages($langs->trans(
"XNewLinesConciliated", count($rowids)),
null);
279 $langs->load(
"errors");
284 $langs->load(
"errors");
285 setEventMessages($langs->trans(
"ErrorPleaseTypeBankTransactionReportName"),
null,
'errors');
289 $param =
'action=reconcile&contextpage=banktransactionlist&id='.((int)
$object->id).
'&search_account='.((int)
$object->id);
291 $param .=
'&page='.urlencode((
string) ($page));
294 $param .=
'&offset='.urlencode((
string) ($offset));
297 $param .=
'&limit='.((int) $limit);
299 if ($search_conciliated !=
'' && $search_conciliated !=
'-1') {
300 $param .=
'&search_conciliated='.urlencode((
string) ($search_conciliated));
302 if ($search_thirdparty_user) {
303 $param .=
'&search_thirdparty='.urlencode($search_thirdparty_user);
305 if ($search_num_releve) {
306 $param .=
'&search_num_releve='.urlencode($search_num_releve);
308 if ($search_description) {
309 $param .=
'&search_description='.urlencode($search_description);
312 $param .=
'&search_start_dtmonth='.GETPOSTINT(
'search_start_dtmonth').
'&search_start_dtday='.
GETPOSTINT(
'search_start_dtday').
'&search_start_dtyear='.
GETPOSTINT(
'search_start_dtyear');
315 $param .=
'&search_end_dtmonth='.GETPOSTINT(
'search_end_dtmonth').
'&search_end_dtday='.
GETPOSTINT(
'search_end_dtday').
'&search_end_dtyear='.
GETPOSTINT(
'search_end_dtyear');
318 $param .=
'&search_start_dvmonth='.GETPOSTINT(
'search_start_dvmonth').
'&search_start_dvday='.
GETPOSTINT(
'search_start_dvday').
'&search_start_dvyear='.
GETPOSTINT(
'search_start_dvyear');
321 $param .=
'&search_end_dvmonth='.GETPOSTINT(
'search_end_dvmonth').
'&search_end_dvday='.
GETPOSTINT(
'search_end_dvday').
'&search_end_dvyear='.
GETPOSTINT(
'search_end_dvyear');
324 $param .=
'&search_type='.urlencode($search_type);
327 $param .=
'&search_debit='.urlencode($search_debit);
329 if ($search_credit) {
330 $param .=
'&search_credit='.urlencode($search_credit);
332 $param .=
'&sortfield='.urlencode($sortfield).
'&sortorder='.urlencode($sortorder);
333 header(
'Location: '.$_SERVER[
"PHP_SELF"].
'?'.$param);
339if (
GETPOST(
'save') && !$cancel && $user->hasRight(
'banque',
'modifier')) {
348 $operation =
GETPOST(
"operation",
'alpha');
349 $num_chq =
GETPOST(
"num_chq",
'alpha');
350 $label =
GETPOST(
"label",
'alpha');
351 $cat1 =
GETPOST(
"cat1",
'alpha');
353 $bankaccountid =
$id;
359 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"Date")),
null,
'errors');
363 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"Type")),
null,
'errors');
367 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"Label")),
null,
'errors');
371 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"Amount")),
null,
'errors');
373 if (!($bankaccountid > 0)) {
375 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"BankAccount")),
null,
'errors');
385 $objecttmp->fetch($bankaccountid);
386 $insertid = $objecttmp->addline($dateop, $operation, $label, $amount, $num_chq, ($cat1 > 0 ? $cat1 : 0), $user,
'',
'', $search_accountancy_code);
389 header(
"Location: ".$_SERVER[
'PHP_SELF'].($id ?
"?id=".$id :
''));
399if ($action ==
'confirm_delete' && $confirm ==
'yes' && $user->hasRight(
'banque',
'modifier')) {
401 $result = $accline->fetch(
GETPOSTINT(
"rowid"));
402 $result = $accline->delete($user);
414$form =
new Form($db);
418$companystatic =
new Societe($db);
419$bankaccountstatic =
new Account($db);
420$userstatic =
new User($db);
423$societestatic =
new Societe($db);
424$userstatic =
new User($db);
426$loanstatic =
new Loan($db);
428$donstatic =
new Don($db);
445if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
446 $param .=
'&contextpage='.urlencode($contextpage);
448if ($limit > 0 && $limit != $conf->liste_limit) {
449 $param .=
'&limit='.((int) $limit);
452 $param .=
'&id='.urlencode((
string) (
$id));
455 $param .=
'&ref='.urlencode($ref);
457if (!empty($search_ref)) {
458 $param .=
'&search_ref='.urlencode($search_ref);
460if (!empty($search_description)) {
461 $param .=
'&search_description='.urlencode($search_description);
463if (!empty($search_type)) {
464 $param .=
'&type='.urlencode($search_type);
466if (!empty($search_thirdparty_user)) {
467 $param .=
'&search_thirdparty='.urlencode($search_thirdparty_user);
469if (!empty($search_debit)) {
470 $param .=
'&search_debit='.urlencode($search_debit);
472if (!empty($search_credit)) {
473 $param .=
'&search_credit='.urlencode($search_credit);
475if ($search_account > 0) {
476 $param .=
'&search_account='.((int) $search_account);
478if (!empty($search_num_releve)) {
479 $param .=
'&search_num_releve='.urlencode($search_num_releve);
481if ($search_conciliated !=
'' && $search_conciliated !=
'-1') {
482 $param .=
'&search_conciliated='.urlencode((
string) ($search_conciliated));
484if ($search_fk_bordereau > 0) {
485 $param .=
'$&search_fk_bordereau='.urlencode((
string) ($search_fk_bordereau));
487if ($search_bid > 0) {
488 $param .=
'&search_bid='.((int) $search_bid);
491 $param .=
'&search_start_dtmonth='.GETPOSTINT(
'search_start_dtmonth').
'&search_start_dtday='.
GETPOSTINT(
'search_start_dtday').
'&search_start_dtyear='.
GETPOSTINT(
'search_start_dtyear');
494 $param .=
'&search_end_dtmonth='.GETPOSTINT(
'search_end_dtmonth').
'&search_end_dtday='.
GETPOSTINT(
'search_end_dtday').
'&search_end_dtyear='.
GETPOSTINT(
'search_end_dtyear');
497 $param .=
'&search_start_dvmonth='.GETPOSTINT(
'search_start_dvmonth').
'&search_start_dvday='.
GETPOSTINT(
'search_start_dvday').
'&search_start_dvyear='.
GETPOSTINT(
'search_start_dvyear');
500 $param .=
'&search_end_dvmonth='.GETPOSTINT(
'search_end_dvmonth').
'&search_end_dvday='.
GETPOSTINT(
'search_end_dvday').
'&search_end_dvyear='.
GETPOSTINT(
'search_end_dvyear');
503 $param .=
'&req_nb='.urlencode($search_req_nb);
506 $param .=
'&thirdparty='.urlencode((
string) (
GETPOSTINT(
"search_thirdparty")));
508if ($optioncss !=
'') {
509 $param .=
'&optioncss='.urlencode($optioncss);
511if ($action ==
'reconcile') {
512 $param .=
'&action=reconcile';
520include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_param.tpl.php';
524$buttonreconcile =
'';
527if ($id > 0 || !empty($ref)) {
528 $title =
$object->ref.
' - '.$langs->trans(
"Transactions");
530 $title = $langs->trans(
"BankTransactions");
534llxHeader(
'', $title, $help_url,
'', 0, 0, array(), array(), $param);
537if ($id > 0 || !empty($ref)) {
539 require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/bankcateg.class.php';
542 $arrayofbankcateg = $bankcateg->fetchAll();
543 foreach ($arrayofbankcateg as $bankcategory) {
544 $options[$bankcategory->id] = $bankcategory->label;
549 print
dol_get_fiche_head($head,
'journal', $langs->trans(
"FinancialAccount"), 0,
'account');
551 $linkback =
'<a href="'.DOL_URL_ROOT.
'/compta/bank/list.php?restore_lastsearch_values=1">'.$langs->trans(
"BackToList").
'</a>';
553 dol_banner_tab($object,
'ref', $linkback, 1,
'ref',
'ref', $morehtmlref,
'', 0,
'',
'', 1);
562 if ($action !=
'reconcile') {
563 if (
$object->canBeConciliated() > 0) {
564 $allowautomaticconciliation =
false;
565 $titletoconciliatemanual = $langs->trans(
"Conciliate");
566 $titletoconciliateauto = $langs->trans(
"Conciliate");
567 if ($allowautomaticconciliation) {
568 $titletoconciliatemanual .=
' ('.$langs->trans(
"Manual").
')';
569 $titletoconciliateauto .=
' ('.$langs->trans(
"Auto").
')';
573 if ($user->hasRight(
'banque',
'consolidate')) {
575 $newparam = preg_replace(
'/search_conciliated=\d+/i',
'', $newparam);
576 $buttonreconcile =
'<a class="butAction" style="margin-bottom: 5px !important; margin-top: 5px !important" href="'.DOL_URL_ROOT.
'/compta/bank/bankentries_list.php?action=reconcile&sortfield=b.datev,b.dateo,b.rowid&sortorder=asc,asc,asc&search_conciliated=0'.$newparam.
'">'.$titletoconciliatemanual.
'</a>';
578 $buttonreconcile =
'<a class="butActionRefused" style="margin-bottom: 5px !important; margin-top: 5px !important" title="'.$langs->trans(
"NotEnoughPermissions").
'" href="#">'.$titletoconciliatemanual.
'</a>';
581 if ($allowautomaticconciliation) {
583 if ($user->hasRight(
'banque',
'consolidate')) {
585 $newparam = preg_replace(
'/search_conciliated=\d+/i',
'', $newparam);
586 $buttonreconcile .=
' <a class="butAction" style="margin-bottom: 5px !important; margin-top: 5px !important" href="'.DOL_URL_ROOT.
'/compta/bank/bankentries_list.php?action=reconcile&sortfield=b.datev,b.dateo,b.rowid&sortorder=asc,asc,asc&search_conciliated=0'.$newparam.
'">'.$titletoconciliateauto.
'</a>';
588 $buttonreconcile .=
' <a class="butActionRefused" style="margin-bottom: 5px !important; margin-top: 5px !important" title="'.$langs->trans(
"NotEnoughPermissions").
'" href="#">'.$titletoconciliateauto.
'</a>';
595$sql =
"SELECT b.rowid, b.dateo as do, b.datev as dv, b.amount, b.label, b.rappro as conciliated, b.num_releve, b.num_chq,";
596$sql .=
" b.fk_account, b.fk_type, b.fk_bordereau,";
597$sql .=
" ba.rowid as bankid, ba.ref as bankref";
599if (!empty($extrafields->attributes[
$object->table_element][
'label'])) {
600 foreach ($extrafields->attributes[
$object->table_element][
'label'] as $key => $val) {
601 $sql .= ($extrafields->attributes[
$object->table_element][
'type'][$key] !=
'separate' ?
", ef.".$key.
" as options_".$key :
'');
605$parameters = array();
606$reshook = $hookmanager->executeHooks(
'printFieldListSelect', $parameters, $object, $action);
607$sql .= $hookmanager->resPrint;
609if ($search_bid > 0) {
610 $sql .= MAIN_DB_PREFIX.
"category_bankline as l,";
612$sql .=
" ".MAIN_DB_PREFIX.
"bank_account as ba,";
613$sql .=
" ".MAIN_DB_PREFIX.
"bank as b";
614if (!empty($extrafields->attributes[
$object->table_element][
'label']) && is_array($extrafields->attributes[
$object->table_element][
'label']) && count($extrafields->attributes[
$object->table_element][
'label'])) {
615 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.$object->table_element.
"_extrafields as ef on (b.rowid = ef.fk_object)";
619$parameters = array();
620$reshook = $hookmanager->executeHooks(
'printFieldListJoin', $parameters, $object, $action);
621$sql .= $hookmanager->resPrint;
623$sql .=
" WHERE b.fk_account = ba.rowid";
624$sql .=
" AND ba.entity IN (".getEntity(
'bank_account').
")";
625if ($search_account > 0) {
626 $sql .=
" AND b.fk_account = ".((int) $search_account);
630 $sql .=
" AND b.dateo >= '".$db->idate($search_dt_start).
"'";
633 $sql .=
" AND b.dateo <= '".$db->idate($search_dt_end).
"'";
637 $sql .=
" AND b.datev >= '".$db->idate($search_dv_start).
"'";
640 $sql .=
" AND b.datev <= '".$db->idate($search_dv_end).
"'";
648if ($search_num_releve) {
651if ($search_conciliated !=
'' && $search_conciliated !=
'-1') {
652 $sql .=
" AND b.rappro = ".((int) $search_conciliated);
654if ($search_fk_bordereau > 0) {
655 $sql .=
" AND b.fk_bordereau = " . ((int) $search_fk_bordereau);
657if ($search_thirdparty_user) {
658 $sql .=
" AND (b.rowid IN ";
659 $sql .=
" ( SELECT bu.fk_bank FROM ".MAIN_DB_PREFIX.
"bank_url AS bu";
660 $sql .=
" JOIN ".MAIN_DB_PREFIX.
"bank AS b2 ON b2.rowid = bu.fk_bank";
661 $sql .=
" JOIN ".MAIN_DB_PREFIX.
"user AS subUser ON (bu.type = 'user' AND bu.url_id = subUser.rowid)";
662 $sql .=
" WHERE ".
natural_search(array(
"subUser.firstname",
"subUser.lastname"), $search_thirdparty_user, 0, 1).
")";
664 $sql .=
" OR b.rowid IN ";
665 $sql .=
" ( SELECT bu.fk_bank FROM ".MAIN_DB_PREFIX.
"bank_url AS bu";
666 $sql .=
" JOIN ".MAIN_DB_PREFIX.
"bank AS b2 ON b2.rowid = bu.fk_bank";
667 $sql .=
" JOIN ".MAIN_DB_PREFIX.
"societe AS subSoc ON (bu.type = 'company' AND bu.url_id = subSoc.rowid)";
668 $sql .=
" WHERE ".
natural_search(array(
"subSoc.nom"), $search_thirdparty_user, 0, 1);
671if ($search_description) {
672 $search_description_to_use = $search_description;
673 $arrayoffixedlabels = array(
675 'CustomerInvoicePayment',
676 'CustomerInvoicePaymentBack',
677 'SupplierInvoicePayment',
678 'SupplierInvoicePaymentBack',
680 'ExpenseReportPayment',
681 'SocialContributionPayment',
682 'SubscriptionPayment',
685 foreach ($arrayoffixedlabels as $keyforlabel) {
686 $translatedlabel = $langs->transnoentitiesnoconv($keyforlabel);
687 if (preg_match(
'/'.$search_description.
'/i', $translatedlabel)) {
688 $search_description_to_use .=
"|".$keyforlabel;
694if ($search_bid > 0) {
695 $sql .=
" AND b.rowid = l.lineid AND l.fk_categ = ".((int) $search_bid);
697if (!empty($search_type)) {
698 $sql .=
" AND b.fk_type = '".$db->escape($search_type).
"'";
703 $sql .=
' AND b.amount <= 0';
707 $sql .=
' AND b.amount >= 0';
710include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_sql.tpl.php';
713$parameters = array();
714$reshook = $hookmanager->executeHooks(
'printFieldListWhere', $parameters, $object, $action);
715$sql .= $hookmanager->resPrint;
717$sql .= $db->order($sortfield, $sortorder);
719$nbtotalofrecords =
'';
722 $result = $db->query($sql);
723 $nbtotalofrecords = $db->num_rows($result);
724 $nbtotalofpages = ceil($nbtotalofrecords / $limit);
727if (($id > 0 || !empty($ref)) && ((
string) $page ==
'')) {
730 $page = ($nbtotalofpages - 1);
731 $offset = $limit * $page;
736if ($page >= $nbtotalofpages) {
738 $page = ($nbtotalofpages - 1);
739 $offset = $limit * $page;
747if (empty($search_account)) {
748 $mode_balance_ok =
false;
751if (!empty($search_ref)) {
752 $mode_balance_ok =
false;
754if (!empty($search_description)) {
755 $mode_balance_ok =
false;
757if (!empty($search_type)) {
758 $mode_balance_ok =
false;
760if (!empty($search_debit)) {
761 $mode_balance_ok =
false;
763if (!empty($search_credit)) {
764 $mode_balance_ok =
false;
766if (!empty($search_thirdparty_user)) {
767 $mode_balance_ok =
false;
769if ($search_conciliated !=
'' && $search_conciliated !=
'-1') {
770 $mode_balance_ok =
false;
772if (!empty($search_num_releve)) {
773 $mode_balance_ok =
false;
775if (!empty($search_fk_bordereau)) {
776 $mode_balance_ok =
false;
779$sql .= $db->plimit($limit + 1, $offset);
781dol_syslog(
'compta/bank/bankentries_list.php', LOG_DEBUG);
782$resql = $db->query($sql);
784 $num = $db->num_rows($resql);
786 $arrayofselected = (!empty($toselect) && is_array($toselect)) ? $toselect : array();
789 $arrayofmassactions = array(
793 if (in_array($massaction, array(
'presend',
'predelete'))) {
794 $arrayofmassactions = array();
796 $massactionbutton = $form->selectMassAction(
'', $arrayofmassactions);
799 if ($action ==
'delete') {
800 $text = $langs->trans(
'ConfirmDeleteTransaction');
801 print $form->formconfirm($_SERVER[
'PHP_SELF'].
'?id='.
$object->id.
'&rowid='.
GETPOSTINT(
"rowid"), $langs->trans(
'DeleteTransaction'), $text,
'confirm_delete',
null,
'', 1);
805 print
'<form method="POST" action="'.$_SERVER[
"PHP_SELF"].
'" name="search_form">'.
"\n";
806 if ($optioncss !=
'') {
807 print
'<input type="hidden" name="optioncss" value="'.$optioncss.
'">';
809 print
'<input type="hidden" name="token" value="'.newToken().
'">';
810 print
'<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
811 print
'<input type="hidden" name="action" value="'.($action !=
'delete' ? $action :
'search').
'">';
813 print
'<input type="hidden" name="view" value="'.dol_escape_htmltag($view).
'">';
815 print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
816 print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
817 print
'<input type="hidden" name="page" value="'.$page.
'">';
818 print
'<input type="hidden" name="id" value="'.$id.
'">';
819 print
'<input type="hidden" name="ref" value="'.$ref.
'">';
821 print
'<input type="hidden" name="bid" value="'.GETPOSTINT(
"bid").
'">';
825 if ($user->hasRight(
'banque',
'modifier') && $action ==
'addline' &&
getDolGlobalString(
'BANK_USE_OLD_VARIOUS_PAYMENT')) {
828 print
'<table class="noborder centpercent">';
830 print
'<tr class="liste_titre">';
831 print
'<td>'.$langs->trans(
"Description").
'</td>';
832 print
'<td>'.$langs->trans(
"Date").
'</td>';
833 print
'<td> </td>';
834 print
'<td>'.$langs->trans(
"Type").
'</td>';
835 print
'<td>'.$langs->trans(
"Numero").
'</td>';
836 print
'<td class=right>'.$langs->trans(
"BankAccount").
'</td>';
837 print
'<td class=right>'.$langs->trans(
"Debit").
'</td>';
838 print
'<td class=right>'.$langs->trans(
"Credit").
'</td>';
845 print
'<td class="center"> </td>';
850 print
'<input name="label" class="flat minwidth200" type="text" value="'.GETPOST(
"label",
"alpha").
'">';
851 if (is_array($options) && count($options)) {
852 print
'<br>'.$langs->trans(
"Rubrique").
': ';
856 print
'<td class="nowrap">';
857 print $form->selectDate(empty($dateop) ? -1 : $dateop,
'op', 0, 0, 0,
'transaction');
859 print
'<td> </td>';
860 print
'<td class="nowrap">';
861 $form->select_types_paiements((
GETPOST(
'operation') ?
GETPOST(
'operation') : (
$object->
type ==
Account::TYPE_CASH ?
'LIQ' :
'')),
'operation',
'1,2', 2, 1);
864 print
'<input name="num_chq" class="flat" type="text" size="4" value="'.GETPOST(
"num_chq",
"alpha").
'">';
868 print
'<td class=right>';
869 $form->select_comptes(
GETPOSTINT(
'add_account') ?
GETPOSTINT(
'add_account') : $search_account,
'add_account', 0,
'', 1, (
$id > 0 || !empty($ref) ?
' disabled="disabled"' :
''));
872 print
'<td class="right"><input name="adddebit" class="flat" type="text" size="4" value="'.GETPOST(
"adddebit",
"alpha").
'"></td>';
873 print
'<td class="right"><input name="addcredit" class="flat" type="text" size="4" value="'.GETPOST(
"addcredit",
"alpha").
'"></td>';
880 print
'<td class="center">';
881 print
'<input type="submit" name="save" class="button buttongen marginbottomonly button-add" value="'.$langs->trans(
"Add").
'"><br>';
882 print
'<input type="submit" name="cancel" class="button buttongen marginbottomonly button-cancel" value="'.$langs->trans(
"Cancel").
'">';
890 $urlajax = DOL_URL_ROOT.
'/core/ajax/bankconciliate.php?token='.
currentToken();
892 <script type="text/javascript">
894 $("a.ajaxforbankoperationchange").each(function(){
895 var current = $(this);
896 current.click(function()
898 var url = "'.$urlajax.
'&"+current.attr("href").split("?")[1];
899 $.get(url, function(data)
903 current.parent().parent().find(".spanforajaxedit").replaceWith(data);
918 if ($action !=
'addline') {
920 if (
$object->status == $object::STATUS_CLOSED) {
921 $newcardbutton =
dolGetButtonTitle($langs->trans(
'AddBankRecord'),
'Bank account is closed',
'fa fa-plus-circle', $_SERVER[
"PHP_SELF"].
'?action=addline&token='.
newToken().
'&page='.$page.$param,
'', -2);
924 $newcardbutton =
dolGetButtonTitle($langs->trans(
'AddBankRecord'),
'',
'fa fa-plus-circle', DOL_URL_ROOT.
'/compta/bank/various_payment/card.php?action=create&accountid='.urlencode($search_account).
'&backtopage='.urlencode($_SERVER[
'PHP_SELF'].
'?id='.urlencode($search_account)),
'', $user->rights->banque->modifier);
926 $newcardbutton =
dolGetButtonTitle($langs->trans(
'AddBankRecord'),
'',
'fa fa-plus-circle', $_SERVER[
"PHP_SELF"].
'?action=addline&token='.
newToken().
'&page='.$page.$param,
'', $user->rights->banque->modifier);
930 $newcardbutton =
dolGetButtonTitle($langs->trans(
'AddBankRecord'),
'Direct input in bank lines has been disabled by option BANK_DISABLE_DIRECT_INPUT',
'fa fa-plus-circle', $_SERVER[
"PHP_SELF"].
'?action=addline&token='.
newToken().
'&page='.$page.$param,
'', -2);
942 if ($action !=
'addline' && $action !=
'reconcile') {
943 $morehtml .= $buttonreconcile;
946 $morehtmlright =
'<!-- Add New button -->'.$newcardbutton;
948 $picto =
'bank_account';
949 if ($id > 0 || !empty($ref)) {
954 print_barre_liste($langs->trans(
"BankTransactions"), $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton.$morehtml, $num, $nbtotalofrecords, $picto, 0, $morehtmlright,
'', $limit, 0, 0, 1);
957 if ($user->hasRight(
'banque',
'consolidate') && $action ==
'reconcile') {
960 $listoflastreceipts =
'';
961 $sql =
"SELECT DISTINCT num_releve FROM ".MAIN_DB_PREFIX.
"bank";
962 $sql .=
" WHERE fk_account = ".((int)
$object->id).
" AND num_releve IS NOT NULL";
963 $sql .= $db->order(
"num_releve",
"DESC");
964 $sql .= $db->plimit($nbmax + 1);
966 $last_receipts = array();
970 $resqlr = $db->query($sql);
973 $numr = $db->num_rows($resqlr);
974 while (($i < $numr) && ($i < $nbmax)) {
975 $objr = $db->fetch_object($resqlr);
977 $last_receipts[] = $objr->num_releve;
979 $last_releve = $objr->num_releve;
987 print
'<!-- form with reconciliation input -->'.
"\n";
988 print
'<div class="valignmiddle inline-block" style="padding-right: 20px;">';
990 print
'<strong>'.$langs->trans(
"InputReceiptNumber").
'</strong>: ';
991 print
'<input class="flat width100 center" id="num_releve" list="num_releve_list" name="num_releve" type="text" value="'.(GETPOST(
'num_releve') ?
GETPOST(
'num_releve') :
'').
'">';
993 $texttoshow = $langs->trans(
"InputReceiptNumber").
': ';
994 $yyyy =
dol_substr($langs->transnoentitiesnoconv(
"Year"), 0, 1).substr($langs->transnoentitiesnoconv(
"Year"), 0, 1).substr($langs->transnoentitiesnoconv(
"Year"), 0, 1).substr($langs->transnoentitiesnoconv(
"Year"), 0, 1);
995 $mm =
dol_substr($langs->transnoentitiesnoconv(
"Month"), 0, 1).substr($langs->transnoentitiesnoconv(
"Month"), 0, 1);
996 $dd =
dol_substr($langs->transnoentitiesnoconv(
"Day"), 0, 1).substr($langs->transnoentitiesnoconv(
"Day"), 0, 1);
997 $placeholder = $yyyy.$mm;
998 $placeholder2 = $yyyy.$mm;
999 $placeholder2 .=
' '.$langs->trans(
"or").
' ';
1000 $placeholder2 .= $yyyy.$mm.$dd;
1001 if (!$placeholder) {
1002 $texttoshow .= $langs->trans(
"InputReceiptNumberBis");
1005 print
'<input class="flat width100 center" pattern="[0-9]+" title="'.dol_escape_htmltag($texttoshow.
': '.$placeholder2).
'" id="num_releve" list="num_releve_list" name="num_releve" placeholder="'.
dol_escape_htmltag($placeholder).
'" type="text" value="'.(
GETPOSTINT(
'num_releve') ?
GETPOSTINT(
'num_releve') :
'').
'">';
1009 if (!empty($last_receipts)) {
1010 print
'<datalist id="num_releve_list">';
1011 foreach ($last_receipts as $num_releve) {
1012 print
'<option value="'.$num_releve.
'"></option>';
1014 print
'</datalist>';
1018 if (is_array($options) && count($options)) {
1019 print $langs->trans(
"EventualyAddCategory").
': ';
1022 print
'<br><div style="margin-top: 5px;"><span class="opacitymedium">'.$langs->trans(
"ThenCheckLinesAndConciliate").
'</span> ';
1023 print
'<input type="submit" class="button" name="confirm_reconcile" value="'.$langs->trans(
"Conciliate").
'">';
1024 print
' <span class="opacitymedium">'.$langs->trans(
"otherwise").
'</span> ';
1025 print
'<input type="submit" class="button small" name="confirm_savestatement" value="'.$langs->trans(
"SaveStatementOnly").
'">';
1026 print
' <span class="opacitymedium">'.$langs->trans(
"or").
'</span> ';
1027 print
'<input type="submit" name="cancel" class="button button-cancel small" value="'.$langs->trans(
"Cancel").
'">';
1031 print $langs->trans(
"LastAccountStatements").
' : ';
1033 foreach ($last_receipts as $num_releve) {
1034 $newentreyinlist =
'<a target="_blank" href="'.DOL_URL_ROOT.
'/compta/bank/releve.php?account='.((int) $id).
'&num='.urlencode($num_releve).
'">';
1035 $newentreyinlist .=
img_picto($num_releve,
'generic',
'class="paddingright"');
1037 $listoflastreceipts = $newentreyinlist.$listoflastreceipts;
1039 if ($numr >= $nbmax) {
1040 $listoflastreceipts =
"... ".$listoflastreceipts;
1042 print $listoflastreceipts;
1044 print
'<b>'.$langs->trans(
"None").
'</b>';
1050 <script type="text/javascript">
1051 $("#num_releve").val("' . $last_releve.
'");
1060 $param .=
'&page='.urlencode((
string) ($page));
1063 $moreforfilter =
'';
1064 $moreforfilter .=
'<div class="divsearchfield">';
1065 $moreforfilter .= $langs->trans(
'DateOperationShort');
1066 $moreforfilter .= ($conf->browser->layout ==
'phone' ?
'<br>' :
' ');
1067 $moreforfilter .=
'<div class="nowrap inline-block">';
1068 $moreforfilter .= $form->selectDate($search_dt_start,
'search_start_dt', 0, 0, 1,
"search_form", 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'From'));
1069 $moreforfilter .=
'</div>';
1070 $moreforfilter .= ($conf->browser->layout ==
'phone' ?
'' :
' ');
1071 $moreforfilter .=
'<div class="nowrap inline-block">';
1072 $moreforfilter .= $form->selectDate($search_dt_end,
'search_end_dt', 0, 0, 1,
"search_form", 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'to'));
1073 $moreforfilter .=
'</div>';
1074 $moreforfilter .=
'</div>';
1076 $moreforfilter .=
'<div class="divsearchfield">';
1077 $moreforfilter .= $langs->trans(
'DateValueShort');
1078 $moreforfilter .= ($conf->browser->layout ==
'phone' ?
'<br>' :
' ');
1079 $moreforfilter .=
'<div class="nowrap inline-block">';
1080 $moreforfilter .= $form->selectDate($search_dv_start,
'search_start_dv', 0, 0, 1,
"search_form", 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'From'));
1081 $moreforfilter .=
'</div>';
1082 $moreforfilter .= ($conf->browser->layout ==
'phone' ?
'' :
' ');
1083 $moreforfilter .=
'<div class="nowrap inline-block">';
1084 $moreforfilter .= $form->selectDate($search_dv_end,
'search_end_dv', 0, 0, 1,
"search_form", 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'to'));
1085 $moreforfilter .=
'</div>';
1086 $moreforfilter .=
'</div>';
1088 if (isModEnabled(
'category')) {
1090 if (isModEnabled(
'category') && $user->hasRight(
'categorie',
'lire')) {
1091 $langs->load(
'categories');
1094 $moreforfilter .=
'<div class="divsearchfield">';
1095 $tmptitle = $langs->trans(
'RubriquesTransactions');
1096 $cate_arbo = $form->select_all_categories(Categorie::TYPE_BANK_LINE, $search_bid,
'parent',
null,
null, 1);
1097 $moreforfilter .=
img_picto($tmptitle,
'category',
'class="pictofixedwidth"').$form->selectarray(
'search_bid', $cate_arbo, $search_bid, $tmptitle, 0, 0,
'', 0, 0, 0,
'',
'', 1);
1098 $moreforfilter .=
'</div>';
1102 $parameters = array();
1103 $reshook = $hookmanager->executeHooks(
'printFieldPreListTitle', $parameters, $object, $action);
1104 if (empty($reshook)) {
1105 $moreforfilter .= $hookmanager->resPrint;
1107 $moreforfilter = $hookmanager->resPrint;
1110 if ($moreforfilter) {
1111 print
'<div class="liste_titre liste_titre_bydiv centpercent">';
1112 print $moreforfilter;
1113 print
'</div>'.
"\n";
1116 $varpage = empty($contextpage) ? $_SERVER[
"PHP_SELF"] : $contextpage;
1117 $htmlofselectarray = $form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage,
getDolGlobalString(
'MAIN_CHECKBOX_LEFT_COLUMN'));
1118 $selectedfields = ($mode !=
'kanban' ? $htmlofselectarray :
'');
1119 $selectedfields .= ($action ==
'reconcile' ? $form->showCheckAddButtons(
'checkforselect', 1) :
'');
1122 if ($action ==
'reconcile') {
1123 $arrayfields[
'b.num_releve'][
'checked'] = 1;
1126 print
'<div class="div-table-responsive">';
1127 print
'<table class="tagtable liste'.($moreforfilter ?
" listwithfilterbefore" :
"").
'">'.
"\n";
1131 print
'<tr class="liste_titre_filter">';
1134 print
'<td class="liste_titre valignmiddle center">';
1135 $searchpicto = $form->showFilterButtons(
'left');
1141 if (!empty($arrayfields[
'b.rowid'][
'checked'])) {
1142 print
'<td class="liste_titre">';
1143 print
'<input type="text" class="flat" name="search_ref" size="2" value="'.dol_escape_htmltag($search_ref).
'">';
1146 if (!empty($arrayfields[
'b.label'][
'checked'])) {
1147 print
'<td class="liste_titre">';
1148 print
'<input type="text" class="flat maxwidth100" name="search_description" value="'.dol_escape_htmltag($search_description).
'">';
1151 if (!empty($arrayfields[
'b.dateo'][
'checked'])) {
1152 print
'<td class="liste_titre"> </td>';
1154 if (!empty($arrayfields[
'b.datev'][
'checked'])) {
1155 print
'<td class="liste_titre"> </td>';
1158 if (!empty($arrayfields[
'type'][
'checked'])) {
1159 print
'<td class="liste_titre center">';
1160 print $form->select_types_paiements(empty($search_type) ?
'' : $search_type,
'search_type',
'', 2, 1, 1, 0, 1,
'maxwidth100', 1);
1164 if (!empty($arrayfields[
'b.num_chq'][
'checked'])) {
1165 print
'<td class="liste_titre center"><input type="text" class="flat" name="req_nb" value="'.dol_escape_htmltag($search_req_nb).
'" size="2"></td>';
1168 if (!empty($arrayfields[
'b.fk_bordereau'][
'checked'])) {
1169 print
'<td class="liste_titre center"><input type="text" class="flat width50" name="search_fk_bordereau" value="'.dol_escape_htmltag($search_fk_bordereau).
'"></td>';
1172 if (!empty($arrayfields[
'bu.label'][
'checked'])) {
1173 print
'<td class="liste_titre"><input type="text" class="flat maxwidth75" name="search_thirdparty" value="'.dol_escape_htmltag($search_thirdparty_user).
'"></td>';
1176 if (!empty($arrayfields[
'ba.ref'][
'checked'])) {
1177 print
'<td class="liste_titre">';
1178 $form->select_comptes($search_account,
'search_account', 0,
'', 1, ($id > 0 || !empty($ref) ?
' disabled="disabled"' :
''), 0,
'maxwidth100');
1182 if (!empty($arrayfields[
'b.debit'][
'checked'])) {
1183 print
'<td class="liste_titre right">';
1184 print
'<input type="text" class="flat width50" name="search_debit" value="'.dol_escape_htmltag($search_debit).
'">';
1188 if (!empty($arrayfields[
'b.credit'][
'checked'])) {
1189 print
'<td class="liste_titre right">';
1190 print
'<input type="text" class="flat width50" name="search_credit" value="'.dol_escape_htmltag($search_credit).
'">';
1194 if (!empty($arrayfields[
'balancebefore'][
'checked'])) {
1195 print
'<td class="liste_titre right">';
1196 $htmltext = $langs->trans(
"BalanceVisibilityDependsOnSortAndFilters", $langs->transnoentitiesnoconv(
"DateValue"));
1197 print $form->textwithpicto(
'', $htmltext, 1);
1201 if (!empty($arrayfields[
'balance'][
'checked'])) {
1202 print
'<td class="liste_titre right">';
1203 $htmltext = $langs->trans(
"BalanceVisibilityDependsOnSortAndFilters", $langs->transnoentitiesnoconv(
"DateValue"));
1204 print $form->textwithpicto(
'', $htmltext, 1);
1208 if (!empty($arrayfields[
'b.num_releve'][
'checked'])) {
1210 print
'<td class="liste_titre center"><input type="text" class="flat width50" name="search_num_releve" value="'.dol_escape_htmltag($search_num_releve).
'"></td>';
1213 if (!empty($arrayfields[
'b.conciliated'][
'checked'])) {
1214 print
'<td class="liste_titre center parentonrightofpage">';
1215 print $form->selectyesno(
'search_conciliated', $search_conciliated, 1,
false, 1, 1,
'search_status onrightofpage width75');
1219 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_input.tpl.php';
1221 print
'<td class="nowraponall center"></td>';
1225 print
'<td class="liste_titre valignmiddle center">';
1228 $searchpicto = $form->showFilterButtons();
1234 $totalarray = array();
1235 $totalarray[
'nbfield'] = 0;
1238 print
'<tr class="liste_titre">';
1241 print
getTitleFieldOfList($selectedfields, 0, $_SERVER[
"PHP_SELF"],
'',
'',
'',
'', $sortfield, $sortorder,
'center maxwidthsearch ').
"\n";
1242 $totalarray[
'nbfield']++;
1244 if (!empty($arrayfields[
'b.rowid'][
'checked'])) {
1245 print_liste_field_titre($arrayfields[
'b.rowid'][
'label'], $_SERVER[
'PHP_SELF'],
'b.rowid',
'', $param,
'', $sortfield, $sortorder);
1246 $totalarray[
'nbfield']++;
1248 if (!empty($arrayfields[
'b.label'][
'checked'])) {
1249 print_liste_field_titre($arrayfields[
'b.label'][
'label'], $_SERVER[
'PHP_SELF'],
'b.label',
'', $param,
'', $sortfield, $sortorder);
1250 $totalarray[
'nbfield']++;
1252 if (!empty($arrayfields[
'b.dateo'][
'checked'])) {
1253 print_liste_field_titre($arrayfields[
'b.dateo'][
'label'], $_SERVER[
'PHP_SELF'],
'b.dateo',
'', $param,
'', $sortfield, $sortorder,
"center ");
1254 $totalarray[
'nbfield']++;
1256 if (!empty($arrayfields[
'b.datev'][
'checked'])) {
1257 print_liste_field_titre($arrayfields[
'b.datev'][
'label'], $_SERVER[
'PHP_SELF'],
'b.datev,b.dateo,b.rowid',
'', $param,
'', $sortfield, $sortorder,
'center ');
1258 $totalarray[
'nbfield']++;
1260 if (!empty($arrayfields[
'type'][
'checked'])) {
1261 print_liste_field_titre($arrayfields[
'type'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'', $sortfield, $sortorder,
'center ');
1262 $totalarray[
'nbfield']++;
1264 if (!empty($arrayfields[
'b.num_chq'][
'checked'])) {
1265 print_liste_field_titre($arrayfields[
'b.num_chq'][
'label'], $_SERVER[
'PHP_SELF'],
'b.num_chq',
'', $param,
'', $sortfield, $sortorder,
"center ");
1266 $totalarray[
'nbfield']++;
1268 if (!empty($arrayfields[
'b.fk_bordereau'][
'checked'])) {
1269 print_liste_field_titre($arrayfields[
'b.fk_bordereau'][
'label'], $_SERVER[
'PHP_SELF'],
'b.fk_bordereau',
'', $param,
'', $sortfield, $sortorder,
"center ");
1270 $totalarray[
'nbfield']++;
1272 if (!empty($arrayfields[
'bu.label'][
'checked'])) {
1273 print_liste_field_titre($arrayfields[
'bu.label'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'', $sortfield, $sortorder);
1274 $totalarray[
'nbfield']++;
1276 if (!empty($arrayfields[
'ba.ref'][
'checked'])) {
1277 print_liste_field_titre($arrayfields[
'ba.ref'][
'label'], $_SERVER[
'PHP_SELF'],
'ba.ref',
'', $param,
'', $sortfield, $sortorder);
1278 $totalarray[
'nbfield']++;
1280 if (!empty($arrayfields[
'b.debit'][
'checked'])) {
1281 print_liste_field_titre($arrayfields[
'b.debit'][
'label'], $_SERVER[
'PHP_SELF'],
'b.amount',
'', $param,
'', $sortfield, $sortorder,
"right ");
1282 $totalarray[
'nbfield']++;
1284 if (!empty($arrayfields[
'b.credit'][
'checked'])) {
1285 print_liste_field_titre($arrayfields[
'b.credit'][
'label'], $_SERVER[
'PHP_SELF'],
'b.amount',
'', $param,
'', $sortfield, $sortorder,
"right ");
1286 $totalarray[
'nbfield']++;
1288 if (!empty($arrayfields[
'balancebefore'][
'checked'])) {
1289 print_liste_field_titre($arrayfields[
'balancebefore'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'', $sortfield, $sortorder,
"right ");
1290 $totalarray[
'nbfield']++;
1292 if (!empty($arrayfields[
'balance'][
'checked'])) {
1293 print_liste_field_titre($arrayfields[
'balance'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'', $sortfield, $sortorder,
"right ");
1294 $totalarray[
'nbfield']++;
1296 if (!empty($arrayfields[
'b.num_releve'][
'checked'])) {
1298 print_liste_field_titre($arrayfields[
'b.num_releve'][
'label'], $_SERVER[
'PHP_SELF'],
'b.num_releve',
'', $param,
'', $sortfield, $sortorder,
"center ");
1299 $totalarray[
'nbfield']++;
1301 if (!empty($arrayfields[
'b.conciliated'][
'checked'])) {
1302 print_liste_field_titre($arrayfields[
'b.conciliated'][
'label'], $_SERVER[
'PHP_SELF'],
'b.rappro',
'', $param,
'', $sortfield, $sortorder,
"center ");
1303 $totalarray[
'nbfield']++;
1307 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_title.tpl.php';
1309 $parameters = array(
'arrayfields' => $arrayfields,
'param' => $param,
'sortfield' => $sortfield,
'sortorder' => $sortorder,
'totalarray' => &$totalarray);
1310 $reshook = $hookmanager->executeHooks(
'printFieldListTitle', $parameters, $object, $action);
1311 print $hookmanager->resPrint;
1313 print
'<td class="nowraponall center"></td>';
1314 $totalarray[
'nbfield']++;
1318 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'', $sortfield, $sortorder,
'maxwidthsearch center ');
1319 $totalarray[
'nbfield']++;
1325 $balancecalculated =
false;
1326 $posconciliatecol = 0;
1327 $cachebankaccount = array();
1333 $savnbfield = $totalarray[
'nbfield'];
1334 $totalarray = array();
1335 $totalarray[
'nbfield'] = 0;
1336 $totalarray[
'totaldeb'] = 0;
1337 $totalarray[
'totalcred'] = 0;
1339 $imaxinloop = ($limit ? min($num, $limit) : $num);
1340 while ($i < $imaxinloop) {
1341 $objp = $db->fetch_object($resql);
1342 $links = $bankaccountstatic->get_url($objp->rowid);
1344 if (!$balancecalculated && (!empty($arrayfields[
'balancebefore'][
'checked']) || !empty($arrayfields[
'balance'][
'checked'])) && ($mode_balance_ok || $search_conciliated ===
'0')) {
1345 if (!$search_account) {
1346 dol_print_error(
null,
'account is not defined but $mode_balance_ok is true');
1353 $sqlforbalance =
'SELECT SUM(b.amount) as previoustotal';
1354 $sqlforbalance .=
" FROM ";
1355 $sqlforbalance .=
" ".MAIN_DB_PREFIX.
"bank_account as ba,";
1356 $sqlforbalance .=
" ".MAIN_DB_PREFIX.
"bank as b";
1357 $sqlforbalance .=
" WHERE b.fk_account = ba.rowid";
1358 $sqlforbalance .=
" AND ba.entity IN (".getEntity(
'bank_account').
")";
1359 $sqlforbalance .=
" AND b.fk_account = ".((int) $search_account);
1361 $sqlforbalance .=
" AND (b.datev < '".$db->idate($db->jdate($objp->dv)).
"' OR (b.datev = '".$db->idate($db->jdate($objp->dv)).
"' AND (b.dateo < '".$db->idate($db->jdate($objp->do)).
"' OR (b.dateo = '".$db->idate($db->jdate($objp->do)).
"' AND b.rowid < ".$objp->rowid.
"))))";
1362 $resqlforbalance = $db->query($sqlforbalance);
1365 if ($resqlforbalance) {
1366 $objforbalance = $db->fetch_object($resqlforbalance);
1367 if ($objforbalance) {
1369 if ($sortfield ==
'b.datev,b.dateo,b.rowid' && ($sortorder ==
'desc' || $sortorder ==
'desc,desc' || $sortorder ==
'desc,desc,desc')) {
1370 $balancebefore = $objforbalance->previoustotal + ($sign * $objp->amount);
1373 $balance = $objforbalance->previoustotal;
1380 $balancecalculated =
true;
1383 if ($user->hasRight(
'banque',
'consolidate') && $action ==
'reconcile') {
1384 $tmpnbfieldbeforebalance = 0;
1385 $tmpnbfieldafterbalance = 0;
1386 $balancefieldfound = 0;
1387 foreach ($arrayfields as $key => $val) {
1388 if ($key ==
'balancebefore' || $key ==
'balance') {
1389 $balancefieldfound++;
1392 if (!empty($arrayfields[$key][
'checked'])) {
1393 if (!$balancefieldfound) {
1394 $tmpnbfieldbeforebalance++;
1396 $tmpnbfieldafterbalance++;
1401 $element = $extrafieldsobjectkey;
1402 if (!empty($extrafields->attributes[$element][
'label']) && is_array($extrafields->attributes[$element][
'label']) && count($extrafields->attributes[$element][
'label'])) {
1403 foreach ($extrafields->attributes[$element][
'label'] as $key => $val) {
1404 if (!empty($arrayfields[
"ef.".$key][
'checked'])) {
1405 if (!empty($arrayfields[$key][
'checked'])) {
1406 if (!$balancefieldfound) {
1407 $tmpnbfieldbeforebalance++;
1409 $tmpnbfieldafterbalance++;
1416 print
'<tr class="oddeven trforbreak">';
1421 if ($tmpnbfieldbeforebalance) {
1422 print
'<td colspan="'.$tmpnbfieldbeforebalance.
'">';
1427 if (!empty($arrayfields[
'balancebefore'][
'checked'])) {
1428 print
'<td class="right">';
1429 if ($search_conciliated !==
'0') {
1430 if ($sortfield ==
'b.datev,b.dateo,b.rowid' && ($sortorder ==
'desc' || $sortorder ==
'desc,desc' || $sortorder ==
'desc,desc,desc')) {
1438 if (!empty($arrayfields[
'balance'][
'checked'])) {
1439 print
'<td class="right">';
1440 if ($search_conciliated !==
'0') {
1441 if ($sortfield ==
'b.datev,b.dateo,b.rowid' && ($sortorder ==
'desc' || $sortorder ==
'desc,desc' || $sortorder ==
'desc,desc,desc')) {
1450 if (!empty($arrayfields[
'b.num_releve'][
'checked'])) {
1455 print
'<td colspan="'.($tmpnbfieldafterbalance).
'">';
1468 if ($sortfield ==
'b.datev,b.dateo,b.rowid' && ($sortorder ==
'desc' || $sortorder ==
'desc,desc' || $sortorder ==
'desc,desc,desc')) {
1469 $balance =
price2num($balancebefore,
'MT');
1470 $balancebefore =
price2num($balancebefore - ($sign * $objp->amount),
'MT');
1472 $balancebefore =
price2num($balance,
'MT');
1473 $balance =
price2num($balance + ($sign * $objp->amount),
'MT');
1476 if (empty($cachebankaccount[$objp->bankid])) {
1477 $bankaccounttmp =
new Account($db);
1478 $bankaccounttmp->fetch($objp->bankid);
1479 $cachebankaccount[$objp->bankid] = $bankaccounttmp;
1480 $bankaccount = $bankaccounttmp;
1482 $bankaccount = $cachebankaccount[$objp->bankid];
1486 $backgroundcolor =
"class='oddeven'";
1488 if ($objp->amount < 0) {
1490 $backgroundcolor =
'style="background: '.$color.
';"';
1493 $backgroundcolor =
'style="background: '.$color.
';"';
1497 $banklinestatic->id = $objp->rowid;
1498 $banklinestatic->ref = (string) $objp->rowid;
1500 print
'<tr class="oddeven" '.$backgroundcolor.
'>';
1504 print
'<td class="center">';
1505 if (!$objp->conciliated && $action ==
'reconcile') {
1506 print
'<input class="flat checkforselect" name="rowid['.$objp->rowid.
']" type="checkbox" name="toselect[]" value="'.$objp->rowid.
'" size="1"'.(!empty($tmparray[$objp->rowid]) ?
' checked' :
'').
'>';
1510 $totalarray[
'nbfield']++;
1515 if (!empty($arrayfields[
'b.rowid'][
'checked'])) {
1516 print
'<td class="nowrap left">';
1517 print $banklinestatic->getNomUrl(1);
1520 $totalarray[
'nbfield']++;
1525 if (!empty($arrayfields[
'b.label'][
'checked'])) {
1529 preg_match(
'/\((.+)\)/i', $objp->label, $reg);
1530 if (!empty($reg[1]) && $langs->trans($reg[1]) != $reg[1]) {
1532 $labeltoshow = $langs->trans($reg[1]);
1534 if ($objp->label ==
'(payment_salary)') {
1535 $labeltoshow = $langs->trans(
"SalaryPayment");
1538 $titletoshow = $objp->label;
1543 print
'<td class="tdoverflowmax250"'.($titletoshow ?
' title="'.dol_escape_htmltag($titletoshow).
'"' :
'').
'>';
1546 $cachebankaccount = array();
1547 foreach ($links as $key => $val) {
1548 print
'<!-- '.$links[$key][
'type'].
' -->';
1549 if ($links[$key][
'type'] ==
'withdraw') {
1550 $banktransferstatic->id = $links[$key][
'url_id'];
1551 $banktransferstatic->ref = $links[$key][
'label'];
1552 print $banktransferstatic->getNomUrl(0).($labeltoshow ?
' ' :
'');
1553 } elseif ($links[$key][
'type'] ==
'payment') {
1554 $paymentstatic->id = $links[$key][
'url_id'];
1555 $paymentstatic->ref = (string) $links[$key][
'url_id'];
1556 $paymentstatic->date = $db->jdate($objp->do);
1557 print $paymentstatic->getNomUrl(2).($labeltoshow ?
' ' :
'');
1558 } elseif ($links[$key][
'type'] ==
'payment_supplier') {
1559 $paymentsupplierstatic->id = $links[$key][
'url_id'];
1560 $paymentsupplierstatic->ref = (string) $links[$key][
'url_id'];
1561 print $paymentsupplierstatic->getNomUrl(2).($labeltoshow ?
' ' :
'');
1562 } elseif ($links[$key][
'type'] ==
'payment_sc') {
1563 $paymentscstatic->id = $links[$key][
'url_id'];
1564 $paymentscstatic->ref = (string) $links[$key][
'url_id'];
1565 $paymentscstatic->label = $links[$key][
'label'];
1566 print $paymentscstatic->getNomUrl(2).($labeltoshow ?
' ' :
'');
1567 } elseif ($links[$key][
'type'] ==
'payment_vat') {
1568 $paymentvatstatic->id = $links[$key][
'url_id'];
1569 $paymentvatstatic->ref = (string) $links[$key][
'url_id'];
1570 print $paymentvatstatic->getNomUrl(2).($labeltoshow ?
' ' :
'');
1571 } elseif ($links[$key][
'type'] ==
'payment_salary') {
1572 $paymentsalstatic->id = $links[$key][
'url_id'];
1573 $paymentsalstatic->ref = (string) $links[$key][
'url_id'];
1574 $paymentsalstatic->label = $links[$key][
'label'];
1575 print $paymentsalstatic->getNomUrl(2).($labeltoshow ?
' ' :
'');
1576 } elseif ($links[$key][
'type'] ==
'payment_loan') {
1577 print
'<a href="'.DOL_URL_ROOT.
'/loan/payment/card.php?id='.$links[$key][
'url_id'].
'">';
1578 print
' '.img_object($langs->trans(
'ShowPayment'),
'payment').
' ';
1579 print
'</a>'.($labeltoshow ?
' ' :
'');
1580 } elseif ($links[$key][
'type'] ==
'payment_donation') {
1581 $paymentdonationstatic->id = $links[$key][
'url_id'];
1582 $paymentdonationstatic->ref = (string) $links[$key][
'url_id'];
1583 print $paymentdonationstatic->getNomUrl(2).($labeltoshow ?
' ' :
'');
1584 } elseif ($links[$key][
'type'] ==
'payment_expensereport') {
1585 $paymentexpensereportstatic->id = $links[$key][
'url_id'];
1586 $paymentexpensereportstatic->ref = (string) $links[$key][
'url_id'];
1587 print $paymentexpensereportstatic->getNomUrl(2).($labeltoshow ?
' ' :
'');
1588 } elseif ($links[$key][
'type'] ==
'payment_various') {
1589 $paymentvariousstatic->id = $links[$key][
'url_id'];
1590 $paymentvariousstatic->ref = (string) $links[$key][
'url_id'];
1591 print $paymentvariousstatic->getNomUrl(2).($labeltoshow ?
' ' :
'');
1592 } elseif ($links[$key][
'type'] ==
'banktransfert') {
1594 if ($objp->amount > 0) {
1595 $banklinestatic->fetch($links[$key][
'url_id']);
1596 $bankstatic->id = $banklinestatic->fk_account;
1597 $bankstatic->label = $banklinestatic->bank_account_ref;
1598 print $langs->trans(
"TransferFrom").
' ';
1599 print $bankstatic->getNomUrl(1,
'transactions');
1600 print
' '.$langs->trans(
"toward").
' ';
1601 $bankstatic->id = $objp->bankid;
1602 $bankstatic->label = $objp->bankref;
1603 print $bankstatic->getNomUrl(1,
'');
1604 print($labeltoshow ?
' - ' :
'');
1606 $bankstatic->id = $objp->bankid;
1607 $bankstatic->label = $objp->bankref;
1608 print $langs->trans(
"TransferFrom").
' ';
1609 print $bankstatic->getNomUrl(1,
'');
1610 print
' '.$langs->trans(
"toward").
' ';
1611 $banklinestatic->fetch($links[$key][
'url_id']);
1612 $bankstatic->id = $banklinestatic->fk_account;
1613 $bankstatic->label = $banklinestatic->bank_account_ref;
1614 print $bankstatic->getNomUrl(1,
'transactions');
1615 print($labeltoshow ?
' - ' :
'');
1618 } elseif ($links[$key][
'type'] ==
'company') {
1619 } elseif ($links[$key][
'type'] ==
'user') {
1620 } elseif ($links[$key][
'type'] ==
'member') {
1621 } elseif ($links[$key][
'type'] ==
'sc') {
1622 } elseif ($links[$key][
'type'] ==
'vat') {
1623 } elseif ($links[$key][
'type'] ==
'salary') {
1627 print
'<a href="'.$links[$key][
'url'].$links[$key][
'url_id'].
'">';
1628 if (preg_match(
'/^\((.*)\)$/i', $links[$key][
'label'], $reg)) {
1630 if ($reg[1] ==
'paiement') {
1631 $reg[1] =
'Payment';
1633 print $langs->trans($reg[1]);
1635 print $links[$key][
'label'];
1637 print
'</a>'.($labeltoshow ?
' - ' :
'');
1645 $totalarray[
'nbfield']++;
1650 if (!empty($arrayfields[
'b.dateo'][
'checked'])) {
1651 print
'<td class="nowraponall center">';
1652 print
'<span class="spanforajaxedit" id="dateoperation_'.$objp->rowid.
'" title="'.
dol_print_date($db->jdate($objp->do),
"day").
'">'.
dol_print_date($db->jdate($objp->do),
"dayreduceformat").
"</span>";
1654 print
'<span class="inline-block">';
1655 print
'<a class="ajaxforbankoperationchange" href="'.$_SERVER[
'PHP_SELF'].
'?action=doprev&account='.$objp->bankid.
'&rowid='.$objp->rowid.
'">';
1657 print
'<a class="ajaxforbankoperationchange" href="'.$_SERVER[
'PHP_SELF'].
'?action=donext&account='.$objp->bankid.
'&rowid='.$objp->rowid.
'">';
1662 $totalarray[
'nbfield']++;
1667 if (!empty($arrayfields[
'b.datev'][
'checked'])) {
1668 print
'<td class="nowraponall center">';
1669 print
'<span class="spanforajaxedit" id="datevalue_'.$objp->rowid.
'" title="'.
dol_print_date($db->jdate($objp->dv),
"day").
'">'.
dol_print_date($db->jdate($objp->dv),
"dayreduceformat").
"</span>";
1671 print
'<span class="inline-block">';
1672 print
'<a class="ajaxforbankoperationchange" href="'.$_SERVER[
'PHP_SELF'].
'?action=dvprev&account='.$objp->bankid.
'&rowid='.$objp->rowid.
'">';
1674 print
'<a class="ajaxforbankoperationchange" href="'.$_SERVER[
'PHP_SELF'].
'?action=dvnext&account='.$objp->bankid.
'&rowid='.$objp->rowid.
'">';
1679 $totalarray[
'nbfield']++;
1684 if (!empty($arrayfields[
'type'][
'checked'])) {
1685 $labeltype = ($langs->transnoentitiesnoconv(
"PaymentTypeShort".$objp->fk_type) !=
"PaymentTypeShort".$objp->fk_type) ? $langs->transnoentitiesnoconv(
"PaymentTypeShort".$objp->fk_type) : $langs->getLabelFromKey($db, $objp->fk_type,
'c_paiement',
'code',
'libelle',
'', 1);
1686 if (empty($arrayfields[
'b.num_chq'][
'checked'])) {
1687 $labeltype .= ($objp->num_chq ?
' - '.$objp->num_chq :
'');
1689 print
'<td class="tdoverflowmax100" title="'.dolPrintLabel($labeltype).
'">';
1690 if ($labeltype ==
'SOLD') {
1697 $totalarray[
'nbfield']++;
1702 if (!empty($arrayfields[
'b.num_chq'][
'checked'])) {
1703 print
'<td class="tdoverflowmax100 center" title="'.($objp->num_chq ?
dolPrintLabel($objp->num_chq) :
"").
'">'.($objp->num_chq ?
dolPrintLabel($objp->num_chq) :
"").
"</td>\n";
1705 $totalarray[
'nbfield']++;
1710 if (!empty($arrayfields[
'b.fk_bordereau'][
'checked'])) {
1711 $bordereaustatic->fetch($objp->fk_bordereau);
1712 print
'<td class="nowraponall center">';
1713 print $bordereaustatic->getNomUrl();
1716 $totalarray[
'nbfield']++;
1721 if (!empty($arrayfields[
'bu.label'][
'checked'])) {
1722 print
'<td class="tdoverflowmax125">';
1724 $companylinked_id = 0;
1730 foreach ($links as $key => $value) {
1731 if ($links[$key][
'type'] ==
'payment_sc') {
1732 $type_link =
'payment_sc';
1734 if ($links[$key][
'type'] ==
'payment_salary') {
1735 $type_link =
'payment_salary';
1737 if ($links[$key][
'type'] ==
'payment_donation') {
1738 $paymentdonationstatic->fetch($links[$key][
'url_id']);
1739 $donstatic->fetch($paymentdonationstatic->fk_donation);
1740 $companylinked_id = $donstatic->socid;
1741 if (!$companylinked_id) {
1742 $thirdstr = ($donstatic->societe !==
"" ?
1743 $donstatic->societe :
1744 $donstatic->firstname.
" ".$donstatic->lastname);
1747 if ($links[$key][
'type'] ==
'payment_expensereport') {
1748 $type_link =
'payment_expensereport';
1751 if ($links[$key][
'type'] ==
'company') {
1752 $companylinked_id = $links[$key][
'url_id'];
1754 if ($links[$key][
'type'] ==
'user') {
1755 $userlinked_id = $links[$key][
'url_id'];
1760 if ($companylinked_id) {
1762 $companystatic->fetch($companylinked_id);
1763 print $companystatic->getNomUrl(1);
1764 } elseif ($userlinked_id &&
1765 (($type_link ==
'payment_salary' && $user->hasRight(
'salaries',
'read'))
1766 || ($type_link ==
'payment_sc' && $user->hasRight(
'tax',
'charges',
'lire'))
1767 || ($type_link ==
'payment_expensereport' && $user->hasRight(
'expensereport',
'lire')))) {
1769 if (!empty($conf->cache[
'user'][$userlinked_id])) {
1770 $tmpuser = $conf->cache[
'user'][$userlinked_id];
1772 $tmpuser =
new User($db);
1773 $tmpuser->fetch($userlinked_id);
1774 $conf->cache[
'user'][$userlinked_id] = $tmpuser;
1776 print $tmpuser->getNomUrl(-1);
1777 } elseif ($thirdstr) {
1785 $totalarray[
'nbfield']++;
1790 if (!empty($arrayfields[
'ba.ref'][
'checked'])) {
1791 print
'<td class="nowrap">';
1792 print $bankaccount->getNomUrl(1);
1795 $totalarray[
'nbfield']++;
1800 if (!empty($arrayfields[
'b.debit'][
'checked'])) {
1801 print
'<td class="nowraponall right"><span class="amount">';
1802 if ($objp->amount < 0) {
1803 print
price($objp->amount * -1);
1804 $totalarray[
'totaldeb'] += $objp->amount;
1806 print
"</span></td>\n";
1808 $totalarray[
'nbfield']++;
1811 $totalarray[
'totaldebfield'] = $totalarray[
'nbfield'];
1816 if (!empty($arrayfields[
'b.credit'][
'checked'])) {
1817 print
'<td class="nowraponall right"><span class="amount">';
1818 if ($objp->amount > 0) {
1819 print
price($objp->amount);
1820 $totalarray[
'totalcred'] += $objp->amount;
1822 print
"</span></td>\n";
1824 $totalarray[
'nbfield']++;
1827 $totalarray[
'totalcredfield'] = $totalarray[
'nbfield'];
1832 if (!empty($arrayfields[
'balancebefore'][
'checked'])) {
1833 if ($mode_balance_ok) {
1834 if ($balancebefore >= 0) {
1835 print
'<td class="nowrap right"> '.price($balancebefore).
'</td>';
1837 print
'<td class="error nowrap right"> '.price($balancebefore).
'</td>';
1840 print
'<td class="right">-</td>';
1843 $totalarray[
'nbfield']++;
1848 if (!empty($arrayfields[
'balance'][
'checked'])) {
1849 if ($mode_balance_ok) {
1850 if ($balance >= 0) {
1851 print
'<td class="nowrap right"> '.price($balance).
'</td>';
1853 print
'<td class="error nowrap right"> '.price($balance).
'</td>';
1856 print
'<td class="right">-</td>';
1859 $totalarray[
'nbfield']++;
1863 if (!empty($arrayfields[
'b.num_releve'][
'checked'])) {
1864 print
'<td class="nowraponall center">';
1866 if ($bankaccount->canBeConciliated() > 0) {
1867 if ($objp->num_releve) {
1868 print
'<a href="releve.php?num='.urlencode($objp->num_releve).
'&account='.urlencode($objp->bankid).
'&save_lastsearch_values=1">'.
dol_escape_htmltag($objp->num_releve).
'</a>';
1873 $totalarray[
'nbfield']++;
1874 $posconciliatecol = $totalarray[
'nbfield'];
1879 if (!empty($arrayfields[
'b.conciliated'][
'checked'])) {
1880 print
'<td class="nowraponall center">';
1881 print
yn($objp->conciliated);
1884 $totalarray[
'nbfield']++;
1888 if (!empty($arrayfields[
'b.fk_bordereau'][
'checked'])) {
1889 $bordereaustatic->fetch($objp->fk_bordereau);
1890 print
'<td class="nowraponall center">';
1891 print $bordereaustatic->getNomUrl();
1894 $totalarray[
'nbfield']++;
1899 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_print_fields.tpl.php';
1901 $parameters = array(
'arrayfields' => $arrayfields,
'object' => $object,
'obj' => $objp,
'i' => $i,
'totalarray' => &$totalarray);
1902 $reshook = $hookmanager->executeHooks(
'printFieldListValue', $parameters, $object, $action);
1903 print $hookmanager->resPrint;
1906 print
'<td class="nowraponall center">';
1908 if ($objp->conciliated && $bankaccount->canBeConciliated() > 0) {
1909 print
'<a class="editfielda" href="'.DOL_URL_ROOT.
'/compta/bank/line.php?save_lastsearch_values=1&rowid='.$objp->rowid.($object->id > 0 ?
'&account='.$object->id :
'').
'&page='.$page.
'">';
1913 if ($user->hasRight(
'banque',
'modifier') || $user->hasRight(
'banque',
'consolidate')) {
1914 print
'<a class="editfielda" href="'.DOL_URL_ROOT.
'/compta/bank/line.php?save_lastsearch_values=1&rowid='.$objp->rowid.($object->id > 0 ?
'&account='.$object->id :
'').
'&page='.$page.
'">';
1918 print
'<a class="editfielda" href="'.DOL_URL_ROOT.
'/compta/bank/line.php?save_lastsearch_values=1&rowid='.$objp->rowid.($object->id > 0 ?
'&account='.$object->id :
'').
'&page='.$page.
'">';
1922 if ($bankaccount->canBeConciliated() > 0 && empty($objp->conciliated)) {
1923 if ($db->jdate($objp->dv) < ($now - $conf->bank->rappro->warning_delay)) {
1924 print
' '.img_warning($langs->trans(
"ReconciliationLate"));
1927 if ($user->hasRight(
'banque',
'modifier')) {
1928 print
'<a href="'.$_SERVER[
"PHP_SELF"].
'?action=delete&token='.
newToken().
'&rowid='.$objp->rowid.
'&page='.$page.$param.($sortfield ?
'&sortfield='.$sortfield :
'').($sortorder ?
'&sortorder='.$sortorder :
'').
'">';
1929 print
img_delete(
'',
'class="marginleftonly"');
1935 $totalarray[
'nbfield']++;
1940 print
'<td class="center">';
1941 if (!$objp->conciliated && $action ==
'reconcile') {
1942 print
'<input class="flat checkforselect" name="rowid['.$objp->rowid.
']" type="checkbox" value="'.$objp->rowid.
'" size="1"'.(!empty($tmparray[$objp->rowid]) ?
' checked' :
'').
'>';
1946 $totalarray[
'nbfield']++;
1956 if (isset($totalarray[
'totaldebfield']) || isset($totalarray[
'totalcredfield'])) {
1957 print
'<tr class="liste_total">';
1959 while ($i < $totalarray[
'nbfield']) {
1962 if ($num < $limit && empty($offset)) {
1963 print
'<td class="left">'.$langs->trans(
"Total").
'</td>';
1965 print
'<td class="left tdoverflowmax50" title="'.$langs->trans(
"Totalforthispage").
'">'.$langs->trans(
"Totalforthispage").
'</td>';
1967 } elseif ($totalarray[
'totaldebfield'] == $i) {
1968 print
'<td class="right"><span class="amount">'.price(-1 * $totalarray[
'totaldeb']).
'</span></td>';
1969 } elseif ($totalarray[
'totalcredfield'] == $i) {
1970 print
'<td class="right"><span class="amount">'.price($totalarray[
'totalcred']).
'</span></td>';
1971 } elseif ($i == $posconciliatecol) {
1972 print
'<td class="center">';
1987 foreach ($arrayfields as $key => $val) {
1988 if (!empty($val[
'checked'])) {
1992 print
'<tr><td colspan="'.($colspan + 1).
'"><span class="opacitymedium">'.$langs->trans(
"NoRecordFound").
'</span></td></tr>';
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
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.
bank_prepare_head(Account $object)
Prepare array with list of tabs.
Class to manage bank accounts.
Class to manage bank transaction lines.
Class to manage members of a foundation.
Class to manage bank categories.
Class to manage withdrawal receipts.
Class for managing the social charges.
Class to manage donations.
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 salaries.
Class to manage payments of social contributions.
Class to manage payments of social contributions.
Class to manage various payments.
Class to manage cheque delivery receipts.
Class to manage third parties objects (customers, suppliers, prospects...)
Class to manage Dolibarr users.
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...
load_fiche_titre($title, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
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_delete($titlealt='default', $other='class="pictodelete"', $morecss='')
Show delete logo.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=0, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limittoshow=0, $moretabssuffix='', $dragdropfile=0)
Show tabs of a record.
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.
currentToken()
Return the value of token currently saved into session with name 'token'.
dol_get_fiche_end($notab=0)
Return tab footer of a card.
natural_search($fields, $value, $mode=0, $nofirstand=0)
Generate natural SQL search string for a criteria (this criteria can be tested on one or several fiel...
dol_strlen($string, $stringencoding='UTF-8')
Make a strlen call.
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.
img_view($titlealt='default', $float=0, $other='class="valignmiddle"')
Show logo view card.
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).
dol_sort_array(&$array, $index, $order='asc', $natsort=0, $case_sensitive=0, $keepindex=0)
Advanced sort array by the value of a given key, which produces ascending (default) or descending out...
newToken()
Return the value of token currently saved into session with name 'newtoken'.
print_liste_field_titre($name, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $tooltip="", $forcenowrapcolumntitle=0)
Show title line of an array.
yn($yesno, $format=1, $color=0)
Return yes or no in current language.
getTitleFieldOfList($name, $thead=0, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="", $prefix="", $disablesortlink=0, $tooltip='', $forcenowrapcolumntitle=0)
Get title line of an array.
dol_substr($string, $start, $length=null, $stringencoding='', $trunconbytes=0)
Make a substring.
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...
img_edit_add($titlealt='default', $other='')
Show logo +.
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
dolPrintLabel($s)
Return a string label (so on 1 line only and that should not contains any HTML) ready to be output on...
img_edit($titlealt='default', $float=0, $other='')
Show logo edit/modify fiche.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
img_edit_remove($titlealt='default', $other='')
Show logo -.
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...
if(preg_match('/crypted:/i', $dolibarr_main_db_pass)||!empty($dolibarr_main_db_encrypted_pass)) $conf db type
restrictedArea(User $user, $features, $object=0, $tableandshare='', $feature2='', $dbt_keyfield='fk_soc', $dbt_select='rowid', $isdraft=0, $mode=0)
Check permissions of a user to show a page and an object.