提交 8fc33f9d authored 作者: chengye's avatar chengye

合并资金账户改动代码

...@@ -61,10 +61,21 @@ class mode_fund_transferClassAction extends inputAction{ ...@@ -61,10 +61,21 @@ class mode_fund_transferClassAction extends inputAction{
$numb = $this->get('account'); $numb = $this->get('account');
$model = 'c_fund_account'; $model = 'c_fund_account';
$sql = " id =$numb"; $sql = " id =$numb";
$cdata = m($model)->getone($sql,'id,name,level'); $cdata = m($model)->getone($sql,'id,name,pid,level');
$level=$cdata['level']; if($cdata['level']==1){
$levelto=$cdata['level']+1; $level=$cdata['level'];
$sqla = " id !=$numb and level =$level or level =$levelto"; $levelto=$cdata['level']+1;
$sqla = " id !=$numb and level =$level or level =$levelto";
}elseif($cdata['level']==2){
$sqla = " id !=$numb and (level =1 or level =2 or pid= $numb)";
}else{
$pid=$cdata['pid'];
$sqla = " id !=$numb and pid=$pid or id=$pid";
}
$data = m($model)->getall($sqla,'id as value,name'); $data = m($model)->getall($sqla,'id as value,name');
$this->returnjson($data); $this->returnjson($data);
} }
......
...@@ -152,4 +152,11 @@ class CommonClassModel extends Model ...@@ -152,4 +152,11 @@ class CommonClassModel extends Model
$data = m('assetm')->getall('state = 0', 'id as value, CONCAT(num, "(",title,")") as name'); $data = m('assetm')->getall('state = 0', 'id as value, CONCAT(num, "(",title,")") as name');
return $data; return $data;
} }
//借款单(已审核)
public function getfingrjkList()
{
$data = m('c_fininfom_jk')->getall('status = 1', 'id as value, CONCAT(docnum, "金额:(",amount,")") as name');
return $data;
}
} }
...@@ -5,14 +5,18 @@ class flow_account_detailClassModel extends flowModel ...@@ -5,14 +5,18 @@ class flow_account_detailClassModel extends flowModel
public function flowrsreplace($rs) public function flowrsreplace($rs)
{ {
$uid=$this->adminid;
$sql="account in ( select a.name from oa_c_fund_account as a where uid like concat({$uid},',%') or uid like concat('%,',{$uid}) or uid like concat('%,',{$uid},',%') )";
$fund_detail = m('c_fund_detail')->getall($sql,'account');
foreach ($fund_detail as $key => $value){
$allaccount[]=$value['account'];
}
foreach ($rs as $k => &$v) { foreach ($rs as $k => &$v) {
if($k=='business_type'){
if($v !==12){
$v="<a href='http://oa-test.gonn.tech/task.php?a=p&num=oafk&mid=44'>$v </a>";
}
}
switch ($k) { switch ($k) {
case 'opt_type': case 'opt_type':
if($v == 1) { if($v == 1) {
...@@ -24,29 +28,62 @@ class flow_account_detailClassModel extends flowModel ...@@ -24,29 +28,62 @@ class flow_account_detailClassModel extends flowModel
$v = ''; $v = '';
} }
break; break;
case 'trans_numb': case 'trans_numb':
if($v == 1) {
$v = '收入'; $arr=$this->getnums($v);
if($arr){
} else if($v == 2) { $num=$arr['num'];
$v = '支出'; $id=$arr['id'];
} else { $name=$arr['name'];
$v = ''; $v= "<a href='javascript:;' onclick=openxiangs('$name','$num',$id)>$v</a>";
}else{
$v=$v;
} }
break; break;
} case 'account':
if(!in_array($v,$allaccount)){
$rs['account_balance']='***';
}else{
$rs['account_balance']=$rs['account_balance'];
}
break;
}
} }
return $rs; return $rs;
} }
// http://oa-test.gonn.tech/task.php?a=p&num=oafk&mid=44
// case 'business_type': public function getnums($num){
// if($v !==12 ){
// $v="<a href='http://oa-test.gonn.tech/task.php?a=p&num=oafk&mid=44'>$v </a>"; if(strpos($num, 'OA-FK') !==false){
// } $ids = m('c_fininfom_oafk')->getone('docnum = "'.$num.'"','id');
// break; $ids['num']='oafk';
$ids['name']='付款申请单';
// $ids['id']=$ids['id'];
}
if(strpos($num, 'OA-YFK') !==false){
$ids = m('c_fininfom_oayfk')->getone('docnum = "'.$num.'"','id');
$ids['num']='oayfk';
$ids['name']='预付款申请单';
}
if(strpos($num, 'OA-BX') !==false){
$ids = m('fininfom')->getone('docnum = "'.$num.'"','id');
$ids['num']='finfybx';
$ids['name']='费用报销';
}
if(strpos($num, 'FT') !==false){
$ids = m('c_fund_detail')->getone('trans_numb = "'.$num.'"','id');
$ids['num']='fund_transfer';
$ids['name']='资金划拨';
}
if(strpos($num, 'FS') !==false){
$ids = m('c_fund_detail')->getone('trans_numb = "'.$num.'"','id');
$ids['num']='fund_deposit';
$ids['name']='资金入账';
}
return $ids;
}
} }
...@@ -6,18 +6,30 @@ class flow_account_listClassModel extends flowModel ...@@ -6,18 +6,30 @@ class flow_account_listClassModel extends flowModel
public function flowrsreplace($rs) public function flowrsreplace($rs)
{ {
if($rs['uid']){
$uid=explode(',',$rs['uid']);
$admin = m('admin')->getall('status = 1 ','id,name');
foreach ($admin as $key => $vo) {
if(in_array($vo['id'],$uid)){
$name[]=$vo['name'];
}
}
$rs['uid']= implode(",",$name);
}
if($rs['type']){ if($rs['type']){
$data=$this->db->getone('oa_option',"num='".$rs['status']."' and pid=1366"); $data=$this->db->getone('oa_option',"num='".$rs['type']."' and pid=1366");
$rs['type']=$data['name']; $rs['type']=$data['name'];
} }
if($rs['level']){ if($rs['level']){
$data=$this->db->getone('oa_option',"num='".$rs['level']."' and pid=1370"); $data=$this->db->getone('oa_option',"num='".$rs['level']."' and pid=1370");
$rs['level']=$data['name']; $rs['level']=$data['name'];
} }
if($rs['status']){
$data=$this->db->getone('oa_option',"num='".$rs['status']."' and pid=1374"); $data=$this->db->getone('oa_option',"num='".$rs['status']."' and pid=1374");
$rs['status']=$data['name']; $rs['status']=$data['name'];
}
if($rs['currency_type']){ if($rs['currency_type']){
$data=$this->db->getone('oa_option',"num='".$rs['currency_type']."'"); $data=$this->db->getone('oa_option',"num='".$rs['currency_type']."'");
......
...@@ -10,11 +10,17 @@ class flow_cost_centerClassModel extends flowModel ...@@ -10,11 +10,17 @@ class flow_cost_centerClassModel extends flowModel
$data=$this->db->getone('oa_option',"num='".$rs['type']."' and pid=1377"); $data=$this->db->getone('oa_option',"num='".$rs['type']."' and pid=1377");
$rs['type']=$data['name']; $rs['type']=$data['name'];
} }
if($rs['status']){
$data=$this->db->getone('oa_option',"num='".$rs['status']."' and pid=1380"); $data=$this->db->getone('oa_option',"num='".$rs['status']."' and pid=1380");
$rs['status']=$data['name']; $rs['status']=$data['name'];
}
if($rs['pid']){
$data=$this->db->getone('oa_c_cbzx',"id='".$rs['pid']."'");
$rs['pid']=$data['name'];
}
return $rs; return $rs;
} }
......
...@@ -12,54 +12,623 @@ class flow_finfybxClassModel extends flowModel ...@@ -12,54 +12,623 @@ class flow_finfybxClassModel extends flowModel
return $arr; return $arr;
} }
//流程全部完成后调用
protected function flowcheckfinsh($zt)
{ //二级 或一级审批同意之后进行预扣款
protected function flowcheckbefore($zt, $sm){
$id=$this->rs['id'];
$sql = " mid ='$id' and `table`='fininfom' ";
$flow_bill = m('flow_bill')->getone($sql,'allcheckid');
$allcheckid=explode(',',$flow_bill['allcheckid']);
$option = m('option')->getall('pid = 1546 and num =1 order by sort desc','num,name,value,sort');
foreach ($option as $key => $value) {
if(in_array($value['value'], $allcheckid)){
$checkid= $value['value'];
break;
}
}
if(empty($checkid)){
$option = m('option')->getall('pid = 1546 and num =2 order by sort desc','num,name,value,sort,`explain`');
foreach ($option as $key => $value) {
if(in_array($value['value'], $allcheckid)){
$checkid= $value['value'];
$explain= $value['explain'];
break;
}
}
}
//zt 1代表同意
if($zt==1){
$flowid=$this->getflow();
if($explain){
if($flowid['nowcheckid']==$checkid && $flowid['nowcourseid']==$explain){
$data = m('fininfom')->getall('id='.$this->rs['id'], 'id,cbxmid,money');
foreach ($data as $key => $vo) {
$cbzx_code=$vo['cbxmid'];
$sql = " cost_id='$cbzx_code' and status = 1 and is_default=1";
$cost = m('c_fund_account')->getone($sql, 'id,type,freeze_amount,account_balance');//查询账户表成本中心
if($cost['type']=='1'){
if(($cost['account_balance']-$cost['freeze_amount'])<$vo['money']){
return "账户余额不足";die;
}
}
$id=$cost['id'];
$c_withhold = array(
'fund_account_id' => $id,
'docnum' => $this->rs['docnum'],
'cost_id' => $vo['cbxmid'],
'amount' => $vo['money'],
'status' => 1,
'create_time' => date("Y-m-d H:i:s"),
'uid' => $this->rs['uid'],
);
m('c_withhold_fininform')->insert($c_withhold);
//修改冻结余额
$freeze = array(
'freeze_amount' => $cost['freeze_amount'] + $vo['money'],
);
m('c_fund_account')->update($freeze, "`id`='$id'");
}
}
}else{
if($flowid['nowcheckid']==$checkid){
$data = m('fininfom')->getall('id='.$this->rs['id'], 'id,cbxmid,money');
foreach ($data as $key => $vo) {
$cbzx_code=$vo['cbxmid'];
$sql = " cost_id='$cbzx_code' and status = 1 and is_default=1";
$cost = m('c_fund_account')->getone($sql, 'id,type,freeze_amount,account_balance');//查询账户表成本中心
if($cost['type']=='1'){
if(($cost['account_balance']-$cost['freeze_amount'])<$vo['money']){
return "账户余额不足";die;
}
}
$id=$cost['id'];
$c_withhold = array(
'fund_account_id' => $id,
'docnum' => $this->rs['docnum'],
'cost_id' => $vo['cbxmid'],
'amount' => $vo['money'],
'status' => 1,
'create_time' => date("Y-m-d H:i:s"),
'uid' => $this->rs['uid'],
);
m('c_withhold_fininform')->insert($c_withhold);
//修改冻结余额
$freeze = array(
'freeze_amount' => $cost['freeze_amount'] + $vo['money'],
);
m('c_fund_account')->update($freeze, "`id`='$id'");
}
}
}
}else{
$docnum=$this->rs['docnum'];
//将单据状态作废余额
$withhold_cost = m('c_withhold_fininform')->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'];
if($fund_account_cost['freeze_amount']==0){
$freeze = array(
'freeze_amount' => $vo['amount'],
);
}else{
$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_fininform')->update($status, "docnum='$docnum'");
}
// 金蝶
$id=$this->rs['id'];
$sql = " mid ='$id' and `table`='fininfom' ";
$option = m('option')->getall('pid = 1568','`explain`');
foreach ($option as $key => $value) {
$allcheckid[]=$value['explain'];
}
//查询流程为财务确认
$flowid = $this->getflow();
if(in_array($flowid['nowcourseid'],$allcheckid)){
if($flowid['nowcheckid']=='992'){
$data=$this->db->getone('oa_personfile',"name='".$this->rs['applicant']."'");
$gonncode=$data['gonncode'];
// $data['pfbanknum'];//对方银行卡号
// $data['gonncode'];//员工编号
//明细
$oa_fininfos=$this->db->getrows('oa_fininfos',"mid='".$this->rs['id']."'");
$arr=[];
foreach ($oa_fininfos as $k=> $value) {
foreach ($value as $key => $val) {
switch ($key) {
case 'bxType':
$arr['FPAYAPPLYENTRY'][$k]['FCOSTID']['FNUMBER']=self::getbxlx($val);
break;
case 'money':
$arr['FPAYAPPLYENTRY'][$k]['FAPPLYAMOUNTFOR']=$val;
break;
case 'sm':
$arr['FPAYAPPLYENTRY'][$k]['FDescription']=$val;
break;
default:
$arr['FPAYAPPLYENTRY'][$k]['FSETTLETYPEID']['FNumber']='JSFS04_SYS';
$arr['FPAYAPPLYENTRY'][$k]['FPAYPURPOSEID']['FNumber']='SFKYT10_SYS';
$arr['FPAYAPPLYENTRY'][$k]['FENDDATE']=$this->rs['applydt'].' 00:00:00';
$arr['FPAYAPPLYENTRY'][$k]['FEXPECTPAYDATE']=$this->rs['applydt'].' 00:00:00';
$arr['FPAYAPPLYENTRY'][$k]['FEACHBANKACCOUNT']=$data['pfbanknum'];
break;
}
}
}
$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);
header("Content-type: text/html; charset=utf8");
$starttime = microtime(true);
$applicant=$this->rs['applicant'];//申请人
$applicationdpt=$this->rs['applicationdpt'];//申请部门
$applydt=$this->rs['applydt'];//申请日期
$cbxmid=$this->rs['cbxmid'];//成本中心
$cbxmid=substr($cbxmid,0,strpos($cbxmid, "("));
$money=$this->rs['money'];//合计金额
// $applydt=$this->rs['applydt'];//发票日期
// $company_scale=$this->rs['company_scale'];//发票类型
// $web_site=$this->rs['web_site'];//发票号
// $settle_type=$this->rs['settle_type'];//费用科目
// $pay_condition=$this->rs['pay_condition'];// 金额
// $tend_type=$this->rs['tend_type'];// *说明
$data_model ='{
"Creator": "",
"NeedUpDateFields": [],
"NeedReturnFields": [],
"IsDeleteEntry": "true",
"SubSystemId": "",
"IsVerifyBaseDataField": "false",
"IsEntryBatchFill": "true",
"ValidateFlag": "true",
"NumberSearch": "true",
"InterationFlags": "",
"IsAutoSubmitAndAudit": "false",
"Model": {
"FID": 0,
"FBILLTYPEID": {
"FNUMBER": "FKSQ005_SYS"
},
"FDATE": "2020-02-11 00:00:00",
"FCONTACTUNITTYPE": "BD_Empinfo",
"FCONTACTUNIT": {
"FNumber": "GONN-0002"
},
"FRECTUNITTYPE": "BD_Empinfo",
"FRECTUNIT": {
"FNumber": "GONN-0002"
},
"FCURRENCYID": {
"FNumber": "PRE001"
},
"FPAYORGID": {
"FNumber": "1000"
},
"FSETTLEORGID": {
"FNumber": "1000"
},
"FDEPARTMENT": {
"FNumber": ""
},
"F_PAEZ_OADJBH": "123321",
"FDOCUMENTSTATUS": "Z",
"FCANCELSTATUS": "A",
"FMAINBOOKID": {
"FNUMBER": "PRE001"
},
"FIsCredit": false,
"FAPPLYORGID": {
"FNumber": "1000"
},
"FSETTLECUR": {
"FNUMBER": "PRE001"
},
"FISCARRYRATE": false,
"F_PAEZ_Cbzx": {
"FNUMBER": " GS.BJ.B1"
}
}
}';
$model=json_decode($data_model,true);
$model['Model']['F_PAEZ_Cbzx']['FNUMBER']=$cbxmid;
$model['Model']['FDATE']=$applydt;
$model['Model']['FCONTACTUNIT']['FNumber']=$gonncode;
$model['Model']['F_PAEZ_OADJBH']=$this->rs['docnum'];;
$model['Model']['FRECTUNIT']['FNumber']=$gonncode;
$model['Model']['FPAYAPPLYENTRY']=$arr['FPAYAPPLYENTRY'];
$data_model=json_encode($model);
$data = array(
'CN_PAYAPPLY',//业务对象标识FormId
$data_model//具体Json字串
);
$post_content = self::create_postdata($data);
$result = self::invoke_add($cloudUrl,$post_content,$cookie_jar);
$array = json_decode($result,true);
var_dump($array);
if($array['Result']['ResponseStatus']['IsSuccess']){
$num=$array['Result']['Number'];
$this->update("`fbillno`='$num'", $this->rs['id']);
$erp_log=array(
'sericnum'=> $this->rs['docnum'],
'table'=>'fininfom',
'name' => '保存成功',
'remark' => json_encode($array),
'optdt' =>date("Y-m-d H:i:s"),
'level'=>2,
'fbillno'=>$num,
'fbillnoid'=>$array['Result']['Id'],
'fbillno_type'=>1,
);
m('erplog')->insert($erp_log);
if($this->supplier_submit($cloudUrl,$cookie_jar,$array['Result']['Id'],$array['Result']['Number'])){
$erp_log=array(
'sericnum'=> $this->rs['docnum'],
'table'=>'fininfom',
'name' => '提交成功',
'remark' => json_encode($array),
'optdt' =>date("Y-m-d H:i:s"),
'level'=>2,
'fbillno'=>$num,
'fbillnoid'=>$array['Result']['Id'],
'fbillno_type'=>2,
);
m('erplog')->insert($erp_log);
}else{
$erp_log=array(
'sericnum'=> $this->rs['docnum'],
'table'=>'fininfom',
'name' => '提交失败',
'remark' => json_encode($array),
'optdt' =>date("Y-m-d H:i:s"),
'level'=>1,
'fbillno'=>$num,
'fbillnoid'=>$array['Result']['Id'],
'fbillno_type'=>2,
);
m('erplog')->insert($erp_log);
}
if($this->supplier_audit($cloudUrl,$cookie_jar,$array['Result']['Id'],$array['Result']['Number'])){
$erp_log=array(
'sericnum'=> $this->rs['docnum'],
'table'=>'fininfom',
'name' => '审核成功',
'remark' => json_encode($array),
'optdt' =>date("Y-m-d H:i:s"),
'level'=>2,
'fbillno'=>$num,
'fbillnoid'=>$array['Result']['Id'],
'fbillno_type'=>3,
);
m('erplog')->insert($erp_log);
}else{
$erp_log=array(
'sericnum'=> $this->rs['docnum'],
'table'=>'fininfom',
'name' => '审核失败',
'remark' => json_encode($array),
'optdt' =>date("Y-m-d H:i:s"),
'level'=>1,
'fbillno'=>$num,
'fbillnoid'=>$array['Result']['Id'],
'fbillno_type'=>3,
);
m('erplog')->insert($erp_log);
}
}else{
$erp_log=array(
'sericnum'=> $this->rs['docnum'],
'table'=>'fininfom',
'name' => '保存失败',
'remark' => json_encode($array),
'optdt' =>date("Y-m-d H:i:s"),
'level'=>1,
'fbillno'=>$num,
'fbillnoid'=>$array['Result']['Id'],
'fbillno_type'=>1,
);
m('erplog')->insert($erp_log);
}
}
}
}
//流程全部完成后调用
protected function flowcheckfinsh($zt){
$docnum=$this->rs['docnum'];
$withhold_cost = m('c_withhold_fininform')->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');
// 扣除账户余额 c_fund_account account_balance $zfarr = array(
$cbzxid = $this->rs['cbxmid']; 'account_balance' =>$data['account_balance']-$vo['amount'],
$model = 'c_fund_account'; );
$sql = " cost_id ='$cbzxid' and status = 1 and is_default=1"; $id=$data['id'];
$data = m($model)->getone($sql, 'id,name,account_balance'); m('c_fund_account')->update($zfarr,"`id`='$id'");
$zfarr = array( $freeze = array(
'account_balance' => $data['account_balance'] - $this->rs['money'], 'freeze_amount' => $data['freeze_amount'] - $vo['amount'],
); );
$id = $data['id'];
m('c_fund_account')->update($zfarr, "`id`='$id'"); m('c_fund_account')->update($freeze, "`id`='$id'");
// 成本中心 amount 变更 // 成本中心 amount 变更
$cbzx = substr($cbzxid, 0, strrpos($cbzxid, "(")); $cbzx = substr($cbzxid,0,strrpos($cbzxid,"("));
$cbzxsql = " code ='$cbzx' and status = 1"; $cbzxsql = " code ='$cbzx' and status = 1";
$cbzxdata = m('c_cbzx')->getone($cbzxsql, 'id,amount'); $cbzxdata = m('c_cbzx')->getone($cbzxsql,'id,amount');
$cbarr = array( $cbarr = array(
'amount' => $cbzxdata['amount'] + $this->rs['money'], 'amount' =>$cbzxdata['amount']+$vo['amount'],
); );
m('c_cbzx')->update($cbarr, "`code`='$cbzx'"); m('c_cbzx')->update($cbarr,"`code`='$cbzx'");
//账户明细 c_account_detail //账户明细 c_account_detail
$account_detail = array( $account_detail=array(
'account' => $data['name'], 'account' => $data['name'],
'opt_type' => 2, 'opt_type' => 2,
'amount' => $this->rs['money'], 'amount' =>$vo['amount'],
'trans_numb' => $this->rs['docnum'],
'account_balance' => $data['account_balance'] - $this->rs['money'],
'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'], 'trans_numb' => $this->rs['docnum'],
'account' => $data['name'], 'account_balance' => $data['account_balance']-$vo['amount'],
'toaccount' => $this->rs['applicant'], 'create_time' =>date("Y-m-d H:i:s"),
'trans_amount' => $this->rs['money'], 'uid' =>$this->rs['uid'],
'business_type' => 11, );
'opt_type' => 2,
'account_balance' => $data['account_balance'] - $this->rs['money'], m('c_account_detail')->insert($account_detail);
'create_time' => date("Y-m-d H:i:s"),
'uid' => $this->rs['uid'], // 业务付款8业务预付款10费用报销11 oa_c_fund_detail
);
m('c_fund_detail')->insert($fund_detail);
$fund_detail=array(
'trans_numb' =>$this->rs['docnum'],
'account' => $data['name'],
'toaccount' =>$this->rs['applicant'],
'trans_amount' =>$vo['amount'],
'business_type' =>11,
'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);
}
}
public function supplier_submit($cloudUrl,$cookie_jar,$id,$number){
$start_time = microtime(true);
$data_model ="{
'CreateOrgId': 0,
'Numbers': [],
'Ids': $id,
'SelectedPostId': 0
}";
$data = array(
'CN_PAYAPPLY',//业务对象标识FormId
$data_model//具体Json字串
);
$post_content = self::create_postdata($data);
$result = self::invoke_submit($cloudUrl,$post_content,$cookie_jar);
$array = json_decode($result,true);
return $array;
}
public function supplier_audit($cloudUrl,$cookie_jar,$id,$number){
$data_model ="{
'CreateOrgId': 0,
'Numbers': [],
'Ids': $id,
'InterationFlags': ''
}";
$data = array(
'CN_PAYAPPLY',//业务对象标识FormId
$data_model//具体Json字串
);
$post_content = self::create_postdata($data);
$result = self::invoke_audit($cloudUrl,$post_content,$cookie_jar);
$array = json_decode($result,true);
return $array;
}
//登陆
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.View.common.kdsvc';
return self::invoke_post($invokeurl,$post_content,$cookie_jar,FALSE);
}
//添加
static function invoke_add($cloudUrl,$post_content,$cookie_jar)
{
$invokeurl = $cloudUrl.'Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save.common.kdsvc';
return self::invoke_post($invokeurl,$post_content,$cookie_jar,FALSE);
}
//提交
static function invoke_submit($cloudUrl,$post_content,$cookie_jar)
{
$invokeurl = $cloudUrl.'Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Submit.common.kdsvc';
return self::invoke_post($invokeurl,$post_content,$cookie_jar,FALSE);
}
//审核
static function invoke_audit($cloudUrl,$post_content,$cookie_jar)
{
$invokeurl = $cloudUrl.'Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit.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;
}
static function getbxlx($name)
{
$data = m('c_bxlx')->getone("name='".$name."'", 'name,number');
return $data['number'];
} }
//构造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;
}
} }
\ No newline at end of file
...@@ -205,10 +205,16 @@ class flowModel extends Model ...@@ -205,10 +205,16 @@ class flowModel extends Model
//录入页上的标题 //录入页上的标题
public function inputtitle() public function inputtitle()
{ {
return $this->moders['name']; return $this->moders['name'];
} }
/** public function getwhere($where = '')
{
return parent::getwhere($where); // TODO: Change the autogenerated stub
}
/**
* 列表上要搜索的的,此方法仅用到在:webmain/flow/input/inputAction.php 行607上返回,模块接口可重写这个方法 * 列表上要搜索的的,此方法仅用到在:webmain/flow/input/inputAction.php 行607上返回,模块接口可重写这个方法
*/ */
public function flowsearchfields() public function flowsearchfields()
......
...@@ -5,19 +5,18 @@ class flow_fund_depositClassModel extends flowModel ...@@ -5,19 +5,18 @@ class flow_fund_depositClassModel extends flowModel
public function flowrsreplace($rs) public function flowrsreplace($rs)
{ {
if($rs['business_type']){ if($rs['business_type']){
$data=$this->db->getone('oa_option',"num='".$rs['business_type']."' and pid=1350"); $data=$this->db->getone('oa_option',"num='".$rs['business_type']."' and pid=1350");
$rs['business_type']=$data['name']; $rs['business_type']=$data['name'];
} }
return $rs; return $rs;
} }
//提交时调用 //提交时调用
protected function flowcheckfinsh($na, $sm){ protected function flowsubmit($na, $sm){
$name=$this->rs['toaccount']; $name=$this->rs['toaccount'];
$data=m('c_fund_account')->getone("`name`='$name'"); $data=m('c_fund_account')->getone("`name`='$name'");
$zfarr = array( $zfarr = array(
...@@ -29,12 +28,9 @@ class flow_fund_depositClassModel extends flowModel ...@@ -29,12 +28,9 @@ class flow_fund_depositClassModel extends flowModel
$account_balance=$this->rs['trans_amount']+$data['account_balance'];//当前余额 $account_balance=$this->rs['trans_amount']+$data['account_balance'];//当前余额
$detail = array( $detail = array(
'account_balance' =>$account_balance, 'account_balance' =>$account_balance,
'opt_type' => 1,
); );
m('c_fund_detail')->update($detail,"`id`='$id'"); m('c_fund_detail')->update($detail,"`id`='$id'");
$toacc_detail = array( $toacc_detail = array(
'account' => $this->rs['toaccount'], 'account' => $this->rs['toaccount'],
'opt_type' => 1, 'opt_type' => 1,
......
...@@ -6,6 +6,14 @@ class flow_fund_transferClassModel extends flowModel ...@@ -6,6 +6,14 @@ class flow_fund_transferClassModel extends flowModel
public function flowrsreplace($rs) public function flowrsreplace($rs)
{ {
$uid=$this->adminid;
$sql="account in ( select a.name from oa_c_fund_account as a where uid like concat({$uid},',%') or uid like concat('%,',{$uid}) or uid like concat('%,',{$uid},',%') )";
$fund_detail = m('c_fund_detail')->getall($sql,'account');
foreach ($fund_detail as $key => $value){
$allaccount[]=$value['account'];
}
if($rs['business_type']){ if($rs['business_type']){
...@@ -29,6 +37,14 @@ class flow_fund_transferClassModel extends flowModel ...@@ -29,6 +37,14 @@ class flow_fund_transferClassModel extends flowModel
} }
continue; continue;
break; break;
case 'account':
if(!in_array($v,$allaccount)){
$rs['account_balance']='***';
}else{
$rs['account_balance']=$rs['account_balance'];
}
continue;
break;
} }
} }
...@@ -66,6 +82,7 @@ class flow_fund_transferClassModel extends flowModel ...@@ -66,6 +82,7 @@ class flow_fund_transferClassModel extends flowModel
$account_balance=$data['account_balance']-$this->rs['trans_amount'];//当前余额 $account_balance=$data['account_balance']-$this->rs['trans_amount'];//当前余额
$detail = array( $detail = array(
'account_balance' =>$account_balance, 'account_balance' =>$account_balance,
'opt_type' =>2,
); );
m('c_fund_detail')->update($detail,"`id`='$id'"); m('c_fund_detail')->update($detail,"`id`='$id'");
...@@ -73,7 +90,7 @@ class flow_fund_transferClassModel extends flowModel ...@@ -73,7 +90,7 @@ class flow_fund_transferClassModel extends flowModel
$acc_detail = array( $acc_detail = array(
'account' => $this->rs['account'], 'account' => $this->rs['account'],
'opt_type' => 2, 'opt_type' =>2,
'amount' => $this->rs['trans_amount'], 'amount' => $this->rs['trans_amount'],
'account_balance' =>$data['account_balance']-$this->rs['trans_amount'], 'account_balance' =>$data['account_balance']-$this->rs['trans_amount'],
'trans_numb' => $this->rs['trans_numb'], 'trans_numb' => $this->rs['trans_numb'],
...@@ -84,7 +101,7 @@ class flow_fund_transferClassModel extends flowModel ...@@ -84,7 +101,7 @@ class flow_fund_transferClassModel extends flowModel
$toacc_detail = array( $toacc_detail = array(
'account' => $this->rs['toaccount'], 'account' => $this->rs['toaccount'],
'opt_type' => 1, 'opt_type' =>1,
'amount' => $this->rs['trans_amount'], 'amount' => $this->rs['trans_amount'],
'account_balance' =>$toaccount_list['account_balance']+$this->rs['trans_amount'], 'account_balance' =>$toaccount_list['account_balance']+$this->rs['trans_amount'],
'trans_numb' => $this->rs['trans_numb'], 'trans_numb' => $this->rs['trans_numb'],
......
...@@ -9,27 +9,48 @@ class flow_oafkClassModel extends flowModel ...@@ -9,27 +9,48 @@ class flow_oafkClassModel extends flowModel
return $rs; return $rs;
} }
//二级 或一级审批同意之后进行预扣款 //二级 或一级审批同意之后进行预扣款
protected function flowcheckbefore($zt, $sm){ protected function flowcheckbefore($zt, $sm){
$id=$this->rs['id'];
$sql = " mid ='$id' and `table`='c_fininfom_oafk' ";
$flow_bill = m('flow_bill')->getone($sql,'allcheckid');
$allcheckid=explode(',',$flow_bill['allcheckid']);
$option = m('option')->getall('pid = 1497 and num =1 order by sort desc','num,name,value,sort');
foreach ($option as $key => $value) {
if(in_array($value['value'], $allcheckid)){
$checkid= $value['value'];
break;
}
}
if(empty($checkid)){
$option = m('option')->getall('pid = 1497 and num =2 order by sort desc','num,name,value,sort,`explain`');
foreach ($option as $key => $value) {
if(in_array($value['value'], $allcheckid)){
$checkid= $value['value'];
$explain= $value['explain'];
break;
}
}
}
//zt 1代表同意 //zt 1代表同意
if($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(); $flowid=$this->getflow();
var_dump($flowid); if($explain){
if($flowid['nowcheckname']==$num){ if($flowid['nowcheckid']==$checkid && $flowid['nowcourseid']==$explain){
$data = m('c_fund_details_fk')->getall('mid='.$this->rs['id'], 'id,cbzx_code,charge_amount'); $data = m('c_fund_details_fk')->getall('mid='.$this->rs['id'], 'id,cbzx_code,charge_amount');
foreach ($data as $key => $vo) { foreach ($data as $key => $vo) {
$cbzx_code=$vo['cbzx_code']; $cbzx_code=$vo['cbzx_code'];
$sql = " cost_id='$cbzx_code' and status = 1 and is_default=1"; $sql = " cost_id='$cbzx_code' and status = 1 and is_default=1";
$cost = m('c_fund_account')->getone($sql, 'id,freeze_amount');//查询账户表成本中心id $cost = m('c_fund_account')->getone($sql, 'id,type,freeze_amount,account_balance');//查询账户表成本中心
if($cost['type']=='1'){
if(($cost['account_balance']-$cost['freeze_amount'])<$vo['charge_amount']){
return "账户余额不足";die;
}
}
$id=$cost['id']; $id=$cost['id'];
$c_withhold = array( $c_withhold = array(
...@@ -51,6 +72,41 @@ class flow_oafkClassModel extends flowModel ...@@ -51,6 +72,41 @@ class flow_oafkClassModel extends flowModel
m('c_fund_account')->update($freeze, "`id`='$id'"); m('c_fund_account')->update($freeze, "`id`='$id'");
} }
} }
}else{
if($flowid['nowcheckid']==$checkid){
$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,type,freeze_amount,account_balance');//查询账户表成本中心id
if($cost['type']=='1'){
if(($cost['account_balance']-$cost['freeze_amount'])<$vo['charge_amount']){
return "账户余额不足";die;
}
}
$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{ }else{
$docnum=$this->rs['docnum']; $docnum=$this->rs['docnum'];
//将单据状态作废余额 //将单据状态作废余额
...@@ -149,4 +205,384 @@ class flow_oafkClassModel extends flowModel ...@@ -149,4 +205,384 @@ class flow_oafkClassModel extends flowModel
} }
protected function flowcheckafter($zt, $sm, $nowcourse)
{
$flowid = $this->getflow();
if ($flowid['nowcheckid'] == 1085) {
$cloudUrl = "http://36.110.39.211/k3cloud/";
//登陆参数5e64f6ff0bd47f生产
$data = array(
'5ef2c166ad1afa',//帐套Id
'Administrator',//用户名
'666666',//密码
'2052'//语言标识359010087
);
// $data = array(
// '5d8acc5a26042d',//帐套Id
// 'Administrator',//用户名
// 'kJyGjIQ5DW0tpd@B',//密码
// '2052'//语言标识359010087
// );
//定义记录Cloud服务端返回的Session
$cookie_jar = tempnam('/tmp', 'CloudSession');
$post_content = self::create_postdata($data);
$result = self::invoke_login($cloudUrl, $post_content, $cookie_jar);
header("Content-type: text/html; charset=utf8");
$starttime = microtime(true);
$applicant = $this->rs['applicant'];//申请人
$FCREATORID = $this->db->getone('oa_personfile', "name='" . $this->rs['applicant'] . "'");
$gonncode = $FCREATORID['gonncode']; //申请人编号
$applicationdpt = $this->rs['applicationdpt'];//申请部门
$applydt = $this->rs['optdt'];//申请日期
$amountOfThisPayment = $this->rs['amountOfThisPayment'];//金额
$contractNumber = $this->rs['contractNumber'];//合同编号
$contracta = (strpos($contractNumber, "("));
$contractb = (strrpos($contractNumber, ")"));
$b = mb_strpos($contractNumber, "(") + mb_strlen("(");
$e = mb_strpos($contractNumber, ")") - $b;
$contractNumber = mb_substr($contractNumber, $b, $e);
$contract = $this->db->getone('oa_c_contract', 'numb = "' . $contractNumber . '"');
if ($contract['receive'] == 2) {
$suppliername = $contract['partb_name'];//供应商名称
} else {
$suppliername = $contract['parta_name'];//供应商名称
}
$sql = 'bank_code = ' . $contract['bankcode'];
$bandata = $this->db->getone('oa_supplier_bank_info', $sql);
$paymentMethod = $this->rs['paymentMethod'];//付款方式
$cbxmid = $this->rs['cbzxid'];//成本中心
$cbxmid = substr($cbxmid, 0, strpos($cbxmid, "("));
$oafk_details=$this->db->getrows('oa_c_fund_details_fk',"mid='".$this->rs['id']."'");
$arr=[];
foreach ($oafk_details as $k=> $value) {
foreach ($value as $key => $val) {
switch ($key) {
case 'charge_amount':
$arr['FPAYBILLENTRY'][$k]['FPAYTOTALAMOUNTFOR']=$val;
$arr['FPAYBILLENTRY'][$k]['FPAYAMOUNTFOR_E']=$val;
$arr['FPAYBILLENTRY'][$k]['FSETTLEPAYAMOUNTFOR']=$val;
$arr['FPAYBILLENTRY'][$k]['FREALPAYAMOUNTFOR_D']=$val;
break;
case 'cbzx_code':
$arr['FPAYBILLENTRY'][$k]['F_PAEZ_Cbzx']['FNUMBER']=substr($val, 0, strpos($val, "("));
break;
default:
$arr['FPAYBILLENTRY'][$k]['FSETTLETYPEID']['FNumber']='JSFS04_SYS';
$arr['FPAYBILLENTRY'][$k]['FPURPOSEID']['FNumber']='SFKYT12_SYS';
$arr['FPAYBILLENTRY'][$k]['FENDDATE']=$this->rs['applydt'].' 00:00:00';
$arr['FPAYBILLENTRY'][$k]['FPOSTDATE']=$this->rs['applydt'].' 00:00:00';
$arr['FPAYBILLENTRY'][$k]['FOPPOSITEBANKACCOUNT']=$data['bank_code'];
$arr['FPAYBILLENTRY'][$k]['FOPPOSITECCOUNTNAME']=$data['bank_holder'];
$arr['FPAYBILLENTRY'][$k]['FOPPOSITEBANKNAME']=$data['open_bank_name'];
// $arr['FPAYBILLENTRY'][$k]['FACCOUNTID']['FNumber'] = $data['bank_code'];
// $arr['FPAYBILLENTRY'][$k]['FEACHCCOUNTNAME'] = $data['bank_holder'];
// $arr['FPAYBILLENTRY'][$k]['FEACHBANKNAME'] = $data['open_bank_name'];
break;
}
}
}
$data_model = '{
"Creator": "",
"NeedUpDateFields": [],
"NeedReturnFields": [],
"IsDeleteEntry": "true",
"SubSystemId": "",
"IsVerifyBaseDataField": "false",
"IsEntryBatchFill": "true",
"ValidateFlag": "true",
"NumberSearch": "true",
"InterationFlags": "",
"IsAutoSubmitAndAudit": "false",
"Model": {
"FID": 0,
"FBillTypeID": {
"FNUMBER": "FKDLX02_SYS"
},
"FDATE": "2020-07-02 00:00:00",
"FCONTACTUNITTYPE": "BD_Supplier",
"FCONTACTUNIT": {
"FNumber": "GDGYS-0003"
},
"FRECTUNITTYPE": "BD_Supplier",
"FRECTUNIT": {
"FNumber": "GDGYS-0003"
},
"FISINIT": false,
"FCURRENCYID": {
"FNumber": "PRE001"
},
"FEXCHANGERATE": 1.0,
"FSETTLERATE": 1.0,
"FSETTLEORGID": {
"FNumber": "1000"
},
"FDOCUMENTSTATUS": "Z",
"FCancelStatus": "A",
"FPAYORGID": {
"FNumber": "1000"
},
"FISSAMEORG": true,
"FIsCredit": false,
"FSETTLECUR": {
"FNUMBER": "PRE001"
},
"FIsWriteOff": false,
"FREALPAY": false,
"FREMARK": "211111112121",
"FISCARRYRATE": false,
"FSETTLEMAINBOOKID": {
"FNUMBER": "PRE001"
},
"F_PAEZ_Cbzx1": {
"FNUMBER": "CBZX000022"
},
"F_PAEZ_OADJBH": "321123213213"
}
}';
$model = json_decode($data_model, true);
// $model['Model']['F_PAEZ_Cbzx']['FNUMBER'] = $cbxmid;
$model['Model']['FCREATORID']['FNUMBER'] = $gonncode;
$model['Model']['FDATE'] = $applydt;
$model['Model']['FREMARK'] = $this->rs['paymentBy'];;
$model['Model']['F_PAEZ_OADJBH'] = $this->rs['docnum'];
// $model['Model']['FCONTACTUNIT']['FNumber']=$suppliername;
// $model['Model']['FRECTUNIT']['FNumber']=$suppliername;
$model['Model']['FPAYBILLENTRY'] = $arr['FPAYBILLENTRY'];
$data_model = json_encode($model);
$data = array(
'AP_PAYBILL',//业务对象标识FormId
$data_model//具体Json字串
);
$post_content = self::create_postdata($data);
$result = self::invoke_add($cloudUrl, $post_content, $cookie_jar);
$array = json_decode($result, true);
if ($array['Result']['ResponseStatus']['IsSuccess']) {
$num = $array['Result']['Number'];
$erp_log=array(
'sericnum'=> $this->rs['docnum'],
'table'=>'c_fininfom_oafk',
'name' => '保存成功',
'remark' => json_encode($array),
'optdt' =>date("Y-m-d H:i:s"),
'level'=>1,
'fbillno'=>$num,
'fbillnoid'=>$array['Result']['Id'],
'fbillno_type'=>1,
);
m('log_erp')->insert($erp_log);
$this->update("`fbillno`='$num'", $this->rs['id']);
if($this->supplier_submit($cloudUrl, $cookie_jar, $array['Result']['Id'], $array['Result']['Number'])){
$erp_log=array(
'sericnum'=> $this->rs['docnum'],
'table'=>'c_fininfom_oafk',
'name' => '提交成功',
'remark' => json_encode($array),
'optdt' =>date("Y-m-d H:i:s"),
'level'=>1,
'fbillno'=>$num,
'fbillnoid'=>$array['Result']['Id'],
'fbillno_type'=>2,
);
m('log_erp')->insert($erp_log);
}else{
$erp_log=array(
'sericnum'=> $this->rs['docnum'],
'table'=>'c_fininfom_oafk',
'name' => '提交失败',
'remark' => json_encode($array),
'optdt' =>date("Y-m-d H:i:s"),
'level'=>1,
'fbillno'=>$num,
'fbillnoid'=>$array['Result']['Id'],
'fbillno_type'=>2,
);
m('log_erp')->insert($erp_log);
}
}else{
$erp_log=array(
'sericnum'=> $this->rs['docnum'],
'table'=>'c_fininfom_oafk',
'name' => '保存失败',
'remark' => json_encode($array),
'optdt' =>date("Y-m-d H:i:s"),
'level'=>1,
'fbillno'=>$num,
'fbillnoid'=>$array['Result']['Id'],
'fbillno_type'=>1,
);
m('log_erp')->insert($erp_log);
}
}
}
public function supplier_submit($cloudUrl, $cookie_jar, $id, $number)
{
$start_time = microtime(true);
$data_model = "{
'CreateOrgId': 0,
'Numbers': [],
'Ids': $id,
'SelectedPostId': 0
}";
$data = array(
'AP_PAYBILL',//业务对象标识FormId
$data_model//具体Json字串
);
$post_content = self::create_postdata($data);
$result = self::invoke_submit($cloudUrl, $post_content, $cookie_jar);
$array = json_decode($result, true);
return $array;
}
public function supplier_audit($cloudUrl, $cookie_jar, $id, $number)
{
$data_model = "{
'CreateOrgId': 0,
'Numbers': [],
'Ids': $id,
'InterationFlags': ''
}";
$data = array(
'AP_PAYBILL',//业务对象标识FormId
$data_model//具体Json字串
);
$post_content = self::create_postdata($data);
$result = self::invoke_audit($cloudUrl, $post_content, $cookie_jar);
$array = json_decode($result, true);
return $array;
}
//登陆
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.View.common.kdsvc';
return self::invoke_post($invokeurl, $post_content, $cookie_jar, FALSE);
}
//添加
static function invoke_add($cloudUrl, $post_content, $cookie_jar)
{
$invokeurl = $cloudUrl . 'Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save.common.kdsvc';
return self::invoke_post($invokeurl, $post_content, $cookie_jar, FALSE);
}
//提交
static function invoke_submit($cloudUrl, $post_content, $cookie_jar)
{
$invokeurl = $cloudUrl . 'Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Submit.common.kdsvc';
return self::invoke_post($invokeurl, $post_content, $cookie_jar, FALSE);
}
//审核
static function invoke_audit($cloudUrl, $post_content, $cookie_jar)
{
$invokeurl = $cloudUrl . 'Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit.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;
}
static function getbxlx($name)
{
if ($name == '现金') {
return 'JSFS01_SYS';
} else {
return 'JSFS04_SYS';
}
}
//构造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;
}
} }
\ No newline at end of file
...@@ -10,24 +10,51 @@ class flow_oayfkClassModel extends flowModel ...@@ -10,24 +10,51 @@ class flow_oayfkClassModel extends flowModel
} }
//二级 或一级审批同意之后进行预扣款 //二级 或一级审批同意之后进行预扣款
protected function flowcheckbefore($zt, $sm){ protected function flowcheckbefore($zt, $sm){
$id=$this->rs['id'];
$sql = " mid ='$id' and `table`='c_fininfom_oayfk' ";
$flow_bill = m('flow_bill')->getone($sql,'allcheckid');
$allcheckid=explode(',',$flow_bill['allcheckid']);
$option = m('option')->getall('pid = 1531 and num =1 order by sort desc','num,name,value,sort');
foreach ($option as $key => $value) {
if(in_array($value['value'], $allcheckid)){
$checkid= $value['value'];
break;
}
}
if(empty($checkid)){
$option = m('option')->getall('pid = 1531 and num =2 order by sort desc','num,name,value,sort,`explain`');
foreach ($option as $key => $value) {
if(in_array($value['value'], $allcheckid)){
$checkid= $value['value'];
$explain= $value['explain'];
break;
}
}
}
//zt 1代表同意 //zt 1代表同意
if($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(); $flowid=$this->getflow();
if($flowid['nowcheckname']==$num){ if($explain){
$data = m('c_fund_details_fk')->getall('mid='.$this->rs['id'], 'id,cbzx_code,charge_amount');
if($flowid['nowcheckid']==$checkid && $flowid['nowcourseid']==$explain){
$data = m('c_fund_details_yfk')->getall('mid='.$this->rs['id'], 'id,cbzx_code,charge_amount');
foreach ($data as $key => $vo) { foreach ($data as $key => $vo) {
$cbzx_code=$vo['cbzx_code']; $cbzx_code=$vo['cbzx_code'];
$sql = " cost_id='$cbzx_code' and status = 1 and is_default=1"; $sql = " cost_id='$cbzx_code' and status = 1 and is_default=1";
$cost = m('c_fund_account')->getone($sql, 'id,freeze_amount');//查询账户表成本中心id $cost = m('c_fund_account')->getone($sql, 'id,type,freeze_amount,account_balance');//查询账户表成本中心
if($cost['type']=='1'){
if(($cost['account_balance']-$cost['freeze_amount'])<$vo['charge_amount']){
return "账户余额不足";die;
}
}
$id=$cost['id']; $id=$cost['id'];
$c_withhold = array( $c_withhold = array(
...@@ -39,7 +66,7 @@ class flow_oayfkClassModel extends flowModel ...@@ -39,7 +66,7 @@ class flow_oayfkClassModel extends flowModel
'create_time' => date("Y-m-d H:i:s"), 'create_time' => date("Y-m-d H:i:s"),
'uid' => $this->rs['uid'], 'uid' => $this->rs['uid'],
); );
m('c_withhold')->insert($c_withhold); m('c_withhold_yfk')->insert($c_withhold);
//修改冻结余额 //修改冻结余额
$freeze = array( $freeze = array(
...@@ -49,11 +76,44 @@ class flow_oayfkClassModel extends flowModel ...@@ -49,11 +76,44 @@ class flow_oayfkClassModel extends flowModel
m('c_fund_account')->update($freeze, "`id`='$id'"); m('c_fund_account')->update($freeze, "`id`='$id'");
} }
} }
}else{
if($flowid['nowcheckid']==$checkid){
$data = m('c_fund_details_yfk')->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,type,freeze_amount,account_balance');//查询账户表成本中心
if($cost['type']=='1'){
if(($cost['account_balance']-$cost['freeze_amount'])<$vo['charge_amount']){
return "账户余额不足";die;
}
}
$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_yfk')->insert($c_withhold);
//修改冻结余额
$freeze = array(
'freeze_amount' => $cost['freeze_amount'] + $vo['charge_amount'],
);
m('c_fund_account')->update($freeze, "`id`='$id'");
}
}
}
}else{ }else{
$docnum=$this->rs['docnum']; $docnum=$this->rs['docnum'];
//将单据状态作废余额 //将单据状态作废余额
$withhold_cost = m('c_withhold')->getall("docnum='$docnum' and status =1", 'id,cost_id,amount'); $withhold_cost = m('c_withhold_yfk')->getall("docnum='$docnum' and status =1", 'id,cost_id,amount');
foreach ($withhold_cost as $key => $vo) { foreach ($withhold_cost as $key => $vo) {
//减去冻结金额 //减去冻结金额
...@@ -74,16 +134,17 @@ class flow_oayfkClassModel extends flowModel ...@@ -74,16 +134,17 @@ class flow_oayfkClassModel extends flowModel
$status = array( $status = array(
'status' => 0, 'status' => 0,
); );
m('c_withhold')->update($status, "docnum='$docnum'"); m('c_withhold_yfk')->update($status, "docnum='$docnum'");
} }
} }
//流程全部完成后调用
protected function flowcheckfinsh($zt){
// //流程全部完成后调用
protected function flowcheckfinsh($zt){
$docnum=$this->rs['docnum']; $docnum=$this->rs['docnum'];
$withhold_cost = m('c_withhold')->getall("docnum='$docnum' and status =1", 'id,cost_id,amount'); $withhold_cost = m('c_withhold_yfk')->getall("docnum='$docnum' and status =1", 'id,cost_id,amount');
foreach ($withhold_cost as $key => $vo) { foreach ($withhold_cost as $key => $vo) {
// 扣除账户余额 c_fund_account account_balance // 扣除账户余额 c_fund_account account_balance
...@@ -135,7 +196,7 @@ class flow_oayfkClassModel extends flowModel ...@@ -135,7 +196,7 @@ class flow_oayfkClassModel extends flowModel
'account' => $data['name'], 'account' => $data['name'],
'toaccount' =>$this->rs['payee'], 'toaccount' =>$this->rs['payee'],
'trans_amount' =>$vo['amount'], 'trans_amount' =>$vo['amount'],
'business_type' =>8, 'business_type' =>10,
'opt_type' =>2, 'opt_type' =>2,
'account_balance'=>$data['account_balance']-$vo['amount'], 'account_balance'=>$data['account_balance']-$vo['amount'],
'create_time' =>date("Y-m-d H:i:s"), 'create_time' =>date("Y-m-d H:i:s"),
...@@ -145,4 +206,314 @@ class flow_oayfkClassModel extends flowModel ...@@ -145,4 +206,314 @@ class flow_oayfkClassModel extends flowModel
} }
} }
protected function flowcheckafter($zt, $sm, $nowcourse)
{
$flowid = $this->getflow();
if ($flowid['nowcheckid'] == 1085) {
$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);
header("Content-type: text/html; charset=utf8");
$starttime = microtime(true);
$applicant = $this->rs['applicant'];//申请人
$FCREATORID = $this->db->getone('oa_personfile', "name='" . $this->rs['applicant'] . "'");
$gonncode = $FCREATORID['gonncode']; //申请人编号
$applicationdpt = $this->rs['applicationdpt'];//申请部门
$applydt = $this->rs['optdt'];//申请日期
$amountOfThisPayment = $this->rs['amountOfThisPayment'];//金额
$contractNumber = $this->rs['contractNumber'];//合同编号
$contracta = (strpos($contractNumber, "("));
$contractb = (strrpos($contractNumber, ")"));
$b = mb_strpos($contractNumber, "(") + mb_strlen("(");
$e = mb_strpos($contractNumber, ")") - $b;
$contractNumber = mb_substr($contractNumber, $b, $e);
$contract = $this->db->getone('oa_c_contract', 'numb = "' . $contractNumber . '"');
if ($contract['receive'] == 2) {
$suppliername = $contract['partb_name'];//供应商名称
} else {
$suppliername = $contract['parta_name'];//供应商名称
}
$sql = 'bank_code = ' . $contract['bankcode'];
$data = $this->db->getone('oa_supplier_bank_info', $sql);
$paymentMethod = $this->rs['paymentMethod'];//付款方式
$cbxmid = $this->rs['cbzxid'];//成本中心
$cbxmid = substr($cbxmid, 0, strpos($cbxmid, "("));
$oafk_details=$this->db->getrows('oa_c_fund_details_yfk',"mid='".$this->rs['id']."'");
$arr=[];
foreach ($oafk_details as $k=> $value) {
foreach ($value as $key => $val) {
switch ($key) {
case 'charge_amount':
$arr['FPAYAPPLYENTRY'][$k]['FAPPLYAMOUNTFOR']=$val;
break;
break;
default:
$arr['FPAYAPPLYENTRY'][$k]['FSETTLETYPEID']['FNumber']='JSFS04_SYS';
$arr['FPAYAPPLYENTRY'][$k]['FPAYPURPOSEID']['FNumber']='SFKYT09_SYS';
$arr['FPAYAPPLYENTRY'][$k]['FENDDATE']=$this->rs['applydt'].' 00:00:00';
$arr['FPAYAPPLYENTRY'][$k]['FEXPECTPAYDATE']=$this->rs['applydt'].' 00:00:00';
$arr['FPAYAPPLYENTRY'][$k]['FEACHBANKACCOUNT'] = $data['bank_code'];
$arr['FPAYAPPLYENTRY'][$k]['FEACHCCOUNTNAME'] = $data['bank_holder'];
$arr['FPAYAPPLYENTRY'][$k]['FEACHBANKNAME'] = $data['open_bank_name'];
break;
}
}
}
$data_model = '{
"Creator": "",
"NeedUpDateFields": [],
"NeedReturnFields": [],
"IsDeleteEntry": "true",
"SubSystemId": "",
"IsVerifyBaseDataField": "false",
"IsEntryBatchFill": "true",
"ValidateFlag": "true",
"NumberSearch": "true",
"InterationFlags": "",
"IsAutoSubmitAndAudit": "false",
"Model": {
"FID": 0,
"FBILLTYPEID": {
"FNUMBER": "FKSQ009"
},
"FDATE": "2020-06-29 00:00:00",
"FCONTACTUNITTYPE": "BD_Supplier",
"FCONTACTUNIT": {
"FNumber": "GDGYS-0003"
},
"FRECTUNITTYPE": "BD_Supplier",
"FRECTUNIT": {
"FNumber": "GDGYS-0003"
},
"FCURRENCYID": {
"FNumber": "PRE001"
},
"FAPPLYORGID": {
"FNumber": "1000"
},
"FPAYORGID": {
"FNumber": "1000"
},
"FSETTLEORGID": {
"FNumber": "1000"
},
"FPURCHASEORGID": {
"FNumber": "1000"
},
"FDOCUMENTSTATUS": "Z",
"FCANCELSTATUS": "A",
"FMAINBOOKID": {
"FNUMBER": "PRE001"
},
"FIsCredit": false,
"FSETTLECUR": {
"FNUMBER": "PRE001"
},
"FISCARRYRATE": false,
"F_PAEZ_Cbzx": {
"FNUMBER": "GS.BJ.B01.02"
},
"F_PAEZ_OADJBH": "213123213"
}
}';
$model = json_decode($data_model, true);
// $model['Model']['F_PAEZ_Cbzx']['FNUMBER'] = $cbxmid;
$model['Model']['FCREATORID']['FNUMBER'] = $gonncode;
$model['Model']['FDATE'] = $applydt;
$model['Model']['F_PAEZ_OADJBH'] = $this->rs['docnum'];;
// $model['Model']['FCONTACTUNIT']['FNumber']=$suppliername;
// $model['Model']['FRECTUNIT']['FNumber']=$suppliername;
$model['Model']['FPAYAPPLYENTRY'] = $arr['FPAYAPPLYENTRY'];
$data_model = json_encode($model);
$data = array(
'CN_PAYAPPLY',//业务对象标识FormId
$data_model//具体Json字串
);
$post_content = self::create_postdata($data);
$result = self::invoke_add($cloudUrl, $post_content, $cookie_jar);
$array = json_decode($result, true);
var_dump($array);
if ($array['Result']['ResponseStatus']['IsSuccess']) {
$num = $array['Result']['Number'];
$this->update("`fbillno`='$num'", $this->rs['id']);
var_dump($this->supplier_submit($cloudUrl, $cookie_jar, $array['Result']['Id'], $array['Result']['Number']));
var_dump($this->supplier_audit($cloudUrl, $cookie_jar, $array['Result']['Id'], $array['Result']['Number']));
}
}
}
public function supplier_submit($cloudUrl, $cookie_jar, $id, $number)
{
$start_time = microtime(true);
$data_model = "{
'CreateOrgId': 0,
'Numbers': [],
'Ids': $id,
'SelectedPostId': 0
}";
$data = array(
'CN_PAYAPPLY',//业务对象标识FormId
$data_model//具体Json字串
);
$post_content = self::create_postdata($data);
$result = self::invoke_submit($cloudUrl, $post_content, $cookie_jar);
$array = json_decode($result, true);
return $array;
}
public function supplier_audit($cloudUrl, $cookie_jar, $id, $number)
{
$data_model = "{
'CreateOrgId': 0,
'Numbers': [],
'Ids': $id,
'InterationFlags': ''
}";
$data = array(
'CN_PAYAPPLY',//业务对象标识FormId
$data_model//具体Json字串
);
$post_content = self::create_postdata($data);
$result = self::invoke_audit($cloudUrl, $post_content, $cookie_jar);
$array = json_decode($result, true);
return $array;
}
//登陆
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.View.common.kdsvc';
return self::invoke_post($invokeurl, $post_content, $cookie_jar, FALSE);
}
//添加
static function invoke_add($cloudUrl, $post_content, $cookie_jar)
{
$invokeurl = $cloudUrl . 'Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save.common.kdsvc';
return self::invoke_post($invokeurl, $post_content, $cookie_jar, FALSE);
}
//提交
static function invoke_submit($cloudUrl, $post_content, $cookie_jar)
{
$invokeurl = $cloudUrl . 'Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Submit.common.kdsvc';
return self::invoke_post($invokeurl, $post_content, $cookie_jar, FALSE);
}
//审核
static function invoke_audit($cloudUrl, $post_content, $cookie_jar)
{
$invokeurl = $cloudUrl . 'Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit.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;
}
static function getbxlx($name)
{
if ($name == '现金') {
return 'JSFS01_SYS';
} else {
return 'JSFS04_SYS';
}
}
//构造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;
}
} }
\ No newline at end of file
<?php
/**
* 费用报销接口
* Class opencatClassAction
*/
class openfinfybxClassAction 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]fininfom where status=0 and fbillno is NOT null';
$dataarr = $this->db->getall($sql);
// echo "<pre>";
// var_dump($dataarr);die;
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]finybx_paymentflow',"`fbillno`='".$new_array[$ke]['FBillNo']."'",'id,fbillno');
$fbillno=$new_array['FSRCBILLNO'];
$datalist = $this->db->getone('[Q]fininfom',"`fbillno`='".$value['fbillno']."'",'id,fbillno,money');
if(!$payflow){
$paymentflow=array(
'fsrcbillno' =>$new_array[$ke]['FSRCBILLNO'],
'fbillno' =>$new_array[$ke]['FBillNo'],
'mid' =>$datalist['id'],
'fpaytotalamountfor' =>$new_array[$ke]['FPAYTOTALAMOUNTFOR'],
'date' =>substr($new_array[$ke]['FPOSTDATE'],0,strpos($new_array[$ke]['FPOSTDATE'], 'T'))
);
m('c_finybx_paymentflow')->insert($paymentflow);
}
}
}
if($datalist['money']==$sum){
m('fininfom')->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' => 'fininfom',
'mid' => $datalist['id'],
'status' => 1,
'statusname' => '同意',
'name' => '出纳付款',
'courseid' => 437,
'optdt' => date("Y-m-d H:i:s"),
'explain' => '系统自动确认',
'ip' => '0.0.0.0',
'web' =>'Chrome',
'checkname' =>'尹再伟',
'checkid' =>1085,
'modeid' =>11,
'color' =>'green',
'valid' =>1,
'step' =>4,
'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);
}
if($new_array['FDOCUMENTSTATUS']=='C'){
$payflow = $this->db->getone('[Q]finybx_paymentflow',"`fbillno`='".$new_array['FBillNo']."'",'id,fbillno');
$fbillno=$new_array['FSRCBILLNO'];
$datalist = $this->db->getone('[Q]fininfom',"`fbillno`='".$fbillno."'",'id,fbillno,money');
if(!$payflow ){
$paymentflow=array(
'fsrcbillno' =>$new_array['FSRCBILLNO'],
'fbillno' =>$new_array['FBillNo'],
'mid' =>$datalist['id'],
'fpaytotalamountfor' =>$new_array['FPAYTOTALAMOUNTFOR'],
'date' =>substr($new_array['FPOSTDATE'],0,strpos($new_array['FPOSTDATE'], 'T'))
);
m('finybx_paymentflow')->insert($paymentflow);
}
if($datalist['money']==$new_array['FPAYTOTALAMOUNTFOR']){
m('fininfom')->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' => 'fininfom',
'mid' => $datalist['id'],
'status' => 1,
'statusname' => '同意',
'name' => '出纳付款',
'courseid' => 437,
'optdt' => date("Y-m-d H:i:s"),
'explain' => '系统自动确认',
'ip' => '0.0.0.0',
'web' =>'Chrome',
'checkname' =>'尹再伟',
'checkid' =>1085,
'modeid' =>11,
'color' =>'green',
'valid' =>1,
'step' =>4,
'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;
}
}
\ No newline at end of file
<?php
/**
* 付款申请接口
* Class opencatClassAction
*/
class openoafkClassAction 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_oafk 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_oafk_paymentflow',"`fbillno`='".$new_array[$ke]['FBillNo']."'",'id,fbillno');
$fbillno=$new_array['FSRCBILLNO'];
$datalist = $this->db->getone('[Q]c_fininfom_oafk',"`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_oafk_paymentflow')->insert($paymentflow);
}
}
}
if($datalist['amountOfThisPayment']==$sum){
m('c_fininfom_oafk')->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_oafk',
'mid' => $datalist['id'],
'status' => 1,
'statusname' => '同意',
'name' => '出纳付款',
'courseid' => 176,
'optdt' => date("Y-m-d H:i:s"),
'explain' => '系统自动确认',
'ip' => '0.0.0.0',
'web' =>'Chrome',
'checkname' =>'尹再伟',
'checkid' =>1085,
'modeid' =>94,
'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_oafk',"`fbillno`='".$fbillno."'",'id,fbillno,amountOfThisPayment');
if($new_array['FDOCUMENTSTATUS']=='C'){
$payflow = $this->db->getone('[Q]finifom_oafk_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_oafk_paymentflow')->insert($paymentflow);
}
if($datalist['amountOfThisPayment']==$new_array['FPAYTOTALAMOUNTFOR']){
m('c_fininfom_oafk')->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_oafk',
'mid' => $datalist['id'],
'status' => 1,
'statusname' => '同意',
'name' => '出纳付款',
'courseid' => 176,
'optdt' => date("Y-m-d H:i:s"),
'explain' => '系统自动确认',
'ip' => '0.0.0.0',
'web' =>'Chrome',
'checkname' =>'尹再伟',
'checkid' =>1085,
'modeid' =>94,
'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;
}
}
\ No newline at end of file
<?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;
}
}
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论