dolibarr  13.0.2
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 2 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 // Get parameters
54 $limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit;
55 $sortfield = GETPOST("sortfield", 'alpha');
56 $sortorder = GETPOST("sortorder", 'alpha');
57 $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int');
58 if (empty($page) || $page == -1) { $page = 0; }
59 $offset = $limit * $page;
60 $pageprev = $page - 1;
61 $pagenext = $page + 1;
62 if (!$sortorder)
63  $sortorder = "ASC";
64 if (!$sortfield)
65  $sortfield = "name";
66 
67 $object = new Account($db);
68 if ($id > 0 || !empty($ref))
69 {
70  $result = $object->fetch($id, $ref);
71  $account = $object->id; // Force the search field on id of account
72 }
73 
74 $result = restrictedArea($user, 'banque', $object->id, 'bank_account', '', '');
75 
76 // Define number of receipt to show (current, previous or next one ?)
77 $found = false;
78 if ($_GET["rel"] == 'prev')
79 {
80  // Recherche valeur pour num = numero releve precedent
81  $sql = "SELECT DISTINCT(b.num_releve) as num";
82  $sql .= " FROM ".MAIN_DB_PREFIX."bank as b";
83  $sql .= " WHERE b.num_releve < '".$db->escape($numref)."'";
84  $sql .= " AND b.fk_account = ".$id;
85  $sql .= " ORDER BY b.num_releve DESC";
86 
87  dol_syslog("htdocs/compta/bank/releve.php", LOG_DEBUG);
88  $resql = $db->query($sql);
89  if ($resql)
90  {
91  $numrows = $db->num_rows($resql);
92  if ($numrows > 0)
93  {
94  $obj = $db->fetch_object($resql);
95  $numref = $obj->num;
96  $found = true;
97  }
98  }
99 } elseif ($_GET["rel"] == 'next')
100 {
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 = ".$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  {
112  $numrows = $db->num_rows($resql);
113  if ($numrows > 0)
114  {
115  $obj = $db->fetch_object($resql);
116  $numref = $obj->num;
117  $found = true;
118  }
119  }
120 } else {
121  // On veut le releve num
122  $found = true;
123 }
124 
125 
126 /*
127  * Actions
128  */
129 
130 if (!empty($numref))
131 {
132  $object->fetch_thirdparty();
133  $upload_dir = $conf->bank->dir_output."/".$id."/statement/".dol_sanitizeFileName($numref);
134 }
135 $backtopage = $_SERVER['PHP_SELF']."?account=".$id."&num=".$numref;
136 include_once DOL_DOCUMENT_ROOT.'/core/actions_linkedfiles.inc.php';
137 
138 
139 /*
140  * View
141  */
142 
143 $form = new Form($db);
144 
145 $title = $langs->trans("FinancialAccount").' - '.$langs->trans("Documents");
146 $helpurl = "";
147 llxHeader('', $title, $helpurl);
148 
149 if ($id > 0 || !empty($ref)) {
150  if ($object->fetch($id, $ref)) {
151  $upload_dir = $conf->bank->dir_output."/".$id."/statement/".dol_sanitizeFileName($numref);
152 
153  // Onglets
154  $head = account_statement_prepare_head($object, $numref);
155  print dol_get_fiche_head($head, 'document', $langs->trans("AccountStatement"), -1, 'account');
156 
157 
158  // Build file list
159  $filearray = dol_dir_list($upload_dir, "files", 0, '', '\.meta$', $sortfield, (strtolower($sortorder) == 'desc' ? SORT_DESC : SORT_ASC), 1);
160  $totalsize = 0;
161  foreach ($filearray as $key => $file) {
162  $totalsize += $file['size'];
163  }
164 
165  $morehtmlright = '';
166  $morehtmlright .= '<div class="pagination"><ul>';
167  $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>';
168  $morehtmlright .= '<li class="pagination"><span class="active">'.$langs->trans("AccountStatement")." ".$numref.'</span></li>';
169  $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>';
170  $morehtmlright .= '</ul></div>';
171 
172  $title = $langs->trans("AccountStatement").' '.$numref.' - '.$langs->trans("BankAccount").' '.$object->getNomUrl(1, 'receipts');
173  print load_fiche_titre($title, $morehtmlright, '');
174 
175  print '<div class="fichecenter">';
176  print '<div class="underbanner clearboth"></div>';
177 
178  print '<table class="border tableforfield centpercent">';
179  print '<tr><td class="titlefield">'.$langs->trans("NbOfAttachedFiles").'</td><td colspan="3">'.count($filearray).'</td></tr>';
180  print '<tr><td>'.$langs->trans("TotalSizeOfAttachedFiles").'</td><td colspan="3">'.dol_print_size($totalsize, 1, 1).'</td></tr>';
181  print "</table>\n";
182 
183  print '</div>';
184 
186 
187 
188  $modulepart = 'bank';
189  $permission = $user->rights->banque->modifier;
190  $permtoedit = $user->rights->banque->modifier;
191  $param = '&id='.$object->id.'&num='.urlencode($numref);
192  $moreparam = '&num='.urlencode($numref); ;
193  $relativepathwithnofile = $id."/statement/".dol_sanitizeFileName($numref)."/";
194  include_once DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php';
195  } else {
196  dol_print_error($db);
197  }
198 } else {
199  Header('Location: index.php');
200  exit;
201 }
202 
203 // End of page
204 llxFooter();
205 $db->close();
GETPOST($paramname, $check= 'alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
account_statement_prepare_head($object, $num)
Prepare array with list of tabs.
Definition: bank.lib.php:168
Class to manage bank accounts.
llxHeader()
Empty header.
Definition: wrapper.php:45
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.
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.
restrictedArea($user, $features, $objectid=0, $tableandshare= '', $feature2= '', $dbt_keyfield= 'fk_soc', $dbt_select= 'rowid', $isdraft=0)
Check permissions of a user to show a page and an object.
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
print $_SERVER["PHP_SELF"]
Edit parameters.
dol_get_fiche_head($links=array(), $active= '', $title= '', $notab=0, $picto= '', $pictoisfullpath=0, $morehtmlright= '', $morecss= '', $limittoshow=0, $moretabssuffix= '')
Show tabs of a record.
print
Draft customers invoices.
Definition: index.php:89
dol_print_size($size, $shortvalue=0, $shortunit=0)
Return string with formated size.
if(!empty($conf->facture->enabled)&&$user->rights->facture->lire) if((!empty($conf->fournisseur->enabled)&&empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)||!empty($conf->supplier_invoice->enabled))&&$user->rights->fournisseur->facture->lire) if(!empty($conf->don->enabled)&&$user->rights->don->lire) if(!empty($conf->tax->enabled)&&$user->rights->tax->charges->lire) if(!empty($conf->facture->enabled)&&!empty($conf->commande->enabled)&&$user->rights->commande->lire &&empty($conf->global->WORKFLOW_DISABLE_CREATE_INVOICE_FROM_ORDER)) if(!empty($conf->facture->enabled)&&$user->rights->facture->lire) if((!empty($conf->fournisseur->enabled)&&empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)||!empty($conf->supplier_invoice->enabled))&&$user->rights->fournisseur->facture->lire) $resql
Social contributions to pay.
Definition: index.php:1232
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:59
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $keepmoretags= '', $escapeonlyhtmltags=0)
Returns text escaped for inclusion in HTML alt or title tags, or into values of HTML input fields...