$PBExportHeader$uo_iteminput.sru forward global type uo_iteminput from nonvisualobject end type end forward global type uo_iteminput from nonvisualobject end type global uo_iteminput uo_iteminput type variables long ref_dateint = 0 end variables forward prototypes public function integer del_iteminput (long arg_itemid, long arg_dateint, long arg_ifauto, ref string arg_msg, boolean arg_ifcommit) public function integer add_iteminput (s_iteminput arg_s_iteminput, ref string arg_msg, boolean arg_ifcommit) public function integer mod_iteminput (s_iteminput arg_s_iteminput, ref string arg_msg, boolean arg_ifcommit) end prototypes public function integer del_iteminput (long arg_itemid, long arg_dateint, long arg_ifauto, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,ls_itemflag,li_buildtype Decimal ls_outamt Long ls_accountsid,ls_rapmoneyid Long cnt = 0 //uo_rapmoney uo_money //uo_money = CREATE uo_rapmoney SELECT itemflag INTO :ls_itemflag FROM u_itemdef Where u_itemdef.itemid = :arg_itemid; IF sqlca.SQLCode <> 0 THEN arg_msg = '找不到当前的收支项目!' rslt = 0 GOTO ext END IF SELECT outamt,accountsid,rapmoneyid,buildtype INTO :ls_outamt,:ls_accountsid,:ls_rapmoneyid,:li_buildtype FROM u_iteminput Where dateint = :arg_dateint; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询收支明细失败' rslt = 0 GOTO ext END IF IF arg_ifauto = 0 THEN IF li_buildtype = 1 THEN arg_msg = '自动建立的收支帐不能删除' rslt = 0 GOTO ext END IF END IF // //cnt = 0 //SELECT count(*) // INTO :cnt // FROM u_accounts // Where u_accounts.accountsid = :ls_accountsid; //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 uo_money.del_raprec(ls_rapmoneyid,ls_accountsid,1,arg_msg,FALSE) = 0 THEN // arg_msg = '删除出纳明细帐失败!~n' + arg_msg // rslt = 0 // GOTO ext //END IF DELETE FROM u_iteminput Where dateint = :arg_dateint; IF sqlca.SQLCode <> 0 THEN 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_money RETURN rslt end function public function integer add_iteminput (s_iteminput arg_s_iteminput, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,ls_itemflag Long cnt = 0 Long ref_rapid //uo_rapmoney uo_money //uo_money = CREATE uo_rapmoney // IF IsNull(arg_s_iteminput.scid) THEN arg_s_iteminput.scid = 0 IF arg_s_iteminput.dateint = 0 THEN arg_s_iteminput.dateint = f_sys_scidentity(0,"u_iteminput","dateint",arg_msg,TRUE,id_sqlca) IF arg_s_iteminput.dateint <= 0 THEN rslt = 0 GOTO ext END IF END IF IF arg_s_iteminput.outdate < DateTime(Date('2000-01-01'),Time(0)) THEN arg_msg = '错误的发生时间' rslt = 0 GOTO ext END IF IF f_check_inoutdate(0,arg_s_iteminput.outdate,FALSE,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF arg_s_iteminput.outamt = 0 and arg_s_iteminput.inamt = 0 THEN arg_msg = '收入金额与支出金额不能同时为0' rslt = 0 GOTO ext END IF //IF arg_s_iteminput.outamt < 0 THEN // arg_msg = '支出金额必须>0' // rslt = 0 // GOTO ext //END IF // //IF arg_s_iteminput.inamt < 0 THEN // arg_msg = '收入金额必须>0' // rslt = 0 // GOTO ext //END IF //SELECT itemflag // INTO :ls_itemflag // FROM u_itemdef // Where u_itemdef.itemid = :arg_s_iteminput.itemid; //IF sqlca.SQLCode <> 0 THEN // arg_msg = '查询当前收支项目核算方向失败!' // rslt = 0 // GOTO ext //END IF //cnt = 0 //SELECT count(*) // INTO :cnt // FROM u_accounts // Where u_accounts.accountsid = :arg_s_iteminput.accountsid; //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 // //Decimal ld_msttakeamt,ld_takeamt //IF ls_itemflag = 1 THEN // ld_msttakeamt = arg_s_iteminput.outamt // ld_takeamt = 0 //ELSE // ld_msttakeamt = 0 // ld_takeamt = arg_s_iteminput.outamt //END IF // //s_rap_money s_rap // //s_rap.accountsid = arg_s_iteminput.accountsid //s_rap.takedate = arg_s_iteminput.outdate //s_rap.inrep = arg_s_iteminput.relrep //s_rap.dscrp = arg_s_iteminput.dscrp //s_rap.msttakeamt = ld_msttakeamt //s_rap.takeamt = ld_takeamt //s_rap.billcode = arg_s_iteminput.billcode //s_rap.relcode = arg_s_iteminput.relcode //s_rap.buildtype = 1 //s_rap.dcflag = 0 //s_rap.relid = 0 //s_rap.opemp = arg_s_iteminput.opemp //s_rap.banktypeid = arg_s_iteminput.banktypeid // // //IF uo_money.add_raprec(s_rap,arg_msg,FALSE) = 0 THEN // arg_msg = '增加出纳明细帐失败!~n' + arg_msg // rslt = 0 // GOTO ext //END IF // //ref_rapid = uo_money.ref_rapid //IF ref_rapid = 0 THEN // arg_msg = '增加出纳明细帐失败!' // rslt = 0 // GOTO ext //END IF INSERT INTO u_iteminput (itemid, dateint, billcode, relcode, outdate, dscrp, inamt, outamt, opdate, opemp, accountsid, rapmoneyid, buildtype, banktypeid, relrep, scid) VALUES (:arg_s_iteminput.itemid, :arg_s_iteminput.dateint, :arg_s_iteminput.billcode, :arg_s_iteminput.relcode, :arg_s_iteminput.outdate, :arg_s_iteminput.dscrp, :arg_s_iteminput.inamt, :arg_s_iteminput.outamt, getdate(), :arg_s_iteminput.opemp, :arg_s_iteminput.accountsid, :ref_rapid, :arg_s_iteminput.buildtype, :arg_s_iteminput.banktypeid, :arg_s_iteminput.relrep, :arg_s_iteminput.scid); IF sqlca.SQLCode <> 0 THEN arg_msg = '增加收支记录失败!'+sqlca.SQLErrText rslt = 0 GOTO ext END IF ref_dateint = arg_s_iteminput.dateint ext: IF rslt = 0 THEN ROLLBACK ; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF //DESTROY uo_money RETURN rslt end function public function integer mod_iteminput (s_iteminput arg_s_iteminput, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,ls_itemflag Long cnt = 0 Long ref_rapmoneyid Long ll_rapmoneyid,ll_accountsid uo_rapmoney uo_money uo_money = CREATE uo_rapmoney IF IsNull(arg_s_iteminput.scid) THEN arg_s_iteminput.scid = 0 IF arg_s_iteminput.outdate < DateTime(Date('2000-01-01'),Time(0)) THEN arg_msg = '错误的发生时间' rslt = 0 GOTO ext END IF IF arg_s_iteminput.outamt = 0 THEN arg_msg = '请输入金额' rslt = 0 GOTO ext END IF SELECT itemflag INTO :ls_itemflag FROM u_itemdef Where u_itemdef.itemid = :arg_s_iteminput.itemid; IF sqlca.SQLCode <> 0 THEN arg_msg = '找不到当前的收支项目!' rslt = 0 GOTO ext END IF cnt = 0 SELECT count(*) INTO :cnt FROM u_accounts Where u_accounts.accountsid = :arg_s_iteminput.accountsid; 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 Decimal ld_msttakeamt,ld_takeamt IF ls_itemflag = 1 THEN ld_msttakeamt = arg_s_iteminput.outamt ld_takeamt = 0 ELSE ld_msttakeamt = 0 ld_takeamt = arg_s_iteminput.outamt END IF SELECT accountsid,rapmoneyid INTO :ll_accountsid,:ll_rapmoneyid FROM u_iteminput Where dateint = :arg_s_iteminput.dateint; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询修改前帐号失败!' rslt = 0 GOTO ext END IF IF uo_money.del_raprec(ll_rapmoneyid,ll_accountsid,1,arg_msg,FALSE) = 0 THEN arg_msg = '删除出纳明细帐失败!~n' + arg_msg rslt = 0 GOTO ext END IF s_rap_money s_rap s_rap.accountsid = arg_s_iteminput.accountsid s_rap.takedate = arg_s_iteminput.outdate s_rap.inrep = arg_s_iteminput.opemp s_rap.dscrp = arg_s_iteminput.dscrp s_rap.msttakeamt = ld_msttakeamt s_rap.takeamt = ld_takeamt s_rap.billcode = arg_s_iteminput.billcode s_rap.relcode = arg_s_iteminput.relcode s_rap.opemp = arg_s_iteminput.opemp s_rap.banktypeid = arg_s_iteminput.banktypeid s_rap.buildtype = 1 s_rap.dcflag = 0 s_rap.relid = 0 s_rap.scid = arg_s_iteminput.scid IF uo_money.add_raprec(s_rap,arg_msg,FALSE) = 0 THEN arg_msg = '增加出纳明细帐失败!~n' + arg_msg rslt = 0 GOTO ext END IF ref_rapmoneyid = uo_money.ref_rapid IF ref_rapmoneyid = 0 THEN arg_msg = '增加银行出纳明细帐失败!' rslt = 0 GOTO ext END IF UPDATE u_iteminput SET outdate = :arg_s_iteminput.outdate, dscrp = :arg_s_iteminput.dscrp, outamt = :arg_s_iteminput.outamt, accountsid = :arg_s_iteminput.accountsid, rapmoneyid = :ref_rapmoneyid, itemid = :arg_s_iteminput.itemid, banktypeid = :arg_s_iteminput.banktypeid, billcode = :arg_s_iteminput.billcode, scid = :arg_s_iteminput.scid, relcode = :arg_s_iteminput.relcode Where dateint = :arg_s_iteminput.dateint; IF sqlca.SQLCode <> 0 THEN 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_money RETURN rslt end function on uo_iteminput.create call super::create TriggerEvent( this, "constructor" ) end on on uo_iteminput.destroy TriggerEvent( this, "destructor" ) call super::destroy end on