dolibarr 21.0.0-beta
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
42// Load translation files required by the page
43$langs->loadLangs(array("bills", "banks", "companies", "loan"));
44
45// Security check
46$id = GETPOSTINT("id");
47$action = GETPOST('action', 'aZ09');
48$confirm = GETPOST('confirm');
49if ($user->socid) {
50 $socid = $user->socid;
51}
52// TODO ajouter regle pour restreindre access paiement
53//$result = restrictedArea($user, 'facture', $id,'');
54
55$payment = new PaymentLoan($db);
56if ($id > 0) {
57 $result = $payment->fetch($id);
58 if (!$result) {
59 dol_print_error($db, 'Failed to get payment id '.$id);
60 }
61}
62
63
64/*
65 * Actions
66 */
67
68// Delete payment
69if ($action == 'confirm_delete' && $confirm == 'yes' && $user->hasRight('loan', 'delete')) {
70 $db->begin();
71
72 $sql = "UPDATE ".MAIN_DB_PREFIX."loan_schedule SET fk_bank = 0 WHERE fk_bank = ".((int) $payment->fk_bank);
73 $db->query($sql);
74
75 $fk_loan = $payment->fk_loan;
76
77 $result = $payment->delete($user);
78 if ($result > 0) {
79 $db->commit();
80 header("Location: ".DOL_URL_ROOT."/loan/card.php?id=".urlencode((string) ($fk_loan)));
81 exit;
82 } else {
83 setEventMessages($payment->error, $payment->errors, 'errors');
84 $db->rollback();
85 }
86}
87
88
89/*
90 * View
91 */
92$loan = new Loan($db);
93$form = new Form($db);
94
95$title = $langs->trans('Loans');
96$help_url = "EN:Module_Loan|FR:Module_Emprunt";
97
98llxHeader('', $title, $help_url, '', 0, 0, '', '', '', 'bodyforlist mod-loan page-payment-card');
99
100$h = 0;
101
102$head[$h][0] = DOL_URL_ROOT.'/loan/payment/card.php?id='.$id;
103$head[$h][1] = $langs->trans("PaymentLoan");
104$hselected = (string) $h;
105$h++;
106
107print dol_get_fiche_head($head, $hselected, $langs->trans("PaymentLoan"), -1, 'payment');
108
109/*
110 * Confirm deletion of the payment
111 */
112if ($action == 'delete') {
113 print $form->formconfirm('card.php?id='.$payment->id, $langs->trans("DeletePayment"), $langs->trans("ConfirmDeletePayment"), 'confirm_delete', '', 0, 2);
114}
115
116$linkback = '';
117$morehtmlref = '';
118$morehtmlstatus = '';
119
120dol_banner_tab($payment, 'id', $linkback, 1, 'rowid', 'ref', $morehtmlref, '', 0, '', $morehtmlstatus);
121
122print '<div class="fichecenter">';
123print '<div class="underbanner clearboth"></div>';
124
125print '<table class="border centpercent">';
126
127// Date
128print '<tr><td>'.$langs->trans('Date').'</td><td>'.dol_print_date($payment->datep, 'day').'</td></tr>';
129
130// Mode
131print '<tr><td>'.$langs->trans('Mode').'</td><td>'.$langs->trans("PaymentType".$payment->type_code).'</td></tr>';
132
133// Amount
134print '<tr><td>'.$langs->trans('LoanCapital').'</td><td>'.price($payment->amount_capital, 0, $langs, 1, -1, -1, $conf->currency).'</td></tr>';
135print '<tr><td>'.$langs->trans('Insurance').'</td><td>'.price($payment->amount_insurance, 0, $langs, 1, -1, -1, $conf->currency).'</td></tr>';
136print '<tr><td>'.$langs->trans('Interest').'</td><td>'.price($payment->amount_interest, 0, $langs, 1, -1, -1, $conf->currency).'</td></tr>';
137
138// Note Private
139print '<tr><td>'.$langs->trans('NotePrivate').'</td><td>'.nl2br($payment->note_private).'</td></tr>';
140
141// Note Public
142print '<tr><td>'.$langs->trans('NotePublic').'</td><td>'.nl2br($payment->note_public).'</td></tr>';
143
144// Bank account
145if (isModEnabled("bank")) {
146 if ($payment->bank_account) {
147 $bankline = new AccountLine($db);
148 $bankline->fetch($payment->bank_line);
149
150 print '<tr>';
151 print '<td>'.$langs->trans('BankTransactionLine').'</td>';
152 print '<td>';
153 print $bankline->getNomUrl(1, 0, 'showall');
154 print '</td>';
155 print '</tr>';
156 }
157}
158
159print '</table>';
160
161print '</div>';
162
163
164/*
165 * List of loans paid
166 */
167
168$disable_delete = 0;
169$sql = 'SELECT l.rowid as id, l.label, l.paid, l.capital as capital, pl.amount_capital, pl.amount_insurance, pl.amount_interest';
170$sql .= ' FROM '.MAIN_DB_PREFIX.'payment_loan as pl,'.MAIN_DB_PREFIX.'loan as l';
171$sql .= ' WHERE pl.fk_loan = l.rowid';
172$sql .= ' AND l.entity = '.((int) $conf->entity);
173$sql .= ' AND pl.rowid = '.((int) $payment->id);
174
175dol_syslog("loan/payment/card.php", LOG_DEBUG);
176$resql = $db->query($sql);
177if ($resql) {
178 $num = $db->num_rows($resql);
179
180 $i = 0;
181 $total = 0;
182 print '<br><table class="noborder centpercent">';
183 print '<tr class="liste_titre">';
184 print '<td>'.$langs->trans('Loan').'</td>';
185 print '<td>'.$langs->trans('Label').'</td>';
186 // print '<td class="right">'.$langs->trans('ExpectedToPay').'</td>';
187 print '<td class="center">'.$langs->trans('Status').'</td>';
188 print '<td class="right">'.$langs->trans('PayedByThisPayment').'</td>';
189 print "</tr>\n";
190
191 if ($num > 0) {
192 while ($i < $num) {
193 $objp = $db->fetch_object($resql);
194
195 print '<tr class="oddeven">';
196 // Ref
197 print '<td>';
198 $loan->fetch($objp->id);
199 print $loan->getNomUrl(1);
200 print "</td>\n";
201 // Label
202 print '<td>'.$objp->label.'</td>';
203 // Expected to pay
204 // print '<td class="right">'.price($objp->capital).'</td>';
205 // Status
206 print '<td class="center">'.$loan->getLibStatut(4, $objp->amount_capital).'</td>';
207 // Amount paid
208 $amount_payed = $objp->amount_capital + $objp->amount_insurance + $objp->amount_interest;
209
210 print '<td class="right">'.price($amount_payed).'</td>';
211 print "</tr>\n";
212 if ($objp->paid == 1) { // If at least one invoice is paid, disable delete
213 $disable_delete = 1;
214 }
215 $total += $objp->amount_capital;
216 $i++;
217 }
218 }
219
220
221 print "</table>\n";
222 $db->free($resql);
223} else {
224 dol_print_error($db);
225}
226
227print '</div>';
228
229
230/*
231 * Actions buttons
232 */
233
234print '<div class="tabsAction">';
235
236if (empty($action) && $user->hasRight('loan', 'delete')) {
237 if (!$disable_delete) {
238 print dolGetButtonAction($langs->trans("Delete"), '', 'delete', $_SERVER["PHP_SELF"].'?id='.$id.'&action=delete&token='.newToken(), 'delete', 1);
239 } else {
240 print dolGetButtonAction($langs->trans("CantRemovePaymentWithOneInvoicePaid"), $langs->trans("Delete"), 'delete', $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=delete&token='.newToken(), 'delete', 0);
241 }
242}
243
244print '</div>';
245
246// End of page
247llxFooter();
248$db->close();
$id
Definition account.php:48
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
Definition card.php:66
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 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.
global $conf
The following vars must be defined: $type2label $form $conf, $lang, The following vars may also be de...
Definition member.php:79