$PBExportHeader$uo_data_collect.sru forward global type uo_data_collect from nonvisualobject end type type s_data_collectmx from structure within uo_data_collect end type type s_data_wage from structure within uo_data_collect end type end forward type s_data_collectmx from structure long collectid decimal { 5 } qty datetime collectdate string inspector string dscrp long printid end type type s_data_wage from structure long collectid long orderid long machineid string teamorder long empid string empcode string procode decimal { 5 } cp_qty decimal { 5 } workprice decimal { 5 } awardprice decimal { 5 } stantby_price decimal { 5 } bcp_qty decimal { 5 } zx_qty decimal { 5 } zx_price string dscrp string empname string proname long printid decimal { 5 } cp_wage decimal { 5 } bcp_wage decimal { 5 } zx_wage decimal { 5 } price_add decimal { 5 } qty_add string procode_add string proname_add end type global type uo_data_collect from nonvisualobject end type global uo_data_collect uo_data_collect type variables Long collectid Long orderid Long machineid String teamorder String collectcode String color_st String look_st String size_st String conjugation_st String annex1_st String annex2_st String color_way String look_way String size_way String conjugation_way String annex1_way String annex2_way Decimal period Decimal Weight Decimal openqty Decimal modelqty Decimal semi_discount Decimal stantby_time Decimal worktime Decimal ammeter_start Decimal ammeter_end Int storageid Decimal qty String dscrp String collector DateTime cillecttime Long flag Long lockflag String operator DateTime opdate Long wageid Int iffinish Long taskid Long wageid_other Decimal netweight Long squadid Decimal squadtime Long storageid_bcp Decimal qty_bcp Long autoflag Decimal yzqty String helpemp Decimal wastetime Decimal butie String addemp long scid int uo_option_inware_mtrlcuscode int uo_option_taskplancode PRIVATE: s_data_collectmx collectmx[] s_data_wage wagemx[] Long it_mxbt1 = 0 Long it_mxbt2 = 0 Boolean it_newbegin = FALSE Boolean it_updatebegin = FALSE uo_taskwork uo_taskwork_dq uo_abnormity uo_abnormity_dq end variables forward prototypes public function integer p_reset () public function integer p_clearmx () public function integer newbegin () public function integer p_getinfo (long arg_collectid, ref string arg_msg) public function integer getinfo (long arg_collectid, ref string arg_msg) public function integer updatebegin (long arg_collectid, ref string arg_msg) public function integer acceptmx (decimal arg_qty, datetime arg_collectdate, string arg_inspector, string arg_dscrp, long arg_printid, ref string arg_msg) public function integer save (string arg_operator, ref string arg_msg, boolean arg_ifcommit) public function integer del (long arg_collectid, ref string arg_msg, boolean arg_ifcommit) public function integer audit (long arg_collectid, string arg_emp, ref string arg_msg, boolean arg_ifcommit) public function integer caudit (long arg_collectid, ref string arg_msg, boolean arg_ifcommit) public function integer gzaudit (long arg_collectid, string arg_emp, ref string arg_msg, boolean arg_ifcommit) public function integer cgzaudit (long arg_collectid, ref string arg_msg, boolean arg_ifcommit) public function integer p_create_inware (ref string arg_msg, boolean arg_ifcommit) public function integer uof_find_cust (long arg_scid, long arg_orderid, ref long arg_cusid, ref string arg_plancode, ref string arg_mtrlcuscode, ref string arg_msg) public function integer p_del_inware (ref string arg_msg, boolean arg_ifcommit) public function integer acceptmx_wage (long arg_empid, string arg_empcode, string arg_empname, string arg_procode, string arg_proname, decimal arg_cp_qty, decimal arg_workprice, decimal arg_awardprice, decimal arg_stantby_price, decimal arg_bcp_qty, decimal arg_zx_qty, decimal arg_zx_price, string arg_dscrp, long arg_printid, string arg_procode_add, string arg_proname_add, decimal arg_price_add, decimal arg_qty_add, ref string arg_msg) end prototypes public function integer p_reset ();collectid = 0 orderid = 0 machineid= 0 teamorder = '' collectcode = '' color_st = '' look_st = '' size_st = '' conjugation_st = '' annex1_st = '' annex2_st = '' color_way = '' look_way = '' size_way = '' conjugation_way = '' annex1_way = '' annex2_way = '' period = 0 Weight = 0 openqty = 0 modelqty = 0 semi_discount = 0 stantby_time = 0 worktime = 0 ammeter_start = 0 ammeter_end = 0 storageid = 0 qty = 0 dscrp = '' collector = '' flag = 0 lockflag = 0 wageid = 0 iffinish = 0 taskid = 0 wageid_other = 0 storageid_bcp = 0 qty_bcp = 0 autoflag = 0 yzqty = 0 helpemp = '' wastetime = 0 butie = 0 addemp = '' scid = 0 it_newbegin=FALSE it_updatebegin=FALSE //清除明细 P_CLEARMX() RETURN 1 end function public function integer p_clearmx ();it_mxbt1 = 0 it_mxbt2 = 0 return 1 end function public function integer newbegin ();p_reset() it_newbegin=TRUE it_updatebegin=FALSE return 1 end function public function integer p_getinfo (long arg_collectid, ref string arg_msg);Int rslt = 1 SELECT collectid, orderid, machineid, teamorder , collectcode, color_st , look_st , size_st , conjugation_st , annex1_st , annex2_st , color_way , look_way , size_way , conjugation_way , annex1_way , annex2_way , period , Weight , openqty , modelqty , semi_discount , stantby_time , worktime , ammeter_start , ammeter_end , storageid , qty , dscrp , collector , flag , lockflag, wageid, iffinish, taskid, wageid_other, storageid_bcp, qty_bcp, autoflag, yzqty, helpemp , wastetime , butie , addemp, opdate, scid INTO :collectid, :orderid, :machineid, :teamorder, :collectcode, :color_st , :look_st , :size_st , :conjugation_st , :annex1_st , :annex2_st , :color_way , :look_way , :size_way , :conjugation_way , :annex1_way , :annex2_way , :period , :Weight , :openqty , :modelqty , :semi_discount , :stantby_time , :worktime , :ammeter_start , :ammeter_end , :storageid , :qty , :dscrp , :collector , :flag , :lockflag, :wageid, :iffinish, :taskid, :wageid_other, :storageid_bcp, :qty_bcp, :autoflag, :yzqty, :helpemp , :wastetime , :butie , :addemp, :opdate, :scid FROM u_data_collect Where u_data_collect.collectid = :arg_collectid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询质检单内容失败(错误单据唯一码)' +sqlca.SQLErrText GOTO ext END IF collectid = arg_collectid ext: RETURN rslt end function public function integer getinfo (long arg_collectid, ref string arg_msg);Int rslt = 1 ,i = 1 ,no_mxcheck = 0 , j = 1 IF arg_collectid <= 0 THEN rslt = 0 arg_msg = '错误质检单唯一码' GOTO ext END IF IF p_getinfo(arg_collectid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF DECLARE cur_collectmx CURSOR FOR SELECT u_data_collectmx.collectid, u_data_collectmx.qty, u_data_collectmx.collectdate, u_data_collectmx.inspector, u_data_collectmx.dscrp, u_data_collectmx.printid FROM u_data_collectmx Where u_data_collectmx.collectid = :arg_collectid; OPEN cur_collectmx; FETCH cur_collectmx INTO :collectmx[i].collectid,:collectmx[i].qty,:collectmx[i].collectdate, :collectmx[i].inspector,:collectmx[i].dscrp,:collectmx[i].printid; DO WHILE sqlca.SQLCode = 0 i++ FETCH cur_collectmx INTO :collectmx[i].collectid,:collectmx[i].qty,:collectmx[i].collectdate, :collectmx[i].inspector,:collectmx[i].dscrp,:collectmx[i].printid; LOOP CLOSE cur_collectmx; SELECT count(*) INTO :no_mxcheck FROM u_data_collectmx Where u_data_collectmx.collectid = :arg_collectid; IF sqlca.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_mxbt1 = i - 1 DECLARE cur_wagemx CURSOR FOR SELECT u_data_wage.collectid, u_data_wage.empid, u_data_wage.empcode, u_data_wage.procode, u_data_wage.cp_qty, u_data_wage.workprice, u_data_wage.awardprice, u_data_wage.stantby_price, u_data_wage.bcp_qty, u_data_wage.zx_qty, u_data_wage.zx_price, u_data_wage.dscrp, u_data_wage.empname, u_data_wage.proname, u_data_wage.printid, u_data_wage.cp_wage, u_data_wage.bcp_wage, u_data_wage.zx_wage FROM u_data_wage Where u_data_wage.collectid = :arg_collectid; OPEN cur_wagemx; FETCH cur_wagemx INTO :wagemx[j].collectid,:wagemx[j].empid,:wagemx[j].empcode,:wagemx[j].procode, :wagemx[j].cp_qty,:wagemx[j].workprice,:wagemx[j].awardprice,:wagemx[j].stantby_price, :wagemx[j].bcp_qty,:wagemx[j].zx_qty,:wagemx[j].zx_price,:wagemx[j].dscrp,:wagemx[j].empname, :wagemx[j].proname,:wagemx[j].printid,:wagemx[j].cp_wage,:wagemx[j].bcp_wage,:wagemx[j].zx_wage; DO WHILE sqlca.SQLCode = 0 j++ FETCH cur_wagemx INTO :wagemx[j].collectid,:wagemx[j].empid,:wagemx[j].empcode,:wagemx[j].procode, :wagemx[j].cp_qty,:wagemx[j].workprice,:wagemx[j].awardprice,:wagemx[j].stantby_price, :wagemx[j].bcp_qty,:wagemx[j].zx_qty,:wagemx[j].zx_price,:wagemx[j].dscrp,:wagemx[j].empname, :wagemx[j].proname,:wagemx[j].printid,:wagemx[j].cp_wage,:wagemx[j].bcp_wage,:wagemx[j].zx_wage; LOOP CLOSE cur_wagemx; SELECT count(*) INTO :no_mxcheck FROM u_data_wage Where u_data_wage.collectid = :arg_collectid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,员工生产信息明细" GOTO ext END IF IF j <> (no_mxcheck + 1) THEN rslt = 0 arg_msg = '查询操作失败,员工生产信息明细' GOTO ext END IF it_mxbt2 = j - 1 it_newbegin = FALSE it_updatebegin = FALSE ext: IF rslt = 0 THEN p_reset() RETURN rslt end function public function integer updatebegin (long arg_collectid, ref string arg_msg);Long rslt = 1 IF arg_collectid <= 0 THEN rslt = 0 arg_msg = '错误质检单唯一码' GOTO ext END IF IF p_getinfo(arg_collectid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF flag = 2 THEN rslt = 0 arg_msg = '已经处于审核完毕,不能修改' GOTO ext END IF it_newbegin = FALSE it_updatebegin = TRUE p_clearmx() ext: IF rslt = 0 THEN p_reset() RETURN rslt end function public function integer acceptmx (decimal arg_qty, datetime arg_collectdate, string arg_inspector, string arg_dscrp, long arg_printid, ref string arg_msg);Long rslt = 1 IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN rslt = 0 arG_MSG = "非编辑状态不可以使用,操作取消" GOTO ext END IF IF IsNull(arg_qty) THEN arg_qty = 0 IF IsNull(arg_inspector) THEN arg_inspector = '' IF IsNull(arg_dscrp) THEN arg_dscrp = '' IF IsNull(arg_printid) THEN arg_printid = 0 IF arg_qty = 0 THEN rslt = 1 GOTO ext END IF IF arg_inspector = '' THEN rslt = 0 arG_MSG = '必须填写质检员姓名' GOTO ext END IF it_mxbt1++ collectmx[it_mxbt1].qty = arg_qty collectmx[it_mxbt1].collectdate = arg_collectdate collectmx[it_mxbt1].inspector = arg_inspector collectmx[it_mxbt1].dscrp = arg_dscrp collectmx[it_mxbt1].printid = arg_printid ext: IF rslt = 0 THEN p_clearmx() Return(rslt) end function public function integer save (string arg_operator, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 ,cnt,i,j Long ll_newid DateTime server_datetime IF IsNull(orderid) THEN orderid = 0 IF IsNull(machineid) THEN machineid = 0 IF IsNull(teamorder) THEN teamorder = '' IF IsNull(color_st) THEN color_st = '' IF IsNull(look_st) THEN look_st = '' IF IsNull(size_st) THEN size_st = '' IF IsNull(conjugation_st) THEN conjugation_st = '' IF IsNull(annex1_st) THEN annex1_st = '' IF IsNull(annex2_st) THEN annex2_st = '' IF IsNull(color_way) THEN color_way = '' IF IsNull(look_way) THEN look_way = '' IF IsNull(size_way) THEN size_way = '' IF IsNull(conjugation_way) THEN conjugation_way = '' IF IsNull(annex1_way) THEN annex1_way = '' IF IsNull(annex2_way) THEN annex2_way = '' IF IsNull(period) THEN period = 0 IF IsNull(Weight) THEN Weight = 0 IF IsNull(openqty) THEN openqty = 0 IF IsNull(modelqty) THEN modelqty = 0 IF IsNull(semi_discount) THEN semi_discount = 0 IF IsNull(stantby_time) THEN stantby_time = 0 IF IsNull(worktime) THEN worktime = 0 IF IsNull(ammeter_start) THEN ammeter_start = 0 IF IsNull(ammeter_end) THEN ammeter_end = 0 IF IsNull(storageid) THEN storageid = 0 IF IsNull(qty) THEN qty = 0 IF IsNull(dscrp) THEN dscrp = '' IF IsNull(collector) THEN collector = '' IF IsNull(flag) THEN flag = 0 IF IsNull(lockflag) THEN lockflag = 0 IF IsNull(iffinish) THEN iffinish = 0 IF IsNull(taskid) THEN taskid = 0 IF IsNull(wageid_other) THEN wageid_other = 0 IF IsNull(netweight) THEN netweight = 0 IF IsNull(squadid) THEN squadid = 0 IF IsNull(squadtime) THEN squadtime = 0 IF IsNull(storageid_bcp) THEN storageid_bcp = 0 IF IsNull(qty_bcp) THEN qty_bcp = 0 IF IsNull(autoflag ) THEN autoflag = 0 IF IsNull(yzqty ) THEN yzqty = 0 IF IsNull(helpemp ) THEN helpemp = '' IF IsNull(wastetime ) THEN wastetime = 0 IF IsNull(butie ) THEN butie = 0 IF IsNull(addemp) THEN addemp = '' operator = arg_operator IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN rslt = 0 arg_msg = "非编辑状态不可以提交" GOTO ext END IF IF it_newbegin = TRUE THEN cnt = 0 SELECT count(*) INTO :cnt FROM u_data_collect WHERE taskid = :taskid AND flag = 0 ; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询该生产任务是否已有未审核质检单失败!" GOTO ext END IF IF cnt > 0 THEN rslt = 0 arg_msg = "该生产任务已有未审核的质检单,不能再新建" GOTO ext END IF END IF IF lockflag = 1 THEN IF flag = 1 THEN IF Trim(collector) = '' THEN rslt = 0 arg_msg = "请输入采集者" GOTO ext END IF END IF END IF cnt = 0 SELECT count(*) INTO :cnt FROM u_sc_task Where taskid = :taskid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询生产计划排程队列失败' rslt = 0 GOTO ext END IF IF cnt = 0 THEN arg_msg = '生产计划排程队列不存在' rslt = 0 GOTO ext END IF SELECT Top 1 getdate() INTO :server_datetime FROM u_user; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,日期 " GOTO ext END IF IF lockflag = 0 THEN IF it_mxbt1 = 0 THEN rslt = 0 arg_msg = "没有正确质检明细内容" GOTO ext END IF ELSE IF flag = 1 THEN IF it_mxbt2 = 0 THEN rslt = 0 arg_msg = "没有正确的员工生产信息" GOTO ext END IF END IF IF storageid <= 0 THEN rslt = 0 arg_msg = "错误的成品仓库唯一码" GOTO ext END IF if qty = 0 and qty_bcp = 0 then rslt = 0 arg_msg = '请填写正确的进仓数量' goto ext end if IF qty_bcp > 0 AND storageid_bcp = 0 THEN rslt = 0 arg_msg = "错误的半成品仓库唯一码" GOTO ext END IF // IF wageid <= 0 THEN // rslt = 0 // arg_msg = "必须选择成品工资项目" // GOTO ext // END IF IF flag = 1 THEN IF wageid_other <= 0 THEN rslt = 0 arg_msg = "必须选择工资项目" GOTO ext END IF // IF netweight <= 0 THEN // rslt = 0 // arg_msg = '不合理的产品净重' // GOTO ext // END IF IF squadid = 0 THEN rslt = 0 arg_msg = '请选择班次类型' GOTO ext END IF IF squadtime <= 0 THEN rslt = 0 arg_msg = '错误的当班时间' GOTO ext END IF END IF END IF cnt = 0 SELECT count(*) INTO :cnt FROM u_user Where username = :operator ; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,操作员!" GOTO ext END IF IF cnt = 0 THEN rslt = 0 arg_msg = "操作员姓名未登记或已取消!" GOTO ext END IF opdate = server_datetime //填写单据建立时间(最近修改时间) IF collectid = 0 THEN ll_newid = f_sys_scidentity(0,"u_data_collect","collectid",arg_msg,TRUE,id_sqlca) IF ll_newid <= 0 THEN rslt = 0 GOTO ext END IF collectcode = getid(0,'ZJ',Date(server_datetime),FALSE,sqlca) INSERT INTO u_data_collect (collectid , collectcode, orderid , machineid , teamorder, color_st, look_st , size_st , conjugation_st, annex1_st, annex2_st , color_way, look_way , size_way , conjugation_way , annex1_way , annex2_way , period , Weight , openqty , modelqty , semi_discount , stantby_time , worktime , ammeter_start , ammeter_end , storageid , qty , dscrp , collector , flag, lockflag, wageid, opemp, opdate, iffinish, taskid, netweight, squadid, squadtime, wageid_other, storageid_bcp, qty_bcp, autoflag , yzqty , helpemp , wastetime , butie , addemp) VALUES(:ll_newid, :collectcode, :orderid, :machineid, :teamorder, :color_st, :look_st , :size_st , :conjugation_st, :annex1_st, :annex2_st , :color_way, :look_way , :size_way , :conjugation_way , :annex1_way , :annex2_way , :period , :Weight , :openqty , :modelqty , :semi_discount , :stantby_time , :worktime , :ammeter_start , :ammeter_end , :storageid , :qty , :dscrp , :collector , :flag, :lockflag, :wageid, :operator, :opdate, :iffinish, :taskid, :netweight, :squadid, :squadtime, :wageid_other, :storageid_bcp, :qty_bcp, :autoflag , :yzqty , :helpemp , :wastetime , :butie , :addemp); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致插入质检表操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF collectid = ll_newid FOR i = 1 TO it_mxbt1 INSERT INTO u_data_collectmx (collectid, qty, collectdate, inspector, dscrp, printid) VALUES(:ll_newid, :collectmx[i].qty, :collectmx[i].collectdate, :collectmx[i].inspector, :collectmx[i].dscrp, :collectmx[i].printid); IF sqlca.SQLCode <> 0 THEN collectid = 0 rslt = 0 arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF NEXT UPDATE u_sc_task SET lasttime = getdate() Where taskid = :taskid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '因网络或其它原因导致更新机台任务最近质检时间失败'+"~n"+sqlca.SQLErrText GOTO ext END IF IF lockflag = 1 THEN FOR j = 1 TO it_mxbt2 INSERT INTO u_data_wage (collectid, empid, empcode, empname, procode, proname, cp_qty, workprice, awardprice, stantby_price, bcp_qty, zx_qty, zx_price, dscrp, printid, cp_wage, bcp_wage, zx_wage, procode_add, proname_add, price_add, qty_add) VALUES(:ll_newid, :wagemx[j].empid, :wagemx[j].empcode, :wagemx[j].empname, :wagemx[j].procode, :wagemx[j].proname, :wagemx[j].cp_qty, :wagemx[j].workprice, :wagemx[j].awardprice, :wagemx[j].stantby_price, :wagemx[j].bcp_qty, :wagemx[j].zx_qty, :wagemx[j].zx_price, :wagemx[j].dscrp, :wagemx[j].printid, :wagemx[j].cp_wage, :wagemx[j].bcp_wage, :wagemx[j].zx_wage, :wagemx[j].procode_add, :wagemx[j].proname_add, :wagemx[j].price_add, :wagemx[j].qty_add); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致插入员工生产信息操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF NEXT END IF ELSE UPDATE u_data_collect SET orderid = :orderid, machineid = :machineid, teamorder = :teamorder, color_st = :color_st, look_st = :look_st, size_st = :size_st, conjugation_st = :conjugation_st, annex1_st = :annex1_st, annex2_st = :annex2_st, color_way = :color_way, look_way = :look_way, size_way = :size_way, conjugation_way = :conjugation_way, annex1_way = :annex1_way, annex2_way = :annex2_way, period = :period, weight = :Weight, openqty = :openqty, modelqty = :modelqty, semi_discount = :semi_discount, stantby_time = :stantby_time, worktime = :worktime, ammeter_start = :ammeter_start, ammeter_end = :ammeter_end , storageid = :storageid , qty = :qty , dscrp = :dscrp , collector = :collector, lockflag = :lockflag, wageid = :wageid, modemp = :operator, moddate = :opdate, iffinish = :iffinish, taskid = :taskid, wageid_other = :wageid_other, netweight = :netweight, squadid = :squadid, squadtime = :squadtime, storageid_bcp = :storageid_bcp, qty_bcp = :qty_bcp, autoflag = :autoflag , yzqty = :yzqty , helpemp = :helpemp , wastetime = :wastetime , butie = :butie , addemp = :addemp Where u_data_collect.collectid = :collectid ; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致更新质检单操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF DELETE FROM u_data_collectmx Where u_data_collectmx.collectid = :collectid ; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除旧有明细操作失败" GOTO ext END IF UPDATE u_sc_task SET lasttime = getdate() Where taskid = :taskid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '因网络或其它原因导致更新机台任务最近质检时间失败'+"~n"+sqlca.SQLErrText GOTO ext END IF FOR i = 1 TO it_mxbt1 INSERT INTO u_data_collectmx (collectid, qty, collectdate, inspector, dscrp, printid) VALUES(:collectid, :collectmx[i].qty, :collectmx[i].collectdate, :collectmx[i].inspector, :collectmx[i].dscrp, :collectmx[i].printid); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF NEXT IF lockflag = 1 THEN DELETE FROM u_data_wage Where u_data_wage.collectid = :collectid ; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除旧有员工生产信息失败" GOTO ext END IF FOR j = 1 TO it_mxbt2 INSERT INTO u_data_wage (collectid, empid, empcode, empname, procode, proname, cp_qty, workprice, awardprice, stantby_price, bcp_qty, zx_qty, zx_price, dscrp, printid, cp_wage, bcp_wage, zx_wage, procode_add, proname_add, price_add, qty_add) VALUES(:collectid, :wagemx[j].empid, :wagemx[j].empcode, :wagemx[j].empname, :wagemx[j].procode, :wagemx[j].proname, :wagemx[j].cp_qty, :wagemx[j].workprice, :wagemx[j].awardprice, :wagemx[j].stantby_price, :wagemx[j].bcp_qty, :wagemx[j].zx_qty, :wagemx[j].zx_price, :wagemx[j].dscrp, :wagemx[j].printid, :wagemx[j].cp_wage, :wagemx[j].bcp_wage, :wagemx[j].zx_wage, :wagemx[j].procode_add, :wagemx[j].proname_add, :wagemx[j].price_add, :wagemx[j].qty_add); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致插入员工生产信息操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF NEXT END IF END IF it_newbegin = FALSE it_updatebegin = FALSE ext: IF rslt = 0 THEN ROLLBACK ; p_clearmx() ELSEIF arg_ifcommit AND rslt = 1 THEN COMMIT ; END IF RETURN rslt end function public function integer del (long arg_collectid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 IF arg_collectid <= 0 THEN rslt = 0 arg_msg = "错误质检单唯一码" GOTO ext END IF IF p_getinfo(arg_collectid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF flag <> 0 THEN rslt = 0 arg_msg = '质检单已经审核,不能删除' GOTO ext END IF DELETE FROM u_data_collect Where u_data_collect.collectid = :arg_collectid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除质检单操作失败" ROLLBACK; GOTO ext END IF DELETE FROM u_data_collectmx Where u_data_collectmx.collectid = :arg_collectid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除质检单明细内容失败" GOTO ext END IF DELETE FROM u_data_wage Where u_data_wage.collectid = :arg_collectid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除员工生产信息内容失败" GOTO ext END IF DateTime null_dt SetNull(null_dt) UPDATE u_sc_task SET lasttime = :null_dt Where taskid = :taskid ; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "清除机台任务最近质检时间失败" GOTO ext END IF it_newbegin = FALSE it_updatebegin = FALSE IF arg_ifcommit AND rslt = 1 THEN COMMIT; END IF ext: p_reset() Return (rslt) end function public function integer audit (long arg_collectid, string arg_emp, ref string arg_msg, boolean arg_ifcommit);//仓审 Int rslt = 1,cnt = 0 Long ll_mtrlid String ls_mtrlcode,ls_unit DateTime server_dt Decimal ld_orderqty Decimal ld_planprice IF arg_collectid <= 0 THEN rslt = 0 ARG_MSG = '错误质检单唯一码' GOTO ext END IF SELECT Top 1 getdate() INTO :server_dt FROM u_user ; //取得系统时间,借用操作员表 IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "查询操作失败,日期 " GOTO ext END IF IF getinfo(arg_collectid,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF flag = 2 THEN rslt = 0 ARG_MSG = '质检单已经完成审核,操作取消' GOTO ext ELSEIF flag = 1 THEN rslt = 0 ARG_MSG = '质检单已经仓审,操作取消' GOTO ext END IF cnt = 0 SELECT count(*) INTO :cnt FROM u_user Where username = :arg_emp ; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "查询操作失败,操作员!" GOTO ext END IF IF cnt = 0 THEN rslt = 0 ARG_MSG = "操作员姓名未登记或已取消!" GOTO ext END IF UPDATE u_data_collect SET flag = 1 , auditrep = :arg_emp, auditdate = getdate() Where collectid = :arg_collectid ; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "因网络或其它原因导致质检单审核操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF UPDATE u_sc_task SET fqty = fqty + :qty + :qty_bcp Where taskid = :taskid; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "因网络或其它原因导致更新机台生产数操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF //==================================================================== // 更新机台排程状态 //==================================================================== Decimal ld_queueqty , ld_fqty Long ll_queue SELECT qty, fqty, queue INTO :ld_queueqty, :ld_fqty, :ll_queue FROM u_sc_task Where taskid = :taskid; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = '查询机台排程信息失败' GOTO ext END IF //IF ld_queueqty <= ld_fqty THEN IF iffinish = 1 THEN Long ll_status_tmp SELECT flag INTO :ll_status_tmp FROM u_sc_task Where taskid = :taskid; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = '查询机台排程信息失败' GOTO ext END IF IF ll_status_tmp = 1 THEN UPDATE u_sc_task SET flag = 4, queue = queue - 1, finishtime = getdate() Where taskid = :taskid; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "因网络或其它原因导致更新机台状态操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF cnt = 0 SELECT count(*) INTO :cnt FROM u_sc_task WHERE workgroupid = :machineid AND flag = 1 AND queue = :ll_queue AND Kind = 1 ; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = '查询机台排程信息失败' GOTO ext END IF IF cnt = 0 THEN // 同次序没有未完成的任务,则开启下一个任务 cnt = 0 SELECT count(*) INTO :cnt FROM u_sc_task WHERE workgroupid = :machineid AND flag = 5 AND queue > :ll_queue AND Kind = 1 ; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = '查询机台排程信息失败' GOTO ext END IF IF cnt > 0 THEN Long ll_taskid_next Long ll_queue_next SELECT top 1 queue INTO :ll_queue_next FROM u_sc_task WHERE workgroupid = :machineid AND flag = 5 AND queue > :ll_queue AND kind = 1 Order By queue; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = '查询机台排程信息失败' GOTO ext END IF UPDATE u_sc_task SET flag = 1, starttime = getdate() WHERE queue = :ll_queue_next AND workgroupid = :machineid AND Kind = 1 and flag = 5; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "因网络或其它原因导致更新机台状态操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF UPDATE u_sc_task SET queue = queue - 1 WHERE workgroupid = :machineid And (flag = 0 OR flag = 5 OR flag = 1 OR flag = 3) and kind = 1; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "更新机台序列操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF END IF END IF END IF END IF //==================================================================== SELECT mtrlid ,orderqty INTO :ll_mtrlid,:ld_orderqty FROM u_order_ml Where u_order_ml.orderid = :orderid; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = '查询生产计划失败' GOTO ext END IF SELECT mtrlcode, unit, planprice INTO :ls_mtrlcode, :ls_unit, :ld_planprice FROM u_mtrldef Where mtrlid = :ll_mtrlid; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = '查询物料资料失败' GOTO ext END IF Long rst_inwareid //==================================================================== // 更新生产计划塑料成品总重量 //==================================================================== UPDATE u_order_ml SET slweight = slweight + (:Weight * (:qty + :qty_bcp))/1000 Where orderid = :orderid and scid = :scid; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = '更新生产计划塑料成品总重量失败' GOTO ext END IF //==================================================================== // //if ld_planprice <= 0 then // rslt = 0 // ARG_MSG = ls_mtrlcode + '计划价为零,不能自动生成成品进仓单!' // GOTO ext //END IF // // //Long ll_lastflag //SELECT lastflag // INTO :ll_lastflag // FROM u_sc_task // Where taskid = :taskid; //IF sqlca.SQLCode <> 0 THEN // rslt = 0 // ARG_MSG = '查询相关排程是否最后工序失败' // GOTO ext //END IF // // //IF ll_lastflag = 1 THEN IF p_create_inware(ARG_MSG,FALSE) = 0 THEN rslt = 0 GOTO ext END IF //END IF //==================================================================== ext: IF rslt = 0 THEN ROLLBACK ; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT ; END IF RETURN rslt end function public function integer caudit (long arg_collectid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0 DateTime nulldate SetNull(nulldate) IF arg_collectid <= 0 THEN rslt = 0 ARG_MSG = '错误质检单唯一码' GOTO ext END IF IF p_getinfo(arg_collectid,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF flag <> 1 THEN rslt = 0 ARG_MSG = '质检单只有在已仓审状态下才能仓库撤审,请核对' GOTO ext END IF UPDATE u_data_collect SET flag = 0, auditrep = '', auditdate = :nulldate Where collectid = :arg_collectid ; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "因网络或其它原因导致质检单撤消仓库审核操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF UPDATE u_sc_task SET fqty = fqty - :qty - :qty_bcp Where taskid = :taskid; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "因网络或其它原因导致更新机台已生产数操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF it_newbegin = FALSE it_updatebegin = FALSE //update u_sc_task //set status = 2 //where orderid = :orderid and machineid = :machineid and teamorder = :teamorder; //if sqlca.sqlcode <> 0 then // rslt = 0 // arg_msg = "因网络或其它原因导致更新机台状态操作失败"+"~n"+sqlca.SQLErrText // goto ext //end if //==================================================================== // 更新生产计划塑料成品总重量 //==================================================================== UPDATE u_order_ml SET slweight = slweight - (:Weight * :qty )/1000 WHERE orderid = :orderid AND scid = :scid; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = '更新生产计划塑料成品总重量失败' GOTO ext END IF //==================================================================== //==================================================================== // 删除自动建立的成品进仓单 //==================================================================== IF p_del_inware(ARG_MSG,FALSE) = 0 THEN rslt = 0 GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF arg_ifcommit AND rslt = 1 THEN COMMIT ; END IF p_reset() Return (rslt) end function public function integer gzaudit (long arg_collectid, string arg_emp, ref string arg_msg, boolean arg_ifcommit);//工资审 Int rslt = 1,cnt = 0 Long ll_mtrlid String ls_mtrlcode,ls_unit DateTime server_dt,ldt_collectdate Decimal ld_orderqty Decimal ld_planprice uo_abnormity_dq = Create uo_abnormity IF arg_collectid <= 0 THEN rslt = 0 ARG_MSG = '错误质检单唯一码' GOTO ext END IF SELECT Top 1 getdate() Into :server_dt From u_user ; //取得系统时间,借用操作员表 IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "查询操作失败,日期 " GOTO ext END IF IF getinfo(arg_collectid,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF it_mxbt2 <= 0 THEN rslt = 0 ARG_MSG = '质检单没有员工生产信息明细内容,不能工资审,请检查!' GOTO ext END IF IF flag = 2 THEN rslt = 0 ARG_MSG = '质检单已经完成审核,操作取消' GOTO ext ELSEIF flag = 0 THEN rslt = 0 ARG_MSG = '质检单还没有进行仓审,不能执行工资审' GOTO ext END IF cnt = 0 SELECT count(*) INTO :cnt FROM u_user Where username = :arg_emp ; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "查询操作失败,操作员!" GOTO ext END IF IF cnt = 0 THEN rslt = 0 ARG_MSG = "操作员姓名未登记或已取消!" GOTO ext END IF //yyx2013-10-26 SELECT top 1 u_data_collectmx.collectdate INTO :ldt_collectdate FROM u_data_collectmx WHERE u_data_collectmx.collectid = :arg_collectid Order By u_data_collectmx.printid; IF sqlca.SQLCode <> 0 THEN ARG_MSG = '查询质检明细第1行质检日期失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF // UPDATE u_data_collect SET flag = 2 , gzauditrep = :arg_emp, gzauditdate = getdate() Where collectid = :arg_collectid ; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "因网络或其它原因导致质检单工资审核操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF // //==================================================================== //// 自动生成计件单 ////==================================================================== Long ll_ds_rowcount,ls_i,ls_j datastore ds_wagemx ds_wagemx = Create datastore ds_wagemx.DataObject = "dw_data_wage" ds_wagemx.SetTransObject(sqlca) ds_wagemx.Retrieve(arg_collectid) ll_ds_rowcount = ds_wagemx.RowCount() IF ll_ds_rowcount <= 0 THEN rslt = 0 ARG_MSG = '没有员工计件明细内容!!' GOTO ext END IF //==================================================================== // 自动生成其他计件单 //==================================================================== Long ll_pid = 1 IF uo_abnormity_dq.newbegin(scid,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF uo_abnormity_dq.wageid = wageid_other uo_abnormity_dq.dscrp = '质检单 '+ collectcode +' 自动生成' uo_abnormity_dq.relcode = collectcode uo_abnormity_dq.billdate = ldt_collectdate uo_abnormity_dq.ifzj = 1 uo_abnormity_dq.zjid = collectid uo_abnormity_dq.wagemth = Long(String(ldt_collectdate,'yyyymm')) FOR ls_j = 1 To ll_ds_rowcount IF ds_wagemx.Object.empid[ls_j] > 0 THEN IF ds_wagemx.Object.cp_price[ls_j] > 0 THEN IF uo_abnormity_dq.acceptmx(ds_wagemx.Object.empid[ls_j],& ds_wagemx.Object.empcode[ls_j],& ds_wagemx.Object.empname[ls_j],& ds_wagemx.Object.cp_qty[ls_j],& ds_wagemx.Object.cp_price[ls_j] / ds_wagemx.Object.cp_qty[ls_j],& '成品工资',& ARG_MSG,& ll_pid,& '','','') = 0 THEN MessageBox('error!',ARG_MSG) rslt = 0 GOTO ext END IF ll_pid = ll_pid + 1 END IF IF ds_wagemx.Object.bcp_price[ls_j] > 0 THEN IF uo_abnormity_dq.acceptmx(ds_wagemx.Object.empid[ls_j],& ds_wagemx.Object.empcode[ls_j],& ds_wagemx.Object.empname[ls_j],& ds_wagemx.Object.bcp_qty[ls_j],& ds_wagemx.Object.bcp_price[ls_j] / ds_wagemx.Object.bcp_qty[ls_j],& '半成品工资',& ARG_MSG,& ll_pid,& '','','') = 0 THEN MessageBox('error!',ARG_MSG) rslt = 0 GOTO ext END IF ll_pid = ll_pid + 1 END IF IF ds_wagemx.Object.awardprice[ls_j] > 0 THEN IF uo_abnormity_dq.acceptmx(ds_wagemx.Object.empid[ls_j],& ds_wagemx.Object.empcode[ls_j],& ds_wagemx.Object.empname[ls_j],& 1,& ds_wagemx.Object.awardprice[ls_j],& '奖金',& ARG_MSG,& ll_pid,& '','','') = 0 THEN MessageBox('error!',ARG_MSG) rslt = 0 GOTO ext END IF ll_pid = ll_pid + 1 END IF IF ds_wagemx.Object.stantby_price[ls_j] > 0 THEN IF uo_abnormity_dq.acceptmx(ds_wagemx.Object.empid[ls_j],& ds_wagemx.Object.empcode[ls_j],& ds_wagemx.Object.empname[ls_j],& 1,& ds_wagemx.Object.stantby_price[ls_j],& '待机补贴',& ARG_MSG,& ll_pid,& '','','') = 0 THEN MessageBox('error!',ARG_MSG) rslt = 0 GOTO ext END IF ll_pid = ll_pid + 1 END IF IF ds_wagemx.Object.zx_price[ls_j] * ds_wagemx.Object.zx_qty[ls_j] > 0 THEN IF uo_abnormity_dq.acceptmx(ds_wagemx.Object.empid[ls_j],& ds_wagemx.Object.empcode[ls_j],& ds_wagemx.Object.empname[ls_j],& ds_wagemx.Object.zx_qty[ls_j],& ds_wagemx.Object.zx_price[ls_j],& '杂项工资',& ARG_MSG,& ll_pid,& '','','') = 0 THEN MessageBox('error!',ARG_MSG) rslt = 0 GOTO ext END IF ll_pid = ll_pid + 1 END IF IF ds_wagemx.Object.u_data_wage_price_add[ls_j] * ds_wagemx.Object.u_data_wage_qty_add[ls_j] > 0 THEN IF uo_abnormity_dq.acceptmx(ds_wagemx.Object.empid[ls_j],& ds_wagemx.Object.empcode[ls_j],& ds_wagemx.Object.empname[ls_j],& ds_wagemx.Object.u_data_wage_qty_add[ls_j],& ds_wagemx.Object.u_data_wage_price_add[ls_j],& '工序工资',& ARG_MSG,& ll_pid,& '',& ds_wagemx.Object.u_data_wage_proname_add[ls_j],& '') = 0 THEN MessageBox('error!',ARG_MSG) rslt = 0 GOTO ext END IF ll_pid = ll_pid + 1 END IF END IF NEXT IF uo_abnormity_dq.Save(ARG_MSG,False) = 0 THEN rslt = 0 GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK ; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT ; END IF Destroy uo_abnormity_dq RETURN rslt end function public function integer cgzaudit (long arg_collectid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0 DateTime nulldate uo_abnormity_dq = CREATE uo_abnormity SetNull(nulldate) IF arg_collectid <= 0 THEN rslt = 0 ARG_MSG = '错误质检单唯一码' GOTO ext END IF IF p_getinfo(arg_collectid,ARG_MSG) = 0 THEN rslt = 0 GOTO ext END IF IF flag <> 2 THEN rslt = 0 ARG_MSG = '质检单只有在已工资审状态下才能工资撤审,请核对' GOTO ext END IF UPDATE u_data_collect SET flag = 1, gzauditrep = '', gzauditdate = :nulldate Where collectid = :arg_collectid ; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = "因网络或其它原因导致质检单撤消工资审核操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF it_newbegin = FALSE it_updatebegin = FALSE //==================================================================== // 删除自动建立的其他计件单 //==================================================================== Long i Long ll_cnt_other SELECT count(*) INTO :ll_cnt_other FROM u_sc_abnormity Where zjid = :collectid AND ifzj = 1; IF sqlca.SQLCode <> 0 THEN rslt = 0 ARG_MSG = '查询自动建立的其它计件单失败' GOTO ext END IF IF ll_cnt_other > 0 THEN Long ll_billid_other[],ll_flag_other[],it_max_other it_max_other = 1 DECLARE cur_mx CURSOR FOR SELECT billid,auditingflag FROM u_sc_abnormity Where zjid = :collectid AND ifzj = 1; OPEN cur_mx; FETCH cur_mx INTO :ll_billid_other[it_max_other],:ll_flag_other[it_max_other]; DO WHILE sqlca.SQLCode = 0 it_max_other++ FETCH cur_mx INTO :ll_billid_other[it_max_other],:ll_flag_other[it_max_other]; LOOP CLOSE cur_mx; IF it_max_other - 1 <> ll_cnt_other THEN rslt = 0 ARG_MSG = '查询其它计件单已审核,不能删除' GOTO ext END IF FOR i = 1 TO ll_cnt_other IF ll_flag_other[i] <> 0 THEN rslt = 0 ARG_MSG = '自动建立的其它计件单已审核,不能删除' GOTO ext END IF IF uo_abnormity_dq.del(scid,ll_billid_other[i],ARG_MSG,FALSE) = 0 THEN rslt = 0 GOTO ext END IF NEXT END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF arg_ifcommit AND rslt = 1 THEN COMMIT ; END IF DESTROY uo_abnormity_dq p_reset() Return (rslt) end function public function integer p_create_inware (ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long ll_mtrlid,ll_orderid,ll_balctype,ll_cusid,ll_ref_inwareid String ls_status,ls_woodcode,ls_pcode,ls_mtrlcode,ls_unit,ls_ref_inwarecode String ls_plancode,ls_mtrlcuscode DateTime server_dt Decimal ld_planprice Long ll_dftwrkGrpid SELECT Top 1 getdate() INTO :server_dt FROM u_user; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,日期 " GOTO ext END IF uo_inware uo_ware uo_ware = CREATE uo_inware uo_ware.commit_transaction = sqlca uo_ware.if_getid_ture = FALSE SELECT u_sc_task.mtrlid, u_sc_task.status, u_sc_task.woodcode, u_sc_task.pcode, u_mtrldef.mtrlcode, u_sc_task.orderid, u_mtrldef.unit, u_mtrldef.dftwrkGrpid INTO :ll_mtrlid, :ls_status, :ls_woodcode, :ls_pcode, :ls_mtrlcode, :ll_orderid, :ls_unit, :ll_dftwrkGrpid FROM u_sc_task,u_mtrldef WHERE u_sc_task.mtrlid = u_mtrldef.mtrlid AND taskid = :taskid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询机台排程资料失败' GOTO ext END IF f_get_planprice_mtrl(ll_mtrlid,ls_status,ls_woodcode,ls_pcode,ld_planprice) SELECT balctype INTO :ll_balctype FROM u_storage Where storageid = :storageid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询仓库资料失败' GOTO ext END IF IF ll_balctype = 1 THEN IF uof_find_cust(scid,orderid,ll_cusid,ls_plancode,ls_mtrlcuscode,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF END IF IF uo_ware.newbegin(scid,3,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF uo_ware.indate = server_dt uo_ware.inrep = publ_operator uo_ware.part = collectcode uo_ware.dscrp = '由质检单 '+ collectcode +' 自动生成' uo_ware.storageid = storageid uo_ware.sptname = '' uo_ware.relid = ll_dftwrkGrpid uo_ware.relint_1 = collectid uo_ware.mrate = 1 IF ll_mtrlid > 0 AND qty > 0 THEN IF uo_ware.acceptmx(1,& ll_mtrlid,& ls_mtrlcode,& ls_plancode,& ls_status,& qty,& ld_planprice,& 1,& dscrp,& arg_msg,& 0,& orderid,& 1,& ls_woodcode,& ls_pcode,& ll_cusid,& ls_unit,& 1,qty,0,0,'','',0,0,ls_mtrlcuscode,'',& qty,& 0) = 0 THEN rslt = 0 GOTO ext END IF IF uo_ware.Save(FALSE,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF END IF IF qty_bcp > 0 THEN SELECT balctype INTO :ll_balctype FROM u_storage Where storageid = :storageid_bcp; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询仓库资料失败' GOTO ext END IF IF ll_balctype = 1 THEN IF uof_find_cust(scid,orderid,ll_cusid,ls_plancode,ls_mtrlcuscode,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF END IF IF uo_ware.newbegin(scid,3,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF uo_ware.indate = server_dt uo_ware.inrep = publ_operator uo_ware.part = collectcode uo_ware.dscrp = '由质检单 '+ collectcode +' 自动生成' uo_ware.storageid = storageid_bcp uo_ware.sptname = '' uo_ware.relid = ll_dftwrkGrpid uo_ware.relint_1 = collectid uo_ware.mrate = 1 IF ll_mtrlid > 0 THEN IF uo_ware.acceptmx(1,& ll_mtrlid,& ls_mtrlcode,& ls_plancode,& ls_status,& qty_bcp,& ld_planprice,& 1,& dscrp,& arg_msg,& 0,& orderid,& 1,& ls_woodcode,& ls_pcode,& ll_cusid,& ls_unit,& 1,qty_bcp,0,0,'','',0,0,ls_mtrlcuscode,'',& qty_bcp,& 0) = 0 THEN rslt = 0 GOTO ext END IF END IF IF uo_ware.Save(FALSE,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF END IF ext: DESTROY uo_ware IF rslt = 0 THEN ROLLBACK ; ELSEIF arg_ifcommit AND rslt = 1 THEN COMMIT ; END IF RETURN rslt end function public function integer uof_find_cust (long arg_scid, long arg_orderid, ref long arg_cusid, ref string arg_plancode, ref string arg_mtrlcuscode, ref string arg_msg);Int rslt = 1 IF uo_option_inware_mtrlcuscode = -1000 THEN rslt = 0 arg_msg = '选项:[138]生产进仓单产品批号策略按指令单号,读取初始默认值失败,操作取消!' GOTO ext END IF IF uo_option_taskplancode = -1000 THEN rslt = 0 arg_msg = '选项:[038]使用客户批号库存,读取初始默认值失败,操作取消!' GOTO ext END IF Long li_ordertype,cnt Long ll_cusid String ls_cuscode,ls_cusname,ls_plancode Long ll_mtrlid,ll_mtrlid_p,ll_porderid Boolean lb_ifsameorder Int li_ifmtrlcuscode String ls_ordercode SELECT ordercode, ordertype, mtrlid, porderid INTO :ls_ordercode, :li_ordertype, :ll_mtrlid, :ll_porderid FROM u_order_ml WHERE scid = :arg_scid AND orderid = :arg_orderid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询指令单相关信息失败,'+sqlca.SQLErrText GOTO ext END IF IF li_ordertype = 0 THEN ll_cusid = 0 GOTO ext END IF SELECT count(*) INTO :cnt FROM u_order_ml_mx WHERE orderid = :arg_orderid AND scid = :arg_scid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询指令单相关信息失败,'+sqlca.SQLErrText GOTO ext END IF IF cnt <> 1 THEN ll_cusid = 0 GOTO ext END IF SELECT ifmtrlcuscode INTO :li_ifmtrlcuscode FROM u_mtrldef Where mtrlid = :ll_mtrlid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询物料是否使用产品批号属性失败,'+sqlca.SQLErrText GOTO ext END IF IF uo_option_inware_mtrlcuscode = 1 AND li_ifmtrlcuscode = 1 THEN arg_mtrlcuscode = ls_ordercode ELSE arg_mtrlcuscode = '' END IF IF li_ordertype = 4 THEN SELECT mtrlid INTO :ll_mtrlid_p FROM u_order_ml WHERE scid = :arg_scid AND orderid = :ll_porderid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询指令单相关信息失败,'+sqlca.SQLErrText GOTO ext END IF IF ll_mtrlid_p = ll_mtrlid THEN lb_ifsameorder = TRUE SELECT u_cust.cusid, u_cust.cuscode, u_cust.name, u_order_ml.taskrelcode INTO :ll_cusid, :ls_cuscode, :ls_cusname, :ls_plancode FROM u_cust,u_order_ml WHERE u_cust.cusid = u_order_ml.cusid AND u_order_ml.scid = :arg_scid AND u_order_ml.orderid = :ll_porderid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询指令单相关信息失败,'+sqlca.SQLErrText GOTO ext END IF END IF ELSE SELECT u_cust.cusid, u_cust.cuscode, u_cust.name, u_order_ml.taskrelcode INTO :ll_cusid, :ls_cuscode, :ls_cusname, :ls_plancode FROM u_cust,u_order_ml WHERE u_cust.cusid = u_order_ml.cusid AND u_order_ml.scid = :arg_scid AND u_order_ml.orderid = :arg_orderid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询指令单相关信息失败,'+sqlca.SQLErrText GOTO ext END IF END IF IF lb_ifsameorder AND uo_option_taskplancode = 1 THEN arg_plancode = ls_plancode ELSE arg_plancode = '' END IF ext: arg_cusid = ll_cusid RETURN rslt end function public function integer p_del_inware (ref string arg_msg, boolean arg_ifcommit);int rslt = 1 long ll_inwareid[] long i = 1,j uo_inware uo_ware uo_ware = CREATE uo_inware uo_ware.commit_transaction = sqlca uo_ware.if_getid_ture = FALSE DECLARE cur_inware CURSOR FOR SELECT inwareid FROM u_inware Where relint_1 = :collectid and scid = :scid and billtype = 3; OPEN cur_inware; FETCH cur_inware INTO :ll_inwareid[i]; DO WHILE sqlca.SQLCode = 0 i++ FETCH cur_inware INTO :ll_inwareid[i]; LOOP CLOSE cur_inware; FOR j = 1 TO i - 1 IF uo_ware.del(scid,ll_inwareid[j],ARG_MSG,FALSE) = 0 THEN rslt = 0 GOTO ext END IF NEXT ext: IF rslt = 0 THEN ROLLBACK ; ELSEIF arg_ifcommit AND rslt = 1 THEN COMMIT ; END IF DESTROY uo_ware RETURN rslt end function public function integer acceptmx_wage (long arg_empid, string arg_empcode, string arg_empname, string arg_procode, string arg_proname, decimal arg_cp_qty, decimal arg_workprice, decimal arg_awardprice, decimal arg_stantby_price, decimal arg_bcp_qty, decimal arg_zx_qty, decimal arg_zx_price, string arg_dscrp, long arg_printid, string arg_procode_add, string arg_proname_add, decimal arg_price_add, decimal arg_qty_add, ref string arg_msg);Long rslt = 1 IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN rslt = 0 arg_msg = "非编辑状态不可以使用,操作取消" GOTO ext END IF IF IsNull(arg_empid) THEN arg_empid = 0 IF IsNull(arg_empcode) THEN arg_empcode = '' IF IsNull(arg_empname) THEN arg_empname = '' IF IsNull(arg_procode) THEN arg_procode = '' IF IsNull(arg_proname) THEN arg_proname = '' IF IsNull(arg_cp_qty) THEN arg_cp_qty = 0 IF IsNull(arg_workprice) THEN arg_workprice = 0 IF IsNull(arg_awardprice) THEN arg_awardprice = 0 IF IsNull(arg_stantby_price) THEN arg_stantby_price = 0 IF IsNull(arg_bcp_qty) THEN arg_bcp_qty = 0 IF IsNull(arg_zx_qty) THEN arg_zx_qty = 0 IF IsNull(arg_zx_price) THEN arg_zx_price = 0 IF IsNull(arg_dscrp) THEN arg_dscrp = '' IF IsNull(arg_printid) THEN arg_printid = 0 IF IsNull(arg_procode_add) THEN arg_procode_add = '' IF IsNull(arg_proname_add) THEN arg_proname_add = '' IF IsNull(arg_price_add) THEN arg_price_add = 0 IF IsNull(arg_qty_add) THEN arg_qty_add = 0 IF Trim(arg_empcode) = '' OR arg_empid = 0 THEN rslt = 0 arg_msg = '员工信息不能为空' GOTO ext END IF it_mxbt2++ wagemx[it_mxbt2].empid = arg_empid wagemx[it_mxbt2].empcode = arg_empcode wagemx[it_mxbt2].procode = arg_procode wagemx[it_mxbt2].proname = arg_proname wagemx[it_mxbt2].cp_qty = arg_cp_qty wagemx[it_mxbt2].workprice = arg_workprice wagemx[it_mxbt2].awardprice = arg_awardprice wagemx[it_mxbt2].stantby_price = arg_stantby_price wagemx[it_mxbt2].bcp_qty = arg_bcp_qty wagemx[it_mxbt2].zx_qty = arg_zx_qty wagemx[it_mxbt2].zx_price = arg_zx_price wagemx[it_mxbt2].dscrp = arg_dscrp wagemx[it_mxbt2].printid = arg_printid wagemx[it_mxbt2].empname = arg_empname IF period * modelqty * squadtime <> 0 THEN wagemx[it_mxbt2].cp_wage = arg_workprice / ( 3600 / period * modelqty * squadtime ) * arg_cp_qty wagemx[it_mxbt2].bcp_wage = arg_workprice / ( 3600 / period * modelqty * squadtime ) * arg_bcp_qty * semi_discount ELSE wagemx[it_mxbt2].cp_wage = 0 wagemx[it_mxbt2].bcp_wage = 0 END IF wagemx[it_mxbt2].zx_wage = arg_zx_price * arg_zx_qty wagemx[it_mxbt2].procode_add = arg_procode_add wagemx[it_mxbt2].proname_add = arg_proname_add wagemx[it_mxbt2].price_add = arg_price_add wagemx[it_mxbt2].qty_add = arg_qty_add ext: IF rslt = 0 THEN p_clearmx() Return (rslt) end function on uo_data_collect.create call super::create TriggerEvent( this, "constructor" ) end on on uo_data_collect.destroy TriggerEvent( this, "destructor" ) call super::destroy end on event constructor;String str_optionvalue,arg_msg f_get_sys_option_value('138',str_optionvalue,arg_msg) uo_option_inware_mtrlcuscode = Long(str_optionvalue) f_get_sys_option_value('038',str_optionvalue,arg_msg) uo_option_taskplancode = Long(str_optionvalue) end event