<?php

class flow_oafkClassModel extends flowModel

{
    public function flowrsreplace($rs)
    {
        if($rs['contractNumber']) $rs['contractNumber'] = $this->getContractByTag($rs['contractNumber']);
        return $rs;
    }



	//二级 或一级审批同意之后进行预扣款
	protected function flowcheckbefore($zt, $sm){
		//zt 1代表同意
        if($zt==1){
		$deptdata = m('admin')->getone('id='.$this->adminid,'deptname');
		$option = m('option')->getall('pid = 1497','num,name');//当前部门
 		foreach ($option as $key => $vo) {
 			if($vo['name']==$deptdata['deptname']){
                  $num= $vo['num']; 
 			}
 		}
 		$flowid=$this->getflow();
 		if($flowid['nowcheckname']==$num){
		      $data = m('c_fund_details_fk')->getall('mid='.$this->rs['id'], 'id,cbzx_code,charge_amount');
		      foreach ($data as $key => $vo) {
		      	 $cbzx_code=$vo['cbzx_code'];
		         $sql = " cost_id='$cbzx_code' and status = 1 and  is_default=1";
		      	 $cost = m('c_fund_account')->getone($sql, 'id,freeze_amount');//查询账户表成本中心id
				 $id=$cost['id'];

				 $c_withhold = array(
				   	'fund_account_id' => $id,
				   	'docnum' => $this->rs['docnum'],
				    'cost_id' => $vo['cbzx_code'],
				    'amount' =>  $vo['charge_amount'],
				    'status' => 1,
				    'create_time' => date("Y-m-d H:i:s"),
				    'uid' => $this->rs['uid'],
				  );
				 m('c_withhold')->insert($c_withhold);

				//修改冻结余额
				 $freeze = array(
				  'freeze_amount' => $cost['freeze_amount'] + $vo['charge_amount'],
				);
			
				m('c_fund_account')->update($freeze, "`id`='$id'");
		      }
		    }
         }else{
                 $docnum=$this->rs['docnum'];
                 //将单据状态作废余额
                
		         $withhold_cost = m('c_withhold')->getall("docnum='$docnum' and status =1", 'id,cost_id,amount');
       
		         foreach ($withhold_cost as $key => $vo) {
                 //减去冻结金额
                 $cost_id=$vo['cost_id'];
				 $sql = " cost_id='$cost_id' and status = 1 and  is_default=1";
		      	 $fund_account_cost = m('c_fund_account')->getone($sql, 'id,freeze_amount');
              
                 $id=$fund_account_cost['id'];
				 $freeze = array(
				  'freeze_amount' => $fund_account_cost['freeze_amount'] - $vo['amount'],
				);
			   
				m('c_fund_account')->update($freeze, "`id`='$id'");
              
			    }


				 $status = array(
				  'status' => 0,
				 );
				 m('c_withhold')->update($status, "docnum='$docnum'");
         }
     }
    
   //流程全部完成后调用
	 protected function flowcheckfinsh($zt){

         
			$docnum=$this->rs['docnum'];
			$withhold_cost = m('c_withhold')->getall("docnum='$docnum' and status =1", 'id,cost_id,amount');
       
		    foreach ($withhold_cost as $key => $vo) {
           // 扣除账户余额 c_fund_account account_balance
           
			$cbzxid= $vo['cost_id'];
			$model = 'c_fund_account';
			$sql = " cost_id ='$cbzxid' and status = 1 and  is_default=1";
			$data = m($model)->getone($sql,'id,name,account_balance,freeze_amount');

			$zfarr = array(
			'account_balance'        =>$data['account_balance']-$vo['amount'],
			);
			$id=$data['id'];
			m('c_fund_account')->update($zfarr,"`id`='$id'");
            
            $freeze = array(
		    'freeze_amount' => $data['freeze_amount'] - $vo['amount'],
				);
			   
		    m('c_fund_account')->update($freeze, "`id`='$id'");

			   // 成本中心 amount 变更
			$cbzx = substr($cbzxid,0,strrpos($cbzxid,"（"));
			$cbzxsql = " code ='$cbzx' and status = 1";

			$cbzxdata = m('c_cbzx')->getone($cbzxsql,'id,amount');
			$cbarr = array(
			'amount'        =>$cbzxdata['amount']+$vo['amount'],
			);
            m('c_cbzx')->update($cbarr,"`code`='$cbzx'");
             //账户明细 c_account_detail
			$account_detail=array(
			'account' => $data['name'],
			'opt_type' => 2,
			'amount' =>$vo['amount'],
			'trans_numb' => $this->rs['docnum'],
			'account_balance' => $data['account_balance']-$vo['amount'],
			'create_time'  =>date("Y-m-d H:i:s"),
			'uid'  =>$this->rs['uid'],
			);

			m('c_account_detail')->insert($account_detail);

			 // 业务付款8业务预付款10费用报销11 oa_c_fund_detail


          $fund_detail=array(
			'trans_numb' =>$this->rs['docnum'],
			'account' =>  $data['name'],
			'toaccount' =>$this->rs['payee'],
			'trans_amount' =>$vo['amount'],
			'business_type' =>8,
			'opt_type' =>2,
			'account_balance'=>$data['account_balance']-$vo['amount'],
			 'create_time'  =>date("Y-m-d H:i:s"),
			'uid'  =>$this->rs['uid'],
			);
			m('c_fund_detail')->insert($fund_detail);

		 }

		  
	}
}