Fixes for payroll generation with mysql 5.7 strict modes 💶

This commit is contained in:
gamonoid
2017-09-09 15:24:24 +02:00
parent 382eef1ac0
commit e650771867
4 changed files with 27 additions and 17 deletions

View File

@@ -110,11 +110,12 @@ include APP_BASE_PATH.'modulejslibs.inc.php';
modJsList['tabPayrollData'].setTables('PayrollEmployee','PayrollColumn','PayrollData'); modJsList['tabPayrollData'].setTables('PayrollEmployee','PayrollColumn','PayrollData');
modJsList['tabPayrollColumn'] = new PayrollColumnAdapter('PayrollColumn','PayrollColumn','','name, colorder'); modJsList['tabPayrollColumn'] = new PayrollColumnAdapter('PayrollColumn','PayrollColumn','','name, colorder');
modJsList['tabPayrollColumn'].setRemoteTable(true);
//modJsList['tabPayrollColumnTemplate'] = new PayrollColumnTemplateAdapter('PayrollColumnTemplate','PayrollColumnTemplate'); //modJsList['tabPayrollColumnTemplate'] = new PayrollColumnTemplateAdapter('PayrollColumnTemplate','PayrollColumnTemplate');
modJsList['tabPayrollEmployee'] = new PayrollEmployeeAdapter('PayrollEmployee','PayrollEmployee'); modJsList['tabPayrollEmployee'] = new PayrollEmployeeAdapter('PayrollEmployee','PayrollEmployee');
modJsList['tabPayrollEmployee'].setRemoteTable(true); modJsList['tabPayrollEmployee'].setRemoteTable(true);
modJsList['tabPayslipTemplate'] = new PayslipTemplateAdapter('PayslipTemplate','PayslipTemplate'); modJsList['tabPayslipTemplate'] = new PayslipTemplateAdapter('PayslipTemplate','PayslipTemplate');
modJsList['tabPayslipTemplate'].setRemoteTable(true); modJsList['tabPayslipTemplate'].setRemoteTable(true);

View File

@@ -116,14 +116,15 @@ PayrollAdapter.method('getFormFields', function() {
return [ return [
[ "id", {"label":"ID","type":"hidden"}], [ "id", {"label":"ID","type":"hidden"}],
[ "name", {"label":"Name","type":"text"}], [ "name", {"label":"Name","type":"text"}],
[ "pay_period", {"label":"Pay Frequency","type":"select","remote-source":["PayFrequency","id","name"]}], [ "pay_period", {"label":"Pay Frequency","type":"select","remote-source":["PayFrequency","id","name"],"sort":"none"}],
[ "deduction_group", {"label":"Calculation Group","type":"select","remote-source":["DeductionGroup","id","name"],"sort":"none"}],
[ "payslipTemplate", {"label":"Payslip Template","type":"select","remote-source":["PayslipTemplate","id","name"]}], [ "payslipTemplate", {"label":"Payslip Template","type":"select","remote-source":["PayslipTemplate","id","name"]}],
[ "department", {"label":"Department","type":"select2","remote-source":["CompanyStructure","id","title"]}], [ "department", {"label":"Department","type":"select2","remote-source":["CompanyStructure","id","title"],"sort":"none"}],
[ "date_start", {"label":"Start Date","type":"date","validation":""}], [ "date_start", {"label":"Start Date","type":"date","validation":""}],
[ "date_end", {"label":"End Date","type":"date","validation":""}], [ "date_end", {"label":"End Date","type":"date","validation":""}],
//[ "column_template", {"label":"Report Column Template","type":"select","remote-source":["PayrollColumnTemplate","id","name"]}], //[ "column_template", {"label":"Report Column Template","type":"select","remote-source":["PayrollColumnTemplate","id","name"]}],
[ "columns", {"label":"Payroll Columns","type":"select2multi","remote-source":["PayrollColumn","id","name"]}], [ "columns", {"label":"Payroll Columns","type":"select2multi","remote-source":["PayrollColumn","id","name"]}],
[ "status", {"label":"Status","type":"select","source":[["Draft","Draft"],["Completed","Completed"]]}] [ "status", {"label":"Status","type":"select","source":[["Draft","Draft"],["Completed","Completed"]],"sort":"none"}]
]; ];
}); });
@@ -303,7 +304,7 @@ PayrollColumnAdapter.method('getDataMapping', function() {
PayrollColumnAdapter.method('getHeaders', function() { PayrollColumnAdapter.method('getHeaders', function() {
return [ return [
{ "sTitle": "ID" ,"bVisible":true}, { "sTitle": "ID" ,"bVisible":false},
{ "sTitle": "Name"}, { "sTitle": "Name"},
{ "sTitle": "Column Order"}, { "sTitle": "Column Order"},
{ "sTitle": "Calculation Method"}, { "sTitle": "Calculation Method"},
@@ -409,7 +410,7 @@ PayrollEmployeeAdapter.method('getHeaders', function() {
{ "sTitle": "ID" ,"bVisible":false}, { "sTitle": "ID" ,"bVisible":false},
{ "sTitle": "Employee" }, { "sTitle": "Employee" },
{ "sTitle": "Pay Frequency"}, { "sTitle": "Pay Frequency"},
{ "sTitle": "Deduction Group"}, { "sTitle": "Calculation Group"},
{ "sTitle": "Currency"}, { "sTitle": "Currency"},
]; ];
}); });
@@ -601,7 +602,7 @@ PayslipTemplateAdapter.method('getFormFields', function() {
var payslipFields = [ "data", {"label":"Payslip Fields","type":"datagroup", var payslipFields = [ "data", {"label":"Payslip Fields","type":"datagroup",
"form":[ "form":[
[ "type", {"label":"Type","type":"select","sort":"none","source":[["Payroll Column","Payroll Column"],["Text","Text"],["Company Name","Company Name"],["Company Logo","Company Logo"], ["Separators","Separators"]]}], [ "type", {"label":"Type","type":"select","sort":"none","source":[["Payroll Column","Payroll Column"],["Text","Text"],["Company Name","Company Name"],["Company Logo","Company Logo"], ["Separators","Separators"]]}],
[ "payrollColumn", {"label":"Payroll Column","type":"select2","allow-null":true,"remote-source":["PayrollColumn","id","name"]}], [ "payrollColumn", {"label":"Payroll Column","type":"select2","sort":"none","allow-null":true,"null-label":"None","remote-source":["PayrollColumn","id","name"]}],
[ "label", {"label":"Label","type":"text","validation":"none"}], [ "label", {"label":"Label","type":"text","validation":"none"}],
[ "text", {"label":"Text","type":"textarea","validation":"none"}], [ "text", {"label":"Text","type":"textarea","validation":"none"}],

View File

@@ -321,7 +321,10 @@ class PayrollActionManager extends SubActionManager
$employeeNamesById = array(); $employeeNamesById = array();
$baseEmp = new Employee(); $baseEmp = new Employee();
$baseEmpList = $baseEmp->Find("department in (".implode(",", $cssIds).") and status = ?", array('Active')); $baseEmpList = $baseEmp->Find(
"department in (".implode(",", $cssIds).") and status = ?",
array('Active')
);
$empIds = array(); $empIds = array();
foreach ($baseEmpList as $baseEmp) { foreach ($baseEmpList as $baseEmp) {
$employeeNamesById[$baseEmp->id] = $baseEmp->first_name." ".$baseEmp->last_name; $employeeNamesById[$baseEmp->id] = $baseEmp->first_name." ".$baseEmp->last_name;
@@ -329,7 +332,10 @@ class PayrollActionManager extends SubActionManager
} }
$emp = new $rowTable(); $emp = new $rowTable();
$emps = $emp->Find("pay_frequency = ? and employee in (".implode(",", $empIds).")", array($payroll->pay_period)); $emps = $emp->Find(
"pay_frequency = ? and deduction_group = ? and employee in (".implode(",", $empIds).")",
array($payroll->pay_period, $payroll->deduction_group)
);
if (!$emps) { if (!$emps) {
error_log("Error:".$emp->ErrorMsg()); error_log("Error:".$emp->ErrorMsg());
} else { } else {
@@ -370,7 +376,6 @@ class PayrollActionManager extends SubActionManager
continue; continue;
} }
$item = new PayrollData(); $item = new PayrollData();
$item->id = "";
$item->payroll = $req->payrollId; $item->payroll = $req->payrollId;
$item->employee = $e->id; $item->employee = $e->id;
$item->payroll_item = $column->id; $item->payroll_item = $column->id;
@@ -436,7 +441,7 @@ class PayrollActionManager extends SubActionManager
if ($payroll->status == 'Completed') { if ($payroll->status == 'Completed') {
return new IceResponse(IceResponse::ERROR, true); return new IceResponse(IceResponse::ERROR, true);
} }
$valueTable = mysqli_real_escape_string($payroll->DB(), $req->valueTable); $valueTable = BaseService::getInstance()->getFullQualifiedModelClassName($req->valueTable);
$payrollId = $req->payrollId; $payrollId = $req->payrollId;
foreach ($req as $key => $val) { foreach ($req as $key => $val) {
if (!is_array($val)) { if (!is_array($val)) {

View File

@@ -32,14 +32,17 @@ class Payroll extends BaseModel
public function getEmployeePayrolls() public function getEmployeePayrolls()
{ {
$currentEmp = BaseService::getInstance()->getCurrentProfileId(); $currentEmp = BaseService::getInstance()->getCurrentProfileId();
$payrollDataTemp = new PayrollData();
$payrollData = $payrollDataTemp->Find("employee = ? group by payroll", array($currentEmp));
$payrollIds = array(); $payrollIds = array();
foreach ($payrollData as $pd) { $payrollDataTemp = new PayrollData();
$payrollIds[] = $pd->payroll;
}
$payrollDataTemp->DB()->SetFetchMode(ADODB_FETCH_ASSOC);
$rs = $payrollDataTemp->DB()->Execute(
'select payroll from PayrollData where employee = ? group by payroll',
array($currentEmp)
);
foreach ($rs as $rowId => $row) {
$payrollIds[] = $row['payroll'];
}
$payroll = new Payroll(); $payroll = new Payroll();
$payrolls = $payroll->Find("id in (".implode(",", $payrollIds).") and status = 'Completed'"); $payrolls = $payroll->Find("id in (".implode(",", $payrollIds).") and status = 'Completed'");
return $payrolls; return $payrolls;