dolibarr  16.0.1
account_statement_document.php
1 <?php
2 
3 /* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
4  * Copyright (C) 2004-2008 Laurent Destailleur <eldy@users.sourceforge.net>
5  * Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com>
6  * Copyright (C) 2005-2017 Regis Houssin <regis.houssin@inodbox.com>
7  * Copyright (C) 2019 Nicolas ZABOURI <info@inovea-conseil.com>
8  *
9  * This program is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 3 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program. If not, see <https://www.gnu.org/licenses/>.
21  */
22 
28 require '../../main.inc.php';
29 require_once DOL_DOCUMENT_ROOT."/core/lib/bank.lib.php";
30 require_once DOL_DOCUMENT_ROOT."/core/lib/files.lib.php";
31 require_once DOL_DOCUMENT_ROOT."/core/lib/images.lib.php";
32 require_once DOL_DOCUMENT_ROOT."/core/class/html.formfile.class.php";
33 require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
34 
35 global $conf, $db, $langs;
36 // Load translation files required by the page
37 $langs->loadLangs(array('banks', 'companies', 'other'));
38 
39 $id = (GETPOST('id', 'int') ? GETPOST('id', 'int') : GETPOST('account', 'int'));
40 $ref = GETPOST('ref', 'alpha');
41 $action = GETPOST('action', 'aZ09');
42 $confirm = GETPOST('confirm', 'alpha');
43 $numref = (GETPOST('num', 'alpha') ? GETPOST('num', 'alpha') : GETPOST('sectionid', 'alpha'));
44 
45 // Security check
46 if ($user->socid) {
47  $action = '';
48  $socid = $user->socid;
49 }
50 if ($user->socid) {
51  $socid = $user->socid;
52 }
53 
54 // Get parameters
55 $limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit;
56 $sortfield = GETPOST('sortfield', 'aZ09comma');
57 $sortorder = GETPOST('sortorder', 'aZ09comma');
58 $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int');
59 if (empty($page) || $page == -1) {
60  $page = 0;
61 }
62 $offset = $limit * $page;
63 $pageprev = $page - 1;
64 $pagenext = $page + 1;
65 if (!$sortorder) {
66  $sortorder = "ASC";
67 }
68 if (!$sortfield) {
69  $sortfield = "name";
70 }
71 
72 $object = new Account($db);
73 if ($id > 0 || !empty($ref)) {
74  $result = $object->fetch($id, $ref);
75  $account = $object->id; // Force the search field on id of account
76 }
77 
78 $result = restrictedArea($user, 'banque', $object->id, 'bank_account', '', '');
79 
80 // Define number of receipt to show (current, previous or next one ?)
81 $found = false;
82 if (GETPOST("rel") == 'prev') {
83  // Recherche valeur pour num = numero releve precedent
84  $sql = "SELECT DISTINCT(b.num_releve) as num";
85  $sql .= " FROM ".MAIN_DB_PREFIX."bank as b";
86  $sql .= " WHERE b.num_releve < '".$db->escape($numref)."'";
87  $sql .= " AND b.fk_account = ".((int) $id);
88  $sql .= " ORDER BY b.num_releve DESC";
89 
90  dol_syslog("htdocs/compta/bank/releve.php", LOG_DEBUG);
91  $resql = $db->query($sql);
92  if ($resql) {
93  $numrows = $db->num_rows($resql);
94  if ($numrows > 0) {
95  $obj = $db->fetch_object($resql);
96  $numref = $obj->num;
97  $found = true;
98  }
99  }
100 } elseif (GETPOST("rel") == 'next') {
101  // Recherche valeur pour num = numero releve precedent
102  $sql = "SELECT DISTINCT(b.num_releve) as num";
103  $sql .= " FROM ".MAIN_DB_PREFIX."bank as b";
104  $sql .= " WHERE b.num_releve > '".$db->escape($numref)."'";
105  $sql .= " AND b.fk_account = ".((int) $id);
106  $sql .= " ORDER BY b.num_releve ASC";
107 
108  dol_syslog("htdocs/compta/bank/releve.php", LOG_DEBUG);
109  $resql = $db->query($sql);
110  if ($resql) {
111  $numrows = $db->num_rows($resql);
112  if ($numrows > 0) {
113  $obj = $db->fetch_object($resql);
114  $numref = $obj->num;
115  $found = true;
116  }
117  }
118 } else {
119  // On veut le releve num
120  $found = true;
121 }
122 
123 $permissiontoadd = $user->rights->banque->modifier; // Used by the include of actions_dellink.inc.php
124 
125 
126 /*
127  * Actions
128  */
129 
130 if (!empty($numref)) {
131  $object->fetch_thirdparty();
132  $upload_dir = $conf->bank->dir_output."/".$id."/statement/".dol_sanitizeFileName($numref);
133 }
134 $backtopage = $_SERVER['PHP_SELF']."?account=".urlencode($id)."&num=".urlencode($numref);
135 include DOL_DOCUMENT_ROOT.'/core/actions_linkedfiles.inc.php';
136 
137 
138 /*
139  * View
140  */
141 
142 $form = new Form($db);
143 
144 $title = $langs->trans("FinancialAccount").' - '.$langs->trans("Documents");
145 $helpurl = "";
146 llxHeader('', $title, $helpurl);
147 
148 if ($id > 0 || !empty($ref)) {
149  if ($object->fetch($id, $ref)) {
150  $upload_dir = $conf->bank->dir_output."/".$id."/statement/".dol_sanitizeFileName($numref);
151 
152  // Onglets
153  $head = account_statement_prepare_head($object, $numref);
154  print dol_get_fiche_head($head, 'document', $langs->trans("AccountStatement"), -1, 'account');
155 
156 
157  // Build file list
158  $filearray = dol_dir_list($upload_dir, "files", 0, '', '\.meta$', $sortfield, (strtolower($sortorder) == 'desc' ? SORT_DESC : SORT_ASC), 1);
159  $totalsize = 0;
160  foreach ($filearray as $key => $file) {
161  $totalsize += $file['size'];
162  }
163 
164  $morehtmlright = '';
165  $morehtmlright .= '<div class="pagination"><ul>';
166  $morehtmlright .= '<li class="pagination"><a class="paginationnext" href="'.$_SERVER["PHP_SELF"].'?rel=prev&amp;num='.$numref.'&amp;ve='.$ve.'&amp;account='.$object->id.'"><i class="fa fa-chevron-left" title="'.dol_escape_htmltag($langs->trans("Previous")).'"></i></a></li>';
167  $morehtmlright .= '<li class="pagination"><span class="active">'.$langs->trans("AccountStatement")." ".$numref.'</span></li>';
168  $morehtmlright .= '<li class="pagination"><a class="paginationnext" href="'.$_SERVER["PHP_SELF"].'?rel=next&amp;num='.$numref.'&amp;ve='.$ve.'&amp;account='.$object->id.'"><i class="fa fa-chevron-right" title="'.dol_escape_htmltag($langs->trans("Next")).'"></i></a></li>';
169  $morehtmlright .= '</ul></div>';
170 
171  $title = $langs->trans("AccountStatement").' '.$numref.' - '.$langs->trans("BankAccount").' '.$object->getNomUrl(1, 'receipts');
172  print load_fiche_titre($title, $morehtmlright, '');
173 
174  print '<div class="fichecenter">';
175  print '<div class="underbanner clearboth"></div>';
176 
177  print '<table class="border tableforfield centpercent">';
178  print '<tr><td class="titlefield">'.$langs->trans("NbOfAttachedFiles").'</td><td colspan="3">'.count($filearray).'</td></tr>';
179  print '<tr><td>'.$langs->trans("TotalSizeOfAttachedFiles").'</td><td colspan="3">'.dol_print_size($totalsize, 1, 1).'</td></tr>';
180  print "</table>\n";
181 
182  print '</div>';
183 
184  print dol_get_fiche_end();
185 
186 
187  $modulepart = 'bank';
188  $permissiontoadd = $user->rights->banque->modifier;
189  $permtoedit = $user->rights->banque->modifier;
190  $param = '&id='.$object->id.'&num='.urlencode($numref);
191  $moreparam = '&num='.urlencode($numref);
192  $relativepathwithnofile = $id."/statement/".dol_sanitizeFileName($numref)."/";
193  include DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php';
194  } else {
195  dol_print_error($db);
196  }
197 } else {
198  header('Location: index.php');
199  exit;
200 }
201 
202 // End of page
203 llxFooter();
204 $db->close();
GETPOST($paramname, $check= 'alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
if($cancel &&!$id) if($action== 'add'&&!$cancel) if($action== 'delete') if($id) $form
Actions.
Definition: card.php:142
account_statement_prepare_head($object, $num)
Prepare array with list of tabs.
Definition: bank.lib.php:174
if(!defined('NOREQUIRESOC')) if(!defined('NOREQUIRETRAN')) if(!defined('NOCSRFCHECK')) if(!defined('NOTOKENRENEWAL')) if(!defined('NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined('NOREQUIREAJAX')) llxHeader()
Empty header.
Definition: wrapper.php:59
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $noescapetags= '', $escapeonlyhtmltags=0)
Returns text escaped for inclusion in HTML alt or title tags, or into values of HTML input fields...
Class to manage bank accounts.
Class to manage generation of HTML components Only common components must be here.
GETPOSTISSET($paramname)
Return true if we are in a context of submitting the parameter $paramname from a POST of a form...
load_fiche_titre($titre, $morehtmlright= '', $picto= 'generic', $pictoisfullpath=0, $id= '', $morecssontable= '', $morehtmlcenter= '')
Load a title with picto.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename= '', $restricttologhandler= '', $logcontext=null)
Write log message into outputs.
dol_sanitizeFileName($str, $newstr= '_', $unaccent=1)
Clean a string to use it as a file name.
dol_dir_list($path, $types="all", $recursive=0, $filter="", $excludefilter=null, $sortcriteria="name", $sortorder=SORT_ASC, $mode=0, $nohook=0, $relativename="", $donotfollowsymlinks=0)
Scan a directory and return a list of files/directories.
Definition: files.lib.php:60
restrictedArea($user, $features, $objectid=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.
if(isModEnabled('facture')&&!empty($user->rights->facture->lire)) if((isModEnabled('fournisseur')&&empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)&&$user->rights->fournisseur->facture->lire)||(isModEnabled('supplier_invoice')&&$user->rights->supplier_invoice->lire)) if(isModEnabled('don')&&!empty($user->rights->don->lire)) if(isModEnabled('tax')&&!empty($user->rights->tax->charges->lire)) if(isModEnabled('facture')&&isModEnabled('commande')&&$user->rights->commande->lire &&empty($conf->global->WORKFLOW_DISABLE_CREATE_INVOICE_FROM_ORDER)) $resql
Social contributions to pay.
Definition: index.php:742
dol_get_fiche_head($links=array(), $active= '', $title= '', $notab=0, $picto= '', $pictoisfullpath=0, $morehtmlright= '', $morecss= '', $limittoshow=0, $moretabssuffix= '')
Show tabs of a record.
dol_print_size($size, $shortvalue=0, $shortunit=0)
Return string with formated size.
dol_print_error($db= '', $error= '', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
dol_get_fiche_end($notab=0)
Return tab footer of a card.
llxFooter()
Empty footer.
Definition: wrapper.php:73