$PBExportHeader$uo_scwg_taskwork_day.sru forward global type uo_scwg_taskwork_day from nonvisualobject end type end forward global type uo_scwg_taskwork_day from nonvisualobject end type global uo_scwg_taskwork_day uo_scwg_taskwork_day 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 DateTime billdate String dscrp Long wagemth String rep String relcode Long wageid Long wrkgrpid long billtype string relempstr long wkpid long relid Transaction commit_transaction Boolean if_getid_ture = false s_scwg_taskwork_day taskworkmx[] s_scwg_taskwork_day_emp empmx[] Long it_mxbt = 0 Long it_mxbt_emp = 0 Boolean it_newbegin = FALSE Boolean it_updatebegin = FALSE Int uo_option_taskwork_not_affirm Int uo_option_taskwork_day_noorder Int uo_option_taskwork_procode_order Int uo_option_taskwork_price_if_mod Int uo_option_if_taskwork_acmpqty int uo_option_check_noworkprice 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 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 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 auditmx (long arg_billid, ref string arg_msg, boolean arg_ifcommit) public function integer cauditmx (long arg_billid, ref string arg_msg, boolean arg_ifcommit) 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 getinfo (long arg_billid, ref string arg_msg) public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit) public function integer acceptmx_emp (integer arg_ifhelp, long arg_empid, string arg_empname, decimal arg_workhours, decimal arg_workhours2, decimal arg_workhours3, decimal arg_prwageamt, decimal arg_wageamt, string arg_mxdscrp, ref string arg_msg, long arg_printid) 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, long arg_orderid, string arg_reason, string arg_unit, string arg_wpcode) public function integer auditing (long arg_scid, long arg_wageid, long arg_wagemth, ref string arg_msg) public function integer c_auditing (long arg_scid, long arg_wageid, long arg_wagemth, ref string arg_msg) public function integer auditing_1 (long arg_scid, long arg_wageid, long arg_wagemth, ref string arg_msg) public function integer c_auditing_1 (long arg_scid, long arg_wageid, long arg_wagemth, ref string arg_msg) public function integer uf_update_emp (long arg_billid, ref string arg_msg, boolean arg_ifcommit) public function integer updateempbegin (long arg_billid, ref string arg_msg) end prototypes public function integer p_clearmx ();//INT p_clearmx() //清除明细 it_mxbt = 0 it_mxbt_emp = 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 = '' relempstr = '' wkpid = 0 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 Long cnt = 0,i,j 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 IsNull(billtype) THEN billtype = 0 if isnull(relempstr) then relempstr = '' if isnull(wkpid) then wkpid = 0 if isnull(relid) then relid = 0 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 it_mxbt_emp = 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 if trim(rep) = '' then rslt = 0 arg_msg = '请填写经手人' goto ext end if cnt = 0 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 //cnt = 0 //SELECT count(*) INTO :cnt // FROM u_scwg_taskwork_day // WHERE flag = 1 // AND wagemth = :wagemth // AND wrkgrpid = :wrkgrpid // 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_day","billid",arg_msg,TRUE,id_sqlca) IF ls_newid <= 0 THEN rslt = 0 GOTO ext END IF IF billtype = 0 THEN // billcode = getid(0,"JD",Date(server_dt),if_getid_ture,commit_transaction) //取得新单据编号 ELSEIF billtype = 1 THEN // 异常计件单 billcode = getid(0,"AD",Date(server_dt),if_getid_ture,commit_transaction) //取得新单据编号 END IF IF billcode = "err" THEN billcode = '' rslt = 0 arg_msg = "无法获取单据编号" GOTO ext END IF INSERT INTO u_scwg_taskwork_day ( billid, billdate, wagemth, rep, relcode, dscrp, scid, billcode, wrkgrpid, opemp, opdate, wageid, billtype, relempstr, wkpid, relid) VALUES ( :ls_newid, :billdate, :wagemth, :rep, :relcode, :dscrp, :scid, :billcode, :wrkgrpid, :publ_operator, :server_dt , :wageid, :billtype, :relempstr, :wkpid, :relid) USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致插入操作失败>>"+"~n"+sqlca.SQLErrText GOTO ext END IF // billid = ls_newid FOR i = 1 TO it_mxbt INSERT INTO u_scwg_taskwork_day_mx ( billid, procode, proname, qty, price, mxdscrp, mtrlid, printid, status, woodcode, pcode, orderid, ordercode, reason, unit, wpcode) VALUES ( :ls_newid, :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].orderid, :taskworkmx[i].ordercode, :taskworkmx[i].reason, :taskworkmx[i].unit, :taskworkmx[i].wpcode) USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN billid = 0 //还原noticeid rslt = 0 arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText ROLLBACK ; GOTO ext END IF NEXT FOR j = 1 TO it_mxbt_emp INSERT INTO u_scwg_taskwork_day_mx_emp ( billid, printid, empid, workhours, workhours2, workhours3, wageamt, mxdscrp, ifhelp, prwageamt) VALUES ( :ls_newid, :empmx[j].printid, :empmx[j].empid, :empmx[j].workhours, :empmx[j].workhours2, :empmx[j].workhours3, :empmx[j].wageamt, :empmx[j].mxdscrp, :empmx[j].ifhelp, :empmx[j].prwageamt) USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN billid = 0 //还原noticeid rslt = 0 arg_msg = "因网络或其它原因导致插入员工明细操作失败"+"~n"+sqlca.SQLErrText ROLLBACK ; GOTO ext END IF NEXT ELSE //////////////////////////////////////////////// //更新 UPDATE u_scwg_taskwork_day 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, wkpid = :wkpid, relid = :relid 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_day_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_day_mx ( billid, procode, proname, qty, price, mxdscrp, mtrlid, printid, status, woodcode, pcode, orderid, ordercode, reason, unit, wpcode) 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].orderid, :taskworkmx[i].ordercode, :taskworkmx[i].reason, :taskworkmx[i].unit, :taskworkmx[i].wpcode) 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_day_mx_emp Where billid = :billid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除旧有员工明细操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF FOR j = 1 TO it_mxbt_emp INSERT INTO u_scwg_taskwork_day_mx_emp ( billid, printid, empid, workhours, workhours2, workhours3, wageamt, mxdscrp, ifhelp, prwageamt) VALUES ( :billid, :empmx[j].printid, :empmx[j].empid, :empmx[j].workhours, :empmx[j].workhours2, :empmx[j].workhours3, :empmx[j].wageamt, :empmx[j].mxdscrp, :empmx[j].ifhelp, :empmx[j].prwageamt) USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN billid = 0 //还原id rslt = 0 arg_msg = "因网络或其它原因导致插入员工明细操作失败"+"~n"+sqlca.SQLErrText ROLLBACK ; GOTO ext END IF NEXT NEXT // END IF 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 newbegin (long arg_scid, ref string arg_msg); p_reset() if arg_scid < 0 then arg_msg = '请选择分部' return 0 end if scid=arg_scid it_newbegin=TRUE it_updatebegin=FALSE return 1 end function public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit);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_day set dscrp = dscrp+' '+:arg_newdescppart where u_scwg_taskwork_day.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 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_day SET affirmemp = :publ_operator, affirmdate = getdate(), affirmflag = 1 WHERE u_scwg_taskwork_day.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 FOR i = 1 TO it_mxbt IF taskworkmx[i].orderid > 0 THEN IF uo_ml.uof_add_procode_qty(scid,taskworkmx[i].orderid,& taskworkmx[i].procode,billdate,taskworkmx[i].qty,arg_msg,FALSE) = 0 THEN arg_msg = '第'+string(i)+'行,'+arg_msg rslt = 0 GOTO ext END IF END IF NEXT 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_day SET affirmemp = '', affirmdate = :null_dt, affirmflag = 0 WHERE u_scwg_taskwork_day.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 FOR i = 1 TO it_mxbt IF taskworkmx[i].orderid > 0 THEN IF uo_ml.uof_add_procode_qty(scid,taskworkmx[i].orderid,& taskworkmx[i].procode,billdate,0 - taskworkmx[i].qty,arg_msg,FALSE) = 0 THEN arg_msg = '第'+string(i)+'行,'+arg_msg rslt = 0 GOTO ext END IF END IF NEXT 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, billtype, wageid, relid INTO :billid, :billdate, :wagemth, :rep, :relcode, :dscrp, :scid, :billcode, :wrkgrpid, :flag, :affirmflag, :scid, :billtype, :wageid, :relid FROM u_scwg_taskwork_day WHERE u_scwg_taskwork_day.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 auditmx (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 IF uo_option_taskwork_not_affirm = -1000 THEN arg_msg = '选项:[080]计件单不使用确认功能,读取初始默认值失败,操作取消!' rslt = 0 GOTO ext END IF IF uo_option_check_noworkprice = -1000 THEN arg_msg = '选项:[240]计件单没有工价不能审核,读取初始默认值失败,操作取消!' rslt = 0 GOTO ext END IF IF getinfo(arg_billid ,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF uo_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 IF uo_option_check_noworkprice = 1 THEN cnt = 0 SELECT count(*) INTO :cnt FROM u_scwg_taskwork_day INNER JOIN u_scwg_taskwork_day_mx ON u_scwg_taskwork_day.billid = u_scwg_taskwork_day_mx.billid WHERE u_scwg_taskwork_day.billid = :arg_billid AND u_scwg_taskwork_day_mx.price = 0 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 END IF FOR i = 1 TO it_mxbt_emp ls_emp_sumwage = 0.00 ls_emp_sumwage = empmx[i].wageamt + empmx[i].prwageamt IF u_wage.f_setwagemxdata(wagemth,empmx[i].empid,wageid,ls_emp_sumwage,arg_msg,FALSE) = 0 THEN rslt = 0 GOTO ext END IF NEXT IF uo_option_taskwork_not_affirm = 0 THEN UPDATE u_scwg_taskwork_day SET u_scwg_taskwork_day.flag = 1, u_scwg_taskwork_day.auditingrep = :publ_operator, u_scwg_taskwork_day.auditingdate = getdate() WHERE u_scwg_taskwork_day.billid = :arg_billid AND u_scwg_taskwork_day.flag = 0 AND u_scwg_taskwork_day.billtype = 0 USING commit_transaction; ELSE UPDATE u_scwg_taskwork_day SET u_scwg_taskwork_day.flag = 1, u_scwg_taskwork_day.auditingrep = :publ_operator, u_scwg_taskwork_day.auditingdate = getdate(), u_scwg_taskwork_day.affirmdate = getdate(), u_scwg_taskwork_day.affirmemp = :publ_operator, u_scwg_taskwork_day.affirmflag = 1 WHERE u_scwg_taskwork_day.billid = :arg_billid AND u_scwg_taskwork_day.flag = 0 AND u_scwg_taskwork_day.billtype = 0 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 cauditmx (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) IF uo_option_taskwork_not_affirm = -1000 THEN arg_msg = '选项:[080]计件单不使用确认功能,读取初始默认值失败,操作取消!' rslt = 0 GOTO ext END IF uo_wage u_wage u_wage = CREATE uo_wage 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 IF f_check_wage_audit(wagemth,scid,arg_msg) = 0 THEN rslt = 0 arg_msg = 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_emp ls_emp_sumwage = 0.00 ls_emp_sumwage = empmx[i].wageamt + empmx[i].prwageamt IF u_wage.f_setwagemxdata(wagemth,empmx[i].empid,wageid,0 - ls_emp_sumwage,arg_msg,FALSE) = 0 THEN rslt = 0 GOTO ext END IF NEXT IF uo_option_taskwork_not_affirm = 0 THEN UPDATE u_scwg_taskwork_day SET u_scwg_taskwork_day.flag = 0, u_scwg_taskwork_day.auditingrep = '', u_scwg_taskwork_day.auditingdate = :ls_null WHERE u_scwg_taskwork_day.billid = :arg_billid AND u_scwg_taskwork_day.flag = 1 AND u_scwg_taskwork_day.billtype = 0 USING commit_transaction; ELSE UPDATE u_scwg_taskwork_day SET u_scwg_taskwork_day.flag = 0, u_scwg_taskwork_day.auditingrep = '', u_scwg_taskwork_day.auditingdate = :ls_null, u_scwg_taskwork_day.affirmdate = :ls_null, u_scwg_taskwork_day.affirmemp = '', u_scwg_taskwork_day.affirmflag = 0 WHERE u_scwg_taskwork_day.billid = :arg_billid AND u_scwg_taskwork_day.flag = 1 AND u_scwg_taskwork_day.billtype = 0 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 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 IF uo_option_taskwork_not_affirm = -1000 THEN arg_msg = '选项:[080]计件单不使用确认功能,读取初始默认值失败,操作取消!' rslt = 0 GOTO ext END IF IF uo_option_check_noworkprice = -1000 THEN arg_msg = '选项:[240]计件单没有工价不能审核,读取初始默认值失败,操作取消!' rslt = 0 GOTO ext END IF IF getinfo(arg_billid ,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF uo_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 IF uo_option_check_noworkprice = 1 THEN cnt = 0 SELECT count(*) INTO :cnt FROM u_scwg_taskwork_day INNER JOIN u_scwg_taskwork_day_mx ON u_scwg_taskwork_day.billid = u_scwg_taskwork_day_mx.billid WHERE u_scwg_taskwork_day.billid = :arg_billid AND u_scwg_taskwork_day_mx.price = 0 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 END IF FOR i = 1 TO it_mxbt_emp ls_emp_sumwage = 0.00 ls_emp_sumwage = empmx[i].wageamt + empmx[i].prwageamt IF u_wage.f_setwagemxdata(wagemth,empmx[i].empid,wageid,ls_emp_sumwage,arg_msg,FALSE) = 0 THEN rslt = 0 GOTO ext END IF NEXT IF uo_option_taskwork_not_affirm = 0 THEN UPDATE u_scwg_taskwork_day SET u_scwg_taskwork_day.flag = 1, u_scwg_taskwork_day.auditingrep = :publ_operator, u_scwg_taskwork_day.auditingdate = getdate() WHERE u_scwg_taskwork_day.billid = :arg_billid AND u_scwg_taskwork_day.flag = 0 AND u_scwg_taskwork_day.billtype = 1 USING commit_transaction; ELSE UPDATE u_scwg_taskwork_day SET u_scwg_taskwork_day.flag = 1, u_scwg_taskwork_day.auditingrep = :publ_operator, u_scwg_taskwork_day.auditingdate = getdate(), u_scwg_taskwork_day.affirmdate = getdate(), u_scwg_taskwork_day.affirmemp = :publ_operator, u_scwg_taskwork_day.affirmflag = 1 WHERE u_scwg_taskwork_day.billid = :arg_billid AND u_scwg_taskwork_day.flag = 0 AND u_scwg_taskwork_day.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 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) IF uo_option_taskwork_not_affirm = -1000 THEN arg_msg = '选项:[080]计件单不使用确认功能,读取初始默认值失败,操作取消!' rslt = 0 GOTO ext END IF uo_wage u_wage u_wage = CREATE uo_wage 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 IF f_check_wage_audit(wagemth,scid,arg_msg) = 0 THEN rslt = 0 arg_msg = 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_emp ls_emp_sumwage = 0.00 ls_emp_sumwage = empmx[i].wageamt + empmx[i].prwageamt IF u_wage.f_setwagemxdata(wagemth,empmx[i].empid,wageid,0 - ls_emp_sumwage,arg_msg,FALSE) = 0 THEN rslt = 0 GOTO ext END IF NEXT IF uo_option_taskwork_not_affirm = 0 THEN UPDATE u_scwg_taskwork_day SET u_scwg_taskwork_day.flag = 0, u_scwg_taskwork_day.auditingrep = '', u_scwg_taskwork_day.auditingdate = :ls_null WHERE u_scwg_taskwork_day.billid = :arg_billid AND u_scwg_taskwork_day.flag = 1 AND u_scwg_taskwork_day.billtype = 1 USING commit_transaction; ELSE UPDATE u_scwg_taskwork_day SET u_scwg_taskwork_day.flag = 0, u_scwg_taskwork_day.auditingrep = '', u_scwg_taskwork_day.auditingdate = :ls_null, u_scwg_taskwork_day.affirmdate = :ls_null, u_scwg_taskwork_day.affirmemp = '', u_scwg_taskwork_day.affirmflag = 0 WHERE u_scwg_taskwork_day.billid = :arg_billid AND u_scwg_taskwork_day.flag = 1 AND u_scwg_taskwork_day.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 getinfo (long arg_billid, ref string arg_msg); Int rslt = 1 Long i = 1,no_mxcheck = 0 Long j = 1 ,no_mxcheck_emp = 0 IF arg_billid <= 0 THEN rslt = 0 arg_msg = "非法单据唯一码("+String(arg_billid)+')' 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_day_mx.mtrlid, u_scwg_taskwork_day_mx.qty, u_scwg_taskwork_day_mx.orderid, u_scwg_taskwork_day_mx.ordercode, u_scwg_taskwork_day_mx.procode, u_scwg_taskwork_day_mx.price, u_scwg_taskwork_day_mx.wpcode FROM u_scwg_taskwork_day_mx WHERE u_scwg_taskwork_day_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].wpcode; 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].wpcode; LOOP CLOSE cur_mx; //检验明细是否读入完整 SELECT count(*) INTO :no_mxcheck FROM u_scwg_taskwork_day_mx WHERE u_scwg_taskwork_day_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 it_mxbt = i - 1 // // DECLARE cur_empmx CURSOR FOR SELECT u_scwg_taskwork_day_mx_emp.printid, u_scwg_taskwork_day_mx_emp.empid, u_scwg_taskwork_day_mx_emp.workhours, u_scwg_taskwork_day_mx_emp.workhours2, u_scwg_taskwork_day_mx_emp.workhours3, u_scwg_taskwork_day_mx_emp.wageamt, u_scwg_taskwork_day_mx_emp.prwageamt FROM u_scwg_taskwork_day_mx_emp WHERE u_scwg_taskwork_day_mx_emp.billid = :arg_billid Using commit_transaction; OPEN cur_empmx; FETCH cur_empmx INTO :empmx[j].printid,:empmx[j].empid, :empmx[j].workhours,:empmx[j].workhours2,:empmx[j].workhours3,:empmx[j].wageamt, :empmx[j].prwageamt; DO WHILE commit_transaction.SQLCode = 0 j++ FETCH cur_empmx INTO :empmx[j].printid,:empmx[j].empid, :empmx[j].workhours,:empmx[j].workhours2,:empmx[j].workhours3,:empmx[j].wageamt, :empmx[j].prwageamt; LOOP CLOSE cur_empmx; //检验明细是否读入完整 SELECT count(*) INTO :no_mxcheck_emp FROM u_scwg_taskwork_day_mx_emp WHERE u_scwg_taskwork_day_mx_emp.billid = :arg_billid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,单据明细数量" GOTO ext END IF IF j <> (no_mxcheck_emp+1) THEN rslt = 0 arg_msg = "查询操作失败,单据明细" GOTO ext END IF billid = arg_billid it_mxbt_emp = j - 1 ext: IF rslt = 0 THEN p_reset() RETURN rslt end function public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit);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_day_mx WHERE u_scwg_taskwork_day_mx.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_day_mx_emp WHERE u_scwg_taskwork_day_mx_emp.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_day WHERE u_scwg_taskwork_day.billid = :arg_billid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除单据操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK ; p_reset() ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT ; END IF Return (rslt) end function public function integer acceptmx_emp (integer arg_ifhelp, long arg_empid, string arg_empname, decimal arg_workhours, decimal arg_workhours2, decimal arg_workhours3, decimal arg_prwageamt, decimal arg_wageamt, string arg_mxdscrp, ref string arg_msg, long arg_printid); Int rslt = 1 Long cnt = 0,ls_i String ls_ordercode IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN rslt = 0 arg_msg = "非编辑状态不可以使用,操作取消" GOTO ext END IF if isnull(arg_ifhelp) then arg_ifhelp = 0 IF IsNull(arg_empid) THEN arg_empid = 0 IF IsNull(arg_empname) THEN arg_empname = '' IF IsNull(arg_mxdscrp) THEN arg_mxdscrp = '' IF IsNull(arg_workhours) THEN arg_workhours = 0 IF IsNull(arg_prwageamt) THEN arg_prwageamt = 0 IF IsNull(arg_wageamt) THEN arg_wageamt = 0 IF IsNull(arg_printid) THEN arg_printid = 0 IF arg_empid = 0 THEN rslt = 0 arg_msg = '员工明细行:'+String(arg_printid)+',错误的员工ID' GOTO ext END IF IF arg_workhours < 0 THEN rslt = 0 arg_msg = '员工:'+arg_empname+'请输入正确工时!' GOTO ext END IF //if arg_prwageamt < 0 then // rslt = 0 // arg_msg = '员工:'+arg_empname+'请错误的预提工资!' // GOTO ext //END IF // //IF arg_wageamt < 0 THEN // rslt = 0 // arg_msg = '员工:'+arg_empname+'错误的分配工资!' // GOTO ext //END IF relempstr = relempstr + arg_empname +',' //写入内容 it_mxbt_emp++ empmx[it_mxbt_emp].empid = arg_empid empmx[it_mxbt_emp].workhours = arg_workhours empmx[it_mxbt_emp].workhours2 = arg_workhours2 empmx[it_mxbt_emp].workhours3 = arg_workhours3 empmx[it_mxbt_emp].wageamt = arg_wageamt empmx[it_mxbt_emp].printid = arg_printid empmx[it_mxbt_emp].mxdscrp = arg_mxdscrp empmx[it_mxbt_emp].ifhelp = arg_ifhelp empmx[it_mxbt_emp].prwageamt = arg_prwageamt ext: IF rslt = 0 THEN p_clearmx() 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, long arg_orderid, string arg_reason, string arg_unit, string arg_wpcode); Int rslt = 1 Long cnt = 0,ls_i,ll_i String ls_ordercode IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN rslt = 0 arg_msg = "非编辑状态不可以使用,操作取消" GOTO ext END IF IF uo_option_taskwork_not_affirm = -1000 THEN arg_msg = '选项:[080]计件单不使用确认功能,读取初始默认值失败,操作取消!' rslt = 0 GOTO ext END IF IF uo_option_taskwork_day_noorder = -1000 THEN arg_msg = '选项:[105]日分配计件单可以不选计划,读取初始默认值失败,操作取消!' rslt = 0 GOTO ext END IF IF uo_option_taskwork_price_if_mod = -1000 THEN arg_msg = '选项:[081]计件单限制工价,读取初始默认值失败,操作取消!' rslt = 0 GOTO ext END IF IF uo_option_if_taskwork_acmpqty = -1000 THEN arg_msg = '选项:[202]计件单选生产计划时按已进仓数限制,读取初始默认值失败,操作取消!' rslt = 0 GOTO ext END IF IF uo_option_taskwork_procode_order = -1000 THEN arg_msg = '选项:[064]计件单按生产计划工序,读取初始默认值失败,操作取消!' rslt = 0 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_orderid) THEN arg_orderid = 0 IF IsNull(arg_reason) THEN arg_reason = '' IF IsNull(arg_unit) THEN arg_unit = '' IF IsNull(arg_wpcode) THEN arg_wpcode = '' IF billtype = 0 THEN IF Trim(arg_procode) = '' THEN rslt = 0 arg_msg = '行:'+String(arg_printid)+',工序编号不能为空!' GOTO ext END IF IF Trim(arg_proname) = '' THEN rslt = 0 arg_msg = '行:'+String(arg_printid)+',工序名称不能为空' GOTO ext END IF END IF IF arg_qty = 0 THEN rslt = 1 GOTO ext END IF IF billtype = 0 AND uo_option_taskwork_day_noorder = 0 AND arg_orderid = 0 THEN rslt = 0 arg_msg = '请选择生产计划,第'+String(arg_printid)+'行' GOTO ext END IF IF arg_orderid > 0 THEN Decimal ld_orderqty,ld_acmpqty,ld_trueqty SELECT ordercode,orderqty,acmpqty INTO :ls_ordercode,:ld_orderqty,:ld_acmpqty FROM u_order_ml WHERE scid = :scid AND orderid = :arg_orderid; IF sqlca.SQLCode <> 0 THEN arg_msg = '行:'+String(arg_printid)+',查询生产计划号失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF uo_option_if_taskwork_acmpqty = 1 THEN ld_trueqty = ld_acmpqty ELSE ld_trueqty = ld_orderqty END IF Decimal ld_othertask_qty Decimal ld_Otherbill_qty,ld_Otherbill_qty_2 Decimal ld_workqty Decimal ld_mx_qty Decimal ld_finish_qty,ld_collect_qty Long l IF uo_option_taskwork_procode_order = 1 THEN SELECT (proqty / :ld_orderqty) * :ld_trueqty INTO :ld_workqty FROM U_OrderRqwp WHERE scid = :scid AND orderid = :arg_orderid AND procode = :arg_procode; IF sqlca.SQLCode <> 0 THEN arg_msg = '行:'+String(arg_printid)+',查询计划:'+ls_ordercode+',工序:'+arg_procode+',计划数量失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF ELSE //查询产品是否组合配置 Long ll_statusflag Decimal ld_pzqty Boolean lb_iffind = FALSE String ls_pz_status s_mtrlcfg_expr s_pz[] SELECT statusflag INTO :ll_statusflag FROM u_mtrldef Where mtrlid = :arg_mtrlid ; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询产品是否使用组合配置失败'+sqlca.SQLErrText GOTO ext END IF SELECT status INTO :ls_pz_status FROM u_sc_workprice WHERE mtrlid = :arg_mtrlid AND procode = :arg_procode and wpcode = :arg_wpcode; IF sqlca.SQLCode <> 0 THEN arg_msg = '行:'+String(arg_printid)+',查询产品工序配置失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF ll_statusflag = 2 AND ls_pz_status <> '' THEN f_checkpz(arg_status,s_pz[]) lb_iffind = FALSE FOR ll_i = 1 TO UpperBound(s_pz) IF s_pz[ll_i].cfgname = ls_pz_status THEN ld_pzqty = Dec(s_pz[ll_i].qty) lb_iffind = TRUE EXIT END IF NEXT IF lb_iffind = FALSE THEN ld_pzqty = 1 END IF ELSE ld_pzqty = 1 END IF SELECT workqty * :ld_trueqty * :ld_pzqty INTO :ld_workqty FROM u_sc_workprice WHERE mtrlid = :arg_mtrlid AND procode = :arg_procode and wpcode = :arg_wpcode; IF sqlca.SQLCode <> 0 THEN arg_msg = '行:'+String(arg_printid)+',查询单件产品工序数失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF END IF SELECT isnull(sum(finishqty),0) INTO :ld_finish_qty FROM U_OrderRqwp WHERE orderid = :arg_orderid AND scid = :scid AND procode = :arg_procode; IF sqlca.SQLCode <> 0 THEN arg_msg = '行:'+String(arg_printid)+',查询指令单号:'+ls_ordercode+',工序:'+arg_procode+'已确认数失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF SELECT isnull(sum(qty),0) INTO :ld_othertask_qty FROM u_scwg_taskwork_day,u_scwg_taskwork_day_mx WHERE u_scwg_taskwork_day_mx.billid = u_scwg_taskwork_day.billid AND u_scwg_taskwork_day_mx.mtrlid = :arg_mtrlid AND u_scwg_taskwork_day_mx.orderid = :arg_orderid AND u_scwg_taskwork_day_mx.procode = :arg_procode AND u_scwg_taskwork_day_mx.billid <> :billid And (u_scwg_taskwork_day.affirmflag = 0 OR :uo_option_taskwork_not_affirm = 1 ); IF sqlca.SQLCode = -1 THEN arg_msg = '行:'+String(arg_printid)+',查询指令单号:'+ls_ordercode+',工序:'+arg_procode+'其它开单数失败,'+sqlca.SQLErrText rslt = 0 GOTO ext 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.procode = :arg_procode AND u_scwg_taskwork_2.scid = :scid And (u_scwg_taskwork_2.affirmflag = 0 OR :uo_option_taskwork_not_affirm = 1 ); IF sqlca.SQLCode = -1 THEN arg_msg = '行:'+String(arg_printid)+',查询指令单号:'+ls_ordercode+',工序:'+arg_procode+'工作组产品日分配计件单开单数失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF SELECT isnull(sum(Amount),0) INTO :ld_Otherbill_qty_2 FROM u_sc_taskwork,u_sc_taskworkmx WHERE u_sc_taskworkmx.scid = u_sc_taskwork.scid AND u_sc_taskworkmx.billid = u_sc_taskwork.billid AND u_sc_taskwork.mtrlid = :arg_mtrlid AND u_sc_taskwork.orderid = :arg_orderid AND u_sc_taskworkmx.procode = :arg_procode AND u_sc_taskwork.scid = :scid And ( u_sc_taskwork.affirmflag = 0 OR :uo_option_taskwork_not_affirm = 1 ); IF sqlca.SQLCode = -1 THEN arg_msg = '行:'+String(arg_printid)+',查询指令单号:'+ls_ordercode+',工序:'+arg_procode+'产品个人计件单开单数失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF SELECT isnull(sum(u_data_wage.zx_qty),0) INTO :ld_collect_qty FROM u_data_collect INNER JOIN u_data_wage ON u_data_collect.collectid = u_data_wage.collectid WHERE u_data_collect.scid = :scid and u_data_collect.orderid = :arg_orderid and u_data_wage.procode = :arg_procode; IF sqlca.SQLCode = -1 THEN arg_msg = '行:'+String(arg_printid)+',查询工序:'+arg_procode+'注塑质检单杂项数量失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF FOR l = 1 TO it_mxbt IF taskworkmx[l].procode = arg_procode AND & taskworkmx[l].orderid = arg_orderid THEN ld_mx_qty = ld_mx_qty + taskworkmx[l].qty END IF NEXT IF uo_option_taskwork_not_affirm = 1 THEN ld_finish_qty = 0 END IF IF arg_qty + ld_finish_qty + ld_othertask_qty + ld_Otherbill_qty + ld_Otherbill_qty_2 + ld_mx_qty + ld_collect_qty > ld_workqty THEN rslt = 0 IF uo_option_if_taskwork_acmpqty = 0 THEN arg_msg = '第 '+String(arg_printid)+' 行,指令单号:'+ls_ordercode+',工序:'+arg_procode+',计件数量不能大于计划生产数,计划工序数:'+String(ld_workqty,'####0.####')+',已完成数:'+String(ld_finish_qty,'####0.####')+',本单已开单:'+String(ld_mx_qty,'####0.####')+',其它单已开单数:'+String(ld_othertask_qty + ld_Otherbill_qty + ld_Otherbill_qty_2 + ld_collect_qty,'####0.####')+',不能开单:'+String(arg_qty,'####0.####') ELSE arg_msg = '第 '+String(arg_printid)+' 行,指令单号:'+ls_ordercode+',工序:'+arg_procode+',计件数量不能大于生产计划已进仓数,已进仓工序数:'+String(ld_workqty,'####0.####')+',已完成数:'+String(ld_finish_qty,'####0.####')+',本单已开单:'+String(ld_mx_qty,'####0.####')+',其它单已开单数:'+String(ld_othertask_qty + ld_Otherbill_qty + ld_Otherbill_qty_2 + ld_collect_qty,'####0.####')+',不能开单:'+String(arg_qty,'####0.####') END IF GOTO ext END IF END IF IF billtype = 0 THEN Decimal ld_workprice //检查限价 IF uo_option_taskwork_price_if_mod = 1 THEN //启用检查限价选项 IF uo_option_taskwork_procode_order = 0 OR arg_orderid = 0 THEN //按工价表限价 SELECT workPrice INTO :ld_workprice FROM u_sc_workprice WHERE mtrlid = :arg_mtrlid AND procode = :arg_procode and wpcode = :arg_wpcode; IF sqlca.SQLCode = 0 THEN IF ld_workprice <> arg_price THEN rslt = 0 arg_msg = '行:'+String(arg_printid)+',工序:'+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 = '行:'+String(arg_printid)+',查询公共工序:'+arg_procode+' 工价失败'+'~n'+sqlca.SQLErrText GOTO ext END IF IF ld_workprice <> arg_price THEN rslt = 0 arg_msg = '行:'+String(arg_printid)+',公共工序:'+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 scid = :scid AND orderid = :arg_orderid AND procode = :arg_procode; IF sqlca.SQLCode = 0 THEN IF ld_workprice <> arg_price THEN rslt = 0 arg_msg = '行:'+String(arg_printid)+',工序:'+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 = '行:'+String(arg_printid)+',查询公共工序:'+arg_procode+' 工价失败'+'~n'+sqlca.SQLErrText GOTO ext END IF IF ld_workprice <> arg_price THEN rslt = 0 arg_msg = '行:'+String(arg_printid)+',公共工序:'+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].orderid = arg_orderid taskworkmx[it_mxbt].ordercode = ls_ordercode taskworkmx[it_mxbt].reason = arg_reason taskworkmx[it_mxbt].unit = arg_unit taskworkmx[it_mxbt].wpcode = arg_wpcode ext: IF rslt = 0 THEN p_clearmx() Return(rslt) end function public function integer auditing (long arg_scid, 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 uo_option_taskwork_not_affirm = -1000 THEN arg_msg = '选项:[080]计件单不使用确认功能,读取初始默认值失败,操作取消!' rslt = 0 GOTO ext END IF IF uo_option_check_noworkprice = -1000 THEN arg_msg = '选项:[240]计件单没有工价不能审核,读取初始默认值失败,操作取消!' rslt = 0 GOTO ext END IF IF uo_option_taskwork_not_affirm = 0 THEN cnt = 0 SELECT count(*) INTO :cnt FROM u_scwg_taskwork_day WHERE u_scwg_taskwork_day.wageid = :arg_wageid AND u_scwg_taskwork_day.wagemth = :arg_wagemth and (u_scwg_taskwork_day.scid = :arg_scid or :arg_scid = -1) AND u_scwg_taskwork_day.affirmflag = 0 AND u_scwg_taskwork_day.billtype = 0 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_day WHERE u_scwg_taskwork_day.wageid = :arg_wageid AND u_scwg_taskwork_day.wagemth = :arg_wagemth and (u_scwg_taskwork_day.scid = :arg_scid or :arg_scid = -1) AND u_scwg_taskwork_day.flag = 0 AND u_scwg_taskwork_day.billtype = 0 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 IF uo_option_check_noworkprice = 1 THEN cnt = 0 SELECT count(*) INTO :cnt FROM u_scwg_taskwork_day INNER JOIN u_scwg_taskwork_day_mx ON u_scwg_taskwork_day.billid = u_scwg_taskwork_day_mx.billid WHERE u_scwg_taskwork_day.wageid = :arg_wageid AND u_scwg_taskwork_day.wagemth = :arg_wagemth and (u_scwg_taskwork_day.scid = :arg_scid or :arg_scid = -1) AND u_scwg_taskwork_day.flag = 0 AND u_scwg_taskwork_day.billtype = 0 AND u_scwg_taskwork_day_mx.price = 0 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 END IF //SELECT count(*) // INTO :cnt // FROM u_scwg_taskwork_day // WHERE u_scwg_taskwork_day.wageid = :arg_wageid // AND u_scwg_taskwork_day.wagemth = :arg_wagemth // AND u_scwg_taskwork_day.flag = 1 // AND u_scwg_taskwork_day.billtype = 0 // 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_17' ds_emp_sumwage.SetTransObject(sqlca) IF ds_emp_sumwage.Retrieve(arg_scid,arg_wagemth,arg_wageid,0) <= 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_day_mx_emp_empid[i],arg_wageid,ls_emp_sumwage,arg_msg,False) = 0 THEN rslt = 0 GOTO ext END IF NEXT IF uo_option_taskwork_not_affirm = 0 THEN UPDATE u_scwg_taskwork_day SET u_scwg_taskwork_day.flag = 1, u_scwg_taskwork_day.auditingrep = :publ_operator, u_scwg_taskwork_day.auditingdate = getdate() WHERE u_scwg_taskwork_day.wageid = :arg_wageid AND u_scwg_taskwork_day.wagemth = :arg_wagemth and (u_scwg_taskwork_day.scid = :arg_scid or :arg_scid = -1) AND u_scwg_taskwork_day.flag = 0 AND u_scwg_taskwork_day.billtype = 0 Using commit_transaction; ELSE UPDATE u_scwg_taskwork_day SET u_scwg_taskwork_day.flag = 1, u_scwg_taskwork_day.auditingrep = :publ_operator, u_scwg_taskwork_day.auditingdate = getdate(), u_scwg_taskwork_day.affirmdate = getdate(), u_scwg_taskwork_day.affirmemp = :publ_operator, u_scwg_taskwork_day.affirmflag = 1 WHERE u_scwg_taskwork_day.wageid = :arg_wageid AND u_scwg_taskwork_day.wagemth = :arg_wagemth and (u_scwg_taskwork_day.scid = :arg_scid or :arg_scid = -1) AND u_scwg_taskwork_day.flag = 0 AND u_scwg_taskwork_day.billtype = 0 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 (long arg_scid, long arg_wageid, long arg_wagemth, ref string arg_msg);Int rslt = 1 Long ll_flagnum,i decimal ls_emp_sumwage DateTime ls_null SetNull(ls_null) long cnt IF uo_option_taskwork_not_affirm = -1000 THEN arg_msg = '选项:[080]计件单不使用确认功能,读取初始默认值失败,操作取消!' rslt = 0 GOTO ext END IF IF f_check_wage_audit(arg_wagemth,arg_scid,arg_msg) = 0 THEN rslt = 0 arg_msg = arg_msg + ',不能撤审' GOTO ext END IF //检查该月份,该工资项目是否已开工资变更单 cnt = 0 SELECT count(*) INTO :cnt FROM u_wage_change WHERE wageid = :arg_wageid AND wagemth = :arg_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 uo_wage u_wage u_wage = CREATE uo_wage SELECT count(*) INTO :ll_flagnum FROM u_scwg_taskwork_day WHERE u_scwg_taskwork_day.wageid = :arg_wageid AND u_scwg_taskwork_day.wagemth = :arg_wagemth and ( u_scwg_taskwork_day.scid = :arg_scid or :arg_scid = -1 ) AND u_scwg_taskwork_day.flag = 1 AND u_scwg_taskwork_day.billtype = 0 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 datastore ds_emp_sumwage ds_emp_sumwage = Create datastore ds_emp_sumwage.DataObject = 'dw_emp_sumwage_17' ds_emp_sumwage.SetTransObject(sqlca) IF ds_emp_sumwage.Retrieve(arg_scid,arg_wagemth,arg_wageid,1) <= 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 = 0 - ds_emp_sumwage.Object.sumwage[i] IF u_wage.f_setwagemxdata(arg_wagemth,ds_emp_sumwage.Object.u_scwg_taskwork_day_mx_emp_empid[i],arg_wageid,ls_emp_sumwage,arg_msg,False) = 0 THEN rslt = 0 GOTO ext END IF NEXT //更新审核标志 IF uo_option_taskwork_not_affirm = 0 THEN UPDATE u_scwg_taskwork_day SET u_scwg_taskwork_day.flag = 0, u_scwg_taskwork_day.Auditingrep = '', u_scwg_taskwork_day.Auditingdate = :ls_null WHERE u_scwg_taskwork_day.wageid = :arg_wageid AND u_scwg_taskwork_day.wagemth = :arg_wagemth and ( u_scwg_taskwork_day.scid = :arg_scid or :arg_scid = -1 ) AND u_scwg_taskwork_day.flag = 1 AND u_scwg_taskwork_day.billtype = 0 USING commit_transaction; ELSE UPDATE u_scwg_taskwork_day SET u_scwg_taskwork_day.flag = 0, u_scwg_taskwork_day.Auditingrep = '', u_scwg_taskwork_day.Auditingdate = :ls_null, u_scwg_taskwork_day.affirmdate = :ls_null, u_scwg_taskwork_day.affirmemp = '', u_scwg_taskwork_day.affirmflag = 0 WHERE u_scwg_taskwork_day.wageid = :arg_wageid AND u_scwg_taskwork_day.wagemth = :arg_wagemth and ( u_scwg_taskwork_day.scid = :arg_scid or :arg_scid = -1 ) AND u_scwg_taskwork_day.flag = 1 AND u_scwg_taskwork_day.billtype = 0 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 auditing_1 (long arg_scid, 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 uo_option_taskwork_not_affirm = -1000 THEN arg_msg = '选项:[080]计件单不使用确认功能,读取初始默认值失败,操作取消!' rslt = 0 GOTO ext END IF IF uo_option_check_noworkprice = -1000 THEN arg_msg = '选项:[240]计件单没有工价不能审核,读取初始默认值失败,操作取消!' rslt = 0 GOTO ext END IF IF uo_option_taskwork_not_affirm = 0 THEN cnt = 0 SELECT count(*) INTO :cnt FROM u_scwg_taskwork_day WHERE u_scwg_taskwork_day.wageid = :arg_wageid AND u_scwg_taskwork_day.wagemth = :arg_wagemth and ( u_scwg_taskwork_day.scid = :arg_scid or :arg_scid = -1 ) AND u_scwg_taskwork_day.affirmflag = 0 AND u_scwg_taskwork_day.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_day WHERE u_scwg_taskwork_day.wageid = :arg_wageid AND u_scwg_taskwork_day.wagemth = :arg_wagemth and ( u_scwg_taskwork_day.scid = :arg_scid or :arg_scid = -1 ) AND u_scwg_taskwork_day.flag = 0 AND u_scwg_taskwork_day.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 IF uo_option_check_noworkprice = 1 THEN cnt = 0 SELECT count(*) INTO :cnt FROM u_scwg_taskwork_day INNER JOIN u_scwg_taskwork_day_mx ON u_scwg_taskwork_day.billid = u_scwg_taskwork_day_mx.billid WHERE u_scwg_taskwork_day.wageid = :arg_wageid AND u_scwg_taskwork_day.wagemth = :arg_wagemth AND u_scwg_taskwork_day.flag = 0 AND u_scwg_taskwork_day.billtype = 1 AND u_scwg_taskwork_day_mx.price = 0 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 END IF //SELECT count(*) // INTO :cnt // FROM u_scwg_taskwork_day // WHERE u_scwg_taskwork_day.wageid = :arg_wageid // AND u_scwg_taskwork_day.wagemth = :arg_wagemth // AND u_scwg_taskwork_day.flag = 1 // AND u_scwg_taskwork_day.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_19' ds_emp_sumwage.SetTransObject(sqlca) IF ds_emp_sumwage.Retrieve(arg_scid,arg_wagemth,arg_wageid,0) <= 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_day_mx_emp_empid[i],arg_wageid,ls_emp_sumwage,arg_msg,FALSE) = 0 THEN rslt = 0 GOTO ext END IF NEXT IF uo_option_taskwork_not_affirm = 0 THEN UPDATE u_scwg_taskwork_day SET u_scwg_taskwork_day.flag = 1, u_scwg_taskwork_day.auditingrep = :publ_operator, u_scwg_taskwork_day.auditingdate = getdate() WHERE u_scwg_taskwork_day.wageid = :arg_wageid AND u_scwg_taskwork_day.wagemth = :arg_wagemth and ( u_scwg_taskwork_day.scid = :arg_scid or :arg_scid = -1 ) AND u_scwg_taskwork_day.flag = 0 AND u_scwg_taskwork_day.billtype = 1 USING commit_transaction; ELSE UPDATE u_scwg_taskwork_day SET u_scwg_taskwork_day.flag = 1, u_scwg_taskwork_day.auditingrep = :publ_operator, u_scwg_taskwork_day.auditingdate = getdate(), u_scwg_taskwork_day.affirmdate = getdate(), u_scwg_taskwork_day.affirmemp = :publ_operator, u_scwg_taskwork_day.affirmflag = 1 WHERE u_scwg_taskwork_day.wageid = :arg_wageid AND u_scwg_taskwork_day.wagemth = :arg_wagemth and ( u_scwg_taskwork_day.scid = :arg_scid or :arg_scid = -1 ) AND u_scwg_taskwork_day.flag = 0 AND u_scwg_taskwork_day.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_scid, long arg_wageid, long arg_wagemth, ref string arg_msg);Int rslt = 1 Long ll_flagnum,i decimal ls_emp_sumwage DateTime ls_null SetNull(ls_null) Long cnt IF uo_option_taskwork_not_affirm = -1000 THEN arg_msg = '选项:[080]计件单不使用确认功能,读取初始默认值失败,操作取消!' rslt = 0 GOTO ext END IF IF f_check_wage_audit(arg_wagemth,arg_scid,arg_msg) = 0 THEN rslt = 0 arg_msg = arg_msg + ',不能撤审' GOTO ext END IF //检查该月份,该工资项目是否已开工资变更单 cnt = 0 SELECT count(*) INTO :cnt FROM u_wage_change WHERE wageid = :arg_wageid And wagemth = :arg_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 uo_wage u_wage u_wage = Create uo_wage SELECT count(*) INTO :ll_flagnum FROM u_scwg_taskwork_day WHERE u_scwg_taskwork_day.wageid = :arg_wageid AND u_scwg_taskwork_day.wagemth = :arg_wagemth AND (u_scwg_taskwork_day.scid = :arg_scid or :arg_scid) AND u_scwg_taskwork_day.flag = 1 AND u_scwg_taskwork_day.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 datastore ds_emp_sumwage ds_emp_sumwage = CREATE datastore ds_emp_sumwage.DataObject = 'dw_emp_sumwage_19' ds_emp_sumwage.SetTransObject(sqlca) IF ds_emp_sumwage.Retrieve(arg_scid,arg_wagemth,arg_wageid,1) <= 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 = 0 - ds_emp_sumwage.Object.sumwage[i] IF u_wage.f_setwagemxdata(arg_wagemth,ds_emp_sumwage.Object.u_scwg_taskwork_day_mx_emp_empid[i],arg_wageid,ls_emp_sumwage,arg_msg,FALSE) = 0 THEN rslt = 0 GOTO ext END IF NEXT //更新审核标志 IF uo_option_taskwork_not_affirm = 0 THEN UPDATE u_scwg_taskwork_day SET u_scwg_taskwork_day.flag = 0, u_scwg_taskwork_day.Auditingrep = '', u_scwg_taskwork_day.Auditingdate = :ls_null WHERE u_scwg_taskwork_day.wageid = :arg_wageid AND u_scwg_taskwork_day.wagemth = :arg_wagemth AND (u_scwg_taskwork_day.scid = :arg_scid or :arg_scid) AND u_scwg_taskwork_day.flag = 1 AND u_scwg_taskwork_day.billtype = 1 Using commit_transaction; ELSE UPDATE u_scwg_taskwork_day SET u_scwg_taskwork_day.flag = 0, u_scwg_taskwork_day.Auditingrep = '', u_scwg_taskwork_day.Auditingdate = :ls_null, u_scwg_taskwork_day.affirmdate = :ls_null, u_scwg_taskwork_day.affirmemp = '', u_scwg_taskwork_day.affirmflag = 0 WHERE u_scwg_taskwork_day.wageid = :arg_wageid AND u_scwg_taskwork_day.wagemth = :arg_wagemth AND (u_scwg_taskwork_day.scid = :arg_scid or :arg_scid) AND u_scwg_taskwork_day.flag = 1 AND u_scwg_taskwork_day.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 uf_update_emp (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1 Long cnt = 0,i,j DateTime server_dt Long ls_newid int li_flag IF IsNull(wageid) THEN wageid = 0 IF IsNull(relempstr) THEN relempstr = '' IF arg_billid <= 0 THEN rslt = 0 arg_msg = '错误的ID' GOTO ext END IF IF it_mxbt_emp = 0 THEN // rslt = 0 arg_msg = "没有计件员工明细" GOTO ext END IF //检查审核 SELECT u_scwg_taskwork_day.flag INTO :li_flag FROM u_scwg_taskwork_day Where u_scwg_taskwork_day.billid = :arg_billid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询单据信息失败,'+commit_transaction.SQLErrText GOTO ext END IF IF li_flag = 1 THEN arg_msg = '已经工资审' rslt = 0 GOTO ext END IF UPDATE u_scwg_taskwork_day SET modemp = :publ_operator, moddate = GETDATE(), relempstr = :relempstr WHERE billid = :arg_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_day_mx_emp Where billid = :arg_billid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除旧有员工明细操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF FOR j = 1 To it_mxbt_emp INSERT INTO u_scwg_taskwork_day_mx_emp ( billid, printid, empid, workhours, workhours2, workhours3, wageamt, mxdscrp, ifhelp, prwageamt) VALUES ( :arg_billid, :empmx[j].printid, :empmx[j].empid, :empmx[j].workhours, :empmx[j].workhours2, :empmx[j].workhours3, :empmx[j].wageamt, :empmx[j].mxdscrp, :empmx[j].ifhelp, :empmx[j].prwageamt) Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致插入员工明细操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF NEXT 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 updateempbegin (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 on uo_scwg_taskwork_day.create call super::create TriggerEvent( this, "constructor" ) end on on uo_scwg_taskwork_day.destroy TriggerEvent( this, "destructor" ) call super::destroy end on event constructor;String arg_msg String str_optionvalue str_optionvalue = '' f_get_sys_option_value('080',str_optionvalue,arg_msg) uo_option_taskwork_not_affirm = Long(str_optionvalue) str_optionvalue = '' f_get_sys_option_value('105',str_optionvalue,arg_msg) uo_option_taskwork_day_noorder = Long(str_optionvalue) str_optionvalue = '' f_get_sys_option_value('064',str_optionvalue,arg_msg) uo_option_taskwork_procode_order = Long(str_optionvalue) str_optionvalue = '' f_get_sys_option_value('081',str_optionvalue,arg_msg) uo_option_taskwork_price_if_mod = Long(str_optionvalue) str_optionvalue = '' f_get_sys_option_value('202',str_optionvalue,arg_msg) uo_option_if_taskwork_acmpqty = Long(str_optionvalue) str_optionvalue = '' f_get_sys_option_value('240',str_optionvalue,arg_msg) uo_option_check_noworkprice = Long(str_optionvalue) end event