* Copyright (C) 2018 Alexandre Spangaro * * 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 . */ /** * \file htdocs/loan/schedule.php * \ingroup loan * \brief Schedule card */ require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/loan/class/loan.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/loan.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; require_once DOL_DOCUMENT_ROOT.'/loan/class/loanschedule.class.php'; $loanid = GETPOST('loanid', 'int'); $action = GETPOST('action', 'aZ09'); $object = new Loan($db); $object->fetch($loanid); // Load translation files required by the page $langs->loadLangs(array("compta", "bills", "loan")); $title = $langs->trans("Loan").' - '.$langs->trans("Card"); $help_url = 'EN:Module_Loan|FR:Module_Emprunt'; llxHeader("", $title, $help_url); $head = loan_prepare_head($object); dol_fiche_head($head, 'FinancialCommitment', $langs->trans("Loan"), -1, 'bill'); $linkback = ''.$langs->trans("BackToList").''; $morehtmlref = '
'; // Ref loan $morehtmlref .= $form->editfieldkey("Label", 'label', $object->label, $object, 0, 'string', '', 0, 1); $morehtmlref .= $form->editfieldval("Label", 'label', $object->label, $object, 0, 'string', '', null, null, '', 1); // Project if (!empty($conf->projet->enabled)) { $langs->loadLangs(array("projects")); $morehtmlref .= '
'.$langs->trans('Project').' : '; if ($user->rights->loan->write) { if ($action != 'classify') //$morehtmlref .= ''.img_edit($langs->transnoentitiesnoconv('SetProject')).' : '; if ($action == 'classify') { //$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1); $morehtmlref .= '
'; $morehtmlref .= ''; $morehtmlref .= ''; $morehtmlref .= $formproject->select_projects($object->socid, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1); $morehtmlref .= ''; $morehtmlref .= '
'; } else { $morehtmlref .= $form->form_project($_SERVER['PHP_SELF'].'?id='.$object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1); } } else { if (!empty($object->fk_project)) { $proj = new Project($db); $proj->fetch($object->fk_project); $morehtmlref .= ''; $morehtmlref .= $proj->ref; $morehtmlref .= ''; } else { $morehtmlref .= ''; } } } $morehtmlref .= '
'; $morehtmlright = ''; dol_banner_tab($object, 'id', $linkback, 1, 'rowid', 'ref', $morehtmlref, '', 0, '', $morehtmlright); if ($action == 'createecheancier') { $i = 1; while ($i < $object->nbterm + 1) { $date = GETPOST('hi_date'.$i, 'int'); $mens = GETPOST('mens'.$i); $int = GETPOST('hi_interets'.$i); $insurance = GETPOST('hi_insurance'.$i); $echeance = new LoanSchedule($db); $echeance->fk_loan = $object->id; $echeance->datec = dol_now(); $echeance->tms = dol_now(); $echeance->datep = $date; $echeance->amount_capital = $mens - $int; $echeance->amount_insurance = $insurance; $echeance->amount_interest = $int; $echeance->fk_typepayment = 3; $echeance->fk_bank = 0; $echeance->fk_user_creat = $user->id; $echeance->fk_user_modif = $user->id; $result = $echeance->create($user); if ($result < 0) { setEventMessages($echeance->error, $echeance->errors, 'errors'); } $i++; } } if ($action == 'updateecheancier') { $i = 1; while ($i < $object->nbterm + 1) { $mens = GETPOST('mens'.$i); $int = GETPOST('hi_interets'.$i); $id = GETPOST('hi_rowid'.$i); $insurance = GETPOST('hi_insurance'.$i); $echeance = new LoanSchedule($db); $echeance->fetch($id); $echeance->tms = dol_now(); $echeance->amount_capital = $mens - $int; $echeance->amount_insurance = $insurance; $echeance->amount_interest = $int; $echeance->fk_user_modif = $user->id; $result = $echeance->update($user, 0); if ($result < 0) { setEventMessages(null, $echeance->errors, 'errors'); } $i++; } } $echeance = new LoanSchedule($db); $echeance->fetchAll($object->id); ?> '; print ''; print ''; if (count($echeance->lines) > 0) { print ''; } else { print ''; } print '
'; print ''; print ''; $colspan = 6; if (count($echeance->lines) > 0) $colspan++; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; if (count($echeance->lines) > 0) print ''; print ''."\n"; if ($object->nbterm > 0 && count($echeance->lines) == 0) { $i = 1; $capital = $object->capital; $insurance = $object->insurance_amount / $object->nbterm; $insurance = price2num($insurance, 'MT'); $regulInsurance = price2num($object->insurance_amount - ($insurance * $object->nbterm)); while ($i < $object->nbterm + 1) { $mens = price2num($echeance->calcMonthlyPayments($capital, $object->rate / 100, $object->nbterm - $i + 1), 'MT'); $int = ($capital * ($object->rate / 12)) / 100; $int = price2num($int, 'MT'); $insu = ($insurance + (($i == 1) ? $regulInsurance : 0)); $cap_rest = price2num($capital - ($mens - $int), 'MT'); print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''."\n"; $i++; $capital = $cap_rest; } } elseif (count($echeance->lines) > 0) { $i = 1; $capital = $object->capital; $insurance = $object->insurance_amount / $object->nbterm; $insurance = price2num($insurance, 'MT'); $regulInsurance = price2num($object->insurance_amount - ($insurance * $object->nbterm)); $printed = false; foreach ($echeance->lines as $line) { $mens = $line->amount_capital + $line->amount_interest; $int = $line->amount_interest; $insu = ($insurance + (($i == 1) ? $regulInsurance : 0)); $cap_rest = price2num($capital - ($mens - $int), 'MT'); print ''; print ''; print ''; print ''; print ''; if ($line->datep > dol_now() && empty($line->fk_bank)) { print ''; } else { print ''; } print ''; print ''; print ''."\n"; $i++; $capital = $cap_rest; } } print '
'; print $langs->trans("FinancialCommitment"); print '
'.$langs->trans("Term").''.$langs->trans("Date").''.$langs->trans("Insurance"); print ''.$langs->trans("InterestAmount").''.$langs->trans("Amount").''.$langs->trans("CapitalRemain"); print '
('.price($object->capital, 0, '', 1, -1, -1, $conf->currency).')'; print ''; print '
'.$langs->trans('DoPayment').'
'.$i.''.dol_print_date(dol_time_plus_duree($object->datestart, $i - 1, 'm'), 'day').''.price($insurance + (($i == 1) ? $regulInsurance : 0), 0, '', 1, -1, -1, $conf->currency).''.price($int, 0, '', 1, -1, -1, $conf->currency).''.price($cap_rest).'
'.$i.''.dol_print_date($line->datep, 'day').''.price($insu, 0, '', 1, -1, -1, $conf->currency).''.price($int, 0, '', 1, -1, -1, $conf->currency).''.price($mens, 0, '', 1, -1, -1, $conf->currency).''.price($cap_rest, 0, '', 1, -1, -1, $conf->currency).''; if (!empty($line->fk_bank)) print $langs->trans('Paid'); elseif (!$printed) { print ''.$langs->trans('DoPayment').''; $printed = true; } print '
'; print '
'; print '
'; if (count($echeance->lines) == 0) $label = $langs->trans("Create"); else $label = $langs->trans("Save"); print '
'; print ''; // End of page llxFooter(); $db->close();