$PBExportHeader$uo_scwg_taskwork_2.sru forward global type uo_scwg_taskwork_2 from nonvisualobject end type end forward global type uo_scwg_taskwork_2 from nonvisualobject end type global uo_scwg_taskwork_2 uo_scwg_taskwork_2 type variables PUBLIC PROTECTEDWRITE Long billid PUBLIC PROTECTEDWRITE Long scid PUBLIC PROTECTEDWRITE String billcode PUBLIC PROTECTEDWRITE DateTime opdate PUBLIC PROTECTEDWRITE String opemp PUBLIC PROTECTEDWRITE DateTime moddate PUBLIC PROTECTEDWRITE String modemp PUBLIC PROTECTEDWRITE Int flag PUBLIC PROTECTEDWRITE DateTime auditingdate PUBLIC PROTECTEDWRITE String auditingrep PUBLIC PROTECTEDWRITE Int affirmflag PUBLIC PROTECTEDWRITE DateTime affirmdate PUBLIC PROTECTEDWRITE String affirmemp Int billtype DateTime billdate String dscrp Long wagemth String rep String relcode Long wageid Long wrkgrpid string relempstr s_scwg_taskwork_2 taskworkmx[] Transaction commit_transaction Long it_mxbt = 0 Boolean it_newbegin = FALSE Boolean it_updatebegin = FALSE end variables forward prototypes public function integer p_clearmx () public function integer p_reset () public function integer updatebegin (long arg_billid, ref string arg_msg) public function integer save (ref string arg_msg, boolean arg_ifcommit) public function integer del (long arg_billid, ref string arg_msg) public function integer newbegin (long arg_scid, ref string arg_msg) public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit) public function integer auditing_0 (long arg_wageid, long arg_wagemth, long arg_wrkgrpid, ref string arg_msg) public function integer auditing_1 (long arg_wageid, long arg_wagemth, ref string arg_msg) public function integer c_auditing_1 (long arg_wageid, long arg_wagemth, ref string arg_msg) public function integer c_auditing_0 (long arg_wageid, long arg_wagemth, long arg_wrkgrpid, ref string arg_msg) public function integer affirm (long arg_billid, ref string arg_msg, boolean arg_ifcommit) public function integer c_affirm (long arg_billid, ref string arg_msg, boolean arg_ifcommit) public function integer p_getinfo (long arg_billid, ref string arg_msg) public function integer getinfo (long arg_billid, string arg_msg) public function integer auditing_2 (long arg_wageid, long arg_wagemth, long arg_wrkgrpid, ref string arg_msg) public function integer c_auditing_2 (long arg_wageid, long arg_wagemth, long arg_wrkgrpid, ref string arg_msg) public function integer auditmx_1 (long arg_billid, ref string arg_msg, boolean arg_ifcommit) public function integer cauditmx_1 (long arg_billid, ref string arg_msg, boolean arg_ifcommit) public function integer acceptmx (long arg_mtrlid, string arg_procode, string arg_proname, decimal arg_qty, decimal arg_price, string arg_mxdscrp, ref string arg_msg, long arg_printid, string arg_status, string arg_woodcode, string arg_pcode, string arg_ycreason, long arg_orderid, string arg_ordercode, string arg_reason, string arg_unit, long arg_relscid, long arg_relprintid, decimal arg_addqty, long arg_relid2, long arg_relprintid2) 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() //清除对象及其明细 billid=0 billcode='' opemp='' auditingrep='' flag=0 wagemth=0 rep="" wageid=0 dscrp='' relcode='' it_newbegin=FALSE it_updatebegin=FALSE //清除明细 P_CLEARMX() RETURN 1 end function public function integer updatebegin (long arg_billid, ref string arg_msg);int rslt = 1 if arg_billid <= 0 then rslt = 0 goto ext end if if p_getinfo(arg_billid,arg_msg) = 0 then rslt = 0 goto ext end if IF affirmflag = 1 THEN rslt = 0 arg_msg = '单据已经确认,不可以修改' GOTO ext END IF if flag = 1 then rslt = 0 arg_msg = '单据已经审核,不可以修改' goto ext end if billid = arg_billid p_clearmx() it_newbegin = false it_updatebegin = true ext: if rslt = 0 then p_reset() return rslt end function public function integer save (ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1,cnt = 0,i DateTime server_dt Long ls_newid IF IsNull(wageid) THEN wageid = 0 IF IsNull(wrkgrpid) THEN wrkgrpid = 0 IF IsNull(relcode) THEN relcode = '' IF IsNull(rep) THEN rep = '' IF IsNull(wagemth) THEN wagemth = 0 IF IsNull(dscrp) THEN dscrp = '' IF it_newbegin = False And it_updatebegin = False THEN rslt = 0 arg_msg = "非编辑状态不可以提交" GOTO ext END IF SELECT Top 1 getdate() Into :server_dt From u_user Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,日期 " GOTO ext END IF IF it_mxbt = 0 THEN // rslt = 0 arg_msg = "没有计件明细" GOTO ext END IF IF Year(Date(billdate)) < 2000 Or IsNull(billdate) THEN rslt = 0 arg_msg = "缺少计件时间或不合理" GOTO ext END IF cnt = 0 SELECT count(*) INTO :cnt FROM u_gz_wageitem Where wageid = :wageid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询工资项目失败!" GOTO ext END IF IF cnt <> 1 THEN rslt = 0 arg_msg = "不存在工资项目!" GOTO ext END IF cnt = 0 IF billtype = 0 Or billtype = 2 THEN SELECT count(*) INTO :cnt FROM u_workgroup Where workgroupid = :wrkgrpid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询工作组失败!" GOTO ext END IF IF cnt <> 1 THEN rslt = 0 arg_msg = "不存在工作组!" GOTO ext END IF ELSEIF billtype = 1 THEN SELECT count(*) INTO :cnt FROM u_rs_empinfo Where empid = :wrkgrpid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询员工资料失败!" GOTO ext END IF IF cnt <> 1 THEN rslt = 0 arg_msg = "不存在员工资料!" GOTO ext END IF END IF String ls_empname[] Long ll_i,ll_j ll_i = 1 relempstr = '' cnt = 0 SELECT count(*) INTO :cnt FROM u_scwg_taskwork_2 WHERE flag = 1 AND wagemth = :wagemth AND wrkgrpid = :wrkgrpid AND billtype = :billtype And wageid = :wageid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN arg_msg = '查询本月是否有单审核失败,'+commit_transaction.SQLErrText rslt = 0 GOTO ext END IF IF cnt > 0 THEN arg_msg = '查询本月已有单审核,不能保存' rslt = 0 GOTO ext END IF ////////////////////////////////////////////// //开始区分:新建/更新 处理 IF billid = 0 THEN //新建 ls_newid = f_sys_scidentity(0,"u_scwg_taskwork_2","billid",arg_msg,True,commit_transaction) IF ls_newid <= 0 THEN rslt = 0 GOTO ext END IF IF billtype = 0 THEN billcode = getid(0,"JW",Date(server_dt),True,commit_transaction) //取得新单据编号 ELSEIF billtype = 1 THEN billcode = getid(0,"JP",Date(server_dt),True,commit_transaction) //取得新单据编号 ELSEIF billtype = 2 THEN //工作组月分配异常计件单 billcode = getid(0,"AW",Date(server_dt),True,commit_transaction) //取得新单据编号 END IF IF billcode = "err" THEN billcode = '' rslt = 0 arg_msg = "无法获取单据编号" GOTO ext END IF INSERT INTO u_scwg_taskwork_2 ( billid, billdate, wagemth, rep, relcode, dscrp, scid, billcode, wrkgrpid, opemp, opdate, wageid, billtype, relempstr) VALUES ( :ls_newid, :billdate, :wagemth, :rep, :relcode, :dscrp, :scid, :billcode, :wrkgrpid, :publ_operator, :server_dt , :wageid, :billtype, :relempstr) Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致插入操作失败>>"+"~n"+sqlca.SQLErrText GOTO ext END IF // billid = ls_newid ELSE //////////////////////////////////////////////// //更新 UPDATE u_scwg_taskwork_2 SET billdate = :billdate, wagemth = :wagemth, rep = :rep, relcode = :relcode, dscrp = :dscrp, billcode = :billcode, wrkgrpid = :wrkgrpid, modemp = :publ_operator, moddate = :server_dt, wageid = :wageid, relempstr = :relempstr WHERE billid = :billid And flag = 0 Using commit_transaction; IF commit_transaction.SQLCode <> 0 Or commit_transaction.SQLNRows <= 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致更新单据操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF // 删除原有明细 DELETE FROM u_scwg_taskwork_2_mx Where billid = :billid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除旧有明细操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF // FOR i = 1 TO it_mxbt // INSERT INTO u_scwg_taskwork_2_mx ( // billid, // procode, // proname, // qty, // price, // mxdscrp, // mtrlid, // printid, // status, // woodcode, // pcode, // ycreason, // orderid, // ordercode, // reason, // unit, // relscid, // relprintid) // VALUES ( // :billid, // :taskworkmx[i].procode, // :taskworkmx[i].proname, // :taskworkmx[i].qty, // :taskworkmx[i].price, // :taskworkmx[i].mxdscrp, // :taskworkmx[i].mtrlid, // :taskworkmx[i].printid, // :taskworkmx[i].status, // :taskworkmx[i].woodcode, // :taskworkmx[i].pcode, // :taskworkmx[i].ycreason, // :taskworkmx[i].orderid, // :taskworkmx[i].ordercode, // :taskworkmx[i].reason, // :taskworkmx[i].unit, // :taskworkmx[i].relscid, // :taskworkmx[i].relprintid) USING commit_transaction; // // IF commit_transaction.SQLCode <> 0 THEN // rslt = 0 // arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText // GOTO ext // END IF // NEXT // END IF FOR i = 1 To it_mxbt INSERT INTO u_scwg_taskwork_2_mx ( billid, procode, proname, qty, price, mxdscrp, mtrlid, printid, status, woodcode, pcode, ycreason, orderid, ordercode, reason, unit, relscid, relprintid, addqty, relid2, relprintid2) VALUES ( :billid, :taskworkmx[i].procode, :taskworkmx[i].proname, :taskworkmx[i].qty, :taskworkmx[i].price, :taskworkmx[i].mxdscrp, :taskworkmx[i].mtrlid, :taskworkmx[i].printid, :taskworkmx[i].status, :taskworkmx[i].woodcode, :taskworkmx[i].pcode, :taskworkmx[i].ycreason, :taskworkmx[i].orderid, :taskworkmx[i].ordercode, :taskworkmx[i].reason, :taskworkmx[i].unit, :taskworkmx[i].relscid, :taskworkmx[i].relprintid, :taskworkmx[i].addqty, :taskworkmx[i].relid2, :taskworkmx[i].relprintid2 ) Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN IF it_newbegin THEN billid = 0 //还原noticeid rslt = 0 arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText ROLLBACK ; GOTO ext END IF NEXT it_newbegin = False it_updatebegin = False ext: IF rslt = 0 THEN ROLLBACK; p_clearmx() ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT; END IF Return(rslt) end function public function integer del (long arg_billid, ref string arg_msg);Int rslt = 1 IF arg_billid <= 0 THEN rslt = 0 arg_msg = "没有删除对象,操作取消" GOTO ext END IF rslt = p_getinfo(arg_billid,arg_msg) IF rslt = 0 THEN GOTO ext IF affirmflag = 1 THEN rslt = 0 arg_msg = '单据已经确认,不可以修改' GOTO ext END IF IF flag = 1 THEN rslt = 0 arg_msg = "单据已经审核,不可以删除" GOTO ext END IF DELETE FROM u_scwg_taskwork_2 WHERE u_scwg_taskwork_2.billid = :arg_billid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除单据操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF DELETE FROM u_scwg_taskwork_2_mx WHERE u_scwg_taskwork_2_mx.billid = :arg_billid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除单据明细操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF it_newbegin = FALSE it_updatebegin = FALSE IF rslt = 0 THEN ROLLBACK; p_reset() ELSEIF rslt = 1 THEN COMMIT; END IF ext: Return (rslt) end function public function integer newbegin (long arg_scid, ref string arg_msg);long rslt = 1 if arg_scid < 0 then arg_msg = '请选择分部' rslt = 0 goto ext end if p_reset() scid=arg_scid it_newbegin=TRUE it_updatebegin=FALSE ext: if rslt = 0 then p_reset() return rslt end function public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit);//==================================================================== // Function: add_dscrp(arg_billid,arg_newdescppart,arg_msg) //-------------------------------------------------------------------- // Description: //-------------------------------------------------------------------- // Arguments: // value long arg_billid // value string arg_newdescppart // reference string arg_msg //-------------------------------------------------------------------- // Returns: integer //-------------------------------------------------------------------- // Author: yyx Date: 2003.11.21 //-------------------------------------------------------------------- // Modify History: // //==================================================================== int rslt = 1 arg_newdescppart = trim(arg_newdescppart) if arg_billid <= 0 then rslt = 0 arg_msg = "没有删除对象,操作取消" goto ext end if if it_newbegin or it_updatebegin then rslt=0 arg_msg="编辑状态下不可以执行,操作取消" goto ext end if if p_getinfo(arg_billid,arg_msg) = 0 then rslt = 0 goto ext end if if flag = 0 then rslt = 0 arg_msg = "非审核状态下不可用" goto ext end if update u_scwg_taskwork_2 set dscrp = dscrp+' '+:arg_newdescppart where u_scwg_taskwork_2.billid = :billid using commit_transaction; if commit_transaction.sqlcode <> 0 then rslt = 0 arg_msg = "因网络或其它原因导致添加单据备注操作失败"+"~n"+sqlca.sqlerrtext goto ext end if dscrp = dscrp+' '+arg_newdescppart ext: if rslt = 0 then rollback; elseif rslt = 1 and arg_ifcommit then commit; end if return rslt end function public function integer auditing_0 (long arg_wageid, long arg_wagemth, long arg_wrkgrpid, ref string arg_msg);////arg_wrkgrpid : -1 全部工作组 // Int rslt = 1 //Long ll_wgid,ll_wgid_arr[],count,ll_i //Long ll_workgroupid //Long ll_empid,ll_empid_arr[],ll_mxt,ll_j //String ls_empcode,ls_empcode_arr[] //Decimal ld_assignscore_arr[] //Decimal ld_assignday_arr[] //Long ll_assigntype,ll_assigntype_arr[] //Decimal ll_assignamt,ll_assignamt_arr[] //Int cnt_wg_emp = 0 //String ls_workgroupcode //Long ll_flagnum // //Long ll_0_price_cnt //String ls_0_price_billcode //String ls_0_price_msg // //IF sys_option_taskwork_not_affirm = 0 THEN // ll_flagnum = 0 // SELECT count(*) // INTO :ll_flagnum // FROM u_scwg_taskwork_2 // WHERE u_scwg_taskwork_2.wageid = :arg_wageid // AND u_scwg_taskwork_2.wagemth = :arg_wagemth // AND u_scwg_taskwork_2.affirmflag = 0 // AND u_scwg_taskwork_2.billtype = 0 // AND ( u_scwg_taskwork_2.wrkgrpid = :arg_wrkgrpid OR :arg_wrkgrpid = -1 ) // USING commit_transaction; // IF commit_transaction.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '查询是否有单未确认操作失败,'+commit_transaction.SQLErrText // GOTO ext // END IF // // IF ll_flagnum > 0 THEN // rslt = 0 // arg_msg = '该月份存在未确认的单据('+String(ll_flagnum)+'),请先全部确认' // GOTO ext // END IF //END IF // //ll_flagnum = 0 //SELECT count(*) // INTO :ll_flagnum // FROM u_scwg_taskwork_2 // WHERE u_scwg_taskwork_2.wageid = :arg_wageid // AND u_scwg_taskwork_2.wagemth = :arg_wagemth // AND u_scwg_taskwork_2.flag = 0 // AND u_scwg_taskwork_2.billtype = 0 // AND ( u_scwg_taskwork_2.wrkgrpid = :arg_wrkgrpid OR :arg_wrkgrpid = -1 ) // USING commit_transaction; //IF commit_transaction.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '查询是否有单要审核操作失败,'+commit_transaction.SQLErrText // GOTO ext //END IF // //IF ll_flagnum = 0 THEN // rslt = 0 // arg_msg = '该月份不存在要审核的单据,请检查' // GOTO ext //END IF // // //ll_flagnum = 0 //SELECT count(*) // INTO :ll_flagnum // FROM u_scwg_taskwork_2 // WHERE u_scwg_taskwork_2.wageid = :arg_wageid // AND u_scwg_taskwork_2.wagemth = :arg_wagemth // AND u_scwg_taskwork_2.flag = 1 // AND u_scwg_taskwork_2.billtype = 0 // AND ( u_scwg_taskwork_2.wrkgrpid = :arg_wrkgrpid OR :arg_wrkgrpid = -1 ) // USING commit_transaction; //IF commit_transaction.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '查询是否有单已经审核操作失败,'+commit_transaction.SQLErrText // GOTO ext //END IF // //IF ll_flagnum > 0 THEN // rslt = 0 // arg_msg = '该月份的工资项目存在部分已审核的记录('+String(ll_flagnum)+'),请先撤审' // GOTO ext //END IF // // ////检查0单价 //DECLARE cur_0_price_wkp CURSOR FOR // SELECT distinct u_scwg_taskwork_2.billcode // FROM u_scwg_taskwork_2,u_scwg_taskwork_2_mx // WHERE u_scwg_taskwork_2.wageid = :arg_wageid // AND u_scwg_taskwork_2.wagemth = :arg_wagemth // AND u_scwg_taskwork_2.flag = 0 // AND u_scwg_taskwork_2.billtype = 0 // AND ( u_scwg_taskwork_2.wrkgrpid = :arg_wrkgrpid OR :arg_wrkgrpid = -1 ) // AND ( u_scwg_taskwork_2.billid = u_scwg_taskwork_2_mx.billid ) // AND ( u_scwg_taskwork_2_mx.price = 0 ) // ORDER BY u_scwg_taskwork_2.billcode ASC // USING commit_transaction; //OPEN cur_0_price_wkp; //FETCH cur_0_price_wkp INTO :ls_0_price_billcode; //DO WHILE sqlca.SQLCode = 0 // ll_0_price_cnt++ // ls_0_price_msg = ls_0_price_msg + '单据:'+ls_0_price_billcode+',0单价 ~n' // FETCH cur_0_price_wkp INTO :ls_0_price_billcode; //LOOP //CLOSE cur_0_price_wkp; // //IF ll_0_price_cnt > 0 THEN // arg_msg = ls_0_price_msg // rslt = 0 // GOTO ext //END IF // // //DECLARE wgid CURSOR FOR // SELECT distinct wrkgrpid // FROM u_scwg_taskwork_2 // WHERE u_scwg_taskwork_2.wageid = :arg_wageid // AND u_scwg_taskwork_2.wagemth = :arg_wagemth // AND u_scwg_taskwork_2.flag = 0 // AND u_scwg_taskwork_2.billtype = 0 // AND ( u_scwg_taskwork_2.wrkgrpid = :arg_wrkgrpid OR :arg_wrkgrpid = -1 ) // ORDER BY u_scwg_taskwork_2.wrkgrpid ASC // USING commit_transaction; //OPEN wgid; //FETCH wgid INTO :ll_wgid; // //DO WHILE commit_transaction.SQLCode = 0 // count++ // ll_wgid_arr[count] = ll_wgid // FETCH wgid INTO :ll_wgid; //LOOP // //CLOSE wgid; // //FOR ll_i = 1 TO count // cnt_wg_emp = 0 // SELECT count(*), // u_workgroupmx.workgroupid, // u_workgroup.workgroupcode // INTO :cnt_wg_emp,:ll_workgroupid,:ls_workgroupcode // FROM u_workgroupmx INNER join // u_workgroup on u_workgroupmx.workgroupid = u_workgroup.workgroupid // WHERE (u_workgroupmx.workgroupid = :ll_wgid_arr[ll_i]) // Group By u_workgroup.workgroupcode, u_workgroupmx.workgroupid; // IF commit_transaction.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '查询操作失败,组成员!' // GOTO ext // END IF // // IF cnt_wg_emp <= 0 THEN // rslt = 0 // arg_msg = '编号为:'+ls_workgroupcode+'的工作组没有成员,请先建立工作组成员!' // GOTO ext // END IF // // ll_mxt = 0 // // DECLARE wg_emp CURSOR FOR // SELECT u_workgroupmx.empid, // u_workgroupmx.assigntype, // u_workgroupmx.assignamt, // u_rs_empinfo.empcode // FROM u_workgroupmx,u_rs_empinfo // WHERE u_workgroupmx.workgroupid = :ll_wgid_arr[ll_i] // AND u_workgroupmx.empid = u_rs_empinfo.empid // ORDER BY u_workgroupmx.empid ASC // USING commit_transaction; // OPEN wg_emp; // // FETCH wg_emp INTO :ll_empid,:ll_assigntype,:ll_assignamt,:ls_empcode; // // DO WHILE commit_transaction.SQLCode = 0 // ll_mxt++ // ll_empid_arr[ll_mxt] = ll_empid // ll_assigntype_arr[ll_mxt] = ll_assigntype // ll_assignamt_arr[ll_mxt] = ll_assignamt // ls_empcode_arr[ll_mxt] = ls_empcode // ld_assignday_arr[ll_mxt] = 0 // ld_assignscore_arr[ll_mxt] = 0 // FETCH wg_emp INTO :ll_empid,:ll_assigntype,:ll_assignamt,:ls_empcode; // LOOP // // CLOSE wg_emp; // // //计算各种分配模式的比例0:手动,1:固定比例,2:按天数,3:按天数+分数 // Long ll_k // Decimal temp_sumscore = 0,temp_empscore = 0 // Decimal temp_sumdays = 0,temp_empdays = 0 // // FOR ll_k = 1 TO ll_mxt // SELECT isnull(sum(U_TestMx_bd.bdday),0), // isnull(sum(U_TestMx_bd.bdday * U_TestMx_bd.Score),0) // INTO :temp_sumdays,:temp_sumscore // FROM u_test_bd INNER JOIN // U_TestMx_bd ON u_test_bd.TestID = U_TestMx_bd.TestID // WHERE u_test_bd.flag = 1 AND u_test_bd.wagemth = :arg_wagemth // AND U_TestMx_bd.empid IN ( // SELECT empid // FROM u_workgroupmx // Where u_workgroupmx.workgroupid = :ll_wgid_arr[ll_i] )USING commit_transaction; // IF commit_transaction.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '查询小组的考核总(天数),总(分数*天数)失败,原因:'+commit_transaction.SQLErrText // GOTO ext // END IF // // SELECT isnull(sum(U_TestMx_bd.bdday),0), // isnull(sum(U_TestMx_bd.bdday * U_TestMx_bd.Score),0) // INTO :temp_empdays,:temp_empscore // FROM u_test_bd INNER JOIN // U_TestMx_bd ON u_test_bd.TestID = U_TestMx_bd.TestID // WHERE u_test_bd.flag = 1 AND u_test_bd.wagemth = :arg_wagemth // AND U_TestMx_bd.empid = :ll_empid_arr[ll_k] USING commit_transaction; // IF commit_transaction.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '查询员工:'+ls_empcode_arr[ll_k]+',的考核总(天数),总(分数*天数)失败,原因:'+commit_transaction.SQLErrText // GOTO ext // END IF // // // IF ll_assigntype_arr[ll_k] = 2 THEN // IF temp_sumdays = 0 THEN // rslt = 0 // arg_msg = '工资月份['+String(arg_wagemth)+']有小组工资分配按天数计算比例进行分配,但没有对应该月份的绩效考核天数!请检查' // GOTO ext // ELSE // ll_assignamt_arr[ll_k] = Round(temp_empdays/temp_sumdays,5) // ld_assignday_arr[ll_k] = temp_empdays // ld_assignscore_arr[ll_k] = temp_empscore // END IF // ELSEIF ll_assigntype_arr[ll_k] = 3 THEN // IF temp_sumscore = 0 THEN // rslt = 0 // arg_msg = '工资月份['+String(arg_wagemth)+']有小组工资分配按天数+分数计算比例进行分配,但没有对应该月份的绩效考核天数!请检查' // GOTO ext // ELSE // ll_assignamt_arr[ll_k] = Round(temp_empscore/temp_sumscore,5) // ld_assignday_arr[ll_k] = temp_empdays // ld_assignscore_arr[ll_k] = temp_empscore // END IF // END IF // NEXT // // IF ll_mxt > 0 THEN // //该组金额转移到组中第一人 // INSERT INTO u_scwg_taskwork_money // (wageid, // workgroupid , // empid , // wagemth , // groupamt, // empamt, // auditingflag, // opdate, // opemp, // billtype, // assigntype, // assignamt, // assignscore, // assignday) // SELECT wageid, // wrkgrpid, // :ll_empid_arr[1], // wagemth, // sum(u_scwg_taskwork_2_mx.price * u_scwg_taskwork_2_mx.qty), // case :ll_assigntype_arr[1] when 0 then sum(u_scwg_taskwork_2_mx.price * u_scwg_taskwork_2_mx.qty) else (sum(u_scwg_taskwork_2_mx.price * u_scwg_taskwork_2_mx.qty))*(:ll_assignamt_arr[1]) END , // 0, // getdate(), // :publ_operator, // 0, // :ll_assigntype_arr[1] , // :ll_assignamt_arr[1], // :ld_assignscore_arr[1] , // :ld_assignday_arr[1] // FROM u_scwg_taskwork_2_mx,u_scwg_taskwork_2 // WHERE u_scwg_taskwork_2.wageid = :arg_wageid // AND u_scwg_taskwork_2.wagemth = :arg_wagemth // AND u_scwg_taskwork_2.wrkgrpid = :ll_wgid_arr[ll_i] // AND u_scwg_taskwork_2.flag = 0 // AND u_scwg_taskwork_2.billtype = 0 // AND u_scwg_taskwork_2.billid = u_scwg_taskwork_2_mx.billid // GROUP BY u_scwg_taskwork_2.wageid, // u_scwg_taskwork_2.wagemth, // u_scwg_taskwork_2.wrkgrpid // USING commit_transaction; // IF commit_transaction.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '建立小组首名员工工资操作失败,原因:'+commit_transaction.SQLErrText // GOTO ext // END IF // // // //其他组员的金额为0 // IF ll_mxt >= 2 THEN // FOR ll_j = 2 TO ll_mxt // INSERT INTO u_scwg_taskwork_money // (wageid, // workgroupid , // empid , // wagemth , // groupamt, // empamt, // auditingflag, // opdate, // opemp, // billtype, // assigntype, // assignamt, // assignscore, // assignday) // SELECT wageid, // wrkgrpid, // :ll_empid_arr[ll_j], // wagemth, // sum(u_scwg_taskwork_2_mx.price * u_scwg_taskwork_2_mx.qty), // case :ll_assigntype_arr[ll_j] when 0 then 0 else (sum(u_scwg_taskwork_2_mx.price * u_scwg_taskwork_2_mx.qty))*(:ll_assignamt_arr[ll_j]) END, // 0, // getdate(), // :publ_operator, // 0, // :ll_assigntype_arr[ll_j] , // :ll_assignamt_arr[ll_j], // :ld_assignscore_arr[ll_j] , // :ld_assignday_arr[ll_j] // FROM u_scwg_taskwork_2_mx,u_scwg_taskwork_2 // WHERE u_scwg_taskwork_2.wageid = :arg_wageid // AND u_scwg_taskwork_2.wagemth = :arg_wagemth // AND u_scwg_taskwork_2.wrkgrpid = :ll_wgid_arr[ll_i] // AND u_scwg_taskwork_2.flag = 0 // AND u_scwg_taskwork_2.billtype = 0 // AND u_scwg_taskwork_2.billid = u_scwg_taskwork_2_mx.billid // GROUP BY u_scwg_taskwork_2.wageid, // u_scwg_taskwork_2.wagemth, // u_scwg_taskwork_2.wrkgrpid // USING commit_transaction; // IF commit_transaction.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '建立小组其它员工工资操作失败,原因:'+commit_transaction.SQLErrText // GOTO ext // END IF // NEXT // END IF // END IF //NEXT // //IF sys_option_taskwork_not_affirm = 0 THEN // UPDATE u_scwg_taskwork_2 // SET u_scwg_taskwork_2.flag = 1, // u_scwg_taskwork_2.auditingrep = :publ_operator, // u_scwg_taskwork_2.auditingdate = getdate() // WHERE u_scwg_taskwork_2.wageid = :arg_wageid // AND u_scwg_taskwork_2.wagemth = :arg_wagemth // AND u_scwg_taskwork_2.flag = 0 // AND u_scwg_taskwork_2.billtype = 0 // AND ( u_scwg_taskwork_2.wrkgrpid = :arg_wrkgrpid OR :arg_wrkgrpid = -1 ) // USING commit_transaction; //ELSE // UPDATE u_scwg_taskwork_2 // SET u_scwg_taskwork_2.flag = 1, // u_scwg_taskwork_2.auditingrep = :publ_operator, // u_scwg_taskwork_2.auditingdate = getdate(), // u_scwg_taskwork_2.affirmdate = getdate(), // u_scwg_taskwork_2.affirmemp = :publ_operator // WHERE u_scwg_taskwork_2.wageid = :arg_wageid // AND u_scwg_taskwork_2.wagemth = :arg_wagemth // AND u_scwg_taskwork_2.flag = 0 // AND u_scwg_taskwork_2.billtype = 0 // AND ( u_scwg_taskwork_2.wrkgrpid = :arg_wrkgrpid OR :arg_wrkgrpid = -1 ) // USING commit_transaction; //END IF //IF commit_transaction.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '更新审核标志失败,原因:'+commit_transaction.SQLErrText // GOTO ext //ELSEIF commit_transaction.SQLNRows = 0 THEN // rslt = 0 // arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText // GOTO ext //END IF // // //ext: //IF rslt = 0 THEN // ROLLBACK USING commit_transaction; //ELSE // COMMIT USING commit_transaction; //END IF // RETURN rslt // // // // end function public function integer auditing_1 (long arg_wageid, long arg_wagemth, ref string arg_msg);//arg_wrkgrpid : -1 全部工作组 Long cnt,i Int rslt = 1 Decimal ls_emp_sumwage datastore ds_emp_sumwage uo_wage u_wage u_wage = CREATE uo_wage IF sys_option_taskwork_not_affirm = 0 THEN cnt = 0 SELECT count(*) INTO :cnt FROM u_scwg_taskwork_2 WHERE u_scwg_taskwork_2.wageid = :arg_wageid AND u_scwg_taskwork_2.wagemth = :arg_wagemth AND u_scwg_taskwork_2.affirmflag = 0 AND u_scwg_taskwork_2.billtype = 1 USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询是否有单未确认操作失败,'+commit_transaction.SQLErrText GOTO ext END IF IF cnt > 0 THEN rslt = 0 arg_msg = '该月份存在未确认的单据('+String(cnt)+'),请先全部确认' GOTO ext END IF END IF cnt = 0 SELECT count(*) INTO :cnt FROM u_scwg_taskwork_2 WHERE u_scwg_taskwork_2.wageid = :arg_wageid AND u_scwg_taskwork_2.wagemth = :arg_wagemth AND u_scwg_taskwork_2.flag = 0 AND u_scwg_taskwork_2.billtype = 1 USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询是否有单要审核操作失败,'+commit_transaction.SQLErrText GOTO ext END IF IF cnt = 0 THEN rslt = 0 arg_msg = '该月份不存在要审核的单据,请检查' GOTO ext END IF //SELECT count(*) // INTO :cnt // FROM u_scwg_taskwork_2 // WHERE u_scwg_taskwork_2.wageid = :arg_wageid // AND u_scwg_taskwork_2.wagemth = :arg_wagemth // AND u_scwg_taskwork_2.flag = 1 // AND u_scwg_taskwork_2.billtype = 1 // USING commit_transaction; //IF commit_transaction.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '查询是否有单已经审核操作失败,'+commit_transaction.SQLErrText // GOTO ext //END IF // //IF cnt > 0 THEN // rslt = 0 // arg_msg = '该月份的工资项目存在部分已审核的记录,请先撤审' // GOTO ext //END IF ds_emp_sumwage = CREATE datastore ds_emp_sumwage.DataObject = 'dw_emp_sumwage_12' ds_emp_sumwage.SetTransObject(sqlca) IF ds_emp_sumwage.Retrieve(arg_wagemth,arg_wageid) <= 0 THEN rslt = 0 arg_msg = '本月没有个人产品工序计件单可审核或查询个人产品工序计件单失败' GOTO ext END IF FOR i = 1 TO ds_emp_sumwage.RowCount() ls_emp_sumwage = 0.00 ls_emp_sumwage = ds_emp_sumwage.Object.sumwage[i] IF u_wage.f_setwagemxdata(arg_wagemth,ds_emp_sumwage.Object.u_scwg_taskwork_2_empid[i],arg_wageid,ls_emp_sumwage,arg_msg,FALSE) = 0 THEN rslt = 0 GOTO ext END IF NEXT IF sys_option_taskwork_not_affirm = 0 THEN UPDATE u_scwg_taskwork_2 SET u_scwg_taskwork_2.flag = 1, u_scwg_taskwork_2.auditingrep = :publ_operator, u_scwg_taskwork_2.auditingdate = getdate() WHERE u_scwg_taskwork_2.wageid = :arg_wageid AND u_scwg_taskwork_2.wagemth = :arg_wagemth AND u_scwg_taskwork_2.flag = 0 AND u_scwg_taskwork_2.billtype = 1 USING commit_transaction; ELSE UPDATE u_scwg_taskwork_2 SET u_scwg_taskwork_2.flag = 1, u_scwg_taskwork_2.auditingrep = :publ_operator, u_scwg_taskwork_2.auditingdate = getdate(), u_scwg_taskwork_2.affirmdate = getdate(), u_scwg_taskwork_2.affirmemp = :publ_operator, u_scwg_taskwork_2.affirmflag = 1 WHERE u_scwg_taskwork_2.wageid = :arg_wageid AND u_scwg_taskwork_2.wagemth = :arg_wagemth AND u_scwg_taskwork_2.flag = 0 AND u_scwg_taskwork_2.billtype = 1 USING commit_transaction; END IF IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = '更新审核标志失败,原因:'+commit_transaction.SQLErrText GOTO ext ELSEIF commit_transaction.SQLNRows = 0 THEN rslt = 0 arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK USING commit_transaction; ELSE COMMIT USING commit_transaction; END IF DESTROY u_wage RETURN rslt end function public function integer c_auditing_1 (long arg_wageid, long arg_wagemth, ref string arg_msg);Int rslt = 1 Long ll_flagnum DateTime ls_null SetNull(ls_null) long cnt //cnt = 0 //SELECT count(*) // INTO :cnt // FROM u_wage_change // WHERE wagemth = :arg_wagemth // AND wageid = :arg_wageid; //IF sqlca.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '查询该月份该工资项目是否已开工资变更单失败'+"~n"+sqlca.SQLErrText // GOTO ext //END IF // //IF cnt > 0 THEN // rslt = 0 // arg_msg = '该月份该工资项目已开工资变更单,不能重复开单' // GOTO ext //END IF // uo_wage u_wage u_wage = CREATE uo_wage SELECT count(*) INTO :ll_flagnum FROM u_scwg_taskwork_2 WHERE u_scwg_taskwork_2.wageid = :arg_wageid AND u_scwg_taskwork_2.wagemth = :arg_wagemth AND u_scwg_taskwork_2.flag = 1 AND u_scwg_taskwork_2.billtype = 1 USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询是否已有单据已审核操作失败,'+commit_transaction.SQLErrText GOTO ext END IF IF ll_flagnum <= 0 THEN rslt = 0 arg_msg = '该月份的工资项目不存在审核的记录' GOTO ext END IF IF u_wage.f_wage_clear(arg_wageid,arg_wagemth,arg_msg,FALSE) = 0 THEN rslt = 0 GOTO ext END IF //更新审核标志 IF sys_option_taskwork_not_affirm = 0 THEN UPDATE u_scwg_taskwork_2 SET u_scwg_taskwork_2.flag = 0, u_scwg_taskwork_2.Auditingrep = '', u_scwg_taskwork_2.Auditingdate = :ls_null WHERE u_scwg_taskwork_2.wageid = :arg_wageid AND u_scwg_taskwork_2.wagemth = :arg_wagemth AND u_scwg_taskwork_2.billtype = 1 AND u_scwg_taskwork_2.flag = 1 USING commit_transaction; ELSE UPDATE u_scwg_taskwork_2 SET u_scwg_taskwork_2.flag = 0, u_scwg_taskwork_2.Auditingrep = '', u_scwg_taskwork_2.Auditingdate = :ls_null, u_scwg_taskwork_2.affirmemp = '', u_scwg_taskwork_2.affirmdate = :ls_null, u_scwg_taskwork_2.affirmflag = 0 WHERE u_scwg_taskwork_2.wageid = :arg_wageid AND u_scwg_taskwork_2.wagemth = :arg_wagemth AND u_scwg_taskwork_2.billtype = 1 AND u_scwg_taskwork_2.flag = 1 USING commit_transaction; END IF IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = '更新审核标志失败,原因:'+commit_transaction.SQLErrText GOTO ext ELSEIF commit_transaction.SQLNRows = 0 THEN rslt = 0 arg_msg = "单据正在撤审,请稍后查询。"+"~n"+commit_transaction.SQLErrText GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK USING commit_transaction; ELSE COMMIT USING commit_transaction; END IF DESTROY u_wage RETURN rslt end function public function integer c_auditing_0 (long arg_wageid, long arg_wagemth, long arg_wrkgrpid, ref string arg_msg);Int rslt = 1 //Long ll_flagnum // //DateTime ls_null //SetNull(ls_null) // //SELECT count(*) // INTO :ll_flagnum // FROM u_scwg_taskwork_2 // WHERE u_scwg_taskwork_2.wageid = :arg_wageid // AND u_scwg_taskwork_2.wagemth = :arg_wagemth // AND u_scwg_taskwork_2.flag = 1 // AND u_scwg_taskwork_2.billtype = 0 // AND ( u_scwg_taskwork_2.wrkgrpid = :arg_wrkgrpid OR :arg_wrkgrpid = -1 ) // USING commit_transaction; //IF commit_transaction.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '查询是否已有单据已审核操作失败,'+commit_transaction.SQLErrText // GOTO ext //END IF // //IF ll_flagnum <= 0 THEN // rslt = 0 // arg_msg = '该月份的工资项目不存在审核的记录' // GOTO ext //END IF // //////查询相关工资表是否已经通过审核 ////ll_flagnum = 0 ////SELECT count(*) //// INTO :ll_flagnum //// FROM u_scwg_taskwork_money //// WHERE u_scwg_taskwork_money.wageid = :arg_wageid //// AND u_scwg_taskwork_money.wagemth = :arg_wagemth //// AND u_scwg_taskwork_money.Auditingflag = 1 //// AND u_scwg_taskwork_money.billtype = 0 //// AND ( u_scwg_taskwork_money.workgroupid = :arg_wrkgrpid OR :arg_wrkgrpid = -1 ) //// USING commit_transaction; ////IF commit_transaction.SQLCode <> 0 THEN //// rslt = 0 //// arg_msg = '查询操作失败,已经审核数量,工资表' //// GOTO ext ////END IF //// ////IF ll_flagnum > 0 THEN //// rslt = 0 //// arg_msg = '该月份的工资项目部分已通过分配审核' //// GOTO ext ////END IF // //////先删除工资表记录 ////DELETE FROM u_scwg_taskwork_money //// WHERE u_scwg_taskwork_money.wageid = :arg_wageid //// AND u_scwg_taskwork_money.wagemth = :arg_wagemth //// AND u_scwg_taskwork_money.billtype = 0 //// AND ( u_scwg_taskwork_money.workgroupid = :arg_wrkgrpid OR :arg_wrkgrpid = -1 ) //// USING commit_transaction; ////IF commit_transaction.SQLCode <> 0 THEN //// rslt = 0 //// arg_msg = '删除工资表操作失败,原因:'+commit_transaction.SQLErrText //// GOTO ext ////END IF //// ////更新审核标志 //IF sys_option_taskwork_not_affirm = 0 THEN // UPDATE u_scwg_taskwork_2 // SET u_scwg_taskwork_2.flag = 0, // u_scwg_taskwork_2.Auditingrep = '', // u_scwg_taskwork_2.Auditingdate = :ls_null // WHERE u_scwg_taskwork_2.wageid = :arg_wageid // AND u_scwg_taskwork_2.wagemth = :arg_wagemth // AND u_scwg_taskwork_2.billtype = 0 // AND ( u_scwg_taskwork_2.wrkgrpid = :arg_wrkgrpid OR :arg_wrkgrpid = -1 ) // AND u_scwg_taskwork_2.flag = 1 USING commit_transaction; //ELSE // UPDATE u_scwg_taskwork_2 // SET u_scwg_taskwork_2.flag = 0, // u_scwg_taskwork_2.Auditingrep = '', // u_scwg_taskwork_2.Auditingdate = :ls_null, // u_scwg_taskwork_2.affirmemp = '', // u_scwg_taskwork_2.affirmdate = :ls_null, // u_scwg_taskwork_2.affirmflag = 0 // WHERE u_scwg_taskwork_2.wageid = :arg_wageid // AND u_scwg_taskwork_2.wagemth = :arg_wagemth // AND u_scwg_taskwork_2.billtype = 0 // AND ( u_scwg_taskwork_2.wrkgrpid = :arg_wrkgrpid OR :arg_wrkgrpid = -1 ) // AND u_scwg_taskwork_2.flag = 1 USING commit_transaction; //END IF //IF commit_transaction.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '更新审核标志失败,原因:'+commit_transaction.SQLErrText // GOTO ext //ELSEIF commit_transaction.SQLNRows = 0 THEN // rslt = 0 // arg_msg = "单据正在撤审,请稍后查询。"+"~n"+commit_transaction.SQLErrText // GOTO ext //END IF // //ext: //IF rslt = 0 THEN // ROLLBACK USING commit_transaction; //ELSE // COMMIT USING commit_transaction; //END IF // RETURN rslt // // // // end function public function integer affirm (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long i uo_order_ml uo_ml uo_ml = Create uo_order_ml IF arg_billid = 0 THEN rslt = 0 arg_msg = "没有审核对象" GOTO ext END IF IF getinfo(arg_billid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF affirmflag = 1 THEN rslt = 0 arg_msg = '该单据已确认' GOTO ext END IF UPDATE u_scwg_taskwork_2 SET affirmemp = :publ_operator, affirmdate = getdate(), affirmflag = 1 WHERE u_scwg_taskwork_2.billid = :arg_billid AND affirmflag = 0 Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致确认单据操作失败"+"~n"+commit_transaction.SQLErrText GOTO ext ELSEIF commit_transaction.SQLNRows = 0 THEN rslt = 0 arg_msg = "单据正在确认,请稍后查询。"+"~n"+commit_transaction.SQLErrText GOTO ext END IF IF sys_option_add_orderrqwp_fqty = 1 THEN FOR i = 1 To it_mxbt IF taskworkmx[i].orderid > 0 And taskworkmx[i].relprintid > 0 THEN IF uo_ml.uof_add_procode_qty(taskworkmx[i].relscid,taskworkmx[i].orderid,taskworkmx[i].relprintid,& taskworkmx[i].procode,taskworkmx[i].qty,arg_msg,False) = 0 THEN rslt = 0 GOTO ext END IF END IF NEXT END IF ext: IF rslt = 0 THEN ROLLBACK Using commit_transaction; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT Using commit_transaction; END IF Destroy uo_ml RETURN rslt end function public function integer c_affirm (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 DateTime null_dt SetNull(null_dt) Long i uo_order_ml uo_ml uo_ml = Create uo_order_ml IF arg_billid = 0 THEN rslt = 0 arg_msg = "没有审核对象" GOTO ext END IF IF getinfo(arg_billid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF affirmflag = 0 THEN rslt = 0 arg_msg = '该单据未确认,不能反确认' GOTO ext END IF UPDATE u_scwg_taskwork_2 SET affirmemp = '', affirmdate = :null_dt, affirmflag = 0 WHERE u_scwg_taskwork_2.billid = :arg_billid AND affirmflag = 1 AND flag = 0 Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致反确认单据操作失败"+"~n"+commit_transaction.SQLErrText GOTO ext ELSEIF commit_transaction.SQLNRows = 0 THEN rslt = 0 arg_msg = "单据正在反确认,请稍后查询。"+"~n"+commit_transaction.SQLErrText GOTO ext END IF IF sys_option_add_orderrqwp_fqty = 1 THEN FOR i = 1 To it_mxbt IF taskworkmx[i].orderid > 0 And taskworkmx[i].relprintid > 0 THEN IF uo_ml.uof_add_procode_qty(taskworkmx[i].relscid,taskworkmx[i].orderid,taskworkmx[i].relprintid,& taskworkmx[i].procode,0 - taskworkmx[i].qty,arg_msg,False) = 0 THEN rslt = 0 GOTO ext END IF END IF NEXT END IF ext: IF rslt = 0 THEN ROLLBACK Using commit_transaction; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT Using commit_transaction; END IF Destroy uo_ml RETURN rslt end function public function integer p_getinfo (long arg_billid, ref string arg_msg);Int rslt = 1 IF arg_billid <= 0 THEN rslt = 0 arG_MSG = "非法的单据唯一码" GOTO ext END IF SELECT billid, billdate, wagemth, rep, relcode, dscrp, scid, billcode, wrkgrpid, flag, affirmflag, scid, wageid INTO :billid, :billdate, :wagemth, :rep, :relcode, :dscrp, :scid, :billcode, :wrkgrpid, :flag, :affirmflag, :scid, :wageid FROM u_scwg_taskwork_2 WHERE u_scwg_taskwork_2.billid = :arg_billid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arG_MSG = "查询操作失败(错误单据唯一码),单据"+commit_transaction.SQLErrText GOTO ext END IF billid = arg_billid ext: IF rslt = 0 THEN p_reset() RETURN rslt end function public function integer getinfo (long arg_billid, string arg_msg); Int rslt = 1 Long i = 1,no_mxcheck = 0 IF arg_billid <= 0 THEN rslt = 0 arg_msg = "非法出仓单唯一码" GOTO ext END IF rslt = p_getinfo(arg_billid,arg_msg) IF rslt = 0 THEN GOTO ext //用游标读取明细 DECLARE cur_mx CURSOR FOR SELECT u_scwg_taskwork_2_mx.mtrlid, u_scwg_taskwork_2_mx.qty, u_scwg_taskwork_2_mx.orderid, u_scwg_taskwork_2_mx.ordercode, u_scwg_taskwork_2_mx.procode, u_scwg_taskwork_2_mx.price, u_scwg_taskwork_2_mx.relprintid, u_scwg_taskwork_2_mx.relscid FROM u_scwg_taskwork_2_mx WHERE u_scwg_taskwork_2_mx.billid = :arg_billid USING commit_transaction; OPEN cur_mx; FETCH cur_mx INTO :taskworkmx[i].mtrlid,:taskworkmx[i].qty, :taskworkmx[i].orderid,:taskworkmx[i].ordercode, :taskworkmx[i].procode,:taskworkmx[i].price, :taskworkmx[i].relprintid, :taskworkmx[i].relscid; DO WHILE commit_transaction.SQLCode = 0 i++ FETCH cur_mx INTO :taskworkmx[i].mtrlid,:taskworkmx[i].qty, :taskworkmx[i].orderid,:taskworkmx[i].ordercode, :taskworkmx[i].procode,:taskworkmx[i].price, :taskworkmx[i].relprintid, :taskworkmx[i].relscid; LOOP CLOSE cur_mx; //检验明细是否读入完整 SELECT count(*) INTO :no_mxcheck FROM u_scwg_taskwork_2_mx WHERE u_scwg_taskwork_2_mx.billid = :arg_billid 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 billid = arg_billid it_mxbt = i - 1 ext: IF rslt = 0 THEN p_reset() RETURN rslt end function public function integer auditing_2 (long arg_wageid, long arg_wagemth, long arg_wrkgrpid, ref string arg_msg);////arg_wrkgrpid : -1 全部工作组 // Int rslt = 1 //Long ll_wgid,ll_wgid_arr[],count,ll_i //Long ll_workgroupid //Long ll_empid,ll_empid_arr[],ll_mxt,ll_j //String ls_empcode,ls_empcode_arr[] //Decimal ld_assignscore_arr[] //Decimal ld_assignday_arr[] //Long ll_assigntype,ll_assigntype_arr[] //Decimal ll_assignamt,ll_assignamt_arr[] //Int cnt_wg_emp = 0 //String ls_workgroupcode //Long ll_flagnum // //Long ll_0_price_cnt //String ls_0_price_billcode //String ls_0_price_msg // //IF sys_option_taskwork_not_affirm = 0 THEN // ll_flagnum = 0 // SELECT count(*) // INTO :ll_flagnum // FROM u_scwg_taskwork_2 // WHERE u_scwg_taskwork_2.wageid = :arg_wageid // AND u_scwg_taskwork_2.wagemth = :arg_wagemth // AND u_scwg_taskwork_2.affirmflag = 0 // AND u_scwg_taskwork_2.billtype = 2 // AND ( u_scwg_taskwork_2.wrkgrpid = :arg_wrkgrpid OR :arg_wrkgrpid = -1 ) // USING commit_transaction; // IF commit_transaction.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '查询是否有单未确认操作失败,'+commit_transaction.SQLErrText // GOTO ext // END IF // // IF ll_flagnum > 0 THEN // rslt = 0 // arg_msg = '该月份存在未确认的单据('+String(ll_flagnum)+'),请先全部确认' // GOTO ext // END IF //END IF // //ll_flagnum = 0 //SELECT count(*) // INTO :ll_flagnum // FROM u_scwg_taskwork_2 // WHERE u_scwg_taskwork_2.wageid = :arg_wageid // AND u_scwg_taskwork_2.wagemth = :arg_wagemth // AND u_scwg_taskwork_2.flag = 0 // AND u_scwg_taskwork_2.billtype = 2 // AND ( u_scwg_taskwork_2.wrkgrpid = :arg_wrkgrpid OR :arg_wrkgrpid = -1 ) // USING commit_transaction; //IF commit_transaction.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '查询是否有单要审核操作失败,'+commit_transaction.SQLErrText // GOTO ext //END IF // //IF ll_flagnum = 0 THEN // rslt = 0 // arg_msg = '该月份不存在要审核的单据,请检查' // GOTO ext //END IF // // //ll_flagnum = 0 //SELECT count(*) // INTO :ll_flagnum // FROM u_scwg_taskwork_2 // WHERE u_scwg_taskwork_2.wageid = :arg_wageid // AND u_scwg_taskwork_2.wagemth = :arg_wagemth // AND u_scwg_taskwork_2.flag = 1 // AND u_scwg_taskwork_2.billtype = 2 // AND ( u_scwg_taskwork_2.wrkgrpid = :arg_wrkgrpid OR :arg_wrkgrpid = -1 ) // USING commit_transaction; //IF commit_transaction.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '查询是否有单已经审核操作失败,'+commit_transaction.SQLErrText // GOTO ext //END IF // //IF ll_flagnum > 0 THEN // rslt = 0 // arg_msg = '该月份的工资项目存在部分已审核的记录('+String(ll_flagnum)+'),请先撤审' // GOTO ext //END IF // // ////检查0单价 //DECLARE cur_0_price_wkp CURSOR FOR // SELECT distinct u_scwg_taskwork_2.billcode // FROM u_scwg_taskwork_2,u_scwg_taskwork_2_mx // WHERE u_scwg_taskwork_2.wageid = :arg_wageid // AND u_scwg_taskwork_2.wagemth = :arg_wagemth // AND u_scwg_taskwork_2.flag = 0 // AND u_scwg_taskwork_2.billtype = 2 // AND ( u_scwg_taskwork_2.wrkgrpid = :arg_wrkgrpid OR :arg_wrkgrpid = -1 ) // AND ( u_scwg_taskwork_2.billid = u_scwg_taskwork_2_mx.billid ) // AND ( u_scwg_taskwork_2_mx.price = 0 ) // ORDER BY u_scwg_taskwork_2.billcode ASC // USING commit_transaction; //OPEN cur_0_price_wkp; //FETCH cur_0_price_wkp INTO :ls_0_price_billcode; //DO WHILE sqlca.SQLCode = 0 // ll_0_price_cnt++ // ls_0_price_msg = ls_0_price_msg + '单据:'+ls_0_price_billcode+',0单价 ~n' // FETCH cur_0_price_wkp INTO :ls_0_price_billcode; //LOOP //CLOSE cur_0_price_wkp; // //IF ll_0_price_cnt > 0 THEN // arg_msg = ls_0_price_msg // rslt = 0 // GOTO ext //END IF // // //DECLARE wgid CURSOR FOR // SELECT distinct wrkgrpid // FROM u_scwg_taskwork_2 // WHERE u_scwg_taskwork_2.wageid = :arg_wageid // AND u_scwg_taskwork_2.wagemth = :arg_wagemth // AND u_scwg_taskwork_2.flag = 0 // AND u_scwg_taskwork_2.billtype = 2 // AND ( u_scwg_taskwork_2.wrkgrpid = :arg_wrkgrpid OR :arg_wrkgrpid = -1 ) // ORDER BY u_scwg_taskwork_2.wrkgrpid ASC // USING commit_transaction; //OPEN wgid; //FETCH wgid INTO :ll_wgid; // //DO WHILE commit_transaction.SQLCode = 0 // count++ // ll_wgid_arr[count] = ll_wgid // FETCH wgid INTO :ll_wgid; //LOOP // //CLOSE wgid; // //FOR ll_i = 1 TO count // cnt_wg_emp = 0 // SELECT count(*), // u_workgroupmx.workgroupid, // u_workgroup.workgroupcode // INTO :cnt_wg_emp,:ll_workgroupid,:ls_workgroupcode // FROM u_workgroupmx INNER join // u_workgroup on u_workgroupmx.workgroupid = u_workgroup.workgroupid // WHERE (u_workgroupmx.workgroupid = :ll_wgid_arr[ll_i]) // Group By u_workgroup.workgroupcode, u_workgroupmx.workgroupid; // IF commit_transaction.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '查询操作失败,组成员!' // GOTO ext // END IF // // IF cnt_wg_emp <= 0 THEN // rslt = 0 // arg_msg = '编号为:'+ls_workgroupcode+'的工作组没有成员,请先建立工作组成员!' // GOTO ext // END IF // // ll_mxt = 0 // // DECLARE wg_emp CURSOR FOR // SELECT u_workgroupmx.empid, // u_workgroupmx.assigntype, // u_workgroupmx.assignamt, // u_rs_empinfo.empcode // FROM u_workgroupmx,u_rs_empinfo // WHERE u_workgroupmx.workgroupid = :ll_wgid_arr[ll_i] // AND u_workgroupmx.empid = u_rs_empinfo.empid // ORDER BY u_workgroupmx.empid ASC // USING commit_transaction; // OPEN wg_emp; // // FETCH wg_emp INTO :ll_empid,:ll_assigntype,:ll_assignamt,:ls_empcode; // // DO WHILE commit_transaction.SQLCode = 0 // ll_mxt++ // ll_empid_arr[ll_mxt] = ll_empid // ll_assigntype_arr[ll_mxt] = ll_assigntype // ll_assignamt_arr[ll_mxt] = ll_assignamt // ls_empcode_arr[ll_mxt] = ls_empcode // ld_assignday_arr[ll_mxt] = 0 // ld_assignscore_arr[ll_mxt] = 0 // FETCH wg_emp INTO :ll_empid,:ll_assigntype,:ll_assignamt,:ls_empcode; // LOOP // // CLOSE wg_emp; // // //计算各种分配模式的比例0:手动,1:固定比例,2:按天数,3:按天数+分数 // Long ll_k // Decimal temp_sumscore = 0,temp_empscore = 0 // Decimal temp_sumdays = 0,temp_empdays = 0 // // FOR ll_k = 1 TO ll_mxt // SELECT isnull(sum(U_TestMx_bd.bdday),0), // isnull(sum(U_TestMx_bd.bdday * U_TestMx_bd.Score),0) // INTO :temp_sumdays,:temp_sumscore // FROM u_test_bd INNER JOIN // U_TestMx_bd ON u_test_bd.TestID = U_TestMx_bd.TestID // WHERE u_test_bd.flag = 1 AND u_test_bd.wagemth = :arg_wagemth // AND U_TestMx_bd.empid IN ( // SELECT empid // FROM u_workgroupmx // Where u_workgroupmx.workgroupid = :ll_wgid_arr[ll_i] )USING commit_transaction; // IF commit_transaction.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '查询小组的考核总(天数),总(分数*天数)失败,原因:'+commit_transaction.SQLErrText // GOTO ext // END IF // // SELECT isnull(sum(U_TestMx_bd.bdday),0), // isnull(sum(U_TestMx_bd.bdday * U_TestMx_bd.Score),0) // INTO :temp_empdays,:temp_empscore // FROM u_test_bd INNER JOIN // U_TestMx_bd ON u_test_bd.TestID = U_TestMx_bd.TestID // WHERE u_test_bd.flag = 1 AND u_test_bd.wagemth = :arg_wagemth // AND U_TestMx_bd.empid = :ll_empid_arr[ll_k] USING commit_transaction; // IF commit_transaction.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '查询员工:'+ls_empcode_arr[ll_k]+',的考核总(天数),总(分数*天数)失败,原因:'+commit_transaction.SQLErrText // GOTO ext // END IF // // // IF ll_assigntype_arr[ll_k] = 2 THEN // IF temp_sumdays = 0 THEN // rslt = 0 // arg_msg = '工资月份['+String(arg_wagemth)+']有小组工资分配按天数计算比例进行分配,但没有对应该月份的绩效考核天数!请检查' // GOTO ext // ELSE // ll_assignamt_arr[ll_k] = Round(temp_empdays/temp_sumdays,5) // ld_assignday_arr[ll_k] = temp_empdays // ld_assignscore_arr[ll_k] = temp_empscore // END IF // ELSEIF ll_assigntype_arr[ll_k] = 3 THEN // IF temp_sumscore = 0 THEN // rslt = 0 // arg_msg = '工资月份['+String(arg_wagemth)+']有小组工资分配按天数+分数计算比例进行分配,但没有对应该月份的绩效考核天数!请检查' // GOTO ext // ELSE // ll_assignamt_arr[ll_k] = Round(temp_empscore/temp_sumscore,5) // ld_assignday_arr[ll_k] = temp_empdays // ld_assignscore_arr[ll_k] = temp_empscore // END IF // END IF // NEXT // // IF ll_mxt > 0 THEN // //该组金额转移到组中第一人 // INSERT INTO u_scwg_taskwork_money // (wageid, // workgroupid , // empid , // wagemth , // groupamt, // empamt, // auditingflag, // opdate, // opemp, // billtype, // assigntype, // assignamt, // assignscore, // assignday) // SELECT wageid, // wrkgrpid, // :ll_empid_arr[1], // wagemth, // sum(u_scwg_taskwork_2_mx.price * u_scwg_taskwork_2_mx.qty), // case :ll_assigntype_arr[1] when 0 then sum(u_scwg_taskwork_2_mx.price * u_scwg_taskwork_2_mx.qty) else (sum(u_scwg_taskwork_2_mx.price * u_scwg_taskwork_2_mx.qty))*(:ll_assignamt_arr[1]) END , // 0, // getdate(), // :publ_operator, // 2, // :ll_assigntype_arr[1] , // :ll_assignamt_arr[1], // :ld_assignscore_arr[1] , // :ld_assignday_arr[1] // FROM u_scwg_taskwork_2_mx,u_scwg_taskwork_2 // WHERE u_scwg_taskwork_2.wageid = :arg_wageid // AND u_scwg_taskwork_2.wagemth = :arg_wagemth // AND u_scwg_taskwork_2.wrkgrpid = :ll_wgid_arr[ll_i] // AND u_scwg_taskwork_2.flag = 0 // AND u_scwg_taskwork_2.billtype = 2 // AND u_scwg_taskwork_2.billid = u_scwg_taskwork_2_mx.billid // GROUP BY u_scwg_taskwork_2.wageid, // u_scwg_taskwork_2.wagemth, // u_scwg_taskwork_2.wrkgrpid // USING commit_transaction; // IF commit_transaction.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '建立小组首名员工工资操作失败,原因:'+commit_transaction.SQLErrText // GOTO ext // END IF // // // //其他组员的金额为0 // IF ll_mxt >= 2 THEN // FOR ll_j = 2 TO ll_mxt // INSERT INTO u_scwg_taskwork_money // (wageid, // workgroupid , // empid , // wagemth , // groupamt, // empamt, // auditingflag, // opdate, // opemp, // billtype, // assigntype, // assignamt, // assignscore, // assignday) // SELECT wageid, // wrkgrpid, // :ll_empid_arr[ll_j], // wagemth, // sum(u_scwg_taskwork_2_mx.price * u_scwg_taskwork_2_mx.qty), // case :ll_assigntype_arr[ll_j] when 0 then 0 else (sum(u_scwg_taskwork_2_mx.price * u_scwg_taskwork_2_mx.qty))*(:ll_assignamt_arr[ll_j]) END, // 0, // getdate(), // :publ_operator, // 2, // :ll_assigntype_arr[ll_j] , // :ll_assignamt_arr[ll_j], // :ld_assignscore_arr[ll_j] , // :ld_assignday_arr[ll_j] // FROM u_scwg_taskwork_2_mx,u_scwg_taskwork_2 // WHERE u_scwg_taskwork_2.wageid = :arg_wageid // AND u_scwg_taskwork_2.wagemth = :arg_wagemth // AND u_scwg_taskwork_2.wrkgrpid = :ll_wgid_arr[ll_i] // AND u_scwg_taskwork_2.flag = 0 // AND u_scwg_taskwork_2.billtype = 2 // AND u_scwg_taskwork_2.billid = u_scwg_taskwork_2_mx.billid // GROUP BY u_scwg_taskwork_2.wageid, // u_scwg_taskwork_2.wagemth, // u_scwg_taskwork_2.wrkgrpid // USING commit_transaction; // IF commit_transaction.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '建立小组其它员工工资操作失败,原因:'+commit_transaction.SQLErrText // GOTO ext // END IF // NEXT // END IF // END IF //NEXT // //IF sys_option_taskwork_not_affirm = 0 THEN // UPDATE u_scwg_taskwork_2 // SET u_scwg_taskwork_2.flag = 1, // u_scwg_taskwork_2.auditingrep = :publ_operator, // u_scwg_taskwork_2.auditingdate = getdate() // WHERE u_scwg_taskwork_2.wageid = :arg_wageid // AND u_scwg_taskwork_2.wagemth = :arg_wagemth // AND u_scwg_taskwork_2.flag = 0 // AND u_scwg_taskwork_2.billtype = 2 // AND ( u_scwg_taskwork_2.wrkgrpid = :arg_wrkgrpid OR :arg_wrkgrpid = -1 ) // USING commit_transaction; //ELSE // UPDATE u_scwg_taskwork_2 // SET u_scwg_taskwork_2.flag = 1, // u_scwg_taskwork_2.auditingrep = :publ_operator, // u_scwg_taskwork_2.auditingdate = getdate(), // u_scwg_taskwork_2.affirmemp = :publ_operator, // u_scwg_taskwork_2.affirmdate = getdate() // WHERE u_scwg_taskwork_2.wageid = :arg_wageid // AND u_scwg_taskwork_2.wagemth = :arg_wagemth // AND u_scwg_taskwork_2.flag = 0 // AND u_scwg_taskwork_2.billtype = 2 // AND ( u_scwg_taskwork_2.wrkgrpid = :arg_wrkgrpid OR :arg_wrkgrpid = -1 ) // USING commit_transaction; //END IF //IF commit_transaction.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '更新审核标志失败,原因:'+commit_transaction.SQLErrText // GOTO ext //ELSEIF commit_transaction.SQLNRows = 0 THEN // rslt = 0 // arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText // GOTO ext //END IF // //ext: //IF rslt = 0 THEN // ROLLBACK USING commit_transaction; //ELSE // COMMIT USING commit_transaction; //END IF // RETURN rslt // // // end function public function integer c_auditing_2 (long arg_wageid, long arg_wagemth, long arg_wrkgrpid, ref string arg_msg);Int rslt = 1 //Long ll_flagnum // //DateTime ls_null //SetNull(ls_null) // //SELECT count(*) // INTO :ll_flagnum // FROM u_scwg_taskwork_2 // WHERE u_scwg_taskwork_2.wageid = :arg_wageid // AND u_scwg_taskwork_2.wagemth = :arg_wagemth // AND u_scwg_taskwork_2.flag = 1 // AND u_scwg_taskwork_2.billtype = 2 // AND ( u_scwg_taskwork_2.wrkgrpid = :arg_wrkgrpid OR :arg_wrkgrpid = -1 ) // USING commit_transaction; //IF commit_transaction.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '查询是否已有单据已审核操作失败,'+commit_transaction.SQLErrText // GOTO ext //END IF // //IF ll_flagnum <= 0 THEN // rslt = 0 // arg_msg = '该月份的工资项目不存在审核的记录' // GOTO ext //END IF // ////查询相关工资表是否已经通过审核 //ll_flagnum = 0 //SELECT count(*) // INTO :ll_flagnum // FROM u_scwg_taskwork_money // WHERE u_scwg_taskwork_money.wageid = :arg_wageid // AND u_scwg_taskwork_money.wagemth = :arg_wagemth // AND u_scwg_taskwork_money.Auditingflag = 1 // AND u_scwg_taskwork_money.billtype = 2 // AND ( u_scwg_taskwork_money.workgroupid = :arg_wrkgrpid OR :arg_wrkgrpid = -1 ) // USING commit_transaction; //IF commit_transaction.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '查询操作失败,已经审核数量,工资表' // GOTO ext //END IF // //IF ll_flagnum > 0 THEN // rslt = 0 // arg_msg = '该月份的工资项目部分已通过分配审核' // GOTO ext //END IF // ////先删除工资表记录 //DELETE FROM u_scwg_taskwork_money // WHERE u_scwg_taskwork_money.wageid = :arg_wageid // AND u_scwg_taskwork_money.wagemth = :arg_wagemth // AND u_scwg_taskwork_money.billtype = 2 // AND ( u_scwg_taskwork_money.workgroupid = :arg_wrkgrpid OR :arg_wrkgrpid = -1 ) // USING commit_transaction; //IF commit_transaction.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '删除工资表操作失败,原因:'+commit_transaction.SQLErrText // GOTO ext //END IF // ////更新审核标志 //IF sys_option_taskwork_not_affirm = 0 THEN // UPDATE u_scwg_taskwork_2 // SET u_scwg_taskwork_2.flag = 0, // u_scwg_taskwork_2.Auditingrep = '', // u_scwg_taskwork_2.Auditingdate = :ls_null // WHERE u_scwg_taskwork_2.wageid = :arg_wageid // AND u_scwg_taskwork_2.wagemth = :arg_wagemth // AND u_scwg_taskwork_2.billtype = 2 // AND ( u_scwg_taskwork_2.wrkgrpid = :arg_wrkgrpid OR :arg_wrkgrpid = -1 ) // AND u_scwg_taskwork_2.flag = 1 USING commit_transaction; //ELSE // UPDATE u_scwg_taskwork_2 // SET u_scwg_taskwork_2.flag = 0, // u_scwg_taskwork_2.Auditingrep = '', // u_scwg_taskwork_2.Auditingdate = :ls_null, // u_scwg_taskwork_2.affirmemp = '', // u_scwg_taskwork_2.affirmdate = :ls_null, // u_scwg_taskwork_2.affirmflag = 0 // WHERE u_scwg_taskwork_2.wageid = :arg_wageid // AND u_scwg_taskwork_2.wagemth = :arg_wagemth // AND u_scwg_taskwork_2.billtype = 2 // AND ( u_scwg_taskwork_2.wrkgrpid = :arg_wrkgrpid OR :arg_wrkgrpid = -1 ) // AND u_scwg_taskwork_2.flag = 1 USING commit_transaction; //END IF //IF commit_transaction.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '更新审核标志失败,原因:'+commit_transaction.SQLErrText // GOTO ext //ELSEIF commit_transaction.SQLNRows = 0 THEN // rslt = 0 // arg_msg = "单据正在撤审,请稍后查询。"+"~n"+commit_transaction.SQLErrText // GOTO ext //END IF // //ext: //IF rslt = 0 THEN // ROLLBACK USING commit_transaction; //ELSE // COMMIT USING commit_transaction; //END IF // RETURN rslt // // // // end function public function integer auditmx_1 (long arg_billid, ref string arg_msg, boolean arg_ifcommit);//arg_wrkgrpid : -1 全部工作组 Long cnt,i Int rslt = 1 Decimal ls_emp_sumwage uo_wage u_wage u_wage = Create uo_wage uo_order_ml uo_ml uo_ml = Create uo_order_ml IF getinfo(arg_billid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF sys_option_taskwork_not_affirm = 0 THEN IF affirmflag = 0 THEN rslt = 0 arg_msg = '单据还没有确认,不能审核,请先确认' GOTO ext END IF END IF IF flag = 1 THEN rslt = 0 arg_msg = '单据已经审核,操作取消' GOTO ext END IF FOR i = 1 To it_mxbt ls_emp_sumwage = 0.00 ls_emp_sumwage = taskworkmx[i].price * taskworkmx[i].qty IF u_wage.f_setwagemxdata(wagemth,wrkgrpid,wageid,ls_emp_sumwage,arg_msg,False) = 0 THEN rslt = 0 GOTO ext END IF NEXT IF sys_option_taskwork_not_affirm = 0 THEN UPDATE u_scwg_taskwork_2 SET u_scwg_taskwork_2.flag = 1, u_scwg_taskwork_2.auditingrep = :publ_operator, u_scwg_taskwork_2.auditingdate = getdate() WHERE u_scwg_taskwork_2.billid = :arg_billid AND u_scwg_taskwork_2.flag = 0 AND u_scwg_taskwork_2.billtype = 1 Using commit_transaction; ELSE UPDATE u_scwg_taskwork_2 SET u_scwg_taskwork_2.flag = 1, u_scwg_taskwork_2.auditingrep = :publ_operator, u_scwg_taskwork_2.auditingdate = getdate(), u_scwg_taskwork_2.affirmdate = getdate(), u_scwg_taskwork_2.affirmemp = :publ_operator, u_scwg_taskwork_2.affirmflag = 1 WHERE u_scwg_taskwork_2.billid = :arg_billid AND u_scwg_taskwork_2.flag = 0 AND u_scwg_taskwork_2.billtype = 1 Using commit_transaction; END IF IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = '更新审核标志失败,原因:'+commit_transaction.SQLErrText GOTO ext ELSEIF commit_transaction.SQLNRows = 0 THEN rslt = 0 arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText GOTO ext END IF IF sys_option_taskwork_not_affirm = 1 THEN IF sys_option_add_orderrqwp_fqty = 1 THEN FOR i = 1 To it_mxbt IF taskworkmx[i].orderid > 0 And taskworkmx[i].relprintid > 0 THEN IF uo_ml.uof_add_procode_qty(taskworkmx[i].relscid,taskworkmx[i].orderid,taskworkmx[i].relprintid,& taskworkmx[i].procode,taskworkmx[i].qty,arg_msg,False) = 0 THEN rslt = 0 GOTO ext END IF END IF NEXT END IF END IF ext: IF rslt = 0 THEN ROLLBACK Using commit_transaction; ELSE COMMIT Using commit_transaction; END IF Destroy uo_ml Destroy u_wage RETURN rslt end function public function integer cauditmx_1 (long arg_billid, ref string arg_msg, boolean arg_ifcommit);//arg_wrkgrpid : -1 全部工作组 Long cnt,i Int rslt = 1 Decimal ls_emp_sumwage DateTime ls_null SetNull(ls_null) uo_wage u_wage u_wage = Create uo_wage uo_order_ml uo_ml uo_ml = Create uo_order_ml IF getinfo(arg_billid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF flag = 0 THEN rslt = 0 arg_msg = '单据还没有审核,操作取消' GOTO ext END IF //检查该月份,该工资项目是否已开工资变更单 //cnt = 0 // //SELECT count(*) // INTO :cnt // FROM u_wage_change // WHERE wageid = :wageid // AND wagemth = :wagemth; //IF sqlca.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '查询该月份该工资项目是否已开工资变更单失败'+"~n"+sqlca.SQLErrText // GOTO ext //END IF // //IF cnt > 0 THEN // rslt = 0 // arg_msg = '该月份该工资项目已开工资变更单,不能撤审' // GOTO ext //END IF FOR i = 1 To it_mxbt ls_emp_sumwage = 0.00 ls_emp_sumwage = taskworkmx[i].price * taskworkmx[i].qty IF u_wage.f_setwagemxdata(wagemth,wrkgrpid,wageid,0 - ls_emp_sumwage,arg_msg,False) = 0 THEN rslt = 0 GOTO ext END IF NEXT IF sys_option_taskwork_not_affirm = 0 THEN UPDATE u_scwg_taskwork_2 SET u_scwg_taskwork_2.flag = 0, u_scwg_taskwork_2.auditingrep = '', u_scwg_taskwork_2.auditingdate = :ls_null WHERE u_scwg_taskwork_2.billid = :arg_billid AND u_scwg_taskwork_2.flag = 1 AND u_scwg_taskwork_2.billtype = 1 Using commit_transaction; ELSE UPDATE u_scwg_taskwork_2 SET u_scwg_taskwork_2.flag = 0, u_scwg_taskwork_2.auditingrep = '', u_scwg_taskwork_2.auditingdate = :ls_null, u_scwg_taskwork_2.affirmdate = :ls_null, u_scwg_taskwork_2.affirmemp = '', u_scwg_taskwork_2.affirmflag = 0 WHERE u_scwg_taskwork_2.billid = :arg_billid AND u_scwg_taskwork_2.flag = 1 AND u_scwg_taskwork_2.billtype = 1 Using commit_transaction; END IF IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = '更新审核标志失败,原因:'+commit_transaction.SQLErrText GOTO ext ELSEIF commit_transaction.SQLNRows = 0 THEN rslt = 0 arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText GOTO ext END IF IF sys_option_taskwork_not_affirm = 1 THEN IF sys_option_add_orderrqwp_fqty = 1 THEN FOR i = 1 To it_mxbt IF taskworkmx[i].orderid > 0 And taskworkmx[i].relprintid > 0 THEN IF uo_ml.uof_add_procode_qty(taskworkmx[i].relscid,taskworkmx[i].orderid,taskworkmx[i].relprintid,& taskworkmx[i].procode,0 - taskworkmx[i].qty,arg_msg,False) = 0 THEN rslt = 0 GOTO ext END IF END IF NEXT END IF END IF ext: IF rslt = 0 THEN ROLLBACK Using commit_transaction; ELSE COMMIT Using commit_transaction; END IF Destroy uo_ml Destroy u_wage RETURN rslt end function public function integer acceptmx (long arg_mtrlid, string arg_procode, string arg_proname, decimal arg_qty, decimal arg_price, string arg_mxdscrp, ref string arg_msg, long arg_printid, string arg_status, string arg_woodcode, string arg_pcode, string arg_ycreason, long arg_orderid, string arg_ordercode, string arg_reason, string arg_unit, long arg_relscid, long arg_relprintid, decimal arg_addqty, long arg_relid2, long arg_relprintid2);//arg_proqty 工序数 Int rslt = 1 Long cnt = 0,ls_i,ll_i String ls_ordercode String ls_assmsg decimal arg_proqty IF it_newbegin = False And it_updatebegin = False THEN rslt = 0 arg_msg = "非编辑状态不可以使用,操作取消" GOTO ext END IF IF IsNull(arg_mtrlid) THEN arg_mtrlid = 0 IF IsNull(arg_procode) THEN arg_procode = '' IF IsNull(arg_proname) THEN arg_proname = '' IF IsNull(arg_qty) THEN arg_qty = 0 IF IsNull(arg_price) THEN arg_price = 0 IF IsNull(arg_printid) THEN arg_printid = 0 IF IsNull(arg_mxdscrp) THEN arg_mxdscrp = '' IF IsNull(arg_status) THEN arg_status = '' IF IsNull(arg_woodcode) THEN arg_woodcode = '' IF IsNull(arg_pcode) THEN arg_pcode = '' IF IsNull(arg_ycreason) THEN arg_ycreason = '' IF IsNull(arg_orderid) THEN arg_orderid = 0 IF IsNull(arg_reason) THEN arg_reason = '' IF IsNull(arg_ordercode) THEN arg_ordercode = '' IF IsNull(arg_unit) THEN arg_unit = '' IF IsNull(arg_relscid) THEN arg_relscid = 0 IF IsNull(arg_relprintid) THEN arg_relprintid = 0 IF IsNull(arg_addqty) THEN arg_addqty = 0 IF IsNull(arg_relid2) THEN arg_relid2 = 0 IF IsNull(arg_relprintid2) THEN arg_relprintid2 = 0 IF billtype = 0 Or billtype = 1 THEN 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 END IF IF arg_qty = 0 THEN rslt = 1 GOTO ext END IF IF billtype = 1 And sys_option_taskwork_person_noorder = 0 And arg_orderid = 0 THEN rslt = 0 arg_msg = '第'+String(arg_printid)+'行,请选择销售订单明细' GOTO ext END IF IF arg_orderid > 0 THEN //按订单 Decimal lde_orderqty, lde_assignqty, lde_cp_rate, lde_gz_qty Decimal ld_Otherbill_qty Decimal ld_Otherbill_qty_2 //ld_Otherbill_qty, Decimal lde_workqty Decimal ld_mx_qty Decimal ld_finish_qty Long l SELECT u_SaleTask.taskcode,u_SaleTaskMx.orderqty, u_SaleTaskMx.assignqty INTO :ls_ordercode,:lde_orderqty, :lde_assignqty FROM u_SaleTaskMx,u_SaleTask WHERE u_SaleTaskMx.scid = :scid AND u_SaleTaskMx.taskid = :arg_orderid AND u_SaleTaskMx.printid = :arg_relprintid AND u_SaleTaskMx.scid = u_SaleTask.scid And u_SaleTaskMx.taskid = u_SaleTask.taskid ; IF sqlca.SQLCode <> 0 THEN arg_msg = '行:'+String(arg_printid)+',查询订单号失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF sys_option_add_orderrqwp_fqty = 1 THEN //查数量顺带查是否有该工序 // if sys_version = 802003 then //只有工业版+才有mrp运算 SELECT proqty, finishqty INTO :lde_workqty, :ld_finish_qty FROM U_OrderRqwp WHERE scid = :scid AND printid = :arg_relprintid AND taskid = :arg_orderid AND mtrlid = :arg_mtrlid And procode = :arg_procode; IF sqlca.SQLCode <> 0 THEN arg_msg = '行:'+String(arg_printid)+',查询工序:'+arg_procode+',信息失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF // end if END IF //计划总数 ls_workqty //已完成数 ld_finish_qty // IF sys_option_taskwork_procode_order = 0 THEN //按工价表 数量 // SELECT workqty * :lde_orderqty INTO :lde_workqty // FROM u_sc_workprice // WHERE mtrlid = :arg_mtrlid // And procode = :arg_procode; // IF sqlca.SQLCode <> 0 THEN // arg_msg = '行:'+String(arg_printid)+',查询工序:'+arg_procode+',工价表数量失败,'+sqlca.SQLErrText // rslt = 0 // GOTO ext // END IF // ld_finish_qty = 0 // END IF //订单工序完成数 IF sys_option_taskwork_not_affirm = 1 THEN //不需确认,不考虑已完成数 ld_finish_qty = 0 END IF IF sys_opton_taskwork_gz_qty = 0 THEN //按订单已进仓数 开计件单 //进仓比例 lde_gz_qty = lde_assignqty ls_assmsg = "订单已进仓数" ELSEIF sys_opton_taskwork_gz_qty = 1 THEN //按订单安排生产数 开计件单 IF sys_option_taskwork_procode_order = 1 THEN SELECT proqty INTO :lde_workqty FROM U_OrderRqwp WHERE scid = :scid AND printid = :arg_relprintid AND taskid = :arg_orderid AND mtrlid = :arg_mtrlid And procode = :arg_procode; IF sqlca.SQLCode <> 0 THEN arg_msg = '行:'+String(arg_printid)+',查询工序:'+arg_procode+',信息失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF lde_gz_qty = lde_workqty ELSE SELECT workqty INTO :arg_proqty FROM u_sc_workprice WHERE mtrlid = :arg_mtrlid And procode = :arg_procode; IF sqlca.SQLCode <> 0 THEN arg_msg = '行:'+String(arg_printid)+',查询工序:'+arg_procode+',工价表数量失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF lde_gz_qty = lde_orderqty * arg_proqty END IF ls_assmsg = "订单安排生产数" ELSEIF sys_opton_taskwork_gz_qty = 2 THEN //不限制 lde_gz_qty =100000 END IF //个人产品工序 已开单数 SELECT isnull(sum(qty),0) INTO :ld_Otherbill_qty FROM u_scwg_taskwork_2,u_scwg_taskwork_2_mx WHERE u_scwg_taskwork_2_mx.billid = u_scwg_taskwork_2.billid AND u_scwg_taskwork_2_mx.mtrlid = :arg_mtrlid AND u_scwg_taskwork_2_mx.orderid = :arg_orderid AND u_scwg_taskwork_2_mx.relprintid = :arg_relprintid AND u_scwg_taskwork_2_mx.relscid = :arg_relscid AND u_scwg_taskwork_2_mx.procode = :arg_procode AND u_scwg_taskwork_2_mx.billid <> :billid And (u_scwg_taskwork_2.affirmflag = 0 Or :sys_option_taskwork_not_affirm = 1 ); IF sqlca.SQLCode <> 0 THEN arg_msg = '行:'+String(arg_printid)+',查询工序:'+arg_procode+',其它已开单未确认数失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF //产品个人工序 已开单数 SELECT isnull(sum(Amount),0) INTO :ld_Otherbill_qty_2 FROM u_sc_taskworkmx,u_sc_taskwork WHERE u_sc_taskworkmx.billid = u_sc_taskwork.billid AND u_sc_taskworkmx.scid = u_sc_taskwork.scid AND u_sc_taskwork.mtrlid = :arg_mtrlid AND u_sc_taskwork.orderid = :arg_orderid AND u_sc_taskwork.relid = :arg_relprintid AND u_sc_taskworkmx.procode = :arg_procode And (u_sc_taskwork.affirmflag = 0 Or :sys_option_taskwork_not_affirm = 1 ); IF sqlca.SQLCode <> 0 THEN arg_msg = '行:'+String(arg_printid)+',查询工序:'+arg_procode+',产品个人计件单统计表开单未确认数失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF FOR ll_i = 1 To it_mxbt IF arg_mtrlid = taskworkmx[ll_i].mtrlid and arg_orderid =taskworkmx[ll_i].orderid And arg_procode =taskworkmx[ll_i].procode and taskworkmx[ll_i].relprintid = arg_relprintid THEN ld_mx_qty = ld_mx_qty + taskworkmx[ll_i].qty END IF NEXT IF arg_qty + ld_finish_qty + ld_Otherbill_qty + ld_Otherbill_qty_2 + ld_mx_qty > lde_gz_qty THEN //* arg_proqty rslt = 0 arg_msg = '第 '+String(arg_printid)+' 行,工序:'+arg_procode+',计件数量不能大于'+ls_assmsg+', 系统选项[081]限制~r~n' & + '订单安排生产数:'+String(lde_orderqty,'####0.####')+',已进仓数:'+String(lde_assignqty,'####0.####')+',可计件总数:'+String(lde_gz_qty,'####0.####')+'~r~n' & + '计件已完成数:'+String(ld_finish_qty,'####0.####')+',本单已开单:'+String(ld_mx_qty,'####0.####')+',其他已开单数:'+String(ld_Otherbill_qty + ld_Otherbill_qty_2,'####0.####')+'~r~n' & + '不能开单:'+String(arg_qty,'####0.####')+'~r~n' & + String(lde_gz_qty,'####0.####') +' < '+String(ld_finish_qty,'####0.####')+' + '+String(ld_mx_qty,'####0.####')+' + '+String(ld_Otherbill_qty + ld_Otherbill_qty_2,'####0.####')+' + '+String(arg_qty,'####0.####') GOTO ext END IF ELSE ls_ordercode = arg_ordercode END IF IF billtype = 0 Or billtype = 1 THEN Decimal ld_workprice //检查限价 IF sys_option_taskwork_price_if_mod = 1 THEN //启用检查限价选项 IF sys_option_taskwork_procode_order = 0 THEN //按物料的工价表限价 SELECT workPrice INTO :ld_workprice FROM u_sc_workprice WHERE mtrlid = :arg_mtrlid And procode = :arg_procode; IF sqlca.SQLCode = 0 THEN IF ld_workprice <> arg_price THEN rslt = 0 arg_msg = '工序:'+arg_procode+' 工价表工价为:'+String(ld_workprice,'#,##0.00########')+',不能输入工价:'+String(arg_price,'#,##0.00########') GOTO ext END IF ELSE SELECT workprice INTO :ld_workprice FROM u_sc_workprocedure WHERE code = :arg_procode And ifpubl = 1; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询公共工序:'+arg_procode+' 工价失败'+'~n'+sqlca.SQLErrText GOTO ext END IF IF ld_workprice <> arg_price THEN rslt = 0 arg_msg = '公共工序:'+arg_procode+' 工价为:'+String(ld_workprice,'#,##0.00########')+',不能输入工价:'+String(arg_price,'#,##0.00########') GOTO ext END IF END IF ELSE //按销售订单明细的工序明细限价 SELECT workPrice INTO :ld_workprice FROM U_OrderRqwp WHERE ( U_OrderRqwp.scid = :arg_relscid ) AND ( U_OrderRqwp.taskid = :arg_orderid ) AND ( U_OrderRqwp.printid = :arg_relprintid ) AND ( U_OrderRqwp.procode = :arg_procode ); IF sqlca.SQLCode = 0 THEN IF ld_workprice <> arg_price THEN rslt = 0 arg_msg = '工序:'+arg_procode+' 订单明细的工序明细工价为:'+String(ld_workprice,'#,##0.00########')+',不能输入工价:'+String(arg_price,'#,##0.00########') GOTO ext END IF ELSE SELECT workprice INTO :ld_workprice FROM u_sc_workprocedure WHERE code = :arg_procode And ifpubl = 1; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询公共工序:'+arg_procode+' 工价失败'+'~n'+sqlca.SQLErrText GOTO ext END IF IF ld_workprice <> arg_price THEN rslt = 0 arg_msg = '公共工序:'+arg_procode+' 工价为:'+String(ld_workprice,'#,##0.00########')+',不能输入工价:'+String(arg_price,'#,##0.00########') GOTO ext END IF END IF END IF END IF END IF //写入内容 it_mxbt++ taskworkmx[it_mxbt].mtrlid = arg_mtrlid taskworkmx[it_mxbt].procode = arg_procode taskworkmx[it_mxbt].proname = arg_proname taskworkmx[it_mxbt].qty = arg_qty taskworkmx[it_mxbt].price = arg_price taskworkmx[it_mxbt].mxdscrp = arg_mxdscrp taskworkmx[it_mxbt].printid = arg_printid taskworkmx[it_mxbt].status = arg_status taskworkmx[it_mxbt].woodcode = arg_woodcode taskworkmx[it_mxbt].pcode = arg_pcode taskworkmx[it_mxbt].ycreason = arg_ycreason taskworkmx[it_mxbt].orderid = arg_orderid taskworkmx[it_mxbt].ordercode = ls_ordercode taskworkmx[it_mxbt].reason = arg_reason taskworkmx[it_mxbt].unit = arg_unit taskworkmx[it_mxbt].relscid = arg_relscid taskworkmx[it_mxbt].relprintid = arg_relprintid taskworkmx[it_mxbt].addqty = arg_addqty taskworkmx[it_mxbt].relid2 = arg_relid2 taskworkmx[it_mxbt].relprintid2 = arg_relprintid2 ext: IF rslt = 0 THEN p_clearmx() Return(rslt) end function on uo_scwg_taskwork_2.create call super::create TriggerEvent( this, "constructor" ) end on on uo_scwg_taskwork_2.destroy TriggerEvent( this, "destructor" ) call super::destroy end on