예제 #1
0
function changePass()
{
    require_once '../../../header.inc.php';
    require_once inc_response;
    require_once inc_dataReader;
    $pdoAcc = PdoDataAccess::getPdoObject(config::$db_servers['master']["host"], config::$db_servers['master']["framework_user"], config::$db_servers['master']["framework_pass"], "framework");
    $dt = PdoDataAccess::runquery("select * from AccountSpecs \n\t\t\t\t\t\t\t\t\t\twhere personID=:psid", array(":psid" => $_SESSION['PersonID']), $pdoAcc);
    if (count($dt) == 0) {
        echo "false";
        die;
    }
    $password = md5($_POST["cur_pass"]);
    $stored_seed = substr($dt[0]["pswd1"], 40, 10);
    if (sha1($stored_seed . $password . $stored_seed) . $stored_seed != $dt[0]["pswd1"]) {
        echo "CurPassError";
        die;
    }
    $seed = '';
    $password2 = md5($_POST["new_pass"]);
    for ($i = 1; $i <= 10; $i++) {
        $seed .= substr('0123456789abcdef', rand(0, 15), 1);
    }
    PdoDataAccess::RUNQUERY("update AccountSpecs set pswd1=:pswd where personID=:psid", array(":pswd" => sha1($seed . $password2 . $seed) . $seed, ":psid" => $_SESSION['PersonID']), $pdoAcc);
    if (ExceptionHandler::GetExceptionCount() != 0) {
        echo "CurPassError";
        die;
    }
    //PdoDataAccess::AUDIT("AccountSpecs","تغییر رمز عبور", "");
    echo "true";
    die;
}
예제 #2
0
 public function __construct($FacilityID, $ElementID = 0, $DeputyID = "", $ModuleID = "")
 {
     $db = parent::getPdoObject(config::$db_servers['master']["host"], config::$db_servers['master']["framework_user"], config::$db_servers['master']["framework_pass"], "framework");
     if ($DeputyID != "" && $ModuleID != "") {
         $this->DeputyID = $DeputyID;
         $this->ModuleID = $ModuleID;
         $this->ElementID = $ElementID;
     } else {
         if (!empty($FacilityID)) {
             $query = "select * from SystemFacilities where FacilityID=?";
             $dt = parent::runquery($query, array($FacilityID), $db);
             if (parent::GetExceptionCount() != 0) {
                 return;
             }
             if (count($dt) == 0) {
                 return;
             }
             $this->DeputyID = $dt[0]["DeputyID"];
             $this->ModuleID = $dt[0]["ModuleID"];
             $this->ElementID = $ElementID;
         } else {
             return;
         }
     }
     $this->UserID = $_SESSION["User"]->UserID;
     $this->Roles = UserRole::GetUserRole($this->DeputyID, $this->UserID);
     if (parent::GetExceptionCount() != 0) {
         return;
     }
     $rolesStr = "-1";
     if (count($this->Roles) != 0) {
         for ($i = 0; $i < count($this->Roles); $i++) {
             $rolesStr .= "," . $this->Roles[$i]->UserRole;
         }
     }
     $query = "select DeputyID,ModuleID,ElementID,\r\n\t\t\t\t\t\tmax(AcInsert) as AcInsert,\r\n\t\t\t\t\t\tmax(AcFullUpdate) as AcFullUpdate,\r\n\t\t\t\t\t\tmax(AcUpdate) as AcUpdate,\r\n\t\t\t\t\t\tmax(AcFullDelete) as AcFullDelete,\r\n\t\t\t\t\t\tmax(AcDelete) as AcDelete\r\n\t\t\t\tfrom ModuleAccess\r\n\t\t\t\twhere (RoleID in({$rolesStr}) OR UserID=:uid)\r\n\t\t\t\t\tAND DeputyID=:did AND ModuleID=:mid AND ElementID=:eid\r\n\t\t\t\tgroup by DeputyID,ModuleID,ElementID";
     $dt = parent::runquery($query, array(":uid" => $this->UserID, ":did" => $this->DeputyID, ":mid" => $this->ModuleID, ":eid" => $this->ElementID), $db);
     if (parent::GetExceptionCount() != 0 || count($dt) == 0) {
         return;
     }
     $this->AcInsert = $dt[0]["AcInsert"] == 0 ? false : true;
     $this->AcFullUpdate = $dt[0]["AcFullUpdate"] == 0 ? false : true;
     $this->AcUpdate = $dt[0]["AcUpdate"] == 0 ? false : true;
     $this->AcFullDelete = $dt[0]["AcFullDelete"] == 0 ? false : true;
     $this->AcDelete = $dt[0]["AcDelete"] == 0 ? false : true;
 }
예제 #3
0
 function Add($pdo = null)
 {
     if (!$pdo) {
         $pdo = PdoDataAccess::getPdoObject();
     }
     $stmt = $pdo->prepare("insert into ACC_equalizations(RegDate,BankID,ImportFile) \r\n\t\t\tvalues(" . PDONOW . ",:b,:data)");
     $stmt->bindParam(":b", $this->BankID);
     $stmt->bindParam(":data", $this->ImportFile, PDO::PARAM_LOB);
     $stmt->execute();
     $this->EqualizationID = $pdo->lastInsertId();
     $daObj = new DataAudit();
     $daObj->ActionType = DataAudit::Action_add;
     $daObj->MainObjectID = $this->EqualizationID;
     $daObj->TableName = "ACC_equalizations";
     $daObj->execute();
     return true;
 }
예제 #4
0
 function Add()
 {
     $pdo = parent::getPdoObject();
     /*@var $pdo PDO*/
     $pdo->beginTransaction();
     $this->row_no = parent::GetLastID("HRM_person_dependent_supports", "row_no", "PersonID=:pid and master_row_no=:mrno", array(":pid" => $this->PersonID, ":mrno" => $this->master_row_no)) + 1;
     $result = parent::insert("HRM_person_dependent_supports", $this);
     if ($result === false) {
         $pdo->rollBack();
         return false;
     }
     $this->row_no = parent::InsertID();
     $daObj = new DataAudit();
     $daObj->ActionType = DataAudit::Action_add;
     $daObj->RelatedPersonID = $this->PersonID;
     $daObj->RelatedPersonType = 3;
     $daObj->MainObjectID = $this->row_no;
     $daObj->TableName = "HRM_person_dependent_supports";
     $daObj->execute();
     $pdo->commit();
     return true;
 }
예제 #5
0
function SavePersonAccess()
{
    $keys = array_keys($_POST);
    $pdo = PdoDataAccess::getPdoObject();
    /*@var $pdo PDO*/
    $pdo->beginTransaction();
    PdoDataAccess::runquery("delete a from FRW_access a join FRW_menus using(MenuID) where SystemID=? AND PersonID=?", array($_POST["SystemID"], $_POST["PersonID"]));
    for ($i = 0; $i < count($keys); $i++) {
        if (strpos($keys[$i], "viewChk_") === false) {
            continue;
        }
        $obj = new FRW_access();
        $obj->PersonID = $_POST["PersonID"];
        $obj->MenuID = preg_split('/_/', $keys[$i]);
        $obj->MenuID = $obj->MenuID[1];
        $obj->ViewFlag = isset($_POST["viewChk_" . $obj->MenuID]) ? "YES" : "NO";
        $obj->AddFlag = isset($_POST["addChk_" . $obj->MenuID]) ? "YES" : "NO";
        $obj->EditFlag = isset($_POST["editChk_" . $obj->MenuID]) ? "YES" : "NO";
        $obj->RemoveFlag = isset($_POST["removeChk_" . $obj->MenuID]) ? "YES" : "NO";
        if (!$obj->AddAccess()) {
            $pdo->rollBack();
            //print_r(ExceptionHandler::PopAllExceptions());
            echo Response::createObjectiveResponse(false, "");
            die;
        }
    }
    $pdo->commit();
    echo Response::createObjectiveResponse(true, "");
    die;
}
예제 #6
0
function CreateLoan()
{
    $pdo = PdoDataAccess::getPdoObject();
    $pdo->beginTransaction();
    $obj = new LON_requests();
    PdoDataAccess::FillObjectByArray($obj, $_POST);
    $obj->LoanID = 1;
    $obj->BranchID = $_SESSION["accounting"]["BranchID"];
    $obj->ReqDate = PDONOW;
    $result = $obj->AddRequest($pdo);
    if (!$result) {
        $pdo->rollBack();
        echo Response::createObjectiveResponse(false, "خطا در ایجاد وام");
        die;
    }
    $pobj = new LON_ReqParts();
    $pobj->RequestID = $obj->RequestID;
    PdoDataAccess::FillObjectByArray($pobj, $_POST);
    $pobj->PartDate = PDONOW;
    $pobj->PartDesc = "شرایط اولیه";
    $pobj->PayInterval = 1;
    $pobj->FundWage = $pobj->CustomerWage;
    $result = $pobj->AddPart();
    if (!$result) {
        $pdo->rollBack();
        echo Response::createObjectiveResponse(false, "خطا در ایجاد شرایط وام");
        die;
    }
    $pdo->commit();
    echo Response::createObjectiveResponse(true, "");
    die;
}
예제 #7
0
 static function Remove($DocID, $pdo = null)
 {
     $temp = parent::runquery("select * from ACC_docs join ACC_cycles using(CycleID)\n\t\t\twhere DocID=?", array($DocID));
     if (count($temp) == 0) {
         return false;
     }
     if ($temp[0]["DocStatus"] != "RAW") {
         ExceptionHandler::PushException("سند مربوطه تایید شده و قابل حذف نمی باشد");
         return false;
     }
     if ($temp[0]["IsClosed"] == "YES") {
         ExceptionHandler::PushException("دوره مربوطه بسته شده و سند قابل حذف نمی باشد.");
         return false;
     }
     if ($pdo == null) {
         $pdo2 = parent::getPdoObject();
         $pdo2->beginTransaction();
     } else {
         $pdo2 = $pdo;
     }
     $result = parent::delete("ACC_DocCheques", "DocID=?", array($DocID), $pdo2);
     if ($result === false) {
         return false;
     }
     $result = parent::delete("ACC_DocItems", "DocID=?", array($DocID), $pdo2);
     if ($result === false) {
         return false;
     }
     $result = parent::delete("ACC_docs", "DocID=?", array($DocID), $pdo2);
     if ($result === false) {
         return false;
     }
     $daObj = new DataAudit();
     $daObj->ActionType = DataAudit::Action_delete;
     $daObj->MainObjectID = $DocID;
     $daObj->TableName = "ACC_docs";
     $daObj->execute($pdo2);
     if ($pdo == null) {
         $pdo2->commit();
     }
     return true;
 }
예제 #8
0
 static function RemoveUnit($ouid)
 {
     $whereParams = array();
     $whereParams[":ouid"] = $ouid;
     $db = PdoDataAccess::getPdoObject();
     /*@var $db PDO*/
     $db->beginTransaction();
     parent::runquery("insert into org_units_history select *,'DELETE',now() from org_new_units where ouid=:ouid", $whereParams);
     $return = PdoDataAccess::delete("org_new_units", " ouid=:ouid", $whereParams);
     if ($return === false) {
         $db->rollBack();
         return false;
     }
     $daObj = new DataAudit();
     $daObj->ActionType = DataAudit::Action_delete;
     $daObj->MainObjectID = $ouid;
     $daObj->TableName = "org_new_units";
     $daObj->execute();
     $db->commit();
     return true;
 }
예제 #9
0
 function AddParam()
 {
     if ($this->date_overlap()) {
         return false;
     }
     $pdo = parent::getPdoObject();
     $pdo->beginTransaction();
     $result = parent::insert("HRM_salary_params", $this);
     if ($result === false) {
         $pdo->rollBack();
         return false;
     }
     $this->param_id = parent::InsertID();
     $daObj = new DataAudit();
     $daObj->ActionType = DataAudit::Action_add;
     $daObj->RelatedPersonType = 3;
     $daObj->MainObjectID = $this->param_id;
     $daObj->TableName = "HRM_salary_params";
     $daObj->execute();
     $pdo->commit();
     return true;
 }
예제 #10
0
function ChangeStatus()
{
    $pdo = PdoDataAccess::getPdoObject();
    $pdo->beginTransaction();
    $mode = $_REQUEST["mode"];
    $SourceObj = new WFM_FlowRows($_POST["RowID"]);
    $newObj = new WFM_FlowRows();
    $newObj->FlowID = $SourceObj->FlowID;
    $newObj->ObjectID = $SourceObj->ObjectID;
    $newObj->PersonID = $_SESSION["USER"]["PersonID"];
    $newObj->ActionType = $mode;
    $newObj->ActionDate = PDONOW;
    $newObj->ActionComment = $_POST["ActionComment"];
    //.............................................
    if (isset($_POST["StepID"])) {
        $StepID = $_POST["StepID"];
    } else {
        $StepID = $SourceObj->ActionType == "CONFIRM" ? $SourceObj->_StepID + 1 : $SourceObj->_StepID - 1;
    }
    $dt = PdoDataAccess::runquery("select StepRowID, StepDesc from WFM_FlowSteps \r\n\t\twhere IsActive='YES' AND FlowID=? AND StepID=?", array($newObj->FlowID, $StepID));
    if (count($dt) == 0) {
        echo Response::createObjectiveResponse(false, "1");
        die;
    }
    $newObj->StepRowID = $dt[0]["StepRowID"];
    $newObj->StepDesc = $dt[0]["StepDesc"];
    //.............................................
    if ($SourceObj->ActionType == "CONFIRM") {
        $dt = PdoDataAccess::runquery("select Max(StepID) maxStepID from WFM_FlowSteps \r\n\t\t\twhere IsActive='YES' AND FlowID=? AND IsOuter='NO'", array($newObj->FlowID));
        if ($dt[0][0] == $StepID) {
            $newObj->IsEnded = "YES";
        }
    }
    //.............................................
    $result = $newObj->AddFlowRow($StepID, $pdo);
    if (!$result) {
        $pdo->rollBack();
        echo Response::createObjectiveResponse($result, "2");
        die;
    }
    if ($newObj->IsEnded == "YES") {
        $result = WFM_FlowRows::EndObjectFlow($newObj->FlowID, $newObj->ObjectID, $pdo);
    }
    if (!$result) {
        $pdo->rollBack();
        echo Response::createObjectiveResponse($result, "3");
        die;
    }
    $pdo->commit();
    echo Response::createObjectiveResponse($result, "");
    die;
}
예제 #11
0
function SaveLoanCheque()
{
    $pdo = PdoDataAccess::getPdoObject();
    $pdo->beginTransaction();
    $DocID = "";
    $cheques = json_decode($_POST["cheques"]);
    foreach ($cheques as $cheque) {
        $obj = new ACC_IncomeCheques();
        PdoDataAccess::FillObjectByJsonData($obj, $cheque);
        $obj->ChequeStatus = INCOMECHEQUE_NOTVOSUL;
        if (!$obj->Add($pdo)) {
            echo Response::createObjectiveResponse(false, ExceptionHandler::GetExceptionsToString());
            die;
        }
        //................. add back pays ........................
        $bobj = new LON_BackPays();
        $bobj->PayDate = $obj->ChequeDate;
        $bobj->IncomeChequeID = $obj->IncomeChequeID;
        $bobj->RequestID = $_POST["RequestID"];
        $bobj->PayAmount = $obj->ChequeAmount;
        $bobj->PayType = BACKPAY_PAYTYPE_CHEQUE;
        $bobj->Add($pdo);
        //.......................................................
        ACC_IncomeCheques::AddToHistory($obj->IncomeChequeID, $obj->ChequeStatus, $pdo);
        //--------------------------------------------
        $DocID = RegisterOuterCheque($DocID, $obj, $pdo);
        if (!$DocID) {
            print_r(ExceptionHandler::PopAllExceptions());
            echo Response::createObjectiveResponse(false, ExceptionHandler::GetExceptionsToString());
            die;
        }
    }
    $pdo->commit();
    echo Response::createObjectiveResponse(true, "");
    die;
}
예제 #12
0
 function UpdateCost($pdo = null)
 {
     if ($pdo == null) {
         $db = parent::getPdoObject();
         $db->beginTransaction();
     } else {
         $db = $pdo;
     }
     $dt = parent::runquery("select * from ACC_DocItems where CostID=?", array($this->CostID));
     $obj = new ACC_CostCodes($this->CostID);
     if (count($dt) > 0 && ($this->level1 != $obj->level1 || $this->level2 != $obj->level2 || $this->level3 != $obj->level3)) {
         $this->DeleteCost($db);
         unset($this->CostID);
         $result = $this->InsertCost($db);
         if ($result) {
             $db->commit();
         }
         return $result;
     }
     $dt = PdoDataAccess::runquery("select c2.* from ACC_CostCodes c1 \n\t\t\tjoin ACC_CostCodes c2 on(c2.IsActive='YES' AND c1.CostID<>c2.CostID AND c1.CostCode=c2.CostCode)\n\t\t\twhere c1.CostID=?", array($this->CostID), $db);
     if (count($dt) > 0) {
         if ($pdo == null) {
             $db->rollBack();
         }
         parent::PushException("کد حساب تکراری است");
         return false;
     }
     $res = parent::update("ACC_CostCodes", $this, "CostID=:c", array(":c" => $this->CostID), $db);
     if ($res === false) {
         if ($pdo == null) {
             $db->rollBack();
         }
         return false;
     }
     $query = "update ACC_CostCodes c \n\t\t\tleft join ACC_blocks b1 on(b1.levelID=1 AND b1.blockID=c.level1)\n\t\t\tleft join ACC_blocks b2 on(b2.levelID=2 AND b2.blockID=c.level2)\n\t\t\tleft join ACC_blocks b3 on(b3.levelID=3 AND b3.blockID=c.level3)\n\t\t\tset c.CostCode=concat_ws('-', b1.blockCode,b2.BlockCode,b3.BlockCode)\n\t\t\twhere CostID=?";
     $res = parent::runquery($query, array($this->CostID), $db);
     if ($res === false) {
         if ($pdo == null) {
             $db->rollBack();
         }
         return false;
     }
     $auditObj = new DataAudit();
     $auditObj->ActionType = DataAudit::Action_update;
     $auditObj->MainObjectID = $this->CostID;
     $auditObj->TableName = "ACC_CostCodes";
     $auditObj->execute($db);
     if ($pdo == null) {
         $db->commit();
     }
     return true;
 }
예제 #13
0
 function AddPage()
 {
     $db = PdoDataAccess::getPdoObject();
     $stmt = $db->prepare("insert into DMS_DocFiles(DocumentID,PageNo,FileType,FileContent) \r\n\t\t\tvalues(:did,:p,:ft,:data)");
     $stmt->bindParam(":did", $this->DocumentID);
     $stmt->bindParam(":p", $this->PageNo);
     $stmt->bindParam(":ft", $this->FileType);
     $stmt->bindParam(":data", $this->FileContent, PDO::PARAM_LOB);
     $stmt->execute();
     $this->RowID = $db->lastInsertId();
     $daObj = new DataAudit();
     $daObj->ActionType = DataAudit::Action_add;
     $daObj->MainObjectID = $this->RowID;
     $daObj->SubObjectID = $this->DocumentID;
     $daObj->TableName = "DMS_DocFiles";
     $daObj->execute();
     return true;
 }
예제 #14
0
 static function RemovePerson($PersonID)
 {
     $pdo = PdoDataAccess::getPdoObject();
     if ($pdo->beginTransaction()) {
         $whereParam = array(":PID" => $PersonID);
         require_once 'dependent.class.php';
         if (count(manage_person_dependency::GetAllDependency("PersonID=:PID", $whereParam)) != 0) {
             return "فرد مورد نظر دارای وابستگی می باشد و قابل حذف نیست";
         }
         $return = manage_staff::remove($PersonID, "", $pdo);
         if (!$return) {
             $pdo->rollBack();
             return false;
         }
         $return = PdoDataAccess::delete("HRM_persons", "PersonID=:PID", $whereParam, $pdo);
         if (!$return) {
             $pdo->rollBack();
             return false;
         }
         $pdo->commit();
         $daObj = new DataAudit();
         $daObj->ActionType = DataAudit::Action_delete;
         $daObj->MainObjectID = $PersonID;
         $daObj->TableName = "persons";
         $daObj->execute();
         return true;
     } else {
         return false;
     }
     return true;
 }
예제 #15
0
파일: test.php 프로젝트: jafarkhani/rtfund
if (!isset($_REQUEST["resultCode"])) {
    $result = "تراکنش بی نتیجه";
} else {
    if ($_REQUEST["resultCode"] == 100) {
        $PartID = $_REQUEST["paymentId"];
        $totalAmount = 1000;
        if ($totalAmount > 0) {
            $result = "پرداخت الكترونيكي شما به درستي انجام گرفت. شماره رسيد بانكي زير براي شما صادر گرديده است: </p>";
            $result .= "<table width=80% align=center border=1 cellspacing=0 cellpadding=5 dir=rtl>\r\n\t\t\t<tr>\r\n\t\t\t\t<td>مبلغ پرداختي: </td>\r\n\t\t\t\t<td><b>" . number_format($totalAmount) . "</b> ریال  </td>\r\n\t\t\t</tr>\r\n\t\t\t<tr>\r\n\t\t\t\t<td> شماره پیگیری: </td>\r\n\t\t\t\t<td dir=ltr align=right><b>" . $_REQUEST['referenceId'] . "</b></td>\r\n\t\t\t</tr>\r\n\t\t</table>";
            $obj = new LON_BackPays();
            $obj->PartID = $PartID;
            $obj->PayType = 4;
            $obj->PayAmount = $totalAmount;
            $obj->PayDate = PDONOW;
            $obj->PayRefNo = $_REQUEST['referenceId'];
            $pdo = PdoDataAccess::getPdoObject();
            $pdo->beginTransaction();
            $error = false;
            if (!$obj->AddPay($pdo)) {
                $error = true;
            }
            if (!$error) {
                if (!RegisterCustomerPayDoc($obj, $pdo)) {
                    $error = true;
                }
            }
            if ($error) {
                print_r(ExceptionHandler::PopAllExceptions());
                $pdo->rollBack();
                $result .= "<br> عملیات پرداخت قسط در نرم افزار صندوق به درستی ثبت نگردید. " . "<br> جهت اعمال آن با صندوق تماس بگیرید.";
            } else {
예제 #16
0
function deleteTemplate()
{
    $pdo = PdoDataAccess::getPdoObject();
    $pdo->beginTransaction();
    $obj = new CNT_templates($_POST['TemplateID']);
    $result = $obj->Remove();
    if (!$result) {
        $pdo->rollBack();
        //print_r(ExceptionHandler::PopAllExceptions());
        //echo PdoDataAccess::GetLatestQueryString();
        echo Response::createObjectiveResponse(false, $e->getMessage());
        die;
    }
    $pdo->commit();
    echo Response::createObjectiveResponse(true, '');
    die;
}
예제 #17
0
function SaveFilledForm()
{
    $pdo = PdoDataAccess::getPdoObject();
    $pdo->beginTransaction();
    PdoDataAccess::runquery("insert into VOT_FilledForms values(?,?," . PDONOW . ")", array($_POST["FormID"], $_SESSION["USER"]["PersonID"]), $pdo);
    $arr = array_keys($_POST);
    for ($i = 0; $i < count($arr); $i++) {
        if (strpos($arr[$i], "elem_") === false) {
            continue;
        }
        $ItemID = str_replace("elem_", "", $arr[$i]);
        $value = $_POST[$arr[$i]];
        PdoDataAccess::runquery("insert into VOT_FilledItems values(?,?,?,?)", array($_POST["FormID"], $_SESSION["USER"]["PersonID"], $ItemID, $value), $pdo);
    }
    if (ExceptionHandler::GetExceptionCount() > 0) {
        $pdo->rollBack();
        print_r(ExceptionHandler::PopAllExceptions());
        echo Response::createObjectiveResponse(false, "");
        die;
    }
    $pdo->commit();
    echo Response::createObjectiveResponse(true, "");
    die;
}
예제 #18
0
function SaveMessage()
{
    $obj = new OFC_messages();
    PdoDataAccess::FillObjectByArray($obj, $_POST);
    $obj->PersonID = $_SESSION["USER"]["PersonID"];
    $obj->MsgDate = PDONOW;
    $pdo = PdoDataAccess::getPdoObject();
    $pdo->beginTransaction();
    if (!$obj->Add($pdo)) {
        $pdo->rollBack();
        echo Response::createObjectiveResponse(false, "خطا در ایجاد پیام");
        die;
    }
    $receivers = json_decode($_POST["receivers"]);
    foreach ($receivers as $PersonID) {
        $obj2 = new OFC_MessageReceivers();
        $obj2->MessageID = $obj->MessageID;
        $obj2->PersonID = $PersonID;
        $obj2->Add($pdo);
    }
    if (ExceptionHandler::GetExceptionCount() != 0) {
        $pdo->rollBack();
        echo Response::createObjectiveResponse(false, "خطا در ارسال پیام");
        die;
    }
    $pdo->commit();
    echo Response::createObjectiveResponse(true, "");
    die;
}
예제 #19
0
function EditWarrantyDoc()
{
    $obj = new WAR_periods($_POST["RowID"]);
    $pdo = PdoDataAccess::getPdoObject();
    $pdo->beginTransaction();
    $DocID = WAR_periods::GetAccDoc($obj->RowID);
    if ($DocID == 0) {
        echo Response::createObjectiveResponse(false, "سند مربوطه یافت نشد");
        die;
    }
    $DocObj = new ACC_docs($DocID);
    if (!ReturnWarrantyDoc($obj, $pdo, true)) {
        echo Response::createObjectiveResponse(false, ExceptionHandler::GetExceptionsToString());
        die;
    }
    if (!RegisterWarrentyDoc($DocObj, $obj, $_POST["AccountTafsili"], $pdo)) {
        $pdo->rollback();
        echo Response::createObjectiveResponse(false, "خطا در صدور سند حسابداری");
        die;
    }
    $pdo->commit();
    echo Response::createObjectiveResponse(true, "");
    die;
}
예제 #20
0
function SaveDocType()
{
    $st = stripslashes(stripslashes($_POST["record"]));
    $data = json_decode($st);
    if ($data->InfoID * 1 == 0) {
        $pdo = PdoDataAccess::getPdoObject();
        $pdo->beginTransaction();
        $data->InfoID = PdoDataAccess::GetLastID("BaseInfo", "InfoID", "TypeID=?", array($data->TypeID), $pdo);
        $data->InfoID = $data->InfoID * 1 + 1;
        PdoDataAccess::runquery("insert into BaseInfo(TypeID,InfoID,InfoDesc,param1) values(?,?,?,?)", array($data->TypeID, $data->InfoID, $data->InfoDesc, $data->param1), $pdo);
        $pdo->commit();
    } else {
        PdoDataAccess::runquery("update BaseInfo set InfoDesc=? where TypeID=? AND InfoID=?", array($data->InfoDesc, $data->TypeID, $data->InfoID));
    }
    echo Response::createObjectiveResponse(ExceptionHandler::GetExceptionCount() == 0, "");
    die;
}
예제 #21
0
function RegisterInOutAccountDoc()
{
    $CostID = $_REQUEST["BaseCostID"];
    $BaseTafsiliID = $_REQUEST["BaseTafsiliID"];
    $mode = $_POST["mode"] * 1;
    if ($mode < 0) {
        $query = "select ifnull(sum(CreditorAmount-DebtorAmount),0) remaindar\n\t\tfrom ACC_DocItems di\n\t\t\tjoin ACC_docs d using(DocID)\n\t\twhere d.CycleID=:c AND d.BranchID=:b AND \n\t\t\tdi.CostID=:cost AND di.TafsiliType = :t AND di.TafsiliID=:tid";
        $param = array(":c" => $_SESSION["accounting"]["CycleID"], ":b" => $_SESSION["accounting"]["BranchID"], ":cost" => $CostID, ":t" => TAFTYPE_PERSONS, ":tid" => $BaseTafsiliID);
        $dt = PdoDataAccess::runquery($query, $param);
        //echo PdoDataAccess::GetLatestQueryString();
        if ($_POST["amount"] > $dt[0][0] * 1) {
            echo Response::createObjectiveResponse(false, "مبلغ وارد شده بیشتر از مانده حساب می باشد");
            die;
        }
    }
    $pdo = PdoDataAccess::getPdoObject();
    $pdo->beginTransaction();
    //---------------- add doc header --------------------
    $obj = new ACC_docs();
    $obj->RegDate = PDONOW;
    $obj->regPersonID = $_SESSION['USER']["PersonID"];
    $obj->DocDate = PDONOW;
    $obj->CycleID = $_SESSION["accounting"]["CycleID"];
    $obj->BranchID = $_SESSION["accounting"]["BranchID"];
    $obj->DocType = $mode > 0 ? DOCTYPE_SAVING_IN : DOCTYPE_SAVING_OUT;
    $obj->description = $mode > 0 ? "واریز به حساب" : "برداشت از حساب";
    if (!$obj->Add($pdo)) {
        echo Response::createObjectiveResponse(false, "خطا در ایجاد سند");
        die;
    }
    //-------------------------------------------------
    $itemObj = new ACC_DocItems();
    $itemObj->DocID = $obj->DocID;
    $itemObj->CostID = $CostID;
    $itemObj->DebtorAmount = $mode > 0 ? 0 : $_POST["amount"];
    $itemObj->CreditorAmount = $mode > 0 ? $_POST["amount"] : 0;
    $itemObj->TafsiliType = TAFTYPE_PERSONS;
    $itemObj->TafsiliID = $BaseTafsiliID;
    $itemObj->details = $_POST["description"];
    if (!$itemObj->Add($pdo)) {
        echo Response::createObjectiveResponse(false, ExceptionHandler::GetExceptionsToString());
        die;
    }
    $itemObj = new ACC_DocItems();
    $itemObj->DocID = $obj->DocID;
    $itemObj->CostID = $_POST["CostID"];
    $itemObj->DebtorAmount = $mode > 0 ? $_POST["amount"] : 0;
    $itemObj->CreditorAmount = $mode > 0 ? 0 : $_POST["amount"];
    if ($itemObj->CostID == COSTID_Bank) {
        $itemObj->TafsiliType = TAFTYPE_BANKS;
        $itemObj->TafsiliID = $_POST["TafsiliID"];
        $itemObj->TafsiliType2 = TAFTYPE_ACCOUNTS;
        $itemObj->TafsiliID2 = $_POST["TafsiliID2"];
    }
    if (!$itemObj->Add($pdo)) {
        echo Response::createObjectiveResponse(false, ExceptionHandler::GetExceptionsToString());
        die;
    }
    $pdo->commit();
    echo Response::createObjectiveResponse(true, "");
    die;
}
예제 #22
0
 public function run()
 {
     $pdo = parent::getPdoObject();
     $pdo->beginTransaction();
     if ($this->payment_type == 1) {
         $this->prepare_wheres();
         $this->init();
         $this->ins_commited_staff();
         $this->ins_last_flow_not_fich();
         $this->fail_log();
         $this->remove_from_limit_staff();
         $this->remove_payment_items();
         $this->remove_payment_writs();
         $this->remove_payments();
         $this->remove_temp_subtract_flow();
         $this->update_person_dependent_support();
     } else {
         $this->remove_payment_items($this->payment_type);
         $this->remove_payments($this->payment_type);
     }
     if (parent::GetExceptionCount() > 0) {
         print_r(ExceptionHandler::PopAllExceptions());
         echo "----";
         die;
         $pdo->rollBack();
         return false;
     } else {
         $pdo->commit();
         return true;
     }
 }
 private function save_to_DataBase()
 {
     //نوشتن آرايه paymnet_items در فايل
     ob_start();
     $pure_pay = 0;
     //متغيري جهت نگهداري خالص پرداختي
     reset($this->payment_items);
     foreach ($this->payment_items as $pay_row) {
         if ($pay_row['pay_value'] == 0 && $pay_row['get_value'] == 0 && (!empty($pay_row['diff_pay_value']) && $pay_row['diff_pay_value'] == 0) && (!empty($pay_row['diff_get_value']) && $pay_row['diff_get_value'] == 0) && $pay_row['salary_item_type_id'] != SIT_PROFESSOR_RETIRED && $pay_row['salary_item_type_id'] != SIT_STAFF_RETIRED) {
             continue;
         }
         if (empty($pay_row['pay_value'])) {
             $pay_row['pay_value'] = 0;
         }
         if (empty($pay_row['get_value'])) {
             $pay_row['get_value'] = 0;
         }
         if (empty($pay_row['param1'])) {
             $pay_row['param1'] = 0;
         }
         if (empty($pay_row['param2'])) {
             $pay_row['param2'] = 0;
         }
         if (empty($pay_row['param3'])) {
             $pay_row['param3'] = 0;
         }
         if (empty($pay_row['param4'])) {
             $pay_row['param4'] = 0;
         }
         if (empty($pay_row['param5'])) {
             $pay_row['param5'] = 0;
         }
         if (empty($pay_row['param6'])) {
             $pay_row['param6'] = 0;
         }
         if (empty($pay_row['param7'])) {
             $pay_row['param7'] = 0;
         }
         if (empty($pay_row['param8'])) {
             $pay_row['param8'] = 0;
         }
         if (empty($pay_row['param9'])) {
             $pay_row['param9'] = 0;
         }
         if (empty($pay_row['diff_param1'])) {
             $pay_row['diff_param1'] = 0;
         }
         if (empty($pay_row['diff_param2'])) {
             $pay_row['diff_param2'] = 0;
         }
         if (empty($pay_row['diff_param3'])) {
             $pay_row['diff_param3'] = 0;
         }
         if (empty($pay_row['diff_param4'])) {
             $pay_row['diff_param4'] = 0;
         }
         if (empty($pay_row['diff_param5'])) {
             $pay_row['diff_param5'] = 0;
         }
         if (empty($pay_row['diff_param6'])) {
             $pay_row['diff_param6'] = 0;
         }
         if (empty($pay_row['diff_param7'])) {
             $pay_row['diff_param7'] = 0;
         }
         if (empty($pay_row['diff_param8'])) {
             $pay_row['diff_param8'] = 0;
         }
         if (empty($pay_row['diff_param9'])) {
             $pay_row['diff_param9'] = 0;
         }
         if (empty($pay_row['diff_get_value'])) {
             $pay_row['diff_get_value'] = 0;
         }
         if (empty($pay_row['diff_pay_value'])) {
             $pay_row['diff_pay_value'] = 0;
         }
         if (!isset($pay_row['diff_value_coef'])) {
             $pay_row['diff_value_coef'] = 1;
         }
         echo '(' . $pay_row['diff_get_value'] . ',' . $pay_row['diff_pay_value'] . ',' . $pay_row['pay_year'] . ',' . $pay_row['pay_month'] . ',' . $pay_row['staff_id'] . ',' . $pay_row['salary_item_type_id'] . ',' . $pay_row['pay_value'] . ',' . $pay_row['get_value'] . ',' . $pay_row['param1'] . ',' . $pay_row['param2'] . ',' . $pay_row['param3'] . ',' . $pay_row['param4'] . ',' . $pay_row['param5'] . ',' . $pay_row['param6'] . ',' . $pay_row['param7'] . ',' . $pay_row['param8'] . ',' . $pay_row['param9'] . ',' . $pay_row['diff_param1'] . ',' . $pay_row['diff_param2'] . ',' . $pay_row['diff_param3'] . ',' . $pay_row['diff_param4'] . ',' . $pay_row['diff_param5'] . ',' . $pay_row['diff_param6'] . ',' . $pay_row['diff_param7'] . ',' . $pay_row['diff_param8'] . ',' . $pay_row['diff_param9'] . ',' . $pay_row['cost_center_id'] . ',' . $pay_row['payment_type'] . ',' . $pay_row['diff_value_coef'] . '),';
         echo chr(10);
         $pure_pay += $pay_row['pay_value'] + $pay_row['diff_pay_value'] * $pay_row['diff_value_coef'] - $pay_row['get_value'] - $pay_row['diff_get_value'] * $pay_row['diff_value_coef'];
     }
     /*خطا : حقوق فرد منفي شده است لذا ساير قسمتها براي او انجام نمي شود*/
     if ($pure_pay < 0 && !$this->backpay) {
         // ماه آخر بود
         if (!$this->__CALC_NEGATIVE_FICHE) {
             $this->log('FAIL', 'حقوق اين شخص به مبلغ ' . CurrencyModulesclass::toCurrency($pure_pay * -1, 'CURRENCY') . ' منفي شده است.');
             ob_clean();
             return;
         } else {
             $this->log('FAIL', 'حقوق اين شخص به مبلغ ' . CurrencyModulesclass::toCurrency($pure_pay * -1, 'CURRENCY') . ' منفي شده است.(فيش اين فرد از بخش چاپ فيش در دسترس است، لطفا پس از انجام كنترلهاي لازم فيشهاي منفي را ابطال كنيد)');
         }
     }
     $file_line = str_replace(',,', ',\\N,', ob_get_clean());
     //براي اصلاح مقادير null
     $file_line = str_replace(',,', ',\\N,', $file_line);
     //براي اصلاح مقادير null
     $pdo = parent::getPdoObject();
     $pdo->beginTransaction();
     //if($this->backpay) //در صورتي که محاسبه backpay صورت مي گيرد نيازي به نوشتن ساير فايلها نيست
     //	return ;
     if (!$this->backpay) {
         //نوشتن آرايه staff_writs در فايل payment_writs
         reset($this->staff_writs);
         //$writ_row = '';
         foreach ($this->staff_writs[$this->cur_staff_id] as $writ) {
             parent::runquery(" insert into hrmstotal.payment_writs (writ_id,writ_ver,staff_id,pay_year,pay_month,payment_type) values \n\t\t\t\t\t\t\t(" . $writ['writ_id'] . "," . $writ['writ_ver'] . "," . $this->cur_staff_id . "," . $this->__YEAR . "," . $this->last_month . "," . NORMAL . ")", array(), $pdo);
             /* echo parent::GetLatestQueryString() ;
                die();*/
             if (parent::AffectedRows() == 0) {
                 $this->log('FAIL', 'خطا در افزودن اطلاعات به جدول احکام مورد استفاده در ماه جاری ');
                 $pdo->rollBack();
                 ob_clean();
                 return;
             }
             /*$writ_row .= $writ['writ_id'] . ',' .
             		$writ['writ_ver'] . ',' .
             		$this->cur_staff_id . ',' .
             		$this->__YEAR . ',' .
             		$this->last_month . ',' .
             		NORMAL . ',' .
             		$this->__MSG.chr(10);*/
         }
         //fwrite($this->payment_writs_file_h,$writ_row);
         //نوشتن payment در فايل
         $payment_row = $this->cur_staff_id . ',' . $this->__YEAR . ',' . $this->__MONTH . ',' . $writ['writ_id'] . ',' . $writ['writ_ver'] . ",'" . $this->month_start . "','" . $this->month_end . "'," . NORMAL . ',' . $this->__MSG . ',' . $this->staffRow['bank_id'] . ',' . $this->staffRow['account_no'] . ',' . PAYMENT_STATE_NORMAL . ",'" . DateModules::NowDateTime() . "'";
         $file_line2 = str_replace(',,', ',\\N,', $payment_row);
         //براي اصلاح مقادير null
         $file_line2 = str_replace(',,', ',\\N,', $file_line2);
         //براي اصلاح مقادير null
         parent::runquery(" insert into payments (staff_id,pay_year,pay_month,writ_id,writ_ver,start_date,end_date,payment_type,message,\n\t\t\t\t\t\t   bank_id,account_no,state ,calc_date ) value (" . $file_line2 . ") ", array(), $pdo);
         //echo parent::GetLatestQueryString() ; die();
         if (parent::AffectedRows() == 0) {
             $this->log('FAIL', 'خطا در افزودن اطلاعات به جدول پرداختها ');
             $pdo->rollBack();
             ob_clean();
             return;
         }
     }
     //fwrite($this->payment_file_h,$file_line);
     //if($this->backpay)
     //	$tblName =  "back_payment_items" ;
     //else
     $tblName = "corrective_payment_items";
     $file_line = substr($file_line, 0, strlen($file_line) - 2);
     parent::runquery("insert into " . $tblName . " (diff_get_value, diff_pay_value, pay_year, pay_month, staff_id,\n                        salary_item_type_id, pay_value, get_value, param1, param2, param3,param4, param5, param6, param7, param8, param9,\n                        diff_param1,diff_param2,diff_param3,diff_param4,diff_param5,diff_param6,diff_param7,diff_param8,diff_param9,\n                        cost_center_id, payment_type, diff_value_coef ) values " . $file_line . " ", array(), $pdo);
     //echo parent::GetLatestQueryString() ; die() ;
     if (parent::AffectedRows() == 0) {
         $this->log('FAIL', 'خطا در افزودن اطلاعات به جدول اقلام حقوقی');
         $pdo->rollBack();
         ob_clean();
         return;
     }
     $this->log('SUCCESS', $pure_pay);
     $pdo->commit();
     return true;
 }
예제 #24
0
function InsertData()
{
    $data = new Spreadsheet_Excel_Reader();
    $data->setOutputEncoding('utf-8');
    $data->setRowColOffset(0);
    $data->read($_FILES["attach"]["tmp_name"]);
    $FileType = $_POST["FileType"];
    $obj = new manage_pay_get_lists();
    $MissionObj = new manage_mission_list_items();
    $PGIObj = new manage_pay_get_list_items();
    $log_obj = new manage_group_pay_get_log();
    $success_count = 0;
    $unsuccess_count = 0;
    $costId = "";
    if ($FileType == EXTRA_WORK_LIST) {
        for ($i = 1; $i < $data->sheets[0]['numRows']; $i++) {
            //for ($j = 0; $j < $data->sheets[0]['numCols']; $j++)
            //$data->sheets[0]['cells'][$i][$j];
            if (!isset($data->sheets[0]['cells'][$i][0]) && !isset($data->sheets[0]['cells'][$i][1])) {
                break;
            }
            $query = " select p.pfname , p.plname , s.person_type from staff s inner join persons p on s.personid = p.personid\n\t\t\t\t\twhere staff_id =" . $data->sheets[0]['cells'][$i][1];
            $result = PdoDataAccess::runquery($query);
            if ($costId != $data->sheets[0]['cells'][$i][0]) {
                $obj->list_id = null;
                $obj->cost_center_id = $data->sheets[0]['cells'][$i][0];
                $obj->list_date = DateModules::Now();
                $obj->doc_state = 1;
                $obj->list_type = EXTRA_WORK_LIST;
                if ($obj->AddList() === false) {
                    $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][1], $result[0]["pfname"] . " " . $result[0]["plname"], " کد مرکز هزینه نامعتبر است.");
                    $unsuccess_count++;
                    continue;
                }
                $costId = $obj->cost_center_id;
            }
            if (count($result) > 0) {
                $pt = $result[0]["person_type"];
                if ($pt == 3) {
                    $salaryItemId = 152;
                } elseif ($pt == 2) {
                    $salaryItemId = 39;
                } elseif ($pt == 5) {
                    $salaryItemId = 639;
                }
                $PGIObj->staff_id = $data->sheets[0]['cells'][$i][1];
                $PGIObj->salary_item_type_id = $salaryItemId;
                $PGIObj->approved_amount = $data->sheets[0]['cells'][$i][2];
                $PGIObj->comments = $data->sheets[0]['cells'][$i][3];
                $PGIObj->list_id = $obj->GetLastID("pay_get_lists", "list_id", " list_type = 1 and cost_center_id =" . $obj->cost_center_id);
                $PGIObj->list_row_no = $PGIObj->GetLastID("pay_get_list_items", "list_row_no", " list_id =" . $PGIObj->list_id) + 1;
                if ($PGIObj->Add() == false) {
                    $log_obj->make_unsuccess_rows($PGIObj->staff_id);
                    $unsuccess_count++;
                }
            } else {
                $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][1], " ", "شماره شناسایی نامعتبر است.");
                $unsuccess_count++;
            }
        }
        $log_obj->finalize();
        $st = preg_replace('/\\r\\n/', "", $log_obj->make_result());
        echo "{success:true,data:'" . $st . "'}";
        die;
    } elseif ($FileType == MISSION_LIST) {
        for ($i = 1; $i < $data->sheets[0]['numRows']; $i++) {
            //for ($j = 0; $j < $data->sheets[0]['numCols']; $j++)
            //$data->sheets[0]['cells'][$i][$j];
            $query = " select p.pfname , p.plname , s.person_type from staff s inner join persons p on s.personid = p.personid\n\t\t\t\t\twhere staff_id =" . $data->sheets[0]['cells'][$i][1];
            $result = PdoDataAccess::runquery($query);
            if ($costId != $data->sheets[0]['cells'][$i][0]) {
                $obj->list_id = null;
                $obj->cost_center_id = $data->sheets[0]['cells'][$i][0];
                $obj->list_date = DateModules::Now();
                $obj->doc_state = 1;
                $obj->list_type = MISSION_LIST;
                if ($obj->AddList() === false) {
                    $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][1], $result[0]["pfname"] . " " . $result[0]["plname"], " کد مرکز هزینه نامعتبر است.");
                    $unsuccess_count++;
                    continue;
                }
                $costId = $obj->cost_center_id;
            }
            if (count($result) > 0) {
                $pt = $result[0]["person_type"];
                if ($pt == 1) {
                    $salaryItemId = 42;
                } elseif ($pt == 2) {
                    $salaryItemId = 43;
                } elseif ($pt == 3) {
                    $salaryItemId = 10315;
                } elseif ($pt == 5) {
                    $salaryItemId = 643;
                }
                $MissionObj->staff_id = $data->sheets[0]['cells'][$i][1];
                $MissionObj->doc_no = $data->sheets[0]['cells'][$i][2];
                $MissionObj->doc_date = DateModules::shamsi_to_miladi($data->sheets[0]['cells'][$i][3]);
                $MissionObj->from_date = DateModules::shamsi_to_miladi($data->sheets[0]['cells'][$i][4]);
                $MissionObj->to_date = DateModules::shamsi_to_miladi($data->sheets[0]['cells'][$i][5]);
                $MissionObj->duration = $data->sheets[0]['cells'][$i][6];
                $MissionObj->travel_cost = isset($data->sheets[0]['cells'][$i][7]) ? $data->sheets[0]['cells'][$i][7] : "";
                $MissionObj->destination = $data->sheets[0]['cells'][$i][8];
                $MissionObj->using_facilities = isset($data->sheets[0]['cells'][$i][9]) ? $data->sheets[0]['cells'][$i][9] : "";
                //     $MissionObj->report_summary =  (isset($data->sheets[0]['cells'][$i][11])) ? $data->sheets[0]['cells'][$i][11] : "" ;
                $MissionObj->comments = isset($data->sheets[0]['cells'][$i][12]) ? $data->sheets[0]['cells'][$i][12] : "";
                $MissionObj->region_coef = isset($data->sheets[0]['cells'][$i][10]) ? $data->sheets[0]['cells'][$i][10] : "";
                $MissionObj->salary_item_type_id = $salaryItemId;
                $MissionObj->list_id = $obj->GetLastID("pay_get_lists", "list_id", " list_type = 9 and cost_center_id =" . $obj->cost_center_id);
                $MissionObj->list_row_no = $MissionObj->GetLastID("mission_list_items", "list_row_no", " list_id =" . $MissionObj->list_id) + 1;
                if ($MissionObj->Add() == false) {
                    $log_obj->make_unsuccess_rows($MissionObj->staff_id, $result[0]["pfname"] . " " . $result[0]["plname"], "اطلاعات مربوط  به این فرد معتبر نمی باشد.");
                    $unsuccess_count++;
                }
            } else {
                $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][1], " ", "شماره شناسایی نامعتبر است.");
                $unsuccess_count++;
            }
        }
        $log_obj->finalize();
        $st = preg_replace('/\\r\\n/', "", $log_obj->make_result());
        echo "{success:true,data:'" . $st . "'}";
        die;
    } elseif ($FileType == 11) {
        //.... محاسبه باقیمانده وامها ..........
        $Arr = preg_split('/[\\/]/', DateModules::shNow());
        $LYear = $Arr[0];
        $LMonth = $Arr[1];
        manage_subtracts::GetRemainder("", "", "", true, $LMonth, $LYear);
        //......................................
        $pdo = PdoDataAccess::getPdoObject();
        $pdo->beginTransaction();
        $DB = "";
        //echo  $data->sheets[0]['numRows'].'----'			  ; die() ;
        for ($i = 1; $i < $data->sheets[0]['numRows']; $i++) {
            $subObj = new manage_subtracts();
            $subFlowObj = new manage_subtract_flows();
            if (!isset($data->sheets[0]['cells'][$i][1])) {
                $log_obj->make_unsuccess_rows('-', '-', 'ردیف ' . ($i + 1) . ' معتبر نمی باشد.');
                $unsuccess_count++;
                continue;
            }
            // آیا این قلم وجود دارد ؟......................................
            $qry = " select salary_item_type_id , available_for\n\t\t\t\t\t\t\tfrom salary_item_types where salary_item_type_id=" . $data->sheets[0]['cells'][$i][1];
            $resItem = PdoDataAccess::runquery($qry);
            //..............................................................
            if (isset($resItem[0]['salary_item_type_id']) && $resItem[0]['salary_item_type_id'] > 0) {
                if (empty($data->sheets[0]['cells'][$i][0])) {
                    $log_obj->make_unsuccess_rows('-', $data->sheets[0]['cells'][$i][1], 'لطفا شماره شناسایی ردیف ' . ($i + 1) . '  را وارد نمایید.');
                    $unsuccess_count++;
                    continue;
                }
                // قلم مربوط به وام نبوده است ...............................
                if ($data->sheets[0]['cells'][$i][2] == 1 && $resItem[0]['available_for'] != 1) {
                    $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], $data->sheets[0]['cells'][$i][1], " قلم مربوط به وام نمی باشد. ");
                    $unsuccess_count++;
                    continue;
                }
                if ($data->sheets[0]['cells'][$i][2] == 2 && !($resItem[0]['available_for'] == 4 || $resItem[0]['available_for'] == 5)) {
                    $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], $data->sheets[0]['cells'][$i][1], " قلم مربوط به کسور نمی باشد. ");
                    $unsuccess_count++;
                    continue;
                }
                if ($data->sheets[0]['cells'][$i][2] == 1 && !empty($data->sheets[0]['cells'][$i][6]) && $data->sheets[0]['cells'][$i][6] != 0 && !empty($data->sheets[0]['cells'][$i][5]) && $data->sheets[0]['cells'][$i][5] != 0 && $data->sheets[0]['cells'][$i][6] > $data->sheets[0]['cells'][$i][5]) {
                    $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], $data->sheets[0]['cells'][$i][1], 'قسط وام مورد نظر از مبلغ اوليه آن بزرگتر است.');
                    $unsuccess_count++;
                    continue;
                }
                if (!empty($data->sheets[0]['cells'][$i][8]) && DateModules::GetDateFormat($data->sheets[0]['cells'][$i][7]) > DateModules::GetDateFormat($data->sheets[0]['cells'][$i][8])) {
                    $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], $data->sheets[0]['cells'][$i][1], 'تاريخ پايان بايد بزرگتر و يا مساوي تاريخ شروع باشد.');
                    $unsuccess_count++;
                    continue;
                }
                if (empty($data->sheets[0]['cells'][$i][3])) {
                    $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], $data->sheets[0]['cells'][$i][1], 'نوع وام/کسور مشخص نشده است.');
                    $unsuccess_count++;
                    continue;
                }
                if (!empty($data->sheets[0]['cells'][$i][4])) {
                    $qry = "select bank_id from banks where branch_code=" . $data->sheets[0]['cells'][$i][4];
                    $resbank = PdoDataAccess::runquery($qry);
                    if (count($resbank) == 0) {
                        $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], $data->sheets[0]['cells'][$i][1], 'کد بانک معتبر نمی باشد.');
                        $unsuccess_count++;
                        continue;
                    }
                }
                $qry = " select staff_id,PersonID from staff where staff_id =" . $data->sheets[0]['cells'][$i][0];
                $resStaff = PdoDataAccess::runquery($qry);
                if (count($resStaff) == 0) {
                    $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], $data->sheets[0]['cells'][$i][1], ' شماره شناسایی معتبر نمی باشد.');
                    $unsuccess_count++;
                    continue;
                }
                //..............................................................................
                $Arr2 = preg_split('/[\\/]/', DateModules::GetDateFormat($data->sheets[0]['cells'][$i][7]));
                $sfd = (int) $Arr2[0] . "/" . (int) $Arr2[1] . "/" . (int) $Arr2[2];
                if (!empty($data->sheets[0]['cells'][$i][8])) {
                    $Arr3 = preg_split('/[\\/]/', DateModules::GetDateFormat($data->sheets[0]['cells'][$i][8]));
                    $efd = (int) $Arr3[0] . "/" . (int) $Arr3[1] . "/" . (int) $Arr3[2];
                }
                //...........................................................................
                $Arr = preg_split('/[\\/]/', DateModules::GetDateFormat($data->sheets[0]['cells'][$i][7]));
                $sdate = $edate = '';
                $start_day = "";
                $start_month = (int) $Arr[1];
                if ($start_month < 7) {
                    $day = 31;
                } elseif ($start_month < 12) {
                    $day = 30;
                } elseif ($start_month == 12) {
                    $day = 29;
                }
                $sd = (int) $Arr[0] . "/" . (int) $Arr[1] . "/01";
                $ed = (int) $Arr[0] . "/" . (int) $Arr[1] . "/" . $day;
                $sdate = DateModules::shamsi_to_miladi($sd);
                $edate = DateModules::shamsi_to_miladi($ed);
                $PID = $resStaff[0]['PersonID'];
                //ثبت وام یا کسور جدید..................................................
                if ($data->sheets[0]['cells'][$i][3] == 1) {
                    $qry = " select subtract_id, remainder, instalment  \n\t\t\t\t\t\t\t\t\tfrom person_subtracts \n\t\t\t\t\t\t\t\t\t\twhere salary_item_type_id = " . $data->sheets[0]['cells'][$i][1] . " and\n\t\t\t\t\t\t\t\t\t\t\t  PersonID =" . $PID . " AND IsFinished = 0 and \n\t\t\t\t\t\t\t\t\t\t\t  start_date <= '" . str_replace("/", "-", $sdate) . "' and \n\t\t\t\t\t\t\t\t\t\t\t  ( end_date >= '" . str_replace("/", "-", $edate) . "' OR end_date IS NULL OR end_date = '0000-00-00' ) ";
                    $res = PdoDataAccess::runquery($qry);
                    if (count($res) > 0 && $res[0]['subtract_id'] > 0) {
                        $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], "-", "این /کسور قبلا در سیستم ثبت گردیده است.");
                        $unsuccess_count++;
                        continue;
                    }
                    //.......................................................
                    $subObj->PersonID = $PID;
                    $subObj->subtract_type = $data->sheets[0]['cells'][$i][2] == 1 ? LOAN : FIX_FRACTION;
                    $subObj->bank_id = !empty($data->sheets[0]['cells'][$i][4]) ? $resbank[0]['bank_id'] : "";
                    $subObj->first_value = !empty($data->sheets[0]['cells'][$i][5]) ? $data->sheets[0]['cells'][$i][5] : 0;
                    $subObj->instalment = !empty($data->sheets[0]['cells'][$i][6]) ? $data->sheets[0]['cells'][$i][6] : 0;
                    $subObj->remainder = !empty($data->sheets[0]['cells'][$i][5]) ? $data->sheets[0]['cells'][$i][5] : 0;
                    $subObj->start_date = DateModules::shamsi_to_miladi($sfd);
                    $subObj->end_date = !empty($data->sheets[0]['cells'][$i][8]) ? DateModules::shamsi_to_miladi($efd) : "";
                    $subObj->loan_no = !empty($data->sheets[0]['cells'][$i][9]) ? $data->sheets[0]['cells'][$i][9] : "";
                    $subObj->contract_no = !empty($data->sheets[0]['cells'][$i][10]) ? $data->sheets[0]['cells'][$i][10] : "";
                    $subObj->salary_item_type_id = $data->sheets[0]['cells'][$i][1];
                    $subObj->reg_date = DateModules::NowDateTime();
                    //Isfinished = 0 ;
                    if ($subObj->Add() === false) {
                        $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], "-", " خطا ");
                        $unsuccess_count++;
                        continue;
                    }
                }
                // ثبت گردش ...................................................
                if ($data->sheets[0]['cells'][$i][3] == 2) {
                    $qry = " select psf.subtract_id \n\t\t\t\t\t\t\t\t\tfrom person_subtracts  ps inner join person_subtract_flows psf \n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ton  ps.subtract_id = psf.subtract_id\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\twhere ps.salary_item_type_id = " . $data->sheets[0]['cells'][$i][1] . " and\n\t\t\t\t\t\t\t\t\t\t\t  ps.PersonID =" . $PID . " and \n\t\t\t\t\t\t\t\t\t\t\t  psf.flow_date >= '" . str_replace("/", "-", $sdate) . "' and \n\t\t\t\t\t\t\t\t\t\t\t  psf.flow_date <= '" . str_replace("/", "-", $edate) . "'";
                    $res = PdoDataAccess::runquery($qry);
                    if (count($res) > 0 && $res[0]['subtract_id'] > 0) {
                        //echo PdoDataAccess::GetLatestQueryString() ; die();
                        $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], "-", " این گردش قبلا در سیستم ثبت گردیده است.");
                        $unsuccess_count++;
                        continue;
                    }
                    //.................................................................
                    $qry = " select ps.subtract_id, ts.remainder, ps.instalment  \n\t\t\t\t\t\t\t\t\tfrom person_subtracts ps  left join tmp_SubtractRemainders ts \n\t\t\t\t\t\t\t\t\t                               on ps.subtract_id = ts.subtract_id\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \n\t\t\t\t\t\t\t\t\t\twhere ps.salary_item_type_id = " . $data->sheets[0]['cells'][$i][1] . " and\n\t\t\t\t\t\t\t\t\t\t\t  ps.PersonID =" . $PID . " AND ps.IsFinished = 0  AND ps.start_date <= '" . str_replace("/", "-", $sdate) . "' AND  \n\t\t\t\t\t\t\t\t\t\t\t( ps.end_date >= '" . str_replace("/", "-", $edate) . "' OR ps.end_date IS NULL OR ps.end_date = '0000-00-00' ) ";
                    $res = PdoDataAccess::runquery($qry);
                    //	echo PdoDataAccess::GetLatestQueryString() ;
                    if (count($res) > 0 && $res[0]['subtract_id'] > 0) {
                        $new_remainder = $new_instalment = 0;
                        if ($data->sheets[0]['cells'][$i][2] == 1) {
                            $subFlowObj->subtract_id = $res[0]['subtract_id'];
                            $subFlowObj->flow_type = REGISTER_NEW_FLOW_TYPE;
                            $subFlowObj->flow_date = DateModules::NowDateTime();
                            $subFlowObj->flow_coaf = !empty($data->sheets[0]['cells'][$i][5]) && $data->sheets[0]['cells'][$i][5] * 1 > $res[0]['remainder'] * 1 ? -1 : 1;
                            $subFlowObj->amount = !empty($data->sheets[0]['cells'][$i][5]) && $data->sheets[0]['cells'][$i][5] * 1 > $res[0]['remainder'] * 1 ? $data->sheets[0]['cells'][$i][5] * 1 - $res[0]['remainder'] * 1 : $res[0]['remainder'] * 1 - $data->sheets[0]['cells'][$i][5] * 1;
                            $subFlowObj->newRemainder = !empty($data->sheets[0]['cells'][$i][5]) ? $data->sheets[0]['cells'][$i][5] : 0;
                            $subFlowObj->comments = "گردش دستی";
                            if ($subFlowObj->Add() == false) {
                                $log_obj->make_unsuccess_rows($subObj->staff_id);
                                $unsuccess_count++;
                                continue;
                            } else {
                                $new_remainder = !empty($data->sheets[0]['cells'][$i][5]) ? $data->sheets[0]['cells'][$i][5] : 0;
                                $new_instalment = !empty($data->sheets[0]['cells'][$i][6]) ? $data->sheets[0]['cells'][$i][6] : 0;
                                $qry = " update person_subtracts \n\t\t\t\t\t\t\t\t\t\t\tset\t\tremainder = " . $new_remainder . ",\n\t\t\t\t\t\t\t\t\t\t\t\t\tinstalment = " . $new_instalment . ",\n\t\t\t\t\t\t\t\t\t\t\t\t\treg_date = '" . DateModules::NowDateTime() . "'\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\twhere subtract_id =" . $subFlowObj->subtract_id;
                                PdoDataAccess::runquery($qry);
                            }
                        } else {
                            //echo "*****"; die() ;
                            $new_instalment = !empty($data->sheets[0]['cells'][$i][6]) ? $data->sheets[0]['cells'][$i][6] : 0;
                            $qry = " update person_subtracts \n\t\t\t\t\t\t\t\t\t\tset\t\t\n\t\t\t\t\t\t\t\t\t\t\t\tinstalment = " . $new_instalment . ",\n\t\t\t\t\t\t\t\t\t\t\t\treg_date = '" . DateModules::NowDateTime() . "'\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\twhere subtract_id =" . $res[0]['subtract_id'];
                            PdoDataAccess::runquery($qry);
                        }
                    } else {
                        $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], $data->sheets[0]['cells'][$i][1], "این وام / کسور ثبت سیستم نشده است.");
                        $unsuccess_count++;
                        continue;
                    }
                }
            } else {
                $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], $data->sheets[0]['cells'][$i][1], "کد قلم معتبر نمی باشد.");
                $unsuccess_count++;
                continue;
            }
        }
        $log_obj->finalize();
        $st = preg_replace('/\\r\\n/', "", $log_obj->make_result());
        if ($unsuccess_count > 0) {
            $pdo->rollBack();
        } else {
            $pdo->commit();
        }
        echo "{success:true,data:'" . $st . "'}";
        die;
    }
}
예제 #25
0
 public static function RemoveStep($StepID)
 {
     $pdo = parent::getPdoObject();
     $pdo->beginTransaction();
     if (!PdoDataAccess::delete("FGR_StepElements", "StepID=?", array($StepID), $pdo)) {
         return false;
     }
     $obj = new FGR_steps($StepID);
     parent::runquery("update FGR_steps set ordering=ordering-1 where FormID=? AND ordering>?", array($obj->FormID, $obj->ordering), $pdo);
     if (!PdoDataAccess::delete("FGR_steps", "StepID=?", array($StepID), $pdo)) {
         return false;
     }
     $daObj = new DataAudit();
     $daObj->ActionType = DataAudit::Action_delete;
     $daObj->MainObjectID = $StepID;
     $daObj->TableName = "FGR_steps";
     $daObj->execute($pdo);
     $pdo->commit();
     return true;
 }
예제 #26
0
 function Next_Corrective_Writ()
 {
     $query = "  SELECT  w.writ_id,\n                            w.writ_ver,\n                            w.staff_id,\n                            w.execute_date,\n                            w.corrective ,\n                            s.person_type ,\n                            w2.writ_ver upper_ver\n\n                    FROM   staff s\n                           LEFT OUTER JOIN writs w\n                                ON (w.staff_id = s.staff_id )\n                           LEFT OUTER JOIN writs w2\n                                ON (w2.staff_id = s.staff_id AND w2.writ_id = w.writ_id AND w.writ_ver + 1 = w2.writ_ver )\n                    WHERE\n                           s.staff_id = {$this->staff_id} AND\n                            (w.execute_date > '{$this->execute_date}' OR (w.execute_date = '{$this->execute_date}' AND w.writ_id > {$this->writ_id}) ) AND\n                           ((w.history_only != " . HISTORY_ONLY . " OR w.history_only IS NULL)OR\n                            (w.writ_id={$this->corrective_writ_id} AND w.writ_ver={$this->corrective_writ_ver}))\n                            AND (w2.writ_ver IS NULL OR w.history_only != " . HISTORY_ONLY . " OR w.history_only IS NULL)\n                     ORDER BY s.staff_id , w.execute_date,w.writ_id , w.writ_ver ";
     $temp = parent::runquery($query);
     if (count($temp) > 0) {
         $state = 1;
         $next_writ_rec = $temp[0];
         for ($i = 0; $i < count($temp); $i++) {
             if ($state == 2) {
                 if ($temp[$i]['execute_date'] == $min_execute_date && $temp[$i]['corrective'] != 1) {
                     $next_writ_rec = $temp[$i];
                 } else {
                     break;
                 }
             }
             if ($state == 1) {
                 $min_execute_date = $temp[$i]['execute_date'];
                 $next_writ_rec = $temp[$i];
                 $state = 2;
             }
         }
     }
     if (!$next_writ_rec) {
         return false;
     }
     $obj = new manage_writ($next_writ_rec['writ_id'], $next_writ_rec['writ_ver'], $next_writ_rec['staff_id']);
     if ($obj->writ_id > 0) {
         if ($this->corrective_writ_id != $obj->writ_id || $this->corrective_writ_ver != $obj->writ_ver || $obj->corrective == 0) {
             $obj->history_only = 1;
             $qry3 = " select writ_id , writ_ver\n                                from writs\n                                       where writ_id = " . $obj->writ_id . " and writ_ver = " . $obj->writ_ver . " and\n                                             staff_id =" . $obj->staff_id . " and state=" . WRIT_PERSONAL;
             $tmp3 = parent::runquery($qry3);
             if (count($tmp3) > 0) {
                 $obj->EditWrit();
             }
             //............
             $qry1 = " SELECT issue_date\n    \t\t\t\t\t        FROM writs\n    \t\t\t\t\t            WHERE writ_id = " . $this->corrective_writ_id . " AND writ_ver= " . $this->corrective_writ_ver . " AND staff_id = " . $this->staff_id;
             $tmp1 = parent::runquery($qry1);
             $obj->issue_date = DateModules::shNow();
             //$tmp1[0]['issue_date'];
             if ($obj->execute_date > $obj->issue_date) {
                 $obj->pay_date = $obj->execute_date;
             } else {
                 $obj->pay_date = $obj->issue_date;
             }
             $qry2 = " select last_writ_id , last_writ_ver\n                                from staff where staff_id =" . $obj->staff_id;
             $tmp2 = parent::runquery($qry2);
             //.............
             $obj->history_only = 0;
             //end
             if (!$next_writ_rec['upper_ver']) {
                 $obj->writ_ver++;
             } else {
                 $qry4 = " SELECT MAX(writ_ver) writ_ver\n                                FROM writs\n                                        WHERE writ_id = " . $obj->writ_id;
                 $tmp4 = parent::runquery($qry4);
                 $obj->writ_ver = $tmp4[0]['writ_ver'] + 1;
             }
             $obj->state = 1;
             $obj->corrective = 0;
             $obj->corrective_date = $this->corrective_date;
             $obj->corrective_writ_id = $this->corrective_writ_id;
             $obj->corrective_writ_ver = $this->corrective_writ_ver;
             $obj->correct_completed = WRIT_CORRECTING;
             $qry5 = " select personid,staff_id from staff where staff_id =" . $obj->staff_id;
             $tmp5 = parent::runquery($qry5);
             $education_level_rec = manage_person_education::GetEducationLevelByDate($tmp5[0]['personid'], $obj->execute_date);
             $obj->education_level = $education_level_rec['max_education_level'];
             $obj->sfid = $education_level_rec['sfid'];
             $obj->sbid = $education_level_rec['sbid'];
             $where = " PersonID=" . $tmp5[0]['personid'] . "  AND\n                      (dependency = 5 or dependency = 6) AND\n\t\t\t\t       birth_date <='" . $obj->execute_date . "'";
             $obj->children_count = manage_person_dependency::CountDependency($where);
             $obj->included_children_count = manage_person_dependency::bail_count($tmp5[0]['personid'], $obj->person_type, $obj->execute_date, $obj->execute_date);
             $person_obj = new manage_person($tmp5[0]['personid']);
             $obj->marital_status = $person_obj->marital_status;
             //......
             if ($obj->person_type == HR_PROFESSOR && $obj->staff_id != '111551') {
                 $obj->writ_signature_post_owner = 'محمد کافی';
                 $obj->writ_signature_post_title = ' رئیس دانشگاه';
                 //$this->writ_signature_post_title = ' رئیس دانشگاه ';
             } else {
                 if ($obj->person_type == HR_PROFESSOR && $obj->staff_id == '111551') {
                     //$this->writ_signature_post_owner = 'محمدجواد وریدی' ;
                     $obj->writ_signature_post_owner = 'ابوالفضل باباخانی';
                     $obj->writ_signature_post_title = 'معاون اداری ومالی دانشگاه';
                 } else {
                     $obj->writ_signature_post_owner = $obj->issue_date > '2014-02-01' ? 'ابوالقاسم ساقی' : WRIT_SIGNATURE_POST_OWNER;
                 }
             }
             //.......
             //$obj->writ_signature_post_owner = ($obj->issue_date > '2014-02-01') ? 'ابوالقاسم ساقی' : WRIT_SIGNATURE_POST_OWNER ;
             $pdo = parent::getPdoObject();
             $pdo->beginTransaction();
             if (!$obj->onBeforeInsert()) {
                 $pdo->rollBack();
                 return false;
             }
             $return = parent::insert("writs", $obj);
             if (!$return) {
                 parent::PushException("ايجاد با شکست مواجه شد");
                 $pdo->rollBack();
                 return false;
             }
             if (!$obj->onAfterInsert()) {
                 parent::PushException("ايجاد با شکست مواجه شد");
                 $pdo->rollBack();
                 return false;
             }
             $pdo->commit();
             if (!manage_writ_item::compute_writ_items($obj->writ_id, $obj->writ_ver, $obj->staff_id)) {
                 return false;
             }
         } else {
             $description = "";
             $this->writ_id = $obj->writ_id;
             $this->writ_ver = $obj->writ_ver;
             $qry3 = " SELECT w.writ_id , w.writ_ver , w.execute_date , w.issue_date ,  ws.title\n                            FROM writs w\n                                INNER JOIN writ_subtypes ws ON ws.writ_type_id = w.writ_type_id\n                                    AND ws.writ_subtype_id = w.writ_subtype_id AND w.person_type = ws.person_type\n                                    AND w.staff_id = " . $obj->staff_id . "\n                                INNER JOIN\n                                (\n                                SELECT\n                                    writ_id , writ_ver - 1 writ_ver2\n                                FROM writs\n                                WHERE\n                                    corrective_writ_id = {$this->corrective_writ_id} AND corrective_writ_ver = {$this->corrective_writ_ver} AND  staff_id = " . $obj->staff_id . "\n                                )\n                                w2\n                                    ON w.writ_id = w2.writ_id AND w.writ_ver = w2.writ_ver2";
             $tmp3 = parent::runquery($qry3);
             $qry4 = " SELECT w.writ_id , w.writ_ver , w.execute_date , w.issue_date ,  ws.title\n                            FROM writs w\n                                INNER JOIN writ_subtypes ws\n                                        ON ws.writ_type_id = w.writ_type_id\n                                                AND ws.writ_subtype_id = w.writ_subtype_id AND w.person_type = ws.person_type\n                                                AND w.staff_id = {$obj->staff_id}\n                                WHERE\n                                    corrective_writ_id = {$this->corrective_writ_id} AND corrective_writ_ver = {$this->corrective_writ_ver} AND\n                                    w.writ_ver = 1 AND staff_id =" . $obj->staff_id;
             $tmp4 = parent::runquery($qry4);
             $i = 0;
             $j = 0;
             if (!empty($tmp4[0]['send_letter_no'])) {
                 $description .= 'بر اساس حکم شماره ' . $tmp4[0]['send_letter_no'] . ' مورخه ' . DateModules::miladi_to_shamsi($tmp4[0]['issue_date']) . ' احکام ذيل اصلاح مي گردد : ' . chr(13);
             } else {
                 $description .= 'ليست احکام اصلاح شده : ' . chr(13);
             }
             for ($i = 0; $i < count($tmp3); $i++) {
                 $description .= $i + 1 . '- حکم ' . $tmp3[$i]['title'] . ' شماره ' . $tmp3[$i]['send_letter_no'] . ' مورخه ' . DateModules::miladi_to_shamsi($tmp3[$i]['issue_date']) . chr(13);
             }
             parent::runquery(" UPDATE writs\n                                         SET correct_completed=" . WRIT_CORRECT_COMPLETED . "\n                                    WHERE(\n                                        (corrective_writ_id={$this->corrective_writ_id} AND corrective_writ_ver={$this->corrective_writ_ver})\n                                            OR(writ_id={$this->corrective_writ_id} AND writ_ver={$this->corrective_writ_ver} AND staff_id = {$this->staff_id} )\n                                    )");
             parent::runquery(" UPDATE writs\n                                        SET description = '" . $description . "'\n                                        WHERE  writ_id = {$this->writ_id} AND writ_ver={$this->writ_ver} AND description IS NULL AND staff_id =" . $this->staff_id);
         }
         return $obj;
     }
 }
예제 #27
0
 static function RemovePost($post_id)
 {
     if (!self::OnBeforeDelete($post_id)) {
         return false;
     }
     $whereParams = array();
     $whereParams[":post_id"] = $post_id;
     $db = parent::getPdoObject();
     /*@var $db PDO*/
     $db->beginTransaction();
     parent::runquery("insert into position_history select *,'DELETE',now() from position where post_id=:post_id", $whereParams);
     $return = parent::delete("position", " post_id=:post_id", $whereParams);
     if ($return == "0") {
         $db->rollBack();
         return false;
     }
     $daObj = new DataAudit();
     $daObj->ActionType = DataAudit::Action_delete;
     $daObj->MainObjectID = $post_id;
     $daObj->TableName = "position";
     $daObj->execute();
     $db->commit();
     self::OnAfterDelete();
     return true;
 }
예제 #28
0
function importStudent()
{
    $dt = PdoDataAccess::runquery("select * from StudentPersonMap where StNo=?", array($_POST["StNo"]));
    if (count($dt) > 0) {
        echo Response::createObjectiveResponse(false, "Duplicate");
        die;
    }
    $pdo = PdoDataAccess::getPdoObject();
    $pdo->beginTransaction();
    $query = "insert into \n\t\tpersons(person_type,pfname,plname,efname,elname,father_name,idcard_no,birth_date,national_code,\n\t\t\t\tsex,address1,home_phone1,mobile_phone,email,comment)\n\t\tselect " . $_POST["person_type"] . ",PFName,PLName,EFName,ELName,DadName,BCN,BirthDate,NID,\n\t\t\t\tsex,address1,PhoneNo,mobile,EMail,concat('انتقال اطلاعات دانشجو با شماره دانشجویی', StNo)\n\t\tfrom students where StNo=?";
    PdoDataAccess::runquery($query, array($_POST["StNo"]), $pdo);
    if (ExceptionHandler::GetExceptionCount() > 0) {
        $pdo->rollBack();
        echo Response::createObjectiveResponse(false, "1");
        //print_r(ExceptionHandler::PopAllExceptions());
        die;
    }
    //--------------------------------------------------------------------------
    $personID = PdoDataAccess::InsertID();
    $staff_id = PdoDataAccess::GetLastID("staff", "staff_id", "", array(), $pdo) + 1;
    PdoDataAccess::runquery("insert into staff(staff_id,PersonID,person_type) \n\t\t\tvalues({$staff_id}, {$personID}, " . $_POST["person_type"] . ")", array(), $pdo);
    if (ExceptionHandler::GetExceptionCount() > 0) {
        $pdo->rollBack();
        echo Response::createObjectiveResponse(false, "2");
        //print_r(ExceptionHandler::PopAllExceptions());
        die;
    }
    //--------------------------------------------------------------------------
    $query = "insert into StudentPersonMap\tvalues({$personID}," . $_POST["StNo"] . ")";
    PdoDataAccess::runquery($query, array(), $pdo);
    if (ExceptionHandler::GetExceptionCount() > 0) {
        $pdo->rollBack();
        //print_r(ExceptionHandler::PopAllExceptions());
        echo Response::createObjectiveResponse(false, "5");
        die;
    }
    //--------------------------------------------------------------------------
    $query = "select RFID from educ.StudentSpecs where StNo=?";
    $dt = PdoDataAccess::runquery($query, array($_POST["StNo"]), $pdo);
    if (ExceptionHandler::GetExceptionCount() > 0) {
        $pdo->rollBack();
        echo Response::createObjectiveResponse(false, "3");
        //print_r(ExceptionHandler::PopAllExceptions());
        die;
    }
    if (count($dt) > 0 && $dt[0][0] != "") {
        $id = PdoDataAccess::GetLastID("pas.PersonSettings", "PersonSettingsID");
        $query = "insert into pas.PersonSettings(PersonSettingsID,PersonID,CardStatus,CardNumber,WorkGroupID,CalendarID)\n\t\t\tvalues(" . ($id + 1) . ",{$personID},'ENABLE',NULL,0,0)";
        PdoDataAccess::runquery($query, array(), $pdo);
        if (ExceptionHandler::GetExceptionCount() > 0) {
            $pdo->rollBack();
            print_r(ExceptionHandler::PopAllExceptions());
            echo Response::createObjectiveResponse(false, "4");
            die;
        }
    }
    //--------------------------------------------------------------------------
    $pdo->commit();
    $result = ExceptionHandler::GetExceptionCount() == 0 ? "true" : "false";
    echo Response::createObjectiveResponse($result, "");
    die;
}
예제 #29
0
function InsertData()
{
    if (!empty($_FILES['attach']['name'])) {
        $data = new Spreadsheet_Excel_Reader();
        $data->setOutputEncoding('utf-8');
        $data->setRowColOffset(0);
        $data->read($_FILES["attach"]["tmp_name"]);
    }
    $log_obj = new manage_group_pay_get_log();
    $FileType = $_POST["PayType"];
    $PayYear = $_POST["pay_year"];
    $PayMonth = $_POST["pay_month"];
    $SID = $_POST["sid"];
    $success_count = 0;
    $unsuccess_count = 0;
    //.......ماموریت.......................................................
    if ($FileType == 8) {
        if (empty($_FILES['attach']['name'])) {
            $SDate = $PayYear . "/" . $PayMonth . "/01";
            if ($PayMonth < 7) {
                $endDay = "31";
            } elseif ($PayMonth > 6 && $PayMonth < 12) {
                $endDay = "30 ";
            } elseif ($PayMonth == 12) {
                $endDay = "29";
            }
            $EDate = $PayYear . "/" . $PayMonth . "/" . $endDay;
            $pdo = PdoDataAccess::getPdoObject();
            $pdo->beginTransaction();
            $query = "\tSELECT staff_id , duration , region_coef , salary_item_type_id , mli.list_id , mli.list_row_no \n\n\t\t\t\t\t\t\tFROM pay_get_lists pgl inner join mission_list_items mli\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ton pgl.list_id = mli.list_id\n\n\t\t\t\t\t\t\t\t\t\t\t\twhere list_type = 9 and pgl.list_date >= '" . DateModules::shamsi_to_miladi($SDate) . "' and\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tpgl.list_date <= j2g({$PayYear},{$PayMonth},{$endDay}) and doc_state = 3 ";
            //".DateModules::shamsi_to_miladi($EDate) ."
            $res = PdoDataAccess::runquery($query);
            for ($i = 0; $i < count($res); $i++) {
                $PaymentObj = new manage_payments();
                $PayItmObj = new manage_payment_items();
                $query = " select staff_id , bank_id , account_no , last_cost_center_id , person_type  \n\t\t\t\t\t\t                from hrmstotal.staff where staff_id =" . $res[$i]['staff_id'];
                $resStf = PdoDataAccess::runquery($query);
                if (!isset($resStf[0]['bank_id']) || !($resStf[0]['bank_id'] > 0)) {
                    $log_obj->make_unsuccess_rows($res[$i]['staff_id'], "-", "بانک فرد جهت پرداخت مشخص نمی باشد.");
                    $unsuccess_count++;
                    continue;
                }
                if (!($resStf[0]['account_no'] > 0)) {
                    $log_obj->make_unsuccess_rows($res[$i]['staff_id'], "-", "شماره حساب فرد جهت پرداخت مشخص نمی باشد.");
                    $unsuccess_count++;
                    continue;
                }
                if (!($resStf[0]['last_cost_center_id'] > 0)) {
                    $log_obj->make_unsuccess_rows($res[$i]['staff_id'], "-", "آخرین مرکز هزینه فرد مشخص نشده است.");
                    $unsuccess_count++;
                    continue;
                }
                //......... محاسبه ماموریت............................
                $coef = !empty($res[$i]['region_coef']) ? $res[$i]['region_coef'] : 0;
                $param1 = 0;
                $missionValue = manage_payment_calculation::calculate_mission($res[$i]['staff_id'], $PayYear, $PayMonth, $res[$i]['duration'], $coef, $param1);
                /*if($res[$i]['staff_id'] == 882660 ) {
                 echo "----".$missionValue ;  	 die() ;  }*/
                //....................................................
                $PaymentObj->staff_id = $res[$i]['staff_id'];
                $PaymentObj->pay_year = $PayYear;
                $PaymentObj->pay_month = $PayMonth;
                $PaymentObj->payment_type = $FileType;
                $PaymentObj->bank_id = $resStf[0]['bank_id'];
                $PaymentObj->account_no = $resStf[0]['account_no'];
                $PaymentObj->state = 2;
                unset($payRes);
                /*if( $resStf[0]['person_type'] == 1 || $resStf[0]['person_type'] == 2 || $resStf[0]['person_type'] == 3 ) 
                			$DB = "hrms.";
                		else 
                			$DB = "hrms_sherkati."; */
                $qry = " select count(*) cn  \n\t\t\t\t\t\t\t\t\tfrom payments \n\t\t\t\t\t\t\t\t\t\t\twhere pay_year = " . $PayYear . " and pay_month = " . $PayMonth . " and staff_id = " . $PaymentObj->staff_id . " and payment_type = " . $FileType;
                $payRes = PdoDataAccess::runquery($qry);
                if ($payRes[0]['cn'] == 0) {
                    if ($PaymentObj->Add($pdo) === false) {
                        $log_obj->make_unsuccess_rows($res[$i]['staff_id'], "-", "خطا در ثبت  فیش ماموریت");
                        $unsuccess_count++;
                        continue;
                    }
                    if ($resStf[0]['person_type'] == 1) {
                        $SID = 42;
                    }
                    if ($resStf[0]['person_type'] == 2) {
                        $SID = 43;
                    }
                    if ($resStf[0]['person_type'] == 3) {
                        $SID = 10315;
                    }
                    if ($resStf[0]['person_type'] == 5) {
                        $SID = 643;
                    }
                    //$SID = $res[$i]['salary_item_type_id'] ;
                    //............ مرکز هزینه .....................
                    $PayItmObj->pay_year = $PayYear;
                    $PayItmObj->pay_month = $PayMonth;
                    $PayItmObj->param1 = $param1;
                    $PayItmObj->staff_id = $res[$i]['staff_id'];
                    $PayItmObj->salary_item_type_id = $SID;
                    $PayItmObj->pay_value = $missionValue;
                    $PayItmObj->cost_center_id = $resStf[0]['last_cost_center_id'];
                    $PayItmObj->payment_type = 8;
                    if ($PayItmObj->Add() === false) {
                        $log_obj->make_unsuccess_rows($res[$i]['staff_id'], "-", " عدم ثبت رکورد");
                        $unsuccess_count++;
                        continue;
                    }
                    $qry = " update hrmstotal.mission_list_items set PayValue =" . $missionValue . " \n\t\t\t\t\t\t\t\t\t\twhere  list_id= " . $res[$i]['list_id'] . " and list_row_no=" . $res[$i]['list_row_no'];
                    //print_r(ExceptionHandler::PopAllExceptions()) ;
                    //echo PdoDataAccess::GetLatestQueryString() .'----<br>';
                    if (PdoDataAccess::runquery($qry, array(), $pdo) === false) {
                        $log_obj->make_unsuccess_rows($res[$i]['staff_id'], "-", "خطا در ثبت مبلغ در رکورد ماموریت");
                        $unsuccess_count++;
                        continue;
                    }
                } else {
                    if ($payRes[0]['cn'] > 0) {
                        $qry = " select pay_value \n\t\t\t\t\t\t\t\t\tfrom payment_items \n\t\t\t\t\t\t\t\t\t\twhere pay_year = " . $PayYear . " and pay_month = " . $PayMonth . " and staff_id = " . $PaymentObj->staff_id . " and payment_type = " . $FileType;
                        $resItem = PdoDataAccess::runquery($qry);
                        //................................................
                        if (count($resItem) > 0) {
                            $PayItmObj->pay_year = $PayYear;
                            $PayItmObj->pay_month = $PayMonth;
                            $PayItmObj->param1 = $param1;
                            $PayItmObj->staff_id = $PaymentObj->staff_id;
                            $PayItmObj->pay_value = $missionValue + $resItem[0]['pay_value'];
                            $PayItmObj->payment_type = 8;
                            if ($PayItmObj->Edit($pdo) === false) {
                                $log_obj->make_unsuccess_rows($PaymentObj->staff_id, "-", " خطای بروز رسانی ");
                                $unsuccess_count++;
                                continue;
                            }
                            $qry = " update hrmstotal.mission_list_items set PayValue =" . $missionValue . " \n\t\t\t\t\t\t\t\t\t\twhere  list_id= " . $res[$i]['list_id'] . " and list_row_no=" . $res[$i]['list_row_no'];
                            //PdoDataAccess::runquery($qry) ;
                            // echo "***we*".PdoDataAccess::AffectedRows()."---";
                            //print_r(ExceptionHandler::PopAllExceptions()) ; echo PdoDataAccess::GetLatestQueryString() .'----<br>';     die() ;
                            if (PdoDataAccess::runquery($qry, array(), $pdo) === false) {
                                $log_obj->make_unsuccess_rows($res[$i]['staff_id'], "-", "خطا در ثبت مبلغ در رکورد ماموریت");
                                $unsuccess_count++;
                                continue;
                            }
                        }
                    }
                }
            }
            //End for
            $log_obj->finalize();
            $st = preg_replace('/\\r\\n/', "", $log_obj->make_result("UploadPayFilesObj.expand();"));
            if ($unsuccess_count > 0) {
                $pdo->rollBack();
            } else {
                //echo "************" ; die() ;
                $pdo->commit();
            }
            echo "{success:true,data:'" . $st . "'}";
            die;
        } else {
            die;
            $pdo = PdoDataAccess::getPdoObject();
            $pdo->beginTransaction();
            for ($i = 1; $i < $data->sheets[0]['numRows']; $i++) {
                $PaymentObj = new manage_payments();
                $PayItmObj = new manage_payment_items();
                if (!isset($data->sheets[0]['cells'][$i][0]) && !isset($data->sheets[0]['cells'][$i][1])) {
                    break;
                }
                $query = " select staff_id , bank_id , account_no , last_cost_center_id , person_type  \n\t\t\t\t\t\t                from staff where staff_id =" . $data->sheets[0]['cells'][$i][0];
                $resStf = PdoDataAccess::runquery($query);
                if (count($resStf) == 0) {
                    $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], "-", " شماره شناسایی معتبر نمی باشد.");
                    $unsuccess_count++;
                    continue;
                }
                if (!($resStf[0]['bank_id'] > 0)) {
                    $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], "-", "بانک فرد جهت پرداخت مشخص نمی باشد.");
                    $unsuccess_count++;
                    continue;
                }
                if (!($resStf[0]['account_no'] > 0)) {
                    $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], "-", "شماره حساب فرد جهت پرداخت مشخص نمی باشد.");
                    $unsuccess_count++;
                    continue;
                }
                if (!($resStf[0]['last_cost_center_id'] > 0)) {
                    $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], "-", "آخرین مرکز هزینه فرد مشخص نشده است.");
                    $unsuccess_count++;
                    continue;
                }
                //......... محاسبه ماموریت............................
                $coef = !empty($data->sheets[0]['cells'][$i][2]) ? $data->sheets[0]['cells'][$i][2] : 0;
                $missionValue = manage_payment_calculation::calculate_mission($data->sheets[0]['cells'][$i][0], $PayYear, $PayMonth, $data->sheets[0]['cells'][$i][1], $coef);
                //....................................................
                $PaymentObj->staff_id = $data->sheets[0]['cells'][$i][0];
                $PaymentObj->pay_year = $PayYear;
                $PaymentObj->pay_month = $PayMonth;
                $PaymentObj->payment_type = $FileType;
                $PaymentObj->bank_id = $resStf[0]['bank_id'];
                $PaymentObj->account_no = $resStf[0]['account_no'];
                $PaymentObj->state = 2;
                $qry = " select count(*) cn  \n\t\t\t\t\t\t\t\t\tfrom hrms.payments \n\t\t\t\t\t\t\t\t\t\t\twhere pay_year = " . $PayYear . " and pay_month = " . $PayMonth . " and staff_id = " . $PaymentObj->staff_id . " and payment_type = " . $FileType;
                $payRes = PdoDataAccess::runquery($qry);
                if ($payRes[0]['cn'] == 0) {
                    if ($PaymentObj->Add() === false) {
                        $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], "-", " خطا ");
                        $unsuccess_count++;
                        continue;
                    }
                    if ($resStf[0]['person_type'] == 1) {
                        $SID = 42;
                    }
                    if ($resStf[0]['person_type'] == 2) {
                        $SID = 43;
                    }
                    //............ مرکز هزینه .....................
                    $PayItmObj->pay_year = $PayYear;
                    $PayItmObj->pay_month = $PayMonth;
                    $PayItmObj->staff_id = $data->sheets[0]['cells'][$i][0];
                    $PayItmObj->salary_item_type_id = $SID;
                    $PayItmObj->pay_value = $missionValue;
                    $PayItmObj->cost_center_id = $resStf[0]['last_cost_center_id'];
                    $PayItmObj->payment_type = 8;
                    if ($PayItmObj->Add() === false) {
                        $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], "-", " خطا ");
                        $unsuccess_count++;
                        continue;
                    }
                } else {
                    if (count($payRes) > 0) {
                        $qry = " select pay_value \n\t\t\t\t\t\t\t\t\tfrom hrms.payment_items \n\t\t\t\t\t\t\t\t\t\twhere pay_year = " . $PayYear . " and pay_month = " . $PayMonth . " and staff_id = " . $PaymentObj->staff_id . " and payment_type = " . $FileType;
                        $res = PdoDataAccess::runquery($qry);
                        $PayItmObj->pay_year = $PayYear;
                        $PayItmObj->pay_month = $PayMonth;
                        $PayItmObj->staff_id = $data->sheets[0]['cells'][$i][0];
                        $PayItmObj->pay_value = $missionValue + $res[0]['pay_value'];
                        $PayItmObj->payment_type = 8;
                        if ($PayItmObj->Edit() === false) {
                            $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], "-", " خطای بروز رسانی ");
                            $unsuccess_count++;
                            continue;
                        }
                    }
                }
            }
            // End for
            $log_obj->finalize();
            $st = preg_replace('/\\r\\n/', "", $log_obj->make_result("UploadPayFilesObj.expand();"));
            if ($unsuccess_count > 0) {
                $pdo->rollBack();
            } else {
                $pdo->commit();
            }
            echo "{success:true,data:'" . $st . "'}";
            die;
        }
    }
    //...................... بن غیر نقدی شش ماهه ........................
    if ($FileType == 4 || $FileType == 5) {
        $pdo = PdoDataAccess::getPdoObject();
        $pdo->beginTransaction();
        for ($i = 1; $i < $data->sheets[0]['numRows']; $i++) {
            $PaymentObj = new manage_payments();
            $PayItmObj = new manage_payment_items();
            if (!isset($data->sheets[0]['cells'][$i][0])) {
                break;
            }
            $query = " select staff_id , bank_id , account_no ,person_type , last_cost_center_id\n\t\t\t\t\t\t                from staff where staff_id =" . $data->sheets[0]['cells'][$i][0];
            $resStf = PdoDataAccess::runquery($query);
            if (count($resStf) == 0) {
                $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], "-", " شماره شناسایی معتبر نمی باشد.");
                $unsuccess_count++;
                continue;
            }
            if (!($resStf[0]['bank_id'] > 0)) {
                $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], "-", "بانک فرد جهت پرداخت مشخص نمی باشد.");
                $unsuccess_count++;
                continue;
            }
            if (!($resStf[0]['account_no'] > 0)) {
                $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], "-", "شماره حساب فرد جهت پرداخت مشخص نمی باشد.");
                $unsuccess_count++;
                continue;
            }
            if (!($resStf[0]['last_cost_center_id'] > 0)) {
                $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], "-", "مرکز هزینه برای فرد مشخص نشده است.");
                $unsuccess_count++;
                continue;
            }
            //......... محاسبه بن نقدی............................
            $BonValue = !empty($data->sheets[0]['cells'][$i][1]) ? $data->sheets[0]['cells'][$i][1] : 0;
            $PaymentObj->staff_id = $data->sheets[0]['cells'][$i][0];
            $PaymentObj->pay_year = $PayYear;
            $PaymentObj->pay_month = $PayMonth;
            $PaymentObj->payment_type = $FileType;
            $PaymentObj->bank_id = $resStf[0]['bank_id'];
            $PaymentObj->account_no = $resStf[0]['account_no'];
            $PaymentObj->state = 1;
            /*if($resStf[0]['person_type'] == 10) 
            		{
            			$DB = "hrmr." ;
            		}
            		else 
            		{*/
            $DB = "hrmstotal.";
            //}
            //.....................................
            $qry = " select count(*) cn  \n\t\t\t\t\t\t\t\t\tfrom " . $DB . "payments \n\t\t\t\t\t\t\t\t\t\t\twhere pay_year = " . $PayYear . " and pay_month = " . $PayMonth . " and staff_id = " . $PaymentObj->staff_id . " and payment_type = " . $FileType;
            $payRes = PdoDataAccess::runquery($qry);
            if ($payRes[0]['cn'] == 0) {
                if ($PaymentObj->Add("", $DB) === false) {
                    $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], "-", " خطا 22");
                    $unsuccess_count++;
                    continue;
                }
                //............ مرکز هزینه .....................
                $PayItmObj->pay_year = $PayYear;
                $PayItmObj->pay_month = $PayMonth;
                $PayItmObj->staff_id = $data->sheets[0]['cells'][$i][0];
                $PayItmObj->salary_item_type_id = 9941;
                $PayItmObj->pay_value = $BonValue;
                $PayItmObj->cost_center_id = $resStf[0]['last_cost_center_id'];
                $PayItmObj->payment_type = $FileType;
                if ($PayItmObj->Add("", $DB) === false) {
                    $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], "-", " خطا 444");
                    $unsuccess_count++;
                    continue;
                }
            } else {
                if (count($payRes) > 0) {
                    $qry = " select pay_value \n\t\t\t\t\t\t\t\t\tfrom " . $DB . "payment_items \n\t\t\t\t\t\t\t\t\t\twhere pay_year = " . $PayYear . " and pay_month = " . $PayMonth . " and staff_id = " . $PaymentObj->staff_id . " and payment_type = " . $FileType;
                    $res = PdoDataAccess::runquery($qry);
                    $PayItmObj->pay_year = $PayYear;
                    $PayItmObj->pay_month = $PayMonth;
                    $PayItmObj->staff_id = $data->sheets[0]['cells'][$i][0];
                    $PayItmObj->pay_value = $BonValue + $res[0]['pay_value'];
                    $PayItmObj->payment_type = $FileType;
                    if ($PayItmObj->Edit("", $DB) === false) {
                        $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], "-", " خطای بروز رسانی ");
                        $unsuccess_count++;
                        continue;
                    }
                }
            }
        }
        // End for
        $log_obj->finalize();
        $st = preg_replace('/\\r\\n/', "", $log_obj->make_result("UploadPayFilesObj.expand();"));
        if ($unsuccess_count > 0) {
            $pdo->rollBack();
        } else {
            $pdo->commit();
        }
        echo "{success:true,data:'" . $st . "'}";
        die;
    }
    // محاسبه پرداخت تالیف و ویراستاری.............................
    if ($FileType == 12) {
        $pdo = PdoDataAccess::getPdoObject();
        $pdo->beginTransaction();
        for ($i = 1; $i < $data->sheets[0]['numRows']; $i++) {
            $PaymentObj = new manage_payments();
            $PayItmObj = new manage_payment_items();
            unset($TaxRes);
            if (!isset($data->sheets[0]['cells'][$i][0])) {
                break;
            }
            $query = " select staff_id , bank_id , account_no ,person_type ,last_cost_center_id\n\t\t\t\t\t\t                from staff where staff_id =" . $data->sheets[0]['cells'][$i][0];
            $resStf = PdoDataAccess::runquery($query);
            if (count($resStf) == 0) {
                $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], "-", " شماره شناسایی معتبر نمی باشد.");
                $unsuccess_count++;
                continue;
            }
            if (!($resStf[0]['bank_id'] > 0)) {
                $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], "-", "بانک فرد جهت پرداخت مشخص نمی باشد.");
                $unsuccess_count++;
                continue;
            }
            if (!($resStf[0]['account_no'] > 0)) {
                $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], "-", "شماره حساب فرد جهت پرداخت مشخص نمی باشد.");
                $unsuccess_count++;
                continue;
            }
            if (!($resStf[0]['last_cost_center_id'] > 0)) {
                $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], "-", "آخرین مرکز هزینه فرد مشخص نشده است.");
                $unsuccess_count++;
                continue;
            }
            //.........محاسبه تالیف و ویراستاری...........................
            $TValue = !empty($data->sheets[0]['cells'][$i][1]) ? $data->sheets[0]['cells'][$i][1] : 0;
            $PaymentObj->staff_id = $data->sheets[0]['cells'][$i][0];
            $PaymentObj->pay_year = $PayYear;
            $PaymentObj->pay_month = $PayMonth;
            $PaymentObj->payment_type = $FileType;
            $PaymentObj->bank_id = $resStf[0]['bank_id'];
            $PaymentObj->account_no = $resStf[0]['account_no'];
            $PaymentObj->message = !empty($data->sheets[0]['cells'][$i][3]) ? $data->sheets[0]['cells'][$i][3] : 0;
            $PaymentObj->state = 1;
            //.....................................
            $qry = " select count(*) cn  \n\t\t\t\t\t\t\t\t\tfrom payments \n\t\t\t\t\t\t\t\t\t\t\twhere pay_year = " . $PayYear . " and pay_month = " . $PayMonth . " and \n\t\t\t\t\t\t\t\t\t\t\t\t  staff_id = " . $PaymentObj->staff_id . " and payment_type = " . $FileType;
            $payRes = PdoDataAccess::runquery($qry);
            if ($payRes[0]['cn'] == 0) {
                if ($PaymentObj->Add() === false) {
                    $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], "-", " خطا 22");
                    $unsuccess_count++;
                    continue;
                }
                //............ مرکز هزینه .....................
                $PayItmObj->pay_year = $PayYear;
                $PayItmObj->pay_month = $PayMonth;
                $PayItmObj->staff_id = $data->sheets[0]['cells'][$i][0];
                $PayItmObj->salary_item_type_id = 10389;
                $PayItmObj->pay_value = $TValue;
                $PayItmObj->get_value = 0;
                $PayItmObj->cost_center_id = $resStf[0]['last_cost_center_id'];
                $PayItmObj->payment_type = 12;
                if ($PayItmObj->Add() === false) {
                    $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], "-", " خطا 444");
                    $unsuccess_count++;
                    continue;
                }
                //.......................................... محاسبه مالیات ........................................
                if ($resStf[0]['person_type'] == 1 || $resStf[0]['person_type'] == 10) {
                    $TaxKey = 146;
                } elseif ($resStf[0]['person_type'] == 2) {
                    $TaxKey = 147;
                } elseif ($resStf[0]['person_type'] == 3) {
                    $TaxKey = 148;
                } elseif ($resStf[0]['person_type'] == 5) {
                    $TaxKey = 747;
                }
                if ($resStf[0]['person_type'] == 10) {
                    $TaxResVal = $TValue / 10;
                } else {
                    $TaxRes = process_tax($data->sheets[0]['cells'][$i][0], $TValue, $PayYear, $PayMonth);
                }
                $PayItmObj->pay_year = $PayYear;
                $PayItmObj->pay_month = $PayMonth;
                $PayItmObj->staff_id = $data->sheets[0]['cells'][$i][0];
                $PayItmObj->salary_item_type_id = $TaxKey;
                $PayItmObj->get_value = $resStf[0]['person_type'] == 10 ? $TaxResVal : $TaxRes['get_value'];
                $PayItmObj->pay_value = 0;
                $PayItmObj->cost_center_id = $resStf[0]['last_cost_center_id'];
                $PayItmObj->payment_type = 12;
                $PayItmObj->param1 = $resStf[0]['person_type'] == 10 ? 0 : $TaxRes['param1'];
                $PayItmObj->param3 = $resStf[0]['person_type'] == 10 ? 0 : $TaxRes['param3'];
                $PayItmObj->param4 = 1;
                $PayItmObj->param5 = $resStf[0]['person_type'] == 10 ? 0 : $TaxRes['param5'];
                if ($PayItmObj->Add() === false) {
                    $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], "-", " خطا 444");
                    $unsuccess_count++;
                    continue;
                }
                //...................افزودن مبلغ علی الحساب.....................
                if (!empty($data->sheets[0]['cells'][$i][2]) && $data->sheets[0]['cells'][$i][2] > 0) {
                    $PayItmObj->pay_year = $PayYear;
                    $PayItmObj->pay_month = $PayMonth;
                    $PayItmObj->staff_id = $data->sheets[0]['cells'][$i][0];
                    $PayItmObj->salary_item_type_id = 4600;
                    $PayItmObj->get_value = $data->sheets[0]['cells'][$i][2];
                    $PayItmObj->pay_value = 0;
                    $PayItmObj->cost_center_id = $resStf[0]['last_cost_center_id'];
                    $PayItmObj->payment_type = 12;
                    $PayItmObj->param1 = 0;
                    $PayItmObj->param2 = 0;
                    $PayItmObj->param3 = 0;
                    $PayItmObj->param4 = 2;
                    $PayItmObj->param5 = 0;
                    if ($PayItmObj->Add() === false) {
                        $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], "-", " خطا 444");
                        $unsuccess_count++;
                        continue;
                    }
                }
            }
        }
        // End for
        $log_obj->finalize();
        $st = preg_replace('/\\r\\n/', "", $log_obj->make_result("UploadPayFilesObj.expand();"));
        if ($unsuccess_count > 0) {
            $pdo->rollBack();
        } else {
            $pdo->commit();
        }
        echo "{success:true,data:'" . $st . "'}";
        die;
    }
    //......... محاسبه حق التدریس..................................
    if ($FileType == 14) {
        $pdo = PdoDataAccess::getPdoObject();
        $pdo->beginTransaction();
        for ($i = 1; $i < $data->sheets[0]['numRows']; $i++) {
            $PaymentObj = new manage_payments();
            $PayItmObj = new manage_payment_items();
            if (!isset($data->sheets[0]['cells'][$i][0])) {
                break;
            }
            $query = " select staff_id , bank_id , account_no ,person_type ,last_cost_center_id\n\t\t\t\t\t\t                from staff where staff_id =" . $data->sheets[0]['cells'][$i][0] . " AND person_type in (1,10) ";
            $resStf = PdoDataAccess::runquery($query);
            if (count($resStf) == 0) {
                $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], "-", " شماره شناسایی معتبر نمی باشد.");
                $unsuccess_count++;
                continue;
            }
            if (!($resStf[0]['bank_id'] > 0)) {
                $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], "-", "بانک فرد جهت پرداخت مشخص نمی باشد.");
                $unsuccess_count++;
                continue;
            }
            if (!($resStf[0]['account_no'] > 0)) {
                $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], "-", "شماره حساب فرد جهت پرداخت مشخص نمی باشد.");
                $unsuccess_count++;
                continue;
            }
            if (!($resStf[0]['last_cost_center_id'] > 0)) {
                $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], "-", "آخرین مرکز هزینه فرد مشخص نشده است.");
                $unsuccess_count++;
                continue;
            }
            //............................. محاسبه مبلغ حق التدریس................
            $TValue = !empty($data->sheets[0]['cells'][$i][1]) ? $data->sheets[0]['cells'][$i][1] : 0;
            $PaymentObj->staff_id = $data->sheets[0]['cells'][$i][0];
            $PaymentObj->pay_year = $PayYear;
            $PaymentObj->pay_month = $PayMonth;
            $PaymentObj->payment_type = $FileType;
            $PaymentObj->writ_id = !empty($data->sheets[0]['cells'][$i][2]) ? $data->sheets[0]['cells'][$i][2] : 0;
            $PaymentObj->writ_ver = !empty($data->sheets[0]['cells'][$i][3]) ? $data->sheets[0]['cells'][$i][3] : 0;
            $PaymentObj->bank_id = $resStf[0]['bank_id'];
            $PaymentObj->account_no = $resStf[0]['account_no'];
            $PaymentObj->message = !empty($data->sheets[0]['cells'][$i][5]) ? $data->sheets[0]['cells'][$i][5] : 0;
            $PaymentObj->state = 1;
            //.....................................
            $qry = " select count(*) cn  \n\t\t\t\t\t\t\t\t\tfrom payments \n\t\t\t\t\t\t\t\t\t\t\twhere pay_year = " . $PayYear . " and pay_month = " . $PayMonth . " and \n\t\t\t\t\t\t\t\t\t\t\t\t  staff_id = " . $PaymentObj->staff_id . " and payment_type = " . $FileType;
            $payRes = PdoDataAccess::runquery($qry);
            if ($payRes[0]['cn'] == 0) {
                if ($PaymentObj->Add() === false) {
                    $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], "-", " خطا 22");
                    $unsuccess_count++;
                    continue;
                }
                //............ مرکز هزینه .....................
                $PayItmObj->pay_year = $PayYear;
                $PayItmObj->pay_month = $PayMonth;
                $PayItmObj->staff_id = $data->sheets[0]['cells'][$i][0];
                $PayItmObj->salary_item_type_id = 40;
                // کد قلم مربوط به حق التدریس
                $PayItmObj->pay_value = $TValue;
                $PayItmObj->cost_center_id = $resStf[0]['last_cost_center_id'];
                $PayItmObj->payment_type = 14;
                if ($PayItmObj->Add() === false) {
                    $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], "-", " خطا 444");
                    $unsuccess_count++;
                    continue;
                }
                //.......................................... محاسبه مالیات ........................................
                if ($resStf[0]['person_type'] == 1) {
                    $TaxKey = 146;
                } elseif ($resStf[0]['person_type'] == 2) {
                    $TaxKey = 147;
                } elseif ($resStf[0]['person_type'] == 3) {
                    $TaxKey = 148;
                } elseif ($resStf[0]['person_type'] == 5) {
                    $TaxKey = 747;
                } elseif ($resStf[0]['person_type'] == 10) {
                    $TaxKey = 146;
                }
                //.............. تعدیل مالیات با توجه به بازه مرتبط با ترم ................................
                // $TaxRes = process_tax_normalize($data->sheets[0]['cells'][$i][0] , $TValue ,$PayYear ,$PayMonth ) ;
                /*اين فرد مشمول ماليات نمي باشد*/
                $SDate = $PayYear . "/" . $PayMonth . "/01";
                if ($PayMonth < 7) {
                    $endDay = "31";
                } elseif ($PayMonth > 6 && $PayMonth < 12) {
                    $endDay = "30 ";
                } elseif ($PayMonth == 12) {
                    $endDay = "29";
                }
                $EDate = $PayYear . "/" . $PayMonth . "/" . $endDay;
                $EDate = DateModules::shamsi_to_miladi($EDate);
                $SDate = DateModules::shamsi_to_miladi($SDate);
                $staffID = $data->sheets[0]['cells'][$i][0];
                $qry = " select tax_include\n\t\t\t\t\t\t\t\t\tfrom staff_include_history\n\t\t\t\t\t\t\t\t\t\twhere staff_id = " . $staffID . " and start_date <= '" . $EDate . "' AND\n\t\t\t\t\t\t\t\t\t\t\t (end_date IS NULL OR end_date = '0000-00-00' OR\n\t\t\t\t\t\t\t\t\t\t\t  end_date >= '" . $EDate . "' OR end_date > '" . $SDate . "' ) ";
                $res = PdoDataAccess::runquery($qry);
                if ($res[0]['tax_include'] == 0) {
                    $TaxRes = 0;
                } else {
                    $TaxRes = $TValue * 10 / 100;
                }
                $PayItmObj->pay_year = $PayYear;
                $PayItmObj->pay_month = $PayMonth;
                $PayItmObj->staff_id = $data->sheets[0]['cells'][$i][0];
                $PayItmObj->salary_item_type_id = $TaxKey;
                $PayItmObj->get_value = $TaxRes;
                //$TaxRes['get_value'] ;
                $PayItmObj->pay_value = 0;
                $PayItmObj->cost_center_id = $resStf[0]['last_cost_center_id'];
                $PayItmObj->payment_type = 14;
                $PayItmObj->param1 = $TValue;
                //$TaxRes['param1'] ;
                $PayItmObj->param2 = 0;
                //$TaxRes['param2'] ;
                $PayItmObj->param3 = 0;
                //$TaxRes['param3'] ;
                $PayItmObj->param4 = 2;
                $PayItmObj->param5 = 0;
                //$TaxRes['param5'] ;
                if ($TaxRes > 0) {
                    if ($PayItmObj->Add() === false) {
                        $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], "-", " خطا 444");
                        $unsuccess_count++;
                        continue;
                    }
                }
                //...................افزودن مبلغ علی الحساب.....................
                if (!empty($data->sheets[0]['cells'][$i][4]) && $data->sheets[0]['cells'][$i][4] > 0) {
                    $PayItmObj->pay_year = $PayYear;
                    $PayItmObj->pay_month = $PayMonth;
                    $PayItmObj->staff_id = $data->sheets[0]['cells'][$i][0];
                    $PayItmObj->salary_item_type_id = 4600;
                    $PayItmObj->get_value = $data->sheets[0]['cells'][$i][4];
                    $PayItmObj->pay_value = 0;
                    $PayItmObj->cost_center_id = $resStf[0]['last_cost_center_id'];
                    $PayItmObj->payment_type = 14;
                    $PayItmObj->param1 = 0;
                    $PayItmObj->param2 = 0;
                    $PayItmObj->param3 = 0;
                    $PayItmObj->param4 = 2;
                    $PayItmObj->param5 = 0;
                    if ($PayItmObj->Add() === false) {
                        $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], "-", " خطا 444");
                        $unsuccess_count++;
                        continue;
                    }
                }
            }
        }
        // End for
        $log_obj->finalize();
        $st = preg_replace('/\\r\\n/', "", $log_obj->make_result("UploadPayFilesObj.expand();"));
        if ($unsuccess_count > 0) {
            $pdo->rollBack();
        } else {
            $pdo->commit();
        }
        echo "{success:true,data:'" . $st . "'}";
        die;
    }
    //.........محاسبه عیدی و پاداش..........................................
    if ($FileType == 2) {
        $pdo = PdoDataAccess::getPdoObject();
        $pdo->beginTransaction();
        //.........................محاسبه کارکرد سالانه...................
        $year_fdate = DateModules::shamsi_to_miladi($PayYear . "/01/01");
        $year_edate = DateModules::shamsi_to_miladi($PayYear + 1 . "/01/01");
        $year_fdate = str_replace("/", "-", $year_fdate);
        $year_edate = str_replace("/", "-", $year_edate);
        PdoDataAccess::runquery('DROP TABLE IF EXISTS temp_work_writs;');
        PdoDataAccess::runquery('
								CREATE TABLE temp_work_writs  AS
								SELECT w.staff_id,										
									CASE WHEN w.emp_mode IN (3,8,9,15,7,16,11,12,14,20,22,25,27,28,29) 
										THEN 0 
										WHEN  w.emp_mode IN ( ' . EMP_MODE_LEAVE_WITH_SALARY . ' ) THEN 1
										ELSE (CASE w.annual_effect
														WHEN 1 THEN 1
														WHEN 2 THEN 0.5
														WHEN 3 THEN 0
														WHEN 4 THEN 2
											END) END annual_coef,
									CASE 
										WHEN w.execute_date < \'' . $year_fdate . '\' THEN \'' . $year_fdate . '\'
										ELSE w.execute_date
									END execute_date,
									CASE
										WHEN ( SELECT MIN(w2.execute_date) execute_date
												FROM writs w2
												WHERE w2.execute_date <= \'' . $year_edate . '\' AND
														w2.staff_id = w.staff_id AND
														w2.history_only = 0 AND
														w2.state = ' . WRIT_SALARY . ' AND
														(w2.execute_date > w.execute_date OR
														(w2.execute_date = w.execute_date AND w2.writ_id > w.writ_id) OR
														(w2.execute_date = w.execute_date AND w2.writ_id = w.writ_id AND w2.writ_ver > w.writ_ver))
												GROUP BY staff_id) IS NULL THEN \'' . $year_edate . '\'
										ELSE ( SELECT MIN(w2.execute_date) execute_date
												FROM writs w2
												WHERE   w2.execute_date <= \'' . $year_edate . '\' AND
														w2.staff_id = w.staff_id AND
														w2.history_only = 0 AND
														w2.state = ' . WRIT_SALARY . ' AND
														(w2.execute_date > w.execute_date OR
														(w2.execute_date = w.execute_date AND w2.writ_id > w.writ_id) OR
														(w2.execute_date = w.execute_date AND w2.writ_id = w.writ_id AND w2.writ_ver > w.writ_ver))
												GROUP BY staff_id)
											END end_date,
									w.person_type
								FROM writs w
								WHERE w.history_only = 0 AND
									w.state = ' . WRIT_SALARY . ' AND
									( \'' . $year_edate . '\' >= w.execute_date OR w.execute_date IS NULL OR w.execute_date = \'0000-00-00\') 								
							');
        PdoDataAccess::runquery('ALTER TABLE temp_work_writs ADD INDEX(staff_id)');
        PdoDataAccess::runquery('DROP TABLE IF EXISTS temp_last_salary_writs;');
        PdoDataAccess::runquery('CREATE  TABLE temp_last_salary_writs  AS
									SELECT w.staff_id,
										SUBSTRING_INDEX(SUBSTRING( MAX( CONCAT(w.execute_date,w.writ_id,\'.\',w.writ_ver) ),11) ,\'.\',1) writ_id,
										SUBSTRING_INDEX(MAX( CONCAT(w.execute_date,w.writ_id,\'.\',w.writ_ver) ) ,\'.\',-1) writ_ver
									FROM writs w
									WHERE w.state = ' . WRIT_SALARY . ' AND
										w.history_only = 0  AND if(w.person_type = 3 , w.emp_mode not in ( 3,8,9,15,7,16,11,12,14,20,22) , (1=1)) 										 
									GROUP BY w.staff_id;');
        PdoDataAccess::runquery('ALTER TABLE temp_last_salary_writs ADD INDEX(staff_id,writ_id,writ_ver);');
        PdoDataAccess::runquery("SET NAMES 'utf8'");
        $WritWrk_DT = PdoDataAccess::runquery_fetchMode(' SELECT  w.staff_id,
														p.plname,
														p.pfname,
														w.person_type,
														w.cost_center_id,
														tlw.writ_id  last_writ_id,
														tlw.writ_ver last_writ_ver,
														s.bank_id,
														s.account_no,														
														si.tax_include,
														pay.staff_id as before_calced,
														( SELECT tax_table_type_id
														FROM staff_tax_history sth
														WHERE sth.staff_id = w.staff_id
														ORDER BY start_date DESC
														LIMIT 1
														) as tax_table_type_id,
														( SELECT SUM(wsi.value)
														FROM writ_salary_items wsi
														WHERE wsi.writ_id = w.writ_id AND
																wsi.writ_ver = w.writ_ver AND
																wsi.salary_item_type_id IN(' . SIT_WORKER_BASE_SALARY . ',' . SIT_WORKER_ANNUAL_INC . ') AND
																w.person_type = ' . HR_WORKER . ' AND
																w.state = ' . WRIT_SALARY . '
														) as worker_base_salary,
														SUM(DATEDIFF(tw.end_date,tw.execute_date) * tw.annual_coef) work_time
												FROM    temp_work_writs tw
														INNER JOIN staff s
															ON(tw.staff_id = s.staff_id)
														INNER JOIN staff_include_history si
															ON(s.staff_id = si.staff_id AND si.start_date <= \'' . $year_edate . '\' AND (si.end_date IS NULL OR si.end_date = \'0000-00-00\' OR si.end_date >= \'' . $year_edate . '\') )
														INNER JOIN persons p
															ON(s.PersonID = p.PersonID)
														INNER JOIN temp_last_salary_writs tlw
															ON(s.staff_id = tlw.staff_id)
														INNER JOIN writs w
															ON(tlw.staff_id = w.staff_id AND tlw.writ_id = w.writ_id AND tlw.writ_ver = w.writ_ver AND
															(w.person_type = ' . HR_WORKER . ' OR w.emp_mode <> ' . EMP_MODE_RETIRE . ') )
														LEFT OUTER JOIN payments pay
															ON(pay.pay_year = ' . $PayYear . ' AND pay.pay_month=12 AND pay.payment_type= ' . HANDSEL_PAYMENT . ' AND pay.staff_id = s.staff_id)
														
												WHERE   s.staff_id not in (1085919 , 25 , 29 , 1086493 , 1085766 , 1086203 , 1086272 , 1085025 ,2003012 ,1081975) AND tw.end_date > \'' . $year_fdate . '\' 
												GROUP BY w.staff_id,
														p.plname,
														p.pfname,
														w.person_type,
														w.cost_center_id,
														tlw.writ_id,
														tlw.writ_ver,
														s.bank_id,
														s.account_no,
														s.tafsili_id,
														pay.staff_id     having work_time > 0  ');
        //	echo PdoDataAccess::GetLatestQueryString(); die();
        $count = $WritWrk_DT->rowCount();
        //$WritWrkRes
        //.....................................................................
        if (DateModules::YearIsLeap($PayYear)) {
            $Month12Leng = 30;
        } else {
            $Month12Leng = 29;
        }
        //..............................انتقال پارامترهای حقوقی به یک آرایه .............
        exe_param_sql($PayYear, 12, $salaryParam);
        //........................................انتقال داده های جداول مالیاتی به یک آرایه ......................................
        exe_taxtable_sql($PayYear, 12, $taxTable);
        //......................................................................
        for ($i = 0; $i < $count; $i++) {
            $WritWrkRes = $WritWrk_DT->fetch();
            $PaymentObj = new manage_payments();
            $PayItmObj = new manage_payment_items();
            //................... اعمال کنترل..................................
            if ($WritWrkRes['cost_center_id'] == NULL) {
                $log_obj->make_unsuccess_rows($WritWrkRes['staff_id'], "-", "براي اين شخص مرکز هزينه مشخص نشده است.");
                $unsuccess_count++;
                continue;
            }
            if ($WritWrkRes['tax_table_type_id'] == NULL) {
                $log_obj->make_unsuccess_rows($WritWrkRes['staff_id'], "-", "براي اين شخص جدول مالياتي مشخص نشده است.");
                $unsuccess_count++;
                continue;
            }
            if ($WritWrkRes['before_calced'] > 0) {
                $log_obj->make_unsuccess_rows($WritWrkRes['staff_id'], "-", "محاسبه عيدي و پاداش اين شخص قبلا انجام شده است.");
                $unsuccess_count++;
                continue;
            }
            if (empty($taxTable[$WritWrkRes['tax_table_type_id']])) {
                $log_obj->make_unsuccess_rows($WritWrkRes['staff_id'], "-", " جدول مالیاتی برای فرد ناقص تعریف شده است.");
                $unsuccess_count++;
                continue;
            }
            if ($WritWrkRes['work_time'] == 0) {
                continue;
            }
            //.....................
            if ($WritWrkRes['staff_id'] == 2002664) {
                $WritWrkRes['work_time'] = 365;
            }
            if ($WritWrkRes['staff_id'] == 2002612) {
                $WritWrkRes['work_time'] = 365;
            }
            if ($WritWrkRes['staff_id'] == 2002561) {
                $WritWrkRes['work_time'] = 365;
            }
            if ($WritWrkRes['staff_id'] == 2003053 || $WritWrkRes['staff_id'] == 2002691) {
                $WritWrkRes['work_time'] = 365;
            }
            //..........................
            //................................محاسبه عیدی و پاداش با توجه به کارکرد فرد در طول سال................................
            $value = 0;
            if (DateModules::YearIsLeap($PayYear)) {
                $year_length = 366;
            } else {
                $year_length = 365;
            }
            if ($WritWrkRes['person_type'] == HR_WORKER) {
                if ($WritWrkRes['worker_base_salary'] * 2 > $salaryParam[SPT_JOB_SALARY][1] * 30 * 3) {
                    $value = $salaryParam[SPT_JOB_SALARY][1] * 30 * 3;
                } else {
                    $value = $WritWrkRes['worker_base_salary'] * 2;
                }
                $value *= $WritWrkRes['work_time'] / $year_length;
                $param2 = $salaryParam[SPT_JOB_SALARY][1];
            } else {
                $value = $WritWrkRes['work_time'] / $year_length * $salaryParam[SPT_HANDSEL_VALUE][0];
                $param2 = $salaryParam[SPT_HANDSEL_VALUE][0];
            }
            if ($WritWrkRes['person_type'] == HR_EMPLOYEE) {
                $key = 164;
            } elseif ($WritWrkRes['person_type'] == HR_PROFESSOR) {
                $key = 163;
            } elseif ($WritWrkRes['person_type'] == HR_WORKER) {
                $key = 165;
            } elseif ($WritWrkRes['person_type'] == HR_CONTRACT) {
                $key = 764;
            }
            $PaymentObj->staff_id = $WritWrkRes['staff_id'];
            $PaymentObj->pay_year = $PayYear;
            $PaymentObj->pay_month = 12;
            $PaymentObj->payment_type = $FileType;
            $PaymentObj->writ_id = $WritWrkRes['last_writ_id'];
            $PaymentObj->writ_ver = $WritWrkRes['last_writ_ver'];
            $PaymentObj->bank_id = $WritWrkRes['bank_id'];
            $PaymentObj->account_no = $WritWrkRes['account_no'];
            $PaymentObj->state = 1;
            if ($PaymentObj->Add() === false) {
                $log_obj->make_unsuccess_rows($WritWrkRes['staff_id'], "-", " خطا در ثبت جدول پرداخت");
                $unsuccess_count++;
                continue;
            }
            $PayItmObj->pay_year = $PayYear;
            $PayItmObj->pay_month = 12;
            $PayItmObj->staff_id = $WritWrkRes['staff_id'];
            $PayItmObj->salary_item_type_id = $key;
            $PayItmObj->pay_value = $value;
            $PayItmObj->get_value = 0;
            $PayItmObj->param1 = $WritWrkRes['work_time'];
            $PayItmObj->param2 = $param2;
            $PayItmObj->cost_center_id = $WritWrkRes['cost_center_id'];
            $PayItmObj->payment_type = HANDSEL_PAYMENT;
            if ($PayItmObj->Add() === false) {
                $log_obj->make_unsuccess_rows($WritWrkRes['staff_id'], "-", "خطا در ثبت اقلام پرداختی");
                $unsuccess_count++;
                continue;
            }
            //..........................محاسبه مالیات مربوط به عیدی و پاداش ...................
            if (empty($WritWrkRes['tax_include'])) {
                continue;
            }
            $handsel_key = $key;
            if ($WritWrkRes['person_type'] == 1) {
                $TaxKey = 146;
            } elseif ($WritWrkRes['person_type'] == 2) {
                $TaxKey = 147;
            } elseif ($WritWrkRes['person_type'] == 3) {
                $TaxKey = 148;
            } elseif ($WritWrkRes['person_type'] == 5) {
                $TaxKey = 747;
            }
            $handsel_value = $value;
            $tax = 0;
            //متغيري جهت نگهداري ماليات
            reset($taxTable);
            foreach ($taxTable[$WritWrkRes['tax_table_type_id']] as $tax_table_row) {
                $pay_mid_month_date = DateModules::shamsi_to_miladi($PayYear . "/12/15");
                if (DateModules::CompareDate($pay_mid_month_date, $tax_table_row['from_date']) != -1 && DateModules::CompareDate($pay_mid_month_date, $tax_table_row['to_date']) != 1) {
                    if ($handsel_value >= $tax_table_row['from_value'] && $handsel_value <= $tax_table_row['to_value']) {
                        $tax += ($handsel_value - $tax_table_row['from_value']) * $tax_table_row['coeficient'];
                    } else {
                        if ($handsel_value > $tax_table_row['to_value']) {
                            $tax += ($tax_table_row['to_value'] - $tax_table_row['from_value']) * $tax_table_row['coeficient'];
                        }
                    }
                }
            }
            if ($tax > 0) {
                $PayItmObj->pay_year = $PayYear;
                $PayItmObj->pay_month = 12;
                $PayItmObj->staff_id = $WritWrkRes['staff_id'];
                $PayItmObj->salary_item_type_id = $TaxKey;
                $PayItmObj->pay_value = 0;
                $PayItmObj->get_value = $tax;
                $PayItmObj->param1 = $handsel_value;
                $PayItmObj->param2 = $WritWrkRes['tax_table_type_id'];
                $PayItmObj->cost_center_id = $WritWrkRes['cost_center_id'];
                $PayItmObj->payment_type = HANDSEL_PAYMENT;
                if ($PayItmObj->Add() === false) {
                    $log_obj->make_unsuccess_rows($WritWrkRes['staff_id'], "-", "خطا در ثبت اقلام پرداختی");
                    $unsuccess_count++;
                    continue;
                }
            }
        }
        //End For
        $log_obj->finalize();
        $st = preg_replace('/\\r\\n/', "", $log_obj->make_result("UploadPayFilesObj.expand();"));
        if ($unsuccess_count > 0) {
            $pdo->rollBack();
        } else {
            $pdo->commit();
        }
        echo "{success:true,data:'" . $st . "'}";
        die;
    }
    if ($FileType == 7) {
        //echo "*ererer**" ; die();
        $pdo = PdoDataAccess::getPdoObject();
        $pdo->beginTransaction();
        for ($i = 1; $i < $data->sheets[0]['numRows']; $i++) {
            $query = " select staff_id , PersonID\n\t\t\t\t\t\t\t\t\t\t\tfrom staff where staff_id =" . $data->sheets[0]['cells'][$i][0];
            $resStf = PdoDataAccess::runquery($query);
            //echo PdoDataAccess::GetLatestQueryString() ; die();
            if (count($resStf) == 0) {
                $log_obj->make_unsuccess_rows($data->sheets[0]['cells'][$i][0], "-", " شماره شناسایی معتبر نمی باشد.");
                $unsuccess_count++;
                continue;
            }
            $query = " insert into person_subtracts (PersonID ,  subtract_type ,  first_value , instalment,\n\t\t\t\t\t\t\t\t\t\t\t remainder ,  start_date ,  end_date ,  salary_item_type_id , \n\t\t\t\t\t\t\t\t\t\t\t reg_date )  values (" . $resStf[0]['PersonID'] . " , 3 , \n\t\t\t\t\t\t\t\t\t\t\t\t                 " . $data->sheets[0]['cells'][$i][1] . ",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t " . $data->sheets[0]['cells'][$i][1] . ",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t " . $data->sheets[0]['cells'][$i][1] . ",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t '2015-02-20' ,'2015-03-20' , 9945 , '2015-03-15' ) ";
            //echo $query ; die();
            PdoDataAccess::runquery($query);
            //echo PdoDataAccess::GetLatestQueryString() ; die();
        }
        $log_obj->finalize();
        $st = preg_replace('/\\r\\n/', "", $log_obj->make_result("UploadPayFilesObj.expand();"));
        if ($unsuccess_count > 0) {
            $pdo->rollBack();
        } else {
            $pdo->commit();
        }
        echo "{success:true,data:'" . $st . "'}";
        die;
    }
}
예제 #30
0
function SaveCosts()
{
    $obj = new LON_costs();
    PdoDataAccess::FillObjectByJsonData($obj, $_POST["record"]);
    $pdo = PdoDataAccess::getPdoObject();
    $pdo->beginTransaction();
    if (empty($obj->CostID)) {
        if (!$obj->Add($pdo)) {
            echo Response::createObjectiveResponse(false, "خطا در ثبت هزینه");
            die;
        }
        if (!RegisterLoanCost($obj, $_POST["CostID"], $_POST["TafsiliID"], $_POST["TafsiliID2"], $pdo)) {
            echo Response::createObjectiveResponse(false, ExceptionHandler::GetExceptionsToString());
            die;
        }
    } else {
        if (!$obj->Edit($pdo)) {
            echo Response::createObjectiveResponse(false, "خطا در ویرایش هزینه");
            die;
        }
    }
    $pdo->commit();
    echo Response::createObjectiveResponse(true, "");
    die;
}