";
			include $path;
			die ();
		}
	}
	private function cacheFile($path) {
		$content = ob_get_contents ();
		$fp = fopen ( $path, "w" );
		fwrite ( $fp, $content );
		fclose ( $fp );
	}
	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;
	}
	public function beforeRun($resource, $action) {
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 5 );
		$sid = $XDeode->decode ( $_COOKIE ["staff"] );
		// 单独判断公司汇总的访问权限
		if ($action == 'companyCategoryCollect') {
			Doo::loadModel ( "receiptAuthorityManage" );
			$invoiceCompanyManage = new receiptAuthorityManage ();
			
			$icm = $invoiceCompanyManage->getInvoiceCMByStaff ( $sid );
			if (empty ( $icm ))
				die ( 'illegal request' );
		}
		
		Doo::loadModel ( 'staff' );
		$staff = new staff ();
		$detail = $staff->getStaffBySid ( $_COOKIE ["staff"] );
		
		$accessModular = 'RECEIPTS';
		if (empty ( $detail ['cldAccessArray'] ))
			die ( 'illegal request' );
		else {
			if (in_array ( $accessModular, $detail ['cldAccessArray'] )) {
				if (Doo::acl ()->isAllowed ( $accessModular, $resource, $action )) {
					$flag = true;
				} else {
					$flag = false;
				}
			} else {
				die ( 'illegal request' );
			}
		}
		if (! $flag)
			die ( 'illegal request' );
	}
	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"] );
				
				// 检测用户信息完成
				$this->data ['isStaffCompleteMsg'] = false;
				$detail = $staff->checkStaffInfoIsComplete ( $_COOKIE ["staff"] );
				if (! empty ( $detail ))
					$this->data ['isStaffCompleteMsg'] = true;
				
				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 ();
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 7 );
		
		$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] ['ridKey'] = $XDeode->encode ( $value ['rid'] );
			$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' ) : "";
		
		$remittanceName = $this->get_args ( 'remittanceName' ) ? $this->get_args ( 'remittanceName' ) : "";
		$bankName = $this->get_args ( 'bankName' ) ? $this->get_args ( 'bankName' ) : "";
		$bankNumber = $this->get_args ( 'bankNumber' ) ? $this->get_args ( 'bankNumber' ) : "";
		$coupletNumber = $this->get_args ( 'coupletNumber' ) ? $this->get_args ( 'coupletNumber' ) : "";
		$remittanceBankType = $this->get_args ( 'remittanceBankType' ) && is_numeric ( $this->get_args ( 'remittanceBankType' ) ) ? $this->get_args ( 'remittanceBankType' ) : 0;
		
		// print_r($agency);die;
		
		if (! empty ( $verify ) && ! empty ( $cid ) && ! empty ( $explanation ) && ! empty ( $remittanceName ) && ! empty ( $bankName ) && ! empty ( $bankNumber )) {
			
			if ($remittanceBankType == 1 && empty ( $coupletNumber )) {
				header ( 'Content-Type:text/html;charset=utf-8' );
				die ( '请填写联行号' );
			}
			
			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 "邮寄费" or name like "其他费用" or 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 );
			
			$order = array (
					"\r\n",
					"\n",
					"\r" 
			);
			$replace = ' | 
';
			$explanation = str_replace ( $order, $replace, $explanation );
			$receipt->explanation = $explanation;
			
			$receipt->remittanceName = $remittanceName;
			$receipt->bankName = $bankName;
			$receipt->bankNumber = $bankNumber;
			$receipt->remittanceBankType = $remittanceBankType;
			if ($remittanceBankType == 1)
				$receipt->coupletNumber = $coupletNumber;
			
			$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";
		} else
			die ( 'illegal request' );
	}
	function remitEdit() {
		$ridKey = isset ( $this->params ['rid'] ) ? $this->params ['rid'] : '';
		
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 7 );
		$rid = $XDeode->decode ( $ridKey );
		
		if (! is_numeric ( $rid ))
			die ( 'illegal request' );
		
		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 ( 'enclosur' );
		$enclosur = new enclosur ();
		
		$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";
		
		$enclosurList = $enclosur->getEnclosurByRid ( $receiptDetail ['rid'] );
		$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 ['enclosurList'] = $enclosurList;
		
		$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;
		$data ['ridKey'] = $ridKey;
		$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;
		$ridKey = $this->get_args ( 'rid' ) ? $this->get_args ( 'rid' ) : 0;
		
		$enclosurName = $this->get_args ( 'enclosurName' ) ? $this->get_args ( 'enclosurName' ) : "";
		
		$remittanceName = $this->get_args ( 'remittanceName' ) ? $this->get_args ( 'remittanceName' ) : "";
		$bankName = $this->get_args ( 'bankName' ) ? $this->get_args ( 'bankName' ) : "";
		$bankNumber = $this->get_args ( 'bankNumber' ) ? $this->get_args ( 'bankNumber' ) : "";
		$coupletNumber = $this->get_args ( 'coupletNumber' ) ? $this->get_args ( 'coupletNumber' ) : "";
		
		$remittanceBankType = $this->get_args ( 'remittanceBankType' ) && is_numeric ( $this->get_args ( 'remittanceBankType' ) ) ? $this->get_args ( 'remittanceBankType' ) : 0;
		
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 7 );
		$rid = $XDeode->decode ( $ridKey );
		
		if (! empty ( $rid ) && ! empty ( $explanation ) && ! empty ( $remittanceName ) && ! empty ( $bankName ) && ! empty ( $bankNumber )) {
			
			if ($remittanceBankType == 1 && empty ( $coupletNumber )) {
				header ( 'Content-Type:text/html;charset=utf-8' );
				die ( '请填写联行号' );
			}
			
			Doo::loadModel ( 'receipt' );
			Doo::loadModel ( 'receiptDetail' );
			Doo::loadModel ( 'accountItem' );
			$accountItem = new accountItem ();
			$receipt = new receipt ();
			Doo::loadModel ( 'enclosur' );
			$enclosur = new 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 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 "其他费用" or 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;
			
			if ($receiptDetail ['status'] != 4 && ! empty ( $verify ))
				$receipt->verify = $verify;
			$receipt->executeCopy = $executeDetail ['staff'];
			
			$order = array (
					"\r\n",
					"\n",
					"\r" 
			);
			$replace = '
';
			$explanation = str_replace ( $order, $replace, $explanation );
			$receipt->explanation = $explanation;
			
			$receipt->remittanceName = $remittanceName;
			$receipt->bankName = $bankName;
			$receipt->bankNumber = $bankNumber;
			$receipt->remittanceBankType = $remittanceBankType;
			if ($remittanceBankType == 1)
				$receipt->coupletNumber = $coupletNumber;
			
			$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 ();
			}
			
			// 附件
			if (! empty ( $enclosurName )) {
				$enclosurArray = explode ( '-', $enclosurName );
				foreach ( $enclosurArray as $value ) {
					$enclosur = new enclosur ();
					
					$enclosur->name = $value;
					$enclosur->rid = $rid;
					$enclosur->insert ();
				}
			}
		}
		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 . ' and status=2',
				'desc' => 'rid',
				'asArray' => true 
		) );
		
		if (empty ( $receiptList )) {
			die ( 'illegal request' );
		}
		
		$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' ) : "";
		
		$remittanceName = $this->get_args ( 'remittanceName' ) ? $this->get_args ( 'remittanceName' ) : "";
		$bankName = $this->get_args ( 'bankName' ) ? $this->get_args ( 'bankName' ) : "";
		$bankNumber = $this->get_args ( 'bankNumber' ) ? $this->get_args ( 'bankNumber' ) : "";
		$coupletNumber = $this->get_args ( 'coupletNumber' ) ? $this->get_args ( 'coupletNumber' ) : "";
		$remittanceBankType = $this->get_args ( 'remittanceBankType' ) && is_numeric ( $this->get_args ( 'remittanceBankType' ) ) ? $this->get_args ( 'remittanceBankType' ) : 0;
		// die;
		
		if (! empty ( $verify ) && ! empty ( $cid ) && ! empty ( $explanation ) && ! empty ( $remittanceName ) && ! empty ( $bankName ) && ! empty ( $bankNumber )) {
			
			if ($remittanceBankType == 1 && empty ( $coupletNumber )) {
				header ( 'Content-Type:text/html;charset=utf-8' );
				die ( '请填写联行号' );
			}
			
			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 
			) );
			
			$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;
			
			// 添加HTML换行符
			// var_dump($explanation);
			$order = array (
					"\r\n",
					"\n",
					"\r" 
			);
			$replace = '
';
			$explanation = str_replace ( $order, $replace, $explanation );
			
			// $explanation=str_replace('\r',"
",$explanation);
			// $explanation=str_replace('\r\n',"
",$explanation);
			
			$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;
			
			$receipt->remittanceName = $remittanceName;
			$receipt->bankName = $bankName;
			$receipt->bankNumber = $bankNumber;
			$receipt->remittanceBankType = $remittanceBankType;
			if ($remittanceBankType == 1)
				$receipt->coupletNumber = $coupletNumber;
			
			$rid = $receipt->insert ();
			
			return "/saeaBorad";
		} else
			die ( 'illegal request' );
	}
	function saeaLoanEdi() {
		$ridKey = isset ( $this->params ['rid'] ) ? $this->params ['rid'] : 0;
		
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 7 );
		$rid = $XDeode->decode ( $ridKey );
		
		if (! is_numeric ( $rid ))
			die ( 'illegal request' );
		
		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 );
		
		// print_r($receiptInfo);
		
		$data ['receiptInfo'] = $receiptInfo;
		$data ['category'] = $lCategory->find ( array (
				'asArray' => true 
		) );
		$data ['veList'] = $veList;
		$data ['ridKey'] = $ridKey;
		$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() {
		$ridKey = $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' ) : "";
		
		$remittanceName = $this->get_args ( 'remittanceName' ) ? $this->get_args ( 'remittanceName' ) : "";
		$bankName = $this->get_args ( 'bankName' ) ? $this->get_args ( 'bankName' ) : "";
		$bankNumber = $this->get_args ( 'bankNumber' ) ? $this->get_args ( 'bankNumber' ) : "";
		$coupletNumber = $this->get_args ( 'coupletNumber' ) ? $this->get_args ( 'coupletNumber' ) : "";
		$remittanceBankType = $this->get_args ( 'remittanceBankType' ) && is_numeric ( $this->get_args ( 'remittanceBankType' ) ) ? $this->get_args ( 'remittanceBankType' ) : 0;
		// die;
		
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 7 );
		$rid = $XDeode->decode ( $ridKey );
		
		if (! empty ( $cid ) && ! empty ( $explanation ) && ! empty ( $rid ) && ! empty ( $remittanceName ) && ! empty ( $bankName ) && ! empty ( $bankNumber )) {
			
			if ($remittanceBankType == 1 && empty ( $coupletNumber )) {
				header ( 'Content-Type:text/html;charset=utf-8' );
				die ( '请填写联行号' );
			}
			
			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 or status=4) 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;
			// 特殊状态
			
			// 修改审批流程加入角色
			if ($receiptDetail ['status'] != 4)
				$receipt->verify = $verify;
			
			$order = array (
					"\r\n",
					"\n",
					"\r" 
			);
			$replace = '
';
			$explanation = str_replace ( $order, $replace, $explanation );
			$receipt->explanation = $explanation;
			
			$receipt->remittanceName = $remittanceName;
			$receipt->bankName = $bankName;
			$receipt->bankNumber = $bankNumber;
			$receipt->remittanceBankType = $remittanceBankType;
			if ($remittanceBankType == 1)
				$receipt->coupletNumber = $coupletNumber;
			
			$receipt->update ( array (
					'where' => 'rid=' . $rid 
			) );
			
			// 借款数据更新
			$loanReceipt->loanItem = json_encode ( $accountJson );
			$loanReceipt->sum = number_format ( $sum, 2, '.', '' );
			$loanReceipt->cid = $cid;
			if ($receiptDetail ['status'] != 4)
				$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 ();
		
		$receiptDetail = $receipt->getOne ( array (
				'where' => 'rid=' . $rid,
				'desc' => 'rid',
				'asArray' => true 
		) );
		
		$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;
		$data ['receiptDetail'] = $receiptDetail;
		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' ) : "";
		
		$remittanceName = $this->get_args ( 'remittanceName' ) ? $this->get_args ( 'remittanceName' ) : "";
		$bankName = $this->get_args ( 'bankName' ) ? $this->get_args ( 'bankName' ) : "";
		$bankNumber = $this->get_args ( 'bankNumber' ) ? $this->get_args ( 'bankNumber' ) : "";
		$coupletNumber = $this->get_args ( 'coupletNumber' ) ? $this->get_args ( 'coupletNumber' ) : "";
		$remittanceBankType = $this->get_args ( 'remittanceBankType' ) && is_numeric ( $this->get_args ( 'remittanceBankType' ) ) ? $this->get_args ( 'remittanceBankType' ) : 0;
		
		if (! empty ( $verify ) && ! empty ( $cid ) && ! empty ( $explanation ) && ! empty ( $rid ) && ! empty ( $remittanceName ) && ! empty ( $bankName ) && ! empty ( $bankNumber )) {
			
			if ($remittanceBankType == 1 && empty ( $coupletNumber )) {
				header ( 'Content-Type:text/html;charset=utf-8' );
				die ( '请填写联行号' );
			}
			
			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->remittanceName = $remittanceName;
			$receipt->bankName = $bankName;
			$receipt->bankNumber = $bankNumber;
			$receipt->remittanceBankType = $remittanceBankType;
			if ($remittanceBankType == 1)
				$receipt->coupletNumber = $coupletNumber;
			
			$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() {
		$ridKey = isset ( $this->params ['rid'] ) ? $this->params ['rid'] : 0;
		
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 7 );
		$rid = $XDeode->decode ( $ridKey );
		
		if (! is_numeric ( $rid ))
			die ( 'illegal request' );
		
		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 ['ridKey'] = $ridKey;
		$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 ( $dateCondition, $this->staff [0] ['sid'] );
		if (! isset ( $noPassSum ['sum'] ))
			$noPassSum ['sum'] = 0;
		
		$data ['stList'] = array (
				'rePrice' => $stList ['rePrice'],
				'agPrice' => $stList ['agPrice'],
				'skPrice' => ($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 .= '';
		}
		
		$dateHtml = "";
		$now = date ( "Y" );
		for($YEARD = 2050; $YEARD >= 2004; $YEARD --) {
			
			if ($YEARD <= $now) {
				$dateHtml .= '';
			}
		}
		
		$data ['dateHtml'] = $dateHtml;
		
		$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;
		 */
		$data ['explanation'] = '';
		if (! empty ( $loanList ))
			$data ['explanation'] = $loanList [0] ['explanation'];
		
		$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 );
					}
				}
			}
			
			// 费用执行人相关数据
			$executeCopy = json_decode ( $value ['executeCopy'], true );
			$executeStaff = json_decode ( $value ['executeStaff'], true );
			foreach ( $executeCopy as $k => $v ) {
				$executeCopy [$k] ['date'] = '';
				$executeCopy [$k] ['opinion'] = '';
				$executeCopy [$k] ['status'] = '';
				if (! empty ( $executeStaff ))
					foreach ( $executeStaff as $m => $u ) {
						if ($v [0] == $m) {
							$executeCopy [$k] ['date'] = $u ['date'];
							$executeCopy [$k] ['opinion'] = $u ['opinion'];
							$executeCopy [$k] ['status'] = $u ['status'];
							break;
						}
					}
			}
			
			$receiptList [$key] ['executeCopy'] = $executeCopy;
			$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 = bcsub ( $value ['sum'], $value ['loanSum'], 2 );
			$receiptList [$key] ['relust'] = $relust;
			$receiptList [$key] ['relustCN'] = $this->num_to_rmb ( abs ( $relust ) );
		}
		
		Doo::loadModel ( 'enclosur' );
		$enclosur = new enclosur ();
		$enclosurList = $enclosur->find ( array (
				'where' => 'rid=' . $rid,
				'asArray' => true 
		) );
		$enclosurHtml = '';
		foreach ( $enclosurList as $value ) {
			$enclosurHtml .= '' . $value ['name'] . '';
		}
		
		$data ['enclosurHtml'] = $enclosurHtml;
		
		// print_r($receiptList);
		
		$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'] ) ? $this->params ['status'] : 0;
		$year = $rdate = $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;
		
		// $this->get_args ( 'date' ) ? $this->get_args ( 'date' ) :"";
		
		// echo $rdate;
		
		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 = " ";
		
		// if (! empty ( $month ))
		// $dateCondition = " and Year(date) =" . $year . " and Month(date) = " . $month;
		if ($status == 'done' || $status == 'termination') {
			if (! empty ( $year )) {
				$dateCondition = " and Year(pastDate) =" . $year;
				if (! empty ( $month ))
					$dateCondition = " and Year(pastDate) =" . $year . " and Month(pastDate) = " . $month;
			}
		} elseif ($status == 'finish') {
			if (! empty ( $year )) {
				$dateCondition = " and Year(pastDate) =" . $year;
				if (! empty ( $month ))
					$dateCondition = " and Year(pastDate) =" . $year . " and Month(pastDate) = " . $month;
			}
		}
		
		// date ( 'Y-m' )
		// if (! empty ( $rdate ) && $status == 'done')
		// $dateCondition = " and date_format(pastDate,'%Y-%m')='" . $rdate . "' ";
		// elseif (! empty ( $rdate ))
		// $dateCondition = " and date_format(date,'%Y-%m')='" . $rdate . "' ";
		$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 cid=' . $cid . ' and staff=' . $sid;
			$cateCondition = "";
		}
		
		$get = "?year=" . $year . "&month=" . $month . "&cid=" . $cid . "&sid=" . $sid;
		
		if ($status == 'pendApproval') {
			$approvalCondition = ' and status=2 and (nowStaff like "%,' . $this->staff [0] ['sid'] . '%" or nowStaff like "%' . $this->staff [0] ['sid'] . ',%" or nowStaff=' . $this->staff [0] ['sid'] . ' )';
		}
		if ($status == 'ongoing') {
			$approvalCondition = ' and (status=2 or status=1 or status=6 or status=4) ';
		}
		if ($status == 'done') {
			$approvalCondition = ' and (status=8 or status=9 )  ';
		}
		if ($status == 'termination') {
			$approvalCondition = " and status=3";
		}
		if ($status == 'finish') {
			$approvalCondition = " and (status=1 or status=8 or status=9)";
		}
		
		$pageinfo ['page'] = array (
				'previous' => '' 
		);
		
		if ($status == 'done' || $status == 'termination' || $status == 'finish') { // $dateCondition .
			$pageinfo = $this->get_page ( "CLD_receipt", $cateCondition . $staffCondition . $approvalCondition . $dateCondition . ' and verify in (' . $vid . ') and status!=5', $page, $page_size, "approvalExpenses/" . $status, $get, "" );
			
			$receiptList = $receipt->find ( array ( // $dateCondition.
					'where' => 'status!=5  ' . $cateCondition . $staffCondition . $approvalCondition . $dateCondition . ' and verify in (' . $vid . ')',
					'limit' => $pageinfo ['lower'] . ',' . $page_size,
					'desc' => 'rid',
					'asArray' => true 
			) );
		} else {
			$receiptList = $receipt->find ( array ( // $dateCondition
					'where' => 'status!=5 ' . $cateCondition . $staffCondition . $approvalCondition . $dateCondition . ' and verify in (' . $vid . ')',
					'desc' => 'rid',
					'asArray' => true 
			) );
			// echo 'status!=5 ' . $cateCondition . $staffCondition . $approvalCondition . ' and verify in (' . $vid . ')';
		}
		$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 . ' and verify in (' . $vid . ')',
				'desc' => 'rid',
				'asArray' => true 
		) );
		
		// echo 'status!=5 ' . $dateCondition . $cateCondition . $staffCondition . $approvalCondition . ' and verify in (' . $vid . ')';
		// print_r($receiptList);
		
		$Locate = 0;
		
		$reportList = $reportCateList = array ();
		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 
			) );
			
			array_push ( $reportList, $receiptList [$key] ['staffDetail'] ['sid'] . '-' . $receiptList [$key] ['staffDetail'] ['username'] . '-' . $receiptList [$key] ['staffDetail'] ['category'] );
			array_push ( $reportCateList, $receiptList [$key] ['staffDetail'] ['cid'] . '-' . $receiptList [$key] ['staffDetail'] ['category'] );
			
			$receiptList [$key] ['button'] = $button;
			$receiptList [$key] ['nowStaffArray'] = explode ( ',', $value ['nowStaff'] );
		}
		
		$reportList = array_unique ( $reportList );
		$reportHtml = '';
		foreach ( $reportList as $key => $value ) {
			$v = explode ( "-", $value );
			$reportHtml .= '';
		}
		// print_r($reportList)
		$data ['reportHtml'] = $reportHtml;
		
		$reportCateList = array_unique ( $reportCateList );
		$reportCateHtml = '';
		foreach ( $reportCateList as $key => $value ) {
			$v = explode ( "-", $value );
			$reportCateHtml .= '';
		}
		// $reportHtml.='';
		$data ['reportCateHtml'] = $reportCateHtml;
		
		// print_r($receiptList);die;
		// $data['verifyDetail']=$verifyDetail;
		
		$mothHtml = "";
		for($i = 1; $i <= 12; $i ++) {
			if ($month == $i)
				$mothHtml .= '';
			else
				$mothHtml .= '';
		}
		$data ['mothHtml'] = $mothHtml;
		
		$dateHtml = "";
		$now = date ( "Y" );
		for($YEARD = 2050; $YEARD >= 2004; $YEARD --) {
			
			if ($YEARD <= $now) {
				$dateHtml .= '';
			}
		}
		
		$data ['dateHtml'] = $dateHtml;
		
		$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'] : '';
		
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 5 );
		if (! empty ( $rid ) && ! is_numeric ( $rid ))
			$rid = $XDeode->decode ( $rid );
		if (! is_numeric ( $rid ))
			die ( 'illegal request' );
		
		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;
						// }
					}
				}
			}
			
			$FC = $rolename ['name'];
			$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 );
					}
				}
			}
			
			// 费用执行人相关数据
			$executeCopy = json_decode ( $value ['executeCopy'], true );
			$executeStaff = json_decode ( $value ['executeStaff'], true );
			foreach ( $executeCopy as $k => $v ) {
				$executeCopy [$k] ['date'] = '';
				$executeCopy [$k] ['opinion'] = '';
				$executeCopy [$k] ['status'] = '';
				if (! empty ( $executeStaff ))
					foreach ( $executeStaff as $m => $u ) {
						if ($v [0] == $m) {
							$executeCopy [$k] ['date'] = $u ['date'];
							$executeCopy [$k] ['opinion'] = $u ['opinion'];
							$executeCopy [$k] ['status'] = $u ['status'];
							break;
						}
					}
			}
			$receiptList [$key] ['executeCopy'] = $executeCopy;
			// 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] ['sumCN'] = $this->num_to_rmb ( $value ['sum'] );
			$receiptList [$key] ['loanSumCN'] = $this->num_to_rmb ( $value ['loanSum'] );
			
			$relust = bcsub ( $value ['sum'], $value ['loanSum'], 2 );
			$receiptList [$key] ['relust'] = $relust;
			$receiptList [$key] ['relustCN'] = $this->num_to_rmb ( abs ( $relust ) );
		}
		
		// print_r($receiptList);
		
		// 获取审批日志
		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 
			) );
		}
		
		$RN = json_decode ( $rolename ['staff'] );
		
		//
		foreach ( $rlList as $key => $value ) {
			$rlList [$key] ['rolename'] = '';
			foreach ( $RN as $k => $v ) {
				$id = explode ( "_", $v );
				
				if ($id [0] == $value ['uid']) {
					
					$rlList [$key] ['rolename'] = $FC;
					break;
				}
			}
		}
		
		Doo::loadModel ( 'enclosur' );
		$enclosur = new enclosur ();
		$enclosurList = $enclosur->find ( array (
				'where' => 'rid=' . $rid,
				'asArray' => true 
		) );
		$enclosurHtml = '';
		foreach ( $enclosurList as $value ) {
			$enclosurHtml .= '' . $value ['name'] . '';
		}
		
		$data ['enclosurHtml'] = $enclosurHtml;
		
		$receiptList [0] ['rlList'] = $rlList;
		
		$data ['receiptList'] = $receiptList;
		
		// print_r($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 . ' and status=2',
				'desc' => 'rid',
				'asArray' => true 
		) );
		
		if (empty ( $receiptList )) {
			die ( 'illegal request' );
		}
		
		$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;
		$amount = $this->get_args ( 'amount' ) && is_numeric ( $this->get_args ( 'amount' ) ) ? $this->get_args ( 'amount' ) : 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 
			) );
			
			$nslist = explode ( ',', $receiptDetail ['nowStaff'] );
			$nsflag = true;
			foreach ( $nslist as $value ) {
				if ($value == $this->staff ['0'] ['sid']) {
					$nsflag = false;
					break;
				}
			}
			// print_r($nslist);die;
			
			if (empty ( $receiptDetail ) || $nsflag)
				return "/approvalExpenses/pendApproval";
			
			$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;
					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;
				
				$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 
				) );
				
				// 微信企业号通知
				$this->setWXMsg ( $rid, 3 );
			} 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->amount = $receiptDetail ['amount'];
				$loanReceipt->update ( array (
						'where' => ' rid = ' . $receiptDetail ['loanRid'] 
				) );
				
				// 微信企业号通知
				$this->setWXMsg ( $rid, 1 );
			}
			
			$receipt->amount = $amount;
			$receipt->update ( array (
					'where' => ' rid = ' . $rid 
			) );
			
			// 进入下一条审批费用新加需求
			$vidList = array ();
			$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;
			
			$approvalCondition = ' and status=2 and (nowStaff like "%,' . $this->staff [0] ['sid'] . '%" or nowStaff like "%' . $this->staff [0] ['sid'] . ',%" or nowStaff=' . $this->staff [0] ['sid'] . ' )';
			$receipt = new receipt ();
			$rd = $receipt->getOne ( array (
					'where' => 'status!=5 ' . $approvalCondition . ' and verify in(' . $vid . ')',
					'asc' => 'rid',
					'asArray' => true 
			) );
			
			if (empty ( $rd )) {
				return '/approvalExpenses/pendApproval';
			}
			if ($rd ['Rtype'] == 1) {
				if ($rd ['isBK'] == 1) {
					return '/receiptburEdi/' . $rd ['rid'];
				} else {
					return '/expensesEdi/' . $rd ['rid'];
				}
			} elseif ($rd ['Rtype'] == 2) {
				return '/remitApproval/' . $rd ['rid'];
			} else {
				return '/receiptburEdi/' . $rd ['rid'];
			}
			// return "/approvalExpenses/pendApproval";
		}
	}
	function ajaxExamineExe() {
		$rid = $this->get_args ( 'rid' ) && is_numeric ( $this->get_args ( 'rid' ) ) ? $this->get_args ( 'rid' ) : 0;
		
		Doo::loadModel ( 'receipt' );
		$receipt = new receipt ();
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 5 );
		if (! empty ( $rid )) {
			
			$rLRes = $receipt->find ( array (
					'where' => 'executeCopy like \'%["' . $this->staff [0] ['sid'] . '%\' and executeStaff not like \'%{"' . $this->staff [0] ['sid'] . '%\' and (status=1 or status=6) and rid!=' . $rid,
					'asArray' => true 
			) );
			$rLRes [0] ['ridKey'] = $XDeode->encode ( $rLRes [0] ['rid'] );
			echo json_encode ( array (
					'status' => 1,
					'receipt' => $rLRes [0] 
			) );
			die ();
		}
		echo json_encode ( array (
				'status' => 0,
				'receipt' => array () 
		) );
		die ();
	}
	function implement() {
		$rid = isset ( $this->params ['rid'] ) ? $this->params ['rid'] : 0;
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 5 );
		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 ();
		
		$rid = $XDeode->decode ( $rid );
		
		$receiptList = $receipt->find ( array (
				'where' => 'executeCopy like \'%["' . $this->staff [0] ['sid'] . '%\' and (status=1 or status=6) and rid=' . $rid,
				'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;
					}
				}
			}
			
			// 检测编辑状态
			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] ['executeList'] = $executeList;
			
			$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 = bcsub ( $value ['sum'], $value ['loanSum'], 2 );
			$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' ) : "";
		$amount = $this->get_args ( 'amount' ) && is_numeric ( $this->get_args ( 'amount' ) ) ? $this->get_args ( 'amount' ) : '';
		
		$accountBank = $this->get_args ( 'accountBank' ) ? $this->get_args ( 'accountBank' ) : "";
		
		$ab = '';
		if ($accountBank == 'CGBDeposit')
			$ab = '纵横广发';
		elseif ($accountBank == 'ICBCDeposit')
			$ab = '纵横工行';
		elseif ($accountBank == 'HUADeposit')
			$ab = '华润银行';
		elseif ($accountBank == 'PersonalDeposit')
			$ab = '个人广发';
		
		if (empty ( $ab ))
			die ( 'illegal request' );
		
		if (! empty ( $rid ) && $amount != '') {
			Doo::loadModel ( 'receipt' );
			$receipt = new receipt ();
			
			Doo::loadClass ( 'XDeode' );
			$XDeode = new XDeode ( 5 );
			
			// $rinfo = $receipt->getOne ( array (
			// 'where' => 'rid=' . $rid,
			// 'asArray' => true
			// ) );
			
			$rinfo = $receipt->getReceiptByRid ( $rid );
			
			$accountType = '';
			if ($rinfo ['Rtype'] == 1) {
				if ($rinfo ['loanRid'] != 0)
					$accountType = 2;
				else
					$accountType = 1;
			} elseif ($rinfo ['Rtype'] == 2) {
				$accountType = 4;
			} elseif ($rinfo ['Rtype'] == 0)
				$accountType = 3;
			
			if (empty ( $accountType ))
				die ( 'illegal request' );
			
			$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;
				
				if ($rinfo ['status'] == 6) {
					$receipt->loanDate = date ( "Y-m-d" );
				}
				
				$receipt->executeDate = date ( "Y-m-d" );
			} else {
				$receipt->executeStaff = json_encode ( $executeStaff );
			}
			$receipt->amount = $amount;
			$receipt->update ( array (
					'where' => 'rid=' . $rid 
			) );
			
			// 公司流水记录
			Doo::loadModel ( 'wasteBook' );
			$wasteBook = new wasteBook ();
			
			$abDetail = $wasteBook->getAccountBookByAid ( 2, $accountType, $rid );
			// 银行
			if (empty ( $abDetail )) {
				$item = array (
						'dataID' => $rid,
						'expensesType' => 2,
						'accountType' => $accountType,
						
						'accountPriceShow' => $rinfo ['sum'],
						
						'accountPrice' => - $rinfo ['sum'],
						'accountBank' => $accountBank,
						'category' => $rinfo ['category'] [0] ['title'],
						'cid' => $rinfo ['category'] [0] ['cid'],
						'name' => $rinfo ['staffDetail'] ['username'],
						'sid' => $rinfo ['staffDetail'] ['sid'],
						'inputDate' => date ( "Y-m-d H:i:s" ) 
				);
				$wasteBook->setAccountBookStatistics ( $item );
			}
		}
		$ridKey = $XDeode->encode ( $rid );
		
		return "/hisImplement";
		
		// return "/implement/" . $ridKey . ".html";
	}
	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 . ' and status=2',
				'desc' => 'rid',
				'asArray' => true 
		) );
		
		if (empty ( $receiptList )) {
			die ( 'illegal request' );
		}
		
		$loanList = $loanReceipt->find ( array (
				'where' => 'rid=' . $receiptList [0] ['loanRid'],
				'desc' => 'rid',
				'asArray' => true 
		) );
		
		$data ['explanation'] = '';
		if (! empty ( $loanList ))
			$data ['explanation'] = $loanList [0] ['explanation'];
		
		$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 .= '';
			}
			$data ['loanDate'] = $loanList [0] ['date'];
		} else {
			
			$data ['loanReceiptDate'] = ''; // $loanList [0] ['date'];
		}
		$data ['htmlLoan'] = $htmlLoan;
		// $data ['LoanReceipt']=$loanList[0];
		// print_r($loanList);
		
		$Locate = 0;
		$roleId = 0;
		$button = 0;
		if ($ap == 4)
			$status = 4;
		
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 5 );
		foreach ( $receiptList as $key => $value ) {
			
			$receiptList [$key] ['ridKey'] = $XDeode->encode ( $value ['rid'] );
			
			$receiptList [$key] ['Locate'] = $Locate;
			$Locate ++;
			$receiptList [$key] ['reviseDetail'] = array ();
			// 调整金额 代码调整
			if (! empty ( $value ['reviseDetail'] )) {
				
				$reviseDetail = json_decode ( $value ['reviseDetail'], true );
				foreach ( $reviseDetail as $ry => $re ) {
					
					$reviseDetail [$ry] ['sidKey'] = $XDeode->encode ( $re ['sid'] );
					$reviseDetail [$ry] ['reviseKey'] = $XDeode->encode ( $ry );
				}
				
				$receiptList [$key] ['reviseDetail'] = $reviseDetail;
				// print_r($reviseDetail);
			}
			
			$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 = bcsub ( $value ['sum'], $value ['loanSum'], 2 );
			$receiptList [$key] ['relust'] = $relust;
			$receiptList [$key] ['relustCN'] = $this->num_to_rmb ( abs ( $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;
		
		// print_r($receiptList);
		
		$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 ['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' ) : "expenses";
		
		$rdate = $this->get_args ( 'date' ) ? $this->get_args ( 'date' ) : "";
		
		$year = $this->get_args ( 'year' ) ? $this->get_args ( 'year' ) : date ( "Y" );
		$moth = $this->get_args ( 'moth' ) ? $this->get_args ( 'moth' ) : 'MONTH';
		$day = $this->get_args ( 'day' ) ? $this->get_args ( 'day' ) : 'DAY';
		$sop = $this->get_args ( 'sop' ) ? $this->get_args ( 'sop' ) : 'SOP';
		
		$status = $this->get_args ( 'status' ) ? $this->get_args ( 'status' ) : 'pendImplement';
		
		$cidKey = $this->get_args ( 'cidKey' ) ? $this->get_args ( 'cidKey' ) : 'ALL';
		
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 5 );
		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::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 5 );
		
		$cid = $XDeode->decode ( $cidKey );
		
		$condition = "";
		
		if ($item == "expenses")
			$condition = " and Rtype=1 ";
		elseif ($item == "receipts")
			$condition = " and Rtype=0 ";
		elseif ($item == "remits")
			$condition = " and Rtype=2 ";
		
		$statusCon = '(status=8 or status=9 or status=1 or status=6 )';
		$sopString = $cidString = "";
		
		$lastYear = date ( "Y", strtotime ( "-1 year" ) );
		
		if (empty ( $rdate ))
			$dateCondition = " and (Year(date) =" . $year . " or Year(date) = " . $lastYear . ") ";
		else
			$dateCondition = " and date_format(date,'%Y-%m-%d')='" . $rdate . "' ";
		
		if ($status == 'pendImplement') {
			$condition .= ' and (status=1 or status=6) and (executeCopy like "%[\"' . $this->staff [0] ['sid'] . '\"%" and executeStaff not like "%{\"' . $this->staff [0] ['sid'] . '\"%" ) ';
		} elseif ($status == 'alerpts') {
			$statusCon = '(status=8 or status=9 )';
			if (empty ( $rdate ))
				$dateCondition .= " and Year(date) =" . $year;
			else
				$dateCondition .= " and date_format(executeDate,'%Y-%m-%d')='" . $rdate . "' ";
		}
		
		if ($sop != 'SOP')
			$sopString = " and staff=" . $sop;
		if ($cidKey != 'ALL')
			$cidString = " and cid=" . $cid;
		
		$receiptList = $receipt->find ( array (
				'where' => $statusCon . $condition . $dateCondition . $sopString . $cidString,
				'desc' => 'rid',
				'asArray' => true 
		) );
		
		// 员工筛选
		$receiptList2 = $receipt->find ( array (
				'where' => $statusCon . $condition . $dateCondition,
				'desc' => 'rid',
				'asArray' => true 
		) );
		$sopStaff = array ();
		foreach ( $receiptList2 as $key => $value ) {
			$staffDetail = $staff->getOne ( array (
					'select' => 'username',
					'where' => 'sid=' . $value ['staff'],
					'asArray' => true 
			) );
			$sopStaff [$value ['staff']] = $staffDetail ['username'];
		}
		// 办事处筛选
		$categoryScreen = array ();
		$categorList = $Lcategory->getCategory ();
		foreach ( $receiptList2 as $key => $value ) {
			foreach ( $categorList as $k => $v ) {
				if ($value ['cid'] == $v ['cid']) {
					$categoryScreen [$v ['cidKey']] = $v ['title'];
					break;
				}
			}
		}
		$categoryScreenHtml = "";
		foreach ( $categoryScreen as $key => $value ) {
			if ($cidKey == $key)
				$categoryScreenHtml .= '';
			else
				$categoryScreenHtml .= '';
		}
		$data ['categoryScreenHtml'] = $categoryScreenHtml;
		$data ['cidKey'] = $cidKey;
		
		$Locate = 0;
		$roleId = 0;
		$button = 0;
		$staffBatchNumber = 100001;
		$remittanceList = array ();
		foreach ( $receiptList as $key => $value ) {
			$receiptList [$key] ['ridKey'] = $XDeode->encode ( $value ['rid'] );
			$receiptList [$key] ['Texe'] = 'false';
			if (strstr ( $value ['executeCopy'], '["' . $this->staff [0] ['sid'] . '"' ) != false) {
				$receiptList [$key] ['Texe'] = 'true';
			}
			$receiptList [$key] ['TRexe'] = 'true';
			if (strstr ( $value ['executeStaff'], '{"' . $this->staff [0] ['sid'] . '"' ) != false) {
				$receiptList [$key] ['TRexe'] = 'false';
			}
			
			$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;
			$staffDetail = $staff->getOne ( array (
					'where' => 'sid=' . $value ['staff'],
					'asArray' => true 
			) );
			$receiptList [$key] ['staffDetail'] = $staffDetail;
			
			$receiptList [$key] ['button'] = $button;
			
			// 设置导出汇款execl
			if (! empty ( $value ['remittanceName'] ) && ! empty ( $value ['bankName'] ) && ! empty ( $value ['bankNumber'] )) {
				$remittanceDetail = array (
						$staffBatchNumber,
						$value ['remittanceName'],
						$value ['bankNumber'],
						$value ['bankName'],
						$value ['remittanceBankType'],
						$value ['coupletNumber'],
						$value ['sum'] 
				);
				array_push ( $remittanceList, $remittanceDetail );
				$staffBatchNumber ++;
			}
		}
		
		$data ['remittanceList'] = json_encode ( $remittanceList );
		
		// print_r($receiptList);
		$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 ['status'] = $status;
		$data ['rdate'] = $rdate;
		$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 );
	}
	/**
	 * 导出汇款信息的exelc
	 */
	function exportRemittance() {
		$remittanceInfo = $_POST ['remittanceInfo']; // $this->get_args ( 'remittanceInfo' ) ? $this->get_args ( 'remittanceInfo' ) : '';
		if (empty ( $remittanceInfo ))
			die ( 'illegal request' );
		
		$title = array (
				'员工编号',
				'姓名',
				'员工账号',
				'员工账户开户行',
				'转账类型',
				'联行号',
				'金额' 
		);
		$data = json_decode ( $remittanceInfo, true );
		if (empty ( $data ))
			die ( 'illegal request' );
		Doo::loadClass ( 'receipt.func' );
		exportExcel ( $title, $data, '批量日常报销-公司账号', './', true );
		
		header ( 'Content-Type:text/html;charset=utf-8' );
		die ( '导出' . count ( $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 ) && ($year < date ( "Y" ))) {
				$receiptList = $receipt->find ( 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" )) && ($moth < date ( "m" ))) {
				$receiptList = $receipt->find ( 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' ) : "";
		
		$remittanceName = $this->get_args ( 'remittanceName' ) ? $this->get_args ( 'remittanceName' ) : "";
		$bankName = $this->get_args ( 'bankName' ) ? $this->get_args ( 'bankName' ) : "";
		$bankNumber = $this->get_args ( 'bankNumber' ) ? $this->get_args ( 'bankNumber' ) : "";
		$coupletNumber = $this->get_args ( 'coupletNumber' ) ? $this->get_args ( 'coupletNumber' ) : "";
		$remittanceBankType = $this->get_args ( 'remittanceBankType' ) && is_numeric ( $this->get_args ( 'remittanceBankType' ) ) ? $this->get_args ( 'remittanceBankType' ) : 0;
		
		if (! empty ( $verify ) && ! empty ( $cid ) && ! empty ( $explanation ) && ! empty ( $remittanceName ) && ! empty ( $bankName ) && ! empty ( $bankNumber )) {
			
			if ($remittanceBankType == 1 && empty ( $coupletNumber )) {
				header ( 'Content-Type:text/html;charset=utf-8' );
				die ( '请填写联行号' );
			}
			
			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 );
			
			$order = array (
					"\r\n",
					"\n",
					"\r" 
			);
			$replace = '
';
			$explanation = str_replace ( $order, $replace, $explanation );
			$receipt->explanation = $explanation;
			
			$receipt->remittanceName = $remittanceName;
			$receipt->bankName = $bankName;
			$receipt->bankNumber = $bankNumber;
			$receipt->remittanceBankType = $remittanceBankType;
			if ($remittanceBankType == 1)
				$receipt->coupletNumber = $coupletNumber;
			
			$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 "/saeaBorad";
		} else
			die ( 'illegal request' );
	}
	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
		$ridKey = isset ( $this->params ['rid'] ) ? $this->params ['rid'] : '';
		
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 7 );
		$rid = $XDeode->decode ( $ridKey );
		
		if (empty ( $rid ))
			die ( 'illegal request' );
			
			// echo $rid.'sd';
		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 ( 'enclosur' );
		$enclosur = new enclosur ();
		
		$receiptDetail = $receipt->getOne ( array (
				'where' => 'staff=' . $this->staff [0] ['sid'] . ' and rid=' . $rid . ' and (status=5 or status=4)',
				'asArray' => true 
		) );
		if (empty ( $receiptDetail ))
			die ( 'illegal request' );
		
		$enclosurList = $enclosur->getEnclosurByRid ( $receiptDetail ['rid'] );
		$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 ['enclosurList'] = $enclosurList;
		$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'] = $ridKey;
		
		$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;
		$ridKey = $this->get_args ( 'rid' ) ? $this->get_args ( 'rid' ) : 0;
		
		$enclosurName = $this->get_args ( 'enclosurName' ) ? $this->get_args ( 'enclosurName' ) : "";
		
		$remittanceName = $this->get_args ( 'remittanceName' ) ? $this->get_args ( 'remittanceName' ) : "";
		$bankName = $this->get_args ( 'bankName' ) ? $this->get_args ( 'bankName' ) : "";
		$bankNumber = $this->get_args ( 'bankNumber' ) ? $this->get_args ( 'bankNumber' ) : "";
		$coupletNumber = $this->get_args ( 'coupletNumber' ) ? $this->get_args ( 'coupletNumber' ) : "";
		
		$remittanceBankType = $this->get_args ( 'remittanceBankType' ) && is_numeric ( $this->get_args ( 'remittanceBankType' ) ) ? $this->get_args ( 'remittanceBankType' ) : 0;
		
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 7 );
		$rid = $XDeode->decode ( $ridKey );
		
		if (! empty ( $rid ) && ! empty ( $explanation ) && ! empty ( $remittanceName ) && ! empty ( $bankName ) && ! empty ( $bankNumber )) {
			
			if ($remittanceBankType == 1 && empty ( $coupletNumber )) {
				header ( 'Content-Type:text/html;charset=utf-8' );
				die ( '请填写联行号' );
			}
			
			Doo::loadModel ( 'receipt' );
			Doo::loadModel ( 'receiptDetail' );
			Doo::loadModel ( 'accountItem' );
			$accountItem = new accountItem ();
			$receipt = new receipt ();
			
			Doo::loadModel ( 'enclosur' );
			
			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;
			}
			if ($receiptDetail != 4 && ! empty ( $verify ))
				$receipt->verify = $verify;
			$receipt->executeCopy = $executeDetail ['staff'];
			
			$order = array (
					"\r\n",
					"\n",
					"\r" 
			);
			$replace = '
';
			$explanation = str_replace ( $order, $replace, $explanation );
			$receipt->explanation = $explanation;
			
			$receipt->remittanceName = $remittanceName;
			$receipt->bankName = $bankName;
			$receipt->bankNumber = $bankNumber;
			$receipt->remittanceBankType = $remittanceBankType;
			if ($remittanceBankType == 1)
				$receipt->coupletNumber = $coupletNumber;
			
			$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 ();
			}
			
			// 附件
			if (! empty ( $enclosurName )) {
				$enclosurArray = explode ( '-', $enclosurName );
				foreach ( $enclosurArray as $value ) {
					$enclosur = new enclosur ();
					
					$enclosur->name = $value;
					$enclosur->rid = $rid;
					$enclosur->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 );
		
		$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 remittanceHky() {
		$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' ) : 'DAY';
		
		$page = isset ( $this->params ['page'] ) && is_numeric ( $this->params ['page'] ) ? $this->params ['page'] : 1;
		$page_size = 15;
		
		$get = "?year=" . $year . "&moth=" . $moth . "&day=" . $day;
		
		Doo::loadModel ( 'receipt' );
		$receipt = new receipt ();
		Doo::loadModel ( 'staff' );
		$staff = new staff ();
		
		$dateCondition = " and Year(executeDate) =" . $year;
		if ($moth != 'MONTH')
			$dateCondition = " and Year(executeDate) =" . $year . " and Month(executeDate) = " . $moth;
		if ($day != 'DAY' && $moth != 'MONTH')
			$dateCondition = " and Year(executeDate) =" . $year . " and Month(executeDate) = " . $moth . " and day(executeDate)=" . $day;
		
		$sql = ' (status =8 or status=9 ) and amount!=0  ' . $dateCondition;
		$table = '(SELECT count(*) FROM CLD_receipt WHERE ' . $sql . ' group by executeDate ) a ';
		$pageinfo = $this->get_page ( $table, '  ', $page, $page_size, "remittanceHky", $get, "" );
		$limit = $pageinfo ['lower'] . ',' . $page_size;
		
		$dayList = $receipt->find ( array (
				'select' => 'executeDate,sum(amount) as amount',
				'where' => $sql,
				'desc' => 'executeDate',
				'groupby' => 'executeDate',
				'limit' => $limit,
				'asArray' => true 
		) );
		// print_r($dayList);
		foreach ( $dayList as $key => $value ) {
			$remitString = "";
			$receiptList = $receipt->find ( array (
					'select' => 'rid,executeDate,amount,staff,cid',
					'where' => '(status =8 or status=9 ) and amount!=0 and executeDate="' . $value ['executeDate'] . '"',
					'desc' => 'executeDate',
					'asArray' => true 
			) );
			
			foreach ( $receiptList as $k => $v ) {
				$sinfo = $staff->getOne ( array (
						'select' => 'username,category',
						'where' => ' sid=' . $v ['staff'],
						'asArray' => true 
				) );
				$remitString .= $sinfo ['category'] . '-' . $sinfo ['username'] . '(' . $v ['amount'] . ')  ';
			}
			$dayList [$key] ['staff'] = $remitString;
			$dayList [$key] ['ridKey'] = strtotime ( $value ['executeDate'] );
		}
		
		// print_r($dayList);
		$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 .= '';
			}
		}
		
		$dateHtml = "";
		$now = date ( "Y" );
		for($YEARD = 2050; $YEARD >= 2004; $YEARD --) {
			
			if ($YEARD <= $now) {
				$dateHtml .= '';
			}
		}
		
		$data ['dateHtml'] = $dateHtml;
		
		$data ['page'] = $pageinfo;
		$data ['year'] = $year;
		$data ['moth'] = $moth;
		$data ['day'] = $day;
		$data ['get'] = $get;
		$data ['dayHtml'] = $dayHtml;
		$data ['mothHtml'] = $mothHtml;
		$data ['receiptList'] = $dayList;
		
		$data ['memu'] = "receipt";
		$data ['staff'] = $this->staff;
		$data ['receiptMemu'] = 'remittanceHky';
		$data ['verifyId'] = $this->verifyId;
		$data ['executeId'] = $this->executeId;
		$this->render ( "/admin/remittanceHky", $data );
	}
	function remittancep() {
		$timeStamp = isset ( $this->params ['timeStamp'] ) && is_numeric ( $this->params ['timeStamp'] ) ? $this->params ['timeStamp'] : 0;
		
		Doo::loadModel ( 'receipt' );
		$receipt = new receipt ();
		Doo::loadModel ( 'staff' );
		$staff = new staff ();
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 5 );
		
		$dateCondition = ' and executeDate="' . date ( 'Y-m-d', $timeStamp ) . '"';
		
		$rplist = $receipt->find ( array (
				'where' => ' (status =8 or status=9 ) and amount!=0  ' . $dateCondition,
				'asArray' => true 
		) );
		
		$dayList = $receipt->find ( array (
				'where' => ' (status =8 or status=9 ) and amount!=0  ' . $dateCondition,
				'desc' => 'executeDate',
				'groupby' => 'staff',
				'asArray' => true 
		) );
		
		$html = '';
		foreach ( $dayList as $key => $value ) {
			$sinfo = $staff->getOne ( array (
					'select' => 'username,category',
					'where' => ' sid=' . $value ['staff'],
					'asArray' => true 
			) );
			$html .= '| ' . $sinfo ['category'] . '-' . $sinfo ['username'] . ' | 
|---|
					| 费用单号 | 汇款金额 | 
';
			$au = 0;
			foreach ( $rplist as $k => $v ) {
				if ($value ['staff'] == $v ['staff']) {
					$html .= '| ' . $v ['receiptOrder'] . ' | ¥' . $v ['amount'] . ' | 
';
					$au += $v ['amount'];
				}
			}
			$html .= '| 合计 | ¥' . $au . ' | 
';
		}
		$data ['html'] = $html;
		
		$data ['memu'] = "receipt";
		$data ['staff'] = $this->staff;
		$data ['receiptMemu'] = 'remittanceHky';
		$data ['verifyId'] = $this->verifyId;
		$data ['executeId'] = $this->executeId;
		$this->render ( "/admin/remittancep", $data );
	}
	function ajaxGetReceiptDetails() {
		$rid = $this->get_args ( 'serial' ) ? $this->get_args ( 'serial' ) : "";
		
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 5 );
		$rid = $XDeode->decode ( $rid );
		
		if (empty ( $rid )) {
			echo json_encode ( array (
					'status' => 2,
					'msg' => 'illegal request' 
			) );
			die ();
		}
		
		Doo::loadModel ( 'receipt' );
		$receipt = new receipt ();
		Doo::loadModel ( 'staff' );
		$staff = new staff ();
		
		$rinfo = $receipt->getOne ( array (
				'where' => 'rid= ' . $rid,
				'asArray' => true 
		) );
		$sinfo = $staff->getOne ( array (
				'select' => 'username,category',
				'where' => ' sid=' . $rinfo ['staff'],
				'asArray' => true 
		) );
		
		$rinfo ['reviseDetail'] = array ();
		if (! empty ( $rinfo ['reviseDetail'] ))
			$rinfo ['reviseDetail'] = json_decode ( $rinfo ['reviseDetail'], true );
		$rinfo ['accountItem'] = json_decode ( $rinfo ['accountItem'], true );
		$rinfo ['loanItem'] = json_decode ( $rinfo ['loanItem'], true );
		$rinfo ['category'] = $sinfo ['category'];
		$verifyStaff = array ();
		if (! empty ( $rinfo ['verifyStaff'] ))
			$verifyStaff = json_decode ( $rinfo ['verifyStaff'], true );
		
		$relust = bcsub ( $rinfo ['sum'], $rinfo ['loanSum'], 2 );
		$rinfo ['relust'] = $relust;
		$rinfo ['relustCN'] = $this->num_to_rmb ( $relust );
		$rinfo ['sumCN'] = $this->num_to_rmb ( $rinfo ['sum'] );
		$rinfo ['loanSumCN'] = $this->num_to_rmb ( $rinfo ['loanSum'] );
		$rinfo ['amountCN'] = $this->num_to_rmb ( $rinfo ['amount'] );
		
		// 费用执行人相关数据
		$executeCopy = json_decode ( $rinfo ['executeCopy'], true );
		$executeStaff = json_decode ( $rinfo ['executeStaff'], true );
		foreach ( $executeCopy as $k => $v ) {
			$executeCopy [$k] ['date'] = '';
			$executeCopy [$k] ['opinion'] = '';
			$executeCopy [$k] ['status'] = '';
			if (! empty ( $executeStaff ))
				foreach ( $executeStaff as $m => $u ) {
					if ($v [0] == $m) {
						$executeCopy [$k] ['date'] = $u ['date'];
						$executeCopy [$k] ['opinion'] = $u ['opinion'];
						$executeCopy [$k] ['status'] = $u ['status'];
						break;
					}
				}
		}
		$rinfo ['executeCopy'] = $executeCopy;
		
		$html = '';
		
		if ($rinfo ['Rtype'] == 1) { // 借款费用
			$html .= '
					| 借款费用 | 
|---|
';
			
			foreach ( $rinfo ['loanItem'] ['借款费用'] as $value ) {
				$html .= '| ' . $value ['name'] . ' | ¥' . $value ['price'] . ' | 
|---|
';
			}
			$html .= '| 产生费用所在办事处 | 
|---|
						| ' . $rinfo ['category'] . ' | 
|---|
						| 费用说明 | 
|---|
| ' . $rinfo ['explanation'] . ' | 
						| (' . $rinfo ['receiptOrder'] . ')本次费用合计 | ¥' . $rinfo ['loanSum'] . ' ' . $rinfo ['loanSumCN'] . '
 | 
						
';
			if ($rinfo ['loanRid'] != 0 && ! empty ( $rinfo ['accountItem'] )) {
				
				$html .= '
';
				
				$html .= '| 日常相关费用 | 
|---|
';
				foreach ( $rinfo ['accountItem'] ['日常相关费用'] as $value ) {
					$html .= '| ' . $value ['name'] . ' | ¥' . $value ['price'] . ' | 
|---|
';
				}
				$html .= '| 合计 | ¥' . $rinfo ['accountItem'] ['cSum'] ['agencySum'] . ' | 
|---|
';
				
				$html .= '| 差旅相关费用 | 
|---|
';
				foreach ( $rinfo ['accountItem'] ['差旅相关费用'] as $value ) {
					$html .= '| ' . $value ['name'] . ' | ¥' . $value ['price'] . ' | 
|---|
';
				}
				$html .= '| 合计 | ¥' . $rinfo ['accountItem'] ['cSum'] ['travelSum'] . ' | 
|---|
';
				
				$html .= '| 培训班费用 | 
|---|
';
				foreach ( $rinfo ['accountItem'] ['培训班费用'] as $value ) {
					$html .= '| ' . $value ['name'] . ' | ¥' . $value ['price'] . ' | 
|---|
';
				}
				$html .= '| 合计 | ¥' . $rinfo ['accountItem'] ['cSum'] ['trainSum'] . ' | 
|---|
';
				
				$html .= '| 其他 | 
|---|
';
				foreach ( $rinfo ['accountItem'] ['其他'] as $value ) {
					$html .= '| ' . $value ['name'] . ' | ¥' . $value ['price'] . ' | 
|---|
';
				}
				$html .= '| 合计 | ¥' . $rinfo ['accountItem'] ['cSum'] ['otherSum'] . ' | 
|---|
';
				
				$html .= '| 报销金额调整 | 
|---|
';
				foreach ( $rinfo ['reviseDetail'] as $value ) {
					$html .= '| |' . $value ['name'] . ':' . $value ['description'] . ' | ¥' . $value ['price'] . ' | 
|---|
';
				}
				$html .= '| 合计 | ¥' . $rinfo ['revisePrice'] . ' | 
|---|
';
				
				$html .= '| 产生费用所在办事处 | 
|---|
						| ' . $rinfo ['category'] . ' | 
|---|
						| 报销说明 | 
|---|
		
						| ' . $rinfo ['explanation'] . ' | 
		
						| (' . $rinfo ['receiptOrder'] . ')本次报销费用合计 | ¥' . $rinfo ['sum'] . ' ' . $rinfo ['sumCN'] . '
 | 
		
						= 0) {
					$html .= 'class="success"';
				} else {
					$html .= 'class="error"';
				}
				$html .= '>| 借款结余 | ¥' . $rinfo ['relust'] . ' ' . $rinfo ['relustCN'] . '
 | 
	  					
						';
			}
		} elseif ($rinfo ['Rtype'] == 2) { // 对公汇款
			
			$html .= '
					| 办事处相关费用 | 
|---|
';
			
			foreach ( $rinfo ['accountItem'] ['日常相关费用'] as $value ) {
				$html .= '| ' . $value ['name'] . ' | ¥' . $value ['price'] . ' | 
|---|
';
			}
			$html .= '| 合计 | ¥' . $rinfo ['accountItem'] ['cSum'] ['agencySum'] . ' | 
|---|
';
			
			$html .= '| 产生费用所在办事处 | 
|---|
						| ' . $rinfo ['category'] . ' | 
|---|
						| 费用说明 | 
|---|
| ' . $rinfo ['explanation'] . ' | 
						| (' . $rinfo ['receiptOrder'] . ')本次费用合计 | ¥' . $rinfo ['sum'] . ' ' . $rinfo ['sumCN'] . '
 | 
						
';
		} else {
			
			$html .= '
';
			
			$html .= '| 日常相关费用 | 
|---|
';
			foreach ( $rinfo ['accountItem'] ['日常相关费用'] as $value ) {
				$html .= '| ' . $value ['name'] . ' | ¥' . $value ['price'] . ' | 
|---|
';
			}
			$html .= '| 合计 | ¥' . $rinfo ['accountItem'] ['cSum'] ['agencySum'] . ' | 
|---|
';
			
			$html .= '| 差旅相关费用 | 
|---|
';
			foreach ( $rinfo ['accountItem'] ['差旅相关费用'] as $value ) {
				$html .= '| ' . $value ['name'] . ' | ¥' . $value ['price'] . ' | 
|---|
';
			}
			$html .= '| 合计 | ¥' . $rinfo ['accountItem'] ['cSum'] ['travelSum'] . ' | 
|---|
';
			
			$html .= '| 培训班费用 | 
|---|
';
			foreach ( $rinfo ['accountItem'] ['培训班费用'] as $value ) {
				$html .= '| ' . $value ['name'] . ' | ¥' . $value ['price'] . ' | 
|---|
';
			}
			$html .= '| 合计 | ¥' . $rinfo ['accountItem'] ['cSum'] ['trainSum'] . ' | 
|---|
';
			
			$html .= '| 其他 | 
|---|
';
			foreach ( $rinfo ['accountItem'] ['其他'] as $value ) {
				$html .= '| ' . $value ['name'] . ' | ¥' . $value ['price'] . ' | 
|---|
';
			}
			$html .= '| 合计 | ¥' . $rinfo ['accountItem'] ['cSum'] ['otherSum'] . ' | 
|---|
';
			
			$html .= '| 报销金额调整 | 
|---|
';
			foreach ( $rinfo ['reviseDetail'] as $value ) {
				$html .= '| |' . $value ['name'] . ':' . $value ['description'] . ' | ¥' . $value ['price'] . ' | 
|---|
';
			}
			$html .= '| 合计 | ¥' . $rinfo ['revisePrice'] . ' | 
|---|
';
			
			$html .= '| 产生费用所在办事处 | 
|---|
						| ' . $rinfo ['category'] . ' | 
|---|
						| 报销说明 | 
|---|
						| ' . $rinfo ['explanation'] . ' | 
						| (' . $rinfo ['receiptOrder'] . ')本次报销费用合计 | ¥' . $rinfo ['sum'] . ' ' . $rinfo ['sumCN'] . '
 | 
';
			
			$html .= '
';
			
			/*
			 * 
  | 日常相关费用 | 
|---|
  | {{receiptList' value' value.name}} | ¥{{receiptList' value' value.price}} | 
|---|
  | 合计 | ¥{{receiptList' value.accountItem.cSum.agencySum}} | 
|---|
 | 差旅相关费用 | 
|---|
  | {{receiptDetail' value' value.name}} | ¥{{receiptDetail' value' value.price}} | 
|---|
  | 合计 | ¥{{receiptDetail' value.accountItem.cSum.travelSum}} | 
|---|
 | 培训班费用 | 
|---|
  | {{receiptDetail' value' value.name}} | ¥{{receiptDetail' value' value.price}} | 
|---|
  | 合计 | ¥{{receiptDetail' value.accountItem.cSum.trainSum}} | 
|---|
 | 其他 | 
|---|
  | {{receiptDetail' value' value.name}} | ¥{{receiptDetail' value' value.price}} | 
|---|
  | 合计 | ¥{{receiptDetail' value.accountItem.cSum.otherSum}} | 
|---|
 | 报销金额调整 | 
|---|
  | |{{receiptList' value' value.name}}:{{receiptList' value' value.description}} | ¥{{receiptList' value' value.price}} | 
|---|
  | 合计 | ¥{{receiptList' value.revisePrice}} | 
|---|
 | 产生费用所在办事处 | 
|---|
 | {{receiptDetail' value.category}} | 
|---|
 | 报销说明 | 
|---|
 | {{receiptDetail' value.explanation}} | 
 | ({{receiptDetail' value.receiptOrder}})本次报销费用合计 | ¥{{receiptDetail' value.sum}} {{receiptDetail' value.sumCN}}
 | 
  
			 */
		}
		// print_r($verifyStaff);die;
		$html .= '
| 审批人 | 审批意见 | 
|---|
';
		foreach ( $verifyStaff as $key => $value ) {
			$key = trim ( strtr ( $key, '_R', '  ' ) );
			$sinfo = $staff->getOne ( array (
					'select' => 'username',
					'where' => ' sid=' . $key,
					'asArray' => true 
			) );
			$html .= '| ' . $sinfo ['username'] . ' | ' . $value ['opinion'] . ' | 
';
		}
		$html .= '
';
		
		$html .= '
| 执行人 | 执行意见 | 
|---|
';
		foreach ( $rinfo ['executeCopy'] as $value ) {
			$html .= '| ' . $value [1] . ' | ' . $value ['opinion'] . ' | 
';
		}
		$html .= '
';
		
		$html .= '
| 汇款金额 | ¥' . $rinfo ['amount'] . ' ' . $rinfo ['amountCN'] . '
 | 
';
		
		$html .= '
-';
			else
				$collectHtml .= ' | ¥' . $sumPrice . '';
			$total += $sumPrice;
		}
		$collectHtml .= ' | ¥' . $total . '';
		$data ['totalPrice'] = $collectHtml;
		
		$dateHtml = "";
		$now = date ( "Y" );
		for($YEARD = 2050; $YEARD >= 2004; $YEARD --) {
			
			if ($YEARD <= $now) {
				$dateHtml .= '';
			}
		}
		
		$data ['dateHtml'] = $dateHtml;
		
		$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 ($year < date ( "Y" )) {
			Doo::loadModel ( 'receipt' );
			$receipt = new receipt ();
			$receiptList = $receipt->find ( 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;
		
		$dateHtml = "";
		$now = date ( "Y" );
		for($YEARD = 2050; $YEARD >= 2004; $YEARD --) {
			
			if ($YEARD <= $now) {
				$dateHtml .= '';
			}
		}
		
		$data ['dateHtml'] = $dateHtml;
		
		$data ['memu'] = "receipt";
		$data ['staff'] = $this->staff;
		$data ['receiptMemu'] = 'personalCollect';
		$data ['verifyId'] = $this->verifyId;
		$data ['executeId'] = $this->executeId;
		// year staff status 2,4
		if ($year < date ( "Y" )) {
			Doo::loadModel ( 'receipt' );
			$receipt = new receipt ();
			$receiptList = $receipt->find ( 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 ();
		
		Doo::loadModel ( "receiptAuthorityManage" );
		$receiptAuthorityManage = new receiptAuthorityManage ();
		
		$imcStaff = $receiptAuthorityManage->getInvoiceCMByStaff ( $this->staff [0] ['sid'] );
		$cidList = array ();
		foreach ( $imcStaff as $key => $value ) {
			array_push ( $cidList, $value ['cid'] );
		}
		$cidString = implode ( ',', $cidList );
		
		$LcategoryList = $Lcategory->find ( array (
				'where' => ' cid in (' . $cidString . ')',
				'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
		
		// echo $cidString;
		
		$stList = $statistics->statisticsByComPanyYear ( $year, $this->staff [0] ['sid'], $cidString );
		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;
		
		$dateHtml = "";
		$now = date ( "Y" );
		for($YEARD = 2050; $YEARD >= 2004; $YEARD --) {
			
			if ($YEARD <= $now) {
				$dateHtml .= '';
			}
		}
		
		$data ['dateHtml'] = $dateHtml;
		
		// year staff status 2,4
		if ($year < date ( "Y" )) {
			Doo::loadModel ( 'receipt' );
			$receipt = new receipt ();
			$receiptList = $receipt->find ( 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 ();
		
		Doo::loadModel ( "receiptAuthorityManage" );
		$receiptAuthorityManage = new receiptAuthorityManage ();
		
		$imcStaff = $receiptAuthorityManage->getInvoiceCMByStaff ( $this->staff [0] ['sid'] );
		$cidList = array ();
		foreach ( $imcStaff as $key => $value ) {
			array_push ( $cidList, $value ['cid'] );
		}
		$cidString = implode ( ',', $cidList );
		
		$LcategoryList = $Lcategory->find ( array (
				'where' => 'cid in (' . $cidString . ')',
				'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 ($year < date ( "Y" )) {
			Doo::loadModel ( 'receipt' );
			$receipt = new receipt ();
			$receiptList = $receipt->find ( 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 ();
		
		Doo::loadModel ( "receiptAuthorityManage" );
		$receiptAuthorityManage = new receiptAuthorityManage ();
		
		$imcStaff = $receiptAuthorityManage->getInvoiceCMByStaff ( $this->staff [0] ['sid'] );
		$cidList = array ();
		foreach ( $imcStaff as $key => $value ) {
			array_push ( $cidList, $value ['cid'] );
		}
		$cidString = implode ( ',', $cidList );
		
		// statistics html
		$stList = $statistics->statisticsByComPanyYear ( $year, $this->staff [0] ['sid'], $cidString );
		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 . ' and cid in (' . $cidString . ')',
				'groupby' => 'staff,Month(date)',
				'asArray' => true 
		) );
		
		$categoryList = $staff->find ( array (
				'select' => 'COUNT(*) as count,cid,category',
				'where' => 'username !="admin" and cid in (' . $cidString . ')',
				'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 .= ' | ' . $value ['username'] . '';
					$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 .= ' | ¥' . $v ['price'] . '';
								$falg = false;
								break;
							}
						}
						if ($falg)
							$html .= ' | -';
					}
					$m13 += $asum;
					$html .= ' | ¥' . $asum . '';
					$collectHtml [$value ['username'] . '_' . $value ['sid']] = array (
							'html' => $html,
							'sid' => $value ['sid'] 
					);
					$html = "";
				}
			}
			$hl = ' | 小计 | ¥' . $m1 . ' | ¥' . $m2 . ' | ¥' . $m3 . ' | ¥' . $m4 . ' | ¥' . $m5 . ' | ¥' . $m6 . ' | ¥' . $m7 . ' | ¥' . $m8 . ' | ¥' . $m9 . ' | ¥' . $m10 . ' | ¥' . $m11 . ' | ¥' . $m12 . ' | ¥' . $m13 . '';
			$collectHtml [$vlu ['cid']] = array (
					'html' => $hl,
					'sid' => '' 
			);
		}
		$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;
		
		$data ['year'] = $year;
		
		$data ['memu'] = "receipt";
		$data ['staff'] = $this->staff;
		$data ['receiptMemu'] = 'companyCategoryCollect';
		$data ['verifyId'] = $this->verifyId;
		$data ['executeId'] = $this->executeId;
		if ($year <= date ( "Y" )) {
			Doo::loadModel ( 'receipt' );
			$receipt = new receipt ();
			$receiptList = $receipt->find ( array (
					'where' => '(status=2 or status=4) and Year(date) =' . $year,
					'asArray' => true 
			) );
			if (empty ( $receiptList )) { // generated files
				ob_start ();
				$this->render ( "/admin/saeaStaffCollectB", $data );
				$this->cacheFile ( $path );
				die ();
			}
		}
		
		$this->render ( "/admin/saeaStaffCollectB", $data );
	}
	function staffCollectBak() {
		$year = $this->get_args ( 'year' ) ? $this->get_args ( 'year' ) : date ( "Y" );
		$month = $this->get_args ( 'month' ) ? $this->get_args ( 'month' ) : 1;
		
		$path = SITE_PATH . $this->STAFFCOLLECTPATH . "staffCollect_" . $year . "_" . $month . ".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 ();
		
		$itemStatisticsList = $itemStatistics->find ( array (
				'select' => 'cid,staff,sum(price) as price,itemCategory,Month(date) as month',
				'where' => 'Month(date)=' . $month . " and Year(date)=" . $year,
				'groupby' => 'staff,itemCategory,Month(date)',
				'asArray' => true 
		) );
		$itemCategoryList = $itemStatistics->find ( array (
				'select' => 'cid,staff,sum(price) as price,itemCategory,Month(date) as month',
				'where' => 'Month(date)=' . $month . " and Year(date)=" . $year,
				'groupby' => 'cid,itemCategory,Month(date)',
				'asArray' => true 
		) );
		
		$LcategoryList = $Lcategory->find ( array (
				'asArray' => true 
		) );
		$staffList = $staff->find ( array (
				'asArray' => true 
		) );
		
		$htmlArray = array ();
		foreach ( $LcategoryList as $value ) {
			$htmlArray [$value ['title']] = array ();
			foreach ( $staffList as $v ) {
				if ($value ['cid'] == $v ['cid']) {
					$html = "";
					$falg = true;
					$staffSumPrice = 0;
					
					foreach ( $itemStatisticsList as $a ) {
						if ($v ['sid'] == $a ['staff'] && $a ['itemCategory'] == "日常相关费用") {
							if (empty ( $a ['price'] )) {
								$html .= ' | -';
								$falg = false;
								break;
							} else {
								$staffSumPrice += $a ['price'];
								$html .= ' | ¥' . $a ['price'] . '';
								$falg = false;
								break;
							}
						}
					}
					if ($falg) {
						$html .= ' | -';
						$falg = true;
					}
					
					$falg = true;
					foreach ( $itemStatisticsList as $a ) {
						if ($v ['sid'] == $a ['staff'] && $a ['itemCategory'] == "差旅相关费用") {
							if (empty ( $a ['price'] )) {
								$html .= ' | -';
								$falg = false;
								break;
							} else {
								$staffSumPrice += $a ['price'];
								$html .= ' | ¥' . $a ['price'] . '';
								$falg = false;
								break;
							}
						}
					}
					if ($falg) {
						$html .= ' | -';
						$falg = true;
					}
					
					$falg = true;
					foreach ( $itemStatisticsList as $a ) {
						if ($v ['sid'] == $a ['staff'] && $a ['itemCategory'] == "培训班费用") {
							if (empty ( $a ['price'] )) {
								$html .= ' | -';
								$falg = false;
								break;
							} else {
								$staffSumPrice += $a ['price'];
								$html .= ' | ¥' . $a ['price'] . '';
								$falg = false;
								break;
							}
						}
					}
					if ($falg) {
						$html .= ' | -';
						$falg = true;
					}
					
					$falg = true;
					foreach ( $itemStatisticsList as $a ) {
						if ($v ['sid'] == $a ['staff'] && $a ['itemCategory'] == "其他") {
							if (! empty ( $a ['price'] )) {
								$staffSumPrice += $a ['price'];
								$html .= ' | ¥' . $a ['price'] . '';
								$falg = false;
								break;
							} else {
								$html .= ' | -';
								$falg = false;
								break;
							}
						}
					}
					if ($falg) {
						$html .= ' | -';
						$falg = true;
					}
					
					$falg = true;
					foreach ( $itemStatisticsList as $a ) {
						if ($v ['sid'] == $a ['staff'] && $a ['itemCategory'] == "报销金额调整") {
							if (! empty ( $a ['price'] )) {
								$staffSumPrice += $a ['price'];
								$html .= ' | ¥' . $a ['price'] . '';
								$falg = false;
								break;
							} else {
								$html .= ' | -';
								$falg = false;
								break;
							}
						}
					}
					if ($falg) {
						$html .= ' | -';
						$falg = true;
					}
					
					$html .= ' | ¥' . $staffSumPrice . '';
					$htmlArray [$value ['title']] [$v ['username']] = $html;
				}
			}
			
			/* -- --- */
			// 合计费用
			$cateHtml = "";
			$catePrice = 0;
			$cateFalg = true;
			foreach ( $itemCategoryList as $l ) {
				if ($value ['cid'] == $l ['cid'] && $l ['itemCategory'] == "日常相关费用") {
					if (empty ( $l ['price'] )) {
						$cateHtml .= ' | -';
						$cateFalg = false;
						break;
					} else {
						$catePrice += $l ['price'];
						$cateHtml .= ' | ¥' . $l ['price'] . '';
						$cateFalg = false;
						break;
					}
				}
			}
			if ($cateFalg) {
				$cateHtml .= ' | -';
				$cateFalg = true;
			}
			
			$cateFalg = true;
			foreach ( $itemCategoryList as $l ) {
				if ($value ['cid'] == $l ['cid'] && $l ['itemCategory'] == "差旅相关费用") {
					if (empty ( $l ['price'] )) {
						$cateHtml .= ' | -';
						$cateFalg = false;
						break;
					} else {
						$catePrice += $l ['price'];
						$cateHtml .= ' | ¥' . $l ['price'] . '';
						$cateFalg = false;
						break;
					}
				}
			}
			if ($cateFalg) {
				$cateHtml .= ' | -';
				$cateFalg = true;
			}
			
			$cateFalg = true;
			foreach ( $itemCategoryList as $l ) {
				if ($value ['cid'] == $l ['cid'] && $l ['itemCategory'] == "培训班费用") {
					if (empty ( $l ['price'] )) {
						$cateHtml .= ' | -';
						$cateFalg = false;
						break;
					} else {
						$catePrice += $l ['price'];
						$cateHtml .= ' | ¥' . $l ['price'] . '';
						$cateFalg = false;
						break;
					}
				}
			}
			if ($cateFalg) {
				$cateHtml .= ' | -';
				$cateFalg = true;
			}
			
			$cateFalg = true;
			foreach ( $itemCategoryList as $l ) {
				if ($value ['cid'] == $l ['cid'] && $l ['itemCategory'] == "其他") {
					if (empty ( $l ['price'] )) {
						$cateHtml .= ' | -';
						$cateFalg = false;
						break;
					} else {
						$catePrice += $l ['price'];
						$cateHtml .= ' | ¥' . $l ['price'] . '';
						$cateFalg = false;
						break;
					}
				}
			}
			if ($cateFalg) {
				$cateHtml .= ' | -';
				$cateFalg = true;
			}
			
			$cateFalg = true;
			foreach ( $itemCategoryList as $l ) {
				if ($value ['cid'] == $l ['cid'] && $l ['itemCategory'] == "报销金额调整") {
					if (empty ( $l ['price'] )) {
						$cateHtml .= ' | -';
						$cateFalg = false;
						break;
					} else {
						$catePrice += $l ['price'];
						$cateHtml .= ' | ¥' . $l ['price'] . '';
						$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" )) && ($month < date ( "m" ))) {
			Doo::loadModel ( 'receipt' );
			$receipt = new receipt ();
			$receiptList = $receipt->find ( 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 payments() {
		//include Doo::conf ()->BASE_PATH . 'diagnostic/debug.php';
		Doo::loadModel ( "accountBook" );
		$accountBook = new accountBook ();
		
		Doo::loadModel ( "accountBookStatistics" );
		$accountBookStatistics = new accountBookStatistics ();
		
		$statisticsList = $accountBookStatistics->getStatisticsByMonth ();
		
		$list = $accountBook->getAccountBookByLimit ( 10 );
		
		$data ['date'] = date ( "Y-m-d" );
		$data ['statisticsList'] = $statisticsList;
		$data ['list'] = $list;
		$data ['memu'] = "receipt";
		$data ['staff'] = $this->staff;
		$data ['receiptMemu'] = 'payments';
		$data ['verifyId'] = $this->verifyId;
		$data ['executeId'] = $this->executeId;
		$this->render ( "/expenses/payments", $data );
	}
	function paymentsIncomeDo() {
		$accountType = $this->get_args ( 'accountType' ) ? $this->get_args ( 'accountType' ) : "";
		$accountMsg = $this->get_args ( 'accountMsg' . $accountType ) ? $this->get_args ( 'accountMsg' . $accountType ) : "";
		$receivedPrice = is_numeric ( $this->get_args ( 'receivedPrice' ) ) ? $this->get_args ( 'receivedPrice' ) : 0;
		$receivedMsg = $this->get_args ( 'receivedMsg' ) ? $this->get_args ( 'receivedMsg' ) : '';
		$receivedBank = $this->get_args ( 'receivedBank' ) ? $this->get_args ( 'receivedBank' ) : '';
		$receivedDate = $this->get_args ( 'receivedDate' ) ? $this->get_args ( 'receivedDate' ) : '';
		$remarks = $this->get_args ( 'remarks' ) ? $this->get_args ( 'remarks' ) : '';
		
		if (! empty ( $accountType ) && ! empty ( $receivedPrice ) && ! empty ( $receivedMsg ) && ! empty ( $receivedBank ) && ! empty ( $receivedDate )) {
			Doo::loadClass ( 'XDeode' );
			$XDeode = new XDeode ( 5 );
			Doo::loadModel ( "accountBook" );
			Doo::loadModel ( "accountBookStatistics" );
			Doo::loadModel ( 'wasteBook' );
			
			// 记录流水时银行的转换
			$accountBank = '';
			if ($receivedBank == '纵横广发') {
				$accountBank = 'CGBDeposit';
			} elseif ($receivedBank == '纵横工行') {
				$accountBank = 'ICBCDeposit';
			} elseif ($receivedBank == '华润银行') {
				$accountBank = 'HUADeposit';
			} elseif ($receivedBank == '个人广发') {
				$accountBank = 'PersonalDeposit';
			}
			if (empty ( $accountBank ))
				die ( 'illegal request' );
				
				// 收入为理财时特殊处理
			if ($accountType == 7 || $accountType == 9) {
				
				if ($receivedBank == '个人广发') {
					die ( '个人广发  illegal request' );
				}
				// 添加一条收入
				$accountBook = new accountBook ();
				$accountBook->accountType = 10;
				$accountBook->accountMsg = $accountMsg;
				$accountBook->receivedPrice = $receivedPrice;
				$accountBook->receivedMsg = $receivedMsg;
				$accountBook->receivedBank = $receivedBank;
				$accountBook->receivedDate = $receivedDate;
				$accountBook->remarks = $remarks;
				$accountBook->expensesType = 1;
				$accountBook->bookSerial = "#IN" . date ( "Ymd" ) . mt_rand ( 1000, 9999 );
				$accountBook->inputDate = date ( "Y-m-d H:i:s" );
				$accountBook->inputStaff = $this->staff [0] ['sid'];
				$inComeId = $accountBook->insert ();
				// 收支汇总-添加一条收入日常汇总
				$abDetail = $accountBook->getAccountBookByAid ( $inComeId );
				$accountBookStatistics = new accountBookStatistics ();
				$item = array (
						'date' => date ( "Y-m-d" ),
						'accountType' => $abDetail ['accountType'],
						'accountMsg' => $abDetail ['accountMsg'],
						'aid' => $abDetail ['aid'],
						'inComePrice' => $abDetail ['receivedPrice'],
						'expensesType' => $abDetail ['expensesType'] 
				);
				$accountBookStatistics->setAccountBookStatistics ( $item );
				
				// 添加收入流水
				$wasteBook = new wasteBook ();
				$itemWaste = array (
						'accountPriceShow' => $receivedPrice,
						'accountPrice' => $receivedPrice,
						'expensesType' => 1,
						'accountType' => 6, // 流水类型
						'dataID' => $inComeId,
						'dailyIncomeType' => $accountType, // $dailyIncomeType,
						'accountBank' => $accountBank,
						'category' => $this->staff [0] ['category'],
						'cid' => $this->staff [0] ['cid'],
						'name' => $this->staff [0] ['username'],
						'sid' => $this->staff [0] ['sid'],
						'inputDate' => date ( "Y-m-d H:i:s" ) 
				);
				$wasteBook->setAccountBookStatistics ( $itemWaste );
				// 添加一条理财支出
				$accountBank = 'CGBDeposit';
				$expenditureBank = '纵横广发';
				$dailyExpenditureType = 4;
				if ($accountType == 9) {
					$accountBank = 'ICBCDeposit';
					$expenditureBank = '纵横工行';
					$dailyExpenditureType = 6;
				}
				$accountBook = new accountBook ();
				$accountBook->expensesType = 2;
				$accountBook->expenditureType = $dailyExpenditureType;
				$accountBook->expenditureMsg = $accountMsg;
				$accountBook->expenditurePrice = $receivedPrice;
				$accountBook->expenditureBank = $expenditureBank;
				$accountBook->expenditureDate = $receivedDate;
				$accountBook->remarks = $remarks;
				$accountBook->bookSerial = "#IN" . date ( "Ymd" ) . mt_rand ( 1000, 9999 );
				$accountBook->inputDate = date ( "Y-m-d H:i:s" );
				$accountBook->inputStaff = $this->staff [0] ['sid'];
				$id = $accountBook->insert ();
				// 收支汇总-添加一条理财支出汇总
				$abDetail = $accountBook->getAccountBookByAid ( $id );
				$accountBookStatistics = new accountBookStatistics ();
				$item = array (
						'date' => date ( "Y-m-d" ),
						'accountType' => $abDetail ['accountType'],
						'accountMsg' => $abDetail ['accountMsg'],
						'aid' => $abDetail ['aid'],
						'financingPrice' => - $receivedPrice,
						'expensesType' => 3 
				);
				$accountBookStatistics->setAccountBookStatistics ( $item );
				
				// 添加一条支出理财流水
				$accountTypeWaste = 5;
				if ($accountMsg == '公司固定') {
					$accountTypeWaste = 9;
				} elseif ($accountMsg == '公司活期') {
					$accountTypeWaste = 10;
				} elseif ($accountMsg == '个人(GR)') {
					$accountBank = 'PersonalDeposit';
				}
				$itemWaste = array (
						'expensesType' => 2,
						'accountType' => $accountTypeWaste,
						'accountPriceShow' => $receivedPrice,
						'accountPrice' => - $receivedPrice,
						'dataID' => $id,
						'dailyExpenditureType' => $dailyExpenditureType,
						'accountBank' => $accountBank,
						'category' => $this->staff [0] ['category'],
						'cid' => $this->staff [0] ['cid'],
						'name' => $this->staff [0] ['username'],
						'sid' => $this->staff [0] ['sid'],
						'inputDate' => date ( "Y-m-d H:i:s" ) 
				)
				;
				$wasteBook->setAccountBookStatistics ( $itemWaste );
			}elseif($accountType == 1){
				if ($receivedBank == '个人广发')
					die ( 'illegal request' );
				// 添加一条收入
				$accountBook = new accountBook ();
				$accountBook->accountType = $accountType;
				$accountBook->accountMsg = $accountMsg;
				$accountBook->receivedPrice = $receivedPrice;
				$accountBook->receivedMsg = $receivedMsg;
				$accountBook->receivedBank = $receivedBank;
				$accountBook->receivedDate = $receivedDate;
				$accountBook->remarks = $remarks;
				$accountBook->expensesType = 1;
				$accountBook->bookSerial = "#IN" . date ( "Ymd" ) . mt_rand ( 1000, 9999 );
				$accountBook->inputDate = date ( "Y-m-d H:i:s" );
				$accountBook->inputStaff = $this->staff [0] ['sid'];
				$id = $accountBook->insert ();
				$abDetail = $accountBook->getAccountBookByAid ( $id );
				
				// 收支汇总-添加一条收入日常汇总
				$accountBookStatistics = new accountBookStatistics ();
				$item = array (
						'date' => date ( "Y-m-d" ),
						'accountType' => $abDetail ['accountType'],
						'accountMsg' => $abDetail ['accountMsg'],
						'aid' => $abDetail ['aid'],
						'expensesType' => $abDetail ['expensesType']
				);
				if ($abDetail ['accountType'] == 8) {
					$item += array (
							'inComePrice' => $abDetail ['receivedPrice']
					);
				} else {
					$item += array (
							'inComePrice' => $abDetail ['receivedPrice']
					);
				}
				$accountBookStatistics->setAccountBookStatistics ( $item );
				
				//流水存储方向
				$itemWaste = array (
						'accountType' => 6, // 流水类型
				);
// 				if($accountMsg=='银行存款'||$accountMsg=='固定理财收益'){
						
// 				}else
				if($accountMsg=='活期理财收益'){
					$itemWaste = array (
							'accountType' => 10, // 流水类型
					);
				}
				// 添加收入流水
				
				$wasteBook = new wasteBook ();
				$itemWaste += array (
						'accountPrice' => $receivedPrice,
						'accountPriceShow' => $receivedPrice,
						'expensesType' => 1,
						
						'dailyIncomeType' => $accountType, // $dailyIncomeType,
						'dataID' => $id,
						'accountBank' => $accountBank,
						'category' => $this->staff [0] ['category'],
						'cid' => $this->staff [0] ['cid'],
						'name' => $this->staff [0] ['username'],
						'sid' => $this->staff [0] ['sid'],
						'inputDate' => date ( "Y-m-d H:i:s" )
				);
				$wasteBook->setAccountBookStatistics ( $itemWaste );
				
				
			} else { // 普通日常收入处理
			    // 添加一条收入
				$accountBook = new accountBook ();
				$accountBook->accountType = $accountType;
				$accountBook->accountMsg = $accountMsg;
				$accountBook->receivedPrice = $receivedPrice;
				$accountBook->receivedMsg = $receivedMsg;
				$accountBook->receivedBank = $receivedBank;
				$accountBook->receivedDate = $receivedDate;
				$accountBook->remarks = $remarks;
				$accountBook->expensesType = 1;
				$accountBook->bookSerial = "#IN" . date ( "Ymd" ) . mt_rand ( 1000, 9999 );
				$accountBook->inputDate = date ( "Y-m-d H:i:s" );
				$accountBook->inputStaff = $this->staff [0] ['sid'];
				$id = $accountBook->insert ();
				
				$abDetail = $accountBook->getAccountBookByAid ( $id );
				// 收支汇总-添加一条收入日常汇总
				$accountBookStatistics = new accountBookStatistics ();
				$item = array (
						'date' => date ( "Y-m-d" ),
						'accountType' => $abDetail ['accountType'],
						'accountMsg' => $abDetail ['accountMsg'],
						'aid' => $abDetail ['aid'],
						'expensesType' => $abDetail ['expensesType'] 
				);
				if ($abDetail ['accountType'] == 8) {
					$item += array (
							'inComePrice' => $abDetail ['receivedPrice'] 
					);
				} else {
					$item += array (
							'inComePrice' => $abDetail ['receivedPrice'] 
					);
				}
				$accountBookStatistics->setAccountBookStatistics ( $item );
				
				// 添加收入流水
				$itemWaste = array (
						'accountPrice' => $receivedPrice 
				);
				if ($receivedBank == '个人广发') {
					$itemWaste = array (
							'accountPrice' => - $receivedPrice 
					);
				}
				$wasteBook = new wasteBook ();
				$itemWaste += array (
						'accountPriceShow' => $receivedPrice,
						'expensesType' => 1,
						'accountType' => 6, // 流水类型
						'dailyIncomeType' => $accountType, // $dailyIncomeType,
						'dataID' => $id,
						'accountBank' => $accountBank,
						'category' => $this->staff [0] ['category'],
						'cid' => $this->staff [0] ['cid'],
						'name' => $this->staff [0] ['username'],
						'sid' => $this->staff [0] ['sid'],
						'inputDate' => date ( "Y-m-d H:i:s" ) 
				);
				$wasteBook->setAccountBookStatistics ( $itemWaste );
			}
		}
		return '/payments';
	}
	
	/**
	 * 添加收入
	 * @return string
	 */
	function paymentsIncomeDo_() {
		$accountType = $this->get_args ( 'accountType' ) ? $this->get_args ( 'accountType' ) : "";
		$accountMsg = $this->get_args ( 'accountMsg' . $accountType ) ? $this->get_args ( 'accountMsg' . $accountType ) : "";
		$receivedPrice = is_numeric ( $this->get_args ( 'receivedPrice' ) ) ? $this->get_args ( 'receivedPrice' ) : 0;
		
		$receivedMsg = $this->get_args ( 'receivedMsg' ) ? $this->get_args ( 'receivedMsg' ) : '';
		$receivedBank = $this->get_args ( 'receivedBank' ) ? $this->get_args ( 'receivedBank' ) : '';
		$receivedDate = $this->get_args ( 'receivedDate' ) ? $this->get_args ( 'receivedDate' ) : '';
		
		$remarks = $this->get_args ( 'remarks' ) ? $this->get_args ( 'remarks' ) : '';
		
		if (! empty ( $accountType ) && ! empty ( $receivedPrice ) && ! empty ( $receivedMsg ) && ! empty ( $receivedBank ) && ! empty ( $receivedDate )) {
			
			Doo::loadClass ( 'XDeode' );
			$XDeode = new XDeode ( 5 );
			Doo::loadModel ( "accountBook" );
			$accountBook = new accountBook ();
			
			$accountBank = '';
			$accountTypeWaste = 6;
			if ($receivedBank == '纵横广发') {
				$accountBank = 'CGBDeposit';
			} elseif ($receivedBank == '纵横工行') {
				$accountBank = 'ICBCDeposit';
			} elseif ($receivedBank == '华润银行') {
				$accountBank = 'HUADeposit';
			} elseif ($receivedBank == '个人广发') {
				$accountBank = 'PersonalDeposit';
			}
			if (empty ( $accountBank ))
				die ( 'illegal request' );
			
			$dailyIncomeType = '';
			$itemWaste = array (
					'accountPrice' => $receivedPrice,
					'expensesType' => 1 
			);
			if ($receivedBank == '个人广发') {
				$itemWaste = array (
						'accountPrice' => - $receivedPrice,
						'expensesType' => 1 
				);
			}
			
			if ($accountType == 4) {
				$dailyIncomeType = 4;
			} elseif ($accountType == 1) {
				$dailyIncomeType = 1;
			} elseif ($accountType == 2) {
				$dailyIncomeType = 2;
			} elseif ($accountType == 3) {
				$dailyIncomeType = 3;
			} elseif ($accountType == 5) {
				$dailyIncomeType = 5;
			} elseif ($accountType == 6) {
				$dailyIncomeType = 6;
			} elseif ($accountType == 7 || $accountType == 9) {
				$dailyIncomeType = 7;
				if ($accountMsg == '公司固定') {
					$accountTypeWaste = 9;
				} elseif ($accountMsg == '公司活期') {
					$accountTypeWaste = 10;
				} elseif ($accountMsg == '个人(GR)') {
					$accountBank = 'PersonalDeposit';
				}
				$itemWaste = array (
						'accountPrice' => - $receivedPrice,
						'expensesType' => 2 
				);
			} elseif ($accountType == 8) {
				$dailyIncomeType = 8;
			}
			if (empty ( $dailyIncomeType ))
				die ( 'illegal request' );
			
			$accountBook->accountType = $accountType;
			$accountBook->accountMsg = $accountMsg;
			$accountBook->receivedPrice = $receivedPrice;
			$accountBook->receivedMsg = $receivedMsg;
			$accountBook->receivedBank = $receivedBank;
			$accountBook->receivedDate = $receivedDate;
			$accountBook->remarks = $remarks;
			$accountBook->expensesType = 1;
			
			$accountBook->bookSerial = "#IN" . date ( "Ymd" ) . mt_rand ( 1000, 9999 );
			$accountBook->inputDate = date ( "Y-m-d H:i:s" );
			$accountBook->inputStaff = $this->staff [0] ['sid'];
			
			$id = $accountBook->insert ();
			
			//
			$abDetail = $accountBook->getAccountBookByAid ( $id );
			// 收支汇总
			Doo::loadModel ( "accountBookStatistics" );
			$accountBookStatistics = new accountBookStatistics ();
			$item = array (
					'date' => date ( "Y-m-d" ),
					'accountType' => $abDetail ['accountType'],
					'accountMsg' => $abDetail ['accountMsg'],
					'aid' => $abDetail ['aid'] 
			);
			
			if ($abDetail ['expensesType'] == 1) {
				if ($abDetail ['accountType'] == 7 || $abDetail ['accountType'] == 9) {
					$item += array (
							'financingPrice' => - $receivedPrice,
							'expensesType' => 3 
					);
				} else if ($abDetail ['accountType'] == 8) {
					$item += array (
							'inComePrice' => - $abDetail ['receivedPrice'],
							'expensesType' => $abDetail ['expensesType'] 
					);
				} else {
					$item += array (
							'inComePrice' => $abDetail ['receivedPrice'],
							'expensesType' => $abDetail ['expensesType'] 
					);
				}
			}
			$accountBookStatistics->setAccountBookStatistics ( $item );
			
			// 为理财时需添加一条日常支出
			if ($accountType == 7 || $accountType == 9) {
			}
			
			// 公司流水记录
			Doo::loadModel ( 'wasteBook' );
			$wasteBook = new wasteBook ();
			
			// 银行
			// if (empty($abDetail)){
			$itemWaste += array (
					'accountPriceShow' => $receivedPrice,
					'dataID' => $id,
					
					'accountType' => $accountTypeWaste,
					'dailyIncomeType' => $accountType, // $dailyIncomeType,
					'accountBank' => $accountBank,
					'category' => $this->staff [0] ['category'],
					'cid' => $this->staff [0] ['cid'],
					'name' => $this->staff [0] ['username'],
					'sid' => $this->staff [0] ['sid'],
					'inputDate' => date ( "Y-m-d H:i:s" ) 
			);
			$wasteBook->setAccountBookStatistics ( $itemWaste );
			// }
			// 类型为理财7或者9 要添加一笔理财支出
			if ($accountType == 7 || $accountType == 9) {
				
				$accountBank = 'CGBDeposit';
				$expenditureBank = '纵横广发';
				$dailyExpenditureType = 4;
				if ($accountType == 9) {
					$accountBank = 'ICBCDeposit';
					$expenditureBank = '纵横工行';
					$dailyExpenditureType = 6;
				}
				
				// 添加一条支出
				$accountBook = new accountBook ();
				
				$accountBook->expenditureType = $dailyExpenditureType;
				$accountBook->expenditureMsg = $accountMsg;
				$accountBook->expenditurePrice = $receivedPrice;
				$accountBook->expenditureBank = $expenditureBank;
				
				$accountBook->expenditureDate = $receivedDate;
				$accountBook->remarks = $remarks;
				$accountBook->expensesType = 2;
				$accountBook->bookSerial = "#IN" . date ( "Ymd" ) . mt_rand ( 1000, 9999 );
				$accountBook->inputDate = date ( "Y-m-d H:i:s" );
				$accountBook->inputStaff = $this->staff [0] ['sid'];
				$id = $accountBook->insert ();
				// 添加一条收入流水
				$itemWaste = array (
						'accountPriceShow' => $receivedPrice,
						'accountPrice' => $receivedPrice,
						'dataID' => $id,
						'expensesType' => 2,
						'accountType' => $accountTypeWaste,
						'dailyExpenditureType' => $dailyExpenditureType,
						'accountBank' => $accountBank,
						'category' => $this->staff [0] ['category'],
						'cid' => $this->staff [0] ['cid'],
						'name' => $this->staff [0] ['username'],
						'sid' => $this->staff [0] ['sid'],
						'inputDate' => date ( "Y-m-d H:i:s" ) 
				)
				;
				$wasteBook->setAccountBookStatistics ( $itemWaste );
			}
		}
		return '/payments';
	}
	function paymentsExpenditureDo() {
		$expenditureType = $this->get_args ( 'expenditureType' ) ? $this->get_args ( 'expenditureType' ) : "";
		$expenditureMsg = $this->get_args ( 'expenditureMsg' . $expenditureType ) ? $this->get_args ( 'expenditureMsg' . $expenditureType ) : "";
		$expenditurePrice = is_numeric ( $this->get_args ( 'expenditurePrice' ) ) ? $this->get_args ( 'expenditurePrice' ) : 0;
		$expenditureBank = $this->get_args ( 'expenditureBank' ) ? $this->get_args ( 'expenditureBank' ) : '';
		$remarks = $this->get_args ( 'remarks' ) ? $this->get_args ( 'remarks' ) : '';
		$expenditureDate = $this->get_args ( 'expenditureDate' ) ? $this->get_args ( 'expenditureDate' ) : '';
		
		if (! empty ( $expenditureType ) && ! empty ( $expenditurePrice ) && ! empty ( $expenditureBank ) && ! empty ( $expenditureDate )) {
			// 理财支出特殊处理
			Doo::loadModel ( "accountBook" );
			Doo::loadModel ( "accountBookStatistics" );
			Doo::loadModel ( 'wasteBook' );
			
			$accountBank = '';
			if ($expenditureBank == '纵横广发') {
				$accountBank = 'CGBDeposit';
			} elseif ($expenditureBank == '纵横工行') {
				$accountBank = 'ICBCDeposit';
			} elseif ($expenditureBank == '华润银行') {
				$accountBank = 'HUADeposit';
			} elseif ($expenditureBank == '个人广发') {
				$accountBank = 'PersonalDeposit';
			}
			if (empty ( $accountBank ))
				die ( 'illegal request' );
			
			if ($expenditureType == 4 || $expenditureType == 6) {
				
				if ($expenditureBank == '个人广发') {
					die ( '个人广发  illegal request' );
				}
				
				// 添加一笔日常支出
				$accountBook = new accountBook ();
				$accountBook->expensesType = 2;
				$accountBook->expenditureType = 7;
				$accountBook->expenditureMsg = $expenditureMsg;
				$accountBook->expenditurePrice = $expenditurePrice;
				$accountBook->expenditureBank = $expenditureBank;
				$accountBook->expenditureDate = $expenditureDate;
				$accountBook->remarks = $remarks;
				$accountBook->bookSerial = "#IN" . date ( "Ymd" ) . mt_rand ( 1000, 9999 );
				$accountBook->inputDate = date ( "Y-m-d H:i:s" );
				$accountBook->inputStaff = $this->staff [0] ['sid'];
				$expenditureId = $accountBook->insert ();
				
				// 添加日常支出汇总
				$abDetail = $accountBook->getAccountBookByAid ( $expenditureId );
				$accountBookStatistics = new accountBookStatistics ();
				$item = array (
						'date' => date ( "Y-m-d" ),
						'expenditureType' => $abDetail ['expenditureType'],
						'expenditureMsg' => $abDetail ['expenditureMsg'],
						'aid' => $abDetail ['aid'],
						'payPrice' => $abDetail ['expenditurePrice'],
						'expensesType' => $abDetail ['expensesType'] 
				);
				$accountBookStatistics->setAccountBookStatistics ( $item );
				
				// 公司日常支出流水
				$wasteBook = new wasteBook ();
				$itemWaste = array (
						'accountPrice' => - $expenditurePrice 
				);
				if ($expenditureBank == '个人广发') {
					$itemWaste = array (
							'accountPrice' => $expenditurePrice 
					);
				}
				$itemWaste += array (
						'expensesType' => 2,
						'accountType' => 5,
						'dailyExpenditureType' => $expenditureType,
						'accountPriceShow' => $expenditurePrice,
						'accountPrice' => - $expenditurePrice,
						'dataID' => $expenditureId,
						'accountBank' => $accountBank,
						'category' => $this->staff [0] ['category'],
						'cid' => $this->staff [0] ['cid'],
						'name' => $this->staff [0] ['username'],
						'sid' => $this->staff [0] ['sid'],
						'inputDate' => date ( "Y-m-d H:i:s" ) 
				);
				$wasteBook->setAccountBookStatistics ( $itemWaste );
				// 添加一笔理财收入
				$accountBank = 'CGBDeposit';
				$dailyIncomeType = 7;
				$receivedBank = '纵横广发';
				if ($expenditureType == 6) {
					$accountBank = 'ICBCDeposit';
					$receivedBank = '纵横工行';
					$dailyIncomeType = 9;
				}
				$accountBook = new accountBook ();
				$accountBook->expensesType = 1;
				$accountBook->accountType = $dailyIncomeType;
				$accountBook->accountMsg = $expenditureMsg;
				$accountBook->receivedPrice = $expenditurePrice;
				$accountBook->receivedBank = $receivedBank;
				$accountBook->receivedDate = $expenditureDate;
				$accountBook->remarks = $remarks;
				$accountBook->bookSerial = "#IN" . date ( "Ymd" ) . mt_rand ( 1000, 9999 );
				$accountBook->inputDate = date ( "Y-m-d H:i:s" );
				$accountBook->inputStaff = $this->staff [0] ['sid'];
				$id = $accountBook->insert ();
				// 添加日常理财收入汇总
				$abDetail = $accountBook->getAccountBookByAid ( $expenditureId );
				$accountBookStatistics = new accountBookStatistics ();
				$item = array (
						'date' => date ( "Y-m-d" ),
						'expenditureType' => $abDetail ['expenditureType'],
						'expenditureMsg' => $abDetail ['expenditureMsg'],
						'aid' => $abDetail ['aid'],
						'financingPrice' => $expenditurePrice,
						'expensesType' => 3 
				);
				$accountBookStatistics->setAccountBookStatistics ( $item );
				// 添加一笔收入流水
				if ($expenditureMsg == '公司固定') {
					$accountTypeWaste = 9;
				} elseif ($expenditureMsg == '公司活期') {
					$accountTypeWaste = 10;
				} elseif ($expenditureMsg == '个人(GR)') {
					$accountBank = 'PersonalDeposit';
				}
				$itemWaste = array (
						'expensesType' => 1,
						'accountType' => $accountTypeWaste,
						'accountPriceShow' => $expenditurePrice,
						'accountPrice' => $expenditurePrice,
						'dataID' => $id,
						
						'dailyIncomeType' => $dailyIncomeType,
						'accountBank' => $accountBank,
						'category' => $this->staff [0] ['category'],
						'cid' => $this->staff [0] ['cid'],
						'name' => $this->staff [0] ['username'],
						'sid' => $this->staff [0] ['sid'],
						'inputDate' => date ( "Y-m-d H:i:s" ) 
				);
				$wasteBook->setAccountBookStatistics ( $itemWaste );
			} else {
				// 添加一笔日常支出
				$accountBook = new accountBook ();
				$accountBook->expensesType = 2;
				$accountBook->expenditureType = $expenditureType;
				$accountBook->expenditureMsg = $expenditureMsg;
				$accountBook->expenditurePrice = $expenditurePrice;
				$accountBook->expenditureBank = $expenditureBank;
				$accountBook->expenditureDate = $expenditureDate;
				$accountBook->remarks = $remarks;
				$accountBook->bookSerial = "#IN" . date ( "Ymd" ) . mt_rand ( 1000, 9999 );
				$accountBook->inputDate = date ( "Y-m-d H:i:s" );
				$accountBook->inputStaff = $this->staff [0] ['sid'];
				$id = $accountBook->insert ();
				
				// 添加日常支出汇总
				$abDetail = $accountBook->getAccountBookByAid ( $id );
				$accountBookStatistics = new accountBookStatistics ();
				$item = array (
						'date' => date ( "Y-m-d" ),
						'expenditureType' => $abDetail ['expenditureType'],
						'expenditureMsg' => $abDetail ['expenditureMsg'],
						'aid' => $abDetail ['aid'],
						
						'expensesType' => $abDetail ['expensesType'] 
				);
				if ($expenditureType == 5) {
					$item += array (
							'payPrice' => - $abDetail ['expenditurePrice'] 
					);
				} else {
					$item += array (
							'payPrice' => $abDetail ['expenditurePrice'] 
					);
				}
				
				$accountBookStatistics->setAccountBookStatistics ( $item );
				
				// 公司日常支出流水
				$wasteBook = new wasteBook ();
				$itemWaste = array (
						'accountPrice' => - $expenditurePrice 
				);
				if ($expenditureBank == '个人广发') {
					$itemWaste = array (
							'accountPrice' => $expenditurePrice 
					);
				}
				$itemWaste += array (
						'expensesType' => 2,
						'accountType' => 5,
						'accountPriceShow' => $expenditurePrice,
						'dataID' => $id,
						'dailyExpenditureType' => $expenditureType,
						'accountBank' => $accountBank,
						'category' => $this->staff [0] ['category'],
						'cid' => $this->staff [0] ['cid'],
						'name' => $this->staff [0] ['username'],
						'sid' => $this->staff [0] ['sid'],
						'inputDate' => date ( "Y-m-d H:i:s" ) 
				);
				$wasteBook->setAccountBookStatistics ( $itemWaste );
			}
		}
		return '/payments';
	}
	
	/**
	 * 添加支出
	 */
	function paymentsExpenditureDo_() {
		$expenditureType = $this->get_args ( 'expenditureType' ) ? $this->get_args ( 'expenditureType' ) : "";
		$expenditureMsg = $this->get_args ( 'expenditureMsg' . $expenditureType ) ? $this->get_args ( 'expenditureMsg' . $expenditureType ) : "";
		
		$expenditurePrice = is_numeric ( $this->get_args ( 'expenditurePrice' ) ) ? $this->get_args ( 'expenditurePrice' ) : 0;
		$expenditureBank = $this->get_args ( 'expenditureBank' ) ? $this->get_args ( 'expenditureBank' ) : '';
		
		$remarks = $this->get_args ( 'remarks' ) ? $this->get_args ( 'remarks' ) : '';
		$expenditureDate = $this->get_args ( 'expenditureDate' ) ? $this->get_args ( 'expenditureDate' ) : '';
		
		if (! empty ( $expenditureType ) && ! empty ( $expenditurePrice ) && ! empty ( $expenditureBank ) && ! empty ( $expenditureDate )) {
			
			$dailyExpenditureType = '';
			$accountTypeWaste = 5;
			$accountBank = '';
			if ($expenditureBank == '纵横广发') {
				$accountBank = 'CGBDeposit';
			} elseif ($expenditureBank == '纵横工行') {
				$accountBank = 'ICBCDeposit';
			} elseif ($expenditureBank == '华润银行') {
				$accountBank = 'HUADeposit';
			} elseif ($expenditureBank == '个人广发') {
				$accountBank = 'PersonalDeposit';
			}
			if (empty ( $accountBank ))
				die ( 'illegal request' );
			
			$itemWaste = array (
					'accountPrice' => - $expenditurePrice 
			);
			if ($expenditureBank == '个人广发') {
				$itemWaste = array (
						'accountPrice' => $expenditurePrice 
				);
			}
			
			if ($expenditureType == 4 || $expenditureType == 6) {
				$dailyExpenditureType = 4;
				
				if ($expenditureMsg == '公司固定') {
					$accountTypeWaste = 9;
				} elseif ($expenditureMsg == '公司活期') {
					$accountTypeWaste = 10;
				} elseif ($expenditureMsg == '个人(GR)') {
					$accountBank = 'PersonalDeposit';
				}
				
				$itemWaste = array (
						'accountPrice' => $expenditurePrice 
				);
			} elseif ($expenditureType == 1) {
				$dailyExpenditureType = 1;
			} elseif ($expenditureType == 2) {
				$dailyExpenditureType = 2;
			} elseif ($expenditureType == 3) {
				$dailyExpenditureType = 3;
			} elseif ($expenditureType == 5) {
				$dailyExpenditureType = 5;
			}
			if (empty ( $dailyExpenditureType ))
				die ( 'illegal request' );
			
			Doo::loadModel ( "accountBook" );
			$accountBook = new accountBook ();
			
			$accountBook->expenditureType = $expenditureType;
			$accountBook->expenditureMsg = $expenditureMsg;
			$accountBook->expenditurePrice = $expenditurePrice;
			$accountBook->expenditureBank = $expenditureBank;
			
			$accountBook->expenditureDate = $expenditureDate;
			$accountBook->remarks = $remarks;
			
			$accountBook->expensesType = 2;
			
			$accountBook->bookSerial = "#IN" . date ( "Ymd" ) . mt_rand ( 1000, 9999 );
			$accountBook->inputDate = date ( "Y-m-d H:i:s" );
			
			$accountBook->inputStaff = $this->staff [0] ['sid'];
			
			$id = $accountBook->insert ();
			
			//
			$abDetail = $accountBook->getAccountBookByAid ( $id );
			Doo::loadModel ( "accountBookStatistics" );
			$accountBookStatistics = new accountBookStatistics ();
			
			$item = array (
					'date' => date ( "Y-m-d" ),
					'expenditureType' => $abDetail ['expenditureType'],
					'expenditureMsg' => $abDetail ['expenditureMsg'],
					'aid' => $abDetail ['aid'] 
			);
			
			if ($abDetail ['expensesType'] == 2) {
				if ($abDetail ['expenditureType'] == 4 || $abDetail ['expenditureType'] == 6) {
					$item += array (
							'financingPrice' => $expenditurePrice,
							'expensesType' => 3 
					);
				} elseif ($abDetail ['expenditureType'] == 5) {
					$item += array (
							'payPrice' => $abDetail ['expenditurePrice'],
							'expensesType' => $abDetail ['expensesType'] 
					);
				} else {
					$item += array (
							'payPrice' => $abDetail ['expenditurePrice'],
							'expensesType' => $abDetail ['expensesType'] 
					);
				}
			}
			
			$accountBookStatistics->setAccountBookStatistics ( $item );
			
			// 公司流水记录
			Doo::loadModel ( 'wasteBook' );
			$wasteBook = new wasteBook ();
			
			$abDetail = $wasteBook->getAccountBookByAid ( 2, $accountTypeWaste, $id );
			// 银行
			if (empty ( $abDetail )) {
				$itemWaste += array (
						'accountPriceShow' => $expenditurePrice,
						'dataID' => $id,
						'expensesType' => 2,
						'accountType' => $accountTypeWaste,
						'dailyExpenditureType' => $expenditureType,
						'accountBank' => $accountBank,
						'category' => $this->staff [0] ['category'],
						'cid' => $this->staff [0] ['cid'],
						'name' => $this->staff [0] ['username'],
						'sid' => $this->staff [0] ['sid'],
						'inputDate' => date ( "Y-m-d H:i:s" ) 
				);
				$wasteBook->setAccountBookStatistics ( $itemWaste );
			}
			
			// 支出类型为4或者6 需要添加一笔收入和收入流水
			if ($expenditureType == 4 || $expenditureType == 6) {
				
				$accountBank = 'CGBDeposit';
				$dailyIncomeType = 7;
				$receivedBank = '纵横广发';
				if ($expenditureType == 6) {
					$accountBank = 'ICBCDeposit';
					$receivedBank = '纵横工行';
					$dailyIncomeType = 9;
				}
				// 添加一笔收入
				$accountBook = new accountBook ();
				$accountBook->accountType = $dailyIncomeType;
				$accountBook->accountMsg = $expenditureMsg;
				$accountBook->receivedPrice = $expenditurePrice;
				
				$accountBook->receivedBank = $receivedBank;
				$accountBook->receivedDate = $expenditureDate;
				$accountBook->remarks = $remarks;
				$accountBook->expensesType = 1;
				$accountBook->bookSerial = "#IN" . date ( "Ymd" ) . mt_rand ( 1000, 9999 );
				$accountBook->inputDate = date ( "Y-m-d H:i:s" );
				$accountBook->inputStaff = $this->staff [0] ['sid'];
				$id = $accountBook->insert ();
				
				// 添加一笔收入流水
				$itemWaste = array (
						'accountPriceShow' => $expenditurePrice,
						'accountPrice' => - $expenditurePrice,
						'dataID' => $id,
						'expensesType' => 1,
						'accountType' => $accountTypeWaste,
						'dailyIncomeType' => $dailyIncomeType,
						'accountBank' => $accountBank,
						'category' => $this->staff [0] ['category'],
						'cid' => $this->staff [0] ['cid'],
						'name' => $this->staff [0] ['username'],
						'sid' => $this->staff [0] ['sid'],
						'inputDate' => date ( "Y-m-d H:i:s" ) 
				);
				$wasteBook->setAccountBookStatistics ( $itemWaste );
			}
		}
		return '/payments';
	}
	
	/**
	 * 所有收支
	 */
	function paymentsAchieve() {
		$page_size = 12;
		$page = isset ( $this->params ['page'] ) && is_numeric ( $this->params ['page'] ) ? $this->params ['page'] : 1;
		$expensesType = isset ( $this->params ['expensesType'] ) ? $this->params ['expensesType'] : 'ALL';
		
		$date = $this->get_args ( 'inputDate' ) ? $this->get_args ( 'inputDate' ) : "";
		$price = $this->get_args ( 'price' ) ? $this->get_args ( 'price' ) : "";
		
		$accountType = $this->get_args ( 'accountType' ) ? $this->get_args ( 'accountType' ) : "";
		$accountMsg = $this->get_args ( 'accountMsg' . $accountType ) ? $this->get_args ( 'accountMsg' . $accountType ) : "";
		
		$expenditureType = $this->get_args ( 'expenditureType' ) ? $this->get_args ( 'expenditureType' ) : "";
		$submitType = $this->get_args ( 'submitType' ) ? $this->get_args ( 'submitType' ) : "";
		
		Doo::loadModel ( "accountBookStatistics" );
		$accountBookStatistics = new accountBookStatistics ();
		
		$statisticsList = $accountBookStatistics->getStatisticsByMonth ();
		
		$data ['statisticsList'] = $statisticsList;
		
		Doo::loadModel ( "accountBook" );
		$accountBook = new accountBook ();
		
		$con = '';
		if ($expensesType == 'INCOME')
			$con = ' and expensesType=1 ';
		elseif ($expensesType == 'PAY')
			$con = ' and expensesType=2 ';
		
		$dateArr = explode ( ':', $date );
		$D1 = $dateString = '';
		$D2 = '';
		if (! empty ( $date )) {
			$D1 = $dateArr [0];
			if (isset ( $dateArr [1] ))
				$D2 = $dateArr [1];
			else
				$D2 = '';
			$dateString = $D1 . " : " . $D2;
		}
		if (! empty ( $D1 ) && ! empty ( $D2 ))
			$con .= ' and inputDate BETWEEN "' . $D1 . '" AND "' . $D2 . '" ';
		elseif (! empty ( $D1 ) && empty ( $D2 ))
			$con .= ' and inputDate like "%' . $D1 . '%"  ';
		
		if (! empty ( $price ))
			$con .= ' and (receivedPrice=' . $price . ' or expenditurePrice=' . $price . ')';
		
		if ($submitType == 1) {
			if ($accountType != '') {
				$expenditureType = '';
				$con .= ' and accountType=' . $accountType;
				if (! empty ( $accountMsg ))
					$con .= ' and (accountType=' . $accountType . ' and accountMsg like "%' . $accountMsg . '%")';
			}
		} elseif ($submitType == 2) {
			if ($expenditureType != '') {
				$accountType = $accountMsg = '';
				$con .= ' and expenditureType=' . $expenditureType;
			}
		} else {
			$accountType = $accountMsg = $expenditureType = '';
		}
		
		$sql = "" . $con;
		$action = "paymentsAchieve";
		$get = '/' . $expensesType; // "?date=" . urlencode ( $date ) . "&MebSea=" . urlencode ( $MebSea );
		
		$pageinfo = $this->get_page ( "CLD_accountBook", $sql, $page, $page_size, $action, $get, "" );
		$limit = $pageinfo ['lower'] . ',' . $page_size;
		$list = $accountBook->getAccountBookBySql ( $limit, $sql, 'desc' );
		
		$data ['expenditureType'] = $expenditureType;
		$data ['accountMsg'] = $accountMsg;
		$data ['accountType'] = $accountType;
		$data ['inputDate'] = $date;
		$data ['price'] = $price;
		$data ['expensesType'] = $expensesType;
		$data ['page'] = $pageinfo;
		$data ['list'] = $list;
		$data ['memu'] = "receipt";
		$data ['staff'] = $this->staff;
		$data ['receiptMemu'] = 'payments';
		$data ['verifyId'] = $this->verifyId;
		$data ['executeId'] = $this->executeId;
		$this->render ( "/expenses/paymentsAchieve", $data );
	}
	function paymentsIncomeUpdateDo() {
		$aidKey = $this->get_args ( 'aidKey' ) ? $this->get_args ( 'aidKey' ) : "";
		
		$accountType = $this->get_args ( 'accountType' ) ? $this->get_args ( 'accountType' ) : "";
		$accountMsg = $this->get_args ( 'accountMsg' . $accountType ) ? $this->get_args ( 'accountMsg' . $accountType ) : "";
		$receivedPrice = is_numeric ( $this->get_args ( 'receivedPrice' ) ) ? $this->get_args ( 'receivedPrice' ) : 0;
		
		$receivedMsg = $this->get_args ( 'receivedMsg' ) ? $this->get_args ( 'receivedMsg' ) : '';
		$receivedBank = $this->get_args ( 'receivedBank' ) ? $this->get_args ( 'receivedBank' ) : '';
		$receivedDate = $this->get_args ( 'receivedDate' ) ? $this->get_args ( 'receivedDate' ) : '';
		
		$remarks = $this->get_args ( 'remarks' ) ? $this->get_args ( 'remarks' ) : '';
		
		if (! empty ( $aidKey ) && ! empty ( $accountType ) && ! empty ( $receivedPrice ) && ! empty ( $receivedMsg ) && ! empty ( $receivedBank ) && ! empty ( $receivedDate )) {
			
			Doo::loadClass ( 'XDeode' );
			$XDeode = new XDeode ( 5 );
			
			$aid = $XDeode->decode ( $aidKey );
			
			Doo::loadModel ( "accountBook" );
			$accountBook = new accountBook ();
			
			//
			$abDetail = $accountBook->getAccountBookByAid ( $aid );
			
			$price = $receivedPrice - $abDetail [inComePrice];
			Doo::loadModel ( "accountBookStatistics" );
			$accountBookStatistics = new accountBookStatistics ();
			
			if ($abDetail ['accountType'] == 7) {
				$item += array (
						'date' => date ( "Y-m-d" ),
						'financingPrice' => - $price,
						'expensesType' => 3,
						'aid' => $abDetail ['aid'] 
				);
			} elseif ($abDetail ['accountType'] == 8) {
				$item += array (
						'date' => date ( "Y-m-d" ),
						'expensesType' => $abDetail ['expensesType'],
						'inComePrice' => - $price,
						'aid' => $abDetail ['aid'] 
				);
			} else {
				
				$item = array (
						'date' => date ( "Y-m-d" ),
						'expensesType' => $abDetail ['expensesType'],
						'inComePrice' => $price,
						'aid' => $abDetail ['aid'] 
				);
			}
			$accountBookStatistics->setAccountBookStatistics ( $item );
			
			$accountBook->accountType = $accountType;
			$accountBook->accountMsg = $accountMsg;
			$accountBook->receivedPrice = $receivedPrice;
			$accountBook->receivedMsg = $receivedMsg;
			$accountBook->receivedBank = $receivedBank;
			$accountBook->receivedDate = $receivedDate;
			$accountBook->remarks = $remarks;
			
			$accountBook->aid = $aid;
			
			$accountBook->update ();
		}
		return '/paymentsAchieve';
	}
	function paymentsExpenditureEdiDo() {
		$aidKey = $this->get_args ( 'aidKey' ) ? $this->get_args ( 'aidKey' ) : "";
		$expenditureType = $this->get_args ( 'expenditureType' ) ? $this->get_args ( 'expenditureType' ) : "";
		$expenditureMsg = $this->get_args ( 'expenditureMsg' . $expenditureType ) ? $this->get_args ( 'expenditureMsg' . $expenditureType ) : "";
		
		$expenditurePrice = is_numeric ( $this->get_args ( 'expenditurePrice' ) ) ? $this->get_args ( 'expenditurePrice' ) : 0;
		$expenditureBank = $this->get_args ( 'expenditureBank' ) ? $this->get_args ( 'expenditureBank' ) : '';
		
		$remarks = $this->get_args ( 'remarks' ) ? $this->get_args ( 'remarks' ) : '';
		$expenditureDate = $this->get_args ( 'expenditureDate' ) ? $this->get_args ( 'expenditureDate' ) : '';
		
		if (! empty ( $aidKey ) && ! empty ( $expenditureType ) && ! empty ( $expenditurePrice ) && ! empty ( $expenditureBank ) && ! empty ( $expenditureDate )) {
			
			Doo::loadClass ( 'XDeode' );
			$XDeode = new XDeode ( 5 );
			
			$aid = $XDeode->decode ( $aidKey );
			
			Doo::loadModel ( "accountBook" );
			$accountBook = new accountBook ();
			
			// 汇总信息
			$abDetail = $accountBook->getAccountBookByAid ( $aid );
			
			$price = $expenditurePrice - $abDetail [expenditurePrice];
			Doo::loadModel ( "accountBookStatistics" );
			$accountBookStatistics = new accountBookStatistics ();
			
			if ($abDetail ['expenditureType'] == 4) {
				$item += array (
						'date' => date ( "Y-m-d" ),
						'financingPrice' => $price,
						'expensesType' => 3,
						'aid' => $abDetail ['aid'] 
				);
			} elseif ($abDetail ['expenditureType'] == 5) {
				$item += array (
						'date' => date ( "Y-m-d" ),
						'expensesType' => $abDetail ['expensesType'],
						'payPrice' => $price,
						'aid' => $abDetail ['aid'] 
				);
			} else {
				
				$item = array (
						'date' => date ( "Y-m-d" ),
						'expensesType' => $abDetail ['expensesType'],
						'payPrice' => $price,
						'aid' => $abDetail ['aid'] 
				);
			}
			
			$accountBookStatistics->setAccountBookStatistics ( $item );
			
			//
			$accountBook->expenditureType = $expenditureType;
			$accountBook->expenditureMsg = $expenditureMsg;
			$accountBook->expenditurePrice = $expenditurePrice;
			$accountBook->expenditureBank = $expenditureBank;
			
			$accountBook->remarks = $remarks;
			$accountBook->expenditureDate = $expenditureDate;
			
			$accountBook->aid = $aid;
			
			$id = $accountBook->update ();
		}
		return '/paymentsAchieve';
	}
	function paymentsDelDo() {
		$aidKey = $this->get_args ( 'aidKey' ) ? $this->get_args ( 'aidKey' ) : "";
		if (! empty ( $aidKey )) {
			
			Doo::loadClass ( 'XDeode' );
			$XDeode = new XDeode ( 5 );
			
			$aid = $XDeode->decode ( $aidKey );
			
			Doo::loadModel ( "accountBook" );
			$accountBook = new accountBook ();
			
			$abDetail = $accountBook->getAccountBookByAid ( $aid );
			
			if(empty($abDetail))
				die ( 'illegal request' );
			
			
			// 删除收支
			Doo::loadModel ( "accountBookStatistics" );
			$accountBookStatistics = new accountBookStatistics ();
			$item = array (
					'date' => date ( "Y-m-d" ),
					'aid' => $abDetail ['aid'] 
			);
			
			
			$accountType='';
			if ($abDetail ['expensesType'] == 1) {
				$accountType=6;
				if ($abDetail ['accountType'] != 7) {
					$item += array (
							'expensesType' => $abDetail ['expensesType'],
							'inComePrice' => - $abDetail ['receivedPrice'] 
					);
				} else {
					$item += array (
							'financingPrice' => $abDetail ['receivedPrice'],
							'expensesType' => 3 
					);
				}
			} elseif ($abDetail ['expensesType'] == 2) {
				$accountType=5;
				if ($abDetail ['accountType'] != 7) {
					$item += array (
							'expensesType' => $abDetail ['expensesType'],
							'payPrice' => - $abDetail ['expenditurePrice'] 
					);
				} else {
					$item += array (
							'financingPrice' => - $abDetail ['expenditurePrice'],
							'expensesType' => 3 
					);
				}
			}
			$accountBookStatistics->setAccountBookStatistics ( $item );
			
			$accountBook->delete ( array (
					'where' => 'aid=' . $aid,
					'limit' => 1 
			) );
			
			//删除收入流水
			if(!empty($accountType)){
			Doo::loadModel ( 'wasteBook' );
			$wasteBook = new wasteBook ();
			$wasteBook->delete ( array (
					'where' => 'dataID=' . $aid . ' and accountType='.$accountType,
					'limit' => 1
			) );
			}
		}
		return '/paymentsAchieve';
	}
	function paymentsCollect() {
		$year = $this->get_args ( 'year' ) ? $this->get_args ( 'year' ) : date ( "Y" );
		$moth = $this->get_args ( 'moth' ) ? $this->get_args ( 'moth' ) : "";
		
		Doo::loadModel ( "accountBookStatistics" );
		$accountBookStatistics = new accountBookStatistics ();
		
		Doo::loadClass ( 'receipt.func' );
		$statisticsIncome = $accountBookStatistics->getStatisticsByCollect ( $year );
		$html = _getPaymentsCollectByYearHtml ( $statisticsIncome );
		$data ['html'] = $html ['html'];
		$data ['inSum'] = $html ['sum'];
		
		$statisticsPay = $accountBookStatistics->getStatisticsByCollect ( $year, 2 );
		$html = _getPaymentsCollectPayByYearHtml ( $statisticsPay );
		$data ['payHtml'] = $html ['html'];
		$data ['paySum'] = $html ['sum'];
		
		// 余额统计
		// $inComePay = $accountBookStatistics->getStatisticsByBalance ( $year, 1 );
		// $pay = $accountBookStatistics->getStatisticsByBalance ( $year, 2 );
		include './protected/config/wasteBook.conf.php';
		Doo::loadModel ( 'wasteBook' );
		$wasteBook = new wasteBook ();
		
		$inComePay = $wasteBook->getWasteBookByStatistics ( 1, $year );
		$pay = $wasteBook->getWasteBookByStatistics ( 2, $year );
		
		// 获得年份之前所有金额
		$detail = $wasteBook->getWasteBookByStatisticsYear ( $year );
		// print_r($detail);
		// $waste['total'];
		
		$lastBalanceHtml = ' | | 截至上月余额';
		
		$inComeHtml = ' | 
|---|
| 收入';
		$payHtml = ' | 
|---|
| 支出';
		$BalanceHtml = ' | 
|---|
| 余额';
		$inSum = $paySum = $showInSum = $showPaySum = $balanceSum = 0;
		$balanceC = $bakBC = $waste ['total'] + $detail [0] ['accountPrice'];
		
		$limitMonth = date ( 'm' ); // 限制显示月份参数
		
		if (date ( 'Y' ) > $year) {
			$limitMonth = 12;
		}
		
		for($i = 1; $i <= 12; $i ++) {
			$inComeA = $payB = 0;
			$falg = true;
			foreach ( $inComePay as $key => $value ) {
				if ($value ['month'] == $i) {
					$falg = false;
					$inComeHtml .= ' | ' . $value ['accountPriceShow'] . '';
					$inSum += $value ['accountPrice'];
					$showInSum += $value ['accountPriceShow'];
					$inComeA = $value ['accountPrice'];
					break;
				}
			}
			if ($falg)
				$inComeHtml .= ' | -';
			
			$payFalg = true;
			foreach ( $pay as $key => $value ) {
				if ($value ['month'] == $i) {
					$payFalg = false;
					$payHtml .= ' | ' . $value ['accountPriceShow'] . '';
					$paySum += $value ['accountPrice'];
					$showPaySum += $value ['accountPriceShow'];
					$payB = $value ['accountPrice'];
					break;
				}
			}
			if ($payFalg)
				$payHtml .= ' | -';
			
			if (empty ( $balanceC ) || $limitMonth < $i)
				$lastBalanceHtml .= ' | -';
			else
				$lastBalanceHtml .= ' | ' . $balanceC . '';
			
			$balanceC = $balanceC + $inComeA + $payB;
			$balanceSum += $balanceC;
			if (empty ( $balanceC ) || $limitMonth < $i)
				$BalanceHtml .= ' | -';
			else
				$BalanceHtml .= ' | ' . $balanceC . '';
			
			// 余额统计
		}
		$inComeHtml .= ' | ¥' . $showInSum . ' | 
|---|
';
		$data ['inComeHtml'] = $inComeHtml;
		$payHtml .= '¥' . $showPaySum . '';
		$data ['payBalanceHtml'] = $payHtml;
		
		$BalanceHtml .= ' | ¥' . $balanceC . '';
		$data ['BalanceHtml'] = $BalanceHtml;
		
		$lastBalanceHtml .= ' | ' . $balanceC . '';
		$data ['lastBalanceHtml'] = $lastBalanceHtml;
		
		$mothHtml = "";
		for($i = 1; $i <= 12; $i ++) {
			if ($moth == $i)
				$mothHtml .= '';
			else
				$mothHtml .= '';
		}
		$data ['mothHtml'] = $mothHtml;
		
		$dateHtml = "";
		$now = date ( "Y" );
		for($YEARD = 2050; $YEARD >= 2004; $YEARD --) {
			
			if ($YEARD <= $now) {
				$dateHtml .= '';
			}
		}
		
		$data ['dateHtml'] = $dateHtml;
		
		$data ['year'] = $year;
		
		$data ['memu'] = "receipt";
		$data ['staff'] = $this->staff;
		$data ['receiptMemu'] = 'paymentsCollect';
		$data ['verifyId'] = $this->verifyId;
		$data ['executeId'] = $this->executeId;
		$this->render ( "/expenses/paymentsCollect", $data );
	}
	function paymentsCollectDay() {
		$year = $this->get_args ( 'year' ) ? $this->get_args ( 'year' ) : date ( "Y" );
		$moth = $this->get_args ( 'month' ) ? $this->get_args ( 'month' ) : '';
		
		if (empty ( $moth ))
			return 'paymentsCollect';
		Doo::loadModel ( "accountBookStatistics" );
		$accountBookStatistics = new accountBookStatistics ();
		
		$i = 2;
		$y = 2013;
		$day = date ( "t", strtotime ( "$year-$moth" ) );
		
		Doo::loadClass ( 'receipt.func' );
		$statisticsIncome = $accountBookStatistics->getStatisticsByCollectDay ( $year, 1, $moth );
		
		$html = _getPaymentsCollectByDayHtml ( $statisticsIncome, $day );
		$data ['html'] = $html ['html'];
		$data ['inSum'] = $html ['sum'];
		
		$statisticsPay = $accountBookStatistics->getStatisticsByCollectDay ( $year, 2, $moth );
		$html = _getPaymentsCollectPayByDayHtml ( $statisticsPay, $day );
		$data ['payHtml'] = $html ['html'];
		$data ['paySum'] = $html ['sum'];
		
		$mothHtml = "";
		for($i = 1; $i <= 12; $i ++) {
			if ($moth == $i)
				$mothHtml .= '';
			else
				$mothHtml .= '';
		}
		$data ['mothHtml'] = $mothHtml;
		$data ['year'] = $year;
		
		// 余额
		// $inComePay = $accountBookStatistics->getStatisticsByBalance ( $year, 1, $moth );
		// $pay = $accountBookStatistics->getStatisticsByBalance ( $year, 2, $moth );
		
		include './protected/config/wasteBook.conf.php';
		Doo::loadModel ( 'wasteBook' );
		$wasteBook = new wasteBook ();
		
		$inComePay = $wasteBook->getStatisticsByDay ( 1, $year, $moth );
		$pay = $wasteBook->getStatisticsByDay ( 2, $year, $moth );
		
		// 获得年份之前所有金额
		$detail = $wasteBook->getWasteBookByStatisticsDay ( $year, $moth );
		
		$lastBalanceHtml = ' | | 截至上日余额';
		
		$inComeHtml = ' | 
|---|
| 收入';
		$payHtml = ' | 
|---|
| 支出';
		$BalanceHtml = ' | 
|---|
| 余额';
		$dayHtml = ' | 
|---|
| 余额';
		$inSum = $paySum = $showPaySum = $showInSum = $balanceSum = 0;
		// $balanceC = 0;
		$balanceC = $bakBC = $waste ['total'] + $detail [0] ['accountPrice'];
		
		$limitDay = date ( 'd' );
		
		$monthLK = ( int ) date ( 'm' );
		
		if (date ( 'Y' ) > $year) {
			$limitDay = cal_days_in_month ( CAL_GREGORIAN, date ( 'm' ), date ( 'Y' ) );
		} elseif (date ( 'Y' ) <= $year && $monthLK < $moth) {
			$limitDay = 0;
		}
		
		for($i = 1; $i <= $day; $i ++) {
			$dayHtml .= ' | ' . $i . '日';
			$inComeA = $payB = 0;
			$falg = true;
			foreach ( $inComePay as $key => $value ) {
				if ($value ['day'] == $i) {
					$falg = false;
					$inComeHtml .= ' | ' . $value ['accountPriceShow'] . '';
					$inSum += $value ['accountPrice'];
					$showInSum += $value ['accountPriceShow'];
					$inComeA = $value ['accountPrice'];
					break;
				}
			}
			if ($falg)
				$inComeHtml .= ' | -';
			
			$payFalg = true;
			foreach ( $pay as $key => $value ) {
				if ($value ['day'] == $i) {
					$payFalg = false;
					$payHtml .= ' | ' . $value ['accountPriceShow'] . '';
					$paySum += $value ['accountPrice'];
					$showPaySum += $value ['accountPriceShow'];
					$payB = $value ['accountPrice'];
					break;
				}
			}
			if ($payFalg)
				$payHtml .= ' | -';
			
			if (empty ( $balanceC ) || $limitDay < $i)
				$lastBalanceHtml .= ' | -';
			else
				$lastBalanceHtml .= ' | ' . $balanceC . '';
			
			$balanceC = $balanceC + $inComeA + $payB;
			$balanceSum += $balanceC;
			if (empty ( $balanceC ) || $limitDay < $i)
				$BalanceHtml .= ' | -';
			else
				$BalanceHtml .= ' | ' . $balanceC . '';
		}
		$inComeHtml .= ' | ¥' . $showInSum . ' | 
|---|
';
		$data ['inComeHtml'] = $inComeHtml;
		$payHtml .= '¥' . $showPaySum . '';
		$data ['payBalanceHtml'] = $payHtml;
		
		$BalanceHtml .= ' | ¥' . $balanceC . '';
		$data ['BalanceHtml'] = $BalanceHtml;
		$dayHtml .= ' | 总计';
		$data ['dayHtml'] = $dayHtml;
		
		$lastBalanceHtml .= ' | ' . $balanceC . '';
		$data ['lastBalanceHtml'] = $lastBalanceHtml;
		
		$dateHtml = "";
		$now = date ( "Y" );
		for($YEARD = 2050; $YEARD >= 2004; $YEARD --) {
			
			if ($YEARD <= $now) {
				$dateHtml .= '';
			}
		}
		
		$data ['dateHtml'] = $dateHtml;
		
		$data ['memu'] = "receipt";
		$data ['staff'] = $this->staff;
		$data ['receiptMemu'] = 'paymentsCollect';
		$data ['verifyId'] = $this->verifyId;
		$data ['executeId'] = $this->executeId;
		$this->render ( "/expenses/paymentsCollectDay", $data );
	}
	function ajaxGetPaymentsByAid() {
		$serial = $this->get_args ( 'serial' ) ? $this->get_args ( 'serial' ) : "";
		Doo::loadModel ( "accountBook" );
		$accountBook = new accountBook ();
		
		$detail = $accountBook->getAccountBookByAid ( $serial );
		
		echo json_encode ( array (
				'status' => 1,
				'detail' => $detail 
		) );
	}
	
	// 公司流水
	function wasteBook() {
		include './protected/config/wasteBook.conf.php';
		
		Doo::loadModel ( 'wasteBook' );
		$wasteBook = new wasteBook ();
		
		$inComeStatistics = $wasteBook->getWasteBookStatisticsByIncome ();
		$waste = $this->getWasteBookStatistics ( $waste, $inComeStatistics );
		$total = $waste ['bank'] ['CGBDeposit'] + $waste ['bank'] ['ICBCDeposit'] + $waste ['bank'] ['HUADeposit'] + $waste ['bank'] ['PersonalDeposit'] + $waste ['financial'] ['current'] ['CGBDeposit'] + $waste ['financial'] ['current'] ['ICBCDeposit'] + $waste ['financial'] ['fixed'] ['CGBDeposit'] + $waste ['financial'] ['fixed'] ['ICBCDeposit'];
		// print_r($waste);
		
		$data ['waste'] = $waste;
		$data ['total'] = $total;
		
		// 月流水数据结构
		$monthStatistics = array ();
		$incomeMothStatistics = array ();
		$expenditureMothStatistics = array ();
		for($i = 1; $i <= 12; $i ++) {
			$month = date ( 'Y' ) . '-' . $i;
			if ($i < 10)
				$month = date ( 'Y' ) . '-0' . $i;
			array_push ( $monthStatistics, $month );
		}
		foreach ( $monthStatistics as $value ) {
			$falg = true;
			foreach ( $inComeStatistics ['incomeReport'] as $k => $v ) {
				if ($value == $v ['inputDate']) {
					array_push ( $incomeMothStatistics, $v ['accountPrice'] );
					$falg = false;
				}
			}
			if ($falg) {
				array_push ( $incomeMothStatistics, '' );
			}
			
			$falgEx = true;
			
			foreach ( $inComeStatistics ['expenditureReport'] as $k => $v ) {
				if ($value == $v ['inputDate']) {
					array_push ( $expenditureMothStatistics, $v ['accountPrice'] );
					$falg = false;
				}
			}
			if ($falgEx) {
				array_push ( $expenditureMothStatistics, '' );
			}
		}
		
		$data ['monthStatistics'] = json_encode ( $monthStatistics );
		$data ['incomeMothStatistics'] = json_encode ( $incomeMothStatistics );
		$data ['expenditureMothStatistics'] = json_encode ( $expenditureMothStatistics );
		
		$expenditureList = $wasteBook->getAccountBookByExpensesType ( 4, 2 );
		$incomeList = $wasteBook->getAccountBookByExpensesType ( 4, 1 );
		// print_r($incomeList);
		
		$data ['expenditureList'] = $expenditureList;
		$data ['incomeList'] = $incomeList;
		
		$data ['memu'] = "receipt";
		$data ['staff'] = $this->staff;
		$data ['receiptMemu'] = 'wasteBook';
		$data ['verifyId'] = $this->verifyId;
		$data ['executeId'] = $this->executeId;
		$this->render ( "/expenses/wasteBook", $data );
	}
	function wasteBookIncome() {
		$date = $this->get_args ( 'inputDate' ) ? $this->get_args ( 'inputDate' ) : "";
		$cid = $this->get_args ( 'cid' ) ? $this->get_args ( 'cid' ) : "ALL";
		$accountType = $this->get_args ( 'accountType' ) ? $this->get_args ( 'accountType' ) : "ALL";
		$dailyIncomeType = $this->get_args ( 'dailyIncomeType' ) ? $this->get_args ( 'dailyIncomeType' ) : "ALL";
		
		$data ['dailyIncomeType'] = $dailyIncomeType;
		
		Doo::loadModel ( 'wasteBook' );
		$wasteBook = new wasteBook ();
		Doo::loadModel ( 'L_category' );
		$L_category = new L_category ();
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 5 );
		
// 		echo $XDeode->encode(1).' | 
';
// 		echo $XDeode->encode(2).'
';
// 		echo $XDeode->encode(3).'
';
// 		echo $XDeode->encode(4).'
';
// 		echo $XDeode->encode(5).'
';
// 		echo $XDeode->encode(6).'
';
// 		echo $XDeode->encode(7).'
';
// 		echo $XDeode->encode(8).'
';
// 		echo $XDeode->encode(9).'
';
// 		echo $XDeode->encode(10).'
';
		
		$dateArr = explode ( ':', $date );
		$D1 = '';
		$D2 = '';
		$con = '';
		if (! empty ( $date )) {
			$D1 = $dateArr [0];
			$D2 = $dateArr [1];
		}
		if (! empty ( $D1 ) && ! empty ( $D2 ))
			$con = ' and inputDate BETWEEN "' . $D1 . '" AND "' . $D2 . '" ';
		elseif (! empty ( $D1 ) && empty ( $D2 ))
			$con = ' and inputDate = "' . $D1 . '"';
		
		if ($cid != 'ALL') {
			$cid = $XDeode->decode ( $cid );
			$con .= ' and cid = "' . $cid . '"';
		}
		
		if ($accountType != 'ALL') {
			if ($accountType == 'INVOICE') {
				$con .= ' and (accountType = 7 or accountType = 8)';
			} elseif ($accountType == 'PAYMENTS') {
				$con .= ' and (accountType = 6 or accountType = 9 or accountType = 10)';
				if($dailyIncomeType!='ALL'){
					$dailyIncomeType = $XDeode->decode ( $dailyIncomeType );
					$con .= ' and dailyIncomeType =  '.$dailyIncomeType;
				}
				
			}
		}
		
		$incomeList = $wasteBook->getAccountBookByExpensesType ( 0, 1, $con );
		
		$sum = 0;
		foreach ( $incomeList as $key => $value ) {
			$sum += $value ['accountPrice'];
		}
		//print_r($incomeList);
		
		// 获得办事和部门
		$categoryList = $L_category->getCategory ();
		
		$data ['accountType'] = $accountType;
		$data ['cid'] = $cid;
		$data ['categoryList'] = $categoryList;
		$data ['sum'] = $sum;
		$data ['incomeList'] = $incomeList;
		$data ['inputDate'] = $date;
		
		$data ['memu'] = "receipt";
		$data ['staff'] = $this->staff;
		$data ['receiptMemu'] = 'wasteBook';
		$data ['verifyId'] = $this->verifyId;
		$data ['executeId'] = $this->executeId;
		$this->render ( "/expenses/wasteBookIncome", $data );
	}
	
	/**
	 * 所有支出
	 */
	function wasteBookExpenditure() {
		$date = $this->get_args ( 'inputDate' ) ? $this->get_args ( 'inputDate' ) : "";
		$cid = $this->get_args ( 'cid' ) ? $this->get_args ( 'cid' ) : "ALL";
		$accountType = $this->get_args ( 'accountType' ) ? $this->get_args ( 'accountType' ) : "ALL";
		$dailyExpenditureType = $this->get_args ( 'dailyExpenditureType' ) ? $this->get_args ( 'dailyExpenditureType' ) : "ALL";
		$data ['dailyExpenditureType'] = $dailyExpenditureType;
		
		$receiptType = $this->get_args ( 'receiptType' ) ? $this->get_args ( 'receiptType' ) : "ALL";
		$data ['receiptType'] = $receiptType;
		
		Doo::loadModel ( 'wasteBook' );
		$wasteBook = new wasteBook ();
		Doo::loadModel ( 'L_category' );
		$L_category = new L_category ();
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 5 );
		
		$dateArr = explode ( ':', $date );
		$D1 = '';
		$D2 = '';
		$con = '';
		if (! empty ( $date )) {
			$D1 = $dateArr [0];
			$D2 = $dateArr [1];
		}
		if (! empty ( $D1 ) && ! empty ( $D2 ))
			$con = ' and inputDate BETWEEN "' . $D1 . '" AND "' . $D2 . '" ';
		elseif (! empty ( $D1 ) && empty ( $D2 ))
			$con = ' and inputDate = "' . $D1 . '"';
		
		if ($cid != 'ALL') {
			$cid = $XDeode->decode ( $cid );
			$con .= ' and cid = "' . $cid . '"';
		}
		
		if ($accountType != 'ALL') {
			if ($accountType == 'INVOICE') {
				$con .= ' and accountType = 11';
			} elseif ($accountType == 'PAYMENTS') {
				$con .= ' and (accountType = 5 or accountType = 9 or accountType = 10)';
				if($dailyExpenditureType!='ALL'){
					$dailyExpenditureType = $XDeode->decode ( $dailyExpenditureType );
					$con .= ' and dailyExpenditureType =  '.$dailyExpenditureType;
				}
			}elseif($accountType == 'RECEIPT'){
				if ($receiptType=='ALL'){
				$con .= ' and (accountType = 1 or accountType = 2 or accountType = 3 or accountType = 4)';
				}else{
					$receiptType = $XDeode->decode ( $receiptType );
					echo $receiptType;
					if ($receiptType==1){
						$con .= ' and (accountType =  1 or accountType=2)';
					}else{
						$con .= ' and accountType =  '.$receiptType;
					}
				}
					
			}
		}
		
		$incomeList = $wasteBook->getAccountBookByExpensesType ( 0, 2, $con );
		
		$sum = 0;
		foreach ( $incomeList as $key => $value ) {
			$sum += $value ['accountPriceShow'];
		}
		// print_r($incomeList);
		
		// 获得办事和部门
		$categoryList = $L_category->getCategory ();
		
		$data ['accountType'] = $accountType;
		$data ['cid'] = $cid;
		$data ['categoryList'] = $categoryList;
		$data ['sum'] = $sum;
		$data ['incomeList'] = $incomeList;
		$data ['inputDate'] = $date;
		
		$data ['memu'] = "receipt";
		$data ['staff'] = $this->staff;
		$data ['receiptMemu'] = 'wasteBook';
		$data ['verifyId'] = $this->verifyId;
		$data ['executeId'] = $this->executeId;
		$this->render ( "/expenses/wasteBookExpenditure", $data );
	}
	function ajaxGetWasteinvoiceReceivables() {
		$serial = $this->get_args ( 'serial' ) ? $this->get_args ( 'serial' ) : "";
		
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 5 );
		
		$irid = $XDeode->decode ( $serial );
		
		Doo::loadModel ( 'invoiceReceivables' );
		$invoiceReceivables = new invoiceReceivables ();
		
		$detail = $invoiceReceivables->getInvoiceReceivablesByIrid ( $irid );
		
		echo json_encode ( array (
				'status' => 1,
				'detail' => $detail 
		) );
	}
	function ajaxGetWasteInvoice() {
		$serial = $this->get_args ( 'serial' ) ? $this->get_args ( 'serial' ) : "";
		
		Doo::loadModel ( 'invoice' );
		$invoice = new invoice ();
		Doo::loadModel ( 'invoiceReceivables' );
		$invoiceReceivables = new invoiceReceivables ();
		
		$detail = $invoice->getInvoiceByIid ( $serial );
		$detailReceivables = $invoiceReceivables->getInvoiceReceivablesByIrid ( $detail ['irid'] );
		
		$detail ['receivablesBank'] = $detailReceivables ['receivablesBank'];
		
		echo json_encode ( array (
				'status' => 1,
				'detail' => $detail 
		) );
	}
	
	/**
	 */
	function ajaxGetWasteReceipt() {
		$serial = $this->get_args ( 'serial' ) ? $this->get_args ( 'serial' ) : "";
		
		Doo::loadModel ( 'receipt' );
		$receipt = new receipt ();
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 5 );
		
		$rid = $XDeode->decode ( $serial );
		
		// 获得个数据
		$detail = $receipt->getReceiptByRid ( $rid );
		
		// 初始化
		$detail ['reviseDetail'] = array ();
		if (! empty ( $value ['reviseDetail'] ))
			$detail ['reviseDetail'] = json_decode ( $detail ['reviseDetail'], true );
		$detail ['accountItem'] = json_decode ( $detail ['accountItem'], true );
		$detail ['loanItem'] = json_decode ( $detail ['loanItem'], true );
		$detail ['loanSumCN'] = $this->num_to_rmb ( $detail ['loanSum'] );
		$detail ['sumCN'] = $this->num_to_rmb ( $detail ['sum'] );
		
		// 获得费用html
		$html = $this->getWasteReceiptHtml ( $detail );
		// 获得费用审批人数据
		$detail = $this->getReceiptApproverHtml ( $detail );
		
		// 审批执行
		$html .= '
								| 审批人 | 审批意见 | 
';
		foreach ( $detail ['verifyList'] as $key => $value ) {
			$html .= '
					| ' . $value [1] . ' | ' . $value ['opinion'] . ' | 
			';
		}
		$html .= '	
';
		
		$html .= '
								| 执行人 | 执行意见 | 
';
		foreach ( $detail ['executeCopy'] as $key => $value ) {
			$html .= '
					| ' . $value [1] . ' | ' . $value ['opinion'] . ' | 
			';
		}
		$html .= '	
';
		
		$html .= '
		
		| 汇款金额 | ¥' . $detail ['amount'] . ' | 
		
';
		
		// print_r($detail['verifyList']);
		// header ( 'Content-Type:text/html;charset=utf-8' );
		// echo $html;
		echo json_encode ( array (
				'status' => 1,
				'html' => $html,
				'detail' => $detail 
		) );
	}
	function getReceiptApproverHtml($detail = array()) {
		Doo::loadModel ( 'loanReceipt' );
		$loanReceipt = new loanReceipt ();
		Doo::loadModel ( 'verify' );
		$verify = new verify ();
		Doo::loadModel ( 'staff' );
		$staff = new staff ();
		
		if (empty ( $detail ))
			return array ();
		
		$loanList = $loanReceipt->getOne ( array (
				'where' => 'rid=' . $detail ['loanRid'],
				'desc' => 'rid',
				'asArray' => true 
		) );
		
		if ($detail ['status'] == 3 || $detail ['status'] == 1 || $detail ['status'] == 8 || $detail ['status'] == 9) {
			if ($detail ['status'] == 8 && $detail ['Rtype'] == 1)
				$verifyList ['staff'] = $loanList ['verifyBreakup'];
			else
				$verifyList ['staff'] = $detail ['verifyBreakup'];
		} else
			$verifyList = $verify->getOne ( array (
					'where' => 'vid=' . $detail ['verify'],
					'asArray' => true 
			) );
		
		$verifyList = json_decode ( $verifyList ['staff'], true );
		
		Doo::loadModel ( 'role' );
		$role = new role ();
		
		$roleId = 0;
		$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 );
			}
		}
		
		$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 );
				}
			}
		}
		
		// 费用执行人相关数据
		$executeCopy = json_decode ( $detail ['executeCopy'], true );
		$executeStaff = json_decode ( $detail ['executeStaff'], true );
		foreach ( $executeCopy as $k => $v ) {
			$executeCopy [$k] ['date'] = '';
			$executeCopy [$k] ['opinion'] = '';
			$executeCopy [$k] ['status'] = '';
			if (! empty ( $executeStaff ))
				foreach ( $executeStaff as $m => $u ) {
					if ($v [0] == $m) {
						$executeCopy [$k] ['date'] = $u ['date'];
						$executeCopy [$k] ['opinion'] = $u ['opinion'];
						$executeCopy [$k] ['status'] = $u ['status'];
						break;
					}
				}
		}
		
		$detail ['executeCopy'] = $executeCopy;
		$detail ['verifyList'] = $verifyList;
		return $detail;
	}
	function getWasteReceiptHtml($detail = array()) {
		if (empty ( $detail ))
			return '';
		
		$html = '';
		if ($detail ['Rtype'] == 0) { // 报销单
			
			$html .= '
					
						
					
					| 日常相关费用 | 
';
			foreach ( $detail ['accountItem'] ['日常相关费用'] as $key => $value ) {
				$html .= '
				
					| ' . $value ['name'] . ' | ¥' . $value ['price'] . ' | 
';
			}
			$html .= '
				
					| 合计 | ¥' . $detail ['accountItem'] ['cSum'] ['agencySum'] . ' | 
';
			
			$html .= '
					| 差旅相关费用 | 
';
			foreach ( $detail ['accountItem'] ['差旅相关费用'] as $key => $value ) {
				$html .= '
				
					| ' . $value ['name'] . ' | ¥' . $value ['price'] . ' | 
';
			}
			$html .= '
				
					| 合计 | ¥' . $detail ['accountItem'] ['cSum'] ['travelSum'] . ' | 
';
			
			$html .= '
					| 培训班费用 | 
';
			foreach ( $detail ['accountItem'] ['培训班费用'] as $key => $value ) {
				$html .= '
				
					| ' . $value ['name'] . ' | ¥' . $value ['price'] . ' | 
';
			}
			$html .= '
				
					| 合计 | ¥' . $detail ['accountItem'] ['cSum'] ['trainSum'] . ' | 
';
			
			$html .= '
					| 其他 | 
';
			foreach ( $detail ['accountItem'] ['其他'] as $key => $value ) {
				$html .= '
				
					| ' . $value ['name'] . ' | ¥' . $value ['price'] . ' | 
';
			}
			$html .= '
				
					| 合计 | ¥' . $detail ['accountItem'] ['cSum'] ['otherSum'] . ' | 
';
			
			$html .= '
					| 报销金额调整 | 
';
			foreach ( $detail ['reviseDetail'] as $key => $value ) {
				$html .= '
				
					| ' . $value ['name'] . ' | ¥' . $value ['price'] . ' | 
';
			}
			$html .= '
				
					| 合计 | ¥' . $detail ['revisePrice'] . ' | 
';
			
			$html .= '
				| 产生费用所在办事处 | 
|---|
	  			| ' . $detail ['category'] [0] ['title'] . ' | 
|---|
	  			| 报销说明 | 
|---|
	  						| ' . $detail ['explanation'] . ' | 
	  			
	  			
								| (' . $detail ['receiptOrder'] . ')本次报销费用合计 | ¥' . $detail ['sum'] . ' ' . $detail ['sumCN'] . '
 | 
	  						
					
';
		} elseif ($detail ['Rtype'] == 2) {
			$html .= '
					
						
					
					| 办事处相关费用 | 
';
			foreach ( $detail ['accountItem'] ['日常相关费用'] as $key => $value ) {
				$html .= '
				
					| ' . $value ['name'] . ' | ¥' . $value ['price'] . ' | 
';
			}
			$html .= '
				
					| 合计 | ¥' . $detail ['accountItem'] ['cSum'] ['agencySum'] . ' | 
';
			
			$html .= '
				| 产生费用所在办事处 | 
|---|
	  			| ' . $detail ['category'] [0] ['title'] . ' | 
|---|
	  			| 报销说明 | 
|---|
	  						| ' . $detail ['explanation'] . ' | 
			
	  			
								| (' . $detail ['receiptOrder'] . ')本次报销费用合计 | ¥' . $detail ['sum'] . ' ' . $detail ['sumCN'] . '
 | 
	  						
					
';
		} elseif ($detail ['Rtype'] == 1) {
			
			if ($detail ['loanRid'] != 0 && ! empty ( $detail ['accountItem'] )) {
				
				$html .= '
						
					
					| 日常相关费用 | 
';
				foreach ( $detail ['accountItem'] ['日常相关费用'] as $key => $value ) {
					$html .= '
				
					| ' . $value ['name'] . ' | ¥' . $value ['price'] . ' | 
';
				}
				$html .= '
				
					| 合计 | ¥' . $detail ['accountItem'] ['cSum'] ['agencySum'] . ' | 
';
				
				$html .= '
					| 差旅相关费用 | 
';
				foreach ( $detail ['accountItem'] ['差旅相关费用'] as $key => $value ) {
					$html .= '
				
					| ' . $value ['name'] . ' | ¥' . $value ['price'] . ' | 
';
				}
				$html .= '
				
					| 合计 | ¥' . $detail ['accountItem'] ['cSum'] ['travelSum'] . ' | 
';
				
				$html .= '
					| 培训班费用 | 
';
				foreach ( $detail ['accountItem'] ['培训班费用'] as $key => $value ) {
					$html .= '
				
					| ' . $value ['name'] . ' | ¥' . $value ['price'] . ' | 
';
				}
				$html .= '
				
					| 合计 | ¥' . $detail ['accountItem'] ['cSum'] ['trainSum'] . ' | 
';
				
				$html .= '
					| 其他 | 
';
				foreach ( $detail ['accountItem'] ['其他'] as $key => $value ) {
					$html .= '
				
					| ' . $value ['name'] . ' | ¥' . $value ['price'] . ' | 
';
				}
				$html .= '
				
					| 合计 | ¥' . $detail ['accountItem'] ['cSum'] ['otherSum'] . ' | 
';
				
				$html .= '
					| 报销金额调整 | 
';
				foreach ( $detail ['reviseDetail'] as $key => $value ) {
					$html .= '
				
					| ' . $value ['name'] . ' | ¥' . $value ['price'] . ' | 
';
				}
				$html .= '
				
					| 合计 | ¥' . $detail ['revisePrice'] . ' | 
';
				
				$html .= '
				| 产生费用所在办事处 | 
|---|
	  			| ' . $detail ['category'] [0] ['title'] . ' | 
|---|
	  			| 报销说明 | 
|---|
	  						| ' . $detail ['explanation'] . ' | 
		
	  			
								| (' . $detail ['receiptOrder'] . ')本次报销费用合计 | ¥' . $detail ['sum'] . ' ' . $detail ['sumCN'] . '
 | 
	  						
					
';
			}
			
			Doo::loadModel ( 'loanReceipt' );
			$loanReceipt = new loanReceipt ();
			
			$loanList = $loanReceipt->getOne ( array (
					'where' => 'rid=' . $detail ['loanRid'],
					'desc' => 'rid',
					'asArray' => true 
			) );
			// print_r($loanList);
			
			$html .= '
						
							
								| 借款费用 | 
';
			foreach ( $detail ['loanItem'] ['借款费用'] as $key => $value ) {
				$html .= '
						| ' . $value ['name'] . ' | ¥' . $value ['price'] . ' | 
';
			}
			$html .= '
								| 产生费用所在办事处 | 
							
								| ' . $detail ['category'] [0] ['title'] . ' | 
							
								| 费用说明 | 
							
								| ' . $loanList ['explanation'] . ' | 
							
								| (' . $loanList ['receiptOrder'] . ')本次费用合计 | ¥' . $detail ['loanSum'] . ' ' . $detail ['loanSumCN'] . '
 | 
						
					
					';
		}
		
		return $html;
	}
	
	/**
	 * 计算流水
	 */
	function getWasteBookStatistics($waste = array(), $inComeStatistics) {
		$bakWaste ['bank'] = array (
				'CGBDeposit' => 0,
				'ICBCDeposit' => 0,
				'HUADeposit' => 0,
				'PersonalDeposit' => 0 
		);
		
		$bakWaste ['financial'] = array (
				'current' => array (
						'CGBDeposit' => 0,
						'ICBCDeposit' => 0 
				),
				'fixed' => array (
						'CGBDeposit' => 0,
						'ICBCDeposit' => 0 
				) 
		)
		;
		
		// 存款
		foreach ( $waste ['bank'] as $key => $value ) {
			// 收入
			foreach ( $inComeStatistics ['incomeStatistics'] as $k => $v ) {
				// 广发
				if ($v ['accountBank'] == 'CGBDeposit' && $key == 'CGBDeposit') {
					$waste ['bank'] ['CGBDeposit'] = $value + $v ['accountPrice'];
				}
				// 工商
				if ($v ['accountBank'] == 'ICBCDeposit' && $key == 'ICBCDeposit') {
					$waste ['bank'] ['ICBCDeposit'] = $value + $v ['accountPrice'];
				}
				// 华润
				if ($v ['accountBank'] == 'HUADeposit' && $key == 'HUADeposit') {
					$waste ['bank'] ['HUADeposit'] = $value + $v ['accountPrice'];
				}
				// 个人
				if ($v ['accountBank'] == 'PersonalDeposit' && $key == 'PersonalDeposit') {
					$waste ['bank'] ['PersonalDeposit'] = $value + $v ['accountPrice'];
				}
			}
		}
		
		foreach ( $waste ['bank'] as $key => $value ) {
			// 支出
			foreach ( $inComeStatistics ['expenditureStatistics'] as $k => $v ) {
				// 广发
				if ($v ['accountBank'] == 'CGBDeposit' && $key == 'CGBDeposit') {
					
					$waste ['bank'] ['CGBDeposit'] = $value + $v ['accountPrice'];
				}
				// 工商
				if ($v ['accountBank'] == 'ICBCDeposit' && $key == 'ICBCDeposit') {
					$waste ['bank'] ['ICBCDeposit'] = $value + $v ['accountPrice'];
				}
				// 华润
				if ($v ['accountBank'] == 'HUADeposit' && $key == 'HUADeposit') {
					$waste ['bank'] ['HUADeposit'] = $value + $v ['accountPrice'];
				}
				// 个人
				if ($v ['accountBank'] == 'PersonalDeposit' && $key == 'PersonalDeposit') {
					$waste ['bank'] ['PersonalDeposit'] = $value + $v ['accountPrice'];
				}
			}
		}
		
		// 活期
		foreach ( $waste ['financial'] ['current'] as $key => $value ) {
			foreach ( $inComeStatistics ['currentStatistics'] as $k => $v ) {
				// 广发
				if ($v ['accountBank'] == 'CGBDeposit' && $key == 'CGBDeposit') {
					$waste ['financial'] ['current'] ['CGBDeposit'] = $value ['CGBDeposit'] + $v ['accountPrice'];
				}
				// 工商
				if ($v ['accountBank'] == 'ICBCDeposit' && $key == 'ICBCDeposit') {
					$waste ['financial'] ['current'] ['ICBCDeposit'] = $value ['ICBCDeposit'] + $v ['accountPrice'];
				}
				// 个人
				if ($v ['accountBank'] == 'PersonalDeposit' && $key == 'PersonalDeposit') {
					$waste ['bank'] ['PersonalDeposit'] = $value ['PersonalDeposit'] + $v ['accountPrice'];
				}
			}
		}
		// print_r($inComeStatistics ['fixedStatistics']);
		// 固期
		foreach ( $waste ['financial'] ['fixed'] as $key => $value ) {
			foreach ( $inComeStatistics ['fixedStatistics'] as $k => $v ) {
				// 广发
				if ($v ['accountBank'] == 'CGBDeposit' && $key == 'CGBDeposit') {
					$waste ['financial'] ['fixed'] ['CGBDeposit'] = $value ['CGBDeposit'] + $v ['accountPrice'];
				}
				// 工商
				if ($v ['accountBank'] == 'ICBCDeposit' && $key == 'ICBCDeposit') {
					$waste ['financial'] ['fixed'] ['ICBCDeposit'] = $value ['ICBCDeposit'] + $v ['accountPrice'];
				}
				// 个人
				if ($v ['accountBank'] == 'PersonalDeposit' && $key == 'PersonalDeposit') {
					$waste ['bank'] ['PersonalDeposit'] = $value ['PersonalDeposit'] + $v ['accountPrice'];
				}
			}
		}
		
		return $waste;
	}
	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 ();
		
		Doo::loadModel ( "receiptAuthorityManage" );
		$receiptAuthorityManage = new receiptAuthorityManage ();
		
		$imcStaff = $receiptAuthorityManage->getInvoiceCMByStaff ( $this->staff [0] ['sid'] );
		$cidList = array ();
		foreach ( $imcStaff as $key => $value ) {
			array_push ( $cidList, $value ['cid'] );
		}
		$cidString = implode ( ',', $cidList );
		
		$staffList = $staff->find ( array (
				'where' => 'username!="admin" and cid in (' . $cidString . ')',
				'asArray' => true 
		) );
		$categoryList = $staff->find ( array (
				'select' => 'COUNT(*) as count,cid,category',
				'where' => 'username !="admin" and cid in (' . $cidString . ')',
				'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;
			$r16 = 0;
			$r17 = 0;
			$r18 = 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;
			$p10 = 0;
			$p11 = 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'];
										if ($va == '公积金')
											$r16 += $v ['price'];
										if ($va == '社保')
											$r17 += $v ['price'];
										if ($va == '人员薪酬')
											$r18 += $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'];
										
										if ($va == '电话费')
											$p9 += $v ['price'];
										if ($va == '邮寄费')
											$p10 += $v ['price'];
										
										$psum += $v ['price'];
										$html .= ' | ' . $v ['price'] . '';
										$falg = false;
										break;
									}
								}
							}
							if ($falg)
								$html .= ' | -';
						}
						$p11 += $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 = ' | ¥' . $psum . '';
						else
							$psum = ' | -';
						$receiptL ['报销金额调整'] = $psum . $html;
					} else {
						$receiptL ['日常相关费用'] = ' | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | -';
						$receiptL ['差旅相关费用'] = ' | - | - | - | - | - | -';
						$receiptL ['培训班费用'] = ' | - | - | - | - | - | - | - | - | - | - | -';
						$receiptL ['其他'] = ' | - | - | - | - | -';
						$receiptL ['报销金额调整'] = ' | -';
					}
					
					$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'] = ' | ¥' . $monthStaffPrice [0] ['price'] . '';
					} else
						$receiptL ['monthStaffPrice'] = ' | -';
					
					$receiptL ['usernameEn'] = urlencode ( $value ['username'] );
					$list [$value ['username']] = $receiptL;
				}
			}
			$receiptL ['日常相关费用'] = ' | ' . $r12 . ' | ' . $r1 . ' | ' . $r2 . ' | ' . $r3 . ' | ' . $r4 . ' | ' . $r5 . ' | ' . $r6 . ' | ' . $r7 . ' | ' . $r8 . ' | ' . $r9 . ' | ' . $r10 . ' | ' . $r11 . ' | ' . $r13 . ' | ' . $r14 . ' | ' . $r15 . ' | ' . $r18 . ' | ' . $r16 . ' | ' . $r17 . '';
			$receiptL ['差旅相关费用'] = ' | ' . $c6 . ' | ' . $c1 . ' | ' . $c2 . ' | ' . $c3 . ' | ' . $c4 . ' | ' . $c5 . '';
			$receiptL ['培训班费用'] = ' | ' . $p11 . ' | ' . $p1 . ' | ' . $p2 . ' | ' . $p3 . ' | ' . $p4 . ' | ' . $p5 . ' | ' . $p6 . ' | ' . $p7 . ' | ' . $p8 . ' | ' . $p9 . ' | ' . $p10 . '';
			$receiptL ['其他'] = ' | ' . $t5 . ' | ' . $t1 . ' | ' . $t2 . ' | ' . $t3 . ' | ' . $t4 . '';
			$receiptL ['报销金额调整'] = ' | ' . $s1 . '';
			$receiptL ['monthStaffPrice'] = ' | ¥' . $m1 . '';
			$list ['' . $vlu ['category'] . '小计'] = $receiptL;
		}
		$data ['list'] = $list;
		// print_r($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 = ' | ¥' . $psum . '';
						else
							$psum = ' | -';
						$receiptL ['报销金额调整'] = $psum . $html;
					} else {
						$receiptL ['日常相关费用'] = ' | - | - | - | - | - | - | - | - | - | - | - | - | -';
						$receiptL ['差旅相关费用'] = ' | - | - | - | - | - | -';
						$receiptL ['培训班费用'] = ' | - | - | - | - | - | - | - | - | -';
						$receiptL ['其他'] = ' | - | - | - | - | -';
						$receiptL ['报销金额调整'] = ' | -';
					}
					
					$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 [0] ['price'] . '';
					} else
						$receiptL ['monthStaffPrice'] = ' | -';
					$list [$value ['username']] = $receiptL;
				}
			}
			$receiptL ['日常相关费用'] = ' | ' . $r12 . ' | ' . $r1 . ' | ' . $r2 . ' | ' . $r3 . ' | ' . $r4 . ' | ' . $r5 . ' | ' . $r6 . ' | ' . $r7 . ' | ' . $r8 . ' | ' . $r9 . ' | ' . $r10 . ' | ' . $r11 . ' | ' . $r13 . ' | ' . $r14 . ' | ' . $r15 . '';
			$receiptL ['差旅相关费用'] = ' | ' . $c6 . ' | ' . $c1 . ' | ' . $c2 . ' | ' . $c3 . ' | ' . $c4 . ' | ' . $c5 . '';
			$receiptL ['培训班费用'] = ' | ' . $p9 . ' | ' . $p1 . ' | ' . $p2 . ' | ' . $p3 . ' | ' . $p4 . ' | ' . $p5 . ' | ' . $p6 . ' | ' . $p7 . ' | ' . $p8 . '';
			$receiptL ['其他'] = ' | ' . $t5 . ' | ' . $t1 . ' | ' . $t2 . ' | ' . $t3 . ' | ' . $t4 . '';
			$receiptL ['报销金额调整'] = ' | ' . $s1 . '';
			$receiptL ['monthStaffPrice'] = ' | ¥' . $m1 . '';
			$list ['' . $vlu ['category'] . '小计'] = $receiptL;
		}
		$data ['list'] = $list;
		
		$receiptCollectList = $receiptDetail->find ( array (
				'select' => 'staff,item,sum(price) as price,itemCategory,Month(date) as month',
				'where' => " status=1 and Year(date)=" . $year . ' and Month(date)=' . $month,
				'groupby' => 'item,Month(date),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/staffCollectMonthDetail2", $data );
		// $this->render ( "/admin/saeaStaffCollectDetail", $data );
	}
	
	/**
	 * 用户报销单列表
	 */
	function receiptStatisticsStaffDetail() {
		$year = $this->get_args ( 'year' ) ? $this->get_args ( 'year' ) : "";
		$month = $this->get_args ( 'month' ) ? $this->get_args ( 'month' ) : "";
		$username = $this->get_args ( 'username' ) ? $this->get_args ( 'username' ) : "";
		
		Doo::loadModel ( "receipt" );
		$receipt = new receipt ();
		Doo::loadModel ( "receiptDetail" );
		$receiptDetail = new receiptDetail ();
		Doo::loadModel ( 'staff' );
		$staff = new staff ();
		Doo::loadModel ( 'accountItem' );
		$accountItem = new accountItem ();
		Doo::loadModel ( 'statistics' );
		$statistics = new statistics ();
		
		if (! empty ( $username )) {
			$username = addslashes ( urldecode ( $username ) );
			
			$staffDetail = $staff->getStaffByName ( $username );
			if (empty ( $staffDetail ))
				die ( 'illegal request' );
			
			$list = $receipt->getReceiptBySid ( $staffDetail ['sid'], $year, $month );
			$itemList = $accountItem->getAccountItem ();
			$itemHtml = '';
			$categoryHtml = '';
			$itemKeyList = array_keys ( $itemList );
			$revisePrice = 0;
			// 报销单内容详情
			foreach ( $list as $key => $value ) {
				$accountItemList = json_decode ( $value ['accountItem'], true );
				$list [$key] ['accountItemList'] = $accountItemList;
				$receiptItemHtml = '';
				foreach ( $itemKeyList as $v ) {
					if ($v == '日常相关费用')
						$receiptItemHtml .= ' | ' . $accountItemList ['cSum'] ['agencySum'] . '';
					elseif ($v == '差旅相关费用')
						$receiptItemHtml .= ' | ' . $accountItemList ['cSum'] ['travelSum'] . '';
					elseif ($v == '培训班费用')
						$receiptItemHtml .= ' | ' . $accountItemList ['cSum'] ['trainSum'] . '';
					elseif ($v == '其他')
						$receiptItemHtml .= ' | ' . $accountItemList ['cSum'] ['otherSum'] . '';
					
					foreach ( $itemList [$v] as $ke => $va ) {
						$falg = true;
						if (! empty ( $accountItemList [$v] )) {
							foreach ( $accountItemList [$v] as $ve ) {
								if ($va ['name'] == $ve ['name']) {
									$receiptItemHtml .= ' | ' . $ve ['price'] . '';
									$falg = false;
									break;
								}
							}
						}
						if ($falg)
							$receiptItemHtml .= ' | ';
					}
				}
				// 金额调整和费用查看
				$revisePrice += $value ['revisePrice'];
				$receiptItemHtml .= ' | ' . $value ['revisePrice'] . '';
				$receiptItemHtml .= ' | 查看';
				$list [$key] ['receiptItemHtml'] = $receiptItemHtml;
			}
			
			// 报销单合计
			$receiptTotalList = $receiptDetail->getReceiptTotalItem ( $staffDetail ['sid'], $year, $month );
			$rtl = $receiptDetail->getReceiptTotalItemCategory ( $staffDetail ['sid'], $year, $month );
			
			$receiptTotalHtml = '';
			// 报销单项目抬头
			foreach ( $itemKeyList as $value ) {
				$count = count ( $itemList [$value] ) + 1;
				$itemHtml .= ' | ' . $value . '';
				$categoryHtml .= ' | 合计';
				foreach ( $rtl as $rtlValue ) {
					if ($rtlValue ['itemCategory'] == $value) {
						$receiptTotalHtml .= ' | ' . $rtlValue ['price'] . '';
						break;
					}
				}
				
				foreach ( $itemList [$value] as $k => $v ) {
					$categoryHtml .= ' | ' . $v ['name'] . '';
					// 合计
					$falg = true;
					foreach ( $receiptTotalList as $ve ) {
						if ($ve ['itemCategory'] == $value && $ve ['item'] == $v ['name']) {
							$receiptTotalHtml .= ' | ' . $ve ['price'] . '';
							$falg = false;
							break;
						}
					}
					if ($falg)
						$receiptTotalHtml .= ' | ';
				}
			}
			$receiptTotalHtml .= ' | ' . $revisePrice . '';
			
			$stList = $statistics->getStatisticsBySid ( $staffDetail ['sid'], $year, $month );
			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 ['username'] = urlencode ( $username );
			$data ['usernameEN'] = $username;
			$data ['monthHtml'] = $monthHtml;
			$data ['receiptTotalHtml'] = $receiptTotalHtml;
			$data ['list'] = $list;
			$data ['categoryHtml'] = $categoryHtml;
			$data ['itemHtml'] = $itemHtml;
			$data ['itemList'] = $itemList;
			$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/receiptStatisticsStaffDetail", $data );
		}
		die ( 'illegal request' );
	}
	function companyMonthCollectDetail() {
		$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 = $lCategory->find ( array (
				'asArray' => true 
		) );
		
		$list = array ();
		foreach ( $categoryList as $value ) {
			$receiptCollectList = $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,
					'groupby' => 'item,Month(pastDate),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) {
								$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 $va ) {
					$falg = true;
					foreach ( $receiptCollectList as $v ) {
						if ($v ['itemCategory'] == '差旅相关费用') {
							
							if ($v ['item'] == $va) {
								$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 $va ) {
					$falg = true;
					foreach ( $receiptCollectList as $v ) {
						if ($v ['itemCategory'] == '培训班费用') {
							
							if ($v ['item'] == $va) {
								$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 $va ) {
					$falg = true;
					foreach ( $receiptCollectList as $v ) {
						if ($v ['itemCategory'] == '其他') {
							
							if ($v ['item'] == $va) {
								$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 = ' | ' . $psum . '';
				else
					$psum = ' | -';
				$receiptL ['报销金额调整'] = $psum . $html;
			} else {
				$receiptL ['日常相关费用'] = ' | - | - | - | - | - | - | - | - | - | - | - | - | -';
				$receiptL ['差旅相关费用'] = ' | - | - | - | - | - | -';
				$receiptL ['培训班费用'] = ' | - | - | - | - | - | - | - | - | -';
				$receiptL ['其他'] = ' | - | - | - | - | -';
				$receiptL ['报销金额调整'] = ' | -';
			}
			
			$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 ();
		
		Doo::loadModel ( "receiptAuthorityManage" );
		$receiptAuthorityManage = new receiptAuthorityManage ();
		
		$imcStaff = $receiptAuthorityManage->getInvoiceCMByStaff ( $this->staff [0] ['sid'] );
		$cidList = array ();
		foreach ( $imcStaff as $key => $value ) {
			array_push ( $cidList, $value ['cid'] );
		}
		$cidString = implode ( ',', $cidList );
		
		$staffList = $staff->find ( array (
				'where' => ' cid in (' . $cidString . ')',
				'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 
		) );
		// echo 'staff=' . $staffId . " and cid=" . $pcid . " and status=1 and Year(pastDate)=" . $year;
		// print_r($receiptCollectList);
		$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']) {
						
						if ($v ['item'] == '可自加费用') {
							// echo $v ['item'].'/'.$v ['price'].'/'.$v ['month'].$v ['itemCategory'].' | 
';
						}
						$asum += $v ['price'];
						$html .= '' . $v ['price'] . '';
						$falg = false;
						break;
					}
				}
				if ($falg)
					$html .= ' | -';
			}
			$html .= ' | ' . $asum . '';
			$collectHtml [$value ['category']] [$value ['name']] = $html;
		}
		$data ['collectHtml'] = $collectHtml;
		
		// print_r($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 ['staffname'] = urlencode ( $staffname );
		
		$data ['memu'] = "receipt";
		$data ['staff'] = $this->staff;
		$data ['receiptMemu'] = 'companyCategoryCollect';
		$data ['verifyId'] = $this->verifyId;
		$data ['executeId'] = $this->executeId;
		if ($year < date ( "Y" )) {
			Doo::loadModel ( 'receipt' );
			$receipt = new receipt ();
			$receiptList = $receipt->find ( 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 .= '
' . $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 = ' | ' . $psum . '';
			else
				$psum = ' | -';
			$receiptL ['报销金额调整'] = $psum . $html;
		} else {
			
			$receiptL ['日常相关费用'] = ' | - | - | - | - | - | - | - | - | - | - | - | - | -';
			$receiptL ['差旅相关费用'] = ' | - | - | - | - | - | -';
			$receiptL ['培训班费用'] = ' | - | - | - | - | - | - | - | - | -';
			$receiptL ['其他'] = ' | - | - | - | - | -';
			$receiptL ['报销金额调整'] = ' | -';
		}
		return $receiptL;
	}
	function eMail() {
		Doo::loadModel ( 'staff' );
		$staff = new staff ();
		Doo::loadModel ( 'receipt' );
		$receipt = new receipt ();
		Doo::loadModel ( 'L_category' );
		$Lcategory = new L_category ();
		Doo::loadModel ( "verify" );
		$verify = new verify ();
		
		$staffList = $staff->find ( array (
				'asArray' => true 
		) );
		
		foreach ( $staffList as $key => $value ) {
			
			if ($value ['username'] != 'admin') {
				// 提交人
				
				$receiptList = $receipt->find ( array (
						'where' => 'staff=' . $value ['sid'] . ' and status=1 and notice=0',
						'asArray' => true 
				) );
				if (! empty ( $receiptList )) {
					
					$html = ' | 
    
      | 
          | CLD 邮件提醒 |  | 
             
               | Hi,' . $value ['username'] . ' |  
               | 美好的一天从今天开始,您需要关注以下事项: |  |  | 
              | 
             	以下报销单完成了审批,等着收款吧: |  |  ';
					
					foreach ( $receiptList as $k => $v ) {
						$category = $Lcategory->getOne ( array (
								'where' => 'cid=' . $v ['cid'],
								'asArray' => true 
						) );
						$html .= '
                  
                  ';
					}
					
					$html .= '| 
 | ' . $v ['receiptOrder'] . ' | ' . $category ['title'] . ' | ¥' . $v ['sum'] . '元 | ' . $v ['date'] . ' |  |  |  | 立即登录 |  | 
  
';
					
					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 .= '
	                  
	                  ';
					}
				}
				$html .= '| 
 | ' . $l ['receiptOrder'] . ' | ' . $category ['title'] . '-' . $staffDetile ['username'] . ' | ¥' . $l ['sum'] . '元 | ' . $l ['date'] . ' |  |  |  
           | 立即登录 | 
 | 
 
';
				
				if ((filter_var ( $value ['email'], FILTER_VALIDATE_EMAIL )) && (! empty ( $verifyList )) && (! empty ( $receiptList ))) {
					$this->SMail ( $value ['email'], "CLD提醒您,有需要你审批的报销单", $html );
					// $receipt=new receipt();
					// $receipt->notice=1;
					// $receipt->update(array('where'=>'staff='.$value['sid'].' and status=1 and notice=0'));
				}
			}
		}
	}
	function setWXMsg($rid, $type) {
		Doo::loadModel ( "receipt" );
		$receipt = new receipt ();
		$receiptDetail = $receipt->getOne ( array (
				'where' => 'rid=' . $rid,
				'asArray' => true 
		) );
		if (! empty ( $receiptDetail )) {
			Doo::loadModel ( 'staff' );
			$staff = new staff ();
			$staffmsg = $staff->getOne ( array (
					'where' => "sid='" . $receiptDetail ['staff'] . "'",
					'asArray' => TRUE 
			) );
			if (! empty ( $staffmsg ['wxid'] )) {
				require_once (SITE_PATH . '/protected/class/client.php');
				$client = new client ( 'http://m.cld.smartcost.com.cn/' );
				$user = $staffmsg ['wxid'];
				$receiptName = '';
				$msg = '';
				switch ($receiptDetail ['Rtype']) {
					case 0 :
						$receiptName = '报销';
						break;
					case 1 :
						$receiptName = '借款';
						break;
					case 2 :
						$receiptName = '对公汇款';
						break;
				}
				switch ($type) {
					case 1 :
						$msg = '太好了,您的' . $receiptName . ' ' . $receiptDetail ['receiptOrder'] . ',¥' . $receiptDetail ['sum'] . ',已同意支付。';
						break;
					case 2 :
						$msg = '注意,您的' . $receiptName . ' ' . $receiptDetail ['receiptOrder'] . ',¥' . $receiptDetail ['sum'] . ',已被撤回,请及时处理。';
						break;
					case 3 :
						$msg = '很遗憾,您的' . $receiptName . ' ' . $receiptDetail ['receiptOrder'] . ',¥' . $receiptDetail ['sum'] . ',已被终止。';
						break;
				}
				
				// $result = $client->SendMsg ( $user, $msg, 'text' );
			}
		}
	}
	
	// Email发送函数
	function SMail($toemail, $subject, $contents) {
		Doo::loadClass ( 'class.phpmailer' );
		$mail = new PHPMailer ();
		$mail->From = "postmaster@support.zhzdwk.com"; // 发送邮箱全名
		$mail->FromName = "=?UTF-8?B?" . base64_encode ( "CLD" ) . "?="; // 发送人昵称
		$mail->Username = "postmaster@websupport.sendcloud.org"; // 用户名
		$mail->Password = "cDO1GjtY1seH"; // 密码
		$mail->CharSet = "UTF8";
		$mail->SMTPAuth = true;
		$mail->Host = "smtpcloud.sohu.com"; // 邮件主机的smtp地址
		$mail->Mailer = "smtp";
		$mail->Port = 25;
		$mail->Subject = "=?UTF-8?B?" . base64_encode ( $subject ) . "?=";
		$mail->MsgHTML ( $contents );
		$mail->AddAddress ( $toemail );
		$mail->CharSet = "UTF-8";
		return $mail->Send ();
	}
	function swfupload() {
		$POST_MAX_SIZE = ini_get ( 'post_max_size' );
		$unit = strtoupper ( substr ( $POST_MAX_SIZE, - 1 ) );
		$multiplier = ($unit == 'M' ? 1048576 : ($unit == 'K' ? 1024 : ($unit == 'G' ? 1073741824 : 1)));
		
		if (( int ) $_SERVER ['CONTENT_LENGTH'] > $multiplier * ( int ) $POST_MAX_SIZE && $POST_MAX_SIZE) {
			header ( "HTTP/1.1 500 Internal Server Error" );
			echo "POST exceeded maximum allowed size.";
			exit ( 0 );
		}
		
		// Settings
		$save_path = DOO::conf ()->SITE_PATH . "upload/swfupload/"; // The path were we will save the file (getcwd() may not be reliable and should be tested in your environment)
		$upload_name = "Filedata";
		$max_file_size_in_bytes = 2147483647; // 2GB in bytes
		$extension_whitelist = array (
				"doc",
				"txt",
				"jpg",
				"gif",
				"png" 
		); // Allowed file extensions
		$valid_chars_regex = '.A-Z0-9_ !@#$%^&()+={}\[\]\',~`-'; // Characters allowed in the file name (in a Regular Expression format)
		                                                         
		// Other variables
		$MAX_FILENAME_LENGTH = 260;
		$file_name = "";
		$file_extension = "";
		$uploadErrors = array (
				0 => "文件上传成功",
				1 => "上传的文件超过了 php.ini 文件中的 upload_max_filesize directive 里的设置",
				2 => "上传的文件超过了 HTML form 文件中的 MAX_FILE_SIZE directive 里的设置",
				3 => "上传的文件仅为部分文件",
				4 => "没有文件上传",
				6 => "缺少临时文件夹" 
		);
		
		$nk = time ();
		$file_name = $nk . '.' . $this->_GetFileEXT ( $_FILES [$upload_name] ['name'] ); // preg_replace('/[^'.$valid_chars_regex.']|\.+$/i', "", basename($_FILES[$upload_name]['name']));
		
		if (! @move_uploaded_file ( $_FILES [$upload_name] ["tmp_name"], $save_path . $file_name )) {
			echo "文件无法保存.";
			exit ( 0 );
		}
		
		// Return output to the browser (only supported by SWFUpload for Flash Player 9)
		
		echo json_encode ( array (
				'filename' => $file_name,
				'id' => $nk 
		) );
		exit ( 0 );
	}
	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;
	}
	function num_to_rmb($num) {
		$c1 = "零壹贰叁肆伍陆柒捌玖";
		$c2 = "分角元拾佰仟万拾佰仟亿";
		// 精确到分后面就不要了,所以只留两个小数位
		$num = round ( $num, 2 );
		// 将数字转化为整数
		$num = $num * 100;
		if (strlen ( $num ) > 10) {
			return "金额太大,请检查";
		}
		$i = 0;
		$c = "";
		while ( 1 ) {
			if ($i == 0) {
				// 获取最后一位数字
				$n = substr ( $num, strlen ( $num ) - 1, 1 );
			} else {
				$n = $num % 10;
			}
			// 每次将最后一位数字转化为中文
			$p1 = substr ( $c1, 3 * $n, 3 );
			$p2 = substr ( $c2, 3 * $i, 3 );
			
			if ($n != '0' || ($n == '0' && ($p2 == '亿' || $p2 == '万' || $p2 == '元'))) {
				$c = $p1 . $p2 . $c;
			} else {
				$c = $p1 . $c;
			}
			$i = $i + 1;
			// 去掉数字最后一位了
			
			$num = $num / 10;
			// echo $num.'';
			$num = ( int ) $num;
			// $num =floor($num);
			// $num = round ( $num, 0, PHP_ROUND_HALF_DOWN );
			// echo $num.'';
			// 结束循环
			if ($num == 0) {
				break;
			}
		}
		// echo $c.'';
		$j = 0;
		$slen = strlen ( $c );
		while ( $j < $slen ) {
			// utf8一个汉字相当3个字符
			$m = substr ( $c, $j, 6 );
			// 处理数字中很多0的情况,每次循环去掉一个汉字“零”
			if ($m == '零元' || $m == '零万' || $m == '零亿' || $m == '零零') {
				$left = substr ( $c, 0, $j );
				$right = substr ( $c, $j + 3 );
				$c = $left . $right;
				$j = $j - 3;
				$slen = $slen - 3;
			}
			$j = $j + 3;
		}
		// 这个是为了去掉类似23.0中最后一个“零”字
		if (substr ( $c, strlen ( $c ) - 3, 3 ) == '零') {
			$c = substr ( $c, 0, strlen ( $c ) - 3 );
		}
		// 将处理的汉字加上“整”
		if (empty ( $c )) {
			return "零元整";
		} else {
			return $c . "整";
		}
	}
	
	/**
	 * 获得分页数据
	 * @param unknown_type $table
	 * @param unknown_type $condition
	 * @param unknown_type $on_page
	 * @param unknown_type $page_size
	 */
	function get_page($table = "", $condition = "", $on_page = 1, $page_size = 20, $action = "", $get = "", $other = "page") {
		$page_c = "";
		$page ['previous'] = $this->get_previous ( $on_page );
		$page ['on_page'] = $on_page;
		$total_count = $this->get_table_count ( $table, $condition );
		$total = intval ( $total_count / $page_size );
		
		$page ['total_page'] = ($total_count % $page_size) == 0 ? $total : $total + 1;
		$page ['total_data'] = $total_count;
		$page ['next'] = $on_page == $page ['total_page'] ? $page ['total_page'] : $on_page + 1;
		
		$i = 1;
		$page_max = 1;
		$page_width = 3;
		
		if ($on_page >= $page_width) {
			$page_max = intval ( $on_page / $page_width ) + 1;
			$i = intval ( $on_page / $page_width ) * $page_width - 1;
		}
		
		for(; $i <= $page ['total_page']; $i ++) {
			if ($i == $on_page)
				$page_c .= '' . $i . '';
			else
				$page_c .= '' . $i . '';
			
			if ($i == ($page_width * $page_max))
				break;
		}
		
		$page ['page'] = $page_c;
		$page ['lower'] = (-- $on_page) * $page_size;
		return $page;
	}
	
	/**
	 * 获取总页数
	 * @param unknown_type $table
	 * @param unknown_type $condition
	 */
	public function get_table_count($table = "", $condition = "") {
		// $sql = "select count(*) as count from " . $table . " where 1 " . $condition;
		$sql = "select count(*) as count from " . $table . " where 1 " . $condition;
		
		// echo $sql;die;
		$query = Doo::db ()->query ( $sql );
		$result = $query->fetch ();
		return $result ['count'];
	}
	/**
	 * 获取上一页
	 * @param unknown_type $on_page
	 */
	function get_previous($on_page = 1) {
		return $on_page != 0 ? $on_page - 1 : $on_page;
	}
}
?>
' . $value ['1'] . '' . $value ['date'] . ''; if (isset ( $value ['rolename'] )) $htmlLoan .= $value ['rolename']; $htmlLoan .= '
' . $value ['opinion'] . '