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.
'/compta/bank/class/account.class.php';
 
   33$langs->loadLangs(array(
'bills', 
'banks', 
'trips'));
 
   37$action = 
GETPOST(
'action', 
'aZ09');
 
   39$accountid = 
GETPOST(
'accountid', 
'int');
 
   44if ($user->socid > 0) {
 
   45  $socid = $user->socid;
 
   53if ($action == 
'add_payment') {
 
   57    $loc = DOL_URL_ROOT.
'/expensereport/card.php?id='.$id;
 
   58    header(
"Location: ".$loc);
 
   63  $result = $expensereport->fetch($id, $ref);
 
   71  if (!(
GETPOST(
"fk_typepayment", 
'int') > 0)) {
 
   72    setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"PaymentMode")), 
null, 
'errors');
 
   75  if ($datepaid == 
'') {
 
   76    setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"Date")), 
null, 
'errors');
 
   80  if (isModEnabled(
"banque") && !($accountid > 0)) {
 
   81    setEventMessages($langs->trans(
"ErrorFieldRequired", $langs->transnoentities(
"AccountToDebit")), 
null, 
'errors');
 
   90    foreach ($_POST as $key => $value) {
 
   91      if (substr($key, 0, 7) == 
'amount_') {
 
   99    if (count($amounts) <= 0) {
 
  109      $payment->fk_expensereport = $expensereport->id;
 
  110      $payment->datep          = $datepaid;
 
  111      $payment->amounts    = $amounts; 
 
  112      $payment->total          = $total;
 
  113      $payment->fk_typepayment = 
GETPOST(
"fk_typepayment", 
'int');
 
  114      $payment->num_payment    = 
GETPOST(
"num_payment", 
'alphanohtml');
 
  115      $payment->note_public    = 
GETPOST(
"note_public", 
'restricthtml');
 
  116      $payment->fk_bank        = $accountid;
 
  119        $paymentid = $payment->create($user);
 
  120        if ($paymentid < 0) {
 
  127        $result = $payment->addPaymentToBank($user, 
'payment_expensereport', 
'(ExpenseReportPayment)', $accountid, 
'', 
'');
 
  135        $payment->fetch($paymentid);
 
  136        if ($expensereport->total_ttc - $payment->amount == 0) {
 
  137          $result = $expensereport->setPaid($expensereport->id, $user);
 
  138          if (!($result > 0)) {
 
  147        $loc = DOL_URL_ROOT.
'/expensereport/card.php?id='.$id;
 
  148        header(
'Location: '.$loc);
 
  166$form = 
new Form($db);
 
  170if ($action == 
'create' || empty($action)) {
 
  172  $expensereport->fetch($id, $ref);
 
  174  $total = $expensereport->total_ttc;
 
  177  if (!empty($conf->use_javascript_ajax)) {
 
  178    print 
"\n".
'<script type="text/javascript">';
 
  180    print 
' $(document).ready(function () {';
 
  181    print 
'   $(".AutoFillAmount").on(\'click touchstart\', function(){ 
  182                        var amount = $(this).data("value"); 
  183            document.getElementById($(this).data(\'rowid\')).value = amount ; 
  191  print 
'<form name="add_payment" action="'.$_SERVER[
'PHP_SELF'].
'" method="post">';
 
  192  print 
'<input type="hidden" name="token" value="'.newToken().
'">';
 
  193  print 
'<input type="hidden" name="id" value="'.$expensereport->id.
'">';
 
  194  print 
'<input type="hidden" name="chid" value="'.$expensereport->id.
'">';
 
  195  print 
'<input type="hidden" name="action" value="add_payment">';
 
  202  dol_banner_tab($expensereport, 
'ref', $linkback, 1, 
'ref', 
'ref', 
'');
 
  204  print 
'<div class="fichecenter">';
 
  205  print 
'<div class="underbanner clearboth"></div>';
 
  207  print 
'<table class="border centpercent">'.
"\n";
 
  209  print 
'<tr><td class="titlefield">'.$langs->trans(
"Period").
'</td><td>'.
get_date_range($expensereport->date_debut, $expensereport->date_fin, 
"", $langs, 0).
'</td></tr>';
 
  210  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>';
 
  212  $sql = 
"SELECT sum(p.amount) as total";
 
  213  $sql .= 
" FROM ".MAIN_DB_PREFIX.
"payment_expensereport as p, ".MAIN_DB_PREFIX.
"expensereport as e";
 
  214  $sql .= 
" WHERE p.fk_expensereport = e.rowid AND p.fk_expensereport = ".((int) $id);
 
  215  $sql .= 
' AND e.entity IN ('.getEntity(
'expensereport').
')';
 
  216  $resql = $db->query($sql);
 
  218    $obj = $db->fetch_object($resql);
 
  219    $sumpaid = $obj->total;
 
  222  print 
'<tr><td>'.$langs->trans(
"AlreadyPaid").
'</td><td><span class="amount">'.
price($sumpaid, 0, $langs, 1, -1, -1, $conf->currency).
'</span></td></tr>';
 
  223  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>';
 
  235  print 
'<table class="border centpercent">'.
"\n";
 
  237  print 
'<tr><td class="titlefield fieldrequired">'.$langs->trans(
"Date").
'</td><td colspan="2">';
 
  239  $datepayment = ($datepaid == 
'' ? (!
getDolGlobalString(
'MAIN_AUTOFILL_DATE') ? -1 : 
'') : $datepaid);
 
  240  print $form->selectDate($datepayment, 
'', 
'', 
'', 0, 
"add_payment", 1, 1);
 
  244  print 
'<tr><td class="fieldrequired">'.$langs->trans(
"PaymentMode").
'</td><td colspan="2">';
 
  245  $form->select_types_paiements(GETPOSTISSET(
"fk_typepayment") ? 
GETPOST(
"fk_typepayment", 
'alpha') : $expensereport->fk_c_paiement, 
"fk_typepayment");
 
  249  if (isModEnabled(
"banque")) {
 
  251    print 
'<td class="fieldrequired">'.$langs->trans(
'AccountToDebit').
'</td>';
 
  252    print 
'<td colspan="2">';
 
  253    print 
img_picto(
'', 
'bank_account', 
'class="pictofixedwidth"');
 
  254    $form->select_comptes(GETPOSTISSET(
"accountid") ? 
GETPOST(
"accountid", 
"int") : 0, 
"accountid", 0, 
'', 2); 
 
  259  print 
'<tr><td>'.$langs->trans(
'Numero');
 
  260  print 
' <em>('.$langs->trans(
"ChequeOrTransferNumber").
')</em>';
 
  262  print 
'<td colspan="2"><input name="num_payment" type="text" value="'.GETPOST(
'num_payment').
'"></td></tr>'.
"\n";
 
  265  print 
'<td class="tdtop">'.$langs->trans(
"Comments").
'</td>';
 
  266  print 
'<td valign="top" colspan="2"><textarea name="note_public" wrap="soft" cols="60" rows="'.ROWS_3.
'"></textarea></td>';
 
  279  print 
'<table class="noborder centpercent">';
 
  280  print 
'<tr class="liste_titre">';
 
  281  print 
'<td>'.$langs->trans(
"ExpenseReport").
'</td>';
 
  282  print 
'<td class="right">'.$langs->trans(
"Amount").
'</td>';
 
  283  print 
'<td class="right">'.$langs->trans(
"AlreadyPaid").
'</td>';
 
  284  print 
'<td class="right">'.$langs->trans(
"RemainderToPay").
'</td>';
 
  285  print 
'<td class="center">'.$langs->trans(
"Amount").
'</td>';
 
  292    $objp = $expensereport;
 
  294    print 
'<tr class="oddeven">';
 
  296    print 
'<td>'.$expensereport->getNomUrl(1).
"</td>";
 
  297    print 
'<td class="right">'.price($objp->total_ttc).
"</td>";
 
  298    print 
'<td class="right">'.price($sumpaid).
"</td>";
 
  299    print 
'<td class="right">'.price($objp->total_ttc - $sumpaid).
"</td>";
 
  300    print 
'<td class="center">';
 
  301    if ($sumpaid < $objp->total_ttc) {
 
  302      $namef = 
"amount_".$objp->id;
 
  303      $nameRemain = 
"remain_".$objp->id; 
 
  304      if (!empty($conf->use_javascript_ajax)) { 
 
  305          print 
img_picto(
"Auto fill", 
'rightarrow', 
"class='AutoFillAmount' data-rowid='".$namef.
"' data-value='".($objp->total_ttc - $sumpaid).
"'"); 
 
  307      $remaintopay = $objp->total_ttc - $sumpaid; 
 
  308      print 
'<input type=hidden class="sum_remain" name="'.$nameRemain.
'" value="'.$remaintopay.
'">'; 
 
  309      print 
'<input type="text" class="width75" name="'.$namef.
'" id="'.$namef.
'" value="'.
GETPOST($namef).
'">';
 
  317    $total_ttc += $objp->total_ttc;
 
  318    $totalrecu += $sumpaid;
 
  323    print 
'<tr class="oddeven">';
 
  324    print 
'<td colspan="2" class="left">'.$langs->trans(
"Total").
':</td>';
 
  325    print 
'<td class="right"><b>'.price($total_ttc).
'</b></td>';
 
  326    print 
'<td class="right"><b>'.price($totalrecu).
'</b></td>';
 
  327    print 
'<td class="right"><b>'.price($total_ttc - $totalrecu).
'</b></td>';
 
  328    print 
'<td class="center"> </td>';
 
  334  print $form->buttonsSaveCancel();
 
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader()
Empty header.
 
Class to manage Trips and Expenses.
 
Class to manage payments of expense report.
 
dol_banner_tab($object, $paramid, $morehtml='', $shownav=1, $fieldid='rowid', $fieldref='ref', $morehtmlref='', $moreparam='', $nodbprefix=0, $morehtmlleft='', $morehtmlstatus='', $onlybanner=0, $morehtmlright='')
Show tab footer of a card.
 
dol_mktime($hour, $minute, $second, $month, $day, $year, $gm='auto', $check=1)
Return a timestamp date built from detailed informations (by default a local PHP server timestamp) Re...
 
load_fiche_titre($titre, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
 
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.
 
price2num($amount, $rounding='', $option=0)
Function that return a number with universal decimal format (decimal separator is '.
 
get_date_range($date_start, $date_end, $format='', $outputlangs='', $withparenthesis=1)
Format output for start and end date.
 
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.
 
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
 
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
 
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0)
Set event messages in dol_events session object.
 
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.