'; // You can use div-table-responsive-no-min if you don't need reserved height for your table
+ print '
';
+ while ($i < $num) {
+ $objp = $db->fetch_object($resql);
- print dol_get_fiche_end();
-
-
- /*
- * List of unpaid invoices
- */
-
- $sql = 'SELECT f.rowid as facid, f.ref, f.total_ht, f.total_tva, f.total_ttc, f.multicurrency_code, f.multicurrency_total_ht, f.multicurrency_total_tva, f.multicurrency_total_ttc, f.type,';
- $sql .= ' f.datef as df, f.fk_soc as socid, f.date_lim_reglement as dlr';
- $sql .= ' FROM '.MAIN_DB_PREFIX.'facture as f';
- $sql .= ' WHERE f.entity IN ('.getEntity('facture').')';
- $sql .= ' AND (f.fk_soc = '.((int) $facture->socid);
- // Can pay invoices of all child of parent company
- if (getDolGlobalString('FACTURE_PAYMENTS_ON_DIFFERENT_THIRDPARTIES_BILLS') && !empty($facture->thirdparty->parent)) {
- $sql .= ' OR f.fk_soc IN (SELECT rowid FROM '.MAIN_DB_PREFIX.'societe WHERE parent = '.((int) $facture->thirdparty->parent).')';
- }
- // Can pay invoices of all child of myself
- if (getDolGlobalString('FACTURE_PAYMENTS_ON_SUBSIDIARY_COMPANIES')) {
- $sql .= ' OR f.fk_soc IN (SELECT rowid FROM '.MAIN_DB_PREFIX.'societe WHERE parent = '.((int) $facture->thirdparty->id).')';
- }
- $sql .= ') AND f.paye = 0';
- $sql .= ' AND f.fk_statut = 1'; // Statut=0 => not validated, Statut=2 => canceled
- if ($facture->type != Facture::TYPE_CREDIT_NOTE) {
- $sql .= ' AND type IN (0,1,3,5)'; // Standard invoice, replacement, deposit, situation
- } else {
- $sql .= ' AND type = 2'; // If paying back a credit note, we show all credit notes
- }
- // Sort invoices by date and serial number: the older one comes first
- $sql .= ' ORDER BY f.datef ASC, f.ref ASC';
-
- $resql = $db->query($sql);
- if ($resql) {
- $num = $db->num_rows($resql);
- if ($num > 0) {
- $arraytitle = $langs->trans('Invoice');
- if ($facture->type == 2) {
- $arraytitle = $langs->trans("CreditNotes");
- }
- $alreadypayedlabel = $langs->trans('Received');
- $multicurrencyalreadypayedlabel = $langs->trans('MulticurrencyReceived');
- if ($facture->type == 2) {
- $alreadypayedlabel = $langs->trans("PaidBack");
- $multicurrencyalreadypayedlabel = $langs->trans("MulticurrencyPaidBack");
- }
- $remaindertopay = $langs->trans('RemainderToTake');
- $multicurrencyremaindertopay = $langs->trans('MulticurrencyRemainderToTake');
- if ($facture->type == 2) {
- $remaindertopay = $langs->trans("RemainderToPayBack");
- $multicurrencyremaindertopay = $langs->trans("MulticurrencyRemainderToPayBack");
- }
-
- $i = 0;
- //print '
';
- print ' ';
-
- print ''; // You can use div-table-responsive-no-min if you don't need reserved height for your table
- print ' ';
-
- print '';
- print '| '.$arraytitle.' | ';
- print ''.$langs->trans('Date').' | ';
- print ''.$langs->trans('DateMaxPayment').' | ';
- if (isModEnabled('multicurrency')) {
- print ''.$langs->trans('Currency').' | ';
- print ''.$langs->trans('MulticurrencyAmountTTC').' | ';
- print ''.$multicurrencyalreadypayedlabel.' | ';
- print ''.$multicurrencyremaindertopay.' | ';
- print ''.$langs->trans('MulticurrencyPaymentAmount').' | ';
- }
- print ''.$langs->trans('AmountTTC').' | ';
- print ''.$alreadypayedlabel.' | ';
- print ''.$remaindertopay.' | ';
- print ''.$langs->trans('PaymentAmount').' | ';
-
- $parameters = array();
- $reshook = $hookmanager->executeHooks('printFieldListTitle', $parameters, $facture, $action); // Note that $action and $object may have been modified by hook
-
- print ' | ';
- print " \n";
-
- $total_ttc = 0;
- $totalrecu = 0;
- $totalrecucreditnote = 0;
- $totalrecudeposits = 0;
$sign = 1;
+ if ($facture->type == Facture::TYPE_CREDIT_NOTE) {
+ $sign = -1;
+ }
- while ($i < $num) {
- $objp = $db->fetch_object($resql);
+ $soc = new Societe($db);
+ $soc->fetch($objp->socid);
- $sign = 1;
- if ($facture->type == Facture::TYPE_CREDIT_NOTE) {
- $sign = -1;
+ $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');
+
+ // Multicurrency Price
+ $tooltiponmulticurrencyfullamount = '';
+ $multicurrency_remaintopay = '';
+ $multicurrency_payment = 0;
+ $multicurrency_creditnotes = 0;
+ $multicurrency_deposits = 0;
+ if (isModEnabled('multicurrency')) {
+ $multicurrency_payment = $invoice->getSommePaiement(1);
+ $multicurrency_creditnotes = $invoice->getSumCreditNotesUsed(1);
+ $multicurrency_deposits = $invoice->getSumDepositsUsed(1);
+ $multicurrency_alreadypayed = price2num($multicurrency_payment + $multicurrency_creditnotes + $multicurrency_deposits, 'MT');
+ $multicurrency_remaintopay = price2num($invoice->multicurrency_total_ttc - $multicurrency_payment - $multicurrency_creditnotes - $multicurrency_deposits, 'MT');
+ // Multicurrency full amount tooltip
+ $tooltiponmulticurrencyfullamount = $langs->trans('AmountHT') . ": " . price($objp->multicurrency_total_ht, 0, $langs, 0, -1, -1, $objp->multicurrency_code) . " ";
+ $tooltiponmulticurrencyfullamount .= $langs->trans('AmountVAT') . ": " . price($objp->multicurrency_total_tva, 0, $langs, 0, -1, -1, $objp->multicurrency_code) . " ";
+ $tooltiponmulticurrencyfullamount .= $langs->trans('AmountTTC') . ": " . price($objp->multicurrency_total_ttc, 0, $langs, 0, -1, -1, $objp->multicurrency_code) . " ";
+ }
+
+ // Full amount tooltip
+ $tooltiponfullamount = $langs->trans('AmountHT') . ": " . price($objp->total_ht, 0, $langs, 0, -1, -1, $conf->currency) . " ";
+ $tooltiponfullamount .= $langs->trans('AmountVAT') . ": " . price($objp->total_tva, 0, $langs, 0, -1, -1, $conf->currency) . " ";
+ $tooltiponfullamount .= $langs->trans('AmountTTC') . ": " . price($objp->total_ttc, 0, $langs, 0, -1, -1, $conf->currency) . " ";
+
+ print '';
+
+ print '| ';
+ print $invoice->getNomUrl(1, '');
+ if ($objp->socid != $facture->thirdparty->id) {
+ print ' - '.$soc->getNomUrl(1).' ';
+ }
+ print " | \n";
+
+ // Date
+ print ''.dol_print_date($db->jdate($objp->df), 'day')." | \n";
+
+ // Due date
+ if ($objp->dlr > 0) {
+ print '';
+ print dol_print_date($db->jdate($objp->dlr), 'day');
+
+ if ($invoice->hasDelay()) {
+ print img_warning($langs->trans('Late'));
}
- $soc = new Societe($db);
- $soc->fetch($objp->socid);
+ print ' | ';
+ } else {
+ print ' | ';
+ }
- $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');
+ // Currency
+ if (isModEnabled('multicurrency')) {
+ print ''.$objp->multicurrency_code." | \n";
+ }
- // Multicurrency Price
- $tooltiponmulticurrencyfullamount = '';
- $multicurrency_remaintopay = '';
- $multicurrency_payment = 0;
- $multicurrency_creditnotes = 0;
- $multicurrency_deposits = 0;
- if (isModEnabled('multicurrency')) {
- $multicurrency_payment = $invoice->getSommePaiement(1);
- $multicurrency_creditnotes = $invoice->getSumCreditNotesUsed(1);
- $multicurrency_deposits = $invoice->getSumDepositsUsed(1);
- $multicurrency_alreadypayed = price2num($multicurrency_payment + $multicurrency_creditnotes + $multicurrency_deposits, 'MT');
- $multicurrency_remaintopay = price2num($invoice->multicurrency_total_ttc - $multicurrency_payment - $multicurrency_creditnotes - $multicurrency_deposits, 'MT');
- // Multicurrency full amount tooltip
- $tooltiponmulticurrencyfullamount = $langs->trans('AmountHT') . ": " . price($objp->multicurrency_total_ht, 0, $langs, 0, -1, -1, $objp->multicurrency_code) . " ";
- $tooltiponmulticurrencyfullamount .= $langs->trans('AmountVAT') . ": " . price($objp->multicurrency_total_tva, 0, $langs, 0, -1, -1, $objp->multicurrency_code) . " ";
- $tooltiponmulticurrencyfullamount .= $langs->trans('AmountTTC') . ": " . price($objp->multicurrency_total_ttc, 0, $langs, 0, -1, -1, $objp->multicurrency_code) . " ";
- }
-
- // Full amount tooltip
- $tooltiponfullamount = $langs->trans('AmountHT') . ": " . price($objp->total_ht, 0, $langs, 0, -1, -1, $conf->currency) . " ";
- $tooltiponfullamount .= $langs->trans('AmountVAT') . ": " . price($objp->total_tva, 0, $langs, 0, -1, -1, $conf->currency) . " ";
- $tooltiponfullamount .= $langs->trans('AmountTTC') . ": " . price($objp->total_ttc, 0, $langs, 0, -1, -1, $conf->currency) . " ";
-
- print ' ';
-
- print '| ';
- print $invoice->getNomUrl(1, '');
- if ($objp->socid != $facture->thirdparty->id) {
- print ' - '.$soc->getNomUrl(1).' ';
- }
- print " | \n";
-
- // Date
- print ''.dol_print_date($db->jdate($objp->df), 'day')." | \n";
-
- // Due date
- if ($objp->dlr > 0) {
- print '';
- print dol_print_date($db->jdate($objp->dlr), 'day');
-
- if ($invoice->hasDelay()) {
- print img_warning($langs->trans('Late'));
- }
-
- print ' | ';
- } else {
- print ' | ';
- }
-
- // Currency
- if (isModEnabled('multicurrency')) {
- print ''.$objp->multicurrency_code." | \n";
- }
-
- // Multicurrency full amount
- if (isModEnabled('multicurrency')) {
- print '';
- if ($objp->multicurrency_code && $objp->multicurrency_code != $conf->currency) {
- print '' . price($sign * $objp->multicurrency_total_ttc);
- }
- print ' | ';
-
- // Multicurrency Price
- print '';
- if ($objp->multicurrency_code && $objp->multicurrency_code != $conf->currency) {
- print price($sign * $multicurrency_payment);
- if ($multicurrency_creditnotes) {
- print '+'.price($multicurrency_creditnotes);
- }
- if ($multicurrency_deposits) {
- print '+'.price($multicurrency_deposits);
- }
- }
- print ' | ';
-
- // Multicurrency remain to pay
- print '';
- if ($objp->multicurrency_code && $objp->multicurrency_code != $conf->currency) {
- print price($sign * (float) $multicurrency_remaintopay);
- }
- print ' | ';
-
- print '';
-
- // Add remind multicurrency amount
- $namef = 'multicurrency_amount_'.$objp->facid;
- $nameRemain = 'multicurrency_remain_'.$objp->facid;
-
- if ($objp->multicurrency_code && $objp->multicurrency_code != $conf->currency) {
- if ($action != 'add_paiement') {
- if (!empty($conf->use_javascript_ajax)) {
- print img_picto("Auto fill", 'rightarrow', "class='AutoFillAmount' data-rowname='".$namef."' data-value='".($sign * (float) $multicurrency_remaintopay)."'");
- }
- print '';
- print '';
- } else {
- print '';
- print '';
- }
- }
- print " | ";
- }
-
- // Full amount
- print ''.price($sign * $objp->total_ttc).' | ';
-
- // Received + already paid
- print ''.price($sign * $paiement);
- if ($creditnotes) {
- print '+'.price($creditnotes).'';
- }
- if ($deposits) {
- print '+'.price($deposits).'';
+ // Multicurrency full amount
+ if (isModEnabled('multicurrency')) {
+ print ' | ';
+ if ($objp->multicurrency_code && $objp->multicurrency_code != $conf->currency) {
+ print '' . price($sign * $objp->multicurrency_total_ttc);
}
print ' | ';
- // Remain to take or to pay back
+ // Multicurrency Price
print '';
- print price($sign * (float) $remaintopay);
- if (isModEnabled('prelevement')) {
- $numdirectdebitopen = 0;
- $totaldirectdebit = 0;
- $sql = "SELECT COUNT(pfd.rowid) as nb, SUM(pfd.amount) as amount";
- $sql .= " FROM ".MAIN_DB_PREFIX."prelevement_demande as pfd";
- $sql .= " WHERE fk_facture = ".((int) $objp->facid);
- $sql .= " AND pfd.traite = 0";
- $sql .= " AND pfd.ext_payment_id IS NULL";
-
- $result_sql = $db->query($sql);
- if ($result_sql) {
- $obj = $db->fetch_object($result_sql);
- $numdirectdebitopen = $obj->nb;
- $totaldirectdebit = $obj->amount;
- } else {
- dol_print_error($db);
+ if ($objp->multicurrency_code && $objp->multicurrency_code != $conf->currency) {
+ print price($sign * $multicurrency_payment);
+ if ($multicurrency_creditnotes) {
+ print '+'.price($multicurrency_creditnotes);
}
- if ($numdirectdebitopen) {
- $langs->load("withdrawals");
- print img_warning($langs->trans("WarningSomeDirectDebitOrdersAlreadyExists", $numdirectdebitopen, price(price2num($totaldirectdebit, 'MT'), 0, $langs, 1, -1, -1, $conf->currency)), '', 'classfortooltip');
+ if ($multicurrency_deposits) {
+ print '+'.price($multicurrency_deposits);
}
}
print ' | ';
- //$test= price(price2num($objp->total_ttc - $paiement - $creditnotes - $deposits));
- // Amount
+ // Multicurrency remain to pay
+ print '';
+ if ($objp->multicurrency_code && $objp->multicurrency_code != $conf->currency) {
+ print price($sign * (float) $multicurrency_remaintopay);
+ }
+ print ' | ';
+
print '';
- // Add remind amount
- $namef = 'amount_'.$objp->facid;
- $nameRemain = 'remain_'.$objp->facid;
+ // Add remind multicurrency amount
+ $namef = 'multicurrency_amount_'.$objp->facid;
+ $nameRemain = 'multicurrency_remain_'.$objp->facid;
- if ($action != 'add_paiement') {
- if (!empty($conf->use_javascript_ajax)) {
- print img_picto("Auto fill", 'rightarrow', "class='AutoFillAmount' data-rowname='".$namef."' data-value='".($sign * (float) $remaintopay)."'");
+ if ($objp->multicurrency_code && $objp->multicurrency_code != $conf->currency) {
+ if ($action != 'add_paiement') {
+ if (!empty($conf->use_javascript_ajax)) {
+ print img_picto("Auto fill", 'rightarrow', "class='AutoFillAmount' data-rowname='".$namef."' data-value='".($sign * (float) $multicurrency_remaintopay)."'");
+ }
+ print '';
+ print '';
+ } else {
+ print '';
+ print '';
}
- print '';
- print '';
- } else {
- print '';
- print '';
}
print " | ";
-
- $parameters = array();
- $reshook = $hookmanager->executeHooks('printFieldListValue', $parameters, $objp, $action); // Note that $action and $object may have been modified by hook
-
- // Warning
- print '';
- //print "xx".$amounts[$invoice->id]."-".$amountsresttopay[$invoice->id]." ";
- if (!empty($amounts[$invoice->id]) && (abs((float) $amounts[$invoice->id]) > abs((float) $amountsresttopay[$invoice->id]))
- || !empty($multicurrency_amounts[$invoice->id]) && (abs((float) $multicurrency_amounts[$invoice->id]) > abs((float) $multicurrency_amountsresttopay[$invoice->id]))) {
- print ' '.img_warning($langs->trans("PaymentHigherThanReminderToPay"));
- }
- print ' | ';
-
- print " \n";
-
- $total_ttc += $objp->total_ttc;
- $totalrecu += $paiement;
- $totalrecucreditnote += $creditnotes;
- $totalrecudeposits += $deposits;
- $i++;
}
- if ($i > 1) {
- // Print total
- print '';
- print '| '.$langs->trans('TotalTTC').' | ';
- if (isModEnabled('multicurrency')) {
- print ' | ';
- print ' | ';
- print ' | ';
- print ' | ';
- print ' | ';
- }
- print ''.price($sign * $total_ttc).' | ';
- print ''.price($sign * $totalrecu);
- if ($totalrecucreditnote) {
- print '+'.price($totalrecucreditnote);
- }
- if ($totalrecudeposits) {
- print '+'.price($totalrecudeposits);
- }
- print ' | ';
- print ''.price($sign * (float) price2num($total_ttc - $totalrecu - $totalrecucreditnote - $totalrecudeposits, 'MT')).' | ';
- print ' | '; // Autofilled
- print ' | ';
- print " \n";
+ // Full amount
+ print ''.price($sign * $objp->total_ttc).' | ';
+
+ // Received + already paid
+ print ''.price($sign * $paiement);
+ if ($creditnotes) {
+ print '+'.price($creditnotes).'';
}
- print " | ";
- print " \n";
- }
- $db->free($resql);
- } else {
- dol_print_error($db);
- }
-
- $formconfirm = '';
-
- // Save button
- if ($action != 'add_paiement') {
- $checkboxlabel = $langs->trans("ClosePaidInvoicesAutomatically");
- if ($facture->type == Facture::TYPE_CREDIT_NOTE) {
- $checkboxlabel = $langs->trans("ClosePaidCreditNotesAutomatically");
- }
- $buttontitle = $langs->trans('ToMakePayment');
- if ($facture->type == Facture::TYPE_CREDIT_NOTE) {
- $buttontitle = $langs->trans('ToMakePaymentBack');
- }
-
- print '
';
- print '';
- /*if (isModEnabled('prelevement')) {
- $langs->load("withdrawals");
- if (getDolGlobalString('WITHDRAW_DISABLE_AUTOCREATE_ONPAYMENTS')) {
- print ' '.$langs->trans("IfInvoiceNeedOnWithdrawPaymentWontBeClosed");
+ if ($deposits) {
+ print '+'.price($deposits).'';
}
- }*/
- print '
';
- print ' ';
- }
+ print ' | ';
- // Form to confirm payment
- if ($action == 'add_paiement') {
- $preselectedchoice = $addwarning ? 'no' : 'yes';
+ // Remain to take or to pay back
+ print '';
+ print price($sign * (float) $remaintopay);
+ if (isModEnabled('prelevement')) {
+ $numdirectdebitopen = 0;
+ $totaldirectdebit = 0;
+ $sql = "SELECT COUNT(pfd.rowid) as nb, SUM(pfd.amount) as amount";
+ $sql .= " FROM ".MAIN_DB_PREFIX."prelevement_demande as pfd";
+ $sql .= " WHERE fk_facture = ".((int) $objp->facid);
+ $sql .= " AND pfd.traite = 0";
+ $sql .= " AND pfd.ext_payment_id IS NULL";
- print ' ';
- $text = '';
- if (!empty($totalpayment)) {
- $text = $langs->trans('ConfirmCustomerPayment', $totalpayment, $langs->transnoentitiesnoconv("Currency".$conf->currency));
+ $result_sql = $db->query($sql);
+ if ($result_sql) {
+ $obj = $db->fetch_object($result_sql);
+ $numdirectdebitopen = $obj->nb;
+ $totaldirectdebit = $obj->amount;
+ } else {
+ dol_print_error($db);
+ }
+ if ($numdirectdebitopen) {
+ $langs->load("withdrawals");
+ print img_warning($langs->trans("WarningSomeDirectDebitOrdersAlreadyExists", $numdirectdebitopen, price(price2num($totaldirectdebit, 'MT'), 0, $langs, 1, -1, -1, $conf->currency)), '', 'classfortooltip');
+ }
+ }
+ print ' | ';
+ //$test= price(price2num($objp->total_ttc - $paiement - $creditnotes - $deposits));
+
+ // Amount
+ print '';
+
+ // Add remind amount
+ $namef = 'amount_'.$objp->facid;
+ $nameRemain = 'remain_'.$objp->facid;
+
+ if ($action != 'add_paiement') {
+ if (!empty($conf->use_javascript_ajax)) {
+ print img_picto("Auto fill", 'rightarrow', "class='AutoFillAmount' data-rowname='".$namef."' data-value='".($sign * (float) $remaintopay)."'");
+ }
+ print '';
+ print '';
+ } else {
+ print '';
+ print '';
+ }
+ print " | ";
+
+ $parameters = array();
+ $reshook = $hookmanager->executeHooks('printFieldListValue', $parameters, $objp, $action); // Note that $action and $object may have been modified by hook
+
+ // Warning
+ print '';
+ //print "xx".$amounts[$invoice->id]."-".$amountsresttopay[$invoice->id]." ";
+ if (!empty($amounts[$invoice->id]) && (abs((float) $amounts[$invoice->id]) > abs((float) $amountsresttopay[$invoice->id]))
+ || !empty($multicurrency_amounts[$invoice->id]) && (abs((float) $multicurrency_amounts[$invoice->id]) > abs((float) $multicurrency_amountsresttopay[$invoice->id]))) {
+ print ' '.img_warning($langs->trans("PaymentHigherThanReminderToPay"));
+ }
+ print ' | ';
+
+ print "
\n";
+
+ $total_ttc += $objp->total_ttc;
+ $totalrecu += $paiement;
+ $totalrecucreditnote += $creditnotes;
+ $totalrecudeposits += $deposits;
+ $i++;
}
- if (!empty($multicurrency_totalpayment)) {
- $text .= '
'.$langs->trans('ConfirmCustomerPayment', $multicurrency_totalpayment, $langs->transnoentitiesnoconv("paymentInInvoiceCurrency"));
+
+ if ($i > 1) {
+ // Print total
+ print '
';
- }
- $formconfirm = $form->formconfirm($_SERVER['PHP_SELF'].'?facid='.$facture->id.'&socid='.$facture->socid.'&type='.$facture->type, $langs->trans('ReceivedCustomersPayments'), $text, 'confirm_paiement', $formquestion, $preselectedchoice);
+ print "