易飞审核
易飞审核员说明
易飞所有的单据审核都是调用审核元进行审核的,但是该审核员接口又没有开放,所以只能通过一些老的代码中分析出审核员接口及功能。使用该审核员接口主要是可以与其它系统集成实现单据的审核。
1、审核员相关分析
1 uses 2 ComObj 3 4 //调用审核元方法 5 TransManager := CreateOleObject('TRANSMANAGER.TXNMANAGER'); 6 //调用审核的方法 7 mResult := TransManager.Doit(mInitParam); 8 //相关参数说明 9 mAction:= VarArrayCreate([0,8],VarVariant); 10 mAction[1] //日志保存 N 不保存日志, Y保存日志 11 mAction[2] //审核状态执行 DO 执行 UNDO 取消执行。 12 mAction[3] //单别 13 mAction[4] //单号 或者 底稿编号 14 mAction[5] // 序号或版本号 15 mAction[6] //flag 16 mAction[7] //审核日期 17 mAction[8] //确认日期 18 19 mInitParam := VarArrayCreate([0,5],VarVariant); 20 mInitParam[0] := 'TXNMOCI03'; // 作业程序代号 21 mInitParam[1] := 8888; // 公司ID 22 mInitParam[2] := YFDEMO; //数据库名称 23 mInitParam[3] := DS; //用户ID 24 mInitParam[4] := '';
25 mInitParam[5] := mAction ;
1 procedure TYFerpfrm.CallTransManager(SlipType,SlipCode,TransDate,ProID,CompanyID,UserId,TODO,ISModi,Ver:string); 2 var 3 tmpmsg: string; 4 k:Integer; 5 mResultDesc:OleVariant; 6 submResultDesc:OleVariant; 7 mInitParam,mAction:OleVariant; 8 mResult:Boolean; 9 TransName:string; 10 begin 11 mAction:= VarArrayCreate([0,8],VarVariant); 12 mAction[0] :=''; 13 mAction[1] :='N'; //Y保存执行日志 ,N不保存执行日志 14 if TODO='Y' then 15 begin 16 mAction[2] :='DO'; //DO 审核执行,UNDO 取消审核执行 17 end 18 else 19 begin 20 mAction[2] :='UNDO'; //DO 审核执行,UNDO 取消审核执行 21 end; 22 mAction[3] :=trim(SlipType); //单别或者底稿编号 23 mAction[4] :=trim(SlipCode); //单号或者生效日期,为底稿编号时,这里为flag 24 mAction[5] :=0; //审核时为0,审核成功。 //录入发票审核时为1 //版本号,审核单据没有版本本号,所以为 0 25 mAction[6] :=''; //flag 26 mAction[7] :=trim(TransDate); 27 mAction[8] :=''; 28 //变更单单据处理。 29 if ((ProID='COPI07') OR (ProID='PURI08') OR (ProID='MOCI11') OR (ProID='PURI13') OR (ProID='MOCI12')) then 30 begin 31 if (VarIsEmpty(Ver) or VarIsNull(Ver)) then 32 begin 33 msg:=trim(SlipType)+'-'+trim(SlipCode)+'-'+trim(Ver)+' '+'版本号或序号为空,无法审核!'; 34 mylogList.Add(msg); 35 exit; 36 37 end; 38 mAction[5]:=trim(Ver); 39 mAction[6] :=0; 40 mAction[8] :=trim(TransDate); 41 end; 42 43 adoquery2.Connection:= ADOConnection1; 44 adoquery2.Close; 45 adoquery2.SQL.Clear; 46 adoquery2.SQL.Text:='select MB001,MB002,MB003 from DSCMB where MB001 ='''+trim(CompanyID)+''''; 47 adoquery2.Open; 48 mInitParam := VarArrayCreate([0,5],VarVariant); 49 mInitParam[0] := 'TXN'+UpperCase(trim(ProID)); // 作业代号 50 mInitParam[1] := trim(adoquery2.fieldbyname('MB001').AsString); // 公司ID 51 mInitParam[2] := trim(adoquery2.fieldbyname('MB003').AsString); //数据库名称 52 mInitParam[3] := trim(UserId); //用户ID 53 mInitParam[4] := ''; 54 mInitParam[5] := mAction ; 55 56 if ISModi='N' then //连接审核元接口 57 begin 58 TransManager := CreateOleObject('TRANSMANAGER.TXNMANAGER'); 59 end 60 else 61 begin 62 adoquery3.Connection:= ADOConnection1; 63 adoquery3.Close; 64 adoquery3.SQL.Clear; 65 adoquery3.SQL.Text:='SELECT MC001,MC003,MC004 FROM DSCMC where MC001 = '''+UpperCase(trim(ProID))+''''; 66 adoquery3.Open; 67 mInitParam[0] := 'TXN'+UpperCase(trim(adoquery3.fieldbyname('MC004').AsString)); 68 TransName:=UpperCase(trim(adoquery3.fieldbyname('MC003').AsString)); 69 70 TransManager := CreateOleObject(TransName); 71 end; 72 73 74 if not (VarIsEmpty(TransManager) or VarIsNull(TransManager)) then 75 begin 76 try 77 mResult := TransManager.Doit(mInitParam); 78 except on E: Exception do 79 begin 80 mylogList.Add(E.Message); 81 exit; 82 end; 83 end; 84 if mResult =false then //执行失败时反馈 85 begin 86 mResultDesc:=TransManager.ResultDesc; 87 if (VarIsEmpty(mResultDesc) or VarIsNull(mResultDesc)) then //判断是否有异常报错反馈内容,如果没有就直接输出结果报错。如果有就取报错数据进行组合 88 begin 89 if (VarIsEmpty(Ver) or VarIsNull(Ver)) then 90 begin 91 msg:=trim(SlipType)+'-'+trim(SlipCode)+' '+TransManager.ErrorDescript; 92 end 93 else 94 begin 95 msg:=trim(SlipType)+'-'+trim(SlipCode)+'-'+trim(Ver)+' '+TransManager.ErrorDescript; 96 end; 97 mylogList.Add(msg); 98 exit; 99 end 100 else 101 begin 102 submResultDesc:= mResultDesc[2]; 103 end; 104 adoquery4.Connection:= ADOConnection1; 105 adoquery4.Close; 106 adoquery4.SQL.Clear; 107 adoquery4.SQL.Text:='SELECT TYPE,ID,MSG from MSGCHT where ID = '''+mResultDesc[1]+''' and TYPE= '''+mResultDesc[0]+''''; 108 adoquery4.Open; 109 tmpmsg:=adoquery4.fieldbyname('MSG').AsString; 110 K := 0; 111 msg:=''; 112 while Pos('%S',tmpmsg) > 0 do 113 begin 114 tmpmsg := StringReplace(tmpmsg,'%S', submResultDesc[K],[]); 115 K:=K+1; 116 end; 117 118 if (VarIsEmpty(Ver) or VarIsNull(Ver)) then //有版本号或者序号时,消息增加序号或版本号 119 begin 120 msg:=trim(SlipType)+'-'+trim(SlipCode)+' '+mResultDesc[0]+':'+mResultDesc[1]+'-'+tmpmsg; 121 end 122 else 123 begin 124 msg:=trim(SlipType)+'-'+trim(SlipCode)+'-'+trim(Ver)+' '+mResultDesc[0]+':'+mResultDesc[1]+'-'+tmpmsg; 125 end; 126 end 127 else 128 begin //执行成功时反馈结果 129 if (VarIsEmpty(Ver) or VarIsNull(Ver)) then 130 begin 131 msg:=trim(SlipType)+'-'+trim(SlipCode)+' '+TransManager.ErrorDescript; 132 end 133 else 134 begin 135 msg:=trim(SlipType)+'-'+trim(SlipCode)+'-'+trim(Ver)+' '+TransManager.ErrorDescript; 136 end; 137 end; 138 mylogList.Add(msg); 139 end; 140 TmRet:=mResult; 141 end; 142 143 //调用方法 144 CallTransManager(单别,单号,审核日期,作业编号,公司ID,用户名,审核码,个案码,序号/版本号);

支持.net,java自动审核
摘自:https://blog.csdn.net/dycp125/article/details/133881943

浙公网安备 33010602011771号