|
@@ -564,18 +564,43 @@ class StaffSalary extends Api
|
|
|
return $value !== $item['sczl_rq'];
|
|
return $value !== $item['sczl_rq'];
|
|
|
});
|
|
});
|
|
|
}else{
|
|
}else{
|
|
|
- //如果出勤天数小于法定天数,按正常计算
|
|
|
|
|
- if(strpos($item['sczl_type'],'成品防护')){
|
|
|
|
|
- $pieceWorkWage = $data[$key]['达标定额']/1000*$item['千件工价']*$item['Rate'];
|
|
|
|
|
- }else{
|
|
|
|
|
- if (count($days[$day_bh]) <= $params['days'] && strpos($item['sczl_type'],'成品防护') === false){
|
|
|
|
|
- $pieceWorkWage = $data[$key]['达标定额']/1000*$item['千件工价']*$item['Rate'];
|
|
|
|
|
- }else{ //如果出勤天数大于法定天数,达标定额为 0,计件工资为0,超出的部分按加班工资算
|
|
|
|
|
|
|
+// //如果出勤天数小于法定天数,按正常计算
|
|
|
|
|
+// if(strpos($item['sczl_type'],'成品防护')){
|
|
|
|
|
+// $pieceWorkWage = $data[$key]['达标定额']/1000*$item['千件工价']*$item['Rate'];
|
|
|
|
|
+// }else{
|
|
|
|
|
+// if (count($days[$day_bh]) <= $params['days'] && strpos($item['sczl_type'],'成品防护') === false){
|
|
|
|
|
+// $pieceWorkWage = $data[$key]['达标定额']/1000*$item['千件工价']*$item['Rate'];
|
|
|
|
|
+// }else{ //如果出勤天数大于法定天数,达标定额为 0,计件工资为0,超出的部分按加班工资算
|
|
|
|
|
+// $data[$key]['达标定额'] = '0.00';
|
|
|
|
|
+// $pieceWorkWage = '0.00';
|
|
|
|
|
+// }
|
|
|
|
|
+// $overTimePay = ($item['核算产量'] - $data[$key]['达标定额']) / 1000 *$item['千件工价'] * $item['Rate'] *1.5;
|
|
|
|
|
+// }
|
|
|
|
|
+ // 基础计件工资计算公式
|
|
|
|
|
+ $baseWage = ($data[$key]['达标定额'] / 1000) * $item['千件工价'] * $item['Rate'];
|
|
|
|
|
+
|
|
|
|
|
+ // 当有成品防护类型时(直接通过)
|
|
|
|
|
+ if (strpos($item['sczl_type'], '成品防护') !== false) {
|
|
|
|
|
+ $pieceWorkWage = $baseWage;
|
|
|
|
|
+ }
|
|
|
|
|
+ // 没有特殊类型时
|
|
|
|
|
+ else {
|
|
|
|
|
+ // 转换为数值类型避免计算错误
|
|
|
|
|
+ $standardQuota = (float)$data[$key]['达标定额'];
|
|
|
|
|
+ // 判断出勤天数是否超限
|
|
|
|
|
+ if (count($days[$day_bh]) > $params['days']) {
|
|
|
|
|
+ // 超限时重置定额
|
|
|
$data[$key]['达标定额'] = '0.00';
|
|
$data[$key]['达标定额'] = '0.00';
|
|
|
$pieceWorkWage = '0.00';
|
|
$pieceWorkWage = '0.00';
|
|
|
|
|
+ $standardQuota = 0; // 同步数值类型
|
|
|
|
|
+ } else {
|
|
|
|
|
+ $pieceWorkWage = $baseWage;
|
|
|
}
|
|
}
|
|
|
- $overTimePay = ($item['核算产量'] - $data[$key]['达标定额']) / 1000 *$item['千件工价'] * $item['Rate'] *1.5;
|
|
|
|
|
}
|
|
}
|
|
|
|
|
+ // 统一计算加班工资(所有情况都会计算)
|
|
|
|
|
+ $actualOutput = (float)$item['核算产量'];
|
|
|
|
|
+ $overtimeOutput = max($actualOutput - (float)$data[$key]['达标定额'], 0);
|
|
|
|
|
+ $overTimePay = ($overtimeOutput / 1000) * $item['千件工价'] * $item['Rate'] * 1.5;
|
|
|
}
|
|
}
|
|
|
$data[$key]['个人计件工资'] = number_format($pieceWorkWage,2,'.', '');
|
|
$data[$key]['个人计件工资'] = number_format($pieceWorkWage,2,'.', '');
|
|
|
$data[$key]['个人加班工资'] = number_format($overTimePay,2,'.', '');
|
|
$data[$key]['个人加班工资'] = number_format($overTimePay,2,'.', '');
|