<?php

/**
 * @author darkredz
 */
class ReceiptController extends DooController {
	public $staff;
	public $verifyId;
	public $executeId;
	 
	// public static $NEW2 = 0;
	public $AGENCY = "日常相关费用";
	public $TRAVEL = "差旅相关费用";
	public $TRAIN = "培训班费用";
	public $OTHER = "其他";
	public $INTTRAIN='内部培训费用';
	
	private $MYREVEIPTCACHEPATH = "protected/cache/myReceipt/";
	private $PERSONALCOLLECTCACHEPATH = "protected/cache/personalCollect/";
	private $CATEGORYCOLLECTPATH = "protected/cache/categoryCollect/";
	private $STAFFCOLLECTPATH = "protected/cache/staffCollect/";
	private function showCache($path) {
		if (file_exists ( $path )) {
			echo "<!DOCTYPE html>";
			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 .= '<td class="colGreen taR">￥' . $value ['price'] . '</td>';
						$falg = false;
						break;
					} else {
						$collectHtml .= '<td class="taR">￥' . $value ['price'] . '</td>';
						$falg = false;
						break;
					}
				}
			}
			if ($falg)
				$collectHtml .= '<td class="taR">-</td>';
		}
		$collectHtml .= '<td class="taR colGreen">￥' . $sumPrice . '</td>';
		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 (
						'where'=>'mold !="日常收支"',
						'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' );
		$receipt = new receipt ();
		Doo::loadModel ( 'verify' );
		$verify = new verify ();
		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);
		
		Doo::loadModel ( 'RAssist' );
		$RAssist = new RAssist ();
		$receiptExtendList=$RAssist->getRAssistBySid($this->staff[0]['sid']);
		
		$data ['receiptExtendList'] = $receiptExtendList;
		$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->getVerifyBySubordinate('REMIT');
		
		
		
		
		$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 "社保") and category like "'.$this->AGENCY.'"',
					'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;
			print_r($aItem);
			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, '.', '' ) 
			);
			//die;
			// 报销单
			$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 = '<br/>';
			$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->getVerifyBySubordinate('REMIT'); 
		
		
		
		// 配置编辑信息
		$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 "公积金" or name like "社保") and category like "'.$this->AGENCY.'"',
					'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 = '<br/>';
			$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 '<br/>';
							
							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 .= '<option selected value="' . $i . '">' . $i . '月</option>';
			else
				$mothHtml .= '<option value="' . $i . '">' . $i . '月</option>';
		}
		
		// 获取审批日志
		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 .= '<a href="/upload/swfupload/' . $value ['name'] . '" class="sFile" target="_blank">' . $value ['name'] . '</a>';
		}
		// 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->getVerifyBySubordinate('LOAN'); 
		
		$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 = '<br/>';
			$explanation = str_replace ( $order, $replace, $explanation );
			
			// $explanation=str_replace('\r',"<br/>",$explanation);
			// $explanation=str_replace('\r\n',"<br/>",$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 (
				'where'=>'subordinate like "%LOAN%"',
				'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 = '<br/>';
			$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 '<br/>';
							
							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->getVerifyBySubordinate('RECEIPT','LOAN');
		
		
		
		$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' );

        $inttrain = $this->get_args ( 'inttrain' );

		$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->INTTRAIN] = $accountJson [$this->TRAVEL] = $accountJson [$this->TRAIN] = $accountJson [$this->OTHER] = array ();
			$ag = $tr = $ta = $ot =$it  = 0;
			$sum = $agencySum = $travelSum = $trainSum =$inttrainSum= $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->INTTRAIN) {
                    if (is_numeric ( $inttrain [$it] ) && $inttrain [$it] != 0) {
                        array_push ( $accountJson [$this->INTTRAIN], array (
                            'aid' => $value ['aid'],
                            'name' => $value ['name'],
                            'price' => number_format ( $inttrain [$it], 2, '.', '' )
                        ) );
                        $sum += $inttrain [$it];
                        $inttrainSum += $inttrain [$it];
                    }
                    $it ++;
                }

				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, '.', '' ),
                'inttrainSum'=>number_format ( $inttrainSum, 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->INTTRAIN] as $key => $value ) {
                $receiptDetail = new receiptDetail ();
                $receiptDetail->staff = $this->staff [0] ['sid'];
                $receiptDetail->item = $value ['name'];
                $receiptDetail->itemCategory = $this->INTTRAIN;
                $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 '<br/>';
							
							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->INTTRAIN] as $k => $v ) {
                if ($acItem [$key] ['category'] == $this->INTTRAIN && $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 receiptTrainAdd() {
		Doo::loadModel ( 'accountItem' );
		$accountItem = new accountItem ();
		
		$acItem = $accountItem->find ( array (
				'asArray' => true 
		) );
		
		// 审批组
		Doo::loadModel ( 'verify' );
		$verify = new verify ();
		$veList = $verify->getVerifyBySubordinate('TRAIN');
		// 办事处
		Doo::loadModel ( 'L_category' );
		$lCategory = new L_category ();
		$data ['category'] = $lCategory->getCategory ();
		$data ['veList'] = $veList;
		$data ['memu'] = "receipt";
		$data ['staff'] = $this->staff;
		
		$data ['acItem'] = $acItem;
		
		$data ['receiptMemu'] = 'saeaBorad';
		$data ['verifyId'] = $this->verifyId;
		$data ['executeId'] = $this->executeId;
		
		$this->render ( "/receipt/receiptTrainAdd", $data );
	}
	
	/**
	 * 添加培训班结算
	 */
	function receiptTrainAddDo() {//include Doo::conf ()->BASE_PATH . 'diagnostic/debug.php';
		// 培训班信息
		$trainName = $this->get_args ( 'trainName' ) ? $this->get_args ( 'trainName' ) : "";
		$trainStartDate = $this->get_args ( 'trainStartDate' ) ? $this->get_args ( 'trainStartDate' ) : "";
		$trainEndDate = $this->get_args ( 'trainEndDate' ) ? $this->get_args ( 'trainEndDate' ) : "";
		$participants = $this->get_args ( 'participants' ) && is_numeric ( $this->get_args ( 'participants' ) ) ? $this->get_args ( 'participants' ) : 0;
		$trainAddress = $this->get_args ( 'trainAddress' ) ? $this->get_args ( 'trainAddress' ) : "";
		$trainRemarks = $this->get_args ( 'trainRemarks' ) ? $this->get_args ( 'trainRemarks' ) : "";
		// 发票信息
		$verify = $this->get_args ( 'verify' ) && is_numeric ( $this->get_args ( 'verify' ) ) ? $this->get_args ( 'verify' ) : 0;
		$cid = $this->get_args ( 'cid' ) ? $this->get_args ( 'cid' ) : 0;
		$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 ( $remittanceName ) && ! empty ( $bankName ) && ! empty ( $bankNumber ) && ! empty ( $trainName ) && ! empty ( $trainStartDate ) && ! empty ( $trainEndDate ) && ! empty ( $participants ) && ! empty ( $trainAddress )) {
			
			if ($remittanceBankType == 1 && empty ( $coupletNumber )) {
				header ( 'Content-Type:text/html;charset=utf-8' );
				die ( '请填写联行号' );
			}
			Doo::loadModel ( 'execute' );
			$execute = new execute ();
			$executeDetail = $execute->getOne ( array (
					'where' => 'mold="培训班结算"',
					'asArray' => true 
			) );
			if (empty ( $executeDetail )) {
				header ( 'Content-Type:text/html;charset=utf-8' );
				die ( '未设置执行人' );
			}
			Doo::loadClass ( 'XDeode' );
			$XDeode = new XDeode ( 5 );
			$cid = $XDeode->decode ( $cid );
			
			Doo::loadModel ( 'receipt' );
			$receipt = new receipt ();
			Doo::loadModel ( 'receiptTraining' );
			$receiptTraining = new receiptTraining ();
			
			// 创建费用培训班
			$item = array (
					'cid' => $this->staff [0] ['cid'],
					'categoryName' => $this->staff [0] ['category'],
					'trainName' => $trainName,
					'trainStartDate' => $trainStartDate,
					'trainEndDate' => $trainEndDate,
					'participants' => $participants,
					'trainAddress' => $trainAddress,
					'trainRemarks' => $trainRemarks,
					'creator' => $this->staff [0] ['sid'],
					'creatorDate' => date ( "Y-m-d H:i:s" ) 
			);
			$irid = $receiptTraining->addReceiptTraining ( $item );
			
			// 报销单
			$receipt->status = 5;
			$receipt->trainId = $irid;
			$receipt->Rtype = 3;
			$receipt->staff = $this->staff [0] ['sid'];
			$receipt->cid = $cid;
			$receipt->verify = $verify;
			$receipt->date = date ( "Y-m-d" );
			
			$receipt->executeCopy = $executeDetail ['staff'];
			$receipt->receiptOrder = "#P" . date ( "Ymd" ) . mt_rand ( 1000, 9999 );
			
			$receipt->remittanceName = $remittanceName;
			$receipt->bankName = $bankName;
			$receipt->bankNumber = $bankNumber;
			$receipt->remittanceBankType = $remittanceBankType;
			if ($remittanceBankType == 1)
				$receipt->coupletNumber = $coupletNumber;
			
			$rid = $receipt->insert ();
			$XDeode = new XDeode ( 7 );
			return "/receiptTrainEdi/" . $XDeode->encode ( $rid ) . ".html";
		} else
			die ( 'illegal request' );
	}
	
	/**
	 * 培训班编辑
	 */
	function receiptTrainEdi() {
		$ridKey = isset ( $this->params ['rid'] ) ? $this->params ['rid'] : '';
		$trainEdiType = $this->get_args ( 'trainEdiType' ) ? $this->get_args ( 'trainEdiType' ) : "INFO";
		
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 7 );
		$rid = $XDeode->decode ( $ridKey );
		
		if (! is_numeric ( $rid ))
			die ( 'illegal request' );
		
		Doo::loadModel ( 'receipt' );
		$receipt = new receipt ();
		Doo::loadModel ( 'receiptTraining' );
		$receiptTraining = new receiptTraining ();
		
		$receiptDetail = $receipt->getReceiptByRid ( $rid );
		if (! ($receiptDetail ['status'] == 5 || $receiptDetail ['status'] == 4)){
			die ('illegal request--status');
		}
		
		//如有已入账已收款的发票，自动取消办事处已收款
// 		Doo::loadModel ( 'RIExtend' );
// 		$RIExtend = new RIExtend ();
// 		$RIExtendList=$RIExtend->getRIExtendByRid($rid);
// 		if (!empty($RIExtendList)){
// 			foreach ($RIExtendList as $key=>$value){
// 				$RIExtend = new RIExtend ();
// 				$RIExtend->delete(array (
// 						'where' => 'iid=' . $value['iid'],
// 						'limit' => 1
// 				));
// 			}
// 		}
		
		$receiptTrainingDetail = $receiptTraining->getReceiptTrainingByRtid ( $receiptDetail ['trainId'] );
		
		// 汇总表合计
		// 收入合计--加入开票合计
		Doo::loadModel ( 'invoiceTraining' );
		$invoiceTraining = new invoiceTraining ();
		$invoiceTrainingDetail = array (
				'invoiceArriveAmount' => 0,
				'RIAmount' => 0,
				'invoiceTotalAmount' => 0,
				'invoiceCompanyAmount'=>0
		);
		if ($receiptDetail ['invoiceTrainId'] != 0) {
			$invoiceTrainingDetail = $invoiceTraining->getInvoiceTrainingByItid ( $receiptDetail ['invoiceTrainId'] );
		}
		
		// print_r($invoiceTrainingDetail);
		$invoiceArriveAmount = $RIAmount = 0;
		if (! empty ( $invoiceTrainingDetail )) {
			$invoiceArriveAmount = $invoiceTrainingDetail ['invoiceArriveAmount'];
			$RIAmount = $invoiceTrainingDetail ['RIAmount'];
		}
		$data ['invoiceTrainingDetail'] = $invoiceTrainingDetail;
		//print_r($invoiceTrainingDetail);
		// 支出项目
		Doo::loadModel ( 'accountItem' );
		$accountItem = new accountItem ();
		
		// 项目金额合计
		Doo::loadModel ( 'RItem' );
		$RItem = new RItem ();
		// 讲师获得
		Doo::loadModel ( 'RILecturer' );
		$RILecturer = new RILecturer ();
		$RItemList = $RItem->getRItemByRid ( $rid );
		$RILecturerList = $RILecturer->getRILecturerByRid ( $rid );
		// 支出项金额详情
		$aiData = $accountItem->getTrainingDetail ( $RItemList, $RILecturerList, $invoiceArriveAmount );
		// print_r($aiData);
		
	// 利润
		$profit=$invoiceArriveAmount - $aiData ['total'];
		$companyProfit=$profit * 0.6;
		$categoryProfit=$profit * 0.4;
		
		$data ['profit'] = sprintf("%.2f",$profit);
		$data ['companyProfit'] = sprintf("%.2f",$companyProfit); 
		$data ['categoryProfit'] = sprintf("%.2f",$categoryProfit);  
		//发票利润
		$data ['invoiceProfit'] = $invoiceTrainingDetail ['invoiceTotalAmount'] - $aiData ['total'];
		//发票公司利润
		$invoiceCompanyProfit=$data ['invoiceProfit'] * 0.6;
		$data ['invoiceCompanyProfit'] = sprintf("%.2f",$invoiceCompanyProfit);  
		//办事处利润
		$invoiceCategoryProfit=$data ['invoiceProfit'] * 0.4;
		$data ['invoiceCategoryProfit'] = sprintf("%.2f",$invoiceCategoryProfit);  
		
		// print_r($aiData['dataList']);
		$categoryActualExpenditure= $aiData ['total'] - $aiData ['categoryActualExpenditure'];
		$data ['categoryActualExpenditure'] = sprintf("%.2f",$categoryActualExpenditure);   
		// 备用金
		$sum = 0;
		$data ['receiptLoanDetail'] = array (
				'sum' => '0.00' 
		);
		if (! empty ( $receiptDetail ['trainLoanRid'] )) {
			$data ['receiptLoanDetail'] = $receipt->getReceiptByRid ( $receiptDetail ['trainLoanRid'] );
			$sum = $data ['receiptLoanDetail'] ['sum'];
		}
		
		$payment=$sum + $RIAmount - $categoryActualExpenditure;
		$data ['payment'] = sprintf("%.2f",$payment);    
		
		$data ['total'] =  sprintf("%.2f",$aiData ['total']); 
		$data ['aiCount'] = count ( $aiData ['dataList'] ) + 5;
		$data ['aiList'] = $aiData ['dataList'];
		
		// 占比计算
		if ($invoiceArriveAmount != 0) {
			$data ['totalProportion'] = sprintf("%.2f",$aiData ['total'] / $invoiceArriveAmount* 100)  ;
			$data ['profitProportion'] = sprintf("%.2f",$profit / $invoiceArriveAmount*100)  ;  //number_format ( $profit / $invoiceArriveAmount, 2, '.', '' ) * 100;
			$data ['sumProportion'] = sprintf("%.2f",$sum / $invoiceArriveAmount*100)  ; //number_format ( $sum / $invoiceArriveAmount, 2, '.', '' ) * 100;
			$data ['invoiceTotalAmountProportion'] = sprintf("%.2f",$data ['invoiceTrainingDetail'] ['invoiceCompanyAmount'] / $invoiceArriveAmount*100)  ; 
			$data ['RIAmountProportion'] =  sprintf("%.2f",$data ['invoiceTrainingDetail'] ['RIAmount'] / $invoiceArriveAmount*100)  ;  
			$data ['companyProfitProportion'] = sprintf("%.2f",$companyProfit / $invoiceArriveAmount*100)  ;  
			$data ['categoryProportion'] = sprintf("%.2f",$categoryProfit / $invoiceArriveAmount*100)  ;   
			$data ['categoryActualExpenditureProportion'] = sprintf("%.2f",$categoryActualExpenditure / $invoiceArriveAmount*100)  ; 
			$data ['paymentProportion'] = sprintf("%.2f",$payment / $invoiceArriveAmount*100)  ;  
		} else {
			$data ['totalProportion'] = $data ['profitProportion'] = $data ['sumProportion'] = $data ['invoiceTotalAmountProportion'] = $data ['RIAmountProportion'] = $data ['companyProfitProportion'] = $data ['categoryActualExpenditureProportion'] = $data ['paymentProportion'] = $data ['categoryProportion'] = 0;
		}
		//发票金额占比计算
		if ($invoiceTrainingDetail ['invoiceTotalAmount'] != 0) {
			//支出
			$data ['invoicetotalProportion'] = sprintf("%.2f",$aiData ['total'] / $invoiceTrainingDetail ['invoiceTotalAmount']* 100)  ; 
			//利润
			$data ['invoiceprofitProportion'] = sprintf("%.2f",$data ['invoiceProfit'] / $invoiceTrainingDetail ['invoiceTotalAmount']* 100)  ;  
			//公司利润
			$data ['invoicecompanyProfitProportion'] = sprintf("%.2f", $invoiceCompanyProfit / $invoiceTrainingDetail ['invoiceTotalAmount']* 100)  ;  
			//办事处利润
			$data ['invoicecategoryProportion'] = sprintf("%.2f", $invoiceCategoryProfit / $invoiceTrainingDetail ['invoiceTotalAmount']* 100)  ;  
			//公司收款
			$data ['invoiceTotalAmountProportionB'] = sprintf("%.2f", $data ['invoiceTrainingDetail'] ['invoiceCompanyAmount'] / $invoiceTrainingDetail ['invoiceTotalAmount']* 100)  ;  
			//备用金
			$data ['invoicesumProportion'] = sprintf("%.2f", $sum / $invoiceTrainingDetail ['invoiceTotalAmount']* 100)  ;   
			//办事处收款
			$data ['invoiceRIAmountProportion'] = sprintf("%.2f", $data ['invoiceTrainingDetail'] ['RIAmount'] / $invoiceTrainingDetail ['invoiceTotalAmount']* 100)  ;  
			//办事处实际支出
			$data ['ICAEP'] = sprintf("%.2f", $categoryActualExpenditure / $invoiceTrainingDetail ['invoiceTotalAmount']* 100)  ;   
			//付总部款
			$data ['invoicepaymentProportion'] = sprintf("%.2f", $payment / $invoiceTrainingDetail ['invoiceTotalAmount']* 100)  ;  
		}else{
			$data ['invoiceprofitProportion'] =$data ['invoiceRIAmountProportion'] =$data ['invoicetotalProportion'] =$data ['invoiceTotalAmountProportionB'] =$data ['invoicesumProportion'] =$data ['ICAEP'] =$data ['invoicepaymentProportion'] =$data ['invoicecompanyProfitProportion'] =$data ['invoicecategoryProportion'] =0;
		}
		
		//讲师人数
		Doo::loadModel ( 'RILecturer' );
		$RILecturer = new RILecturer ();
		$RILecturerList = $RILecturer->getRILecturerByRid ( $rid );
		$data['lectureCount']=count($RILecturerList);
		
		// 审批组
		Doo::loadModel ( 'verify' );
		$verify = new verify ();
		$veList = $verify->getVerifyBySubordinate('TRAIN');
		
		// 办事处
		Doo::loadModel ( 'L_category' );
		$lCategory = new L_category ();
		$data ['category'] = $lCategory->getCategory ();
		
		$data ['receiptTrainingDetail'] = $receiptTrainingDetail;
		$data ['receiptDetail'] = $receiptDetail;
		$data ['veList'] = $veList;
		$data ['trainEdiType'] = $trainEdiType;
		$data ['ridKey'] = $ridKey;
		
		$data ['memu'] = "receipt";
		$data ['staff'] = $this->staff;
		
		$data ['receiptMemu'] = 'saeaBorad';
		$data ['verifyId'] = $this->verifyId;
		$data ['executeId'] = $this->executeId;
		
		$this->render ( "/receipt/receiptTrainEdi", $data );
	}
	
	/**
	 * 培训班借款编辑
	 */
	function receiptTrainLoanEdi() {
		$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 ( 'receipt' );
		$receipt = new receipt ();
		Doo::loadModel ( 'receiptTraining' );
		$receiptTraining = new receiptTraining ();
		Doo::loadModel ( 'verify' );
		$verify = new verify ();
		
		$receiptDetail = $receipt->getReceiptByRid ( $rid );
		if (! ($receiptDetail ['status'] == 5 || $receiptDetail ['status'] == 4))
			die ();
		
		$receiptTrainingDetail = $receiptTraining->getReceiptTrainingByRtid ( $receiptDetail ['trainId'] );
		// 借款详情HTML
		// 获得借款信息
		$receiptLoanHtml = '';
		if (! empty ( $receiptDetail ['trainLoanRid'] )) {
			$receiptLoanDetail = $receipt->getReceiptByRid ( $receiptDetail ['trainLoanRid'] );
			// 获得某费用单审批信息
			$verifylist = $verify->getVerifyByRid ( $receiptDetail ['trainLoanRid'] );
			Doo::loadClass ( 'receipt.func' );
			$extendHtml = '<p><a class="button" href="javascript:if(window.confirm(\'确认移除?\'))window.location=\'/receiptTrainLoanRemoveDo/' . $receiptDetail ['ridKey'] . '/' . $receiptDetail ['trainLoanRidKey'] . '.html\'" data-toggle="modal">移除借款</a></p>';
			$receiptLoanHtml = _getReceiptLoanHtml ( $receiptLoanDetail, $verifylist, $extendHtml );
		}
		
		$data ['receiptLoanHtml'] = $receiptLoanHtml;
		$data ['receiptTrainingDetail'] = $receiptTrainingDetail;
		$data ['receiptDetail'] = $receiptDetail;
		$data ['trainEdiType'] = "LOAN";
		$data ['ridKey'] = $ridKey;
		$data ['memu'] = "receipt";
		$data ['staff'] = $this->staff;
		
		$data ['receiptMemu'] = 'saeaBorad';
		$data ['verifyId'] = $this->verifyId;
		$data ['executeId'] = $this->executeId;
		
		$this->render ( "/receipt/receiptTrainLoanEdi", $data );
	}
	
	/**
	 * 更新培训班结算基本信息
	 */
	function receiptTrainInfoEdiDo() {
		$rid = $this->get_args ( 'rid' ) ? $this->get_args ( 'rid' ) : "";
		$rtid = $this->get_args ( 'rtid' ) ? $this->get_args ( 'rtid' ) : "";
		
		// 培训班信息
		$trainName = $this->get_args ( 'trainName' ) ? $this->get_args ( 'trainName' ) : "";
		$trainStartDate = $this->get_args ( 'trainStartDate' ) ? $this->get_args ( 'trainStartDate' ) : "";
		$trainEndDate = $this->get_args ( 'trainEndDate' ) ? $this->get_args ( 'trainEndDate' ) : "";
		$participants = $this->get_args ( 'participants' ) && is_numeric ( $this->get_args ( 'participants' ) ) ? $this->get_args ( 'participants' ) : 0;
		$trainAddress = $this->get_args ( 'trainAddress' ) ? $this->get_args ( 'trainAddress' ) : "";
		$trainRemarks = $this->get_args ( 'trainRemarks' ) ? $this->get_args ( 'trainRemarks' ) : "";
		// 发票信息
		$verify = $this->get_args ( 'verify' ) && is_numeric ( $this->get_args ( 'verify' ) ) ? $this->get_args ( 'verify' ) : 0;
		$cid = $this->get_args ( 'cid' ) ? $this->get_args ( 'cid' ) : 0;
		$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 ( $remittanceName ) && ! empty ( $bankName ) && ! empty ( $bankNumber ) && ! empty ( $trainName ) && ! empty ( $trainStartDate ) && ! empty ( $trainEndDate ) && ! empty ( $participants ) && ! empty ( $trainAddress )) {
			
			if ($remittanceBankType == 1 && empty ( $coupletNumber )) {
				header ( 'Content-Type:text/html;charset=utf-8' );
				die ( '请填写联行号' );
			}
			
			Doo::loadClass ( 'XDeode' );
			$XDeode = new XDeode ( 5 );
			$cid = $XDeode->decode ( $cid );
			$rtid = $XDeode->decode ( $rtid );
			$rid = $XDeode->decode ( $rid );
			
			if (! is_numeric ( $rtid ) || ! is_numeric ( $rid )) {
				die ( 'illegal request-IdError' );
			}
			
			Doo::loadModel ( 'receipt' );
			$receipt = new receipt ();
			Doo::loadModel ( 'receiptTraining' );
			$receiptTraining = new receiptTraining ();
			
			// 更新费用培训班
			$item = array (
					'rtid' => $rtid,
					'trainName' => $trainName,
					'trainStartDate' => $trainStartDate,
					'trainEndDate' => $trainEndDate,
					'participants' => $participants,
					'trainAddress' => $trainAddress,
					'trainRemarks' => $trainRemarks 
			);
			$irid = $receiptTraining->setReceiptTrainByCondition ( $item );
			
			// 报销单
			$receipt->rid = $rid;
			$receipt->cid = $cid;
			$receipt->verify = $verify;
			
			$receipt->remittanceName = $remittanceName;
			$receipt->bankName = $bankName;
			$receipt->bankNumber = $bankNumber;
			$receipt->remittanceBankType = $remittanceBankType;
			if ($remittanceBankType == 1)
				$receipt->coupletNumber = $coupletNumber;
			
			$receipt->update ();
			$XDeode = new XDeode ( 7 );
			return "/receiptTrainEdi/" . $XDeode->encode ( $rid ) . ".html?trainEdiType=INFO";
		} else
			die ( 'illegal request' );
	}
	
	/**
	 * 编辑培训班结算---更新借款
	 */
	function receiptTrainLoanEdiDo() {
		$ridKey = $this->get_args ( 'ridKey' ) ? $this->get_args ( 'ridKey' ) : "";
		$ridLoanKey = $this->get_args ( 'ridLoanKey' ) ? $this->get_args ( 'ridLoanKey' ) : "";
		if (! empty ( $ridKey ) && ! empty ( $ridLoanKey )) {
			Doo::loadModel ( 'receipt' );
			$receipt = new receipt ();
			Doo::loadClass ( 'XDeode' );
			$XDeode = new XDeode ( 5 );
			
			$rid = $XDeode->decode ( $ridKey );
			$ridLoan = $XDeode->decode ( $ridLoanKey );
			if (! is_numeric ( $rid ) || ! is_numeric ( $ridLoan ))
				die ( 'illegal request-ridError' );
			
			$receiptDetail = $receipt->getReceiptByRid ( $rid );
			$receiptLoanDetail = $receipt->getReceiptByRid ( $ridLoan );
			// 不合法的数据if (!($receiptDetail ['status'] == 5||$receiptDetail ['status'] == 4))
			if ((! ($receiptDetail ['status'] == 5 || $receiptDetail ['status'] == 4)) || $receiptDetail ['Rtype'] != 3) {
				die ( 'illegal request-receiptError' );
			}
			if ($receiptLoanDetail ['status'] != 8 || $receiptLoanDetail ['Rtype'] != 1) {
				die ( 'illegal request-receipLoantError' );
			}
			// 培训班结算挂钩借款
			$receipt = new receipt ();
			$item = array (
					'rid' => $rid,
					'trainLoanRid' => $ridLoan 
			);
			$receipt->setReceiptByCondition ( $item );
			// 更新借款状态变成已挂钩
			$receipt = new receipt ();
			$item = array (
					'rid' => $ridLoan,
					'status' => 10,
					'statusTrain' => 1 
			);
			$receipt->setReceiptByCondition ( $item );
			
			$XDeode = new XDeode ( 7 );
			return "/receiptTrainLoanEdi/" . $XDeode->encode ( $rid ) . ".html";
		} else
			die ( 'illegal request' );
	}
	
	/**
	 * 编辑培训班结算--移除借款
	 */
	function receiptTrainLoanRemoveDo() {
		$ridKey = isset ( $this->params ['ridKey'] ) ? $this->params ['ridKey'] : 0;
		$ridLoanKey = isset ( $this->params ['ridLoanKey'] ) ? $this->params ['ridLoanKey'] : 0;
		
		if (! empty ( $ridKey ) || ! empty ( $ridLoanKey )) {
			Doo::loadModel ( 'receipt' );
			$receipt = new receipt ();
			Doo::loadClass ( 'XDeode' );
			$XDeode = new XDeode ( 5 );
			
			$rid = $XDeode->decode ( $ridKey );
			$ridLoan = $XDeode->decode ( $ridLoanKey );
			
			if (! is_numeric ( $rid ) || ! is_numeric ( $ridLoan ))
				die ( 'illegal request-ridError' );
			
			$receiptDetail = $receipt->getReceiptByRid ( $rid );
			$receiptLoanDetail = $receipt->getReceiptByRid ( $ridLoan );
			// 不合法的数据 !($receiptDetail ['status'] == 5||$receiptDetail ['status'] == 4)
			if ((! ($receiptDetail ['status'] == 5 || $receiptDetail ['status'] == 4)) || $receiptDetail ['Rtype'] != 3) {
				die ( 'illegal request-receiptError' );
			}
			if ($receiptLoanDetail ['status'] != 10 || $receiptLoanDetail ['Rtype'] != 1) {
				die ( 'illegal request-receipLoantError' );
			}
			// 培训班结算挂钩借款
			$receipt = new receipt ();
			$item = array (
					'rid' => $rid,
					'trainLoanRid' => 0 
			);
			$receipt->setReceiptByCondition ( $item );
			// 更新借款状态变成已挂钩
			$receipt = new receipt ();
			$item = array (
					'rid' => $ridLoan,
					'status' => 8,
					'statusTrain' => 0 
			);
			$receipt->setReceiptByCondition ( $item );
			$XDeode = new XDeode ( 7 );
			return "/receiptTrainLoanEdi/" . $XDeode->encode ( $rid ) . ".html";
		} else
			die ( 'illegal request' );
	}
	
	/**
	 * 编辑培训班结算 ---开票
	 */
	function receiptTrainInvoiceEdi() {
		$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 ( 'receipt' );
		$receipt = new receipt ();
		Doo::loadModel ( 'receiptTraining' );
		$receiptTraining = new receiptTraining ();
		Doo::loadModel ( 'invoice' );
		$invoice = new invoice ();
		Doo::loadModel ( 'invoiceTraining' );
		$invoiceTraining = new invoiceTraining ();
		
		
		
		
		$receiptDetail = $receipt->getReceiptByRid ( $rid );
		if (! ($receiptDetail ['status'] == 5 || $receiptDetail ['status'] == 4))
			die ();
		$receiptTrainingDetail = $receiptTraining->getReceiptTrainingByRtid ( $receiptDetail ['trainId'] );
		
		$invoiceList = $invoiceTrainingDetail = array ();
		if ($receiptDetail ['invoiceTrainId'] != 0) {
			$invoiceList = $invoice->getInvoicePrintedByItid ( $receiptDetail ['invoiceTrainId'] );
			$invoiceTrainingDetail = $invoiceTraining->getInvoiceTrainingByItid ( $receiptDetail ['invoiceTrainId'] );
		}
		//print_r($invoiceList);
		$data ['invoiceList'] = $invoiceList;
		$data ['invoiceTrainingDetail'] = $invoiceTrainingDetail;
		$data ['receiptTrainingDetail'] = $receiptTrainingDetail;
		$data ['receiptDetail'] = $receiptDetail;
		$data ['trainEdiType'] = "INVOICE";
		$data ['ridKey'] = $ridKey;
		$data ['memu'] = "receipt";
		$data ['staff'] = $this->staff;
		
		$data ['receiptMemu'] = 'saeaBorad';
		$data ['verifyId'] = $this->verifyId;
		$data ['executeId'] = $this->executeId;
		
		$this->render ( "/receipt/receiptTrainInvoiceEdi", $data );
	}
	
	/**
	 * 编辑培训班结算---更新开票
	 */
	function receiptTrainInvoiceEdiDo() {
		$ridKey = $this->get_args ( 'ridKey' ) ? $this->get_args ( 'ridKey' ) : "";
		$itidKey = $this->get_args ( 'itidKey' ) ? $this->get_args ( 'itidKey' ) : "";
		if (! empty ( $ridKey ) && ! empty ( $itidKey )) {
			Doo::loadModel ( 'receipt' );
			$receipt = new receipt ();
			Doo::loadModel ( 'invoiceTraining' );
			$invoiceTraining = new invoiceTraining ();
			
			Doo::loadClass ( 'XDeode' );
			$XDeode = new XDeode ( 5 );
			
			$rid = $XDeode->decode ( $ridKey );
			$itid = $XDeode->decode ( $itidKey );
			if (! is_numeric ( $rid ) || ! is_numeric ( $itid ))
				die ( 'illegal request-idError' );
			
			$receiptDetail = $receipt->getReceiptByRid ( $rid );
			$invoiceTrainDetail = $invoiceTraining->getInvoiceTrainingByItid ( $itid );
			// 不合法的数据
			if ((! ($receiptDetail ['status'] == 5 || $receiptDetail ['status'] == 4)) || $receiptDetail ['Rtype'] != 3) {
				die ( 'illegal request-receiptError' );
			}
			if (empty ( $invoiceTrainDetail ) || $invoiceTrainDetail ['bindReceipt'] == 1) {
				die ( 'illegal request-receipLoantError' );
			}
			// 培训班结算挂钩借款
			$receipt = new receipt ();
			$item = array (
					'rid' => $rid,
					'invoiceTrainId' => $itid 
			);
			$receipt->setReceiptByCondition ( $item );
			
			$invoiceTraining = new invoiceTraining ();
			$item = array (
					'bindReceipt' => 1,
					'itid' => $itid 
			);
			$invoiceTraining->setInvoiceTrainByCondition ( $item );
			
			
			
			
			
			$XDeode = new XDeode ( 7 );
			return "/receiptTrainInvoiceEdi/" . $XDeode->encode ( $rid ) . ".html";
		} else
			die ( 'illegal request' );
	}
	
	/**
	 * 更新培训班结算 收款和取消收款
	 */
	function receiptTrainReceivables() {
		$doType = isset ( $this->params ['doType'] ) ? $this->params ['doType'] : '';
		$ridKey = $this->get_args ( 'ridKey' ) ? $this->get_args ( 'ridKey' ) : "";
		$iidKey = $this->get_args ( 'iidKey' ) ? $this->get_args ( 'iidKey' ) : "";
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 5 );
		$rid = $XDeode->decode ( $ridKey );
		$iid = $XDeode->decode ( $iidKey );
		if (! is_numeric ( $rid ) || ! is_numeric ( $iid ))
			die ( 'illegal request-iid' );
		
		
		Doo::loadModel ( 'RIExtend' );
		$RIExtend = new RIExtend ();
		
		if ($doType == 'CONFIRM') {
			$RIExtend->rid = $rid;
			$RIExtend->iid = $iid;
			$RIExtend->RIstatus = 1;
			$RIExtend->insert ();
			
			echo json_encode ( array (
					'status' => 1,
			) );
			die ( );
		} elseif ($doType == 'CANCEL') {
			$RIExtend->delete ( array (
					'where' => 'rid=' . $rid . ' and iid=' . $iid,
					'limit' => 1 
			) );
			
			echo json_encode ( array (
					'status' => 1,
			) );
			die ( );
		} else {
			echo json_encode ( array (
					'status' => 2,
			) );
			die ( );
		}
	}
	
	/**
	 * 移除挂钩的培训班发票
	 */
	function receiptTrainReceivablesDelDo() {
		$ridKey = $this->get_args ( 'ridKey' ) ? $this->get_args ( 'ridKey' ) : ""; // 费用 培训班结算
		$itidKey = $this->get_args ( 'itidKey' ) ? $this->get_args ( 'itidKey' ) : ""; // 发票培训班
		
		Doo::loadModel ( 'receipt' );
		$receipt = new receipt ();
		Doo::loadModel ( 'RIExtend' );
		$RIExtend = new RIExtend ();
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 5 );
		
		$rid = $XDeode->decode ( $ridKey );
		$itid = $XDeode->decode ( $itidKey );
		
		if (is_numeric ( $rid ) && is_numeric ( $itid )) {
			$receiptDetail = $receipt->getReceiptByRid ( $rid );
			if (!($receiptDetail ['status'] == 5||$receiptDetail ['status'] == 4)){
				die ( 'illegal request-status' );
			}
			
			$receipt = new receipt ();
			$receipt->rid = $rid;
			$receipt->invoiceTrainId = 0;
			$receipt->update ();
			
			Doo::loadModel ( 'invoiceTraining' );
			$invoiceTraining = new invoiceTraining ();
			$item = array (
					'bindReceipt' => 0,
					'itid' => $itid 
			);
			$invoiceTraining->setInvoiceTrainByCondition ( $item );
			
			$RIExtend->delete ( array (
					'where' => 'rid=' . $rid 
			) );
			$XDeode = new XDeode ( 7 );
			return '/receiptTrainInvoiceEdi/' . $XDeode->encode ( $rid ) . '.html';
		} else
			die ( 'illegal request-iid' );
	}
	
	/**
	 * 编辑培训班结算
	 */
	function receiptTrainItemEdi() {
		//include Doo::conf()->BASE_PATH.'diagnostic/debug.php';
		$ridKey = isset ( $this->params ['rid'] ) ? $this->params ['rid'] : '';
		$name = $this->get_args ( 'name' ) ? $this->get_args ( 'name' ) : '';
		
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 7 );
		$rid = $XDeode->decode ( $ridKey );
		
		if (! is_numeric ( $rid ))
			die ( 'illegal request' );
		
		Doo::loadModel ( 'receipt' );
		$receipt = new receipt ();
		Doo::loadModel ( 'receiptTraining' );
		$receiptTraining = new receiptTraining ();
		Doo::loadModel ( 'RItem' );
		$RItem = new RItem ();
		Doo::loadModel ( 'accountItem' );
		$accountItem = new accountItem ();
		
		$receiptDetail = $receipt->getReceiptByRid ( $rid );
		if (!($receiptDetail ['status'] == 5||$receiptDetail ['status'] == 4))
			die ();
		$receiptTrainingDetail = $receiptTraining->getReceiptTrainingByRtid ( $receiptDetail ['trainId'] );
		
		$RItemList = $RItem->getRItemByRid ( $rid,$name );
		$aiList = $accountItem->getAccountBookByCategory ( '培训班费用' );//print_r($aiList);
// 		foreach ($aiList as $key=>$value){//不需要添加税款，在添加收入时自动添加
// 			if($value['name']=='税款'){
// 				unset($aiList[$key]);break;
// 			}
// 		}
		
		//print_r($RItemList);
		$data ['name'] = $name;
		$data ['RItemList'] = $RItemList;
		$data ['aiList'] = $aiList;
		
		$data ['receiptTrainingDetail'] = $receiptTrainingDetail;
		$data ['receiptDetail'] = $receiptDetail;
		$data ['trainEdiType'] = "ITEM";
		$data ['ridKey'] = $ridKey;
		$data ['memu'] = "receipt";
		$data ['staff'] = $this->staff;
		
		$data ['receiptMemu'] = 'saeaBorad';
		$data ['verifyId'] = $this->verifyId;
		$data ['executeId'] = $this->executeId;
		
		$this->render ( "/receipt/receiptTrainItemEdi", $data );
	}
	
	/**
	 * 添加支出项  需要修改 费用金额合计
	 */
	function receiptTrainItemAddDo() {
		$ridKey = $this->get_args ( 'ridKey' ) ? $this->get_args ( 'ridKey' ) : "";
        $rtidKey = $this->get_args ( 'rtidKey' ) ? $this->get_args ( 'rtidKey' ) : "";
		// 支出项信息
		$item = $this->get_args ( 'item' ) ? $this->get_args ( 'item' ) : "";
		$price = $this->get_args ( 'price' ) ? $this->get_args ( 'price' ) : 0;
		$date = $this->get_args ( 'date' ) ? $this->get_args ( 'date' ) : "";
		$inputer = $this->get_args ( 'inputer' ) ? $this->get_args ( 'inputer' ) : "";
		$describe = $this->get_args ( 'describe' ) ? $this->get_args ( 'describe' ) : "";
        //$identifyingTotal = $this->get_args ( 'identifyingTotal' )&&is_numeric($this->get_args ( 'identifyingTotal' )) ? $this->get_args ( 'identifyingTotal' ) : 0;

		$payType = isset ( $this->params ['payType'] ) ? $this->params ['payType'] : '';
		
		if (! empty ( $ridKey ) && ! empty ( $item ) &&  is_numeric( $price ) && ! empty ( $date ) && ! empty ( $inputer )) {
			Doo::loadClass ( 'XDeode' );
			$XDeode = new XDeode ( 5 );
			Doo::loadModel ( 'RItem' );
			$RItem = new RItem ();
			
			$rid = $XDeode->decode ( $ridKey );
            $rtid= $XDeode->decode ( $rtidKey );
			if (! is_numeric ( $rid )){
				die ( 'illegal request' );
			}

			Doo::loadModel ( 'receiptDetail' );
			$receiptDetail = new receiptDetail ();
			Doo::loadModel ( 'receipt' );
			$receipt = new receipt ();
            Doo::loadModel ( 'receiptTraining' );
            $receiptTraining = new receiptTraining ();

            $rtDetail=$receiptTraining->getReceiptTrainingByRtid($rtid);
            $identifyingTotal=$rtDetail['identifyingTotal']+1;

			$order = array (
					"\r\n",
					"\n",
					"\r"
			);
			$replace = '<br/>';
			$describe = str_replace ( $order, $replace, $describe );
			$itemData = array (
					'rid' => $rid,
					'item' => $item,
					'price' => $price,
						
					'date' => $date,
					'inputer' => $inputer,
						
					'describe' => $describe,
					'creater' => $this->staff['0']['username'],
					'createrId' => $this->staff['0']['sid'],
					'creatDate' => date ( "Y-m-d H:i:s" ),
                    'identifying'=>$identifyingTotal
			);
			if($payType=='company'){
				$itemData += array (
						'payType' => 1
				);
			}
			$RItem->addRItem($itemData, $receipt, $receiptDetail, $rid, $item, $price, $payType);
			//更新支出项标识总数

            $itemData = array (
                'rtid'=>$rtid,
                'identifyingTotal'=>$identifyingTotal
            );
            $receiptTraining->setReceiptTrainByCondition($itemData);

			$XDeode = new XDeode ( 7 );
			if($payType=='company'){
				return '/receiptTrainItem/approval/' . $XDeode->encode ( $rid ) . '.html';
			}else{
				return '/receiptTrainItemEdi/' . $XDeode->encode ( $rid ) . '.html';
			}
		} else
			die ( 'illegal request-dataError' );
	}
	
	/**
	 * 培训班结算-讲师
	 */
	function receiptTrainLecturerEdi() {
		$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 ( 'receipt' );
		$receipt = new receipt ();
		Doo::loadModel ( 'receiptTraining' );
		$receiptTraining = new receiptTraining ();
		Doo::loadModel ( 'RILecturer' );
		$RILecturer = new RILecturer ();
		
		Doo::loadModel ( 'lecturer' );
		$lecturer = new lecturer ();
		
		$receiptDetail = $receipt->getReceiptByRid ( $rid );
		if (!($receiptDetail ['status'] == 5||$receiptDetail ['status'] == 4))
			die ();
		$receiptTrainingDetail = $receiptTraining->getReceiptTrainingByRtid ( $receiptDetail ['trainId'] );
		
		$RILecturerList = $RILecturer->getRILecturerByRid ( $rid );
		
		$lecturerList = $lecturer->getLecturerAll ();
		$INSIDEhtml = $OUTSIDEhtml = '';
		foreach ( $lecturerList as $key => $value ) {
			if ($value ['ltype'] == 'INSIDE') {
				$INSIDEhtml .= '<option value="' . $value ['category'] . '-' . $value ['staff'] . '">' . $value ['category'] . '-' . $value ['staff'] . '</option>';
			} elseif ($value ['ltype'] == 'OUTSIDE') {
				$OUTSIDEhtml .= '<option value="' . $value ['staff'] . '">' . $value ['staff'] . '</option>';
			}
		}
		$data ['INSIDEhtml'] = $INSIDEhtml;
		$data ['OUTSIDEhtml'] = $OUTSIDEhtml;
		// print_r($RItemList);
		$data ['RILecturerList'] = $RILecturerList;
		
		$data ['receiptTrainingDetail'] = $receiptTrainingDetail;
		$data ['receiptDetail'] = $receiptDetail;
		$data ['trainEdiType'] = "LECTURER";
		$data ['ridKey'] = $ridKey;
		$data ['memu'] = "receipt";
		$data ['staff'] = $this->staff;
		
		$data ['receiptMemu'] = 'saeaBorad';
		$data ['verifyId'] = $this->verifyId;
		$data ['executeId'] = $this->executeId;
		
		$this->render ( "/receipt/receiptTrainLecturerEdi", $data );
	}
	
	
	
	/**
	 * 添加讲师
	 */
	function receiptTrainLecturerAddDo() {
		$ridKey = $this->get_args ( 'ridKey' ) ? $this->get_args ( 'ridKey' ) : "";
		
		// 支出项信息
		$ltype = $this->get_args ( 'ltype' ) ? $this->get_args ( 'ltype' ) : "";
		$lecturerName = $this->get_args ( 'lecturerName' ) ? $this->get_args ( 'lecturerName' ) : "";
		$schoolDay = $this->get_args ( 'schoolDay' ) ? $this->get_args ( 'schoolDay' ) : "";
		$price = $this->get_args ( 'price' ) ? $this->get_args ( 'price' ) : "";
		$taxation = $this->get_args ( 'taxation' ) ? $this->get_args ( 'taxation' ) : "";
		
		$fees = $this->get_args ( 'fees' ) ? $this->get_args ( 'fees' ) : "";
		
		if (! empty ( $ridKey ) && ! empty ( $ltype ) && ! empty ( $lecturerName ) && ! empty ( $schoolDay ) && ! empty ( $price )) {
			Doo::loadClass ( 'XDeode' );
			$XDeode = new XDeode ( 5 );
			Doo::loadModel ( 'RILecturer' );
			$RILecturer = new RILecturer ();
			
			$rid = $XDeode->decode ( $ridKey );
			if (! is_numeric ( $rid ))
				die ( 'illegal request' );
			
			if ($ltype == 'OUTSIDE' && empty ( $taxation ))
				die ( 'illegal request-taxationError' );
			
			$RILecturer->rid = $rid;
			$RILecturer->ltype = $ltype;
			if ($ltype == 'OUTSIDE') {
				if ($taxation == 'TAXATION') {
					$RILecturer->taxation = 1;
				} elseif ($taxation == 'NOTAXATION') {
					$RILecturer->taxation = 0;
				}
			}
			$RILecturer->lecturerName = $lecturerName;
			$RILecturer->schoolDay = $schoolDay;
			$RILecturer->price = $price;
			$RILecturer->fees=$fees;
			$RILecturer->insert ();
			
			// 添加公司汇总
			// 报销详情
			Doo::loadModel ( 'receiptDetail' );
			$receiptDetail = new receiptDetail ();
			Doo::loadModel ( 'receipt' );
			$receipt = new receipt ();
			
			// 金额总计
			$price = $price * $schoolDay;
			
			$rInfo = $receipt->getReceiptByRid ( $rid );
			$rdInfo = $receiptDetail->getReceiptDetailByRIC ( $rid, '讲课费', '培训班费用' );
			if (empty ( $rdInfo )) {
				$receiptDetail = new receiptDetail ();
				$receiptDetail->staff = $rInfo ['staff'];
				$receiptDetail->item = '讲课费';
				$receiptDetail->itemCategory = '培训班费用';
				$receiptDetail->price = number_format ( $fees, 2, '.', '' );
				$receiptDetail->date = date ( "Y-m-d" );
				$receiptDetail->cid = $rInfo ['cid'];
				$receiptDetail->rid = $rid;
				$receiptDetail->status = 4;
				$receiptDetail->insert ();
			} else {
				$receiptDetail = new receiptDetail ();
				$rdInfo ['price'] +=  $fees;
				$receiptDetail->price = $rdInfo ['price'];
				$receiptDetail->update ( array (
						'where' => 'rid=' . $rid . ' and item like "' . '讲课费' . '" and itemCategory like "培训班费用"' 
				) );
			}
			$receipt = new receipt ();
			$receipt->sum=$rInfo['sum']+$fees;
			$receipt->update ( array (
					'where' => 'rid=' . $rid
			) );
			
			$XDeode = new XDeode ( 7 );
			return '/receiptTrainLecturerEdi/' . $XDeode->encode ( $rid ) . '.html';
		} else
			die ( 'illegal request' );
	}
	
	/**
	 * 移除讲师
	 */
	function receiptTrainLecturerDelDo() {
		$ridKey = $this->get_args ( 'ridKey' ) ? $this->get_args ( 'ridKey' ) : ""; // 费用 培训班结算
		$rlidKey = $this->get_args ( 'rlidKey' ) ? $this->get_args ( 'rlidKey' ) : ""; // 发票培训班
		
		Doo::loadModel ( 'receipt' );
		$receipt = new receipt ();
		Doo::loadModel ( 'RILecturer' );
		$RILecturer = new RILecturer ();
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 5 );
		
		$rid = $XDeode->decode ( $ridKey );
		$rlid = $XDeode->decode ( $rlidKey );
		
		if (is_numeric ( $rid ) && is_numeric ( $rlid )) {
			$receiptDetail = $receipt->getReceiptByRid ( $rid );
			if (!($receiptDetail ['status'] == 5||$receiptDetail ['status'] == 4)){
				die ( 'illegal request-status' );
			}
			
			$detail=$RILecturer->getRILecturerByRlid($rlid);
			if (empty($detail)){
				die ( 'illegal request-data' );
			}
			$RILecturer->delete ( array (
					'where' => 'rid=' . $rid . ' and rlid=' . $rlid 
			) );
			
			//更新费用合计金额
			$rInfo = $receipt->getReceiptByRid ( $rid );
			$receipt = new receipt ();
			$receipt->sum= $receiptDetail['sum']-$detail['price'];
			$receipt->update ( array (
					'where' => 'rid=' . $rid
			) );
			Doo::loadModel ( 'receiptDetail' );
			$receiptDetail = new receiptDetail ();
			$rdInfo = $receiptDetail->getReceiptDetailByRIC ( $rid, '讲课费', '培训班费用' );
			$receiptDetail = new receiptDetail ();
			$rdInfo ['price'] -= number_format ( $detail['price'], 2, '.', '' );
			$receiptDetail->price = $rdInfo ['price'];
			$receiptDetail->update ( array (
					'where' => 'rid=' . $rid . ' and item like "' . '讲课费' . '" and itemCategory like "培训班费用"'
			) );
			
			
			$XDeode = new XDeode ( 7 );
			return '/receiptTrainLecturerEdi/' . $XDeode->encode ( $rid ) . '.html';
		} else
			die ( 'illegal request-iid' );
	}
	
	/**
	 * 培训班提交审批
	 */
	function receiptTrainDo() {
		$ridKey = $this->get_args ( 'ridKey' ) ? $this->get_args ( 'ridKey' ) : "";
		
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 7 );
		$rid = $XDeode->decode ( $ridKey );
		
		Doo::loadModel ( 'receipt' );
		$receipt = new receipt ();
		Doo::loadModel ( 'receiptDetail' );
		$receiptDetail = new receiptDetail ();
		Doo::loadModel ( 'statistics' );
		$statistics = new statistics ();
		
		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 ();
		
		$vr = $verify->getOne ( array (
				'where' => 'vid=' . $receiptDetailList ['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 ();
		
		// 写入列表项
		Doo::loadModel ( 'accountItem' );
		$accountItem = new accountItem ();
		$aItem = $accountItem->getAccountBookByCategory ( '培训班费用' );
		
		// 项目金额合计
		Doo::loadModel ( 'RItem' );
		$RItem = new RItem ();
		// 讲师获得
		Doo::loadModel ( 'RILecturer' );
		$RILecturer = new RILecturer ();
		$RItemList = $RItem->getRItemByRid ( $rid );
		$RILecturerList = $RILecturer->getRILecturerByRid ( $rid );
		// 支出项金额详情
		$aiData = $accountItem->getTrainingDetail ( $RItemList, $RILecturerList, 0 );
		// print_r($aItem);
		// print_r($aiData);
		
		$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->TRAIN) {
				
				foreach ( $aiData ['dataList'] as $k => $v ) {
					if ($value ['name'] == $v ['name']) {
						array_push ( $accountJson [$this->TRAIN], array (
								'aid' => $value ['aid'],
								'name' => $value ['name'],
								'price' => number_format ( $v ['price'], 2, '.', '' ) 
						) );
						$sum += $v ['price'];
						$trainSum += $v ['price'];
						unset ( $aiData ['dataList'] [$k] );
						break;
					}
				}
			}
		}
		$accountJson ['cSum'] = array (
				'agencySum' => number_format ( $agencySum, 2, '.', '' ),
				'travelSum' => number_format ( $travelSum, 2, '.', '' ),
				'trainSum' => number_format ( $trainSum, 2, '.', '' ),
				'otherSum' => number_format ( $otherSum, 2, '.', '' ) 
		);
		
		// 报销单
		$receipt = new receipt ();
		$receipt->accountItem = json_encode ( $accountJson );
		$receipt->sum = number_format ( $sum, 2, '.', '' );
		$receipt->update ( array (
				'where' => 'rid=' . $rid 
		) );
		// print_r($accountJson);
		// statistics item 统计写入
		$dateArray = explode ( "-", $receiptDetailList ['date'] );
		$dateCondition = " and Year(date) =" . $dateArray [0] . " and Month(date) = " . $dateArray [1];
		
		$accountItem = $accountJson;
		
		$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 "/saeaBorad";
	}
	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::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 7 );
		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 ";
		elseif ($item == "train")
		$condition = " and Rtype=3 ";
		
		$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 '<br/>';
							
							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] ['ridKey'] =$XDeode->encode( $value ['rid'] );
			
		}
		
		// print_r($receiptList);die;
		$mothHtml = "";
		for($i = 1; $i <= 12; $i ++) {
			if ($moth == $i)
				$mothHtml .= '<option selected value="' . $i . '">' . $i . '月</option>';
			else
				$mothHtml .= '<option value="' . $i . '">' . $i . '月</option>';
		}
		
		$dateHtml = "";
		$now = date ( "Y" );
		for($YEARD = 2050; $YEARD >= 2004; $YEARD --) {
			
			if ($YEARD <= $now) {
				$dateHtml .= '<option ';
				if ($year == $YEARD) {
					$dateHtml .= 'selected ';
				}
				$dateHtml .= 'value="' . $YEARD . '">' . $YEARD . '</option>';
			}
		}
		
		$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 '<br/>'; 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 '<br/>';
							
							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 .= '<a href="/upload/swfupload/' . $value ['name'] . '" class="sFile" target="_blank">' . $value ['name'] . '</a>';
		}
		
		$data ['enclosurHtml'] = $enclosurHtml;
		
		//print_r($receiptList[0]['accountItem']['内部培训费用']);
		
		$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;
		
		$receiptOrder=$this->get_args ( 'receiptOrder' ) ? $this->get_args ( 'receiptOrder' ) :"";
		
		// echo $rdate;
		
		if (empty ( $status ))
			$status = $this->get_args ( 'status' ) && is_numeric ( $this->get_args ( 'status' ) ) ? $this->get_args ( 'status' ) : 0;
		
		$page_size = 8;
		$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(!empty($receiptOrder)){
			$pageinfo = $this->get_page ( "CLD_receipt", ' and receiptOrder like "%' . $receiptOrder . '%"', $page, $page_size, "approvalExpenses/" . $status, $get, "" );
			$receiptList = $receipt->find ( array ( // $dateCondition
					'where' => 'receiptOrder like "%' . $receiptOrder . '%"',
					'desc' => 'rid',
					'asArray' => true
			) );
		}else{
			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);
		
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 7 );
		
		$Locate = 0;
		
		$reportList = $reportCateList = array ();
		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'] ))
				$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'] );
			
			//获得培训班结算RID 借款费用--已经锁定
			if($value['status']==10){
				$trainRD=$receipt->getReceiptByTrainLoanRid($value['rid']);
				$receiptList [$key]['trainRidKey7']=$trainRD['ridKey7'];
			}
		}
		
		$reportList = array_unique ( $reportList );
		$reportHtml = '';
		foreach ( $reportList as $key => $value ) {
			$v = explode ( "-", $value );
			$reportHtml .= '<option node-all=\'true\' node-cate=\'' . $v [2] . '\' value="' . $v [1] . '">' . $v [1] . '</option>';
		}
		// print_r($reportList)
		$data ['reportHtml'] = $reportHtml;
		
		$reportCateList = array_unique ( $reportCateList );
		$reportCateHtml = '';
		foreach ( $reportCateList as $key => $value ) {
			$v = explode ( "-", $value );
			$reportCateHtml .= '<option value="' . $v [1] . '">' . $v [1] . '</option>';
		}
		// $reportHtml.='<option value="ALL">'.$value[''].'</option>';
		$data ['reportCateHtml'] = $reportCateHtml;
		
		// print_r($receiptList);die;
		// $data['verifyDetail']=$verifyDetail;
		
		$mothHtml = "";
		for($i = 1; $i <= 12; $i ++) {
			if ($month == $i)
				$mothHtml .= '<option selected value="0' . $i . '">' . $i . '月</option>';
			else
				$mothHtml .= '<option value="0' . $i . '">' . $i . '月</option>';
		}
		$data ['mothHtml'] = $mothHtml;
		
		$dateHtml = "";
		$now = date ( "Y" );
		for($YEARD = 2050; $YEARD >= 2004; $YEARD --) {
			
			if ($YEARD <= $now) {
				$dateHtml .= '<option ';
				if ($year == $YEARD) {
					$dateHtml .= 'selected ';
				}
				$dateHtml .= 'value="' . $YEARD . '">' . $YEARD . '</option>';
			}
		}
		
		$data ['dateHtml'] = $dateHtml;
		
		$data ['page'] = $pageinfo;
		$data ['receiptList'] = $receiptList;
		$data ['receiptApprovalCount'] = count ( $rLRes );
		$data ['status'] = $status;
		$data ['year'] = $year;
		$data ['month'] = $month;
		$data ['categoryList'] = $categoryList;
		$data ['staffList'] = $staffList;
		$data ['cid'] = $cid;
		$data ['sid'] = $sid;
		
		// print_r($receiptList);
		
		$data['receiptOrder']=$receiptOrder;
		$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 '<br/>';
							
							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 '<br/>';
							
							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=array();
		if (!empty( $rolename ['staff'])){
            $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 .= '<a href="/upload/swfupload/' . $value ['name'] . '" class="sFile" target="_blank">' . $value ['name'] . '</a>';
		}
		
		$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 '<br/>';
							
							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 .= '<option selected value="' . $i . '">' . $i . '月</option>';
			else
				$mothHtml .= '<option value="' . $i . '">' . $i . '月</option>';
		}
		
		// 获取审批日志
		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 .= '<a href="/upload/swfupload/' . $value ['name'] . '" class="sFile" target="_blank">' . $value ['name'] . '</a>';
		}
		
		// 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 { // 进入下一个角色或者审批人
					         
						$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 
						);
					}
					
					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;
					
				}
				// print_r($verifyStaff);die;
			}
			
			$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" );
				
				//生成流水后 不更新汇款金额
				Doo::loadModel ( 'wasteBook' );
				$wasteBook = new wasteBook ();
				$wbDetail = $wasteBook->getWateBookByAD ( 1, $rid );
				if (empty($wbDetail)){
					$loanReceipt->amount = $receiptDetail ['amount'];
				}
				
				
				$loanReceipt->update ( array (
						'where' => ' rid = ' . $receiptDetail ['loanRid'] 
				) );
				
				// 微信企业号通知
				$this->setWXMsg ( $rid, 1 );
			}
			
			$receipt->amount = $receiptDetail['sum'];
			$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 '<br/>';
							
							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;
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 5 );
		
		foreach ( $receiptList as $key => $value ) {
			
			$receiptList[$key]['ridKey']=$XDeode->encode ( $value['rid'] );
			
			$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 '<br/>';
							
							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 );
		}
		
		
		// 是否写入过流水
		$accountType = 0;
		if ($receiptList [0] ['Rtype'] == 0) {
			$accountType = 3;
		} elseif ($receiptList [0] ['Rtype'] == 1) {
			if (!empty($receiptList [0]['accountItem']) )
					$accountType = 2;
				else
					$accountType = 1;
		} elseif ($receiptList [0] ['Rtype'] == 2) {
			$accountType = 4;
		} elseif ($receiptList [0] ['Rtype'] == 3) {
			$accountType = 12;
		}
		Doo::loadModel ( 'wasteBook' );
		$wasteBook = new wasteBook ();
		$wbDetail = $wasteBook->getWateBookByAD ( $accountType, $receiptList [0] ['rid'] );
		$data ['wbDetail'] = $wbDetail;
		
		$wbDetailLoan=array();
		if ($accountType==2){
			$wbDetailLoan = $wasteBook->getWateBookByAD ( 1, $receiptList [0] ['rid'] );
		}
		$data ['wbDetailLoan'] = $wbDetailLoan;
		
		
		//print_r($wbDetail);
		
		$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--22' );
		
		if (! empty ( $rid )) {
			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 ) && ! empty ( $amount )) {
// 				$item = array (
// 						'dataID' => $rid,
// 						'expensesType' => 2,
// 						'accountType' => $accountType,
						
// 						'accountPriceShow' => $amount,
						
// 						'accountPrice' => - $amount,
// 						'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 '<br/>';
							
							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 = '';
		$data ['loanReceiptDate'] = '';
		if (isset ( $loanList [0] )) {
			foreach ( $loanList [0] ['verifyList'] as $key => $value ) {
				if ($value ['status'] == 1)
					$htmlLoan .= '<li class="done" >';
				elseif ($value ['status'] == 3)
					$htmlLoan .= '<li class="undone" >';
				
				$htmlLoan .= '<div class="avtra"><img width="32" src="' . $value [2] . '_2.jpg"></div>';
				$htmlLoan .= '<div class="comment"><p class="colGray">' . $value ['1'] . '<span class="fR">' . $value ['date'] . '</span>';
				if (isset ( $value ['rolename'] ))
					$htmlLoan .= $value ['rolename'];
				$htmlLoan .= '</p><p>' . $value ['opinion'] . '</p></div></li>';
			}
			$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 '<br/>';
							
							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 .= '<option selected value="' . $i . '">' . $i . '月</option>';
			else
				$mothHtml .= '<option value="' . $i . '">' . $i . '月</option>';
		}
		
		// 获取审批日志
		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 .= '<a href="/upload/swfupload/' . $value ['name'] . '" class="sFile" target="_blank">' . $value ['name'] . '</a>';
		}
		
		$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';
		
		$receiptOrder=$this->get_args ( 'receiptOrder' ) ? $this->get_args ( 'receiptOrder' ) :"";
		
		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 );
		$XDeode7 = new XDeode ( 7 );
		$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 ";
		elseif($item == "train")
			$condition = " and Rtype=3 ";
		
		$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;
		
		if(!empty($receiptOrder)){
				$receiptList = $receipt->find ( array (
					'where' => $statusCon.' and receiptOrder like "%' . $receiptOrder . '%"',
					'desc' => 'rid',
					'asArray' => true
			) );
			
			// 员工筛选
			$receiptList2 = $receipt->find ( array (
					'where' => $statusCon.' and receiptOrder like "%' . $receiptOrder . '%"',
					'desc' => 'rid',
					'asArray' => true
			) );
		}else{
			$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 .= '<option value="' . $key . '" selected >' . $value . '</option>';
			else
				$categoryScreenHtml .= '<option value="' . $key . '" >' . $value . '</option>';
		}
		$data ['categoryScreenHtml'] = $categoryScreenHtml;
		$data ['cidKey'] = $cidKey;
		
		$Locate = 0;
		$roleId = 0;
		$button = 0;
		$staffBatchNumber = 100001;
		$remittanceList = array ();
		foreach ( $receiptList as $key => $value ) {
			$receiptList [$key] ['ridKey7'] = $XDeode7->encode ( $value ['rid'] );
			$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 '<br/>';
							
							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 .= '<option selected value="' . $i . '">' . $i . '月</option>';
			else
				$mothHtml .= '<option value="' . $i . '">' . $i . '月</option>';
		}
		$dayHtml = "";
		if ($day != "DAY" || $moth != "MONTH") {
			for($i = 1; $i <= 31; $i ++) {
				if ($day == $i)
					$dayHtml .= '<option value="' . $i . '" selected >' . $i . '日</option>';
				else
					$dayHtml .= '<option value="' . $i . '" >' . $i . '日</option>';
			}
		}
		$sopHtml = "";
		foreach ( $sopStaff as $key => $value ) {
			if ($sop == $key)
				$sopHtml .= '<option value="' . $key . '" selected >' . $value . '</option>';
			else
				$sopHtml .= '<option value="' . $key . '" >' . $value . '</option>';
		}
		
		$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['receiptOrder']=$receiptOrder;
		$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 ) . '条数据,<a href="/hisImplement">返回</a>' );
	}
	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 '<br/>';
							
							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 .= '<option selected value="' . $i . '">' . $i . '月</option>';
			else
				$mothHtml .= '<option value="' . $i . '">' . $i . '月</option>';
		}
		
		$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->getVerifyBySubordinate('RECEIPT');
		
		$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' );
		
		$inttrain = $this->get_args ( 'inttrain' );
		
		$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->INTTRAIN] = $accountJson [$this->TRAVEL] = $accountJson [$this->TRAIN] = $accountJson [$this->OTHER] = array ();
			$ag = $tr = $ta = $ot= $it = 0;
			$sum = $agencySum = $travelSum = $trainSum =$inttrainSum= $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->INTTRAIN) {
					if (is_numeric ( $inttrain [$it] ) && $inttrain [$it] != 0) {
						array_push ( $accountJson [$this->INTTRAIN], array (
								'aid' => $value ['aid'],
								'name' => $value ['name'],
								'price' => number_format ( $inttrain [$it], 2, '.', '' )
						) );
						$sum += $inttrain [$it];
						$inttrainSum += $inttrain [$it];
					}
					$it ++;
				}
				
				
				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, '.', '' ),
					'inttrainSum'=>number_format ( $inttrainSum, 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 = '<br/>';
			$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->INTTRAIN] as $key => $value ) {
				$receiptDetail = new receiptDetail ();
				$receiptDetail->staff = $this->staff [0] ['sid'];
				$receiptDetail->item = $value ['name'];
				$receiptDetail->itemCategory = $this->INTTRAIN;
				$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->getVerifyBySubordinate('RECEIPT');
		
		
		
		// 配置编辑信息
		$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->INTTRAIN] as $k => $v ) {
				if ($acItem [$key] ['category'] == $this->INTTRAIN && $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' );
		
		$inttrain = $this->get_args ( 'inttrain' );
		
		$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->INTTRAIN] = $accountJson [$this->TRAVEL] = $accountJson [$this->TRAIN] = $accountJson [$this->OTHER] = array ();
			$ag = $tr = $ta = $ot = $it = 0 ;
			$sum = $agencySum = $travelSum = $trainSum =$inttrainSum = $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->INTTRAIN) {
					if (is_numeric ( $inttrain [$it] ) && $inttrain [$it] != 0) {
						array_push ( $accountJson [$this->INTTRAIN], array (
								'aid' => $value ['aid'],
								'name' => $value ['name'],
								'price' => number_format ( $inttrain [$it], 2, '.', '' )
						) );
						$sum += $inttrain [$it];
						$inttrainSum += $inttrain [$it];
					}
					$it ++;
				}
				
				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, '.', '' ),
					'inttrainSum'=>number_format ( $inttrainSum, 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 = '<br/>';
			$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->INTTRAIN] as $key => $value ) {
				$receiptDetail = new receiptDetail ();
				$receiptDetail->staff = $this->staff [0] ['sid'];
				$receiptDetail->item = $value ['name'];
				$receiptDetail->itemCategory = $this->INTTRAIN;
				$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 .= '<option selected value="' . $i . '">' . $i . '月</option>';
			else
				$mothHtml .= '<option value="' . $i . '">' . $i . '月</option>';
		}
		
		$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 '<br/>';
							
							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 .= '<option selected value="' . $i . '">' . $i . '月</option>';
			else
				$mothHtml .= '<option value="' . $i . '">' . $i . '月</option>';
		}
		
		// 获取审批日志
		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 .= '<a href="/upload/swfupload/' . $value ['name'] . '" class="sFile" target="_blank">' . $value ['name'] . '</a>';
		}
		
		$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 '<br/>';
							
							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 .= '<option selected value="' . $i . '">' . $i . '月</option>';
			else
				$mothHtml .= '<option value="' . $i . '">' . $i . '月</option>';
		}
		
		// 获取审批日志
		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 .= '<a href="/upload/swfupload/' . $value ['name'] . '" class="sFile" target="_blank">' . $value ['name'] . '</a>';
		}
		
		$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'] . ')&nbsp;&nbsp;';
			}
			$dayList [$key] ['staff'] = $remitString;
			$dayList [$key] ['ridKey'] = strtotime ( $value ['executeDate'] );
		}
		
		// print_r($dayList);
		$mothHtml = "";
		for($i = 1; $i <= 12; $i ++) {
			if ($moth == $i)
				$mothHtml .= '<option selected value="' . $i . '">' . $i . '月</option>';
			else
				$mothHtml .= '<option value="' . $i . '">' . $i . '月</option>';
		}
		$dayHtml = "";
		if ($day != "DAY" || $moth != "MONTH") {
			for($i = 1; $i <= 31; $i ++) {
				if ($day == $i)
					$dayHtml .= '<option value="' . $i . '" selected >' . $i . '日</option>';
				else
					$dayHtml .= '<option value="' . $i . '" >' . $i . '日</option>';
			}
		}
		
		$dateHtml = "";
		$now = date ( "Y" );
		for($YEARD = 2050; $YEARD >= 2004; $YEARD --) {
			
			if ($YEARD <= $now) {
				$dateHtml .= '<option ';
				if ($year == $YEARD) {
					$dateHtml .= 'selected ';
				}
				$dateHtml .= 'value="' . $YEARD . '">' . $YEARD . '</option>';
			}
		}
		
		$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 .= '<table class="table table-bordered table-condensed"><thead><tr><th class="taC" colspan="3">' . $sinfo ['category'] . '-' . $sinfo ['username'] . '</th></tr></thead><tbody>
					<tr><td class="taC">费用单号</td><td class="taC">汇款金额</td></tr>';
			$au = 0;
			foreach ( $rplist as $k => $v ) {
				if ($value ['staff'] == $v ['staff']) {
					$html .= '<tr><td><a href="#saea-detail" node-invoice="INFO" data-iskey="' . $XDeode->encode ( $v ['rid'] ) . '" data-toggle="modal">' . $v ['receiptOrder'] . '</a></td><td class="taR">￥' . $v ['amount'] . '</td></tr>';
					$au += $v ['amount'];
				}
			}
			$html .= '<tr><td>合计</td><td class="taR"><b>￥' . $au . '</b></td></tr></tbody></table>';
		}
		$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 = '<div class="modal-dialog modal-lg"><div class="modal-content"><div class="modal-header"><h3>费用详情</h3></div><div class="modal-body saeaList">';
		
		if ($rinfo ['Rtype'] == 1) { // 借款费用
			$html .= '<table class="table table-bordered table-condensed table-hover"><tbody>
					<tr><th colspan="2" class="taC">借款费用</th></tr>';
			
			foreach ( $rinfo ['loanItem'] ['借款费用'] as $value ) {
				$html .= '<tr><th>' . $value ['name'] . '</th>
							<td  width="140" class="taR">￥' . $value ['price'] . '</td></tr>';
			}
			$html .= '<tr><th class="taC" colspan="2">产生费用所在办事处</th></tr>
						<tr><th style="text-align:center" colspan="2">' . $rinfo ['category'] . '</th></tr>
						<tr><th class="taC" colspan="2">费用说明</th>
						</tr><tr><td colspan="2">' . $rinfo ['explanation'] . '</td></tr>
						<tr class="warning"><td class="taR"><b>（' . $rinfo ['receiptOrder'] . '）本次费用合计</b></td>
						<td class="taR"><b style="font-size:24px">￥' . $rinfo ['loanSum'] . '</b><br>' . $rinfo ['loanSumCN'] . '</td></tr>
						</tbody></table>';
			if ($rinfo ['loanRid'] != 0 && ! empty ( $rinfo ['accountItem'] )) {
				
				$html .= '<table class="table table-bordered table-condensed table-hover"><tbody>';
				
				$html .= '<tr><th colspan="2" class="taC">日常相关费用</th></tr>';
				foreach ( $rinfo ['accountItem'] ['日常相关费用'] as $value ) {
					$html .= '<tr><th>' . $value ['name'] . '</th>
							<td  width="140" class="taR">￥' . $value ['price'] . '</td></tr>';
				}
				$html .= '<tr><th class="taR">合计</th>
						<td class="colGreen taR">￥' . $rinfo ['accountItem'] ['cSum'] ['agencySum'] . '</td></tr>';
				
				$html .= '<tr><th colspan="2" class="taC">差旅相关费用</th></tr>';
				foreach ( $rinfo ['accountItem'] ['差旅相关费用'] as $value ) {
					$html .= '<tr><th>' . $value ['name'] . '</th>
							<td  width="140" class="taR">￥' . $value ['price'] . '</td></tr>';
				}
				$html .= '<tr><th class="taR">合计</th>
						<td class="colGreen taR">￥' . $rinfo ['accountItem'] ['cSum'] ['travelSum'] . '</td></tr>';
				
				$html .= '<tr><th colspan="2" class="taC">培训班费用</th></tr>';
				foreach ( $rinfo ['accountItem'] ['培训班费用'] as $value ) {
					$html .= '<tr><th>' . $value ['name'] . '</th>
							<td  width="140" class="taR">￥' . $value ['price'] . '</td></tr>';
				}
				$html .= '<tr><th class="taR">合计</th>
						<td class="colGreen taR">￥' . $rinfo ['accountItem'] ['cSum'] ['trainSum'] . '</td></tr>';
				
				$html .= '<tr><th colspan="2" class="taC">其他</th></tr>';
				foreach ( $rinfo ['accountItem'] ['其他'] as $value ) {
					$html .= '<tr><th>' . $value ['name'] . '</th>
							<td  width="140" class="taR">￥' . $value ['price'] . '</td></tr>';
				}
				$html .= '<tr><th class="taR">合计</th>
						<td class="colGreen taR">￥' . $rinfo ['accountItem'] ['cSum'] ['otherSum'] . '</td></tr>';
				
				$html .= '<tr><th colspan="2" class="taC">报销金额调整</th></tr>';
				foreach ( $rinfo ['reviseDetail'] as $value ) {
					$html .= '<tr><th><span class="interval">|</span>' . $value ['name'] . '：' . $value ['description'] . '</th>
							<td class="taR">￥' . $value ['price'] . '</td></tr>';
				}
				$html .= '<tr><th class="taR">合计</th>
						<td class="colGreen taR">￥' . $rinfo ['revisePrice'] . '</td></tr>';
				
				$html .= '<tr><th class="taC" colspan="2">产生费用所在办事处</th></tr>
						<tr><th style="text-align:center" colspan="2">' . $rinfo ['category'] . '</th></tr>
						<tr><th class="taC" colspan="2">报销说明</th></tr>		
						<tr><td colspan="2">' . $rinfo ['explanation'] . '</td></tr>		
						<tr class="warning"><td class="taR"><b>（' . $rinfo ['receiptOrder'] . '）本次报销费用合计</b></td>		
						<td class="colGreed taR"><b style="font-size:24px">￥' . $rinfo ['sum'] . '</b><br>' . $rinfo ['sumCN'] . '</td></tr>		
						<tr';
				if ($rinfo ['relust'] >= 0) {
					$html .= 'class="success"';
				} else {
					$html .= 'class="error"';
				}
				$html .= '><td class="taR"><b>借款结余</b></td>
						<td class="taR"><b style="font-size:24px">￥' . $rinfo ['relust'] . '</b><br>' . $rinfo ['relustCN'] . '</td></tr>
	  					</tbody></table>
						';
			}
		} elseif ($rinfo ['Rtype'] == 2) { // 对公汇款
			
			$html .= '<table class="table table-bordered table-condensed table-hover"><tbody>
					<tr><th colspan="2" class="taC">办事处相关费用</th></tr>';
			
			foreach ( $rinfo ['accountItem'] ['日常相关费用'] as $value ) {
				$html .= '<tr><th>' . $value ['name'] . '</th>
							<td  width="140" class="taR">￥' . $value ['price'] . '</td></tr>';
			}
			$html .= '<tr><th class="taR">合计</th>
						<td class="colGreen taR">￥' . $rinfo ['accountItem'] ['cSum'] ['agencySum'] . '</td></tr>';
			
			$html .= '<tr><th class="taC" colspan="2">产生费用所在办事处</th></tr>
						<tr><th style="text-align:center" colspan="2">' . $rinfo ['category'] . '</th></tr>
						<tr><th class="taC" colspan="2">费用说明</th>
						</tr><tr><td colspan="2">' . $rinfo ['explanation'] . '</td></tr>
						<tr class="warning"><td class="taR"><b>（' . $rinfo ['receiptOrder'] . '）本次费用合计</b></td>
						<td class="taR"><b style="font-size:24px">￥' . $rinfo ['sum'] . '</b><br>' . $rinfo ['sumCN'] . '</td></tr>
						</tbody></table>';
		} else {
			
			$html .= '<table class="table table-bordered table-condensed table-hover"><tbody>';
			
			$html .= '<tr><th colspan="2" class="taC">日常相关费用</th></tr>';
			foreach ( $rinfo ['accountItem'] ['日常相关费用'] as $value ) {
				$html .= '<tr><th>' . $value ['name'] . '</th>
							<td  width="140" class="taR">￥' . $value ['price'] . '</td></tr>';
			}
			$html .= '<tr><th class="taR">合计</th>
						<td class="colGreen taR">￥' . $rinfo ['accountItem'] ['cSum'] ['agencySum'] . '</td></tr>';
			
			$html .= '<tr><th colspan="2" class="taC">差旅相关费用</th></tr>';
			foreach ( $rinfo ['accountItem'] ['差旅相关费用'] as $value ) {
				$html .= '<tr><th>' . $value ['name'] . '</th>
							<td  width="140" class="taR">￥' . $value ['price'] . '</td></tr>';
			}
			$html .= '<tr><th class="taR">合计</th>
						<td class="colGreen taR">￥' . $rinfo ['accountItem'] ['cSum'] ['travelSum'] . '</td></tr>';
			
			$html .= '<tr><th colspan="2" class="taC">培训班费用</th></tr>';
			foreach ( $rinfo ['accountItem'] ['培训班费用'] as $value ) {
				$html .= '<tr><th>' . $value ['name'] . '</th>
							<td  width="140" class="taR">￥' . $value ['price'] . '</td></tr>';
			}
			$html .= '<tr><th class="taR">合计</th>
						<td class="colGreen taR">￥' . $rinfo ['accountItem'] ['cSum'] ['trainSum'] . '</td></tr>';
			
			$html .= '<tr><th colspan="2" class="taC">其他</th></tr>';
			foreach ( $rinfo ['accountItem'] ['其他'] as $value ) {
				$html .= '<tr><th>' . $value ['name'] . '</th>
							<td  width="140" class="taR">￥' . $value ['price'] . '</td></tr>';
			}
			$html .= '<tr><th class="taR">合计</th>
						<td class="colGreen taR">￥' . $rinfo ['accountItem'] ['cSum'] ['otherSum'] . '</td></tr>';
			
			$html .= '<tr><th colspan="2" class="taC">报销金额调整</th></tr>';
			foreach ( $rinfo ['reviseDetail'] as $value ) {
				$html .= '<tr><th><span class="interval">|</span>' . $value ['name'] . '：' . $value ['description'] . '</th>
							<td class="taR">￥' . $value ['price'] . '</td></tr>';
			}
			$html .= '<tr><th class="taR">合计</th>
						<td class="colGreen taR">￥' . $rinfo ['revisePrice'] . '</td></tr>';
			
			$html .= '<tr><th class="taC" colspan="2">产生费用所在办事处</th></tr>
						<tr><th style="text-align:center" colspan="2">' . $rinfo ['category'] . '</th></tr>
						<tr><th class="taC" colspan="2">报销说明</th></tr>
						<tr><td colspan="2">' . $rinfo ['explanation'] . '</td></tr>
						<tr class="warning"><td class="taR"><b>（' . $rinfo ['receiptOrder'] . '）本次报销费用合计</b></td>
						<td class="colGreed taR"><b style="font-size:24px">￥' . $rinfo ['sum'] . '</b><br>' . $rinfo ['sumCN'] . '</td></tr>';
			
			$html .= '</tbody></table>';
			
			/*
			 * <table class="table table-bordered table-condensed table-hover"> <tbody> <tr><th colspan="2" class="taC">日常相关费用</th></tr> <!-- loop receiptList' value.accountItem.日常相关费用 --> <tr><th>{{receiptList' value' value.name}}</th><td width="140" class="taR">￥{{receiptList' value' value.price}}</td></tr> <!-- endloop --> <tr><th class="taR">合计</th><td class="colGreen taR">￥{{receiptList' value.accountItem.cSum.agencySum}}</td></tr> <tr><th colspan="2" class="taC">差旅相关费用</th></tr> <!-- loop receiptDetail' value.accountItem.差旅相关费用 --> <tr><th>{{receiptDetail' value' value.name}}</th><td width="140" class="taR">￥{{receiptDetail' value' value.price}}</td></tr> <!-- endloop --> <tr><th class="taR">合计</th><td class="colGreen taR">￥{{receiptDetail' value.accountItem.cSum.travelSum}}</td></tr> <tr><th colspan="2" class="taC">培训班费用</th></tr> <!-- loop receiptDetail' value.accountItem.培训班费用 --> <tr><th>{{receiptDetail' value' value.name}}</th><td width="140" class="taR">￥{{receiptDetail' value' value.price}}</td></tr> <!-- endloop --> <tr><th class="taR">合计</th><td class="colGreen taR">￥{{receiptDetail' value.accountItem.cSum.trainSum}}</td></tr> <tr><th colspan="2" class="taC">其他</th></tr> <!-- loop receiptDetail' value.accountItem.其他 --> <tr><th>{{receiptDetail' value' value.name}}</th><td width="140" class="taR">￥{{receiptDetail' value' value.price}}</td></tr> <!-- endloop --> <tr><th class="taR">合计</th><td class="colGreen taR">￥{{receiptDetail' value.accountItem.cSum.otherSum}}</td></tr> <tr><th colspan="2" class="taC">报销金额调整</th></tr> <!-- loop receiptList' value.reviseDetail --> <tr><th><span class="interval">|</span>{{receiptList' value' value.name}}：{{receiptList' value' value.description}}</th><td class="taR">￥{{receiptList' value' value.price}}</td></tr> <!-- endloop --> <tr><th class="taR">合计</th><td class="colOrange taR">￥{{receiptList' value.revisePrice}}</td></tr> <tr><th class="taC" colspan="2">产生费用所在办事处</th></tr> <tr><th style="text-align:center" colspan="2">{{receiptDetail' value.category}}</th></tr> <tr><th class="taC" colspan="2">报销说明</th></tr> <tr><td colspan="2">{{receiptDetail' value.explanation}}</td></tr> <tr class="warning"><td class="taR"><b>（{{receiptDetail' value.receiptOrder}}）本次报销费用合计</b></td> <td class="colGreed taR"><b style="font-size:24px">￥{{receiptDetail' value.sum}}</b><br>{{receiptDetail' value.sumCN}}</td></tr> </tbody> </table>
			 */
		}
		// print_r($verifyStaff);die;
		$html .= '<table class="table table-bordered table-condensed"><tbody><tr><th class="taC" width="90">审批人</th><th class="taC">审批意见</th></tr>';
		foreach ( $verifyStaff as $key => $value ) {
			$key = trim ( strtr ( $key, '_R', '  ' ) );
			$sinfo = $staff->getOne ( array (
					'select' => 'username',
					'where' => ' sid=' . $key,
					'asArray' => true 
			) );
			$html .= '<tr><td>' . $sinfo ['username'] . '</td><td>' . $value ['opinion'] . '</td></tr>';
		}
		$html .= '</tbody></table>';
		
		$html .= '<table class="table table-bordered table-condensed"><tbody><tr><th class="taC" width="90">执行人</th><th class="taC">执行意见</th></tr>';
		foreach ( $rinfo ['executeCopy'] as $value ) {
			$html .= '<tr><td>' . $value [1] . '</td><td>' . $value ['opinion'] . '</td></tr>';
		}
		$html .= '</tbody></table>';
		
		$html .= '<table class="table table-bordered table-condensed"><tr class="warning"><td class="taR"><b>汇款金额</b></td>
				<td  width="140" class="taR"><b style="font-size:24px">￥' . $rinfo ['amount'] . '</b><br>' . $rinfo ['amountCN'] . '</td>
			</tr></table>';
		
		$html .= '</div><div class="modal-footer"><a href="#" class="button btn-gray" data-dismiss="modal" aria-hidden="true">关闭</a></div></div></div>';
		
		echo json_encode ( array (
				'status' => 1,
				'html' => $html 
		) );
		
		die ();
	}
	
	/**
	 * 删除附件
	 */
	function ajaxRemEnclousur() {
		$key = $this->get_args ( 'key' ) ? $this->get_args ( 'key' ) : '';
		
		if (empty ( $key ))
			echo json_encode ( array (
					'status' => 2 
			) );
		Doo::loadModel ( 'enclosur' );
		$enclosur = new enclosur ();
		
		$enclosur->delEnclosurByEid ( $key );
		
		echo json_encode ( array (
				'status' => 1 
		) );
	}
	function remittance() {
		$year = $this->get_args ( 'year' ) ? $this->get_args ( 'year' ) : date ( 'Y' );
		$month = $this->get_args ( 'month' ) ? $this->get_args ( 'month' ) : "";
		
		Doo::loadModel ( 'receipt' );
		$receipt = new receipt ();
		Doo::loadModel ( 'staff' );
		$staff = new staff ();
		
		$dateCondition = " and Year(pastDate) =" . $year;
		if (! empty ( $month ))
			$dateCondition = " and Year(pastDate) =" . $year . " and Month(pastDate) = " . $month;
			
			// get Receipt By verifyID status 1
		$receiptList = $receipt->find ( array (
				'select' => 'sum(sum) as sum,staff,pastDate',
				'where' => ' status=1' . $dateCondition,
				'desc' => 'pastDate',
				'groupby' => 'staff,pastDate',
				'asArray' => true 
		) );
		$dateList = $receipt->find ( array (
				'select' => 'pastDate,verifyStaff',
				'where' => ' status=1' . $dateCondition,
				'desc' => 'pastDate',
				'groupby' => 'pastDate',
				'asArray' => true 
		) );
		$dataList = array ();
		foreach ( $dateList as $d => $a ) {
			$dataList [$a ['pastDate']] = array ();
			$daySum = 0;
			foreach ( $receiptList as $key => $value ) {
				if ($a ['pastDate'] == $value ['pastDate']) {
					$oderList = $receipt->find ( array (
							'select' => 'receiptOrder',
							'where' => ' status=1 and staff=' . $value ['staff'] . ' and pastDate=\'' . $a ['pastDate'] . '\'',
							'asArray' => true 
					) );
					$list = array ();
					$html = "";
					foreach ( $oderList as $v ) {
						array_push ( $list, $v ['receiptOrder'] );
						$html .= '<a class="fL" href="#comment" onclick=showOpinion("' . $v ['receiptOrder'] . '") data="" data-toggle="modal">&nbsp;' . $v ['receiptOrder'] . '、</a>';
					}
					$receiptList [$key] ['receiptOrder'] = $html;
					// $receiptList[$key]['receiptOrder']=implode(",", $list);
					
					$sinfo = $staff->getOne ( array (
							'select' => 'username ',
							'where' => ' sid=' . $value ['staff'],
							'asArray' => true 
					) );
					$receiptList [$key] ['username'] = $sinfo ['username'];
					$daySum += $value ['sum'];
					array_push ( $dataList [$a ['pastDate']], $receiptList [$key] );
				}
				$dataList [$a ['pastDate']] ['9999999'] = number_format ( $daySum, 2 );
				// $dataList[$a['pastDate']]['8888888']=json_decode($a['verifyStaff'],true);
			}
		}
		// print_r($dataList);
		$data ['dataList'] = $dataList;
		
		$mothHtml = "";
		for($i = 1; $i <= 12; $i ++) {
			if ($month == $i)
				$mothHtml .= '<option selected value="' . $i . '">' . $i . '月</option>';
			else
				$mothHtml .= '<option value="' . $i . '">' . $i . '月</option>';
		}
		$data ['year'] = $year;
		$data ['mothHtml'] = $mothHtml;
		$data ['memu'] = "receipt";
		$data ['staff'] = $this->staff;
		$data ['receiptMemu'] = 'approval';
		$data ['verifyId'] = $this->verifyId;
		$data ['executeId'] = $this->executeId;
		$this->render ( "/admin/saeaReportListPay", $data );
	}
	/**
	 * 金额调整，提高稳定性
	 * @return string
	 */
	function revocationAdjustment() {
		$sidKey = isset ( $this->params ['sidKey'] ) ? $this->params ['sidKey'] : '';
		$price = isset ( $this->params ['price'] ) && is_numeric ( $this->params ['price'] ) ? $this->params ['price'] : - 99999;
		$ridKey = isset ( $this->params ['ridKey'] ) ? $this->params ['ridKey'] : '';
		$reviseKey = isset ( $this->params ['reviseKey'] ) ? $this->params ['reviseKey'] : '';
		
		if ((! empty ( $sidKey )) && ($price != - 99999) && (! empty ( $ridKey ) && (! empty ( $reviseKey )))) {
			
			Doo::loadClass ( 'XDeode' );
			$XDeode = new XDeode ( 5 );
			Doo::loadModel ( 'receipt' );
			$receipt = new receipt ();
			
			$sid = $XDeode->decode ( $sidKey );
			$rid = $XDeode->decode ( $ridKey );
			$reviseKey = $XDeode->decode ( $reviseKey );
			if (! is_numeric ( $sid ) && ! is_numeric ( $rid ) && ! is_numeric ( $reviseKey ))
				die ( 'illegal request' );
			
			$receiptDetail = $receipt->getOne ( array (
					'where' => 'rid=' . $rid,
					'asArray' => true 
			) );
			
			if (empty ( $receiptDetail ) || empty ( $receiptDetail ['reviseDetail'] ))
				die ( 'illegal request' );
			
			$reviseDetail = json_decode ( $receiptDetail ['reviseDetail'], true );
			
			if (! isset ( $reviseDetail [$reviseKey] ))
				die ( 'illegal request' );
			if ($reviseDetail [$reviseKey] ['sid'] == $sid && $reviseDetail [$reviseKey] ['price'] == $price)
				unset ( $reviseDetail [$reviseKey] );
			
			$revisePrice = 0;
			foreach ( $reviseDetail as $key => $value ) {
				$revisePrice += $value ['price'];
			}
			
			$reviseDetailString = json_encode ( $reviseDetail );
			$receipt->reviseDetail = $reviseDetailString;
			$receipt->sum = $receiptDetail ['sum'] - $price;
			$receipt->revisePrice = $revisePrice;
			$receipt->update ( array (
					'where' => 'rid=' . $rid 
			) );
			return '/receiptburEdi/' . $rid;
		} else
			die ( 'illegal request2' );
	}
	function updateApprovalReceipt() {
		$opinion = $this->get_args ( 'opinion' ) ? $this->get_args ( 'opinion' ) : "";
		$status = $this->get_args ( 'status' ) && is_numeric ( $this->get_args ( 'status' ) ) ? $this->get_args ( 'status' ) : 0;
		$rid = $this->get_args ( 'rid' ) && is_numeric ( $this->get_args ( 'rid' ) ) ? $this->get_args ( 'rid' ) : 0;
		$Locate = $this->get_args ( 'Locate' ) && is_numeric ( $this->get_args ( 'Locate' ) ) ? $this->get_args ( 'Locate' ) : 0;
		$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 ();
			
			$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;
				}
			}
			
			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') {
					
					$vStaffString = json_decode ( $verifyDetail [0] [3] );
					
					foreach ( $vStaffString as $key => $value ) {
						$staffK = explode ( "_", $value );
						if ($staffK [0] != $this->staff [0] ['sid'])
							array_push ( $nowStaffList, $staffK [0] );
					}
					
					// print_r($verifyDetail);
					// die;
					if (! empty ( $nowStaffList )) {
						$nowStaff = implode ( ',', $nowStaffList );
						$verifyStaff = array (
								$this->staff [0] ['sid'] . "_R" => array (
										'date' => date ( 'Y-m-d' ),
										'opinion' => $opinion,
										'status' => $status,
										'nextStaff' => $verifyDetail [0] [0],
										'ROLE' => 1 
								) 
						);
					} else {
						$nowStaff = $verifyDetail [1] [0];
						$verifyStaff = array (
								$this->staff [0] ['sid'] . "_R" => array (
										'date' => date ( 'Y-m-d' ),
										'opinion' => $opinion,
										'status' => $status,
										'nextStaff' => $verifyDetail [1] [0] 
								) 
						);
					}
				} else {
					
					if ($verifyDetail [1] [1] == 'ROLE') {
						$vStaffString = json_decode ( $verifyDetail [1] [3] );
						// echo "dd";
						foreach ( $vStaffString as $key => $value ) {
							$staffK = explode ( "_", $value );
							array_push ( $nowStaffList, $staffK [0] );
						}
						$nowStaff = implode ( ',', $nowStaffList );
						$verifyStaff = array (
								$this->staff [0] ['sid'] => array (
										'date' => date ( 'Y-m-d' ),
										'opinion' => $opinion,
										'status' => $status,
										'nextStaff' => $verifyDetail [1] [0],
										'ROLE' => 1 
								) 
						);
					} else {
						$nowStaff = $verifyDetail [1] [0];
						$verifyStaff = array (
								$this->staff [0] ['sid'] => array (
										'date' => date ( 'Y-m-d' ),
										'opinion' => $opinion,
										'status' => $status,
										'nextStaff' => $verifyDetail [1] [0] 
								) 
						);
					}
				}
				
				if ($status == 3)
					$verifyStaff = array (
							'final' => $status,
							$this->staff [0] ['sid'] => array (
									'date' => date ( 'Y-m-d' ),
									'opinion' => $opinion,
									'status' => $status 
							) 
					);
				
				$vStaffString = json_encode ( $verifyStaff );
				$receipt->nowStaff = $nowStaff;
				$receipt->verifyStaff = $vStaffString;
			} else {
				$VS = end ( $verifyStaff );
				
				// 非角色审批
				if (! array_key_exists ( $this->staff [0] ['sid'], $verifyStaff ) && ! isset ( $VS ['ROLE'] )) {
					$nextStaff = 0;
					$roleSTF = false;
					foreach ( $verifyDetail as $key => $value ) {
						if ($value [0] == $this->staff [0] ['sid'] && $value [1] != 'ROLE') {
							if (isset ( $verifyDetail [$key + 1] )) {
								$nextStaff = $verifyDetail [$key + 1] [0];
								if ($verifyDetail [$key + 1] [1] == 'ROLE')
									$roleSTF = true;
							}
							break;
						}
					}
					
					if (! $roleSTF) {
						$nowStaff = $nextStaff;
						$verifyStaff [$this->staff [0] ['sid']] = array (
								'date' => date ( 'Y-m-d' ),
								'opinion' => $opinion,
								'status' => $status,
								'nextStaff' => $nextStaff 
						);
					} else {
						// 获取角色下的所有用户ID
						$nowStaffList = array ();
						foreach ( $verifyDetail as $vfk ) {
							if ($vfk [1] == 'ROLE') {
								$vStaffString = json_decode ( $vfk [3] );
								foreach ( $vStaffString as $key => $value ) {
									$staffK = explode ( "_", $value );
									array_push ( $nowStaffList, $staffK [0] );
								}
							}
						}
						
						$nowStaff = implode ( ',', $nowStaffList );
						$verifyStaff [$this->staff [0] ['sid']] = array (
								'date' => date ( 'Y-m-d' ),
								'opinion' => $opinion,
								'status' => $status,
								'nextStaff' => $nextStaff,
								'ROLE' => 0 
						);
					}
					
					if ($status == 3) {
						$verifyStaff ['final'] = $status;
						$verifyStaff [$this->staff [0] ['sid']] = array (
								'date' => date ( 'Y-m-d' ),
								'opinion' => $opinion,
								'status' => $status 
						);
					}
					$vStaffString = json_encode ( $verifyStaff );
					$receipt->nowStaff = $nowStaff;
					$receipt->verifyStaff = $vStaffString;
				}
				
				// 角色审批
				if (isset ( $VS ['ROLE'] )) {
					
					// 找出角色人 当前审批角色组
					$verifyJSStaff = array ();
					$nowStaffList2 = array ();
					foreach ( $verifyDetail as $key => $value ) {
						if ($value [1] == 'ROLE' && $value [0] == $VS ['nextStaff']) {
							$verifyJSStaff = json_decode ( $value [3] );
							foreach ( $verifyJSStaff as $m ) {
								$staffK = explode ( "_", $m );
								array_push ( $nowStaffList2, $staffK [0] );
							}
							// print_r($nowStaffList2);
						}
					}
					
					$RoleVerifyStaff = array ();
					foreach ( $verifyStaff as $key => $value ) {
						if (isset ( $value ['ROLE'] ) && $value ['ROLE'] == 1 && $VS ['nextStaff'] == $value ['nextStaff']) {
							foreach ( $nowStaffList2 as $m ) {
								if ($key == $m . "_R")
									$RoleVerifyStaff [$key] = $value;
							}
						}
					}
					
					// print_r($verifyStaff);
					// print_r($nowStaffList2);
					// print_r($RoleVerifyStaff);
					// if (!array_key_exists($this->staff[0]['sid'],$RoleVerifyStaff)){
					// print_r($verifyJSStaff);
					$jsCount = count ( $verifyJSStaff ) - 1; // echo $jsCount;die;
					if ($jsCount == count ( $RoleVerifyStaff )) { // 或者
					                                              // 下一个审批人ID
						
						$nextStaff = 0;
						$falg = false;
						foreach ( $verifyDetail as $key => $value ) {
							if ($value [0] == $VS ['nextStaff'] && $value [1] == 'ROLE') {
								
								if (isset ( $verifyDetail [$key + 1] ) && $verifyDetail [$key + 1] [1] == 'ROLE') {
									$falg = true;
									$vStaffString = json_decode ( $verifyDetail [$key + 1] [3] );
									$nowStaffList = array ();
									foreach ( $vStaffString as $v ) {
										$staffK = explode ( "_", $v );
										array_push ( $nowStaffList, $staffK [0] );
									}
									$nowStaff = implode ( ',', $nowStaffList );
									
									$nextStaff = $verifyDetail [$key + 1] [0];
								} elseif (isset ( $verifyDetail [$key + 1] )) {
									$nextStaff = $verifyDetail [$key + 1] [0];
									$nowStaff = $nextStaff;
								} else
									$nowStaff = '';
								break;
							}
						}
						
						if ($falg)
							$verifyStaff [$this->staff [0] ['sid'] . '_R'] = array (
									'date' => date ( 'Y-m-d' ),
									'opinion' => $opinion,
									'status' => $status,
									'nextStaff' => $nextStaff,
									'ROLE' => 1 
							);
						else
							$verifyStaff [$this->staff [0] ['sid'] . '_R'] = array (
									'date' => date ( 'Y-m-d' ),
									'opinion' => $opinion,
									'status' => $status,
									'nextStaff' => $nextStaff 
							);
						
						// print_r($verifyStaff);
						// echo $nowStaff;die;
					} else { // 进入下一个角色或者审批人
					         
						// echo str_replace($this->staff[0]['sid'], '', $receiptDetail['nowStaff']);
					         //
						$nowStaff = str_replace ( $this->staff [0] ['sid'], '', $receiptDetail ['nowStaff'] );
						
						$verifyStaff [$this->staff [0] ['sid'] . '_R'] = array (
								'date' => date ( 'Y-m-d' ),
								'opinion' => $opinion,
								'status' => $status,
								'nextStaff' => $VS ['nextStaff'],
								'ROLE' => 1 
						);
						
						// print_r($verifyStaff);
						// die;
					}
					
					if ($status == 3) {
						$verifyStaff ['final'] = $status;
						$verifyStaff [$this->staff [0] ['sid']] = array (
								'date' => date ( 'Y-m-d' ),
								'opinion' => $opinion,
								'status' => $status 
						);
					}
					$vStaffString = json_encode ( $verifyStaff );
					$receipt->verifyStaff = $vStaffString;
					$receipt->nowStaff = $nowStaff;
					
					// die;
					// }
					// print_r($verifyStaff);
					// die;
				}
				// print_r($verifyStaff);die;
			}
			
			// print_r($verifyDetail);
			
			$roleKey = 0;
			$roleId = 0;
			$verifyDetailCopy = array ();
			foreach ( $verifyDetail as $k => $v ) {
				if ($v [1] == 'ROLE') {
					$roleId = $v [0];
					$roleVerify = json_decode ( $v [3], true );
					$roleKey = $k;
					$roleArray = array ();
					foreach ( $roleVerify as $o => $p ) {
						$staffID = explode ( '_', $p );
						$exp = array (
								0 => $staffID [0],
								1 => $staffID [1] 
						);
						array_push ( $roleArray, $exp );
					}
					$verifyDetailCopy [$v [0]] = $roleArray;
				}
			}
			// print_r($verifyDetail);
			foreach ( $verifyDetailCopy as $k => $v ) {
				foreach ( $verifyDetail as $m => $n ) {
					if ($n [0] == $k) {
						array_splice ( $verifyDetail, $m, 1, $v );
					}
				}
			}
			
			// die;
			// if (!empty($roleArray))
			// array_splice($verifyDetail,$roleKey,1,$roleArray);
			
			// echo $roleId;
			// print_r($verifyStaff);
			// print_r($verifyDetail);
			// die;
			Doo::loadModel ( "receiptLog" );
			$receiptLog = new receiptLog ();
			// 审批日志
			if (! isset ( $verifyStaff ['final'] )) {
				
				if (! empty ( $roleId )) {
					Doo::loadModel ( "role" );
					$role = new role ();
					$roleInfo = $role->getOne ( array (
							'where' => 'rid=' . $roleId,
							'asArray' => true 
					) );
					
					$receiptLog->rolename = $roleInfo ['name'];
				}
				
				$receiptLog->username = $this->staff [0] ['username'];
				$receiptLog->uid = $this->staff [0] ['sid'];
				$receiptLog->date = date ( "Y-m-d" );
				$receiptLog->opinion = $opinion;
				$receiptLog->img = $this->staff [0] ['avatar'];
				$receiptLog->status = 1;
				$receiptLog->rid = $rid;
				$receiptLog->insert ();
			}
			
			if (isset ( $verifyStaff ['final'] )) { // rDetail
				$receipt->verifyBreakup = $verifyString;
				$receipt->status = 3;
				$receiptDetailObj->status = 3;
				$receiptDetailObj->update ( array (
						'where' => 'rid=' . $rid 
				) );
				
				if (! empty ( $roleId )) {
					Doo::loadModel ( "role" );
					$role = new role ();
					$roleInfo = $role->getOne ( array (
							'where' => 'rid=' . $roleId,
							'asArray' => true 
					) );
					
					$receiptLog->rolename = $roleInfo ['name'];
				}
				
				$receiptLog->username = $this->staff [0] ['username'];
				$receiptLog->uid = $this->staff [0] ['sid'];
				$receiptLog->date = date ( "Y-m-d" );
				$receiptLog->opinion = $opinion;
				$receiptLog->img = $this->staff [0] ['avatar'];
				$receiptLog->status = 3;
				$receiptLog->rid = $rid;
				$receiptLog->insert ();
				
				// 微信企业号通知
				$this->setWXMsg ( $rid, 3 );
			} elseif (count ( $verifyStaff ) == count ( $verifyDetail )) { // 要修改 角色的数量
				$receipt->status = 1;
				$reviseSum = 0;
				$receipt->verifyBreakup = $verifyString;
				if (! empty ( $receiptDetail ['reviseDetail'] )) { // statistics item rDetail
					$reviseDetail = json_decode ( $receiptDetail ['reviseDetail'], true );
					
					foreach ( $reviseDetail as $key => $value ) {
						$receiptDetailObj = new receiptDetail ();
						$receiptDetailObj->staff = $receiptDetail ['staff']; // $this->staff[0]['sid'];
						$receiptDetailObj->item = $value ['description'];
						$receiptDetailObj->itemCategory = "报销金额调整";
						$receiptDetailObj->price = $value ['price'];
						$receiptDetailObj->date = $receiptDetail ['date'];
						$receiptDetailObj->cid = $this->staff [0] ['cid'];
						$receiptDetailObj->rid = $rid;
						$receiptDetailObj->status = 1;
						$receiptDetailObj->insert ();
						$reviseSum += $value ['price'];
					}
					
					$itemStatistics = new itemStatistics ();
					$itemStatistics->cid = $receiptDetail ['cid']; // $this->staff[0]['cid'];
					$itemStatistics->staff = $receiptDetail ['staff']; // $this->staff[0]['sid'];
					$itemStatistics->price = $reviseSum;
					$itemStatistics->itemCategory = "报销金额调整";
					$itemStatistics->date = $receiptDetail ['date'];
					$itemStatistics->insert ();
				}
				$receiptDetailObj = new receiptDetail ();
				$receiptDetailObj->status = 1;
				$receiptDetailObj->pastDate = date ( "Y-m-d" );
				$receiptDetailObj->update ( array (
						'where' => 'rid=' . $rid 
				) );
				
				$dateArray = explode ( "-", $receiptDetail ['date'] );
				$dateCondition = " and Year(date) =" . $dateArray [0] . " and Month(date) = " . $dateArray [1];
				$stat = $statistics->getOne ( array (
						'where' => 'staff=' . $receiptDetail ['staff'] . $dateCondition,
						'asArray' => true 
				) );
				if (empty ( $stat )) {
					$statistics->date = $receiptDetail ['date'];
					$statistics->cid = $receiptDetail ['cid']; // $this->staff[0]['cid'];
					$statistics->staff = $receiptDetail ['staff']; // $this->staff[0]['sid'];
					$statistics->agPrice = $receiptDetail ['sum'];
					$statistics->rePrice = $reviseSum;
					$statistics->insert ();
				} else {
					$statistics->agPrice = $stat ['agPrice'] + $receiptDetail ['sum'];
					$statistics->rePrice = $stat ['rePrice'] + $reviseSum;
					$statistics->update ( array (
							'where' => 'sid=' . $stat ['sid'] 
					) );
				}
				
				$dateArray = explode ( "-", $receiptDetail ['date'] );
				$dateCondition = " and Year(date) =" . $dateArray [0] . " and Month(date) = " . $dateArray [1];
				$accountItem = json_decode ( $receiptDetail ['accountItem'], true );
				foreach ( $accountItem ['cSum'] as $key => $value ) {
					if ($key == "agencySum") {
						$iStatistics = $itemStatistics->getOne ( array (
								'where' => 'staff=' . $receiptDetail ['staff'] . ' and itemCategory="' . $this->AGENCY . '"' . $dateCondition,
								'asArray' => true 
						) );
						if (empty ( $iStatistics )) {
							$itemStatistics->cid = $receiptDetail ['cid'];
							;
							$itemStatistics->staff = $receiptDetail ['staff'];
							$itemStatistics->price = $value;
							$itemStatistics->itemCategory = $this->AGENCY;
							$itemStatistics->date = $receiptDetail ['date'];
							$itemStatistics->insert ();
						} else {
							if (! empty ( $value )) {
								$itemStatistics->price = $value + $iStatistics ['price'];
								$itemStatistics->update ( array (
										'where' => 'sid=' . $iStatistics ['sid'] 
								) );
							}
						}
					} elseif ($key == "travelSum") {
						$iStatistics = $itemStatistics->getOne ( array (
								'where' => 'staff=' . $receiptDetail ['staff'] . ' and itemCategory="' . $this->TRAVEL . '"' . $dateCondition,
								'asArray' => true 
						) );
						if (empty ( $iStatistics )) {
							$itemStatistics->cid = $receiptDetail ['cid'];
							$itemStatistics->staff = $receiptDetail ['staff'];
							$itemStatistics->price = $value;
							$itemStatistics->itemCategory = $this->TRAVEL;
							$itemStatistics->date = $receiptDetail ['date'];
							$itemStatistics->insert ();
						} else {
							if (! empty ( $value )) {
								$itemStatistics->price = $value + $iStatistics ['price'];
								$itemStatistics->update ( array (
										'where' => 'sid=' . $iStatistics ['sid'] 
								) );
							}
						}
					} elseif ($key == "trainSum") {
						$iStatistics = $itemStatistics->getOne ( array (
								'where' => 'staff=' . $receiptDetail ['staff'] . ' and itemCategory="' . $this->TRAIN . '"' . $dateCondition,
								'asArray' => true 
						) );
						if (empty ( $iStatistics )) {
							$itemStatistics->cid = $receiptDetail ['cid'];
							$itemStatistics->staff = $receiptDetail ['staff'];
							$itemStatistics->price = $value;
							$itemStatistics->itemCategory = $this->TRAIN;
							$itemStatistics->date = $receiptDetail ['date'];
							$itemStatistics->insert ();
						} else {
							if (! empty ( $value )) {
								$itemStatistics->price = $value + $iStatistics ['price'];
								$itemStatistics->update ( array (
										'where' => 'sid=' . $iStatistics ['sid'] 
								) );
							}
						}
					} elseif ($key == "otherSum") {
						$iStatistics = $itemStatistics->getOne ( array (
								'where' => 'staff=' . $receiptDetail ['staff'] . ' and itemCategory="' . $this->OTHER . '"' . $dateCondition,
								'asArray' => true 
						) );
						if (empty ( $iStatistics )) {
							$itemStatistics->cid = $receiptDetail ['cid'];
							$itemStatistics->staff = $receiptDetail ['staff'];
							$itemStatistics->price = $value;
							$itemStatistics->itemCategory = $this->OTHER;
							$itemStatistics->date = $receiptDetail ['date'];
							$itemStatistics->insert ();
						} else {
							if (! empty ( $value )) {
								$itemStatistics->price = $value + $iStatistics ['price'];
								$itemStatistics->update ( array (
										'where' => 'sid=' . $iStatistics ['sid'] 
								) );
							}
						}
					}
				}
				$receipt->pastDate = date ( "Y-m-d" );
				
				// 微信企业号通知
				$this->setWXMsg ( $rid, 1 );
			}
			//是否有流水
			Doo::loadModel ( 'wasteBook' );
			$wasteBook = new wasteBook ();
			$accountType=3;
			if ($receiptDetail['Rtype']==1){
				$accountType=2;
			}elseif($receiptDetail['Rtype']==2){
				$accountType=4;
			}
			$wbDetail = $wasteBook->getWateBookByAD ( $accountType, $rid );
			if (empty($wbDetail)){
				$rsum=$receiptDetail['sum']-$receiptDetail['loanSum'];
				$receipt->amount = $rsum;//$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 . ') and Rtype!=3',
					'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 expensesRetreats() {
		$rid = isset ( $this->params ['rid'] ) && is_numeric ( $this->params ['rid'] ) ? $this->params ['rid'] : 0;
		
		if (! empty ( $rid )) {
			// 操作记录
			Doo::loadModel ( "receipt" );
			$receipt = new receipt ();
			Doo::loadModel ( "receiptLog" );
			$receiptLog = new receiptLog ();
			Doo::loadModel ( "verify" );
			$verify = new verify ();
			
			$receiptInfo = $receipt->getOne ( array (
					'where' => 'rid=' . $rid,
					'asArray' => true 
			) );
			$vr = $verify->getOne ( array (
					'where' => 'vid=' . $receiptInfo ['verify'],
					'asArray' => true 
			) );
			
			$jd = json_decode ( $vr ['staff'] );
			$roleId = 0;
			
			foreach ( $jd as $key => $value ) {
				if ($value [1] == 'ROLE') {
					$pos = strpos ( $value [3], $this->staff [0] ['sid'] );
					if ($pos !== false) {
						$roleId = $value [0];
					}
				}
			}
			
			// 审批日志
			// echo $roleId;die;
			
			if (! empty ( $roleId )) {
				Doo::loadModel ( "role" );
				$role = new role ();
				$roleInfo = $role->getOne ( array (
						'where' => 'rid=' . $roleId,
						'asArray' => true 
				) );
				
				$receiptLog->rolename = $roleInfo ['name'];
			}
			
			$receiptLog->username = $this->staff [0] ['username'];
			$receiptLog->uid = $this->staff [0] ['sid'];
			$receiptLog->date = date ( "Y-m-d" );
			$receiptLog->opinion = '撤回';
			$receiptLog->img = $this->staff [0] ['avatar'];
			$receiptLog->status = 4;
			$receiptLog->rid = $rid;
			$receiptLog->insert ();
			
			$receipt->status = 4;
			$receipt->update ( array (
					'where' => 'rid=' . $rid 
			) );
			
			// 微信企业号通知
			$this->setWXMsg ( $rid, 2 );
		}
		
		// echo "ddd";
		return '/approvalExpenses/pendApproval';
	}
	function updateCheReceipt() {
		$rid = $this->get_args ( 'rid' ) && is_numeric ( $this->get_args ( 'rid' ) ) ? $this->get_args ( 'rid' ) : 0;
		$opinion = $this->get_args ( 'opinion' ) ? $this->get_args ( 'opinion' ) : "";
		
		// $rid=isset($this->params['rid'])&&is_numeric($this->params['rid'])?$this->params['rid']:0;
		
		if (! empty ( $rid )) {
			// 操作记录
			Doo::loadModel ( "receipt" );
			$receipt = new receipt ();
			Doo::loadModel ( "receiptLog" );
			$receiptLog = new receiptLog ();
			Doo::loadModel ( "verify" );
			$verify = new verify ();
			
			$receiptInfo = $receipt->getOne ( array (
					'where' => 'rid=' . $rid . ' and status=2',
					'asArray' => true 
			) );
			
			if (empty ( $receiptInfo )) {
				echo json_encode ( array (
						'status' => 2 
				) );
				die ();
			}
			
			$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 = $opinion;
			$receiptLog->img = $this->staff [0] ['avatar'];
			$receiptLog->status = 4;
			$receiptLog->rid = $rid;
			$receiptLog->insert ();
			
			$receipt->status = 4;
			$receipt->update ( array (
					'where' => 'rid=' . $rid 
			) );
			
			// 微信企业号通知
			$this->setWXMsg ( $rid, 2 );
			
			echo json_encode ( array (
					'status' => 1 
			) );
			
			// Header("HTTP/1.1 303 See Other");
			// Header("Location: /approvalExpenses/pendApproval");
			
			die ();
		}
		
		echo json_encode ( array (
				'status' => 2 
		) );
		die ();
		// echo "ddd";
		// return '/saeaBorad';
	}
	function revisePrice() {
		$description = $this->get_args ( 'description' ) ? $this->get_args ( 'description' ) : "";
		$price = $this->get_args ( 'price' ) && is_numeric ( $this->get_args ( 'price' ) ) ? $this->get_args ( 'price' ) : 0;
		$rid = $this->get_args ( 'rid' ) && is_numeric ( $this->get_args ( 'rid' ) ) ? $this->get_args ( 'rid' ) : 0;
		
		// echo $price;die;
		
		if (! empty ( $rid )) {
			Doo::loadModel ( "receipt" );
			$receipt = new receipt ();
			
			$receiptDetail = $receipt->getOne ( array (
					'where' => 'rid=' . $rid . ' and status=2 ',
					'asArray' => true 
			) );
			if (empty ( $receiptDetail ))
				die ( 'illegal request' );
			
			$reviseDetail = array ();
			if (empty ( $receiptDetail ['reviseDetail'] )) {
				array_push ( $reviseDetail, array (
						'sid' => $this->staff [0] ['sid'],
						'name' => $this->staff [0] ['username'],
						'description' => $description,
						'price' => $price 
				) );
				$reviseDetailString = json_encode ( $reviseDetail );
				$receipt->reviseDetail = $reviseDetailString;
				$receipt->revisePrice = $price;
				$receipt->sum = bcadd ( $receiptDetail ['sum'], $price, 2 );
			} else {
				$reviseDetail = json_decode ( $receiptDetail ['reviseDetail'], true );
				array_push ( $reviseDetail, array (
						'sid' => $this->staff [0] ['sid'],
						'name' => $this->staff [0] ['username'],
						'description' => $description,
						'price' => $price 
				) );
				$reviseDetailString = json_encode ( $reviseDetail );
				$receipt->reviseDetail = $reviseDetailString;
				$receipt->revisePrice = round ( $price, 2 ) + round ( $receiptDetail ['revisePrice'], 2 );
				$receipt->sum = bcadd ( $receiptDetail ['sum'], $price, 2 );
			}
			$receipt->update ( array (
					'where' => 'rid=' . $rid 
			) );
			
			if ($receiptDetail ['Rtype'] == 1) {
				if ($receiptDetail ['isBK'] == 1) {
					return '/receiptburEdi/' . $receiptDetail ['rid'];
				}
			} elseif ($receiptDetail ['Rtype'] == 2) {
			} else {
				return '/receiptburEdi/' . $receiptDetail ['rid'];
			}
		}
		die ( 'illegal request' );
	}
	function personalCollect() {
		$year = $this->get_args ( 'year' ) ? $this->get_args ( 'year' ) : date ( "Y" );
		
		$path = SITE_PATH . $this->PERSONALCOLLECTCACHEPATH . "personalCollect_" . $year . ".htmls";
		$this->showCache ( $path );
		
		Doo::loadModel ( "receiptDetail" );
		Doo::loadModel ( "itemStatistics" );
		Doo::loadModel ( 'statistics' );
		$statistics = new statistics ();
		$itemStatistics = new itemStatistics ();
		$receiptDetail = new receiptDetail ();
		
		$receiptCollectList = $receiptDetail->find ( array (
				'select' => 'staff,sum(price) as price,itemCategory,Month(date) as month',
				'where' => 'staff=' . $this->staff [0] ['sid'] . " and status=1 and Year(date)=" . $year,
				'groupby' => 'itemCategory,Month(date)',
				'asArray' => true 
		) );
		$data ['itemStatisticsList'] = $itemStatistics->find ( array (
				'where' => 'staff=' . $this->staff [0] ['sid'],
				'asArray' => true 
		) );
		
		// create collect html
		$collectArray = array (
				'日常相关费用' => array (),
				'差旅相关费用' => array (),
				'培训班费用' => array (),
				'其他' => array () 
		);
		$adjustment = array ();
		
		$collectHtml = $this->collectHtml ( $receiptCollectList, '日常相关费用' );
		array_push ( $collectArray ['日常相关费用'], $collectHtml );
		
		$collectHtml = $this->collectHtml ( $receiptCollectList, '差旅相关费用' );
		array_push ( $collectArray ['差旅相关费用'], $collectHtml );
		
		$collectHtml = $this->collectHtml ( $receiptCollectList, '培训班费用' );
		array_push ( $collectArray ['培训班费用'], $collectHtml );
		
		$collectHtml = $this->collectHtml ( $receiptCollectList, '其他' );
		array_push ( $collectArray ['其他'], $collectHtml );
		
		$data ['collectArray'] = $collectArray;
		// statistics html
		$stList = $statistics->statisticsByYear ( $year, $this->staff [0] ['sid'] );
		if (empty ( $stList ))
			$stList = array (
					'rePrice' => 0,
					'agPrice' => 0 
			);
		$data ['stList'] = array (
				'rePrice' => $stList ['rePrice'],
				'agPrice' => $stList ['agPrice'],
				'skPrice' => ($stList ['rePrice'] - $stList ['agPrice']) 
		);
		
		// Adjustment price html
		$collectHtml = $this->collectHtml ( $receiptCollectList, '报销金额调整' );
		array_push ( $adjustment, $collectHtml );
		$data ['adjustment'] = $adjustment;
		
		// total price html
		$collectHtml = "";
		$total = 0;
		for($i = 1; $i <= 12; $i ++) {
			$sumPrice = 0;
			foreach ( $receiptCollectList as $key => $value ) {
				if ($value ['month'] == $i) {
					$sumPrice += $value ['price'];
				}
			}
			if ($sumPrice == 0)
				$collectHtml .= '<td class="taR">-</td>';
			else
				$collectHtml .= '<td class="taR">￥' . $sumPrice . '</td>';
			$total += $sumPrice;
		}
		$collectHtml .= '<td class="taR colGreen">￥' . $total . '</td>';
		$data ['totalPrice'] = $collectHtml;
		
		$dateHtml = "";
		$now = date ( "Y" );
		for($YEARD = 2050; $YEARD >= 2004; $YEARD --) {
			
			if ($YEARD <= $now) {
				$dateHtml .= '<option ';
				if ($year == $YEARD) {
					$dateHtml .= 'selected ';
				}
				$dateHtml .= 'value="' . $YEARD . '">' . $YEARD . '</option>';
			}
		}
		
		$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 .= '<td class="taR">￥' . $v ['price'] . '</td>';
						$falg = false;
						break;
					}
				}
				if ($falg)
					$html .= '<td class="taR">-</td>';
			}
			$html .= '<td class="taR colGreen"><b>￥' . $asum . '</b></td>';
			$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 .= '<td class="taR">-</td>';
			else
				$collectHtml .= '<td class="taR">￥' . $sumPrice . '</td>';
			$total += $sumPrice;
		}
		$collectHtml .= '<td class="taR colGreen">￥' . $total . '</td>';
		
		// 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 .= '<option ';
				if ($year == $YEARD) {
					$dateHtml .= 'selected ';
				}
				$dateHtml .= 'value="' . $YEARD . '">' . $YEARD . '</option>';
			}
		}
		
		$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 .= '<td class="taR">￥' . $v ['price'] . '</td>';
						$falg = false;
						break;
					}
				}
				if ($falg)
					$html .= '<td class="taR">-</td>';
			}
			$html .= '<td class="taR colGreen"><b>￥' . $asum . '</b></td>';
			$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 .= '<td class="taR">-</td>';
			else
				$collectHtml .= '<td class="taR">￥' . $sumPrice . '</td>';
			$total += $sumPrice;
		}
		$collectHtml .= '<td class="taR colGreen">￥' . $total . '</td>';
		$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 .= '<option ';
				if ($year == $YEARD) {
					$dateHtml .= 'selected ';
				}
				$dateHtml .= 'value="' . $YEARD . '">' . $YEARD . '</option>';
			}
		}
		
		$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 .= '<td class="taR">￥' . $v ['price'] . '</td>';
						$falg = false;
						break;
					}
				}
				if ($falg)
					$html .= '<td class="taR">-</td>';
			}
			$html .= '<td class="taR colGreen"><b>￥' . $asum . '</b></td>';
			$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(),
				'其他' => 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, '其他', '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 .= '<td class="taR">-</td>';
			else
				$collectHtml .= '<td class="taR">￥' . $sumPrice . '</td>';
			$total += $sumPrice;
		}
		$collectHtml .= '<td class="taR colGreen">￥' . $total . '</td>';
		
		// 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" );
		$nature = $this->get_args ( 'nature' ) ? $this->get_args ( 'nature' ) : 'ONJOB';//
		
		$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 );
		
		$naturecon='';
		if ($nature=='ONJOB'){
			$naturecon=' and (nature!=4 )';
		}elseif($nature=='LEAVEJOB'){
			$naturecon=' and (nature=4 )';
		}else{
			die ( 'illegal request--nature' );
		}
			
		
		// 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" '.$naturecon,
				'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 . ') '.$naturecon,
				'groupby' => 'cid',
				'asArray' => true 
		) );
		// print_r($itemStatisticsList);die;
		// ceatre companyCollectHtml
		foreach ( $categoryList as $vlu ) {
			$count = $vlu ['count'] + 1;
			$html = '<th rowspan="' . $count . '">' . $vlu ['category'] . '</th>';
			$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 .= '<td><a href="/staffCollectDetail/' . $value ['username'] . '">' . $value ['username'] . '</a></td>';
					$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 .= '<td class="taR">￥' . $v ['price'] . '</td>';
								$falg = false;
								break;
							}
						}
						if ($falg)
							$html .= '<td class="taR">-</td>';
					}
					$m13 += $asum;
					$html .= '<td class="taR colGreen"><b>￥' . $asum . '</b></td>';
					$collectHtml [$value ['username'] . '_' . $value ['sid']] = array (
							'html' => $html,
							'sid' => $value ['sid'] 
					);
					$html = "";
				}
			}
			$hl = '<th class="taR">小计</th><td class="taR">￥' . $m1 . '</td><td class="taR">￥' . $m2 . '</td><td class="taR">￥' . $m3 . '</td><td class="taR">￥' . $m4 . '</td><td class="taR">￥' . $m5 . '</td>
				<td class="taR">￥' . $m6 . '</td><td class="taR">￥' . $m7 . '</td><td class="taR">￥' . $m8 . '</td><td class="taR">￥' . $m9 . '</td><td class="taR">￥' . $m10 . '</td><td class="taR">￥' . $m11 . '</td>
				<td class="taR">￥' . $m12 . '</td><td class="taR">￥' . $m13 . '</td>';
			$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 .= '<td class="taR">-</td>';
			else
				$collectHtml .= '<td class="taR">￥' . $sumPrice . '</td>';
			$total += $sumPrice;
		}
		$collectHtml .= '<td class="taR colGreen">￥' . $total . '</td>';
		$data ['companyTotalHtml'] = $collectHtml;
		$data ['total'] = $total;
		
		$data ['nature'] =$nature;
		$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 .= '<td class="taR">-</td>';
								$falg = false;
								break;
							} else {
								$staffSumPrice += $a ['price'];
								$html .= '<td class="taR">￥' . $a ['price'] . '</td>';
								$falg = false;
								break;
							}
						}
					}
					if ($falg) {
						$html .= '<td class="taR">-</td>';
						$falg = true;
					}
					
					$falg = true;
					foreach ( $itemStatisticsList as $a ) {
						if ($v ['sid'] == $a ['staff'] && $a ['itemCategory'] == "差旅相关费用") {
							if (empty ( $a ['price'] )) {
								$html .= '<td class="taR">-</td>';
								$falg = false;
								break;
							} else {
								$staffSumPrice += $a ['price'];
								$html .= '<td class="taR">￥' . $a ['price'] . '</td>';
								$falg = false;
								break;
							}
						}
					}
					if ($falg) {
						$html .= '<td class="taR">-</td>';
						$falg = true;
					}
					
					$falg = true;
					foreach ( $itemStatisticsList as $a ) {
						if ($v ['sid'] == $a ['staff'] && $a ['itemCategory'] == "培训班费用") {
							if (empty ( $a ['price'] )) {
								$html .= '<td class="taR">-</td>';
								$falg = false;
								break;
							} else {
								$staffSumPrice += $a ['price'];
								$html .= '<td class="taR">￥' . $a ['price'] . '</td>';
								$falg = false;
								break;
							}
						}
					}
					if ($falg) {
						$html .= '<td class="taR">-</td>';
						$falg = true;
					}
					
					$falg = true;
					foreach ( $itemStatisticsList as $a ) {
						if ($v ['sid'] == $a ['staff'] && $a ['itemCategory'] == "其他") {
							if (! empty ( $a ['price'] )) {
								$staffSumPrice += $a ['price'];
								$html .= '<td class="taR">￥' . $a ['price'] . '</td>';
								$falg = false;
								break;
							} else {
								$html .= '<td class="taR">-</td>';
								$falg = false;
								break;
							}
						}
					}
					if ($falg) {
						$html .= '<td class="taR">-</td>';
						$falg = true;
					}
					
					$falg = true;
					foreach ( $itemStatisticsList as $a ) {
						if ($v ['sid'] == $a ['staff'] && $a ['itemCategory'] == "报销金额调整") {
							if (! empty ( $a ['price'] )) {
								$staffSumPrice += $a ['price'];
								$html .= '<td class="taR">￥' . $a ['price'] . '</td>';
								$falg = false;
								break;
							} else {
								$html .= '<td class="taR">-</td>';
								$falg = false;
								break;
							}
						}
					}
					if ($falg) {
						$html .= '<td class="taR">-</td>';
						$falg = true;
					}
					
					$html .= '<td class="colGreen taR">￥' . $staffSumPrice . '</td>';
					$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 .= '<td class="colGreen taR">-</td>';
						$cateFalg = false;
						break;
					} else {
						$catePrice += $l ['price'];
						$cateHtml .= '<td class="colGreen taR">￥' . $l ['price'] . '</td>';
						$cateFalg = false;
						break;
					}
				}
			}
			if ($cateFalg) {
				$cateHtml .= '<td class="colGreen taR">-</td>';
				$cateFalg = true;
			}
			
			$cateFalg = true;
			foreach ( $itemCategoryList as $l ) {
				if ($value ['cid'] == $l ['cid'] && $l ['itemCategory'] == "差旅相关费用") {
					if (empty ( $l ['price'] )) {
						$cateHtml .= '<td class="colGreen taR">-</td>';
						$cateFalg = false;
						break;
					} else {
						$catePrice += $l ['price'];
						$cateHtml .= '<td class="colGreen taR">￥' . $l ['price'] . '</td>';
						$cateFalg = false;
						break;
					}
				}
			}
			if ($cateFalg) {
				$cateHtml .= '<td class="colGreen taR">-</td>';
				$cateFalg = true;
			}
			
			$cateFalg = true;
			foreach ( $itemCategoryList as $l ) {
				if ($value ['cid'] == $l ['cid'] && $l ['itemCategory'] == "培训班费用") {
					if (empty ( $l ['price'] )) {
						$cateHtml .= '<td class="colGreen taR">-</td>';
						$cateFalg = false;
						break;
					} else {
						$catePrice += $l ['price'];
						$cateHtml .= '<td class="colGreen taR">￥' . $l ['price'] . '</td>';
						$cateFalg = false;
						break;
					}
				}
			}
			if ($cateFalg) {
				$cateHtml .= '<td class="colGreen taR">-</td>';
				$cateFalg = true;
			}
			
			$cateFalg = true;
			foreach ( $itemCategoryList as $l ) {
				if ($value ['cid'] == $l ['cid'] && $l ['itemCategory'] == "其他") {
					if (empty ( $l ['price'] )) {
						$cateHtml .= '<td class="colGreen taR">-</td>';
						$cateFalg = false;
						break;
					} else {
						$catePrice += $l ['price'];
						$cateHtml .= '<td class="colGreen taR">￥' . $l ['price'] . '</td>';
						$cateFalg = false;
						break;
					}
				}
			}
			if ($cateFalg) {
				$cateHtml .= '<td class="colGreen taR">-</td>';
				$cateFalg = true;
			}
			
			$cateFalg = true;
			foreach ( $itemCategoryList as $l ) {
				if ($value ['cid'] == $l ['cid'] && $l ['itemCategory'] == "报销金额调整") {
					if (empty ( $l ['price'] )) {
						$cateHtml .= '<td class="colGreen taR">-</td>';
						$cateFalg = false;
						break;
					} else {
						$catePrice += $l ['price'];
						$cateHtml .= '<td class="colGreen taR">￥' . $l ['price'] . '</td>';
						$cateFalg = false;
						break;
					}
				}
			}
			if ($cateFalg) {
				$cateHtml .= '<td class="colGreen taR">-</td>';
				$cateFalg = true;
			}
			
			$cateHtml .= '<td class="colGreen taR">￥' . $catePrice . '</td>';
			$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 .= '<option selected value="' . $i . '">' . $i . '</option>';
			else
				$monthHtml .= '<option value="' . $i . '">' . $i . '</option>';
		}
		
		$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 ( "execute" );
		$execute = new execute ();
		if (! $execute->isPaymentsShow ( $this->staff [0] ['sid'] )) {
			die ( 'illegal request' );
		}
		
		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 
					);
				}
			}
			
			if (($abDetail ['expenditureType'] == 4 || $abDetail ['expenditureType'] == 6) && $abDetail ['expensesType'] == 2) {
				if ($abDetail ['expenditureMsg'] == '公司固定')
					$accountType = 9;
				elseif ($abDetail ['expenditureMsg'] == '公司活期')
					$accountType = 10;
			}
			if (($abDetail ['accountType'] == 7 || $abDetail ['accountType'] == 9) && $abDetail ['expensesType'] == 1) {
				if ($abDetail ['accountMsg'] == '公司固定')
					$accountType = 9;
				elseif ($abDetail ['accountMsg'] == '公司活期')
					$accountType = 10;
			}
			
			if ($abDetail ['accountMsg'] == '活期理财收益') {
				$accountType = 10;
			}
			
			$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() {
		Doo::loadModel ( "execute" );
		$execute = new execute ();
		if (! $execute->isPaymentsShow ( $this->staff [0] ['sid'] )) {
			die ( 'illegal request' );
		}
		
		$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 = '<tr><th colspan="2">截至上月余额</th>';
		
		$inComeHtml = '<tr><th colspan="2">收入</th>';
		$payHtml = '<tr class="colRed"><th colspan="2">支出</th>';
		$BalanceHtml = '<tr><th colspan="2">余额</th>';
		$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 .= '<td class="taR">' . $value ['accountPriceShow'] . '</td>';
					$inSum += $value ['accountPrice'];
					$showInSum += $value ['accountPriceShow'];
					$inComeA = $value ['accountPrice'];
					break;
				}
			}
			if ($falg)
				$inComeHtml .= '<td class="taR">-</td>';
			
			$payFalg = true;
			foreach ( $pay as $key => $value ) {
				if ($value ['month'] == $i) {
					$payFalg = false;
					$payHtml .= '<td class="taR">' . $value ['accountPriceShow'] . '</td>';
					$paySum += $value ['accountPrice'];
					$showPaySum += $value ['accountPriceShow'];
					$payB = $value ['accountPrice'];
					break;
				}
			}
			if ($payFalg)
				$payHtml .= '<td class="taR">-</td>';
			
			if (empty ( $balanceC ) || $limitMonth < $i)
				$lastBalanceHtml .= '<td class="taR">-</td>';
			else
				$lastBalanceHtml .= '<td class="taR">' . $balanceC . '</td>';
			
			$balanceC = $balanceC + $inComeA + $payB;
			$balanceSum += $balanceC;
			if (empty ( $balanceC ) || $limitMonth < $i)
				$BalanceHtml .= '<td class="taR">-</td>';
			else
				$BalanceHtml .= '<td class="taR">' . $balanceC . '</td>';
			
			// 余额统计
		}
		$inComeHtml .= '<td class="taR colGreen">￥' . $showInSum . '</td></tr>';
		$data ['inComeHtml'] = $inComeHtml;
		$payHtml .= '<td class="taR ">￥' . $showPaySum . '</td></tr>';
		$data ['payBalanceHtml'] = $payHtml;
		
		$BalanceHtml .= '<td class="taR ">￥' . $balanceC . '</td></tr>';
		$data ['BalanceHtml'] = $BalanceHtml;
		
		$lastBalanceHtml .= '<td class="taR ">' . $balanceC . '</td></tr>';
		$data ['lastBalanceHtml'] = $lastBalanceHtml;
		
		$mothHtml = "";
		for($i = 1; $i <= 12; $i ++) {
			if ($moth == $i)
				$mothHtml .= '<option selected value="' . $i . '">' . $i . '月</option>';
			else
				$mothHtml .= '<option value="' . $i . '">' . $i . '月</option>';
		}
		$data ['mothHtml'] = $mothHtml;
		
		$dateHtml = "";
		$now = date ( "Y" );
		for($YEARD = 2050; $YEARD >= 2004; $YEARD --) {
			
			if ($YEARD <= $now) {
				$dateHtml .= '<option ';
				if ($year == $YEARD) {
					$dateHtml .= 'selected ';
				}
				$dateHtml .= 'value="' . $YEARD . '">' . $YEARD . '</option>';
			}
		}
		
		$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 .= '<option selected value="' . $i . '">' . $i . '月</option>';
			else
				$mothHtml .= '<option value="' . $i . '">' . $i . '月</option>';
		}
		$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 = '<tr><th colspan="2">截至上日余额</th>';
		
		$inComeHtml = '<tr><th colspan="2">收入</th>';
		$payHtml = '<tr class="colRed"><th colspan="2">支出</th>';
		$BalanceHtml = '<tr><th colspan="2">余额</th>';
		$dayHtml = '<tr><th class="taC" colspan="2">余额</th>';
		$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 .= '<td class="taC">' . $i . '日</td>';
			$inComeA = $payB = 0;
			$falg = true;
			foreach ( $inComePay as $key => $value ) {
				if ($value ['day'] == $i) {
					$falg = false;
					$inComeHtml .= '<td class="taR">' . $value ['accountPriceShow'] . '</td>';
					$inSum += $value ['accountPrice'];
					$showInSum += $value ['accountPriceShow'];
					$inComeA = $value ['accountPrice'];
					break;
				}
			}
			if ($falg)
				$inComeHtml .= '<td class="taR">-</td>';
			
			$payFalg = true;
			foreach ( $pay as $key => $value ) {
				if ($value ['day'] == $i) {
					$payFalg = false;
					$payHtml .= '<td class="taR">' . $value ['accountPriceShow'] . '</td>';
					$paySum += $value ['accountPrice'];
					$showPaySum += $value ['accountPriceShow'];
					$payB = $value ['accountPrice'];
					break;
				}
			}
			if ($payFalg)
				$payHtml .= '<td class="taR">-</td>';
			
			if (empty ( $balanceC ) || $limitDay < $i)
				$lastBalanceHtml .= '<td class="taR">-</td>';
			else
				$lastBalanceHtml .= '<td class="taR">' . $balanceC . '</td>';
			
			$balanceC = $balanceC + $inComeA + $payB;
			$balanceSum += $balanceC;
			if (empty ( $balanceC ) || $limitDay < $i)
				$BalanceHtml .= '<td class="taR">-</td>';
			else
				$BalanceHtml .= '<td class="taR">' . $balanceC . '</td>';
		}
		$inComeHtml .= '<td class="taR colGreen">￥' . $showInSum . '</td></tr>';
		$data ['inComeHtml'] = $inComeHtml;
		$payHtml .= '<td class="taR ">￥' . $showPaySum . '</td></tr>';
		$data ['payBalanceHtml'] = $payHtml;
		
		$BalanceHtml .= '<td class="taR ">￥' . $balanceC . '</td></tr>';
		$data ['BalanceHtml'] = $BalanceHtml;
		$dayHtml .= '<td class="taR ">总计</td></tr>';
		$data ['dayHtml'] = $dayHtml;
		
		$lastBalanceHtml .= '<td class="taR ">' . $balanceC . '</td></tr>';
		$data ['lastBalanceHtml'] = $lastBalanceHtml;
		
		$dateHtml = "";
		$now = date ( "Y" );
		for($YEARD = 2050; $YEARD >= 2004; $YEARD --) {
			
			if ($YEARD <= $now) {
				$dateHtml .= '<option ';
				if ($year == $YEARD) {
					$dateHtml .= 'selected ';
				}
				$dateHtml .= 'value="' . $YEARD . '">' . $YEARD . '</option>';
			}
		}
		
		$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 wasteBook() {
		Doo::loadModel ( "execute" );
		$execute = new execute ();
		if (! $execute->isPaymentsShow ( $this->staff [0] ['sid'] )) {
			die ( 'illegal request' );
		}
		
		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).'<br>';
		// echo $XDeode->encode(2).'<br>';
		// echo $XDeode->encode(3).'<br>';
		// echo $XDeode->encode(4).'<br>';
		// echo $XDeode->encode(5).'<br>';
		// echo $XDeode->encode(6).'<br>';
		// echo $XDeode->encode(7).'<br>';
		// echo $XDeode->encode(8).'<br>';
		// echo $XDeode->encode(9).'<br>';
		// echo $XDeode->encode(10).'<br>';
		
		$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 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 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' ) : "";
		$accountTypeKey = $this->get_args ( 'accountTypeKey' ) ? $this->get_args ( 'accountTypeKey' ) : "";
		
		Doo::loadModel ( 'receipt' );
		$receipt = new receipt ();
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 5 );
		
		$rid = $XDeode->decode ( $serial );
		$accountType= $XDeode->decode ( $accountTypeKey );
		
		
		// 获得个数据
		$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 ,$accountType);
		// 获得费用审批人数据
		$detail = $this->getReceiptApproverHtml ( $detail );
		
		// 审批执行
		$html .= '<table class="table table-bordered table-condensed"><tbody><tr>
								<th class="taC" width="90">审批人</th>
								<th class="taC">审批意见</th></tr>';
		foreach ( $detail ['verifyList'] as $key => $value ) {
			$html .= '<tr>
					<td>' . $value [1] . '</td>
					<td>' . $value ['opinion'] . '</td>
				</tr>
			';
		}
		$html .= '	</tbody></table>';
		
		$html .= '<table class="table table-bordered table-condensed"><tbody><tr>
								<th class="taC" width="90">执行人</th>
								<th class="taC">执行意见</th></tr>';
		foreach ( $detail ['executeCopy'] as $key => $value ) {
			$html .= '<tr>
					<td>' . $value [1] . '</td>
					<td>' . $value ['opinion'] . '</td>
				</tr>
			';
		}
		$html .= '	</tbody></table>';
		if($accountType==1){
			Doo::loadModel ( 'loanReceipt' );
			$loanReceipt = new loanReceipt ();
			$loanList = $loanReceipt->getOne ( array (
					'where' => 'rid=' . $detail ['loanRid'],
					'desc' => 'rid',
					'asArray' => true
			) );
			
			
			$html .= '<table class="table table-bordered table-condensed">
		<tr class="warning">
		<td class="taR"><b>汇款金额</b></td>
		<td width="140" class="taR"><b style="font-size: 24px">￥'.$loanList['amount'].'</b></td>
		</tr>
		</table>';
		}else{
		$html .= '<table class="table table-bordered table-condensed">
		<tr class="warning">
		<td class="taR"><b>汇款金额</b></td>
		<td width="140" class="taR"><b style="font-size: 24px">￥' . $detail ['amount'] . '</b></td>
		</tr>
		</table>';
		}
		// 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 '<br/>';
						
						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(),$accountType=1) {
		if (empty ( $detail ))
			return '';
		
		$html = '';
		if ($detail ['Rtype'] == 0) { // 报销单
			
			$html .= '<table class="table table-bordered table-condensed">
						<tbody>
					<tr>
					<th colspan="2" class="taC">日常相关费用</th>
				</tr>';
			foreach ( $detail ['accountItem'] ['日常相关费用'] as $key => $value ) {
				$html .= '
				<tr>
					<th>' . $value ['name'] . '</th>
					<td width="140" class="taR">￥' . $value ['price'] . '</td>
				</tr>';
			}
			$html .= '
				<tr>
					<th class="taR">合计</th>
					<td class="colGreen taR">￥' . $detail ['accountItem'] ['cSum'] ['agencySum'] . '</td>
				</tr>';
			
			$html .= '<tr>
					<th colspan="2" class="taC">差旅相关费用</th>
				</tr>';
			foreach ( $detail ['accountItem'] ['差旅相关费用'] as $key => $value ) {
				$html .= '
				<tr>
					<th>' . $value ['name'] . '</th>
					<td width="140" class="taR">￥' . $value ['price'] . '</td>
				</tr>';
			}
			$html .= '
				<tr>
					<th class="taR">合计</th>
					<td class="colGreen taR">￥' . $detail ['accountItem'] ['cSum'] ['travelSum'] . '</td>
				</tr>';


            if(isset($detail ['accountItem'] ['内部培训费用'])){
            $html .= '<tr>
					<th colspan="2" class="taC">内部培训费用</th>
				</tr>';
            foreach ( $detail ['accountItem'] ['内部培训费用'] as $key => $value ) {
                $html .= '
				<tr>
					<th>' . $value ['name'] . '</th>
					<td width="140" class="taR">￥' . $value ['price'] . '</td>
				</tr>';
            }
            $html .= '
				<tr>
					<th class="taR">合计</th>
					<td class="colGreen taR">￥' . $detail ['accountItem'] ['cSum'] ['inttrainSum'] . '</td>
				</tr>';
            }


			
			$html .= '<tr>
					<th colspan="2" class="taC">其他</th>
				</tr>';
			foreach ( $detail ['accountItem'] ['其他'] as $key => $value ) {
				$html .= '
				<tr>
					<th>' . $value ['name'] . '</th>
					<td width="140" class="taR">￥' . $value ['price'] . '</td>
				</tr>';
			}
			$html .= '
				<tr>
					<th class="taR">合计</th>
					<td class="colGreen taR">￥' . $detail ['accountItem'] ['cSum'] ['otherSum'] . '</td>
				</tr>';
			
			$html .= '<tr>
					<th colspan="2" class="taC">报销金额调整</th>
				</tr>';
			foreach ( $detail ['reviseDetail'] as $key => $value ) {
				$html .= '
				<tr>
					<th>' . $value ['name'] . '</th>
					<td width="140" class="taR">￥' . $value ['price'] . '</td>
				</tr>';
			}
			$html .= '
				<tr>
					<th class="taR">合计</th>
					<td class="colGreen taR">￥' . $detail ['revisePrice'] . '</td>
				</tr>';
			
			$html .= '
				<tr><th class="taC" colspan="2">产生费用所在办事处</th></tr>
	  			<tr><th style="text-align:center" colspan="2">' . $detail ['category'] [0] ['title'] . '</th></tr>
	  			<tr><th class="taC" colspan="2">报销说明</th></tr>
	  						<tr><td colspan="2">' . $detail ['explanation'] . '</td></tr>
	  			
	  			<tr class="warning">
								<td class="taR"><b>（' . $detail ['receiptOrder'] . '）本次报销费用合计</b></td>
								<td class="colGreed taR"><b style="font-size: 24px">￥' . $detail ['sum'] . '</b><br>' . $detail ['sumCN'] . '</td>
							</tr>
	  						</tbody>
					</table>';
		} elseif ($detail ['Rtype'] == 2) {//对公汇款
			$html .= '
					<table class="table table-bordered table-condensed">
						<tbody>
					<tr>
					<th colspan="2" class="taC">办事处相关费用</th>
				</tr>';
			foreach ( $detail ['accountItem'] ['日常相关费用'] as $key => $value ) {
				$html .= '
				<tr>
					<th>' . $value ['name'] . '</th>
					<td width="140" class="taR">￥' . $value ['price'] . '</td>
				</tr>';
			}
			$html .= '
				<tr>
					<th class="taR">合计</th>
					<td class="colGreen taR">￥' . $detail ['accountItem'] ['cSum'] ['agencySum'] . '</td>
				</tr>';
			
			$html .= '
				<tr><th class="taC" colspan="2">产生费用所在办事处</th></tr>
	  			<tr><th style="text-align:center" colspan="2">' . $detail ['category'] [0] ['title'] . '</th></tr>
	  			<tr><th class="taC" colspan="2">报销说明</th></tr>
	  						<tr><td colspan="2">' . $detail ['explanation'] . '</td></tr>
			
	  			<tr class="warning">
								<td class="taR"><b>（' . $detail ['receiptOrder'] . '）本次报销费用合计</b></td>
								<td class="colGreed taR"><b style="font-size: 24px">￥' . $detail ['sum'] . '</b><br>' . $detail ['sumCN'] . '</td>
							</tr>
	  						</tbody>
					</table>';
		} elseif ($detail ['Rtype'] == 1) {//借款 或者借款报销
			

			Doo::loadModel ( 'loanReceipt' );
			$loanReceipt = new loanReceipt ();
				
			$loanList = $loanReceipt->getOne ( array (
					'where' => 'rid=' . $detail ['loanRid'],
					'desc' => 'rid',
					'asArray' => true
			) );
			// print_r($loanList);
				
			$loanList ['sumCN']=$this->num_to_rmb($loanList ['sum']);
				
			$html .= '<table class="table table-bordered table-condensed">
						<tbody>
							<tr>
								<th colspan="2" class="taC">借款费用</th>
							</tr>';
			foreach ( $detail ['loanItem'] ['借款费用'] as $key => $value ) {
				$html .= '<tr>
						<th>' . $value ['name'] . '</th>
						<td width="140" class="taR">￥' . $value ['price'] . '</td>
				</tr>';
			}
			$html .= '<tr>
								<th class="taC" colspan="2">产生费用所在办事处</th>
							</tr>
							<tr>
								<th style="text-align: center" colspan="2">' . $detail ['category'] [0] ['title'] . '</th>
							</tr>
							<tr>
								<th class="taC" colspan="2">费用说明</th>
							</tr>
							<tr>
								<td colspan="2">' . $loanList ['explanation'] . '</td>
							</tr>
							<tr class="warning">
								<td class="taR"><b>（' . $loanList ['receiptOrder'] . '）本次费用合计</b></td>
								<td class="taR"><b style="font-size: 24px">￥' . $loanList ['sum'] . '</b><br>' . $loanList ['sumCN'] . '</td>
							</tr>
						</tbody>
					</table>
					';
			
			if ( $accountType==2) {
				
				$balance=$detail ['sum']-$loanList ['sum'];
				$balanceCN=$this->num_to_rmb($balance);
				$html .= '<table class="table table-bordered table-condensed">
						<tbody>
					<tr>
					<th colspan="2" class="taC">日常相关费用</th>
				</tr>';
				foreach ( $detail ['accountItem'] ['日常相关费用'] as $key => $value ) {
					$html .= '
				<tr>
					<th>' . $value ['name'] . '</th>
					<td width="140" class="taR">￥' . $value ['price'] . '</td>
				</tr>';
				}
				$html .= '
				<tr>
					<th class="taR">合计</th>
					<td class="colGreen taR">￥' . $detail ['accountItem'] ['cSum'] ['agencySum'] . '</td>
				</tr>';
				
				$html .= '<tr>
					<th colspan="2" class="taC">差旅相关费用</th>
				</tr>';
				foreach ( $detail ['accountItem'] ['差旅相关费用'] as $key => $value ) {
					$html .= '
				<tr>
					<th>' . $value ['name'] . '</th>
					<td width="140" class="taR">￥' . $value ['price'] . '</td>
				</tr>';
				}
				$html .= '
				<tr>
					<th class="taR">合计</th>
					<td class="colGreen taR">￥' . $detail ['accountItem'] ['cSum'] ['travelSum'] . '</td>
				</tr>';


                if(isset($detail ['accountItem'] ['内部培训费用'])){
                    $html .= '<tr>
					<th colspan="2" class="taC">内部培训费用</th>
				</tr>';
                    foreach ( $detail ['accountItem'] ['内部培训费用'] as $key => $value ) {
                        $html .= '
				<tr>
					<th>' . $value ['name'] . '</th>
					<td width="140" class="taR">￥' . $value ['price'] . '</td>
				</tr>';
                    }
                    $html .= '
				<tr>
					<th class="taR">合计</th>
					<td class="colGreen taR">￥' . $detail ['accountItem'] ['cSum'] ['inttrainSum'] . '</td>
				</tr>';
                }


				
				$html .= '<tr>
					<th colspan="2" class="taC">其他</th>
				</tr>';
				foreach ( $detail ['accountItem'] ['其他'] as $key => $value ) {
					$html .= '
				<tr>
					<th>' . $value ['name'] . '</th>
					<td width="140" class="taR">￥' . $value ['price'] . '</td>
				</tr>';
				}
				$html .= '
				<tr>
					<th class="taR">合计</th>
					<td class="colGreen taR">￥' . $detail ['accountItem'] ['cSum'] ['otherSum'] . '</td>
				</tr>';
				
				$html .= '<tr>
					<th colspan="2" class="taC">报销金额调整</th>
				</tr>';
				foreach ( $detail ['reviseDetail'] as $key => $value ) {
					$html .= '
				<tr>
					<th>' . $value ['name'] . '</th>
					<td width="140" class="taR">￥' . $value ['price'] . '</td>
				</tr>';
				}
				$html .= '
				<tr>
					<th class="taR">合计</th>
					<td class="colGreen taR">￥' . $detail ['revisePrice'] . '</td>
				</tr>';
				
				$html .= '
				<tr><th class="taC" colspan="2">产生费用所在办事处</th></tr>
	  			<tr><th style="text-align:center" colspan="2">' . $detail ['category'] [0] ['title'] . '</th></tr>
	  			<tr><th class="taC" colspan="2">报销说明</th></tr>
	  						<tr><td colspan="2">' . $detail ['explanation'] . '</td></tr>
		
	  			<tr class="warning">
								<td class="taR"><b>（' . $detail ['receiptOrder'] . '）本次报销费用合计</b></td>
								<td class="colGreed taR"><b style="font-size: 24px">￥' . $detail ['sum'] . '</b><br>' . $detail ['sumCN'] . '</td>
							</tr>
				<tr class="success">
                                <td class="taR"><b>借款结余</b></td>
                                <td class="taR"><b style="font-size:24px">￥'.$balance.'</b><br>'.$balanceCN.'</td>
                            </tr>						
										
										
	  						</tbody>
					</table>';
			}
			
		}
		
		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() {
        //include Doo::conf ()->BASE_PATH . 'diagnostic/debug.php';
		$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;
		
		$nature = $this->get_args ( 'nature' ) ? $this->get_args ( 'nature' ) : "";
		if (! $nature){
				$nature = isset ( $this->params ['nature'] ) ? $this->params ['nature'] : 'ONJOB';
		}

		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 ( "receiptAuthorityManage" );
		$receiptAuthorityManage = new receiptAuthorityManage ();

        $aiList=$accountItem->getAccountItem();

		$imcStaff = $receiptAuthorityManage->getInvoiceCMByStaff ( $this->staff [0] ['sid'] );
		$cidList = array ();
		foreach ( $imcStaff as $key => $value ) {
			array_push ( $cidList, $value ['cid'] );
		}
		$cidString = implode ( ',', $cidList );

		$naturecon='';
		if ($nature=='ONJOB'){
			$naturecon=' and (nature!=4 )';
		}elseif($nature=='LEAVEJOB'){
			$naturecon=' and (nature=4 )';
		}else{
			die ( 'illegal request--nature' );
		}
		
		$staffList = $staff->find ( array (
				'where' => 'username!="admin" and cid in (' . $cidString . ')'.$naturecon,
				'asArray' => true 
		) );
		$categoryList = $staff->find ( array (
				'select' => 'COUNT(*) as count,cid,category',
				'where' => 'username !="admin" and cid in (' . $cidString . ')'.$naturecon,
				'groupby' => 'cid',
				'asArray' => true 
		) );
		
		$list = array ();
        foreach($aiList as $key=>$value){
            foreach ($value as $v){
                $subtotal[$key][$v['name']]=0;
            }
        }


		foreach ( $categoryList as $vlu ) {
			$s1 = 0;
			$m1 = 0;
            $subtotal[$this->AGENCY]['AGENCY']=$subtotal[$this->TRAVEL]['TRAVEL']=$subtotal[$this->INTTRAIN]['INTTRAIN']=$subtotal[$this->TRAIN]['TRAIN']=$subtotal[$this->OTHER]['OTHER']=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 (! empty ( $receiptCollectList )) {
						
						$receiptL = array (
								'日常相关费用' => array (),
								'差旅相关费用' => array (),
                                '内部培训费用' => array (),
								'培训班费用' => array (),
								'其他' => array () 
						);
						
						$html = "";
						$psum = 0;
						foreach ( $aiList[$this->AGENCY] as $va ) {
							$falg = true;
							foreach ( $receiptCollectList as $v ) {
								if ($v ['itemCategory'] == '日常相关费用') {

									if ($v ['item'] == $va['name']) {
                                        $subtotal[$this->AGENCY][$va['name']]+=$v ['price'];

										$psum += $v ['price'];
										$html .= '<td class="taR">' . $v ['price'] . '</td>';
										$falg = false;
										break;
									}
								}
							}
							if ($falg)
								$html .= '<td class="taR">-</td>';
						}

                        $subtotal[$this->AGENCY]['AGENCY'] += $psum;
						if (! empty ( $psum ))
							$psum = '<td class="colGreen taR">￥' . $psum . '</td>';
						else
							$psum = '<td class="colGreen taR">-</td>';
						$receiptL ['日常相关费用'] = $psum . $html;
						
						/* ----------------------------------- */
						$html = "";
						$psum = 0;

						foreach ( $aiList[$this->TRAVEL] as $va ) {
							$falg = true;
							foreach ( $receiptCollectList as $v ) {
								if ($v ['itemCategory'] == '差旅相关费用') {
									if ($v ['item'] == $va['name']) {
                                        $subtotal[$this->TRAVEL][$va['name']]+=$v ['price'];

										$psum += $v ['price'];
										$html .= '<td class="taR">' . $v ['price'] . '</td>';
										$falg = false;
										break;
									}
								}
							}
							if ($falg)
								$html .= '<td class="taR">-</td>';
						}
                        $subtotal[$this->TRAVEL]['TRAVEL'] += $psum;
						if (! empty ( $psum ))
							$psum = '<td class="colGreen taR">￥' . $psum . '</td>';
						else
							$psum = '<td class="colGreen taR">-</td>';
						$receiptL ['差旅相关费用'] = $psum . $html;
						/* ------------------------------------- */
                        $html = "";
                        $psum = 0;

                        foreach ( $aiList[$this->INTTRAIN] as $va ) {
                            $falg = true;
                            foreach ( $receiptCollectList as $v ) {
                                if ($v ['itemCategory'] == '内部培训费用') {
                                    if ($v ['item'] == $va['name']) {
                                        $subtotal[$this->INTTRAIN][$va['name']]+=$v ['price'];

                                        $psum += $v ['price'];
                                        $html .= '<td class="taR">' . $v ['price'] . '</td>';
                                        $falg = false;
                                        break;
                                    }
                                }
                            }
                            if ($falg)
                                $html .= '<td class="taR">-</td>';
                        }
                        $subtotal[$this->INTTRAIN]['INTTRAIN']  += $psum;
                        if (! empty ( $psum ))
                            $psum = '<td class="colGreen taR">￥' . $psum . '</td>';
                        else
                            $psum = '<td class="colGreen taR">-</td>';
                        $receiptL ['内部培训费用'] = $psum . $html;
                        /* ----------------------------------- */
						$html = "";
						$psum = 0;

						foreach ( $aiList[$this->TRAIN] as $va ) {
							$falg = true;
							foreach ( $receiptCollectList as $v ) {
								if ($v ['itemCategory'] == '培训班费用') {
									
									if ($v ['item'] == $va['name']) {
                                        $subtotal[$this->TRAIN][$va['name']]+=$v ['price'];

										$psum += $v ['price'];
										$html .= '<td class="taR">' . $v ['price'] . '</td>';
										$falg = false;
										break;
									}
								}
							}
							if ($falg)
								$html .= '<td class="taR">-</td>';
						}
                        $subtotal[$this->TRAIN]['TRAIN'] += $psum;
						if (! empty ( $psum ))
							$psum = '<td class="colGreen taR">￥' . $psum . '</td>';
						else
							$psum = '<td class="colGreen taR">-</td>';
						$receiptL ['培训班费用'] = $psum . $html;
						
						/* ------------------------------------- */
						$html = "";
						$psum = 0;

						foreach ( $aiList[$this->OTHER] as $va ) {
							
							$falg = true;
							foreach ( $receiptCollectList as $v ) {
								
								if ($v ['itemCategory'] == '其他') {

									if (trim ( $v ['item'] ) == $va['name']) {
                                        $subtotal[$this->OTHER][$va['name']]+=$v ['price'];

										$psum += $v ['price'];
										$html .= '<td class="taR">' . $v ['price'] . '</td>';
										$falg = false;
										break;
									}
								}
							}
							if ($falg)
								$html .= '<td class="taR">-</td>';
						}

                        $subtotal[$this->OTHER]['OTHER'] += $psum;
						if (! empty ( $psum ))
							$psum = '<td class="colGreen taR">￥' . $psum . '</td>';
						else
							$psum = '<td class="colGreen taR">-</td>';
						$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 = '<td class="taR colOrange">￥' . $psum . '</td>';
						else
							$psum = '<td class="taR colOrange">-</td>';
						$receiptL ['报销金额调整'] = $psum . $html;
					} else {
                        $receiptL [$this->AGENCY] ='<td class="colGreen taR">-</td>';
                        foreach ( $aiList[$this->AGENCY] as $va ) {
                            $receiptL [$this->AGENCY] .='<td class="taR">-</td>';
                        }
                        $receiptL [$this->TRAVEL] ='<td class="colGreen taR">-</td>';
                        foreach ( $aiList[$this->TRAVEL] as $va ) {
                            $receiptL [$this->TRAVEL] .='<td class="taR">-</td>';
                        }
                        $receiptL [$this->INTTRAIN] ='<td class="colGreen taR">-</td>';
                        foreach ( $aiList[$this->INTTRAIN] as $va ) {
                            $receiptL [$this->INTTRAIN] .='<td class="taR">-</td>';
                        }
                        $receiptL [$this->TRAIN] ='<td class="colGreen taR">-</td>';
                        foreach ( $aiList[$this->TRAIN] as $va ) {
                            $receiptL [$this->TRAIN] .='<td class="taR">-</td>';
                        }
                        $receiptL [$this->OTHER] ='<td class="colGreen taR">-</td>';
                        foreach ( $aiList[$this->OTHER] as $va ) {
                            $receiptL [$this->OTHER] .='<td class="taR">-</td>';
                        }
                        $receiptL ['报销金额调整'] = '<td class="taR colOrange">-</td>';
					}
					
					$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'] = '<td><b>￥' . $monthStaffPrice [0] ['price'] . '</b></td>';
					} else
						$receiptL ['monthStaffPrice'] = '<td><b>-</b></td>';
					
					$receiptL ['usernameEn'] = urlencode ( $value ['username'] );
					$list [$value ['username']] = $receiptL;
				}
			}

            $receiptL [$this->AGENCY] ='<td class="colGreen taR">'.$subtotal[$this->AGENCY]['AGENCY'].'</td>';
            foreach ( $aiList[$this->AGENCY] as $va ) {
                $receiptL [$this->AGENCY] .='<td class="taR">' . $subtotal[$this->AGENCY][$va['name']] . '</td>';
                $subtotal[$this->AGENCY][$va['name']]=0;
            }
            $receiptL [$this->TRAVEL] ='<td class="colGreen taR">'.$subtotal[$this->TRAVEL]['TRAVEL'].'</td>';
            foreach ( $aiList[$this->TRAVEL] as $va ) {
                $receiptL [$this->TRAVEL] .='<td class="taR">' . $subtotal[$this->TRAVEL][$va['name']] . '</td>';
                $subtotal[$this->TRAVEL][$va['name']]=0;

            }
            $receiptL [$this->INTTRAIN] ='<td class="colGreen taR">'.$subtotal[$this->INTTRAIN]['INTTRAIN'].'</td>';
            foreach ( $aiList[$this->INTTRAIN] as $va ) {
                $receiptL [$this->INTTRAIN] .='<td class="taR">' . $subtotal[$this->INTTRAIN][$va['name']] . '</td>';
                $subtotal[$this->INTTRAIN][$va['name']]=0;
            }
            $receiptL [$this->TRAIN] ='<td class="colGreen taR">'.$subtotal[$this->TRAIN]['TRAIN'].'</td>';
            foreach ( $aiList[$this->TRAIN] as $va ) {
                $receiptL [$this->TRAIN] .='<td class="taR">' . $subtotal[$this->TRAIN][$va['name']] . '</td>';
                $subtotal[$this->TRAIN][$va['name']]=0;
            }
            $receiptL [$this->OTHER] ='<td class="colGreen taR">'.$subtotal[$this->OTHER]['OTHER'].'</td>';
            foreach ( $aiList[$this->OTHER] as $va ) {
                $receiptL [$this->OTHER] .='<td class="taR">' . $subtotal[$this->OTHER][$va['name']] . '</td>';
                $subtotal[$this->OTHER][$va['name']]=0;
            }

			$receiptL ['报销金额调整'] = '<td class="taR colOrange">' . $s1 . '</td>';

			$receiptL ['monthStaffPrice'] = '<td><b>￥' . $m1 . '</b></td>';
            $receiptL ['usernameEn'] =false;
			$list ['<span class=colRed >' . $vlu ['category'] . '小计</span>'] = $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,$aiList );
		
		// 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 .= '<option selected value="' . $i . '">' . $i . '</option>';
			else
				$monthHtml .= '<option value="' . $i . '">' . $i . '</option>';
		}
		
		$data ['monthHtml'] = $monthHtml;
		$data ['year'] = $year;
		$data ['month'] = $month;
		$data ['nature'] = $nature;
        $data ['aiList'] = $aiList;
		
		$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='<th rowspan="'.$v['count'].'">'.$v['category'].'</th>';
			$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 .= '<td class="taR">' . $v ['price'] . '</td>';
										$falg = false;
										break;
									}
								}
							}
							if ($falg)
								$html .= '<td class="taR">-</td>';
						}
						
						$r12 += $psum;
						if (! empty ( $psum ))
							$psum = '<td class="colGreen taR">￥' . $psum . '</td>';
						else
							$psum = '<td class="colGreen taR">-</td>';
						$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 .= '<td class="taR">' . $v ['price'] . '</td>';
										$falg = false;
										break;
									}
								}
							}
							if ($falg)
								$html .= '<td class="taR">-</td>';
						}
						$c6 += $psum;
						if (! empty ( $psum ))
							$psum = '<td class="colGreen taR">￥' . $psum . '</td>';
						else
							$psum = '<td class="colGreen taR">-</td>';
						$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 .= '<td class="taR">' . $v ['price'] . '</td>';
										$falg = false;
										break;
									}
								}
							}
							if ($falg)
								$html .= '<td class="taR">-</td>';
						}
						$p9 += $psum;
						if (! empty ( $psum ))
							$psum = '<td class="colGreen taR">￥' . $psum . '</td>';
						else
							$psum = '<td class="colGreen taR">-</td>';
						$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 .= '<td class="taR">' . $v ['price'] . '</td>';
										$falg = false;
										break;
									}
								}
							}
							if ($falg)
								$html .= '<td class="taR">-</td>';
						}
						$t5 += $psum;
						if (! empty ( $psum ))
							$psum = '<td class="colGreen taR">￥' . $psum . '</td>';
						else
							$psum = '<td class="colGreen taR">-</td>';
						$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 = '<td class="taR colOrange">￥' . $psum . '</td>';
						else
							$psum = '<td class="taR colOrange">-</td>';
						$receiptL ['报销金额调整'] = $psum . $html;
					} else {
						$receiptL ['日常相关费用'] = '<td class="colGreen taR">-</td><td class="taR">-</td><td class="taR">-</td><td class="taR">-</td><td class="taR">-</td>
		  						<td class="taR">-</td><td class="taR">-</td><td class="taR">-</td><td class="taR">-</td><td class="taR">-</td><td class="taR">-</td><td class="taR">-</td><td class="taR">-</td>';
						$receiptL ['差旅相关费用'] = '<td class="colGreen taR">-</td><td class="taR">-</td>
		  						<td class="taR">-</td><td class="taR">-</td><td class="taR">-</td><td class="taR">-</td>';
						$receiptL ['培训班费用'] = '<td class="colGreen taR">-</td><td class="taR">-</td><td class="taR">-</td><td class="taR">-</td><td class="taR">-</td>
		  						<td class="taR">-</td><td class="taR">-</td><td class="taR">-</td><td class="taR">-</td>';
						$receiptL ['其他'] = '<td class="colGreen taR">-</td><td class="taR">-</td><td class="taR">-</td><td class="taR">-</td><td class="taR">-</td>';
						$receiptL ['报销金额调整'] = '<td class="taR colOrange">-</td>';
					}
					
					$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'] = '<td><b>￥' . $monthStaffPrice [0] ['price'] . '</b></td>';
					} else
						$receiptL ['monthStaffPrice'] = '<td><b>-</b></td>';
					$list [$value ['username']] = $receiptL;
				}
			}
			$receiptL ['日常相关费用'] = '<td class="colGreen taR">' . $r12 . '</td><td class="taR">' . $r1 . '</td><td class="taR">' . $r2 . '</td><td class="taR">' . $r3 . '</td><td class="taR">' . $r4 . '</td><td class="taR">' . $r5 . '</td>
		  						<td class="taR">' . $r6 . '</td><td class="taR">' . $r7 . '</td><td class="taR">' . $r8 . '</td><td class="taR">' . $r9 . '</td><td class="taR">' . $r10 . '</td><td class="taR">' . $r11 . '</td><td class="taR">' . $r13 . '</td>
		  						<td class="taR">' . $r14 . '</td><td class="taR">' . $r15 . '</td>';
			$receiptL ['差旅相关费用'] = '<td class="colGreen taR">' . $c6 . '</td><td class="taR">' . $c1 . '</td>
		  						<td class="taR">' . $c2 . '</td><td class="taR">' . $c3 . '</td><td class="taR">' . $c4 . '</td><td class="taR">' . $c5 . '</td>';
			$receiptL ['培训班费用'] = '<td class="colGreen taR">' . $p9 . '</td><td class="taR">' . $p1 . '</td><td class="taR">' . $p2 . '</td><td class="taR">' . $p3 . '</td><td class="taR">' . $p4 . '</td>
		  						<td class="taR">' . $p5 . '</td><td class="taR">' . $p6 . '</td><td class="taR">' . $p7 . '</td><td class="taR">' . $p8 . '</td>';
			$receiptL ['其他'] = '<td class="colGreen taR">' . $t5 . '</td><td class="taR">' . $t1 . '</td><td class="taR">' . $t2 . '</td><td class="taR">' . $t3 . '</td><td class="taR">' . $t4 . '</td>';
			$receiptL ['报销金额调整'] = '<td class="taR colOrange">' . $s1 . '</td>';
			$receiptL ['monthStaffPrice'] = '<td><b>￥' . $m1 . '</b></td>';
			$list ['<span class=colRed >' . $vlu ['category'] . '小计</span>'] = $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 .= '<option selected value="' . $i . '">' . $i . '</option>';
			else
				$monthHtml .= '<option value="' . $i . '">' . $i . '</option>';
		}
		
		$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 .= '<td class="colGreen taR">' . $accountItemList ['cSum'] ['agencySum'] . '</td>';
					elseif ($v == '差旅相关费用')
						$receiptItemHtml .= '<td class="colGreen taR">' . $accountItemList ['cSum'] ['travelSum'] . '</td>';
					elseif ($v == '培训班费用')
						$receiptItemHtml .= '<td class="colGreen taR">' . $accountItemList ['cSum'] ['trainSum'] . '</td>';
                    elseif ($v == '内部培训费用'){
                        if (isset($accountItemList ['cSum'] ['inttrainSum'])){
                            $receiptItemHtml .= '<td class="colGreen taR">' . $accountItemList ['cSum'] ['inttrainSum'] . '</td>';
                        }else{
                            $receiptItemHtml .= '<td class="colGreen taR">0</td>';
                        }
                    }elseif ($v == '其他')
						$receiptItemHtml .= '<td class="colGreen taR">' . $accountItemList ['cSum'] ['otherSum'] . '</td>';
					
					foreach ( $itemList [$v] as $ke => $va ) {
						$falg = true;
						if (! empty ( $accountItemList [$v] )) {
							foreach ( $accountItemList [$v] as $ve ) {
								if ($va ['name'] == $ve ['name']) {
									$receiptItemHtml .= '<td class="taR">' . $ve ['price'] . '</td>';
									$falg = false;
									break;
								}
							}
						}
						if ($falg)
							$receiptItemHtml .= '<td class="taR"></td>';
					}
				}
				// 金额调整和费用查看
				$revisePrice += $value ['revisePrice'];
				$receiptItemHtml .= '<td class="taR">' . $value ['revisePrice'] . '</td>';
				$receiptItemHtml .= '<td class="taR"><a href="#detail" data-toggle="modal" id="sen'.$key.'" data="' . htmlspecialchars($value ['explanation']) . '" onclick=showExplanation() >查看</a></td>';
				$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 .= '<th class="taC" colspan="' . $count . '">' . $value . '</th>';
				$categoryHtml .= '<th class="taC">合计</th>';
				$sumfalg=true;
				foreach ( $rtl as $rtlValue ) {
					if ($rtlValue ['itemCategory'] == $value) {
						$receiptTotalHtml .= '<th>' . $rtlValue ['price'] . '</th>';
						$sumfalg=false;
						break;
					}
				}
				if ($sumfalg)
					$receiptTotalHtml .= '<th></th>';
				
				foreach ( $itemList [$value] as $k => $v ) {
					$categoryHtml .= '<th class="taC">' . $v ['name'] . '</th>';
					// 合计
					$falg = true;
					foreach ( $receiptTotalList as $ve ) {
						if ($ve ['itemCategory'] == $value && $ve ['item'] == $v ['name']) {
							$receiptTotalHtml .= '<th >' . $ve ['price'] . '</th>';
							$falg = false;
							break;
						}
					}
					if ($falg)
						$receiptTotalHtml .= '<th></th>';
				}
			}
			$receiptTotalHtml .= '<th>' . $revisePrice . '</th>';
			
			$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 .= '<option selected value="' . $i . '">' . $i . '</option>';
				else
					$monthHtml .= '<option value="' . $i . '">' . $i . '</option>';
			}
			
			$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 
		) );

        $aiList=$accountItem->getAccountItem();

		$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 (),
						'其他' => array () 
				);
				
				$html = "";
				$psum = 0;

				foreach ( $aiList[$this->AGENCY] as $va ) {
					$falg = true;
					foreach ( $receiptCollectList as $v ) {
						if ($v ['itemCategory'] == $this->AGENCY) {
							
							if ($v ['item'] == $va['name']) {
								$psum += $v ['price'];
								$html .= '<td class="taR">' . $v ['price'] . '</td>';
								$falg = false;
								break;
							}
						}
					}
					if ($falg)
						$html .= '<td class="taR">-</td>';
				}
				
				if (! empty ( $psum ))
					$psum = '<td class="colGreen taR">' . $psum . '</td>';
				else
					$psum = '<td class="colGreen taR">-</td>';
				$receiptL [$this->AGENCY] = $psum . $html;
				
				/* ----------------------------------- */
				
				$html = "";
				$psum = 0;

				foreach (  $aiList[$this->TRAVEL] as $va ) {
					$falg = true;
					foreach ( $receiptCollectList as $v ) {
						if ($v ['itemCategory'] == $this->TRAVEL) {
							
							if ($v ['item'] == $va['name']) {
								$psum += $v ['price'];
								$html .= '<td class="taR">' . $v ['price'] . '</td>';
								$falg = false;
								break;
							}
						}
					}
					if ($falg)
						$html .= '<td class="taR">-</td>';
				}
				if (! empty ( $psum ))
					$psum = '<td class="colGreen taR">' . $psum . '</td>';
				else
					$psum = '<td class="colGreen taR">-</td>';
				$receiptL [$this->TRAVEL] = $psum . $html;
                /* ------------------------------------- */
                $html = "";
                $psum = 0;

                foreach ( $aiList[$this->INTTRAIN] as $va ) {
                    $falg = true;
                    foreach ( $receiptCollectList as $v ) {
                        if ($v ['itemCategory'] == $this->INTTRAIN) {

                            if ($v ['item'] == $va['name']) {
                                $psum += $v ['price'];
                                $html .= '<td class="taR">' . $v ['price'] . '</td>';
                                $falg = false;
                                break;
                            }
                        }
                    }
                    if ($falg)
                        $html .= '<td class="taR">-</td>';
                }
                if (! empty ( $psum ))
                    $psum = '<td class="colGreen taR">' . $psum . '</td>';
                else
                    $psum = '<td class="colGreen taR">-</td>';
                $receiptL [$this->INTTRAIN] = $psum . $html;



				/* ------------------------------------- */
				$html = "";
				$psum = 0;

				foreach ( $aiList[$this->TRAIN] as $va ) {
					$falg = true;
					foreach ( $receiptCollectList as $v ) {
						if ($v ['itemCategory'] == $this->TRAIN) {
							
							if ($v ['item'] == $va['name']) {
								$psum += $v ['price'];
								$html .= '<td class="taR">' . $v ['price'] . '</td>';
								$falg = false;
								break;
							}
						}
					}
					if ($falg)
						$html .= '<td class="taR">-</td>';
				}
				if (! empty ( $psum ))
					$psum = '<td class="colGreen taR">' . $psum . '</td>';
				else
					$psum = '<td class="colGreen taR">-</td>';
				$receiptL [$this->TRAIN] = $psum . $html;
				
				/* ------------------------------------- */
				$html = "";
				$psum = 0;

				foreach ( $aiList[$this->OTHER] as $va ) {
					$falg = true;
					foreach ( $receiptCollectList as $v ) {
						if ($v ['itemCategory'] == $this->OTHER) {
							
							if ($v ['item'] == $va['name']) {
								$psum += $v ['price'];
								$html .= '<td class="taR">' . $v ['price'] . '</td>';
								$falg = false;
								break;
							}
						}
					}
					if ($falg)
						$html .= '<td class="taR">-</td>';
				}
				if (! empty ( $psum ))
					$psum = '<td class="colGreen taR">' . $psum . '</td>';
				else
					$psum = '<td class="colGreen taR">-</td>';
				$receiptL [$this->OTHER] = $psum . $html;
				
				/* ------------------------------------- */
				$html = "";
				$psum = 0;
				foreach ( $receiptCollectList as $v ) {
					if ($v ['itemCategory'] == '报销金额调整') {
						
						if (! empty ( $v ['price'] ))
							$psum += $v ['price'];
					}
				}
				
				if (! empty ( $psum ))
					$psum = '<td class="taR colOrange">' . $psum . '</td>';
				else
					$psum = '<td class="taR colOrange">-</td>';
				$receiptL ['报销金额调整'] = $psum . $html;
			} else {
                $receiptL [$this->AGENCY] ='<td class="colGreen taR">-</td>';
                foreach ( $aiList[$this->AGENCY] as $va ) {
                    $receiptL [$this->AGENCY] .='<td class="taR">-</td>';
                }
                $receiptL [$this->TRAVEL] ='<td class="colGreen taR">-</td>';
                foreach ( $aiList[$this->TRAVEL] as $va ) {
                    $receiptL [$this->TRAVEL] .='<td class="taR">-</td>';
                }
                $receiptL [$this->INTTRAIN] ='<td class="colGreen taR">-</td>';
                foreach ( $aiList[$this->INTTRAIN] as $va ) {
                    $receiptL [$this->INTTRAIN] .='<td class="taR">-</td>';
                }
                $receiptL [$this->TRAIN] ='<td class="colGreen taR">-</td>';
                foreach ( $aiList[$this->TRAIN] as $va ) {
                    $receiptL [$this->TRAIN] .='<td class="taR">-</td>';
                }
                $receiptL [$this->OTHER] ='<td class="colGreen taR">-</td>';
                foreach ( $aiList[$this->OTHER] as $va ) {
                    $receiptL [$this->OTHER] .='<td class="taR">-</td>';
                }
				$receiptL ['报销金额调整'] = '<td class="taR colOrange">-</td>';
			}
			
			$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'] = '<td><b>' . $monthStaffPrice [0] ['price'] . '</b></td>';
			else
				$receiptL ['monthStaffPrice'] = '<td><b>-</b></td>';
			$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,$aiList );
		
		 //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 .= '<option selected value="' . $i . '">' . $i . '</option>';
			else
				$monthHtml .= '<option value="' . $i . '">' . $i . '</option>';
		}

        $data ['aiList'] = $aiList;



		$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 .= '<option selected value="' . $value ['username'] . '">' . $value ['category'] . '-' . $value ['username'] . '</option>';
			} elseif ($value ['username'] != 'admin')
				$stHtml .= '<option value="' . $value ['username'] . '">' . $value ['category'] . '-' . $value ['username'] . '</option>';
		}
		$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'].'<br/>';
						}
						$asum += $v ['price'];
						$html .= '<td class="taR">' . $v ['price'] . '</td>';
						$falg = false;
						break;
					}
				}
				if ($falg)
					$html .= '<td class="taR">-</td>';
			}
			$html .= '<td class="taR colGreen"><b>' . $asum . '</b></td>';
			$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(),
				'其他' => 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, '其他', '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 .= '<td class="taR">-</td>';
			else
				$collectHtml .= '<td class="taR">￥' . $sumPrice . '</td>';
			$total += $sumPrice;
		}
		$collectHtml .= '<td class="taR colGreen">￥' . $total . '</td>';
		
		// 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 .= '<option selected value="' . $i . '">' . $i . '月</option>';
			else
				$mothHtml .= '<option value="' . $i . '">' . $i . '月</option>';
		}
		$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 = '<div class="control-group"><div class="controls clearfix"><table class="table table table-bordered"><tbody>
         			<tr><td>单号：<b>' . $receiptOrder . '</b></td><td>金额：<b class="colOrange">￥' . $receiptInfo ['sum'] . '</b></td></tr>
         		</tbody></table><table class="table table table-bordered"><tbody>';
			foreach ( $verifyStaff as $key => $value ) {
				$staffInfo = $staff->getOne ( array (
						'select' => 'username',
						'where' => ' sid="' . $key . '"',
						'asArray' => true 
				) );
				$html .= '<tr><th width="70">' . $staffInfo ['username'] . '</th><td>' . $value ['opinion'] . '</td></tr>';
			}
			$html .= '</tbody></table></div></div>';
			echo json_encode ( array (
					'status' => 1,
					'receiptHtml' => $html 
			) );
			die ();
		}
		echo json_encode ( array (
				'status' => 2,
				'receiptHtml' => '' 
		) );
		die ();
	}
	function _getMonthCollectDetail($receiptCollectList,$aiList) {
		if (! empty ( $receiptCollectList )) {
			
			$receiptL = array (
					'日常相关费用' => array (),
					'差旅相关费用' => array (),
					'内部培训费用'=>array(),
					'培训班费用' => array (),
					'其他' => array () 
			);
			
			$html = "";
			$psum = 0;

			foreach ( $aiList[$this->AGENCY] as $value ) {
				$falg = true;
				foreach ( $receiptCollectList as $v ) {
					if ($v ['itemCategory'] == '日常相关费用') {
						
						if ($v ['item'] == $value['name']) {
							$psum += $v ['price'];
							$html .= '<td class="taR">' . $v ['price'] . '</td>';
							$falg = false;
							break;
						}
					}
				}
				if ($falg)
					$html .= '<td class="taR">-</td>';
			}
			
			if (! empty ( $psum ))
				$psum = '<td class="colGreen taR">' . $psum . '</td>';
			else
				$psum = '<td class="colGreen taR">-</td>';
			$receiptL ['日常相关费用'] = $psum . $html;
			
			/* ----------------------------------- */
			
			$html = "";
			$psum = 0;

			foreach ( $aiList[$this->TRAVEL] as $value ) {
				$falg = true;
				foreach ( $receiptCollectList as $v ) {
					if ($v ['itemCategory'] == '差旅相关费用') {
						if ($v ['item'] == $value['name']) {
							$psum += $v ['price'];
							$html .= '<td class="taR">' . $v ['price'] . '</td>';
							$falg = false;
							break;
						}
					}
				}
				if ($falg)
					$html .= '<td class="taR">-</td>';
			}
			
			if (! empty ( $psum ))
				$psum = '<td class="colGreen taR">' . $psum . '</td>';
			else
				$psum = '<td class="colGreen taR">-</td>';
			$receiptL ['差旅相关费用'] = $psum . $html;

            /* ----------------------------------- */

            $html = "";
            $psum = 0;

            foreach ( $aiList[$this->INTTRAIN] as $value ) {
                $falg = true;
                foreach ( $receiptCollectList as $v ) {
                    if ($v ['itemCategory'] == '内部培训费用') {
                        if ($v ['item'] == $value['name']) {
                            $psum += $v ['price'];
                            $html .= '<td class="taR">' . $v ['price'] . '</td>';
                            $falg = false;
                            break;
                        }
                    }
                }
                if ($falg)
                    $html .= '<td class="taR">-</td>';
            }

            if (! empty ( $psum ))
                $psum = '<td class="colGreen taR">' . $psum . '</td>';
            else
                $psum = '<td class="colGreen taR">-</td>';
            $receiptL ['内部培训费用'] = $psum . $html;

			/* ------------------------------------- */
			$html = "";
			$psum = 0;

			foreach ( $aiList[$this->TRAIN] as $value ) {
				$falg = true;
				foreach ( $receiptCollectList as $v ) {
					if ($v ['itemCategory'] == '培训班费用') {
						if ($v ['item'] == $value['name']) {
							$psum += $v ['price'];
							$html .= '<td class="taR">' . $v ['price'] . '</td>';
							$falg = false;
							break;
						}
					}
				}
				if ($falg)
					$html .= '<td class="taR">-</td>';
			}
			
			if (! empty ( $psum ))
				$psum = '<td class="colGreen taR">' . $psum . '</td>';
			else
				$psum = '<td class="colGreen taR">-</td>';
			$receiptL ['培训班费用'] = $psum . $html;
			
			/* ------------------------------------- */
			$html = "";
			$psum = 0;

			foreach ( $aiList[$this->OTHER] as $value ) {
				$falg = true;
				foreach ( $receiptCollectList as $v ) {
					if ($v ['itemCategory'] == '其他') {
						if ($v ['item'] == $value['name']) {
							$psum += $v ['price'];
							$html .= '<td class="taR">' . $v ['price'] . '</td>';
							$falg = false;
							break;
						}
					}
				}
				if ($falg)
					$html .= '<td class="taR">-</td>';
			}
			
			if (! empty ( $psum ))
				$psum = '<td class="colGreen taR">' . $psum . '</td>';
			else
				$psum = '<td class="colGreen taR">-</td>';
			$receiptL ['其他'] = $psum . $html;
			
			/* ------------------------------------- */
			$html = "";
			$psum = 0;
			foreach ( $receiptCollectList as $v ) {
				if ($v ['itemCategory'] == '报销金额调整') {
					
					if (! empty ( $v ['price'] ))
						$psum += $v ['price'];
				}
			}
			
			if (! empty ( $psum ))
				$psum = '<td class="taR colOrange">' . $psum . '</td>';
			else
				$psum = '<td class="taR colOrange">-</td>';
			$receiptL ['报销金额调整'] = $psum . $html;
		} else {
            $receiptL [$this->AGENCY] ='<td class="colGreen taR">-</td>';
            foreach ( $aiList[$this->AGENCY] as $va ) {
                $receiptL [$this->AGENCY] .='<td class="taR">-</td>';
            }
            $receiptL [$this->TRAVEL] ='<td class="colGreen taR">-</td>';
            foreach ( $aiList[$this->TRAVEL] as $va ) {
                $receiptL [$this->TRAVEL] .='<td class="taR">-</td>';
            }
            $receiptL [$this->INTTRAIN] ='<td class="colGreen taR">-</td>';
            foreach ( $aiList[$this->INTTRAIN] as $va ) {
                $receiptL [$this->INTTRAIN] .='<td class="taR">-</td>';
            }
            $receiptL [$this->TRAIN] ='<td class="colGreen taR">-</td>';
            foreach ( $aiList[$this->TRAIN] as $va ) {
                $receiptL [$this->TRAIN] .='<td class="taR">-</td>';
            }
            $receiptL [$this->OTHER] ='<td class="colGreen taR">-</td>';
            foreach ( $aiList[$this->OTHER] as $va ) {
                $receiptL [$this->OTHER] .='<td class="taR">-</td>';
            }
            $receiptL ['报销金额调整'] = '<td class="taR colOrange">-</td>';
		}
		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 = '<br><div><style></style>
    <table style="background-color:#fff; width:100%;" cellpadding="0" cellspacing="0"><tbody>
      <tr><td><table style="background-color:#fff; width:640px;" cellpadding="0" cellspacing="0" align="center"><tbody>
          <tr><td style="background-color:#8E0950;padding:30px 0 40px;" align="center">
           <span style="vertical-align:bottom;font-size:20px;color:#fff;">CLD 邮件提醒</span>
           </td></tr><tr><td><table style="background-color:#fff;border:1px solid #ddd;border-bottom:0px;width:100%;" cellpadding="0" cellspacing="0" align="left">
             <tbody><tr>
               <td style="padding: 0 40px;" align="left">
               <p style="margin-top:40px;margin-bottom:20px;color:#383838;font-size:20px;line-height:32px;">Hi，' . $value ['username'] . '</p>
               </td></tr><tr>
               <td style="padding: 0 40px;" align="left"><p style="margin-top:0px;margin-bottom:40px;color:#383838;font-size:20px;line-height:32px;">美好的一天从今天开始，您需要关注以下事项：</p></td>
              </tr>
             </tbody> </table></td> </tr> <tr><td>
            <table style="background-color:#f5f6f7;width:100%;padding:0 0 20px;border-left:1px solid #ddd;border-right:1px solid #ddd;" cellpadding="0" cellspacing="0" align="left">
             <tbody> <tr><td>
             <p style="margin-top:20px;margin-bottom:10px;margin-left:40px;color:#383838;font-size:18px;font-weight:bold;line-height:36px;">
             	以下报销单完成了审批，等着收款吧：</p>
             </td></tr><tr><td><table style="width:100%;padding-right:30px;" cellpadding="0" cellspacing="0" align="left"> <tbody>';
					
					foreach ( $receiptList as $k => $v ) {
						$category = $Lcategory->getOne ( array (
								'where' => 'cid=' . $v ['cid'],
								'asArray' => true 
						) );
						$html .= '
                  <tr>
                  <td style="border-left:7px solid transparent;" align="left" width="30px"><br></td>
                   <td align="left">
                    <p style="font-size:16px;line-height:22px;margin:0">' . $v ['receiptOrder'] . '</p></td>
                   <td style="" align="left"><p style="font-size:16px;line-height:22px;margin:0">' . $category ['title'] . '</p></td>
                   <td style="" align="left"><p style="font-size:16px;line-height:22px;margin:0">￥' . $v ['sum'] . '元</p></td>
                   <td align="right"><span class="past" style="font-size:16px;line-height:22px;">' . $v ['date'] . '</span></td>
                  </tr>';
					}
					
					$html .= ' </tbody></table></td></tr></tbody></table></td></tr>
          <tr><td style="height:150px;border:1px solid #ddd;border-top:none;background-color:#fff;" align="center"><a href="http://cld.smartcost.com.cn/approval" style="display:block;height:50px;width:260px;background-color:#0390ff;font-weight:normal;font-size:18px;color:white;line-height:50px;text-align:center;text-decoration:none;border-radius:3px;">立即登录</a></td>
          </tr></tbody></table></td> </tr></tbody></table> </div><br>';
					
					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 = '<br><div><style></style> <table style="background-color:#fff; width:100%;" cellpadding="0" cellspacing="0">
     <tbody><tr><td><table style="background-color:#fff; width:640px;" cellpadding="0" cellspacing="0" align="center"><tbody><tr>
           <td style="background-color:#8E0950;padding:30px 0 40px;" align="center">
           <span style="vertical-align:bottom;font-size:20px;color:#fff;">CLD 邮件提醒</span></td>
          </tr><tr><td><table style="background-color:#fff;border:1px solid #ddd;border-bottom:0px;width:100%;" cellpadding="0" cellspacing="0" align="left">
             <tbody><tr><td style="padding: 0 40px;" align="left">
               <p style="margin-top:40px;margin-bottom:20px;color:#383838;font-size:20px;line-height:32px;">Hi，' . $value ['username'] . '</p>
               </td></tr><tr><td style="padding: 0 40px;" align="left"><p style="margin-top:0px;margin-bottom:40px;color:#383838;font-size:20px;line-height:32px;">美好的一天从今天开始，您需要关注以下事项：</p></td>
              </tr></tbody></table></td> </tr> <tr><td><table style="background-color:#f5f6f7;width:100%;padding:0 0 20px;border-left:1px solid #ddd;border-right:1px solid #ddd;" cellpadding="0" cellspacing="0" align="left">
             <tbody><tr><td><p style="margin-top:20px;margin-bottom:10px;margin-left:40px;color:#383838;font-size:18px;font-weight:bold;line-height:36px;">以下报销单需要您的审批：</p></td>
              </tr><tr><td><table style="width:100%;padding-right:30px;" cellpadding="0" cellspacing="0" align="left"><tbody>';
				
				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 .= '
	                  <tr>
	                  <td style="border-left:7px solid transparent;" align="left" width="30px"><br></td>
	                   <td align="left">
	                    <p style="font-size:16px;line-height:22px;margin:0">' . $l ['receiptOrder'] . '</p></td>
	                   <td style="" align="left"><p style="font-size:16px;line-height:22px;margin:0">' . $category ['title'] . '-' . $staffDetile ['username'] . '</p></td>
	                   <td style="" align="left"><p style="font-size:16px;line-height:22px;margin:0">￥' . $l ['sum'] . '元</p></td>
	                   <td align="right"><span class="past" style="font-size:16px;line-height:22px;">' . $l ['date'] . '</span></td>
	                  </tr>';
					}
				}
				$html .= ' 
                 </tbody></table></td></tr> </tbody></table></td></tr><tr>
           <td style="height:150px;border:1px solid #ddd;border-top:none;background-color:#fff;" align="center"><a href="http://cld.smartcost.com.cn/approval" style="display:block;height:50px;width:260px;background-color:#0390ff;font-weight:normal;font-size:18px;color:white;line-height:50px;text-align:center;text-decoration:none;border-radius:3px;">立即登录</a></td>
          </tr></tbody></table></td></tr></tbody></table></div><br>';
				
				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 h5Upload() {
		$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 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.'</br>';
			$num = ( int ) $num;
			// $num =floor($num);
			// $num = round ( $num, 0, PHP_ROUND_HALF_DOWN );
			// echo $num.'</br>';
			// 结束循环
			if ($num == 0) {
				break;
			}
		}
		// echo $c.'</br>';
		$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 .= '<li class="active"><a href="javascript:void(0)">' . $i . '</a></li>';
			else
				$page_c .= '<li><a href="/' . $action . '/' . $i . $get . '">' . $i . '</a></li>';
			
			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;
	}
}

?>