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"]); ReceiptController::$NEW= $this->getReceiptCount(); ReceiptController::$NEW2= $this->getExeCount(); 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 invoice(){ $data['memu']="invoice"; $data['staff']=$this->staff; $data['receiptMemu']='invoice'; $data['verifyId']=$this->verifyId; $data['executeId']=$this->executeId; $this->render ( "/admin/invoice", $data ); } function invoiceAdd(){ Doo::loadModel('L_category'); $lCategory=new L_category(); $category=$lCategory->find(array('asArray'=>true)); $data['category']=$category; $data['memu']="invoice"; $data['staff']=$this->staff; $data['receiptMemu']='invoice'; $data['verifyId']=$this->verifyId; $data['executeId']=$this->executeId; $this->render ( "/admin/invoiceAdd", $data ); } function invoiceAddDo(){ $cid=$this->get_args('cid')&&is_numeric($this->get_args('cid'))?$this->get_args('cid'):0; $invoiceType=$this->get_args('invoiceType')&&is_numeric($this->get_args('invoiceType'))?$this->get_args('invoiceType'):0; $doPost=$this->get_args('doPost')&&is_numeric($this->get_args('doPost'))?$this->get_args('doPost'):0; $invoicePrice=$this->get_args('invoicePrice')?$this->get_args('invoicePrice'):""; $invoiceElement=$this->get_args('invoiceElement')?$this->get_args('invoiceElement'):""; $invoiceTitle=$this->get_args('invoiceTitle')?$this->get_args('invoiceTitle'):""; $invoiceCompany=$this->get_args('invoiceCompany')?$this->get_args('invoiceCompany'):""; $TIN=$this->get_args('TIN')?$this->get_args('TIN'):""; $address=$this->get_args('address')?$this->get_args('address'):""; $phone=$this->get_args('phone')?$this->get_args('phone'):""; $bank=$this->get_args('bank')?$this->get_args('bank'):""; $bankAccount=$this->get_args('bankAccount')?$this->get_args('bankAccount'):""; $recipients=$this->get_args('recipients')?$this->get_args('recipients'):""; $recipientsPhone=$this->get_args('recipientsPhone')?$this->get_args('recipientsPhone'):""; $recipientsAddress=$this->get_args('recipientsAddress')?$this->get_args('recipientsAddress'):""; $mailItems=$this->get_args('mailItems')?$this->get_args('mailItems'):""; $remark=$this->get_args('remark')?$this->get_args('remark'):""; if(!empty($cid)&&!empty($invoicePrice)&&!empty($invoiceElement)){ Doo::loadModel('invoice'); $invoice=new invoice(); Doo::loadModel('L_category'); $lCategory=new L_category(); Doo::loadModel('invoiceManage'); $invoiceManage=new invoiceManage(); $categoryDetil=$lCategory->getOne(array('SELECT'=>'title','where'=>'cid='.$cid,'asArray'=>true)); $invoiceManageDetail=$invoiceManage->getOne(array('SELECT'=>'title','where'=>'mold="发票审批"','asArray'=>true)); $invoice->cid=$cid; $invoice->categoryName=$categoryDetil['title']; $invoice->invoiceElement=$invoiceElement; $invoice->invoicePrice=$invoicePrice; $invoice->invoiceType=$invoiceType; if ($invoiceType==0) $invoice->invoiceTitle=$invoiceTitle; elseif ($invoiceType==1){ $invoice->invoiceTitle=$invoiceCompany; $invoice->TIN=$TIN; $invoice->address=$address; $invoice->phone=$phone; $invoice->bank=$bank; $invoice->bankAccount=$$bankAccount; } $invoice->doPost=$doPost; if ($doPost==1){ $invoice->recipients=$recipients; $invoice->recipientsPhone=$recipientsPhone; $invoice->recipientsAddress=$recipientsAddress; } $invoice->status=1; $invoice->invoiceSerial="#F".date("Ymd").mt_rand(1000,9999); $invoice->date=date("'Y-m-d H:i:s"); $invoice->sid=$this->staff[0]['sid']; $invoice->userName=$this->staff[0]['username']; $invoice->invoiceManage=$invoiceManageDetail['staff']; $staffId=$a=json_decode($invoiceManageDetail['staff']); $invoice->pendingApprovals=$staffId[0][0]; $invoice->insert(); } return "/invoice"; } function invoiceApproval(){ Doo::loadModel('invoice'); $invoice=new invoice(); Doo::loadModel('invoiceManage'); $invoiceManage=new invoiceManage(); Doo::loadClass('XDeode'); $XDeode=new XDeode(5); $invoiceList=$invoice->find(array('where'=>'status=1 and pendingApprovals='.$this->staff[0]['sid'],'asArray'=>true)); foreach ($invoiceList as $key=>$value){ $invoiceList[$key]['iidKey']=$XDeode->encode($value['iid']);//base64_encode($value['iid']); } $data['invoiceList']=$invoiceList; $data['memu']="invoice"; $data['staff']=$this->staff; $data['receiptMemu']='invoiceApproval'; $data['verifyId']=$this->verifyId; $data['executeId']=$this->executeId; $this->render ( "/admin/invoiceApproval", $data ); } function invoiceDetail(){ Doo::loadClass('XDeode'); $XDeode=new XDeode(5); $iid=isset($this->params['iid'])?$this->params['iid']:""; $iid=$XDeode->decode($iid);//base64_decode($iid); Doo::loadModel('invoice'); $invoice=new invoice(); Doo::loadModel('invoiceManage'); $invoiceManage=new invoiceManage(); $invoiceDetail=$invoice->getOne(array('where'=>'status=1 and pendingApprovals='.$this->staff[0]['sid'].' and iid='.$iid,'asArray'=>true)); $invoiceManageDetail=$invoiceManage->getOne(array('SELECT'=>'title','where'=>'mold="发票审批"','asArray'=>true)); $a=json_decode($invoiceManageDetail['staff']); $data['invoiceDetail']=$invoiceDetail; $data['INVOICEKEY']=$this->authcode($invoiceDetail['iid'],''); $data['memu']="invoice"; $data['staff']=$this->staff; $data['receiptMemu']='invoiceApproval'; $data['verifyId']=$this->verifyId; $data['executeId']=$this->executeId; $this->render ( "/admin/invoiceApprovalDetail", $data ); } function invoiceApprovalDo(){ $iid=$this->get_args('invoiceKey')?$this->get_args('invoiceKey'):""; $status=$this->get_args('status')&&is_numeric($this->get_args('status'))?$this->get_args('status'):0; $opinion=$this->get_args('opinion')?$this->get_args('opinion'):""; if (!empty($iid)&&!empty($status)&&!empty($opinion)){ if (!($status==2||$status==3||$status==4)) die('illegal request'); Doo::loadModel('invoice'); $invoice=new invoice(); $iid=$this->authcode($iid); $invoiceDetail=$invoice->getOne(array('where'=>'status=1 and iid='.$iid.' and pendingApprovals='.$this->staff[0]['sid'],'asArray'=>true)); if (empty($invoiceDetail)) die('illegal request'); $processApprovals=json_decode($invoiceDetail['processApprovals'],true); $invoiceManage=json_decode($invoiceDetail['invoiceManage'],true); $invoice->status=$status; if ($status==3){ //操作日志 }else{ if(empty($processApprovals)){//记录下一个IDKEY $processApprovals=array($this->staff[0]['sid']=>array('date'=>date('Y-m-d'),'opinion'=>$opinion,'status'=>$status)); //if($status==4) // $processApprovals=array('final'=>$status,$this->staff[0]['sid']=>array('date'=>date('Y-m-d'),'opinion'=>$opinion,'status'=>$status)); if ($status!=4) $invoice->pendingApprovals=$invoiceManage[1][0]; $invoice->processApprovals=$processApprovals; }else{ $processApprovals[$this->staff[0]['sid']]=array('date'=>date('Y-m-d'),'opinion'=>$opinion,'status'=>$status); if($status!=4) $invoice->pendingApprovals=$invoiceManage[1][0]; $invoice->processApprovals=$processApprovals; } } print_r($processApprovals); //$invoice-> /* 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"); } */ echo $iid.$status.$opinion; } } 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(); Doo::loadModel('verify'); $dateCondition=" and Year(date) =".$year; $approvalCondition=' and nowStaff like "%'.$this->staff[0]['sid'].'%" '; $receiptList=$receipt->find(array('where'=>' status='.$status.$dateCondition.$approvalCondition,'desc'=>'rid','asArray'=>true)); return count($receiptList); } function _GetFileEXT($filename) { $pics = explode ( '.', $filename ); $num = count ( $pics ); return $pics [$num - 1]; } /** * 获取get或者POST值 * @param string $name 属性名称 * @return fixed 值 */ function get_args($name) { if (isset ( $_GET [$name] )) { if (is_array ( $_GET [$name] )) return $_GET [$name]; else return addslashes ( $_GET [$name] ); } elseif (isset ( $_POST [$name] )) { if (is_array ( $_POST [$name] )) return $_POST [$name]; else return addslashes ( $_POST [$name] ); } else return false; } /** * 加密或解密指定字符串 * @param string $string 要加密或解密的字符串 * @param string $operation 当取值为'DECODE'时表示解密,否则为加密 * @param string $key 加解密的key * @param $expiry 超时值 * */ function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) { $ckey_length = 4; if (! $key) { $key = $this->INVOICEKEY; } $key = md5 ( $key ); $keya = md5 ( substr ( $key, 0, 16 ) ); $keyb = md5 ( substr ( $key, 16, 16 ) ); $keyc = $ckey_length ? ($operation == 'DECODE' ? substr ( $string, 0, $ckey_length ) : substr ( md5 ( microtime () ), - $ckey_length )) : ''; $cryptkey = $keya . md5 ( $keya . $keyc ); $key_length = strlen ( $cryptkey ); $string = $operation == 'DECODE' ? base64_decode ( substr ( $string, $ckey_length ) ) : sprintf ( '%010d', $expiry ? $expiry + time () : 0 ) . substr ( md5 ( $string . $keyb ), 0, 16 ) . $string; $string_length = strlen ( $string ); $result = ''; $box = range ( 0, 255 ); $rndkey = array (); for($i = 0; $i <= 255; $i ++) { $rndkey [$i] = ord ( $cryptkey [$i % $key_length] ); } for($j = $i = 0; $i < 256; $i ++) { $j = ($j + $box [$i] + $rndkey [$i]) % 256; $tmp = $box [$i]; $box [$i] = $box [$j]; $box [$j] = $tmp; } for($a = $j = $i = 0; $i < $string_length; $i ++) { $a = ($a + 1) % 256; $j = ($j + $box [$a]) % 256; $tmp = $box [$a]; $box [$a] = $box [$j]; $box [$j] = $tmp; $result .= chr ( ord ( $string [$i] ) ^ ($box [($box [$a] + $box [$j]) % 256]) ); } if ($operation == 'DECODE') { if ((substr ( $result, 0, 10 ) == 0 || substr ( $result, 0, 10 ) - time () > 0) && substr ( $result, 10, 16 ) == substr ( md5 ( substr ( $result, 26 ) . $keyb ), 0, 16 )) { return substr ( $result, 26 ); } else { return ''; } } else { return $keyc . str_replace ( '=', '', base64_encode ( $result ) ); } } } class ReceiptController{ public static $NEW = 0; public static $NEW2 = 0; } ?>