易飞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);
var
  tmpmsg: string;
  k:Integer;
  mResultDesc:OleVariant;
  submResultDesc:OleVariant;
  mInitParam,mAction:OleVariant;
  mResult:Boolean;
  TransName:string;
begin
    mAction:= VarArrayCreate([0,8],VarVariant);
    mAction[0] :='';
    mAction[1] :='N'; //Y保存执行日志 ,N不保存执行日志
    if TODO='Y' then
    begin
      mAction[2] :='DO';  //DO 审核执行,UNDO 取消审核执行
    end
    else
    begin
      mAction[2] :='UNDO';  //DO 审核执行,UNDO 取消审核执行
    end;
    mAction[3] :=trim(SlipType);         //单别或者底稿编号
    mAction[4] :=trim(SlipCode);   //单号或者生效日期,为底稿编号时,这里为flag
    mAction[5] :=0;  //审核时为0,审核成功。 //录入发票审核时为1  //版本号,审核单据没有版本本号,所以为 0
    mAction[6] :='';             //flag
    mAction[7] :=trim(TransDate);
	mAction[8] :='';
        //变更单单据处理。
    if ((ProID='COPI07') OR (ProID='PURI08') OR (ProID='MOCI11') OR (ProID='PURI13') OR (ProID='MOCI12')) then
    begin
      if (VarIsEmpty(Ver) or VarIsNull(Ver)) then
      begin
            msg:=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); // 公司ID
    mInitParam[2] := trim(adoquery2.fieldbyname('MB003').AsString);  //数据库名称
    mInitParam[3] := trim(UserId); //用户ID
    mInitParam[4] := '';
    mInitParam[5] := mAction ;

    if ISModi='N' then  //连接审核元接口
    begin
     TransManager := CreateOleObject('TRANSMANAGER.TXNMANAGER');
    end
    else
    begin
    adoquery3.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)); 
    TransName:=UpperCase(trim(adoquery3.fieldbyname('MC003').AsString));

    TransManager := CreateOleObject(TransName);
    end;


    if not (VarIsEmpty(TransManager) or VarIsNull(TransManager)) then
      begin
        try
            mResult := TransManager.Doit(mInitParam);
        except on E: Exception do
          begin
           mylogList.Add(E.Message);
           exit;
          end;
        end;
        if mResult =false then   //执行失败时反馈
        begin
         mResultDesc:=TransManager.ResultDesc;
         if (VarIsEmpty(mResultDesc) or VarIsNull(mResultDesc)) then  //判断是否有异常报错反馈内容,如果没有就直接输出结果报错。如果有就取报错数据进行组合
         begin
            if (VarIsEmpty(Ver) or VarIsNull(Ver)) then
            begin
              msg:=trim(SlipType)+'-'+trim(SlipCode)+' '+TransManager.ErrorDescript;
            end
            else
            begin
              msg:=trim(SlipType)+'-'+trim(SlipCode)+'-'+trim(Ver)+' '+TransManager.ErrorDescript;
            end;
            mylogList.Add(msg);
            exit;
         end
         else
         begin
          submResultDesc:= 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 do
         begin
          tmpmsg := StringReplace(tmpmsg,'%S', submResultDesc[K],[]);
          K:=K+1;
         end;

         if (VarIsEmpty(Ver) or VarIsNull(Ver)) then  //有版本号或者序号时,消息增加序号或版本号
         begin
           msg:=trim(SlipType)+'-'+trim(SlipCode)+' '+mResultDesc[0]+':'+mResultDesc[1]+'-'+tmpmsg;
         end
         else
         begin
           msg:=trim(SlipType)+'-'+trim(SlipCode)+'-'+trim(Ver)+' '+mResultDesc[0]+':'+mResultDesc[1]+'-'+tmpmsg;
         end;
        end
        else
        begin  //执行成功时反馈结果
          if (VarIsEmpty(Ver) or VarIsNull(Ver)) then
          begin
            msg:=trim(SlipType)+'-'+trim(SlipCode)+' '+TransManager.ErrorDescript;
          end
          else
          begin
            msg:=trim(SlipType)+'-'+trim(SlipCode)+'-'+trim(Ver)+' '+TransManager.ErrorDescript;
          end;
        end;
        mylogList.Add(msg);
      end;
    TmRet:=mResult;
end;

//调用方法
CallTransManager(单别,单号,审核日期,作业编号,公司ID,用户名,审核码,个案码,序号/版本号);

在这里插入图片描述

其它说明

支持所有单据审核,包含DPM等个案。

评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东枫落定

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值