dolibarr 21.0.0-alpha
card.php
Go to the documentation of this file.
1<?php
2/* Copyright (C) 2014-2024 Alexandre Spangaro <alexandre@inovea-conseil.com>
3 * Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com>
4 * Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
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
26// Load Dolibarr environment
27require '../../main.inc.php';
28require_once DOL_DOCUMENT_ROOT.'/loan/class/loan.class.php';
29require_once DOL_DOCUMENT_ROOT.'/loan/class/paymentloan.class.php';
30if (isModEnabled("bank")) {
31 require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
32}
33
34// Load translation files required by the page
35$langs->loadLangs(array("bills", "banks", "companies", "loan"));
36
37// Security check
38$id = GETPOSTINT("id");
39$action = GETPOST('action', 'aZ09');
40$confirm = GETPOST('confirm');
41if ($user->socid) {
42 $socid = $user->socid;
43}
44// TODO ajouter regle pour restreindre access paiement
45//$result = restrictedArea($user, 'facture', $id,'');
46
47$payment = new PaymentLoan($db);
48if ($id > 0) {
49 $result = $payment->fetch($id);
50 if (!$result) {
51 dol_print_error($db, 'Failed to get payment id '.$id);
52 }
53}
54
55
56/*
57 * Actions
58 */
59
60// Delete payment
61if ($action == 'confirm_delete' && $confirm == 'yes' && $user->hasRight('loan', 'delete')) {
62 $db->begin();
63
64 $sql = "UPDATE ".MAIN_DB_PREFIX."loan_schedule SET fk_bank = 0 WHERE fk_bank = ".((int) $payment->fk_bank);
65 $db->query($sql);
66
67 $fk_loan = $payment->fk_loan;
68
69 $result = $payment->delete($user);
70 if ($result > 0) {
71 $db->commit();
72 header("Location: ".DOL_URL_ROOT."/loan/card.php?id=".urlencode((string) ($fk_loan)));
73 exit;
74 } else {
75 setEventMessages($payment->error, $payment->errors, 'errors');
76 $db->rollback();
77 }
78}
79
80
81/*
82 * View
83 */
84$loan = new Loan($db);
85$form = new Form($db);
86
87$title = $langs->trans('Loans');
88$help_url = "EN:Module_Loan|FR:Module_Emprunt";
89
90llxHeader('', $title, $help_url, '', 0, 0, '', '', '', 'bodyforlist mod-loan page-payment-card');
91
92$h = 0;
93
94$head[$h][0] = DOL_URL_ROOT.'/loan/payment/card.php?id='.$id;
95$head[$h][1] = $langs->trans("PaymentLoan");
96$hselected = (string) $h;
97$h++;
98
99print dol_get_fiche_head($head, $hselected, $langs->trans("PaymentLoan"), -1, 'payment');
100
101/*
102 * Confirm deletion of the payment
103 */
104if ($action == 'delete') {
105 print $form->formconfirm('card.php?id='.$payment->id, $langs->trans("DeletePayment"), $langs->trans("ConfirmDeletePayment"), 'confirm_delete', '', 0, 2);
106}
107
108$linkback = '';
109$morehtmlref = '';
110$morehtmlstatus = '';
111
112dol_banner_tab($payment, 'id', $linkback, 1, 'rowid', 'ref', $morehtmlref, '', 0, '', $morehtmlstatus);
113
114print '<div class="fichecenter">';
115print '<div class="underbanner clearboth"></div>';
116
117print '<table class="border centpercent">';
118
119// Date
120print '<tr><td>'.$langs->trans('Date').'</td><td>'.dol_print_date($payment->datep, 'day').'</td></tr>';
121
122// Mode
123print '<tr><td>'.$langs->trans('Mode').'</td><td>'.$langs->trans("PaymentType".$payment->type_code).'</td></tr>';
124
125// Amount
126print '<tr><td>'.$langs->trans('LoanCapital').'</td><td>'.price($payment->amount_capital, 0, $langs, 1, -1, -1, $conf->currency).'</td></tr>';
127print '<tr><td>'.$langs->trans('Insurance').'</td><td>'.price($payment->amount_insurance, 0, $langs, 1, -1, -1, $conf->currency).'</td></tr>';
128print '<tr><td>'.$langs->trans('Interest').'</td><td>'.price($payment->amount_interest, 0, $langs, 1, -1, -1, $conf->currency).'</td></tr>';
129
130// Note Private
131print '<tr><td>'.$langs->trans('NotePrivate').'</td><td>'.nl2br($payment->note_private).'</td></tr>';
132
133// Note Public
134print '<tr><td>'.$langs->trans('NotePublic').'</td><td>'.nl2br($payment->note_public).'</td></tr>';
135
136// Bank account
137if (isModEnabled("bank")) {
138 if ($payment->bank_account) {
139 $bankline = new AccountLine($db);
140 $bankline->fetch($payment->bank_line);
141
142 print '<tr>';
143 print '<td>'.$langs->trans('BankTransactionLine').'</td>';
144 print '<td>';
145 print $bankline->getNomUrl(1, 0, 'showall');
146 print '</td>';
147 print '</tr>';
148 }
149}
150
151print '</table>';
152
153print '</div>';
154
155
156/*
157 * List of loans paid
158 */
159
160$disable_delete = 0;
161$sql = 'SELECT l.rowid as id, l.label, l.paid, l.capital as capital, pl.amount_capital, pl.amount_insurance, pl.amount_interest';
162$sql .= ' FROM '.MAIN_DB_PREFIX.'payment_loan as pl,'.MAIN_DB_PREFIX.'loan as l';
163$sql .= ' WHERE pl.fk_loan = l.rowid';
164$sql .= ' AND l.entity = '.((int) $conf->entity);
165$sql .= ' AND pl.rowid = '.((int) $payment->id);
166
167dol_syslog("loan/payment/card.php", LOG_DEBUG);
168$resql = $db->query($sql);
169if ($resql) {
170 $num = $db->num_rows($resql);
171
172 $i = 0;
173 $total = 0;
174 print '<br><table class="noborder centpercent">';
175 print '<tr class="liste_titre">';
176 print '<td>'.$langs->trans('Loan').'</td>';
177 print '<td>'.$langs->trans('Label').'</td>';
178 // print '<td class="right">'.$langs->trans('ExpectedToPay').'</td>';
179 print '<td class="center">'.$langs->trans('Status').'</td>';
180 print '<td class="right">'.$langs->trans('PayedByThisPayment').'</td>';
181 print "</tr>\n";
182
183 if ($num > 0) {
184 while ($i < $num) {
185 $objp = $db->fetch_object($resql);
186
187 print '<tr class="oddeven">';
188 // Ref
189 print '<td>';
190 $loan->fetch($objp->id);
191 print $loan->getNomUrl(1);
192 print "</td>\n";
193 // Label
194 print '<td>'.$objp->label.'</td>';
195 // Expected to pay
196 // print '<td class="right">'.price($objp->capital).'</td>';
197 // Status
198 print '<td class="center">'.$loan->getLibStatut(4, $objp->amount_capital).'</td>';
199 // Amount paid
200 $amount_payed = $objp->amount_capital + $objp->amount_insurance + $objp->amount_interest;
201
202 print '<td class="right">'.price($amount_payed).'</td>';
203 print "</tr>\n";
204 if ($objp->paid == 1) { // If at least one invoice is paid, disable delete
205 $disable_delete = 1;
206 }
207 $total += $objp->amount_capital;
208 $i++;
209 }
210 }
211
212
213 print "</table>\n";
214 $db->free($resql);
215} else {
216 dol_print_error($db);
217}
218
219print '</div>';
220
221
222/*
223 * Actions buttons
224 */
225
226print '<div class="tabsAction">';
227
228if (empty($action) && $user->hasRight('loan', 'delete')) {
229 if (!$disable_delete) {
230 print dolGetButtonAction($langs->trans("Delete"), '', 'delete', $_SERVER["PHP_SELF"].'?id='.$id.'&action=delete&token='.newToken(), 'delete', 1);
231 } else {
232 print dolGetButtonAction($langs->trans("CantRemovePaymentWithOneInvoicePaid"), $langs->trans("Delete"), 'delete', $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=delete&token='.newToken(), 'delete', 0);
233 }
234}
235
236print '</div>';
237
238// End of page
239llxFooter();
240$db->close();
$id
Definition account.php:39
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
Definition card.php:58
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:70
Class to manage bank transaction lines.
Class to manage generation of HTML components Only common components must be here.
Loan.
Class to manage payments of loans.
llxFooter()
Footer empty.
Definition document.php:107
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.
dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limittoshow=0, $moretabssuffix='', $dragdropfile=0)
Show tabs of a record.
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).
newToken()
Return the value of token currently saved into session with name 'newtoken'.
dolGetButtonAction($label, $text='', $actionType='default', $url='', $id='', $userRight=1, $params=array())
Function dolGetButtonAction.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.