$PBExportHeader$uo_emppay.sru forward global type uo_emppay from nonvisualobject end type end forward global type uo_emppay from nonvisualobject end type global uo_emppay uo_emppay type variables Public ProtectedWrite Long billid Public ProtectedWrite String billcode Public ProtectedWrite String auditemp Public ProtectedWrite DateTime auditdate Public ProtectedWrite Int flag Public ProtectedWrite Int secflag Public ProtectedWrite String Opemp Public ProtectedWrite DateTime Opdate Public ProtectedWrite String ModEmp Public ProtectedWrite DateTime ModDate Long scid Long banktypeid Decimal amt Long accountsid DateTime billdate String dscrp String rep Long rapmoneyid Long itemid Long relid Int billtype //0-其它收入支出,1-借款,2-还款 Long empid Long deptid Int itemflag Long relrapid long ref_dateint string relcode Transaction commit_transaction //数据commit事务 Private: Boolean IT_NEWBEGIN = False //新建标志 Boolean IT_UPDATEBEGIN = False //修改标志 Long it_mxbt = 0 s_emppay_mx incomemx[] end variables forward prototypes public function integer p_reset () public function integer newbegin (ref string arg_msg) public function integer cancel (long arg_billid, ref string arg_msg, boolean arg_ifcommit) public function integer p_getinfo (long arg_billid, ref string arg_msg) public function integer updatebegin (long arg_billid, ref string arg_msg) public function integer save (string arg_operator, ref string arg_msg, boolean arg_ifcommit) public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit) public function integer p_clearmx () public function integer getinfo (long arg_billid, ref string arg_msg) public function integer audit (long arg_billid, ref string arg_msg, boolean arg_ifcommit) public function integer cancelaudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit) public function integer secaudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit) public function integer cancelsecaudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit) public function integer acceptmx (long arg_empid, decimal arg_amt, decimal arg_mstpayamt, string arg_mxdscrp, ref string arg_msg) end prototypes public function integer p_reset (); billid = 0 billcode = '' banktypeid = 0 amt = 0 accountsid = 0 setnull(billdate) dscrp = '' rep = '' relid = 0 rapmoneyid = 0 empid = 0 billtype = 0 itemid = 0 deptid = 0 flag = 0 Opemp = '' setnull(Opdate) setnull(ModDate) ModEmp = '' auditemp = '' setnull(auditdate) relrapid = 0 ref_dateint = 0 it_newbegin=FALSE it_updatebegin=FALSE p_clearmx() RETURN 1 end function public function integer newbegin (ref string arg_msg);//newbegin() //从置对象,设定业务类型,准备建立新单 //0 fail 1 success LONG RSLT=1 p_reset() it_newbegin=TRUE it_updatebegin=FALSE return RSLT end function public function integer cancel (long arg_billid, ref string arg_msg, boolean arg_ifcommit); //0 FAIL, 1 SUCCESS Int rslt = 1 IF arg_billid <= 0 THEN rslt = 0 ARG_MSG = '错误单据唯一码' GOTO ext END IF IF p_getinfo(arg_billid,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF flag <> 0 THEN rslt = 0 ARG_MSG = "单据已经审核,不可以删除" GOTO ext END IF DELETE FROM U_emppay Where U_emppay.billid = :arg_billid USING commit_transaction ; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "删除单据操作失败"+"~n"+commit_transaction.SQLErrText GOTO ext END IF DELETE FROM U_emppay_mx Where U_emppay_mx.billid = :arg_billid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除单据明细操作失败"+"~n"+commit_transaction.SQLErrText ROLLBACK USING commit_transaction; GOTO ext END IF it_newbegin = FALSE it_updatebegin = FALSE IF rslt = 0 THEN ROLLBACK USING commit_transaction; ELSEIF arg_ifcommit AND rslt = 1 THEN COMMIT USING commit_transaction; END IF ext: p_reset() Return (rslt) end function public function integer p_getinfo (long arg_billid, ref string arg_msg);Int rslt = 1 SELECT U_emppay.billid, U_emppay.billcode, U_emppay.banktypeid, U_emppay.amt, U_emppay.accountsid, U_emppay.billdate, U_emppay.Dscrp, U_emppay.rep, U_emppay.rapmoneyid, U_emppay.itemid, U_emppay.flag, U_emppay.secflag, U_emppay.Opemp, U_emppay.Opdate, U_emppay.ModDate, U_emppay.ModEmp, U_emppay.auditemp, U_emppay.auditdate, U_emppay.relid, U_emppay.billtype, U_emppay.scid, relrapid, ref_dateint INTO :billid, :billcode, :banktypeid, :amt, :accountsid, :billdate, :Dscrp, :rep, :rapmoneyid, :itemid, :flag, :secflag, :Opemp, :Opdate, :ModDate, :ModEmp, :auditemp, :auditdate, :relid, :billtype, :scid, :relrapid, :ref_dateint FROM U_emppay Where ( U_emppay.billid = :arg_billid ) ; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询工资发放单操作失败"+sqlca.SQLErrText GOTO ext END IF ext: RETURN rslt end function public function integer updatebegin (long arg_billid, ref string arg_msg);//UPDATEbegin(long arg_taskid,ref string arg_msg) //从置对象,设定业务类型与关联ID,准备更新进仓单 //0 fail 1 success Long rslt = 1,CNT = 0 IF arg_billid <= 0 THEN rslt = 0 arg_msg = '错误工资发放单唯一码' GOTO ext END IF IF p_getinfo(arg_billid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF flag <> 0 THEN rslt = 0 arg_msg = '已经处于审核或完成等状态,不可以修改,如果工资发放单未完成并要修改请先撤销审核' GOTO ext END IF it_newbegin = False it_updatebegin = True p_clearmx() //清除明细 amt = 0 ext: IF rslt = 0 THEN p_reset() RETURN rslt end function public function integer save (string arg_operator, ref string arg_msg, boolean arg_ifcommit); Integer rslt = 1,cnt = 0,i Long ls_newid DateTime server_datetime Long ll_id String ls_sccode IF IsNull(banktypeid) THEN banktypeid = 0 IF IsNull(amt) THEN amt = 0 IF IsNull(accountsid) THEN accountsid = 0 IF IsNull(dscrp) THEN dscrp = '' IF IsNull(relcode) THEN relcode = '' IF IsNull(rep) THEN rep = '' IF IsNull(arg_operator) THEN arg_operator = '' IF IsNull(rapmoneyid) THEN rapmoneyid = 0 IF IsNull(itemid) THEN itemid = 0 IF IsNull(scid) THEN scid = 0 IF it_newbegin = False And it_updatebegin = False THEN rslt = 0 arg_msg = "非编辑状态不可以提交" GOTO ext END IF IF it_mxbt = 0 THEN rslt = 0 arg_msg = '没有明细内容' GOTO ext END IF amt = 0 FOR i = 1 To it_mxbt amt = amt + incomemx[i].amt NEXT IF amt = 0 THEN rslt = 0 arg_msg = "请输入金额" GOTO ext END IF IF f_check_inoutdate(0,billdate,False,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF billtype = 1 Or billtype = 2 THEN IF itemid = 0 THEN rslt = 0 arg_msg = "请选择收支项目" GOTO ext END IF cnt = 0 SELECT count(*) INTO :cnt FROM u_itemdef WHERE itemid = :itemid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN arg_msg = '查询项目资料失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF END IF IF rep = '' THEN rslt = 0 arg_msg = "请输入经手人" GOTO ext END IF IF banktypeid = 0 THEN rslt = 0 arg_msg = "请选择结算方式" GOTO ext END IF IF accountsid = 0 THEN rslt = 0 arg_msg = "请选择银行帐号" GOTO ext END IF SELECT moneyid INTO :rapmoneyid FROM u_accounts WHERE u_accounts.accountsid = :accountsid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN arg_msg = '查询当前的出纳帐号币种失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF SELECT Top 1 getdate() Into :server_datetime From u_user Using commit_transaction ; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,日期 " GOTO ext END IF cnt = 0 SELECT count(*) INTO :cnt FROM u_user Where username = :arg_operator Using commit_transaction ; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,操作员!" GOTO ext END IF IF cnt = 0 THEN rslt = 0 arg_msg = "操作员姓名未登记或已取消!" GOTO ext END IF opdate = server_datetime //填写单据建立时间(最近修改时间) ////////////////////////////////////////////// //开始区分:新建/更新 处理 IF billid = 0 THEN //新建 ll_id = f_sys_scidentity(0,"U_emppay","billid",arg_msg,True,id_sqlca) IF ll_id <= 0 THEN rslt = 0 GOTO ext END IF //取分部代号 IF f_get_sccode(scid,commit_transaction,ls_sccode,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF billtype = 0 THEN billcode = getid(0,ls_sccode + 'SZ',Date(server_datetime),False,commit_transaction) ELSEIF billtype = 1 THEN billcode = getid(0,ls_sccode + 'JH',Date(server_datetime),False,commit_transaction) ELSEIF billtype = 2 THEN billcode = getid(0,ls_sccode + 'HH',Date(server_datetime),False,commit_transaction) END IF IF billcode = "err" THEN billcode = '' rslt = 0 arg_msg = "无法获取单据编号"+"~n"+sqlca.SQLErrText GOTO ext END IF //读取新taskid INSERT INTO U_emppay ( billid, billcode, banktypeid, amt, accountsid, billdate, dscrp, rep, itemid, Opemp, Opdate, scid, relcode) VALUES ( :ll_id, :billcode, :banktypeid, :amt, :accountsid, :billdate, :dscrp, :rep, :itemid, :arg_operator, :opdate, :scid, :relcode) Using commit_transaction ; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "插入工资发放单操作失败"+"~n"+commit_transaction.SQLErrText GOTO ext END IF billid = ll_id ELSE //////////////////////////////////////////////// //更新 UPDATE U_emppay SET billcode = :billcode, banktypeid = :banktypeid, amt = :amt, accountsid = :accountsid, billdate = :billdate, dscrp = :dscrp, rep = :rep, rapmoneyid = :rapmoneyid, itemid = :itemid, ModDate = getdate(), ModEmp = :arg_operator, relcode = :relcode, scid = :scid WHERE U_emppay.billID = :billID Using commit_transaction; IF commit_transaction.SQLCode <> 0 Or commit_transaction.SQLNRows <= 0 THEN rslt = 0 arg_msg = "更新报价单操作失败"+"~n"+commit_transaction.SQLErrText GOTO ext END IF DELETE FROM U_emppay_mx Where U_emppay_mx.billid = :billid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除旧有明细操作失败"+"~n"+commit_transaction.SQLErrText GOTO ext END IF END IF FOR i = 1 To it_mxbt INSERT INTO U_emppay_mx (billid, printid, amt, empid, mxdscrp, mstpayamt) VALUES (:billid, :incomemx[i].printid, :incomemx[i].amt, :incomemx[i].empid, :incomemx[i].mxdscrp, :incomemx[i].mstpayamt) Using commit_transaction ; IF commit_transaction.SQLCode <> 0 THEN IF it_newbegin THEN billid = 0 rslt = 0 arg_msg = "插入工资发放单明细操作失败"+"~n"+commit_transaction.SQLErrText GOTO ext END IF NEXT it_newbegin = False it_updatebegin = False ext: IF rslt = 0 THEN ROLLBACK Using commit_transaction; p_clearmx() ELSEIF arg_ifcommit And rslt = 1 THEN COMMIT Using commit_transaction; END IF RETURN rslt end function public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit);//add_dscrp(string arg_newdescppart) //0 fail 1 SUCCESS Int rslt = 1 arg_newdescppart = Trim(arg_newdescppart) IF it_updatebegin Or it_newbegin 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_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF flag <> 1 THEN rslt = 0 arG_MSG = "待审核状态下不可用" GOTO ext END IF UPDATE U_emppay SET dscrp = ltrim(rtrim(dscrp))+' '+:arg_newdescppart Where U_emppay.billid = :arg_billid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arG_MSG = "添加单据备注操作失败"+"~n"+commit_transaction.SQLErrText ROLLBACK Using commit_transaction; GOTO ext END IF IF relrapid > 0 THEN UPDATE u_rap_money SET dscrp = ltrim(rtrim(dscrp)) + ' '+:arg_newdescppart Where rapmoneyid = :relrapid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arG_MSG = "添加相关出纳帐备注操作失败"+"~n"+commit_transaction.SQLErrText ROLLBACK Using commit_transaction; GOTO ext END IF END IF dscrp = dscrp+' '+arg_newdescppart it_newbegin = False it_updatebegin = False ext: IF arg_ifcommit And rslt = 1 THEN COMMIT Using commit_transaction; END IF p_reset() Return (rslt) end function public function integer p_clearmx ();it_mxbt = 0 return 1 end function public function integer getinfo (long arg_billid, ref string arg_msg);Int rslt = 1 Long i = 1 ,no_mxcheck IF arg_billid <= 0 THEN rslt = 0 arg_msg = '错误单据唯一码' GOTO ext END IF IF p_getinfo(arg_billid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF DECLARE cur_mx CURSOR FOR SELECT billid,printid, itemid, amt, empid, buildtype, relscid, relbillid, relbillcode,rel_dateint,mxdscrp FROM U_emppay_mx Where billid = :arg_billid Using commit_transaction; OPEN cur_mx; FETCH cur_mx INTO :incomemx[i].billid, :incomemx[i].printid, :incomemx[i].itemid, :incomemx[i].amt, :incomemx[i].empid, :incomemx[i].buildtype, :incomemx[i].relscid, :incomemx[i].relbillid, :incomemx[i].relbillcode, :incomemx[i].rel_dateint, :incomemx[i].mxdscrp; DO WHILE sqlca.SQLCode = 0 i++ FETCH cur_mx INTO :incomemx[i].billid, :incomemx[i].printid, :incomemx[i].itemid, :incomemx[i].amt, :incomemx[i].empid, :incomemx[i].buildtype, :incomemx[i].relscid, :incomemx[i].relbillid, :incomemx[i].relbillcode, :incomemx[i].rel_dateint, :incomemx[i].mxdscrp; LOOP CLOSE cur_mx; SELECT count(*) INTO :no_mxcheck FROM U_emppay_mx Where billid = :arg_billid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,工资发放单明细数量" GOTO ext END IF IF i <> (no_mxcheck+1) THEN rslt = 0 arg_msg = "查询操作失败,工资发放单明细" GOTO ext END IF it_mxbt = i - 1 it_newbegin = False it_updatebegin = False ext: IF rslt = 0 THEN p_reset() RETURN rslt end function public function integer audit (long arg_billid, ref string arg_msg, boolean arg_ifcommit); Int rslt = 1 Long cnt = 0,ll_i uo_empinfo uo_ep uo_ep = Create uo_empinfo IF arg_billid <= 0 THEN rslt = 0 arg_msg = '错误工资发放单唯一码' GOTO ext END IF IF getinfo(arg_billid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF flag <> 0 THEN rslt = 0 arg_msg = "单据已经审核,操作取消" GOTO ext END IF FOR ll_i = 1 To it_mxbt IF uo_ep.uof_add_emppay( incomemx[ll_i].empid,billid,rapmoneyid,billcode,& billdate,incomemx[ll_i].amt,incomemx[ll_i].mxdscrp,1,False,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF NEXT UPDATE U_emppay SET auditemp = :publ_operator , auditdate = getdate(), flag = 1 WHERE billid = :arg_billid AND flag = 0 Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "单据审核操作失败 ~n"+commit_transaction.SQLErrText GOTO ext END IF it_newbegin = False it_updatebegin = False ext: IF rslt = 0 THEN ROLLBACK Using commit_transaction; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT Using commit_transaction; END IF p_reset() Destroy uo_ep Return (rslt) end function public function integer cancelaudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 DateTime nulldate Long ll_i SetNull(nulldate) uo_empinfo uo_ep uo_ep = Create uo_empinfo IF arg_billid <= 0 THEN rslt = 0 arg_msg = '错误单据唯一码' GOTO ext END IF IF getinfo(arg_billid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF flag <> 1 THEN rslt = 0 arg_msg = "单据只有在已审核状态才可以执行撤消审核,请核对" GOTO ext END IF IF secflag = 1 THEN rslt = 0 arg_msg = "单据已财务确认,不能执行撤消审核,请核对" GOTO ext END IF FOR ll_i = 1 To it_mxbt IF uo_ep.uof_del_emppay(incomemx[ll_i].empid,billid,rapmoneyid,billcode,1,False,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF NEXT UPDATE U_emppay SET flag = 0, auditemp = '', auditdate = :nulldate WHERE U_emppay.billid = :arg_billid AND flag = 1 AND secflag = 0 Using commit_transaction ; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "单据撤消审核操作失败"+"~n"+commit_transaction.SQLErrText GOTO ext ELSEIF commit_transaction.SQLCode = 100 THEN rslt = 0 arg_msg = "单据撤审失败"+"~n"+commit_transaction.SQLErrText GOTO ext END IF it_newbegin = False it_updatebegin = False ext: IF rslt = 0 THEN ROLLBACK Using commit_transaction; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT Using commit_transaction; END IF p_reset() Destroy uo_ep Return (rslt) end function public function integer secaudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long cnt = 0 Long ll_i Long ll_ref_rapmoneyid, ll_ref_dateint String ls_dscrp Dec ld_msttakeamt, ld_takeamt uo_iteminput uo_item uo_item = Create uo_iteminput uo_rapmoney uo_money uo_money = Create uo_rapmoney s_rap_money s_rap s_iteminput s_input IF arg_billid <= 0 THEN rslt = 0 ARG_MSG = '错误单据唯一码' GOTO ext END IF IF getinfo(arg_billid,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF flag = 0 THEN rslt = 0 ARG_MSG = "单据未审核,不能进行财务确认" GOTO ext END IF IF secflag = 1 THEN rslt = 0 ARG_MSG = "单据已财务确认,请检查" GOTO ext END IF ///////////////////////////////////// // ls_dscrp = '工资发放单:' + billcode + ' 相关号:'+relcode+' ' +dscrp ld_msttakeamt = 0 ld_takeamt = amt s_input.itemid = itemid s_input.dateint = 0 s_input.outdate = billdate s_input.dscrp = ls_dscrp s_input.outamt = ld_takeamt s_input.accountsid = accountsid s_input.banktypeid = banktypeid s_input.billcode = billcode s_input.relcode = '' s_input.buildtype = 1 s_input.opemp = publ_operator s_input.relrep = rep s_input.scid = scid IF uo_item.add_iteminput(s_input,ARG_MSG,False) = 0 THEN rslt = 0 GOTO ext END IF ll_ref_dateint = uo_item.ref_dateint s_rap.accountsid = accountsid s_rap.takedate = billdate s_rap.inrep = rep s_rap.dscrp = ls_dscrp s_rap.msttakeamt = ld_msttakeamt s_rap.takeamt = ld_takeamt s_rap.billcode = billcode s_rap.relcode = relcode s_rap.buildtype = 1 s_rap.dcflag = 0 s_rap.relid = 0 s_rap.opemp = publ_operator s_rap.banktypeid = banktypeid s_rap.scid = scid IF uo_money.add_raprec(s_rap,ARG_MSG,False) = 0 THEN ARG_MSG = '增加出纳明细帐失败!~n' + ARG_MSG rslt = 0 GOTO ext END IF ll_ref_rapmoneyid = uo_money.ref_rapid IF ll_ref_rapmoneyid = 0 THEN ARG_MSG = '增加出纳明细帐失败!' rslt = 0 GOTO ext END IF UPDATE U_emppay SET secauditemp = :publ_operator , secauditdate = getdate(), secflag = 1, relrapid = :ll_ref_rapmoneyid, ref_dateint = :ll_ref_dateint WHERE U_emppay.billid = :arg_billid AND U_emppay.secflag = 0 AND U_emppay.flag = 1 Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "更单据审核操作失败"+"~n"+commit_transaction.SQLErrText GOTO ext END IF it_newbegin = False it_updatebegin = False ext: Destroy uo_item Destroy uo_money IF rslt = 0 THEN ROLLBACK Using commit_transaction; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT Using commit_transaction; END IF p_reset() Return (rslt) end function public function integer cancelsecaudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long ll_i DateTime nulldate SetNull(nulldate) uo_iteminput uo_item uo_item = Create uo_iteminput uo_rapmoney uo_money uo_money = Create uo_rapmoney IF arg_billid <= 0 THEN rslt = 0 arg_msg = '错误单据唯一码' GOTO ext END IF IF getinfo(arg_billid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF secflag = 0 THEN rslt = 0 arg_msg = "单据未财务确认,请检查" GOTO ext END IF IF relrapid > 0 THEN IF uo_money.del_raprec(relrapid,accountsid,1,arg_msg,False) = 0 THEN arg_msg = '删除出纳明细帐失败!~n' + arg_msg rslt = 0 GOTO ext END IF END IF IF ref_dateint > 0 THEN IF uo_item.del_iteminput(itemid,ref_dateint,1,arg_msg,False) = 0 THEN arg_msg = '删除收支明细帐失败!~n' + arg_msg rslt = 0 GOTO ext END IF END IF UPDATE U_emppay SET secflag = 0, secauditemp = '', secauditdate = :nulldate, relrapid = 0, ref_dateint = 0 WHERE U_emppay.billid = :arg_billid AND secflag = 1 Using commit_transaction ; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "单据财务反确认操作失败"+"~n"+commit_transaction.SQLErrText GOTO ext END IF it_newbegin = False it_updatebegin = False ext: Destroy uo_item Destroy uo_money IF rslt = 0 THEN ROLLBACK Using commit_transaction; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT Using commit_transaction; END IF p_reset() Return (rslt) end function public function integer acceptmx (long arg_empid, decimal arg_amt, decimal arg_mstpayamt, string arg_mxdscrp, ref string arg_msg);Int rslt = 1 Long cnt Int li_ifdepart,li_ifemp IF it_newbegin = False And it_updatebegin = False THEN rslt = 0 arg_msg = "非编辑状态不可以使用,操作取消" GOTO ext END IF it_mxbt++ incomemx[it_mxbt].empid = arg_empid incomemx[it_mxbt].printid = it_mxbt incomemx[it_mxbt].amt = arg_amt incomemx[it_mxbt].mxdscrp = arg_mxdscrp incomemx[it_mxbt].mstpayamt = arg_mstpayamt ext: IF rslt = 0 THEN p_clearmx() RETURN rslt end function on uo_emppay.create call super::create TriggerEvent( this, "constructor" ) end on on uo_emppay.destroy TriggerEvent( this, "destructor" ) call super::destroy end on