35, 'enterpriseId' => 64, 'id' => 9, 'type' => 5, ]; $objMReceivable->createReceivable($params); } public function testk3() { //K/3 Cloud 业务站点地址 $cloudUrl = "http://123.206.51.139/k3cloud/"; //登陆参数 $data = array( '597be128163613',//帐套Id '秦统业',//用户名 'Cwb20141222',//密码 2052//语言标识 ); //定义记录Cloud服务端返回的Session $cookie_jar = tempnam('./tmp','CloudSession'); $post_content = self::create_postdata($data); //$result = invoke_login($cloudUrl,$post_content,$cookie_jar); $loginurl = $cloudUrl.'Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc'; $result = self::invoke_post($loginurl,$post_content,$cookie_jar,TRUE); header("Content-type: text/html; charset=gb2312"); //echo '
';print_r('登陆请求数据:');
        //echo '
';print_r($post_content);

        //echo '
';print_r('登陆返回结果:');
        //echo '
';print_r($result);





        unset($post_content);
        unset($result);
        unset($data);
        /*$data = array(
            'FormId'=>'STK_Inventory',//业务对象表单Id(必录)
            'TopRowCount'=>0, // 最多允许查询的数量,0或者不要此属性表示不限制
            'Limit'=>10,
            'StartRow'=>0,
            'OrderString'=>'FID ASC',
            'FieldKeys'=>'FMaterialId,FMaterialId.FNumber,FStockName,FMaterialName,FBaseQty,FStockStatusId,FStockOrgId.FNumber',//字段keys,字符串类型用逗号分隔,比如"key1,key2..."(必录)
            'FilterString'=>"FMaterialId=147946",//过滤(非必录)
        );*/

        /*$k3GoodsInfo = '{"FormId":"STK_Inventory","FieldKeys":"FMaterialId.FNumber,FMaterialName,FStockUnitId.FName,FBaseQty",
                                    "FilterString":"FMaterialId=147946 and ( FStockName = \'菏泽G1库\' or FStockName = \'绿源冷库\' or FStockName = \'绿源冷库3号库\' )",
                                    "OrderString":"","TopRowCount":"0","StartRow":"0","Limit":"100"}';*/

        $data = array(
            'FormId'=>'STK_Inventory',//业务对象表单Id(必录)
            'TopRowCount'=>0, // 最多允许查询的数量,0或者不要此属性表示不限制
            'Limit'=>100,
            'StartRow'=>0,
            'OrderString'=>'',
            'FieldKeys'=>'FMaterialId,FMaterialId.FNumber,FStockName,FMaterialName,FBaseQty,FStockStatusId,FStockOrgId.FNumber',//字段keys,字符串类型用逗号分隔,比如"key1,key2..."(必录)
            'FilterString'=>"FMaterialId.FNumber ='0602070004' and (FStockName = '菏泽G1库' or FStockName = '绿源冷库' or FStockName = '绿源冷库3号库') and FStockOrgId.FNumber='101' ",//过滤(非必录)
        );


        //定义记录Cloud服务端返回的Session
        $post_content = self::create_postdata([$data]);

        $url = $cloudUrl.'Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.ExecuteBillQuery.common.kdsvc';
        $result = self::invoke_post($url,$post_content,$cookie_jar,false);

        header("Content-type: text/html; charset=gb2312");
        //echo '
';print_r('及时库存请求数据:');
        //echo '
';print_r($post_content);

        //echo '
';print_r('及时库存返回结果:');
        echo '
';var_dump(json_decode($result, true));

        $k3Weight = 0.00;
        $resultArray = json_decode($result, true);
        if(!empty($resultArray)){
            foreach ($resultArray as $key => $value){
                $k3Weight += $value[4];
            }
        }
        var_dump($k3Weight);
        return $k3Weight;
    }

    public function testk4()
    {
        //K/3 Cloud 业务站点地址
        $cloudUrl = "http://123.206.51.139/k3cloud/";

        //登陆参数
        $data = array(
            '597be128163613',//帐套Id
            '秦统业',//用户名
            'Cwb20141222',//密码
            2052//语言标识
        );

        //定义记录Cloud服务端返回的Session
        $cookie_jar = tempnam('./tmp','CloudSession');
        $post_content = self::create_postdata($data);

        //$result = invoke_login($cloudUrl,$post_content,$cookie_jar);
        $loginurl = $cloudUrl.'Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc';
        $result = self::invoke_post($loginurl,$post_content,$cookie_jar,true);

        header("Content-type: text/html; charset=gb2312");
        echo '
';print_r('登陆请求数据:');
        echo '
';print_r($post_content);

        echo '
';print_r('登陆返回结果:');
        echo '
';print_r($result);





        unset($post_content);
        unset($result);
        unset($data);
        /*$data = array(
            'FormId'=>'STK_Inventory',//业务对象表单Id(必录)
            'TopRowCount'=>0, // 最多允许查询的数量,0或者不要此属性表示不限制
            'Limit'=>10,
            'StartRow'=>0,
            'OrderString'=>'FID ASC',
            'FieldKeys'=>'FMaterialId,FMaterialId.FNumber,FStockName,FMaterialName,FBaseQty,FStockStatusId,FStockOrgId.FNumber',//字段keys,字符串类型用逗号分隔,比如"key1,key2..."(必录)
            'FilterString'=>"FMaterialId=147946",//过滤(非必录)
        );*/

        /*$k3GoodsInfo = '{"FormId":"STK_Inventory","FieldKeys":"FMaterialId.FNumber,FMaterialName,FStockUnitId.FName,FBaseQty",
                                    "FilterString":"FMaterialId=147946 and ( FStockName = \'菏泽G1库\' or FStockName = \'绿源冷库\' or FStockName = \'绿源冷库3号库\' )",
                                    "OrderString":"","TopRowCount":"0","StartRow":"0","Limit":"100"}';*/


        $data = '{"Model":{"FNumber":"xyc2218","FCreateOrgId":{"FNumber":"101"},"FUseOrgId":{"FNumber":"101"},"FName":"u5218u5e05uff08u4ebfu6210u98dfu54c1u5185u90e8u5458u5de5uff09","FTEL":"18114640037","FADDRESS":"u5c71u4e1cu7701u6d4eu5357u5e02u5386u4e0bu533au6d4bu8bd5u5730u5740","FSALDEPTID":{"FNumber":"0020"},"FSALGROUPID":{"FNumber":"16"},"FSELLER":{"FNumber":"0020"},"FCustTypeId":{"FNumber":"KHLB001_SYS"},"FTRADINGCURRID":{"FNumber":"PRE001"},"F_PAEZ_Assistant3":{"FNumber":"0101"},"F_PAEZ_Assistant5":{"FNumber":"01"}},"Creator":"u4ebfu6210u5546u57ce"}';

        //定义记录Cloud服务端返回的Session
        $post_content = self::create_postdata(["BD_Customer",$data]);

        $url = $cloudUrl.'Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save.common.kdsvc';
        $result = self::invoke_post($url,$post_content,$cookie_jar,false);

        //header("Content-type: text/html; charset=gb2312");
        //echo '
';print_r('及时库存请求数据:');
        echo '
';print_r($post_content);

        //echo '
';print_r('及时库存返回结果:');
        //file_put_contents('/tmp/11.log',var_export($result,true),FILE_APPEND);
        V($result);

    }


    // 采购入库单
    public function testk5()
    {
        //K/3 Cloud 业务站点地址
        $cloudUrl = "http://123.206.51.139/k3cloud/";

        //登陆参数
        $data = array(
            '597be128163613',//帐套Id
            '秦统业',//用户名
            'Cwb20141222',//密码
            2052//语言标识
        );

        //定义记录Cloud服务端返回的Session
        $cookie_jar = tempnam('./tmp','CloudSession');
        $post_content = self::create_postdata($data);

        //$result = invoke_login($cloudUrl,$post_content,$cookie_jar);
        $loginurl = $cloudUrl.'Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc';
        $result = self::invoke_post($loginurl,$post_content,$cookie_jar,TRUE);

        header("Content-type: text/html; charset=gb2312");
        //echo '
';print_r('登陆请求数据:');
        //echo '
';print_r($post_content);

        //echo '
';print_r('登陆返回结果:');
        //echo '
';print_r($result);





        unset($post_content);
        unset($result);
        unset($data);
        /*$data = array(
            'FormId'=>'STK_Inventory',//业务对象表单Id(必录)
            'TopRowCount'=>0, // 最多允许查询的数量,0或者不要此属性表示不限制
            'Limit'=>10,
            'StartRow'=>0,
            'OrderString'=>'FID ASC',
            'FieldKeys'=>'FMaterialId,FMaterialId.FNumber,FStockName,FMaterialName,FBaseQty,FStockStatusId,FStockOrgId.FNumber',//字段keys,字符串类型用逗号分隔,比如"key1,key2..."(必录)
            'FilterString'=>"FMaterialId=147946",//过滤(非必录)
        );*/

        /*$k3GoodsInfo = '{"FormId":"STK_Inventory","FieldKeys":"FMaterialId.FNumber,FMaterialName,FStockUnitId.FName,FBaseQty",
                                    "FilterString":"FMaterialId=147946 and ( FStockName = \'菏泽G1库\' or FStockName = \'绿源冷库\' or FStockName = \'绿源冷库3号库\' )",
                                    "OrderString":"","TopRowCount":"0","StartRow":"0","Limit":"100"}';*/

        $data = array(
            'FormId'=>'STK_InStock',//业务对象表单Id(必录)
            'TopRowCount'=>0, // 最多允许查询的数量,0或者不要此属性表示不限制
            'Limit'=>1,
            'StartRow'=>0,
            'OrderString'=>'FBillNo desc',
            'FieldKeys'=>'FMaterialId.FNumber,FID,FDate,FBillNo,FDocumentStatus,FMaterialId,FStockStatusid,FMaterialName',//字段keys,字符串类型用逗号分隔,比如"key1,key2..."(必录)
            'FilterString'=>"FMaterialId.FNumber ='01110101010001',FDocumentStatus = 'c'",//过滤(非必录)
        );


        //定义记录Cloud服务端返回的Session
        $post_content = self::create_postdata([$data]);

        $url = $cloudUrl.'Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.ExecuteBillQuery.common.kdsvc';
        $result = self::invoke_post($url,$post_content,$cookie_jar,false);

        header("Content-type: text/html; charset=gb2312");
        //echo '
';print_r('及时库存请求数据:');
        //echo '
';print_r($post_content);

        //echo '
';print_r('及时库存返回结果:');
        V(json_decode($result, true));
    }


    // 销售退货单
    public function testk6()
    {
        //K/3 Cloud 业务站点地址
        $cloudUrl = "http://123.206.51.139/k3cloud/";

        //登陆参数
        $data = array(
            '597be128163613',//帐套Id
            '秦统业',//用户名
            'Cwb20141222',//密码
            2052//语言标识
        );

        //定义记录Cloud服务端返回的Session
        $cookie_jar = tempnam('./tmp','CloudSession');
        $post_content = self::create_postdata($data);

        //$result = invoke_login($cloudUrl,$post_content,$cookie_jar);
        $loginurl = $cloudUrl.'Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc';
        $result = self::invoke_post($loginurl,$post_content,$cookie_jar,TRUE);

        header("Content-type: text/html; charset=gb2312");
        //echo '
';print_r('登陆请求数据:');
        //echo '
';print_r($post_content);

        //echo '
';print_r('登陆返回结果:');
        //echo '
';print_r($result);





        unset($post_content);
        unset($result);
        unset($data);
        /*$data = array(
            'FormId'=>'STK_Inventory',//业务对象表单Id(必录)
            'TopRowCount'=>0, // 最多允许查询的数量,0或者不要此属性表示不限制
            'Limit'=>10,
            'StartRow'=>0,
            'OrderString'=>'FID ASC',
            'FieldKeys'=>'FMaterialId,FMaterialId.FNumber,FStockName,FMaterialName,FBaseQty,FStockStatusId,FStockOrgId.FNumber',//字段keys,字符串类型用逗号分隔,比如"key1,key2..."(必录)
            'FilterString'=>"FMaterialId=147946",//过滤(非必录)
        );*/

        /*$k3GoodsInfo = '{"FormId":"STK_Inventory","FieldKeys":"FMaterialId.FNumber,FMaterialName,FStockUnitId.FName,FBaseQty",
                                    "FilterString":"FMaterialId=147946 and ( FStockName = \'菏泽G1库\' or FStockName = \'绿源冷库\' or FStockName = \'绿源冷库3号库\' )",
                                    "OrderString":"","TopRowCount":"0","StartRow":"0","Limit":"100"}';*/

        $data = array(
            'FormId'=>'STK_InStock',//业务对象表单Id(必录)
            'TopRowCount'=>0, // 最多允许查询的数量,0或者不要此属性表示不限制
            'Limit'=>1,
            'StartRow'=>0,
            'OrderString'=>'FBillNo desc',
            'FieldKeys'=>'FMaterialId.FNumber,FID,FDate,FBillNo,FDocumentStatus,FMaterialId,FStockStatusid,FMaterialName',//字段keys,字符串类型用逗号分隔,比如"key1,key2..."(必录)
            'FilterString'=>"FMaterialId.FNumber ='01110101010001',FDocumentStatus = 'c'",//过滤(非必录)
        );


        //定义记录Cloud服务端返回的Session
        $post_content = self::create_postdata([$data]);

        $url = $cloudUrl.'Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.ExecuteBillQuery.common.kdsvc';
        $result = self::invoke_post($url,$post_content,$cookie_jar,false);

        header("Content-type: text/html; charset=gb2312");
        //echo '
';print_r('及时库存请求数据:');
        //echo '
';print_r($post_content);

        //echo '
';print_r('及时库存返回结果:');
        V(json_decode($result, true));
    }









    //构造Web API请求格式
    public 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);
    }

    public 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;
    }

    public 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, 30);

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

        return $result;
    }


    public static function s_put_txt()
    {

        $objDOrder = new DOrder('pifabbc');
        $orderData = $objDOrder->query('SELECT order_id,buyer_id,order_no,order_status,created_at,pay_money,payment_type from ns_order');
        foreach ($orderData as $key => $value){
            $buyerids[] = $value['buyer_id'];
            $orderData[$value['order_id']] = $value;
        }


        $objDusersCategory = new DUsersCategory('pifabbc');
        $infos = $objDusersCategory ->query('SELECT
                     t.id,
                     t.user_id as user_id,
                    t.contact_phone,
                    t.legal_person,
                    r.referee_name,
                    g.group_name,
                    c.id as category_id,
                    c.category_name,
                    c.pid,
                    t.check_status,
                    t.company_address,
                    t.detail_address,
                    t.erp_no
                FROM
                    cloud_users_testify AS t,
                    cloud_referee AS r,
                    cloud_referee_group AS g,
                    cloud_users_category AS c
                WHERE
                    t.referrer_no = r.referee_no
                    AND t.referrer_group_no = g.group_no
                    AND t.category_id = c.id and t.user_id in ('.implode(',', $buyerids).')');

        if (!empty($infos)){
            foreach ($infos as $key => $value) {
                if ($value['pid'] != 0) {
                    $data = self::s_handle($value);
                }
                $info = array_merge($value, $data);
                $data_file = implode(',', $info);

                $userData[$value['user_id']] = $data_file;
            }
        }

        foreach ($orderData as $key => $value){
            $content = $userData[$value['user_id']].','.implode(',', $value);
            file_put_contents('order.txt',$content . PHP_EOL,FILE_APPEND) ;
            unset($content);
        }


//        $data_file = implode(',', $file);
//
//        file_put_contents('cat.txt', $data_file);
    }

    public static function s_handle(&$info_value)
    {
        $objDusersCategory = new DUsersCategory();
        $id = $info_value['pid'];
        $detail = $objDusersCategory->get($id);
        if (!empty($detail)) {
            $info_value[] = $detail['category_name'];
            $info_value['pid'] = $detail['pid'];
            self::s_handle($info_value);
        }
        return $info_value;
    }

    //php ./Jobs/Public/www/index.php --c=Test --a=userErpReset
    public static function userErpReset(){
        $objectDCloudUsers = new DCloudUsers();
        $objectDUsersTestify = new DUsersTestify();
        $fileName = 'k3id.txt';
        /*
 * 逐行读取TXT文件
 */
            $file = fopen($fileName,'r');

            $content = array();
            if(!$file){
                return 'file open fail';
            }else{
                $i = 0;
                while (!feof($file)){
                    $content = mb_convert_encoding(fgets($file),"UTF-8","GBK,ASCII,ANSI,UTF-8");
//print_r($content);

                    $data = explode(',',$content);

                    $info = $objectDUsersTestify -> get(['erp_no' => $data[1]]);

                    if (empty($info)){
                        echo 0;
                        continue;
                    }else{
                        $res = $objectDUsersTestify ->update(['k3_id'=>$data[0]],['erp_no' => $data[1]]);

                        echo $res;

                    }



                }
//                fclose($file);
//                $content = array_filter($content); //数组去空
            }

//            return $content;




    }

    //php ./Jobs/Public/www/index.php --c=Test --a=resetErpNo
    public static function resetErpNo(){
        $log ='';
        $objectDCloudUsers = new DCloudUsers();
        $objectDUsersTestify = new DUsersTestify();
        $sql = "select *from cloud_users_testify WHERE  SUBSTR(erp_no,1,3) !='xyc'";
        $data = $objectDUsersTestify ->query($sql);

        $log .= 'ID,客户新编号,客户旧编号,客户推荐人编码,客户推荐人组织编码,客户推荐人电话'.PHP_EOL;
        $K3Handle = new K3Handle();
        foreach($data as $value){

            $id = $value['id'];
//V($value);

            if(!$value['erp_no']){
                continue;
            }
            $erp_no = 'xyc'.$value['user_id'];
            $res = $objectDUsersTestify -> update(['erp_no'=>$erp_no],['id'=>$id]);
            $res = $K3Handle ->store($value,$erp_no);
            if ($res['code'] !=200){
continue;
            }
            $log .= $id.','.$erp_no.','.$value['erp_no']?:'空'.','.$value['referrer_no'].','.$value['referrer_group_no'].','.$value['referrer_phone'].PHP_EOL;
        }
        file_put_contents('update_erp_no.txt',$log,FILE_APPEND);
    }




//php ./Jobs/Public/www/index.php --c=Test --a=export
    public static function export(){

       $objDOrder = new DOrder('pifabbc');
         $orderData = $objDOrder->query('SELECT sum(pay_money) as order_money ,count(order_id) as total_count,buyer_id  from ns_order where order_status <>5 group by buyer_id');
         $a =[];
        foreach ($orderData as $key => $value){
        //$buyerids[] = $value['buyer_id'];
        $a[$value['buyer_id']] = $value;
        }
        $objDusersCategory = new DUsersCategory('pifabbc');
        $infos = $objDusersCategory ->query('SELECT
                             t.id,
                             t.user_id as user_id,
                            t.contact_phone,
                            t.legal_person,
                            r.referee_name,
                            g.group_name,
                            c.id as category_id,
                            c.category_name,
                            c.pid,
                            t.check_status,
                            t.company_address,
                            t.detail_address,
                            t.erp_no
                        FROM
                            cloud_users_testify AS t,
                            cloud_referee AS r,
                            cloud_referee_group AS g,
                            cloud_users_category AS c
                        WHERE
                            t.referrer_no = r.referee_no
                            AND t.referrer_group_no = g.group_no
                            AND t.category_id = c.id and t.user_id ');
        $user =[];


        if (!empty($infos)){
            foreach ($infos as $key => $value) {
                if ($value['pid'] != 0) {
                    $data = self::s_handle($value);
                }
                $user[$value['user_id']] = $data;
            }
        }

        foreach ($user as $key => $value){
            echo 1 .'//';
            echo ($key);
//            $orderMoney = $objDOrder->query("SELECT sum('pay_money') as order_money ,count('order_id') as total_count from ns_order where order_status <>5 and buyer_id = $key");
            $lastTime = $objDOrder->query("SELECT created_at from ns_order where order_status <>5 and buyer_id = $key ORDER by  order_id DESC limit 0,1");

            if (isset($a[$key])){
                $content = implode(',', $value).','.'总金额:'.$a[$key]['order_money']?:0;
                $content .= ',订单数:'.$a[$key]['total_count']?:0 ;
                $content .= ',最后下单时间:'.$lastTime[0]['created_at']?:0 ;
            }else{
                $content = implode(',', $value);
            }
    file_put_contents('export.txt',$content . PHP_EOL,FILE_APPEND) ;
    unset($content);

        }
    }

    public function ce(){
        $objDOrder = new DOrder('pifabbc');

        $lastTime = $objDOrder->query("SELECT created_at from ns_order where order_status <>5 and buyer_id = 4739 ORDER by  order_id DESC limit 0,1");
        V($lastTime);
    }

    public function jpush()
    {
        $swResult = Middleware::getInstance('ThirdPartyService')->sendSwoole('Jpush', 'broadcastPush', ['alias'=>['7581'],'content'=>'优鲜供应链新版即将发布']);
        if( !$swResult['state'] ){
            V( $swResult['data']);
        }else{
            V($swResult['data']);
        }
    }
}