<?php
/**
 * 预付款申请接口
 * Class opencatClassAction
 */
class openoayfkClassAction extends openapiAction
{
    public function __call($name, $arguments)
    {
        $msg = $name.' action not found';
        return $this->showreturn([],$msg,'201');
    }


    //预付款申请列表
    public function listAction(){
        
        
        $sql  = 'select id,fbillno,status from [Q]c_fininfom_oayfk  where status=0 and fbillno is NOT null';
        $dataarr = $this->db->getall($sql);
foreach ($dataarr as $key => $value) {
    


         $cloudUrl = "http://36.110.39.211/k3cloud/";
         //登陆参数
         $data = array(
         '5ef2c166ad1afa',//帐套Id
         'Administrator',//用户名
         '666666',//密码
         '2052'//语言标识359010087
         );
         //定义记录Cloud服务端返回的Session
         $cookie_jar = tempnam('/tmp','CloudSession');
         $post_content = self::create_postdata($data);
         $result = self::invoke_login($cloudUrl,$post_content,$cookie_jar);
        $data_model='{
        "FormId": "AP_PAYBILL",
        "FieldKeys": "FSRCBILLNO,FBillNo,FDOCUMENTSTATUS,FPAYTOTALAMOUNTFOR,FPOSTDATE ",
        "FilterString": "",
        "OrderString": "",
        "TopRowCount": 0,
        "StartRow": 0,
        "Limit": 0
        }';


        $model=json_decode($data_model,true);
        $model['FilterString']="FSRCBILLNO ="."'".$value['fbillno']."'";

        $data_model=json_encode($model);
         $data = array(
         $data_model//具体Json字串
         );
      
         $post_content = self::create_postdata($data);
         $result = self::invoke_save($cloudUrl,$post_content,$cookie_jar);
         $array = json_decode($result,true);
   
       
         if(count($array)>1){

            $key = ['FSRCBILLNO','FBillNo','FDOCUMENTSTATUS','FPAYTOTALAMOUNTFOR','FPOSTDATE' ];
            $new_array = array();
            foreach($array as $k=>$v) {
            $new_array[$k] = array_combine($key,$v);

            }
            // 计算金钱
             $sum = 0;
            foreach($new_array as $ke =>$item){
            if($item['FDOCUMENTSTATUS']=='C'){
             $sum += (int)$item['FPAYTOTALAMOUNTFOR'];

            $payflow = $this->db->getone('[Q]finifom_oayfk_paymentflow',"`fbillno`='".$new_array[$ke]['FBillNo']."'",'id,fbillno');
            $fbillno=$new_array['FSRCBILLNO'];
            $datalist = $this->db->getone('[Q]c_fininfom_oayfk',"`fbillno`='".$value['fbillno']."'",'id,fbillno,amountOfThisPayment');
    if(!$payflow ){
    $paymentflow=array(
    'fsrcbillno'        =>$new_array[$ke]['FSRCBILLNO'],
    'fbillno'        =>$new_array[$ke]['FBillNo'],
    'fpaytotalamountfor'        =>$new_array[$ke]['FPAYTOTALAMOUNTFOR'],
    'mid'        =>$datalist['id'],
    'date'        =>substr($new_array[$ke]['FPOSTDATE'],0,strpos($new_array[$ke]['FPOSTDATE'], 'T'))
    );
    m('finifom_oayfk_paymentflow')->insert($paymentflow);

    }
             }
            }
         
          if($datalist['amountOfThisPayment']==$sum){

               m('c_fininfom_oayfk')->update('`status`=1',$datalist['id']);
                $zfarr = array(
                'status'        =>1,
                'nowcourseid'       => 0,
                'nowcheckid'       => NULL,
                'nowcheckname'    => NULL,
                'nstatustext'  => '尹再伟处理同意',
                );
                m('flow_bill')->update($zfarr,'mid='.$datalist['id'].'');

                $addarr = array(
                'table'     => 'c_fininfom_oayfk',
                'mid'       => $datalist['id'],
                'status' => 1,
                'statusname'   => '同意',
                'name'     => '出纳付款',
                'courseid'  => 310,
                'optdt'    => date("Y-m-d H:i:s"),
                'explain'  => '系统自动确认',
                'ip'        => '0.0.0.0',
                'web'       =>'Chrome',
                'checkname'    =>'尹再伟',
                'checkid'    =>1085,
                'modeid'    =>103,
                'color'    =>'green',
                'valid'    =>1,
                'step'    =>5,
                'qmimg'    =>NULL,
                'iszb'    =>0
                );
                m('flow_log')->insert($addarr);
                echo '成功';
          }
  

           
         }else{

          $key = ['FSRCBILLNO','FBillNo','FDOCUMENTSTATUS','FPAYTOTALAMOUNTFOR','FPOSTDATE' ];
          $new_array = array();
          foreach($array as $k=>$v) {
          $new_array= array_combine($key,$v);
          }
          $fbillno=$new_array['FSRCBILLNO'];
          $datalist = $this->db->getone('[Q]c_fininfom_oayfk',"`fbillno`='".$fbillno."'",'id,fbillno,amountOfThisPayment');
          if($new_array['FDOCUMENTSTATUS']=='C'){
          $payflow = $this->db->getone('[Q]finifom_oayfk_paymentflow',"`fbillno`='".$new_array['FBillNo']."'",'id,fbillno');
          if(!$payflow ){
             $paymentflow=array(
              'fsrcbillno'        =>$new_array['FSRCBILLNO'],
              'fbillno'        =>$new_array['FBillNo'],
              'fpaytotalamountfor'        =>$new_array['FPAYTOTALAMOUNTFOR'],
               'mid'        =>$datalist['id'],
              'date'        =>substr($new_array['FPOSTDATE'],0,strpos($new_array['FPOSTDATE'], 'T'))
            );
            m('finifom_oayfk_paymentflow')->insert($paymentflow);

          }
           

          
            if($datalist['amountOfThisPayment']==$new_array['FPAYTOTALAMOUNTFOR']){
              m('c_fininfom_oayfk')->update('`status`=1',$datalist['id']);
                $zfarr = array(
                'status'        =>1,
                'nowcourseid'       => 0,
                'nowcheckid'       => NULL,
                'nowcheckname'    => NULL,
                'nstatustext'  => '尹再伟处理同意',
                );
                m('flow_bill')->update($zfarr,'mid='.$datalist['id'].'');

               $addarr = array(
                'table'     => 'c_fininfom_oayfk',
                'mid'       => $datalist['id'],
                'status' => 1,
                'statusname'   => '同意',
                'name'     => '出纳付款',
                'courseid'  => 310,
                'optdt'    => date("Y-m-d H:i:s"),
                'explain'  => '系统自动确认',
                'ip'        => '0.0.0.0',
                'web'       =>'Chrome',
                'checkname'    =>'尹再伟',
                'checkid'    =>1085,
                'modeid'    =>103,
                'color'    =>'green',
                'valid'    =>1,
                'step'    =>5,
                'qmimg'    =>NULL,
                'iszb'    =>0
                );
                m('flow_log')->insert($addarr);

              echo "成功1";
              }
            }
         } 

      }
       
       
       
    }

      //登陆
   static     function invoke_login($cloudUrl,$post_content,$cookie_jar)
        {
                $loginurl = $cloudUrl.'Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc';
                return self::invoke_post($loginurl,$post_content,$cookie_jar,TRUE);
        }
        //表单查询

    static    function invoke_save($cloudUrl,$post_content,$cookie_jar)
        {
                $invokeurl = $cloudUrl.'Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.ExecuteBillQuery.common.kdsvc';
                return self::invoke_post($invokeurl,$post_content,$cookie_jar,FALSE);
        }
        //添加
 
     static   function invoke_post($url,$post_content,$cookie_jar,$isLogin)
        {
                $ch = curl_init($url);

                $this_header = array(
                        'Content-Type: application/json',
                        'Content-Length: '.strlen($post_content)
                );

                curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
                curl_setopt($ch, CURLOPT_HTTPHEADER, $this_header);
                curl_setopt($ch, CURLOPT_POSTFIELDS, $post_content);
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                if($isLogin){
                        curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar);
                }
                else{
                        curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_jar);
                }
                curl_setopt($ch, CURLOPT_TIMEOUT, 5);

                $result = curl_exec($ch);
                curl_close($ch);

                return $result;
        }

        //构造Web API请求格式
       static     function create_postdata($args) {
             $postdata = array(
                    'format'=>1,
                'useragent'=>'ApiClient',
                'rid'=>self::create_guid(),
                'parameters'=>$args,
                'timestamp'=>date('Y-m-d'),
                'v'=>'1.0'
            );
            return json_encode($postdata);
        }

        //生成guid
        static    function create_guid() {
            $charid = strtoupper(md5(uniqid(mt_rand(), true)));
            $hyphen = chr(45);// "-"
            $uuid = chr(123)// "{"
            .substr($charid, 0, 8).$hyphen
            .substr($charid, 8, 4).$hyphen
            .substr($charid,12, 4).$hyphen
            .substr($charid,16, 4).$hyphen
            .substr($charid,20,12)
            .chr(125);// "}"
            return $uuid;
        }
 
}