dolibarr 21.0.0-beta
card.php
Go to the documentation of this file.
1<?php
2/* Copyright (C) 2015-2017 Alexandre Spangaro <aspangaro@open-dsi.fr>
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.'/expensereport/class/expensereport.class.php';
29require_once DOL_DOCUMENT_ROOT.'/expensereport/class/paymentexpensereport.class.php';
30require_once DOL_DOCUMENT_ROOT.'/core/modules/expensereport/modules_expensereport.php';
31require_once DOL_DOCUMENT_ROOT.'/core/lib/expensereport.lib.php';
32if (isModEnabled("bank")) {
33 require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
34}
35
44// Load translation files required by the page
45$langs->loadLangs(array('bills', 'banks', 'companies', 'trips'));
46
47$id = GETPOST('rowid') ? GETPOSTINT('rowid') : GETPOSTINT('id');
48$action = GETPOST('action', 'aZ09');
49$confirm = GETPOST('confirm');
50
51// Security check
52if ($user->socid) {
53 $socid = $user->socid;
54}
55// TODO Add rule to restrict access payment
56//$result = restrictedArea($user, 'facture', $id,'');
57
59
60if ($id > 0) {
61 $result = $object->fetch($id);
62 if (!$result) {
63 dol_print_error($db, 'Failed to get payment id '.$id);
64 }
65}
66
67
68/*
69 * Actions
70 */
71
72// Delete payment
73if ($action == 'confirm_delete' && $confirm == 'yes' && $user->hasRight('expensereport', 'supprimer')) {
74 $db->begin();
75
76 $result = $object->delete($user);
77 if ($result > 0) {
78 $db->commit();
79 header("Location: ".DOL_URL_ROOT."/expensereport/index.php");
80 exit;
81 } else {
82 setEventMessages($object->error, $object->errors, 'errors');
83 $db->rollback();
84 }
85}
86
87
88/*
89 * View
90 */
91
92llxHeader('', $langs->trans("ExpenseReportPayment"));
93
94$form = new Form($db);
95
97
98print dol_get_fiche_head($head, 'payment', $langs->trans("ExpenseReportPayment"), -1, 'payment');
99
100/*
101 * Confirm deleting of the payment
102 */
103if ($action == 'delete') {
104 print $form->formconfirm('card.php?id='.$object->id, $langs->trans("DeletePayment"), $langs->trans("ConfirmDeletePayment"), 'confirm_delete', '', 0, 2);
105}
106
107$linkback = '';
108// $linkback = '<a href="' . DOL_URL_ROOT . '/expensereport/payment/list.php">' . $langs->trans("BackToList") . '</a>';
109
110dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', '');
111
112print '<div class="fichecenter">';
113print '<div class="underbanner clearboth"></div>';
114
115print '<table class="border centpercent">'."\n";
116
117// Date payment
118print '<tr><td class="titlefield">'.$langs->trans('Date').'</td><td>'.dol_print_date($object->datep, 'day').'</td></tr>';
119
120// Mode
121print '<tr><td>'.$langs->trans('PaymentMode').'</td><td>'.$langs->trans("PaymentType".$object->type_code).'</td></tr>';
122
123// Number
124print '<tr><td>'.$langs->trans('Numero').'</td><td>'.dol_escape_htmltag($object->num_payment).'</td></tr>';
125
126// Amount
127print '<tr><td>'.$langs->trans('Amount').'</td><td>'.price($object->amount, 0, $outputlangs, 1, -1, -1, $conf->currency).'</td></tr>';
128
129// Note public
130print '<tr><td class="tdtop">'.$langs->trans('Note').'</td><td class="valeur sensiblehtmlcontent">'.dol_string_onlythesehtmltags(dol_htmlentitiesbr($object->note_public)).'</td></tr>';
131
132$disable_delete = 0;
133// Bank account
134if (isModEnabled("bank")) {
135 if ($object->bank_account) {
136 $bankline = new AccountLine($db);
137 $bankline->fetch($object->bank_line);
138 if ($bankline->rappro) {
139 $disable_delete = 1;
140 $title_button = dol_escape_htmltag($langs->transnoentitiesnoconv("CantRemoveConciliatedPayment"));
141 }
142
143 print '<tr>';
144 print '<td>'.$langs->trans('BankTransactionLine').'</td>';
145 print '<td colspan="3">';
146 print $bankline->getNomUrl(1, 0, 'showconciliated');
147 print '</td>';
148 print '</tr>';
149
150 print '<tr>';
151 print '<td>'.$langs->trans('BankAccount').'</td>';
152 print '<td colspan="3">';
153 $accountstatic = new Account($db);
154 $accountstatic->fetch($bankline->fk_account);
155 print $accountstatic->getNomUrl(1);
156 print '</td>';
157 print '</tr>';
158 }
159}
160
161print '</table>';
162
163print '</div>';
164
165print dol_get_fiche_end();
166
167
168/*
169 * List of expense report paid
170 */
171
172$sql = 'SELECT er.rowid as eid, er.paid, er.total_ttc, per.amount';
173$sql .= ' FROM '.MAIN_DB_PREFIX.'payment_expensereport as per,'.MAIN_DB_PREFIX.'expensereport as er';
174$sql .= ' WHERE per.fk_expensereport = er.rowid';
175$sql .= ' AND er.entity IN ('.getEntity('expensereport').')';
176$sql .= ' AND per.rowid = '.((int) $id);
177
178dol_syslog("expensereport/payment/card.php", LOG_DEBUG);
179$resql = $db->query($sql);
180if ($resql) {
181 $num = $db->num_rows($resql);
182
183 $i = 0;
184 $total = 0;
185 print '<br>';
186
187 print '<div class="div-table-responsive">';
188 print '<table class="noborder centpercent">';
189
190 print '<tr class="liste_titre">';
191 print '<td>'.$langs->trans('ExpenseReport').'</td>';
192 print '<td class="right">'.$langs->trans('ExpectedToPay').'</td>';
193 print '<td class="right">'.$langs->trans('PayedByThisPayment').'</td>';
194 print '<td class="right">'.$langs->trans('RemainderToPay').'</td>';
195 print '<td class="center">'.$langs->trans('Status').'</td>';
196 print "</tr>\n";
197
198 if ($num > 0) {
199 while ($i < $num) {
200 $objp = $db->fetch_object($resql);
201
202 print '<tr class="oddeven">';
203
204 $expensereport = new ExpenseReport($db);
205 $expensereport->fetch($objp->eid);
206
207 // Expense report
208 print '<td>';
209 print $expensereport->getNomUrl(1);
210 print "</td>\n";
211
212 // Expected to pay
213 print '<td class="right">'.price($objp->total_ttc).'</td>';
214
215 // Amount paid
216 print '<td class="right">'.price($objp->amount).'</td>';
217
218 // Remain to pay
219 print '<td class="right">'.price($objp->total_ttc - $objp->amount).'</td>';
220
221 // Status
222 print '<td class="center">'.$expensereport->getLibStatut(4).'</td>';
223
224 print "</tr>\n";
225
226 if ($objp->paid == 1) { // If at least one invoice is paid, disable delete
227 $disable_delete = 2;
228 $title_button = $langs->trans("CantRemovePaymentWithOneInvoicePaid");
229 }
230 $total += $objp->amount;
231 $i++;
232 }
233 }
234
235
236 print "</table>\n";
237 print '</div>';
238
239 $db->free($resql);
240} else {
241 dol_print_error($db);
242}
243
244
245
246/*
247 * Actions buttons
248 */
249print '<div class="tabsAction">';
250
251// Delete
252if ($action == '') {
253 if ($user->hasRight('expensereport', 'supprimer')) {
254 if (!$disable_delete) {
255 print dolGetButtonAction($langs->trans("Delete"), '', 'delete', $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=delete&token='.newToken(), 'delete', 1);
256 } else {
257 print dolGetButtonAction($title_button, $langs->trans("Delete"), 'delete', $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=delete&token='.newToken(), 'delete', 0);
258 }
259 }
260}
261
262print '</div>';
263
264// End of page
265llxFooter();
266$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 accounts.
Class to manage bank transaction lines.
Class to manage Trips and Expenses.
Class to manage generation of HTML components Only common components must be here.
Class to manage payments of expense report.
llxFooter()
Footer empty.
Definition document.php:107
payment_expensereport_prepare_head(PaymentExpenseReport $object)
Returns an array with the tabs for the "Expense report payment" section It loads tabs from modules lo...
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_string_onlythesehtmltags($stringtoclean, $cleanalsosomestyles=1, $removeclassattribute=1, $cleanalsojavascript=0, $allowiframe=0, $allowed_tags=array(), $allowlink=0, $allowscript=0, $allowstyle=0)
Clean a string to keep only desirable HTML tags.
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.
dol_get_fiche_end($notab=0)
Return tab footer of a card.
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_htmlentitiesbr($stringtoencode, $nl2brmode=0, $pagecodefrom='UTF-8', $removelasteolbr=1)
This function is called to encode a string into a HTML string but differs from htmlentities because a...
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $noescapetags='', $escapeonlyhtmltags=0, $cleanalsojavascript=0)
Returns text escaped for inclusion in HTML alt or title or value tags, or into values of HTML input f...
global $conf
The following vars must be defined: $type2label $form $conf, $lang, The following vars may also be de...
Definition member.php:79