| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546 | <?php/** * @author darkredz */class InvoiceController extends DooController {	public $staff;	public $verifyId;	public $executeId;	public static $NEW = 0;	public static $NEW2 = 0;	private $INVOICEKEY="APPROVAL";		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"]);				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;}?>
 |