dolibarr 21.0.0-beta
index.php
Go to the documentation of this file.
1<?php
2/* Copyright (C) 2004-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
3 * Copyright (C) 2005-2020 Laurent Destailleur <eldy@users.sourceforge.net>
4 * Copyright (C) 2005-2009 Regis Houssin <regis.houssin@inodbox.com>
5 * Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es>
6 * Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
7 * Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com>
8 * Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
9 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 3 of the License, or
13 * (at your option) any later version.
14 *
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
19 *
20 * You should have received a copy of the GNU General Public License
21 * along with this program. If not, see <https://www.gnu.org/licenses/>.
22 */
23
31// Load Dolibarr environment
32require '../../main.inc.php';
33require_once DOL_DOCUMENT_ROOT.'/compta/prelevement/class/bonprelevement.class.php';
34require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php';
35require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
36require_once DOL_DOCUMENT_ROOT.'/core/lib/prelevement.lib.php';
37require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
38require_once DOL_DOCUMENT_ROOT.'/salaries/class/salary.class.php';
39
48// Load translation files required by the page
49$langs->loadLangs(array('banks', 'categories', 'withdrawals'));
50
51// Security check
52$socid = GETPOSTINT('socid');
53if ($user->socid) {
54 $socid = $user->socid;
55}
56$result = restrictedArea($user, 'paymentbybanktransfer', '', '');
57
58$usercancreate = $user->hasRight('paymentbybanktransfer', 'create');
59
60
61/*
62 * Actions
63 */
64
65// None
66
67
68/*
69 * View
70 */
71
72llxHeader('', $langs->trans("SuppliersStandingOrdersArea"));
73
74if (prelevement_check_config('bank-transfer') < 0) {
75 $langs->load("errors");
76 setEventMessages($langs->trans("ErrorModuleSetupNotComplete", $langs->transnoentitiesnoconv("PaymentByBankTransfer")), null, 'errors');
77}
78
79$thirdpartystatic = new Societe($db);
80$invoicestatic = new FactureFournisseur($db);
81$bprev = new BonPrelevement($db);
82$salary = new Salary($db);
83$user = new User($db);
84
85$newcardbutton = '';
86if ($usercancreate) {
87 $newcardbutton .= dolGetButtonTitle($langs->trans('NewPaymentByBankTransfer'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/compta/prelevement/create.php?type=bank-transfer');
88}
89
90print load_fiche_titre($langs->trans("SuppliersStandingOrdersArea"), $newcardbutton);
91
92
93print '<div class="fichecenter"><div class="fichethirdleft">';
94
95
96print '<div class="div-table-responsive-no-min">';
97print '<table class="noborder centpercent">';
98print '<tr class="liste_titre"><th colspan="2">'.$langs->trans("Statistics").'</th></tr>';
99
100$totaltoshow = 0;
101
102if (isModEnabled('supplier_invoice')) {
103 print '<tr class="oddeven"><td>'.$langs->trans("NbOfInvoiceToPayByBankTransfer").'</td>';
104 print '<td class="right">';
105 $amounttoshow = $bprev->SommeAPrelever('bank-transfer');
106 print '<a class="badge badge-info" href="'.DOL_URL_ROOT.'/compta/prelevement/demandes.php?status=0&type=bank-transfer" title="'.price($amounttoshow).'">';
107 print $bprev->nbOfInvoiceToPay('bank-transfer');
108 print '</a>';
109 print '</td></tr>';
110 $totaltoshow += $amounttoshow;
111}
112
113if (isModEnabled('salaries')) {
114 print '<tr class="oddeven"><td>'.$langs->trans("NbOfInvoiceToPayByBankTransferForSalaries").'</td>';
115 print '<td class="right">';
116 $amounttoshow = $bprev->SommeAPrelever('bank-transfer', 'salary');
117 print '<a class="badge badge-info" href="'.DOL_URL_ROOT.'/compta/prelevement/demandes.php?status=0&type=bank-transfer&sourcetype=salary" title="'.price($amounttoshow).'">';
118 print $bprev->nbOfInvoiceToPay('bank-transfer', 'salary');
119 print '</a>';
120 print '</td></tr>';
121 $totaltoshow += $amounttoshow;
122}
123
124print '<tr class="oddeven"><td>'.$langs->trans("Total").'</td>';
125print '<td class="right"><span class="amount nowraponall">';
126print price($totaltoshow, 0, '', 1, -1, -1, 'auto');
127print '</span></td></tr></table></div><br>';
128
129
130/*
131 * Invoices waiting for credit transfer
132 */
133if (isModEnabled('supplier_invoice')) {
134 $sql = "SELECT f.ref, f.rowid, f.total_ttc, f.fk_statut, f.paye, f.type, f.datef, f.date_lim_reglement,";
135 $sql .= " pfd.date_demande, pfd.amount,";
136 $sql .= " s.nom as name, s.email, s.rowid as socid, s.tva_intra, s.siren as idprof1, s.siret as idprof2, s.ape as idprof3, s.idprof4, s.idprof5, s.idprof6";
137 $sql .= " FROM ".MAIN_DB_PREFIX."facture_fourn as f,";
138 $sql .= " ".MAIN_DB_PREFIX."societe as s,";
139 $sql .= " ".MAIN_DB_PREFIX."prelevement_demande as pfd";
140 $sql .= " WHERE s.rowid = f.fk_soc";
141 $sql .= " AND f.entity IN (".getEntity('supplier_invoice').")";
142 $sql .= " AND f.total_ttc > 0";
143 if (!getDolGlobalString('WITHDRAWAL_ALLOW_ANY_INVOICE_STATUS')) {
144 $sql .= " AND f.fk_statut = ".FactureFournisseur::STATUS_VALIDATED;
145 }
146 $sql .= " AND pfd.traite = 0";
147 $sql .= " AND pfd.ext_payment_id IS NULL";
148 $sql .= " AND pfd.fk_facture_fourn = f.rowid";
149 if ($socid) {
150 $sql .= " AND f.fk_soc = ".((int) $socid);
151 }
152
153 $resql = $db->query($sql);
154
155 if ($resql) {
156 $num = $db->num_rows($resql);
157 $i = 0;
158
159 print '<div class="div-table-responsive-no-min">';
160 print '<table class="noborder centpercent">';
161 print '<tr class="liste_titre">';
162 print '<th colspan="5">'.$langs->trans("SupplierInvoiceWaitingWithdraw").' <span class="opacitymedium">('.$num.')</span></th></tr>';
163 if ($num) {
164 while ($i < $num && $i < 20) {
165 $obj = $db->fetch_object($resql);
166
167 $invoicestatic->id = $obj->rowid;
168 $invoicestatic->ref = $obj->ref;
169 $invoicestatic->status = $obj->fk_statut;
170 $invoicestatic->statut = $obj->fk_statut; // For backward compatibility
171 $invoicestatic->paye = $obj->paye;
172 $invoicestatic->paid = $obj->paye;
173 $invoicestatic->type = $obj->type;
174 $invoicestatic->date = $db->jdate($obj->datef);
175 $invoicestatic->date_echeance = $db->jdate($obj->date_lim_reglement);
176 $invoicestatic->total_ttc = $obj->total_ttc;
177
178 $alreadypayed = $invoicestatic->getSommePaiement();
179
180 $thirdpartystatic->id = $obj->socid;
181 $thirdpartystatic->name = $obj->name;
182 $thirdpartystatic->email = $obj->email;
183 $thirdpartystatic->tva_intra = $obj->tva_intra;
184 $thirdpartystatic->idprof1 = $obj->idprof1;
185 $thirdpartystatic->idprof2 = $obj->idprof2;
186 $thirdpartystatic->idprof3 = $obj->idprof3;
187 $thirdpartystatic->idprof4 = $obj->idprof4;
188 $thirdpartystatic->idprof5 = $obj->idprof5;
189 $thirdpartystatic->idprof6 = $obj->idprof6;
190
191
192 print '<tr class="oddeven"><td class="nowraponall">';
193 print $invoicestatic->getNomUrl(1, 'withdraw');
194 print '</td>';
195
196 print '<td class="tdoverflowmax150">';
197 print $thirdpartystatic->getNomUrl(1, 'supplier');
198 print '</td>';
199
200 print '<td class="right">';
201 print '<span class="amount">'.price($obj->amount).'</span>';
202 print '</td>';
203
204 print '<td class="right">';
205 print dol_print_date($db->jdate($obj->date_demande), 'day');
206 print '</td>';
207
208 print '<td class="right">';
209 print $invoicestatic->getLibStatut(3, $alreadypayed);
210 print '</td>';
211 print '</tr>';
212 $i++;
213 }
214 } else {
215 $titlefortab = $langs->transnoentitiesnoconv("BankTransfer");
216 print '<tr class="oddeven"><td colspan="5"><span class="opacitymedium">'.$langs->trans("NoSupplierInvoiceToWithdraw", $titlefortab, $titlefortab).'</span></td></tr>';
217 }
218 print "</table></div><br>";
219 } else {
220 dol_print_error($db);
221 }
222}
223
224if (isModEnabled('salaries')) {
225 $sqlForSalary = "SELECT * FROM ".MAIN_DB_PREFIX."salary as s, ".MAIN_DB_PREFIX."prelevement_demande as pd";
226 $sqlForSalary .= " WHERE s.rowid = pd.fk_salary AND s.paye = 0 AND pd.traite = 0";
227 $sqlForSalary .= " AND s.entity IN (".getEntity('salary').")";
228
229 $resql2 = $db->query($sqlForSalary);
230 if ($resql2) {
231 $numRow = $db->num_rows($resql2);
232 $j = 0 ;
233
234 print '<div class="div-table-responsive-no-min">';
235 print '<table class="noborder rightpercent">';
236 print '<tr class="liste_titre">';
237 print '<th colspan="5">'.$langs->trans("SalaryInvoiceWaitingWithdraw").' <span class="opacitymedium">('.$numRow.')</span></th></tr>';
238
239 if ($numRow) {
240 while ($j < $numRow && $j < 10) {
241 $objSalary = $db->fetch_object($resql2);
242
243 $user->fetch($objSalary->fk_user);
244
245 $salary->fetch($objSalary->fk_salary);
246
247 $alreadypayedS = $salary->getSommePaiement();
248
249 print '<tr class="oddeven"><td class="nowraponall">';
250 print $salary->getNomUrl(1);
251 print '</td>';
252
253 print '<td class="tdoverflowmax150">';
254 print $user->getNomUrl(-1);
255 print '</td>';
256
257 print '<td class="right">';
258 print '<span class="amount">'.price($objSalary->amount).'</span>';
259 print '</td>';
260
261 print '<td class="right" title="'.$langs->trans("DateRequest").'">';
262 print dol_print_date($db->jdate($objSalary->date_demande), 'day');
263 print '</td>';
264
265 print '<td class="right">';
266 print $salary->getLibStatut(3, $alreadypayedS);
267 print '</td>';
268 print '</tr>';
269 $j++;
270 }
271 } else {
272 $titlefortab = $langs->transnoentitiesnoconv("BankTransfer");
273 print '<tr class="oddeven"><td colspan="5"><span class="opacitymedium">'.$langs->trans("NoSalaryInvoiceToWithdraw", $titlefortab, $titlefortab).'</span></td></tr>';
274 }
275 print "</table></div><br>";
276 } else {
277 dol_print_error($db);
278 }
279}
280
281
282print '</div><div class="fichetwothirdright">';
283
284/*
285 * Withdraw receipts
286 */
287
288$limit = 5;
289$sql = "SELECT p.rowid, p.ref, p.amount, p.datec, p.statut";
290$sql .= " FROM ".MAIN_DB_PREFIX."prelevement_bons as p";
291$sql .= " WHERE p.type = 'bank-transfer'";
292$sql .= " AND p.entity IN (".getEntity('invoice').")";
293$sql .= " ORDER BY datec DESC";
294$sql .= $db->plimit($limit);
295
296$result = $db->query($sql);
297if ($result) {
298 $num = $db->num_rows($result);
299 $i = 0;
300
301 print"\n<!-- debut table -->\n";
302 print '<div class="div-table-responsive-no-min">';
303 print '<table class="noborder centpercent">';
304 print '<tr class="liste_titre">';
305 print '<th>'.$langs->trans("LatestBankTransferReceipts", $limit).'</th>';
306 print '<th>'.$langs->trans("Date").'</th>';
307 print '<th class="right">'.$langs->trans("Amount").'</th>';
308 print '<th class="right">'.$langs->trans("Status").'</th>';
309 print '</tr>';
310
311 if ($num > 0) {
312 while ($i < min($num, $limit)) {
313 $obj = $db->fetch_object($result);
314
315 print '<tr class="oddeven">';
316
317 print '<td class="nowraponall">';
318 $bprev->id = $obj->rowid;
319 $bprev->ref = $obj->ref;
320 $bprev->statut = $obj->statut;
321 print $bprev->getNomUrl(1);
322 print "</td>\n";
323 print '<td>'.dol_print_date($db->jdate($obj->datec), "dayhour")."</td>\n";
324 print '<td class="right nowraponall"><span class="amount">'.price($obj->amount)."</span></td>\n";
325 print '<td class="right"><span class="amount">'.$bprev->getLibStatut(3)."</span></td>\n";
326
327 print "</tr>\n";
328 $i++;
329 }
330 } else {
331 print '<tr><td colspan="4"><span class="opacitymedium">'.$langs->trans("None").'</span></td></tr>';
332 }
333
334 print "</table></div><br>";
335 $db->free($result);
336} else {
337 dol_print_error($db);
338}
339
340
341print '</div></div>';
342
343// End of page
344llxFooter();
345$db->close();
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.
Definition wrapper.php:71
Class to manage withdrawal receipts.
Class to manage suppliers invoices.
Class to manage salary payments.
Class to manage third parties objects (customers, suppliers, prospects...)
Class to manage Dolibarr users.
llxFooter()
Footer empty.
Definition document.php:107
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.
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
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.
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_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_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
prelevement_check_config($type='direct-debit')
Check need data to create standigns orders receipt file.
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.