1<?php 2/* Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org> 3 * Copyright (C) 2005 Laurent Destailleur <eldy@users.sourceforge.net> 4 * Copyright (C) 2010-2012 Juanjo Menent <jmenent@2byte.es> 5 * 6 * This program is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation; either version 3 of the License, or 9 * (at your option) any later version. 10 * 11 * This program is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with this program. If not, see <https://www.gnu.org/licenses/>. 18 */ 19 20/** 21 * \file htdocs/compta/prelevement/fiche-stat.php 22 * \ingroup prelevement 23 * \brief Debit order or credit transfer statistics 24 */ 25 26require '../../main.inc.php'; 27require_once DOL_DOCUMENT_ROOT.'/core/lib/prelevement.lib.php'; 28require_once DOL_DOCUMENT_ROOT.'/compta/prelevement/class/bonprelevement.class.php'; 29require_once DOL_DOCUMENT_ROOT.'/compta/prelevement/class/ligneprelevement.class.php'; 30require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; 31 32// Load translation files required by the page 33$langs->loadLangs(array("banks", "categories", 'withdrawals', 'bills')); 34 35// Security check 36if ($user->socid > 0) { 37 accessforbidden(); 38} 39 40// Get supervariables 41$prev_id = GETPOST('id', 'int'); 42$ref = GETPOST('ref', 'alpha'); 43 44$type = GETPOST('type', 'aZ09'); 45 46// Load variable for pagination 47$limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; 48$sortfield = GETPOST('sortfield', 'aZ09comma'); 49$sortorder = GETPOST('sortorder', 'aZ09comma'); 50$page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); 51if (empty($page) || $page == -1) { 52 $page = 0; 53} // If $page is not defined, or '' or -1 54$offset = $limit * $page; 55$pageprev = $page - 1; 56$pagenext = $page + 1; 57 58 59$object = new BonPrelevement($db); 60 61// Load object 62include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not include_once // Must be include, not include_once. Include fetch and fetch_thirdparty but not fetch_optionals 63 64if (!$user->rights->prelevement->bons->lire && $object->type != 'bank-transfer') { 65 accessforbidden(); 66} 67if (!$user->rights->paymentbybanktransfer->read && $object->type == 'bank-transfer') { 68 accessforbidden(); 69} 70 71 72 73/* 74 * View 75 */ 76 77llxHeader('', $langs->trans("WithdrawalsReceipts")); 78 79if ($prev_id > 0 || $ref) { 80 if ($object->fetch($prev_id, $ref) >= 0) { 81 $head = prelevement_prepare_head($object); 82 print dol_get_fiche_head($head, 'statistics', $langs->trans("WithdrawalsReceipts"), -1, 'payment'); 83 84 $linkback = '<a href="'.DOL_URL_ROOT.'/compta/prelevement/orders_list.php?restore_lastsearch_values=1'.($object->type != 'bank-transfer' ? '' : '&type=bank-transfer').'">'.$langs->trans("BackToList").'</a>'; 85 86 dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref'); 87 88 print '<div class="fichecenter">'; 89 print '<div class="underbanner clearboth"></div>'; 90 print '<table class="border centpercent tableforfield">'."\n"; 91 92 //print '<tr><td class="titlefield">'.$langs->trans("Ref").'</td><td>'.$object->getNomUrl(1).'</td></tr>'; 93 print '<tr><td class="titlefield">'.$langs->trans("Date").'</td><td>'.dol_print_date($object->datec, 'day').'</td></tr>'; 94 print '<tr><td>'.$langs->trans("Amount").'</td><td>'.price($object->amount).'</td></tr>'; 95 96 if ($object->date_trans <> 0) { 97 $muser = new User($db); 98 $muser->fetch($object->user_trans); 99 100 print '<tr><td>'.$langs->trans("TransData").'</td><td>'; 101 print dol_print_date($object->date_trans, 'day'); 102 print ' <span class="opacitymedium">'.$langs->trans("By").'</span> '.$muser->getFullName($langs).'</td></tr>'; 103 print '<tr><td>'.$langs->trans("TransMetod").'</td><td>'; 104 print $object->methodes_trans[$object->method_trans]; 105 print '</td></tr>'; 106 } 107 if ($object->date_credit <> 0) { 108 print '<tr><td>'.$langs->trans('CreditDate').'</td><td>'; 109 print dol_print_date($object->date_credit, 'day'); 110 print '</td></tr>'; 111 } 112 113 print '</table>'; 114 115 print '<br>'; 116 117 print '<div class="underbanner clearboth"></div>'; 118 print '<table class="border centpercent tableforfield">'; 119 120 $acc = new Account($db); 121 $result = $acc->fetch($conf->global->PRELEVEMENT_ID_BANKACCOUNT); 122 123 print '<tr><td class="titlefield">'; 124 $labelofbankfield = "BankToReceiveWithdraw"; 125 if ($object->type == 'bank-transfer') { 126 $labelofbankfield = 'BankToPayCreditTransfer'; 127 } 128 print $langs->trans($labelofbankfield); 129 print '</td>'; 130 print '<td>'; 131 if ($acc->id > 0) { 132 print $acc->getNomUrl(1); 133 } 134 print '</td>'; 135 print '</tr>'; 136 137 print '<tr><td class="titlefield">'; 138 $labelfororderfield = 'WithdrawalFile'; 139 if ($object->type == 'bank-transfer') { 140 $labelfororderfield = 'CreditTransferFile'; 141 } 142 print $langs->trans($labelfororderfield).'</td><td>'; 143 $relativepath = 'receipts/'.$object->ref.'.xml'; 144 $modulepart = 'prelevement'; 145 if ($object->type == 'bank-transfer') { 146 $modulepart = 'paymentbybanktransfer'; 147 } 148 print '<a data-ajax="false" href="'.DOL_URL_ROOT.'/document.php?type=text/plain&modulepart='.$modulepart.'&file='.urlencode($relativepath).'">'.$relativepath.'</a>'; 149 print '</td></tr></table>'; 150 151 print '</div>'; 152 153 print dol_get_fiche_end(); 154 } else { 155 dol_print_error($db); 156 } 157 158 /* 159 * Stats 160 */ 161 $line = new LignePrelevement($db); 162 163 $sql = "SELECT sum(pl.amount), pl.statut"; 164 $sql .= " FROM ".MAIN_DB_PREFIX."prelevement_lignes as pl"; 165 $sql .= " WHERE pl.fk_prelevement_bons = ".((int) $object->id); 166 $sql .= " GROUP BY pl.statut"; 167 168 $resql = $db->query($sql); 169 if ($resql) { 170 $num = $db->num_rows($resql); 171 $i = 0; 172 173 print load_fiche_titre($langs->trans("StatisticsByLineStatus"), '', ''); 174 175 print"\n<!-- debut table -->\n"; 176 print '<table class="noborder" width="100%" cellpadding="4">'; 177 print '<tr class="liste_titre">'; 178 print '<td>'.$langs->trans("Status").'</td><td class="right">'.$langs->trans("Amount").'</td><td class="right">%</td></tr>'; 179 180 while ($i < $num) { 181 $row = $db->fetch_row($resql); 182 183 print '<tr class="oddeven"><td>'; 184 185 print $line->LibStatut($row[1], 1); 186 187 print '</td><td class="right">'; 188 print price($row[0]); 189 190 print '</td><td class="right">'; 191 if ($object->amount) { 192 print round($row[0] / $object->amount * 100, 2)." %"; 193 } 194 print '</td>'; 195 196 print "</tr>\n"; 197 198 199 $i++; 200 } 201 202 print "</table>"; 203 $db->free($resql); 204 } else { 205 print $db->error().' '.$sql; 206 } 207} 208 209// End of page 210llxFooter(); 211$db->close(); 212