35 require
'../../main.inc.php';
37 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formother.class.php';
38 require_once DOL_DOCUMENT_ROOT.
'/core/class/html.formaccounting.class.php';
39 require_once DOL_DOCUMENT_ROOT.
'/core/lib/bank.lib.php';
41 require_once DOL_DOCUMENT_ROOT.
'/societe/class/societe.class.php';
42 require_once DOL_DOCUMENT_ROOT.
'/user/class/user.class.php';
43 require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
44 require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/bankcateg.class.php';
45 require_once DOL_DOCUMENT_ROOT.
'/adherents/class/adherent.class.php';
46 require_once DOL_DOCUMENT_ROOT.
'/compta/sociales/class/chargesociales.class.php';
47 require_once DOL_DOCUMENT_ROOT.
'/compta/tva/class/paymentvat.class.php';
48 require_once DOL_DOCUMENT_ROOT.
'/compta/paiement/class/paiement.class.php';
49 require_once DOL_DOCUMENT_ROOT.
'/compta/sociales/class/paymentsocialcontribution.class.php';
50 require_once DOL_DOCUMENT_ROOT.
'/compta/tva/class/tva.class.php';
51 require_once DOL_DOCUMENT_ROOT.
'/salaries/class/paymentsalary.class.php';
52 require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/paymentvarious.class.php';
53 require_once DOL_DOCUMENT_ROOT.
'/compta/prelevement/class/bonprelevement.class.php';
54 require_once DOL_DOCUMENT_ROOT.
'/don/class/don.class.php';
55 require_once DOL_DOCUMENT_ROOT.
'/don/class/paymentdonation.class.php';
56 require_once DOL_DOCUMENT_ROOT.
'/expensereport/class/paymentexpensereport.class.php';
57 require_once DOL_DOCUMENT_ROOT.
'/loan/class/loan.class.php';
58 require_once DOL_DOCUMENT_ROOT.
'/fourn/class/paiementfourn.class.php';
59 require_once DOL_DOCUMENT_ROOT.
'/compta/paiement/cheque/class/remisecheque.class.php';
62 $langs->loadLangs(array(
"banks",
"bills",
"categories",
"companies",
"margins",
"salaries",
"loan",
"donations",
"trips",
"members",
"compta",
"accountancy"));
66 $action =
GETPOST(
'action',
'aZ09');
67 $cancel =
GETPOST(
'cancel',
'alpha');
68 $confirm =
GETPOST(
'confirm',
'alpha');
69 $contextpage =
'banktransactionlist'.(empty($object->ref) ?
'' :
'-'.$object->id);
70 $massaction =
GETPOST(
'massaction',
'alpha');
71 $optioncss =
GETPOST(
'optioncss',
'aZ09');
74 $fieldvalue = (!empty($id) ? $id : (!empty($ref) ? $ref :
''));
75 $fieldtype = (!empty($ref) ?
'ref' :
'rowid');
78 $socid = $user->socid;
80 $result =
restrictedArea($user,
'banque', $fieldvalue,
'bank_account&bank_account',
'',
'', $fieldtype);
83 $socid = $user->socid;
89 $search_debit =
GETPOST(
"search_debit",
'alpha');
90 $search_credit =
GETPOST(
"search_credit",
'alpha');
91 $search_type =
GETPOST(
"search_type",
'alpha');
92 $search_account =
GETPOST(
"search_account",
'int') ?
GETPOST(
"search_account",
'int') :
GETPOST(
"account",
'int');
93 $search_accountancy_code =
GETPOST(
'search_accountancy_code',
'alpha') ?
GETPOST(
'search_accountancy_code',
'alpha') :
GETPOST(
'accountancy_code',
'alpha');
95 $search_ref =
GETPOST(
'search_ref',
'alpha');
96 $search_description =
GETPOST(
"search_description",
'alpha');
97 $search_dt_start =
dol_mktime(0, 0, 0,
GETPOST(
'search_start_dtmonth',
'int'),
GETPOST(
'search_start_dtday',
'int'),
GETPOST(
'search_start_dtyear',
'int'));
99 $search_dv_start =
dol_mktime(0, 0, 0,
GETPOST(
'search_start_dvmonth',
'int'),
GETPOST(
'search_start_dvday',
'int'),
GETPOST(
'search_start_dvyear',
'int'));
101 $search_thirdparty_user =
GETPOST(
"search_thirdparty",
'alpha') ?
GETPOST(
"search_thirdparty",
'alpha') :
GETPOST(
"thirdparty",
'alpha');
102 $search_req_nb =
GETPOST(
"req_nb",
'alpha');
103 $search_num_releve =
GETPOST(
"search_num_releve",
'alpha');
104 $search_conciliated =
GETPOST(
"search_conciliated",
'int');
105 $search_fk_bordereau =
GETPOST(
"search_fk_bordereau",
'int');
106 $optioncss =
GETPOST(
'optioncss',
'alpha');
107 $toselect =
GETPOST(
'toselect',
'array');
108 $num_releve =
GETPOST(
"num_releve",
"alpha");
109 if (empty($dateop)) {
113 $limit =
GETPOST(
'limit',
'int') ?
GETPOST(
'limit',
'int') : $conf->liste_limit;
114 $sortfield =
GETPOST(
'sortfield',
'aZ09comma');
115 $sortorder =
GETPOST(
'sortorder',
'aZ09comma');
117 $pageplusone =
GETPOST(
"pageplusone",
'int');
119 $page = $pageplusone - 1;
121 if (empty($page) || $page == -1) {
124 $offset = $limit * $page;
125 $pageprev = $page - 1;
126 $pagenext = $page + 1;
128 $sortorder =
'desc,desc,desc';
131 $sortfield =
'b.datev,b.dateo,b.rowid';
135 if ($id > 0 || !empty($ref)) {
136 $result = $object->fetch($id, $ref);
137 $search_account = $object->id;
139 if (!($object->id > 0)) {
140 $langs->load(
"errors");
141 print($langs->trans(
'ErrorRecordNotFound'));
146 $mode_balance_ok =
false;
148 if (($sortfield ==
'b.datev' || $sortfield ==
'b.datev,b.dateo,b.rowid')) {
149 $sortfield =
'b.datev,b.dateo,b.rowid';
150 if ($id > 0 || !empty($ref) || $search_account > 0) {
151 $mode_balance_ok =
true;
156 $hookmanager->initHooks(array(
'banktransactionlist', $contextpage));
160 $extrafields->fetch_name_optionals_label(
'banktransaction');
161 $search_array_options = $extrafields->getOptionalsFromPost(
'banktransaction',
'',
'search_');
163 $arrayfields = array(
164 'b.rowid'=>array(
'label'=>$langs->trans(
"Ref"),
'checked'=>1,
'position'=>10),
165 'b.label'=>array(
'label'=>$langs->trans(
"Description"),
'checked'=>1,
'position'=>20),
166 'b.dateo'=>array(
'label'=>$langs->trans(
"DateOperationShort"),
'checked'=>1,
'position'=>30),
167 'b.datev'=>array(
'label'=>$langs->trans(
"DateValueShort"),
'checked'=>1,
'position'=>40),
168 'type'=>array(
'label'=>$langs->trans(
"Type"),
'checked'=>1,
'position'=>50),
169 'b.num_chq'=>array(
'label'=>$langs->trans(
"Numero"),
'checked'=>1,
'position'=>60),
170 'bu.label'=>array(
'label'=>$langs->trans(
"ThirdParty").
'/'.$langs->trans(
"User"),
'checked'=>1,
'position'=>70),
171 'ba.ref'=>array(
'label'=>$langs->trans(
"BankAccount"),
'checked'=>(($id > 0 || !empty($ref)) ? 0 : 1),
'position'=>80),
172 'b.debit'=>array(
'label'=>$langs->trans(
"Debit"),
'checked'=>1,
'position'=>90),
173 'b.credit'=>array(
'label'=>$langs->trans(
"Credit"),
'checked'=>1,
'position'=>100),
174 'balancebefore'=>array(
'label'=>$langs->trans(
"BalanceBefore"),
'checked'=>0,
'position'=>110),
175 'balance'=>array(
'label'=>$langs->trans(
"Balance"),
'checked'=>1,
'position'=>120),
176 'b.num_releve'=>array(
'label'=>$langs->trans(
"AccountStatement"),
'checked'=>1,
'position'=>130),
177 'b.conciliated'=>array(
'label'=>$langs->trans(
"BankLineReconciled"),
'enabled'=> $object->rappro,
'checked'=>($action ==
'reconcile' ? 1 : 0),
'position'=>140),
178 'b.fk_bordereau'=>array(
'label'=>$langs->trans(
"ChequeNumber"),
'checked'=>0,
'position'=>150),
181 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_array_fields.tpl.php';
190 if (
GETPOST(
'cancel',
'alpha')) {
194 if (!
GETPOST(
'confirmmassaction',
'alpha') && $massaction !=
'presend' && $massaction !=
'confirm_presend') {
198 $parameters = array();
199 $reshook = $hookmanager->executeHooks(
'doActions', $parameters, $object, $action);
204 include DOL_DOCUMENT_ROOT.
'/core/actions_changeselectedfields.inc.php';
206 if (
GETPOST(
'button_removefilter_x',
'alpha') ||
GETPOST(
'button_removefilter.x',
'alpha') ||
GETPOST(
'button_removefilter',
'alpha')) {
207 $search_dt_start =
'';
209 $search_dv_start =
'';
217 $search_description =
'';
218 $search_thirdparty_user =
'';
219 $search_num_releve =
'';
220 $search_conciliated =
'';
221 $search_fk_bordereau =
'';
224 $search_account =
"";
225 if ($id > 0 || !empty($ref)) {
226 $search_account = $object->id;
230 if (empty($reshook)) {
231 $objectclass =
'Account';
232 $objectlabel =
'BankTransaction';
233 $permissiontoread = !empty($user->rights->banque->lire);
234 $permissiontodelete = $user->hasRight(
'banque',
'modifier');
235 $uploaddir = $conf->bank->dir_output;
236 include DOL_DOCUMENT_ROOT.
'/core/actions_massactions.inc.php';
239 $rowids =
GETPOST(
'rowid',
'array');
242 if ((
GETPOST(
'confirm_savestatement',
'alpha') ||
GETPOST(
'confirm_reconcile',
'alpha'))
243 && (
GETPOST(
"num_releve",
"alpha") || !empty($rowids))
244 && !empty($user->rights->banque->consolidate)
249 $num_releve =
GETPOST(
"num_releve",
"alpha");
254 $rowids =
GETPOST(
'rowid',
'array');
256 if (!empty($rowids) && is_array($rowids)) {
257 foreach ($rowids as $row) {
259 $result = $bankline->fetch($row);
260 $bankline->num_releve = $num_releve;
261 $result = $bankline->update_conciliation($user,
GETPOST(
"cat"),
GETPOST(
'confirm_reconcile',
'alpha') ? 1 : 0);
271 $langs->load(
"errors");
276 $langs->load(
"errors");
277 setEventMessages($langs->trans(
"ErrorPleaseTypeBankTransactionReportName"),
null,
'errors');
281 $param =
'action=reconcile&contextpage=banktransactionlist&id='.((int) $id).
'&search_account='.((int) $id);
283 $param .=
'&page='.urlencode($page);
286 $param .=
'&offset='.urlencode($offset);
289 $param .=
'&limit='.((int) $limit);
291 if ($search_conciliated !=
'' && $search_conciliated !=
'-1') {
292 $param .=
'&search_conciliated='.urlencode($search_conciliated);
294 if ($search_thirdparty_user) {
295 $param .=
'&search_thirdparty='.urlencode($search_thirdparty_user);
297 if ($search_num_releve) {
298 $param .=
'&search_num_releve='.urlencode($search_num_releve);
300 if ($search_description) {
301 $param .=
'&search_description='.urlencode($search_description);
304 $param .=
'&search_start_dtmonth='.GETPOST(
'search_start_dtmonth',
'int').
'&search_start_dtday='.
GETPOST(
'search_start_dtday',
'int').
'&search_start_dtyear='.
GETPOST(
'search_start_dtyear',
'int');
307 $param .=
'&search_end_dtmonth='.GETPOST(
'search_end_dtmonth',
'int').
'&search_end_dtday='.
GETPOST(
'search_end_dtday',
'int').
'&search_end_dtyear='.
GETPOST(
'search_end_dtyear',
'int');
310 $param .=
'&search_start_dvmonth='.GETPOST(
'search_start_dvmonth',
'int').
'&search_start_dvday='.
GETPOST(
'search_start_dvday',
'int').
'&search_start_dvyear='.
GETPOST(
'search_start_dvyear',
'int');
313 $param .=
'&search_end_dvmonth='.GETPOST(
'search_end_dvmonth',
'int').
'&search_end_dvday='.
GETPOST(
'search_end_dvday',
'int').
'&search_end_dvyear='.
GETPOST(
'search_end_dvyear',
'int');
316 $param .=
'&search_type='.urlencode($search_type);
319 $param .=
'&search_debit='.urlencode($search_debit);
321 if ($search_credit) {
322 $param .=
'&search_credit='.urlencode($search_credit);
324 $param .=
'&sortfield='.urlencode($sortfield).
'&sortorder='.urlencode($sortorder);
325 header(
'Location: '.$_SERVER[
"PHP_SELF"].
'?'.$param);
331 if (
GETPOST(
'save') && !$cancel && $user->hasRight(
'banque',
'modifier')) {
340 $operation =
GETPOST(
"operation",
'alpha');
341 $num_chq =
GETPOST(
"num_chq",
'alpha');
342 $label =
GETPOST(
"label",
'alpha');
343 $cat1 =
GETPOST(
"cat1",
'alpha');
345 $bankaccountid = $id;
346 if (
GETPOST(
'add_account',
'int') > 0) {
347 $bankaccountid =
GETPOST(
'add_account',
'int');
351 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"Date")),
null,
'errors');
355 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"Type")),
null,
'errors');
359 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"Label")),
null,
'errors');
363 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"Amount")),
null,
'errors');
365 if (!($bankaccountid > 0)) {
367 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentitiesnoconv(
"BankAccount")),
null,
'errors');
375 if (!$error && !empty($conf->global->BANK_USE_OLD_VARIOUS_PAYMENT)) {
377 $objecttmp->fetch($bankaccountid);
378 $insertid = $objecttmp->addline($dateop, $operation, $label, $amount, $num_chq, ($cat1 > 0 ? $cat1 : 0), $user,
'',
'', $search_accountancy_code);
381 header(
"Location: ".$_SERVER[
'PHP_SELF'].($id ?
"?id=".$id :
''));
391 if ($action ==
'confirm_delete' && $confirm ==
'yes' && $user->hasRight(
'banque',
'modifier')) {
393 $result = $accline->fetch(
GETPOST(
"rowid",
"int"));
394 $result = $accline->delete($user);
410 $companystatic =
new Societe($db);
411 $bankaccountstatic =
new Account($db);
412 $userstatic=
new User($db);
415 $societestatic =
new Societe($db);
416 $userstatic =
new User($db);
418 $loanstatic =
new Loan($db);
420 $donstatic =
new Don($db);
429 $bankstatic =
new Account($db);
437 if (!empty($contextpage) && $contextpage != $_SERVER[
"PHP_SELF"]) {
438 $param .=
'&contextpage='.urlencode($contextpage);
440 if ($limit > 0 && $limit != $conf->liste_limit) {
441 $param .=
'&limit='.((int) $limit);
444 $param .=
'&id='.urlencode($id);
447 $param .=
'&ref='.urlencode($ref);
449 if (!empty($search_ref)) {
450 $param .=
'&search_ref='.urlencode($search_ref);
452 if (!empty($search_description)) {
453 $param .=
'&search_description='.urlencode($search_description);
455 if (!empty($search_type)) {
456 $param .=
'&type='.urlencode($search_type);
458 if (!empty($search_thirdparty_user)) {
459 $param .=
'&search_thirdparty='.urlencode($search_thirdparty_user);
461 if (!empty($search_debit)) {
462 $param .=
'&search_debit='.urlencode($search_debit);
464 if (!empty($search_credit)) {
465 $param .=
'&search_credit='.urlencode($search_credit);
467 if ($search_account > 0) {
468 $param .=
'&search_account='.urlencode($search_account);
470 if (!empty($search_num_releve)) {
471 $param .=
'&search_num_releve='.urlencode($search_num_releve);
473 if ($search_conciliated !=
'' && $search_conciliated !=
'-1') {
474 $param .=
'&search_conciliated='.urlencode($search_conciliated);
476 if ($search_fk_bordereau > 0) {
477 $param .=
'$&search_fk_bordereau='.urlencode($search_fk_bordereau);
479 if ($search_bid > 0) {
480 $param .=
'&search_bid='.urlencode($search_bid);
483 $param .=
'&search_start_dtmonth='.GETPOST(
'search_start_dtmonth',
'int').
'&search_start_dtday='.
GETPOST(
'search_start_dtday',
'int').
'&search_start_dtyear='.
GETPOST(
'search_start_dtyear',
'int');
486 $param .=
'&search_end_dtmonth='.GETPOST(
'search_end_dtmonth',
'int').
'&search_end_dtday='.
GETPOST(
'search_end_dtday',
'int').
'&search_end_dtyear='.
GETPOST(
'search_end_dtyear',
'int');
489 $param .=
'&search_start_dvmonth='.GETPOST(
'search_start_dvmonth',
'int').
'&search_start_dvday='.
GETPOST(
'search_start_dvday',
'int').
'&search_start_dvyear='.
GETPOST(
'search_start_dvyear',
'int');
492 $param .=
'&search_end_dvmonth='.GETPOST(
'search_end_dvmonth',
'int').
'&search_end_dvday='.
GETPOST(
'search_end_dvday',
'int').
'&search_end_dvyear='.
GETPOST(
'search_end_dvyear',
'int');
494 if ($search_req_nb) {
495 $param .=
'&req_nb='.urlencode($search_req_nb);
497 if (
GETPOST(
"search_thirdparty",
'int')) {
498 $param .=
'&thirdparty='.urlencode(
GETPOST(
"search_thirdparty",
'int'));
500 if ($optioncss !=
'') {
501 $param .=
'&optioncss='.urlencode($optioncss);
503 if ($action ==
'reconcile') {
504 $param .=
'&action=reconcile';
512 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_param.tpl.php';
516 $buttonreconcile =
'';
519 if ($id > 0 || !empty($ref)) {
520 $title = $object->ref.
' - '.$langs->trans(
"Transactions");
522 $title = $langs->trans(
"BankTransactions");
529 if ($id > 0 || !empty($ref)) {
531 require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/bankcateg.class.php';
534 foreach ($bankcateg->fetchAll() as $bankcategory) {
535 $options[$bankcategory->id] = $bankcategory->label;
540 print
dol_get_fiche_head($head,
'journal', $langs->trans(
"FinancialAccount"), 0,
'account');
542 $linkback =
'<a href="'.DOL_URL_ROOT.
'/compta/bank/list.php?restore_lastsearch_values=1">'.$langs->trans(
"BackToList").
'</a>';
544 dol_banner_tab($object,
'ref', $linkback, 1,
'ref',
'ref', $morehtmlref,
'', 0,
'',
'', 1);
553 if ($action !=
'reconcile') {
554 if ($object->canBeConciliated() > 0) {
555 $allowautomaticconciliation =
false;
556 $titletoconciliatemanual = $langs->trans(
"Conciliate");
557 $titletoconciliateauto = $langs->trans(
"Conciliate");
558 if ($allowautomaticconciliation) {
559 $titletoconciliatemanual .=
' ('.$langs->trans(
"Manual").
')';
560 $titletoconciliateauto .=
' ('.$langs->trans(
"Auto").
')';
564 if ($user->rights->banque->consolidate) {
566 $newparam = preg_replace(
'/search_conciliated=\d+/i',
'', $newparam);
567 $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>';
569 $buttonreconcile =
'<a class="butActionRefused" style="margin-bottom: 5px !important; margin-top: 5px !important" title="'.$langs->trans(
"NotEnoughPermissions").
'" href="#">'.$titletoconciliatemanual.
'</a>';
572 if ($allowautomaticconciliation) {
574 if ($user->rights->banque->consolidate) {
576 $newparam = preg_replace(
'/search_conciliated=\d+/i',
'', $newparam);
577 $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>';
579 $buttonreconcile .=
' <a class="butActionRefused" style="margin-bottom: 5px !important; margin-top: 5px !important" title="'.$langs->trans(
"NotEnoughPermissions").
'" href="#">'.$titletoconciliateauto.
'</a>';
586 $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,";
587 $sql .=
" b.fk_account, b.fk_type, b.fk_bordereau,";
588 $sql .=
" ba.rowid as bankid, ba.ref as bankref";
590 if (!empty($extrafields->attributes[$object->table_element][
'label'])) {
591 foreach ($extrafields->attributes[$object->table_element][
'label'] as $key => $val) {
592 $sql .= ($extrafields->attributes[$object->table_element][
'type'][$key] !=
'separate' ?
", ef.".$key.
" as options_".$key :
'');
596 $parameters = array();
597 $reshook = $hookmanager->executeHooks(
'printFieldListSelect', $parameters);
598 $sql .= $hookmanager->resPrint;
600 if ($search_bid > 0) {
601 $sql .= MAIN_DB_PREFIX.
"bank_class as l,";
603 $sql .=
" ".MAIN_DB_PREFIX.
"bank_account as ba,";
604 $sql .=
" ".MAIN_DB_PREFIX.
"bank as b";
605 if (!empty($extrafields->attributes[$object->table_element][
'label']) && is_array($extrafields->attributes[$object->table_element][
'label']) && count($extrafields->attributes[$object->table_element][
'label'])) {
606 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.$object->table_element.
"_extrafields as ef on (b.rowid = ef.fk_object)";
610 $parameters = array();
611 $reshook = $hookmanager->executeHooks(
'printFieldListJoin', $parameters);
612 $sql .= $hookmanager->resPrint;
614 $sql .=
" WHERE b.fk_account = ba.rowid";
615 $sql .=
" AND ba.entity IN (".getEntity(
'bank_account').
")";
616 if ($search_account > 0) {
617 $sql .=
" AND b.fk_account = ".((int) $search_account);
621 $sql .=
" AND b.dateo >= '".$db->idate($search_dt_start).
"'";
624 $sql .=
" AND b.dateo <= '".$db->idate($search_dt_end).
"'";
628 $sql .=
" AND b.datev >= '".$db->idate($search_dv_start).
"'";
631 $sql .=
" AND b.datev <= '".$db->idate($search_dv_end).
"'";
636 if ($search_req_nb) {
639 if ($search_num_releve) {
642 if ($search_conciliated !=
'' && $search_conciliated !=
'-1') {
643 $sql .=
" AND b.rappro = ".((int) $search_conciliated);
645 if ($search_fk_bordereau > 0) {
646 $sql .=
" AND b.fk_bordereau = " . ((int) $search_fk_bordereau);
648 if ($search_thirdparty_user) {
649 $sql.=
" AND (b.rowid IN ";
650 $sql.=
" ( SELECT bu.fk_bank FROM ".MAIN_DB_PREFIX.
"bank_url AS bu";
651 $sql.=
" JOIN ".MAIN_DB_PREFIX.
"bank AS b2 ON b2.rowid = bu.fk_bank";
652 $sql.=
" JOIN ".MAIN_DB_PREFIX.
"user AS subUser ON (bu.type = 'user' AND bu.url_id = subUser.rowid)";
653 $sql.=
" WHERE ".
natural_search(array(
"subUser.firstname",
"subUser.lastname"), $search_thirdparty_user,
'', 1).
")";
655 $sql.=
" OR b.rowid IN ";
656 $sql.=
" ( SELECT bu.fk_bank FROM ".MAIN_DB_PREFIX.
"bank_url AS bu";
657 $sql.=
" JOIN ".MAIN_DB_PREFIX.
"bank AS b2 ON b2.rowid = bu.fk_bank";
658 $sql.=
" JOIN ".MAIN_DB_PREFIX.
"societe AS subSoc ON (bu.type = 'company' AND bu.url_id = subSoc.rowid)";
659 $sql.=
" WHERE ".
natural_search(array(
"subSoc.nom"), $search_thirdparty_user,
'', 1);
662 if ($search_description) {
663 $search_description_to_use = $search_description;
664 $arrayoffixedlabels = array(
666 'CustomerInvoicePayment',
'CustomerInvoicePaymentBack',
667 'SupplierInvoicePayment',
'SupplierInvoicePaymentBack',
669 'ExpenseReportPayment',
670 'SocialContributionPayment',
671 'SubscriptionPayment',
674 foreach ($arrayoffixedlabels as $keyforlabel) {
675 $translatedlabel = $langs->transnoentitiesnoconv($keyforlabel);
676 if (preg_match(
'/'.$search_description.
'/i', $translatedlabel)) {
677 $search_description_to_use .=
"|".$keyforlabel;
683 if ($search_bid > 0) {
684 $sql .=
" AND b.rowid = l.lineid AND l.fk_categ = ".((int) $search_bid);
686 if (!empty($search_type)) {
687 $sql .=
" AND b.fk_type = '".$db->escape($search_type).
"'";
692 $sql .=
' AND b.amount <= 0';
694 if ($search_credit) {
696 $sql .=
' AND b.amount >= 0';
699 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_sql.tpl.php';
702 $parameters = array();
703 $reshook = $hookmanager->executeHooks(
'printFieldListWhere', $parameters);
704 $sql .= $hookmanager->resPrint;
706 $sql .= $db->order($sortfield, $sortorder);
708 $nbtotalofrecords =
'';
711 $result = $db->query(
$sql);
712 $nbtotalofrecords = $db->num_rows($result);
713 $nbtotalofpages = ceil($nbtotalofrecords / $limit);
716 if (($id > 0 || !empty($ref)) && ((
string) $page ==
'')) {
719 $page = ($nbtotalofpages - 1);
720 $offset = $limit * $page;
725 if ($page >= $nbtotalofpages) {
727 $page = ($nbtotalofpages - 1);
728 $offset = $limit * $page;
736 if (empty($search_account)) {
737 $mode_balance_ok =
false;
740 if (!empty($search_ref)) {
741 $mode_balance_ok =
false;
743 if (!empty($search_description)) {
744 $mode_balance_ok =
false;
746 if (!empty($search_type)) {
747 $mode_balance_ok =
false;
749 if (!empty($search_debit)) {
750 $mode_balance_ok =
false;
752 if (!empty($search_credit)) {
753 $mode_balance_ok =
false;
755 if (!empty($search_thirdparty_user)) {
756 $mode_balance_ok =
false;
758 if ($search_conciliated !=
'' && $search_conciliated !=
'-1') {
759 $mode_balance_ok =
false;
761 if (!empty($search_num_releve)) {
762 $mode_balance_ok =
false;
764 if (!empty($search_fk_bordereau)) {
765 $mode_balance_ok =
false;
768 $sql .= $db->plimit($limit + 1, $offset);
770 dol_syslog(
'compta/bank/bankentries_list.php', LOG_DEBUG);
771 $resql = $db->query(
$sql);
773 $num = $db->num_rows($resql);
775 $arrayofselected = (!empty($toselect) && is_array($toselect)) ? $toselect : array();
778 $arrayofmassactions = array(
783 if (in_array($massaction, array(
'presend',
'predelete'))) {
784 $arrayofmassactions = array();
786 $massactionbutton =
$form->selectMassAction(
'', $arrayofmassactions);
789 if ($action ==
'delete') {
790 $text = $langs->trans(
'ConfirmDeleteTransaction');
791 print
$form->formconfirm($_SERVER[
'PHP_SELF'].
'?id='.$object->id.
'&rowid='.
GETPOST(
"rowid",
'int'), $langs->trans(
'DeleteTransaction'), $text,
'confirm_delete',
null,
'', 1);
795 print
'<form method="post" action="'.$_SERVER[
"PHP_SELF"].
'" name="search_form">'.
"\n";
796 if ($optioncss !=
'') {
797 print
'<input type="hidden" name="optioncss" value="'.$optioncss.
'">';
799 print
'<input type="hidden" name="token" value="'.newToken().
'">';
800 print
'<input type="hidden" name="formfilteraction" id="formfilteraction" value="list">';
801 print
'<input type="hidden" name="action" value="'.($action !=
'delete' ? $action :
'search').
'">';
803 print
'<input type="hidden" name="view" value="'.dol_escape_htmltag($view).
'">';
805 print
'<input type="hidden" name="sortfield" value="'.$sortfield.
'">';
806 print
'<input type="hidden" name="sortorder" value="'.$sortorder.
'">';
807 print
'<input type="hidden" name="page" value="'.$page.
'">';
808 print
'<input type="hidden" name="id" value="'.$id.
'">';
809 print
'<input type="hidden" name="ref" value="'.$ref.
'">';
811 print
'<input type="hidden" name="bid" value="'.GETPOST(
"bid",
'int').
'">';
815 if ($user->rights->banque->consolidate && $action ==
'reconcile') {
816 print
'<div class="valignmiddle inline-block" style="padding-right: 20px;">';
817 $texttoshow = $langs->trans(
"InputReceiptNumber").
': ';
818 $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);
819 $mm =
dol_substr($langs->transnoentitiesnoconv(
"Month"), 0, 1).substr($langs->transnoentitiesnoconv(
"Month"), 0, 1);
820 $dd =
dol_substr($langs->transnoentitiesnoconv(
"Day"), 0, 1).substr($langs->transnoentitiesnoconv(
"Day"), 0, 1);
821 $placeholder = $yyyy.$mm;
822 $placeholder .=
' '.$langs->trans(
"or").
' ';
823 $placeholder .= $yyyy.$mm.$dd;
825 $texttoshow .= $langs->trans(
"InputReceiptNumberBis");
828 print
'<input class="flat width175" pattern="[0-9]+" title="'.dol_escape_htmltag($texttoshow.($placeholder ?
': '.$placeholder :
'')).
'" id="num_releve" name="num_releve" placeholder="'.
dol_escape_htmltag($placeholder).
'" type="text" value="'.(
GETPOST(
'num_releve',
'int') ?
GETPOST(
'num_releve',
'int') :
'').
'">';
830 if (is_array($options) && count($options)) {
831 print $langs->trans(
"EventualyAddCategory").
': ';
834 print
'<br><div style="margin-top: 5px;"><span class="opacitymedium">'.$langs->trans(
"ThenCheckLinesAndConciliate").
'</span> ';
835 print
'<input class="button" name="confirm_savestatement" type="submit" value="'.$langs->trans(
"SaveStatementOnly").
'">';
836 print
' '.$langs->trans(
"or").
' ';
837 print
'<input class="button" name="confirm_reconcile" type="submit" value="'.$langs->trans(
"Conciliate").
'">';
838 print
' '.$langs->trans(
"or").
' ';
839 print
'<input type="submit" name="cancel" class="button button-cancel" value="'.$langs->trans(
"Cancel").
'">';
845 $sql =
"SELECT DISTINCT num_releve FROM ".MAIN_DB_PREFIX.
"bank";
846 $sql .=
" WHERE fk_account = ".((int) $object->id).
" AND num_releve IS NOT NULL";
847 $sql .= $db->order(
"num_releve",
"DESC");
848 $sql .= $db->plimit($nbmax + 1);
850 print $langs->trans(
"LastAccountStatements").
' : ';
851 $resqlr = $db->query(
$sql);
853 $numr = $db->num_rows($resqlr);
856 while (($i < $numr) && ($i < $nbmax)) {
857 $objr = $db->fetch_object($resqlr);
859 $last_releve = $objr->num_releve;
863 $liste =
'<a href="'.DOL_URL_ROOT.
'/compta/bank/releve.php?account='.$id.
'&num='.$objr->num_releve.
'">'.$objr->num_releve.
'</a> '.$liste;
865 if ($numr >= $nbmax) {
866 $liste =
"... ".$liste;
870 print
'<b>'.$langs->trans(
"None").
'</b>';
877 if (!empty($conf->global->BANK_REPORT_LAST_NUM_RELEVE)) {
879 <script type="text/javascript">
880 $("#num_releve").val("' . $last_releve.
'");
888 if ($user->hasRight(
'banque',
'modifier') && $action ==
'addline' && !empty($conf->global->BANK_USE_OLD_VARIOUS_PAYMENT)) {
891 print
'<table class="noborder centpercent">';
893 print
'<tr class="liste_titre">';
894 print
'<td>'.$langs->trans(
"Description").
'</td>';
895 print
'<td>'.$langs->trans(
"Date").
'</td>';
896 print
'<td> </td>';
897 print
'<td>'.$langs->trans(
"Type").
'</td>';
898 print
'<td>'.$langs->trans(
"Numero").
'</td>';
899 print
'<td class=right>'.$langs->trans(
"BankAccount").
'</td>';
900 print
'<td class=right>'.$langs->trans(
"Debit").
'</td>';
901 print
'<td class=right>'.$langs->trans(
"Credit").
'</td>';
908 print
'<td align="center"> </td>';
913 print
'<input name="label" class="flat minwidth200" type="text" value="'.GETPOST(
"label",
"alpha").
'">';
914 if (is_array($options) && count($options)) {
915 print
'<br>'.$langs->trans(
"Rubrique").
': ';
919 print
'<td class="nowrap">';
920 print
$form->selectDate(empty($dateop) ?-1 : $dateop,
'op', 0, 0, 0,
'transaction');
922 print
'<td> </td>';
923 print
'<td class="nowrap">';
927 print
'<input name="num_chq" class="flat" type="text" size="4" value="'.GETPOST(
"num_chq",
"alpha").
'">';
931 print
'<td class=right>';
932 $form->select_comptes(
GETPOST(
'add_account',
'int') ?
GETPOST(
'add_account',
'int') : $search_account,
'add_account', 0,
'', 1, ($id > 0 || !empty($ref) ?
' disabled="disabled"' :
''));
935 print
'<td class="right"><input name="adddebit" class="flat" type="text" size="4" value="'.GETPOST(
"adddebit",
"alpha").
'"></td>';
936 print
'<td class="right"><input name="addcredit" class="flat" type="text" size="4" value="'.GETPOST(
"addcredit",
"alpha").
'"></td>';
943 print
'<td class="center">';
944 print
'<input type="submit" name="save" class="button buttongen marginbottomonly button-add" value="'.$langs->trans(
"Add").
'"><br>';
945 print
'<input type="submit" name="cancel" class="button buttongen marginbottomonly button-cancel" value="'.$langs->trans(
"Cancel").
'">';
953 $urlajax = DOL_URL_ROOT.
'/core/ajax/bankconciliate.php?token='.
currentToken();
955 <script type="text/javascript">
957 $("a.ajaxforbankoperationchange").each(function(){
958 var current = $(this);
959 current.click(function()
961 var url = "'.$urlajax.
'&"+current.attr("href").split("?")[1];
962 $.get(url, function(data)
966 current.parent().parent().find(".spanforajaxedit").replaceWith(data);
981 if ($action !=
'addline' && $action !=
'reconcile') {
982 if (empty($conf->global->BANK_DISABLE_DIRECT_INPUT)) {
983 if (empty($conf->global->BANK_USE_OLD_VARIOUS_PAYMENT)) {
984 $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);
987 $newcardbutton =
dolGetButtonTitle($langs->trans(
'AddBankRecord'),
'',
'fa fa-plus-circle', $_SERVER[
"PHP_SELF"].
'?action=addline&token='.
newToken().
'&page='.$page.$param,
'', $user->rights->banque->modifier);
990 $newcardbutton =
dolGetButtonTitle($langs->trans(
'AddBankRecord'),
'',
'fa fa-plus-circle', $_SERVER[
"PHP_SELF"].
'?action=addline&token='.
newToken().
'&page='.$page.$param,
'', -1);
1002 if ($action !=
'addline' && $action !=
'reconcile') {
1003 $morehtml .= $buttonreconcile;
1006 $morehtml .=
'<!-- Add New button -->'.$newcardbutton;
1008 $picto =
'bank_account';
1009 if ($id > 0 || !empty($ref)) {
1013 print_barre_liste($langs->trans(
"BankTransactions"), $page, $_SERVER[
"PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, $picto, 0, $morehtml,
'', $limit, 0, 0, 1);
1017 $param .=
'&page='.urlencode($page);
1020 $moreforfilter =
'';
1022 $moreforfilter .=
'<div class="divsearchfield">';
1023 $moreforfilter .= $langs->trans(
'DateOperationShort');
1024 $moreforfilter .= ($conf->browser->layout ==
'phone' ?
'<br>' :
' ');
1025 $moreforfilter .=
'<div class="nowrap inline-block">';
1026 $moreforfilter .=
$form->selectDate($search_dt_start,
'search_start_dt', 0, 0, 1,
"search_form", 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'From'));
1027 $moreforfilter .=
'</div>';
1028 $moreforfilter .= ($conf->browser->layout ==
'phone' ?
'' :
' ');
1029 $moreforfilter .=
'<div class="nowrap inline-block">';
1030 $moreforfilter .=
$form->selectDate($search_dt_end,
'search_end_dt', 0, 0, 1,
"search_form", 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'to'));
1031 $moreforfilter .=
'</div>';
1032 $moreforfilter .=
'</div>';
1034 $moreforfilter .=
'<div class="divsearchfield">';
1035 $moreforfilter .= $langs->trans(
'DateValueShort');
1036 $moreforfilter .= ($conf->browser->layout ==
'phone' ?
'<br>' :
' ');
1037 $moreforfilter .=
'<div class="nowrap inline-block">';
1038 $moreforfilter .=
$form->selectDate($search_dv_start,
'search_start_dv', 0, 0, 1,
"search_form", 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'From'));
1039 $moreforfilter .=
'</div>';
1040 $moreforfilter .= ($conf->browser->layout ==
'phone' ?
'' :
' ');
1041 $moreforfilter .=
'<div class="nowrap inline-block">';
1042 $moreforfilter .=
$form->selectDate($search_dv_end,
'search_end_dv', 0, 0, 1,
"search_form", 1, 0, 0,
'',
'',
'',
'', 1,
'', $langs->trans(
'to'));
1043 $moreforfilter .=
'</div>';
1044 $moreforfilter .=
'</div>';
1048 if (
isModEnabled(
'categorie') && $user->hasRight(
'categorie',
'lire')) {
1049 $langs->load(
'categories');
1052 $moreforfilter .=
'<div class="divsearchfield">';
1053 $tmptitle = $langs->trans(
'RubriquesTransactions');
1054 $cate_arbo =
$form->select_all_categories(Categorie::TYPE_BANK_LINE, $search_bid,
'parent',
null,
null, 1);
1055 $moreforfilter .=
img_picto($tmptitle,
'category',
'class="pictofixedwidth"').$form->selectarray(
'search_bid', $cate_arbo, $search_bid, $tmptitle, 0, 0,
'', 0, 0, 0,
'',
'', 1);
1056 $moreforfilter .=
'</div>';
1060 $parameters = array();
1061 $reshook = $hookmanager->executeHooks(
'printFieldPreListTitle', $parameters);
1062 if (empty($reshook)) {
1063 $moreforfilter .= $hookmanager->resPrint;
1065 $moreforfilter = $hookmanager->resPrint;
1068 if ($moreforfilter) {
1069 print
'<div class="liste_titre liste_titre_bydiv centpercent">';
1070 print $moreforfilter;
1071 print
'</div>'.
"\n";
1074 $varpage = empty($contextpage) ? $_SERVER[
"PHP_SELF"] : $contextpage;
1075 $selectedfields =
$form->multiSelectArrayWithCheckbox(
'selectedfields', $arrayfields, $varpage);
1077 if ($action ==
'reconcile') {
1078 $arrayfields[
'b.num_releve'][
'checked'] = 1;
1081 print
'<div class="div-table-responsive">';
1082 print
'<table class="tagtable liste'.($moreforfilter ?
" listwithfilterbefore" :
"").
'">'.
"\n";
1085 print
'<tr class="liste_titre_filter">';
1086 if (!empty($arrayfields[
'b.rowid'][
'checked'])) {
1087 print
'<td class="liste_titre">';
1088 print
'<input type="text" class="flat" name="search_ref" size="2" value="'.dol_escape_htmltag($search_ref).
'">';
1091 if (!empty($arrayfields[
'b.label'][
'checked'])) {
1092 print
'<td class="liste_titre">';
1093 print
'<input type="text" class="flat maxwidth100" name="search_description" value="'.dol_escape_htmltag($search_description).
'">';
1096 if (!empty($arrayfields[
'b.dateo'][
'checked'])) {
1097 print
'<td class="liste_titre"> </td>';
1099 if (!empty($arrayfields[
'b.datev'][
'checked'])) {
1100 print
'<td class="liste_titre"> </td>';
1102 if (!empty($arrayfields[
'type'][
'checked'])) {
1103 print
'<td class="liste_titre" align="center">';
1104 print
$form->select_types_paiements(empty($search_type) ?
'' : $search_type,
'search_type',
'', 2, 1, 1, 0, 1,
'maxwidth100', 1);
1108 if (!empty($arrayfields[
'b.num_chq'][
'checked'])) {
1109 print
'<td class="liste_titre" align="center"><input type="text" class="flat" name="req_nb" value="'.dol_escape_htmltag($search_req_nb).
'" size="2"></td>';
1112 if (!empty($arrayfields[
'bu.label'][
'checked'])) {
1113 print
'<td class="liste_titre"><input type="text" class="flat maxwidth75" name="search_thirdparty" value="'.dol_escape_htmltag($search_thirdparty_user).
'"></td>';
1116 if (!empty($arrayfields[
'ba.ref'][
'checked'])) {
1117 print
'<td class="liste_titre">';
1118 $form->select_comptes($search_account,
'search_account', 0,
'', 1, ($id > 0 || !empty($ref) ?
' disabled="disabled"' :
''), 0,
'maxwidth100');
1122 if (!empty($arrayfields[
'b.debit'][
'checked'])) {
1123 print
'<td class="liste_titre right">';
1124 print
'<input type="text" class="flat width50" name="search_debit" value="'.dol_escape_htmltag($search_debit).
'">';
1128 if (!empty($arrayfields[
'b.credit'][
'checked'])) {
1129 print
'<td class="liste_titre right">';
1130 print
'<input type="text" class="flat width50" name="search_credit" value="'.dol_escape_htmltag($search_credit).
'">';
1134 if (!empty($arrayfields[
'balancebefore'][
'checked'])) {
1135 print
'<td class="liste_titre right">';
1136 $htmltext = $langs->trans(
"BalanceVisibilityDependsOnSortAndFilters", $langs->transnoentitiesnoconv(
"DateValue"));
1137 print
$form->textwithpicto(
'', $htmltext, 1);
1141 if (!empty($arrayfields[
'balance'][
'checked'])) {
1142 print
'<td class="liste_titre right">';
1143 $htmltext = $langs->trans(
"BalanceVisibilityDependsOnSortAndFilters", $langs->transnoentitiesnoconv(
"DateValue"));
1144 print
$form->textwithpicto(
'', $htmltext, 1);
1148 if (!empty($arrayfields[
'b.num_releve'][
'checked'])) {
1149 print
'<td class="liste_titre" align="center"><input type="text" class="flat" name="search_num_releve" value="'.dol_escape_htmltag($search_num_releve).
'" size="3"></td>';
1152 if (!empty($arrayfields[
'b.conciliated'][
'checked'])) {
1153 print
'<td class="liste_titre center parentonrightofpage">';
1154 print
$form->selectyesno(
'search_conciliated', $search_conciliated, 1,
false, 1, 1,
'search_status onrightofpage maxwidth75');
1158 if (!empty($arrayfields[
'b.fk_bordereau'][
'checked'])) {
1159 print
'<td class="liste_titre" align="center"><input type="text" class="flat" name="search_fk_bordereau" value="'.dol_escape_htmltag($search_fk_bordereau).
'" size="3"></td>';
1163 print
'<td class="liste_titre" align="middle">';
1164 $searchpicto =
$form->showFilterAndCheckAddButtons($massactionbutton ? 1 : 0,
'checkforselect', 1);
1170 print
'<tr class="liste_titre">';
1171 if (!empty($arrayfields[
'b.rowid'][
'checked'])) {
1172 print_liste_field_titre($arrayfields[
'b.rowid'][
'label'], $_SERVER[
'PHP_SELF'],
'b.rowid',
'', $param,
'', $sortfield, $sortorder);
1174 if (!empty($arrayfields[
'b.label'][
'checked'])) {
1175 print_liste_field_titre($arrayfields[
'b.label'][
'label'], $_SERVER[
'PHP_SELF'],
'b.label',
'', $param,
'', $sortfield, $sortorder);
1177 if (!empty($arrayfields[
'b.dateo'][
'checked'])) {
1178 print_liste_field_titre($arrayfields[
'b.dateo'][
'label'], $_SERVER[
'PHP_SELF'],
'b.dateo',
'', $param,
'', $sortfield, $sortorder,
"center ");
1180 if (!empty($arrayfields[
'b.datev'][
'checked'])) {
1181 print_liste_field_titre($arrayfields[
'b.datev'][
'label'], $_SERVER[
'PHP_SELF'],
'b.datev,b.dateo,b.rowid',
'', $param,
'align="center"', $sortfield, $sortorder);
1183 if (!empty($arrayfields[
'type'][
'checked'])) {
1184 print_liste_field_titre($arrayfields[
'type'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'align="center"', $sortfield, $sortorder);
1186 if (!empty($arrayfields[
'b.num_chq'][
'checked'])) {
1187 print_liste_field_titre($arrayfields[
'b.num_chq'][
'label'], $_SERVER[
'PHP_SELF'],
'b.num_chq',
'', $param,
'', $sortfield, $sortorder,
"center ");
1189 if (!empty($arrayfields[
'bu.label'][
'checked'])) {
1190 print_liste_field_titre($arrayfields[
'bu.label'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'', $sortfield, $sortorder);
1192 if (!empty($arrayfields[
'ba.ref'][
'checked'])) {
1193 print_liste_field_titre($arrayfields[
'ba.ref'][
'label'], $_SERVER[
'PHP_SELF'],
'ba.ref',
'', $param,
'', $sortfield, $sortorder);
1195 if (!empty($arrayfields[
'b.debit'][
'checked'])) {
1196 print_liste_field_titre($arrayfields[
'b.debit'][
'label'], $_SERVER[
'PHP_SELF'],
'b.amount',
'', $param,
'', $sortfield, $sortorder,
"right ");
1198 if (!empty($arrayfields[
'b.credit'][
'checked'])) {
1199 print_liste_field_titre($arrayfields[
'b.credit'][
'label'], $_SERVER[
'PHP_SELF'],
'b.amount',
'', $param,
'', $sortfield, $sortorder,
"right ");
1201 if (!empty($arrayfields[
'balancebefore'][
'checked'])) {
1202 print_liste_field_titre($arrayfields[
'balancebefore'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'', $sortfield, $sortorder,
"right ");
1204 if (!empty($arrayfields[
'balance'][
'checked'])) {
1205 print_liste_field_titre($arrayfields[
'balance'][
'label'], $_SERVER[
'PHP_SELF'],
'',
'', $param,
'', $sortfield, $sortorder,
"right ");
1207 if (!empty($arrayfields[
'b.num_releve'][
'checked'])) {
1208 print_liste_field_titre($arrayfields[
'b.num_releve'][
'label'], $_SERVER[
'PHP_SELF'],
'b.num_releve',
'', $param,
'', $sortfield, $sortorder,
"center ");
1210 if (!empty($arrayfields[
'b.conciliated'][
'checked'])) {
1211 print_liste_field_titre($arrayfields[
'b.conciliated'][
'label'], $_SERVER[
'PHP_SELF'],
'b.rappro',
'', $param,
'', $sortfield, $sortorder,
"center ");
1213 if (!empty($arrayfields[
'b.fk_bordereau'][
'checked'])) {
1214 print_liste_field_titre($arrayfields[
'b.fk_bordereau'][
'label'], $_SERVER[
'PHP_SELF'],
'b.fk_bordereau',
'', $param,
'', $sortfield, $sortorder,
"center ");
1218 include DOL_DOCUMENT_ROOT.
'/core/tpl/extrafields_list_search_title.tpl.php';
1220 $parameters = array(
'arrayfields'=>$arrayfields,
'param'=>$param,
'sortfield'=>$sortfield,
'sortorder'=>$sortorder);
1221 $reshook = $hookmanager->executeHooks(
'printFieldListTitle', $parameters);
1222 print $hookmanager->resPrint;
1224 print_liste_field_titre($selectedfields, $_SERVER[
"PHP_SELF"],
"",
'',
'',
'align="center"', $sortfield, $sortorder,
'maxwidthsearch ');
1229 $balancecalculated =
false;
1230 $posconciliatecol = 0;
1231 $cachebankaccount = array();
1236 while ($i < min($num, $limit)) {
1237 $objp = $db->fetch_object($resql);
1238 $links = $bankaccountstatic->get_url($objp->rowid);
1241 if (!$balancecalculated && (!empty($arrayfields[
'balancebefore'][
'checked']) || !empty($arrayfields[
'balance'][
'checked'])) && ($mode_balance_ok || $search_conciliated ===
'0')) {
1242 if (!$search_account) {
1243 dol_print_error(
'',
'account is not defined but $mode_balance_ok is true');
1250 $sqlforbalance =
'SELECT SUM(b.amount) as previoustotal';
1251 $sqlforbalance .=
" FROM ";
1252 $sqlforbalance .=
" ".MAIN_DB_PREFIX.
"bank_account as ba,";
1253 $sqlforbalance .=
" ".MAIN_DB_PREFIX.
"bank as b";
1254 $sqlforbalance .=
" WHERE b.fk_account = ba.rowid";
1255 $sqlforbalance .=
" AND ba.entity IN (".getEntity(
'bank_account').
")";
1256 $sqlforbalance .=
" AND b.fk_account = ".((int) $search_account);
1257 $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.
"))))";
1258 $resqlforbalance = $db->query($sqlforbalance);
1260 if ($resqlforbalance) {
1261 $objforbalance = $db->fetch_object($resqlforbalance);
1262 if ($objforbalance) {
1264 if ($sortfield ==
'b.datev,b.dateo,b.rowid' && ($sortorder ==
'desc' || $sortorder ==
'desc,desc' || $sortorder ==
'desc,desc,desc')) {
1265 $balancebefore = $objforbalance->previoustotal + ($sign * $objp->amount);
1268 $balance = $objforbalance->previoustotal;
1275 $balancecalculated =
true;
1278 if ($user->rights->banque->consolidate && $action ==
'reconcile') {
1279 $tmpnbfieldbeforebalance = 0;
1280 $tmpnbfieldafterbalance = 0;
1281 $balancefieldfound = 0;
1282 foreach ($arrayfields as $key => $val) {
1283 if ($key ==
'balancebefore' || $key ==
'balance') {
1284 $balancefieldfound++;
1287 if (!empty($arrayfields[$key][
'checked'])) {
1288 if (!$balancefieldfound) {
1289 $tmpnbfieldbeforebalance++;
1291 $tmpnbfieldafterbalance++;
1296 $element =
'banktransaction';
1297 if (!empty($extrafields->attributes[$element][
'label']) && is_array($extrafields->attributes[$element][
'label']) && count($extrafields->attributes[$element][
'label'])) {
1298 foreach ($extrafields->attributes[$element][
'label'] as $key => $val) {
1299 if (!empty($arrayfields[
"ef.".$key][
'checked'])) {
1300 if (!empty($arrayfields[$key][
'checked'])) {
1301 if (!$balancefieldfound) {
1302 $tmpnbfieldbeforebalance++;
1304 $tmpnbfieldafterbalance++;
1311 print
'<tr class="oddeven trforbreak">';
1312 if ($tmpnbfieldbeforebalance) {
1313 print
'<td colspan="'.$tmpnbfieldbeforebalance.
'">';
1318 if (!empty($arrayfields[
'balancebefore'][
'checked'])) {
1319 print
'<td class="right">';
1320 if ($search_conciliated !==
'0') {
1325 if (!empty($arrayfields[
'balance'][
'checked'])) {
1326 print
'<td class="right">';
1327 if ($search_conciliated !==
'0') {
1332 if (!empty($arrayfields[
'b.num_releve'][
'checked'])) {
1333 print
'<td class="center">';
1334 print
'<input type="checkbox" id="selectAll" title="'.dol_escape_htmltag($langs->trans(
"SelectAll")).
'" />';
1335 print
' <script type="text/javascript">
1336 $("input#selectAll").change(function() {
1337 $("input[type=checkbox][name^=rowid]").prop("checked", $(this).is(":checked"));
1342 print
'<td colspan="'.($tmpnbfieldafterbalance + 1).
'">';
1349 if ($sortfield ==
'b.datev,b.dateo,b.rowid' && ($sortorder ==
'desc' || $sortorder ==
'desc,desc' || $sortorder ==
'desc,desc,desc')) {
1350 $balance =
price2num($balancebefore,
'MT');
1351 $balancebefore =
price2num($balancebefore - ($sign * $objp->amount),
'MT');
1353 $balancebefore =
price2num($balance,
'MT');
1354 $balance =
price2num($balance + ($sign * $objp->amount),
'MT');
1357 if (empty($cachebankaccount[$objp->bankid])) {
1358 $bankaccounttmp =
new Account($db);
1359 $bankaccounttmp->fetch($objp->bankid);
1360 $cachebankaccount[$objp->bankid] = $bankaccounttmp;
1361 $bankaccount = $bankaccounttmp;
1363 $bankaccount = $cachebankaccount[$objp->bankid];
1366 if (empty($conf->global->BANK_COLORIZE_MOVEMENT)) {
1367 $backgroundcolor =
"class='oddeven'";
1369 if ($objp->amount < 0) {
1371 $backgroundcolor =
'style="background: '.$color.
';"';
1374 $backgroundcolor =
'style="background: '.$color.
';"';
1378 $banklinestatic->id = $objp->rowid;
1379 $banklinestatic->ref = $objp->rowid;
1381 print
'<tr class="oddeven" '.$backgroundcolor.
'>';
1384 if (!empty($arrayfields[
'b.rowid'][
'checked'])) {
1385 print
'<td class="nowrap left">';
1386 print $banklinestatic->getNomUrl(1);
1389 $totalarray[
'nbfield']++;
1394 if (!empty($arrayfields[
'b.label'][
'checked'])) {
1398 preg_match(
'/\((.+)\)/i', $objp->label, $reg);
1399 if (!empty($reg[1]) && $langs->trans($reg[1]) != $reg[1]) {
1400 $labeltoshow = $langs->trans($reg[1]);
1402 if ($objp->label ==
'(payment_salary)') {
1403 $labeltoshow = $langs->trans(
"SalaryPayment");
1406 $titletoshow = $objp->label;
1411 print
'<td class="tdoverflowmax250"'.($titletoshow ?
' title="'.dol_escape_htmltag($titletoshow).
'"' :
'').
'>';
1414 $cachebankaccount = array();
1415 foreach ($links as $key => $val) {
1416 print
'<!-- '.$links[$key][
'type'].
' -->';
1417 if ($links[$key][
'type'] ==
'withdraw') {
1418 $banktransferstatic->id = $links[$key][
'url_id'];
1419 $banktransferstatic->ref = $links[$key][
'label'];
1420 print $banktransferstatic->getNomUrl(0).
' ';
1421 } elseif ($links[$key][
'type'] ==
'payment') {
1422 $paymentstatic->id = $links[$key][
'url_id'];
1423 $paymentstatic->ref = $links[$key][
'url_id'];
1424 $paymentstatic->date = $db->jdate($objp->do);
1425 print $paymentstatic->getNomUrl(2).
' ';
1426 } elseif ($links[$key][
'type'] ==
'payment_supplier') {
1427 $paymentsupplierstatic->id = $links[$key][
'url_id'];
1428 $paymentsupplierstatic->ref = $links[$key][
'url_id'];
1429 print $paymentsupplierstatic->getNomUrl(2).
' ';
1430 } elseif ($links[$key][
'type'] ==
'payment_sc') {
1431 $paymentscstatic->id = $links[$key][
'url_id'];
1432 $paymentscstatic->ref = $links[$key][
'url_id'];
1433 $paymentscstatic->label = $links[$key][
'label'];
1434 print $paymentscstatic->getNomUrl(2).
' ';
1435 } elseif ($links[$key][
'type'] ==
'payment_vat') {
1436 $paymentvatstatic->id = $links[$key][
'url_id'];
1437 $paymentvatstatic->ref = $links[$key][
'url_id'];
1438 print $paymentvatstatic->getNomUrl(2).
' ';
1439 } elseif ($links[$key][
'type'] ==
'payment_salary') {
1440 $paymentsalstatic->id = $links[$key][
'url_id'];
1441 $paymentsalstatic->ref = $links[$key][
'url_id'];
1442 $paymentsalstatic->label = $links[$key][
'label'];
1443 print $paymentsalstatic->getNomUrl(2).
' ';
1444 } elseif ($links[$key][
'type'] ==
'payment_loan') {
1445 print
'<a href="'.DOL_URL_ROOT.
'/loan/payment/card.php?id='.$links[$key][
'url_id'].
'">';
1446 print
' '.img_object($langs->trans(
'ShowPayment'),
'payment').
' ';
1448 } elseif ($links[$key][
'type'] ==
'payment_donation') {
1449 $paymentdonationstatic->id = $links[$key][
'url_id'];
1450 $paymentdonationstatic->ref = $links[$key][
'url_id'];
1451 print $paymentdonationstatic->getNomUrl(2).
' ';
1452 } elseif ($links[$key][
'type'] ==
'payment_expensereport') {
1453 $paymentexpensereportstatic->id = $links[$key][
'url_id'];
1454 $paymentexpensereportstatic->ref = $links[$key][
'url_id'];
1455 print $paymentexpensereportstatic->getNomUrl(2).
' ';
1456 } elseif ($links[$key][
'type'] ==
'payment_various') {
1457 $paymentvariousstatic->id = $links[$key][
'url_id'];
1458 $paymentvariousstatic->ref = $links[$key][
'url_id'];
1459 print $paymentvariousstatic->getNomUrl(2).
' ';
1460 } elseif ($links[$key][
'type'] ==
'banktransfert') {
1462 if ($objp->amount > 0) {
1463 $banklinestatic->fetch($links[$key][
'url_id']);
1464 $bankstatic->id = $banklinestatic->fk_account;
1465 $bankstatic->label = $banklinestatic->bank_account_ref;
1466 print $langs->trans(
"TransferFrom").
' ';
1467 print $bankstatic->getNomUrl(1,
'transactions');
1468 print
' '.$langs->trans(
"toward").
' ';
1469 $bankstatic->id = $objp->bankid;
1470 $bankstatic->label = $objp->bankref;
1471 print $bankstatic->getNomUrl(1,
'');
1474 $bankstatic->id = $objp->bankid;
1475 $bankstatic->label = $objp->bankref;
1476 print $langs->trans(
"TransferFrom").
' ';
1477 print $bankstatic->getNomUrl(1,
'');
1478 print
' '.$langs->trans(
"toward").
' ';
1479 $banklinestatic->fetch($links[$key][
'url_id']);
1480 $bankstatic->id = $banklinestatic->fk_account;
1481 $bankstatic->label = $banklinestatic->bank_account_ref;
1482 print $bankstatic->getNomUrl(1,
'transactions');
1486 } elseif ($links[$key][
'type'] ==
'company') {
1487 } elseif ($links[$key][
'type'] ==
'user') {
1488 } elseif ($links[$key][
'type'] ==
'member') {
1489 } elseif ($links[$key][
'type'] ==
'sc') {
1490 } elseif ($links[$key][
'type'] ==
'vat') {
1491 } elseif ($links[$key][
'type'] ==
'salary') {
1495 print
'<a href="'.$links[$key][
'url'].$links[$key][
'url_id'].
'">';
1496 if (preg_match(
'/^\((.*)\)$/i', $links[$key][
'label'], $reg)) {
1498 if ($reg[1] ==
'paiement') {
1499 $reg[1] =
'Payment';
1501 print $langs->trans($reg[1]);
1503 print $links[$key][
'label'];
1505 print
'</a>'.($labeltoshow ?
' - ' :
'');
1513 $totalarray[
'nbfield']++;
1518 if (!empty($arrayfields[
'b.dateo'][
'checked'])) {
1519 print
'<td align="center" class="nowrap">';
1520 print
'<span class="spanforajaxedit" id="dateoperation_'.$objp->rowid.
'">'.
dol_print_date($db->jdate($objp->do),
"day").
"</span>";
1522 print
'<span class="inline-block">';
1523 print
'<a class="ajaxforbankoperationchange" href="'.$_SERVER[
'PHP_SELF'].
'?action=doprev&account='.$objp->bankid.
'&rowid='.$objp->rowid.
'">';
1525 print
'<a class="ajaxforbankoperationchange" href="'.$_SERVER[
'PHP_SELF'].
'?action=donext&account='.$objp->bankid.
'&rowid='.$objp->rowid.
'">';
1530 $totalarray[
'nbfield']++;
1535 if (!empty($arrayfields[
'b.datev'][
'checked'])) {
1536 print
'<td align="center" class="nowrap">';
1537 print
'<span class="spanforajaxedit" id="datevalue_'.$objp->rowid.
'">'.
dol_print_date($db->jdate($objp->dv),
"day").
"</span>";
1539 print
'<span class="inline-block">';
1540 print
'<a class="ajaxforbankoperationchange" href="'.$_SERVER[
'PHP_SELF'].
'?action=dvprev&account='.$objp->bankid.
'&rowid='.$objp->rowid.
'">';
1542 print
'<a class="ajaxforbankoperationchange" href="'.$_SERVER[
'PHP_SELF'].
'?action=dvnext&account='.$objp->bankid.
'&rowid='.$objp->rowid.
'">';
1547 $totalarray[
'nbfield']++;
1552 if (!empty($arrayfields[
'type'][
'checked'])) {
1553 print
'<td class="tdoverflowmax100 center">';
1554 $labeltype = ($langs->trans(
"PaymentTypeShort".$objp->fk_type) !=
"PaymentTypeShort".$objp->fk_type) ? $langs->trans(
"PaymentTypeShort".$objp->fk_type) : $langs->getLabelFromKey($db, $objp->fk_type,
'c_paiement',
'code',
'libelle',
'', 1);
1555 if ($labeltype ==
'SOLD') {
1562 $totalarray[
'nbfield']++;
1567 if (!empty($arrayfields[
'b.num_chq'][
'checked'])) {
1568 print
'<td class="nowrap" align="center">'.($objp->num_chq ?
dol_escape_htmltag($objp->num_chq) :
"").
"</td>\n";
1570 $totalarray[
'nbfield']++;
1575 if (!empty($arrayfields[
'bu.label'][
'checked'])) {
1576 print
'<td class="tdoverflowmax150">';
1578 $companylinked_id = 0;
1583 foreach ($links as $key => $value) {
1584 if ($links[$key][
'type'] ==
'payment_sc') {
1585 $type_link =
'payment_sc';
1587 if ($links[$key][
'type'] ==
'payment_salary') {
1588 $type_link =
'payment_salary';
1591 if ($links[$key][
'type'] ==
'company') {
1592 $companylinked_id = $links[$key][
'url_id'];
1594 if ($links[$key][
'type'] ==
'user') {
1595 $userlinked_id = $links[$key][
'url_id'];
1599 if ($companylinked_id) {
1601 $companystatic->fetch($companylinked_id);
1602 print $companystatic->getNomUrl(1);
1603 } elseif ($userlinked_id &&
1604 (($type_link ==
'payment_salary' && !empty($user->rights->salaries->read))
1605 || ($type_link ==
'payment_sc' && !empty($user->rights->tax->charges->lire)))) {
1607 if (!empty($conf->cache[
'user'][$userlinked_id])) {
1608 $tmpuser = $conf->cache[
'user'][$userlinked_id];
1610 $tmpuser =
new User($db);
1611 $tmpuser->fetch($userlinked_id);
1612 $conf->cache[
'user'][$userlinked_id] = $tmpuser;
1614 print $tmpuser->getNomUrl(1);
1621 $totalarray[
'nbfield']++;
1626 if (!empty($arrayfields[
'ba.ref'][
'checked'])) {
1627 print
'<td class="nowrap">';
1628 print $bankaccount->getNomUrl(1);
1631 $totalarray[
'nbfield']++;
1636 if (!empty($arrayfields[
'b.debit'][
'checked'])) {
1637 print
'<td class="nowrap right"><span class="amount">';
1638 if ($objp->amount < 0) {
1639 print
price($objp->amount * -1);
1640 $totalarray[
'totaldeb'] += $objp->amount;
1642 print
"</span></td>\n";
1644 $totalarray[
'nbfield']++;
1647 $totalarray[
'totaldebfield'] = $totalarray[
'nbfield'];
1652 if (!empty($arrayfields[
'b.credit'][
'checked'])) {
1653 print
'<td class="nowrap right"><span class="amount">';
1654 if ($objp->amount > 0) {
1655 print
price($objp->amount);
1656 $totalarray[
'totalcred'] += $objp->amount;
1658 print
"</span></td>\n";
1660 $totalarray[
'nbfield']++;
1663 $totalarray[
'totalcredfield'] = $totalarray[
'nbfield'];
1668 if (!empty($arrayfields[
'balancebefore'][
'checked'])) {
1669 if ($mode_balance_ok) {
1670 if ($balancebefore >= 0) {
1671 print
'<td class="nowrap right"> '.price($balancebefore).
'</td>';
1673 print
'<td class="error nowrap right"> '.price($balancebefore).
'</td>';
1676 print
'<td class="right">-</td>';
1679 $totalarray[
'nbfield']++;
1684 if (!empty($arrayfields[
'balance'][
'checked'])) {
1685 if ($mode_balance_ok) {
1686 if ($balance >= 0) {
1687 print
'<td class="nowrap right"> '.price($balance).
'</td>';
1689 print
'<td class="error nowrap right"> '.price($balance).
'</td>';
1692 print
'<td class="right">-</td>';
1695 $totalarray[
'nbfield']++;
1699 if (!empty($arrayfields[
'b.num_releve'][
'checked'])) {
1700 print
'<td class="nowraponall" align="center">';
1702 if ($bankaccount->canBeConciliated() > 0) {
1703 if ($objp->num_releve) {
1704 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>';
1706 if (!$objp->conciliated && $action ==
'reconcile') {
1707 if ($objp->num_releve) {
1710 print
'<input class="flat" name="rowid['.$objp->rowid.
']" type="checkbox" value="'.$objp->rowid.
'" size="1"'.(!empty($_POST[
'rowid'][$objp->rowid]) ?
' checked' :
'').
'>';
1715 $totalarray[
'nbfield']++;
1716 $posconciliatecol = $totalarray[
'nbfield'];
1720 if (!empty($arrayfields[
'b.conciliated'][
'checked'])) {
1721 print
'<td class="nowraponall" align="center">';
1722 print
yn($objp->conciliated);
1725 $totalarray[
'nbfield']++;
1729 if (!empty($arrayfields[
'b.fk_bordereau'][
'checked'])) {
1730 $bordereaustatic->fetch($objp->fk_bordereau);
1731 print
'<td class="nowraponall" align="center">';
1732 print $bordereaustatic->getNomUrl();
1735 $totalarray[
'nbfield']++;
1740 $parameters=array(
'arrayfields'=>$arrayfields,
'obj'=>$objp,
'i'=>$i,
'totalarray'=>&$totalarray);
1741 $reshook=$hookmanager->executeHooks(
'printFieldListValue', $parameters, $objecttmp);
1742 print $hookmanager->resPrint;
1745 print
'<td class="nowraponall" align="center">';
1747 if ($objp->conciliated && $bankaccount->canBeConciliated() > 0) {
1748 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.
'">';
1752 if ($user->rights->banque->modifier || $user->rights->banque->consolidate) {
1753 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.
'">';
1757 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.
'">';
1761 if ($bankaccount->canBeConciliated() > 0 && empty($objp->conciliated)) {
1762 if ($db->jdate($objp->dv) < ($now - $conf->bank->rappro->warning_delay)) {
1763 print
' '.img_warning($langs->trans(
"ReconciliationLate"));
1766 if ($user->rights->banque->modifier) {
1767 print
'<a href="'.$_SERVER[
"PHP_SELF"].
'?action=delete&token='.
newToken().
'&rowid='.$objp->rowid.
'&page='.$page.$param.($sortfield ?
'&sortfield='.$sortfield :
'').($sortorder ?
'&sortorder='.$sortorder :
'').
'">';
1768 print
img_delete(
'',
'class="marginleftonly"');
1774 if ($massactionbutton || $massaction) {
1776 if (in_array($obj->rowid, $arrayofselected)) {
1779 print
'<input id="cb'.$obj->rowid.
'" class="flat checkforselect marginleftonly" type="checkbox" name="toselect[]" value="'.$obj->rowid.
'"'.($selected ?
' checked="checked"' :
'').
'>';
1783 $totalarray[
'nbfield']++;
1792 if (isset($totalarray[
'totaldebfield']) || isset($totalarray[
'totalcredfield'])) {
1793 print
'<tr class="liste_total">';
1795 while ($i < $totalarray[
'nbfield']) {
1798 if ($num < $limit && empty($offset)) {
1799 print
'<td class="left">'.$langs->trans(
"Total").
'</td>';
1801 print
'<td class="left tdoverflowmax50" title="'.$langs->trans(
"Totalforthispage").
'">'.$langs->trans(
"Totalforthispage").
'</td>';
1803 } elseif ($totalarray[
'totaldebfield'] == $i) {
1804 print
'<td class="right"><span class="amount">'.price(-1 * $totalarray[
'totaldeb']).
'</span></td>';
1805 } elseif ($totalarray[
'totalcredfield'] == $i) {
1806 print
'<td class="right"><span class="amount">'.price($totalarray[
'totalcred']).
'</span></td>';
1807 } elseif ($i == $posconciliatecol) {
1808 print
'<td class="center">';
1809 if ($user->rights->banque->consolidate && $action ==
'reconcile') {
1810 print
'<input class="button" name="confirm_reconcile" type="submit" value="'.$langs->trans(
"Conciliate").
'">';
1823 foreach ($arrayfields as $key => $val) {
1824 if (!empty($val[
'checked'])) {
1828 print
'<tr><td colspan="'.($colspan + 1).
'" class="opacitymedium">'.$langs->trans(
"NoRecordFound").
'</td></tr>';