Merge pull request #8821 from aspangaro/8.0-b26
Fix Loan : Move to Loadlangs / Remove oldcode (calc) / Presentation / Small problems
This commit is contained in:
commit
02803f9284
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2016 Laurent Destailleur <eldy@users.sourceforge.net>
|
/* Copyright (C) 2016 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
* Copyright (C) 2016 Alexandre Spangaro <aspangaro@zendsi.com>
|
* Copyright (C) 2016-2018 Alexandre Spangaro <aspangaro@zendsi.com>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@ -1,12 +1,12 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2007-2010 Laurent Destailleur <eldy@users.sourceforge.net>
|
/* Copyright (C) 2007-2010 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
* Copyright (C) 2007-2010 Jean Heimburger <jean@tiaris.info>
|
* Copyright (C) 2007-2010 Jean Heimburger <jean@tiaris.info>
|
||||||
* Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es>
|
* Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es>
|
||||||
* Copyright (C) 2012 Regis Houssin <regis.houssin@capnetworks.com>
|
* Copyright (C) 2012 Regis Houssin <regis.houssin@capnetworks.com>
|
||||||
* Copyright (C) 2013 Christophe Battarel <christophe.battarel@altairis.fr>
|
* Copyright (C) 2013 Christophe Battarel <christophe.battarel@altairis.fr>
|
||||||
* Copyright (C) 2013-2017 Alexandre Spangaro <aspangaro@zendsi.com>
|
* Copyright (C) 2013-2018 Alexandre Spangaro <aspangaro@zendsi.com>
|
||||||
* Copyright (C) 2013-2014 Florian Henry <florian.henry@open-concept.pro>
|
* Copyright (C) 2013-2014 Florian Henry <florian.henry@open-concept.pro>
|
||||||
* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
|
* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
|
||||||
* Copyright (C) 2017 Frédéric France <frederic.france@netlogic.fr>
|
* Copyright (C) 2017 Frédéric France <frederic.france@netlogic.fr>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
@ -24,9 +24,9 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \file htdocs/accountancy/journal/bankjournal.php
|
* \file htdocs/accountancy/journal/bankjournal.php
|
||||||
* \ingroup Advanced accountancy
|
* \ingroup Advanced accountancy
|
||||||
* \brief Page with bank journal
|
* \brief Page with bank journal
|
||||||
*/
|
*/
|
||||||
require '../../main.inc.php';
|
require '../../main.inc.php';
|
||||||
require_once DOL_DOCUMENT_ROOT . '/core/lib/report.lib.php';
|
require_once DOL_DOCUMENT_ROOT . '/core/lib/report.lib.php';
|
||||||
@ -53,8 +53,10 @@ require_once DOL_DOCUMENT_ROOT . '/expensereport/class/expensereport.class.php';
|
|||||||
require_once DOL_DOCUMENT_ROOT . '/expensereport/class/paymentexpensereport.class.php';
|
require_once DOL_DOCUMENT_ROOT . '/expensereport/class/paymentexpensereport.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT . '/compta/bank/class/paymentvarious.class.php';
|
require_once DOL_DOCUMENT_ROOT . '/compta/bank/class/paymentvarious.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT . '/compta/bank/class/account.class.php';
|
require_once DOL_DOCUMENT_ROOT . '/compta/bank/class/account.class.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT . '/loan/class/loan.class.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT . '/loan/class/paymentloan.class.php';
|
||||||
|
|
||||||
$langs->loadLangs(array("companies","other","compta","banks",'bills','donations',"accountancy","trips","salaries","hrm"));
|
$langs->loadLangs(array("companies","other","compta","banks","bills","donations","loan","accountancy","trips","salaries","hrm"));
|
||||||
|
|
||||||
// Multi journal
|
// Multi journal
|
||||||
$id_journal = GETPOST('id_journal', 'int');
|
$id_journal = GETPOST('id_journal', 'int');
|
||||||
@ -143,6 +145,7 @@ $paymentvatstatic = new TVA($db);
|
|||||||
$paymentsalstatic = new PaymentSalary($db);
|
$paymentsalstatic = new PaymentSalary($db);
|
||||||
$paymentexpensereportstatic = new PaymentExpenseReport($db);
|
$paymentexpensereportstatic = new PaymentExpenseReport($db);
|
||||||
$paymentvariousstatic = new PaymentVarious($db);
|
$paymentvariousstatic = new PaymentVarious($db);
|
||||||
|
$paymentloanstatic = new PaymentLoan($db);
|
||||||
|
|
||||||
// Get code of finance journal
|
// Get code of finance journal
|
||||||
$accountingjournalstatic = new AccountingJournal($db);
|
$accountingjournalstatic = new AccountingJournal($db);
|
||||||
@ -254,7 +257,7 @@ if ($result) {
|
|||||||
// Now loop on each link of record in bank.
|
// Now loop on each link of record in bank.
|
||||||
foreach ($links as $key => $val) {
|
foreach ($links as $key => $val) {
|
||||||
|
|
||||||
if (in_array($links[$key]['type'], array('sc', 'payment_sc', 'payment', 'payment_supplier', 'payment_vat', 'payment_expensereport', 'banktransfert', 'payment_donation', 'payment_salary', 'payment_various')))
|
if (in_array($links[$key]['type'], array('sc', 'payment_sc', 'payment', 'payment_supplier', 'payment_vat', 'payment_expensereport', 'banktransfert', 'payment_donation', 'payment_loan', 'payment_salary', 'payment_various')))
|
||||||
{
|
{
|
||||||
// So we excluded 'company' and 'user' here. We want only payment lines
|
// So we excluded 'company' and 'user' here. We want only payment lines
|
||||||
|
|
||||||
@ -358,6 +361,13 @@ if ($result) {
|
|||||||
$paymentvariousstatic->fetch($paymentvariousstatic->id);
|
$paymentvariousstatic->fetch($paymentvariousstatic->id);
|
||||||
$account_various = (! empty($paymentvariousstatic->accountancy_code) ? $paymentvariousstatic->accountancy_code : 'NotDefined'); // NotDefined is a reserved word
|
$account_various = (! empty($paymentvariousstatic->accountancy_code) ? $paymentvariousstatic->accountancy_code : 'NotDefined'); // NotDefined is a reserved word
|
||||||
$tabtp[$obj->rowid][$account_various] += $obj->amount;
|
$tabtp[$obj->rowid][$account_various] += $obj->amount;
|
||||||
|
} else if ($links[$key]['type'] == 'payment_loan') {
|
||||||
|
$paymentloanstatic->id = $links[$key]['url_id'];
|
||||||
|
$paymentloanstatic->ref = $links[$key]['url_id'];
|
||||||
|
$paymentloanstatic->fk_loan = $links[$key]['url_id'];
|
||||||
|
$tabpay[$obj->rowid]["lib"] .= ' ' . $paymentloanstatic->getNomUrl(2);
|
||||||
|
$tabpay[$obj->rowid]["paymentloanid"] = $paymentloanstatic->id;
|
||||||
|
//$tabtp[$obj->rowid][$account_pay_loan] += $obj->amount;
|
||||||
} else if ($links[$key]['type'] == 'banktransfert') {
|
} else if ($links[$key]['type'] == 'banktransfert') {
|
||||||
$tabpay[$obj->rowid]["lib"] .= ' ' . $langs->trans("BankTransfer");
|
$tabpay[$obj->rowid]["lib"] .= ' ' . $langs->trans("BankTransfer");
|
||||||
$tabtp[$obj->rowid][$account_transfer] += $obj->amount;
|
$tabtp[$obj->rowid][$account_transfer] += $obj->amount;
|
||||||
@ -548,6 +558,11 @@ if (! $error && $action == 'writebookkeeping') {
|
|||||||
$bookkeeping->subledger_label = '';
|
$bookkeeping->subledger_label = '';
|
||||||
$bookkeeping->numero_compte = $k;
|
$bookkeeping->numero_compte = $k;
|
||||||
$bookkeeping->label_compte = '';
|
$bookkeeping->label_compte = '';
|
||||||
|
} else if ($tabtype[$key] == 'payment_loan') {
|
||||||
|
$bookkeeping->subledger_account = '';
|
||||||
|
$bookkeeping->subledger_label = '';
|
||||||
|
$bookkeeping->numero_compte = $k;
|
||||||
|
$bookkeeping->label_compte = '';
|
||||||
} else if ($tabtype[$key] == 'payment_various') {
|
} else if ($tabtype[$key] == 'payment_various') {
|
||||||
$bookkeeping->subledger_account = '';
|
$bookkeeping->subledger_account = '';
|
||||||
$bookkeeping->subledger_label = '';
|
$bookkeeping->subledger_label = '';
|
||||||
@ -713,8 +728,8 @@ if ($action == 'exportcsv') { // ISO and not UTF8 !
|
|||||||
print '"' . $langs->trans("LedgerAccount") . '"' . $sep;
|
print '"' . $langs->trans("LedgerAccount") . '"' . $sep;
|
||||||
print '"' . $langs->trans("SubledgerAccount") . '"' . $sep;
|
print '"' . $langs->trans("SubledgerAccount") . '"' . $sep;
|
||||||
print '"' . $langs->trans("Label"). '"' . $sep;
|
print '"' . $langs->trans("Label"). '"' . $sep;
|
||||||
print '"' . $langs->trans("Amount") . '"' . $sep;
|
print '"' . $langs->trans("Debit") . '"' . $sep;
|
||||||
print '"' . $langs->trans("Amount") . '"' . $sep;
|
print '"' . $langs->trans("Credit") . '"' . $sep;
|
||||||
print '"' . $langs->trans("Journal") . '"' . $sep;
|
print '"' . $langs->trans("Journal") . '"' . $sep;
|
||||||
print '"' . $langs->trans("Note") . '"' . $sep;
|
print '"' . $langs->trans("Note") . '"' . $sep;
|
||||||
print "\n";
|
print "\n";
|
||||||
@ -822,6 +837,7 @@ if (empty($action) || $action == 'view') {
|
|||||||
$expensereportstatic = new ExpenseReport($db);
|
$expensereportstatic = new ExpenseReport($db);
|
||||||
$vatstatic = new Tva($db);
|
$vatstatic = new Tva($db);
|
||||||
$donationstatic = new Don($db);
|
$donationstatic = new Don($db);
|
||||||
|
$loanstatic = new Loan($db);
|
||||||
$salarystatic = new PaymentSalary($db);
|
$salarystatic = new PaymentSalary($db);
|
||||||
$variousstatic = new PaymentVarious($db);
|
$variousstatic = new PaymentVarious($db);
|
||||||
|
|
||||||
@ -893,7 +909,7 @@ if (empty($action) || $action == 'view') {
|
|||||||
print '<br>';
|
print '<br>';
|
||||||
|
|
||||||
$i = 0;
|
$i = 0;
|
||||||
print '<div class="div-table-responsive">';
|
print '<div class="div-table-responsive">';
|
||||||
print "<table class=\"noborder\" width=\"100%\">";
|
print "<table class=\"noborder\" width=\"100%\">";
|
||||||
print "<tr class=\"liste_titre\">";
|
print "<tr class=\"liste_titre\">";
|
||||||
print "<td></td>";
|
print "<td></td>";
|
||||||
@ -1119,6 +1135,9 @@ function getSourceDocRef($val, $typerecord)
|
|||||||
if ($ref == '(ExpenseReportPayment)') {
|
if ($ref == '(ExpenseReportPayment)') {
|
||||||
$ref = $langs->trans('Employee');
|
$ref = $langs->trans('Employee');
|
||||||
}
|
}
|
||||||
|
if ($ref == '(LoanPayment)') {
|
||||||
|
$ref = $langs->trans('Loan');
|
||||||
|
}
|
||||||
if ($ref == '(payment_salary)') {
|
if ($ref == '(payment_salary)') {
|
||||||
$ref = $langs->trans('Employee');
|
$ref = $langs->trans('Employee');
|
||||||
}
|
}
|
||||||
@ -1173,6 +1192,13 @@ function getSourceDocRef($val, $typerecord)
|
|||||||
$sqlmid .= " WHERE payd.fk_donation=" . $val["paymentdonationid"];
|
$sqlmid .= " WHERE payd.fk_donation=" . $val["paymentdonationid"];
|
||||||
$ref = $langs->trans("Donation");
|
$ref = $langs->trans("Donation");
|
||||||
}
|
}
|
||||||
|
elseif ($typerecord == 'payment_loan')
|
||||||
|
{
|
||||||
|
$sqlmid = 'SELECT l.rowid as ref';
|
||||||
|
$sqlmid .= " FROM " . MAIN_DB_PREFIX . "payment_loan as l";
|
||||||
|
$sqlmid .= " WHERE l.rowid=" . $val["paymentloanid"];
|
||||||
|
$ref = $langs->trans("LoanPayment");
|
||||||
|
}
|
||||||
elseif ($typerecord == 'payment_various')
|
elseif ($typerecord == 'payment_various')
|
||||||
{
|
{
|
||||||
$sqlmid = 'SELECT v.rowid as ref';
|
$sqlmid = 'SELECT v.rowid as ref';
|
||||||
|
|||||||
@ -943,7 +943,6 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
|
|||||||
$newmenu->add("/loan/index.php?leftmenu=tax_loan&mainmenu=billing",$langs->trans("Loans"),1,$user->rights->loan->read, '', $mainmenu, 'tax_loan');
|
$newmenu->add("/loan/index.php?leftmenu=tax_loan&mainmenu=billing",$langs->trans("Loans"),1,$user->rights->loan->read, '', $mainmenu, 'tax_loan');
|
||||||
if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_loan/i',$leftmenu)) $newmenu->add("/loan/card.php?leftmenu=tax_loan&action=create",$langs->trans("NewLoan"),2,$user->rights->loan->write);
|
if ($usemenuhider || empty($leftmenu) || preg_match('/^tax_loan/i',$leftmenu)) $newmenu->add("/loan/card.php?leftmenu=tax_loan&action=create",$langs->trans("NewLoan"),2,$user->rights->loan->write);
|
||||||
//if (empty($leftmenu) || preg_match('/^tax_loan/i',$leftmenu)) $newmenu->add("/loan/payment/list.php?leftmenu=tax_loan",$langs->trans("Payments"),2,$user->rights->loan->read);
|
//if (empty($leftmenu) || preg_match('/^tax_loan/i',$leftmenu)) $newmenu->add("/loan/payment/list.php?leftmenu=tax_loan",$langs->trans("Payments"),2,$user->rights->loan->read);
|
||||||
if (($usemenuhider || empty($leftmenu) || preg_match('/^tax_loan/i',$leftmenu)) && ! empty($conf->global->LOAN_SHOW_CALCULATOR)) $newmenu->add("/loan/calc.php?leftmenu=tax_loan",$langs->trans("Calculator"),2,$user->rights->loan->calc);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Various payment
|
// Various payment
|
||||||
|
|||||||
@ -10,6 +10,7 @@ LoanCapital=Capital
|
|||||||
Insurance=Insurance
|
Insurance=Insurance
|
||||||
Interest=Interest
|
Interest=Interest
|
||||||
Nbterms=Number of terms
|
Nbterms=Number of terms
|
||||||
|
Term=Term
|
||||||
LoanAccountancyCapitalCode=Accounting account capital
|
LoanAccountancyCapitalCode=Accounting account capital
|
||||||
LoanAccountancyInsuranceCode=Accounting account insurance
|
LoanAccountancyInsuranceCode=Accounting account insurance
|
||||||
LoanAccountancyInterestCode=Accounting account interest
|
LoanAccountancyInterestCode=Accounting account interest
|
||||||
@ -17,39 +18,14 @@ ConfirmDeleteLoan=Confirm deleting this loan
|
|||||||
LoanDeleted=Loan Deleted Successfully
|
LoanDeleted=Loan Deleted Successfully
|
||||||
ConfirmPayLoan=Confirm classify paid this loan
|
ConfirmPayLoan=Confirm classify paid this loan
|
||||||
LoanPaid=Loan Paid
|
LoanPaid=Loan Paid
|
||||||
# Calc
|
|
||||||
LoanCalc=Bank Loans Calculator
|
|
||||||
PurchaseFinanceInfo=Purchase & Financing Information
|
|
||||||
SalePriceOfAsset=Sale Price of Asset
|
|
||||||
PercentageDown=Percentage Down
|
|
||||||
LengthOfMortgage=Duration of loan
|
|
||||||
AnnualInterestRate=Annual Interest Rate
|
|
||||||
ExplainCalculations=Explain Calculations
|
|
||||||
ShowMeCalculationsAndAmortization=Show me the calculations and amortization
|
|
||||||
MortgagePaymentInformation=Mortgage Payment Information
|
|
||||||
DownPayment=Down Payment
|
|
||||||
DownPaymentDesc=The <b>down payment</b> = The price of the home multiplied by the percentage down divided by 100 (for 5% down becomes 5/100 or 0.05)
|
|
||||||
InterestRateDesc=The <b>interest rate</b> = The annual interest percentage divided by 100
|
|
||||||
MonthlyFactorDesc=The <b>monthly factor</b> = The result of the following formula
|
|
||||||
MonthlyInterestRateDesc=The <b>monthly interest rate</b> = The annual interest rate divided by 12 (for the 12 months in a year)
|
|
||||||
MonthTermDesc=The <b>month term</b> of the loan in months = The number of years you've taken the loan out for times 12
|
|
||||||
MonthlyPaymentDesc=The montly payment is figured out using the following formula
|
|
||||||
AmortizationPaymentDesc=The <a href="#amortization">amortization</a> breaks down how much of your monthly payment goes towards the bank's interest, and how much goes into paying off the principal of your loan.
|
|
||||||
AmountFinanced=Amount Financed
|
|
||||||
AmortizationMonthlyPaymentOverYears=Amortization For Monthly Payment: <b>%s</b> over %s years
|
|
||||||
Totalsforyear=Totals for year
|
|
||||||
MonthlyPayment=Monthly Payment
|
|
||||||
LoanCalcDesc=This <b>mortgage calculator</b> can be used to figure out monthly payments of a loaning, based on the amount borrowed, the term of the loan desired and the interest rate.<br> This calculator includes also PMI (Private Mortgage Insurance) for loans where less than 20%% is put as a down payment. Also taken into consideration are the town property taxes, and their effect on the total monthly mortgage payment.<br>
|
|
||||||
GoToInterest=%s will go towards INTEREST
|
|
||||||
GoToPrincipal=%s will go towards PRINCIPAL
|
|
||||||
YouWillSpend=You will spend %s in year %s
|
|
||||||
ListLoanAssociatedProject=List of loan associated with the project
|
ListLoanAssociatedProject=List of loan associated with the project
|
||||||
AddLoan=Create loan
|
AddLoan=Create loan
|
||||||
|
FinancialCommitment=Financial commitment
|
||||||
|
InterestAmount=Interest
|
||||||
|
CapitalRemain=Capital remain
|
||||||
# Admin
|
# Admin
|
||||||
ConfigLoan=Configuration of the module loan
|
ConfigLoan=Configuration of the module loan
|
||||||
LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Accounting account capital by default
|
LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Accounting account capital by default
|
||||||
LOAN_ACCOUNTING_ACCOUNT_INTEREST=Accounting account interest by default
|
LOAN_ACCOUNTING_ACCOUNT_INTEREST=Accounting account interest by default
|
||||||
LOAN_ACCOUNTING_ACCOUNT_INSURANCE=Accounting account insurance by default
|
LOAN_ACCOUNTING_ACCOUNT_INSURANCE=Accounting account insurance by default
|
||||||
FinancialCommitment=Financial commitment
|
|
||||||
CreateCalcSchedule=Edit financial commitment
|
CreateCalcSchedule=Edit financial commitment
|
||||||
InterestAmount=Interest amount
|
|
||||||
|
|||||||
@ -1,393 +0,0 @@
|
|||||||
<?php
|
|
||||||
/* Copyright (C) 2002 David Tufts <http://dave.imarc.net>
|
|
||||||
* Copyright (C) 2014 Alexandre Spangaro <aspangaro.dolibarr@gmail.com>
|
|
||||||
* Copyright (C) 2015 Frederic France <frederic.france@free.fr>
|
|
||||||
*
|
|
||||||
* 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 3 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/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
require '../main.inc.php';
|
|
||||||
|
|
||||||
$langs->load("loan");
|
|
||||||
|
|
||||||
/* --------------------------------------------------- *
|
|
||||||
* Set Form DEFAULT values
|
|
||||||
* --------------------------------------------------- */
|
|
||||||
$default_sale_price = "150000";
|
|
||||||
$default_annual_interest_percent = 7.0;
|
|
||||||
$default_year_term = 30;
|
|
||||||
$default_down_percent = 10;
|
|
||||||
$default_show_progress = true;
|
|
||||||
|
|
||||||
/* --------------------------------------------------- *
|
|
||||||
* Initialize Variables
|
|
||||||
* --------------------------------------------------- */
|
|
||||||
$sale_price = 0;
|
|
||||||
$annual_interest_percent = 0;
|
|
||||||
$year_term = 0;
|
|
||||||
$down_percent = 0;
|
|
||||||
$this_year_interest_paid = 0;
|
|
||||||
$this_year_principal_paid = 0;
|
|
||||||
$form_complete = false;
|
|
||||||
$show_progress = false;
|
|
||||||
$monthly_payment = false;
|
|
||||||
$show_progress = false;
|
|
||||||
$error = false;
|
|
||||||
|
|
||||||
/* --------------------------------------------------- *
|
|
||||||
* Set the USER INPUT values
|
|
||||||
* --------------------------------------------------- */
|
|
||||||
if (isset($_REQUEST['form_complete'])) {
|
|
||||||
$sale_price = GETPOST('sale_price');
|
|
||||||
$annual_interest_percent = GETPOST('annual_interest_percent');
|
|
||||||
$year_term = GETPOST('year_term');
|
|
||||||
$down_percent = GETPOST('down_percent');
|
|
||||||
$show_progress = (isset($_REQUEST['show_progress'])) ? GETPOST('show_progress') : false;
|
|
||||||
$form_complete = GETPOST('form_complete');
|
|
||||||
}
|
|
||||||
|
|
||||||
// This function does the actual mortgage calculations
|
|
||||||
// by plotting a PVIFA (Present Value Interest Factor of Annuity)
|
|
||||||
// table...
|
|
||||||
function get_interest_factor($year_term, $monthly_interest_rate) {
|
|
||||||
global $base_rate;
|
|
||||||
|
|
||||||
$factor = 0;
|
|
||||||
$base_rate = 1 + $monthly_interest_rate;
|
|
||||||
$denominator = $base_rate;
|
|
||||||
for ($i=0; $i < ($year_term * 12); $i++) {
|
|
||||||
$factor += (1 / $denominator);
|
|
||||||
$denominator *= $base_rate;
|
|
||||||
}
|
|
||||||
return $factor;
|
|
||||||
}
|
|
||||||
|
|
||||||
// If the form is complete, we'll start the math
|
|
||||||
if ($form_complete) {
|
|
||||||
// We'll set all the numeric values to JUST
|
|
||||||
// numbers - this will delete any dollars signs,
|
|
||||||
// commas, spaces, and letters, without invalidating
|
|
||||||
// the value of the number
|
|
||||||
$sale_price = preg_replace( "[^0-9.]", "", $sale_price);
|
|
||||||
$annual_interest_percent = preg_replace( "[^0-9.]", "", $annual_interest_percent);
|
|
||||||
$year_term = preg_replace( "[^0-9.]", "", $year_term);
|
|
||||||
$down_percent = preg_replace( "[^0-9.]", "", $down_percent);
|
|
||||||
|
|
||||||
if ((float) $year_term <= 0) {
|
|
||||||
$errors[] = "You must enter a <b>Sale Price of Home</b>";
|
|
||||||
}
|
|
||||||
if ((float) $sale_price <= 0) {
|
|
||||||
$errors[] = "You must enter a <b>Length of Mortgage</b>";
|
|
||||||
}
|
|
||||||
if ((float) $annual_interest_percent <= 0) {
|
|
||||||
$errors[] = "You must enter an <b>Annual Interest Rate</b>";
|
|
||||||
}
|
|
||||||
if (!$errors) {
|
|
||||||
$month_term = $year_term * 12;
|
|
||||||
$down_payment = $sale_price * ($down_percent / 100);
|
|
||||||
$annual_interest_rate = $annual_interest_percent / 100;
|
|
||||||
$monthly_interest_rate = $annual_interest_rate / 12;
|
|
||||||
$financing_price = $sale_price - $down_payment;
|
|
||||||
$monthly_factor = get_interest_factor($year_term, $monthly_interest_rate);
|
|
||||||
$monthly_payment = $financing_price / $monthly_factor;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (!$sale_price) { $sale_price = $default_sale_price; }
|
|
||||||
if (!$annual_interest_percent) { $annual_interest_percent = $default_annual_interest_percent; }
|
|
||||||
if (!$year_term) { $year_term = $default_year_term; }
|
|
||||||
if (!$down_percent) { $down_percent = $default_down_percent; }
|
|
||||||
if (!$show_progress) { $show_progress = $default_show_progress; }
|
|
||||||
}
|
|
||||||
|
|
||||||
if (! empty($errors)) {
|
|
||||||
setEventMessages('', $errors, 'errors');
|
|
||||||
$form_complete = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* View
|
|
||||||
*/
|
|
||||||
|
|
||||||
llxHeader();
|
|
||||||
|
|
||||||
print load_fiche_titre($langs->trans("LoanCalc"), '', 'title_accountancy.png');
|
|
||||||
|
|
||||||
print $langs->trans('LoanCalcDesc');
|
|
||||||
|
|
||||||
print '<form method="GET" name="information" action="'.$_SERVER['PHP_SELF'].'">';
|
|
||||||
print '<input type="hidden" name="form_complete" value="1"><br>';
|
|
||||||
|
|
||||||
dol_fiche_head('');
|
|
||||||
|
|
||||||
print '<table class="noborder centpercent">';
|
|
||||||
//print '<tr>';
|
|
||||||
//print '<td align="right"><img src="/images/clear.gif" width="225" height="1" border="0" alt=""></td>';
|
|
||||||
//print '<td align="smalltext" width="100%"><img src="/images/clear.gif" width="250" height="1" border="0" alt=""></td>';
|
|
||||||
//print '</tr>';
|
|
||||||
print '<tr>';
|
|
||||||
print '<td align="center" colspan="2"><b>'.$langs->trans('PurchaseFinanceInfo').'</b></td>';
|
|
||||||
print '</tr>';
|
|
||||||
print '<tr>';
|
|
||||||
print '<td align="right">'.$langs->trans('SalePriceOfAsset').':</td>';
|
|
||||||
print '<td><input type="text" size="10" name="sale_price" value="'.$sale_price.'"> '.$langs->trans("Currency".$conf->currency).'</td>';print '</tr>';
|
|
||||||
print '<tr>';
|
|
||||||
print '<td align="right">'.$langs->trans('PercentageDown').':</td>';
|
|
||||||
print '<td><input type="text" size="5" name="down_percent" value="'.$down_percent.'">%</td>';
|
|
||||||
print '</tr>';
|
|
||||||
print '<tr>';
|
|
||||||
print '<td align="right">'.$langs->trans('LengthOfMortgage').':</td>';
|
|
||||||
print '<td><input type="text" size="3" name="year_term" value="'.$year_term.'"> '.$langs->trans("years").'</td>';
|
|
||||||
print '</tr>';
|
|
||||||
print '<tr>';
|
|
||||||
print '<td align="right">'.$langs->trans('AnnualInterestRate').':</td>';
|
|
||||||
print '<td><input type="text" size="5" name="annual_interest_percent" value="'.$annual_interest_percent.'">%</td>';
|
|
||||||
print '</tr>';
|
|
||||||
print '<tr>';
|
|
||||||
print '<td align="right">'.$langs->trans('ExplainCalculations').':</td>';
|
|
||||||
|
|
||||||
if (! empty($show_progress))
|
|
||||||
{
|
|
||||||
print '<td><input type="checkbox" name="show_progress" value="1" checked>'.$langs->trans('ShowMeCalculationsAndAmortization').'</td>';
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
print '<td><input type="checkbox" name="show_progress" value="1">'.$langs->trans('ShowMeCalculationsAndAmortization').'</td>';
|
|
||||||
}
|
|
||||||
|
|
||||||
print '</tr>';
|
|
||||||
print '</table>';
|
|
||||||
|
|
||||||
dol_fiche_end();
|
|
||||||
|
|
||||||
print '<center><input class="button" type="submit" value="'.$langs->trans("Calculate").'"> ';
|
|
||||||
print '<input class="button" type="submit" name="cancel" value="'.$langs->trans("Cancel").'"></center>';
|
|
||||||
|
|
||||||
// If the form has already been calculated, the $down_payment
|
|
||||||
// and $monthly_payment variables will be figured out, so we can show them in this table
|
|
||||||
if ($form_complete && $monthly_payment)
|
|
||||||
{
|
|
||||||
print '<br>';
|
|
||||||
print '<table cellpadding="2" cellspacing="0" border="0" width="100%">';
|
|
||||||
print '<tr valign="top">';
|
|
||||||
print '<td align="center" colspan="2" bgcolor="#000000"><font color="#ffffff"><b>'.$langs->trans('MortgagePaymentInformation').'</b></font></td>';
|
|
||||||
print '</tr>';
|
|
||||||
print '<tr valign="top" bgcolor="#eeeeee">';
|
|
||||||
print '<td align="right">'.$langs->trans('DownPayment').':</td>';
|
|
||||||
print '<td><b>' . number_format($down_payment, "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency) . '</b></td>';
|
|
||||||
print '</tr>';
|
|
||||||
print '<tr valign="top" bgcolor="#eeeeee">';
|
|
||||||
print '<td align="right">'.$langs->trans('AmountFinanced').':</td>';
|
|
||||||
print '<td><b>' . number_format($financing_price, "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency) . '</b></td>';
|
|
||||||
print '</tr>';
|
|
||||||
print '<tr valign="top" bgcolor="#cccccc">';
|
|
||||||
print '<td align="right">'.$langs->trans('MonthlyPayment').':</td>';
|
|
||||||
print '<td><b>' . number_format($monthly_payment, "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency) . '</b><br><font>(Principal & Interest ONLY)</font></td>';
|
|
||||||
print '</tr>';
|
|
||||||
|
|
||||||
if ($down_percent < 20)
|
|
||||||
{
|
|
||||||
$pmi_per_month = 55 * ($financing_price / 100000);
|
|
||||||
|
|
||||||
/*print '<tr valign="top" bgcolor="#FFFFCC">';
|
|
||||||
print '<td align="right"> </td>';
|
|
||||||
print '<td>';
|
|
||||||
print '<br>';
|
|
||||||
echo 'Since you are putting LESS than 20% down, you will need to pay PMI
|
|
||||||
(<a href="http://www.google.com/search?hl=en&q=private+mortgage+insurance">Private Mortgage Insurance</a>), which tends
|
|
||||||
to be about $55 per month for every $100,000 financed (until you have paid off 20% of your loan). This could add
|
|
||||||
'."\$" . number_format($pmi_per_month, "2", ".", ",").' to your monthly payment.';
|
|
||||||
print '</td>';
|
|
||||||
print '</tr>';*/
|
|
||||||
print '<tr valign="top" bgcolor="#FFFF99">';
|
|
||||||
print '<td align="right">'.$langs->trans('MonthlyPayment').':</td>';
|
|
||||||
print '<td><b>' . number_format(($monthly_payment + $pmi_per_month), "2", ".", ",") . $langs->trans("Currency".$conf->currency) . '</b><br><font>';
|
|
||||||
print '(Principal & Interest, and PMI)</td>';
|
|
||||||
print '</tr>';
|
|
||||||
}
|
|
||||||
|
|
||||||
/*print '<tr valign="top" bgcolor="#CCCCFF">';
|
|
||||||
print '<td align="right"> </td>';
|
|
||||||
print '<td>';
|
|
||||||
print '<br>';*/
|
|
||||||
|
|
||||||
$assessed_price = ($sale_price * .85);
|
|
||||||
$residential_yearly_tax = ($assessed_price / 1000) * 14;
|
|
||||||
$residential_monthly_tax = $residential_yearly_tax / 12;
|
|
||||||
|
|
||||||
if ($pmi_per_month)
|
|
||||||
{
|
|
||||||
$pmi_text = "PMI";
|
|
||||||
}
|
|
||||||
/*echo "Residential (or Property) Taxes are a little harder to figure out... In Massachusetts, the average resedential tax rate seems
|
|
||||||
to be around $14 per year for every $1,000 of your property's assessed value.";*/
|
|
||||||
//print '<br><br>';
|
|
||||||
//print "Let's say that your property's <i>assessed value</i> is 85% of what you actually paid for it - ";
|
|
||||||
/*print number_format($assessed_price, "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency) . 'This would mean that your yearly residential taxes will be around';
|
|
||||||
print number_format($residential_yearly_tax, "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency);
|
|
||||||
print 'This could add ' . number_format($residential_monthly_tax, "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency) . 'to your monthly payment';
|
|
||||||
print '</td>';
|
|
||||||
print '</tr>';
|
|
||||||
*/
|
|
||||||
|
|
||||||
print '<tr valign="top" bgcolor="#9999FF">';
|
|
||||||
print '<td align="right">TOTAL Monthly Payment:</td>';
|
|
||||||
print '<td><b>' . number_format(($monthly_payment + $pmi_per_month + $residential_monthly_tax), "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency) . '</b><br><font>';
|
|
||||||
print '(including '.$pmi_text.')</font></td>';
|
|
||||||
print '</tr>';
|
|
||||||
}
|
|
||||||
|
|
||||||
print '</table>';
|
|
||||||
print '</form>';
|
|
||||||
|
|
||||||
// This prints the calculation progress and
|
|
||||||
// the instructions of HOW everything is figured
|
|
||||||
// out
|
|
||||||
if ($form_complete && $show_progress) {
|
|
||||||
$step = 1;
|
|
||||||
|
|
||||||
print '<br><br>';
|
|
||||||
print '<table cellpadding="5" cellspacing="0" border="1" width="100%">';
|
|
||||||
print '<tr valign="top">';
|
|
||||||
print '<td><b>'. $step++ .'</b></td>';
|
|
||||||
print '<td>';
|
|
||||||
print $langs->trans('DownPaymentDesc').'<br><br>';
|
|
||||||
print number_format($down_payment,"2",".",",") . ' ' . $langs->trans("Currency".$conf->currency) . ' = ';
|
|
||||||
print number_format($sale_price,"2",".",",") . ' ' . $langs->trans("Currency".$conf->currency) . ' X (' . $down_percent . ' / 100)';
|
|
||||||
print '</td>';
|
|
||||||
print '</tr>';
|
|
||||||
print '<tr valign="top">';
|
|
||||||
print '<td><b>' . $step++ . '</b></td>';
|
|
||||||
print '<td>';
|
|
||||||
print $langs->trans('InterestRateDesc') . '<br><br>';
|
|
||||||
print $annual_interest_rate . ' = ' . $annual_interest_percent . '% / 100';
|
|
||||||
print '</td>';
|
|
||||||
print '</tr>';
|
|
||||||
print '<tr valign="top" bgcolor="#cccccc">';
|
|
||||||
print '<td colspan="2">';
|
|
||||||
print $langs->trans('MonthlyFactorDesc') . ':';
|
|
||||||
print '</td>';
|
|
||||||
print '</tr>';
|
|
||||||
print '<tr valign="top">';
|
|
||||||
print '<td><b>' . $step++ . '</b></td>';
|
|
||||||
print '<td>';
|
|
||||||
print $langs->trans('MonthlyInterestRateDesc') . '<br><br>';
|
|
||||||
print $monthly_interest_rate . ' = ' . $annual_interest_rate . ' / 12';
|
|
||||||
print '</td>';
|
|
||||||
print '</tr>';
|
|
||||||
print '<tr valign="top">';
|
|
||||||
print '<td><b>' . $step++ . '</b></td>';
|
|
||||||
print '<td>';
|
|
||||||
print $langs->trans('MonthTermDesc') . '<br><br>';
|
|
||||||
print $month_term . ' '. $langs->trans('Months') . ' = ' . $year_term . ' '. $langs->trans('Years') . ' X 12';
|
|
||||||
print '</td>';
|
|
||||||
print '</tr>';
|
|
||||||
print '<tr valign="top">';
|
|
||||||
print '<td><b>' . $step++ . '</b></td>';
|
|
||||||
print '<td>';
|
|
||||||
print $langs->trans('MonthlyPaymentDesc') . ':<br>';
|
|
||||||
print $langs->trans('MonthlyPayment').' = ' . number_format($financing_price, "2", "", "") . ' * ';
|
|
||||||
print '(1 - ((1 + ' . number_format($monthly_interest_rate, "4", "", "") . ')';
|
|
||||||
print '<sup>-(' . $month_term . ')</sup>)))';
|
|
||||||
print '<br><br>';
|
|
||||||
print $langs->trans('AmortizationPaymentDesc');
|
|
||||||
print '</td>';
|
|
||||||
print '</tr>';
|
|
||||||
print '</table>';
|
|
||||||
print '<br>';
|
|
||||||
|
|
||||||
|
|
||||||
// Set some base variables
|
|
||||||
$principal = $financing_price;
|
|
||||||
$current_month = 1;
|
|
||||||
$current_year = 1;
|
|
||||||
|
|
||||||
// This basically, re-figures out the monthly payment, again.
|
|
||||||
$power = -($month_term);
|
|
||||||
$denom = pow((1 + $monthly_interest_rate), $power);
|
|
||||||
$monthly_payment = $principal * ($monthly_interest_rate / (1 - $denom));
|
|
||||||
|
|
||||||
print '<br><br><a name="amortization"></a>'.$langs->trans('AmortizationMonthlyPaymentOverYears', number_format($monthly_payment, "2", ".", ","), $year_term)."<br>\n";
|
|
||||||
|
|
||||||
print '<table class="noborder" width="100%">';
|
|
||||||
|
|
||||||
// This LEGEND will get reprinted every 12 months
|
|
||||||
$legend = '<tr class="liste_titre">';
|
|
||||||
$legend.= '<td class="liste_titre" align="center">' . $langs->trans("Month") . '</td>';
|
|
||||||
$legend.= '<td class="liste_titre" align="center">' . $langs->trans("Interest") . '</td>';
|
|
||||||
$legend.= '<td class="liste_titre" align="center">' . $langs->trans("LoanCapital") . '</td>';
|
|
||||||
$legend.= '<td class="liste_titre" align="center">' . $langs->trans("Position") . '</td>';
|
|
||||||
$legend.= '</tr>';
|
|
||||||
|
|
||||||
print $legend;
|
|
||||||
|
|
||||||
// Loop through and get the current month's payments for
|
|
||||||
// the length of the loan
|
|
||||||
while ($current_month <= $month_term)
|
|
||||||
{
|
|
||||||
$interest_paid = $principal * $monthly_interest_rate;
|
|
||||||
$principal_paid = $monthly_payment - $interest_paid;
|
|
||||||
$remaining_balance = $principal - $principal_paid;
|
|
||||||
|
|
||||||
$this_year_interest_paid = $this_year_interest_paid + $interest_paid;
|
|
||||||
$this_year_principal_paid = $this_year_principal_paid + $principal_paid;
|
|
||||||
|
|
||||||
$var = !$var;
|
|
||||||
print '<tr class="oddeven">';
|
|
||||||
print '<td align="right">' . $current_month . '</td>';
|
|
||||||
print '<td align="right">' . number_format($interest_paid, "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency) . '</td>';
|
|
||||||
print '<td align="right">' . number_format($principal_paid, "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency) . '</td>';
|
|
||||||
print '<td align="right">' . number_format($remaining_balance, "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency) . '</td>';
|
|
||||||
print '</tr>';
|
|
||||||
|
|
||||||
($current_month % 12) ? ($show_legend = false) : ($show_legend = true);
|
|
||||||
|
|
||||||
if ($show_legend) {
|
|
||||||
print '<tr>';
|
|
||||||
print '<td colspan="4"><b>' . $langs->trans("Totalsforyear") . ' ' . $current_year . '</td>';
|
|
||||||
print '</tr>';
|
|
||||||
|
|
||||||
$total_spent_this_year = $this_year_interest_paid + $this_year_principal_paid;
|
|
||||||
print '<tr>';
|
|
||||||
print '<td> </td>';
|
|
||||||
print '<td colspan="3">';
|
|
||||||
print $langs->trans('YouWillSpend', number_format($total_spent_this_year, "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency), $current_year) . '<br>';
|
|
||||||
print $langs->trans('GoToInterest', number_format($this_year_interest_paid, "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency)) . '<br>';
|
|
||||||
print $langs->trans('GoToPrincipal', number_format($this_year_principal_paid, "2", ".", ",") . ' ' . $langs->trans("Currency".$conf->currency)) . '<br>';
|
|
||||||
print '</td>';
|
|
||||||
print '</tr>';
|
|
||||||
|
|
||||||
print '<tr>';
|
|
||||||
print '<td colspan="4"> <br></td>';
|
|
||||||
print '</tr>';
|
|
||||||
|
|
||||||
$current_year++;
|
|
||||||
$this_year_interest_paid = 0;
|
|
||||||
$this_year_principal_paid = 0;
|
|
||||||
|
|
||||||
if (($current_month + 6) < $month_term)
|
|
||||||
{
|
|
||||||
echo $legend;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$principal = $remaining_balance;
|
|
||||||
$current_month++;
|
|
||||||
}
|
|
||||||
print "</table>\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
llxFooter();
|
|
||||||
|
|
||||||
$db->close();
|
|
||||||
@ -1,5 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2014-2017 Alexandre Spangaro <aspangaro@zendsi.com>
|
/* Copyright (C) 2014-2018 Alexandre Spangaro <aspangaro@zendsi.com>
|
||||||
* Copyright (C) 2015 Frederic France <frederic.france@free.fr>
|
* Copyright (C) 2015 Frederic France <frederic.france@free.fr>
|
||||||
* Copyright (C) 2017 Laurent Destailleur <eldy@users.sourceforge.net>
|
* Copyright (C) 2017 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
*
|
*
|
||||||
@ -32,9 +32,7 @@ if (! empty($conf->accounting->enabled)) require_once DOL_DOCUMENT_ROOT.'/accoun
|
|||||||
require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php';
|
||||||
|
|
||||||
$langs->load("compta");
|
$langs->loadLangs(array("compta","bills","loan"));
|
||||||
$langs->load("bills");
|
|
||||||
$langs->load("loan");
|
|
||||||
|
|
||||||
$id=GETPOST('id','int');
|
$id=GETPOST('id','int');
|
||||||
$action=GETPOST('action','aZ09');
|
$action=GETPOST('action','aZ09');
|
||||||
@ -308,7 +306,7 @@ if ($action == 'create')
|
|||||||
$formproject=new FormProjets($db);
|
$formproject=new FormProjets($db);
|
||||||
|
|
||||||
// Projet associe
|
// Projet associe
|
||||||
$langs->load("projects");
|
$langs->loadLangs(array("projects"));
|
||||||
|
|
||||||
print '<tr><td>'.$langs->trans("Project").'</td><td>';
|
print '<tr><td>'.$langs->trans("Project").'</td><td>';
|
||||||
|
|
||||||
@ -444,7 +442,7 @@ if ($id > 0)
|
|||||||
// Project
|
// Project
|
||||||
if (! empty($conf->projet->enabled))
|
if (! empty($conf->projet->enabled))
|
||||||
{
|
{
|
||||||
$langs->load("projects");
|
$langs->loadLangs(array("projects"));
|
||||||
$morehtmlref.='<br>'.$langs->trans('Project') . ' ';
|
$morehtmlref.='<br>'.$langs->trans('Project') . ' ';
|
||||||
if ($user->rights->loan->write)
|
if ($user->rights->loan->write)
|
||||||
{
|
{
|
||||||
@ -699,8 +697,8 @@ if ($id > 0)
|
|||||||
print '<td>'.$langs->trans("Type").'</td>';
|
print '<td>'.$langs->trans("Type").'</td>';
|
||||||
print '<td align="right">'.$langs->trans("Insurance").'</td>';
|
print '<td align="right">'.$langs->trans("Insurance").'</td>';
|
||||||
print '<td align="right">'.$langs->trans("Interest").'</td>';
|
print '<td align="right">'.$langs->trans("Interest").'</td>';
|
||||||
print '<td align="right">'.$langs->trans("LoanCapital").'</td>';
|
print '<td align="right">'.$langs->trans("LoanCapital").'</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
while ($i < $num)
|
while ($i < $num)
|
||||||
{
|
{
|
||||||
@ -710,9 +708,9 @@ if ($id > 0)
|
|||||||
print '<td><a href="'.DOL_URL_ROOT.'/loan/payment/card.php?id='.$objp->rowid.'">'.img_object($langs->trans("Payment"),"payment").' '.$objp->rowid.'</a></td>';
|
print '<td><a href="'.DOL_URL_ROOT.'/loan/payment/card.php?id='.$objp->rowid.'">'.img_object($langs->trans("Payment"),"payment").' '.$objp->rowid.'</a></td>';
|
||||||
print '<td>'.dol_print_date($db->jdate($objp->dp),'day')."</td>\n";
|
print '<td>'.dol_print_date($db->jdate($objp->dp),'day')."</td>\n";
|
||||||
print "<td>".$objp->paiement_type.' '.$objp->num_payment."</td>\n";
|
print "<td>".$objp->paiement_type.' '.$objp->num_payment."</td>\n";
|
||||||
print '<td align="right">'.price($objp->amount_insurance, 0, $langs, 0, 0, -1, $conf->currency)."</td>\n";
|
print '<td align="right">'.price($objp->amount_insurance, 0, $outputlangs, 1, -1, -1, $conf->currency)."</td>\n";
|
||||||
print '<td align="right">'.price($objp->amount_interest, 0, $langs, 0, 0, -1, $conf->currency)."</td>\n";
|
print '<td align="right">'.price($objp->amount_interest, 0, $outputlangs, 1, -1, -1, $conf->currency)."</td>\n";
|
||||||
print '<td align="right">'.price($objp->amount_capital, 0, $langs, 0, 0, -1, $conf->currency)."</td>\n";
|
print '<td align="right">'.price($objp->amount_capital, 0, $outputlangs, 1, -1, -1, $conf->currency)."</td>\n";
|
||||||
print "</tr>";
|
print "</tr>";
|
||||||
$total_capital += $objp->amount_capital;
|
$total_capital += $objp->amount_capital;
|
||||||
$i++;
|
$i++;
|
||||||
@ -770,7 +768,7 @@ if ($id > 0)
|
|||||||
print '<div class="tabsAction">';
|
print '<div class="tabsAction">';
|
||||||
|
|
||||||
// Edit
|
// Edit
|
||||||
if ($user->rights->loan->write)
|
if ($object->paid == 0 && $user->rights->loan->write)
|
||||||
{
|
{
|
||||||
print '<a href="javascript:popEcheancier()" class="butAction">'.$langs->trans('CreateCalcSchedule').'</a>';
|
print '<a href="javascript:popEcheancier()" class="butAction">'.$langs->trans('CreateCalcSchedule').'</a>';
|
||||||
|
|
||||||
@ -790,7 +788,7 @@ if ($id > 0)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Delete
|
// Delete
|
||||||
if ($user->rights->loan->delete)
|
if ($object->paid == 0 && $user->rights->loan->delete)
|
||||||
{
|
{
|
||||||
print '<a class="butActionDelete" href="'.DOL_URL_ROOT.'/loan/card.php?id='.$object->id.'&action=delete">'.$langs->trans("Delete").'</a>';
|
print '<a class="butActionDelete" href="'.DOL_URL_ROOT.'/loan/card.php?id='.$object->id.'&action=delete">'.$langs->trans("Delete").'</a>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2014-2016 Alexandre Spangaro <aspangaro@zendsi.com>
|
/* Copyright (C) 2014-2018 Alexandre Spangaro <aspangaro@zendsi.com>
|
||||||
* Copyright (C) 2015 Frederic France <frederic.france@free.fr>
|
* Copyright (C) 2015 Frederic France <frederic.france@free.fr>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
@ -344,7 +344,7 @@ class Loan extends CommonObject
|
|||||||
$this->error=$this->db->lasterror();
|
$this->error=$this->db->lasterror();
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return label of loan status (unpaid, paid)
|
* Return label of loan status (unpaid, paid)
|
||||||
@ -369,8 +369,7 @@ class Loan extends CommonObject
|
|||||||
function LibStatut($statut,$mode=0,$alreadypaid=-1)
|
function LibStatut($statut,$mode=0,$alreadypaid=-1)
|
||||||
{
|
{
|
||||||
global $langs;
|
global $langs;
|
||||||
$langs->load('customers');
|
$langs->loadLangs(array("customers","bills"));
|
||||||
$langs->load('bills');
|
|
||||||
|
|
||||||
if ($mode == 0)
|
if ($mode == 0)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2014-2016 Alexandre Spangaro <aspangaro.dolibarr@gmail.com>
|
/* Copyright (C) 2014-2018 Alexandre Spangaro <aspangaro@zendsi.com>
|
||||||
* Copyright (C) 2015 Frederic France <frederic.france@free.fr>
|
* Copyright (C) 2015 Frederic France <frederic.france@free.fr>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
@ -17,16 +17,16 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \file htdocs/loan/class/paymentloan.class.php
|
* \file htdocs/loan/class/paymentloan.class.php
|
||||||
* \ingroup facture
|
* \ingroup loan
|
||||||
* \brief File of class to manage payment of loans
|
* \brief File of class to manage payment of loans
|
||||||
*/
|
*/
|
||||||
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php';
|
||||||
|
|
||||||
|
|
||||||
/** \class PaymentLoan
|
/** \class PaymentLoan
|
||||||
* \brief Class to manage payments of loans
|
* \brief Class to manage payments of loans
|
||||||
*/
|
*/
|
||||||
class PaymentLoan extends CommonObject
|
class PaymentLoan extends CommonObject
|
||||||
{
|
{
|
||||||
@ -37,8 +37,8 @@ class PaymentLoan extends CommonObject
|
|||||||
var $datec='';
|
var $datec='';
|
||||||
var $tms='';
|
var $tms='';
|
||||||
var $datep='';
|
var $datep='';
|
||||||
var $amounts=array(); // Array of amounts
|
var $amounts=array(); // Array of amounts
|
||||||
var $amount_capital; // Total amount of payment
|
var $amount_capital; // Total amount of payment
|
||||||
var $amount_insurance;
|
var $amount_insurance;
|
||||||
var $amount_interest;
|
var $amount_interest;
|
||||||
var $fk_typepayment;
|
var $fk_typepayment;
|
||||||
@ -65,8 +65,8 @@ class PaymentLoan extends CommonObject
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Create payment of loan into database.
|
* Create payment of loan into database.
|
||||||
* Use this->amounts to have list of lines for the payment
|
* Use this->amounts to have list of lines for the payment
|
||||||
*
|
*
|
||||||
* @param User $user User making payment
|
* @param User $user User making payment
|
||||||
* @return int <0 if KO, id of payment if OK
|
* @return int <0 if KO, id of payment if OK
|
||||||
*/
|
*/
|
||||||
@ -76,9 +76,9 @@ class PaymentLoan extends CommonObject
|
|||||||
|
|
||||||
$error=0;
|
$error=0;
|
||||||
|
|
||||||
$now=dol_now();
|
$now=dol_now();
|
||||||
|
|
||||||
// Validate parameters
|
// Validate parameters
|
||||||
if (! $this->datepaid)
|
if (! $this->datepaid)
|
||||||
{
|
{
|
||||||
$this->error='ErrorBadValueForParameter';
|
$this->error='ErrorBadValueForParameter';
|
||||||
@ -98,11 +98,11 @@ class PaymentLoan extends CommonObject
|
|||||||
if (isset($this->fk_user_creat)) $this->fk_user_creat = trim($this->fk_user_creat);
|
if (isset($this->fk_user_creat)) $this->fk_user_creat = trim($this->fk_user_creat);
|
||||||
if (isset($this->fk_user_modif)) $this->fk_user_modif = trim($this->fk_user_modif);
|
if (isset($this->fk_user_modif)) $this->fk_user_modif = trim($this->fk_user_modif);
|
||||||
|
|
||||||
$totalamount = $this->amount_capital + $this->amount_insurance + $this->amount_interest;
|
$totalamount = $this->amount_capital + $this->amount_insurance + $this->amount_interest;
|
||||||
$totalamount = price2num($totalamount);
|
$totalamount = price2num($totalamount);
|
||||||
|
|
||||||
// Check parameters
|
// Check parameters
|
||||||
if ($totalamount == 0) return -1; // Negative amounts are accepted for reject prelevement but not null
|
if ($totalamount == 0) return -1; // Negative amounts are accepted for reject prelevement but not null
|
||||||
|
|
||||||
|
|
||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
@ -127,7 +127,7 @@ class PaymentLoan extends CommonObject
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$this->error=$this->db->lasterror();
|
$this->error=$this->db->lasterror();
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -135,9 +135,9 @@ class PaymentLoan extends CommonObject
|
|||||||
|
|
||||||
if ($totalamount != 0 && ! $error)
|
if ($totalamount != 0 && ! $error)
|
||||||
{
|
{
|
||||||
$this->amount_capital=$totalamount;
|
$this->amount_capital=$totalamount;
|
||||||
$this->total=$totalamount; // deprecated
|
$this->total=$totalamount; // deprecated
|
||||||
$this->db->commit();
|
$this->db->commit();
|
||||||
return $this->id;
|
return $this->id;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -168,8 +168,8 @@ class PaymentLoan extends CommonObject
|
|||||||
$sql.= " t.amount_interest,";
|
$sql.= " t.amount_interest,";
|
||||||
$sql.= " t.fk_typepayment,";
|
$sql.= " t.fk_typepayment,";
|
||||||
$sql.= " t.num_payment,";
|
$sql.= " t.num_payment,";
|
||||||
$sql.= " t.note_private,";
|
$sql.= " t.note_private,";
|
||||||
$sql.= " t.note_public,";
|
$sql.= " t.note_public,";
|
||||||
$sql.= " t.fk_bank,";
|
$sql.= " t.fk_bank,";
|
||||||
$sql.= " t.fk_user_creat,";
|
$sql.= " t.fk_user_creat,";
|
||||||
$sql.= " t.fk_user_modif,";
|
$sql.= " t.fk_user_modif,";
|
||||||
@ -327,15 +327,15 @@ class PaymentLoan extends CommonObject
|
|||||||
|
|
||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
|
|
||||||
if (! $error)
|
if (! $error)
|
||||||
{
|
{
|
||||||
$sql = "DELETE FROM ".MAIN_DB_PREFIX."bank_url";
|
$sql = "DELETE FROM ".MAIN_DB_PREFIX."bank_url";
|
||||||
$sql.= " WHERE type='payment_loan' AND url_id=".$this->id;
|
$sql.= " WHERE type='payment_loan' AND url_id=".$this->id;
|
||||||
|
|
||||||
dol_syslog(get_class($this)."::delete", LOG_DEBUG);
|
dol_syslog(get_class($this)."::delete", LOG_DEBUG);
|
||||||
$resql = $this->db->query($sql);
|
$resql = $this->db->query($sql);
|
||||||
if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); }
|
if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); }
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! $error)
|
if (! $error)
|
||||||
{
|
{
|
||||||
@ -381,95 +381,95 @@ class PaymentLoan extends CommonObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add record into bank for payment with links between this bank record and invoices of payment.
|
* Add record into bank for payment with links between this bank record and invoices of payment.
|
||||||
* All payment properties must have been set first like after a call to create().
|
* All payment properties must have been set first like after a call to create().
|
||||||
*
|
*
|
||||||
* @param User $user Object of user making payment
|
* @param User $user Object of user making payment
|
||||||
* @param int $fk_loan Id of fk_loan to do link with this payment
|
* @param int $fk_loan Id of fk_loan to do link with this payment
|
||||||
* @param string $mode 'payment_loan'
|
* @param string $mode 'payment_loan'
|
||||||
* @param string $label Label to use in bank record
|
* @param string $label Label to use in bank record
|
||||||
* @param int $accountid Id of bank account to do link with
|
* @param int $accountid Id of bank account to do link with
|
||||||
* @param string $emetteur_nom Name of transmitter
|
* @param string $emetteur_nom Name of transmitter
|
||||||
* @param string $emetteur_banque Name of bank
|
* @param string $emetteur_banque Name of bank
|
||||||
* @return int <0 if KO, >0 if OK
|
* @return int <0 if KO, >0 if OK
|
||||||
*/
|
*/
|
||||||
function addPaymentToBank($user, $fk_loan, $mode, $label, $accountid, $emetteur_nom, $emetteur_banque)
|
function addPaymentToBank($user, $fk_loan, $mode, $label, $accountid, $emetteur_nom, $emetteur_banque)
|
||||||
{
|
{
|
||||||
global $conf;
|
global $conf;
|
||||||
|
|
||||||
$error=0;
|
$error=0;
|
||||||
|
|
||||||
if (! empty($conf->banque->enabled))
|
if (! empty($conf->banque->enabled))
|
||||||
{
|
{
|
||||||
require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
|
||||||
|
|
||||||
$acc = new Account($this->db);
|
$acc = new Account($this->db);
|
||||||
$acc->fetch($accountid);
|
$acc->fetch($accountid);
|
||||||
|
|
||||||
$total=$this->total;
|
$total=$this->total;
|
||||||
if ($mode == 'payment_loan') $total=-$total;
|
if ($mode == 'payment_loan') $total=-$total;
|
||||||
|
|
||||||
// Insert payment into llx_bank
|
// Insert payment into llx_bank
|
||||||
$bank_line_id = $acc->addline(
|
$bank_line_id = $acc->addline(
|
||||||
$this->datepaid,
|
$this->datepaid,
|
||||||
$this->paymenttype, // Payment mode id or code ("CHQ or VIR for example")
|
$this->paymenttype, // Payment mode id or code ("CHQ or VIR for example")
|
||||||
$label,
|
$label,
|
||||||
$total,
|
$total,
|
||||||
$this->num_payment,
|
$this->num_payment,
|
||||||
'',
|
'',
|
||||||
$user,
|
$user,
|
||||||
$emetteur_nom,
|
$emetteur_nom,
|
||||||
$emetteur_banque
|
$emetteur_banque
|
||||||
);
|
);
|
||||||
|
|
||||||
// Update fk_bank into llx_paiement.
|
// Update fk_bank into llx_paiement.
|
||||||
// We know the payment who generated the account write
|
// We know the payment who generated the account write
|
||||||
if ($bank_line_id > 0)
|
if ($bank_line_id > 0)
|
||||||
{
|
{
|
||||||
$result=$this->update_fk_bank($bank_line_id);
|
$result=$this->update_fk_bank($bank_line_id);
|
||||||
if ($result <= 0)
|
if ($result <= 0)
|
||||||
{
|
{
|
||||||
$error++;
|
$error++;
|
||||||
dol_print_error($this->db);
|
dol_print_error($this->db);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add link 'payment_loan' in bank_url between payment and bank transaction
|
// Add link 'payment_loan' in bank_url between payment and bank transaction
|
||||||
$url='';
|
$url='';
|
||||||
if ($mode == 'payment_loan') $url=DOL_URL_ROOT.'/loan/payment/card.php?id=';
|
if ($mode == 'payment_loan') $url=DOL_URL_ROOT.'/loan/payment/card.php?id=';
|
||||||
if ($url)
|
if ($url)
|
||||||
{
|
{
|
||||||
$result=$acc->add_url_line($bank_line_id, $this->id, $url, '(payment)', $mode);
|
$result=$acc->add_url_line($bank_line_id, $this->id, $url, '(payment)', $mode);
|
||||||
if ($result <= 0)
|
if ($result <= 0)
|
||||||
{
|
{
|
||||||
$error++;
|
$error++;
|
||||||
dol_print_error($this->db);
|
dol_print_error($this->db);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add link 'loan' in bank_url between invoice and bank transaction (for each invoice concerned by payment)
|
// Add link 'loan' in bank_url between invoice and bank transaction (for each invoice concerned by payment)
|
||||||
if ($mode == 'payment_loan')
|
if ($mode == 'payment_loan')
|
||||||
{
|
{
|
||||||
$result=$acc->add_url_line($bank_line_id, $fk_loan, DOL_URL_ROOT.'/loan/card.php?id=', ($this->label?$this->label:''),'loan');
|
$result=$acc->add_url_line($bank_line_id, $fk_loan, DOL_URL_ROOT.'/loan/card.php?id=', ($this->label?$this->label:''),'loan');
|
||||||
if ($result <= 0) dol_print_error($this->db);
|
if ($result <= 0) dol_print_error($this->db);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$this->error=$acc->error;
|
$this->error=$acc->error;
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! $error)
|
if (! $error)
|
||||||
{
|
{
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -512,7 +512,7 @@ class PaymentLoan extends CommonObject
|
|||||||
|
|
||||||
if (!empty($this->id))
|
if (!empty($this->id))
|
||||||
{
|
{
|
||||||
$link = '<a href="'.DOL_URL_ROOT.'/compta/payment/card.php?id='.$this->id.'">';
|
$link = '<a href="'.DOL_URL_ROOT.'/loan/payment/card.php?id='.$this->id.'">';
|
||||||
$linkend='</a>';
|
$linkend='</a>';
|
||||||
|
|
||||||
if ($withpicto) $result.=($link.img_object($langs->trans("ShowPayment").': '.$this->ref,'payment').$linkend.' ');
|
if ($withpicto) $result.=($link.img_object($langs->trans("ShowPayment").': '.$this->ref,'payment').$linkend.' ');
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2017 Franck Moreau <franck.moreau@theobald.com>
|
/* Copyright (C) 2017 Franck Moreau <franck.moreau@theobald.com>
|
||||||
|
* Copyright (C) 2018 Alexandre Spangaro <aspangaro@zendsi.com>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -16,9 +17,9 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \file htdocs/loan/createecheancier.php
|
* \file htdocs/loan/createschedule.php
|
||||||
* \ingroup loan
|
* \ingroup loan
|
||||||
* \brief Schedule card
|
* \brief Schedule card
|
||||||
*/
|
*/
|
||||||
|
|
||||||
require '../main.inc.php';
|
require '../main.inc.php';
|
||||||
@ -33,7 +34,7 @@ $action = GETPOST('action','aZ09');
|
|||||||
$object = new Loan($db);
|
$object = new Loan($db);
|
||||||
$object->fetch($loanid);
|
$object->fetch($loanid);
|
||||||
|
|
||||||
$langs->load('loan');
|
$langs->loadLangs(array("loan"));
|
||||||
|
|
||||||
if ($action == 'createecheancier') {
|
if ($action == 'createecheancier') {
|
||||||
|
|
||||||
@ -147,11 +148,11 @@ print '</th>';
|
|||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
Print '<th width="10%" align="center">'.$langs->trans("DueDate").'</th>';
|
Print '<th width="10%" align="center">'.$langs->trans("Term").'</th>';
|
||||||
Print '<th width="10%" align="center">'.$langs->trans("Date").'</th>';
|
Print '<th width="10%" align="center">'.$langs->trans("Date").'</th>';
|
||||||
Print '<th width="10%" align="center">'.$langs->trans("Amount").'</th>';
|
Print '<th width="10%" align="center">'.$langs->trans("Amount").'</th>';
|
||||||
Print '<th width="20%" align="center">'.$langs->trans("InterestAmount").'</th>';
|
Print '<th width="20%" align="center">'.$langs->trans("InterestAmount").'</th>';
|
||||||
Print '<th width="40%" align="center">'.$langs->trans("Remain");
|
Print '<th width="40%" align="center">'.$langs->trans("CapitalRemain");
|
||||||
print ' ('.price2num($object->capital).')';
|
print ' ('.price2num($object->capital).')';
|
||||||
print '<input type="hidden" name="hi_capital0" id ="hi_capital0" value="'.$object->capital.'">';
|
print '<input type="hidden" name="hi_capital0" id ="hi_capital0" value="'.$object->capital.'">';
|
||||||
print '</th>';
|
print '</th>';
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2014-2016 Alexandre Spangaro <aspangaro@zendsi.com>
|
/* Copyright (C) 2014-2018 Alexandre Spangaro <aspangaro@zendsi.com>
|
||||||
* Copyright (C) 2017 Ferran Marcet <fmarcet@2byte.es>
|
* Copyright (C) 2017 Ferran Marcet <fmarcet@2byte.es>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -32,11 +32,7 @@ if (! empty($conf->projet->enabled)) {
|
|||||||
require_once DOL_DOCUMENT_ROOT . '/projet/class/project.class.php';
|
require_once DOL_DOCUMENT_ROOT . '/projet/class/project.class.php';
|
||||||
}
|
}
|
||||||
|
|
||||||
$langs->load("other");
|
$langs->loadLangs(array("other","companies","compta","bills","loan"));
|
||||||
$langs->load("companies");
|
|
||||||
$langs->load("compta");
|
|
||||||
$langs->load("bills");
|
|
||||||
$langs->load("loan");
|
|
||||||
|
|
||||||
$id = GETPOST('id','int');
|
$id = GETPOST('id','int');
|
||||||
$action = GETPOST('action','aZ09');
|
$action = GETPOST('action','aZ09');
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2014 Alexandre Spangaro <aspangaro.dolibarr@gmail.com>
|
/* Copyright (C) 2014-2018 Alexandre Spangaro <aspangaro@zendsi.com>
|
||||||
* Copyright (C) 2015 Frederic France <frederic.france@free.fr>
|
* Copyright (C) 2015 Frederic France <frederic.france@free.fr>
|
||||||
* Copyright (C) 2015 Juanjo Menent <jmenent@2byte.es>
|
* Copyright (C) 2015 Juanjo Menent <jmenent@2byte.es>
|
||||||
* Copyright (C) 2016 Laurent Destailleur <eldy@users.sourceforge.net>
|
* Copyright (C) 2016 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -19,18 +19,15 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \file htdocs/loan/index.php
|
* \file htdocs/loan/index.php
|
||||||
* \ingroup loan
|
* \ingroup loan
|
||||||
* \brief Page to list all loans
|
* \brief Page to list all loans
|
||||||
*/
|
*/
|
||||||
|
|
||||||
require '../main.inc.php';
|
require '../main.inc.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/loan/class/loan.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/loan/class/loan.class.php';
|
||||||
|
|
||||||
$langs->load("loan");
|
$langs->loadLangs(array("loan","compta","banks","bills"));
|
||||||
$langs->load("compta");
|
|
||||||
$langs->load("banks");
|
|
||||||
$langs->load("bills");
|
|
||||||
|
|
||||||
// Security check
|
// Security check
|
||||||
$socid = GETPOST('socid', 'int');
|
$socid = GETPOST('socid', 'int');
|
||||||
@ -57,7 +54,7 @@ $optioncss = GETPOST('optioncss','alpha');
|
|||||||
// Purge search criteria
|
// Purge search criteria
|
||||||
if (GETPOST('button_removefilter_x','alpha') || GETPOST('button_removefilter','alpha')) // Both test are required to be compatible with all browsers
|
if (GETPOST('button_removefilter_x','alpha') || GETPOST('button_removefilter','alpha')) // Both test are required to be compatible with all browsers
|
||||||
{
|
{
|
||||||
$search_ref="";
|
$search_ref="";
|
||||||
$search_label="";
|
$search_label="";
|
||||||
$search_amount="";
|
$search_amount="";
|
||||||
}
|
}
|
||||||
@ -71,7 +68,7 @@ $loan_static = new Loan($db);
|
|||||||
|
|
||||||
llxHeader();
|
llxHeader();
|
||||||
|
|
||||||
$sql = "SELECT l.rowid, l.label, l.capital, l.datestart, l.dateend,";
|
$sql = "SELECT l.rowid, l.label, l.capital, l.datestart, l.dateend, l.paid,";
|
||||||
$sql.= " SUM(pl.amount_capital) as alreadypayed";
|
$sql.= " SUM(pl.amount_capital) as alreadypayed";
|
||||||
$sql.= " FROM ".MAIN_DB_PREFIX."loan as l LEFT JOIN ".MAIN_DB_PREFIX."payment_loan AS pl";
|
$sql.= " FROM ".MAIN_DB_PREFIX."loan as l LEFT JOIN ".MAIN_DB_PREFIX."payment_loan AS pl";
|
||||||
$sql.= " ON l.rowid = pl.fk_loan";
|
$sql.= " ON l.rowid = pl.fk_loan";
|
||||||
@ -80,8 +77,8 @@ if ($search_amount) $sql.= natural_search("l.capital", $search_amount, 1);
|
|||||||
if ($search_ref) $sql.= " AND l.rowid = ".$db->escape($search_ref);
|
if ($search_ref) $sql.= " AND l.rowid = ".$db->escape($search_ref);
|
||||||
if ($search_label) $sql.= natural_search("l.label", $search_label);
|
if ($search_label) $sql.= natural_search("l.label", $search_label);
|
||||||
if ($filtre) {
|
if ($filtre) {
|
||||||
$filtre=str_replace(":","=",$filtre);
|
$filtre=str_replace(":","=",$filtre);
|
||||||
$sql .= " AND ".$filtre;
|
$sql .= " AND ".$filtre;
|
||||||
}
|
}
|
||||||
$sql.= " GROUP BY l.rowid, l.label, l.capital, l.datestart, l.dateend";
|
$sql.= " GROUP BY l.rowid, l.label, l.capital, l.datestart, l.dateend";
|
||||||
$sql.= $db->order($sortfield,$sortorder);
|
$sql.= $db->order($sortfield,$sortorder);
|
||||||
@ -89,13 +86,13 @@ $sql.= $db->order($sortfield,$sortorder);
|
|||||||
$nbtotalofrecords = '';
|
$nbtotalofrecords = '';
|
||||||
if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST))
|
if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST))
|
||||||
{
|
{
|
||||||
$result = $db->query($sql);
|
$result = $db->query($sql);
|
||||||
$nbtotalofrecords = $db->num_rows($result);
|
$nbtotalofrecords = $db->num_rows($result);
|
||||||
if (($page * $limit) > $nbtotalofrecords) // if total resultset is smaller then paging size (filtering), goto and load page 0
|
if (($page * $limit) > $nbtotalofrecords) // if total resultset is smaller then paging size (filtering), goto and load page 0
|
||||||
{
|
{
|
||||||
$page = 0;
|
$page = 0;
|
||||||
$offset = 0;
|
$offset = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql.= $db->plimit($limit+1, $offset);
|
$sql.= $db->plimit($limit+1, $offset);
|
||||||
@ -108,35 +105,35 @@ if ($resql)
|
|||||||
$i = 0;
|
$i = 0;
|
||||||
$var=true;
|
$var=true;
|
||||||
|
|
||||||
$param='';
|
$param='';
|
||||||
if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.urlencode($contextpage);
|
if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.urlencode($contextpage);
|
||||||
if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.urlencode($limit);
|
if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.urlencode($limit);
|
||||||
if ($search_ref) $param.="&search_ref=".urlencode($search_ref);
|
if ($search_ref) $param.="&search_ref=".urlencode($search_ref);
|
||||||
if ($search_label) $param.="&search_label=".urlencode($search_user);
|
if ($search_label) $param.="&search_label=".urlencode($search_user);
|
||||||
if ($search_amount) $param.="&search_amount=".urlencode($search_amount_ht);
|
if ($search_amount) $param.="&search_amount=".urlencode($search_amount_ht);
|
||||||
if ($optioncss != '') $param.='&optioncss='.urlencode($optioncss);
|
if ($optioncss != '') $param.='&optioncss='.urlencode($optioncss);
|
||||||
|
|
||||||
$newcardbutton='';
|
$newcardbutton='';
|
||||||
if ($user->rights->loan->write)
|
if ($user->rights->loan->write)
|
||||||
{
|
{
|
||||||
$newcardbutton='<a class="butActionNew" href="'.DOL_URL_ROOT.'/loan/card.php?action=create">'.$langs->trans('NewLoan');
|
$newcardbutton='<a class="butActionNew" href="'.DOL_URL_ROOT.'/loan/card.php?action=create">'.$langs->trans('NewLoan');
|
||||||
$newcardbutton.= '<span class="fa fa-plus-circle valignmiddle"></span>';
|
$newcardbutton.= '<span class="fa fa-plus-circle valignmiddle"></span>';
|
||||||
$newcardbutton.= '</a>';
|
$newcardbutton.= '</a>';
|
||||||
}
|
}
|
||||||
|
|
||||||
print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">'."\n";
|
print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">'."\n";
|
||||||
if ($optioncss != '') print '<input type="hidden" name="optioncss" value="'.$optioncss.'">';
|
if ($optioncss != '') print '<input type="hidden" name="optioncss" value="'.$optioncss.'">';
|
||||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||||
print '<input type="hidden" name="action" value="list">';
|
print '<input type="hidden" name="action" value="list">';
|
||||||
print '<input type="hidden" name="sortfield" value="'.$sortfield.'">';
|
print '<input type="hidden" name="sortfield" value="'.$sortfield.'">';
|
||||||
print '<input type="hidden" name="sortorder" value="'.$sortorder.'">';
|
print '<input type="hidden" name="sortorder" value="'.$sortorder.'">';
|
||||||
print '<input type="hidden" name="page" value="'.$page.'">';
|
print '<input type="hidden" name="page" value="'.$page.'">';
|
||||||
print '<input type="hidden" name="viewstatut" value="'.$viewstatut.'">';
|
print '<input type="hidden" name="viewstatut" value="'.$viewstatut.'">';
|
||||||
|
|
||||||
print_barre_liste($langs->trans("Loans"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'title_accountancy.png', 0, $newcardbutton, '', $limit);
|
print_barre_liste($langs->trans("Loans"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'title_accountancy.png', 0, $newcardbutton, '', $limit);
|
||||||
|
|
||||||
print '<div class="div-table-responsive">';
|
print '<div class="div-table-responsive">';
|
||||||
print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"").'">'."\n";
|
print '<table class="tagtable liste'.($moreforfilter?" listwithfilterbefore":"").'">'."\n";
|
||||||
|
|
||||||
// Filters lines
|
// Filters lines
|
||||||
print '<tr class="liste_titre_filter">';
|
print '<tr class="liste_titre_filter">';
|
||||||
@ -144,6 +141,7 @@ if ($resql)
|
|||||||
print '<td class="liste_titre"><input class="flat" size="12" type="text" name="search_label" value="'.$search_label.'"></td>';
|
print '<td class="liste_titre"><input class="flat" size="12" type="text" name="search_label" value="'.$search_label.'"></td>';
|
||||||
print '<td class="liste_titre" align="right" ><input class="flat" size="8" type="text" name="search_amount" value="'.$search_amount.'"></td>';
|
print '<td class="liste_titre" align="right" ><input class="flat" size="8" type="text" name="search_amount" value="'.$search_amount.'"></td>';
|
||||||
print '<td class="liste_titre"> </td>';
|
print '<td class="liste_titre"> </td>';
|
||||||
|
print '<td class="liste_titre"> </td>';
|
||||||
print '<td class="liste_titre"></td>';
|
print '<td class="liste_titre"></td>';
|
||||||
print '<td align="right" class="liste_titre">';
|
print '<td align="right" class="liste_titre">';
|
||||||
print '<input type="image" class="liste_titre" src="'.img_picto($langs->trans("Search"),'search.png','','',1).'" name="button_search" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'">';
|
print '<input type="image" class="liste_titre" src="'.img_picto($langs->trans("Search"),'search.png','','',1).'" name="button_search" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'">';
|
||||||
@ -156,6 +154,7 @@ if ($resql)
|
|||||||
print_liste_field_titre("Label",$_SERVER["PHP_SELF"],"l.label","",$param,'align="left"',$sortfield,$sortorder);
|
print_liste_field_titre("Label",$_SERVER["PHP_SELF"],"l.label","",$param,'align="left"',$sortfield,$sortorder);
|
||||||
print_liste_field_titre("LoanCapital",$_SERVER["PHP_SELF"],"l.capital","",$param,'align="right"',$sortfield,$sortorder);
|
print_liste_field_titre("LoanCapital",$_SERVER["PHP_SELF"],"l.capital","",$param,'align="right"',$sortfield,$sortorder);
|
||||||
print_liste_field_titre("DateStart",$_SERVER["PHP_SELF"],"l.datestart","",$param,'align="center"',$sortfield,$sortorder);
|
print_liste_field_titre("DateStart",$_SERVER["PHP_SELF"],"l.datestart","",$param,'align="center"',$sortfield,$sortorder);
|
||||||
|
print_liste_field_titre("DateEnd",$_SERVER["PHP_SELF"],"l.dateend","",$param,'align="center"',$sortfield,$sortorder);
|
||||||
print_liste_field_titre("Status",$_SERVER["PHP_SELF"],"l.paid","",$param,'align="right"',$sortfield,$sortorder);
|
print_liste_field_titre("Status",$_SERVER["PHP_SELF"],"l.paid","",$param,'align="right"',$sortfield,$sortorder);
|
||||||
print_liste_field_titre('');
|
print_liste_field_titre('');
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
@ -163,9 +162,9 @@ if ($resql)
|
|||||||
while ($i < min($num,$limit))
|
while ($i < min($num,$limit))
|
||||||
{
|
{
|
||||||
$obj = $db->fetch_object($resql);
|
$obj = $db->fetch_object($resql);
|
||||||
$loan_static->id = $obj->rowid;
|
$loan_static->id = $obj->rowid;
|
||||||
$loan_static->ref = $obj->rowid;
|
$loan_static->ref = $obj->rowid;
|
||||||
$loan_static->label = $obj->label;
|
$loan_static->label = $obj->label;
|
||||||
|
|
||||||
$var = !$var;
|
$var = !$var;
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
@ -182,23 +181,26 @@ if ($resql)
|
|||||||
// Date start
|
// Date start
|
||||||
print '<td width="110" align="center">'.dol_print_date($db->jdate($obj->datestart), 'day').'</td>';
|
print '<td width="110" align="center">'.dol_print_date($db->jdate($obj->datestart), 'day').'</td>';
|
||||||
|
|
||||||
|
// Date end
|
||||||
|
print '<td width="110" align="center">'.dol_print_date($db->jdate($obj->dateend), 'day').'</td>';
|
||||||
|
|
||||||
print '<td align="right" class="nowrap">'.$loan_static->LibStatut($obj->paid,5,$obj->alreadypayed).'</a></td>';
|
print '<td align="right" class="nowrap">'.$loan_static->LibStatut($obj->paid,5,$obj->alreadypayed).'</a></td>';
|
||||||
|
|
||||||
print '<td></td>';
|
print '<td></td>';
|
||||||
|
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
print "</table>";
|
print "</table>";
|
||||||
print '</div>';
|
print '</div>';
|
||||||
print "</form>\n";
|
print "</form>\n";
|
||||||
$db->free($resql);
|
$db->free($resql);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dol_print_error($db);
|
dol_print_error($db);
|
||||||
}
|
}
|
||||||
|
|
||||||
llxFooter();
|
llxFooter();
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2014-2016 Alexandre Spangaro <aspangaro@zendsi.com>
|
/* Copyright (C) 2014-2018 Alexandre Spangaro <aspangaro@zendsi.com>
|
||||||
* Copyright (C) 2017 Ferran Marcet <fmarcet@2byte.es>
|
* Copyright (C) 2017 Ferran Marcet <fmarcet@2byte.es>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -30,9 +30,7 @@ if (! empty($conf->projet->enabled)) {
|
|||||||
require_once DOL_DOCUMENT_ROOT . '/projet/class/project.class.php';
|
require_once DOL_DOCUMENT_ROOT . '/projet/class/project.class.php';
|
||||||
}
|
}
|
||||||
|
|
||||||
$langs->load("compta");
|
$langs->loadLangs(array("compta","bills","loan"));
|
||||||
$langs->load("bills");
|
|
||||||
$langs->load("loan");
|
|
||||||
|
|
||||||
$id=GETPOST('id','int');
|
$id=GETPOST('id','int');
|
||||||
$action=GETPOST('action','aZ09');
|
$action=GETPOST('action','aZ09');
|
||||||
|
|||||||
@ -4,8 +4,8 @@
|
|||||||
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
|
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
|
||||||
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
|
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
|
||||||
* Copyright (C) 2015 Frederic France <frederic.france@free.fr>
|
* Copyright (C) 2015 Frederic France <frederic.france@free.fr>
|
||||||
* Copyright (C) 2016 Alexandre Spangaro <aspangaro@zendsi.com>
|
* Copyright (C) 2016-2018 Alexandre Spangaro <aspangaro@zendsi.com>
|
||||||
* Copyright (C) 2017 Ferran Marcet <fmarcet@2byte.es>
|
* Copyright (C) 2017 Ferran Marcet <fmarcet@2byte.es>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -36,7 +36,7 @@ if (! empty($conf->projet->enabled)) {
|
|||||||
|
|
||||||
$action = GETPOST('action','aZ09');
|
$action = GETPOST('action','aZ09');
|
||||||
|
|
||||||
$langs->load('loan');
|
$langs->loadLangs(array("loan"));
|
||||||
|
|
||||||
// Security check
|
// Security check
|
||||||
$id = GETPOST('id','int');
|
$id = GETPOST('id','int');
|
||||||
@ -82,7 +82,7 @@ if ($id > 0)
|
|||||||
$morehtmlref.=$form->editfieldval("Label", 'label', $object->label, $object, 0, 'string', '', null, null, '', 1);
|
$morehtmlref.=$form->editfieldval("Label", 'label', $object->label, $object, 0, 'string', '', null, null, '', 1);
|
||||||
// Project
|
// Project
|
||||||
if (! empty($conf->projet->enabled)) {
|
if (! empty($conf->projet->enabled)) {
|
||||||
$langs->load("projects");
|
$langs->loadLangs(array("projects"));
|
||||||
$morehtmlref .= '<br>' . $langs->trans('Project') . ' : ';
|
$morehtmlref .= '<br>' . $langs->trans('Project') . ' : ';
|
||||||
if ($user->rights->loan->write) {
|
if ($user->rights->loan->write) {
|
||||||
//if ($action != 'classify')
|
//if ($action != 'classify')
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2014-2016 Alexandre Spangaro <aspangaro.dolibarr@gmail.com>
|
/* Copyright (C) 2014-2018 Alexandre Spangaro <aspangaro@zendsi.com>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -16,9 +16,9 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \file htdocs/loan/payment/card.php
|
* \file htdocs/loan/payment/card.php
|
||||||
* \ingroup loan
|
* \ingroup loan
|
||||||
* \brief Payment's card of loan
|
* \brief Payment's card of loan
|
||||||
*/
|
*/
|
||||||
|
|
||||||
require '../../main.inc.php';
|
require '../../main.inc.php';
|
||||||
@ -26,10 +26,7 @@ require_once DOL_DOCUMENT_ROOT.'/loan/class/loan.class.php';
|
|||||||
require_once DOL_DOCUMENT_ROOT.'/loan/class/paymentloan.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/loan/class/paymentloan.class.php';
|
||||||
if (! empty($conf->banque->enabled)) require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
|
if (! empty($conf->banque->enabled)) require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
|
||||||
|
|
||||||
$langs->load('bills');
|
$langs->loadLangs(array("bills","banks","companies","loan"));
|
||||||
$langs->load('banks');
|
|
||||||
$langs->load('companies');
|
|
||||||
$langs->load('loan');
|
|
||||||
|
|
||||||
// Security check
|
// Security check
|
||||||
$id=GETPOST("id",'int');
|
$id=GETPOST("id",'int');
|
||||||
@ -59,14 +56,14 @@ if ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->loan->del
|
|||||||
$result = $payment->delete($user);
|
$result = $payment->delete($user);
|
||||||
if ($result > 0)
|
if ($result > 0)
|
||||||
{
|
{
|
||||||
$db->commit();
|
$db->commit();
|
||||||
header("Location: ".DOL_URL_ROOT."/loan/index.php");
|
header("Location: ".DOL_URL_ROOT."/loan/index.php");
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
setEventMessages($payment->error, $payment->errors, 'errors');
|
setEventMessages($payment->error, $payment->errors, 'errors');
|
||||||
$db->rollback();
|
$db->rollback();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -173,18 +170,18 @@ print '<tr><td>'.$langs->trans('NotePublic').'</td><td>'.nl2br($payment->note_pu
|
|||||||
// Bank account
|
// Bank account
|
||||||
if (! empty($conf->banque->enabled))
|
if (! empty($conf->banque->enabled))
|
||||||
{
|
{
|
||||||
if ($payment->bank_account)
|
if ($payment->bank_account)
|
||||||
{
|
{
|
||||||
$bankline=new AccountLine($db);
|
$bankline=new AccountLine($db);
|
||||||
$bankline->fetch($payment->bank_line);
|
$bankline->fetch($payment->bank_line);
|
||||||
|
|
||||||
print '<tr>';
|
print '<tr>';
|
||||||
print '<td>'.$langs->trans('BankTransactionLine').'</td>';
|
print '<td>'.$langs->trans('BankTransactionLine').'</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print $bankline->getNomUrl(1,0,'showall');
|
print $bankline->getNomUrl(1,0,'showall');
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
@ -213,7 +210,7 @@ if ($resql)
|
|||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print '<td>'.$langs->trans('Loan').'</td>';
|
print '<td>'.$langs->trans('Loan').'</td>';
|
||||||
print '<td>'.$langs->trans('Label').'</td>';
|
print '<td>'.$langs->trans('Label').'</td>';
|
||||||
print '<td align="right">'.$langs->trans('ExpectedToPay').'</td>';
|
// print '<td align="right">'.$langs->trans('ExpectedToPay').'</td>';
|
||||||
print '<td align="center">'.$langs->trans('Status').'</td>';
|
print '<td align="center">'.$langs->trans('Status').'</td>';
|
||||||
print '<td align="right">'.$langs->trans('PayedByThisPayment').'</td>';
|
print '<td align="right">'.$langs->trans('PayedByThisPayment').'</td>';
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
@ -233,11 +230,13 @@ if ($resql)
|
|||||||
// Label
|
// Label
|
||||||
print '<td>'.$objp->label.'</td>';
|
print '<td>'.$objp->label.'</td>';
|
||||||
// Expected to pay
|
// Expected to pay
|
||||||
print '<td align="right">'.price($objp->capital).'</td>';
|
// print '<td align="right">'.price($objp->capital).'</td>';
|
||||||
// Status
|
// Status
|
||||||
print '<td align="center">'.$loan->getLibStatut(4,$objp->amount_capital).'</td>';
|
print '<td align="center">'.$loan->getLibStatut(4,$objp->amount_capital).'</td>';
|
||||||
// Amount payed
|
// Amount payed
|
||||||
print '<td align="right">'.price($objp->amount_capital).'</td>';
|
$amount_payed = $objp->amount_capital + $objp->amount_insurance + $objp->amount_interest;
|
||||||
|
|
||||||
|
print '<td align="right">'.price($amount_payed).'</td>';
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
if ($objp->paid == 1) // If at least one invoice is paid, disable delete
|
if ($objp->paid == 1) // If at least one invoice is paid, disable delete
|
||||||
{
|
{
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2014-2016 Alexandre Spangaro <aspangaro.dolibarr@gmail.com>
|
/* Copyright (C) 2014-2018 Alexandre Spangaro <aspangaro@zendsi.com>
|
||||||
* Copyright (C) 2015 Frederic France <frederic.france@free.fr>
|
* Copyright (C) 2015 Frederic France <frederic.france@free.fr>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
@ -27,8 +27,7 @@ require_once DOL_DOCUMENT_ROOT.'/loan/class/loan.class.php';
|
|||||||
require_once DOL_DOCUMENT_ROOT.'/loan/class/paymentloan.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/loan/class/paymentloan.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
|
||||||
|
|
||||||
$langs->load("bills");
|
$langs->loadLangs(array("bills","loan"));
|
||||||
$langs->load("loan");
|
|
||||||
|
|
||||||
$chid=GETPOST('id','int');
|
$chid=GETPOST('id','int');
|
||||||
$action=GETPOST('action','aZ09');
|
$action=GETPOST('action','aZ09');
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user