function DelayInstallments() { $RequestID = $_POST["RequestID"]; $InstallmentID = $_POST["InstallmentID"]; $newDate = $_POST["newDate"]; $PartObj = LON_ReqParts::GetValidPartObj($RequestID); $pdo = PdoDataAccess::getPdoObject(); $pdo->beginTransaction(); if ($_POST["IsRemainCompute"] == " 0") { $dt = LON_installments::SelectAll("r.RequestID=? AND InstallmentID>=?", array($RequestID, $InstallmentID)); $days = 0; for ($i = 0; $i < count($dt); $i++) { $obj = new LON_installments(); $obj->InstallmentID = $dt[$i]["InstallmentID"]; $obj->IsDelayed = "YES"; if (!$obj->EditInstallment($pdo)) { $pdo->rollBack(); echo Response::createObjectiveResponse(false, "1"); die; } //........................................... if ($days == 0) { $newDate = DateModules::shamsi_to_miladi($newDate, "-"); $days = DateModules::GDateMinusGDate($newDate, $dt[$i]["InstallmentDate"]); } $obj = new LON_installments(); $obj->RequestID = $RequestID; $obj->InstallmentDate = DateModules::AddToGDate($dt[$i]["InstallmentDate"], $days); $extraWage = round($dt[$i]["InstallmentAmount"] * $PartObj->CustomerWage * $days / 36500); $obj->InstallmentAmount = $dt[$i]["InstallmentAmount"] * 1 + $extraWage; if (!$obj->AddInstallment($pdo)) { $pdo->rollBack(); echo Response::createObjectiveResponse(false, "2"); die; } } } else { $dt = array(); $dt2 = LON_requests::ComputePayments($RequestID, $dt); $index = 0; $ComputeRecord = $dt2[$index++]; $days = 0; for ($i = 0; $i < count($dt); $i++) { if ($dt[$i]["InstallmentID"] < $InstallmentID) { while ($ComputeRecord["InstallmentID"] == $dt[$i]["InstallmentID"]) { $ComputeRecord = $dt2[++$index]; } continue; } $remain = 0; while ($ComputeRecord["InstallmentID"] == $dt[$i]["InstallmentID"]) { $remain = $ComputeRecord["remainder"]; $ComputeRecord = $index + 1 < count($dt2) ? $dt2[++$index] : null; } $obj = new LON_installments(); $obj->InstallmentID = $dt[$i]["InstallmentID"]; $obj->IsDelayed = "YES"; if (!$obj->EditInstallment($pdo)) { $pdo->rollBack(); echo Response::createObjectiveResponse(false, "1"); die; } //........................................... if ($days == 0) { $newDate = DateModules::shamsi_to_miladi($newDate, "-"); $days = DateModules::GDateMinusGDate($newDate, $dt[$i]["InstallmentDate"]); } $obj = new LON_installments(); $obj->RequestID = $RequestID; $obj->InstallmentDate = DateModules::AddToGDate($dt[$i]["InstallmentDate"], $days); $extraWage = round($remain * $PartObj->CustomerWage * $days / 36500); $obj->InstallmentAmount = $dt[$i]["InstallmentAmount"] * 1 + $extraWage; if (!$obj->AddInstallment($pdo)) { $pdo->rollBack(); echo Response::createObjectiveResponse(false, "2"); die; } } } if (ExceptionHandler::GetExceptionCount() > 0) { $pdo->rollBack(); print_r(ExceptionHandler::PopAllExceptions()); echo Response::createObjectiveResponse(false, ""); die; } $pdo->commit(); echo Response::createObjectiveResponse(true, ""); die; }