易飞9审核员接口分析

2023-11-01 13:20

本文主要是介绍易飞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审核员接口分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/323254

相关文章

易飞销货单出货时审核库存检查

公司接到一客户因品种多而数量少,单一出货计划行比较多,而只上了生产ERP易飞,审核时经常会出现倒催货,提前做销售单,行数有时超30行以上,审核跳窗报错时也不方便查找,特写一外挂程序,界面如下:

接口分析,以简单的mybatis接口为例

关于接口的思考 在所有的框架当中,接口是少数的,实现类是大多数的 所以入手的时候,当我们明白提炼的接口是怎么回事的时候。 那就意味着你差不多读懂了这个框架的一半。 所以我们可以以mybatis几个包的接口来逐个分析 这个框架搭起来的时候它的意图是怎样的。 这样将大大减少我们分析一个框架的工作量 从org.apache.ibatis包开始读起 这里再插

list 接口分析

list 接口分析 list集合在原来collection的基础上,增加了针对下标的操作方法 如下: 1. void add(index, e) 没加进去抛异常越界异常等 2. E set(index, e) 设置下标为e,并且返回e 3. E remove(index) remove下标index的对象 4. int indexOf(o) 第一个o的下标 5. in

Dueue双向队列接口分析

Dueue 双向队列 Doug Lea 双向队列定义了不仅是从一头出,还可以从另外一头。 所以这样称呼。 queue队列只能从头出。即先进先出 来看看他的定义: 1. void AddFirst(E e) 新增方法 竟然不返回boolean,那人家是怎么处理的呢? 要么就加进去了,要么就抛异常。 如果我们是有一个容量限制的队列那他近似于 offerF

queue队列接口分析

queue队列接口分析 Doug Lea 作者 这个接口继承Collection接口,加泛型E 1. boolean Add(E e) 重写collection方法 (1)加入指定的集合中,返回true (2)如果超过容量限制,抛非法状态异常,父接口是抛不支持运行异常 (3)如果不是该类型,抛类型转换异常 (4) 如果是增加的是一个null对象,抛空指

全球有多少个APSCA审核员?

截止到2023年底,APSCA全球共有 4994 名 社会责任审核员,分布在 103 个国家。这些审核员分为两类:助理社会责任审核员(ASCA)和认证社会责任审核员(CSCA)。其中,ASCA 占比 49%,CSCA 占比 51%。 全球社会责任审核员的性别分布中,男性 占比 59%,女性 占比 41%。 APSCA审核员所在国家-前五大国家: 中国 中国拥有最多的审计员,审核员总数为1578 名

单例集根接口Collection及其常见的两个子接口分析

在自学的过程中,刚刚开始学习集合感觉很乱方法很乱,到学完整个集合,有点模棱两可.再到后来,我花了一天的时间把我的笔记本上的知识点共同点,不同点,包括方法的分类,从新的梳理了一遍,在笔记本上从新的总结写出来了,感觉其实比不是这样的.任何事情都要学会去梳理和总结,找到其中的规律,这样会豁然开朗.迎刃而解..   (一)Collection单例根接口. 学习这个集合,我先给你们一个图方便观看和理解

CCAA审核员职业健康安全管理体系基础考试大纲

职业健康安全管理体系基础考试大纲(第1版) 1.总则 本大纲依据CCAA《管理体系审核员注册准则》制定,适用于拟向CCAA申请注册职业健康安全管理体系审核员实习级别的人员。 2.考试要求 2.1考试科目 申请注册职业健康安全管理体系审核员实习级别的人员,需通过“职业健康安全管理体系基础”科目考试。 2.2考试方式 “职业健康安全管理体系基础”科目考试为闭卷考试,考试试题由CCAA统一

如何高效的进行Simulink模型测试?模型动态测试工具TPT来助力:Simulink/Targetink 模型 | 接口分析 | 手动测试用例设计 | 自动生成测试用例:TASMO

文章目录 Simulink/Targetink 模型如何利用TPT对Simulink模型进行测试接口分析手动测试用例设计自动生成测试用例:TASMO测试执行运行前编译支持复杂的测试套件对测试的评估分析MiL-SiL-PiL 的背靠背测试通过MATLAB工具箱控制TPT符合ISO26262标准的MiL测试在TPT中监测接口信号和内部信号使用TPT进行Simulink/Targetlink模型测

第14章_数据结构与集合源码(一维数组,链表,栈,队列,树与二叉树,List接口分析,Map接口分析,Set接口分析,HashMap的相关问题)

文章目录 第14章_数据结构与集合源码本章专题与脉络1. 数据结构剖析1.1 研究对象一:数据间逻辑关系1.2 研究对象二:数据的存储结构(或物理结构)1.3 研究对象三:运算结构1.4 小结 2. 一维数组2.1 数组的特点2.2 自定义数组 3. 链表3.1 链表的特点3.2 自定义链表3.2.1 自定义单向链表3.2.2 自定义双向链表 4. 栈4.1 栈的特点4.2 Stack使用