本文主要是介绍易飞9审核员接口分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
易飞审核员说明
易飞所有的单据审核都是调用审核元进行审核的,但是该审核员接口又没有开放,所以只能通过一些老的代码中分析出审核员接口及功能。使用该审核员接口主要是可以与其它系统集成实现单据的审核。
审核元相关分析
DELPHI代码
uses
ComObj//调用审核元方法
TransManager := CreateOleObject('TRANSMANAGER.TXNMANAGER');
//调用审核的方法
mResult := TransManager.Doit(mInitParam);
//相关参数说明
mAction:= VarArrayCreate([0,8],VarVariant);
mAction[1] //日志保存 N 不保存日志, Y保存日志
mAction[2] //审核状态执行 DO 执行 UNDO 取消执行。
mAction[3] //单别
mAction[4] //单号 或者 底稿编号
mAction[5] // 序号或版本号
mAction[6] //flag
mAction[7] //审核日期
mAction[8] //确认日期mInitParam := VarArrayCreate([0,5],VarVariant);
mInitParam[0] := 'TXNMOCI03'; // 作业程序代号
mInitParam[1] := 8888; // 公司ID
mInitParam[2] := YFDEMO; //数据库名称
mInitParam[3] := DS; //用户ID
mInitParam[4] := '';
mInitParam[5] := mAction ;
封装审核元接口
DELPHI代码
procedure TYFerpfrm.CallTransManager(SlipType,SlipCode,TransDate,ProID,CompanyID,UserId,TODO,ISModi,Ver:string);
vartmpmsg: string;k:Integer;mResultDesc:OleVariant;submResultDesc:OleVariant;mInitParam,mAction:OleVariant;mResult:Boolean;TransName:string;
beginmAction:= VarArrayCreate([0,8],VarVariant);mAction[0] :='';mAction[1] :='N'; //Y保存执行日志 ,N不保存执行日志if TODO='Y' thenbeginmAction[2] :='DO'; //DO 审核执行,UNDO 取消审核执行endelsebeginmAction[2] :='UNDO'; //DO 审核执行,UNDO 取消审核执行end;mAction[3] :=trim(SlipType); //单别或者底稿编号mAction[4] :=trim(SlipCode); //单号或者生效日期,为底稿编号时,这里为flagmAction[5] :=0; //审核时为0,审核成功。 //录入发票审核时为1 //版本号,审核单据没有版本本号,所以为 0mAction[6] :=''; //flagmAction[7] :=trim(TransDate);//变更单单据处理。if ((ProID='COPI07') OR (ProID='PURI08') OR (ProID='MOCI11') OR (ProID='PURI13') OR (ProID='MOCI12')) thenbeginif (VarIsEmpty(Ver) or VarIsNull(Ver)) thenbeginmsg:=trim(SlipType)+'-'+trim(SlipCode)+'-'+trim(Ver)+' '+'版本号或序号为空,无法审核!';mylogList.Add(msg);exit;end;mAction[5]:=trim(Ver);mAction[6] :=0;mAction[8] :=trim(TransDate);end;adoquery2.Connection:= ADOConnection1;adoquery2.Close;adoquery2.SQL.Clear;adoquery2.SQL.Text:='select MB001,MB002,MB003 from DSCMB where MB001 ='''+trim(CompanyID)+'''';adoquery2.Open;mInitParam := VarArrayCreate([0,5],VarVariant);mInitParam[0] := 'TXN'+UpperCase(trim(ProID)); // 作业代号mInitParam[1] := trim(adoquery2.fieldbyname('MB001').AsString); // 公司IDmInitParam[2] := trim(adoquery2.fieldbyname('MB003').AsString); //数据库名称mInitParam[3] := trim(UserId); //用户IDmInitParam[4] := '';mInitParam[5] := mAction ;if ISModi='N' then //连接审核元接口beginTransManager := CreateOleObject('TRANSMANAGER.TXNMANAGER');endelsebeginadoquery3.Connection:= ADOConnection1;adoquery3.Close;adoquery3.SQL.Clear;adoquery3.SQL.Text:='SELECT MC001,MC003,MC004 FROM DSCMC where MC001 = '''+UpperCase(trim(ProID))+'''';adoquery3.Open;mInitParam[0] := 'TXN'+UpperCase(trim(adoquery3.fieldbyname('MC004').AsString)); // 作业代号if trim(adoquery3.fieldbyname('MC003').AsString) ='TransModi_DPM.Class1' thenbeginTransName:='TRANSMANAGER.TXNMANAGER';endelsebeginTransName:=UpperCase(trim(adoquery3.fieldbyname('MC003').AsString));end;TransManager := CreateOleObject(TransName);end;if not (VarIsEmpty(TransManager) or VarIsNull(TransManager)) thenbegintrymResult := TransManager.Doit(mInitParam);except on E: Exception dobeginmylogList.Add(E.Message);exit;end;end;if mResult =false then //执行失败时反馈beginmResultDesc:=TransManager.ResultDesc;if (VarIsEmpty(mResultDesc) or VarIsNull(mResultDesc)) then //判断是否有异常报错反馈内容,如果没有就直接输出结果报错。如果有就取报错数据进行组合beginif (VarIsEmpty(Ver) or VarIsNull(Ver)) thenbeginmsg:=trim(SlipType)+'-'+trim(SlipCode)+' '+TransManager.ErrorDescript;endelsebeginmsg:=trim(SlipType)+'-'+trim(SlipCode)+'-'+trim(Ver)+' '+TransManager.ErrorDescript;end;mylogList.Add(msg);exit;endelsebeginsubmResultDesc:= mResultDesc[2];end;adoquery4.Connection:= ADOConnection1;adoquery4.Close;adoquery4.SQL.Clear;adoquery4.SQL.Text:='SELECT TYPE,ID,MSG from MSGCHT where ID = '''+mResultDesc[1]+''' and TYPE= '''+mResultDesc[0]+'''';adoquery4.Open;tmpmsg:=adoquery4.fieldbyname('MSG').AsString;K := 0;msg:='';while Pos('%S',tmpmsg) > 0 dobegintmpmsg := StringReplace(tmpmsg,'%S', submResultDesc[K],[]);K:=K+1;end;if (VarIsEmpty(Ver) or VarIsNull(Ver)) then //有版本号或者序号时,消息增加序号或版本号beginmsg:=trim(SlipType)+'-'+trim(SlipCode)+' '+mResultDesc[0]+':'+mResultDesc[1]+'-'+tmpmsg;endelsebeginmsg:=trim(SlipType)+'-'+trim(SlipCode)+'-'+trim(Ver)+' '+mResultDesc[0]+':'+mResultDesc[1]+'-'+tmpmsg;end;endelsebegin //执行成功时反馈结果if (VarIsEmpty(Ver) or VarIsNull(Ver)) thenbeginmsg:=trim(SlipType)+'-'+trim(SlipCode)+' '+TransManager.ErrorDescript;endelsebeginmsg:=trim(SlipType)+'-'+trim(SlipCode)+'-'+trim(Ver)+' '+TransManager.ErrorDescript;end;end;mylogList.Add(msg);end;TmRet:=mResult;
end;//调用方法
CallTransManager(单别,单号,审核日期,作业编号,公司ID,用户名,审核码,个案码,序号/版本号);
其它说明
以上接口分析只能完成一些常规单据(工单、采购单、销售单等)的审核,而无法实现特殊单据的审核,如(库存交易单、采购发票、DPM个案等),不知道需要配置哪些参数,有知道大神的还望可以告知。
这篇关于易飞9审核员接口分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!