function ComputeWageOfSHekoofa($partObj) { $payments = LON_payments::Get(" AND RequestID=? order by PayDate", array($partObj->RequestID)); $payments = $payments->fetchAll(); //--------------- total pay months ------------- $firstPay = DateModules::miladi_to_shamsi($payments[0]["PayDate"]); $LastPay = DateModules::miladi_to_shamsi($payments[count($payments) - 1]["PayDate"]); $paymentPeriod = DateModules::GetDiffInMonth($firstPay, $LastPay); //---------------------------------------------- $totalWage = 0; $wages = array(); foreach ($payments as $row) { $wages[] = array(); $wageindex = count($wages) - 1; for ($i = 0; $i < $partObj->InstallmentCount; $i++) { $monthplus = $paymentPeriod + $partObj->DelayMonths * 1 + ($i + 1) * $partObj->PayInterval * 1; $installmentDate = DateModules::miladi_to_shamsi($payments[0]["PayDate"]); $installmentDate = DateModules::AddToJDate($installmentDate, 0, $monthplus); $installmentDate = DateModules::shamsi_to_miladi($installmentDate); $jdiff = DateModules::GDateMinusGDate($installmentDate, $row["PayDate"]); $wage = round($row["PayAmount"] / $partObj->InstallmentCount * $jdiff * $partObj->CustomerWage / 36500); $wages[$wageindex][] = $wage; $totalWage += $wage; } } return $totalWage; }
function ComputeInstallmentsShekoofa($RequestID = "", $returnMode = false) { $RequestID = empty($RequestID) ? $_REQUEST["RequestID"] : $RequestID; $partObj = LON_ReqParts::GetValidPartObj($RequestID); $payments = LON_payments::Get(" AND RequestID=? order by PayDate", array($RequestID)); $payments = $payments->fetchAll(); if (count($payments) == 0) { return true; } //--------------- total pay months ------------- $firstPay = DateModules::miladi_to_shamsi($payments[0]["PayDate"]); $LastPay = DateModules::miladi_to_shamsi($payments[count($payments) - 1]["PayDate"]); $paymentPeriod = DateModules::GetDiffInMonth($firstPay, $LastPay); //---------------------------------------------- $totalWage = ComputeWageOfSHekoofa($partObj); $pdo = PdoDataAccess::getPdoObject(); $pdo->beginTransaction(); for ($i = 0; $i < $partObj->InstallmentCount; $i++) { $monthplus = $paymentPeriod + $partObj->DelayMonths * 1 + ($i + 1) * $partObj->PayInterval * 1; $installmentDate = DateModules::miladi_to_shamsi($payments[0]["PayDate"]); $installmentDate = DateModules::AddToJDate($installmentDate, 0, $monthplus); $installmentDate = DateModules::shamsi_to_miladi($installmentDate); $obj2 = new LON_installments(); $obj2->RequestID = $RequestID; $obj2->InstallmentDate = $installmentDate; $obj2->InstallmentAmount = round($partObj->PartAmount / $partObj->InstallmentCount) + round($totalWage / $partObj->InstallmentCount); if (!$obj2->AddInstallment($pdo)) { $pdo->rollBack(); echo Response::createObjectiveResponse(false, ""); die; } } $pdo->commit(); if ($returnMode) { return true; } echo Response::createObjectiveResponse(true, ""); die; }