26 require
'../../main.inc.php';
27 require_once DOL_DOCUMENT_ROOT.
'/expensereport/class/expensereport.class.php';
28 require_once DOL_DOCUMENT_ROOT.
'/expensereport/class/paymentexpensereport.class.php';
29 require_once DOL_DOCUMENT_ROOT.
'/compta/bank/class/account.class.php';
32 $langs->loadLangs(array(
'bills',
'banks',
'trips'));
36 $action =
GETPOST(
'action',
'aZ09');
38 $accountid =
GETPOST(
'accountid',
'int');
43 if ($user->socid > 0) {
44 $socid = $user->socid;
52 if ($action ==
'add_payment') {
56 $loc = DOL_URL_ROOT.
'/expensereport/card.php?id='.$id;
57 header(
"Location: ".$loc);
62 $result = $expensereport->fetch($id, $ref);
70 if (!(
GETPOST(
"fk_typepayment",
'int') > 0)) {
71 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"PaymentMode")),
null,
'errors');
74 if ($datepaid ==
'') {
75 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"Date")),
null,
'errors');
79 if (!empty($conf->banque->enabled) && !($accountid > 0)) {
80 setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"AccountToDebit")),
null,
'errors');
89 foreach ($_POST as $key => $value) {
90 if (substr($key, 0, 7) ==
'amount_') {
98 if (count($amounts) <= 0) {
108 $payment->fk_expensereport = $expensereport->id;
109 $payment->datepaid = $datepaid;
110 $payment->amounts = $amounts;
111 $payment->total = $total;
112 $payment->fk_typepayment =
GETPOST(
"fk_typepayment",
'int');
113 $payment->num_payment =
GETPOST(
"num_payment",
'alphanothtml');
114 $payment->note_public =
GETPOST(
"note_public",
'restricthtml');
115 $payment->fk_bank = $accountid;
118 $paymentid = $payment->create($user);
119 if ($paymentid < 0) {
126 $result = $payment->addPaymentToBank($user,
'payment_expensereport',
'(ExpenseReportPayment)', $accountid,
'',
'');
134 $payment->fetch($paymentid);
135 if ($expensereport->total_ttc - $payment->amount == 0) {
136 $result = $expensereport->setPaid($expensereport->id, $user);
137 if (!($result > 0)) {
146 $loc = DOL_URL_ROOT.
'/expensereport/card.php?id='.$id;
147 header(
'Location: '.$loc);
169 if ($action ==
'create' || empty($action)) {
171 $expensereport->fetch($id, $ref);
173 $total = $expensereport->total_ttc;
176 if (!empty($conf->use_javascript_ajax)) {
177 print
"\n".
'<script type="text/javascript">';
179 print
' $(document).ready(function () {';
180 print
' $(".AutoFillAmount").on(\'click touchstart\', function(){
181 var amount = $(this).data("value");
182 document.getElementById($(this).data(\'rowid\')).value = amount ;
190 print
'<form name="add_payment" action="'.$_SERVER[
'PHP_SELF'].
'" method="post">';
191 print
'<input type="hidden" name="token" value="'.newToken().
'">';
192 print
'<input type="hidden" name="id" value="'.$expensereport->id.
'">';
193 print
'<input type="hidden" name="chid" value="'.$expensereport->id.
'">';
194 print
'<input type="hidden" name="action" value="add_payment">';
201 dol_banner_tab($expensereport,
'ref', $linkback, 1,
'ref',
'ref',
'');
203 print
'<div class="fichecenter">';
204 print
'<div class="underbanner clearboth"></div>';
206 print
'<table class="border centpercent">'.
"\n";
208 print
'<tr><td class="titlefield">'.$langs->trans(
"Period").
'</td><td>'.
get_date_range($expensereport->date_debut, $expensereport->date_fin,
"", $langs, 0).
'</td></tr>';
209 print
'<tr><td>'.$langs->trans(
"Amount").
'</td><td><span class="amount">'.
price($expensereport->total_ttc, 0, $langs, 1, -1, -1, $conf->currency).
'</span></td></tr>';
211 $sql =
"SELECT sum(p.amount) as total";
212 $sql .=
" FROM ".MAIN_DB_PREFIX.
"payment_expensereport as p, ".MAIN_DB_PREFIX.
"expensereport as e";
213 $sql .=
" WHERE p.fk_expensereport = e.rowid AND p.fk_expensereport = ".((int) $id);
214 $sql .=
' AND e.entity IN ('.getEntity(
'expensereport').
')';
215 $resql = $db->query($sql);
217 $obj = $db->fetch_object(
$resql);
218 $sumpaid = $obj->total;
221 print
'<tr><td>'.$langs->trans(
"AlreadyPaid").
'</td><td><span class="amount">'.
price($sumpaid, 0, $langs, 1, -1, -1, $conf->currency).
'</span></td></tr>';
222 print
'<tr><td class="tdtop">'.$langs->trans(
"RemainderToPay").
'</td><td><span class="amount">'.
price($total - $sumpaid, 0, $langs, 1, -1, -1, $conf->currency).
'</span></td></tr>';
234 print
'<table class="border centpercent">'.
"\n";
236 print
'<tr><td class="titlefield fieldrequired">'.$langs->trans(
"Date").
'</td><td colspan="2">';
238 $datepayment = ($datepaid ==
'' ? (empty($conf->global->MAIN_AUTOFILL_DATE) ?-1 :
'') : $datepaid);
239 print
$form->selectDate($datepayment,
'',
'',
'', 0,
"add_payment", 1, 1);
243 print
'<tr><td class="fieldrequired">'.$langs->trans(
"PaymentMode").
'</td><td colspan="2">';
244 $form->select_types_paiements(
GETPOSTISSET(
"fk_typepayment") ?
GETPOST(
"fk_typepayment",
'alpha') : $expensereport->fk_c_paiement,
"fk_typepayment");
248 if (!empty($conf->banque->enabled)) {
250 print
'<td class="fieldrequired">'.$langs->trans(
'AccountToDebit').
'</td>';
251 print
'<td colspan="2">';
252 print
img_picto(
'',
'bank_account',
'class="pictofixedwidth"');
258 print
'<tr><td>'.$langs->trans(
'Numero');
259 print
' <em>('.$langs->trans(
"ChequeOrTransferNumber").
')</em>';
261 print
'<td colspan="2"><input name="num_payment" type="text" value="'.GETPOST(
'num_payment').
'"></td></tr>'.
"\n";
264 print
'<td class="tdtop">'.$langs->trans(
"Comments").
'</td>';
265 print
'<td valign="top" colspan="2"><textarea name="note_public" wrap="soft" cols="60" rows="'.ROWS_3.
'"></textarea></td>';
278 print
'<table class="noborder centpercent">';
279 print
'<tr class="liste_titre">';
280 print
'<td>'.$langs->trans(
"ExpenseReport").
'</td>';
281 print
'<td class="right">'.$langs->trans(
"Amount").
'</td>';
282 print
'<td class="right">'.$langs->trans(
"AlreadyPaid").
'</td>';
283 print
'<td class="right">'.$langs->trans(
"RemainderToPay").
'</td>';
284 print
'<td class="center">'.$langs->trans(
"Amount").
'</td>';
291 $objp = $expensereport;
293 print
'<tr class="oddeven">';
295 print
'<td>'.$expensereport->getNomUrl(1).
"</td>";
296 print
'<td class="right">'.price($objp->total_ttc).
"</td>";
297 print
'<td class="right">'.price($sumpaid).
"</td>";
298 print
'<td class="right">'.price($objp->total_ttc - $sumpaid).
"</td>";
299 print
'<td class="center">';
300 if ($sumpaid < $objp->total_ttc) {
301 $namef =
"amount_".$objp->id;
302 $nameRemain =
"remain_".$objp->id;
303 if (!empty($conf->use_javascript_ajax)) {
304 print
img_picto(
"Auto fill",
'rightarrow',
"class='AutoFillAmount' data-rowid='".$namef.
"' data-value='".($objp->total_ttc - $sumpaid).
"'");
306 $remaintopay = $objp->total_ttc - $sumpaid;
307 print
'<input type=hidden class="sum_remain" name="'.$nameRemain.
'" value="'.$remaintopay.
'">';
308 print
'<input type="text" class="width75" name="'.$namef.
'" id="'.$namef.
'" value="'.
GETPOST($namef).
'">';
316 $total_ttc += $objp->total_ttc;
317 $totalrecu += $sumpaid;
322 print
'<tr class="oddeven">';
323 print
'<td colspan="2" class="left">'.$langs->trans(
"Total").
':</td>';
324 print
'<td class="right"><b>'.price($total_ttc).
'</b></td>';
325 print
'<td class="right"><b>'.price($totalrecu).
'</b></td>';
326 print
'<td class="right"><b>'.price($total_ttc - $totalrecu).
'</b></td>';
327 print
'<td class="center"> </td>';
333 print
$form->buttonsSaveCancel();