$PBExportHeader$uo_workpricetable.sru forward global type uo_workpricetable from nonvisualobject end type end forward global type uo_workpricetable from nonvisualobject end type global uo_workpricetable uo_workpricetable type variables long mtrlid //产品id long wpmtrlid decimal wprate s_workpricetable workpricemx[] //明细结构数组 long it_mxbt=0 //明细结构数组末指针 boolean it_updatebegin=false//修改标志 Long deep_count = 0 long il_printid = 0 end variables forward prototypes public function integer p_clearmx () public function integer p_reset () public function integer updatebegin (long arg_mtrlid, ref string arg_msg) public function integer c_auditing (long arg_mtrlid, ref string arg_msg, boolean arg_ifcommit) public function integer acceptsumrec (long arg_mtrlid, ref string arg_msg, boolean arg_ifcommit) public function integer save (boolean arg_ifcommit, ref string arg_msg) public function integer auditing (long arg_mtrlid, long arg_wrkgrpid, string arg_auditingrep, ref string arg_msg, boolean arg_ifcommit) public function integer update_auditflag (long arg_mtrlid, datetime arg_auditdate, string arg_auditingrep, ref string arg_msg, boolean arg_ifcommit) public function integer c_auditing (long arg_mtrlid, long arg_wrkgrpid, ref string arg_msg, boolean arg_ifcommit) public function integer f_addpfmx (long arg_mtrlid, string arg_pfcode, decimal arg_qty, long arg_lp, ref string arg_msg, boolean arg_ifcommit) public function integer f_clearpfmx (long arg_mtrlid, ref string arg_msg, boolean arg_ifcommit) public function integer f_addworkprice (long arg_mtrlid, ref string arg_msg, boolean arg_ifcommit) public function integer auditing_gs (long arg_mtrlid, long arg_wrkgrpid, string arg_auditingrep, ref string arg_msg, boolean arg_ifcommit) public function integer c_auditing_gs (long arg_mtrlid, long arg_wrkgrpid, ref string arg_msg, boolean arg_ifcommit) public function integer acceptmx (long arg_proid, string arg_procode, string arg_proname, decimal arg_workqty, decimal arg_workprice, long arg_wrkgrpid, string arg_worklevel, string arg_techlevel, decimal arg_workhour, string arg_dscrp, integer arg_lastflag, long arg_proorder, integer arg_ifownpro, integer arg_lsxtype, integer arg_ifstandard, string arg_status, integer arg_ifjd, string arg_pricestr, string arg_stepstr, ref string arg_msg) end prototypes public function integer p_clearmx ();//INT p_clearmx() //清除明细 it_mxbt=0 RETURN 1 end function public function integer p_reset ();//INT p_RESET() //清除对象及其明细 wpmtrlid = 0 wprate = 0 it_updatebegin=FALSE //清除明细 P_CLEARMX() RETURN 1 end function public function integer updatebegin (long arg_mtrlid, ref string arg_msg);Long ll_auditflag,rslt = 1,ll_mtrlid,ll_count SELECT mtrlid,auditflag INTO :ll_mtrlid,:ll_auditflag FROM u_mtrldef Where mtrlid = :arg_mtrlid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询该产品的资料失败! 原因:'+sqlca.SQLErrText GOTO ext END IF IF ll_auditflag = 1 THEN rslt = 0 arg_msg = '该产品的工价表已审核,不能修改!' GOTO ext END IF SELECT count(*) INTO :ll_count From u_sc_workprice Where mtrlid = :arg_mtrlid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询该产品的工价表失败,原因:'+sqlca.SQLErrText GOTO ext END IF mtrlid = ll_mtrlid p_clearmx() it_updatebegin = True ext: IF rslt = 0 THEN p_reset() RETURN rslt end function public function integer c_auditing (long arg_mtrlid, ref string arg_msg, boolean arg_ifcommit);Long rslt = 1,ll_count,ll_Auditflag DateTime serdate IF IsNull(arg_mtrlid) THEN rslt = 0 arg_msg = '没有撤核对象!' GOTO ext END IF SELECT Auditflag INTO :ll_Auditflag FROM u_mtrldef Where mtrlid = :arg_mtrlid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '该产品没有审核!' GOTO ext END IF SetNull(serdate) UPDATE u_mtrldef SET Auditflag = 0, Audit_emp = '', Audit_date = :serdate Where mtrlid = :arg_mtrlid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '撤核失败!原因:'+sqlca.SQLErrText ROLLBACK; GOTO ext END IF ext: IF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer acceptsumrec (long arg_mtrlid, ref string arg_msg, boolean arg_ifcommit);////acceptsumrec(long arg_mtrlid,string arg_msg, boolean arg_ifcommit) //s_workpricetable s_pricetable[] //dec ls_sumhour,ls_sumprice //long ls_wrkgrpid,i=1,k,ls_mxid,ls_proid,procount //int rslt=1 //string ls_procode // //declare getworkprosum cursor for // SELECT SUM(u_sc_workprice.Workhour), SUM(u_sc_workprice.workPrice), // u_sc_workgroup.wrkgrpid // FROM u_sc_workprice, u_sc_workprocedure, u_sc_workgroup // WHERE (u_sc_workprice.proid = u_sc_workprocedure.proid) AND // (u_sc_workprocedure.wrkgrpid = u_sc_workgroup.wrkgrpid) AND // ((u_sc_workprice.Mtrlid = :arg_mtrlid)) AND u_sc_workprice.sumflag = 0 // GROUP BY u_sc_workgroup.wrkgrpid; //open getworkprosum; //Do While sqlca.sqlcode=0 // Fetch getworkprosum into :ls_sumhour,:ls_sumprice,:ls_wrkgrpid; // if sqlca.sqlcode<>0 then exit; // s_pricetable[i].wrkgrpid=ls_wrkgrpid // s_pricetable[i].workhour=ls_sumhour // s_pricetable[i].workprice=ls_sumprice // i++ //loop //Close getworkprosum; //delete from u_sc_workprice where mtrlid=:arg_mtrlid and sumflag=1; //if sqlca.sqlcode=-1 then // rslt=0 // arg_msg='删除工序失败!' // goto ext //end if // //for k= 1 to upperbound(s_pricetable) //// ls_mxid=f_sys_scidentity(0,"u_sc_workprice","mxid",arg_msg,false) //// if ls_mxid<0 then //// rslt=0 //// goto ext //// end if // // select proid,code into :ls_proid,:ls_procode from u_sc_workprocedure where wrkgrpid=:s_pricetable[K].wrkgrpid and sysflag=1; // if sqlca.sqlcode=-1 then // arg_msg='查询工序资料失败,原因:'+sqlca.sqlerrtext // rslt=0 // goto ext // end if // // SELECT count(*) into :procount FROM u_sc_workprice INNER JOIN // u_sc_workprocedure ON u_sc_workprice.proid = u_sc_workprocedure.proid AND // u_sc_workprocedure.wrkgrpid = :s_pricetable[k].wrkgrpid AND u_sc_workprice.mtrlid = :arg_mtrlid AND // u_sc_workprice.sumflag = 0; // if sqlca.sqlcode=-1 then // arg_msg='查询该产品工序资料失败,原因:'+sqlca.sqlerrtext // rslt=0 // goto ext // end if // // if procount>1 then // // insert into u_sc_workprice // (mtrlid, // proid, // Procode, // workPrice, // Workhour, // sumflag) // values(:arg_mtrlid, // :ls_proid, // :ls_Procode, // :s_pricetable[K].workPrice, // :s_pricetable[K].Workhour, // 1); // // if sqlca.sqlcode<>0 then // rslt=0 // arg_msg="插入工序明细表错误!原因:"+sqlca.sqlerrtext // rollback; // goto ext // end if // end if //next // // //ext: //if rslt=1 and arg_ifcommit then // commit; //end if // //if rslt=0 then // rollback; //end if //return rslt return 1 end function public function integer save (boolean arg_ifcommit, ref string arg_msg);Long rslt = 1,i Long cnt DateTime serdate IF it_updatebegin = TRUE THEN IF IsNull(mtrlid) OR mtrlid = 0 THEN arg_msg = '产品错误,没有对应的产品' rslt = 0 GOTO ext END IF // IF it_mxbt = 0 THEN // arg_msg = '没有可保存的工序明细' // rslt = 0 // GOTO ext // END IF IF wpmtrlid > 0 THEN cnt = 0 SELECT count(*) INTO :cnt FROM u_mtrldef Where mtrlid = :wpmtrlid; 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 wprate <= 0 THEN arg_msg = '请正确输入标准产品工价的比率' rslt = 0 GOTO ext END IF END IF SELECT Top 1 getdate() INTO :serdate FROM u_user; IF sqlca.SQLCode <> 0 THEN arg_msg = '取服务器时间失败' rslt = 0 GOTO ext END IF UPDATE u_mtrldef SET popdate = :serdate, popemp = :publ_operator, wpmtrlid = :wpmtrlid, wprate = :wprate Where mtrlid = :mtrlid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '写入操作日期和操作人失败!'+sqlca.SQLErrText ROLLBACK; GOTO ext END IF DELETE FROM u_sc_workprice WHERE mtrlid = :mtrlid AND auditflag = 0; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '删除工价表明细失败!' GOTO ext END IF FOR i = 1 TO it_mxbt INSERT INTO u_sc_workprice (mtrlid, proid, proname, procode, workprice, worklevel, techlevel, workhour, dscrp, lastflag, proorder, workqty, wrkgrpid, ifownpro, lsxtype, ifstandard, status, ifjd, pricestr, stepstr ) VALUES(:mtrlid, :workpricemx[i].proid, :workpricemx[i].proname, :workpricemx[i].procode, :workpricemx[i].workprice, :workpricemx[i].worklevel, :workpricemx[i].techlevel, :workpricemx[i].workhour, :workpricemx[i].dscrp, :workpricemx[i].lastflag, :workpricemx[i].proorder, :workpricemx[i].workqty, :workpricemx[i].wrkgrpid, :workpricemx[i].ifownpro, :workpricemx[i].lsxtype, :workpricemx[i].ifstandard, :workpricemx[i].status, :workpricemx[i].ifjd, :workpricemx[i].pricestr, :workpricemx[i].stepstr ); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "插入工序明细表错误!原因:"+sqlca.SQLErrText GOTO ext END IF NEXT END IF it_updatebegin = FALSE ext: IF rslt = 0 THEN ROLLBACK; mtrlid = 0 p_clearmx() ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer auditing (long arg_mtrlid, long arg_wrkgrpid, string arg_auditingrep, ref string arg_msg, boolean arg_ifcommit);//==================================================================== // Function: auditing() //-------------------------------------------------------------------- // Description: 审核工价表 //-------------------------------------------------------------------- // Arguments: // value long arg_mtrlid // value string arg_auditingrep // reference string arg_msg // value boolean arg_ifcommit //-------------------------------------------------------------------- // Returns: integer //-------------------------------------------------------------------- // Author: yyx Date: 2003.11.01 //-------------------------------------------------------------------- // Modify History: // //==================================================================== Long rslt = 1,ll_count,ll_Auditflag DateTime serdate IF IsNull(arg_mtrlid) THEN rslt = 0 arg_msg = '没有审核对象!' GOTO ext END IF ll_count = 0 SELECT count(*) Into :ll_count From u_sc_workprice Where mtrlid = :arg_mtrlid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询该产品的工价表失败,原因:'+sqlca.SQLErrText GOTO ext END IF IF ll_count = 0 THEN rslt = 0 arg_msg = '该产品没有工序,不能审核' GOTO ext END IF SELECT Top 1 getdate() Into :serdate From u_user; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询服务器时间失败' rslt = 0 GOTO ext END IF ll_count = 0 IF arg_wrkGrpid > 0 THEN SELECT count(*) INTO :ll_count FROM u_sc_workgroup Where wrkGrpid = :arg_wrkGrpid; IF sqlca.SQLCode <> 0 Or ll_count <> 1 THEN arg_msg = '查询工组资料失败,或者不存在工组资料' rslt = 0 GOTO ext END IF END IF UPDATE u_sc_workprice SET auditflag = 1, auditrep = :arg_auditingrep, auditdate = :serdate WHERE mtrlid = :arg_mtrlid And (wrkGrpid = :arg_wrkGrpid Or :arg_wrkGrpid = -1 ); IF sqlca.SQLCode <> 0 THEN arg_msg = '更新工价表明细审核标记失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF update_auditflag(arg_mtrlid,serdate,arg_auditingrep,arg_msg,False) = 0 THEN rslt = 0 GOTO ext END IF ext: IF rslt = 1 And arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer update_auditflag (long arg_mtrlid, datetime arg_auditdate, string arg_auditingrep, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long cnt SELECT count(*) INTO :cnt FROM u_sc_workprice WHERE auditflag = 0 AND mtrlid = :arg_mtrlid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询工价表明细未审核工序数失败' rslt = 0 GOTO ext END IF IF cnt = 0 THEN UPDATE u_mtrldef SET Auditflag = 1, Audit_emp = :arg_auditingrep, Audit_date = :arg_auditdate Where mtrlid = :arg_mtrlid; ELSE UPDATE u_mtrldef SET Auditflag = 0, Audit_emp = :arg_auditingrep, Audit_date = :arg_auditdate Where mtrlid = :arg_mtrlid; END IF IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '更新工价表审核标记失败,原因:'+sqlca.SQLErrText 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 c_auditing (long arg_mtrlid, long arg_wrkgrpid, ref string arg_msg, boolean arg_ifcommit);Long rslt = 1,ll_count,ll_Auditflag DateTime serdate,null_dt SetNull(null_dt) IF IsNull(arg_mtrlid) THEN rslt = 0 arg_msg = '没有审核对象!' GOTO ext END IF ll_count = 0 SELECT count(*) INTO :ll_count FROM u_sc_workprice Where mtrlid = :arg_mtrlid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询该产品的工价表失败,原因:'+sqlca.SQLErrText GOTO ext END IF IF ll_count = 0 THEN rslt = 0 arg_msg = '该产品没有工序,不能审核' GOTO ext END IF ll_count = 0 IF arg_wrkGrpid > 0 THEN SELECT count(*) INTO :ll_count FROM u_sc_workgroup Where wrkGrpid = :arg_wrkGrpid; IF sqlca.SQLCode <> 0 OR ll_count <> 1 THEN arg_msg = '查询工组资料失败,或者不存在工组资料' rslt = 0 GOTO ext END IF END IF UPDATE u_sc_workprice SET auditflag = 0, auditrep = '', auditdate = :null_dt WHERE mtrlid = :arg_mtrlid And (wrkGrpid = :arg_wrkGrpid OR :arg_wrkGrpid = -1 ); IF sqlca.SQLCode <> 0 THEN arg_msg = '更新工价表明细审核标记失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF update_auditflag(arg_mtrlid,null_dt,'',arg_msg,FALSE) = 0 THEN rslt = 0 GOTO ext END IF ext: IF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer f_addpfmx (long arg_mtrlid, string arg_pfcode, decimal arg_qty, long arg_lp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long ll_i,cnt,ll_j String ls_pfcode Decimal ld_qty Long count = 0 Long proid Long proorder String procode String proname Long wrkgrpid Decimal workprice Decimal workqty String worklevel Decimal workhour String dscrp Long auditflag String auditrep DateTime auditdate Long lastflag string status IF IsNull(mtrlid) OR mtrlid = 0 THEN arg_msg = '产品错误,没有对应的产品' rslt = 0 GOTO ext END IF s_pfmx ls_s_pfmx[] //查询默认清单 deep_count++ datastore ds_workprice ds_workprice = CREATE datastore ds_workprice.DataObject = 'dw_sc_workpricetable_mx' ds_workprice.SetTransObject(sqlca) IF count > 2000 THEN //防止死递归 arg_msg = '递归太深'+String(count) rslt = 0 GOTO ext END IF DECLARE pf_cur CURSOR FOR SELECT u_PrdPF.Sonscale, u_PrdPF.SonLoss, u_PrdPF.SonDECLosS, u_PrdPF.SonMtrlid, u_mtrldef.mtrlcode, u_mtrldef.mtrlorigin, u_PrdPF.sonpfcode FROM u_PrdPF, u_mtrldef WHERE ( u_PrdPF.SonMtrlid = u_mtrldef.mtrlid ) AND ( u_PrdPF.mtrlid = :arg_mtrlid ) AND ( u_PrdPF.pfcode = :arg_pfcode ); OPEN pf_cur; count = 1 FETCH pf_cur INTO :ls_s_pfmx[count].Sonscale,:ls_s_pfmx[count].SonLoss,& :ls_s_pfmx[count].SonDECLosS,:ls_s_pfmx[count].SonMtrlid,& :ls_s_pfmx[count].mtrlcode,:ls_s_pfmx[count].mtrlorigin,:ls_s_pfmx[count].sonpfcode; DO WHILE sqlca.SQLCode = 0 count++ FETCH pf_cur INTO :ls_s_pfmx[count].Sonscale,:ls_s_pfmx[count].SonLoss,& :ls_s_pfmx[count].SonDECLosS,:ls_s_pfmx[count].SonMtrlid,& :ls_s_pfmx[count].mtrlcode,:ls_s_pfmx[count].mtrlorigin,:ls_s_pfmx[count].sonpfcode; LOOP count = count - 1 CLOSE pf_cur; FOR ll_i = 1 TO count SELECT count(*) INTO :cnt FROM u_PrdPF WHERE ( u_PrdPF.mtrlid = :ls_s_pfmx[ll_i].SonMtrlid ) AND ( u_PrdPF.pfcode = :ls_s_pfmx[count].sonpfcode ); IF sqlca.SQLCode <> 0 THEN arg_msg = '查询物料:'+ls_s_pfmx[count].mtrlcode+'物料清单失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF ld_qty = arg_qty * (ls_s_pfmx[ll_i].Sonscale/(1 - ls_s_pfmx[ll_i].SonLoss)+ls_s_pfmx[ll_i].SonDECLosS) //如果自制,将其工价表插入 IF ls_s_pfmx[ll_i].mtrlorigin = 0 THEN ds_workprice.Retrieve(ls_s_pfmx[ll_i].SonMtrlid) FOR ll_j = 1 TO ds_workprice.RowCount() il_printid++ proid = ds_workprice.Object.proid[ll_j] proorder = ds_workprice.Object.proorder[ll_j] procode = ds_workprice.Object.procode[ll_j] proname = ds_workprice.Object.u_sc_workprice_proname[ll_j] wrkgrpid = ds_workprice.Object.wrkgrpid[ll_j] workprice = ds_workprice.Object.workprice[ll_j] workqty = ds_workprice.Object.workqty[ll_j] * ld_qty worklevel = ds_workprice.Object.worklevel[ll_j] workhour = ds_workprice.Object.workhour[ll_j] * ld_qty dscrp = ds_workprice.Object.dscrp[ll_j] auditflag = ds_workprice.Object.auditflag[ll_j] auditrep = ds_workprice.Object.auditrep[ll_j] auditdate = ds_workprice.Object.auditdate[ll_j] status = ds_workprice.Object.u_sc_workprice_status[ll_j] INSERT INTO u_sc_workprice_mx (parentmtrlid, printid, mtrlid, proid, proorder, procode, proname, wrkgrpid, workprice, workqty, worklevel, workhour, dscrp, auditflag, auditrep, auditdate, lastflag, lp, status) VALUES (:mtrlid, :il_printid, :ls_s_pfmx[ll_i].SonMtrlid, :proid, :proorder, :procode, :proname, :wrkgrpid, :workprice, :workqty, :worklevel, :workhour, :dscrp, :auditflag, :auditrep, :auditdate, :lastflag, :arg_lp, :status); IF sqlca.SQLCode <> 0 THEN arg_msg = '插入下级自制部件工价表失败'+sqlca.SQLErrText rslt = 0 GOTO ext END IF NEXT END IF IF f_addpfmx(ls_s_pfmx[ll_i].SonMtrlid,ls_s_pfmx[ll_i].sonpfcode,ld_qty,arg_lp + 1 ,arg_msg,arg_ifcommit) = 0 THEN 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 f_clearpfmx (long arg_mtrlid, ref string arg_msg, boolean arg_ifcommit);Long rslt = 1 DELETE FROM u_sc_workprice_mx WHERE parentmtrlid = :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 integer f_addworkprice (long arg_mtrlid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long ll_j Long proid Long proorder String procode String proname Long wrkgrpid Decimal workprice Decimal workqty String worklevel Decimal workhour String dscrp Long auditflag String auditrep DateTime auditdate Long lastflag string status int ifjd datastore ds_workprice ds_workprice = CREATE datastore ds_workprice.DataObject = 'dw_sc_workpricetable_mx' ds_workprice.SetTransObject(sqlca) ds_workprice.Retrieve(arg_mtrlid) FOR ll_j = 1 TO ds_workprice.RowCount() il_printid++ proid = ds_workprice.Object.proid[ll_j] proorder = ds_workprice.Object.proorder[ll_j] procode = ds_workprice.Object.procode[ll_j] proname = ds_workprice.Object.u_sc_workprice_proname[ll_j] wrkgrpid = ds_workprice.Object.wrkgrpid[ll_j] workprice = ds_workprice.Object.workprice[ll_j] workqty = ds_workprice.Object.workqty[ll_j] worklevel = ds_workprice.Object.worklevel[ll_j] workhour = ds_workprice.Object.workhour[ll_j] dscrp = ds_workprice.Object.dscrp[ll_j] auditflag = ds_workprice.Object.auditflag[ll_j] auditrep = ds_workprice.Object.auditrep[ll_j] auditdate = ds_workprice.Object.auditdate[ll_j] status = ds_workprice.Object.u_sc_workprice_status[ll_j] ifjd = ds_workprice.Object.u_sc_workprice_ifjd[ll_j] INSERT INTO u_sc_workprice_mx (parentmtrlid, printid, mtrlid, proid, proorder, procode, proname, wrkgrpid, workprice, workqty, worklevel, workhour, dscrp, auditflag, auditrep, auditdate, lastflag, lp, status, ifjd) VALUES (:arg_mtrlid, :il_printid, :arg_mtrlid, :proid, :proorder, :procode, :proname, :wrkgrpid, :workprice, :workqty, :worklevel, :workhour, :dscrp, :auditflag, :auditrep, :auditdate, :lastflag, 0, :status, :ifjd); 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 auditing_gs (long arg_mtrlid, long arg_wrkgrpid, string arg_auditingrep, ref string arg_msg, boolean arg_ifcommit);Long rslt = 1,ll_count,ll_Auditflag DateTime serdate IF IsNull(arg_mtrlid) THEN rslt = 0 arg_msg = '没有审核对象!' GOTO ext END IF ll_count = 0 SELECT count(*) INTO :ll_count FROM u_sc_workprice Where mtrlid = :arg_mtrlid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询该产品的工价表失败,原因:'+sqlca.SQLErrText GOTO ext END IF IF ll_count = 0 THEN rslt = 0 arg_msg = '该产品没有工序,不能审核' GOTO ext END IF SELECT Top 1 getdate() INTO :serdate FROM u_user; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询服务器时间失败' rslt = 0 GOTO ext END IF ll_count = 0 IF arg_wrkGrpid > 0 THEN SELECT count(*) INTO :ll_count FROM u_sc_workgroup Where wrkGrpid = :arg_wrkGrpid; IF sqlca.SQLCode <> 0 OR ll_count <> 1 THEN arg_msg = '查询工组资料失败,或者不存在工组资料' rslt = 0 GOTO ext END IF END IF UPDATE u_sc_workprice SET auditflag_gs = 1, auditrep_gs = :arg_auditingrep, auditdate_gs = :serdate WHERE mtrlid = :arg_mtrlid And (wrkGrpid = :arg_wrkGrpid OR :arg_wrkGrpid = -1 ); IF sqlca.SQLCode <> 0 THEN arg_msg = '更新工价表明细工时审核标记失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF ext: IF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer c_auditing_gs (long arg_mtrlid, long arg_wrkgrpid, ref string arg_msg, boolean arg_ifcommit);Long rslt = 1,ll_count,ll_Auditflag DateTime serdate,null_dt SetNull(null_dt) IF IsNull(arg_mtrlid) THEN rslt = 0 arg_msg = '没有审核对象!' GOTO ext END IF ll_count = 0 SELECT count(*) INTO :ll_count FROM u_sc_workprice Where mtrlid = :arg_mtrlid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询该产品的工价表失败,原因:'+sqlca.SQLErrText GOTO ext END IF IF ll_count = 0 THEN rslt = 0 arg_msg = '该产品没有工序,不能审核' GOTO ext END IF ll_count = 0 IF arg_wrkGrpid > 0 THEN SELECT count(*) INTO :ll_count FROM u_sc_workgroup Where wrkGrpid = :arg_wrkGrpid; IF sqlca.SQLCode <> 0 OR ll_count <> 1 THEN arg_msg = '查询工组资料失败,或者不存在工组资料' rslt = 0 GOTO ext END IF END IF UPDATE u_sc_workprice SET auditflag_gs = 0, auditrep_gs = '', auditdate_gs = :null_dt WHERE mtrlid = :arg_mtrlid And (wrkGrpid = :arg_wrkGrpid OR :arg_wrkGrpid = -1 ); IF sqlca.SQLCode <> 0 THEN arg_msg = '更新工价表明细工时审核标记失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF ext: IF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer acceptmx (long arg_proid, string arg_procode, string arg_proname, decimal arg_workqty, decimal arg_workprice, long arg_wrkgrpid, string arg_worklevel, string arg_techlevel, decimal arg_workhour, string arg_dscrp, integer arg_lastflag, long arg_proorder, integer arg_ifownpro, integer arg_lsxtype, integer arg_ifstandard, string arg_status, integer arg_ifjd, string arg_pricestr, string arg_stepstr, ref string arg_msg);Long rslt = 1,ll_proid String ll_procode IF it_updatebegin = FALSE THEN rslt = 0 arG_MSG = "非编辑状态不可以使用,操作取消" GOTO ext END IF //清空值 IF IsNull(arg_workqty) THEN arg_workqty = 1 IF IsNull(arg_workPrice) THEN arg_workPrice = 0 IF IsNull(arg_workhour) THEN arg_workhour = 0 IF IsNull(arg_lastflag) THEN arg_lastflag = 0 IF IsNull(arg_proid) THEN arg_proid = 0 IF IsNull(arg_procode) THEN arg_procode = '' IF IsNull(arg_proname) THEN arg_proname = '' IF IsNull(arg_techlevel) THEN arg_techlevel = '' IF IsNull(arg_worklevel) THEN arg_worklevel = '' IF IsNull(arg_proorder) THEN arg_proorder = 0 IF IsNull(arg_wrkgrpid) THEN arg_wrkgrpid = 0 IF IsNull(arg_ifownpro) THEN arg_ifownpro = 0 IF IsNull(arg_lsxtype) THEN arg_lsxtype = 0 IF IsNull(arg_ifstandard) THEN arg_ifstandard = 0 IF IsNull(arg_status) THEN arg_status = '' if isnull(arg_ifjd) then arg_ifjd = 0 if isnull(arg_pricestr) then arg_pricestr = '' if isnull(arg_stepstr) then arg_stepstr = '' IF Trim(arg_procode) = '' AND Trim(arg_proname) = '' THEN rslt = 1 GOTO ext END IF IF Trim(arg_procode) = '' THEN rslt = 0 arG_MSG = "工序号不能为空" GOTO ext END IF IF Trim(arg_proname) = '' THEN rslt = 0 arG_MSG = "工序名称不能为空" GOTO ext END IF IF arg_workqty <= 0 THEN rslt = 0 arG_MSG = "数量不能少于1" GOTO ext END IF IF arg_wrkgrpid = 0 THEN rslt = 0 arG_MSG = "请选择工序所属工组" GOTO ext END IF //写入内容 it_mxbt++ workpricemx[it_mxbt].proid = arg_proid workpricemx[it_mxbt].Procode = arg_procode workpricemx[it_mxbt].proname = arg_proname workpricemx[it_mxbt].workqty = arg_workqty workpricemx[it_mxbt].workPrice = arg_workPrice workpricemx[it_mxbt].worklevel = arg_worklevel workpricemx[it_mxbt].Techlevel = arg_techlevel workpricemx[it_mxbt].Workhour = arg_workhour workpricemx[it_mxbt].Dscrp = arg_Dscrp workpricemx[it_mxbt].lastflag = arg_lastflag workpricemx[it_mxbt].proorder = arg_proorder workpricemx[it_mxbt].wrkgrpid = arg_wrkgrpid workpricemx[it_mxbt].ifownpro = arg_ifownpro workpricemx[it_mxbt].lsxtype = arg_lsxtype workpricemx[it_mxbt].ifstandard = arg_ifstandard workpricemx[it_mxbt].status = arg_status workpricemx[it_mxbt].ifjd = arg_ifjd workpricemx[it_mxbt].pricestr = arg_pricestr workpricemx[it_mxbt].stepstr = arg_stepstr ext: IF rslt = 0 THEN p_clearmx() Return(rslt) end function on uo_workpricetable.create call super::create TriggerEvent( this, "constructor" ) end on on uo_workpricetable.destroy TriggerEvent( this, "destructor" ) call super::destroy end on