File: /home/mostafedeg/public_html/erp/controllers/employeePersonalController.php
<?php
// كنترول الموظفين
//
//the global file operation
include("../public/impOpreation.php");
//global varable
global $showoutside;
//to check if the page from .htacess
//$showoutside = $_GET['sn'];
// get the config file
include_once("../public/config.php");
include_once("initiateStaticSessionCommingWithCurl.php");
include_once("dailyentryfun.php");
//here the db files that include in the file
include("../public/include_dao.php");
require_once('../models/sql/Connection.class.php');
require_once('../models/sql/ConnectionFactory.class.php');
require_once('../models/sql/ConnectionProperty.class.php');
require_once('../models/sql/QueryExecutor.class.php');
require_once('../models/sql/Transaction.class.php');
require_once('../models/sql/SqlQuery.class.php');
require_once('../models/core/ArrayList.class.php');
require_once('../models/dao/DAOFactory.class.php');
require_once('../models/dao/EmployeepersonnelDAO.class.php');
require_once('../models/dto/Employeepersonnel.class.php');
require_once('../models/mysql/EmployeepersonnelMySqlDAO.class.php');
require_once('../models/mysql/ext/EmployeepersonnelMySqlExtDAO.class.php');
require_once('../models/dao/SaveDAO.class.php');
require_once('../models/dto/Save.class.php');
require_once('../models/mysql/SaveMySqlDAO.class.php');
require_once('../models/mysql/ext/SaveMySqlExtDAO.class.php');
require_once('../models/dao/SalaryreportDAO.class.php');
require_once('../models/dto/Salaryreport.class.php');
require_once('../models/mysql/SalaryreportMySqlDAO.class.php');
require_once('../models/mysql/ext/SalaryreportMySqlExtDAO.class.php');
require_once('../models/dao/SavedailyDAO.class.php');
require_once('../models/dto/Savedaily.class.php');
require_once('../models/mysql/SavedailyMySqlDAO.class.php');
require_once('../models/mysql/ext/SavedailyMySqlExtDAO.class.php');
require_once('../models/dao/EmployeeDAO.class.php');
require_once('../models/dto/Employee.class.php');
require_once('../models/mysql/EmployeeMySqlDAO.class.php');
require_once('../models/mysql/ext/EmployeeMySqlExtDAO.class.php');
//save dailay
require_once('../models/dao/SavedailyDAO.class.php');
require_once('../models/dto/Savedaily.class.php');
require_once('../models/mysql/SavedailyMySqlDAO.class.php');
require_once('../models/mysql/ext/SavedailyMySqlExtDAO.class.php');
require_once('../models/dao/CostcenterDAO.class.php');
require_once('../models/dto/Costcenter.class.php');
require_once('../models/mysql/CostcenterMySqlDAO.class.php');
require_once('../models/mysql/ext/CostcenterMySqlExtDAO.class.php');
require_once('../models/dao/CostcenterdetailDAO.class.php');
require_once('../models/dto/Costcenterdetail.class.php');
require_once('../models/mysql/CostcenterdetailMySqlDAO.class.php');
require_once('../models/mysql/ext/CostcenterdetailMySqlExtDAO.class.php');
//Programsetting
require_once('../models/dao/ProgramsettingsDAO.class.php');
require_once('../models/dto/Programsetting.class.php');
require_once('../models/mysql/ProgramsettingsMySqlDAO.class.php');
require_once('../models/mysql/ext/ProgramsettingsMySqlExtDAO.class.php');
//User
require_once('../models/dao/UserDAO.class.php');
require_once('../models/dto/User.class.php');
require_once('../models/mysql/UserMySqlDAO.class.php');
require_once('../models/mysql/ext/UserMySqlExtDAO.class.php');
require_once('../models/dao/YoutubeLinkDAO.class.php');
require_once('../models/dto/YoutubeLink.class.php');
require_once('../models/mysql/YoutubeLinkMySqlDAO.class.php');
require_once('../models/mysql/ext/YoutubeLinkMySqlExtDAO.class.php');
if (isset($_POST['curlpost']) && $_POST['curlpost'] == 1 || $_GET['do'] == 'addhazem') {
//no header its curl request
} else {
$smarty->display("header.html");
}
//$saveId=$BranchDAO->querysaveid($_SESSION['branchid']);
//creat object from employeePersonal
$EmployeepersonnelDAO = new EmployeepersonnelMySqlDAO();
$Employeepersonnel = new Employeepersonnel();
$EmployeepersonnelEX = new EmployeepersonnelMySqlExtDAO();
$Costcenterdetail = new Costcenterdetail();
$CostcenterdetailDAO = new CostcenterdetailMySqlDAO();
$CostcenterdetailEX = new CostcenterdetailMySqlExtDAO();
//Costcenter
$Costcenter = new Costcenter();
$CostcenterDAO = new CostcenterMySqlDAO();
$CostcenterEX = new CostcenterMySqlExtDAO();
//Dailyentry
$dailyEntry = new Dailyentry();
$dailyEntryDAO = new DailyentryMySqlDAO();
$dailyEntryEX = new DailyentryMySqlExtDAO();
//Dailyentrycreditor دائن
$dailyEntryCreditor = new Dailyentrycreditor();
$dailyEntryCreditorDAO = new DailyentrycreditorMySqlDAO();
$dailyEntryCreditorEX = new DailyentrycreditorMySqlExtDAO();
//Dailyentrydebtor مدين
$dailyEntryDebtor = new Dailyentrydebtor();
$dailyEntryDebtorDAO = new DailyentrydebtorMySqlDAO();
$dailyEntryDebtorEX = new DailyentrydebtorMySqlExtDAO();
//Programsetting
$ProgramsettingDAO = new ProgramsettingsMySqlDAO();
$programSettingExt = new ProgramsettingsMySqlExtDAO();
//save
$mySave = new Save();
$mySaveRecord = new SaveMySqlDAO();
$mySaveEx = new SaveMySqlExtDAO();
//savedaily
$mySavedaily = new Savedaily();
$mySavedailyRecord = new SavedailyMySqlDAO();
$mySavedailyEx = new SavedailyMySqlExtDAO();
$bank = new Bank();
$bankDAO = new BankMySqlDAO();
$bankAccount = new Bankaccount();
$bankAccountDAO = new BankaccountMySqlDAO;
$bankAccountEX = new BankaccountMySqlExtDAO;
$youtubeLink = new YoutubeLink();
$youtubeLinkDAO = new YoutubeLinkMySqlDAO();
$youtubeLinkEX = new YoutubeLinkMySqlExtDAO();
//creat object from employee
$empDao = new EmployeeMySqlDAO();
$emp = new Employee();
$empEX = new EmployeeMySqlExtDAO();
$salaryReportDAO = new SalaryreportMySqlDAO;
$salaryReport = new Salaryreport;
//create object from savedailay
$SavedailyDAO = new SavedailyMySqlDAO();
$Savedaily = new Savedaily();
$SavedailyEX = new SavedailyMySqlExtDAO();
//User
$myUser = new User();
$myUserRecord = new UserMySqlDAO();
$myUserEx = new UserMySqlExtDAO();
$do = $_GET['do'];
$langs = $_SESSION['erp_lang'];
include_once("../views/languages/$langs/success.php");
include_once("../views/languages/$langs/error.php");
$Programsettingdata = $ProgramsettingDAO->load(1);
$smarty->assign("Programsettingdata", $Programsettingdata);
$userData = $myUserRecord->load($_SESSION['userid']);
$smarty->assign("userData", $userData);
//dispaly add form
if (!isset($_GET['do'])) {
$today = date("Y-m-d H:i:s");
$smarty->assign('today', $today);
$allCostcenter = $CostcenterEX->queryAllnotdel();
$smarty->assign("allCostcenter", $allCostcenter);
$save = $mySaveRecord->queryAll();
$smarty->assign("save", $save);
$bank = $bankDAO->queryAll();
$smarty->assign("bank", $bank);
if ($_SESSION['branchId'] > 0)
$queryString = ' AND branchid = ' . $_SESSION['branchId'];
$allemp = $empEX->queryAllemployeebycondation(0, $queryString);
$smarty->assign('allemp', $allemp);
//$smarty->assign("customemployeePersonal", 1);
$smarty->display("employeePersonalview/add.html");
}
//save employee personnel in db
elseif ($do == "add") {
include_once("../public/authentication.php");
$employeepersonneltype = $_POST["type"];
$employeeid = (int) $_POST["empName"];
$paymethod = $_POST["paymethod"];
$employeepersonneldate = $_POST["employeepersonneldate"];
$deviceid = $_POST["deviceid"];
$userid = $_SESSION['userid'];
if ($_POST["saveid"]) {
$saveid = $_POST["saveid"];
} elseif ($_SESSION['saveid']) {
$saveid = $_SESSION['saveid'];
}
if (isset($_POST['curlpost']) && $_POST['curlpost'] == 1) {
$_POST["netSalary"] = getEmployeeNetSalary($employeeid);
$deviceid = $_POST["deviceid"];
}
try {
if ($employeepersonneltype == 10) { //kabd قبض Salary
$Costcenterid = (int) $_POST["Costcenterid"];
$salarymonthdate = date("Y-m", strtotime($employeepersonneldate));
curlAddSalary($employeeid, $salarymonthdate, $Costcenterid);
header("location:?do=sucess");
} else {
$employeepersonnelvalue = $_POST["empValue"];
$netSalary = $_POST["netSalary"];
//if ($employeepersonneltype == 3 && $netSalary < $employeepersonnelvalue) {
if (in_array($employeepersonneltype, array(2, 3, 7, 9, 11, 12)) && $netSalary < $employeepersonnelvalue) { //, 6
if ($netSalary > 0) { //we will take part from this month and part from next month
$valueForNextMonth = $employeepersonnelvalue - $netSalary;
$id = add($netSalary, 0, $paymethod, $employeepersonneltype, $deviceid, $employeeid, $employeepersonneldate, $userid, $saveid);
$id = add($valueForNextMonth, 1, $paymethod, $employeepersonneltype, $deviceid, $employeeid, $employeepersonneldate, $userid, $saveid);
} else { //no money available for this month take from next month
$valueForNextMonth = $employeepersonnelvalue;
$id = add($employeepersonnelvalue, 1, $paymethod, $employeepersonneltype, $deviceid, $employeeid, $employeepersonneldate, $userid, $saveid);
}
} else {
// $id = add($employeepersonnelvalue);
$id = add($employeepersonnelvalue, '', $paymethod, $employeepersonneltype, $deviceid, $employeeid, $employeepersonneldate, $userid, $saveid);
}
if (isset($_POST['curlpost']) && $_POST['curlpost'] == 1) {
1;
} else {
$print = (int) $_POST["print"];
if ($print == 1) {
//print details
header("location:?do=editprint&id=" . $id);
} else {
header("location:?do=sucess");
}
}
}
} catch (Exception $e) {
//echo $e;
header("location:?do=error");
}
} elseif ($do == "addhazem") {
include_once("../public/authentication.php");
// $day = date('l', strtotime('2022-07-21 08:00:26'));
// echo $day;
// exit();
$data2 = "
63;1;2022-07-22 08:00:00;1;7;0;
**63;1;2022-07-22 16:00:00;1;7;0
**63;1;2022-07-22 19:00:00;1;7;0;
**63;1;2022-07-23 10:00:00;1;7;0;
";
try {
$lists = explode("**", $data2);
foreach ($lists as $list) {
$data = explode(';', $list);
if ($list) {
$employeeid = $data[3];
$employeepersonneldate = $data[2];
$deviceid = $data[4];
$userid = $data[0];
$time = date('H:i:s', strtotime($employeepersonneldate));
$MONTH = date('m', strtotime($employeepersonneldate));
$date = date('Y-m-d', strtotime($employeepersonneldate));
$employeeholidays = R::count('employeeholidays', 'holiday_date = ?', [$date]);
$day = date('l', strtotime($employeepersonneldate));
$employee = R::getRow('SELECT * FROM employee WHERE employeeId = ?', [$employeeid]);
$employeeattendancesystemweek = R::getRow('SELECT * FROM employeeattendancesystemweek WHERE employee_id = ? and attendancedayen = ?', [$employeeid, $day]);
$startTime = date('H:i:s', strtotime('+' . $employee['numberOfMinutesOfDelayAllowed'] . ' minutes', strtotime($employeeattendancesystemweek['attendancetime'])));
$getone = $EmployeepersonnelEX->countEmployeePersonnel($employeeid, $date);
$minutes = $employee['Hourlyrate'] / 60;
if ($employeeholidays) {
$employeepersonneltype = 13;
if (!$getone) {
$employeepersonnelvalue = 0;
add($employeepersonnelvalue, '', $paymethod, $employeepersonneltype, $deviceid, $employeeid, $employeepersonneldate, $userid, 1);
} else if ($getone && $employeepersonneldate != $getone->employeepersonneldate) {
$getonebefore = $EmployeepersonnelEX->countEmployeePersonnelbefore($employeeid, $employeepersonneldate);
if (!$getonebefore) {
$diff_time = abs(strtotime($employeepersonneldate) - strtotime($getone->employeepersonneldate)) / 60;
$employeepersonnelvalue = $diff_time * $minutes;
add($employeepersonnelvalue, '', $paymethod, $employeepersonneltype, $deviceid, $employeeid, $employeepersonneldate, $userid, 1);
}
} else {
}
} else {
if ($getone) {
$getonebefore = $EmployeepersonnelEX->countEmployeePersonnelbefore($employeeid, $employeepersonneldate);
if ($employeeattendancesystemweek['departuretime'] < $time && !$getonebefore) {
$diff_time = abs(strtotime($time) - strtotime($employeeattendancesystemweek['departuretime'])) / 60;
$employeepersonnelvalue = $diff_time * $minutes;
$employeepersonneltype = 13;
add($employeepersonnelvalue, '', $paymethod, $employeepersonneltype, $deviceid, $employeeid, $employeepersonneldate, $userid, 1);
}
} else if (!$getone && $time > $startTime) {
$diff_time = abs(strtotime($time) - strtotime($startTime)) / 60;
$employeepersonnel5 = R::getcell('SELECT count(*) FROM employeepersonnel WHERE employeeid = ? and employeepersonneltype = 5 and conditions = 0 ', [$employeeid]);
$employeepersonneltype = 5;
if ($diff_time > 0 && $employeepersonnel5 < $employee['numberOfCountsOfDelayAllowed']) {
if ($diff_time < 15) {
$employeepersonnelvalue = $employee['quarterHourLateWithoutPermissionDisount'];
} else if ($diff_time > 15 && $diff_time < 30) {
$employeepersonnelvalue = $employee['halfHourLateWithoutPermissionDisount'];
} else if ($diff_time > 30 && $diff_time < 60) {
$employeepersonnelvalue = $employee['hourLateWithoutPermissionDisount'];
} else if ($diff_time > 60 && $diff_time < 120) {
$employeepersonnelvalue = $employee['twoHoursLateWithoutPermissionDisount'];
} else {
$employeepersonnelvalue = $employee['twoHoursLateWithoutPermissionDisount'];
}
}
add($employeepersonnelvalue, '', $paymethod, $employeepersonneltype, $deviceid, $employeeid, $employeepersonneldate, $userid, 1);
} else {
add(0, '', $paymethod, 0, $deviceid, $employeeid, $employeepersonneldate, $userid, 1);
}
}
}
}
echo 1;
} catch (Exception $e) {
//echo $e;
header("location:?do=error");
}
}
//show all
elseif ($do == "show") {
if ($userData->searchinonesave == 0) {
show();
}
$youtubes = $youtubeLinkDAO->queryAll();
$smarty->assign("youtubes", $youtubes);
$smarty->display('employeePersonalview/show.html');
} elseif ($do == "showdeptdef") {
showdeptdef();
$youtubes = $youtubeLinkDAO->queryAll();
$smarty->assign("youtubes", $youtubes);
$smarty->display('employeePersonalview/showdeptdef.html');
}
//show all
elseif ($do == "editprint") {
$mydata = editprint();
$smarty->assign('mydata', $mydata);
$smarty->display('employeePersonalview/editprint.html');
}
//delete
elseif ($do == "delete") {
include_once("../public/authentication.php");
if (isset($_POST['curlpost']) && $_POST['curlpost'] == 1) {
$empid = (int) $_POST["empName"];
$empValue = (float) $_POST["empValue"];
$emDate = $_POST["employeepersonneldate"];
$type = (int) $_POST["type"];
$result = $EmployeepersonnelEX->queryByEmpDayTypeValue($empid, $empValue, $emDate, $type);
$_GET["id"] = $result[0]->employeepersonnelid;
}
try {
delete();
if (isset($_POST['curlpost']) && $_POST['curlpost'] == 1) {
echo 1;
} else {
header("location:?do=sucess");
}
} catch (Exception $e) {
//echo $e;
if (isset($_POST['curlpost']) && $_POST['curlpost'] == 1) {
echo -1;
} else {
header("location:?do=error");
}
}
} elseif ($do == "noResult") {
$smarty->display("employeePersonalview/noResult.html");
} elseif ($_GET['do'] == "sucess") {
$smarty->display("succes.html");
} elseif ($_GET['do'] == "error") {
$smarty->display("error.html");
}
$smarty->assign("customemployeePersonal", 1);
$smarty->assign("customValidation", 1);
if (isset($_POST['curlpost']) && $_POST['curlpost'] == 1 || $_GET['do'] == 'addhazem') {
//no header its curl request
} else {
$smarty->display("footer.html");
}
function editprint() {
global $EmployeepersonnelEX;
$id = $_GET["id"];
$mydata = $EmployeepersonnelEX->loadEX($id);
return $mydata;
}
function show() {
global $smarty;
global $empEX;
global $empDao;
global $myUserRecord;
global $EmployeepersonnelEX;
$queryString = ' AND employee.conditions = 0 AND';
$queryString2 = ' AND employee.conditions = 0 AND';
if ($_SESSION['branchId'] > 0) {
$queryString .= ' employee.branchid = ' . $_SESSION['branchId'] . ' AND';
$queryString2 .= ' employee.branchid = ' . $_SESSION['branchId'] . ' AND';
}
$empName = $_REQUEST["empName"];
$from = $_REQUEST["from"];
$to = $_REQUEST["to"];
$employeepersonneltype = $_REQUEST["employeepersonneltype"];
if (isset($empName) && $empName != '-1') {
$queryString .= ' employeepersonnel.employeeid = ' . $empName . ' AND';
$queryString2 .= ' salaryreport.employeeid = ' . $empName . ' AND';
}
if (isset($from) && $from != '' && isset($to) && $to != '') {
$queryString .= ' date(employeepersonnel.employeepersonneldate) >= "' . $from . '" AND date(employeepersonnel.employeepersonneldate) <= "' . $to . '" AND';
$queryString2 .= ' date(salaryreport.salaryreportdate) >= "' . $from . '" AND date(salaryreport.salaryreportdate) <= "' . $to . '" AND';
} else {
$queryString .= ' YEAR(employeepersonnel.employeepersonneldate) = YEAR(CURRENT_DATE()) AND MONTH(employeepersonnel.employeepersonneldate) = Month(CURRENT_DATE()) AND';
$queryString2 .= ' YEAR(salaryreport.salaryreportdate) = YEAR(CURRENT_DATE()) AND MONTH(salaryreport.salaryreportdate) = Month(CURRENT_DATE()) AND';
}
if (isset($employeepersonneltype) && $employeepersonneltype != '-1') {
if ($employeepersonneltype == 10) {
//kabd قبض only
$queryString .= ' employeepersonnel.employeeid = -1000 AND'; //means stop getting data from employeepersonnel
} else {
//dont search in salary report
$queryString2 .= ' salaryreport.employeeid = -1000 AND'; //means stop getting data from salaryreport
}
}
$userData = $myUserRecord->load($_SESSION['userid']);
if ($userData->searchinonesave == 1) {
$queryString .= ' ((employeepersonnel.paymenttype = 0 AND employeepersonnel.payid= ' . $userData->saveid . ')|| employeepersonnel.paymenttype = 1) AND';
}
$arr = explode(' ', $queryString);
if (isset($arr) && count($arr) > 0) {
$lastWord = end($arr);
if ($lastWord == 'AND') {
//remove it
array_pop($arr);
//form the string again
$queryString = implode(' ', $arr);
//$queryString .= ' ';
} else if ($lastWord == 'WHERE') {
//remove it
array_pop($arr);
$queryString = ' ';
}
//print("<br>queryString: ".$queryString."<br>");
}
$arr = explode(' ', $queryString2);
if (isset($arr) && count($arr) > 0) {
$lastWord = end($arr);
if ($lastWord == 'AND') {
//remove it
array_pop($arr);
//form the string again
$queryString2 = implode(' ', $arr);
//$queryString .= ' ';
} else if ($lastWord == 'WHERE') {
//remove it
array_pop($arr);
$queryString2 = ' ';
}
//print("<br>queryString: ".$queryString."<br>");
}
if ($_SESSION['branchId'] > 0)
$qs = 'AND employee.branchid = ' . $_SESSION['branchId'];
$allemp = $empEX->queryAllemployee(' where employee.conditions = 0 ' . $qs);
$smarty->assign('allemp', $allemp);
$allReward = 0;
$allDiscount = 0;
$allWithdrawal = 0;
$allLoan = 0;
$allLate = 0;
$allPayLoan = 0;
$allPaySalary = 0;
$allEditDebit = 0;
$allAbsence = 0;
$allKabd = 0;
$allPermission = 0;
$artisticpenalty = 0;
$extratime = 0;
$empIds = array();
$allEmployeepersonnel = $EmployeepersonnelEX->queryAllEXWithDeleted2($queryString, $queryString2);
foreach ($allEmployeepersonnel as $personnel) {
if (!in_array($personnel->employeeid, $empIds)) {
array_push($empIds, $personnel->employeeid);
}
if ($personnel->employeepersonneltype == 1 || $personnel->employeepersonneltype == 13) {
if ($personnel->conditions == 0) {
$allReward += $personnel->employeepersonnelvalue;
}
} elseif ($personnel->employeepersonneltype == 2) {
if ($personnel->conditions == 0) {
$allDiscount += $personnel->employeepersonnelvalue;
}
} elseif ($personnel->employeepersonneltype == 3) {
if ($personnel->conditions == 0) {
$allWithdrawal += $personnel->employeepersonnelvalue;
}
} elseif ($personnel->employeepersonneltype == 4) {
if ($personnel->conditions == 0) {
$allLoan += $personnel->employeepersonnelvalue;
}
} elseif ($personnel->employeepersonneltype == 5) {
if ($personnel->conditions == 0) {
$allLate += $personnel->employeepersonnelvalue;
}
} elseif ($personnel->employeepersonneltype == 6) {
if ($personnel->conditions == 0) {
$allPayLoan += $personnel->employeepersonnelvalue;
}
} elseif ($personnel->employeepersonneltype == 7) {
if ($personnel->conditions == 0) {
$allPaySalary += $personnel->employeepersonnelvalue;
}
} elseif ($personnel->employeepersonneltype == 8) {
if ($personnel->conditions == 0) {
$allEditDebit += $personnel->employeepersonnelvalue;
}
} elseif ($personnel->employeepersonneltype == 9) {
if ($personnel->conditions == 0) {
$allAbsence += $personnel->employeepersonnelvalue;
}
} elseif ($personnel->employeepersonneltype == 10) {
if ($personnel->conditions == 0) {
$allKabd += $personnel->employeepersonnelvalue;
}
} elseif ($personnel->employeepersonneltype == 11) {
if ($personnel->conditions == 0) {
$allPermission += $personnel->employeepersonnelvalue;
}
} elseif ($personnel->employeepersonneltype == 12) {
if ($personnel->conditions == 0) {
$artisticpenalty += $personnel->employeepersonnelvalue;
}
} elseif ($personnel->employeepersonneltype == 13) {
if ($personnel->conditions == 0) {
$extratime += $personnel->employeepersonnelvalue;
}
}
}
$allSalary = 0;
$date1 = $from;
$date2 = $to;
$ts1 = strtotime($date1);
$ts2 = strtotime($date2);
$year1 = date('Y', $ts1);
$year2 = date('Y', $ts2);
$month1 = date('m', $ts1);
$month2 = date('m', $ts2);
$diff = (($year2 - $year1) * 12) + ($month2 - $month1);
$diff++;
foreach ($empIds as $empId) {
$employeeData = $empDao->load($empId);
$allSalary += $employeeData->employeeSalary * $diff; //*no of months
}
$smarty->assign('allEmployeepersonnel', $allEmployeepersonnel);
$smarty->assign('allReward', $allReward);
$smarty->assign('allDiscount', $allDiscount);
$smarty->assign('allWithdrawal', $allWithdrawal);
$smarty->assign('allLoan', $allLoan);
$smarty->assign('allLate', $allLate);
$smarty->assign('allPayLoan', $allPayLoan);
$smarty->assign('allPaySalary', $allPaySalary);
$smarty->assign('allEditDebit', $allEditDebit);
$smarty->assign('allSalary', $allSalary);
$smarty->assign('allAbsence', $allAbsence);
$smarty->assign('allKabd', $allKabd);
$smarty->assign('allPermission', $allPermission);
$smarty->assign('artisticpenalty', $artisticpenalty);
$smarty->assign('extratime', $extratime);
}
function showdeptdef() {
global $smarty;
global $empEX;
global $EmployeepersonnelEX;
$queryString = ' AND';
if ($_SESSION['branchId'] > 0)
$queryString .= ' branchid = ' . $_SESSION['branchId'] . ' AND';
$empName = $_REQUEST["empName"];
$from = $_REQUEST["from"];
$to = $_REQUEST["to"];
$employeepersonneltype = $_REQUEST["employeepersonneltype"];
if (isset($empName) && $empName != '-1') {
$queryString .= ' employeepersonnel.employeeid = ' . $empName . ' AND';
}
if (isset($from) && $from != '' && isset($to) && $to != '') {
$queryString .= ' employeepersonnel.employeepersonneldate >= "' . $from . '" AND employeepersonnel.employeepersonneldate <= "' . $to . '" AND';
}
$arr = explode(' ', $queryString);
if (isset($arr) && count($arr) > 0) {
$lastWord = end($arr);
if ($lastWord == 'AND') {
//remove it
array_pop($arr);
//form the string again
$queryString = implode(' ', $arr);
//$queryString .= ' ';
} else if ($lastWord == 'WHERE') {
//remove it
array_pop($arr);
$queryString = ' ';
}
//print("<br>queryString: ".$queryString."<br>");
}
if ($_SESSION['branchId'] > 0)
$queryStringAll = ' where branchid = ' . $_SESSION['branchId'];
$allemp = $empEX->queryAllemployee($queryStringAll);
$smarty->assign('allemp', $allemp);
if (isset($queryString) && $queryString != "") {
$allEmployeepersonneladvance = $EmployeepersonnelEX->queryAllEXsum($queryString, 4);
$directPayment = $EmployeepersonnelEX->queryAllEXsum($queryString, 6);
$Paymentfromsalary = $EmployeepersonnelEX->queryAllEXsum($queryString, 7);
$remin = ($allEmployeepersonneladvance->total) - (($directPayment->total) + ($Paymentfromsalary->total));
$smarty->assign('allEmployeepersonneladvance', $allEmployeepersonneladvance);
$smarty->assign('directPayment', $directPayment);
$smarty->assign('Paymentfromsalary', $Paymentfromsalary);
$smarty->assign('remin', $remin);
}
}
function delete() {
global $mySave;
global $mySaveEx;
global $mySaveRecord;
global $mySavedaily;
global $mySavedailyEx;
global $mySavedailyRecord;
global $Employeepersonnel;
global $EmployeepersonnelDAO;
global $EmployeepersonnelEX;
global $CostcenterdetailDAO;
global $CostcenterdetailEX;
$id = $_GET["id"];
$CostcenterdetailEX->updatedellbytypeandmodelid('9,10,11', $id, 1);
//print_r($Employeepersonnel);
$mydata = $EmployeepersonnelDAO->load($id);
$employeepersonneltype = $mydata->employeepersonneltype;
$employeepersonnelvalue = $mydata->employeepersonnelvalue;
$Employeepersonnel->conditions = 1;
$Employeepersonnel->done = 1;
$Employeepersonnel->userid = $_SESSION['userid'];
$Employeepersonnel->employeepersonnelid = $id;
$saveid = $_SESSION['saveid'];
if ($mydata->paymenttype == 0)
$saveid = $mydata->payid;
if ($EmployeepersonnelEX->updatedel($Employeepersonnel)) {
if ($employeepersonneltype == 3 || $employeepersonneltype == 4 || $employeepersonneltype == 6) { //سحب او سلفه
//Insert in employeePersonnel
if ($id != null) {
$saveValueafterValid;
$saveValueBefore = getSaveValueBefore($saveid);
// الغاء سحب او سلف
if ($employeepersonneltype == 3 || $employeepersonneltype == 4) {
$saveValueafterValid = $saveValueBefore + $employeepersonnelvalue;
}
//الغاء سداد سلفه
elseif ($employeepersonneltype == 6) {
$saveValueafterValid = $saveValueBefore - $employeepersonnelvalue;
}
updateSave($saveid, $saveValueafterValid);
//الغاء سحب
if ($employeepersonneltype == 3) {
insertSavedaily($saveValueBefore, $employeepersonnelvalue, 0, $saveid, 'حذف سحب لموظف', $id, $saveValueafterValid, 'employeePersonalController.php');
}
// الغاء سلفه
elseif ($employeepersonneltype == 4) {
insertSavedaily($saveValueBefore, $employeepersonnelvalue, 0, $saveid, 'حذف سلفه لموظف', $id, $saveValueafterValid, 'employeePersonalController.php');
}
// الغاء سداد سلفه
elseif ($employeepersonneltype == 6) {
insertSavedaily($saveValueBefore, $employeepersonnelvalue, 1, $saveid, ' حذف سداد سلفه لموظف', $id, $saveValueafterValid, 'employeePersonalController.php');
}
//print_r($currentvalue);
}
reverseEntryWithItsID($mydata->dailyentryid);
}
}
}
function add(
$employeepersonnelvalue,
$saveInNextMonth = 0,
$paymethod = 0,
$employeepersonneltype = 0,
$deviceid = '01',
$employeeid,
$employeepersonneldate = "date('Y-m-d H:i:s')",
$userid = 0,
$saveid = 0
) {
global $mySave;
global $mySaveEx;
global $mySaveRecord;
global $mySavedaily;
global $mySavedailyEx;
global $mySavedailyRecord;
global $Employeepersonnel;
global $EmployeepersonnelDAO;
global $empDao;
global $emp;
global $empEX;
global $CostcenterdetailDAO;
global $Costcenterdetail;
global $bankAccountDAO;
//Dailyentry
global $dailyEntry;
global $dailyEntryDAO;
//Dailyentrycreditor دائن
global $dailyEntryCreditor;
global $dailyEntryCreditorDAO;
//Dailyentrydebtor مدين
global $dailyEntryDebtor;
global $dailyEntryDebtorDAO;
// $employeepersonneltype = $_POST["type"];
$employeepersonnelnote = $_POST["desc"];
// $employeeid = $_POST["empName"];
$Costcenterid = $_POST["Costcenterid"];
// $paymethod = $_POST["paymethod"];
$isMandobReward = (int) $_POST["isMandobReward"];
// //$today = date("Y-m-d H:i:s");
// $employeepersonneldate = $_POST["employeepersonneldate"];
// $deviceid = $_POST["deviceid"];
$timePart = date('H:i:s', strtotime($employeepersonneldate));
if ($saveInNextMonth == 1) { //use first day from next month
$employeepersonneldate = date("Y-m-1 $timePart", strtotime('+1 months'));
}
$Employeepersonnel->employeepersonneldate = $employeepersonneldate; //$today;
$Employeepersonnel->conditions = 0;
$Employeepersonnel->employeepersonnelvalue = $employeepersonnelvalue;
$Employeepersonnel->employeepersonneltype = $employeepersonneltype;
$Employeepersonnel->employeepersonnelnote = $employeepersonnelnote;
$Employeepersonnel->employeeid = $employeeid;
$Employeepersonnel->deviceid = $deviceid;
$Employeepersonnel->employeedeviceid = $deviceid . $employeeid;
$Employeepersonnel->userid = $userid;
$treeIdBankAccount = 0;
$treeIdSave = 0;
$paymethodTreeId = 0;
if ($paymethod == 1) {
##bank
$bankid = $_POST["bankid"];
$bankaccountid = $_POST["bankaccountid"];
$checkNo = $_POST["checkNo"];
$Employeepersonnel->paymenttype = 1;
$Employeepersonnel->payid = $bankid;
$Employeepersonnel->payid2 = $bankaccountid;
$Employeepersonnel->checknum = $checkNo;
$bankAccountData = $bankAccountDAO->load($bankaccountid);
$treeIdBankAccount = $paymethodTreeId = $bankAccountData->treeId;
} else {
##save
$Employeepersonnel->paymenttype = 0;
$Employeepersonnel->payid = $saveid;
$Employeepersonnel->payid2 = 0;
$Employeepersonnel->checknum = "";
$saveData = $mySaveRecord->load($saveid);
$treeIdSave = $paymethodTreeId = $saveData->treeId;
}
$myempdata = $empDao->load($employeeid);
$modelId;
$empdept = $myempdata->empdept;
//here types that affect employee debt, part of net salary is calculated in ajax employeePersonalajex.php?do=getNetSalary and salaryReportController.php
if ($employeepersonneltype == 4 || $employeepersonneltype == 6) {
$empdeptafter;
//سلفه
if ($employeepersonneltype == 4) {
$empdeptafter = $empdept + $employeepersonnelvalue;
}
//سداد سلفه
elseif ($employeepersonneltype == 6) {
$empdeptafter = $empdept - $employeepersonnelvalue;
}
$emp->empdept = $empdeptafter;
$emp->employeeId = $employeeid;
$empEX->updatedept($emp);
} elseif ($employeepersonneltype == 8) {
$empdeptafter = $employeepersonnelvalue;
$emp->empdept = $empdeptafter;
$emp->employeeId = $employeeid;
$empEX->updatedept($emp);
} else {
$empdeptafter = $empdept;
}
$Employeepersonnel->empdeptafter = $empdeptafter;
$Employeepersonnel->empdeptbefor = $empdept;
$Employeepersonnel->isMandobReward = $isMandobReward;
$modelId = $EmployeepersonnelDAO->insert($Employeepersonnel);
//print_r($Employeepersonnel);
//$Revenuestype->userid=$_SESSION['userid'];
if ($employeepersonneltype == 3 || $employeepersonneltype == 4 || $employeepersonneltype == 6) { //سحب او سلفه
if ($employeepersonneltype == 3) {
$Costcenterdetail->processname = 'سحب لموضف';
$Costcenterdetail->type = 9;
} elseif ($employeepersonneltype == 4) {
$Costcenterdetail->processname = 'سلفه لموظف';
$Costcenterdetail->type = 10;
} elseif ($employeepersonneltype == 6) {
$Costcenterdetail->processname = 'سداد سلفه مباشره';
$Costcenterdetail->type = 11;
}
$Costcenterdetail->costamount = $employeepersonnelvalue;
$Costcenterdetail->costcenterid = $Costcenterid;
$Costcenterdetail->costdate = date('Y-m-d');
$Costcenterdetail->del = 0;
$Costcenterdetail->modelid = $modelId;
$Costcenterdetail->tablename = 'employeePersonalController.php';
$Costcenterdetail->uesrid = $userid;
if ($Costcenterid != -1 && $Costcenterid != '-1') {
$CostcenterdetailDAO->insert($Costcenterdetail);
}
//Insert in employeePersonnel
if ($employeepersonneltype == 8) {
} else {
if ($modelId != null) {
// $saveId = $saveid;
// if ($_POST["saveid"] != $_SESSION['saveid'])
$saveId = $saveid;
$saveValueafterValid;
$saveValueBefore = getSaveValueBefore($saveId);
if ($employeepersonneltype == 3 || $employeepersonneltype == 4) {
$saveValueafterValid = $saveValueBefore - $employeepersonnelvalue;
} elseif ($employeepersonneltype == 6) {
$saveValueafterValid = $saveValueBefore + $employeepersonnelvalue;
}
updateSave($saveId, $saveValueafterValid);
if ($employeepersonneltype == 3) {
insertSavedaily($saveValueBefore, $employeepersonnelvalue, 1, $saveId, 'اضافه سحب لموظف', $modelId, $saveValueafterValid, 'employeePersonalController.php');
} elseif ($employeepersonneltype == 4) {
insertSavedaily($saveValueBefore, $employeepersonnelvalue, 1, $saveId, 'اضافه سلفه لموظف', $modelId, $saveValueafterValid, 'employeePersonalController.php');
} elseif ($employeepersonneltype == 6) {
insertSavedaily($saveValueBefore, $employeepersonnelvalue, 0, $saveId, 'سداد سلفه لموظف', $modelId, $saveValueafterValid, 'employeePersonalController.php');
}
//print_r($currentvalue);
}
}
}
doEmployeePersonalDailyEntry($modelId);
return $modelId;
}
////////////////////////////save///////////////////////////
// get savecurrentvalue from save tbl
function getSaveValueBefore($saveid) {
//to use the variable out side the funcion
global $mySave;
global $mySaveRecord;
$saveData = getSaveDataFromSaveInUseSP($saveid); //$saveData = $mySaveRecord->load($saveid);
$saveValuebefore = $saveData->savecurrentvalue;
return $saveValuebefore;
}
// get initialvalue and plus from save tbl
function getSaveValueAndPlus($saveid, $savevaluechanged) {
//to use the variable out side the funcion
global $mySave;
global $mySaveRecord;
$saveData = getSaveDataFromSaveInUseSP($saveid); //$saveData = $mySaveRecord->load($saveid);
$saveId = $saveData->saveid;
$saveValuebefore = $saveData->savecurrentvalue;
$saveValueafter = $saveValuebefore + $savevaluechanged;
return array($saveId, $saveValuebefore, $saveValueafter);
}
// get initialvalue and mins from save tbl
function getSaveValueAndMins($saveid, $savevaluechanged) {
//to use the variable out side the funcion
global $mySave;
global $mySaveRecord;
$saveData = getSaveDataFromSaveInUseSP($saveid); //$saveData = $mySaveRecord->load($saveid);
$saveId = $saveData->saveid;
$saveValuebefore = $saveData->savecurrentvalue;
$saveValueafter = $saveValuebefore - $savevaluechanged;
return array($saveId, $saveValuebefore, $saveValueafter);
}
// update in Save tbl
function updateSave($saveid, $savevalueafter) {
//to use the variable out side the funcion
global $mySave;
global $mySaveEx;
//update initialvalue in Save tbl
$mySave->savecurrentvalue = $savevalueafter;
$mySave->userid = $_SESSION['userid'];
$mySave->saveid = $saveid;
$mySaveEx->updateSaveValue($mySave);
markSaveAsNOTInUse($saveid);
}
// insert in Savedaily tbl
function insertSavedaily($savedailysavebefore, $savedailychangeamount, $savedailychangetype, $saveid, $processname, $savedailymodelid, $savedailysaveafter, $tablename) {
//to use the variable out side the funcion
global $mySavedaily;
global $mySavedailyRecord;
//insert in Savedaily tbl
$mySavedaily->savedailydate = date("Y-m-d H:i:s");
$mySavedaily->userid = $_SESSION['userid'];
$mySavedaily->savedailysavebefore = $savedailysavebefore;
$mySavedaily->savedailychangeamount = $savedailychangeamount;
$mySavedaily->savedailychangetype = $savedailychangetype;
$mySavedaily->saveid = $saveid;
$mySavedaily->processname = $processname;
$mySavedaily->savedailymodelid = $savedailymodelid;
$mySavedaily->savedailysaveafter = $savedailysaveafter;
$mySavedaily->tablename = $tablename;
$mySavedailyRecord->insert($mySavedaily);
}
function getSaveDataFromSaveInUseSP($saveid) {
global $mySaveEx;
$noOfTries = 0;
$save_data = $mySaveEx->callSaveInUseSP($saveid);
while ($save_data->saveid < 0) {
sleep(1);
$noOfTries++;
if ($noOfTries > 15) { // mean 15 sec as sleep is 1 sec her
//markSaveAsNOTInUse -- using redbeans to instantly execute in database as we are in transaction now "means affecting row is done @end of execution or comit"
liveBackupComment("-- force free save=$saveid with redbean");
R::exec('UPDATE save SET inUse = 0 where saveid = ' . $saveid);
}
$save_data = $mySaveEx->callSaveInUseSP($saveid);
}
return $save_data;
}
function markSaveAsNOTInUse($saveid) { //mark as not in use "free him to be able to change debt again"
global $mySaveEx;
$mySaveEx->markSaveAsNOTInUse($saveid);
}
function getEmployeeNetSalary($id) { //copied from employeePersonalajex.php?do=getNetSalary
global $empEX;
$today = date("Y-m-d");
$from = date("Y-m");
if ($from != "") {
$start = $from . '-01';
$end = $from . '-31';
//
$x[] = array();
$allsalarys = $empEX->getall($id);
if ($allsalarys->employeeBouns == null || $allsalarys->employeeBouns == "") {
$allsalarys->employeeBouns = 0;
}
if ($allsalarys->empdept == null || $allsalarys->empdept == "" || $allsalarys->empdept == 0) {
$allsalarys->empdept = 0;
}
if ($allsalarys->Reward == null || $allsalarys->Reward == "") {
$allsalarys->Reward = 0;
}
if ($allsalarys->Discount == null || $allsalarys->Discount == "") {
$allsalarys->Discount = 0;
}
if ($allsalarys->Withdraw == null || $allsalarys->Withdraw == "") {
$allsalarys->Withdraw = 0;
}
if ($allsalarys->Absence == null || $allsalarys->Absence == "") {
$allsalarys->Absence = 0;
}
if ($allsalarys->Repayment == null || $allsalarys->Repayment == "") {
$allsalarys->Repayment = 0;
}
$x[0] = $allsalarys->employeeId;
$x[1] = $allsalarys->employeeName;
$x[2] = $allsalarys->employeeSalary;
$x[3] = $allsalarys->employeeBouns;
$x[4] = $allsalarys->Reward;
$x[5] = $allsalarys->Discount;
$x[6] = $allsalarys->Withdraw;
$x[7] = $allsalarys->Absence;
$x[9] = $allsalarys->Repayment;
$x[10] = ($allsalarys->empdept) - ($allsalarys->Repayment); //current dept
$total = (($allsalarys->employeeBouns) + ($allsalarys->Reward) + ($allsalarys->employeeSalary)) -
(($allsalarys->Discount) + ($allsalarys->Withdraw) + ($allsalarys->Absence) + ($allsalarys->Repayment));
$x[8] = $total; //net salary
//echo $x[8] . "*" . $x[10]; //net salary,current dept
return array($x[8], $x[10]);
}
}
function doEmployeePersonalDailyEntry($EmployeepersonnelId) {
global $EmployeepersonnelDAO;
global $empDao;
global $mySaveRecord;
global $bankAccountDAO;
## get data
$Employeepersonnel = $EmployeepersonnelDAO->load($EmployeepersonnelId);
$myempdata = $empDao->load($Employeepersonnel->employeeid);
$employeepersonnelvalue = $Employeepersonnel->employeepersonnelvalue;
$employeepersonneltype = $Employeepersonnel->employeepersonneltype;
if ($Employeepersonnel->paymenttype == 1) {
##bank
$bankid = $Employeepersonnel->payid;
$bankaccountid = $Employeepersonnel->payid2;
$bankAccountData = $bankAccountDAO->load($bankaccountid);
$treeIdBankAccount = $paymethodTreeId = $bankAccountData->treeId;
} else {
##save
$saveid = $Employeepersonnel->payid;
$saveData = $mySaveRecord->load($saveid);
$treeIdSave = $paymethodTreeId = $saveData->treeId;
}
## do daily entry for save involved only
$dailyEntryDebtorArray = array();
$dailyEntryDebtor->value = $employeepersonnelvalue;
$dailyEntryCreditorArray = array();
$dailyEntryCreditor->value = $employeepersonnelvalue;
######
switch ($employeepersonneltype) {
//سحب//-
case 3:
$dailyEntry->entryComment = 'سحب لموظف ' . $myempdata->employeeName;
$dailyEntryDebtor->accountstreeid = $myempdata->treeId;
$dailyEntryCreditor->accountstreeid = $paymethodTreeId;
break;
//سلفه//-
case 4:
$dailyEntry->entryComment = 'سلفه لموظف ' . $myempdata->employeeName;
$dailyEntryDebtor->accountstreeid = $myempdata->treeId;
$dailyEntryCreditor->accountstreeid = $paymethodTreeId;
break;
//سداد سلفه مباشره//+
case 6:
$dailyEntry->entryComment = 'سداد سلفه مباشره لموظف ' . $myempdata->employeeName;
$dailyEntryDebtor->accountstreeid = $paymethodTreeId;
$dailyEntryCreditor->accountstreeid = $myempdata->treeId;
break;
}
//daily Entry
array_push($dailyEntryDebtorArray, $dailyEntryDebtor);
array_push($dailyEntryCreditorArray, $dailyEntryCreditor);
$returnedData = insertEntery($dailyEntry, $dailyEntryDebtorArray, $dailyEntryCreditorArray, 1);
$did = $returnedData[1];
$Employeepersonnel->dailyentryid = $did;
$Employeepersonnel->employeepersonnelid = $EmployeepersonnelId;
$EmployeepersonnelDAO->update($Employeepersonnel);
}
//better to add client using erp files it self so use curl "it is like post requist but in php"
function curlAddSalary($empid, $salarymonthdate, $Costcenterid) {
// set post fields
$post = [
'fromCtrl' => 'employeePersonal',
'empid' => $empid,
'Costcenterid' => $Costcenterid,
'salarymonthdate' => $salarymonthdate,
'userid' => $_SESSION['userid'],
'saveid' => $_SESSION["saveid"],
'dbname' => $_SESSION["dbname"],
];
//$ch = curl_init(HOST_URL_ERP . '/controllers/clientControllerAjax.php?do=addclient');
$ch = curl_init('http://localhost/ERP/controllers/salaryReportController.php?do=Receipt');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
// execute!
$response = curl_exec($ch);
// close the connection, release resources used
curl_close($ch);
// do anything you want with your response
var_dump($response);
}