Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public function actionFortest()
- {
- $obj = json_decode($_POST['j'],true);
- //получим характеристики займа
- $base=$obj['loan']['base'];
- $date=$obj['loan']['date'];
- $percent=$obj['loan']['percent'];
- $duration=$obj['loan']['duration'];
- $atDate=$obj['atDate'];
- //переберем массив с платежами и определим сумму
- foreach ($obj['payments'] as $key=>$value){
- $lastdate=$value['date'];
- $amount=$value['amount'];
- if ($lastdate <= $atDate){ //проверка, что искомая дата позже чем дата платежа
- $dif=ceil((strtotime($lastdate) - strtotime($date))/3600/24-1);
- $added=$base*$percent*$dif;
- if ($added <= $base*3){ //Суммарное количество начисленных процентов не может превышать x3 от отстатка(!)
- $base=$base+($added-$amount);
- }else{ //иначе остаток по платежу просто умножаем на 3
- $added=$base*3;
- $base=$base+($added-$amount);
- }
- $date=$lastdate;
- } else { //если искомая дата позже, чем один из платежей, считаем, сумму на эту дату
- $added=$base*$percent*$dif;
- $dif=ceil((strtotime($atDate) - strtotime($date))/3600/24);
- if ($added <= $base*3){ //Суммарное количество начисленных процентов не может превышать x3 от отстатка(!)
- $answer=$base+$added;
- }else{ //иначе остаток по платежу просто умножаем на 3
- $added=$base*3;
- $base=$base+$added;
- }
- }
- }
- if ($answer){ //если получили ответ во время исключения
- $ans=['summ'=>round($answer, 2)];
- echo CJSON::encode($ans);
- } else { //иначе считаем оставшиеся начисления и отдаем результат
- $dif=ceil((strtotime($atDate) - strtotime($date))/3600/24);
- $added=$base*$percent*$dif;
- if ($added <= $base*3){ //Суммарное количество начисленных процентов не может превышать x3 от отстатка(!)
- $answer=$base+$added;
- }else{ //иначе остаток по платежу просто умножаем на 3
- $added=$base*3;
- $answer=$base+$added;
- }
- $ans=['summ'=>round($answer, 2)];
- echo CJSON::encode($ans);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment