本文整理匯總了PHP中Facture::getSumCreditNotesUsed方法的典型用法代碼示例。如果您正苦於以下問題:PHP Facture::getSumCreditNotesUsed方法的具體用法?PHP Facture::getSumCreditNotesUsed怎麽用?PHP Facture::getSumCreditNotesUsed使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類Facture
的用法示例。
在下文中一共展示了Facture::getSumCreditNotesUsed方法的11個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。
示例1: while
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);
示例2: price
//.........這裏部分代碼省略.........
$totalvat .= vatrate(abs($tvakey), 1) . $tvacompl;
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1);
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($largcol2, $tab2_hl, price($tvaval, 0, $outputlangs), 0, 'R', 1);
}
}
}
//}
//Local tax 2 after VAT
//if (! empty($conf->global->FACTURE_LOCAL_TAX2_OPTION) && $conf->global->FACTURE_LOCAL_TAX2_OPTION=='localtax2on')
//{
foreach ($this->localtax2 as $localtax_type => $localtax_rate) {
if (in_array((string) $localtax_type, array('2', '4', '6'))) {
continue;
}
foreach ($localtax_rate as $tvakey => $tvaval) {
// retrieve global local tax
if ($tvakey != 0) {
//$this->atleastoneratenotnull++;
$index++;
$pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index);
$tvacompl = '';
if (preg_match('/\\*/', $tvakey)) {
$tvakey = str_replace('*', '', $tvakey);
$tvacompl = " (" . $outputlangs->transnoentities("NonPercuRecuperable") . ")";
}
$totalvat = $outputlangs->transcountrynoentities("TotalLT2", $mysoc->country_code) . ' ';
$totalvat .= vatrate(abs($tvakey), 1) . $tvacompl;
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1);
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($largcol2, $tab2_hl, price($tvaval, 0, $outputlangs), 0, 'R', 1);
}
}
//}
}
// Revenue stamp
if (price2num($object->revenuestamp) != 0) {
$index++;
$pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $outputlangs->transnoentities("RevenueStamp"), $useborder, 'L', 1);
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($largcol2, $tab2_hl, price($sign * $object->revenuestamp), $useborder, 'R', 1);
}
// Total TTC
$index++;
$pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index);
$pdf->SetTextColor(0, 0, 60);
$pdf->SetFillColor(224, 224, 224);
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $outputlangs->transnoentities("TotalTTC"), $useborder, 'L', 1);
$total_ttc = $conf->multicurrency->enabled && $object->multiccurency_tx != 1 ? $object->multicurrency_total_ttc : $object->total_ttc;
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($largcol2, $tab2_hl, price($sign * $total_ttc, 0, $outputlangs), $useborder, 'R', 1);
}
}
$pdf->SetTextColor(0, 0, 0);
$creditnoteamount = $object->getSumCreditNotesUsed();
$depositsamount = $object->getSumDepositsUsed();
//print "x".$creditnoteamount."-".$depositsamount;exit;
$resteapayer = price2num($object->total_ttc - $deja_regle - $creditnoteamount - $depositsamount, 'MT');
if ($object->paye) {
$resteapayer = 0;
}
if ($deja_regle > 0 || $creditnoteamount > 0 || $depositsamount > 0) {
// Already paid + Deposits
$index++;
$pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $outputlangs->transnoentities("Paid"), 0, 'L', 0);
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($largcol2, $tab2_hl, price($deja_regle + $depositsamount, 0, $outputlangs), 0, 'R', 0);
// Credit note
if ($creditnoteamount) {
$index++;
$pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $outputlangs->transnoentities("CreditNotes"), 0, 'L', 0);
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($largcol2, $tab2_hl, price($creditnoteamount, 0, $outputlangs), 0, 'R', 0);
}
// Escompte
if ($object->close_code == Facture::CLOSECODE_DISCOUNTVAT) {
$index++;
$pdf->SetFillColor(255, 255, 255);
$pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $outputlangs->transnoentities("EscompteOfferedShort"), $useborder, 'L', 1);
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($largcol2, $tab2_hl, price($object->total_ttc - $deja_regle - $creditnoteamount - $depositsamount, 0, $outputlangs), $useborder, 'R', 1);
$resteapayer = 0;
}
$index++;
$pdf->SetTextColor(0, 0, 60);
$pdf->SetFillColor(224, 224, 224);
$pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $outputlangs->transnoentities("RemainderToPay"), $useborder, 'L', 1);
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($largcol2, $tab2_hl, price($resteapayer, 0, $outputlangs), $useborder, 'R', 1);
$pdf->SetFont('', '', $default_font_size - 1);
$pdf->SetTextColor(0, 0, 0);
}
$index++;
return $tab2_top + $tab2_hl * $index;
}
示例3: create
/**
* Create payment of invoices into database.
* Use this->amounts to have list of invoices for the payment.
* For payment of a customer invoice, amounts are postive, for payment of credit note, amounts are negative
*
* @param User $user Object user
* @param int $closepaidinvoices 1=Also close payed invoices to paid, 0=Do nothing more
* @return int id of created payment, < 0 if error
*/
function create($user, $closepaidinvoices = 0)
{
global $conf, $langs;
$error = 0;
$now = dol_now();
// Clean parameters
$totalamount = 0;
$atleastonepaymentnotnull = 0;
foreach ($this->amounts as $key => $value) {
$newvalue = price2num($value, 'MT');
$this->amounts[$key] = $newvalue;
$totalamount += $newvalue;
if (!empty($newvalue)) {
$atleastonepaymentnotnull++;
}
}
$totalamount = price2num($totalamount);
// Check parameters
if (empty($totalamount) && empty($atleastonepaymentnotnull)) {
$this->error = 'TotalAmountEmpty';
return -1;
}
$this->db->begin();
$ref = $this->getNextNumRef('');
$sql = "INSERT INTO " . MAIN_DB_PREFIX . "paiement (entity, ref, datec, datep, amount, fk_paiement, num_paiement, note, fk_user_creat)";
$sql .= " VALUES (" . $conf->entity . ", '" . $ref . "', '" . $this->db->idate($now) . "', '" . $this->db->idate($this->datepaye) . "', '" . $totalamount . "', " . $this->paiementid . ", '" . $this->num_paiement . "', '" . $this->db->escape($this->note) . "', " . $user->id . ")";
dol_syslog(get_class($this) . "::Create insert paiement", LOG_DEBUG);
$resql = $this->db->query($sql);
if ($resql) {
$this->id = $this->db->last_insert_id(MAIN_DB_PREFIX . 'paiement');
// Insert links amount / invoices
foreach ($this->amounts as $key => $amount) {
$facid = $key;
if (is_numeric($amount) && $amount != 0) {
$amount = price2num($amount);
$sql = 'INSERT INTO ' . MAIN_DB_PREFIX . 'paiement_facture (fk_facture, fk_paiement, amount)';
$sql .= ' VALUES (' . $facid . ', ' . $this->id . ', \'' . $amount . '\')';
dol_syslog(get_class($this) . '::Create Amount line ' . $key . ' insert paiement_facture', LOG_DEBUG);
$resql = $this->db->query($sql);
if ($resql) {
// If we want to closed payed invoices
if ($closepaidinvoices) {
$invoice = new Facture($this->db);
$invoice->fetch($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');
//var_dump($invoice->total_ttc.' - '.$paiement.' -'.$creditnotes.' - '.$deposits.' - '.$remaintopay);exit;
// If there is withdrawals request to do and not done yet, we wait before closing.
$mustwait = 0;
$listofpayments = $invoice->getListOfPayments();
foreach ($listofpayments as $paym) {
// This payment might be this one or a previous one
if ($paym['type'] == 'PRE') {
if (!empty($conf->prelevement->enabled)) {
// TODO Check if this payment has a withdraw request
// if not, $mustwait++; // This will disable automatic close on invoice to allow to process
}
}
}
//Invoice types that are eligible for changing status to paid
$affected_types = array(Facture::TYPE_STANDARD, Facture::TYPE_REPLACEMENT, Facture::TYPE_CREDIT_NOTE, Facture::TYPE_DEPOSIT, Facture::TYPE_SITUATION);
if (!in_array($invoice->type, $affected_types)) {
dol_syslog("Invoice " . $facid . " is not a standard, nor replacement invoice, nor credit note, nor deposit invoice, nor situation invoice. We do nothing more.");
} else {
if ($remaintopay) {
dol_syslog("Remain to pay for invoice " . $facid . " not null. We do nothing more.");
} else {
if ($mustwait) {
dol_syslog("There is " . $mustwait . " differed payment to process, we do nothing more.");
} else {
$result = $invoice->set_paid($user, '', '');
if ($result < 0) {
$this->error = $invoice->error;
$error++;
}
}
}
}
}
} else {
$this->error = $this->db->lasterror();
$error++;
}
} else {
dol_syslog(get_class($this) . '::Create Amount line ' . $key . ' not a number. We discard it.');
}
}
if (!$error) {
//.........這裏部分代碼省略.........
示例4: Facture
$line->total_ttc = -$line->total_ttc;
$line->total_localtax1 = -$line->total_localtax1;
$line->total_localtax2 = -$line->total_localtax2;
$line->insert();
$object->lines[] = $line;
// insert new line in current object
}
$object->update_price(1);
}
}
if (GETPOST('invoiceAvoirWithPaymentRestAmount', 'int') == 1 && $id > 0) {
$facture_source = new Facture($db);
// fetch origin object if not previously defined
if ($facture_source->fetch($object->fk_facture_source) > 0) {
$totalpaye = $facture_source->getSommePaiement();
$totalcreditnotes = $facture_source->getSumCreditNotesUsed();
$totaldeposits = $facture_source->getSumDepositsUsed();
$remain_to_pay = abs($facture_source->total_ttc - $totalpaye - $totalcreditnotes - $totaldeposits);
$object->addline($langs->trans('invoiceAvoirLineWithPaymentRestAmount'), $remain_to_pay, 1, 0, 0, 0, 0, 0, '', '', 'TTC');
}
}
// Add predefined lines
/*
TODO delete
for($i = 1; $i <= $NBLINES; $i ++) {
if ($_POST['idprod' . $i]) {
$product = new Product($db);
$product->fetch($_POST['idprod' . $i]);
$startday = dol_mktime(12, 0, 0, $_POST['date_start' . $i . 'month'], $_POST['date_start' . $i . 'day'], $_POST['date_start' . $i . 'year']);
$endday = dol_mktime(12, 0, 0, $_POST['date_end' . $i . 'month'], $_POST['date_end' . $i . 'day'], $_POST['date_end' . $i . 'year']);
$result = $object->addline($product->description, $product->price, $_POST['qty' . $i], $product->tva_tx, $product->localtax1_tx, $product->localtax2_tx, $_POST['idprod' . $i], $_POST['remise_percent' . $i], $startday, $endday, 0, 0, '', $product->price_base_type, $product->price_ttc, $product->type);
示例5: price
print '</td>';
print '<td class="nowrap" align="center">' . dol_print_date($db->jdate($objp->df), 'day') . '</td>' . "\n";
print '<td class="nowrap" align="center">' . dol_print_date($db->jdate($objp->datelimite), 'day') . '</td>' . "\n";
print '<td><a href="' . DOL_URL_ROOT . '/comm/fiche.php?socid=' . $objp->socid . '">' . img_object($langs->trans("ShowCompany"), "company") . ' ' . dol_trunc($objp->nom, 28) . '</a></td>';
print '<td align="right">' . price($objp->total_ht) . '</td>';
print '<td align="right">' . price($objp->total_tva);
$tx1 = price2num($objp->localtax1);
$tx2 = price2num($objp->localtax2);
$revenuestamp = price2num($objp->revenuestamp);
if (!empty($tx1) || !empty($tx2) || !empty($revenuestamp)) {
print '+' . price($tx1 + $tx2 + $revenuestamp);
}
print '</td>';
print '<td align="right">' . price($objp->total_ttc) . '</td>';
print '<td align="right">';
$cn = $facturestatic->getSumCreditNotesUsed();
if (!empty($objp->am)) {
print price($objp->am);
}
if (!empty($objp->am) && !empty($cn)) {
print '+';
}
if (!empty($cn)) {
print price($cn);
}
print '</td>';
// Remain to receive
print '<td align="right">' . (!empty($objp->am) || !empty($cn) ? price($objp->total_ttc - $objp->am - $cn) : ' ') . '</td>';
// Status of invoice
print '<td align="right" class="nowrap">';
print $facturestatic->LibStatut($objp->paye, $objp->fk_statut, 5, $objp->am);
示例6: Facture
/* Mode fiche */
/* */
/* *************************************************************************** */
if ($_REQUEST["facid"] > 0 || $_REQUEST["ref"])
{
$fac = new Facture($db);
if ($fac->fetch($_REQUEST["facid"], $_REQUEST["ref"]) > 0)
{
if ($mesg) print $mesg.'<br>';
$soc = new Societe($db, $fac->socid);
$soc->fetch($fac->socid);
$totalpaye = $fac->getSommePaiement();
$totalcreditnotes = $fac->getSumCreditNotesUsed();
$totaldeposits = $fac->getSumDepositsUsed();
//print "totalpaye=".$totalpaye." totalcreditnotes=".$totalcreditnotes." totaldeposts=".$totaldeposits;
// We can also use bcadd to avoid pb with floating points
// For example print 239.2 - 229.3 - 9.9; does not return 0.
//$resteapayer=bcadd($fac->total_ttc,$totalpaye,$conf->global->MAIN_MAX_DECIMALS_TOT);
//$resteapayer=bcadd($resteapayer,$totalavoir,$conf->global->MAIN_MAX_DECIMALS_TOT);
$resteapayer = price2num($fac->total_ttc - $totalpaye - $totalcreditnotes - $totaldeposits,'MT');
if ($fac->paye) $resteapayer=0;
$resteapayeraffiche=$resteapayer;
$absolute_discount=$soc->getAvailableDiscounts('','fk_facture_source IS NULL');
$absolute_creditnote=$soc->getAvailableDiscounts('','fk_facture_source IS NOT NULL');
$absolute_discount=price2num($absolute_discount,'MT');
示例7: Facture
/**
* Return amount of bill not paid
*
* @return int Amount in debt for thirdparty
*/
function get_OutstandingBill()
{
/* Accurate value of remain to pay is to sum remaintopay for each invoice
$paiement = $invoice->getSommePaiement();
$creditnotes=$invoice->getSumCreditNotesUsed();
$deposits=$invoice->getSumDepositsUsed();
$alreadypayed=price2num($paiement + $creditnotes + $deposits,'MT');
$remaintopay=price2num($invoice->total_ttc - $paiement - $creditnotes - $deposits,'MT');
*/
$sql = "SELECT rowid, total_ttc FROM ".MAIN_DB_PREFIX."facture as f";
$sql .= " WHERE fk_soc = ". $this->id;
$sql .= " AND paye = 0";
$sql .= " AND fk_statut <> 0"; // Not a draft
//$sql .= " AND (fk_statut <> 3 OR close_code <> 'abandon')"; // Not abandonned for undefined reason
$sql .= " AND fk_statut <> 3"; // Not abandonned
$sql .= " AND fk_statut <> 2"; // Not clasified as paid
dol_syslog("get_OutstandingBill", LOG_DEBUG);
$resql=$this->db->query($sql);
if ($resql)
{
$outstandingBill = 0;
require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
$facturestatic=new Facture($this->db);
while($obj=$this->db->fetch_object($resql)) {
$facturestatic->id=$obj->rowid;
$paiement = $facturestatic->getSommePaiement();
$creditnotes = $facturestatic->getSumCreditNotesUsed();
$deposits = $facturestatic->getSumDepositsUsed();
$outstandingBill+= $obj->total_ttc - $paiement - $creditnotes - $deposits;
}
return $outstandingBill;
}
else
return 0;
}
示例8: array
/**
* Set withdrawal to credited status
*
* @param User $user id of user
* @param int $date date of action
* @return int >0 if OK, <0 if KO
*/
function set_infocredit($user, $date)
{
global $conf, $langs;
$error = 0;
if ($this->_fetched == 1) {
if ($date >= $this->date_trans) {
if ($this->db->begin()) {
$sql = " UPDATE " . MAIN_DB_PREFIX . "prelevement_bons ";
$sql .= " SET fk_user_credit = " . $user->id;
$sql .= ", statut = 2";
$sql .= ", date_credit = '" . $this->db->idate($date) . "'";
$sql .= " WHERE rowid=" . $this->id;
$sql .= " AND entity = " . $conf->entity;
$sql .= " AND statut = 1";
if ($this->db->query($sql)) {
$langs->load('withdrawals');
$subject = $langs->trans("InfoCreditSubject", $this->ref);
$message = $langs->trans("InfoCreditMessage", $this->ref, dol_print_date($date, 'dayhour'));
//Add payment of withdrawal into bank
$bankaccount = $conf->global->PRELEVEMENT_ID_BANKACCOUNT;
$facs = array();
$amounts = array();
$facs = $this->getListInvoices(1);
$num = count($facs);
for ($i = 0; $i < $num; $i++) {
$fac = new Facture($this->db);
$fac->fetch($facs[$i][0]);
$amounts[$fac->id] = $facs[$i][1];
$totalpaye = $fac->getSommePaiement();
$totalcreditnotes = $fac->getSumCreditNotesUsed();
$totaldeposits = $fac->getSumDepositsUsed();
$alreadypayed = $totalpaye + $totalcreditnotes + $totaldeposits;
if ($alreadypayed + $facs[$i][1] >= $fac->total_ttc) {
$result = $fac->set_paid($user);
}
}
$paiement = new Paiement($this->db);
$paiement->datepaye = $date;
$paiement->amounts = $amounts;
$paiement->paiementid = 3;
//
$paiement->num_paiement = $this->ref;
$paiement_id = $paiement->create($user);
if ($paiement_id < 0) {
dol_syslog(get_class($this) . "::set_credite AddPayment Error");
$error++;
} else {
$result = $paiement->addPaymentToBank($user, 'payment', '(WithdrawalPayment)', $bankaccount, '', '');
if ($result < 0) {
dol_syslog(get_class($this) . "::set_credite AddPaymentToBank Error");
$error++;
}
}
// Update prelevement line
// TODO: Translate to ligneprelevement.class.php
$sql = " UPDATE " . MAIN_DB_PREFIX . "prelevement_lignes";
$sql .= " SET statut = 2";
$sql .= " WHERE fk_prelevement_bons = " . $this->id;
if (!$this->db->query($sql)) {
dol_syslog(get_class($this) . "::set_credite Update lines Error");
$error++;
}
} else {
dol_syslog(get_class($this) . "::set_infocredit Update Bons Error");
$error++;
}
/*
* End of procedure
*/
if ($error == 0) {
$this->db->commit();
return 0;
} else {
$this->db->rollback();
dol_syslog("bon-prelevment::set_infocredit ROLLBACK ");
return -1;
}
} else {
dol_syslog(get_class($this) . "::set_infocredit 1025 Open SQL transaction impossible ");
return -1025;
}
} else {
dol_syslog("bon-prelevment::set_infocredit 1027 Date de credit < Date de trans ");
return -1027;
}
} else {
return -1026;
}
}
示例9: Form
}
}
/*
* View
*/
$now = dol_now();
llxHeader('', $langs->trans("Bill"));
$form = new Form($db);
/* *************************************************************************** */
/* */
/* Mode fiche */
/* */
/* *************************************************************************** */
if ($object->id > 0) {
$totalpaye = $object->getSommePaiement();
$totalcreditnotes = $object->getSumCreditNotesUsed();
$totaldeposits = $object->getSumDepositsUsed();
//print "totalpaye=".$totalpaye." totalcreditnotes=".$totalcreditnotes." totaldeposts=".$totaldeposits;
// We can also use bcadd to avoid pb with floating points
// For example print 239.2 - 229.3 - 9.9; does not return 0.
//$resteapayer=bcadd($object->total_ttc,$totalpaye,$conf->global->MAIN_MAX_DECIMALS_TOT);
//$resteapayer=bcadd($resteapayer,$totalavoir,$conf->global->MAIN_MAX_DECIMALS_TOT);
$resteapayer = price2num($object->total_ttc - $totalpaye - $totalcreditnotes - $totaldeposits, 'MT');
if ($object->paye) {
$resteapayer = 0;
}
$resteapayeraffiche = $resteapayer;
$absolute_discount = $object->thirdparty->getAvailableDiscounts('', 'fk_facture_source IS NULL');
$absolute_creditnote = $object->thirdparty->getAvailableDiscounts('', 'fk_facture_source IS NOT NULL');
$absolute_discount = price2num($absolute_discount, 'MT');
$absolute_creditnote = price2num($absolute_creditnote, 'MT');
示例10: price
/**
* Show total to pay
*
* @param PDF &$pdf Object PDF
* @param Facture $object Object invoice
* @param int $deja_regle Montant deja regle
* @param int $posy Position depart
* @param Translate $outputlangs Objet langs
* @return int Position pour suite
*/
function _tableau_tot(&$pdf, $object, $deja_regle, $posy, $outputlangs)
{
global $conf, $langs;
$sign = 1;
if ($object->type == 2 && !empty($conf->global->INVOICE_POSITIVE_CREDIT_NOTE)) {
$sign = -1;
}
$langs->load("main");
$langs->load("bills");
$default_font_size = pdf_getPDFFontSize($outputlangs);
$tab2_top = $this->marges['h'] + 202;
$tab2_hl = 4;
$pdf->SetFont('', '', $default_font_size - 1);
// Tableau total
$col1x = $this->marges['g'] + 110;
$col2x = $this->marges['g'] + 164;
$largcol2 = $this->page_largeur - $this->marge_droite - $col2x;
$pdf->SetXY($this->marges['g'], $tab2_top + 0);
$useborder = 0;
$index = 0;
// Total HT
$pdf->SetXY($col1x, $tab2_top + 0);
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $outputlangs->transnoentities("TotalHT"), 0, 'L', 0);
$pdf->SetXY($col2x, $tab2_top + 0);
$pdf->MultiCell($largcol2, $tab2_hl, price($sign * ($object->total_ht + $object->remise)), 0, 'R', 0);
// Show VAT by rates and total
$pdf->SetFillColor(248, 248, 248);
$this->atleastoneratenotnull = 0;
if (empty($conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT)) {
foreach ($this->tva as $tvakey => $tvaval) {
if ($tvakey > 0) {
$this->atleastoneratenotnull++;
$index++;
$pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index);
$tvacompl = '';
if (preg_match('/\\*/', $tvakey)) {
$tvakey = str_replace('*', '', $tvakey);
$tvacompl = " (" . $outputlangs->transnoentities("NonPercuRecuperable") . ")";
}
$totalvat = $outputlangs->transnoentities("TotalVAT") . ' ';
$totalvat .= vatrate($tvakey, 1) . $tvacompl;
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1);
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($largcol2, $tab2_hl, price($sign * $tvaval), 0, 'R', 1);
}
}
if (!$this->atleastoneratenotnull) {
$index++;
$pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $outputlangs->transnoentities("TotalVAT"), 0, 'L', 1);
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($largcol2, $tab2_hl, price($sign * $object->total_tva), 0, 'R', 1);
}
}
// Total TTC
if (empty($conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT)) {
$index++;
$pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index);
$pdf->SetTextColor(22, 137, 210);
$pdf->SetFont('', 'B', $default_font_size + 1);
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $outputlangs->transnoentities("TotalTTC"), 0, 'L', 0);
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($largcol2, $tab2_hl, price($sign * $object->total_ttc), 0, 'R', 0);
$pdf->SetTextColor(0, 0, 0);
}
$creditnoteamount = $object->getSumCreditNotesUsed();
$depositsamount = $object->getSumDepositsUsed();
$resteapayer = price2num($object->total_ttc - $deja_regle - $creditnoteamount - $depositsamount, 'MT');
if ($object->paye) {
$resteapayer = 0;
}
if ($deja_regle > 0 || $creditnoteamount > 0 || $depositsamount > 0) {
$pdf->SetFont('', '', $default_font_size);
// Already paid + Deposits
$index++;
$pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $outputlangs->transnoentities("AlreadyPaid"), 0, 'L', 0);
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($largcol2, $tab2_hl, price($deja_regle + $depositsamount), 0, 'R', 0);
// Credit note
if ($creditnoteamount) {
$index++;
$pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($col2x - $col1x, $tab2_hl, $outputlangs->transnoentities("CreditNotes"), 0, 'L', 0);
$pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index);
$pdf->MultiCell($largcol2, $tab2_hl, price($creditnoteamount), 0, 'R', 0);
}
// Escompte
if ($object->close_code == 'discount_vat') {
$index++;
//.........這裏部分代碼省略.........
示例11: create
/**
* Create payment of invoices into database.
* Use this->amounts to have list of invoices for the payment
* @param user object user
* @param closepaidinvoices 1=Also close payed invoices to paid, 0=Do nothing more
* @return int id of created payment, < 0 if error
*/
function create($user,$closepaidinvoices=0)
{
global $langs,$conf;
$error = 0;
$now=dol_now();
// Clean parameters
$totalamount = 0;
foreach ($this->amounts as $key => $value) // How payment is dispatch
{
$newvalue = price2num($value,'MT');
$this->amounts[$key] = $newvalue;
$totalamount += $newvalue;
}
$totalamount = price2num($totalamount);
// Check parameters
if ($totalamount == 0) return -1; // On accepte les montants negatifs pour les rejets de prelevement mais pas null
$this->db->begin();
$sql = "INSERT INTO ".MAIN_DB_PREFIX."paiement (datec, datep, amount, fk_paiement, num_paiement, note, fk_user_creat)";
$sql.= " VALUES ('".$this->db->idate($now)."', '".$this->db->idate($this->datepaye)."', '".$totalamount."', ".$this->paiementid.", '".$this->num_paiement."', '".$this->db->escape($this->note)."', ".$user->id.")";
dol_syslog(get_class($this)."::Create insert paiement sql=".$sql);
$resql = $this->db->query($sql);
if ($resql)
{
$this->id = $this->db->last_insert_id(MAIN_DB_PREFIX.'paiement');
// Insert links amount / invoices
foreach ($this->amounts as $key => $amount)
{
$facid = $key;
if (is_numeric($amount) && $amount <> 0)
{
$amount = price2num($amount);
$sql = 'INSERT INTO '.MAIN_DB_PREFIX.'paiement_facture (fk_facture, fk_paiement, amount)';
$sql .= ' VALUES ('.$facid.', '. $this->id.', \''.$amount.'\')';
dol_syslog(get_class($this).'::Create Amount line '.$key.' insert paiement_facture sql='.$sql);
$resql=$this->db->query($sql);
if ($resql)
{
// If we want to closed payed invoices
if ($closepaidinvoices)
{
$invoice=new Facture($this->db);
$invoice->fetch($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');
// If there is withdrawals request to do and not done yet, we wait before closing.
$mustwait=0;
$listofpayments=$invoice->getListOfPayments();
foreach($listofpayments as $paym)
{
// This payment might be this one or a previous one
if ($paym['type']=='PRE')
{
if ($conf->prelevement->enabled)
{
// TODO Check if this payment has a withdraw request
// if not, $mustwait++; // This will disable automatic close on invoice to allow to process
}
}
}
if ($invoice->type != 0 && $invoice->type != 1) dol_syslog("Invoice ".$facid." is not a standard nor replacement invoice. We do nothing more.");
else if ($remaintopay) dol_syslog("Remain to pay for invoice ".$facid." not null. We do nothing more.");
else if ($mustwait) dol_syslog("There is ".$mustwait." differed payment to process, we do nothing more.");
else $result=$invoice->set_paid($user,'','');
}
}
else
{
$this->error=$this->db->lasterror();
dol_syslog(get_class($this).'::Create insert paiement_facture error='.$this->error, LOG_ERR);
$error++;
}
}
else
{
dol_syslog(get_class($this).'::Create Amount line '.$key.' not a number. We discard it.');
}
}
if (! $error)
//.........這裏部分代碼省略.........