rock->post('key'); $dt = $this->rock->post('dt'); $ispay = $this->rock->post('ispay'); $isturn = $this->rock->post('isturn'); $where = ''; $where = $this->viewmodel->viewwhere($this->moders, $this->adminid, $this->flowviewufieds, 1); if($lx=='faf'){ $where.=' and a.`status`=1'; } if($ispay!='')$where.=' and a.`ispay`='.$ispay.''; if($isturn!='')$where.=' and a.`isturn`='.$isturn.''; //自己部门下的 if($lx=='dept'){ $uidall = $this->adminmodel->getdown($uid); if(isempt($uidall))$uidall='0'; $where.=' and a.`xuid` in('.$uidall.')'; } //echo $where; //if($key!='')$where.=" and (c.deptallname like '%$key%' or a.uname like '%$key%' or a.ranking like '%$key%' )"; if($dt!='')$where.=" and a.`month`='$dt'"; return array( 'where' => $where, 'orlikefields' => 'c.`deptallname`,a.`uname`,a.`ranking`', 'tableleft' => '`[Q]userinfo` c on a.`xuid`=c.`id`', 'fieldsleft'=> 'c.`num`,c.deptallname,c.`bankname`,c.`banknum`', 'order' => 'a.`month` desc,a.`id` asc', ); } public function flowrsreplace($rs, $lx=0){ if(isset($rs['ispay'])){ $s = '待发放'; $rs['ispays'] = $rs['ispay']; if($rs['ispay']==1)$s = '已发放'; $rs['ispay'] = $s; $s = '待核算'; if($rs['isturn']==1)$s = '已核算'; $rs['isturnss'] = $s; } //详情展示时 if($lx==1){ } return $rs; } private function fafang() { $this->addlog(array( 'name' => '发放' )); $this->update('ispay=1', $this->id); m('reim')->asynurl('asynrun','salaryff', array( 'id' => $this->id ));//异步通知给人员 } public function todouser() { $this->push($this->rs['xuid'],'工资条','您['.$this->rs['month'].']月份薪资已发放,请注意查看对账。','薪资发放通知'); } public function gongzifafang($sid) { $sarrid = explode(',',$sid); foreach($sarrid as $id){ $this->loaddata($id, false); if($this->rs['status']==1 && $this->rs['ispay']==0)$this->fafang(); } } //一键生成薪资 public function createdata($month) { $lmonth = c('date')->adddate($month.'-01','m',-1, 'Y-m'); $swer = m('admin')->monthuwhere($month); $where = "`month`<'$month' and xuid in(select id from `[Q]userinfo` where 1=1 $swer) and `xuid` not in(select xuid from `[Q]".$this->mtable."` where `month`='$month')"; $addfes = 'base,postjt';//基本工资跟岗位工资 $adees = explode(',', $addfes); $rows = $this->db->getall("select * from `[Q]hrsalary` where $where order by `month` desc"); $count = 0; $xuarr = array(); foreach($rows as $k=>$rs){ unset($rs['id']); $xuid = $rs['xuid']; if(isset($xuarr[$xuid]))continue; $count++; $xuarr[$xuid] = 1; $arr = array(); $arr1 = array( 'xuid' => $xuid, 'uname' => $rs['uname'], 'ranking' => $rs['ranking'], 'udeptname' => $rs['udeptname'], 'uid' => $this->adminid, 'optid' => $this->adminid, 'optname' => $this->adminname, 'optdt' => $this->rock->now, 'applydt' => $this->rock->date, 'status' => 0, 'isturn' => 0, 'month' => $month, ); foreach($adees as $adees1)$arr[$adees1]=$rs[$adees1]; foreach($arr1 as $k1=>$v1)$arr[$k1]=$v1; $arr['explain']='一键生成参考了'.$rs['month'].'月份的工资'; //读取固定值的 $farrr = $this->getfiearrs($xuid, $month); foreach($farrr as $k1=>$rs1){ foreach($rs1['fieldsarr'] as $k2=>$rs2){ if($rs2['type']=='0')$arr[$rs2['fields']] = $rs2['devzhi']; if($rs2['gongsi']=='last')$arr[$rs2['fields']] = $rs[$rs2['fields']]; //读取上月 } } $arr['jxdf'] = '0'; $arr['jiansr'] = '0'; $arr['otherzj'] = '0'; $arr['otherjs'] = '0'; /* $money = 0; foreach($adees as $fid){ $arr[$fid] = $rs[$fid]; $money += floatval($rs[$fid]); } $money -= floatval($rs['socials']); $arr['money'] = $money;*/ $this->insert($arr); } return '成功生成'.$count.'条'; } //导入数据的测试显示 public function flowdaorutestdata() { $barr = array( 'uname' => '貂蝉', 'month' => '[2017-08]', 'base' => '1700', 'skilljt' => '3500', 'telbt' => '0', 'travelbt' => '0', 'postjt' => '500', 'reward' => '0', 'jiabans' => '0', 'punish' => '0', //处罚 'socials' => '0', 'taxes' => '0', 'money' => '5700', 'explain' => '本月薪资', 'isturn' => '是', 'status' => '是', ); $barr1 = array( 'uname' => '大乔', 'month' => '[2017-08]', 'base' => '1700', 'skilljt' => '3000', 'telbt' => '0', 'travelbt' => '0', 'postjt' => '500', 'reward' => '0', 'jiabans' => '0', 'explain' => '本月薪资', 'punish' => '0', //处罚 'socials' => '0', 'taxes' => '0', 'money' => '5200', 'isturn' => '是', 'status' => '是', ); $barr2 = array( 'uname' => '小乔', 'month' => '[2017-08]', 'base' => '1700', 'skilljt' => '2500', 'telbt' => '0', 'travelbt' => '0', 'postjt' => '500', 'reward' => '0', 'jiabans' => '0', 'explain' => '导入', 'punish' => '5', //处罚 'socials' => '0', 'taxes' => '0', 'money' => '4695', 'isturn' => '是', 'status' => '是', ); return array($barr,$barr1,$barr2); } //导入之前判断 public function flowdaorubefore($rows, &$errdata) { $inarr = array(); $uarra = array(); foreach($rows as $k=>$rs){ $name = $rs['uname']; $month = str_replace('[','', $rs['month']); $month = substr(str_replace(']','', $month),0,7); $arr = $rs; $urs = $this->adminmodel->getone("`name`='$name'"); if(!$urs){ $errdata[$rs['drxu']] = '('.$name.')用户不存在'; continue; } $to = $this->rows("`xuid`='".$urs['id']."' and `month`='$month'"); if($to>0){ $errdata[$rs['drxu']] = '('.$name.'的'.$month.')已经存在了'; continue;//已经存在了 } $arr['month'] = $month; $arr['xuid'] = $urs['id']; $arr['udeptname'] = $urs['deptname']; $arr['ranking'] = $urs['ranking']; $arr['isturn'] = (arrvalue($arr,'isturn')=='是') ? 1 : 0; $arr['status'] = (arrvalue($arr,'status')=='是') ? 1 : 0; $arr['ispay'] = (arrvalue($arr,'ispay')=='是') ? 1 : 0; if($arr['status']==1)$arr['isturn'] = 1; $inarr[] = $arr; } return $inarr; } //导入后处理,未审核需要提交审核 public function flowdaoruafter($drdata=array()) { foreach($drdata as $k=>$rs){ // //if($rs['status']==0 && $rs['isturn']==1){ // $id = $rs['id']; // $this->loaddata($id, false); // $this->submit('提交'); //} } } //读取薪资模版上的 private $pipeibarr = array(); public function getfiearrs($uid, $month, $bo=true) { if($this->pipeibarr && $bo)return $this->pipeibarr; $month= substr($month, 0, 7); $rows = m('hrsalarm')->getall("`status`=1 and `startdt`<='$month' and `enddt`>='$month'",'*','`sort`'); $rowa = array(); foreach($rows as $k=>$rs){ $rs['xuhao'] = $k+1; $rowa[$rs['atype']][] = $rs; } $kqob = m('kaoqin'); $dbs = m('hrsalars'); $garr = array(); foreach($rowa as $klx=>$carr){ $xu = $kqob->getpipeimid($uid, $carr, 'xuhao',0); if($xu>0){ $nrsaa = $rows[$xu-1]; $nrsaa['fieldsarr'] = $dbs->getall('mid='.$nrsaa['id'].'','*','`sort`'); $garr[] = $nrsaa; } } if($bo)$this->pipeibarr = $garr; //最后匹配到的模版 //echo $xu; return $garr; } public function flowgetfields($lx) { $farr = $this->flowfieldarr($this->fieldsarra, 3); $barr = array(); foreach($farr as $k=>$rs){ if(isset($rs['iszs']) && $rs['iszs']==2)$barr[$rs['fields']]=$rs['name']; } return $barr; } //先运行这个$lx=0,1移动端,2保存,3展示 public function flowfieldarr($farr, $lx) { $mid = (int)$this->rock->get('mid','0'); $demonth = c('date')->adddate($this->rock->date,'m',-1,'Y-m'); $dexuid = $this->adminid; if($mid>0 && $mrs=$this->getone($mid)){ $demonth = $mrs['month']; $dexuid = $mrs['xuid']; } $month= $this->rock->post('month', $demonth); $xuid = (int)$this->rock->post('xuid', $dexuid); $cfarr= $this->getfiearrs($xuid, $month); $fnar = array(); foreach($cfarr as $k=>$rs){ foreach($rs['fieldsarr'] as $k1=>$rs1)$fnar[$rs1['fields']]=$rs1; } $urs = $this->adminmodel->getone($xuid); foreach($farr as $k=>$rs){ $farr[$k]['suantype']=-1; $fid = $rs['fields']; if(isset($fnar[$fid])){ $nfrs = $fnar[$fid]; if($nfrs['gongsi']=='last')$nfrs['gongsi']=''; $farr[$k]['dev'] = $nfrs['devzhi']; $farr[$k]['gongsi'] = $nfrs['gongsi']; //公式 $farr[$k]['islu'] = 1; $farr[$k]['iszs'] = 2; $farr[$k]['suantype']= $nfrs['type']; } if($fid=='month'){ $farr[$k]['dev'] = $month; } if($fid=='uname'){ $farr[$k]['dev'] = ''.$urs['name'].'|'.$xuid.''; } if($fid=='udeptname'){ $farr[$k]['dev'] = $urs['deptname']; } if($fid=='ranking'){ $farr[$k]['dev'] = $urs['ranking']; } if($fid=='gonghao'){ $farr[$k]['dev'] = $urs['num']; } } return $farr; } //在运行这个,模版处理 public function flowinputtpl($cont, $lx) { //pc if($lx==0){ $cfarr = $this->pipeibarr; $str = ''; foreach($cfarr as $k=>$rs){ $carr = $rs['fieldsarr']; if(isempt($rs['title']))$rs['title']=$rs['atype']; $str.='
| '.$rs1['name'].' | '; $str.='{'.$rs1['fields'].'} | '; if(($k1+1)%2==0)$str.='