Example #1
0
function editPayPartDoc()
{
    $PayID = $_POST["PayID"];
    $PayObj = new LON_payments($PayID);
    $partobj = LON_ReqParts::GetValidPartObj($PayObj->RequestID);
    $ReqObj = new LON_requests($PayObj->RequestID);
    $DocObj = new ACC_docs($PayObj->DocID);
    if ($DocObj->DocStatus != "RAW") {
        echo Response::createObjectiveResponse(false, "سند تایید شده و قابل ویرایش نمی باشد");
        die;
    }
    $pdo = PdoDataAccess::getPdoObject();
    $pdo->beginTransaction();
    if (!ReturnPayPartDoc($DocObj->DocID, $pdo, false)) {
        $pdo->rollBack();
        echo Response::createObjectiveResponse(false, PdoDataAccess::GetExceptionsToString());
        die;
    }
    if ($ReqObj->ReqPersonID == "1003") {
        $result = RegisterSHRTFUNDPayPartDoc($ReqObj, $partobj, $PayObj, $_POST["BankTafsili"], $_POST["AccountTafsili"], $pdo, $DocObj->DocID);
    } else {
        $result = RegisterPayPartDoc($ReqObj, $partobj, $PayObj, $_POST["BankTafsili"], $_POST["AccountTafsili"], $pdo, $DocObj->DocID);
    }
    $pdo->commit();
    echo Response::createObjectiveResponse(true, "");
    die;
}
Example #2
0
	$rpg->addColumn("مانده کل", "TotalRemainder","amountRender");
	
	$rpg->mysql_resource = $returnArr;
	BeginReport();
	echo "<table style='border:2px groove #9BB1CD;border-collapse:collapse;width:100%'><tr>
			<td width=60px><img src='/framework/icons/logo.jpg' style='width:120px'></td>
			<td align='center' style='height:100px;vertical-align:middle;font-family:b titr;font-size:15px'>
				گزارش پرداخت وام
			</td>
			<td width='200px' align='center' style='font-family:tahoma;font-size:11px'>تاریخ تهیه گزارش : " 
		. DateModules::shNow() . "<br>";
	
	echo "</td></tr></table>";
	
	$ReqObj = new LON_requests($RequestID);
	$partObj = LON_ReqParts::GetValidPartObj($RequestID);
	
	//..........................................................
	$rpg2 = new ReportGenerator();
	$rpg2->mysql_resource = PdoDataAccess::runquery("
		select * from LON_installments where RequestID=?", array($RequestID));
	$col = $rpg2->addColumn("", "InstallmentID");
	$col->hidden = true;
	
	$col = $rpg2->addColumn("تاریخ قسط", "InstallmentDate","dateRender");
	$col = $rpg2->addColumn("مبلغ قسط", "InstallmentAmount","amountRender");
	
	function profitRender(&$row, $value, $param, $prevRow){
		
		$R = $param->IntervalType == "MONTH" ? 1200/$param->PayInterval : 36500/$param->PayInterval;
		$V = !$prevRow ? $param->PartAmount : $prevRow["EndingBalance"];
Example #3
0
function RegisterCustomerPayDoc($DocObj, $PayObj, $CostID, $TafsiliID, $TafsiliID2, $CenterAccount, $BranchID, $FirstCostID, $SecondCostID, $pdo, $grouping = false)
{
    /*@var $PayObj LON_BackPays */
    $ReqObj = new LON_requests($PayObj->RequestID);
    $PartObj = LON_ReqParts::GetValidPartObj($PayObj->RequestID);
    if ($DocObj == null) {
        $dt = PdoDataAccess::runquery("select * from ACC_DocItems where SourceType=" . DOCTYPE_INSTALLMENT_PAYMENT . " AND SourceID=? AND SourceID2=?", array($ReqObj->RequestID, $PayObj->BackPayID));
        if (count($dt) > 0) {
            ExceptionHandler::PushException("سند این ردیف پرداخت قبلا صادر شده است");
            return false;
        }
    }
    $CycleID = substr(DateModules::shNow(), 0, 4);
    //------------- get CostCodes --------------------
    $LoanObj = new LON_loans($ReqObj->LoanID);
    $CostCode_Loan = FindCostID("110" . "-" . $LoanObj->_BlockCode);
    $CostCode_deposite = FindCostID("210-01");
    $CostCode_wage = FindCostID("750" . "-" . $LoanObj->_BlockCode);
    $CostCode_commitment = FindCostID("200-" . $LoanObj->_BlockCode . "-51");
    //---------------- add doc header --------------------
    if ($DocObj == null) {
        $obj = new ACC_docs();
        $obj->RegDate = PDONOW;
        $obj->regPersonID = $_SESSION['USER']["PersonID"];
        $obj->DocDate = PDONOW;
        $obj->CycleID = $CycleID;
        $obj->BranchID = $ReqObj->BranchID;
        $obj->DocType = DOCTYPE_INSTALLMENT_PAYMENT;
        if ($grouping) {
            $obj->description = "پرداخت گروهی اقساط";
        } else {
            $obj->description = "پرداخت قسط وام شماره " . $ReqObj->RequestID . " به نام " . $ReqObj->_LoanPersonFullname;
        }
        if (!$obj->Add($pdo)) {
            ExceptionHandler::PushException("خطا در ایجاد سند");
            return false;
        }
    } else {
        $obj = $DocObj;
    }
    //------------------ find tafsilis ---------------
    $LoanPersonTafsili = FindTafsiliID($ReqObj->LoanPersonID, TAFTYPE_PERSONS);
    if (!$LoanPersonTafsili) {
        ExceptionHandler::PushException("تفصیلی مربوطه یافت نشد.[" . $ReqObj->LoanPersonID . "]");
        return false;
    }
    $LoanMode = "";
    if (!empty($ReqObj->ReqPersonID)) {
        $PersonObj = new BSC_persons($ReqObj->ReqPersonID);
        if ($PersonObj->IsAgent == "YES") {
            $LoanMode = "Agent";
        }
    } else {
        $LoanMode = "Customer";
    }
    if ($LoanMode == "Agent") {
        $ReqPersonTafsili = FindTafsiliID($ReqObj->ReqPersonID, TAFTYPE_PERSONS);
        if (!$ReqPersonTafsili) {
            ExceptionHandler::PushException("تفصیلی مربوطه یافت نشد.[" . $ReqObj->ReqPersonID . "]");
            return false;
        }
        $SubAgentTafsili = "";
        if (!empty($ReqObj->SubAgentID)) {
            $SubAgentTafsili = FindTafsiliID($ReqObj->SubAgentID, TAFTYPE_SUBAGENT);
            if (!$SubAgentTafsili) {
                ExceptionHandler::PushException("تفصیلی زیر واحد سرمایه گذار یافت نشد.[" . $ReqObj->SubAgentID . "]");
                return false;
            }
        }
    }
    //--------------------------------------------------------
    $firstPayDate = $PartObj->PartDate;
    $result = ComputeWagesAndDelays($PartObj, $PartObj->PartAmount, $firstPayDate, $PartObj->PartDate);
    $TotalFundWage = $result["TotalFundWage"];
    $TotalFundDelay = $result["TotalFundDelay"];
    $TotalAgentDelay = $result["TotalAgentDelay"];
    $PayObj->PayAmount = $PayObj->PayAmount * 1;
    $curWage = round($PayObj->PayAmount * $TotalFundWage / $PartObj->PartAmount);
    //----------------- get total remain ---------------------
    require_once getenv("DOCUMENT_ROOT") . '/loan/request/request.class.php';
    $dt = array();
    $returnArr = LON_requests::ComputePayments($PayObj->RequestID, $dt, $pdo);
    $ExtraPay = 0;
    if ($returnArr[count($returnArr) - 1]["TotalRemainder"] * 1 < 0) {
        $PayObj->PayAmount = $PayObj->PayAmount + $returnArr[count($returnArr) - 1]["TotalRemainder"] * 1;
        $PayObj->Edit();
        $ExtraPay = $returnArr[count($returnArr) - 1]["TotalRemainder"] * -1;
        $PayObj->PayAmount = $PayObj->PayAmount;
    }
    //----------------- add Doc items ------------------------
    $itemObj = new ACC_DocItems();
    $itemObj->DocID = $obj->DocID;
    $itemObj->details = "پرداخت قسط وام شماره " . $ReqObj->RequestID;
    $itemObj->TafsiliType = TAFTYPE_PERSONS;
    $itemObj->TafsiliID = $LoanPersonTafsili;
    if ($LoanMode == "Agent") {
        $itemObj->TafsiliType2 = TAFTYPE_PERSONS;
        $itemObj->TafsiliID2 = $ReqPersonTafsili;
    }
    $itemObj->locked = "YES";
    $itemObj->SourceType = DOCTYPE_INSTALLMENT_PAYMENT;
    $itemObj->SourceID = $ReqObj->RequestID;
    $itemObj->SourceID2 = $PayObj->BackPayID;
    //---------------- loan -----------------
    $itemObj->DocID = $obj->DocID;
    $itemObj->CostID = $CostCode_Loan;
    $itemObj->DebtorAmount = 0;
    $itemObj->CreditorAmount = $PayObj->PayAmount;
    if (!$itemObj->Add($pdo)) {
        ExceptionHandler::PushException("خطا در ایجاد ردیف وام");
        return false;
    }
    // -------------- bank ---------------
    if ($CenterAccount) {
        unset($itemObj->ItemID);
        unset($itemObj->TafsiliType);
        unset($itemObj->TafsiliType2);
        unset($itemObj->TafsiliID2);
        unset($itemObj->TafsiliID);
        $itemObj->locked = "NO";
        $itemObj->CostID = $FirstCostID;
        $itemObj->DebtorAmount = $PayObj->PayAmount + $ExtraPay;
        $itemObj->CreditorAmount = 0;
        if (!$itemObj->Add($pdo)) {
            ExceptionHandler::PushException("خطا در ایجاد ردیف محل پرداخت");
            return false;
        }
        $Secobj = new ACC_docs();
        $Secobj->RegDate = PDONOW;
        $Secobj->regPersonID = $_SESSION['USER']["PersonID"];
        $Secobj->DocDate = PDONOW;
        $Secobj->CycleID = $CycleID;
        $Secobj->BranchID = $BranchID;
        $Secobj->DocType = DOCTYPE_INSTALLMENT_PAYMENT;
        $Secobj->description = "پرداخت قسط وام شماره " . $ReqObj->RequestID . " به نام " . $ReqObj->_LoanPersonFullname;
        if (!$Secobj->Add($pdo)) {
            ExceptionHandler::PushException("خطا در ایجاد سند شعبه واسط ");
            return false;
        }
        unset($itemObj->ItemID);
        unset($itemObj->TafsiliType);
        unset($itemObj->TafsiliType2);
        unset($itemObj->TafsiliID2);
        unset($itemObj->TafsiliID);
        $itemObj->DocID = $Secobj->DocID;
        $itemObj->CostID = $SecondCostID;
        $itemObj->DebtorAmount = 0;
        $itemObj->CreditorAmount = $PayObj->PayAmount + $ExtraPay;
        if (!$itemObj->Add($pdo)) {
            ExceptionHandler::PushException("خطا در ایجاد ردیف سند شعبه واسط");
            return false;
        }
        $CostObj = new ACC_CostCodes($CostID);
        unset($itemObj->ItemID);
        unset($itemObj->TafsiliType);
        unset($itemObj->TafsiliType2);
        unset($itemObj->TafsiliID2);
        unset($itemObj->TafsiliID);
        $itemObj->CostID = $CostID;
        $itemObj->DebtorAmount = $PayObj->PayAmount + $ExtraPay;
        $itemObj->CreditorAmount = 0;
        $itemObj->TafsiliType = $CostObj->TafsiliType;
        if ($TafsiliID != "") {
            $itemObj->TafsiliID = $TafsiliID;
        }
        $itemObj->TafsiliType2 = $CostObj->TafsiliType2;
        if ($TafsiliID2 != "") {
            $itemObj->TafsiliID2 = $TafsiliID2;
        }
        if (!$itemObj->Add($pdo)) {
            ExceptionHandler::PushException("خطا در ایجاد ردیف سند شعبه واسط");
            return false;
        }
    } else {
        $CostObj = new ACC_CostCodes($CostID);
        unset($itemObj->ItemID);
        unset($itemObj->TafsiliType);
        unset($itemObj->TafsiliType2);
        unset($itemObj->TafsiliID2);
        unset($itemObj->TafsiliID);
        $itemObj->locked = "NO";
        $itemObj->CostID = $CostID;
        $itemObj->DebtorAmount = $PayObj->PayAmount + $ExtraPay;
        $itemObj->CreditorAmount = 0;
        $itemObj->TafsiliType = $CostObj->TafsiliType;
        if ($TafsiliID != "") {
            $itemObj->TafsiliID = $TafsiliID;
        }
        $itemObj->TafsiliType2 = $CostObj->TafsiliType2;
        if ($TafsiliID2 != "") {
            $itemObj->TafsiliID2 = $TafsiliID2;
        }
        if (!$itemObj->Add($pdo)) {
            ExceptionHandler::PushException("خطا در ایجاد ردیف بانک");
            return false;
        }
    }
    $itemObj->locked = "YES";
    $itemObj->DocID = $obj->DocID;
    unset($itemObj->TafsiliType2);
    unset($itemObj->TafsiliID2);
    //-------------- extra to Pasandaz ----------------
    if ($ExtraPay > 0) {
        unset($itemObj->ItemID);
        $itemObj->DocID = $obj->DocID;
        $itemObj->CostID = COSTID_saving;
        $itemObj->DebtorAmount = 0;
        $itemObj->CreditorAmount = $ExtraPay;
        $itemObj->TafsiliType = TAFTYPE_PERSONS;
        $itemObj->TafsiliID = $LoanPersonTafsili;
        if (!$itemObj->Add($pdo)) {
            ExceptionHandler::PushException("خطا در ایجاد ردیف وام");
            return false;
        }
    }
    //----------------------------------------
    if ($PartObj->DelayReturn == "INSTALLMENT") {
        $dt = PdoDataAccess::runquery("select ifnull(sum(CreditorAmount),0) from ACC_DocItems \r\n\t\t\twhere CostID=? AND SourceID=? AND SourceID3=?", array($CostCode_wage, $ReqObj->RequestID, "1"));
        $TotalFundDelay = $TotalFundDelay * 1 - $dt[0][0] * 1;
        unset($itemObj->ItemID);
        unset($itemObj->TafsiliType);
        unset($itemObj->TafsiliID);
        unset($itemObj->TafsiliType2);
        unset($itemObj->TafsiliID2);
        $itemObj->CostID = $CostCode_wage;
        $itemObj->details = "بابت تنفس وام " . $PayObj->RequestID;
        $itemObj->DebtorAmount = 0;
        $itemObj->SourceID3 = "1";
        $itemObj->CreditorAmount = min($TotalFundDelay, $PayObj->PayAmount);
        if (!$itemObj->Add($pdo)) {
            ExceptionHandler::PushException("خطا در ایجاد سند");
            return false;
        }
        $PayObj->PayAmount = $PayObj->PayAmount - min($TotalFundDelay, $PayObj->PayAmount);
        unset($itemObj->SourceID3);
    }
    if ($PayObj->PayAmount > 0 && $LoanMode == "Agent" && $PartObj->AgentDelayReturn == "INSTALLMENT") {
        $dt = PdoDataAccess::runquery("select ifnull(sum(CreditorAmount),0) from ACC_DocItems \r\n\t\t\twhere CostID=? AND SourceID=? AND SourceID2=? AND SourceID3=?", array($CostCode_deposite, $ReqObj->RequestID, $PayObj->BackPayID, "1"));
        $TotalAgentDelay = $TotalAgentDelay * 1 - $dt[0][0] * 1;
        unset($itemObj->ItemID);
        unset($itemObj->TafsiliType);
        unset($itemObj->TafsiliID);
        unset($itemObj->TafsiliType2);
        unset($itemObj->TafsiliID2);
        $itemObj->CostID = $CostCode_deposite;
        $itemObj->DebtorAmount = 0;
        $itemObj->details = "بابت تنفس وام " . $PayObj->RequestID;
        $itemObj->SourceID3 = "1";
        $itemObj->CreditorAmount = min($TotalAgentDelay, $PayObj->PayAmount);
        if (!$itemObj->Add($pdo)) {
            ExceptionHandler::PushException("خطا در ایجاد سند");
            return false;
        }
        $PayObj->PayAmount = $PayObj->PayAmount - min($TotalAgentDelay, $PayObj->PayAmount);
        unset($itemObj->SourceID3);
    }
    //------------- wage --------------
    if ($LoanMode == "Agent") {
        if ($PayObj->PayAmount * 1 > 0) {
            $amount = $PayObj->PayAmount;
            if ($PartObj->WageReturn == "INSTALLMENT") {
                $amount = $PayObj->PayAmount - $curWage;
                $amount = $amount < 0 ? 0 : $amount;
            }
            //---- اضافه به سپرده -----
            unset($itemObj->ItemID);
            unset($itemObj->TafsiliType2);
            unset($itemObj->TafsiliID2);
            $itemObj->details = "پرداخت قسط وام شماره " . $ReqObj->RequestID;
            $itemObj->CostID = $CostCode_deposite;
            $itemObj->DebtorAmount = 0;
            $itemObj->CreditorAmount = $amount;
            $itemObj->TafsiliType = TAFTYPE_PERSONS;
            $itemObj->TafsiliID = $ReqPersonTafsili;
            if ($SubAgentTafsili != "") {
                $itemObj->TafsiliType2 = TAFTYPE_SUBAGENT;
                $itemObj->TafsiliID2 = $SubAgentTafsili;
            }
            if (!$itemObj->Add($pdo)) {
                ExceptionHandler::PushException("خطا در ایجاد ردیف سپرده");
                return false;
            }
            unset($itemObj->ItemID);
            $itemObj->CostID = $CostCode_commitment;
            $itemObj->DebtorAmount = $amount;
            $itemObj->CreditorAmount = 0;
            if (!$itemObj->Add($pdo)) {
                ExceptionHandler::PushException("خطا در ایجاد ردیف تعهد");
                return false;
            }
        }
    }
    //---------------------------------------------------------
    if (ExceptionHandler::GetExceptionCount() > 0) {
        return false;
    }
    return true;
}
Example #4
0
 function CheckPartAmount()
 {
     $dt = parent::runquery("select ifnull(sum(PayAmount),0) from LON_payments \r\n\t\t\twhere RequestID=? AND PayID<>?", array($this->RequestID, $this->PayID));
     $PartObj = LON_ReqParts::GetValidPartObj($this->RequestID);
     if ($dt[0][0] * 1 + $this->PayAmount * 1 > $PartObj->PartAmount * 1) {
         ExceptionHandler::PushException("مبالغ وارد شده از سقف مبلغ وام تجاوز می کند");
         return false;
     }
     return true;
 }