/htdocs/compta/paiement.php
PHP | 675 lines | 506 code | 89 blank | 80 comment | 98 complexity | 7dec8ae51f234a7ea95358bd6f518480 MD5 | raw file
Possible License(s): LGPL-2.0
- <?php
- /* Copyright (C) 2001-2006 Rodolphe Quiedeville <rodolphe@quiedeville.org>
- * Copyright (C) 2004-2011 Laurent Destailleur <eldy@users.sourceforge.net>
- * Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com>
- * Copyright (C) 2005-2010 Regis Houssin <regis@dolibarr.fr>
- * Copyright (C) 2007 Franky Van Liedekerke <franky.van.liedekerke@telenet.be>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
- /**
- * \file htdocs/compta/paiement.php
- * \ingroup compta
- * \brief Page to create a payment
- */
- require('../main.inc.php');
- require_once(DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php');
- require_once(DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php');
- require_once(DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php');
- $langs->load('companies');
- $langs->load('bills');
- $langs->load('banks');
- $action = GETPOST('action');
- $confirm = GETPOST('confirm');
- $facid = GETPOST('facid');
- $socname = GETPOST('socname');
- $accountid = GETPOST('accountid');
- $paymentnum = GETPOST('num_paiement');
- $sortfield = GETPOST('sortfield');
- $sortorder = GETPOST('sortorder');
- $page = GETPOST('page');
- $amounts=array();
- $amountsresttopay=array();
- $addwarning=0;
- // Security check
- $socid=0;
- if ($user->societe_id > 0)
- {
- $socid = $user->societe_id;
- }
- /*
- * Action add_paiement et confirm_paiement
- */
- if ($action == 'add_paiement' || ($action == 'confirm_paiement' && $confirm=='yes'))
- {
- $error = 0;
- $datepaye = dol_mktime(12, 0 , 0,
- $_POST['remonth'],
- $_POST['reday'],
- $_POST['reyear']);
- $paiement_id = 0;
- // Verifie si des paiements sont superieurs au montant facture
- foreach ($_POST as $key => $value)
- {
- if (substr($key,0,7) == 'amount_')
- {
- $cursorfacid = substr($key,7);
- $amounts[$cursorfacid] = price2num($_POST[$key]);
- $totalpaiement = $totalpaiement + $amounts[$cursorfacid];
- $tmpfacture=new Facture($db);
- $tmpfacture->fetch($cursorfacid);
- $amountsresttopay[$cursorfacid]=price2num($tmpfacture->total_ttc-$tmpfacture->getSommePaiement());
- if ($amounts[$cursorfacid] && $amounts[$cursorfacid] > $amountsresttopay[$cursorfacid])
- {
- $addwarning=1;
- $formquestion['text'] = img_warning($langs->trans("PaymentHigherThanReminderToPay")).' '.$langs->trans("HelpPaymentHigherThanReminderToPay");
- }
- $formquestion[$i++]=array('type' => 'hidden','name' => $key, 'value' => $_POST[$key]);
- }
- }
- // Check parameters
- if (! GETPOST('paiementcode'))
- {
- $fiche_erreur_message = '<div class="error">'.$langs->trans('ErrorFieldRequired',$langs->transnoentities('PaymentMode')).'</div>';
- $error++;
- }
- if ($conf->banque->enabled)
- {
- // Si module bank actif, un compte est obligatoire lors de la saisie
- // d'un paiement
- if (! $_POST['accountid'])
- {
- $fiche_erreur_message = '<div class="error">'.$langs->trans('ErrorFieldRequired',$langs->transnoentities('AccountToCredit')).'</div>';
- $error++;
- }
- }
- if ($totalpaiement == 0)
- {
- $fiche_erreur_message = '<div class="error">'.$langs->transnoentities('ErrorFieldRequired',$langs->trans('PaymentAmount')).'</div>';
- $error++;
- }
- if (empty($datepaye))
- {
- $fiche_erreur_message = '<div class="error">'.$langs->trans('ErrorFieldRequired',$langs->transnoentities('Date')).'</div>';
- $error++;
- }
- }
- /*
- * Action add_paiement
- */
- if ($action == 'add_paiement')
- {
- if ($error)
- {
- $action = 'create';
- }
- // Le reste propre a cette action s'affiche en bas de page.
- }
- /*
- * Action confirm_paiement
- */
- if ($action == 'confirm_paiement' && $confirm == 'yes')
- {
- $error=0;
- $datepaye = dol_mktime(12, 0, 0, $_POST['remonth'], $_POST['reday'], $_POST['reyear']);
- $db->begin();
- // Creation of payment line
- $paiement = new Paiement($db);
- $paiement->datepaye = $datepaye;
- $paiement->amounts = $amounts; // Array with all payments dispatching
- $paiement->paiementid = dol_getIdFromCode($db,$_POST['paiementcode'],'c_paiement');
- $paiement->num_paiement = $_POST['num_paiement'];
- $paiement->note = $_POST['comment'];
- if (! $error)
- {
- $paiement_id = $paiement->create($user,(GETPOST('closepaidinvoices')=='on'?1:0));
- if ($paiement_id < 0)
- {
- $errmsg=$paiement->error;
- $error++;
- }
- }
- if (! $error)
- {
- $result=$paiement->addPaymentToBank($user,'payment','(CustomerInvoicePayment)',$_POST['accountid'],$_POST['chqemetteur'],$_POST['chqbank']);
- if ($result < 0)
- {
- $errmsg=$paiement->error;
- $error++;
- }
- }
- if (! $error)
- {
- $db->commit();
- // If payment dispatching on more than one invoice, we keep on summary page, otherwise go on invoice card
- $invoiceid=0;
- foreach ($paiement->amounts as $key => $amount)
- {
- $facid = $key;
- if (is_numeric($amount) && $amount <> 0)
- {
- if ($invoiceid != 0) $invoiceid=-1; // There is more than one invoice payed by this payment
- else $invoiceid=$facid;
- }
- }
- if ($invoiceid > 0) $loc = DOL_URL_ROOT.'/compta/facture.php?facid='.$invoiceid;
- else $loc = DOL_URL_ROOT.'/compta/paiement/fiche.php?id='.$paiement_id;
- Header('Location: '.$loc);
- exit;
- }
- else
- {
- $db->rollback();
- }
- }
- /*
- * View
- */
- llxHeader();
- $form=new Form($db);
- if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paiement')
- {
- $facture = new Facture($db);
- $result=$facture->fetch($facid);
- if ($result >= 0)
- {
- $facture->fetch_thirdparty();
- $title='';
- if ($facture->type != 2) $title.=$langs->trans("EnterPaymentReceivedFromCustomer");
- if ($facture->type == 2) $title.=$langs->trans("EnterPaymentDueToCustomer");
- print_fiche_titre($title);
- dol_htmloutput_errors($errmsg);
- // Bouchon
- if ($facture->type == 2)
- {
- print $langs->trans("FeatureNotYetAvailable");
- llxFooter();
- exit;
- }
- // Initialize data for confirmation (this is used because data can be change during confirmation)
- if ($action == 'add_paiement')
- {
- $i=0;
- $formquestion[$i++]=array('type' => 'hidden','name' => 'facid', 'value' => $facture->id);
- $formquestion[$i++]=array('type' => 'hidden','name' => 'socid', 'value' => $facture->socid);
- $formquestion[$i++]=array('type' => 'hidden','name' => 'type', 'value' => $facture->type);
- }
- // Invoice with Paypal transaction
- if ($conf->paypalplus->enabled && $conf->global->PAYPAL_ENABLE_TRANSACTION_MANAGEMENT && ! empty($facture->ref_int))
- {
- if (! empty($conf->global->PAYPAL_BANK_ACCOUNT)) $accountid=$conf->global->PAYPAL_BANK_ACCOUNT;
- $paymentnum=$facture->ref_int;
- }
- if ($conf->use_javascript_ajax && !empty($conf->global->MAIN_JS_ON_PAYMENT))
- {
- print "\n".'<script type="text/javascript" language="javascript">';
- print 'jQuery(document).ready(function () {';
- print 'jQuery("#selectpaiementcode").change(function() {
- code=jQuery("#selectpaiementcode option:selected").val();
- if (code == \'CHQ\')
- {
- jQuery(\'.fieldrequireddyn\').addClass(\'fieldrequired\');
- if (jQuery(\'#fieldchqemetteur\').val() == \'\')
- {
- jQuery(\'#fieldchqemetteur\').val(jQuery(\'#thirdpartylabel\').val());
- }
- }
- else
- {
- jQuery(\'.fieldrequireddyn\').removeClass(\'fieldrequired\');
- }
- });
- function elemToJson(selector)
- {
- var subJson = {};
- jQuery.map(selector.serializeArray(), function(n,i)
- {
- subJson[n["name"]] = n["value"];
- });
- return subJson;
- }
- function callForResult(imgId)
- {
- var json = {};
- var form = jQuery("#payment_form");
- json["amountPayment"] = jQuery("#amountpayment").attr("value");
- json["amounts"] = elemToJson(form.find("input[name*=\"amount_\"]"));
- json["remains"] = elemToJson(form.find("input[name*=\"remain_\"]"));
- if(imgId != null)json["imgClicked"] = imgId;
- jQuery.post("ajaxpayment.php", json, function(data)
- {
- json = jQuery.parseJSON(data);
- form.data(json);
- for(var key in json)
- {
- if(key == "result") {
- if(json["makeRed"]) {
- jQuery("#"+key).css("color", "red");
- } else {
- jQuery("#"+key).removeAttr("style");
- }
- json[key]=json["label"]+" "+json[key];
- jQuery("#"+key).text(json[key]);
- } else {
- form.find("input[name*=\""+key+"\"]").each(function() {
- jQuery(this).attr("value", json[key]);
- });
- }
- }
- });
- }
- function callToBreakdown(imgSelector) {
- var form = jQuery("#payment_form"), imgId;
- imgId = imgSelector.attr("id");
- callForResult(imgId);
- }
- jQuery("#payment_form").find("img").click(function() {
- callToBreakdown(jQuery(this));
- });
- jQuery("#payment_form").find("input[name*=\"amount_\"]").change(function() {
- callForResult();
- });
- jQuery("#amountpayment").change(function() {
- callForResult();
- });
- });
- </script>'."\n";
- }
- print '<form id="payment_form" name="add_paiement" action="'.$_SERVER["PHP_SELF"].'" method="POST">';
- print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
- print '<input type="hidden" name="action" value="add_paiement">';
- print '<input type="hidden" name="facid" value="'.$facture->id.'">';
- print '<input type="hidden" name="socid" value="'.$facture->socid.'">';
- print '<input type="hidden" name="type" value="'.$facture->type.'">';
- print '<input type="hidden" name="thirdpartylabel" id="thirdpartylabel" value="'.dol_escape_htmltag($facture->client->name).'">';
- print '<table class="border" width="100%">';
- // Third party
- print '<tr><td><span class="fieldrequired">'.$langs->trans('Company').'</span></td><td colspan="2">'.$facture->client->getNomUrl(4)."</td></tr>\n";
- // Date payment
- print '<tr><td><span class="fieldrequired">'.$langs->trans('Date').'</span></td><td>';
- $datepayment = dol_mktime(12, 0, 0, $_POST['remonth'], $_POST['reday'], $_POST['reyear']);
- $datepayment= ($datepayment == '' ? (empty($conf->global->MAIN_AUTOFILL_DATE)?-1:0) : $datepayment);
- $form->select_date($datepayment,'','','',0,"add_paiement",1,1);
- print '</td>';
- print '<td>'.$langs->trans('Comments').'</td></tr>';
- $rowspan=5;
- if ($conf->use_javascript_ajax && !empty($conf->global->MAIN_JS_ON_PAYMENT)) $rowspan++;
- // Payment mode
- print '<tr><td><span class="fieldrequired">'.$langs->trans('PaymentMode').'</span></td><td>';
- $form->select_types_paiements((GETPOST('paiementcode')?GETPOST('paiementcode'):$facture->mode_reglement_code),'paiementcode','',2);
- print "</td>\n";
- print '<td rowspan="'.$rowspan.'" valign="top">';
- print '<textarea name="comment" wrap="soft" cols="60" rows="'.ROWS_4.'">'.(empty($_POST['comment'])?'':$_POST['comment']).'</textarea></td>';
- print '</tr>';
- // Payment amount
- if ($conf->use_javascript_ajax && !empty($conf->global->MAIN_JS_ON_PAYMENT))
- {
- print '<tr><td><span class="fieldrequired">'.$langs->trans('AmountPayment').'</span></td>';
- print '<td>';
- if ($action == 'add_paiement')
- {
- print '<input id="amountpayment" name="amountpaymenthidden" size="8" type="text" value="'.(empty($_POST['amountpayment'])?'':$_POST['amountpayment']).'" disabled="disabled">';
- print '<input name="amountpayment" type="hidden" value="'.(empty($_POST['amountpayment'])?'':$_POST['amountpayment']).'">';
- }
- else
- {
- print '<input id="amountpayment" name="amountpayment" size="8" type="text" value="'.(empty($_POST['amountpayment'])?'':$_POST['amountpayment']).'">';
- }
- print '</td>';
- print '</tr>';
- }
- print '<tr>';
- if ($conf->banque->enabled)
- {
- if ($facture->type != 2) print '<td><span class="fieldrequired">'.$langs->trans('AccountToCredit').'</span></td>';
- if ($facture->type == 2) print '<td><span class="fieldrequired">'.$langs->trans('AccountToDebit').'</span></td>';
- print '<td>';
- $form->select_comptes($accountid,'accountid',0,'',2);
- print '</td>';
- }
- else
- {
- print '<td colspan="2"> </td>';
- }
- print "</tr>\n";
- // Cheque number
- print '<tr><td>'.$langs->trans('Numero');
- print ' <em>('.$langs->trans("ChequeOrTransferNumber").')</em>';
- print '</td>';
- print '<td><input name="num_paiement" type="text" value="'.$paymentnum.'"></td></tr>';
- // Check transmitter
- print '<tr><td class="'.(GETPOST('paiementcode')=='CHQ'?'fieldrequired ':'').'fieldrequireddyn">'.$langs->trans('CheckTransmitter');
- print ' <em>('.$langs->trans("ChequeMaker").')</em>';
- print '</td>';
- print '<td><input id="fieldchqemetteur" name="chqemetteur" size="30" type="text" value="'.GETPOST('chqemetteur').'"></td></tr>';
- // Bank name
- print '<tr><td>'.$langs->trans('Bank');
- print ' <em>('.$langs->trans("ChequeBank").')</em>';
- print '</td>';
- print '<td><input name="chqbank" size="30" type="text" value="'.GETPOST('chqbank').'"></td></tr>';
- print '</table>';
- /*
- * List of unpaid invoices
- */
- $sql = 'SELECT f.rowid as facid, f.facnumber, f.total_ttc, f.type, ';
- $sql.= ' f.datef as df';
- $sql.= ' FROM '.MAIN_DB_PREFIX.'facture as f';
- $sql.= ' WHERE f.fk_soc = '.$facture->socid;
- $sql.= ' AND f.paye = 0';
- $sql.= ' AND f.fk_statut = 1'; // Statut=0 => not validated, Statut=2 => canceled
- if ($facture->type != 2)
- {
- $sql .= ' AND type in (0,1,3)'; // Standard invoice, replacement, deposit
- }
- else
- {
- $sql .= ' AND type = 2'; // If paying back a credit note, we show all credit notes
- }
- $resql = $db->query($sql);
- if ($resql)
- {
- $num = $db->num_rows($resql);
- if ($num > 0)
- {
- $i = 0;
- //print '<tr><td colspan="3">';
- print '<br>';
- print '<table class="noborder" width="100%">';
- print '<tr class="liste_titre">';
- print '<td>'.$langs->trans('Invoice').'</td>';
- print '<td align="center">'.$langs->trans('Date').'</td>';
- print '<td align="right">'.$langs->trans('AmountTTC').'</td>';
- print '<td align="right">'.$langs->trans('Received').'</td>';
- print '<td align="right">'.$langs->trans('RemainderToPay').'</td>';
- print '<td align="right">'.$langs->trans('PaymentAmount').'</td>';
- print '<td align="right"> </td>';
- print "</tr>\n";
- $var=True;
- $total=0;
- $totalrecu=0;
- $totalrecucreditnote=0;
- $totalrecudeposits=0;
- while ($i < $num)
- {
- $objp = $db->fetch_object($resql);
- $var=!$var;
- $invoice=new Facture($db);
- $invoice->fetch($objp->facid);
- $paiement = $invoice->getSommePaiement();
- $creditnotes=$invoice->getSumCreditNotesUsed();
- $deposits=$invoice->getSumDepositsUsed();
- $alreadypayed=price2num($paiement + $creditnotes + $deposits,'MT');
- $remaintopay=price2num($invoice->total_ttc - $paiement - $creditnotes - $deposits,'MT');
- print '<tr '.$bc[$var].'>';
- print '<td>';
- print $invoice->getNomUrl(1,'');
- print "</td>\n";
- // Date
- print '<td align="center">'.dol_print_date($db->jdate($objp->df),'day')."</td>\n";
- // Prix
- print '<td align="right">'.price($objp->total_ttc).'</td>';
- // Recu
- print '<td align="right">'.price($paiement);
- if ($creditnotes) print '+'.price($creditnotes);
- if ($deposits) print '+'.price($deposits);
- print '</td>';
- // Remain to pay
- print '<td align="right">'.price($remaintopay).'</td>';
- $test= price(price2num($objp->total_ttc - $paiement - $creditnotes - $deposits));
- // Amount
- print '<td align="right">';
- // Add remind amount
- $namef = 'amount_'.$objp->facid;
- $nameRemain = 'remain_'.$objp->facid;
- if ($action != 'add_paiement')
- {
- if ($conf->use_javascript_ajax && !empty($conf->global->MAIN_JS_ON_PAYMENT))
- {
- print img_picto($langs->trans('AddRemind'),'rightarrow.png','id="'.$objp->facid.'" "');
- }
- print '<input type=hidden name="'.$nameRemain.'" value="'.$remaintopay.'">';
- print '<input type="text" size="8" name="'.$namef.'" value="'.$_POST[$namef].'">';
- }
- else
- {
- print '<input type="text" size="8" name="'.$namef.'_disabled" value="'.$_POST[$namef].'" disabled="disabled">';
- print '<input type="hidden" name="'.$namef.'" value="'.$_POST[$namef].'">';
- }
- print "</td>";
- // Warning
- print '<td align="center" width="16">';
- if ($amounts[$invoice->id] && $amounts[$invoice->id] > $amountsresttopay[$invoice->id])
- {
- print ' '.img_warning($langs->trans("PaymentHigherThanReminderToPay"));
- }
- print '</td>';
- print "</tr>\n";
- $total+=$objp->total;
- $total_ttc+=$objp->total_ttc;
- $totalrecu+=$paiement;
- $totalrecucreditnote+=$creditnotes;
- $totalrecudeposits+=$deposits;
- $i++;
- }
- if ($i > 1)
- {
- // Print total
- print '<tr class="liste_total">';
- print '<td colspan="2" align="left">'.$langs->trans('TotalTTC').'</td>';
- print '<td align="right"><b>'.price($total_ttc).'</b></td>';
- print '<td align="right"><b>'.price($totalrecu);
- if ($totalrecucreditnote) print '+'.price($totalrecucreditnote);
- if ($totalrecudeposits) print '+'.price($totalrecudeposits);
- print '</b></td>';
- print '<td align="right"><b>'.price(price2num($total_ttc - $totalrecu - $totalrecucreditnote - $totalrecudeposits,'MT')).'</b></td>';
- print '<td align="right" id="result" style="font-weight:bold;"></td>';
- print '<td align="center"> </td>';
- print "</tr>\n";
- }
- print "</table>";
- //print "</td></tr>\n";
- }
- $db->free($resql);
- }
- else
- {
- dol_print_error($db);
- }
- // Bouton Enregistrer
- if ($action != 'add_paiement')
- {
- // print '<tr><td colspan="3" align="center">';
- print '<center><br><input type="checkbox" checked="checked" name="closepaidinvoices"> '.$langs->trans("ClosePaidInvoicesAutomatically");
- /*if ($conf->prelevement->enabled)
- {
- $langs->load("withdrawals");
- if ($conf->global->WITHDRAW_DISABLE_AUTOCREATE_ONPAYMENTS) print '<br>'.$langs->trans("IfInvoiceNeedOnWithdrawPaymentWontBeClosed");
- }*/
- print '<br><input type="submit" class="button" value="'.$langs->trans('Save').'"><br><br></center>';
- // print '</td></tr>';
- }
- // Message d'erreur
- if ($fiche_erreur_message)
- {
- print $fiche_erreur_message;
- }
- // Form to confirm payment
- if ($action == 'add_paiement')
- {
- $preselectedchoice=$addwarning?'no':'yes';
- print '<br>';
- $text=$langs->trans('ConfirmCustomerPayment',$totalpaiement,$langs->trans("Currency".$conf->monnaie));
- if (GETPOST('closepaidinvoices'))
- {
- $text.='<br>'.$langs->trans("AllCompletelyPayedInvoiceWillBeClosed");
- print '<input type="hidden" name="closepaidinvoices" value="'.GETPOST('closepaidinvoices').'">';
- }
- $form->form_confirm($_SERVER['PHP_SELF'].'?facid='.$facture->id.'&socid='.$facture->socid.'&type='.$facture->type,$langs->trans('ReceivedCustomersPayments'),$text,'confirm_paiement',$formquestion,$preselectedchoice);
- }
- print "</form>\n";
- }
- }
- /**
- * Show list of payments
- */
- if (! GETPOST('action'))
- {
- if ($page == -1) $page = 0 ;
- $limit = $conf->liste_limit;
- $offset = $limit * $page ;
- if (! $sortorder) $sortorder='DESC';
- if (! $sortfield) $sortfield='p.datep';
- $sql = 'SELECT p.datep as dp, p.amount, f.amount as fa_amount, f.facnumber';
- $sql .=', f.rowid as facid, c.libelle as paiement_type, p.num_paiement';
- $sql .= ' FROM '.MAIN_DB_PREFIX.'paiement as p, '.MAIN_DB_PREFIX.'facture as f, '.MAIN_DB_PREFIX.'c_paiement as c';
- $sql .= ' WHERE p.fk_facture = f.rowid AND p.fk_paiement = c.id';
- if ($socid)
- {
- $sql .= ' AND f.fk_soc = '.$socid;
- }
- $sql .= ' ORDER BY '.$sortfield.' '.$sortorder;
- $sql .= $db->plimit($limit +1 ,$offset);
- $resql = $db->query($sql);
- if ($resql)
- {
- $num = $db->num_rows($resql);
- $i = 0;
- $var=True;
- print_barre_liste($langs->trans('Payments'), $page, 'paiement.php','',$sortfield,$sortorder,'',$num);
- print '<table class="noborder" width="100%">';
- print '<tr class="liste_titre">';
- print_liste_field_titre($langs->trans('Invoice'),'paiement.php','facnumber','','','',$sortfield,$sortorder);
- print_liste_field_titre($langs->trans('Date'),'paiement.php','dp','','','',$sortfield,$sortorder);
- print_liste_field_titre($langs->trans('Type'),'paiement.php','libelle','','','',$sortfield,$sortorder);
- print_liste_field_titre($langs->trans('Amount'),'paiement.php','fa_amount','','','align="right"',$sortfield,$sortorder);
- print '<td> </td>';
- print "</tr>\n";
- while ($i < min($num,$limit))
- {
- $objp = $db->fetch_object($resql);
- $var=!$var;
- print '<tr '.$bc[$var].'>';
- print '<td><a href="facture.php?facid='.$objp->facid.'">'.$objp->facnumber."</a></td>\n";
- print '<td>'.dol_print_date($db->jdate($objp->dp))."</td>\n";
- print '<td>'.$objp->paiement_type.' '.$objp->num_paiement."</td>\n";
- print '<td align="right">'.price($objp->amount).'</td><td> </td>';
- print '</tr>';
- $i++;
- }
- print '</table>';
- }
- }
- $db->close();
- llxFooter();
- ?>