$PBExportHeader$uo_cmpl_modle.sru forward global type uo_cmpl_modle from nonvisualobject end type end forward global type uo_cmpl_modle from nonvisualobject end type global uo_cmpl_modle uo_cmpl_modle type variables //============================================================================== // 事件: uo_cmpl_modle::Declare Instance Variables() //------------------------------------------------------------------------------ // 描述: 标准计价模板 //------------------------------------------------------------------------------ // 参数:(无) //------------------------------------------------------------------------------ // 返回值: (none) //------------------------------------------------------------------------------ // 作者: Trueway Lee 日期: 2010.12.15 //------------------------------------------------------------------------------ // 修改历史: // //============================================================================== long ModleID string ModleName string opemp DateTime opdate long ModleType s_cmpl_modlemx mxs[] Boolean it_newbegin = FALSE //新建标志 Boolean it_updatebegin = FALSE//修改标志 end variables forward prototypes public function integer p_clearmx () public function integer p_reset () private function integer p_getinfo (long arg_modleid, ref string arg_msg) public function integer getinfo (long arg_modleid, ref string arg_msg) public function integer newbegin (ref string arg_msg) public function integer updatebegin (long arg_modleid, ref string arg_msg) public function integer savesubmit (ref string arg_msg) public function integer del (long arg_modleid, ref string arg_msg) end prototypes public function integer p_clearmx ();//INT p_clearmx() //清除明细 s_cmpl_modlemx tmp[] mxs = tmp RETURN 1 end function public function integer p_reset ();//int p_reset() //清除对象及其明细 ModleID = 0 ModleName = '' opemp = '' modletype = 0 it_newbegin=false it_updatebegin=false //清除明细 p_clearmx() return 1 end function private function integer p_getinfo (long arg_modleid, ref string arg_msg);int rslt=1 SELECT ModleID, ModleName, opemp, opdate, modletype INTO :ModleID, :ModleName, :opemp, :opdate, :modletype FROM u_cmpl_modle WHERE ModleID = :arg_modleID; if sqlca.sqlcode <> 0 then rslt = 0 arg_msg = '查询标准模板失败' goto ext end if ext: if rslt = 0 then p_reset() return rslt end function public function integer getinfo (long arg_modleid, ref string arg_msg);//getinfo(long arg_taskid,string arg_msg) //0 失败 1成功 Int rslt = 1,i = 0,no_mxcheck = 0 IF arg_modleID <= 0 THEN rslt = 0 arg_msg = '错误标准模板唯一码' GOTO ext END IF IF p_getinfo(arg_modleID,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF long ll_ModleID long ll_printid string ll_parmName string ll_displayName decimal ll_defaultValue long ll_if_useformula string ll_formula long ll_if_from_mtrl long ll_mtrlid string ll_mtrl_pro long ll_if_from_product string ll_product_pro long ll_wrkGrpid decimal ll_advancetime string ll_dscrp string ll_unit long ll_rowtype //用游标读取明细 DECLARE cur_inwaermx CURSOR FOR SELECT ModleID, printid, parmName, displayName, defaultValue, if_useformula, formula, if_from_mtrl, mtrlid, mtrl_pro, if_from_product, product_pro, wrkGrpid, advancetime, dscrp, unit, rowtype FROM u_cmpl_modlemx WHERE modleid = :arg_modleID; OPEN cur_inwaermx; FETCH cur_inwaermx INTO :ll_ModleID, :ll_printid, :ll_parmName, :ll_displayName, :ll_defaultValue, :ll_if_useformula, :ll_formula, :ll_if_from_mtrl, :ll_mtrlid, :ll_mtrl_pro, :ll_if_from_product, :ll_product_pro, :ll_wrkGrpid, :ll_advancetime, :ll_dscrp, :ll_unit, :ll_rowtype; DO WHILE sqlca.SQLCode = 0 i++ mxs[i].ModleID = ll_ModleID mxs[i].printid = ll_printid mxs[i].parmName = ll_parmName mxs[i].displayName = ll_displayName mxs[i].defaultValue = ll_defaultValue mxs[i].if_useformula = ll_if_useformula mxs[i].formula = ll_formula mxs[i].if_from_mtrl = ll_if_from_mtrl mxs[i].mtrlid = ll_mtrlid mxs[i].mtrl_pro = ll_mtrl_pro mxs[i].if_from_product = ll_if_from_product mxs[i].product_pro = ll_product_pro mxs[i].wrkGrpid = ll_wrkGrpid mxs[i].advancetime = ll_advancetime mxs[i].dscrp = ll_dscrp mxs[i].unit = ll_unit mxs[i].rowtype = ll_rowtype FETCH cur_inwaermx INTO :ll_ModleID, :ll_printid, :ll_parmName, :ll_displayName, :ll_defaultValue, :ll_if_useformula, :ll_formula, :ll_if_from_mtrl, :ll_mtrlid, :ll_mtrl_pro, :ll_if_from_product, :ll_product_pro, :ll_wrkGrpid, :ll_advancetime, :ll_dscrp, :ll_unit, :ll_rowtype; LOOP CLOSE cur_inwaermx; // ////检验明细是否读入完整 //SELECT count(*) INTO :no_mxcheck // FROM u_saletaskmx // Where u_saletaskmx.taskid = :arg_taskid AND scid = :arg_scid 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 newbegin (ref string arg_msg);//重置对象,设定业务类型与关联ID,准备建立新单 //0 fail 1 success long rslt=1,CNT=0 // //if arg_scid < 0 then // arg_msg = '请选择分部' // rslt = 0 // goto ext //end if // p_reset() it_newbegin=TRUE it_updatebegin=FALSE //scid=arg_scid //ext: //if rslt = 0 then p_reset() return rslt end function public function integer updatebegin (long arg_modleid, ref string arg_msg);//UPDATEbegin(long arg_taskid,ref string arg_msg) //从置对象,设定业务类型与关联ID,准备更新进仓单 //0 fail 1 success long rslt=1,CNT=0 // //if arg_scid < 0 then // arg_msg = '请选择分部' // rslt = 0 // goto ext //end if // IF arg_modleid<=0 THEN rslt=0 ARG_MSG='错误标准模板唯一码' goto ext end if if p_getinfo(arg_modleid,arg_msg)=0 then rslt=0 goto ext end if //if Status<>0 then // rslt=0 // ARG_MSG='已经处于审核或完成等状态,不可以修改,如果订单未完成并要修改请先撤销审核' // goto ext //end if // it_newbegin=FALSE it_updatebegin=TRUE p_clearmx() //清除明细 //scid=arg_scid ext: if rslt=0 then p_reset() return rslt end function public function integer savesubmit (ref string arg_msg);Integer rslt = 1,cnt = 0,i DateTime server_datetime Long ll_id IF IsNull(modlename) THEN modlename = '' IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN rslt = 0 arg_msg = "非编辑状态不可以提交" GOTO ext END IF select Top 1 getdate() INTO :server_datetime FROM u_user; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,日期 " GOTO ext END IF IF modleid = 0 THEN ll_id = f_sys_scidentity(0,"u_cmpl_modle","modleid",arg_msg,FALSE,sqlca) insert into u_cmpl_modle (ModleID ,ModleName ,opemp ,opdate ,modletype) values (:ll_id ,:ModleName ,:publ_operator ,:server_datetime ,:modletype); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '插入标准模板表失败,' + sqlca.SQLErrText GOTO ext END IF opemp = publ_operator opdate = server_datetime FOR i = 1 TO UpperBound(mxs) insert into u_cmpl_modleMx (ModleID ,printid ,parmName ,displayName ,defaultValue ,if_useformula ,formula ,if_from_mtrl ,mtrlid ,mtrl_pro ,if_from_product ,product_pro ,wrkGrpid ,advancetime ,dscrp ,unit ,rowtype) values (:ll_id ,:i ,:mxs[i].parmName ,:mxs[i].displayName ,:mxs[i].defaultValue ,:mxs[i].if_useformula ,:mxs[i].formula ,:mxs[i].if_from_mtrl ,:mxs[i].mtrlid ,:mxs[i].mtrl_pro ,:mxs[i].if_from_product ,:mxs[i].product_pro ,:mxs[i].wrkGrpid ,:mxs[i].advancetime ,:mxs[i].dscrp ,:mxs[i].unit ,:mxs[i].rowtype); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '插入标准模板明细失败,' + sqlca.SQLErrText GOTO ext END IF NEXT modleid = ll_id ELSE update u_cmpl_modle set ModleName = :ModleName ,opemp = :publ_operator ,opdate = :server_datetime ,modletype = :modletype Where modleid = :modleid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '更新标准模板失败,' + sqlca.SQLErrText GOTO ext END IF opemp = publ_operator opdate = server_datetime delete FROM u_cmpl_modleMx Where modleid = :modleid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '删除标准模板明细失败,' + sqlca.SQLErrText GOTO ext END IF FOR i = 1 TO UpperBound(mxs) insert into u_cmpl_modleMx (ModleID ,printid ,parmName ,displayName ,defaultValue ,if_useformula ,formula ,if_from_mtrl ,mtrlid ,mtrl_pro ,if_from_product ,product_pro ,wrkGrpid ,advancetime ,dscrp ,unit ,rowtype) values (:modleid ,:i ,:mxs[i].parmName ,:mxs[i].displayName ,:mxs[i].defaultValue ,:mxs[i].if_useformula ,:mxs[i].formula ,:mxs[i].if_from_mtrl ,:mxs[i].mtrlid ,:mxs[i].mtrl_pro ,:mxs[i].if_from_product ,:mxs[i].product_pro ,:mxs[i].wrkGrpid ,:mxs[i].advancetime ,:mxs[i].dscrp ,:mxs[i].unit ,:mxs[i].rowtype); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '插入标准模板明细失败,' + sqlca.SQLErrText GOTO ext END IF NEXT END IF it_newbegin = FALSE it_updatebegin = FALSE ext: IF rslt = 0 THEN rollback; p_clearmx() ELSEIF rslt = 1 THEN commit; END IF RETURN rslt end function public function integer del (long arg_modleid, ref string arg_msg);int rslt = 1 long ll_cnt SELECT COUNT(0) INTO :ll_cnt FROM u_cmpl_modle WHERE modleid = :arg_modleid; if sqlca.sqlcode <> 0 then rslt = 0 arg_msg = '查询标准模板表失败,' + sqlca.sqlerrtext goto ext end if if ll_cnt < 1 then rslt = 0 arg_msg = '标准模板不存在' goto ext end if DELETE FROM u_cmpl_modle WHERE modleid = :arg_modleid; if sqlca.sqlcode <> 0 then rslt = 0 arg_msg = '删除标准模板失败,' + sqlca.sqlerrtext goto ext end if DELETE FROM u_cmpl_modlemx WHERE modleid = :arg_modleid; if sqlca.sqlcode <> 0 then rslt = 0 arg_msg = '删除标准模板明细失败,' + sqlca.sqlerrtext goto ext end if ext: if rslt = 0 then rollback; else commit; end if return rslt end function on uo_cmpl_modle.create call super::create TriggerEvent( this, "constructor" ) end on on uo_cmpl_modle.destroy TriggerEvent( this, "destructor" ) call super::destroy end on