$PBExportHeader$uo_mtrl_structure.sru forward global type uo_mtrl_structure from nonvisualobject end type end forward global type uo_mtrl_structure from nonvisualobject end type global uo_mtrl_structure uo_mtrl_structure type variables long ul_mtrlid end variables forward prototypes public function integer uof_chk_rand (long arg_mtrlid) public function integer uof_prdpf_add (long arg_mtrlid, string arg_pfcode, s_structuremx arg_mx[], boolean arg_ifcommit, ref string arg_msg) public function integer uof_prdpf_del (long arg_mtrlid, string arg_pfcode, boolean arg_ifcommit, ref string arg_msg) public function integer uof_gy_del (long arg_mtrlid, string arg_pfcode, boolean arg_ifcommit, ref string arg_msg) public function integer uof_gy_add (long arg_mtrlid, string arg_pfcode, string arg_pf_gy, boolean arg_ifcommit, ref string arg_msg) public function integer uof_update_sopdate (long arg_mtrlid, boolean arg_ifcommit, ref string arg_msg) public function long uof_get_maxprintid (long arg_mtrlid, string arg_pfcode) public function integer uof_chk_prdpf (long arg_mtrlid, string arg_pfcode, string arg_pfgroup, long arg_sonmtrlid) end prototypes public function integer uof_chk_rand (long arg_mtrlid);//============================================================================== // 函数: uo_mtrl_structore::uof_chk_rand() //------------------------------------------------------------------------------ // 描述: 检查环, 需先定义ul_mtrlid // ul_mtrlid = XXX // uof_chk_rand(YYY) //------------------------------------------------------------------------------ // 参数: // value long arg_mtrlid //------------------------------------------------------------------------------ // 返回值: integer //------------------------------------------------------------------------------ // 作者: HD Lee 日期: 2011.11.06 //------------------------------------------------------------------------------ // 修改历史: // //============================================================================== Int rslt = 1 Long count Long mtrlid[],ls_i IF arg_mtrlid = ul_mtrlid THEN RETURN 0 DECLARE pf_cur CURSOR FOR SELECT u_PrdPF.SonMtrlid FROM u_PrdPF Where ( u_PrdPF.mtrlid = :arg_mtrlid ); OPEN pf_cur; count = 1 FETCH pf_cur INTO :mtrlid[count]; DO WHILE sqlca.SQLCode = 0 count++ FETCH pf_cur INTO :mtrlid[count]; LOOP count = count - 1 CLOSE pf_cur; FOR ls_i = 1 TO count rslt = uof_chk_rand(mtrlid[ls_i]) IF rslt <> 1 THEN RETURN rslt NEXT RETURN rslt end function public function integer uof_prdpf_add (long arg_mtrlid, string arg_pfcode, s_structuremx arg_mx[], boolean arg_ifcommit, ref string arg_msg); Int rslt = 1 Long i FOR i = 1 TO UpperBound(arg_mx) INSERT INTO u_prdpf ( mtrlid, pfcode, sonmtrlid, sonscale, sonloss, sondecloss, sonahead, dscrp, updownrate, ifreputate, ifover, pfgroup, pfgroupqty, pfgroupmode, promode, printid, wrkgrpid, status, pcode, woodcode) VALUES ( :arg_mtrlid, :arg_pfcode, :arg_mx[i].mtrlid, :arg_mx[i].sonscale, :arg_mx[i].sonloss, :arg_mx[i].sondecloss, :arg_mx[i].sonahead, :arg_mx[i].dscrp, :arg_mx[i].updownrate, :arg_mx[i].ifreputate, :arg_mx[i].ifover, :arg_mx[i].pfgroup, :arg_mx[i].pfgroupqty, :arg_mx[i].pfgroupmode, :arg_mx[i].promode, :arg_mx[i].printid, :arg_mx[i].wrkgrpid, :arg_mx[i].status, :arg_mx[i].pcode, :arg_mx[i].woodcode) ; IF sqlca.SQLCode <> 0 THEN arg_msg = "因为网络或其他原因,插入物料清单操作失败!"+sqlca.SQLErrText rslt = 0 GOTO ext END IF NEXT ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer uof_prdpf_del (long arg_mtrlid, string arg_pfcode, boolean arg_ifcommit, ref string arg_msg); Int rslt = 1 DELETE FROM u_prdpf WHERE ( u_prdpf.mtrlid = :arg_mtrlid ) AND ( u_prdpf.pfcode = :arg_pfcode ); IF sqlca.SQLCode <> 0 THEN arg_msg = "因为网络或其他原因,删除物料清单操作失败!"+sqlca.SQLErrText rslt = 0 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 uof_gy_del (long arg_mtrlid, string arg_pfcode, boolean arg_ifcommit, ref string arg_msg); Int rslt = 1 DELETE FROM u_mtrl_structure_gy WHERE ( mtrlid = :arg_mtrlid ) AND ( pfcode = :arg_pfcode ); IF sqlca.SQLCode <> 0 THEN arg_msg = "因为网络或其他原因,删除物料清单工艺说明操作失败!"+sqlca.SQLErrText rslt = 0 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 uof_gy_add (long arg_mtrlid, string arg_pfcode, string arg_pf_gy, boolean arg_ifcommit, ref string arg_msg);//============================================================================== // 函数: uo_mtrl_structore::uof_gy_add() //------------------------------------------------------------------------------ // 描述: 新建/更新工艺说明 //------------------------------------------------------------------------------ // 参数: // value long arg_mtrlid // value string arg_pfcode // value string arg_pf_gy // value boolean arg_ifcommit // reference string arg_msg //------------------------------------------------------------------------------ // 返回值: integer //------------------------------------------------------------------------------ // 作者: HD Lee 日期: 2011.11.06 //------------------------------------------------------------------------------ // 修改历史: // //============================================================================== Int rslt = 1 UPDATE u_mtrl_structure_gy SET pfgy = :arg_pf_gy WHERE ( mtrlid = :arg_mtrlid ) AND ( pfcode = :arg_pfcode ) ; IF sqlca.SQLCode = 0 THEN IF sqlca.SQLNRows = 0 THEN INSERT INTO u_mtrl_structure_gy (mtrlid,pfcode, pfgy ) Values (:arg_mtrlid,:arg_pfcode, :arg_pf_gy); IF sqlca.SQLCode <> 0 THEN arg_msg = "因为网络或其他原因,插入物料清单工艺说明操作失败!"+sqlca.SQLErrText rslt = 0 GOTO ext END IF END IF ELSE arg_msg = "因为网络或其他原因,更新物料清单工艺说明操作失败!"+sqlca.SQLErrText rslt = 0 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 uof_update_sopdate (long arg_mtrlid, boolean arg_ifcommit, ref string arg_msg); Int rslt = 1 UPDATE u_mtrldef SET sopdate = getdate() , spopemp = :publ_operator Where mtrlid = :arg_mtrlid; IF sqlca.SQLCode <> 0 THEN arg_msg = "因为网络或其他原因,更新产品物料构成修改时间操作失败!"+sqlca.SQLErrText rslt = 0 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 long uof_get_maxprintid (long arg_mtrlid, string arg_pfcode);Long ll_printid SELECT Max(printid) INTO :ll_printid FROM u_prdpf WHERE mtrlid = :arg_mtrlid AND pfcode = :arg_pfcode; IF sqlca.SQLCode <> 0 THEN ll_printid = 0 END IF IF IsNull(ll_printid) THEN ll_printid = 0 RETURN ll_printid end function public function integer uof_chk_prdpf (long arg_mtrlid, string arg_pfcode, string arg_pfgroup, long arg_sonmtrlid);Long cnt SELECT count(*) INTO :cnt FROM u_prdpf WHERE mtrlid = :arg_mtrlid AND pfcode = :arg_pfcode AND pfgroup = :arg_pfgroup AND sonmtrlid = :arg_sonmtrlid; IF sqlca.SQLCode <> 0 THEN cnt = 0 END IF IF cnt > 0 THEN RETURN 0 ELSE RETURN 1 END IF end function on uo_mtrl_structure.create call super::create TriggerEvent( this, "constructor" ) end on on uo_mtrl_structure.destroy TriggerEvent( this, "destructor" ) call super::destroy end on