$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 boolean ib_CreateRapmoneyid = true //收入支出帐 与 出纳帐分离,目前只有部分单据使用; 默认true,不分离;设false,分离 //过度选项,以后要完全分离 //已使用的单据:其他收入支出单 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 mod_iteminput (long arg_itemid, long arg_dateint, long arg_rapmoneyid, datetime arg_outdate, string arg_dscrp, decimal arg_outamt, long arg_accountsid, integer arg_banktypeid, ref string arg_msg, boolean arg_ifcommit, string arg_billcode, string arg_relcode) public function integer add_iteminput (s_iteminput arg_s_mx, ref string arg_msg, boolean arg_ifcommit) protected function integer add_iteminput (long arg_scid, long arg_itemid, long arg_dateint, datetime arg_outdate, string arg_dscrp, decimal arg_outamt, long arg_accountsid, ref string arg_msg, boolean arg_ifcommit, long arg_banktypeid, integer arg_buildtype, string arg_billcode, long arg_moneyid, string arg_relcode) 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 = '查询收支明细失败>'+sqlca.SQLErrText 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 IF ib_CreateRapmoneyid THEN 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 // Decimal arg_msttakeamt,arg_takeamt // IF ls_itemflag = 1 THEN // arg_msttakeamt = ls_outamt // arg_takeamt = 0 // ELSE // arg_msttakeamt = 0 // arg_takeamt = ls_outamt // END IF uo_money.commit_transaction = sqlca 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 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 mod_iteminput (long arg_itemid, long arg_dateint, long arg_rapmoneyid, datetime arg_outdate, string arg_dscrp, decimal arg_outamt, long arg_accountsid, integer arg_banktypeid, ref string arg_msg, boolean arg_ifcommit, string arg_billcode, string arg_relcode);Int rslt = 1,ls_itemflag Long cnt = 0 Long ref_rapmoneyid uo_rapmoney uo_money uo_money = CREATE uo_rapmoney IF arg_outdate < DateTime(Date('2000-01-01'),Time(0)) THEN arg_msg = '错误的发生时间' rslt = 0 GOTO ext END IF IF arg_outamt = 0 THEN arg_msg = '请输入金额' rslt = 0 GOTO ext END IF 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 cnt = 0 SELECT count(*) INTO :cnt FROM u_accounts Where u_accounts.accountsid = :arg_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 ////检查币种 //cnt = 0 //SELECT count(*) // INTO :cnt // FROM cw_currency // Where moneyid = :arg_moneyid; //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 arg_msttakeamt,arg_takeamt IF ls_itemflag = 1 THEN arg_msttakeamt = arg_outamt arg_takeamt = 0 ELSE arg_msttakeamt = 0 arg_takeamt = arg_outamt END IF uo_money.commit_transaction = sqlca long ll_accountsid SELECT accountid INTO :ll_accountsid FROM u_rap_money Where rapmoneyid = :arg_rapmoneyid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询修改前帐号失败!' rslt = 0 GOTO ext END IF IF uo_money.del_raprec(arg_rapmoneyid,ll_accountsid,1,arg_msg,FALSE) = 0 THEN arg_msg = '删除出纳明细帐失败!~n' + arg_msg rslt = 0 GOTO ext END IF IF uo_money.add_raprec(-1,arg_accountsid,arg_outdate,publ_operator,arg_dscrp,arg_msttakeamt,& arg_takeamt,arg_billcode,1,0,0,publ_operator,arg_msg,FALSE,arg_banktypeid,arg_relcode) = 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_outdate, dscrp = :arg_dscrp, outamt = :arg_outamt, moddate = getdate(), modemp = :publ_operator, accountsid = :arg_accountsid, rapmoneyid = :ref_rapmoneyid, itemid = :arg_itemid, banktypeid = :arg_banktypeid, billcode = :arg_billcode, relcode = :arg_relcode Where dateint = :arg_dateint; IF sqlca.SQLCode <> 0 THEN IF Pos(Lower(sqlca.SQLErrText),'pk_u_iteminput') > 0 THEN arg_msg = '修改收支明细操作失败,关键字ID重复' ELSEIF Pos(Lower(sqlca.SQLErrText),'ix_u_iteminput_1') > 0 THEN arg_msg = '修改收支明细操作失败,发生日期重复' ELSEIF Pos(Lower(sqlca.SQLErrText),'ix_u_iteminput') > 0 THEN arg_msg = '修改收支明细操作失败,收支项目ID重复' ELSE arg_msg = "因网络或其它原因修改收支明细操作失败"+"~n"+sqlca.SQLErrText END IF 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_mx, 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 arg_s_mx.dateint = 0 THEN arg_s_mx.dateint = f_sys_scidentity(0,"u_iteminput","dateint",arg_msg,False,sqlca) IF arg_s_mx.dateint <= 0 THEN rslt = 0 GOTO ext END IF END IF IF arg_s_mx.outdate < DateTime(Date('2000-01-01'),Time(0)) THEN arg_msg = '错误的发生时间' rslt = 0 GOTO ext END IF IF arg_s_mx.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_mx.itemid; IF sqlca.SQLCode <> 0 THEN arg_msg = '找不到当前的收支项目!' rslt = 0 GOTO ext END IF IF ib_CreateRapmoneyid THEN //检查账号 cnt = 0 SELECT count(*) INTO :cnt FROM u_accounts Where u_accounts.accountsid = :arg_s_mx.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 //检查币种 cnt = 0 SELECT count(*) INTO :cnt FROM cw_currency Where moneyid = :arg_s_mx.moneyid; 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 lde_msttakeamt,lde_takeamt IF ls_itemflag = 1 THEN lde_msttakeamt = arg_s_mx.outamt lde_takeamt = 0 ELSE lde_msttakeamt = 0 lde_takeamt = arg_s_mx.outamt END IF uo_money.commit_transaction = sqlca IF uo_money.add_raprec(arg_s_mx.scid,arg_s_mx.accountsid,arg_s_mx.outdate,publ_operator,arg_s_mx.dscrp,lde_msttakeamt,& lde_takeamt,arg_s_mx.billcode,1,0,0,publ_operator,arg_msg,False,arg_s_mx.banktypeid,arg_s_mx.relcode) = 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 END IF INSERT INTO u_iteminput (itemid,dateint,billcode,outdate,dscrp,outamt,opdate,opemp, accountsid,rapmoneyid,buildtype,banktypeid,moneyid,scid,relcode) VALUES (:arg_s_mx.itemid,:arg_s_mx.dateint,:arg_s_mx.billcode,:arg_s_mx.outdate,:arg_s_mx.dscrp, :arg_s_mx.outamt,getdate(),:publ_operator,:arg_s_mx.accountsid,:ref_rapid,:arg_s_mx.buildtype,:arg_s_mx.banktypeid, :arg_s_mx.moneyid,:arg_s_mx.scid,:arg_s_mx.relcode); IF sqlca.SQLCode <> 0 THEN arg_msg = '增加收支记录失败!'+sqlca.SQLErrText rslt = 0 GOTO ext END IF ref_dateint = arg_s_mx.dateint ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT; END IF Destroy uo_money RETURN rslt end function protected function integer add_iteminput (long arg_scid, long arg_itemid, long arg_dateint, datetime arg_outdate, string arg_dscrp, decimal arg_outamt, long arg_accountsid, ref string arg_msg, boolean arg_ifcommit, long arg_banktypeid, integer arg_buildtype, string arg_billcode, long arg_moneyid, string arg_relcode);s_iteminput s_input s_input.itemid = arg_itemid s_input.dateint = arg_dateint s_input.outdate = arg_outdate s_input.dscrp = arg_dscrp s_input.outamt = arg_outamt s_input.accountsid = arg_accountsid s_input.banktypeid = arg_banktypeid s_input.billcode = arg_billcode s_input.relcode = arg_relcode s_input.buildtype = arg_buildtype s_input.opemp = publ_operator s_input.relrep = '' s_input.scid = arg_scid s_input.moneyid = arg_moneyid return add_iteminput(s_input,arg_msg,arg_ifcommit) //Int rslt = 1,ls_itemflag //Long cnt = 0 //long ref_rapid //uo_rapmoney uo_money //uo_money = CREATE uo_rapmoney // //IF arg_dateint = 0 THEN // arg_dateint = f_sys_scidentity(0,"u_iteminput","dateint",arg_msg,false,sqlca) // IF arg_dateint <= 0 THEN // rslt = 0 // GOTO ext // END IF //END IF // //IF arg_outdate < DateTime(Date('2000-01-01'),Time(0)) THEN // arg_msg = '错误的发生时间' // rslt = 0 // GOTO ext //END IF // //IF arg_outamt = 0 THEN // arg_msg = '请输入金额' // rslt = 0 // GOTO ext //END IF // ////检查项目; //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 // ////检查账号 //cnt = 0 //SELECT count(*) // INTO :cnt // FROM u_accounts // Where u_accounts.accountsid = :arg_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 // ////检查币种 //cnt = 0 //SELECT count(*) // INTO :cnt // FROM cw_currency // Where moneyid = :arg_moneyid; //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 arg_msttakeamt,arg_takeamt //IF ls_itemflag = 1 THEN // arg_msttakeamt = arg_outamt // arg_takeamt = 0 //ELSE // arg_msttakeamt = 0 // arg_takeamt = arg_outamt //END IF // //uo_money.commit_transaction = sqlca //IF uo_money.add_raprec(arg_scid,arg_accountsid,arg_outdate,publ_operator,arg_dscrp,arg_msttakeamt,& // arg_takeamt,arg_billcode,1,0,0,publ_operator,arg_msg,FALSE,arg_banktypeid,arg_relcode) = 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,outdate,dscrp,outamt,opdate,opemp,accountsid,rapmoneyid,buildtype,banktypeid,moneyid,scid,relcode) // VALUES // (:arg_itemid,:arg_dateint,:arg_billcode,:arg_outdate,:arg_dscrp,:arg_outamt,getdate(),:publ_operator,:arg_accountsid,:ref_rapid,:arg_buildtype,:arg_banktypeid,:arg_moneyid,:arg_scid,:arg_relcode); // //IF sqlca.SQLCode <> 0 THEN // arg_msg = '增加收支记录失败!'+sqlca.sqlerrtext // rslt = 0 // GOTO ext //END IF // //ref_dateint = arg_dateint // //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