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['tabPayrollColumn'] = new PayrollColumnAdapter('PayrollColumn','PayrollColumn','','name, colorder');
modJsList['tabPayrollColumn'].setRemoteTable(true);
//modJsList['tabPayrollColumnTemplate'] = new PayrollColumnTemplateAdapter('PayrollColumnTemplate','PayrollColumnTemplate');
modJsList['tabPayrollEmployee'] = new PayrollEmployeeAdapter('PayrollEmployee','PayrollEmployee');
modJsList['tabPayrollEmployee'].setRemoteTable(true);
modJsList['tabPayslipTemplate'] = new PayslipTemplateAdapter('PayslipTemplate','PayslipTemplate');
modJsList['tabPayslipTemplate'].setRemoteTable(true);

View File

@@ -116,14 +116,15 @@ PayrollAdapter.method('getFormFields', function() {
return [
[ "id", {"label":"ID","type":"hidden"}],
[ "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"]}],
[ "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_end", {"label":"End Date","type":"date","validation":""}],
//[ "column_template", {"label":"Report Column Template","type":"select","remote-source":["PayrollColumnTemplate","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() {
return [
{ "sTitle": "ID" ,"bVisible":true},
{ "sTitle": "ID" ,"bVisible":false},
{ "sTitle": "Name"},
{ "sTitle": "Column Order"},
{ "sTitle": "Calculation Method"},
@@ -409,7 +410,7 @@ PayrollEmployeeAdapter.method('getHeaders', function() {
{ "sTitle": "ID" ,"bVisible":false},
{ "sTitle": "Employee" },
{ "sTitle": "Pay Frequency"},
{ "sTitle": "Deduction Group"},
{ "sTitle": "Calculation Group"},
{ "sTitle": "Currency"},
];
});
@@ -601,7 +602,7 @@ PayslipTemplateAdapter.method('getFormFields', function() {
var payslipFields = [ "data", {"label":"Payslip Fields","type":"datagroup",
"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"]]}],
[ "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"}],
[ "text", {"label":"Text","type":"textarea","validation":"none"}],

View File

@@ -321,7 +321,10 @@ class PayrollActionManager extends SubActionManager
$employeeNamesById = array();
$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();
foreach ($baseEmpList as $baseEmp) {
$employeeNamesById[$baseEmp->id] = $baseEmp->first_name." ".$baseEmp->last_name;
@@ -329,7 +332,10 @@ class PayrollActionManager extends SubActionManager
}
$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) {
error_log("Error:".$emp->ErrorMsg());
} else {
@@ -370,7 +376,6 @@ class PayrollActionManager extends SubActionManager
continue;
}
$item = new PayrollData();
$item->id = "";
$item->payroll = $req->payrollId;
$item->employee = $e->id;
$item->payroll_item = $column->id;
@@ -436,7 +441,7 @@ class PayrollActionManager extends SubActionManager
if ($payroll->status == 'Completed') {
return new IceResponse(IceResponse::ERROR, true);
}
$valueTable = mysqli_real_escape_string($payroll->DB(), $req->valueTable);
$valueTable = BaseService::getInstance()->getFullQualifiedModelClassName($req->valueTable);
$payrollId = $req->payrollId;
foreach ($req as $key => $val) {
if (!is_array($val)) {

View File

@@ -32,14 +32,17 @@ class Payroll extends BaseModel
public function getEmployeePayrolls()
{
$currentEmp = BaseService::getInstance()->getCurrentProfileId();
$payrollDataTemp = new PayrollData();
$payrollData = $payrollDataTemp->Find("employee = ? group by payroll", array($currentEmp));
$payrollIds = array();
foreach ($payrollData as $pd) {
$payrollIds[] = $pd->payroll;
}
$payrollDataTemp = new PayrollData();
$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();
$payrolls = $payroll->Find("id in (".implode(",", $payrollIds).") and status = 'Completed'");
return $payrolls;