123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- <?php
- namespace app\common\model;
- use app\hander\HelpHander;
- use think\Db;
- use think\Exception;
- use think\Model;
- class UserLaborSalary extends Model
- {
-
- public function sendSalary($data){
- $month = $data['month'];
- $types = $data['types'];
- $types = explode(',',$types);
- $users = Db::name('user_labor')
- ->where('status',1)
- ->where('company_id',$data['company_id'])
- ->field('create_time,update_time,remark,status',true)
- ->select();
- $curTime = date('Y-m-d H:i:s');
- foreach ($users as $k=>$v){
- $users[$k]['create_time'] = $curTime;
- $users[$k]['month'] = $month;
- $users[$k]['salary_record_id'] = $data['salary_record_id'];
- $salary = 0;
- foreach ($types as $val){
- switch ($val){
- case '1':
- $salary += $v['labor'];
- break;
- case '2':
- $salary += $v['other'];
- break;
- case '3':
- $salary -= $v['child'];
- break;
- }
- }
- $tax = $this->getLaborTax($salary);
- $users[$k]['tax'] = $tax;
- $users[$k]['salary'] = round($salary - $tax,2);
- unset($users[$k]['id']);
- }
- $ret = Db::name('user_labor_salary')->insertAll($users);
- if($ret != count($users)){
- return false;
- }
- return true;
- }
-
- private function getLaborTax($salary){
- $taxs = Db::name('user_labor_tax')->select();
-
- $jcmoney = 0;
- $bl = 0;
- $ssmoney = 0;
- foreach ($taxs as $k=>$v){
- if($v['type'] == 1){
- if($v['max'] > 0){
- if($salary > $v['min'] && $salary <= $v['max']){
- $jcmoney = $v['bl'] == 1?$salary*$v['val']:$v['val'];
- }
- }else{
- if($salary > $v['min']){
- $jcmoney = $v['bl'] == 1?$salary*$v['val']:$v['val'];
- }
- }
- } else {
- if($v['max'] > 0){
- if($salary > $v['min'] && $salary <= $v['max']){
- $bl = $v['val'];
- $ssmoney = $v['val2'];
- }
- }else{
- if($salary > $v['min']){
- $bl = $v['val'];
- $ssmoney = $v['val2'];
- }
- }
- }
- }
- $sfsalary = round(($salary - $jcmoney)*$bl - $ssmoney,2);
- return $sfsalary > 0 ? $sfsalary : 0;
- }
- public function info($id){
- $info = $this->where('id',$id)->find();
- if(!$info){
- HelpHander::error('数据不存在');
- }
- $data = $info->toArray();
- $data['userName'] = Db::name('user_info')->where('user_id',$info['user_id'])->value('name');
- return $data;
- }
- public function lists($page,$size,$name,$srid){
- if($name != ''){
- $map[] = ['ui.name','like','%'.$name.'%'];
- }
- $map[] = ['ur.salary_record_id','=',$srid];
- $lists = Db::name('user_labor_salary')
- ->alias('ur')
- ->join('user_info ui','ui.user_id = ur.user_id')
- ->where($map)
- ->field('ur.*,ui.name')
- ->page($page,$size)
- ->order('ur.id desc')
- ->select();
- $total = Db::name('user_labor_salary')
- ->alias('ur')
- ->join('user_info ui','ui.user_id = ur.user_id')
- ->where($map)->count();
- $data = [
- 'total' => $total,
- 'list' => $lists?$lists:[]
- ];
- return $data;
- }
- }
|