Автоматический расчет общей суммы и суммы просроченных платежей - PullRequest
0 голосов
/ 01 октября 2018

Сейчас я использую систему ежемесячных счетов для расчета сборов за просрочку платежа и общую сумму, за первый месяц сборы за просрочку платежа составляют сумму счета * 10%, тогда как общая сумма составляет сумму счета + сборы за поздний платеж.За второй месяц плата за несвоевременную оплату равна общей сумме первого месяца * 10%, затем общая сумма равна сумме первого месяца + сборы за позднюю оплату.

Это то, что я сейчас делаю

enter image description here

Я сделал то же, что и на картинке выше, но сумма просрочена вручнуюввод для получения просроченных платежей и общей суммы.Есть ли другой способ получить просроченную сумму от общей суммы?но способ отображения общей суммы - циклический метод.

if(isset($_POST['save_inv'])){
    $ddate = count($_POST['ddate']); //get total number of array element
    for($i=0;$i<$ddate;$i++) { // loop through array and assign values in variable and insert itin database
        if(($_POST['dpayment'][$i] - $_POST['dtotal'][$i]) <= 0){
            $query4 = $DBcon->query("UPDATE owner_monthlyfees SET status = '1' WHERE owner = '".$_POST['downer'][$i]."' AND unit_name = '".$_POST['dunit'][$i]."' AND total <= '0'");
        }

        if($_POST['damt_overdue'][$i] < $_POST['dinv_sum'][$i]){
            $query7 = $DBcon->query("UPDATE owner_monthlyfees SET amount_overdue = '".$_POST['damt_overdue'][$i]."' , late_payment_charges = '".$_POST['damt_overdue'][$i]."'*('".$_POST['dlatecharge'][$i]."'/100) , payment = '".$_POST['dpayment'][$i]."' , total = '".$_POST['dinv_sum'][$i]."'+'".$_POST['damt_overdue'][$i]."'+('".$_POST['damt_overdue'][$i]."'*('".$_POST['dlatecharge'][$i]."'/100))-'".$_POST['dpayment'][$i]."' WHERE owner = '".$_POST['downer'][$i]."' and unit_name = '".$_POST['dunit'][$i]."' and date = '".$_POST['ddate'][$i]."'");
        }
        elseif($_POST['damt_overdue'][$i] > 0){
            $query3 = $DBcon->query("UPDATE owner_monthlyfees SET amount_overdue = '".$_POST['damt_overdue'][$i]."' , late_payment_charges = '".$_POST['damt_overdue'][$i]."'*('".$_POST['dlatecharge'][$i]."'/100) , payment = '".$_POST['dpayment'][$i]."' , total = '".$_POST['damt_overdue'][$i]."'+('".$_POST['damt_overdue'][$i]."'*('".$_POST['dlatecharge'][$i]."'/100))-'".$_POST['dpayment'][$i]."' WHERE owner = '".$_POST['downer'][$i]."' and unit_name = '".$_POST['dunit'][$i]."' and date = '".$_POST['ddate'][$i]."'");
        }elseif($_POST['damt_overdue'][$i] <= 0){
            $query6 = $DBcon->query("UPDATE owner_monthlyfees SET amount_overdue = '".$_POST['damt_overdue'][$i]."' , late_payment_charges = '".$_POST['damt_overdue'][$i]."'*('".$_POST['dlatecharge'][$i]."'/100) , payment = '".$_POST['dpayment'][$i]."' , total = '".$_POST['dinv_sum'][$i]."'-'".$_POST['dpayment'][$i]."' WHERE owner = '".$_POST['downer'][$i]."' and unit_name = '".$_POST['dunit'][$i]."' and date = '".$_POST['ddate'][$i]."'");
        }
    }
}


$query5 = $DBcon->query("SELECT * FROM owner_monthlyfees WHERE owner = '$owner' AND unit_name = '$unit_name' AND date2 BETWEEN '$newDateString' AND '$today' order by inv_no");      

while ($row5=$query5->fetch_array()){

        $dunit=$row5['unit_name'];
        $downer=$row5['owner'];
        $ddate=$row5['date'];
        $dinv_no=$row5['inv_no'];
        $dinvoice_sum=$row5['invoice_sum'];
        $dpayment=$row5['payment'];
        $dlatepayment=$row5['late_payment_charges'];
        $damt_overdue=$row5['amount_overdue'];
        $dlatecharge=$row5['late_charge'];
        $dtotal=$row5['total'];                                         
?>  
<form method='POST' action='' enctype='multipart/form-data'>                                                                                                                                                                    
<tr>  
    <input type="hidden" value="<?php echo $downer; ?>" name="downer[]">
    <input type="hidden" value="<?php echo $dunit; ?>" name="dunit[]">
    <input type="hidden" value="<?php echo $ddate; ?>" name="ddate[]">
    <td class="text-center"><a href="invoice_detail?month=<?php echo $month;?>&inv_no=<?php echo $dinv_no; ?>"><?php echo $ddate; ?></a></td>
    <td class="text-center"><?php echo $dinv_no; ?></td>
    <td class="text-center"><?php echo $dinvoice_sum; ?><input type="hidden" value="<?php echo $dinvoice_sum; ?>" name="dinv_sum[]"></td>
    <td class="text-center"><input type="number" step="0.01" class="disinput" value="<?php echo $dpayment; ?>" name="dpayment[]" disabled></td>
    <td class="text-center"><input type="number" step="0.01" class="disinput" value="<?php echo $damt_overdue; ?>" name="damt_overdue[]" disabled></td>
    <td class="text-center"><?php echo $dlatepayment; ?><input type="hidden" value="<?php echo $dlatepayment; ?>" name="dlatepayment[]"></td>

    <input type="hidden" value="<?php echo $dlatecharge; ?>" name="dlatecharge[]"></td>
    <td class="text-center"><?php echo $dtotal; ?><input type="hidden" value="<?php echo $dtotal; ?>" name="dtotal[]"></td>

</tr>

<?php
$dgrandtotal += $dtotal;

}

1 Ответ

0 голосов
/ 02 октября 2018

Полагаю, вам нужна таблица типа

-------------------------------------------------------------------------------
|Month|Number| Sum | Payment | Amount Overdue | Late Payment Charges | Amount |
-------------------------------------------------------------------------------
| Jul | 2546 | 500 |         |                |          50          | 550    |
| Aug | 2546 | 500 |         |                |          55          | 605    |
| Sep | 2546 | 500 |         |                |        60.5          | 665.5  |
| Oct | 2546 | 500 |         |                |        66.55         | 732    |
-------------------------------------------------------------------------------
|                                             |         Total        | 2552.5 |
-------------------------------------------------------------------------------

Сначала вы хотите сохранить все исходные тексты в новом массиве.

$results = [];
while ($row5=$query5->fetch_array()){
  $results[] = $row5;
}

Теперь вы можете зацикливать их и получать доступ кпосле raws

foreach ($results as $key => &$result){
  if($key == 0 ){
    // If the months is the first month
    $result['late_payment_charges'] = $result['invoice_sum']*0.1;
    $result['total'] = $result['late_payment_charges'] + $result['invoice_sum'];
    // 0.1 is 10%
  } else {
    // Getting the previous month details
    $prevMonth = $results[$key-1];
    $result['late_payment_charges'] = $prevMonth['total']*0.1;
    $result['total'] = $prevMonth['total']+$result['late_payment_charges'];
  }
}

Теперь вы можете зациклить $results и записать его на html-страницу


Добавить дополнительный скрытый ввод или вставить номер счета в тег вводаполучить справки из счета

<td class="text-center"><input type="text" name="invoice_number[]" value="<?php echo $dinv_no; ?>"/></td>

При обновлении его до базы данных

foreach($_POST['invoice_number'] as $key => $value){
  $dinv_sum = $_POST['dinv_sum'][$key];
  $dpayment = $_POST['dpayment'][$key];
  //   |
  //   | Other inputs getting below format
  //   |
  //   V
  // Now executing "UPDATE INTO owner_monthlyfees SET invoice_sum = $dinv_sum" , payment = "$dpayment" ,....... WHERE inv_no = "$invoice_number"

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...