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; }
$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"];
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; }
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; }