$PBExportHeader$uo_rap_money_transfer.sru forward global type uo_rap_money_transfer from nonvisualobject end type type s_saleplanmx from structure within uo_rap_money_transfer end type end forward type s_saleplanmx from structure long mtrlid string mtrlcode long printid decimal { 10 } planqty string mxdscrp end type global type uo_rap_money_transfer from nonvisualobject end type global uo_rap_money_transfer uo_rap_money_transfer type variables Long uo_billid end variables forward prototypes public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit) public function integer updatebegin (long arg_billid, ref string arg_msg) public function integer audit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit) public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg) public function integer p_getinfo (long arg_billid, ref s_rap_money_transfer arg_s_rap_money_transfer, ref string arg_msg) public function integer save (s_rap_money_transfer arg_s_transfer, string arg_opemp, ref string arg_msg, boolean arg_ifcommit) public function integer caudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit) public function integer caudit2 (long arg_billid, ref string arg_msg, boolean arg_ifcommit) public function integer audit2 (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit) end prototypes public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 s_rap_money_transfer arg_s_rap_money_transfer IF arg_billid <= 0 THEN rslt = 0 ARG_MSG = '错误单据唯一码' GOTO ext END IF IF p_getinfo(arg_billid,arg_s_rap_money_transfer,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF arg_s_rap_money_transfer.flag = 1 THEN rslt = 0 ARG_MSG = '单据已经审核,不可以删除' GOTO ext END IF DELETE FROM u_rap_money_transfer Where billid = :arg_billid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除单据操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer updatebegin (long arg_billid, ref string arg_msg);Int rslt = 1 s_rap_money_transfer arg_s_rap_money_transfer IF arg_billid <= 0 THEN rslt = 0 ARG_MSG = '错误单据唯一码' GOTO ext END IF IF p_getinfo(arg_billid,arg_s_rap_money_transfer,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF arg_s_rap_money_transfer.flag = 1 THEN rslt = 0 ARG_MSG = '单据已经审核,不可以修改,要修改请先撤销审核' GOTO ext END IF ext: RETURN rslt end function public function integer audit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long it_mxbt Long ll_moneyid_out,ll_moneyid_in Long ll_native_out,ll_native_in Long ll_rapmoneyid_out,ll_rapmoneyid_in s_rap_money_transfer arg_s_rap_money_transfer uo_rapmoney uo_rap uo_rap = Create uo_rapmoney IF arg_billid <= 0 THEN rslt = 0 ARG_MSG = '错误单据唯一码' GOTO ext END IF IF p_getinfo(arg_billid,arg_s_rap_money_transfer,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF arg_s_rap_money_transfer.flag = 1 THEN rslt = 0 ARG_MSG = '单据已经审核,不可以再审' GOTO ext END IF SELECT moneyid INTO :ll_moneyid_out FROM u_accounts Where accountsid = :arg_s_rap_money_transfer.accountid_out; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = '查询转出帐号币种失败,'+sqlca.SQLErrText GOTO ext END IF SELECT native INTO :ll_native_out FROM cw_currency Where moneyid = :ll_moneyid_out; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = '查询转出帐号币种属性失败,'+sqlca.SQLErrText GOTO ext END IF SELECT moneyid INTO :ll_moneyid_in FROM u_accounts Where accountsid = :arg_s_rap_money_transfer.accountid_in; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = '查询转入帐号币种失败,'+sqlca.SQLErrText GOTO ext END IF SELECT native INTO :ll_native_in FROM cw_currency Where moneyid = :ll_moneyid_in; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = '查询转入帐号币种属性失败,'+sqlca.SQLErrText GOTO ext END IF //更新审核标记 UPDATE u_rap_money_transfer SET permit_emp = :arg_opemp, permit_date = getdate(), flag = 1 WHERE billid = :arg_billid And flag = 0; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "因网络或其它原因导致单据审核操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF s_rap_money s_rap_out,s_rap_in //转出 s_rap_out.accountsid = arg_s_rap_money_transfer.accountid_out s_rap_out.rapid = 0 s_rap_out.takedate = arg_s_rap_money_transfer.checkdate s_rap_out.billcode = arg_s_rap_money_transfer.billcode s_rap_out.relcode = arg_s_rap_money_transfer.relcode s_rap_out.dscrp = '转帐单号:'+arg_s_rap_money_transfer.billcode+',备注:'+arg_s_rap_money_transfer.dscrp s_rap_out.msttakeamt = 0 s_rap_out.takeamt = arg_s_rap_money_transfer.transferamt s_rap_out.inrep = arg_s_rap_money_transfer.checkemp s_rap_out.banktypeid = arg_s_rap_money_transfer.banktypeid s_rap_out.opemp = arg_opemp s_rap_out.buildtype = 2 s_rap_out.dcflag = 0 s_rap_out.relid = arg_s_rap_money_transfer.billid IF uo_rap.add_raprec(s_rap_out,ARG_MSG,False) = 0 THEN ARG_MSG = '增加(转出)出纳明细帐失败!~n' + ARG_MSG rslt = 0 GOTO ext END IF ll_rapmoneyid_out = uo_rap.ref_rapid IF ll_rapmoneyid_out = 0 THEN ARG_MSG = '增加(转出)出纳明细帐失败!' rslt = 0 GOTO ext END IF //转入 s_rap_in.accountsid = arg_s_rap_money_transfer.accountid_in s_rap_in.rapid = 0 s_rap_in.takedate = arg_s_rap_money_transfer.checkdate2 s_rap_in.billcode = arg_s_rap_money_transfer.billcode s_rap_in.relcode = arg_s_rap_money_transfer.relcode s_rap_in.dscrp = '转帐单号:'+arg_s_rap_money_transfer.billcode+',备注:'+arg_s_rap_money_transfer.dscrp IF ll_native_out = 1 And ll_native_in = 0 THEN s_rap_in.msttakeamt = Round(arg_s_rap_money_transfer.transferamt/arg_s_rap_money_transfer.mrate,2) ELSE s_rap_in.msttakeamt = Round(arg_s_rap_money_transfer.transferamt * arg_s_rap_money_transfer.mrate,2) END IF s_rap_in.takeamt = 0 s_rap_in.inrep = arg_s_rap_money_transfer.checkemp s_rap_in.banktypeid = arg_s_rap_money_transfer.banktypeid s_rap_in.opemp = arg_opemp s_rap_in.buildtype = 2 s_rap_in.dcflag = 0 s_rap_in.relid = arg_s_rap_money_transfer.billid IF uo_rap.add_raprec(s_rap_in,ARG_MSG,False) = 0 THEN ARG_MSG = '增加(转入)出纳明细帐失败!~n' + ARG_MSG rslt = 0 GOTO ext END IF ll_rapmoneyid_in = uo_rap.ref_rapid IF ll_rapmoneyid_in = 0 THEN ARG_MSG = '增加(转入)出纳明细帐失败!' rslt = 0 GOTO ext END IF UPDATE u_rap_money_transfer SET rapmoneyid_in = :ll_rapmoneyid_in, rapmoneyid_out = :ll_rapmoneyid_out Where billid = :arg_billid; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "因网络或其它原因导致更新单据转出转入相关资料失败操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT; END IF Destroy uo_rap RETURN rslt end function public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg);Int rslt = 1 s_rap_money_transfer arg_s_rap_money_transfer IF arg_billid <= 0 THEN rslt = 0 arg_msg = '错误单据唯一码' GOTO ext END IF IF arg_newdescppart = '' THEN rslt = 0 arg_msg = "要添加内容为空,操作取消" GOTO ext END IF IF p_getinfo(arg_billid,arg_s_rap_money_transfer,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF arg_s_rap_money_transfer.flag = 0 THEN rslt = 0 arg_msg = '单据未审核,不可以增加备注' GOTO ext END IF UPDATE u_rap_money_transfer SET DSCRP = DSCRP+' '+:arg_newdescppart WHERE u_rap_money_transfer.billid = :arg_billid AND flag = 1; IF SQLCA.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致添加备注操作失败"+"~n"+SQLCA.SQLErrText GOTO ext END IF ext: IF rslt = 1 THEN COMMIT; ELSE ROLLBACK; END IF Return (rslt) end function public function integer p_getinfo (long arg_billid, ref s_rap_money_transfer arg_s_rap_money_transfer, ref string arg_msg);Int rslt = 1 IF arg_billid <= 0 THEN rslt = 0 ARG_MSG = '错误单据唯一码' GOTO ext END IF SELECT u_rap_money_transfer.flag, u_rap_money_transfer.secflag, u_rap_money_transfer.relcode, u_rap_money_transfer.banktypeid, u_rap_money_transfer.accountid_out, u_rap_money_transfer.accountid_in, u_rap_money_transfer.transferamt, u_rap_money_transfer.checkemp, u_rap_money_transfer.dscrp, u_rap_money_transfer.rapmoneyid_out, u_rap_money_transfer.rapmoneyid_in, u_rap_money_transfer.billcode, u_rap_money_transfer.checkdate, u_rap_money_transfer.checkdate2, u_rap_money_transfer.mrate INTO :arg_s_rap_money_transfer.flag, :arg_s_rap_money_transfer.secflag, :arg_s_rap_money_transfer.relcode, :arg_s_rap_money_transfer.banktypeid, :arg_s_rap_money_transfer.accountid_out, :arg_s_rap_money_transfer.accountid_in, :arg_s_rap_money_transfer.transferamt, :arg_s_rap_money_transfer.checkemp, :arg_s_rap_money_transfer.dscrp, :arg_s_rap_money_transfer.rapmoneyid_out, :arg_s_rap_money_transfer.rapmoneyid_in, :arg_s_rap_money_transfer.billcode, :arg_s_rap_money_transfer.checkdate, :arg_s_rap_money_transfer.checkdate2, :arg_s_rap_money_transfer.mrate FROM u_rap_money_transfer Where u_rap_money_transfer.billid = :arg_billid; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = '查询单据内容失败(错误单据唯一码)' GOTO ext END IF ext: RETURN rslt end function public function integer save (s_rap_money_transfer arg_s_transfer, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1 DateTime server_dt Long ll_billid String ls_billcode Long cnt IF IsNull(arg_s_transfer.billid) THEN arg_s_transfer.billid = 0 IF IsNull(arg_s_transfer.relcode) THEN arg_s_transfer.relcode = '' IF IsNull(arg_s_transfer.banktypeid) THEN arg_s_transfer.banktypeid = 0 IF IsNull(arg_s_transfer.accountid_out) THEN arg_s_transfer.accountid_out = 0 IF IsNull(arg_s_transfer.accountid_in) THEN arg_s_transfer.accountid_in = 0 IF IsNull(arg_s_transfer.transferamt) THEN arg_s_transfer.transferamt = 0 IF IsNull(arg_s_transfer.dscrp) THEN arg_s_transfer.dscrp = '' IF IsNull(arg_s_transfer.checkemp) THEN arg_s_transfer.checkemp = '' IF IsNull(arg_s_transfer.mrate) THEN arg_s_transfer.mrate = 1 cnt = 0 SELECT count(*) INTO :cnt FROM u_accounts Where accountsid = :arg_s_transfer.accountid_out; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询转出帐号资料失败,请检查' rslt = 0 GOTO ext END IF IF cnt <> 1 THEN arg_msg = '转出帐号资料不存在或重复,请检查' rslt = 0 GOTO ext END IF cnt = 0 SELECT count(*) INTO :cnt FROM u_accounts Where accountsid = :arg_s_transfer.accountid_in; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询转入帐号资料失败,请检查' rslt = 0 GOTO ext END IF IF cnt <> 1 THEN arg_msg = '转入帐号资料不存在或重复,请检查' rslt = 0 GOTO ext END IF cnt = 0 SELECT count(*) INTO :cnt FROM cw_banktype Where banktypeid = :arg_s_transfer.banktypeid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询结算方式资料失败,请检查' rslt = 0 GOTO ext END IF IF cnt <> 1 THEN arg_msg = '结算方式资料不存在或重复,请检查' rslt = 0 GOTO ext END IF if arg_s_transfer.checkemp = '' then arg_msg = '请输入经手人' rslt = 0 goto ext end if if arg_s_transfer.transferamt <= 0 then arg_msg = '请输入正确的转帐金额' rslt = 0 goto ext end if IF arg_s_transfer.mrate <= 0 THEN arg_msg = '请输入正确的汇率' rslt = 0 GOTO ext END IF SELECT Top 1 getdate() INTO :server_dt FROM u_user; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,日期 " GOTO ext END IF IF arg_s_transfer.billid = 0 THEN ll_billid = f_sys_scidentity(0,"u_rap_money_transfer","billid",arg_msg,TRUE,id_sqlca) IF ll_billid <= 0 THEN rslt = 0 GOTO ext END IF ls_billcode = getid(0,'TF',Date(server_dt),TRUE,sqlca) IF ls_billcode = "err" THEN rslt = 0 arg_msg = "无法获取单据编号"+"~n"+sqlca.SQLErrText GOTO ext END IF INSERT INTO u_rap_money_transfer (billid, billcode, checkdate, checkdate2, opdate, opemp, relcode, transferamt, banktypeid, accountid_out, checkemp, accountid_in, dscrp, mrate) VALUES ( :ll_billid, :ls_billcode, :arg_s_transfer.checkdate, :arg_s_transfer.checkdate2, getdate(), :arg_opemp, :arg_s_transfer.relcode, :arg_s_transfer.transferamt, :arg_s_transfer.banktypeid, :arg_s_transfer.accountid_out, :arg_s_transfer.checkemp, :arg_s_transfer.accountid_in, :arg_s_transfer.dscrp, :arg_s_transfer.mrate) ; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致建立单据操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF uo_billid = ll_billid ELSE UPDATE u_rap_money_transfer SET checkdate = :arg_s_transfer.checkdate, checkdate2 = :arg_s_transfer.checkdate2, moddate = getdate(), modemp = :arg_opemp, relcode = :arg_s_transfer.relcode, accountid_in = :arg_s_transfer.accountid_in, transferamt = :arg_s_transfer.transferamt, banktypeid = :arg_s_transfer.banktypeid, checkemp = :arg_s_transfer.checkemp, dscrp = :arg_s_transfer.dscrp, accountid_out = :arg_s_transfer.accountid_out, mrate = :arg_s_transfer.mrate WHERE billid = :arg_s_transfer.billid AND flag = 0; IF sqlca.SQLCode <> 0 OR sqlca.SQLNRows <= 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致更新单据操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF uo_billid = arg_s_transfer.billid END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF arg_ifcommit AND rslt = 1 THEN COMMIT; END IF RETURN rslt end function public function integer caudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 DateTime null_dt uo_rapmoney uo_rap uo_rap = CREATE uo_rapmoney s_rap_money_transfer arg_s_rap_money_transfer SetNull(null_dt) IF arg_billid <= 0 THEN rslt = 0 arg_msg = '错误单据唯一码' GOTO ext END IF IF p_getinfo(arg_billid,arg_s_rap_money_transfer,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF arg_s_rap_money_transfer.flag = 0 THEN rslt = 0 arg_msg = '单据未审核,不可以撤审' GOTO ext END IF IF arg_s_rap_money_transfer.secflag = 1 THEN rslt = 0 arg_msg = '单据已财务确认,不可以撤审' GOTO ext END IF UPDATE u_rap_money_transfer SET flag = 0, permit_emp = '', permit_date = :null_dt WHERE billid = :arg_billid AND flag = 1; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致单据撤消审核操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF //转出 IF uo_rap.del_raprec(arg_s_rap_money_transfer.rapmoneyid_out,arg_s_rap_money_transfer.accountid_out,1,arg_msg,FALSE) = 0 THEN arg_msg = '删除(转出)出纳明细帐失败!~n' + arg_msg rslt = 0 GOTO ext END IF //转入 IF uo_rap.del_raprec(arg_s_rap_money_transfer.rapmoneyid_in,arg_s_rap_money_transfer.accountid_in,1,arg_msg,FALSE) = 0 THEN arg_msg = '删除(转入)出纳明细帐失败!~n' + arg_msg rslt = 0 GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF destroy uo_rap RETURN rslt end function public function integer caudit2 (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 DateTime null_dt s_rap_money_transfer arg_s_rap_money_transfer SetNull(null_dt) IF arg_billid <= 0 THEN rslt = 0 arg_msg = '错误单据唯一码' GOTO ext END IF IF p_getinfo(arg_billid,arg_s_rap_money_transfer,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF arg_s_rap_money_transfer.secflag = 0 THEN rslt = 0 arg_msg = '单据未财务确认,不可以财务反确认' GOTO ext END IF UPDATE u_rap_money_transfer SET secflag = 0, secauditemp = '', secauditdate = :null_dt WHERE billid = :arg_billid AND secflag = 1; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致单据财务反确认操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer audit2 (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 s_rap_money_transfer arg_s_rap_money_transfer IF arg_billid <= 0 THEN rslt = 0 ARG_MSG = '错误单据唯一码' GOTO ext END IF IF p_getinfo(arg_billid,arg_s_rap_money_transfer,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF arg_s_rap_money_transfer.flag = 0 THEN rslt = 0 ARG_MSG = '单据未审核,不可以财务确认' GOTO ext END IF IF arg_s_rap_money_transfer.secflag = 1 THEN rslt = 0 ARG_MSG = '单据已经财务确认,不可以再财务确认' GOTO ext END IF //更新审核标记 UPDATE u_rap_money_transfer SET secauditemp = :arg_opemp, secauditdate = getdate(), secflag = 1 WHERE billid = :arg_billid AND flag = 1; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "因网络或其它原因导致单据审核操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN rslt end function on uo_rap_money_transfer.create call super::create TriggerEvent( this, "constructor" ) end on on uo_rap_money_transfer.destroy TriggerEvent( this, "destructor" ) call super::destroy end on global type uo_incase from nonvisualobject end type