";
include $path;die;
}
}
private function cacheFile($path){
$content = ob_get_contents();
$fp = fopen($path, "w");
fwrite($fp, $content);
fclose($fp);
}
// private function getExeCount(){
// Doo::loadModel('receipt');
// $receipt=new receipt();
// $receiptList=$receipt->find(array('where'=>'(executeCopy like \'%["'.$this->staff[0]['sid'].'%\' and executeStaff NOT LIKE \'%'.$this->staff[0]['sid'].'%\' ) and (status=1 or status=6)','desc'=>'rid','asArray'=>true));
// return count($receiptList);
// }
// private function getReceiptCount(){
// $status=2;
// $year=date('Y');
// Doo::loadModel('receipt');
// $receipt=new receipt();
// $dateCondition=" and Year(date) =".$year;
// $approvalCondition=' and (nowStaff like "%,'.$this->staff[0]['sid'].'%" or nowStaff like "%'.$this->staff[0]['sid'].',%" or nowStaff='.$this->staff[0]['sid'].' ) ';
// $receiptList=$receipt->find(array('where'=>' status='.$status.$dateCondition.$approvalCondition,'desc'=>'rid','asArray'=>true));
// return count($receiptList);
// }
private function collectHtml($receiptCollectList=array(),$itemCategory="日常相关费用",$classType="b"){
$collectHtml="";$sumPrice=0.00;
for ($i=1;$i<=12;$i++){
$falg=true;
foreach ($receiptCollectList as $key=>$value){
if($value['itemCategory']==$itemCategory&&$value['month']==$i){
$sumPrice+=$value['price'];
if ($classType=="b"){
$collectHtml.='
¥'.$value['price'].'
';$falg=false;break;
}else{
$collectHtml.='
¥'.$value['price'].'
';$falg=false;break;
}
}
}
if ($falg)
$collectHtml.='
-
';
}
$collectHtml.='
¥'.$sumPrice.'
';
return $collectHtml;
}
function __construct() {
if(isset($_COOKIE["staff"])){
if(!empty($_COOKIE["staff"])){
Doo::loadModel ( 'staff' );
Doo::loadModel('verify');
$verify=new verify();
$staff = new staff ();
Doo::loadModel("execute");
$execute=new execute();
$verifyList=$verify->find(array('select'=>'staff','asArray'=>true));
$list=array();
//判断角色的审批权限
foreach ($verifyList as $key=>$value){
$ver=json_decode($value['staff']);
foreach ($ver as $k=>$v){
if ($v[1]=='ROLE'){
$roleList=json_decode($v[3]);
foreach ($roleList as $t=>$g){
$gList=explode("_", $g);
array_push($list, $gList[0]);
//print_r($list);
}
}else
array_push($list, $v[0]);
}
}
//判断执行人的审批权限
$executeList=$execute->find(array('select'=>'staff','asArray'=>true));
$list2=array();
foreach ($executeList as $key=>$value){
$ver=json_decode($value['staff']);
foreach ($ver as $k=>$v){
array_push($list2, $v[0]);
}
}
$eidList=file_get_contents("protected/config/execute/execute.ini");
$eidList=array_filter(explode(",", $eidList));
$this->executeId= array_merge($list2,$eidList);
$this->verifyId=$list;
$this->staff=$staff->getUserByIdList($_COOKIE["staff"]);
return "/";
}
}
Doo::loadCore ( 'uri/DooUriRouter' );
$router = new DooUriRouter ();
$routeRs = $router->execute ( Doo::app ()->route, Doo::conf ()->SUBFOLDER );
if($routeRs['1']!="login"){
header ( 'Content-Type:text/html;charset=utf-8' );
@header ( "Location: /login" );
}
}
function saeaBorad(){
Doo::loadModel('receipt');
Doo::loadModel('verify');
$verify=new verify();
$receipt=new receipt();
Doo::loadModel('L_category');
$lCategory=new L_category();
Doo::loadModel("role");
$role=new role();
Doo::loadModel("receiptLog");
$receiptLog=new receiptLog();
$receiptLogList=$receiptLog->getReceiptLogByUid($this->staff[0]['sid']);
$receiptDetail=$receipt->find(array('where'=>'staff='.$this->staff[0]['sid'].' and (status=7 or status=5 or status=4 or status=8 and Rtype=1)','desc'=>'rid','asArray'=>true));
foreach ($receiptDetail as $key=>$value){
$receiptDetail[$key]['accountItem']=json_decode($value['accountItem'],true);
$veList=$verify->getOne(array('where'=>'vid='.$value['verify'],'asArray'=>true));
$v=json_decode($veList['staff']);
array_push($v[0], $veList['description']);
foreach ($v as $n=>$m){
if ($m['1']=='ROLE'){
$roleInfo=$role->getOne(array('where'=>'rid='.$m[0],'asArray'=>true));
$v[$n][1]=$roleInfo['name'];
}
}
$receiptDetail[$key]['staff']=$v;
$category=$lCategory->getOne(array('where'=>'cid='.$value['cid'],'asArray'=>true));
$receiptDetail[$key]['category']=$category['title'];
}
//print_r($receiptLogList);
$data['receiptLogList']=$receiptLogList;
$data['receiptDetail']=$receiptDetail;
$data['memu']="receipt";
$data['staff']=$this->staff;
$data['receiptMemu']='saeaBorad';
$data['verifyId']=$this->verifyId;
$data['executeId']=$this->executeId;
$this->render ( "/admin/saeaBorad", $data );
}
function remitAdd(){
Doo::loadModel('accountItem');
Doo::loadModel('verify');
Doo::loadModel('receipt');
Doo::loadModel('L_category');
$lCategory=new L_category();
$receipt=new receipt();
$verify=new verify();
$accountItem=new accountItem();
Doo::loadModel("role");
$role=new role();
$acItem=$accountItem->find(array('asArray'=>true));
$veList=$verify->find(array('asArray'=>true));
foreach ($veList as $key=>$value){
$v=json_decode($value['staff']);
$list=array();
foreach ($v as $n=>$m){
if ($m['1']=='ROLE'){
$roleInfo=$role->getOne(array('where'=>'rid='.$m[0],'asArray'=>true));
$v[$n][1]=$roleInfo['name'];
array_push($list, $roleInfo['name']);
}else{
array_push($list, $v[$n][1]);
}
}
$veList[$key]['staff']=implode('>', $list);
}
$data['category']=$lCategory->find(array('asArray'=>true));
$data['veList']=$veList;
$data['acItem']=$acItem;
$data['memu']="receipt";
$data['staff']=$this->staff;
$data['receiptMemu']='saeaBorad';
$data['verifyId']=$this->verifyId;
$data['executeId']=$this->executeId;
$this->render ( "/admin/remitAdd", $data );
}
function remitAddDo(){
$agency=$this->get_args('agency');
$travel=$this->get_args('travel');
$train=$this->get_args('train');
$other=$this->get_args('other');
$verify=$this->get_args('verify')&&is_numeric($this->get_args('verify'))?$this->get_args('verify'):0;
$cid=$this->get_args('cid')&&is_numeric($this->get_args('cid'))?$this->get_args('cid'):0;
$explanation=$this->get_args('explanation')?$this->get_args('explanation'):"";
$enclosurName=$this->get_args('enclosurName')?$this->get_args('enclosurName'):"";
//print_r($agency);die;
if(!empty($verify)&&!empty($cid)&&!empty($explanation)){
Doo::loadModel('receipt');
Doo::loadModel('receiptDetail');
Doo::loadModel('accountItem');
$accountItem=new accountItem();
$receipt=new receipt();
Doo::loadModel('enclosur');
Doo::loadModel('execute');
$execute=new execute();
$executeDetail=$execute->getOne(array('where'=>'mold="对公汇款执行人"','asArray'=>true));
// $receiptDetail=$receipt->getOne(array('where'=>'staff='.$this->staff[0]['sid'].' and status=4','asArray'=>true));
$aItem=$accountItem->find(array('where'=>'name like "办公费用" or name like "其他费用"','asArray'=>true));
$accountJson[$this->AGENCY]=$accountJson[$this->TRAVEL]=$accountJson[$this->TRAIN]=$accountJson[$this->OTHER]=array();
$ag=$tr=$ta=$ot=0;
$sum=$agencySum=$travelSum=$trainSum=$otherSum=0;
foreach ($aItem as $key=>$value){
if ($value['category']==$this->AGENCY){
if (isset($agency[$ag])){
if (is_numeric($agency[$ag])&&$agency[$ag]!=0){
array_push($accountJson[$this->AGENCY], array('aid'=>$value['aid'],'name'=>$value['name'],'price'=>number_format($agency[$ag], 2, '.', '')));
$sum+=$agency[$ag];$agencySum+=$agency[$ag];
}
}
$ag++;
}
}
$accountJson['cSum']=array('agencySum'=>number_format($agencySum, 2, '.', ''),'travelSum'=>number_format($travelSum, 2, '.', ''),'trainSum'=>number_format($trainSum, 2, '.', ''),'otherSum'=>number_format($otherSum, 2, '.', ''));
//报销单
$receipt->accountItem=json_encode($accountJson);
$receipt->staff=$this->staff[0]['sid'];
$receipt->sum=number_format($sum, 2, '.', '');
$receipt->date=date("Y-m-d");
$receipt->cid=$cid;
$receipt->status=5;
$receipt->Rtype=2;
//修改审批流程加入角色
$receipt->verify=$verify;
$receipt->executeCopy=$executeDetail['staff'];
$receipt->receiptOrder="#B".date("Ymd").mt_rand(1000,9999);
$receipt->explanation=$explanation;
$rid=$receipt->insert();
//附件
if (!empty($enclosurName)){
$enclosurArray=explode('-', $enclosurName);
foreach ($enclosurArray as $value){
$enclosur=new enclosur();
$enclosur->name=$value;
$enclosur->rid=$rid;
$enclosur->insert();
}
//print_r($enclosurArray);die;
}
//报销详情
foreach ($accountJson[$this->AGENCY] as $key=>$value){
$receiptDetail=new receiptDetail();
$receiptDetail->staff=$this->staff[0]['sid'];
$receiptDetail->item=$value['name'];
$receiptDetail->itemCategory=$this->AGENCY;
$receiptDetail->price=number_format($value['price'], 2, '.', '');
$receiptDetail->date=date("Y-m-d");
$receiptDetail->cid=$cid;
$receiptDetail->rid=$rid;
$receiptDetail->status=4;
$receiptDetail->insert();
}
}
return "/saeaBorad";
}
function remitEdit(){
$rid=isset($this->params['rid'])&&is_numeric($this->params['rid'])?$this->params['rid']:0;
//echo $rid;
Doo::loadModel('accountItem');
Doo::loadModel('verify');
Doo::loadModel('receipt');
$receipt=new receipt();
$verify=new verify();
$accountItem=new accountItem();
Doo::loadModel('L_category');
$lCategory=new L_category();
Doo::loadModel("role");
$role=new role();
$receiptDetail=$receipt->getOne(array('where'=>'staff='.$this->staff[0]['sid'].' and rid='.$rid.' and (status=5 or status=4)','asArray'=>true));
if(empty($receiptDetail))
return "/saeaCreate";
$acItem=$accountItem->find(array('asArray'=>true));
$veList=$verify->find(array('asArray'=>true));
foreach ($veList as $key=>$value){
$v=json_decode($value['staff']);
$list=array();
foreach ($v as $n=>$m){
if ($m['1']=='ROLE'){
$roleInfo=$role->getOne(array('where'=>'rid='.$m[0],'asArray'=>true));
$v[$n][1]=$roleInfo['name'];
array_push($list, $roleInfo['name']);
}else{
array_push($list, $v[$n][1]);
}
}
$veList[$key]['staff']=implode('>', $list);
}
//配置编辑信息
$accountItemList=json_decode($receiptDetail['accountItem'],true);
foreach ($acItem as $key=>$value){
foreach ($accountItemList[$this->AGENCY] as $k=>$v){
if($acItem[$key]['category']==$this->AGENCY&&$acItem[$key]['name']==$v['name']){
$acItem[$key]['price']=$v['price'];
}
}
foreach ($accountItemList[$this->TRAIN] as $k=>$v){
if($acItem[$key]['category']==$this->TRAIN&&$acItem[$key]['name']==$v['name']){
$acItem[$key]['price']=$v['price'];
}
}
foreach ($accountItemList[$this->TRAVEL] as $k=>$v){
if($acItem[$key]['category']==$this->TRAVEL&&$acItem[$key]['name']==$v['name']){
$acItem[$key]['price']=$v['price'];
}
}
foreach ($accountItemList[$this->OTHER] as $k=>$v){
if($acItem[$key]['category']==$this->OTHER&&$acItem[$key]['name']==$v['name']){
$acItem[$key]['price']=$v['price'];
}
}
}
$data['category']=$lCategory->find(array('asArray'=>true));
$data['cSum']=$accountItemList['cSum'];
$data['sum']=$receiptDetail['sum'];
$data['receiptDetail']=$receiptDetail;
$data['veList']=$veList;
$data['acItem']=$acItem;
$data['memu']="receipt";
$data['staff']=$this->staff;
$data['receiptMemu']='saeaBorad';
$data['verify']=$receiptDetail['verify'];
$data['verifyId']=$this->verifyId;
$data['executeId']=$this->executeId;
$data['rid']=$rid;
$this->render ( "/admin/remitEdit", $data );
}
function remitEdiDo(){
$agency=$this->get_args('agency');
$travel=$this->get_args('travel');
$train=$this->get_args('train');
$other=$this->get_args('other');
$verify=$this->get_args('verify')&&is_numeric($this->get_args('verify'))?$this->get_args('verify'):0;
$explanation=$this->get_args('explanation')?$this->get_args('explanation'):"";
$cid=$this->get_args('cid')&&is_numeric($this->get_args('cid'))?$this->get_args('cid'):0;
$rid=$this->get_args('rid')&&is_numeric($this->get_args('rid'))?$this->get_args('rid'):0;
if(!empty($verify)&&!empty($explanation)){
Doo::loadModel('receipt');
Doo::loadModel('receiptDetail');
Doo::loadModel('accountItem');
$accountItem=new accountItem();
$receipt=new receipt();
Doo::loadModel('execute');
$execute=new execute();
$executeDetail=$execute->getOne(array('where'=>'mold="对公汇款执行人"','asArray'=>true));
$receiptDetail=$receipt->getOne(array('where'=>'staff='.$this->staff[0]['sid'].' and rid='.$rid.' and (status=5 or status=7 or status=4)','asArray'=>true));
if(empty($receiptDetail))
return "/saeaBorad";
$aItem=$accountItem->find(array('where'=>'name like "办公费用" or name like "其他费用"','asArray'=>true));
$accountJson[$this->AGENCY]=$accountJson[$this->TRAVEL]=$accountJson[$this->TRAIN]=$accountJson[$this->OTHER]=array();
$ag=$tr=$ta=$ot=0;
$sum=$agencySum=$travelSum=$trainSum=$otherSum=0;
foreach ($aItem as $key=>$value){
if ($value['category']==$this->AGENCY){
if (is_numeric($agency[$ag])&&$agency[$ag]!=0){
array_push($accountJson[$this->AGENCY], array('aid'=>$value['aid'],'name'=>$value['name'],'price'=>number_format($agency[$ag], 2, '.', '')));
$sum+=$agency[$ag];$agencySum+=$agency[$ag];
}
$ag++;
}
}
$accountJson['cSum']=array('agencySum'=>number_format($agencySum, 2, '.', ''),'travelSum'=>number_format($travelSum, 2, '.', ''),'trainSum'=>number_format($trainSum, 2, '.', ''),'otherSum'=>number_format($otherSum, 2, '.', ''));
//报销单
$rid=$receipt->rid=$receiptDetail['rid'];
$receipt->accountItem=json_encode($accountJson);
$receipt->staff=$this->staff[0]['sid'];
$receipt->sum=number_format($sum, 2, '.', '');
$receipt->date=date("Y-m-d");
$receipt->cid=$cid;
if ($receiptDetail['Rtype']==1)
$receipt->status=7;
else
$receipt->status=5;
$receipt->verify=$verify;
$receipt->executeCopy=$executeDetail['staff'];
$receipt->explanation=$explanation;
$receipt->update();
$receiptDetail=new receiptDetail();
$receiptDetail->delete(array('where'=>'rid='.$rid));
//报销详情
foreach ($accountJson[$this->AGENCY] as $key=>$value){
$receiptDetail=new receiptDetail();
$receiptDetail->staff=$this->staff[0]['sid'];
$receiptDetail->item=$value['name'];
$receiptDetail->itemCategory=$this->AGENCY;
$receiptDetail->price=number_format($value['price'], 2, '.', '');
$receiptDetail->date=date("Y-m-d");
$receiptDetail->cid=$cid;
$receiptDetail->rid=$rid;
$receiptDetail->status=4;
$receiptDetail->insert();
}
//return "/referReceipt/".$rid;
}
return "/saeaBorad";
}
function remitApproval(){
$rid=isset($this->params['rid'])?$this->params['rid']:0;
$status=isset($this->params['status'])?$this->params['status']:'';
$year=$this->get_args('year')?$this->get_args('year'):date('Y');
$month=$this->get_args('month')?$this->get_args('month'):"";
$cid=$this->get_args('cid')?$this->get_args('cid'):0;
$sid=$this->get_args('sid')?$this->get_args('sid'):0;
if (empty($status))
$status=$this->get_args('status')?$this->get_args('status'):2;
$vidList=array();
$button=0;
Doo::loadModel('verify');
Doo::loadModel('receipt');
Doo::loadModel('staff');
$staff=new staff();
$receipt=new receipt();
$verify=new verify();
Doo::loadModel('L_category');
$Lcategory=new L_category();
Doo::loadModel('enclosur');
$enclosur=new enclosur();
//user verify ID
$verifyDetail=$verify->find(array('where'=>'staff like "%\"'.$this->staff[0]['sid'].'%"','asArray'=>true));
foreach ($verifyDetail as $key=>$value){
array_push($vidList, $value['vid']);
}
$vid=implode(",", $vidList);
if(empty($verifyDetail))
$vid=0;
$categoryList=$Lcategory->find(array('asArray'=>true));
$staffList=$staff->find(array('where'=>'cid='.$cid,'asArray'=>true));
$ap="";
if($status==4){
$ap=4;$status=2;
}
//get Receipt By verifyID status 2
$receiptList=$receipt->find(array('where'=>'rid ='.$rid,'desc'=>'rid','asArray'=>true));
$Locate=0;$roleId=0;
if($ap==4)
$status=4;
foreach ($receiptList as $key=>$value){
$receiptList[$key]['Locate']=$Locate;$Locate++;
$receiptList[$key]['reviseDetail']=array();
if (!empty($value['reviseDetail']))
$receiptList[$key]['reviseDetail']=json_decode($value['reviseDetail'],true);
$receiptList[$key]['accountItem']=json_decode($value['accountItem'],true);
$categoryDetil=$Lcategory->getOne(array('where'=>'cid='.$value['cid'],'asArray'=>true));
$receiptList[$key]['category']=$categoryDetil['title'];
//检测编辑状态
$verifyList=$verify->getOne(array('where'=>'vid='.$value['verify'],'asArray'=>true));
$verifyList=json_decode($verifyList['staff'],true);//status opinion
$verifyStaff=json_decode($value['verifyStaff'],true);
Doo::loadModel('role');
$role=new role();
//print_r($verifyList);
$flag=true;$roleKey=0;$endStaffArray=array();$roleArrayCopy=array();
foreach ($verifyList as $k=>$v){
//init verifyStaff
if ($v[1]=='ROLE'){
if (!empty($verifyStaff)){
$endStaffArray=end($verifyStaff);
if ($v[0]==$endStaffArray['nextStaff']){
$roleId=$v[0];
}
}
$roleVerify=json_decode($v[3],true);
$roleKey=$k;$roleArray=array();
$rolename=$role->getOne(array('where'=>'rid='.$v[0],'asArray'=>true));
foreach ($roleVerify as $o=>$p){
$staffID=explode ('_',$p);
$staffInfo=$staff->getOne(array('where'=>'sid='.$staffID[0],'asArray'=>true));
//print_r($staffID);
$exp=array(0=>$staffInfo['sid'],1=>$staffID[1],2=>$staffInfo['avatar'],'date'=>'','date'=>'','opinion'=>'','status'=>'','rolename'=>$rolename['name']);
array_push($roleArray, $exp);
}
$roleArrayCopy[$v[0]]=$roleArray;
//$verifyList[$k]['roleArray']=$roleArray;
}
//print_r($roleArray);
$verifyList[$k]['date']="";
$verifyList[$k]['opinion']="";
$verifyList[$k]['status']="";
if (empty($verifyStaff)){
$verifyList[$k]['date']="";
$verifyList[$k]['opinion']="";
if (($verifyList[0][0]==$this->staff[0]['sid'])&&$flag){
$verifyList[$k]['status']=4;
$button=4;$flag=false;
}
}else{
foreach ($verifyStaff as $m=>$u){
if ($v[0]==$m){
$verifyList[$k]['date']=$u['date'];
$verifyList[$k]['opinion']=$u['opinion'];
$verifyList[$k]['status']=$u['status'];
$flag=false;
break;
}
}
$endStaffArray=end($verifyStaff);
if (isset($endStaffArray['ROLE'])){
}else{
$endKey=key($verifyStaff);
if ($v[0]==$endStaffArray['nextStaff']&&$endStaffArray['nextStaff']==$this->staff[0]['sid']){
$button=4;
$verifyList[$k]['status']=4;
}
}
}
}
$rolename['name']='';
if (!empty($roleId)){
Doo::loadModel('role');
$role=new role();
$rolename=$role->getOne(array('where'=>'rid='.$roleId,'asArray'=>true));
}
if (!empty($verifyStaff))
$endStaffArray=end($verifyStaff);
$KOP=false;
foreach ($roleArrayCopy as $P=>$A){
foreach ( $A as $MKI=>$AVL){
if (!empty($verifyStaff)){
//&&$rolename['rid']==$endStaffArray['nextStaff']
if ($this->staff[0]['sid']==$AVL[0]&&isset($endStaffArray['ROLE'])&&$rolename['rid']==$endStaffArray['nextStaff']){
$button=4;
$roleArrayCopy[$P][$MKI]['status']=4;
}
foreach ($verifyStaff as $m=>$u){
$AVLFK=$AVL[0].'_R';
//echo $AVLFK.'=='.$m;var_dump($AVLFK==$m);echo ' ';
if (strcmp($AVLFK,$m)==0){//&&isset($u['ROLE'])&&$u['ROLE']==1
$roleArrayCopy[$P][$MKI]['date']=$u['date'];
$roleArrayCopy[$P][$MKI]['opinion']=$u['opinion'];
$roleArrayCopy[$P][$MKI]['status']=$u['status'];
break;
}
}
}else{
if ($this->staff[0]['sid']==$AVL[0]&&$verifyList[0][1]=='ROLE'){
$button=4;
$roleArrayCopy[$P][$MKI]['status']=4;
}
}
//$roleArray[$MKI]['rolename']=$rolename['name'];
$KOP=true;
}
}
foreach ($roleArrayCopy as $k=>$v){
foreach ($verifyList as $m=>$n){
if ($n[0]==$k){
array_splice($verifyList,$m,1,$v);
}
}
}
$receiptList[$key]['verifyList']= $verifyList;
$receiptList[$key]['staffDetail']=$staff->getOne(array('where'=>'sid='.$value['staff'],'asArray'=>true));
$receiptList[$key]['button']=$button;
$receiptList[$key]['BIGsum']=$this->num_to_rmb($value['sum']);
}
$mothHtml="";
for($i=1;$i<=12;$i++){
if($month==$i)
$mothHtml.='';
else
$mothHtml.='';
}
//获取审批日志
Doo::loadModel('receiptLog');
$receiptLog=new receiptLog();
$rlList=array();
$rlInfo=$receiptLog->getOne(array('where'=>'rid='.$rid.' and status=4','asArray'=>true));
$tijdate=$receiptLog->getOne(array('where'=>'rid='.$rid.' and status=2','asc'=>'rlid','asArray'=>true));
if (!empty($rlInfo)){
$rlList=$receiptLog->find(array('where'=>'rid='.$rid,'asc'=>'rlid','asArray'=>true));
}
$receiptList[0]['rlList']=$rlList;
$enclosurList=$enclosur->find(array('where'=>'rid='.$rid,'asArray'=>true));
$enclosurHtml='';
foreach ($enclosurList as $value){
$enclosurHtml.=''.$value['name'].'';
}
//print_r($receiptList);
$data['enclosurHtml']=$enclosurHtml;
$data['rolename']=$rolename['name'];
$data['datetij']=$tijdate['date'];
$data['mothHtml']=$mothHtml;
$data['rid']=$rid;
$data['receiptList']=$receiptList;
$data['receiptApprovalCount']=count($receiptList);
$data['status']=$status;
$data['year']=$year;
$data['categoryList']=$categoryList;
$data['staffList']=$staffList;
$data['cid']=$cid;
$data['sid']=$sid;
$data['ap']=$ap;
$data['memu']="receipt";
$data['staff']=$this->staff;
$data['receiptMemu']='approvalExpenses';
$data['verifyId']=$this->verifyId;
$data['executeId']=$this->executeId;
$this->render ( "/admin/remitApproval", $data );
}
function saeaLoanAdd(){
Doo::loadModel('verify');
$verify=new verify();
Doo::loadModel("role");
$role=new role();
Doo::loadModel('L_category');
$lCategory=new L_category();
$veList=$verify->find(array('asArray'=>true));
foreach ($veList as $key=>$value){
$v=json_decode($value['staff']);
$list=array();
foreach ($v as $n=>$m){
if ($m['1']=='ROLE'){
$roleInfo=$role->getOne(array('where'=>'rid='.$m[0],'asArray'=>true));
$v[$n][1]=$roleInfo['name'];
array_push($list, $roleInfo['name']);
}else{
array_push($list, $v[$n][1]);
}
}
$veList[$key]['staff']=implode('>', $list);
}
$data['category']=$lCategory->find(array('asArray'=>true));
$data['veList']=$veList;
$data['memu']="receipt";
$data['staff']=$this->staff;
$data['receiptMemu']='saeaBorad';
$data['verifyId']=$this->verifyId;
$data['executeId']=$this->executeId;
$this->render ( "/admin/saeaLoanAdd", $data );
}
function saeaLoanAddDo(){
$agency=$this->get_args('agency');
$verify=$this->get_args('verify')&&is_numeric($this->get_args('verify'))?$this->get_args('verify'):0;
$cid=$this->get_args('cid')&&is_numeric($this->get_args('cid'))?$this->get_args('cid'):0;
$explanation=$this->get_args('explanation')?$this->get_args('explanation'):"";
//die;
if(!empty($verify)&&!empty($cid)&&!empty($explanation)){
Doo::loadModel('receipt');
Doo::loadModel('receiptDetail');
Doo::loadModel('accountItem');
$accountItem=new accountItem();
$receipt=new receipt();
Doo::loadModel('loanReceipt');
$loanReceipt=new loanReceipt();
Doo::loadModel('execute');
$execute=new execute();
Doo::loadModel('enclosur');
$executeDetail=$execute->getOne(array('where'=>'mold="借款执行人"','asArray'=>true));
// $receiptDetail=$receipt->getOne(array('where'=>'staff='.$this->staff[0]['sid'].' and status=4','asArray'=>true));
// if(!empty($receiptDetail))
// return "/referReceipt/".$receiptDetail['rid'];
$aItem=$accountItem->find(array('asArray'=>true));
$accountJson[$this->AGENCY]=$accountJson[$this->TRAVEL]=$accountJson[$this->TRAIN]=$accountJson[$this->OTHER]=$accountJson['借款费用']=array();
$ag=$tr=$ta=$ot=0;
$sum=$agencySum=$travelSum=$trainSum=$otherSum=0;
array_push($accountJson['借款费用'], array('aid'=>0,'name'=>'申请金额','price'=>number_format($agency, 2, '.', '')));
$sum+=$agency;$agencySum+=$agency;
$accountJson['cSum']=array('loanSum'=>number_format($agencySum, 2, '.', ''),'agencySum'=>number_format(0, 2, '.', ''),'travelSum'=>number_format($travelSum, 2, '.', ''),'trainSum'=>number_format($trainSum, 2, '.', ''),'otherSum'=>number_format($otherSum, 2, '.', ''));
//借款数据备份
$loanReceipt->loanItem=json_encode($accountJson);
$loanReceipt->staff=$this->staff[0]['sid'];
$loanReceipt->sum=number_format($sum, 2, '.', '');
$loanReceipt->date=date("Y-m-d");
$loanReceipt->cid=$cid;
$loanReceipt->receiptOrder="#J".date("Ymd").mt_rand(1000,9999);
$loanReceipt->status=5;
$loanReceipt->Rtype=1;
$loanReceipt->verify=$verify;
$receipt->receiptOrder=$receipt->receiptOrder;
$loanReceipt->explanation=$explanation;
$loanRid=$loanReceipt->insert();
//报销单
$receipt->loanItem=json_encode($accountJson);
$receipt->staff=$this->staff[0]['sid'];
$receipt->sum=number_format($sum, 2, '.', '');
$receipt->date=date("Y-m-d");
$receipt->cid=$cid;
//特殊状态
$receipt->status=5;
$receipt->Rtype=1;
$receipt->loanRid=$loanRid;
//修改审批流程加入角色
$receipt->verify=$verify;
$receipt->executeCopy=$executeDetail['staff'];
$receipt->receiptOrder=$loanReceipt->receiptOrder;
$receipt->explanation=$explanation;
$rid=$receipt->insert();
//执行数据备份
// $executeCopy->rid=$rid;
// $executeCopy->staff=$executeDetail['staff'];
// $executeCopy->eid=$executeDetail['eid'];
// $ecid=$executeCopy->insert();
}
return "/saeaBorad";
}
function saeaLoanEdi(){
$rid=isset($this->params['rid'])?$this->params['rid']:0;
Doo::loadModel('verify');
$verify=new verify();
Doo::loadModel("role");
$role=new role();
Doo::loadModel('L_category');
$lCategory=new L_category();
Doo::loadModel('receipt');
$receipt=new receipt();
$receiptInfo=$receipt->getOne(array('where'=>'rid='.$rid,'asArray'=>true));
$veList=$verify->find(array('asArray'=>true));
foreach ($veList as $key=>$value){
$v=json_decode($value['staff']);
$list=array();
foreach ($v as $n=>$m){
if ($m['1']=='ROLE'){
$roleInfo=$role->getOne(array('where'=>'rid='.$m[0],'asArray'=>true));
$v[$n][1]=$roleInfo['name'];
array_push($list, $roleInfo['name']);
}else{
array_push($list, $v[$n][1]);
}
}
$veList[$key]['staff']=implode('>', $list);
}
$receiptInfo['loanItem']=json_decode($receiptInfo['loanItem'],true);
$data['receiptInfo']=$receiptInfo;
$data['category']=$lCategory->find(array('asArray'=>true));
$data['veList']=$veList;
$data['memu']="receipt";
$data['staff']=$this->staff;
$data['receiptMemu']='saeaBorad';
$data['verifyId']=$this->verifyId;
$data['executeId']=$this->executeId;
$this->render ( "/admin/saeaLoanEdi", $data );
}
function saeaLoanEdiDo(){
$rid=$this->get_args('rid')&&is_numeric($this->get_args('rid'))?$this->get_args('rid'):0;
$agency=$this->get_args('agency');
$verify=$this->get_args('verify')&&is_numeric($this->get_args('verify'))?$this->get_args('verify'):0;
$cid=$this->get_args('cid')&&is_numeric($this->get_args('cid'))?$this->get_args('cid'):0;
$explanation=$this->get_args('explanation')?$this->get_args('explanation'):"";
//die;
if(!empty($verify)&&!empty($cid)&&!empty($explanation)&&!empty($rid)){
Doo::loadModel('receipt');
Doo::loadModel('receiptDetail');
Doo::loadModel('accountItem');
$accountItem=new accountItem();
$receipt=new receipt();
Doo::loadModel('loanReceipt');
$loanReceipt=new loanReceipt();
Doo::loadModel('enclosur');
Doo::loadModel('execute');
$execute=new execute();
$executeDetail=$execute->getOne(array('where'=>'mold="借款执行人"','asArray'=>true));
$receiptDetail=$receipt->getOne(array('where'=>'staff='.$this->staff[0]['sid'].' and status=5 and rid='.$rid,'asArray'=>true));
if(empty($receiptDetail))
die('参数错误');
$aItem=$accountItem->find(array('asArray'=>true));
$accountJson[$this->AGENCY]=$accountJson[$this->TRAVEL]=$accountJson[$this->TRAIN]=$accountJson[$this->OTHER]=$accountJson['借款费用']=array();
$ag=$tr=$ta=$ot=0;
$sum=$agencySum=$travelSum=$trainSum=$otherSum=0;
array_push($accountJson['借款费用'], array('aid'=>0,'name'=>'申请金额','price'=>number_format($agency, 2, '.', '')));
$sum+=$agency;$agencySum+=$agency;
$accountJson['cSum']=array('loanSum'=>number_format($agencySum, 2, '.', ''),'agencySum'=>number_format(0, 2, '.', ''),'travelSum'=>number_format($travelSum, 2, '.', ''),'trainSum'=>number_format($trainSum, 2, '.', ''),'otherSum'=>number_format($otherSum, 2, '.', ''));
//报销单
$receipt->loanItem=json_encode($accountJson);
$receipt->sum=number_format($sum, 2, '.', '');
$receipt->cid=$cid;
//特殊状态
//修改审批流程加入角色
$receipt->verify=$verify;
$receipt->explanation=$explanation;
$receipt->update(array('where'=>'rid='.$rid));
//借款数据更新
$loanReceipt->loanItem=json_encode($accountJson);
$loanReceipt->sum=number_format($sum, 2, '.', '');
$loanReceipt->cid=$cid;
$loanReceipt->verify=$verify;
$loanReceipt->explanation=$explanation;
$receipt->executeCopy=$executeDetail['staff'];
$loanReceipt->update(array('where'=>'rid='.$receiptDetail['loanRid']));
}
return "/saeaBorad";
}
function saeaLoanReceiptAdd(){
$rid=isset($this->params['rid'])?$this->params['rid']:0;
Doo::loadModel('receipt');
$receipt=new receipt();
Doo::loadModel('loanReceipt');
$loanReceipt=new loanReceipt();
Doo::loadModel('L_category');
$Lcategory=new L_category();
Doo::loadModel('verify');
Doo::loadModel('statistics');
$statistics=new statistics();
$verify=new verify();
Doo::loadModel('staff');
$staff=new staff();
$receiptDe=$receipt->getOne(array('where'=>'rid='.$rid,'desc'=>'rid','asArray'=>true));
$receiptList=$loanReceipt->find(array('where'=>'rid='.$receiptDe['loanRid'],'desc'=>'rid','asArray'=>true));
$Locate=0;$roleId=0;$button=0;
foreach ($receiptList as $key=>$value){
$receiptList[$key]['Locate']=$Locate;$Locate++;
$receiptList[$key]['reviseDetail']=array();
if (!empty($value['reviseDetail']))
$receiptList[$key]['reviseDetail']=json_decode($value['reviseDetail'],true);
$receiptList[$key]['accountItem']=json_decode($value['accountItem'],true);
$receiptList[$key]['loanItem']=json_decode($value['loanItem'],true);
$categoryDetil=$Lcategory->getOne(array('where'=>'cid='.$value['cid'],'asArray'=>true));
$receiptList[$key]['category']=$categoryDetil['title'];
//检测编辑状态
$verifyList=$verify->getOne(array('where'=>'vid='.$value['verify'],'asArray'=>true));
$verifyList=json_decode($verifyList['staff'],true);//status opinion
$verifyStaff=json_decode($value['verifyStaff'],true);
Doo::loadModel('role');
$role=new role();
$flag=true;$roleKey=0;$endStaffArray=array();$roleArrayCopy=array();
foreach ($verifyList as $k=>$v){
//init verifyStaff
if ($v[1]=='ROLE'){
if (!empty($verifyStaff)){
$endStaffArray=end($verifyStaff);
// if ($v[0]==$endStaffArray['nextStaff']){
// $roleId=$v[0];
// }
}
$roleVerify=json_decode($v[3],true);
$roleKey=$k;$roleArray=array();
$rolename=$role->getOne(array('where'=>'rid='.$v[0],'asArray'=>true));
foreach ($roleVerify as $o=>$p){
$staffID=explode ('_',$p);
$staffInfo=$staff->getOne(array('where'=>'sid='.$staffID[0],'asArray'=>true));
//print_r($staffID);
$exp=array(0=>$staffInfo['sid'],1=>$staffID[1],2=>$staffInfo['avatar'],'date'=>'','date'=>'','opinion'=>'','status'=>'','rolename'=>$rolename['name']);
array_push($roleArray, $exp);
}
$roleArrayCopy[$v[0]]=$roleArray;
//$verifyList[$k]['roleArray']=$roleArray;
}
$verifyList[$k]['date']="";
$verifyList[$k]['opinion']="";
$verifyList[$k]['status']="";
if (empty($verifyStaff)){
$verifyList[$k]['date']="";
$verifyList[$k]['opinion']="";
if (($verifyList[0][0]==$this->staff[0]['sid'])&&$flag){
$verifyList[$k]['status']=4;
$flag=false;
}
}else{
foreach ($verifyStaff as $m=>$u){
if ($v[0]==$m){
$verifyList[$k]['date']=$u['date'];
$verifyList[$k]['opinion']=$u['opinion'];
$verifyList[$k]['status']=$u['status'];
$flag=false;
break;
}
}
$endStaffArray=end($verifyStaff);
if (isset($endStaffArray['ROLE'])){
}else{
// $endKey=key($verifyStaff);
// if ($v[0]==$endStaffArray['nextStaff']&&$endStaffArray['nextStaff']==$this->staff[0]['sid']){
// $button=4;
// $verifyList[$k]['status']=4;
// }
}
}
}
$rolename['name']='';
if (!empty($roleId)){
Doo::loadModel('role');
$role=new role();
$rolename=$role->getOne(array('where'=>'rid='.$roleId,'asArray'=>true));
}
if (!empty($verifyStaff))
$endStaffArray=end($verifyStaff);
$KOP=false;
foreach ($roleArrayCopy as $P=>$A){
foreach ( $A as $MKI=>$AVL){
if (!empty($verifyStaff)){
//&&$rolename['rid']==$endStaffArray['nextStaff']
if ($this->staff[0]['sid']==$AVL[0]&&isset($endStaffArray['ROLE'])&&$rolename['rid']==$endStaffArray['nextStaff']){
$button=4;
$roleArrayCopy[$P][$MKI]['status']=4;
}
foreach ($verifyStaff as $m=>$u){
$AVLFK=$AVL[0].'_R';
//echo $AVLFK.'=='.$m;var_dump($AVLFK==$m);echo ' ';
if (strcmp($AVLFK,$m)==0){//&&isset($u['ROLE'])&&$u['ROLE']==1
$roleArrayCopy[$P][$MKI]['date']=$u['date'];
$roleArrayCopy[$P][$MKI]['opinion']=$u['opinion'];
$roleArrayCopy[$P][$MKI]['status']=$u['status'];
break;
}
}
}else{
if ($this->staff[0]['sid']==$AVL[0]&&$verifyList[0][1]=='ROLE'){
$button=4;
$roleArrayCopy[$P][$MKI]['status']=4;
}
}
//$roleArray[$MKI]['rolename']=$rolename['name'];
$KOP=true;
}
}
foreach ($roleArrayCopy as $k=>$v){
foreach ($verifyList as $m=>$n){
if ($n[0]==$k){
array_splice($verifyList,$m,1,$v);
}
}
}
$receiptList[$key]['verifyList']=$verifyList;
$receiptList[$key]['staffDetail']=$staff->getOne(array('where'=>'sid='.$value['staff'],'asArray'=>true));
$receiptList[$key]['button']=$button;
//
//$receiptList[$key]['BIGsum']=$this->NumToCNMoney($value['sum']);
$receiptList[$key]['BIGsum']=$this->num_to_rmb($value['sum']);
}
$data['receiptList']=$receiptList;
Doo::loadModel('L_category');
$lCategory=new L_category();
Doo::loadModel('accountItem');
$accountItem=new accountItem();
$acItem=$accountItem->find(array('asArray'=>true));
$veList=$verify->find(array('asArray'=>true));
foreach ($veList as $key=>$value){
$v=json_decode($value['staff']);
$list=array();
foreach ($v as $n=>$m){
if ($m['1']=='ROLE'){
$roleInfo=$role->getOne(array('where'=>'rid='.$m[0],'asArray'=>true));
$v[$n][1]=$roleInfo['name'];
array_push($list, $roleInfo['name']);
}else{
array_push($list, $v[$n][1]);
}
}
$veList[$key]['staff']=implode('>', $list);
}
$data['rid']=$rid;
$data['category']=$lCategory->find(array('asArray'=>true));
$data['veList']=$veList;
$data['acItem']=$acItem;
$data['memu']="receipt";
$data['staff']=$this->staff;
$data['receiptMemu']='saeaBorad';
$data['verifyId']=$this->verifyId;
$data['executeId']=$this->executeId;
$this->render ( "/admin/saeaLoanAddReceipt", $data );
}
function saeaLoanReceiptAddDo(){
$rid=$this->get_args('rid')&&is_numeric($this->get_args('rid'))?$this->get_args('rid'):0;
$agency=$this->get_args('agency');
$travel=$this->get_args('travel');
$train=$this->get_args('train');
$other=$this->get_args('other');
$verify=$this->get_args('verify')&&is_numeric($this->get_args('verify'))?$this->get_args('verify'):0;
$cid=$this->get_args('cid')&&is_numeric($this->get_args('cid'))?$this->get_args('cid'):0;
$explanation=$this->get_args('explanation')?$this->get_args('explanation'):"";
$enclosurName=$this->get_args('enclosurName')?$this->get_args('enclosurName'):"";
if(!empty($verify)&&!empty($cid)&&!empty($explanation)&&!empty($rid)){
Doo::loadModel('receipt');
Doo::loadModel('receiptDetail');
Doo::loadModel('accountItem');
$accountItem=new accountItem();
$receipt=new receipt();
Doo::loadModel('enclosur');
Doo::loadModel('execute');
$execute=new execute();
$executeDetail=$execute->getOne(array('where'=>'mold="借款费用执行人"','asArray'=>true));
$receiptDet=$receipt->getOne(array('where'=>'rid='.$rid,'asArray'=>true));
// if(!empty($receiptDetail))
// return "/referReceipt/".$receiptDetail['rid'];
$aItem=$accountItem->find(array('asArray'=>true));
$accountJson[$this->AGENCY]=$accountJson[$this->TRAVEL]=$accountJson[$this->TRAIN]=$accountJson[$this->OTHER]=array();
$ag=$tr=$ta=$ot=0;
$sum=$agencySum=$travelSum=$trainSum=$otherSum=0;
foreach ($aItem as $key=>$value){
if ($value['category']==$this->AGENCY){
if (is_numeric($agency[$ag])&&$agency[$ag]!=0){
array_push($accountJson[$this->AGENCY], array('aid'=>$value['aid'],'name'=>$value['name'],'price'=>number_format($agency[$ag], 2, '.', '')));
$sum+=$agency[$ag];$agencySum+=$agency[$ag];
}
$ag++;
}
if($value['category']==$this->TRAVEL){
if (is_numeric($travel[$tr])&&$travel[$tr]!=0){
array_push($accountJson[$this->TRAVEL], array('aid'=>$value['aid'],'name'=>$value['name'],'price'=>number_format($travel[$tr], 2, '.', '')));
$sum+=$travel[$tr];$travelSum+=$travel[$tr];
}
$tr++;
}
if($value['category']==$this->TRAIN){
if (is_numeric($train[$ta])&&$train[$ta]!=0){
array_push($accountJson[$this->TRAIN], array('aid'=>$value['aid'],'name'=>$value['name'],'price'=>number_format($train[$ta], 2, '.', '')));
$sum+=$train[$ta];$trainSum+=$train[$ta];
}
$ta++;
}
if($value['category']==$this->OTHER){
if (is_numeric($other[$ot])&&$other[$ot]!=0){
array_push($accountJson[$this->OTHER], array('aid'=>$value['aid'],'name'=>$value['name'],'price'=>number_format($other[$ot], 2, '.', '')));
$sum+=$other[$ot];$otherSum+=$other[$ot];
}
$ot++;
}
}
$accountJson['cSum']=array('agencySum'=>number_format($agencySum, 2, '.', ''),'travelSum'=>number_format($travelSum, 2, '.', ''),'trainSum'=>number_format($trainSum, 2, '.', ''),'otherSum'=>number_format($otherSum, 2, '.', ''));
//报销单
$receipt->accountItem=json_encode($accountJson);
$receipt->staff=$this->staff[0]['sid'];
$receipt->loanSum=$receiptDet['sum'];
$receipt->sum=number_format($sum, 2, '.', '');
$receipt->date=date("Y-m-d");
$receipt->pastDate='';
$receipt->cid=$cid;
$receipt->status=7;
//修改审批流程加入角色
$receipt->verify=$verify;
$receipt->verifyStaff='';
$receipt->executeStaff='';
$receipt->executeCopy=$executeDetail['staff'];
//$receipt->receiptOrder="#B".date("Ymd").mt_rand(1000,9999);
$receipt->explanation=$explanation;
$receipt->update(array('where'=>'rid='.$rid));
//附件
if (!empty($enclosurName)){
$enclosurArray=explode('-', $enclosurName);
foreach ($enclosurArray as $value){
$enclosur=new enclosur();
$enclosur->name=$value;
$enclosur->rid=$rid;
$enclosur->insert();
}
//print_r($enclosurArray);die;
}
//报销详情
foreach ($accountJson[$this->AGENCY] as $key=>$value){
$receiptDetail=new receiptDetail();
$receiptDetail->staff=$this->staff[0]['sid'];
$receiptDetail->item=$value['name'];
$receiptDetail->itemCategory=$this->AGENCY;
$receiptDetail->price=number_format($value['price'], 2, '.', '');
$receiptDetail->date=date("Y-m-d");
$receiptDetail->cid=$cid;
$receiptDetail->rid=$rid;
$receiptDetail->status=4;
$receiptDetail->insert();
}
foreach ($accountJson[$this->TRAVEL] as $key=>$value){
$receiptDetail=new receiptDetail();
$receiptDetail->staff=$this->staff[0]['sid'];
$receiptDetail->item=$value['name'];
$receiptDetail->itemCategory=$this->TRAVEL;
$receiptDetail->price=number_format($value['price'], 2, '.', '');
$receiptDetail->date=date("Y-m-d");
$receiptDetail->cid=$cid;
$receiptDetail->rid=$rid;
$receiptDetail->status=4;
$receiptDetail->insert();
}
foreach ($accountJson[$this->TRAIN] as $key=>$value){
$receiptDetail=new receiptDetail();
$receiptDetail->staff=$this->staff[0]['sid'];
$receiptDetail->item=$value['name'];
$receiptDetail->itemCategory=$this->TRAIN;
$receiptDetail->price=number_format($value['price'], 2, '.', '');
$receiptDetail->date=date("Y-m-d");
$receiptDetail->cid=$cid;
$receiptDetail->rid=$rid;
$receiptDetail->status=4;
$receiptDetail->insert();
}
foreach ($accountJson[$this->OTHER] as $key=>$value){
$receiptDetail=new receiptDetail();
$receiptDetail->staff=$this->staff[0]['sid'];
$receiptDetail->item=$value['name'];
$receiptDetail->itemCategory=$this->OTHER;
$receiptDetail->price=number_format($value['price'], 2, '.', '');
$receiptDetail->date=date("Y-m-d");
$receiptDetail->cid=$cid;
$receiptDetail->rid=$rid;
$receiptDetail->status=4;
$receiptDetail->insert();
}
return "/saeaBorad";
}
return "/saeaLoanReceiptAdd/".$rid;
}
function saeaLoanReceiptEdi(){
$rid=isset($this->params['rid'])&&is_numeric($this->params['rid'])?$this->params['rid']:0;
//echo $rid;
Doo::loadModel('accountItem');
Doo::loadModel('verify');
Doo::loadModel('receipt');
$receipt=new receipt();
$verify=new verify();
$accountItem=new accountItem();
Doo::loadModel('L_category');
$Lcategory=new L_category();
Doo::loadModel("role");
$role=new role();
Doo::loadModel('loanReceipt');
$loanReceipt=new loanReceipt();
Doo::loadModel('staff');
$staff=new staff();
$receiptDetail=$receipt->getOne(array('where'=>'staff='.$this->staff[0]['sid'].' and (status=4 or status=7) and rid='.$rid,'asArray'=>true));
if(empty($receiptDetail))
return "/saeaBorad";
$receiptList=$loanReceipt->find(array('where'=>'rid='.$receiptDetail['loanRid'],'desc'=>'rid','asArray'=>true));
$Locate=0;$roleId=0;$button=0;
foreach ($receiptList as $key=>$value){
$receiptList[$key]['Locate']=$Locate;$Locate++;
$receiptList[$key]['reviseDetail']=array();
if (!empty($value['reviseDetail']))
$receiptList[$key]['reviseDetail']=json_decode($value['reviseDetail'],true);
$receiptList[$key]['accountItem']=json_decode($value['accountItem'],true);
$receiptList[$key]['loanItem']=json_decode($value['loanItem'],true);
$categoryDetil=$Lcategory->getOne(array('where'=>'cid='.$value['cid'],'asArray'=>true));
$receiptList[$key]['category']=$categoryDetil['title'];
//检测编辑状态
$verifyList=$verify->getOne(array('where'=>'vid='.$value['verify'],'asArray'=>true));
$verifyList=json_decode($verifyList['staff'],true);//status opinion
$verifyStaff=json_decode($value['verifyStaff'],true);
Doo::loadModel('role');
$role=new role();
$flag=true;$roleKey=0;$endStaffArray=array();$roleArrayCopy=array();
foreach ($verifyList as $k=>$v){
//init verifyStaff
if ($v[1]=='ROLE'){
if (!empty($verifyStaff)){
$endStaffArray=end($verifyStaff);
// if ($v[0]==$endStaffArray['nextStaff']){
// $roleId=$v[0];
// }
}
$roleVerify=json_decode($v[3],true);
$roleKey=$k;$roleArray=array();
$rolename=$role->getOne(array('where'=>'rid='.$v[0],'asArray'=>true));
foreach ($roleVerify as $o=>$p){
$staffID=explode ('_',$p);
$staffInfo=$staff->getOne(array('where'=>'sid='.$staffID[0],'asArray'=>true));
//print_r($staffID);
$exp=array(0=>$staffInfo['sid'],1=>$staffID[1],2=>$staffInfo['avatar'],'date'=>'','date'=>'','opinion'=>'','status'=>'','rolename'=>$rolename['name']);
array_push($roleArray, $exp);
}
$roleArrayCopy[$v[0]]=$roleArray;
//$verifyList[$k]['roleArray']=$roleArray;
}
$verifyList[$k]['date']="";
$verifyList[$k]['opinion']="";
$verifyList[$k]['status']="";
if (empty($verifyStaff)){
$verifyList[$k]['date']="";
$verifyList[$k]['opinion']="";
if (($verifyList[0][0]==$this->staff[0]['sid'])&&$flag){
$verifyList[$k]['status']=4;
$flag=false;
}
}else{
foreach ($verifyStaff as $m=>$u){
if ($v[0]==$m){
$verifyList[$k]['date']=$u['date'];
$verifyList[$k]['opinion']=$u['opinion'];
$verifyList[$k]['status']=$u['status'];
$flag=false;
break;
}
}
$endStaffArray=end($verifyStaff);
if (isset($endStaffArray['ROLE'])){
}else{
// $endKey=key($verifyStaff);
// if ($v[0]==$endStaffArray['nextStaff']&&$endStaffArray['nextStaff']==$this->staff[0]['sid']){
// $button=4;
// $verifyList[$k]['status']=4;
// }
}
}
}
$rolename['name']='';
if (!empty($roleId)){
Doo::loadModel('role');
$role=new role();
$rolename=$role->getOne(array('where'=>'rid='.$roleId,'asArray'=>true));
}
if (!empty($verifyStaff))
$endStaffArray=end($verifyStaff);
$KOP=false;
foreach ($roleArrayCopy as $P=>$A){
foreach ( $A as $MKI=>$AVL){
if (!empty($verifyStaff)){
//&&$rolename['rid']==$endStaffArray['nextStaff']
if ($this->staff[0]['sid']==$AVL[0]&&isset($endStaffArray['ROLE'])&&$rolename['rid']==$endStaffArray['nextStaff']){
$button=4;
$roleArrayCopy[$P][$MKI]['status']=4;
}
foreach ($verifyStaff as $m=>$u){
$AVLFK=$AVL[0].'_R';
//echo $AVLFK.'=='.$m;var_dump($AVLFK==$m);echo ' ';
if (strcmp($AVLFK,$m)==0){//&&isset($u['ROLE'])&&$u['ROLE']==1
$roleArrayCopy[$P][$MKI]['date']=$u['date'];
$roleArrayCopy[$P][$MKI]['opinion']=$u['opinion'];
$roleArrayCopy[$P][$MKI]['status']=$u['status'];
break;
}
}
}else{
if ($this->staff[0]['sid']==$AVL[0]&&$verifyList[0][1]=='ROLE'){
$button=4;
$roleArrayCopy[$P][$MKI]['status']=4;
}
}
//$roleArray[$MKI]['rolename']=$rolename['name'];
$KOP=true;
}
}
foreach ($roleArrayCopy as $k=>$v){
foreach ($verifyList as $m=>$n){
if ($n[0]==$k){
array_splice($verifyList,$m,1,$v);
}
}
}
$receiptList[$key]['verifyList']=$verifyList;
$receiptList[$key]['staffDetail']=$staff->getOne(array('where'=>'sid='.$value['staff'],'asArray'=>true));
$receiptList[$key]['button']=$button;
//
//$receiptList[$key]['BIGsum']=$this->NumToCNMoney($value['sum']);
$receiptList[$key]['BIGsum']=$this->num_to_rmb($value['sum']);
}
$data['receiptList']=$receiptList;
$acItem=$accountItem->find(array('asArray'=>true));
$veList=$verify->find(array('asArray'=>true));
foreach ($veList as $key=>$value){
$v=json_decode($value['staff']);
$list=array();
foreach ($v as $n=>$m){
if ($m['1']=='ROLE'){
$roleInfo=$role->getOne(array('where'=>'rid='.$m[0],'asArray'=>true));
$v[$n][1]=$roleInfo['name'];
array_push($list, $roleInfo['name']);
}else{
array_push($list, $v[$n][1]);
}
}
$veList[$key]['staff']=implode('>', $list);
}
//配置编辑信息
$accountItemList=json_decode($receiptDetail['accountItem'],true);
foreach ($acItem as $key=>$value){
foreach ($accountItemList[$this->AGENCY] as $k=>$v){
if($acItem[$key]['category']==$this->AGENCY&&$acItem[$key]['name']==$v['name']){
$acItem[$key]['price']=$v['price'];
}
}
foreach ($accountItemList[$this->TRAIN] as $k=>$v){
if($acItem[$key]['category']==$this->TRAIN&&$acItem[$key]['name']==$v['name']){
$acItem[$key]['price']=$v['price'];
}
}
foreach ($accountItemList[$this->TRAVEL] as $k=>$v){
if($acItem[$key]['category']==$this->TRAVEL&&$acItem[$key]['name']==$v['name']){
$acItem[$key]['price']=$v['price'];
}
}
foreach ($accountItemList[$this->OTHER] as $k=>$v){
if($acItem[$key]['category']==$this->OTHER&&$acItem[$key]['name']==$v['name']){
$acItem[$key]['price']=$v['price'];
}
}
}
$data['category']=$Lcategory->find(array('asArray'=>true));
$data['cSum']=$accountItemList['cSum'];
$data['sum']=$receiptDetail['sum'];
$data['receiptDetail']=$receiptDetail;
$data['veList']=$veList;
$data['acItem']=$acItem;
$data['memu']="receipt";
$data['staff']=$this->staff;
$data['receiptMemu']='saeaBorad';
$data['verify']=$receiptDetail['verify'];
$data['verifyId']=$this->verifyId;
$data['executeId']=$this->executeId;
$data['rid']=$rid;
$this->render ( "/admin/saeaLoanEdiReceipt", $data );
}
function confirmation(){
$rid=isset($this->params['rid'])?$this->params['rid']:0;
Doo::loadModel('receipt');
Doo::loadModel('receiptDetail');
$receipt=new receipt();
$receiptDetail=new receiptDetail();
Doo::loadModel('statistics');
Doo::loadModel('itemStatistics');
$statistics=new statistics();
$itemStatistics=new itemStatistics();
Doo::loadModel("verify");
$verify=new verify();
$receiptDetailList=$receipt->getOne(array('where'=>'staff='.$this->staff[0]['sid'].' and (status=4 or status=5) and Rtype=1 and rid='.$rid,'asArray'=>true));
if(empty($receiptDetailList))
return "/saeaBorad";
$verifyDetail=$verify->getOne(array('where'=>' vid ='.$receiptDetailList['verify'],'asArray'=>true));
$verifyDetail=json_decode($verifyDetail['staff'],true);
if (empty($receiptDetailList['nowStaff'])){
$nowStaff="";$nowStaffList=array();
if ($verifyDetail[0][1]=='ROLE'){
$vStaffString=json_decode($verifyDetail[0][3]);
foreach ($vStaffString as $key=>$value){
$staffK=explode("_", $value);
array_push($nowStaffList, $staffK[0]);
}
$nowStaff=implode(',', $nowStaffList);
}else{
$nowStaff=$verifyDetail[0][0];
}
$receipt->nowStaff=$nowStaff;
}
// echo $nowStaff;
// print_r($verifyDetail);die;
$receipt->rid=$receiptDetailList['rid'];
$receipt->status=2;
$receipt->update();
//操作日志
Doo::loadModel("receiptLog");
$receiptLog=new receiptLog();
$verify=new verify();
$receiptInfo=$receipt->getOne(array('where'=>'rid='.$rid,'asArray'=>true));
$vr=$verify->getOne(array('where'=>'vid='.$receiptInfo['verify'],'asArray'=>true));
$jd=json_decode($vr['staff']);$roleId=0;
foreach ($jd as $key=>$value){
if ($value[1]=='ROLE'){
$pos = strpos($value[3], $this->staff[0]['sid']);
if ($pos !== false) {
$roleId=$value[0];
}
}
}
//审批日志
//echo $roleId;die;
if (!empty($roleId)){
Doo::loadModel("role");
$role=new role();
$roleInfo=$role->getOne(array('where'=>'rid='.$roleId,'asArray'=>true));
$receiptLog->rolename=$roleInfo['name'];
}
$receiptLog->username=$this->staff[0]['username'];
$receiptLog->uid=$this->staff[0]['sid'];
$receiptLog->date=date("Y-m-d");
$receiptLog->opinion='提交审批';
$receiptLog->img=$this->staff[0]['avatar'];
$receiptLog->status=2;
$receiptLog->rid=$rid;
$receiptLog->insert();
return "/expenses";
}
function expenses(){
$item=isset($this->params['item'])?$this->params['item']:"";
if(empty($item))
$item=$this->get_args('item')?$this->get_args('item'):"";
$year=$this->get_args('year')?$this->get_args('year'):date("Y");
$moth=$this->get_args('moth')?$this->get_args('moth'):"";
Doo::loadModel('receipt');
$receipt=new receipt();
Doo::loadModel('L_category');
$Lcategory=new L_category();
Doo::loadModel('verify');
Doo::loadModel('statistics');
$statistics=new statistics();
$verify=new verify();
Doo::loadModel('staff');
$staff=new staff();
$condition="";
if($item=="expenses")
$condition=" and Rtype=1 ";
elseif ($item=="receipts")
$condition=" and Rtype=0 ";
elseif ($item=="remits")
$condition=" and Rtype=2 ";
$dateCondition=" and Year(date) =".$year;
if(!empty($moth)){
$dateCondition=" and Year(date) =".$year." and Month(date) = ".$moth;
$stList=$statistics->getOne(array('select'=>'rePrice ,agPrice','where'=>' staff='.$this->staff[0]['sid'].$dateCondition,'asArray'=>true));
}else
$stList=$statistics->statisticsByYear($year,$this->staff[0]['sid']);
if(empty($stList))
$stList=array('rePrice'=>0,'agPrice'=>0);
$noPassSum=$receipt->receiptByYear($year,$this->staff[0]['sid']);
$data['stList']=array('rePrice'=>$stList['rePrice'],'agPrice'=>$stList['agPrice'],'skPrice'=>($stList['rePrice']-$stList['agPrice']-$noPassSum['sum']));
$receiptList=$receipt->find(array('where'=>'staff='.$this->staff[0]['sid'].$condition.$dateCondition,'desc'=>'rid','asArray'=>true));
$Locate=0;$roleId=0;$button=0;
foreach ($receiptList as $key=>$value){
$receiptList[$key]['Locate']=$Locate;$Locate++;
$receiptList[$key]['reviseDetail']=array();
if (!empty($value['reviseDetail']))
$receiptList[$key]['reviseDetail']=json_decode($value['reviseDetail'],true);
$receiptList[$key]['accountItem']=json_decode($value['accountItem'],true);
$categoryDetil=$Lcategory->getOne(array('where'=>'cid='.$value['cid'],'asArray'=>true));
$receiptList[$key]['category']=$categoryDetil['title'];
//检测编辑状态
$verifyList=$verify->getOne(array('where'=>'vid='.$value['verify'],'asArray'=>true));
$verifyList=json_decode($verifyList['staff'],true);//status opinion
$verifyStaff=json_decode($value['verifyStaff'],true);
Doo::loadModel('role');
$role=new role();
$flag=true;$roleKey=0;$endStaffArray=array();$roleArrayCopy=array();
foreach ($verifyList as $k=>$v){
//init verifyStaff
if ($v[1]=='ROLE'){
if (!empty($verifyStaff)){
$endStaffArray=end($verifyStaff);
// if ($v[0]==$endStaffArray['nextStaff']){
// $roleId=$v[0];
// }
}
$roleVerify=json_decode($v[3],true);
$roleKey=$k;$roleArray=array();
$rolename=$role->getOne(array('where'=>'rid='.$v[0],'asArray'=>true));
foreach ($roleVerify as $o=>$p){
$staffID=explode ('_',$p);
$staffInfo=$staff->getOne(array('where'=>'sid='.$staffID[0],'asArray'=>true));
//print_r($staffID);
$exp=array(0=>$staffInfo['sid'],1=>$staffID[1],2=>$staffInfo['avatar'],'date'=>'','date'=>'','opinion'=>'','status'=>'','rolename'=>$rolename['name']);
array_push($roleArray, $exp);
}
$roleArrayCopy[$v[0]]=$roleArray;
//$verifyList[$k]['roleArray']=$roleArray;
}
$verifyList[$k]['date']="";
$verifyList[$k]['opinion']="";
$verifyList[$k]['status']="";
if (empty($verifyStaff)){
$verifyList[$k]['date']="";
$verifyList[$k]['opinion']="";
if (($verifyList[0][0]==$this->staff[0]['sid'])&&$flag){
$verifyList[$k]['status']=4;
$flag=false;
}
}else{
foreach ($verifyStaff as $m=>$u){
if ($v[0]==$m){
$verifyList[$k]['date']=$u['date'];
$verifyList[$k]['opinion']=$u['opinion'];
$verifyList[$k]['status']=$u['status'];
$flag=false;
break;
}
}
$endStaffArray=end($verifyStaff);
if (isset($endStaffArray['ROLE'])){
}else{
// $endKey=key($verifyStaff);
// if ($v[0]==$endStaffArray['nextStaff']&&$endStaffArray['nextStaff']==$this->staff[0]['sid']){
// $button=4;
// $verifyList[$k]['status']=4;
// }
}
}
}
$rolename['name']='';
if (!empty($roleId)){
Doo::loadModel('role');
$role=new role();
$rolename=$role->getOne(array('where'=>'rid='.$roleId,'asArray'=>true));
}
if (!empty($verifyStaff))
$endStaffArray=end($verifyStaff);
$KOP=false;
foreach ($roleArrayCopy as $P=>$A){
foreach ( $A as $MKI=>$AVL){
if (!empty($verifyStaff)){
//&&$rolename['rid']==$endStaffArray['nextStaff']
if ($this->staff[0]['sid']==$AVL[0]&&isset($endStaffArray['ROLE'])&&$rolename['rid']==$endStaffArray['nextStaff']){
$button=4;
$roleArrayCopy[$P][$MKI]['status']=4;
}
foreach ($verifyStaff as $m=>$u){
$AVLFK=$AVL[0].'_R';
//echo $AVLFK.'=='.$m;var_dump($AVLFK==$m);echo ' ';
if (strcmp($AVLFK,$m)==0){//&&isset($u['ROLE'])&&$u['ROLE']==1
$roleArrayCopy[$P][$MKI]['date']=$u['date'];
$roleArrayCopy[$P][$MKI]['opinion']=$u['opinion'];
$roleArrayCopy[$P][$MKI]['status']=$u['status'];
break;
}
}
}else{
if ($this->staff[0]['sid']==$AVL[0]&&$verifyList[0][1]=='ROLE'){
$button=4;
$roleArrayCopy[$P][$MKI]['status']=4;
}
}
//$roleArray[$MKI]['rolename']=$rolename['name'];
$KOP=true;
}
}
foreach ($roleArrayCopy as $k=>$v){
foreach ($verifyList as $m=>$n){
if ($n[0]==$k){
array_splice($verifyList,$m,1,$v);
}
}
}
$receiptList[$key]['verifyList']=$verifyList;
$receiptList[$key]['staffDetail']=$staff->getOne(array('where'=>'sid='.$value['staff'],'asArray'=>true));
$receiptList[$key]['button']=$button;
}
//print_r($receiptList);die;
$mothHtml="";
for($i=1;$i<=12;$i++){
if($moth==$i)
$mothHtml.='';
else
$mothHtml.='';
}
$data['mothHtml']=$mothHtml;
$data['receiptList']=$receiptList;
$data['memu']="receipt";
$data['staff']=$this->staff;
$data['receiptMemu']='expenses';
$data['verifyId']=$this->verifyId;
$data['executeId']=$this->executeId;
$data['item']=$item;
$data['year']=$year;
$this->render ( "/admin/expenses", $data );
}
function expensesCollect(){
$rid=isset($this->params['rid'])?$this->params['rid']:0;
Doo::loadModel('receipt');
$receipt=new receipt();
Doo::loadModel('L_category');
$Lcategory=new L_category();
Doo::loadModel('verify');
Doo::loadModel('statistics');
$statistics=new statistics();
$verify=new verify();
Doo::loadModel('staff');
$staff=new staff();
Doo::loadModel('loanReceipt');
$loanReceipt=new loanReceipt();
$receiptList=$receipt->find(array('where'=>'staff='.$this->staff[0]['sid'].' and rid='.$rid,'desc'=>'rid','asArray'=>true));
$loanList=$loanReceipt->find(array('where'=>'rid='.$receiptList[0]['loanRid'],'desc'=>'rid','asArray'=>true));
$Locate=0;$roleId=0;$button=0;
foreach ($loanList as $key=>$value){
$loanList[$key]['Locate']=$Locate;$Locate++;
$loanList[$key]['reviseDetail']=array();
if (!empty($value['reviseDetail']))
$loanList[$key]['reviseDetail']=json_decode($value['reviseDetail'],true);
$loanList[$key]['accountItem']=json_decode($value['accountItem'],true);
$loanList[$key]['loanItem']=json_decode($value['loanItem'],true);
$categoryDetil=$Lcategory->getOne(array('where'=>'cid='.$value['cid'],'asArray'=>true));
$loanList[$key]['category']=$categoryDetil['title'];
//检测编辑状态
if ($value['status']==3||$value['status']==1||$value['status']==8||$value['status']==9)
$verifyList['staff']=$value['verifyBreakup'];
else
$verifyList=$verify->getOne(array('where'=>'vid='.$value['verify'],'asArray'=>true));
$verifyList=json_decode($verifyList['staff'],true);//status opinion
$verifyStaff=json_decode($value['verifyStaff'],true);
Doo::loadModel('role');
$role=new role();
$flag=true;$roleKey=0;$endStaffArray=array();$roleArrayCopy=array();
foreach ($verifyList as $k=>$v){
//init verifyStaff
if ($v[1]=='ROLE'){
if (!empty($verifyStaff)){
$endStaffArray=end($verifyStaff);
// if ($v[0]==$endStaffArray['nextStaff']){
// $roleId=$v[0];
// }
}
$roleVerify=json_decode($v[3],true);
$roleKey=$k;$roleArray=array();
$rolename=$role->getOne(array('where'=>'rid='.$v[0],'asArray'=>true));
foreach ($roleVerify as $o=>$p){
$staffID=explode ('_',$p);
$staffInfo=$staff->getOne(array('where'=>'sid='.$staffID[0],'asArray'=>true));
//print_r($staffID);
$exp=array(0=>$staffInfo['sid'],1=>$staffID[1],2=>$staffInfo['avatar'],'date'=>'','date'=>'','opinion'=>'','status'=>'','rolename'=>$rolename['name']);
array_push($roleArray, $exp);
}
$roleArrayCopy[$v[0]]=$roleArray;
//$verifyList[$k]['roleArray']=$roleArray;
}
$verifyList[$k]['date']="";
$verifyList[$k]['opinion']="";
$verifyList[$k]['status']="";
if (empty($verifyStaff)){
$verifyList[$k]['date']="";
$verifyList[$k]['opinion']="";
if (($verifyList[0][0]==$this->staff[0]['sid'])&&$flag){
$verifyList[$k]['status']=4;
$flag=false;
}
}else{
foreach ($verifyStaff as $m=>$u){
if ($v[0]==$m){
$verifyList[$k]['date']=$u['date'];
$verifyList[$k]['opinion']=$u['opinion'];
$verifyList[$k]['status']=$u['status'];
$flag=false;
break;
}
}
$endStaffArray=end($verifyStaff);
if (isset($endStaffArray['ROLE'])){
}else{
// $endKey=key($verifyStaff);
// if ($v[0]==$endStaffArray['nextStaff']&&$endStaffArray['nextStaff']==$this->staff[0]['sid']){
// $button=4;
// $verifyList[$k]['status']=4;
// }
}
}
}
$rolename['name']='';
if (!empty($roleId)){
Doo::loadModel('role');
$role=new role();
$rolename=$role->getOne(array('where'=>'rid='.$roleId,'asArray'=>true));
}
if (!empty($verifyStaff))
$endStaffArray=end($verifyStaff);
$KOP=false;
foreach ($roleArrayCopy as $P=>$A){
foreach ( $A as $MKI=>$AVL){
if (!empty($verifyStaff)){
//&&$rolename['rid']==$endStaffArray['nextStaff']
if ($this->staff[0]['sid']==$AVL[0]&&isset($endStaffArray['ROLE'])&&$rolename['rid']==$endStaffArray['nextStaff']){
$button=4;
$roleArrayCopy[$P][$MKI]['status']=4;
}
foreach ($verifyStaff as $m=>$u){
$AVLFK=$AVL[0].'_R';
//echo $AVLFK.'=='.$m;var_dump($AVLFK==$m);echo ' ';
if (strcmp($AVLFK,$m)==0){//&&isset($u['ROLE'])&&$u['ROLE']==1
$roleArrayCopy[$P][$MKI]['date']=$u['date'];
$roleArrayCopy[$P][$MKI]['opinion']=$u['opinion'];
$roleArrayCopy[$P][$MKI]['status']=$u['status'];
break;
}
}
}else{
if ($this->staff[0]['sid']==$AVL[0]&&$verifyList[0][1]=='ROLE'){
$button=4;
$roleArrayCopy[$P][$MKI]['status']=4;
}
}
//$roleArray[$MKI]['rolename']=$rolename['name'];
$KOP=true;
}
}
foreach ($roleArrayCopy as $k=>$v){
foreach ($verifyList as $m=>$n){
if ($n[0]==$k){
array_splice($verifyList,$m,1,$v);
}
}
}
$loanList[$key]['verifyList']=$verifyList;
$loanList[$key]['staffDetail']=$staff->getOne(array('where'=>'sid='.$value['staff'],'asArray'=>true));
$loanList[$key]['button']=$button;
//$loanList[$key]['sumCN']=$this->NumToCNMoney($value['sum']);
}
$data['loanList']=$loanList;
$Locate=0;$roleId=0;$button=0;
foreach ($receiptList as $key=>$value){
$receiptList[$key]['Locate']=$Locate;$Locate++;
$receiptList[$key]['reviseDetail']=array();
if (!empty($value['reviseDetail']))
$receiptList[$key]['reviseDetail']=json_decode($value['reviseDetail'],true);
$receiptList[$key]['accountItem']=json_decode($value['accountItem'],true);
$receiptList[$key]['loanItem']=json_decode($value['loanItem'],true);
$categoryDetil=$Lcategory->getOne(array('where'=>'cid='.$value['cid'],'asArray'=>true));
$receiptList[$key]['category']=$categoryDetil['title'];
//检测编辑状态
if ($value['status']==3||$value['status']==1||$value['status']==8||$value['status']==9){
if($value['status']==8&&$value['Rtype']==1)
$verifyList['staff']=$loanList[0]['verifyBreakup'];
else
$verifyList['staff']=$value['verifyBreakup'];
}else
$verifyList=$verify->getOne(array('where'=>'vid='.$value['verify'],'asArray'=>true));
$verifyList=json_decode($verifyList['staff'],true);//status opinion
$verifyStaff=json_decode($value['verifyStaff'],true);
Doo::loadModel('role');
$role=new role();
$flag=true;$roleKey=0;$endStaffArray=array();$roleArrayCopy=array();
foreach ($verifyList as $k=>$v){
//init verifyStaff
if ($v[1]=='ROLE'){
if (!empty($verifyStaff)){
$endStaffArray=end($verifyStaff);
// if ($v[0]==$endStaffArray['nextStaff']){
// $roleId=$v[0];
// }
}
$roleVerify=json_decode($v[3],true);
$roleKey=$k;$roleArray=array();
$rolename=$role->getOne(array('where'=>'rid='.$v[0],'asArray'=>true));
foreach ($roleVerify as $o=>$p){
$staffID=explode ('_',$p);
$staffInfo=$staff->getOne(array('where'=>'sid='.$staffID[0],'asArray'=>true));
//print_r($staffID);
$exp=array(0=>$staffInfo['sid'],1=>$staffID[1],2=>$staffInfo['avatar'],'date'=>'','date'=>'','opinion'=>'','status'=>'','rolename'=>$rolename['name']);
array_push($roleArray, $exp);
}
$roleArrayCopy[$v[0]]=$roleArray;
//$verifyList[$k]['roleArray']=$roleArray;
}
$verifyList[$k]['date']="";
$verifyList[$k]['opinion']="";
$verifyList[$k]['status']="";
if (empty($verifyStaff)){
$verifyList[$k]['date']="";
$verifyList[$k]['opinion']="";
if (($verifyList[0][0]==$this->staff[0]['sid'])&&$flag){
$verifyList[$k]['status']=4;
$flag=false;
}
}else{
foreach ($verifyStaff as $m=>$u){
if ($v[0]==$m){
$verifyList[$k]['date']=$u['date'];
$verifyList[$k]['opinion']=$u['opinion'];
$verifyList[$k]['status']=$u['status'];
$flag=false;
break;
}
}
$endStaffArray=end($verifyStaff);
if (isset($endStaffArray['ROLE'])){
}else{
// $endKey=key($verifyStaff);
// if ($v[0]==$endStaffArray['nextStaff']&&$endStaffArray['nextStaff']==$this->staff[0]['sid']){
// $button=4;
// $verifyList[$k]['status']=4;
// }
}
}
}
$rolename['name']='';
if (!empty($roleId)){
Doo::loadModel('role');
$role=new role();
$rolename=$role->getOne(array('where'=>'rid='.$roleId,'asArray'=>true));
}
if (!empty($verifyStaff))
$endStaffArray=end($verifyStaff);
$KOP=false;
foreach ($roleArrayCopy as $P=>$A){
foreach ( $A as $MKI=>$AVL){
if (!empty($verifyStaff)){
//&&$rolename['rid']==$endStaffArray['nextStaff']
if ($this->staff[0]['sid']==$AVL[0]&&isset($endStaffArray['ROLE'])&&$rolename['rid']==$endStaffArray['nextStaff']){
$button=4;
$roleArrayCopy[$P][$MKI]['status']=4;
}
foreach ($verifyStaff as $m=>$u){
$AVLFK=$AVL[0].'_R';
//echo $AVLFK.'=='.$m;var_dump($AVLFK==$m);echo ' ';
if (strcmp($AVLFK,$m)==0){//&&isset($u['ROLE'])&&$u['ROLE']==1
$roleArrayCopy[$P][$MKI]['date']=$u['date'];
$roleArrayCopy[$P][$MKI]['opinion']=$u['opinion'];
$roleArrayCopy[$P][$MKI]['status']=$u['status'];
break;
}
}
}else{
if ($this->staff[0]['sid']==$AVL[0]&&$verifyList[0][1]=='ROLE'){
$button=4;
$roleArrayCopy[$P][$MKI]['status']=4;
}
}
//$roleArray[$MKI]['rolename']=$rolename['name'];
$KOP=true;
}
}
foreach ($roleArrayCopy as $k=>$v){
foreach ($verifyList as $m=>$n){
if ($n[0]==$k){
array_splice($verifyList,$m,1,$v);
}
}
}
$receiptList[$key]['verifyList']=$verifyList;
$receiptList[$key]['staffDetail']=$staff->getOne(array('where'=>'sid='.$value['staff'],'asArray'=>true));
$receiptList[$key]['button']=$button;
$receiptList[$key]['sumCN']=$this->num_to_rmb($value['sum']);
$receiptList[$key]['loanSumCN']=$this->num_to_rmb($value['loanSum']);
$relust=$value['sum']-$value['loanSum'];
$receiptList[$key]['relust']=$relust;
$receiptList[$key]['relustCN']=$this->num_to_rmb($relust);
}
$data['receiptList']=$receiptList;
$data['memu']="receipt";
$data['staff']=$this->staff;
$data['receiptMemu']='expenses';
$data['verifyId']=$this->verifyId;
$data['executeId']=$this->executeId;
$this->render ( "/admin/expensesCollect", $data );
}
function approvalExpenses(){
$status=isset($this->params['status'])&&is_numeric($this->params['status'])?$this->params['status']:0;
$year=$this->get_args('year')?$this->get_args('year'):date('Y');
$month=$this->get_args('month')?$this->get_args('month'):"";
$cid=$this->get_args('cid')?$this->get_args('cid'):0;
$sid=$this->get_args('sid')?$this->get_args('sid'):0;
if (empty($status))
$status=$this->get_args('status')&&is_numeric($this->get_args('status'))?$this->get_args('status'):0;
$page_size=12;
$page = isset($this->params ['page'])&&is_numeric ( $this->params ['page'] ) ? $this->params ['page'] : 1;
$vidList=array();
$button=0;
Doo::loadModel('verify');
$verify=new verify();
Doo::loadModel('receipt');
$receipt=new receipt();
Doo::loadModel('staff');
$staff=new staff();
Doo::loadModel('L_category');
$Lcategory=new L_category();
//user verify ID
$verifyDetail=$verify->find(array('where'=>' (staff not like "%\"'.$this->staff[0]['sid'].'\",\"ROLE%") and (staff like "%[\"'.$this->staff[0]['sid'].'\",%" or staff like "%\"'.$this->staff[0]['sid'].'\_%" )','asArray'=>true));
foreach ($verifyDetail as $key=>$value){
array_push($vidList, $value['vid']);
}
$vid=implode(",", $vidList);
if(empty($verifyDetail))
$vid=0;
// if ($status==0)
// $dateCondition="";
// else
$dateCondition=" and Year(date) =".$year;
if(!empty($month))
$dateCondition=" and Year(date) =".$year." and Month(date) = ".$month;
$categoryList=$Lcategory->find(array('asArray'=>true));
$staffList=$staff->find(array('where'=>'cid='.$cid,'asArray'=>true));
$cateCondition="";$staffCondition="";$approvalCondition="";
if (!empty($cid))
$cateCondition=' and cid='.$cid;
if(!empty($sid)){
$staffCondition=' and staff='.$sid;
$cateCondition="";
}
$approvalCondition=" and status=".$status;
if($status==2){
//查找角色审批人
$approvalCondition=' and status='.$status.' and (nowStaff like "%,'.$this->staff[0]['sid'].'%" or nowStaff like "%'.$this->staff[0]['sid'].',%" or nowStaff='.$this->staff[0]['sid'].' )';
}
if($status==5){//and verifyStaff like "%\"'.$this->staff[0]['sid'].'\":{%"
$approvalCondition=' and status=2 ';
}
if($status==1){
$approvalCondition=' and (status='.$status.' or status=6) ';
}
//nowStaff like "%'.$this->staff[0]['sid'].'%"
$pageinfo['page']=array('previous'=>'');
if ($status==0){
$pageinfo=$this->get_page("CLD_receipt", $dateCondition.$cateCondition.$staffCondition.' and verify in ('.$vid.') and status!=5', $page, $page_size, "approvalExpenses","","");
$receiptList=$receipt->find(array('where'=>'status!=5 '.$dateCondition.$cateCondition.$staffCondition.' and verify in ('.$vid.')'
,'limit'=>$pageinfo ['lower'].','.$page_size,'desc'=>'rid','asArray'=>true));
//echo 'status!=5 '.$dateCondition.$cateCondition.$staffCondition.' and verify in ('.$vid.')';
}else
$receiptList=$receipt->find(array('where'=>'status!=5 '.$dateCondition.$cateCondition.$staffCondition.$approvalCondition.' and verify in ('.$vid.')'
,'desc'=>'rid','asArray'=>true));
$rLRes=$receipt->find(array('where'=>'status=2 and (nowStaff like "%,'.$this->staff[0]['sid'].'%" or nowStaff like "%'.$this->staff[0]['sid'].',%" or nowStaff='.$this->staff[0]['sid'].' )'.$cateCondition.$staffCondition
,'desc'=>'rid','asArray'=>true));
//echo '1 '.$dateCondition.$cateCondition.$staffCondition.' and verify in ('.$vid.')';
//print_r($pageinfo);
$Locate=0;
foreach ($receiptList as $key=>$value){
$receiptList[$key]['Locate']=$Locate;$Locate++;
$receiptList[$key]['reviseDetail']=array();
if (!empty($value['reviseDetail']))
$receiptList[$key]['reviseDetail']=json_decode($value['reviseDetail'],true);
$receiptList[$key]['accountItem']=json_decode($value['accountItem'],true);
$categoryDetil=$Lcategory->getOne(array('where'=>'cid='.$value['cid'],'asArray'=>true));
$receiptList[$key]['category']=$categoryDetil['title'];
$verifyList=$verify->getOne(array('where'=>'vid='.$value['verify'],'asArray'=>true));
$verifyList=json_decode($verifyList['staff'],true);//status opinion
$verifyStaff=json_decode($value['verifyStaff'],true);
foreach ($verifyList as $k=>$v){
//init verifyStaff
$verifyList[$k]['date']="";
$verifyList[$k]['opinion']="";
$verifyList[$k]['status']="";
if (empty($verifyStaff)){
$verifyList[$k]['date']="";
$verifyList[$k]['opinion']="";
if ($v[0]==$this->staff[0]['sid']){
$verifyList[$k]['status']=4;
$button=4;
}
}else{
$flag=true;
foreach ($verifyStaff as $m=>$u){
if ($v[0]==$m){
$verifyList[$k]['date']=$u['date'];
$verifyList[$k]['opinion']=$u['opinion'];
$verifyList[$k]['status']=$u['status'];
$flag=false;
break;
}
// elseif($v[0]==$this->staff[0]['sid']){$verifyList[$k]['status']=4;break;}
// if ($v[0]==$this->staff[0]['sid']&&$m!=$this->staff[0]['sid']){$verifyList[$k]['status']=4;}
// if($v[0]==$this->staff[0]['sid']&&$v[0]==$m){if ($u['status']!=1&&$u['status']!=3)$button=4;}
}
if($flag){//检测可编辑
if($v[0]==$this->staff[0]['sid']){
$verifyList[$k]['status']=4;$button=4;
}
}
}
}
$receiptList[$key]['verifyList']=$verifyList;
$receiptList[$key]['staffDetail']=$staff->getOne(array('where'=>'sid='.$value['staff'],'asArray'=>true));
$receiptList[$key]['button']=$button;
$receiptList[$key]['nowStaffArray']=explode(',',$value['nowStaff']);
}
//print_r($receiptList);die;
//$data['verifyDetail']=$verifyDetail;
$mothHtml="";
for($i=1;$i<=12;$i++){
if($month==$i)
$mothHtml.='';
else
$mothHtml.='';
}
$data['mothHtml']=$mothHtml;
$data['page']=$pageinfo;
$data['receiptList']=$receiptList;
$data['receiptApprovalCount']=count($rLRes);
$data['status']=$status;
$data['year']=$year;
$data['categoryList']=$categoryList;
$data['staffList']=$staffList;
$data['cid']=$cid;
$data['sid']=$sid;
//print_r($receiptList);
$data['memu']="receipt";
$data['staff']=$this->staff;
$data['receiptMemu']='approvalExpenses';
$data['verifyId']=$this->verifyId;
$data['executeId']=$this->executeId;
$this->render ( "/admin/approvalExpenses", $data );
}
function expensesDoc(){
$rid=isset($this->params['rid'])?$this->params['rid']:0;
Doo::loadModel('receipt');
$receipt=new receipt();
Doo::loadModel('L_category');
$Lcategory=new L_category();
Doo::loadModel('verify');
Doo::loadModel('statistics');
$statistics=new statistics();
$verify=new verify();
Doo::loadModel('staff');
$staff=new staff();
Doo::loadModel('loanReceipt');
$loanReceipt=new loanReceipt();
$receiptList=$receipt->find(array('where'=>' rid='.$rid,'desc'=>'rid','asArray'=>true));
$loanList=array();
if (!empty($receiptList))
$loanList=$loanReceipt->find(array('where'=>'rid='.$receiptList[0]['loanRid'],'desc'=>'rid','asArray'=>true));
$Locate=0;$roleId=0;$button=0;
foreach ($loanList as $key=>$value){
$loanList[$key]['Locate']=$Locate;$Locate++;
$loanList[$key]['reviseDetail']=array();
if (!empty($value['reviseDetail']))
$loanList[$key]['reviseDetail']=json_decode($value['reviseDetail'],true);
$loanList[$key]['accountItem']=json_decode($value['accountItem'],true);
$loanList[$key]['loanItem']=json_decode($value['loanItem'],true);
$categoryDetil=$Lcategory->getOne(array('where'=>'cid='.$value['cid'],'asArray'=>true));
$loanList[$key]['category']=$categoryDetil['title'];
//检测编辑状态
if ($value['status']==3||$value['status']==1||$value['status']==8||$value['status']==9)
$verifyList['staff']=$value['verifyBreakup'];
else
$verifyList=$verify->getOne(array('where'=>'vid='.$value['verify'],'asArray'=>true));
$verifyList=json_decode($verifyList['staff'],true);//status opinion
$verifyStaff=json_decode($value['verifyStaff'],true);
Doo::loadModel('role');
$role=new role();
$flag=true;$roleKey=0;$endStaffArray=array();$roleArrayCopy=array();
foreach ($verifyList as $k=>$v){
//init verifyStaff
if ($v[1]=='ROLE'){
if (!empty($verifyStaff)){
$endStaffArray=end($verifyStaff);
// if ($v[0]==$endStaffArray['nextStaff']){
// $roleId=$v[0];
// }
}
$roleVerify=json_decode($v[3],true);
$roleKey=$k;$roleArray=array();
$rolename=$role->getOne(array('where'=>'rid='.$v[0],'asArray'=>true));
foreach ($roleVerify as $o=>$p){
$staffID=explode ('_',$p);
$staffInfo=$staff->getOne(array('where'=>'sid='.$staffID[0],'asArray'=>true));
//print_r($staffID);
$exp=array(0=>$staffInfo['sid'],1=>$staffID[1],2=>$staffInfo['avatar'],'date'=>'','date'=>'','opinion'=>'','status'=>'','rolename'=>$rolename['name']);
array_push($roleArray, $exp);
}
$roleArrayCopy[$v[0]]=$roleArray;
//$verifyList[$k]['roleArray']=$roleArray;
}
$verifyList[$k]['date']="";
$verifyList[$k]['opinion']="";
$verifyList[$k]['status']="";
if (empty($verifyStaff)){
$verifyList[$k]['date']="";
$verifyList[$k]['opinion']="";
if (($verifyList[0][0]==$this->staff[0]['sid'])&&$flag){
$verifyList[$k]['status']=4;
$flag=false;
}
}else{
foreach ($verifyStaff as $m=>$u){
if ($v[0]==$m){
$verifyList[$k]['date']=$u['date'];
$verifyList[$k]['opinion']=$u['opinion'];
$verifyList[$k]['status']=$u['status'];
$flag=false;
break;
}
}
$endStaffArray=end($verifyStaff);
if (isset($endStaffArray['ROLE'])){
}else{
// $endKey=key($verifyStaff);
// if ($v[0]==$endStaffArray['nextStaff']&&$endStaffArray['nextStaff']==$this->staff[0]['sid']){
// $button=4;
// $verifyList[$k]['status']=4;
// }
}
}
}
$rolename['name']='';
if (!empty($roleId)){
Doo::loadModel('role');
$role=new role();
$rolename=$role->getOne(array('where'=>'rid='.$roleId,'asArray'=>true));
}
if (!empty($verifyStaff))
$endStaffArray=end($verifyStaff);
$KOP=false;
foreach ($roleArrayCopy as $P=>$A){
foreach ( $A as $MKI=>$AVL){
if (!empty($verifyStaff)){
//&&$rolename['rid']==$endStaffArray['nextStaff']
if ($this->staff[0]['sid']==$AVL[0]&&isset($endStaffArray['ROLE'])&&$rolename['rid']==$endStaffArray['nextStaff']){
$button=4;
$roleArrayCopy[$P][$MKI]['status']=4;
}
foreach ($verifyStaff as $m=>$u){
$AVLFK=$AVL[0].'_R';
//echo $AVLFK.'=='.$m;var_dump($AVLFK==$m);echo ' ';
if (strcmp($AVLFK,$m)==0){//&&isset($u['ROLE'])&&$u['ROLE']==1
$roleArrayCopy[$P][$MKI]['date']=$u['date'];
$roleArrayCopy[$P][$MKI]['opinion']=$u['opinion'];
$roleArrayCopy[$P][$MKI]['status']=$u['status'];
break;
}
}
}else{
if ($this->staff[0]['sid']==$AVL[0]&&$verifyList[0][1]=='ROLE'){
$button=4;
$roleArrayCopy[$P][$MKI]['status']=4;
}
}
//$roleArray[$MKI]['rolename']=$rolename['name'];
$KOP=true;
}
}
foreach ($roleArrayCopy as $k=>$v){
foreach ($verifyList as $m=>$n){
if ($n[0]==$k){
array_splice($verifyList,$m,1,$v);
}
}
}
$loanList[$key]['verifyList']=$verifyList;
$loanList[$key]['staffDetail']=$staff->getOne(array('where'=>'sid='.$value['staff'],'asArray'=>true));
$loanList[$key]['button']=$button;
//$loanList[$key]['sumCN']=$this->NumToCNMoney($value['sum']);
}
$data['loanList']=$loanList;
//print_r($loanList);
$Locate=0;$roleId=0;$button=0;
foreach ($receiptList as $key=>$value){
$receiptList[$key]['Locate']=$Locate;$Locate++;
$receiptList[$key]['reviseDetail']=array();
if (!empty($value['reviseDetail']))
$receiptList[$key]['reviseDetail']=json_decode($value['reviseDetail'],true);
$receiptList[$key]['accountItem']=json_decode($value['accountItem'],true);
$receiptList[$key]['loanItem']=json_decode($value['loanItem'],true);
$categoryDetil=$Lcategory->getOne(array('where'=>'cid='.$value['cid'],'asArray'=>true));
$receiptList[$key]['category']=$categoryDetil['title'];
//检测编辑状态
if ($value['status']==3||$value['status']==1||$value['status']==9){
$verifyList['staff']=$value['verifyBreakup'];
}else
$verifyList=$verify->getOne(array('where'=>'vid='.$value['verify'],'asArray'=>true));
$verifyList=json_decode($verifyList['staff'],true);//status opinion
$verifyStaff=json_decode($value['verifyStaff'],true);
Doo::loadModel('role');
$role=new role();
if ($verifyList==NULL)
$verifyList=array();
$flag=true;$roleKey=0;$endStaffArray=array();$roleArrayCopy=array();
foreach ($verifyList as $k=>$v){
//init verifyStaff
if ($v[1]=='ROLE'){
if (!empty($verifyStaff)){
$endStaffArray=end($verifyStaff);
// if ($v[0]==$endStaffArray['nextStaff']){
// $roleId=$v[0];
// }
}
$roleVerify=json_decode($v[3],true);
$roleKey=$k;$roleArray=array();
$rolename=$role->getOne(array('where'=>'rid='.$v[0],'asArray'=>true));
foreach ($roleVerify as $o=>$p){
$staffID=explode ('_',$p);
$staffInfo=$staff->getOne(array('where'=>'sid='.$staffID[0],'asArray'=>true));
//print_r($staffID);
$exp=array(0=>$staffInfo['sid'],1=>$staffID[1],2=>$staffInfo['avatar'],'date'=>'','date'=>'','opinion'=>'','status'=>'','rolename'=>$rolename['name']);
array_push($roleArray, $exp);
}
$roleArrayCopy[$v[0]]=$roleArray;
//$verifyList[$k]['roleArray']=$roleArray;
}
$verifyList[$k]['date']="";
$verifyList[$k]['opinion']="";
$verifyList[$k]['status']="";
if (empty($verifyStaff)){
$verifyList[$k]['date']="";
$verifyList[$k]['opinion']="";
if (($verifyList[0][0]==$this->staff[0]['sid'])&&$flag){
$verifyList[$k]['status']=4;
$flag=false;
}
}else{
foreach ($verifyStaff as $m=>$u){
if ($v[0]==$m){
$verifyList[$k]['date']=$u['date'];
$verifyList[$k]['opinion']=$u['opinion'];
$verifyList[$k]['status']=$u['status'];
$flag=false;
break;
}
}
$endStaffArray=end($verifyStaff);
if (isset($endStaffArray['ROLE'])){
}else{
// $endKey=key($verifyStaff);
// if ($v[0]==$endStaffArray['nextStaff']&&$endStaffArray['nextStaff']==$this->staff[0]['sid']){
// $button=4;
// $verifyList[$k]['status']=4;
// }
}
}
}
$rolename['name']='';
if (!empty($roleId)){
Doo::loadModel('role');
$role=new role();
$rolename=$role->getOne(array('where'=>'rid='.$roleId,'asArray'=>true));
}
if (!empty($verifyStaff))
$endStaffArray=end($verifyStaff);
$KOP=false;
foreach ($roleArrayCopy as $P=>$A){
foreach ( $A as $MKI=>$AVL){
if (!empty($verifyStaff)){
//&&$rolename['rid']==$endStaffArray['nextStaff']
if ($this->staff[0]['sid']==$AVL[0]&&isset($endStaffArray['ROLE'])&&$rolename['rid']==$endStaffArray['nextStaff']){
$button=4;
$roleArrayCopy[$P][$MKI]['status']=4;
}
foreach ($verifyStaff as $m=>$u){
$AVLFK=$AVL[0].'_R';
//echo $AVLFK.'=='.$m;var_dump($AVLFK==$m);echo ' ';
if (strcmp($AVLFK,$m)==0){//&&isset($u['ROLE'])&&$u['ROLE']==1
$roleArrayCopy[$P][$MKI]['date']=$u['date'];
$roleArrayCopy[$P][$MKI]['opinion']=$u['opinion'];
$roleArrayCopy[$P][$MKI]['status']=$u['status'];
break;
}
}
}else{
if ($this->staff[0]['sid']==$AVL[0]&&$verifyList[0][1]=='ROLE'){
$button=4;
$roleArrayCopy[$P][$MKI]['status']=4;
}
}
//$roleArray[$MKI]['rolename']=$rolename['name'];
$KOP=true;
}
}
foreach ($roleArrayCopy as $k=>$v){
foreach ($verifyList as $m=>$n){
if ($n[0]==$k){
array_splice($verifyList,$m,1,$v);
}
}
}
$receiptList[$key]['verifyList']=$verifyList;
$receiptList[$key]['staffDetail']=$staff->getOne(array('where'=>'sid='.$value['staff'],'asArray'=>true));
$receiptList[$key]['button']=$button;
$receiptList[$key]['sumCN']=$this->num_to_rmb($value['sum']);
$receiptList[$key]['loanSumCN']=$this->num_to_rmb($value['loanSum']);
}
//获取审批日志
Doo::loadModel('receiptLog');
$receiptLog=new receiptLog();
$rlList=array();
$rlInfo=$receiptLog->getOne(array('where'=>'rid='.$rid.' and status=4','asArray'=>true));
$tijdate=$receiptLog->getOne(array('where'=>'rid='.$rid.' and status=2','asc'=>'rlid','asArray'=>true));
if (!empty($rlInfo)){
$rlList=$receiptLog->find(array('where'=>'rid='.$rid,'asc'=>'rlid','asArray'=>true));
}
$receiptList[0]['rlList']=$rlList;
$data['receiptList']=$receiptList;
$data['memu']="receipt";
$data['staff']=$this->staff;
$data['receiptMemu']='approvalExpenses';
$data['verifyId']=$this->verifyId;
$data['executeId']=$this->executeId;
$this->render ( "/admin/expensesDoc", $data );
}
function expensesEdi(){
$rid=isset($this->params['rid'])?$this->params['rid']:0;
$status=isset($this->params['status'])?$this->params['status']:'';
$year=$this->get_args('year')?$this->get_args('year'):date('Y');
$month=$this->get_args('month')?$this->get_args('month'):"";
$cid=$this->get_args('cid')?$this->get_args('cid'):0;
$sid=$this->get_args('sid')?$this->get_args('sid'):0;
if (empty($status))
$status=$this->get_args('status')?$this->get_args('status'):2;
$vidList=array();
$button=0;
Doo::loadModel('verify');
Doo::loadModel('receipt');
Doo::loadModel('staff');
$staff=new staff();
$receipt=new receipt();
$verify=new verify();
Doo::loadModel('L_category');
$Lcategory=new L_category();
Doo::loadModel('enclosur');
$enclosur=new enclosur();
//user verify ID
$verifyDetail=$verify->find(array('where'=>'staff like "%\"'.$this->staff[0]['sid'].'%"','asArray'=>true));
foreach ($verifyDetail as $key=>$value){
array_push($vidList, $value['vid']);
}
$vid=implode(",", $vidList);
if(empty($verifyDetail))
$vid=0;
$categoryList=$Lcategory->find(array('asArray'=>true));
$staffList=$staff->find(array('where'=>'cid='.$cid,'asArray'=>true));
$ap="";
if($status==4){
$ap=4;$status=2;
}
//get Receipt By verifyID status 2
$receiptList=$receipt->find(array('where'=>'rid ='.$rid,'desc'=>'rid','asArray'=>true));
$Locate=0;$roleId=0;
if($ap==4)
$status=4;
foreach ($receiptList as $key=>$value){
$receiptList[$key]['Locate']=$Locate;$Locate++;
$receiptList[$key]['reviseDetail']=array();
if (!empty($value['reviseDetail']))
$receiptList[$key]['reviseDetail']=json_decode($value['reviseDetail'],true);
$receiptList[$key]['loanItem']=json_decode($value['loanItem'],true);
$categoryDetil=$Lcategory->getOne(array('where'=>'cid='.$value['cid'],'asArray'=>true));
$receiptList[$key]['category']=$categoryDetil['title'];
//检测编辑状态
$verifyList=$verify->getOne(array('where'=>'vid='.$value['verify'],'asArray'=>true));
$verifyList=json_decode($verifyList['staff'],true);//status opinion
$verifyStaff=json_decode($value['verifyStaff'],true);
Doo::loadModel('role');
$role=new role();
//print_r($verifyList);
$flag=true;$roleKey=0;$endStaffArray=array();$roleArrayCopy=array();
foreach ($verifyList as $k=>$v){
//init verifyStaff
if ($v[1]=='ROLE'){
if (!empty($verifyStaff)){
$endStaffArray=end($verifyStaff);
if ($v[0]==$endStaffArray['nextStaff']){
$roleId=$v[0];
}
}
$roleVerify=json_decode($v[3],true);
$roleKey=$k;$roleArray=array();
$rolename=$role->getOne(array('where'=>'rid='.$v[0],'asArray'=>true));
foreach ($roleVerify as $o=>$p){
$staffID=explode ('_',$p);
$staffInfo=$staff->getOne(array('where'=>'sid='.$staffID[0],'asArray'=>true));
//print_r($staffID);
$exp=array(0=>$staffInfo['sid'],1=>$staffID[1],2=>$staffInfo['avatar'],'date'=>'','date'=>'','opinion'=>'','status'=>'','rolename'=>$rolename['name']);
array_push($roleArray, $exp);
}
$roleArrayCopy[$v[0]]=$roleArray;
//$verifyList[$k]['roleArray']=$roleArray;
}
//print_r($roleArray);
$verifyList[$k]['date']="";
$verifyList[$k]['opinion']="";
$verifyList[$k]['status']="";
if (empty($verifyStaff)){
$verifyList[$k]['date']="";
$verifyList[$k]['opinion']="";
if (($verifyList[0][0]==$this->staff[0]['sid'])&&$flag){
$verifyList[$k]['status']=4;
$button=4;$flag=false;
}
}else{
foreach ($verifyStaff as $m=>$u){
if ($v[0]==$m){
$verifyList[$k]['date']=$u['date'];
$verifyList[$k]['opinion']=$u['opinion'];
$verifyList[$k]['status']=$u['status'];
$flag=false;
break;
}
}
$endStaffArray=end($verifyStaff);
if (isset($endStaffArray['ROLE'])){
}else{
$endKey=key($verifyStaff);
if ($v[0]==$endStaffArray['nextStaff']&&$endStaffArray['nextStaff']==$this->staff[0]['sid']){
$button=4;
$verifyList[$k]['status']=4;
}
}
}
}
$rolename['name']='';
if (!empty($roleId)){
Doo::loadModel('role');
$role=new role();
$rolename=$role->getOne(array('where'=>'rid='.$roleId,'asArray'=>true));
}
if (!empty($verifyStaff))
$endStaffArray=end($verifyStaff);
$KOP=false;
foreach ($roleArrayCopy as $P=>$A){
foreach ( $A as $MKI=>$AVL){
if (!empty($verifyStaff)){
//&&$rolename['rid']==$endStaffArray['nextStaff']
if ($this->staff[0]['sid']==$AVL[0]&&isset($endStaffArray['ROLE'])&&$rolename['rid']==$endStaffArray['nextStaff']){
$button=4;
$roleArrayCopy[$P][$MKI]['status']=4;
}
foreach ($verifyStaff as $m=>$u){
$AVLFK=$AVL[0].'_R';
//echo $AVLFK.'=='.$m;var_dump($AVLFK==$m);echo ' ';
if (strcmp($AVLFK,$m)==0){//&&isset($u['ROLE'])&&$u['ROLE']==1
$roleArrayCopy[$P][$MKI]['date']=$u['date'];
$roleArrayCopy[$P][$MKI]['opinion']=$u['opinion'];
$roleArrayCopy[$P][$MKI]['status']=$u['status'];
break;
}
}
}else{
if ($this->staff[0]['sid']==$AVL[0]&&$verifyList[0][1]=='ROLE'){
$button=4;
$roleArrayCopy[$P][$MKI]['status']=4;
}
}
//$roleArray[$MKI]['rolename']=$rolename['name'];
$KOP=true;
}
}
// print_r($roleArrayCopy);
// echo $roleKey;
foreach ($roleArrayCopy as $k=>$v){
foreach ($verifyList as $m=>$n){
if ($n[0]==$k){
array_splice($verifyList,$m,1,$v);
}
}
}
$receiptList[$key]['verifyList']=$verifyList;
$receiptList[$key]['staffDetail']=$staff->getOne(array('where'=>'sid='.$value['staff'],'asArray'=>true));
$receiptList[$key]['button']=$button;
$receiptList[$key]['BIGsum']=$this->num_to_rmb($value['sum']);
}
//$data['verifyDetail']=$verifyDetail;
$mothHtml="";
for($i=1;$i<=12;$i++){
if($month==$i)
$mothHtml.='';
else
$mothHtml.='';
}
//获取审批日志
Doo::loadModel('receiptLog');
$receiptLog=new receiptLog();
$rlList=array();
$rlInfo=$receiptLog->getOne(array('where'=>'rid='.$rid.' and status=4','asArray'=>true));
$tijdate=$receiptLog->getOne(array('where'=>'rid='.$rid.' and status=2','asc'=>'rlid','asArray'=>true));
if (!empty($rlInfo)){
$rlList=$receiptLog->find(array('where'=>'rid='.$rid,'asc'=>'rlid','asArray'=>true));
}
$receiptList[0]['rlList']=$rlList;
$enclosurList=$enclosur->find(array('where'=>'rid='.$rid,'asArray'=>true));
$enclosurHtml='';
foreach ($enclosurList as $value){
$enclosurHtml.=''.$value['name'].'';
}
//print_r($receiptList);
$data['rid']=$rid;
$data['enclosurHtml']=$enclosurHtml;
$data['rolename']=$rolename['name'];
$data['datetij']=$tijdate['date'];
$data['mothHtml']=$mothHtml;
$data['receiptList']=$receiptList;
$data['receiptApprovalCount']=count($receiptList);
$data['status']=$status;
$data['year']=$year;
$data['categoryList']=$categoryList;
$data['staffList']=$staffList;
$data['cid']=$cid;
$data['sid']=$sid;
$data['ap']=$ap;
$data['memu']="receipt";
$data['staff']=$this->staff;
$data['receiptMemu']='approvalExpenses';
$data['verifyId']=$this->verifyId;
$data['executeId']=$this->executeId;
$this->render ( "/admin/expensesEdi", $data );
}
function expensesDefray(){
$opinion=$this->get_args('opinion')?$this->get_args('opinion'):"";
$status=$this->get_args('status')&&is_numeric($this->get_args('status'))?$this->get_args('status'):0;
$rid=$this->get_args('rid')&&is_numeric($this->get_args('rid'))?$this->get_args('rid'):0;
$Locate=$this->get_args('Locate')&&is_numeric($this->get_args('Locate'))?$this->get_args('Locate'):0;
if(!empty($rid)){
Doo::loadModel("verify");
$verify=new verify();
Doo::loadModel("receiptDetail");
$receiptDetailObj=new receiptDetail();
Doo::loadModel("itemStatistics");
Doo::loadModel("statistics");
$statistics=new statistics();
$itemStatistics=new itemStatistics();
Doo::loadModel("receipt");
$receipt=new receipt();
Doo::loadModel("loanReceipt");
$loanReceipt=new loanReceipt();
$receiptDetail=$receipt->getOne(array('where'=>'rid='.$rid.' and status=2 ','asArray'=>true));
if (empty($receiptDetail))
return "/approval";
$verifyDetail=$verify->getOne(array('where'=>' vid ='.$receiptDetail['verify'],'asArray'=>true));
$verifyString=$verifyDetail['staff'];
$verifyDetail=json_decode($verifyDetail['staff'],true);
$verifyStaff=json_decode($receiptDetail['verifyStaff'],true);
if(empty($opinion)){
if ($status==3)
$opinion="终止";
else
$opinion="同意支付";
}
$nowStaff=0;$nowStaffList=array();
if(empty($verifyStaff)){
//还需加入是否已经进入角色审批
if ($verifyDetail[0][1]=='ROLE'){
//print_r($verifyDetail);echo "ddd";
$vStaffString=json_decode($verifyDetail[0][3]);
foreach ($vStaffString as $key=>$value){
$staffK=explode("_", $value);
if ($staffK[0]!=$this->staff[0]['sid'])
array_push($nowStaffList, $staffK[0]);
}
//print_r($verifyDetail);
//die;
$nowStaff=implode(',', $nowStaffList);
$verifyStaff=array($this->staff[0]['sid']."_R"=>array('date'=>date('Y-m-d'),'opinion'=>$opinion,'status'=>$status,'nextStaff'=>$verifyDetail[0][0],'ROLE'=>1));
}else{
if ($verifyDetail[1][1]=='ROLE'){
$vStaffString=json_decode($verifyDetail[1][3]);
//echo "dd";
foreach ($vStaffString as $key=>$value){
$staffK=explode("_", $value);
array_push($nowStaffList, $staffK[0]);
}
$nowStaff=implode(',', $nowStaffList);
$verifyStaff=array($this->staff[0]['sid']=>array('date'=>date('Y-m-d'),'opinion'=>$opinion,'status'=>$status,'nextStaff'=>$verifyDetail[1][0],'ROLE'=>1));
}else{
$nowStaff=$verifyDetail[1][0];
$verifyStaff=array($this->staff[0]['sid']=>array('date'=>date('Y-m-d'),'opinion'=>$opinion,'status'=>$status,'nextStaff'=>$verifyDetail[1][0]));
}
}
if($status==3)
$verifyStaff=array('final'=>$status,$this->staff[0]['sid']=>array('date'=>date('Y-m-d'),'opinion'=>$opinion,'status'=>$status));
$vStaffString=json_encode($verifyStaff);
$receipt->nowStaff=$nowStaff;
$receipt->verifyStaff=$vStaffString;
$loanReceipt->nowStaff=$nowStaff;
$loanReceipt->verifyStaff=$vStaffString;
}else{
$VS=end($verifyStaff);
//非角色审批
if (!array_key_exists($this->staff[0]['sid'],$verifyStaff)&&!isset($VS['ROLE'])){
$nextStaff=0;$roleSTF=false;
foreach ($verifyDetail as $key=>$value){
if ($value[0]==$this->staff[0]['sid']&&$value[1]!='ROLE'){
if (isset($verifyDetail[$key+1])){
$nextStaff=$verifyDetail[$key+1][0];
if ($verifyDetail[$key+1][1]=='ROLE')
$roleSTF=true;
}
break;
}
}
if (!$roleSTF){
$nowStaff=$nextStaff;
$verifyStaff[$this->staff[0]['sid']]=array('date'=>date('Y-m-d'),'opinion'=>$opinion,'status'=>$status,'nextStaff'=>$nextStaff);
}else{
//获取角色下的所有用户ID
$nowStaffList=array();
foreach ($verifyDetail as $vfk){
if ($vfk[1]=='ROLE'){
$vStaffString=json_decode($vfk[3]);
foreach ($vStaffString as $key=>$value){
$staffK=explode("_", $value);
array_push($nowStaffList, $staffK[0]);
}
}
}
$nowStaff=implode(',', $nowStaffList);
$verifyStaff[$this->staff[0]['sid']]=array('date'=>date('Y-m-d'),'opinion'=>$opinion,'status'=>$status,'nextStaff'=>$nextStaff,'ROLE'=>0);
}
if($status==3){
$verifyStaff['final']=$status;
$verifyStaff[$this->staff[0]['sid']]=array('date'=>date('Y-m-d'),'opinion'=>$opinion,'status'=>$status);
}
$vStaffString=json_encode($verifyStaff);
$receipt->nowStaff=$nowStaff;
$receipt->verifyStaff=$vStaffString;
$loanReceipt->nowStaff=$nowStaff;
$loanReceipt->verifyStaff=$vStaffString;
}
//角色审批
if (isset($VS['ROLE'])){
//找出角色人 当前审批角色组
$verifyJSStaff=array();$nowStaffList2=array();
foreach ($verifyDetail as $key=>$value){
if($value[1]=='ROLE'&&$value[0]==$VS['nextStaff']){
$verifyJSStaff=json_decode($value[3]);
foreach ($verifyJSStaff as $m){
$staffK=explode("_", $m);
array_push($nowStaffList2, $staffK[0]);
}
// print_r($nowStaffList2);
}
}
$RoleVerifyStaff=array();
foreach ($verifyStaff as $key=>$value){
if (isset($value['ROLE'])&&$value['ROLE']==1&&$VS['nextStaff']==$value['nextStaff']){
foreach ($nowStaffList2 as $m) {
if ($key==$m."_R")
$RoleVerifyStaff[$key]=$value;
}
}
}
$jsCount=count($verifyJSStaff)-1;//echo $jsCount;die;
if ($jsCount==count($RoleVerifyStaff)){ //或者
//下一个审批人ID
$nextStaff=0;$falg=false;
foreach ($verifyDetail as $key=>$value){
if ($value[0]==$VS['nextStaff']&&$value[1]=='ROLE'){
if (isset($verifyDetail[$key+1])&&$verifyDetail[$key+1][1]=='ROLE'){
$falg=true;
$vStaffString=json_decode($verifyDetail[$key+1][3]);$nowStaffList=array();
foreach ($vStaffString as $v){
$staffK=explode("_", $v);
array_push($nowStaffList, $staffK[0]);
}
$nowStaff=implode(',', $nowStaffList);
$nextStaff=$verifyDetail[$key+1][0];
}elseif(isset($verifyDetail[$key+1])){
$nextStaff=$verifyDetail[$key+1][0];
$nowStaff=$nextStaff;
}else
$nowStaff='';
break;
}
}
if ($falg)
$verifyStaff[$this->staff[0]['sid'].'_R']=array('date'=>date('Y-m-d'),'opinion'=>$opinion,'status'=>$status,'nextStaff'=>$nextStaff,'ROLE'=>1);
else
$verifyStaff[$this->staff[0]['sid'].'_R']=array('date'=>date('Y-m-d'),'opinion'=>$opinion,'status'=>$status,'nextStaff'=>$nextStaff);
// print_r($verifyStaff);
// echo $nowStaff;die;
}else{ //进入下一个角色或者审批人
// echo str_replace($this->staff[0]['sid'], '', $receiptDetail['nowStaff']);
//
$nowStaff=str_replace($this->staff[0]['sid'], '', $receiptDetail['nowStaff']);
$verifyStaff[$this->staff[0]['sid'].'_R']=array('date'=>date('Y-m-d'),'opinion'=>$opinion,'status'=>$status,'nextStaff'=>$VS['nextStaff'],'ROLE'=>1);
// print_r($verifyStaff);
// die;
}
if($status==3){
$verifyStaff['final']=$status;
$verifyStaff[$this->staff[0]['sid']]=array('date'=>date('Y-m-d'),'opinion'=>$opinion,'status'=>$status);
}
$vStaffString=json_encode($verifyStaff);
$receipt->verifyStaff=$vStaffString;
$receipt->nowStaff=$nowStaff;
$loanReceipt->nowStaff=$nowStaff;
$loanReceipt->verifyStaff=$vStaffString;
//die;
//}
// print_r($verifyStaff);
// die;
}
//print_r($verifyStaff);die;
}
//print_r($verifyDetail);
$roleKey=0;$roleId=0;$verifyDetailCopy=array();
foreach ($verifyDetail as $k=>$v){
if ($v[1]=='ROLE'){
$roleId=$v[0];
$roleVerify=json_decode($v[3],true);
$roleKey=$k;$roleArray=array();
foreach ($roleVerify as $o=>$p){
$staffID=explode ('_',$p);
$exp=array(0=>$staffID[0],1=>$staffID[1]);
array_push($roleArray, $exp);
}
$verifyDetailCopy[$v[0]]=$roleArray;
}
}
//print_r($verifyDetail);
foreach ($verifyDetailCopy as $k=>$v){
foreach ($verifyDetail as $m=>$n){
if ($n[0]==$k){
array_splice($verifyDetail,$m,1,$v);
}
}
}
//审批日志
if (!isset($verifyStaff['final'])){
Doo::loadModel("receiptLog");
$receiptLog=new receiptLog();
if (!empty($roleId)){
Doo::loadModel("role");
$role=new role();
$roleInfo=$role->getOne(array('where'=>'rid='.$roleId,'asArray'=>true));
$receiptLog->rolename=$roleInfo['name'];
}
$receiptLog->username=$this->staff[0]['username'];
$receiptLog->uid=$this->staff[0]['sid'];
$receiptLog->date=date("Y-m-d");
$receiptLog->opinion=$opinion;
$receiptLog->img=$this->staff[0]['avatar'];
$receiptLog->status=1;
$receiptLog->rid=$rid;
$receiptLog->insert();
}
if (isset($verifyStaff['final'])){//rDetail
$receipt->status=3;
$receipt->verifyBreakup=$verifyString;
$receiptDetailObj->status=3;
$receiptDetailObj->update(array('where'=>'rid='.$rid));
}elseif(count($verifyStaff)==count($verifyDetail)){//要修改 角色的数量
$receipt->status=6;
$receipt->pastDate=date("Y-m-d");
$receipt->isBK=1;
$loanReceipt->verifyBreakup=$verifyString;
$loanReceipt->status=1;
$loanReceipt->pastDate=date("Y-m-d");
$loanReceipt->update(array('where'=>' rid = '.$receiptDetail['loanRid']));
}
$receipt->update(array('where'=>' rid = '.$rid));
return "/approvalExpenses/2";
}
}
function implement(){
Doo::loadModel('receipt');
$receipt=new receipt();
Doo::loadModel('L_category');
$Lcategory=new L_category();
Doo::loadModel('verify');
$verify=new verify();
Doo::loadModel('staff');
$staff=new staff();
Doo::loadModel("execute");
$execute=new execute();
$receiptList=$receipt->find(array('where'=>'executeCopy like \'%["'.$this->staff[0]['sid'].'%\' and (status=1 or status=6)','desc'=>'rid','asArray'=>true));
Doo::loadModel('loanReceipt');
$loanReceipt=new loanReceipt();
//print_r($receiptList);
$loanList=array();
if (!isset($receiptList))
$loanList=$loanReceipt->find(array('where'=>'rid='.$receiptList[0]['loanRid'],'desc'=>'rid','asArray'=>true));
$Locate=0;$roleId=0;$button=0;
foreach ($loanList as $key=>$value){
$loanList[$key]['Locate']=$Locate;$Locate++;
$loanList[$key]['reviseDetail']=array();
if (!empty($value['reviseDetail']))
$loanList[$key]['reviseDetail']=json_decode($value['reviseDetail'],true);
$loanList[$key]['accountItem']=json_decode($value['accountItem'],true);
$loanList[$key]['loanItem']=json_decode($value['loanItem'],true);
$categoryDetil=$Lcategory->getOne(array('where'=>'cid='.$value['cid'],'asArray'=>true));
$loanList[$key]['category']=$categoryDetil['title'];
//检测编辑状态
$verifyList=$verify->getOne(array('where'=>'vid='.$value['verify'],'asArray'=>true));
$verifyList=json_decode($verifyList['staff'],true);//status opinion
$verifyStaff=json_decode($value['verifyStaff'],true);
Doo::loadModel('role');
$role=new role();
$flag=true;$roleKey=0;$endStaffArray=array();$roleArrayCopy=array();
foreach ($verifyList as $k=>$v){
//init verifyStaff
if ($v[1]=='ROLE'){
if (!empty($verifyStaff)){
$endStaffArray=end($verifyStaff);
// if ($v[0]==$endStaffArray['nextStaff']){
// $roleId=$v[0];
// }
}
$roleVerify=json_decode($v[3],true);
$roleKey=$k;$roleArray=array();
$rolename=$role->getOne(array('where'=>'rid='.$v[0],'asArray'=>true));
foreach ($roleVerify as $o=>$p){
$staffID=explode ('_',$p);
$staffInfo=$staff->getOne(array('where'=>'sid='.$staffID[0],'asArray'=>true));
//print_r($staffID);
$exp=array(0=>$staffInfo['sid'],1=>$staffID[1],2=>$staffInfo['avatar'],'date'=>'','date'=>'','opinion'=>'','status'=>'','rolename'=>$rolename['name']);
array_push($roleArray, $exp);
}
$roleArrayCopy[$v[0]]=$roleArray;
//$verifyList[$k]['roleArray']=$roleArray;
}
$verifyList[$k]['date']="";
$verifyList[$k]['opinion']="";
$verifyList[$k]['status']="";
if (empty($verifyStaff)){
$verifyList[$k]['date']="";
$verifyList[$k]['opinion']="";
if (($verifyList[0][0]==$this->staff[0]['sid'])&&$flag){
$verifyList[$k]['status']=4;
$flag=false;
}
}else{
foreach ($verifyStaff as $m=>$u){
if ($v[0]==$m){
$verifyList[$k]['date']=$u['date'];
$verifyList[$k]['opinion']=$u['opinion'];
$verifyList[$k]['status']=$u['status'];
$flag=false;
break;
}
}
$endStaffArray=end($verifyStaff);
if (isset($endStaffArray['ROLE'])){
}else{
// $endKey=key($verifyStaff);
// if ($v[0]==$endStaffArray['nextStaff']&&$endStaffArray['nextStaff']==$this->staff[0]['sid']){
// $button=4;
// $verifyList[$k]['status']=4;
// }
}
}
}
$rolename['name']='';
if (!empty($roleId)){
Doo::loadModel('role');
$role=new role();
$rolename=$role->getOne(array('where'=>'rid='.$roleId,'asArray'=>true));
}
if (!empty($verifyStaff))
$endStaffArray=end($verifyStaff);
$KOP=false;
foreach ($roleArrayCopy as $P=>$A){
foreach ( $A as $MKI=>$AVL){
if (!empty($verifyStaff)){
//&&$rolename['rid']==$endStaffArray['nextStaff']
if ($this->staff[0]['sid']==$AVL[0]&&isset($endStaffArray['ROLE'])&&$rolename['rid']==$endStaffArray['nextStaff']){
$button=4;
$roleArrayCopy[$P][$MKI]['status']=4;
}
foreach ($verifyStaff as $m=>$u){
$AVLFK=$AVL[0].'_R';
//echo $AVLFK.'=='.$m;var_dump($AVLFK==$m);echo ' ';
if (strcmp($AVLFK,$m)==0){//&&isset($u['ROLE'])&&$u['ROLE']==1
$roleArrayCopy[$P][$MKI]['date']=$u['date'];
$roleArrayCopy[$P][$MKI]['opinion']=$u['opinion'];
$roleArrayCopy[$P][$MKI]['status']=$u['status'];
break;
}
}
}else{
if ($this->staff[0]['sid']==$AVL[0]&&$verifyList[0][1]=='ROLE'){
$button=4;
$roleArrayCopy[$P][$MKI]['status']=4;
}
}
//$roleArray[$MKI]['rolename']=$rolename['name'];
$KOP=true;
}
}
foreach ($roleArrayCopy as $k=>$v){
foreach ($verifyList as $m=>$n){
if ($n[0]==$k){
array_splice($verifyList,$m,1,$v);
}
}
}
$loanList[$key]['verifyList']=$verifyList;
$loanList[$key]['staffDetail']=$staff->getOne(array('where'=>'sid='.$value['staff'],'asArray'=>true));
}
$data['loanList']=$loanList;
$Locate=0;$roleId=0;$button=0;
foreach ($receiptList as $key=>$value){
$button2=0;
$receiptList[$key]['Locate']=$Locate;$Locate++;
$receiptList[$key]['reviseDetail']=array();
if (!empty($value['reviseDetail']))
$receiptList[$key]['reviseDetail']=json_decode($value['reviseDetail'],true);
$receiptList[$key]['accountItem']=json_decode($value['accountItem'],true);
$receiptList[$key]['loanItem']=json_decode($value['loanItem'],true);
$categoryDetil=$Lcategory->getOne(array('where'=>'cid='.$value['cid'],'asArray'=>true));
$receiptList[$key]['category']=$categoryDetil['title'];
$executeList=json_decode($value['executeCopy'],true);
$executeStaff=array();
if (!empty($value['executeStaff'] ))
$executeStaff=json_decode($value['executeStaff'],true);
if (isset($executeList)){
foreach ($executeList as $op=>$lo){
$executeList[$op]['date']="";
$executeList[$op]['opinion']="";
$executeList[$op]['status']="";
foreach ($executeStaff as $m=>$u){
if ($lo[0]==$m){
$executeList[$op]['date']=$u['date'];
$executeList[$op]['opinion']=$u['opinion'];
$executeList[$op]['status']=$u['status'];
break;
}
}
if ($this->staff[0]['sid']==$lo[0]&&empty($executeList[$op]['status'])){
$button2=1;
$executeList[$op]['status']=4;
}
}
}
//检测编辑状态
$verifyList=$verify->getOne(array('where'=>'vid='.$value['verify'],'asArray'=>true));
$verifyList=json_decode($verifyList['staff'],true);//status opinion
$verifyStaff=json_decode($value['verifyStaff'],true);
Doo::loadModel('role');
$role=new role();
$flag=true;$roleKey=0;$endStaffArray=array();$roleArrayCopy=array();
foreach ($verifyList as $k=>$v){
//init verifyStaff
if ($v[1]=='ROLE'){
if (!empty($verifyStaff)){
$endStaffArray=end($verifyStaff);
// if ($v[0]==$endStaffArray['nextStaff']){
// $roleId=$v[0];
// }
}
$roleVerify=json_decode($v[3],true);
$roleKey=$k;$roleArray=array();
$rolename=$role->getOne(array('where'=>'rid='.$v[0],'asArray'=>true));
foreach ($roleVerify as $o=>$p){
$staffID=explode ('_',$p);
$staffInfo=$staff->getOne(array('where'=>'sid='.$staffID[0],'asArray'=>true));
//print_r($staffID);
$exp=array(0=>$staffInfo['sid'],1=>$staffID[1],2=>$staffInfo['avatar'],'date'=>'','date'=>'','opinion'=>'','status'=>'','rolename'=>$rolename['name']);
array_push($roleArray, $exp);
}
$roleArrayCopy[$v[0]]=$roleArray;
//$verifyList[$k]['roleArray']=$roleArray;
}
$verifyList[$k]['date']="";
$verifyList[$k]['opinion']="";
$verifyList[$k]['status']="";
if (empty($verifyStaff)){
$verifyList[$k]['date']="";
$verifyList[$k]['opinion']="";
if (($verifyList[0][0]==$this->staff[0]['sid'])&&$flag){
$verifyList[$k]['status']=4;
$flag=false;
}
}else{
foreach ($verifyStaff as $m=>$u){
if ($v[0]==$m){
$verifyList[$k]['date']=$u['date'];
$verifyList[$k]['opinion']=$u['opinion'];
$verifyList[$k]['status']=$u['status'];
$flag=false;
break;
}
}
$endStaffArray=end($verifyStaff);
if (isset($endStaffArray['ROLE'])){
}else{
}
}
}
$rolename['name']='';
if (!empty($roleId)){
Doo::loadModel('role');
$role=new role();
$rolename=$role->getOne(array('where'=>'rid='.$roleId,'asArray'=>true));
}
if (!empty($verifyStaff))
$endStaffArray=end($verifyStaff);
$KOP=false;
foreach ($roleArrayCopy as $P=>$A){
foreach ( $A as $MKI=>$AVL){
if (!empty($verifyStaff)){
//&&$rolename['rid']==$endStaffArray['nextStaff']
if ($this->staff[0]['sid']==$AVL[0]&&isset($endStaffArray['ROLE'])&&$rolename['rid']==$endStaffArray['nextStaff']){
$button=4;
$roleArrayCopy[$P][$MKI]['status']=4;
}
foreach ($verifyStaff as $m=>$u){
$AVLFK=$AVL[0].'_R';
//echo $AVLFK.'=='.$m;var_dump($AVLFK==$m);echo ' ';
if (strcmp($AVLFK,$m)==0){//&&isset($u['ROLE'])&&$u['ROLE']==1
$roleArrayCopy[$P][$MKI]['date']=$u['date'];
$roleArrayCopy[$P][$MKI]['opinion']=$u['opinion'];
$roleArrayCopy[$P][$MKI]['status']=$u['status'];
break;
}
}
}else{
if ($this->staff[0]['sid']==$AVL[0]&&$verifyList[0][1]=='ROLE'){
$button=4;
$roleArrayCopy[$P][$MKI]['status']=4;
}
}
//$roleArray[$MKI]['rolename']=$rolename['name'];
$KOP=true;
}
}
foreach ($roleArrayCopy as $k=>$v){
foreach ($verifyList as $m=>$n){
if ($n[0]==$k){
array_splice($verifyList,$m,1,$v);
}
}
}
$receiptList[$key]['executeList']=$executeList;
$receiptList[$key]['verifyList']=$verifyList;
$receiptList[$key]['staffDetail']=$staff->getOne(array('where'=>'sid='.$value['staff'],'asArray'=>true));
$receiptList[$key]['button2']=$button2;
$receiptList[$key]['sumCN']=$this->num_to_rmb($value['sum']);
$receiptList[$key]['loanSumCN']=$this->num_to_rmb($value['loanSum']);
$relust=$value['sum']-$value['loanSum'];
$receiptList[$key]['relust']=$relust;
$receiptList[$key]['relustCN']=$this->num_to_rmb($relust);
}
//print_r($receiptList[$key]['executeList']);
$data['receiptList']=$receiptList;
$data['memu']="receipt";
$data['staff']=$this->staff;
$data['receiptMemu']='implement';
$data['verifyId']=$this->verifyId;
$data['executeId']=$this->executeId;
$this->render ( "/admin/implement", $data );
}
function implementDo(){
$rid=$this->get_args('rid')&&is_numeric($this->get_args('rid'))?$this->get_args('rid'):0;
$implementOpinions=$this->get_args('opinion')?$this->get_args('opinion'):"";
if (!empty($rid)){
Doo::loadModel('receipt');
$receipt=new receipt();
$rinfo=$receipt->getOne(array('where'=>'rid='.$rid,'asArray'=>true));
$executeCopy=json_decode($rinfo['executeCopy'],true);
$executeStaff=json_decode($rinfo['executeStaff'],true);
if(empty($executeStaff)){
$executeStaff=array($this->staff[0]['sid']=>array('date'=>date('Y-m-d'),'opinion'=>$implementOpinions,'status'=>1));
}else{
$executeStaff[$this->staff[0]['sid']]=array('date'=>date('Y-m-d'),'opinion'=>$implementOpinions,'status'=>1);
}
if (count($executeStaff)==count($executeCopy)){
$receipt->executeStaff=json_encode($executeStaff);
$receipt->status=8;
if ($rinfo['Rtype']==1&&$rinfo['isBK']==1&&$rinfo['status']==1)
$receipt->status=9;
$receipt->executeDate= date("Y-m-d");
}else{
$receipt->executeStaff=json_encode($executeStaff);
}
$receipt->update(array('where'=>'rid='.$rid));
}
return "/implement";
}
function receiptburEdi(){
$rid=isset($this->params['rid'])?$this->params['rid']:0;
$status=isset($this->params['status'])?$this->params['status']:'';
$year=$this->get_args('year')?$this->get_args('year'):date('Y');
$month=$this->get_args('month')?$this->get_args('month'):"";
$cid=$this->get_args('cid')?$this->get_args('cid'):0;
$sid=$this->get_args('sid')?$this->get_args('sid'):0;
if (empty($status))
$status=$this->get_args('status')?$this->get_args('status'):2;
$vidList=array();
$button=0;
Doo::loadModel('verify');
Doo::loadModel('receipt');
Doo::loadModel('staff');
$staff=new staff();
$receipt=new receipt();
$verify=new verify();
Doo::loadModel('L_category');
$Lcategory=new L_category();
Doo::loadModel('enclosur');
$enclosur=new enclosur();
Doo::loadModel('loanReceipt');
$loanReceipt=new loanReceipt();
//user verify ID
$verifyDetail=$verify->find(array('where'=>'staff like "%\"'.$this->staff[0]['sid'].'%"','asArray'=>true));
foreach ($verifyDetail as $key=>$value){
array_push($vidList, $value['vid']);
}
$vid=implode(",", $vidList);
if(empty($verifyDetail))
$vid=0;
$categoryList=$Lcategory->find(array('asArray'=>true));
$staffList=$staff->find(array('where'=>'cid='.$cid,'asArray'=>true));
$ap="";
if($status==4){
$ap=4;$status=2;
}
//get Receipt By verifyID status 2
$receiptList=$receipt->find(array('where'=>'rid ='.$rid,'desc'=>'rid','asArray'=>true));
$loanList=$loanReceipt->find(array('where'=>'rid='.$receiptList[0]['loanRid'],'desc'=>'rid','asArray'=>true));
$Locate=0;$roleId=0;$button=0;
foreach ($loanList as $key=>$value){
$loanList[$key]['Locate']=$Locate;$Locate++;
$loanList[$key]['reviseDetail']=array();
if (!empty($value['reviseDetail']))
$loanList[$key]['reviseDetail']=json_decode($value['reviseDetail'],true);
$loanList[$key]['accountItem']=json_decode($value['accountItem'],true);
$loanList[$key]['loanItem']=json_decode($value['loanItem'],true);
$categoryDetil=$Lcategory->getOne(array('where'=>'cid='.$value['cid'],'asArray'=>true));
$loanList[$key]['category']=$categoryDetil['title'];
//检测编辑状态
$verifyList=$verify->getOne(array('where'=>'vid='.$value['verify'],'asArray'=>true));
$verifyList=json_decode($verifyList['staff'],true);//status opinion
$verifyStaff=json_decode($value['verifyStaff'],true);
Doo::loadModel('role');
$role=new role();
$flag=true;$roleKey=0;$endStaffArray=array();$roleArrayCopy=array();
foreach ($verifyList as $k=>$v){
//init verifyStaff
if ($v[1]=='ROLE'){
if (!empty($verifyStaff)){
$endStaffArray=end($verifyStaff);
}
$roleVerify=json_decode($v[3],true);
$roleKey=$k;$roleArray=array();
$rolename=$role->getOne(array('where'=>'rid='.$v[0],'asArray'=>true));
foreach ($roleVerify as $o=>$p){
$staffID=explode ('_',$p);
$staffInfo=$staff->getOne(array('where'=>'sid='.$staffID[0],'asArray'=>true));
//print_r($staffID);
$exp=array(0=>$staffInfo['sid'],1=>$staffID[1],2=>$staffInfo['avatar'],'date'=>'','date'=>'','opinion'=>'','status'=>'','rolename'=>$rolename['name']);
array_push($roleArray, $exp);
}
$roleArrayCopy[$v[0]]=$roleArray;
//$verifyList[$k]['roleArray']=$roleArray;
}
$verifyList[$k]['date']="";
$verifyList[$k]['opinion']="";
$verifyList[$k]['status']="";
if (empty($verifyStaff)){
$verifyList[$k]['date']="";
$verifyList[$k]['opinion']="";
if (($verifyList[0][0]==$this->staff[0]['sid'])&&$flag){
$verifyList[$k]['status']=4;
$flag=false;
}
}else{
foreach ($verifyStaff as $m=>$u){
if ($v[0]==$m){
$verifyList[$k]['date']=$u['date'];
$verifyList[$k]['opinion']=$u['opinion'];
$verifyList[$k]['status']=$u['status'];
$flag=false;
break;
}
}
$endStaffArray=end($verifyStaff);
if (isset($endStaffArray['ROLE'])){
}else{
}
}
}
$rolename['name']='';
if (!empty($roleId)){
Doo::loadModel('role');
$role=new role();
$rolename=$role->getOne(array('where'=>'rid='.$roleId,'asArray'=>true));
}
if (!empty($verifyStaff))
$endStaffArray=end($verifyStaff);
$KOP=false;
foreach ($roleArrayCopy as $P=>$A){
foreach ( $A as $MKI=>$AVL){
if (!empty($verifyStaff)){
//&&$rolename['rid']==$endStaffArray['nextStaff']
if ($this->staff[0]['sid']==$AVL[0]&&isset($endStaffArray['ROLE'])&&$rolename['rid']==$endStaffArray['nextStaff']){
$button=4;
$roleArrayCopy[$P][$MKI]['status']=4;
}
foreach ($verifyStaff as $m=>$u){
$AVLFK=$AVL[0].'_R';
//echo $AVLFK.'=='.$m;var_dump($AVLFK==$m);echo ' ';
if (strcmp($AVLFK,$m)==0){//&&isset($u['ROLE'])&&$u['ROLE']==1
$roleArrayCopy[$P][$MKI]['date']=$u['date'];
$roleArrayCopy[$P][$MKI]['opinion']=$u['opinion'];
$roleArrayCopy[$P][$MKI]['status']=$u['status'];
break;
}
}
}else{
if ($this->staff[0]['sid']==$AVL[0]&&$verifyList[0][1]=='ROLE'){
$button=4;
$roleArrayCopy[$P][$MKI]['status']=4;
}
}
//$roleArray[$MKI]['rolename']=$rolename['name'];
$KOP=true;
}
}
foreach ($roleArrayCopy as $k=>$v){
foreach ($verifyList as $m=>$n){
if ($n[0]==$k){
array_splice($verifyList,$m,1,$v);
}
}
}
$loanList[$key]['verifyList']=$verifyList;
}
$htmlLoan='';
if (isset($loanList[0])){
foreach ($loanList[0]['verifyList'] as $key=>$value){
if ($value['status']==1)
$htmlLoan.='
';
elseif ($value['status']==3)
$htmlLoan.='
';
$htmlLoan.='
';
$htmlLoan.='
'.$value['1'].''.$value['date'].'';
if (isset($value['rolename']))
$htmlLoan.=$value['rolename'];
$htmlLoan.='
'.$value['opinion'].'
';
}
$data['loanDate']=$loanList[0]['date'];
}
$data['htmlLoan']=$htmlLoan;
//print_r($loanList);
$Locate=0;$roleId=0;$button=0;
if($ap==4)
$status=4;
foreach ($receiptList as $key=>$value){
$receiptList[$key]['Locate']=$Locate;$Locate++;
$receiptList[$key]['reviseDetail']=array();
if (!empty($value['reviseDetail']))
$receiptList[$key]['reviseDetail']=json_decode($value['reviseDetail'],true);
$receiptList[$key]['accountItem']=json_decode($value['accountItem'],true);
$receiptList[$key]['loanItem']=json_decode($value['loanItem'],true);
$categoryDetil=$Lcategory->getOne(array('where'=>'cid='.$value['cid'],'asArray'=>true));
$receiptList[$key]['category']=$categoryDetil['title'];
//检测编辑状态
$verifyList=$verify->getOne(array('where'=>'vid='.$value['verify'],'asArray'=>true));
$verifyList=json_decode($verifyList['staff'],true);//status opinion
$verifyStaff=json_decode($value['verifyStaff'],true);
Doo::loadModel('role');
$role=new role();
//print_r($verifyList);
$flag=true;$roleKey=0;$endStaffArray=array();$roleArrayCopy=array();
foreach ($verifyList as $k=>$v){
//init verifyStaff
if ($v[1]=='ROLE'){
if (!empty($verifyStaff)){
$endStaffArray=end($verifyStaff);
if ($v[0]==$endStaffArray['nextStaff']){
$roleId=$v[0];
}
}
$roleVerify=json_decode($v[3],true);
$roleKey=$k;$roleArray=array();
$rolename=$role->getOne(array('where'=>'rid='.$v[0],'asArray'=>true));
foreach ($roleVerify as $o=>$p){
$staffID=explode ('_',$p);
$staffInfo=$staff->getOne(array('where'=>'sid='.$staffID[0],'asArray'=>true));
//print_r($staffID);
$exp=array(0=>$staffInfo['sid'],1=>$staffID[1],2=>$staffInfo['avatar'],'date'=>'','date'=>'','opinion'=>'','status'=>'','rolename'=>$rolename['name']);
array_push($roleArray, $exp);
}
$roleArrayCopy[$v[0]]=$roleArray;
//$verifyList[$k]['roleArray']=$roleArray;
}
//print_r($roleArray);
$verifyList[$k]['date']="";
$verifyList[$k]['opinion']="";
$verifyList[$k]['status']="";
if (empty($verifyStaff)){
$verifyList[$k]['date']="";
$verifyList[$k]['opinion']="";
if (($verifyList[0][0]==$this->staff[0]['sid'])&&$flag){
$verifyList[$k]['status']=4;
$button=4;$flag=false;
}
}else{
foreach ($verifyStaff as $m=>$u){
if ($v[0]==$m){
$verifyList[$k]['date']=$u['date'];
$verifyList[$k]['opinion']=$u['opinion'];
$verifyList[$k]['status']=$u['status'];
$flag=false;
break;
}
}
$endStaffArray=end($verifyStaff);
if (isset($endStaffArray['ROLE'])){
}else{
$endKey=key($verifyStaff);
if ($v[0]==$endStaffArray['nextStaff']&&$endStaffArray['nextStaff']==$this->staff[0]['sid']){
$button=4;
$verifyList[$k]['status']=4;
}
}
}
}
$rolename['name']='';
if (!empty($roleId)){
Doo::loadModel('role');
$role=new role();
$rolename=$role->getOne(array('where'=>'rid='.$roleId,'asArray'=>true));
}
if (!empty($verifyStaff))
$endStaffArray=end($verifyStaff);
$KOP=false;
foreach ($roleArrayCopy as $P=>$A){
foreach ( $A as $MKI=>$AVL){
if (!empty($verifyStaff)){
//&&$rolename['rid']==$endStaffArray['nextStaff']
if ($this->staff[0]['sid']==$AVL[0]&&isset($endStaffArray['ROLE'])&&$rolename['rid']==$endStaffArray['nextStaff']){
$button=4;
$roleArrayCopy[$P][$MKI]['status']=4;
}
foreach ($verifyStaff as $m=>$u){
$AVLFK=$AVL[0].'_R';
//echo $AVLFK.'=='.$m;var_dump($AVLFK==$m);echo ' ';
if (strcmp($AVLFK,$m)==0){//&&isset($u['ROLE'])&&$u['ROLE']==1
$roleArrayCopy[$P][$MKI]['date']=$u['date'];
$roleArrayCopy[$P][$MKI]['opinion']=$u['opinion'];
$roleArrayCopy[$P][$MKI]['status']=$u['status'];
break;
}
}
}else{
if ($this->staff[0]['sid']==$AVL[0]&&$verifyList[0][1]=='ROLE'){
$button=4;
$roleArrayCopy[$P][$MKI]['status']=4;
}
}
//$roleArray[$MKI]['rolename']=$rolename['name'];
$KOP=true;
}
}
foreach ($roleArrayCopy as $k=>$v){
foreach ($verifyList as $m=>$n){
if ($n[0]==$k){
array_splice($verifyList,$m,1,$v);
}
}
}
//print_r($verifyList);
$receiptList[$key]['verifyList']=$verifyList;
$receiptList[$key]['staffDetail']=$staff->getOne(array('where'=>'sid='.$value['staff'],'asArray'=>true));
$receiptList[$key]['button']=$button;
$receiptList[$key]['loanSumCN']=$this->num_to_rmb($value['loanSum']);
$receiptList[$key]['sumCN']=$this->num_to_rmb($value['sum']);
$relust=$value['sum']-$value['loanSum'];
$receiptList[$key]['relust']=$relust;
$receiptList[$key]['relustCN']=$this->num_to_rmb($relust);
}
//print_r($receiptList);die;
//$data['verifyDetail']=$verifyDetail;
$mothHtml="";
for($i=1;$i<=12;$i++){
if($month==$i)
$mothHtml.='';
else
$mothHtml.='';
}
//获取审批日志
Doo::loadModel('receiptLog');
$receiptLog=new receiptLog();
$rlList=array();
$rlInfo=$receiptLog->getOne(array('where'=>'rid='.$rid.' and status=4','asArray'=>true));
$tijdate=$receiptLog->getOne(array('where'=>'rid='.$rid.' and status=2','asc'=>'rlid','asArray'=>true));
if (!empty($rlInfo)){
$rlList=$receiptLog->find(array('where'=>'rid='.$rid,'asc'=>'rlid','asArray'=>true));
}
//echo $rid;
//print_r($receiptList);
$receiptList[0]['rlList']=$rlList;
$enclosurList=$enclosur->find(array('where'=>'rid='.$rid,'asArray'=>true));
$enclosurHtml='';
foreach ($enclosurList as $value){
$enclosurHtml.=''.$value['name'].'';
}
$data['enclosurHtml']=$enclosurHtml;
$data['rolename']=$rolename['name'];
// $data['datetij']=$tijdate['date'];
$data['mothHtml']=$mothHtml;
//print_r($receiptList);
$data['rid']=$rid;
$data['tijdate']=$tijdate['date'];
$data['receiptList']=$receiptList;
$data['receiptApprovalCount']=count($receiptList);
$data['status']=$status;
$data['year']=$year;
$data['categoryList']=$categoryList;
$data['staffList']=$staffList;
$data['cid']=$cid;
$data['sid']=$sid;
$data['ap']=$ap;
$data['memu']="receipt";
$data['staff']=$this->staff;
$data['receiptMemu']='approvalExpenses';
$data['verifyId']=$this->verifyId;
$data['executeId']=$this->executeId;
$this->render ( "/admin/receiptburEdi", $data );
}
function hisImplement(){
$item=isset($this->params['item'])?$this->params['item']:"";
if(empty($item))
$item=$this->get_args('item')?$this->get_args('item'):"";
$year=$this->get_args('year')?$this->get_args('year'):date("Y");
$moth=$this->get_args('moth')?$this->get_args('moth'):date("m");
$day=$this->get_args('day')?$this->get_args('day'):date("d");
$sop=$this->get_args('sop')?$this->get_args('sop'):'SOP';
Doo::loadModel('receipt');
$receipt=new receipt();
Doo::loadModel('L_category');
$Lcategory=new L_category();
Doo::loadModel('verify');
Doo::loadModel('statistics');
$statistics=new statistics();
$verify=new verify();
Doo::loadModel('staff');
$staff=new staff();
$condition="";
if($item=="expenses")
$condition=" and Rtype=1 ";
elseif ($item=="receipts")
$condition=" and Rtype=0 ";
elseif ($item=="remits")
$condition=" and Rtype=2 ";
$sopString="";
$dateCondition=" and Year(executeDate) =".$year;
if($moth!='MONTH'){
$dateCondition=" and Year(executeDate) =".$year." and Month(executeDate) = ".$moth;
}
if($day!='DAY')
$dateCondition=" and Year(executeDate) =".$year." and Month(executeDate) = ".$moth." and day(executeDate)=".$day;
if ($sop!='SOP')
$sopString=" and staff=".$sop;
$noPassSum=$receipt->receiptByYear($year,$this->staff[0]['sid']);
$receiptList=$receipt->find(array('where'=>' (status=8 or status=9 )'.$condition.$dateCondition.$sopString,'desc'=>'rid','asArray'=>true));
//员工筛选
$receiptList2=$receipt->find(array('where'=>' (status=8 or status=9 )'.$condition.$dateCondition,'desc'=>'rid','asArray'=>true));
$sopStaff=array();
foreach ($receiptList2 as $key=>$value){
$staffDetail=$staff->getOne(array('where'=>'sid='.$value['staff'],'asArray'=>true));
$sopStaff[$value['staff']]=$staffDetail['username'];
}
$Locate=0;$roleId=0;$button=0;
foreach ($receiptList as $key=>$value){
$receiptList[$key]['Locate']=$Locate;$Locate++;
$receiptList[$key]['reviseDetail']=array();
if (!empty($value['reviseDetail']))
$receiptList[$key]['reviseDetail']=json_decode($value['reviseDetail'],true);
$receiptList[$key]['accountItem']=json_decode($value['accountItem'],true);
$categoryDetil=$Lcategory->getOne(array('where'=>'cid='.$value['cid'],'asArray'=>true));
$receiptList[$key]['category']=$categoryDetil['title'];
//检测编辑状态
$verifyList=$verify->getOne(array('where'=>'vid='.$value['verify'],'asArray'=>true));
$verifyList=json_decode($verifyList['staff'],true);//status opinion
$verifyStaff=json_decode($value['verifyStaff'],true);
Doo::loadModel('role');
$role=new role();
$flag=true;$roleKey=0;$endStaffArray=array();$roleArrayCopy=array();
foreach ($verifyList as $k=>$v){
//init verifyStaff
if ($v[1]=='ROLE'){
if (!empty($verifyStaff)){
$endStaffArray=end($verifyStaff);
}
$roleVerify=json_decode($v[3],true);
$roleKey=$k;$roleArray=array();
$rolename=$role->getOne(array('where'=>'rid='.$v[0],'asArray'=>true));
foreach ($roleVerify as $o=>$p){
$staffID=explode ('_',$p);
$staffInfo=$staff->getOne(array('where'=>'sid='.$staffID[0],'asArray'=>true));
$exp=array(0=>$staffInfo['sid'],1=>$staffID[1],2=>$staffInfo['avatar'],'date'=>'','date'=>'','opinion'=>'','status'=>'','rolename'=>$rolename['name']);
array_push($roleArray, $exp);
}
$roleArrayCopy[$v[0]]=$roleArray;
}
$verifyList[$k]['date']="";
$verifyList[$k]['opinion']="";
$verifyList[$k]['status']="";
if (empty($verifyStaff)){
$verifyList[$k]['date']="";
$verifyList[$k]['opinion']="";
if (($verifyList[0][0]==$this->staff[0]['sid'])&&$flag){
$verifyList[$k]['status']=4;
$flag=false;
}
}else{
foreach ($verifyStaff as $m=>$u){
if ($v[0]==$m){
$verifyList[$k]['date']=$u['date'];
$verifyList[$k]['opinion']=$u['opinion'];
$verifyList[$k]['status']=$u['status'];
$flag=false;
break;
}
}
$endStaffArray=end($verifyStaff);
}
}
$rolename['name']='';
if (!empty($roleId)){
Doo::loadModel('role');
$role=new role();
$rolename=$role->getOne(array('where'=>'rid='.$roleId,'asArray'=>true));
}
if (!empty($verifyStaff))
$endStaffArray=end($verifyStaff);
$KOP=false;
foreach ($roleArrayCopy as $P=>$A){
foreach ( $A as $MKI=>$AVL){
if (!empty($verifyStaff)){
//&&$rolename['rid']==$endStaffArray['nextStaff']
if ($this->staff[0]['sid']==$AVL[0]&&isset($endStaffArray['ROLE'])&&$rolename['rid']==$endStaffArray['nextStaff']){
$button=4;
$roleArrayCopy[$P][$MKI]['status']=4;
}
foreach ($verifyStaff as $m=>$u){
$AVLFK=$AVL[0].'_R';
//echo $AVLFK.'=='.$m;var_dump($AVLFK==$m);echo ' ';
if (strcmp($AVLFK,$m)==0){//&&isset($u['ROLE'])&&$u['ROLE']==1
$roleArrayCopy[$P][$MKI]['date']=$u['date'];
$roleArrayCopy[$P][$MKI]['opinion']=$u['opinion'];
$roleArrayCopy[$P][$MKI]['status']=$u['status'];
break;
}
}
}else{
if ($this->staff[0]['sid']==$AVL[0]&&$verifyList[0][1]=='ROLE'){
$button=4;
$roleArrayCopy[$P][$MKI]['status']=4;
}
}
//$roleArray[$MKI]['rolename']=$rolename['name'];
$KOP=true;
}
}
foreach ($roleArrayCopy as $k=>$v){
foreach ($verifyList as $m=>$n){
if ($n[0]==$k){
array_splice($verifyList,$m,1,$v);
}
}
}
$receiptList[$key]['verifyList']=$verifyList;
$receiptList[$key]['staffDetail']=$staff->getOne(array('where'=>'sid='.$value['staff'],'asArray'=>true));
$receiptList[$key]['button']=$button;
}
//print_r($sopStaff);
$mothHtml="";
for($i=1;$i<=12;$i++){
if($moth==$i)
$mothHtml.='';
else
$mothHtml.='';
}
$dayHtml="";
if ($day!="DAY"||$moth!="MONTH"){
for($i = 1; $i <= 31; $i ++) {
if($day==$i)
$dayHtml.='';
else
$dayHtml.='';
}
}
$sopHtml="";
foreach ($sopStaff as $key=>$value){
if($sop==$key)
$sopHtml.='';
else
$sopHtml.='';
}
$data['sopHtml']=$sopHtml;
$data['dayHtml']=$dayHtml;
$data['mothHtml']=$mothHtml;
$data['receiptList']=$receiptList;
$data['memu']="receipt";
$data['staff']=$this->staff;
$data['receiptMemu']='implement';
$data['verifyId']=$this->verifyId;
$data['executeId']=$this->executeId;
$data['item']=$item;
$data['year']=$year;
$data['moth']=$moth;
$data['day']=$day;
$data['sop']=$sop;
$this->render ( "/admin/hisImplement", $data );
}
function ajaxExamine(){
$rid=$this->get_args('rid')&&is_numeric($this->get_args('rid'))?$this->get_args('rid'):0;
Doo::loadModel('receipt');
$receipt=new receipt();
if (!empty($rid)){
$rLRes=$receipt->find(array('where'=>'status=2 and (nowStaff like "%,'.$this->staff[0]['sid'].'%" or nowStaff like "%'.$this->staff[0]['sid'].',%" or nowStaff='.$this->staff[0]['sid'].' ) and rid!='.$rid
,'asArray'=>true));
echo json_encode(array('status'=>1,'receipt'=>$rLRes[0]));die;
}
echo json_encode(array('status'=>0,'receipt'=>array()));die;
}
function myReceipt(){
//all approval past withdraw
$item=isset($this->params['item'])?$this->params['item']:"";
if(empty($item))
$item=$this->get_args('item')?$this->get_args('item'):"";
$year=$this->get_args('year')?$this->get_args('year'):date("Y");
$moth=$this->get_args('moth')?$this->get_args('moth'):"";
Doo::loadModel('receipt');
$receipt=new receipt();
//pre-loaded
if(!empty($item)&&($item=="past"||$item=="withdraw")){
//have cache
$path=SITE_PATH.$this->MYREVEIPTCACHEPATH.$item."_".$year.".htmls";
if(!empty($moth))//yearPage
$path=SITE_PATH.$this->MYREVEIPTCACHEPATH.$item."_".$year."_".$moth.".htmls";
$this->showCache($path);
}
Doo::loadModel('L_category');
$Lcategory=new L_category();
Doo::loadModel('verify');
Doo::loadModel('statistics');
$statistics=new statistics();
$verify=new verify();
Doo::loadModel('staff');
$staff=new staff();
$condition=" and status!=0 ";
if($item=="approval")
$condition=" and status=2 ";
elseif ($item=="withdraw")
$condition=" and status=3 ";
elseif ($item=="past")
$condition=" and status=1 ";
elseif ($item=="whdw")
$condition=" and status=4 ";
$dateCondition=" and Year(date) =".$year;
if(!empty($moth)){
$dateCondition=" and Year(date) =".$year." and Month(date) = ".$moth;
$stList=$statistics->getOne(array('select'=>'rePrice ,agPrice','where'=>' staff='.$this->staff[0]['sid'].$dateCondition,'asArray'=>true));
}else
$stList=$statistics->statisticsByYear($year,$this->staff[0]['sid']);
if(empty($stList))
$stList=array('rePrice'=>0,'agPrice'=>0);
$noPassSum=$receipt->receiptByYear($year,$this->staff[0]['sid']);
$data['stList']=array('rePrice'=>$stList['rePrice'],'agPrice'=>$stList['agPrice'],'skPrice'=>($stList['rePrice']-$stList['agPrice']-$noPassSum['sum']));
$receiptList=$receipt->find(array('where'=>'staff='.$this->staff[0]['sid'].$condition.$dateCondition,'desc'=>'rid','asArray'=>true));
$Locate=0;$roleId=0;$button=0;
foreach ($receiptList as $key=>$value){
$receiptList[$key]['Locate']=$Locate;$Locate++;
$receiptList[$key]['reviseDetail']=array();
if (!empty($value['reviseDetail']))
$receiptList[$key]['reviseDetail']=json_decode($value['reviseDetail'],true);
$receiptList[$key]['accountItem']=json_decode($value['accountItem'],true);
$categoryDetil=$Lcategory->getOne(array('where'=>'cid='.$value['cid'],'asArray'=>true));
$receiptList[$key]['category']=$categoryDetil['title'];
//检测编辑状态
$verifyList=$verify->getOne(array('where'=>'vid='.$value['verify'],'asArray'=>true));
$verifyList=json_decode($verifyList['staff'],true);//status opinion
$verifyStaff=json_decode($value['verifyStaff'],true);
Doo::loadModel('role');
$role=new role();
$flag=true;$roleKey=0;$endStaffArray=array();$roleArrayCopy=array();
foreach ($verifyList as $k=>$v){
//init verifyStaff
if ($v[1]=='ROLE'){
if (!empty($verifyStaff)){
$endStaffArray=end($verifyStaff);
// if ($v[0]==$endStaffArray['nextStaff']){
// $roleId=$v[0];
// }
}
$roleVerify=json_decode($v[3],true);
$roleKey=$k;$roleArray=array();
$rolename=$role->getOne(array('where'=>'rid='.$v[0],'asArray'=>true));
foreach ($roleVerify as $o=>$p){
$staffID=explode ('_',$p);
$staffInfo=$staff->getOne(array('where'=>'sid='.$staffID[0],'asArray'=>true));
//print_r($staffID);
$exp=array(0=>$staffInfo['sid'],1=>$staffID[1],2=>$staffInfo['avatar'],'date'=>'','date'=>'','opinion'=>'','status'=>'','rolename'=>$rolename['name']);
array_push($roleArray, $exp);
}
$roleArrayCopy[$v[0]]=$roleArray;
//$verifyList[$k]['roleArray']=$roleArray;
}
$verifyList[$k]['date']="";
$verifyList[$k]['opinion']="";
$verifyList[$k]['status']="";
if (empty($verifyStaff)){
$verifyList[$k]['date']="";
$verifyList[$k]['opinion']="";
if (($verifyList[0][0]==$this->staff[0]['sid'])&&$flag){
$verifyList[$k]['status']=4;
$flag=false;
}
}else{
foreach ($verifyStaff as $m=>$u){
if ($v[0]==$m){
$verifyList[$k]['date']=$u['date'];
$verifyList[$k]['opinion']=$u['opinion'];
$verifyList[$k]['status']=$u['status'];
$flag=false;
break;
}
}
$endStaffArray=end($verifyStaff);
if (isset($endStaffArray['ROLE'])){
}else{
// $endKey=key($verifyStaff);
// if ($v[0]==$endStaffArray['nextStaff']&&$endStaffArray['nextStaff']==$this->staff[0]['sid']){
// $button=4;
// $verifyList[$k]['status']=4;
// }
}
}
}
$rolename['name']='';
if (!empty($roleId)){
Doo::loadModel('role');
$role=new role();
$rolename=$role->getOne(array('where'=>'rid='.$roleId,'asArray'=>true));
}
if (!empty($verifyStaff))
$endStaffArray=end($verifyStaff);
$KOP=false;
foreach ($roleArrayCopy as $P=>$A){
foreach ( $A as $MKI=>$AVL){
if (!empty($verifyStaff)){
//&&$rolename['rid']==$endStaffArray['nextStaff']
if ($this->staff[0]['sid']==$AVL[0]&&isset($endStaffArray['ROLE'])&&$rolename['rid']==$endStaffArray['nextStaff']){
$button=4;
$roleArrayCopy[$P][$MKI]['status']=4;
}
foreach ($verifyStaff as $m=>$u){
$AVLFK=$AVL[0].'_R';
//echo $AVLFK.'=='.$m;var_dump($AVLFK==$m);echo ' ';
if (strcmp($AVLFK,$m)==0){//&&isset($u['ROLE'])&&$u['ROLE']==1
$roleArrayCopy[$P][$MKI]['date']=$u['date'];
$roleArrayCopy[$P][$MKI]['opinion']=$u['opinion'];
$roleArrayCopy[$P][$MKI]['status']=$u['status'];
break;
}
}
}else{
if ($this->staff[0]['sid']==$AVL[0]&&$verifyList[0][1]=='ROLE'){
$button=4;
$roleArrayCopy[$P][$MKI]['status']=4;
}
}
//$roleArray[$MKI]['rolename']=$rolename['name'];
$KOP=true;
}
}
foreach ($roleArrayCopy as $k=>$v){
foreach ($verifyList as $m=>$n){
if ($n[0]==$k){
array_splice($verifyList,$m,1,$v);
}
}
}
$receiptList[$key]['verifyList']=$verifyList;
$receiptList[$key]['staffDetail']=$staff->getOne(array('where'=>'sid='.$value['staff'],'asArray'=>true));
$receiptList[$key]['button']=$button;
}
//print_r($receiptList);die;
$mothHtml="";
for($i=1;$i<=12;$i++){
if($moth==$i)
$mothHtml.='';
else
$mothHtml.='';
}
$data['mothHtml']=$mothHtml;
$data['receiptList']=$receiptList;
$data['memu']="receipt";
$data['staff']=$this->staff;
$data['receiptMemu']='receipt';
$data['verifyId']=$this->verifyId;
$data['executeId']=$this->executeId;
$data['item']=$item;
$data['year']=$year;
if(!empty($item)&&($item=="past"||$item=="withdraw")){
//sufficient condition to generate cache
if(empty($moth)&&($yearfind(array('where'=>'staff='.$this->staff[0]['sid'].' and (status=2 or status=4) and Year(date) ='.$year,'asArray'=>true));
if(empty($receiptList)){ //generated files
ob_start();
$this->render ( "/admin/saea_myList", $data );
$this->cacheFile($path);die;
// $content = ob_get_contents();
// $fp = fopen($path, "w");
// fwrite($fp, $content);
// fclose($fp);
}
}elseif (!empty($moth)&&($year<=date("Y"))&&($mothfind(array('where'=>'staff='.$this->staff[0]['sid'].' and (status=2 or status=4) and Year(date) ='.$year.' and Month(date) ='.$moth,'asArray'=>true));
if(empty($receiptList)){ //generated files
ob_start();
$this->render ( "/admin/saea_myList", $data );
$this->cacheFile($path);die;
}
}
}
$this->render ( "/admin/saea_myList", $data );
}
function saeaCreate(){
Doo::loadModel('accountItem');
Doo::loadModel('verify');
Doo::loadModel('receipt');
Doo::loadModel('L_category');
$lCategory=new L_category();
$receipt=new receipt();
$verify=new verify();
$accountItem=new accountItem();
Doo::loadModel("role");
$role=new role();
$acItem=$accountItem->find(array('asArray'=>true));
$veList=$verify->find(array('asArray'=>true));
foreach ($veList as $key=>$value){
$v=json_decode($value['staff']);
$list=array();
foreach ($v as $n=>$m){
if ($m['1']=='ROLE'){
$roleInfo=$role->getOne(array('where'=>'rid='.$m[0],'asArray'=>true));
$v[$n][1]=$roleInfo['name'];
array_push($list, $roleInfo['name']);
}else{
array_push($list, $v[$n][1]);
}
}
$veList[$key]['staff']=implode('>', $list);
}
$data['category']=$lCategory->find(array('asArray'=>true));
$data['veList']=$veList;
$data['acItem']=$acItem;
$data['memu']="receipt";
$data['staff']=$this->staff;
$data['receiptMemu']='saeaBorad';
$data['verifyId']=$this->verifyId;
$data['executeId']=$this->executeId;
$this->render ( "/admin/saea_create", $data );
}
function addReceipt(){
//include Doo::conf()->BASE_PATH.'diagnostic/debug.php';
$agency=$this->get_args('agency');
$travel=$this->get_args('travel');
$train=$this->get_args('train');
$other=$this->get_args('other');
$verify=$this->get_args('verify')&&is_numeric($this->get_args('verify'))?$this->get_args('verify'):0;
$cid=$this->get_args('cid')&&is_numeric($this->get_args('cid'))?$this->get_args('cid'):0;
$explanation=$this->get_args('explanation')?$this->get_args('explanation'):"";
$enclosurName=$this->get_args('enclosurName')?$this->get_args('enclosurName'):"";
if(!empty($verify)&&!empty($cid)&&!empty($explanation)){
Doo::loadModel('receipt');
Doo::loadModel('receiptDetail');
Doo::loadModel('accountItem');
$accountItem=new accountItem();
$receipt=new receipt();
Doo::loadModel('enclosur');
Doo::loadModel('execute');
$execute=new execute();
$executeDetail=$execute->getOne(array('where'=>'mold="报销单执行人"','asArray'=>true));
// $receiptDetail=$receipt->getOne(array('where'=>'staff='.$this->staff[0]['sid'].' and status=4','asArray'=>true));
// if(!empty($receiptDetail))
// return "/referReceipt/".$receiptDetail['rid'];
$aItem=$accountItem->find(array('asArray'=>true));
$accountJson[$this->AGENCY]=$accountJson[$this->TRAVEL]=$accountJson[$this->TRAIN]=$accountJson[$this->OTHER]=array();
$ag=$tr=$ta=$ot=0;
$sum=$agencySum=$travelSum=$trainSum=$otherSum=0;
foreach ($aItem as $key=>$value){
if ($value['category']==$this->AGENCY){
if (is_numeric($agency[$ag])&&$agency[$ag]!=0){
array_push($accountJson[$this->AGENCY], array('aid'=>$value['aid'],'name'=>$value['name'],'price'=>number_format($agency[$ag], 2, '.', '')));
$sum+=$agency[$ag];$agencySum+=$agency[$ag];
}
$ag++;
}
if($value['category']==$this->TRAVEL){
if (is_numeric($travel[$tr])&&$travel[$tr]!=0){
array_push($accountJson[$this->TRAVEL], array('aid'=>$value['aid'],'name'=>$value['name'],'price'=>number_format($travel[$tr], 2, '.', '')));
$sum+=$travel[$tr];$travelSum+=$travel[$tr];
}
$tr++;
}
if($value['category']==$this->TRAIN){
if (is_numeric($train[$ta])&&$train[$ta]!=0){
array_push($accountJson[$this->TRAIN], array('aid'=>$value['aid'],'name'=>$value['name'],'price'=>number_format($train[$ta], 2, '.', '')));
$sum+=$train[$ta];$trainSum+=$train[$ta];
}
$ta++;
}
if($value['category']==$this->OTHER){
if (is_numeric($other[$ot])&&$other[$ot]!=0){
array_push($accountJson[$this->OTHER], array('aid'=>$value['aid'],'name'=>$value['name'],'price'=>number_format($other[$ot], 2, '.', '')));
$sum+=$other[$ot];$otherSum+=$other[$ot];
}
$ot++;
}
}
$accountJson['cSum']=array('agencySum'=>number_format($agencySum, 2, '.', ''),'travelSum'=>number_format($travelSum, 2, '.', ''),'trainSum'=>number_format($trainSum, 2, '.', ''),'otherSum'=>number_format($otherSum, 2, '.', ''));
//报销单
$receipt->accountItem=json_encode($accountJson);
$receipt->staff=$this->staff[0]['sid'];
$receipt->sum=number_format($sum, 2, '.', '');
$receipt->date=date("Y-m-d");
$receipt->cid=$cid;
$receipt->status=5;
//修改审批流程加入角色
$receipt->verify=$verify;
$receipt->executeCopy=$executeDetail['staff'];
$receipt->receiptOrder="#B".date("Ymd").mt_rand(1000,9999);
$receipt->explanation=$explanation;
$rid=$receipt->insert();
//附件
if (!empty($enclosurName)){
$enclosurArray=explode('-', $enclosurName);
foreach ($enclosurArray as $value){
$enclosur=new enclosur();
$enclosur->name=$value;
$enclosur->rid=$rid;
$enclosur->insert();
}
//print_r($enclosurArray);die;
}
//报销详情
foreach ($accountJson[$this->AGENCY] as $key=>$value){
$receiptDetail=new receiptDetail();
$receiptDetail->staff=$this->staff[0]['sid'];
$receiptDetail->item=$value['name'];
$receiptDetail->itemCategory=$this->AGENCY;
$receiptDetail->price=number_format($value['price'], 2, '.', '');
$receiptDetail->date=date("Y-m-d");
$receiptDetail->cid=$cid;
$receiptDetail->rid=$rid;
$receiptDetail->status=4;
$receiptDetail->insert();
}
foreach ($accountJson[$this->TRAVEL] as $key=>$value){
$receiptDetail=new receiptDetail();
$receiptDetail->staff=$this->staff[0]['sid'];
$receiptDetail->item=$value['name'];
$receiptDetail->itemCategory=$this->TRAVEL;
$receiptDetail->price=number_format($value['price'], 2, '.', '');
$receiptDetail->date=date("Y-m-d");
$receiptDetail->cid=$cid;
$receiptDetail->rid=$rid;
$receiptDetail->status=4;
$receiptDetail->insert();
}
foreach ($accountJson[$this->TRAIN] as $key=>$value){
$receiptDetail=new receiptDetail();
$receiptDetail->staff=$this->staff[0]['sid'];
$receiptDetail->item=$value['name'];
$receiptDetail->itemCategory=$this->TRAIN;
$receiptDetail->price=number_format($value['price'], 2, '.', '');
$receiptDetail->date=date("Y-m-d");
$receiptDetail->cid=$cid;
$receiptDetail->rid=$rid;
$receiptDetail->status=4;
$receiptDetail->insert();
}
foreach ($accountJson[$this->OTHER] as $key=>$value){
$receiptDetail=new receiptDetail();
$receiptDetail->staff=$this->staff[0]['sid'];
$receiptDetail->item=$value['name'];
$receiptDetail->itemCategory=$this->OTHER;
$receiptDetail->price=number_format($value['price'], 2, '.', '');
$receiptDetail->date=date("Y-m-d");
$receiptDetail->cid=$cid;
$receiptDetail->rid=$rid;
$receiptDetail->status=4;
$receiptDetail->insert();
}
//return "/referReceipt/".$rid;
}
return "/saeaBorad";
}
function referReceipt(){
//$rid=isset($this->params['rid'])&&is_numeric($this->params['rid'])?$this->params['rid']:0;
Doo::loadModel('receipt');
Doo::loadModel('verify');
$verify=new verify();
$receipt=new receipt();
Doo::loadModel('L_category');
$lCategory=new L_category();
Doo::loadModel("role");
$role=new role();
$receiptDetail=$receipt->find(array('where'=>'staff='.$this->staff[0]['sid'].' and status=5 ','asArray'=>true));
if(empty($receiptDetail))
return "/addReceipt";
foreach ($receiptDetail as $key=>$value){
$receiptDetail[$key]['accountItem']=json_decode($value['accountItem'],true);
$veList=$verify->getOne(array('where'=>'vid='.$value['verify'],'asArray'=>true));
$v=json_decode($veList['staff']);
array_push($v[0], $veList['description']);
foreach ($v as $n=>$m){
if ($m['1']=='ROLE'){
$roleInfo=$role->getOne(array('where'=>'rid='.$m[0],'asArray'=>true));
$v[$n][1]=$roleInfo['name'];
}
}
$receiptDetail[$key]['staff']=$v;
$category=$lCategory->getOne(array('where'=>'cid='.$value['cid'],'asArray'=>true));
$receiptDetail[$key]['category']=$category['title'];
}
//print_r($receiptDetail);
$data['receiptDetail']=$receiptDetail;
$data['memu']="receipt";
$data['staff']=$this->staff;
$data['receiptMemu']='saeaCreate';
$data['verifyId']=$this->verifyId;
$data['executeId']=$this->executeId;
$this->render ( "/admin/saea_confirm", $data );
}
function editReceipt(){
//edit status 4
$rid=isset($this->params['rid'])&&is_numeric($this->params['rid'])?$this->params['rid']:0;
//echo $rid;
Doo::loadModel('accountItem');
Doo::loadModel('verify');
Doo::loadModel('receipt');
$receipt=new receipt();
$verify=new verify();
$accountItem=new accountItem();
Doo::loadModel('L_category');
$lCategory=new L_category();
Doo::loadModel("role");
$role=new role();
$receiptDetail=$receipt->getOne(array('where'=>'staff='.$this->staff[0]['sid'].' and rid='.$rid.' and (status=5 or status=4)','asArray'=>true));
if(empty($receiptDetail))
return "/saeaCreate";
$acItem=$accountItem->find(array('asArray'=>true));
$veList=$verify->find(array('asArray'=>true));
foreach ($veList as $key=>$value){
$v=json_decode($value['staff']);
$list=array();
foreach ($v as $n=>$m){
if ($m['1']=='ROLE'){
$roleInfo=$role->getOne(array('where'=>'rid='.$m[0],'asArray'=>true));
$v[$n][1]=$roleInfo['name'];
array_push($list, $roleInfo['name']);
}else{
array_push($list, $v[$n][1]);
}
}
$veList[$key]['staff']=implode('>', $list);
}
//配置编辑信息
$accountItemList=json_decode($receiptDetail['accountItem'],true);
foreach ($acItem as $key=>$value){
foreach ($accountItemList[$this->AGENCY] as $k=>$v){
if($acItem[$key]['category']==$this->AGENCY&&$acItem[$key]['name']==$v['name']){
$acItem[$key]['price']=$v['price'];
}
}
foreach ($accountItemList[$this->TRAIN] as $k=>$v){
if($acItem[$key]['category']==$this->TRAIN&&$acItem[$key]['name']==$v['name']){
$acItem[$key]['price']=$v['price'];
}
}
foreach ($accountItemList[$this->TRAVEL] as $k=>$v){
if($acItem[$key]['category']==$this->TRAVEL&&$acItem[$key]['name']==$v['name']){
$acItem[$key]['price']=$v['price'];
}
}
foreach ($accountItemList[$this->OTHER] as $k=>$v){
if($acItem[$key]['category']==$this->OTHER&&$acItem[$key]['name']==$v['name']){
$acItem[$key]['price']=$v['price'];
}
}
}
$data['category']=$lCategory->find(array('asArray'=>true));
$data['cSum']=$accountItemList['cSum'];
$data['sum']=$receiptDetail['sum'];
$data['receiptDetail']=$receiptDetail;
$data['veList']=$veList;
$data['acItem']=$acItem;
$data['memu']="receipt";
$data['staff']=$this->staff;
$data['receiptMemu']='saeaBorad';
$data['verify']=$receiptDetail['verify'];
$data['verifyId']=$this->verifyId;
$data['executeId']=$this->executeId;
$data['rid']=$rid;
$this->render ( "/admin/saea_edit", $data );
}
function updateReceipt(){
$agency=$this->get_args('agency');
$travel=$this->get_args('travel');
$train=$this->get_args('train');
$other=$this->get_args('other');
$verify=$this->get_args('verify')&&is_numeric($this->get_args('verify'))?$this->get_args('verify'):0;
$explanation=$this->get_args('explanation')?$this->get_args('explanation'):"";
$cid=$this->get_args('cid')&&is_numeric($this->get_args('cid'))?$this->get_args('cid'):0;
$rid=$this->get_args('rid')&&is_numeric($this->get_args('rid'))?$this->get_args('rid'):0;
if(!empty($verify)&&!empty($explanation)){
Doo::loadModel('receipt');
Doo::loadModel('receiptDetail');
Doo::loadModel('accountItem');
$accountItem=new accountItem();
$receipt=new receipt();
Doo::loadModel('execute');
$execute=new execute();
$receiptDetail=$receipt->getOne(array('where'=>'staff='.$this->staff[0]['sid'].' and rid='.$rid.' and (status=5 or status=7 or status=4)','asArray'=>true));
if(empty($receiptDetail))
return "/saeaBorad";
if ($receiptDetail['Rtype']==1)
$executeDetail=$execute->getOne(array('where'=>'mold="借款费用执行人"','asArray'=>true));
else
$executeDetail=$execute->getOne(array('where'=>'mold="报销单执行人"','asArray'=>true));
$aItem=$accountItem->find(array('asArray'=>true));
$accountJson[$this->AGENCY]=$accountJson[$this->TRAVEL]=$accountJson[$this->TRAIN]=$accountJson[$this->OTHER]=array();
$ag=$tr=$ta=$ot=0;
$sum=$agencySum=$travelSum=$trainSum=$otherSum=0;
foreach ($aItem as $key=>$value){
if ($value['category']==$this->AGENCY){
if (is_numeric($agency[$ag])&&$agency[$ag]!=0){
array_push($accountJson[$this->AGENCY], array('aid'=>$value['aid'],'name'=>$value['name'],'price'=>number_format($agency[$ag], 2, '.', '')));
$sum+=$agency[$ag];$agencySum+=$agency[$ag];
}
$ag++;
}
if($value['category']==$this->TRAVEL){
if (is_numeric($travel[$tr])&&$travel[$tr]!=0){
array_push($accountJson[$this->TRAVEL], array('aid'=>$value['aid'],'name'=>$value['name'],'price'=>number_format($travel[$tr], 2, '.', '')));
$sum+=$travel[$tr];$travelSum+=$travel[$tr];
}
$tr++;
}
if($value['category']==$this->TRAIN){
if (is_numeric($train[$ta])&&$train[$ta]!=0){
array_push($accountJson[$this->TRAIN], array('aid'=>$value['aid'],'name'=>$value['name'],'price'=>number_format($train[$ta], 2, '.', '')));
$sum+=$train[$ta];$trainSum+=$train[$ta];
}
$ta++;
}
if($value['category']==$this->OTHER){
if (is_numeric($other[$ot])&&$other[$ot]!=0){
array_push($accountJson[$this->OTHER], array('aid'=>$value['aid'],'name'=>$value['name'],'price'=>number_format($other[$ot], 2, '.', '')));
$sum+=$other[$ot];$otherSum+=$other[$ot];
}
$ot++;
}
}
$accountJson['cSum']=array('agencySum'=>number_format($agencySum, 2, '.', ''),'travelSum'=>number_format($travelSum, 2, '.', ''),'trainSum'=>number_format($trainSum, 2, '.', ''),'otherSum'=>number_format($otherSum, 2, '.', ''));
//报销单
$rid=$receipt->rid=$receiptDetail['rid'];
$receipt->accountItem=json_encode($accountJson);
$receipt->staff=$this->staff[0]['sid'];
$receipt->sum=number_format($sum, 2, '.', '');
$receipt->date=date("Y-m-d");
$receipt->cid=$cid;
if (($receiptDetail['status']!=4)){
if ($receiptDetail['Rtype']==1)
$receipt->status=7;
else
$receipt->status=5;
}
$receipt->verify=$verify;
$receipt->executeCopy=$executeDetail['staff'];
$receipt->explanation=$explanation;
$receipt->update();
$receiptDetail=new receiptDetail();
$receiptDetail->delete(array('where'=>'rid='.$rid));
//报销详情
foreach ($accountJson[$this->AGENCY] as $key=>$value){
$receiptDetail=new receiptDetail();
$receiptDetail->staff=$this->staff[0]['sid'];
$receiptDetail->item=$value['name'];
$receiptDetail->itemCategory=$this->AGENCY;
$receiptDetail->price=number_format($value['price'], 2, '.', '');
$receiptDetail->date=date("Y-m-d");
$receiptDetail->cid=$cid;
$receiptDetail->rid=$rid;
$receiptDetail->status=4;
$receiptDetail->insert();
}
foreach ($accountJson[$this->TRAVEL] as $key=>$value){
$receiptDetail=new receiptDetail();
$receiptDetail->staff=$this->staff[0]['sid'];
$receiptDetail->item=$value['name'];
$receiptDetail->itemCategory=$this->TRAVEL;
$receiptDetail->price=number_format($value['price'], 2, '.', '');
$receiptDetail->date=date("Y-m-d");
$receiptDetail->cid=$cid;
$receiptDetail->rid=$rid;
$receiptDetail->status=4;
$receiptDetail->insert();
}
foreach ($accountJson[$this->TRAIN] as $key=>$value){
$receiptDetail=new receiptDetail();
$receiptDetail->staff=$this->staff[0]['sid'];
$receiptDetail->item=$value['name'];
$receiptDetail->itemCategory=$this->TRAIN;
$receiptDetail->price=number_format($value['price'], 2, '.', '');
$receiptDetail->date=date("Y-m-d");
$receiptDetail->cid=$cid;
$receiptDetail->rid=$rid;
$receiptDetail->status=4;
$receiptDetail->insert();
}
foreach ($accountJson[$this->OTHER] as $key=>$value){
$receiptDetail=new receiptDetail();
$receiptDetail->staff=$this->staff[0]['sid'];
$receiptDetail->item=$value['name'];
$receiptDetail->itemCategory=$this->OTHER;
$receiptDetail->price=number_format($value['price'], 2, '.', '');
$receiptDetail->date=date("Y-m-d");
$receiptDetail->cid=$cid;
$receiptDetail->rid=$rid;
$receiptDetail->status=4;
$receiptDetail->insert();
}
//return "/referReceipt/".$rid;
}
return "/saeaBorad";
}
function approvedReceipt(){
$rid=isset($this->params['rid'])&&is_numeric($this->params['rid'])?$this->params['rid']:0;
Doo::loadModel('receipt');
Doo::loadModel('receiptDetail');
$receipt=new receipt();
$receiptDetail=new receiptDetail();
Doo::loadModel('statistics');
Doo::loadModel('itemStatistics');
$statistics=new statistics();
$itemStatistics=new itemStatistics();
Doo::loadModel("verify");
$verify=new verify();
//审批状态的判定
$receiptDetailList=$receipt->getOne(array('where'=>'staff='.$this->staff[0]['sid'].' and rid='.$rid.' and (status=4 or status=5 or status=7)','asArray'=>true));
if(empty($receiptDetailList))
return "/saeaBorad";
$verifyDetail=$verify->getOne(array('where'=>' vid ='.$receiptDetailList['verify'],'asArray'=>true));
$verifyDetail=json_decode($verifyDetail['staff'],true);
if (empty($receiptDetailList['nowStaff'])){
$nowStaff="";$nowStaffList=array();
if ($verifyDetail[0][1]=='ROLE'){
$vStaffString=json_decode($verifyDetail[0][3]);
foreach ($vStaffString as $key=>$value){
$staffK=explode("_", $value);
array_push($nowStaffList, $staffK[0]);
}
$nowStaff=implode(',', $nowStaffList);
}else{
$nowStaff=$verifyDetail[0][0];
}
$receipt->nowStaff=$nowStaff;
}
// echo $nowStaff;
// print_r($verifyDetail);die;
$receipt->rid=$receiptDetailList['rid'];
$receipt->date=date("Y-m-d");
$receipt->status=2;
$receipt->update();
$receiptDetail->status=2;
$receiptDetail->update(array('where'=>'rid='.$receiptDetailList['rid']));
Doo::loadModel("receiptLog");
$receiptLog=new receiptLog();
Doo::loadModel("verify");
$verify=new verify();
$receiptInfo=$receipt->getOne(array('where'=>'rid='.$rid,'asArray'=>true));
$vr=$verify->getOne(array('where'=>'vid='.$receiptInfo['verify'],'asArray'=>true));
$jd=json_decode($vr['staff']);$roleId=0;
foreach ($jd as $key=>$value){
if ($value[1]=='ROLE'){
$pos = strpos($value[3], $this->staff[0]['sid']);
if ($pos !== false) {
$roleId=$value[0];
}
}
}
//审批日志
//echo $roleId;die;
if (!empty($roleId)){
Doo::loadModel("role");
$role=new role();
$roleInfo=$role->getOne(array('where'=>'rid='.$roleId,'asArray'=>true));
$receiptLog->rolename=$roleInfo['name'];
}
$receiptLog->username=$this->staff[0]['username'];
$receiptLog->uid=$this->staff[0]['sid'];
$receiptLog->date=date("Y-m-d");
$receiptLog->opinion='提交审批';
$receiptLog->img=$this->staff[0]['avatar'];
$receiptLog->status=2;
$receiptLog->rid=$rid;
$receiptLog->insert();
//statistics item
$dateArray=explode("-", $receiptDetailList['date']);
$dateCondition=" and Year(date) =".$dateArray[0]." and Month(date) = ".$dateArray[1];
$accountItem=json_decode($receiptDetailList['accountItem'],true);
//print_r($accountItem['cSum']['agencySum']);die;
// foreach ($accountItem['cSum'] as $key=>$value){
// if($key=="agencySum"){
// $iStatistics=$itemStatistics->getOne(array('where'=>'staff='.$this->staff[0]['sid'].' and itemCategory="'.$this->AGENCY.'"'.$dateCondition,'asArray'=>true));
// if(empty($iStatistics)){
// $itemStatistics->cid=$this->staff[0]['cid'];
// $itemStatistics->staff=$this->staff[0]['sid'];
// $itemStatistics->price=$value;
// $itemStatistics->itemCategory=$this->AGENCY;
// $itemStatistics->date=date("Y-m-d");
// $itemStatistics->insert();
// }else{
// if (!empty($value)){
// $itemStatistics->price=$value+$iStatistics['price'];
// $itemStatistics->update(array('where'=>'sid='.$iStatistics['sid']));
// }
// }
// }elseif($key=="travelSum"){
// $iStatistics=$itemStatistics->getOne(array('where'=>'staff='.$this->staff[0]['sid'].' and itemCategory="'.$this->TRAVEL.'"'.$dateCondition,'asArray'=>true));
// if(empty($iStatistics)){
// $itemStatistics->cid=$this->staff[0]['cid'];
// $itemStatistics->staff=$this->staff[0]['sid'];
// $itemStatistics->price=$value;
// $itemStatistics->itemCategory=$this->TRAVEL;
// $itemStatistics->date=date("Y-m-d");
// $itemStatistics->insert();
// }else{
// if (!empty($value)){
// $itemStatistics->price=$value+$iStatistics['price'];
// $itemStatistics->update(array('where'=>'sid='.$iStatistics['sid']));
// }
// }
// }elseif($key=="trainSum"){
// $iStatistics=$itemStatistics->getOne(array('where'=>'staff='.$this->staff[0]['sid'].' and itemCategory="'.$this->TRAIN.'"'.$dateCondition,'asArray'=>true));
// if(empty($iStatistics)){
// $itemStatistics->cid=$this->staff[0]['cid'];
// $itemStatistics->staff=$this->staff[0]['sid'];
// $itemStatistics->price=$value;
// $itemStatistics->itemCategory=$this->TRAIN;
// $itemStatistics->date=date("Y-m-d");
// $itemStatistics->insert();
// }else{
// if (!empty($value)){
// $itemStatistics->price=$value+$iStatistics['price'];
// $itemStatistics->update(array('where'=>'sid='.$iStatistics['sid']));
// }
// }
// }elseif($key=="otherSum"){
// $iStatistics=$itemStatistics->getOne(array('where'=>'staff='.$this->staff[0]['sid'].' and itemCategory="'.$this->OTHER.'"'.$dateCondition,'asArray'=>true));
// if(empty($iStatistics)){
// $itemStatistics->cid=$this->staff[0]['cid'];
// $itemStatistics->staff=$this->staff[0]['sid'];
// $itemStatistics->price=$value;
// $itemStatistics->itemCategory=$this->OTHER;
// $itemStatistics->date=date("Y-m-d");
// $itemStatistics->insert();
// }else{
// if (!empty($value)){
// $itemStatistics->price=$value+$iStatistics['price'];
// $itemStatistics->update(array('where'=>'sid='.$iStatistics['sid']));
// }
// }
// }
// }
$stat=$statistics->getOne(array('where'=>'staff='.$this->staff[0]['sid'].$dateCondition,'asArray'=>true));
if(empty($stat)){
$statistics->date=date("Y-m-d");
$statistics->cid=$this->staff[0]['cid'];
$statistics->staff=$this->staff[0]['sid'];
$statistics->agPrice=0;
$statistics->rePrice=$accountItem['cSum']['agencySum']+$accountItem['cSum']['travelSum']+$accountItem['cSum']['trainSum']+$accountItem['cSum']['otherSum'];
$statistics->insert();
}else{
$statistics->rePrice=$stat['rePrice']+$accountItem['cSum']['agencySum']+$accountItem['cSum']['travelSum']+$accountItem['cSum']['trainSum']+$accountItem['cSum']['otherSum'];
$statistics->update(array('where'=>'sid='.$stat['sid']));
}
return "/expenses";
}
function approval(){
$status=isset($this->params['status'])?$this->params['status']:'';
$year=$this->get_args('year')?$this->get_args('year'):date('Y');
$month=$this->get_args('month')?$this->get_args('month'):"";
$cid=$this->get_args('cid')?$this->get_args('cid'):0;
$sid=$this->get_args('sid')?$this->get_args('sid'):0;
if (empty($status))
$status=$this->get_args('status')?$this->get_args('status'):2;
$vidList=array();
$button=0;
Doo::loadModel('verify');
$verify=new verify();
Doo::loadModel('receipt');
$receipt=new receipt();
Doo::loadModel('staff');
$staff=new staff();
Doo::loadModel('L_category');
$Lcategory=new L_category();
//user verify ID
$verifyDetail=$verify->find(array('where'=>'staff like "%\"'.$this->staff[0]['sid'].'%"','asArray'=>true));
foreach ($verifyDetail as $key=>$value){
array_push($vidList, $value['vid']);
}
$vid=implode(",", $vidList);
if(empty($verifyDetail))
$vid=0;
/*
*/
$dateCondition=" and Year(date) =".$year;
if(!empty($month))
$dateCondition=" and Year(date) =".$year." and Month(date) = ".$month;
$categoryList=$Lcategory->find(array('asArray'=>true));
$staffList=$staff->find(array('where'=>'cid='.$cid,'asArray'=>true));
$cateCondition="";$staffCondition="";$approvalCondition="";
if (!empty($cid))
$cateCondition=' and cid='.$cid;
if(!empty($sid)){
$staffCondition=' and staff='.$sid;
$cateCondition="";
}
// elseif($status==1){
// $approvalCondition=' and staff='.$this->staff[0]['sid'];
// }
if($status==2){
//查找角色审批人
$approvalCondition=' and (nowStaff like "%,'.$this->staff[0]['sid'].'%" or nowStaff like "%'.$this->staff[0]['sid'].',%" or nowStaff='.$this->staff[0]['sid'].' ) ';
}
$ap="";
if($status==4){
$ap=4;$status=2;
$approvalCondition=' and verifyStaff like "%\"'.$this->staff[0]['sid'].'\":{%" ';
}
if($status==5){
$status=4;$ap=5;
}
//echo $vid;
//get Receipt By verifyID status 2 .$approvalCondition
//$receiptList=$receipt->find(array('where'=>'verify in('.$vid.') and status='.$status.$dateCondition.$cateCondition.$staffCondition.$approvalCondition,'desc'=>'rid','asArray'=>true));
$receiptList=$receipt->find(array('where'=>' status='.$status.$dateCondition.$cateCondition.$staffCondition.$approvalCondition
,'desc'=>'rid','asArray'=>true));
//echo ' status='.$status.$dateCondition.$cateCondition.$staffCondition.$approvalCondition;
$Locate=0;
if($ap==4)
$status=4;
elseif ($ap==5)
$status=5;
foreach ($receiptList as $key=>$value){
$receiptList[$key]['Locate']=$Locate;$Locate++;
$receiptList[$key]['reviseDetail']=array();
if (!empty($value['reviseDetail']))
$receiptList[$key]['reviseDetail']=json_decode($value['reviseDetail'],true);
$receiptList[$key]['accountItem']=json_decode($value['accountItem'],true);
$categoryDetil=$Lcategory->getOne(array('where'=>'cid='.$value['cid'],'asArray'=>true));
$receiptList[$key]['category']=$categoryDetil['title'];
$verifyList=$verify->getOne(array('where'=>'vid='.$value['verify'],'asArray'=>true));
$verifyList=json_decode($verifyList['staff'],true);//status opinion
$verifyStaff=json_decode($value['verifyStaff'],true);
foreach ($verifyList as $k=>$v){
//init verifyStaff
$verifyList[$k]['date']="";
$verifyList[$k]['opinion']="";
$verifyList[$k]['status']="";
if (empty($verifyStaff)){
$verifyList[$k]['date']="";
$verifyList[$k]['opinion']="";
if ($v[0]==$this->staff[0]['sid']){
$verifyList[$k]['status']=4;
$button=4;
}
}else{
$flag=true;
foreach ($verifyStaff as $m=>$u){
if ($v[0]==$m){
$verifyList[$k]['date']=$u['date'];
$verifyList[$k]['opinion']=$u['opinion'];
$verifyList[$k]['status']=$u['status'];
$flag=false;
break;
}
// elseif($v[0]==$this->staff[0]['sid']){$verifyList[$k]['status']=4;break;}
// if ($v[0]==$this->staff[0]['sid']&&$m!=$this->staff[0]['sid']){$verifyList[$k]['status']=4;}
// if($v[0]==$this->staff[0]['sid']&&$v[0]==$m){if ($u['status']!=1&&$u['status']!=3)$button=4;}
}
if($flag){//检测可编辑
if($v[0]==$this->staff[0]['sid']){
$verifyList[$k]['status']=4;$button=4;
}
}
}
}
$receiptList[$key]['verifyList']=$verifyList;
$receiptList[$key]['staffDetail']=$staff->getOne(array('where'=>'sid='.$value['staff'],'asArray'=>true));
$receiptList[$key]['button']=$button;
}
//print_r($receiptList);die;
//$data['verifyDetail']=$verifyDetail;
$mothHtml="";
for($i=1;$i<=12;$i++){
if($month==$i)
$mothHtml.='';
else
$mothHtml.='';
}
$data['mothHtml']=$mothHtml;
$data['receiptList']=$receiptList;
$data['receiptApprovalCount']=count($receiptList);
$data['status']=$status;
$data['year']=$year;
$data['categoryList']=$categoryList;
$data['staffList']=$staffList;
$data['cid']=$cid;
$data['sid']=$sid;
$data['ap']=$ap;
$data['memu']="receipt";
$data['staff']=$this->staff;
$data['receiptMemu']='approval';
$data['verifyId']=$this->verifyId;
$data['executeId']=$this->executeId;
$this->render ( "/admin/saea_reportList", $data );
}
function approvalDetails(){
$rid=isset($this->params['rid'])?$this->params['rid']:0;
$year=$this->get_args('year')?$this->get_args('year'):date('Y');
$month=$this->get_args('month')?$this->get_args('month'):"";
$cid=$this->get_args('cid')?$this->get_args('cid'):0;
$sid=$this->get_args('sid')?$this->get_args('sid'):0;
Doo::loadModel('verify');
$verify=new verify();
Doo::loadModel('receipt');
$receipt=new receipt();
Doo::loadModel('staff');
$staff=new staff();
Doo::loadModel('L_category');
$Lcategory=new L_category();
Doo::loadModel('enclosur');
$enclosur=new enclosur();
$vidList=array();
$verifyDetail=$verify->find(array('where'=>'staff like "%\"'.$this->staff[0]['sid'].'%"','asArray'=>true));
foreach ($verifyDetail as $key=>$value){
array_push($vidList, $value['vid']);
}
$vid=implode(",", $vidList);
if(empty($verifyDetail))
$vid=0;
$categoryList=$Lcategory->find(array('asArray'=>true));
$staffList=$staff->find(array('where'=>'cid='.$cid,'asArray'=>true));
$ap=0;
$receiptList=$receipt->find(array('where'=>'rid ='.$rid,'desc'=>'rid','asArray'=>true));
$Locate=0;$roleId=0;$button=0;
foreach ($receiptList as $key=>$value){
$receiptList[$key]['Locate']=$Locate;$Locate++;
$receiptList[$key]['reviseDetail']=array();
if (!empty($value['reviseDetail']))
$receiptList[$key]['reviseDetail']=json_decode($value['reviseDetail'],true);
$receiptList[$key]['accountItem']=json_decode($value['accountItem'],true);
$categoryDetil=$Lcategory->getOne(array('where'=>'cid='.$value['cid'],'asArray'=>true));
$receiptList[$key]['category']=$categoryDetil['title'];
//检测编辑状态
$verifyList=$verify->getOne(array('where'=>'vid='.$value['verify'],'asArray'=>true));
$verifyList=json_decode($verifyList['staff'],true);//status opinion
$verifyStaff=json_decode($value['verifyStaff'],true);
Doo::loadModel('role');
$role=new role();
//print_r($verifyList);
$flag=true;$roleKey=0;$endStaffArray=array();$roleArrayCopy=array();
foreach ($verifyList as $k=>$v){
//init verifyStaff
if ($v[1]=='ROLE'){
if (!empty($verifyStaff)){
$endStaffArray=end($verifyStaff);
if ($v[0]==$endStaffArray['nextStaff']){
$roleId=$v[0];
}
}
$roleVerify=json_decode($v[3],true);
$roleKey=$k;$roleArray=array();
$rolename=$role->getOne(array('where'=>'rid='.$v[0],'asArray'=>true));
foreach ($roleVerify as $o=>$p){
$staffID=explode ('_',$p);
$staffInfo=$staff->getOne(array('where'=>'sid='.$staffID[0],'asArray'=>true));
//print_r($staffID);
$exp=array(0=>$staffInfo['sid'],1=>$staffID[1],2=>$staffInfo['avatar'],'date'=>'','date'=>'','opinion'=>'','status'=>'','rolename'=>$rolename['name']);
array_push($roleArray, $exp);
}
$roleArrayCopy[$v[0]]=$roleArray;
//$verifyList[$k]['roleArray']=$roleArray;
}
//print_r($roleArray);
$verifyList[$k]['date']="";
$verifyList[$k]['opinion']="";
$verifyList[$k]['status']="";
if (empty($verifyStaff)){
$verifyList[$k]['date']="";
$verifyList[$k]['opinion']="";
if (($verifyList[0][0]==$this->staff[0]['sid'])&&$flag){
$verifyList[$k]['status']=4;
$button=4;$flag=false;
}
}else{
foreach ($verifyStaff as $m=>$u){
if ($v[0]==$m){
$verifyList[$k]['date']=$u['date'];
$verifyList[$k]['opinion']=$u['opinion'];
$verifyList[$k]['status']=$u['status'];
$flag=false;
break;
}
}
$endStaffArray=end($verifyStaff);
if (isset($endStaffArray['ROLE'])){
}else{
$endKey=key($verifyStaff);
if ($v[0]==$endStaffArray['nextStaff']&&$endStaffArray['nextStaff']==$this->staff[0]['sid']){
$button=4;
$verifyList[$k]['status']=4;
}
}
}
}
$rolename['name']='';
if (!empty($roleId)){
Doo::loadModel('role');
$role=new role();
$rolename=$role->getOne(array('where'=>'rid='.$roleId,'asArray'=>true));
}
if (!empty($verifyStaff))
$endStaffArray=end($verifyStaff);
$KOP=false;
foreach ($roleArrayCopy as $P=>$A){
foreach ( $A as $MKI=>$AVL){
if (!empty($verifyStaff)){
//&&$rolename['rid']==$endStaffArray['nextStaff']
if ($this->staff[0]['sid']==$AVL[0]&&isset($endStaffArray['ROLE'])&&$rolename['rid']==$endStaffArray['nextStaff']){
$button=4;
$roleArrayCopy[$P][$MKI]['status']=4;
}
foreach ($verifyStaff as $m=>$u){
$AVLFK=$AVL[0].'_R';
//echo $AVLFK.'=='.$m;var_dump($AVLFK==$m);echo ' ';
if (strcmp($AVLFK,$m)==0){//&&isset($u['ROLE'])&&$u['ROLE']==1
$roleArrayCopy[$P][$MKI]['date']=$u['date'];
$roleArrayCopy[$P][$MKI]['opinion']=$u['opinion'];
$roleArrayCopy[$P][$MKI]['status']=$u['status'];
break;
}
}
}else{
if ($this->staff[0]['sid']==$AVL[0]&&$verifyList[0][1]=='ROLE'){
$button=4;
$roleArrayCopy[$P][$MKI]['status']=4;
}
}
//$roleArray[$MKI]['rolename']=$rolename['name'];
$KOP=true;
}
}
foreach ($roleArrayCopy as $k=>$v){
foreach ($verifyList as $m=>$n){
if ($n[0]==$k){
array_splice($verifyList,$m,1,$v);
}
}
}
$receiptList[$key]['verifyList']=$verifyList;
$receiptList[$key]['staffDetail']=$staff->getOne(array('where'=>'sid='.$value['staff'],'asArray'=>true));
$receiptList[$key]['button']=$button;
}
$mothHtml="";
for($i=1;$i<=12;$i++){
if($month==$i)
$mothHtml.='';
else
$mothHtml.='';
}
//获取审批日志
Doo::loadModel('receiptLog');
$receiptLog=new receiptLog();
$rlList=array();
$rlInfo=$receiptLog->getOne(array('where'=>'rid='.$rid.' and status=4','asArray'=>true));
$tijdate=$receiptLog->getOne(array('where'=>'rid='.$rid.' and status=2','asc'=>'rlid','asArray'=>true));
if (!empty($rlInfo)){
$rlList=$receiptLog->find(array('where'=>'rid='.$rid,'asc'=>'rlid','asArray'=>true));
}
$receiptList[0]['rlList']=$rlList;
$enclosurList=$enclosur->find(array('where'=>'rid='.$rid,'asArray'=>true));
$enclosurHtml='';
foreach ($enclosurList as $value){
$enclosurHtml.=''.$value['name'].'';
}
$data['enclosurHtml']=$enclosurHtml;
$data['rolename']=$rolename['name'];
$data['datetij']=$tijdate['date'];
$data['mothHtml']=$mothHtml;
$data['receiptList']=$receiptList;
$data['receiptApprovalCount']=count($receiptList);
$data['year']=$year;
$data['categoryList']=$categoryList;
$data['staffList']=$staffList;
$data['cid']=$cid;
$data['sid']=$sid;
$data['status']=0;
if ($receiptList[0]['status']!=1&&$receiptList[0]['status']!=3){
$ap=4;
}else
$data['status']=$receiptList[0]['status'];
if ($receiptList[0]['status']==4){
$data['status']=5;
$ap=0;
}
$data['ap']=$ap;
$data['memu']="receipt";
$data['staff']=$this->staff;
$data['receiptMemu']='approval';
$data['verifyId']=$this->verifyId;
$data['executeId']=$this->executeId;
$this->render ( "/admin/saeaReportListReport", $data );
}
function approvalEdi(){
$rid=isset($this->params['rid'])?$this->params['rid']:0;
$status=isset($this->params['status'])?$this->params['status']:'';
$year=$this->get_args('year')?$this->get_args('year'):date('Y');
$month=$this->get_args('month')?$this->get_args('month'):"";
$cid=$this->get_args('cid')?$this->get_args('cid'):0;
$sid=$this->get_args('sid')?$this->get_args('sid'):0;
if (empty($status))
$status=$this->get_args('status')?$this->get_args('status'):2;
$vidList=array();
$button=0;
Doo::loadModel('verify');
Doo::loadModel('receipt');
Doo::loadModel('staff');
$staff=new staff();
$receipt=new receipt();
$verify=new verify();
Doo::loadModel('L_category');
$Lcategory=new L_category();
Doo::loadModel('enclosur');
$enclosur=new enclosur();
//user verify ID
$verifyDetail=$verify->find(array('where'=>'staff like "%\"'.$this->staff[0]['sid'].'%"','asArray'=>true));
foreach ($verifyDetail as $key=>$value){
array_push($vidList, $value['vid']);
}
$vid=implode(",", $vidList);
if(empty($verifyDetail))
$vid=0;
$categoryList=$Lcategory->find(array('asArray'=>true));
$staffList=$staff->find(array('where'=>'cid='.$cid,'asArray'=>true));
$ap="";
if($status==4){
$ap=4;$status=2;
}
//get Receipt By verifyID status 2
$receiptList=$receipt->find(array('where'=>'rid ='.$rid,'desc'=>'rid','asArray'=>true));
$Locate=0;$roleId=0;
if($ap==4)
$status=4;
foreach ($receiptList as $key=>$value){
$receiptList[$key]['Locate']=$Locate;$Locate++;
$receiptList[$key]['reviseDetail']=array();
if (!empty($value['reviseDetail']))
$receiptList[$key]['reviseDetail']=json_decode($value['reviseDetail'],true);
$receiptList[$key]['accountItem']=json_decode($value['accountItem'],true);
$categoryDetil=$Lcategory->getOne(array('where'=>'cid='.$value['cid'],'asArray'=>true));
$receiptList[$key]['category']=$categoryDetil['title'];
//检测编辑状态
$verifyList=$verify->getOne(array('where'=>'vid='.$value['verify'],'asArray'=>true));
$verifyList=json_decode($verifyList['staff'],true);//status opinion
$verifyStaff=json_decode($value['verifyStaff'],true);
// print_r($verifyList);
//
// if (empty($verifyStaff)){
// if ($this->staff[0]['sid']==$verifyStaff[0][0]){
// $verifyList[0]['status']=4;$button=4;
// }
//
// }else{
//
// }
// die;
// $a=array("a"=>"red","b"=>"green","c"=>"blue");
// echo array_search("green",$a);
//
Doo::loadModel('role');
$role=new role();
//print_r($verifyList);
$flag=true;$roleKey=0;$endStaffArray=array();$roleArrayCopy=array();
foreach ($verifyList as $k=>$v){
//init verifyStaff
if ($v[1]=='ROLE'){
if (!empty($verifyStaff)){
$endStaffArray=end($verifyStaff);
if ($v[0]==$endStaffArray['nextStaff']){
$roleId=$v[0];
}
}
$roleVerify=json_decode($v[3],true);
$roleKey=$k;$roleArray=array();
$rolename=$role->getOne(array('where'=>'rid='.$v[0],'asArray'=>true));
foreach ($roleVerify as $o=>$p){
$staffID=explode ('_',$p);
$staffInfo=$staff->getOne(array('where'=>'sid='.$staffID[0],'asArray'=>true));
//print_r($staffID);
$exp=array(0=>$staffInfo['sid'],1=>$staffID[1],2=>$staffInfo['avatar'],'date'=>'','date'=>'','opinion'=>'','status'=>'','rolename'=>$rolename['name']);
array_push($roleArray, $exp);
}
$roleArrayCopy[$v[0]]=$roleArray;
//$verifyList[$k]['roleArray']=$roleArray;
}
//print_r($roleArray);
$verifyList[$k]['date']="";
$verifyList[$k]['opinion']="";
$verifyList[$k]['status']="";
if (empty($verifyStaff)){
$verifyList[$k]['date']="";
$verifyList[$k]['opinion']="";
if (($verifyList[0][0]==$this->staff[0]['sid'])&&$flag){
$verifyList[$k]['status']=4;
$button=4;$flag=false;
}
}else{
foreach ($verifyStaff as $m=>$u){
if ($v[0]==$m){
$verifyList[$k]['date']=$u['date'];
$verifyList[$k]['opinion']=$u['opinion'];
$verifyList[$k]['status']=$u['status'];
$flag=false;
break;
}
}
$endStaffArray=end($verifyStaff);
if (isset($endStaffArray['ROLE'])){
}else{
$endKey=key($verifyStaff);
if ($v[0]==$endStaffArray['nextStaff']&&$endStaffArray['nextStaff']==$this->staff[0]['sid']){
$button=4;
$verifyList[$k]['status']=4;
}
}
//print_r($endStaffArray);die;
// if (empty($verifyStaff)){
// if ($this->staff[0]['sid']==$verifyStaff[0][0]){
// $verifyList[$k]['status']=4;$button=4;
// }
//
// }else{
//
// }
// if($flag){//检测可编辑
// if($v[0]==$this->staff[0]['sid']){
// $verifyList[$k]['status']=4;$button=4;
// }
// }
}
}
$rolename['name']='';
if (!empty($roleId)){
Doo::loadModel('role');
$role=new role();
$rolename=$role->getOne(array('where'=>'rid='.$roleId,'asArray'=>true));
}
if (!empty($verifyStaff))
$endStaffArray=end($verifyStaff);
$KOP=false;
foreach ($roleArrayCopy as $P=>$A){
foreach ( $A as $MKI=>$AVL){
if (!empty($verifyStaff)){
//&&$rolename['rid']==$endStaffArray['nextStaff']
if ($this->staff[0]['sid']==$AVL[0]&&isset($endStaffArray['ROLE'])&&$rolename['rid']==$endStaffArray['nextStaff']){
$button=4;
$roleArrayCopy[$P][$MKI]['status']=4;
}
foreach ($verifyStaff as $m=>$u){
$AVLFK=$AVL[0].'_R';
//echo $AVLFK.'=='.$m;var_dump($AVLFK==$m);echo ' ';
if (strcmp($AVLFK,$m)==0){//&&isset($u['ROLE'])&&$u['ROLE']==1
$roleArrayCopy[$P][$MKI]['date']=$u['date'];
$roleArrayCopy[$P][$MKI]['opinion']=$u['opinion'];
$roleArrayCopy[$P][$MKI]['status']=$u['status'];
break;
}
}
}else{
if ($this->staff[0]['sid']==$AVL[0]&&$verifyList[0][1]=='ROLE'){
$button=4;
$roleArrayCopy[$P][$MKI]['status']=4;
}
}
//$roleArray[$MKI]['rolename']=$rolename['name'];
$KOP=true;
}
}
// print_r($roleArrayCopy);
// echo $roleKey;
foreach ($roleArrayCopy as $k=>$v){
foreach ($verifyList as $m=>$n){
if ($n[0]==$k){
array_splice($verifyList,$m,1,$v);
}
}
}
// if ($KOP)
// array_splice($verifyList,$roleKey,1,$roleArray);
//print_r($verifyList);
$receiptList[$key]['verifyList']=$verifyList;
$receiptList[$key]['staffDetail']=$staff->getOne(array('where'=>'sid='.$value['staff'],'asArray'=>true));
$receiptList[$key]['button']=$button;
}
//$data['verifyDetail']=$verifyDetail;
$mothHtml="";
for($i=1;$i<=12;$i++){
if($month==$i)
$mothHtml.='';
else
$mothHtml.='';
}
//获取审批日志
Doo::loadModel('receiptLog');
$receiptLog=new receiptLog();
$rlList=array();
$rlInfo=$receiptLog->getOne(array('where'=>'rid='.$rid.' and status=4','asArray'=>true));
$tijdate=$receiptLog->getOne(array('where'=>'rid='.$rid.' and status=2','asc'=>'rlid','asArray'=>true));
if (!empty($rlInfo)){
$rlList=$receiptLog->find(array('where'=>'rid='.$rid,'asc'=>'rlid','asArray'=>true));
}
$receiptList[0]['rlList']=$rlList;
$enclosurList=$enclosur->find(array('where'=>'rid='.$rid,'asArray'=>true));
$enclosurHtml='';
foreach ($enclosurList as $value){
$enclosurHtml.=''.$value['name'].'';
}
$data['enclosurHtml']=$enclosurHtml;
$data['rolename']=$rolename['name'];
$data['datetij']=$tijdate['date'];
$data['mothHtml']=$mothHtml;
$data['receiptList']=$receiptList;
$data['receiptApprovalCount']=count($receiptList);
$data['status']=$status;
$data['year']=$year;
$data['categoryList']=$categoryList;
$data['staffList']=$staffList;
$data['cid']=$cid;
$data['sid']=$sid;
$data['ap']=$ap;
$data['memu']="receipt";
$data['staff']=$this->staff;
$data['receiptMemu']='approval';
$data['verifyId']=$this->verifyId;
$data['executeId']=$this->executeId;
$this->render ( "/admin/saeaReportListReport", $data );
}
function remittance(){
$year=$this->get_args('year')?$this->get_args('year'):date('Y');
$month=$this->get_args('month')?$this->get_args('month'):"";
Doo::loadModel('receipt');
$receipt=new receipt();
Doo::loadModel('staff');
$staff=new staff();
$dateCondition=" and Year(pastDate) =".$year;
if(!empty($month))
$dateCondition=" and Year(pastDate) =".$year." and Month(pastDate) = ".$month;
//get Receipt By verifyID status 1
$receiptList=$receipt->find(array('select'=>'sum(sum) as sum,staff,pastDate','where'=>' status=1'.$dateCondition,'desc'=>'pastDate','groupby'=>'staff,pastDate','asArray'=>true));
$dateList=$receipt->find(array('select'=>'pastDate,verifyStaff','where'=>' status=1'.$dateCondition,'desc'=>'pastDate','groupby'=>'pastDate','asArray'=>true));
$dataList=array();
foreach ($dateList as $d=>$a){
$dataList[$a['pastDate']]=array();$daySum=0;
foreach ($receiptList as $key=>$value){
if($a['pastDate']==$value['pastDate']){
$oderList=$receipt->find(array('select'=>'receiptOrder','where'=>' status=1 and staff='.$value['staff'].' and pastDate=\''.$a['pastDate'].'\'','asArray'=>true));
$list=array();$html="";
foreach ($oderList as $v){
array_push($list, $v['receiptOrder']);
$html.=' '.$v['receiptOrder'].'、';
}
$receiptList[$key]['receiptOrder']=$html;
//$receiptList[$key]['receiptOrder']=implode(",", $list);
$sinfo=$staff->getOne(array('select'=>'username ','where'=>' sid='.$value['staff'],'asArray'=>true));
$receiptList[$key]['username']=$sinfo['username'];
$daySum+=$value['sum'];
array_push($dataList[$a['pastDate']], $receiptList[$key]);
}
$dataList[$a['pastDate']]['9999999']=number_format($daySum,2);
//$dataList[$a['pastDate']]['8888888']=json_decode($a['verifyStaff'],true);
}
}
//print_r($dataList);
$data['dataList']=$dataList;
$mothHtml="";
for($i=1;$i<=12;$i++){
if($month==$i)
$mothHtml.='';
else
$mothHtml.='';
}
$data['year']=$year;
$data['mothHtml']=$mothHtml;
$data['memu']="receipt";
$data['staff']=$this->staff;
$data['receiptMemu']='approval';
$data['verifyId']=$this->verifyId;
$data['executeId']=$this->executeId;
$this->render ( "/admin/saeaReportListPay", $data );
}
function revocationAdjustment(){
$sid=isset($this->params['sid'])&&is_numeric($this->params['sid'])?$this->params['sid']:0;
$price=isset($this->params['price'])&&is_numeric($this->params['price'])?$this->params['price']:-99999;
$rid=isset($this->params['rid'])&&is_numeric($this->params['rid'])?$this->params['rid']:0;
//echo $price;die;
if ((!empty($sid))&&($price!=-99999)&&(!empty($rid))){
Doo::loadModel('receipt');
$receipt=new receipt();
$receiptDetail=$receipt->getOne(array('where'=>'rid='.$rid,'asArray'=>true));
if (empty($receiptDetail['reviseDetail']))
return "/approval";
$reviseDetail=json_decode($receiptDetail['reviseDetail'],true);
$RD=array();
foreach ($reviseDetail as $key=>$value){
if ($value['price']==$price&&$value['sid']==$sid)
continue;
array_push($RD, $value);
}
$reviseDetailString=json_encode($RD);
$receipt->reviseDetail=$reviseDetailString;
$receipt->sum=$receiptDetail['sum']-$price;
$receipt->revisePrice=$receiptDetail['revisePrice']-$price;
$receipt->update(array('where'=>'rid='.$rid));
}
//approvalEdi/37
return "/approvalEdi/".$rid;
}
function updateApprovalReceipt(){
$opinion=$this->get_args('opinion')?$this->get_args('opinion'):"";
$status=$this->get_args('status')&&is_numeric($this->get_args('status'))?$this->get_args('status'):0;
$rid=$this->get_args('rid')&&is_numeric($this->get_args('rid'))?$this->get_args('rid'):0;
$Locate=$this->get_args('Locate')&&is_numeric($this->get_args('Locate'))?$this->get_args('Locate'):0;
if(!empty($rid)){
Doo::loadModel("verify");
$verify=new verify();
Doo::loadModel("receiptDetail");
$receiptDetailObj=new receiptDetail();
Doo::loadModel("itemStatistics");
Doo::loadModel("statistics");
$statistics=new statistics();
$itemStatistics=new itemStatistics();
Doo::loadModel("receipt");
$receipt=new receipt();
$receiptDetail=$receipt->getOne(array('where'=>'rid='.$rid.' and status=2 ','asArray'=>true));
if (empty($receiptDetail))
return "/approval";
$verifyDetail=$verify->getOne(array('where'=>' vid ='.$receiptDetail['verify'],'asArray'=>true));
$verifyString=$verifyDetail['staff'];
$verifyDetail=json_decode($verifyDetail['staff'],true);
$verifyStaff=json_decode($receiptDetail['verifyStaff'],true);
if(empty($opinion)){
if ($status==3)
$opinion="终止";
else
$opinion="同意支付";
}
$nowStaff=0;$nowStaffList=array();
if(empty($verifyStaff)){
//还需加入是否已经进入角色审批
if ($verifyDetail[0][1]=='ROLE'){
$vStaffString=json_decode($verifyDetail[0][3]);
foreach ($vStaffString as $key=>$value){
$staffK=explode("_", $value);
if ($staffK[0]!=$this->staff[0]['sid'])
array_push($nowStaffList, $staffK[0]);
}
//print_r($verifyDetail);
//die;
if (!empty($nowStaffList)){
$nowStaff=implode(',', $nowStaffList);
$verifyStaff=array($this->staff[0]['sid']."_R"=>array('date'=>date('Y-m-d'),'opinion'=>$opinion,'status'=>$status,'nextStaff'=>$verifyDetail[0][0],'ROLE'=>1));
}else{
$nowStaff=$verifyDetail[1][0];
$verifyStaff=array($this->staff[0]['sid']."_R"=>array('date'=>date('Y-m-d'),'opinion'=>$opinion,'status'=>$status,'nextStaff'=>$verifyDetail[1][0]));
}
}else{
if ($verifyDetail[1][1]=='ROLE'){
$vStaffString=json_decode($verifyDetail[1][3]);
//echo "dd";
foreach ($vStaffString as $key=>$value){
$staffK=explode("_", $value);
array_push($nowStaffList, $staffK[0]);
}
$nowStaff=implode(',', $nowStaffList);
$verifyStaff=array($this->staff[0]['sid']=>array('date'=>date('Y-m-d'),'opinion'=>$opinion,'status'=>$status,'nextStaff'=>$verifyDetail[1][0],'ROLE'=>1));
}else{
$nowStaff=$verifyDetail[1][0];
$verifyStaff=array($this->staff[0]['sid']=>array('date'=>date('Y-m-d'),'opinion'=>$opinion,'status'=>$status,'nextStaff'=>$verifyDetail[1][0]));
}
}
if($status==3)
$verifyStaff=array('final'=>$status,$this->staff[0]['sid']=>array('date'=>date('Y-m-d'),'opinion'=>$opinion,'status'=>$status));
$vStaffString=json_encode($verifyStaff);
$receipt->nowStaff=$nowStaff;
$receipt->verifyStaff=$vStaffString;
}else{
$VS=end($verifyStaff);
//非角色审批
if (!array_key_exists($this->staff[0]['sid'],$verifyStaff)&&!isset($VS['ROLE'])){
$nextStaff=0;$roleSTF=false;
foreach ($verifyDetail as $key=>$value){
if ($value[0]==$this->staff[0]['sid']&&$value[1]!='ROLE'){
if (isset($verifyDetail[$key+1])){
$nextStaff=$verifyDetail[$key+1][0];
if ($verifyDetail[$key+1][1]=='ROLE')
$roleSTF=true;
}
break;
}
}
if (!$roleSTF){
$nowStaff=$nextStaff;
$verifyStaff[$this->staff[0]['sid']]=array('date'=>date('Y-m-d'),'opinion'=>$opinion,'status'=>$status,'nextStaff'=>$nextStaff);
}else{
//获取角色下的所有用户ID
$nowStaffList=array();
foreach ($verifyDetail as $vfk){
if ($vfk[1]=='ROLE'){
$vStaffString=json_decode($vfk[3]);
foreach ($vStaffString as $key=>$value){
$staffK=explode("_", $value);
array_push($nowStaffList, $staffK[0]);
}
}
}
$nowStaff=implode(',', $nowStaffList);
$verifyStaff[$this->staff[0]['sid']]=array('date'=>date('Y-m-d'),'opinion'=>$opinion,'status'=>$status,'nextStaff'=>$nextStaff,'ROLE'=>0);
}
if($status==3){
$verifyStaff['final']=$status;
$verifyStaff[$this->staff[0]['sid']]=array('date'=>date('Y-m-d'),'opinion'=>$opinion,'status'=>$status);
}
$vStaffString=json_encode($verifyStaff);
$receipt->nowStaff=$nowStaff;
$receipt->verifyStaff=$vStaffString;
}
//角色审批
if (isset($VS['ROLE'])){
//找出角色人 当前审批角色组
$verifyJSStaff=array();$nowStaffList2=array();
foreach ($verifyDetail as $key=>$value){
if($value[1]=='ROLE'&&$value[0]==$VS['nextStaff']){
$verifyJSStaff=json_decode($value[3]);
foreach ($verifyJSStaff as $m){
$staffK=explode("_", $m);
array_push($nowStaffList2, $staffK[0]);
}
// print_r($nowStaffList2);
}
}
$RoleVerifyStaff=array();
foreach ($verifyStaff as $key=>$value){
if (isset($value['ROLE'])&&$value['ROLE']==1&&$VS['nextStaff']==$value['nextStaff']){
foreach ($nowStaffList2 as $m) {
if ($key==$m."_R")
$RoleVerifyStaff[$key]=$value;
}
}
}
// print_r($verifyStaff);
// print_r($nowStaffList2);
// print_r($RoleVerifyStaff);
//if (!array_key_exists($this->staff[0]['sid'],$RoleVerifyStaff)){
//print_r($verifyJSStaff);
$jsCount=count($verifyJSStaff)-1;//echo $jsCount;die;
if ($jsCount==count($RoleVerifyStaff)){ //或者
//下一个审批人ID
$nextStaff=0;$falg=false;
foreach ($verifyDetail as $key=>$value){
if ($value[0]==$VS['nextStaff']&&$value[1]=='ROLE'){
if (isset($verifyDetail[$key+1])&&$verifyDetail[$key+1][1]=='ROLE'){
$falg=true;
$vStaffString=json_decode($verifyDetail[$key+1][3]);$nowStaffList=array();
foreach ($vStaffString as $v){
$staffK=explode("_", $v);
array_push($nowStaffList, $staffK[0]);
}
$nowStaff=implode(',', $nowStaffList);
$nextStaff=$verifyDetail[$key+1][0];
}elseif(isset($verifyDetail[$key+1])){
$nextStaff=$verifyDetail[$key+1][0];
$nowStaff=$nextStaff;
}else
$nowStaff='';
break;
}
}
if ($falg)
$verifyStaff[$this->staff[0]['sid'].'_R']=array('date'=>date('Y-m-d'),'opinion'=>$opinion,'status'=>$status,'nextStaff'=>$nextStaff,'ROLE'=>1);
else
$verifyStaff[$this->staff[0]['sid'].'_R']=array('date'=>date('Y-m-d'),'opinion'=>$opinion,'status'=>$status,'nextStaff'=>$nextStaff);
// print_r($verifyStaff);
// echo $nowStaff;die;
}else{ //进入下一个角色或者审批人
/*
*/
// echo str_replace($this->staff[0]['sid'], '', $receiptDetail['nowStaff']);
//
$nowStaff=str_replace($this->staff[0]['sid'], '', $receiptDetail['nowStaff']);
$verifyStaff[$this->staff[0]['sid'].'_R']=array('date'=>date('Y-m-d'),'opinion'=>$opinion,'status'=>$status,'nextStaff'=>$VS['nextStaff'],'ROLE'=>1);
// print_r($verifyStaff);
// die;
}
if($status==3){
$verifyStaff['final']=$status;
$verifyStaff[$this->staff[0]['sid']]=array('date'=>date('Y-m-d'),'opinion'=>$opinion,'status'=>$status);
}
$vStaffString=json_encode($verifyStaff);
$receipt->verifyStaff=$vStaffString;
$receipt->nowStaff=$nowStaff;
//die;
//}
// print_r($verifyStaff);
// die;
}
//print_r($verifyStaff);die;
}
//print_r($verifyDetail);
$roleKey=0;$roleId=0;$verifyDetailCopy=array();
foreach ($verifyDetail as $k=>$v){
if ($v[1]=='ROLE'){
$roleId=$v[0];
$roleVerify=json_decode($v[3],true);
$roleKey=$k;$roleArray=array();
foreach ($roleVerify as $o=>$p){
$staffID=explode ('_',$p);
$exp=array(0=>$staffID[0],1=>$staffID[1]);
array_push($roleArray, $exp);
}
$verifyDetailCopy[$v[0]]=$roleArray;
}
}
//print_r($verifyDetail);
foreach ($verifyDetailCopy as $k=>$v){
foreach ($verifyDetail as $m=>$n){
if ($n[0]==$k){
array_splice($verifyDetail,$m,1,$v);
}
}
}
// die;
// if (!empty($roleArray))
// array_splice($verifyDetail,$roleKey,1,$roleArray);
// echo $roleId;
// print_r($verifyStaff);
// print_r($verifyDetail);
// die;
Doo::loadModel("receiptLog");
$receiptLog=new receiptLog();
//审批日志
if (!isset($verifyStaff['final'])){
if (!empty($roleId)){
Doo::loadModel("role");
$role=new role();
$roleInfo=$role->getOne(array('where'=>'rid='.$roleId,'asArray'=>true));
$receiptLog->rolename=$roleInfo['name'];
}
$receiptLog->username=$this->staff[0]['username'];
$receiptLog->uid=$this->staff[0]['sid'];
$receiptLog->date=date("Y-m-d");
$receiptLog->opinion=$opinion;
$receiptLog->img=$this->staff[0]['avatar'];
$receiptLog->status=1;
$receiptLog->rid=$rid;
$receiptLog->insert();
}
if (isset($verifyStaff['final'])){//rDetail
$receipt->verifyBreakup=$verifyString;
$receipt->status=3;
$receiptDetailObj->status=3;
$receiptDetailObj->update(array('where'=>'rid='.$rid));
if (!empty($roleId)){
Doo::loadModel("role");
$role=new role();
$roleInfo=$role->getOne(array('where'=>'rid='.$roleId,'asArray'=>true));
$receiptLog->rolename=$roleInfo['name'];
}
$receiptLog->username=$this->staff[0]['username'];
$receiptLog->uid=$this->staff[0]['sid'];
$receiptLog->date=date("Y-m-d");
$receiptLog->opinion=$opinion;
$receiptLog->img=$this->staff[0]['avatar'];
$receiptLog->status=3;
$receiptLog->rid=$rid;
$receiptLog->insert();
}elseif(count($verifyStaff)==count($verifyDetail)){//要修改 角色的数量
$receipt->status=1;$reviseSum=0;
$receipt->verifyBreakup=$verifyString;
if(!empty($receiptDetail['reviseDetail'])){//statistics item rDetail
$reviseDetail=json_decode($receiptDetail['reviseDetail'],true);
foreach ($reviseDetail as $key=>$value){
$receiptDetailObj=new receiptDetail();
$receiptDetailObj->staff=$receiptDetail['staff'];// $this->staff[0]['sid'];
$receiptDetailObj->item=$value['description'];
$receiptDetailObj->itemCategory="报销金额调整";
$receiptDetailObj->price=$value['price'];
$receiptDetailObj->date=$receiptDetail['date'];
$receiptDetailObj->cid=$this->staff[0]['cid'];
$receiptDetailObj->rid=$rid;
$receiptDetailObj->status=1;
$receiptDetailObj->insert();
$reviseSum+=$value['price'];
}
$itemStatistics=new itemStatistics();
$itemStatistics->cid=$receiptDetail['cid'];//$this->staff[0]['cid'];
$itemStatistics->staff=$receiptDetail['staff'];//$this->staff[0]['sid'];
$itemStatistics->price=$reviseSum;
$itemStatistics->itemCategory="报销金额调整";
$itemStatistics->date=$receiptDetail['date'];
$itemStatistics->insert();
}
$receiptDetailObj=new receiptDetail();
$receiptDetailObj->status=1;
$receiptDetailObj->pastDate=date("Y-m-d");
$receiptDetailObj->update(array('where'=>'rid='.$rid));
$dateArray=explode("-", $receiptDetail['date']);
$dateCondition=" and Year(date) =".$dateArray[0]." and Month(date) = ".$dateArray[1];
$stat=$statistics->getOne(array('where'=>'staff='.$receiptDetail['staff'].$dateCondition,'asArray'=>true));
if(empty($stat)){
$statistics->date=$receiptDetail['date'];
$statistics->cid=$receiptDetail['cid'];//$this->staff[0]['cid'];
$statistics->staff=$receiptDetail['staff'];//$this->staff[0]['sid'];
$statistics->agPrice=$receiptDetail['sum'];
$statistics->rePrice=$reviseSum;
$statistics->insert();
}else{
$statistics->agPrice=$stat['agPrice']+$receiptDetail['sum'];
$statistics->rePrice=$stat['rePrice']+$reviseSum;
$statistics->update(array('where'=>'sid='.$stat['sid']));
}
$dateArray=explode("-", $receiptDetail['date']);
$dateCondition=" and Year(date) =".$dateArray[0]." and Month(date) = ".$dateArray[1];
$accountItem=json_decode($receiptDetail['accountItem'],true);
foreach ($accountItem['cSum'] as $key=>$value){
if($key=="agencySum"){
$iStatistics=$itemStatistics->getOne(array('where'=>'staff='.$receiptDetail['staff'].' and itemCategory="'.$this->AGENCY.'"'.$dateCondition,'asArray'=>true));
if(empty($iStatistics)){
$itemStatistics->cid=$receiptDetail['cid'];;
$itemStatistics->staff=$receiptDetail['staff'];
$itemStatistics->price=$value;
$itemStatistics->itemCategory=$this->AGENCY;
$itemStatistics->date=$receiptDetail['date'];
$itemStatistics->insert();
}else{
if (!empty($value)){
$itemStatistics->price=$value+$iStatistics['price'];
$itemStatistics->update(array('where'=>'sid='.$iStatistics['sid']));
}
}
}elseif($key=="travelSum"){
$iStatistics=$itemStatistics->getOne(array('where'=>'staff='.$receiptDetail['staff'].' and itemCategory="'.$this->TRAVEL.'"'.$dateCondition,'asArray'=>true));
if(empty($iStatistics)){
$itemStatistics->cid=$receiptDetail['cid'];
$itemStatistics->staff=$receiptDetail['staff'];
$itemStatistics->price=$value;
$itemStatistics->itemCategory=$this->TRAVEL;
$itemStatistics->date=$receiptDetail['date'];
$itemStatistics->insert();
}else{
if (!empty($value)){
$itemStatistics->price=$value+$iStatistics['price'];
$itemStatistics->update(array('where'=>'sid='.$iStatistics['sid']));
}
}
}elseif($key=="trainSum"){
$iStatistics=$itemStatistics->getOne(array('where'=>'staff='.$receiptDetail['staff'].' and itemCategory="'.$this->TRAIN.'"'.$dateCondition,'asArray'=>true));
if(empty($iStatistics)){
$itemStatistics->cid=$receiptDetail['cid'];
$itemStatistics->staff=$receiptDetail['staff'];
$itemStatistics->price=$value;
$itemStatistics->itemCategory=$this->TRAIN;
$itemStatistics->date=$receiptDetail['date'];
$itemStatistics->insert();
}else{
if (!empty($value)){
$itemStatistics->price=$value+$iStatistics['price'];
$itemStatistics->update(array('where'=>'sid='.$iStatistics['sid']));
}
}
}elseif($key=="otherSum"){
$iStatistics=$itemStatistics->getOne(array('where'=>'staff='.$receiptDetail['staff'].' and itemCategory="'.$this->OTHER.'"'.$dateCondition,'asArray'=>true));
if(empty($iStatistics)){
$itemStatistics->cid=$receiptDetail['cid'];
$itemStatistics->staff=$receiptDetail['staff'];
$itemStatistics->price=$value;
$itemStatistics->itemCategory=$this->OTHER;
$itemStatistics->date=$receiptDetail['date'];
$itemStatistics->insert();
}else{
if (!empty($value)){
$itemStatistics->price=$value+$iStatistics['price'];
$itemStatistics->update(array('where'=>'sid='.$iStatistics['sid']));
}
}
}
}
$receipt->pastDate=date("Y-m-d");
}
$receipt->update(array('where'=>' rid = '.$rid));
return "/approvalExpenses/2";
}
}
function expensesRetreats(){
$rid=isset($this->params['rid'])&&is_numeric($this->params['rid'])?$this->params['rid']:0;
if (!empty($rid)){
//操作记录
Doo::loadModel("receipt");
$receipt=new receipt();
Doo::loadModel("receiptLog");
$receiptLog=new receiptLog();
Doo::loadModel("verify");
$verify=new verify();
$receiptInfo=$receipt->getOne(array('where'=>'rid='.$rid,'asArray'=>true));
$vr=$verify->getOne(array('where'=>'vid='.$receiptInfo['verify'],'asArray'=>true));
$jd=json_decode($vr['staff']);$roleId=0;
foreach ($jd as $key=>$value){
if ($value[1]=='ROLE'){
$pos = strpos($value[3], $this->staff[0]['sid']);
if ($pos !== false) {
$roleId=$value[0];
}
}
}
//审批日志
//echo $roleId;die;
if (!empty($roleId)){
Doo::loadModel("role");
$role=new role();
$roleInfo=$role->getOne(array('where'=>'rid='.$roleId,'asArray'=>true));
$receiptLog->rolename=$roleInfo['name'];
}
$receiptLog->username=$this->staff[0]['username'];
$receiptLog->uid=$this->staff[0]['sid'];
$receiptLog->date=date("Y-m-d");
$receiptLog->opinion='撤回';
$receiptLog->img=$this->staff[0]['avatar'];
$receiptLog->status=4;
$receiptLog->rid=$rid;
$receiptLog->insert();
$receipt->status=4;
$receipt->update(array('where'=>'rid='.$rid));
}
//echo "ddd";
return '/approvalExpenses';
}
function updateCheReceipt(){
$rid=isset($this->params['rid'])&&is_numeric($this->params['rid'])?$this->params['rid']:0;
if (!empty($rid)){
//操作记录
Doo::loadModel("receipt");
$receipt=new receipt();
Doo::loadModel("receiptLog");
$receiptLog=new receiptLog();
Doo::loadModel("verify");
$verify=new verify();
$receiptInfo=$receipt->getOne(array('where'=>'rid='.$rid,'asArray'=>true));
$vr=$verify->getOne(array('where'=>'vid='.$receiptInfo['verify'],'asArray'=>true));
$jd=json_decode($vr['staff']);$roleId=0;
foreach ($jd as $key=>$value){
if ($value[1]=='ROLE'){
$pos = strpos($value[3], $this->staff[0]['sid']);
if ($pos !== false) {
$roleId=$value[0];
}
}
}
//审批日志
//echo $roleId;die;
if (!empty($roleId)){
Doo::loadModel("role");
$role=new role();
$roleInfo=$role->getOne(array('where'=>'rid='.$roleId,'asArray'=>true));
$receiptLog->rolename=$roleInfo['name'];
}
$receiptLog->username=$this->staff[0]['username'];
$receiptLog->uid=$this->staff[0]['sid'];
$receiptLog->date=date("Y-m-d");
$receiptLog->opinion='撤回';
$receiptLog->img=$this->staff[0]['avatar'];
$receiptLog->status=4;
$receiptLog->rid=$rid;
$receiptLog->insert();
$receipt->status=4;
$receipt->update(array('where'=>'rid='.$rid));
}
//echo "ddd";
return '/saeaBorad';
}
function revisePrice(){
$description=$this->get_args('description')?$this->get_args('description'):"";
$price=$this->get_args('price')&&is_numeric($this->get_args('price'))?$this->get_args('price'):0;
$rid=$this->get_args('rid')&&is_numeric($this->get_args('rid'))?$this->get_args('rid'):0;
//echo $price;die;
if (!empty($rid)){
Doo::loadModel("receipt");
$receipt=new receipt();
$receiptDetail=$receipt->getOne(array('where'=>'rid='.$rid.' and status=2 ','asArray'=>true));
if (empty($receiptDetail))
return "/approval";
$reviseDetail=array();
if (empty($receiptDetail['reviseDetail'])){
array_push($reviseDetail, array('sid'=>$this->staff[0]['sid'],'name'=>$this->staff[0]['username'],'description'=>$description,'price'=>$price));
$reviseDetailString=json_encode($reviseDetail);
$receipt->reviseDetail=$reviseDetailString;
$receipt->revisePrice=$price;
$receipt->sum=bcadd($receiptDetail['sum'],$price,2);
}else{
$reviseDetail=json_decode($receiptDetail['reviseDetail'],true);
array_push($reviseDetail,array('sid'=>$this->staff[0]['sid'],'name'=>$this->staff[0]['username'],'description'=>$description,'price'=>$price));
$reviseDetailString=json_encode($reviseDetail);
$receipt->reviseDetail=$reviseDetailString;
$receipt->revisePrice=round($price,2)+round($receiptDetail['revisePrice'],2);
$receipt->sum=bcadd($receiptDetail['sum'],$price,2);
}
$receipt->update(array('where'=>'rid='.$rid));
}
return '/approvalEdi/'.$rid;
}
function personalCollect(){
$year=$this->get_args('year')?$this->get_args('year'):date("Y");
$path=SITE_PATH.$this->PERSONALCOLLECTCACHEPATH."personalCollect_".$year.".htmls";
$this->showCache($path);
Doo::loadModel("receiptDetail");
Doo::loadModel("itemStatistics");
Doo::loadModel('statistics');
$statistics=new statistics();
$itemStatistics=new itemStatistics();
$receiptDetail=new receiptDetail();
$receiptCollectList=$receiptDetail->find(array('select'=>'staff,sum(price) as price,itemCategory,Month(date) as month',
'where'=>'staff='.$this->staff[0]['sid']." and status=1 and Year(date)=".$year,'groupby'=>'itemCategory,Month(date)','asArray'=>true));
$data['itemStatisticsList']=$itemStatistics->find(array('where'=>'staff='.$this->staff[0]['sid'],'asArray'=>true));
//create collect html
$collectArray=array('日常相关费用'=>array(),'差旅相关费用'=>array(),'培训班费用'=>array(),'其他'=>array());
$adjustment=array();
$collectHtml=$this->collectHtml($receiptCollectList,'日常相关费用');
array_push($collectArray['日常相关费用'], $collectHtml);
$collectHtml=$this->collectHtml($receiptCollectList,'差旅相关费用');
array_push($collectArray['差旅相关费用'], $collectHtml);
$collectHtml=$this->collectHtml($receiptCollectList,'培训班费用');
array_push($collectArray['培训班费用'], $collectHtml);
$collectHtml=$this->collectHtml($receiptCollectList,'其他');
array_push($collectArray['其他'], $collectHtml);
$data['collectArray']=$collectArray;
//statistics html
$stList=$statistics->statisticsByYear($year,$this->staff[0]['sid']);
if(empty($stList))
$stList=array('rePrice'=>0,'agPrice'=>0);
$data['stList']=array('rePrice'=>$stList['rePrice'],'agPrice'=>$stList['agPrice'],'skPrice'=>($stList['rePrice']-$stList['agPrice']));
//Adjustment price html
$collectHtml=$this->collectHtml($receiptCollectList,'报销金额调整');
array_push($adjustment, $collectHtml);
$data['adjustment']=$adjustment;
//total price html
$collectHtml="";$total=0;
for ($i=1;$i<=12;$i++){
$sumPrice=0;
foreach ($receiptCollectList as $key=>$value){
if($value['month']==$i){
$sumPrice+=$value['price'];
}
}
if ($sumPrice==0)
$collectHtml.='
-
';
else
$collectHtml.='
¥'.$sumPrice.'
';
$total+=$sumPrice;
}
$collectHtml.='
¥'.$total.'
';
$data['totalPrice']=$collectHtml;
$data['year']=$year;
$data['totalYear']=$total;
$data['memu']="receipt";
$data['staff']=$this->staff;
$data['receiptMemu']='personalCollect';
$data['verifyId']=$this->verifyId;
$data['executeId']=$this->executeId;
//year staff status 2,4
if($yearfind(array('where'=>'staff='.$this->staff[0]['sid'].' and (status=2 or status=4) and Year(date) ='.$year,'asArray'=>true));
if(empty($receiptList)){
ob_start();
$this->render ( "/admin/saea_slist_collect", $data );
$this->cacheFile($path);die;
}
}
$this->render ( "/admin/saea_slist_collect", $data );
}
function personalCollectDetail(){
$year=$this->get_args('year')?$this->get_args('year'):date("Y");
$path=SITE_PATH.$this->PERSONALCOLLECTCACHEPATH."personalCollectDetail_".$year.".htmls";
$this->showCache($path);
Doo::loadModel("receiptDetail");
Doo::loadModel("itemStatistics");
Doo::loadModel('statistics');
Doo::loadModel('accountItem');
$accountItem=new accountItem();
$statistics=new statistics();
$itemStatistics=new itemStatistics();
$receiptDetail=new receiptDetail();
$receiptCollectList=$receiptDetail->find(array('select'=>'staff,item,sum(price) as price,itemCategory,Month(date) as month',
'where'=>'staff='.$this->staff[0]['sid']." and status=1 and Year(date)=".$year,'groupby'=>'item,Month(date)','asArray'=>true));
$accountList=$accountItem->find(array('asArray'=>true));
//create CollectDetail HTML
$collectHtml=array();
foreach ($accountList as $key=>$value){
$html="";$asum=0;
for ($i=1;$i<=12;$i++){
$falg=true;
foreach ($receiptCollectList as $v) {
if($value['category']==$v['itemCategory']&&$v['item']==$value['name']&&$i==$v['month']){
$asum+=$v['price'];
$html.='
¥'.$v['price'].'
';$falg=false;break;
}
}
if($falg)
$html.='
-
';
}
$html.='
¥'.$asum.'
';
$collectHtml[$value['category']][$value['name']]=$html;
}
$data['collectHtml']=$collectHtml;
//create Adjustment price html
$receiptCollectList=$receiptDetail->find(array('select'=>'staff,sum(price) as price,itemCategory,Month(date) as month',
'where'=>'staff='.$this->staff[0]['sid']." and status=1 and Year(date)=".$year,'groupby'=>'itemCategory,Month(date)','asArray'=>true));
$adjustment=array();$collectArray=array('日常相关费用'=>array(),'差旅相关费用'=>array(),'培训班费用'=>array(),'其他'=>array());
$collectHtml=$this->collectHtml($receiptCollectList,'日常相关费用','b');
array_push($collectArray['日常相关费用'], $collectHtml);
$collectHtml=$this->collectHtml($receiptCollectList,'差旅相关费用','b');
array_push($collectArray['差旅相关费用'], $collectHtml);
$collectHtml=$this->collectHtml($receiptCollectList,'培训班费用','b');
array_push($collectArray['培训班费用'], $collectHtml);
$collectHtml=$this->collectHtml($receiptCollectList,'其他','b');
array_push($collectArray['其他'], $collectHtml);
$collectHtml=$this->collectHtml($receiptCollectList,'报销金额调整');
array_push($adjustment, $collectHtml);
//total price html
$collectHtml="";$total=0;
for ($i=1;$i<=12;$i++){
$sumPrice=0;
foreach ($receiptCollectList as $key=>$value){
if($value['month']==$i){
$sumPrice+=$value['price'];
}
}
if ($sumPrice==0)
$collectHtml.='
-
';
else
$collectHtml.='
¥'.$sumPrice.'
';
$total+=$sumPrice;
}
$collectHtml.='
¥'.$total.'
';
//statistics html
$stList=$statistics->statisticsByYear($year,$this->staff[0]['sid']);
if(empty($stList))
$stList=array('rePrice'=>0,'agPrice'=>0);
$data['stList']=array('rePrice'=>$stList['rePrice'],'agPrice'=>$stList['agPrice'],'skPrice'=>($stList['rePrice']-$stList['agPrice']));
$data['collectArray']=$collectArray;
$data['adjustment']=$adjustment;
$data['totalPrice']=$collectHtml;
$data['totalYear']=$total;
$data['year']=$year;
$data['memu']="receipt";
$data['staff']=$this->staff;
$data['receiptMemu']='personalCollect';
$data['verifyId']=$this->verifyId;
$data['executeId']=$this->executeId;
//year staff status 2,4
if($yearfind(array('where'=>'staff='.$this->staff[0]['sid'].' and (status=2 or status=4) and Year(date) ='.$year,'asArray'=>true));
if(empty($receiptList)){
ob_start();
$this->render ( "/admin/saeaCollectArticles", $data );
$this->cacheFile($path);die;
}
}
$this->render ( "/admin/saeaCollectArticles", $data );
}
function companyCategoryCollect(){
$year=$this->get_args('year')?$this->get_args('year'):date("Y");
$path=SITE_PATH.$this->CATEGORYCOLLECTPATH."categoryCollect_".$year.".htmls";
$this->showCache($path);
Doo::loadModel('L_category');
Doo::loadModel('itemStatistics');
Doo::loadModel('statistics');
$statistics=new statistics();
$Lcategory=new L_category();
$itemStatistics=new itemStatistics();
$LcategoryList=$Lcategory->find(array('asArray'=>true));//'staff='.$this->staff[0]['sid']." and
$itemStatisticsList=$itemStatistics->find(array('select'=>'cid,staff,sum(price) as price,itemCategory,Month(date) as month',
'where'=>" Year(date)=".$year,'groupby'=>'cid,Month(date)','asArray'=>true));
//ceatre companyCollectHtml
foreach ($LcategoryList as $value){
$html="";$asum=0;
for ($i=1;$i<=12;$i++){
$falg=true;
foreach ($itemStatisticsList as $v){
if($value['cid']==$v['cid']&&$i==$v['month']){
$asum+=$v['price'];
$html.='
¥'.$v['price'].'
';$falg=false;break;
}
}
if($falg)
$html.='
-
';
}
$html.='
¥'.$asum.'
';
$collectHtml[$value['title']]=array('html'=>$html,'cid'=>$value['cid']);
}
$data['companyHtml']=$collectHtml;
//total price html
$collectHtml="";$total=0;
for ($i=1;$i<=12;$i++){
$sumPrice=0;
foreach ($itemStatisticsList as $key=>$value){
if($value['month']==$i){
$sumPrice+=$value['price'];
}
}
if ($sumPrice==0)
$collectHtml.='
-
';
else
$collectHtml.='
¥'.$sumPrice.'
';
$total+=$sumPrice;
}
$collectHtml.='
¥'.$total.'
';
$data['companyTotalHtml']=$collectHtml;
$data['total']=$total;
//statistics html
$stList=$statistics->statisticsByComPanyYear($year,$this->staff[0]['sid']);
if(empty($stList))
$stList=array('rePrice'=>0,'agPrice'=>0);
$data['stList']=array('rePrice'=>$stList['rePrice'],'agPrice'=>$stList['agPrice'],'skPrice'=>($stList['rePrice']-$stList['agPrice']));
$data['year']=$year;
$data['memu']="receipt";
$data['staff']=$this->staff;
$data['receiptMemu']='companyCategoryCollect';
$data['verifyId']=$this->verifyId;
$data['executeId']=$this->executeId;
//year staff status 2,4
if($yearfind(array('where'=>'Year(date) ='.$year.' and (status=2 or status=4)','asArray'=>true));
if(empty($receiptList)){
ob_start();
$this->render ( "/admin/saeaCompanyCollect", $data );
$this->cacheFile($path);die;
}
}
$this->render ( "/admin/saeaCompanyCollect", $data );
}
function categoryCollectDetail(){
$year=$this->get_args('year')?$this->get_args('year'):date("Y");
$cid=isset($this->params['cid'])&&is_numeric($this->params['cid'])?$this->params['cid']:0;
$path=SITE_PATH.$this->CATEGORYCOLLECTPATH."categoryCollectDetail_".$year."_".$cid.".htmls";
$this->showCache($path);
Doo::loadModel('statistics');
$statistics=new statistics();
Doo::loadModel("receiptDetail");
$receiptDetail=new receiptDetail();
Doo::loadModel('L_category');
$Lcategory=new L_category();
Doo::loadModel('accountItem');
$accountItem=new accountItem();
$LcategoryList=$Lcategory->find(array('asArray'=>true));
if ($cid==0){
$cid=$this->get_args('cid')?$this->get_args('cid'):0;
if ($cid==0)
$cid=$LcategoryList[0]['cid'];
}
$data['LcategoryList']=$LcategoryList;
$receiptCollectList=$receiptDetail->find(array('select'=>'staff,item,sum(price) as price,itemCategory,Month(pastDate) as month',
'where'=>'cid='.$cid." and status=1 and Year(pastDate)=".$year,'groupby'=>'item,Month(pastDate)','asArray'=>true));
$accountList=$accountItem->find(array('asArray'=>true));
//create CollectDetail HTML
$collectHtml=array();
foreach ($accountList as $key=>$value){
$html="";$asum=0;
for ($i=1;$i<=12;$i++){
$falg=true;
foreach ($receiptCollectList as $v) {
if($value['category']==$v['itemCategory']&&$v['item']==$value['name']&&$i==$v['month']){
$asum+=$v['price'];
$html.='
¥'.$v['price'].'
';$falg=false;break;
}
}
if($falg)
$html.='
-
';
}
$html.='
¥'.$asum.'
';
$collectHtml[$value['category']][$value['name']]=$html;
}
$data['collectHtml']=$collectHtml;
//create Adjustment price html
$receiptCollectList=$receiptDetail->find(array('select'=>'staff,sum(price) as price,itemCategory,Month(pastDate) as month',
'where'=>'cid='.$cid." and status=1 and Year(pastDate)=".$year,'groupby'=>'itemCategory,Month(pastDate)','asArray'=>true));
$adjustment=array();$collectArray=array('日常相关费用'=>array(),'差旅相关费用'=>array(),'培训班费用'=>array(),'其他'=>array());
$collectHtml=$this->collectHtml($receiptCollectList,'日常相关费用','b');
array_push($collectArray['日常相关费用'], $collectHtml);
$collectHtml=$this->collectHtml($receiptCollectList,'差旅相关费用','b');
array_push($collectArray['差旅相关费用'], $collectHtml);
$collectHtml=$this->collectHtml($receiptCollectList,'培训班费用','b');
array_push($collectArray['培训班费用'], $collectHtml);
$collectHtml=$this->collectHtml($receiptCollectList,'其他','b');
array_push($collectArray['其他'], $collectHtml);
$data['collectArray']=$collectArray;
$collectHtml=$this->collectHtml($receiptCollectList,'报销金额调整');
array_push($adjustment, $collectHtml);
$data['adjustment']=$adjustment;
//total price html
$collectHtml="";$total=0;
for ($i=1;$i<=12;$i++){
$sumPrice=0;
foreach ($receiptCollectList as $key=>$value){
if($value['month']==$i){
$sumPrice+=$value['price'];
}
}
if ($sumPrice==0)
$collectHtml.='
-
';
else
$collectHtml.='
¥'.$sumPrice.'
';
$total+=$sumPrice;
}
$collectHtml.='
¥'.$total.'
';
//statistics html
$stList=$statistics->statisticsByCid($year,$cid);
if(empty($stList))
$stList=array('rePrice'=>0,'agPrice'=>0);
$data['stList']=array('rePrice'=>$stList['rePrice'],'agPrice'=>$stList['agPrice'],'skPrice'=>($stList['rePrice']-$stList['agPrice']));
$data['totalYear']=$total;
$data['year']=$year;
$data['cid']=$cid;
$data['memu']="receipt";
$data['staff']=$this->staff;
$data['receiptMemu']='companyCategoryCollect';
$data['verifyId']=$this->verifyId;
$data['executeId']=$this->executeId;
//year staff status 2,4
if($yearfind(array('where'=>'Year(date) ='.$year.' and cid ='.$cid.' and (status=2 or status=4)','asArray'=>true));
if(empty($receiptList)){
ob_start();
$this->render ( "/admin/saeaCategoryCollectDetail", $data );
$this->cacheFile($path);die;
}
}
$this->render ( "/admin/saeaCategoryCollectDetail", $data );
}
function staffCollect(){
$year=$this->get_args('year')?$this->get_args('year'):date("Y");
$path=SITE_PATH.$this->STAFFCOLLECTPATH."staffCollect_".$year."_.htmls";
//$this->showCache($path);
Doo::loadModel('statistics');
$statistics=new statistics();
Doo::loadModel("receiptDetail");
$receiptDetail=new receiptDetail();
Doo::loadModel('L_category');
$Lcategory=new L_category();
Doo::loadModel('accountItem');
$accountItem=new accountItem();
Doo::loadModel('staff');
$staff=new staff();
Doo::loadModel('itemStatistics');
$itemStatistics=new itemStatistics();
/*
$stList=$statistics->getOne(array('select'=>'sum(rePrice) as rePrice,sum(agPrice) as agPrice',
'where'=>" Year(date)=".$year,'groupby'=>'Month(date)','asArray'=>true));
if(empty($stList))
$stList=array('rePrice'=>0,'agPrice'=>0);
$data['stList']=array('rePrice'=>$stList['rePrice'],'agPrice'=>$stList['agPrice'],'skPrice'=>($stList['rePrice']-$stList['agPrice']));
*/
//statistics html
$stList=$statistics->statisticsByComPanyYear($year,$this->staff[0]['sid']);
if(empty($stList))
$stList=array('rePrice'=>0,'agPrice'=>0);
$data['stList']=array('rePrice'=>$stList['rePrice'],'agPrice'=>$stList['agPrice'],'skPrice'=>($stList['rePrice']-$stList['agPrice']));
//---
$staffList=$staff->find(array('where'=>'username !="admin"','asArray'=>true));
$LcategoryList=$Lcategory->find(array('asArray'=>true));//'staff='.$this->staff[0]['sid']." and
$itemStatisticsList=$itemStatistics->find(array('select'=>'cid,staff,sum(price) as price,itemCategory,Month(date) as month',
'where'=>" Year(date)=".$year,'groupby'=>'staff,Month(date)','asArray'=>true));
$categoryList=$staff->find(array('select'=>'COUNT(*) as count,cid,category','where'=>'username !="admin"','groupby'=>'cid','asArray'=>true));
//print_r($itemStatisticsList);die;
//ceatre companyCollectHtml
foreach ($categoryList as $vlu){
$count=$vlu['count']+1;
$html='
'.$vlu['category'].'
';
$m1=0;$m2=0;$m3=0;$m4=0;$m5=0;$m6=0;$m7=0;$m8=0;$m9=0;$m10=0;$m11=0;$m12=0;$m13=0;
foreach ($staffList as $value){
if ($vlu['cid']==$value['cid']){
$html.='
';
$asum=0;
for ($i=1;$i<=12;$i++){
$falg=true;
foreach ($itemStatisticsList as $v){
if($value['sid']==$v['staff']&&$i==$v['month']){
if ($v['month']==1)
$m1+=$v['price'];
if ($v['month']==2)
$m2+=$v['price'];
if ($v['month']==3)
$m3+=$v['price'];
if ($v['month']==4)
$m4+=$v['price'];
if ($v['month']==5)
$m5+=$v['price'];
if ($v['month']==6)
$m6+=$v['price'];
if ($v['month']==7)
$m7+=$v['price'];
if ($v['month']==8)
$m8+=$v['price'];
if ($v['month']==9)
$m9+=$v['price'];
if ($v['month']==10)
$m10+=$v['price'];
if ($v['month']==11)
$m11+=$v['price'];
if ($v['month']==12)
$m12+=$v['price'];
$asum+=$v['price'];
$html.='
';$cateFalg=false;break;
}
}
}
if ($cateFalg){
$cateHtml.='
-
';$cateFalg=true;
}
$cateHtml.='
¥'.$catePrice.'
';
$htmlArray[$value['title']]['合计']=$cateHtml;
/*-- ---*/
}
//print_r($htmlArray);die;
$data['htmlArray']=$htmlArray;
//statistics html
$stList=$statistics->getOne(array('select'=>'sum(rePrice) as rePrice,sum(agPrice) as agPrice',
'where'=>'Month(date)='.$month." and Year(date)=".$year,'groupby'=>'Month(date)','asArray'=>true));
if(empty($stList))
$stList=array('rePrice'=>0,'agPrice'=>0);
$data['stList']=array('rePrice'=>$stList['rePrice'],'agPrice'=>$stList['agPrice'],'skPrice'=>($stList['rePrice']-$stList['agPrice']));
$monthHtml="";
for ($i=1;$i<=12;$i++){
if ($i==$month)
$monthHtml.='';
else
$monthHtml.='';
}
$data['monthHtml']=$monthHtml;
$data['year']=$year;
$data['month']=$month;
$data['memu']="receipt";
$data['staff']=$this->staff;
$data['receiptMemu']='companyCategoryCollect';
$data['verifyId']=$this->verifyId;
$data['executeId']=$this->executeId;
if (!empty($month)&&($year<=date("Y"))&&($monthfind(array('where'=>'(status=2 or status=4) and Year(date) ='.$year.' and Month(date) ='.$month,'asArray'=>true));
if(empty($receiptList)){ //generated files
ob_start();
$this->render ( "/admin/saeaStaffCollect", $data );
$this->cacheFile($path);die;
}
}
$this->render ( "/admin/saeaStaffCollect", $data );
}
function lyt(){
Doo::loadModel("receiptDetail");
$receiptDetail=new receiptDetail();
$receiptCollectList=$receiptDetail->find(array('where'=>'status=1 ','asArray'=>true));
foreach ($receiptCollectList as $key=>$value){
$receiptDetail=new receiptDetail();
$receiptDetail->pastDate=$value['date'];
$receiptDetail->update(array('where' => "rdid= '".$value['rdid']."'"));
}
}
function staffCollectMonthDetail(){
$year=$this->get_args('year')?$this->get_args('year'):"";
$month=$this->get_args('month')?$this->get_args('month'):"";
if(!$year)
$year=isset($this->params['year'])?$this->params['year']:date("Y");
if(!$month)
$month=isset($this->params['month'])?$this->params['month']:1;
Doo::loadModel('staff');
$staff=new staff();
Doo::loadModel("receiptDetail");
$receiptDetail=new receiptDetail();
Doo::loadModel('accountItem');
$accountItem=new accountItem();
Doo::loadModel('statistics');
$statistics=new statistics();
Doo::loadModel('L_category');
$lCategory=new L_category();
$staffList=$staff->find(array('where'=>'username!="admin"','asArray'=>true));
$categoryList=$staff->find(array('select'=>'COUNT(*) as count,cid,category','where'=>'username !="admin"','groupby'=>'cid','asArray'=>true));
$list=array();
foreach ($categoryList as $vlu){
//$html='
'.$v['category'].'
';
$r1=0;$r2=0;$r3=0;$r4=0;$r5=0;$r6=0;$r7=0;$r8=0;$r9=0;$r10=0;$r11=0;$r12=0;$r13=0;$r14=0;$r15=0;
$c1=0;$c2=0;$c3=0;$c4=0;$c5=0;$c6=0;
$p1=0;$p2=0;$p3=0;$p4=0;$p5=0;$p6=0;$p7=0;$p8=0;$p9=0;
$t1=0;$t2=0;$t3=0;$t4=0;$t5=0;
$s1=0;
$m1=0;
foreach ($staffList as $value){
if ($vlu['cid']==$value['cid']){
//pastDate
$receiptCollectList=$receiptDetail->find(array('select'=>'staff,item,sum(price) as price,itemCategory,Month(pastDate) as month',
'where'=>'staff='.$value['sid']." and status=1 and Year(pastDate)=".$year.' and Month(pastDate)='.$month,'groupby'=>'item,Month(pastDate),itemCategory','asArray'=>true));
// if ($value['sid']==42){
// print_r($receiptCollectList);die;
// }
if(!empty($receiptCollectList)){
$receiptL=array('日常相关费用'=>array(),'差旅相关费用'=>array(),'培训班费用'=>array(),'其他'=>array());
$html="";
$psum=0;
$item=array('市内交通费','市内出租费','办事处房租','电话费','水费','电费','办公费用','邮寄费','其他费用','车辆费用','广告费','团队建设费','物业管理费','宽带费');
foreach ($item as $va){
$falg=true;
foreach ($receiptCollectList as $v){
if($v['itemCategory']=='日常相关费用'){
if($v['item']==$va){
if ($va=='市内交通费')
$r1+=$v['price'];
if ($va=='市内出租费')
$r2+=$v['price'];
if ($va=='办事处房租')
$r3+=$v['price'];
if ($va=='电话费')
$r4+=$v['price'];
if ($va=='水费')
$r5+=$v['price'];
if ($va=='电费')
$r6+=$v['price'];
if ($va=='办公费用')
$r7+=$v['price'];
if ($va=='邮寄费')
$r8+=$v['price'];
if ($va=='其他费用')
$r9+=$v['price'];
if ($va=='车辆费用')
$r10+=$v['price'];
if ($va=='广告费')
$r11+=$v['price'];
if ($va=='团队建设费')
$r13+=$v['price'];
if ($va=='物业管理费')
$r14+=$v['price'];
if ($va=='宽带费')
$r15+=$v['price'];
$psum+=$v['price'];
$html.='
'.$v['price'].'
';$falg=false;break;
}
}
}
if($falg)
$html.='
-
';
}
$r12+=$psum;
if(!empty($psum))
$psum='
¥'.$psum.'
';
else
$psum='
-
';
$receiptL['日常相关费用']=$psum.$html;
/*-----------------------------------*/
$html="";
$psum=0;
$item=array('往来交通费','市内交通费','出差住宿费','出差补助','其他费用');
foreach ($item as $va){
$falg=true;
foreach ($receiptCollectList as $v){
if($v['itemCategory']=='差旅相关费用'){
if($v['item']==$va){
if ($va=='往来交通费')
$c1+=$v['price'];
if ($va=='市内交通费')
$c2+=$v['price'];
if ($va=='出差住宿费')
$c3+=$v['price'];
if ($va=='出差补助')
$c4+=$v['price'];
if ($va=='其他费用')
$c5+=$v['price'];
$psum+=$v['price'];
$html.='
'.$v['price'].'
';$falg=false;break;
}
}
}
if($falg)
$html.='
-
';
}
$c6+=$psum;
if(!empty($psum))
$psum='
¥'.$psum.'
';
else
$psum='
-
';
$receiptL['差旅相关费用']=$psum.$html;
/*-------------------------------------*/
$html="";
$psum=0;
$item=array('场租费','薪酬','住宿费','交通费','餐饮费','办公费','公关费','其他');
foreach ($item as $va){
$falg=true;
foreach ($receiptCollectList as $v){
if($v['itemCategory']=='培训班费用'){
if($v['item']==$va){
if ($va=='场租费')
$p1+=$v['price'];
if ($va=='薪酬')
$p2+=$v['price'];
if ($va=='住宿费')
$p3+=$v['price'];
if ($va=='交通费')
$p4+=$v['price'];
if ($va=='餐饮费')
$p5+=$v['price'];
if ($va=='办公费')
$p6+=$v['price'];
if ($va=='公关费')
$p7+=$v['price'];
if ($va=='其他')
$p8+=$v['price'];
$psum+=$v['price'];
$html.='
'.$v['price'].'
';$falg=false;break;
}
}
}
if($falg)
$html.='
-
';
}
$p9+=$psum;
if(!empty($psum))
$psum='
¥'.$psum.'
';
else
$psum='
-
';
$receiptL['培训班费用']=$psum.$html;
/*-------------------------------------*/
$html="";
$psum=0;
$item=array('公关费','广告费','借款','可自加费用');
foreach ($item as $va){
$falg=true;
foreach ($receiptCollectList as $v){
if($v['itemCategory']=='其他'){
// if ($value['sid']==42){
//
// echo var_dump($v['item']);
// echo var_dump($va);
// echo var_dump($v['item']==" ".$va);
// echo $v['item']."==".$va."/ ";
// //print_r( $receiptCollectList);//echo $va;
// }
if(trim($v['item'])==$va){
if ($va=='公关费')
$t1+=$v['price'];
if ($va=='广告费'){
$t2+=$v['price'];
}
if ($va=='借款')
$t3+=$v['price'];
if ($va=='可自加费用')
$t4+=$v['price'];
$psum+=$v['price'];
$html.='
'.$v['price'].'
';$falg=false;break;
}
}
}
if($falg)
$html.='
-
';
}
$t5+=$psum;
if(!empty($psum))
$psum='
¥'.$psum.'
';
else
$psum='
-
';
$receiptL['其他']=$psum.$html;
/*-------------------------------------*/
$html="";
$psum=0;
foreach ($receiptCollectList as $v){
if($v['itemCategory']=='报销金额调整'){
if (!empty($v['price'])){
$psum+=$v['price'];
}
}
}
$s1+=$psum;
if(!empty($psum))
$psum='
';
}
$monthStaffPrice=$receiptDetail->find(array('select'=>'staff,item,sum(price) as price,itemCategory,Month(pastDate) as month',
'where'=>'staff='.$value['sid']." and status=1 and Year(pastDate)=".$year.' and Month(pastDate)='.$month,'groupby'=>'Month(pastDate)','asArray'=>true));
//echo 'staff='.$value['sid']." and status=1 and Year(date)=".$year.' and Month(date)='.$month;
if(!empty($monthStaffPrice[0]['price'])){
$m1+=$monthStaffPrice[0]['price'];
$receiptL['monthStaffPrice']='
';
$list[''.$vlu['category'].'小计']=$receiptL;
}
$data['list']=$list;
$receiptCollectList=$receiptDetail->find(array('select'=>'staff,item,sum(price) as price,itemCategory,Month(pastDate) as month',
'where'=>" status=1 and Year(pastDate)=".$year.' and Month(pastDate)='.$month,'groupby'=>'item,Month(pastDate),itemCategory','asArray'=>true));
$data['monthPriceHtml']=$this->_getMonthCollectDetail($receiptCollectList);
//statistics html
$stList=$statistics->getOne(array('select'=>'sum(rePrice) as rePrice,sum(agPrice) as agPrice',
'where'=>'Month(date)='.$month." and Year(date)=".$year,'groupby'=>'Month(date)','asArray'=>true));
if(empty($stList))
$stList=array('rePrice'=>0,'agPrice'=>0);
$data['stList']=array('rePrice'=>$stList['rePrice'],'agPrice'=>$stList['agPrice'],'skPrice'=>($stList['rePrice']-$stList['agPrice']));
$monthHtml="";
for ($i=1;$i<=12;$i++){
if ($i==$month)
$monthHtml.='';
else
$monthHtml.='';
}
$data['monthHtml']=$monthHtml;
$data['year']=$year;
$data['month']=$month;
$data['memu']="receipt";
$data['staff']=$this->staff;
$data['receiptMemu']='companyCategoryCollect';
$data['verifyId']=$this->verifyId;
$data['executeId']=$this->executeId;
$this->render ( "/admin/staffCollectMonthDetail", $data );
//$this->render ( "/admin/saeaStaffCollectDetail", $data );
}
function staffCollectMonthDetail2(){
$year=$this->get_args('year')?$this->get_args('year'):"";
$month=$this->get_args('month')?$this->get_args('month'):"";
if(!$year)
$year=isset($this->params['year'])?$this->params['year']:date("Y");
if(!$month)
$month=isset($this->params['month'])?$this->params['month']:1;
Doo::loadModel('staff');
$staff=new staff();
Doo::loadModel("receiptDetail");
$receiptDetail=new receiptDetail();
Doo::loadModel('accountItem');
$accountItem=new accountItem();
Doo::loadModel('statistics');
$statistics=new statistics();
Doo::loadModel('L_category');
$lCategory=new L_category();
$staffList=$staff->find(array('where'=>'username!="admin"','asArray'=>true));
$categoryList=$staff->find(array('select'=>'COUNT(*) as count,cid,category','where'=>'username !="admin"','groupby'=>'cid','asArray'=>true));
$list=array();
foreach ($categoryList as $vlu){
//$html='
'.$v['category'].'
';
$r1=0;$r2=0;$r3=0;$r4=0;$r5=0;$r6=0;$r7=0;$r8=0;$r9=0;$r10=0;$r11=0;$r12=0;$r13=0;$r14=0;$r15=0;
$c1=0;$c2=0;$c3=0;$c4=0;$c5=0;$c6=0;
$p1=0;$p2=0;$p3=0;$p4=0;$p5=0;$p6=0;$p7=0;$p8=0;$p9=0;
$t1=0;$t2=0;$t3=0;$t4=0;$t5=0;
$s1=0;
$m1=0;
foreach ($staffList as $value){
if ($vlu['cid']==$value['cid']){
$receiptCollectList=$receiptDetail->find(array('select'=>'staff,item,sum(price) as price,itemCategory,Month(date) as month',
'where'=>'staff='.$value['sid']." and status=1 and Year(date)=".$year.' and Month(date)='.$month,'groupby'=>'item,Month(date),itemCategory','asArray'=>true));
if(!empty($receiptCollectList)){
$receiptL=array('日常相关费用'=>array(),'差旅相关费用'=>array(),'培训班费用'=>array(),'其他'=>array());
$html="";
$psum=0;
$item=array('市内交通费','市内出租费','办事处房租','电话费','水费','电费','办公费用','邮寄费','其他费用','车辆费用','广告费','团队建设费','物业管理费','宽带费');
foreach ($item as $va){
$falg=true;
foreach ($receiptCollectList as $v){
if($v['itemCategory']=='日常相关费用'){
if($v['item']==$va){
if ($va=='市内交通费')
$r1+=$v['price'];
if ($va=='市内出租费')
$r2+=$v['price'];
if ($va=='办事处房租')
$r3+=$v['price'];
if ($va=='电话费')
$r4+=$v['price'];
if ($va=='水费')
$r5+=$v['price'];
if ($va=='电费')
$r6+=$v['price'];
if ($va=='办公费用')
$r7+=$v['price'];
if ($va=='邮寄费')
$r8+=$v['price'];
if ($va=='其他费用')
$r9+=$v['price'];
if ($va=='车辆费用')
$r10+=$v['price'];
if ($va=='广告费')
$r11+=$v['price'];
if ($va=='团队建设费')
$r13+=$v['price'];
if ($va=='物业管理费')
$r14+=$v['price'];
if ($va=='宽带费')
$r15+=$v['price'];
$psum+=$v['price'];
$html.='
'.$v['price'].'
';$falg=false;break;
}
}
}
if($falg)
$html.='
-
';
}
$r12+=$psum;
if(!empty($psum))
$psum='
¥'.$psum.'
';
else
$psum='
-
';
$receiptL['日常相关费用']=$psum.$html;
/*-----------------------------------*/
$html="";
$psum=0;
$item=array('往来交通费','市内交通费','出差住宿费','出差补助','其他费用');
foreach ($item as $va){
$falg=true;
foreach ($receiptCollectList as $v){
if($v['itemCategory']=='差旅相关费用'){
if($v['item']==$va){
if ($va=='往来交通费')
$c1+=$v['price'];
if ($va=='市内交通费')
$c2+=$v['price'];
if ($va=='出差住宿费')
$c3+=$v['price'];
if ($va=='出差补助')
$c4+=$v['price'];
if ($va=='其他费用')
$c5+=$v['price'];
$psum+=$v['price'];
$html.='
'.$v['price'].'
';$falg=false;break;
}
}
}
if($falg)
$html.='
-
';
}
$c6+=$psum;
if(!empty($psum))
$psum='
¥'.$psum.'
';
else
$psum='
-
';
$receiptL['差旅相关费用']=$psum.$html;
/*-------------------------------------*/
$html="";
$psum=0;
$item=array('场租费','薪酬','住宿费','交通费','餐饮费','办公费','公关费','其他');
foreach ($item as $va){
$falg=true;
foreach ($receiptCollectList as $v){
if($v['itemCategory']=='培训班费用'){
if($v['item']==$va){
if ($va=='场租费')
$p1+=$v['price'];
if ($va=='薪酬')
$p2+=$v['price'];
if ($va=='住宿费')
$p3+=$v['price'];
if ($va=='交通费')
$p4+=$v['price'];
if ($va=='餐饮费')
$p5+=$v['price'];
if ($va=='办公费')
$p6+=$v['price'];
if ($va=='公关费')
$p7+=$v['price'];
if ($va=='其他')
$p8+=$v['price'];
$psum+=$v['price'];
$html.='
'.$v['price'].'
';$falg=false;break;
}
}
}
if($falg)
$html.='
-
';
}
$p9+=$psum;
if(!empty($psum))
$psum='
¥'.$psum.'
';
else
$psum='
-
';
$receiptL['培训班费用']=$psum.$html;
/*-------------------------------------*/
$html="";
$psum=0;
$item=array('公关费','广告费','借款','可自加费用');
foreach ($item as $va){
$falg=true;
foreach ($receiptCollectList as $v){
if($v['itemCategory']=='其他'){
if($v['item']==$va){
if ($va=='公关费')
$t1+=$v['price'];
if ($va=='广告费')
$t2+=$v['price'];
if ($va=='借款')
$t3+=$v['price'];
if ($va=='可自加费用')
$t4+=$v['price'];
$psum+=$v['price'];
$html.='
'.$v['price'].'
';$falg=false;break;
}
}
}
if($falg)
$html.='
-
';
}
$t5+=$psum;
if(!empty($psum))
$psum='
¥'.$psum.'
';
else
$psum='
-
';
$receiptL['其他']=$psum.$html;
/*-------------------------------------*/
$html="";
$psum=0;
foreach ($receiptCollectList as $v){
if($v['itemCategory']=='报销金额调整'){
if (!empty($v['price'])){
$psum+=$v['price'];
}
}
}
$s1+=$psum;
if(!empty($psum))
$psum='
';
}
$monthStaffPrice=$receiptDetail->find(array('select'=>'staff,item,sum(price) as price,itemCategory,Month(date) as month',
'where'=>'staff='.$value['sid']." and status=1 and Year(date)=".$year.' and Month(date)='.$month,'asArray'=>true));
if(!empty($monthStaffPrice[0]['price'])){
$m1+=$monthStaffPrice[0]['price'];
$receiptL['monthStaffPrice']='
';
}
$monthStaffPrice=$receiptDetail->find(array('select'=>'staff,item,sum(price) as price,itemCategory,Month(pastDate) as month',
'where'=>'cid='.$value['cid']." and status=1 and Year(pastDate)=".$year.' and Month(pastDate)='.$month,'asArray'=>true));
if(!empty($monthStaffPrice[0]['price']))
$receiptL['monthStaffPrice']='
¥'.$monthStaffPrice[0]['price'].'
';
else
$receiptL['monthStaffPrice']='
-
';
$list[$value['title']]=$receiptL;
}
$data['list']=$list;
$receiptCollectList=$receiptDetail->find(array('select'=>'staff,item,sum(price) as price,itemCategory,Month(pastDate) as month',
'where'=>" status=1 and Year(pastDate)=".$year.' and Month(pastDate)='.$month,'groupby'=>'item,Month(pastDate),itemCategory','asArray'=>true));
$data['monthPriceHtml']=$this->_getMonthCollectDetail($receiptCollectList);
//print_r($data['monthPriceHtml']);
// foreach ($data['monthPriceHtml'] as $value){
// echo $value;
// }
// die;
//statistics html
$stList=$statistics->getOne(array('select'=>'sum(rePrice) as rePrice,sum(agPrice) as agPrice',
'where'=>'Month(date)='.$month." and Year(date)=".$year,'groupby'=>'Month(date)','asArray'=>true));
if(empty($stList))
$stList=array('rePrice'=>0,'agPrice'=>0);
$data['stList']=array('rePrice'=>$stList['rePrice'],'agPrice'=>$stList['agPrice'],'skPrice'=>($stList['rePrice']-$stList['agPrice']));
$monthHtml="";
for ($i=1;$i<=12;$i++){
if ($i==$month)
$monthHtml.='';
else
$monthHtml.='';
}
$data['monthHtml']=$monthHtml;
$data['year']=$year;
$data['month']=$month;
$data['memu']="receipt";
$data['staff']=$this->staff;
$data['receiptMemu']='companyCategoryCollect';
$data['verifyId']=$this->verifyId;
$data['executeId']=$this->executeId;
$this->render ( "/admin/companyMonthCollectDetail", $data );
}
function staffCollectDetail(){
$year=$this->get_args('year')?$this->get_args('year'):date("Y");
$staffname=$this->get_args('username')?$this->get_args('username'):"";
$pcid=$this->get_args('category')?$this->get_args('category'):"";
if(!$staffname){
$staffname=isset($this->params['staffname'])?$this->params['staffname']:"";
$staffname= urldecode($staffname);
}
Doo::loadModel('staff');
$staff=new staff();
Doo::loadModel("receiptDetail");
$receiptDetail=new receiptDetail();
Doo::loadModel('accountItem');
$accountItem=new accountItem();
Doo::loadModel('statistics');
$statistics=new statistics();
Doo::loadModel('L_category');
$lCategory=new L_category();
$staffList=$staff->find(array('asArray'=>true));
$stHtml='';$stTitle="";$staffId=0;$cid=0;$ocid=0;
foreach ($staffList as $value){
if ($value['username']==$staffname&&$value['username']!='admin'){
$stTitle=$value['category'].'-'.$value['username'];
$staffId=$value['sid'];
$cid=$value['cid'];
$ocid=$value['cid'];
if (!empty($value['othercid']))
$cid=$value['cid'].','.$value['othercid'];
$stHtml.='';
}elseif ($value['username']!='admin')
$stHtml.='';
}
$data['lCategoryHtml']=$lCategory->find(array('where'=>'cid in('.$cid.')','asArray'=>true));
if(empty($pcid))
$pcid=$ocid;
$data['ocid']=$pcid;
$path=SITE_PATH.$this->STAFFCOLLECTPATH."staffCollectDetail_".$year."_".$staffId.".htmls";
$this->showCache($path);
//
$receiptCollectList=$receiptDetail->find(array('select'=>'staff,item,sum(price) as price,itemCategory,Month(pastDate) as month',
'where'=>'staff='.$staffId." and cid=".$pcid." and status=1 and Year(pastDate)=".$year,'groupby'=>'item,Month(pastDate),itemCategory','asArray'=>true));
$accountList=$accountItem->find(array('asArray'=>true));
//create CollectDetail HTML
$collectHtml=array();
foreach ($accountList as $key=>$value){
$html="";$asum=0;
for ($i=1;$i<=12;$i++){
$falg=true;
foreach ($receiptCollectList as $v) {
if($value['category']==$v['itemCategory']&&$v['item']==$value['name']&&$i==$v['month']){
$asum+=$v['price'];
$html.='
¥'.$v['price'].'
';$falg=false;break;
}
}
if($falg)
$html.='
-
';
}
$html.='
¥'.$asum.'
';
$collectHtml[$value['category']][$value['name']]=$html;
}
$data['collectHtml']=$collectHtml;
//create Adjustment price html
$receiptCollectList=$receiptDetail->find(array('select'=>'staff,sum(price) as price,itemCategory,Month(pastDate) as month',
'where'=>'staff='.$staffId." and cid=".$pcid." and status=1 and Year(pastDate)=".$year,'groupby'=>'itemCategory,Month(pastDate)','asArray'=>true));
$adjustment=array();$collectArray=array('日常相关费用'=>array(),'差旅相关费用'=>array(),'培训班费用'=>array(),'其他'=>array());
$collectHtml=$this->collectHtml($receiptCollectList,'日常相关费用','b');
array_push($collectArray['日常相关费用'], $collectHtml);
$collectHtml=$this->collectHtml($receiptCollectList,'差旅相关费用','b');
array_push($collectArray['差旅相关费用'], $collectHtml);
$collectHtml=$this->collectHtml($receiptCollectList,'培训班费用','b');
array_push($collectArray['培训班费用'], $collectHtml);
$collectHtml=$this->collectHtml($receiptCollectList,'其他','b');
array_push($collectArray['其他'], $collectHtml);
$data['collectArray']=$collectArray;
$collectHtml=$this->collectHtml($receiptCollectList,'报销金额调整');
array_push($adjustment, $collectHtml);
$data['adjustment']=$adjustment;
//total price html
$collectHtml="";$total=0;
for ($i=1;$i<=12;$i++){
$sumPrice=0;
foreach ($receiptCollectList as $key=>$value){
if($value['month']==$i){
$sumPrice+=$value['price'];
}
}
if ($sumPrice==0)
$collectHtml.='
-
';
else
$collectHtml.='
¥'.$sumPrice.'
';
$total+=$sumPrice;
}
$collectHtml.='
¥'.$total.'
';
//statistics html
$stList=$statistics->statisticsByYear($year,$staffId);
if(empty($stList))
$stList=array('rePrice'=>0,'agPrice'=>0);
$data['stList']=array('rePrice'=>$stList['rePrice'],'agPrice'=>$stList['agPrice'],'skPrice'=>($stList['rePrice']-$stList['agPrice']));
$data['totalPrice']=$collectHtml;
$data['totalYear']=$total;
$data['stHtml']=$stHtml;
$data['year']=$year;
$data['stTitle']=$stTitle;
$data['memu']="receipt";
$data['staff']=$this->staff;
$data['receiptMemu']='companyCategoryCollect';
$data['verifyId']=$this->verifyId;
$data['executeId']=$this->executeId;
if ($yearfind(array('where'=>'staff='.$staffId.' and (status=2 or status=4) and Year(date) ='.$year,'asArray'=>true));
if(empty($receiptList)){ //generated files
ob_start();
$this->render ( "/admin/saeaStaffCollectDetail", $data );
$this->cacheFile($path);die;
}
}
$this->render ( "/admin/saeaStaffCollectDetail", $data );
}
function BUGFLAG(){
$status=isset($this->params['status'])&&is_numeric($this->params['status'])?$this->params['status']:0;
$year=$this->get_args('year')?$this->get_args('year'):date('Y');
$month=$this->get_args('month')?$this->get_args('month'):"";
$cid=$this->get_args('cid')?$this->get_args('cid'):0;
$sid=$this->get_args('sid')?$this->get_args('sid'):0;
if (empty($status))
$status=$this->get_args('status')&&is_numeric($this->get_args('status'))?$this->get_args('status'):0;
$page_size=12;
$page = isset($this->params ['page'])&&is_numeric ( $this->params ['page'] ) ? $this->params ['page'] : 1;
$vidList=array();
$button=0;
Doo::loadModel('verify');
$verify=new verify();
Doo::loadModel('receipt');
$receipt=new receipt();
Doo::loadModel('staff');
$staff=new staff();
Doo::loadModel('L_category');
$Lcategory=new L_category();
$dateCondition=" and Year(date) =".$year;
if(!empty($month))
$dateCondition=" and Year(date) =".$year." and Month(date) = ".$month;
$categoryList=$Lcategory->find(array('asArray'=>true));
$staffList=$staff->find(array('where'=>'cid='.$cid,'asArray'=>true));
$cateCondition="";$staffCondition="";$approvalCondition="";
if (!empty($cid))
$cateCondition=' and cid='.$cid;
if(!empty($sid)){
$staffCondition=' and staff='.$sid;
$cateCondition="";
}
$approvalCondition=" and status=".$status;
if($status==2){
//查找角色审批人
$approvalCondition=' and status='.$status.' and (nowStaff like "%,'.$this->staff[0]['sid'].'%" or nowStaff like "%'.$this->staff[0]['sid'].',%" or nowStaff='.$this->staff[0]['sid'].' )';
}
if($status==5){//and verifyStaff like "%\"'.$this->staff[0]['sid'].'\":{%"
$approvalCondition=' and status=2 ';
}
if($status==1){
$approvalCondition=' and (status='.$status.' or status=6) ';
}
//nowStaff like "%'.$this->staff[0]['sid'].'%"
$pageinfo['page']=array('previous'=>'');
if ($status==0){
$pageinfo=$this->get_page("CLD_receipt", $dateCondition.$cateCondition.$staffCondition.' and status!=5', $page, $page_size, "approvalExpenses","","");
$receiptList=$receipt->find(array('where'=>'status!=5 '.$dateCondition.$cateCondition.$staffCondition
,'limit'=>$pageinfo ['lower'].','.$page_size,'desc'=>'rid','asArray'=>true));
//echo 'status!=5 '.$dateCondition.$cateCondition.$staffCondition.' and verify in ('.$vid.')';
}else
$receiptList=$receipt->find(array('where'=>'status!=5 '.$dateCondition.$cateCondition.$staffCondition.$approvalCondition
,'desc'=>'rid','asArray'=>true));
$rLRes=$receipt->find(array('where'=>'status=2 and (nowStaff like "%,'.$this->staff[0]['sid'].'%" or nowStaff like "%'.$this->staff[0]['sid'].',%" or nowStaff='.$this->staff[0]['sid'].' )'.$cateCondition.$staffCondition
,'desc'=>'rid','asArray'=>true));
//echo '1 '.$dateCondition.$cateCondition.$staffCondition.' and verify in ('.$vid.')';
//print_r($pageinfo);
$Locate=0;
foreach ($receiptList as $key=>$value){
$receiptList[$key]['Locate']=$Locate;$Locate++;
$receiptList[$key]['reviseDetail']=array();
if (!empty($value['reviseDetail']))
$receiptList[$key]['reviseDetail']=json_decode($value['reviseDetail'],true);
$receiptList[$key]['accountItem']=json_decode($value['accountItem'],true);
$categoryDetil=$Lcategory->getOne(array('where'=>'cid='.$value['cid'],'asArray'=>true));
$receiptList[$key]['category']=$categoryDetil['title'];
$verifyList=$verify->getOne(array('where'=>'vid='.$value['verify'],'asArray'=>true));
$verifyList=json_decode($verifyList['staff'],true);//status opinion
$verifyStaff=json_decode($value['verifyStaff'],true);
foreach ($verifyList as $k=>$v){
//init verifyStaff
$verifyList[$k]['date']="";
$verifyList[$k]['opinion']="";
$verifyList[$k]['status']="";
if (empty($verifyStaff)){
$verifyList[$k]['date']="";
$verifyList[$k]['opinion']="";
if ($v[0]==$this->staff[0]['sid']){
$verifyList[$k]['status']=4;
$button=4;
}
}else{
$flag=true;
foreach ($verifyStaff as $m=>$u){
if ($v[0]==$m){
$verifyList[$k]['date']=$u['date'];
$verifyList[$k]['opinion']=$u['opinion'];
$verifyList[$k]['status']=$u['status'];
$flag=false;
break;
}
// elseif($v[0]==$this->staff[0]['sid']){$verifyList[$k]['status']=4;break;}
// if ($v[0]==$this->staff[0]['sid']&&$m!=$this->staff[0]['sid']){$verifyList[$k]['status']=4;}
// if($v[0]==$this->staff[0]['sid']&&$v[0]==$m){if ($u['status']!=1&&$u['status']!=3)$button=4;}
}
if($flag){//检测可编辑
if($v[0]==$this->staff[0]['sid']){
$verifyList[$k]['status']=4;$button=4;
}
}
}
}
$receiptList[$key]['verifyList']=$verifyList;
$receiptList[$key]['staffDetail']=$staff->getOne(array('where'=>'sid='.$value['staff'],'asArray'=>true));
$receiptList[$key]['button']=$button;
$receiptList[$key]['nowStaffArray']=explode(',',$value['nowStaff']);
}
//print_r($receiptList);die;
//$data['verifyDetail']=$verifyDetail;
$mothHtml="";
for($i=1;$i<=12;$i++){
if($month==$i)
$mothHtml.='';
else
$mothHtml.='';
}
$data['mothHtml']=$mothHtml;
$data['page']=$pageinfo;
$data['receiptList']=$receiptList;
$data['receiptApprovalCount']=count($rLRes);
$data['status']=$status;
$data['year']=$year;
$data['categoryList']=$categoryList;
$data['staffList']=$staffList;
$data['cid']=$cid;
$data['sid']=$sid;
//print_r($receiptList);
$data['memu']="receipt";
$data['staff']=$this->staff;
$data['receiptMemu']='approvalExpenses';
$data['verifyId']=$this->verifyId;
$data['executeId']=$this->executeId;
$this->render ( "/admin/FALG", $data );
}
function ajaxGetReceiptOrder(){
$receiptOrder=$this->get_args('receiptOrder')?$this->get_args('receiptOrder'):"";
if (!empty($receiptOrder)){
Doo::loadModel('receipt');
$receipt=new receipt();
Doo::loadModel ( 'staff' );
$staff = new staff ();
$receiptInfo=$receipt->getOne(array('where'=>' receiptOrder="'.$receiptOrder.'"','asArray'=>true));
$verifyStaff=json_decode($receiptInfo['verifyStaff'],true);
$html='
单号:'.$receiptOrder.'
金额:¥'.$receiptInfo['sum'].'
';
foreach ($verifyStaff as $key=>$value){
$staffInfo=$staff->getOne(array('select'=>'username','where'=>' sid="'.$key.'"','asArray'=>true));
$html.='
'.$staffInfo['username'].'
'.$value['opinion'].'
';
}
$html.='
';
echo json_encode(array('status'=>1,'receiptHtml'=>$html));die;
}
echo json_encode(array('status'=>2,'receiptHtml'=>''));die;
}
function _getMonthCollectDetail($receiptCollectList){
if(!empty($receiptCollectList)){
$receiptL=array('日常相关费用'=>array(),'差旅相关费用'=>array(),'培训班费用'=>array(),'其他'=>array());
$html="";
$psum=0;
$item=array('市内交通费','市内出租费','办事处房租','电话费','水费','电费','办公费用','邮寄费','其他费用','车辆费用','广告费','团队建设费','物业管理费','宽带费');
foreach ($item as $value){
$falg=true;
foreach ($receiptCollectList as $v){
if($v['itemCategory']=='日常相关费用'){
if($v['item']==$value){
$psum+=$v['price'];
$html.='
'.$v['price'].'
';$falg=false;break;
}
}
}
if($falg)
$html.='
-
';
}
if(!empty($psum))
$psum='
¥'.$psum.'
';
else
$psum='
-
';
$receiptL['日常相关费用']=$psum.$html;
/*-----------------------------------*/
$html="";
$psum=0;
$item=array('往来交通费','市内交通费','出差住宿费','出差补助','其他费用');
foreach ($item as $value){
$falg=true;
foreach ($receiptCollectList as $v){
if($v['itemCategory']=='差旅相关费用'){
if($v['item']==$value){
$psum+=$v['price'];
$html.='
'.$v['price'].'
';$falg=false;break;
}
}
}
if($falg)
$html.='
-
';
}
if(!empty($psum))
$psum='
¥'.$psum.'
';
else
$psum='
-
';
$receiptL['差旅相关费用']=$psum.$html;
/*-------------------------------------*/
$html="";
$psum=0;
$item=array('场租费','薪酬','住宿费','交通费','餐饮费','办公费','公关费','其他');
foreach ($item as $value){
$falg=true;
foreach ($receiptCollectList as $v){
if($v['itemCategory']=='培训班费用'){
if($v['item']==$value){
$psum+=$v['price'];
$html.='
'.$v['price'].'
';$falg=false;break;
}
}
}
if($falg)
$html.='
-
';
}
if(!empty($psum))
$psum='
¥'.$psum.'
';
else
$psum='
-
';
$receiptL['培训班费用']=$psum.$html;
/*-------------------------------------*/
$html="";
$psum=0;
$item=array('公关费','广告费','借款','可自加费用');
foreach ($item as $value){
$falg=true;
foreach ($receiptCollectList as $v){
if($v['itemCategory']=='其他'){
if($v['item']==$value){
$psum+=$v['price'];
$html.='
'.$v['price'].'
';$falg=false;break;
}
}
}
if($falg)
$html.='
-
';
}
if(!empty($psum))
$psum='
¥'.$psum.'
';
else
$psum='
-
';
$receiptL['其他']=$psum.$html;
/*-------------------------------------*/
$html="";
$psum=0;
foreach ($receiptCollectList as $v){
if($v['itemCategory']=='报销金额调整'){
if (!empty($v['price']))
$psum+=$v['price'];
}
}
if(!empty($psum))
$psum='
';
if(filter_var($value['email'], FILTER_VALIDATE_EMAIL)){
$this->SMail($value['email'], "CLD提醒您,您的报销单已同意支付", $html);
$this->SMail('1971614655@qq.com', "CLD提醒您,您的报销单已同意支付", $html);
$this->SMail('cpthought@vip.qq.com', "CLD提醒您,您的报销单已同意支付", $html);
$receipt=new receipt();
$receipt->notice=1;
$receipt->update(array('where'=>'staff='.$value['sid'].' and status=1 and notice=0'));
}
}
//审批人
$verifyList=$verify->find(array('where'=>" staff like '%[\"".$value['sid']."\",%'",'asArray'=>true));
$html='
CLD 邮件提醒
Hi,'.$value['username'].'
美好的一天从今天开始,您需要关注以下事项:
以下报销单需要您的审批:
';
foreach ($verifyList as $k=>$v){
$receiptList=$receipt->find(array('where'=>"verify=".$v['vid']." and status=2 and verifyStaff not like '%{\"".$value['sid']."\":%'",'asArray'=>true));
foreach ($receiptList as $r=>$l){
$category=$Lcategory->getOne(array('where'=>'cid='.$l['cid'],'asArray'=>true));
$staffDetile=$staff->getOne(array('where'=>'sid='.$l['staff'],'asArray'=>true));
$html.='
'.$value['1'].''.$value['date'].''; if (isset($value['rolename'])) $htmlLoan.=$value['rolename']; $htmlLoan.='
'.$value['opinion'].'