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();
llxFooter($comment='', $zone='private', $disabledoutputofmessages=0)
Empty footer.
Definition wrapper.php:87
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.
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.