Exemplo n.º 1
0
function RetPayPartDoc($ReturnMode = false, $pdo = null)
{
    if (empty($_POST["PayID"])) {
        echo Response::createObjectiveResponse(false, "درخواست نامعتبر");
        die;
    }
    $PayID = $_POST["PayID"];
    $PayObj = new LON_payments($PayID);
    //------------- check for Acc doc confirm -------------------
    $temp = PdoDataAccess::runquery("select DocStatus \r\n\t\tfrom ACC_DocItems join ACC_docs using(DocID) where SourceType=" . DOCTYPE_LOAN_PAYMENT . " AND \r\n\t\tDocID=?", array($PayObj->DocID));
    if (count($temp) == 0) {
        echo Response::createObjectiveResponse(false, "سند مربوطه یافت نشد");
        die;
    }
    if (count($temp) > 0 && $temp[0]["DocStatus"] != "RAW") {
        echo Response::createObjectiveResponse(false, "سند حسابداری این شرایط تایید شده است. و قادر به برگشت نمی باشید");
        die;
    }
    //------- check for being first doc and there excists docs after -----------
    $CostCode_todiee = COSTID_Todiee;
    $temp = PdoDataAccess::runquery("select * from ACC_DocItems \r\n\t\twhere CostID=? AND CreditorAmount>0 AND DocID=?", array($CostCode_todiee, $PayObj->DocID));
    if (count($temp) > 0) {
        $dt = PdoDataAccess::runquery("select * from ACC_DocItems where CostID=? AND DebtorAmount>0 \r\n\t\t\tAND SourceType=? AND SourceID=?", array($CostCode_todiee, DOCTYPE_LOAN_PAYMENT, $PayObj->RequestID));
        if (count($dt) > 0) {
            echo Response::createObjectiveResponse(false, "به دلیل اینکه این سند اولین سند پرداخت می باشد و بعد از آن اسناد پرداخت دیگری صادر شده است" . " قادر به برگشت نمی باشید. <br> برای برگشت ابتدا کلیه اسناد بعدی را برگشت بزنید");
            die;
        }
    }
    //-----------------------------------------------------------
    if ($pdo == null) {
        $pdo = PdoDataAccess::getPdoObject();
        $pdo->beginTransaction();
    }
    if (!ReturnPayPartDoc($PayObj->DocID, $pdo, !$ReturnMode)) {
        if ($ReturnMode) {
            return false;
        }
        $pdo->rollBack();
        print_r(ExceptionHandler::PopAllExceptions());
        echo Response::createObjectiveResponse(false, PdoDataAccess::GetExceptionsToString());
        die;
    }
    $PayObj->DocID = 0;
    if (!$PayObj->Edit($pdo)) {
        if ($ReturnMode) {
            return false;
        }
        $pdo->rollBack();
        echo Response::createObjectiveResponse(false, PdoDataAccess::GetExceptionsToString());
        die;
    }
    ChangeStatus($PayObj->RequestID, "90", "", true, $pdo);
    if ($ReturnMode) {
        return true;
    }
    $pdo->commit();
    echo Response::createObjectiveResponse(true, "");
    die;
}