易飛審核
易飛審核員說明
易飛所有的單據審核都是調用審核元進行審核的,但是該審核員接口又沒有開放,所以只能通過一些老的代碼中分析出審核員接口及功能。使用該審核員接口主要是可以與其它系統集成實現單據的審核。
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號