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; } }