Example #1
0
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;
}