$PBExportHeader$w_dangus.srw forward global type w_dangus from w_publ_base end type type cb_2 from commandbutton within w_dangus end type type st_1 from statictext within w_dangus end type type cb_7 from commandbutton within w_dangus end type type p_1 from picture within w_dangus end type type cb_12 from commandbutton within w_dangus end type type cb_13 from commandbutton within w_dangus end type type cb_14 from commandbutton within w_dangus end type type cb_1 from uo_imflatbutton within w_dangus end type type cb_3 from commandbutton within w_dangus end type type cb_4 from commandbutton within w_dangus end type type cb_5 from commandbutton within w_dangus end type type cb_6 from commandbutton within w_dangus end type type cb_8 from commandbutton within w_dangus end type type cb_9 from commandbutton within w_dangus end type type cb_10 from commandbutton within w_dangus end type type cb_11 from commandbutton within w_dangus end type type cb_16 from commandbutton within w_dangus end type type cb_17 from commandbutton within w_dangus end type type cb_18 from uo_imflatbutton within w_dangus end type type cb_19 from commandbutton within w_dangus end type type cb_20 from commandbutton within w_dangus end type type cb_21 from commandbutton within w_dangus end type type cb_22 from commandbutton within w_dangus end type type cb_23 from commandbutton within w_dangus end type type cb_24 from commandbutton within w_dangus end type type cb_25 from commandbutton within w_dangus end type type cb_26 from commandbutton within w_dangus end type type cb_15 from commandbutton within w_dangus end type end forward global type w_dangus from w_publ_base integer width = 2299 integer height = 1252 string title = "危险功能" cb_2 cb_2 st_1 st_1 cb_7 cb_7 p_1 p_1 cb_12 cb_12 cb_13 cb_13 cb_14 cb_14 cb_1 cb_1 cb_3 cb_3 cb_4 cb_4 cb_5 cb_5 cb_6 cb_6 cb_8 cb_8 cb_9 cb_9 cb_10 cb_10 cb_11 cb_11 cb_16 cb_16 cb_17 cb_17 cb_18 cb_18 cb_19 cb_19 cb_20 cb_20 cb_21 cb_21 cb_22 cb_22 cb_23 cb_23 cb_24 cb_24 cb_25 cb_25 cb_26 cb_26 cb_15 cb_15 end type global w_dangus w_dangus on w_dangus.create int iCurrent call super::create this.cb_2=create cb_2 this.st_1=create st_1 this.cb_7=create cb_7 this.p_1=create p_1 this.cb_12=create cb_12 this.cb_13=create cb_13 this.cb_14=create cb_14 this.cb_1=create cb_1 this.cb_3=create cb_3 this.cb_4=create cb_4 this.cb_5=create cb_5 this.cb_6=create cb_6 this.cb_8=create cb_8 this.cb_9=create cb_9 this.cb_10=create cb_10 this.cb_11=create cb_11 this.cb_16=create cb_16 this.cb_17=create cb_17 this.cb_18=create cb_18 this.cb_19=create cb_19 this.cb_20=create cb_20 this.cb_21=create cb_21 this.cb_22=create cb_22 this.cb_23=create cb_23 this.cb_24=create cb_24 this.cb_25=create cb_25 this.cb_26=create cb_26 this.cb_15=create cb_15 iCurrent=UpperBound(this.Control) this.Control[iCurrent+1]=this.cb_2 this.Control[iCurrent+2]=this.st_1 this.Control[iCurrent+3]=this.cb_7 this.Control[iCurrent+4]=this.p_1 this.Control[iCurrent+5]=this.cb_12 this.Control[iCurrent+6]=this.cb_13 this.Control[iCurrent+7]=this.cb_14 this.Control[iCurrent+8]=this.cb_1 this.Control[iCurrent+9]=this.cb_3 this.Control[iCurrent+10]=this.cb_4 this.Control[iCurrent+11]=this.cb_5 this.Control[iCurrent+12]=this.cb_6 this.Control[iCurrent+13]=this.cb_8 this.Control[iCurrent+14]=this.cb_9 this.Control[iCurrent+15]=this.cb_10 this.Control[iCurrent+16]=this.cb_11 this.Control[iCurrent+17]=this.cb_16 this.Control[iCurrent+18]=this.cb_17 this.Control[iCurrent+19]=this.cb_18 this.Control[iCurrent+20]=this.cb_19 this.Control[iCurrent+21]=this.cb_20 this.Control[iCurrent+22]=this.cb_21 this.Control[iCurrent+23]=this.cb_22 this.Control[iCurrent+24]=this.cb_23 this.Control[iCurrent+25]=this.cb_24 this.Control[iCurrent+26]=this.cb_25 this.Control[iCurrent+27]=this.cb_26 this.Control[iCurrent+28]=this.cb_15 end on on w_dangus.destroy call super::destroy destroy(this.cb_2) destroy(this.st_1) destroy(this.cb_7) destroy(this.p_1) destroy(this.cb_12) destroy(this.cb_13) destroy(this.cb_14) destroy(this.cb_1) destroy(this.cb_3) destroy(this.cb_4) destroy(this.cb_5) destroy(this.cb_6) destroy(this.cb_8) destroy(this.cb_9) destroy(this.cb_10) destroy(this.cb_11) destroy(this.cb_16) destroy(this.cb_17) destroy(this.cb_18) destroy(this.cb_19) destroy(this.cb_20) destroy(this.cb_21) destroy(this.cb_22) destroy(this.cb_23) destroy(this.cb_24) destroy(this.cb_25) destroy(this.cb_26) destroy(this.cb_15) end on type cb_func from w_publ_base`cb_func within w_dangus integer x = 9 integer width = 329 boolean enabled = false string text = "升级数据库" end type event cb_func::clicked;call super::clicked;//uo_version uo_ver //uo_ver.uof_createtable(FALSE) // //MessageBox('提示','ok',information!,ok!) end event type cb_exit from w_publ_base`cb_exit within w_dangus integer x = 1943 integer y = 1040 end type type cb_2 from commandbutton within w_dangus integer x = 50 integer y = 784 integer width = 329 integer height = 96 integer taborder = 20 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" boolean enabled = false string text = "重整结存" end type event clicked;open(w_cmpl_balc) end event type st_1 from statictext within w_dangus integer x = 14 integer y = 1096 integer width = 1714 integer height = 76 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 long backcolor = 67108864 boolean focusrectangle = false end type type cb_7 from commandbutton within w_dangus integer x = 50 integer y = 684 integer width = 434 integer height = 84 integer taborder = 40 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" boolean enabled = false string text = "调整现结存[all]" end type event clicked;Int rslt = 1 String ls_msg DELETE FROM u_warebalc Where balcdateint = 0; IF sqlca.SQLCode <> 0 THEN ls_msg = '删除结存失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF INSERT INTO u_warebalc (scid, balcdateint, mtrlid, storageid, status, woodcode, pcode, balcqty, balcamt) SELECT u_storage.scid, 0, u_mtrlware.mtrlid, u_mtrlware.storageid, u_mtrlware.status, u_mtrlware.woodcode, u_mtrlware.pcode, sum(u_mtrlware.noallocqty), sum(u_mtrlware.wareamt) FROM u_mtrlware inner join u_storage on u_mtrlware.storageid = u_storage.storageid GROUP BY u_storage.scid, u_mtrlware.mtrlid, u_mtrlware.storageid, u_mtrlware.status, u_mtrlware.woodcode, u_mtrlware.pcode; IF sqlca.SQLCode <> 0 THEN ls_msg = '库存->结存失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF commit; Long ll_i,ll_count Long ll_mtrlid,ll_storageid String ls_woodcode,ls_status,ls_pcode Decimal ld_balcqty,ld_balcamt Decimal ld_inqty,ld_inamt Decimal ld_decqty,ld_decamt Decimal ld_bgqty,ld_bgamt datastore ds ds = CREATE datastore ds.DataObject = 'ds_balc_all' ds.SetTransObject(sqlca) ll_count = ds.Retrieve() FOR ll_i = 1 TO ll_count st_1.Text = String(ll_i)+'/'+String(ll_count) ll_mtrlid = ds.Object.mtrlid[ll_i] ll_storageid = ds.Object.storageid[ll_i] ls_status = ds.Object.status[ll_i] ls_woodcode = ds.Object.woodcode[ll_i] ls_pcode = ds.Object.pcode[ll_i] ld_balcqty = ds.Object.balcqty[ll_i] ld_balcamt = ds.Object.balcamt[ll_i] SELECT isnull(sum(qty),0),isnull(sum(round(cost * qty,2)),0) INTO :ld_inqty,:ld_inamt FROM u_inware,u_inwaremx WHERE u_inware.scid = u_inwaremx.scid AND u_inware.inwareid = u_inwaremx.inwareid AND u_inwaremx.mtrlid = :ll_mtrlid AND u_inwaremx.status = :ls_status AND u_inwaremx.woodcode = :ls_woodcode AND u_inwaremx.pcode = :ls_pcode AND u_inware.storageid = :ll_storageid and u_inware.balcdateint = 0 AND u_inware.flag = 1; IF sqlca.SQLCode <> 0 THEN ls_msg = '进仓失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF SELECT isnull(sum(qty),0),isnull(sum(costamt),0) INTO :ld_decqty,:ld_decamt FROM u_outware,u_outwaremx WHERE u_outware.scid = u_outwaremx.scid AND u_outware.outwareid = u_outwaremx.outwareid AND u_outwaremx.mtrlid = :ll_mtrlid AND u_outwaremx.status = :ls_status AND u_outwaremx.woodcode = :ls_woodcode AND u_outwaremx.pcode = :ls_pcode AND u_outware.storageid = :ll_storageid and u_outware.balcdateint = 0 AND u_outware.flag = 1; IF sqlca.SQLCode <> 0 THEN ls_msg = '出仓失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF ld_bgqty = ld_balcqty + ld_decqty - ld_inqty ld_bgamt = ld_balcamt + ld_decamt - ld_inamt UPDATE u_warebalc SET bgqty = :ld_bgqty, bgamt = :ld_bgamt, incqty = :ld_inqty, incamt = :ld_inamt, desqty = :ld_decqty, desamt = :ld_decamt WHERE balcdateint = 0 AND mtrlid = :ll_mtrlid AND storageid = :ll_storageid AND status = :ls_status AND woodcode = :ls_woodcode AND pcode = :ls_pcode; IF sqlca.SQLCode <> 0 THEN ls_msg = 'u结存失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF NEXT ls_msg = 'ok' ext: IF rslt = 0 THEN ROLLBACK; ELSE COMMIT; END IF MessageBox('提示',ls_msg,information!,ok!) end event type p_1 from picture within w_dangus integer x = 73 integer y = 912 integer width = 210 integer height = 160 boolean bringtotop = true boolean originalsize = true boolean focusrectangle = false end type event clicked;cb_7.Enabled = NOT cb_7.Enabled cb_12.Enabled = NOT cb_12.Enabled cb_2.Enabled = NOT cb_2.Enabled cb_3.Enabled = NOT cb_3.Enabled end event type cb_12 from commandbutton within w_dangus end type type cb_13 from commandbutton within w_dangus integer x = 46 integer y = 464 integer width = 439 integer height = 96 integer taborder = 30 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" boolean enabled = false string text = "升级附件数据库" end type event clicked;Long ll_ConnectionID,ll_suc String arg_msg Transaction fj_sqlca fj_sqlca = CREATE Transaction IF f_get_outerconnection(ll_ConnectionID,arg_msg) = 1 THEN IF f_connect_db(ll_ConnectionID,fj_sqlca,arg_msg) = 0 THEN MessageBox('错误','文件数据库连接失败,请检查设置.'+arg_msg,stopsign!,ok!) RETURN END IF ELSE MessageBox('错误','附件数据库不存在',stopsign!,ok!) RETURN END IF String createsql_string createsql_string = '' createsql_string = "alter table U_File add relid_mx int default(0) not null" EXECUTE IMMEDIATE :createsql_string USING fj_sqlca; IF fj_sqlca.SQLCode = 0 THEN ll_suc += 1 END IF COMMIT USING fj_sqlca; createsql_string = '' createsql_string = "alter table U_File add relcode char(50) default('') not null" EXECUTE IMMEDIATE :createsql_string USING fj_sqlca; IF fj_sqlca.SQLCode = 0 THEN ll_suc += 1 END IF COMMIT USING fj_sqlca; createsql_string = '' createsql_string = "alter table U_File add relcode_mx char(50) default('') not null" EXECUTE IMMEDIATE :createsql_string USING fj_sqlca; IF fj_sqlca.SQLCode = 0 THEN ll_suc += 1 END IF COMMIT USING fj_sqlca; createsql_string = '' createsql_string = "alter table U_File add scid int default(0) not null" EXECUTE IMMEDIATE :createsql_string USING fj_sqlca; IF fj_sqlca.SQLCode = 0 THEN ll_suc += 1 END IF COMMIT USING fj_sqlca; createsql_string = '' createsql_string = "ALTER TABLE [dbo].[U_File] DROP CONSTRAINT [IX_U_File]" EXECUTE IMMEDIATE :createsql_string USING fj_sqlca; IF fj_sqlca.SQLCode = 0 THEN ll_suc += 1 END IF COMMIT USING fj_sqlca; createsql_string = '' createsql_string = "alter table U_File ALTER COLUMN DisplayName char(100) not null " EXECUTE IMMEDIATE :createsql_string USING fj_sqlca; IF fj_sqlca.SQLCode = 0 THEN ll_suc += 1 END IF COMMIT USING fj_sqlca; createsql_string = '' createsql_string = "alter table U_File ALTER COLUMN FileName char(150) not null " EXECUTE IMMEDIATE :createsql_string USING fj_sqlca; IF fj_sqlca.SQLCode = 0 THEN ll_suc += 1 END IF COMMIT USING fj_sqlca; createsql_string = '' createsql_string = "alter table U_File add billtype int default(201) not null" EXECUTE IMMEDIATE :createsql_string USING fj_sqlca; IF fj_sqlca.SQLCode = 0 THEN ll_suc += 1 END IF COMMIT USING fj_sqlca; DESTROY fj_sqlca MessageBox('提示','ok,'+string(ll_suc),information!,ok!) end event type cb_14 from commandbutton within w_dangus boolean visible = false integer x = 1755 integer y = 20 integer width = 521 integer height = 96 integer taborder = 20 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" boolean enabled = false string text = "更新版本0822" end type event clicked;String ls_cur_version ls_cur_version = f_psw_bczh('1.0.070925',0,sys_power_key) //ls_cur_version = f_psw_bczh('1.0.070903',0,sys_power_key) UPDATE sys_msg Set cur_version = :ls_cur_version; IF sqlca.SQLCode <> 0 THEN MessageBox('error',sqlca.SQLErrText) ROLLBACK; RETURN END IF COMMIT; MessageBox('提示','ok',information!,ok!) end event type cb_1 from uo_imflatbutton within w_dangus boolean visible = false integer x = 567 integer width = 494 integer taborder = 40 boolean bringtotop = true boolean enabled = false string text = "销售订单增加0库存" end type event clicked;call super::clicked;datastore ds_task ds_task = CREATE datastore ds_task.DataObject = 'ds_saletask' ds_task.SetTransObject(sqlca) ds_task.Retrieve() Long ll_i Long rslt = 1 Long ll_storageid_arr[],ll_storageid Long ll_scid_arr[],ll_scid String ll_storagename_arr[],ls_storagename Long ll_j,count Int li_balctype_arr[],li_balctype Long ll_cusid String ls_status,ls_mtrlcode,ls_pcode,ls_woodcode,ls_plancode Long ll_mtrlwareid,ll_mtrlid String arg_msg long ll_cnt ll_cnt = 0 DECLARE pf_cur CURSOR FOR SELECT u_storage.storageid, u_storage.storagename, u_storage.scid, u_storage.balctype FROM u_storage Where ( u_storage.mtrlprp = 0 ); OPEN pf_cur; FETCH pf_cur INTO :ll_storageid,:ls_storagename,:ll_scid,:li_balctype; DO WHILE sqlca.SQLCode = 0 count++ ll_storageid_arr[count] = ll_storageid ll_storagename_arr[count] = ls_storagename ll_scid_arr[count] = ll_scid li_balctype_arr[count] = li_balctype FETCH pf_cur INTO :ll_storageid,:ls_storagename,:ll_scid,:li_balctype; LOOP CLOSE pf_cur; Open(w_sys_wait_jdt) //初始化进度条 w_sys_wait_jdt.Show() w_sys_wait_jdt.wf_accepttol(ds_task.RowCount()) FOR ll_i = 1 TO ds_task.RowCount() w_sys_wait_jdt.st_msg.Text = "正在执行操作..." //进度信息 w_sys_wait_jdt.wf_inc(ll_i) ll_mtrlid = ds_task.Object.u_saletaskmx_mtrlid[ll_i] ls_mtrlcode = ds_task.Object.u_mtrldef_mtrlcode[ll_i] ls_status = ds_task.Object.u_saletaskmx_status[ll_i] ls_pcode = ds_task.Object.u_saletaskmx_pcode[ll_i] ls_woodcode = ds_task.Object.u_saletaskmx_woodcode[ll_i] ls_plancode = ds_task.Object.u_saletaskmx_mtrlcuscode[ll_i] FOR ll_j = 1 TO count IF li_balctype_arr[ll_j] = 1 THEN ll_cusid = ds_task.Object.u_saletask_cusid[ll_i] ELSE ll_cusid = 0 END IF SELECT top 1 mtrlwareid INTO :ll_mtrlwareid FROM u_mtrlware WHERE mtrlid = :ll_mtrlid AND status = :ls_status AND storageid = :ll_storageid_arr[ll_j] AND woodcode = :ls_woodcode AND plancode = :ls_plancode AND pcode = :ls_pcode AND sptid = :ll_cusid; IF sqlca.SQLCode = -1 THEN // arg_msg = '查询:'+ls_mtrlcode+'仓库:'+ll_storagename_arr[ll_j]+'库存失败' // rslt = 0 // GOTO ext ll_cnt++ CONTINUE ELSEIF sqlca.SQLCode = 100 THEN ll_mtrlwareid = 0 ll_mtrlwareid = f_sys_scidentity(ll_scid_arr[ll_j],"u_mtrlware","mtrlwareid",arg_msg,FALSE,sqlca) IF ll_mtrlwareid <= 0 THEN // rslt = 0 // GOTO ext ll_cnt++ ROLLBACK; CONTINUE END IF INSERT INTO u_mtrlware(scid,mtrlwareid,mtrlid,storageid,noallocqty,status,plancode,woodcode,pcode,sptid) Values(:ll_scid_arr[ll_j],:ll_mtrlwareid,:ll_mtrlid,:ll_storageid_arr[ll_j],0,:ls_status,:ls_plancode,:ls_woodcode,:ls_pcode,:ll_cusid); IF sqlca.SQLCode <> 0 THEN // arg_msg = '产品:'+ls_mtrlcode+'仓库:'+ll_storagename_arr[ll_j]+'加0库存失败或物料已经有库存,请检查' // rslt = 0 // GOTO ext ll_cnt++ ROLLBACK; CONTINUE ELSE COMMIT; END IF END IF NEXT NEXT //ext: Close(w_sys_wait_jdt) MessageBox('提示','操作完成!失败:'+string(ll_cnt)+'条',information!,ok!) end event type cb_3 from commandbutton within w_dangus end type type cb_4 from commandbutton within w_dangus boolean visible = false integer x = 567 integer y = 256 integer width = 389 integer height = 88 integer taborder = 40 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" boolean enabled = false string text = "合并库存" end type event clicked;IF Not sys_power_issuper THEN MessageBox('系统提示','非管理员不可以操作') RETURN END IF Long rslt = 1 Long li_row Long li_mtrlwareid Long li_mtrlid Long li_storageid IF MessageBox ("if","是否确定要对各物料不同批号的库存进行合并?合并后将不能恢复!",question!,yesno! ) = 2 THEN RETURN Long mtrlwareid[],storageid[],cnt = 0,ll_mtrlwareid,ll_storageid,i,mtrlid[],ll_mtrlid Decimal noallocqty[],ld_noallocqty DECLARE cur CURSOR FOR SELECT mtrlwareid,storageid,mtrlid,noallocqty FROM u_mtrlware Where plancode <> '' Or Status <> '' Or woodcode <> '' Or pcode <> '' ; OPEN cur; FETCH cur Into :ll_mtrlwareid,:ll_storageid,:ll_mtrlid,:ld_noallocqty; DO WHILE sqlca.SQLCode = 0 cnt ++ mtrlwareid[cnt ] = ll_mtrlwareid storageid[cnt] = ll_storageid mtrlid[cnt] = ll_mtrlid noallocqty[cnt] = ld_noallocqty FETCH cur Into :ll_mtrlwareid,:ll_storageid,:ll_mtrlid,:ld_noallocqty; LOOP CLOSE cur; FOR i = 1 To cnt SELECT mtrlwareid INTO :ll_mtrlwareid FROM u_mtrlware WHERE plancode = '' AND Status = '' AND woodcode = '' AND pcode = '' AND storageid = :storageid[i] And mtrlid = :mtrlid[i]; IF sqlca.SQLCode = -1 THEN rslt = 0 GOTO ext ELSEIF sqlca.SQLCode = 100 THEN UPDATE u_mtrlware SET plancode = '', Status = '', woodcode = '', pcode = '' Where mtrlwareid = :mtrlwareid[i] ; IF sqlca.SQLCode <> 0 THEN rslt = 0 GOTO ext END IF UPDATE u_outwaremx SET plancode = '', Status = '', woodcode = '', pcode = '' Where mtrlwareid = :mtrlwareid[i] ; IF sqlca.SQLCode <> 0 THEN rslt = 0 GOTO ext END IF ELSE UPDATE u_mtrlware SET noallocqty = noallocqty + :noallocqty[i] Where mtrlwareid = :ll_mtrlwareid; IF sqlca.SQLCode <> 0 THEN rslt = 0 GOTO ext END IF UPDATE u_outwaremx SET mtrlwareid = :ll_mtrlwareid, plancode = '', Status = '', woodcode = '', pcode = '' Where mtrlwareid = :mtrlwareid[i] ; IF sqlca.SQLCode <> 0 THEN rslt = 0 GOTO ext END IF DELETE FROM u_mtrlware Where mtrlwareid = :mtrlwareid[i] ; IF sqlca.SQLCode <> 0 THEN rslt = 0 GOTO ext END IF END IF NEXT UPDATE u_inwaremx SET plancode = '', Status = '', woodcode = '', pcode = '' ; IF sqlca.SQLCode <> 0 THEN rslt = 0 GOTO ext END IF UPDATE u_outwaremx SET plancode = '', Status = '', woodcode = '', pcode = '' ; IF sqlca.SQLCode <> 0 THEN rslt = 0 GOTO ext END IF ext: IF rslt = 1 THEN COMMIT; MessageBox('提示','合并成功',information!,ok!) ELSE ROLLBACK; MessageBox('错误','合并失败~n'+sqlca.sqlerrtext,stopsign!,ok!) RETURN END IF end event type cb_5 from commandbutton within w_dangus end type type cb_6 from commandbutton within w_dangus boolean visible = false integer x = 567 integer y = 380 integer width = 603 integer height = 84 integer taborder = 40 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" boolean enabled = false string text = "修复外协订单已收货数" end type event clicked;datastore ds_sumqty ds_sumqty = CREATE datastore ds_sumqty.DataObject = 'ds_ow_inwarewfjg_sumqty' ds_sumqty.SetTransObject(sqlca) datastore ds_try ds_try = CREATE datastore ds_try.DataObject = 'ds_try_wfjg_cmp' ds_try.SetTransObject(sqlca) ds_sumqty.Retrieve() Long ll_i,ll_j Long ll_scid,ll_relid,ll_relprintid Decimal ld_sumqty Long ll_orderid ,ll_wrkGrpid,ll_mtrlid String ls_status,ls_woodcode,ls_pcode Int li_mtrlkind Boolean if_finish if_finish = TRUE Open(w_sys_wait_jdt) //初始化进度条 w_sys_wait_jdt.Show() w_sys_wait_jdt.wf_accepttol(ds_sumqty.RowCount()) FOR ll_i = 1 TO ds_sumqty.RowCount() ll_scid = ds_sumqty.Object.ow_wfjgmx_in_aft_scid[ll_i] ll_relid = ds_sumqty.Object.ow_wfjgmx_in_aft_relid[ll_i] ll_relprintid = ds_sumqty.Object.ow_wfjgmx_in_aft_relprintid[ll_i] ld_sumqty = ds_sumqty.Object.sumqty[ll_i] w_sys_wait_jdt.st_msg.Text = " 第"+String(ll_i)+'个,共'+String(ds_sumqty.RowCount())+'个' //进度信息 w_sys_wait_jdt.wf_inc(ll_i) UPDATE u_order_wfjgMx SET consignedqty = :ld_sumqty WHERE ( u_order_wfjgMx.wfjgid = :ll_relid ) AND ( u_order_wfjgMx.printid = :ll_relprintid ) AND ( u_order_wfjgMx.scid = :ll_scid) ; IF sqlca.SQLCode <> 0 THEN CONTINUE SELECT u_mtrldef.mtrlkind, u_order_wfjgMx.orderid, u_order_wfjgMx.wrkGrpid, u_order_wfjgMx.mtrlid, u_order_wfjgMx.status, u_order_wfjgMx.woodcode, u_order_wfjgMx.pcode INTO :li_mtrlkind, :ll_orderid, :ll_wrkGrpid, :ll_mtrlid, :ls_status, :ls_woodcode, :ls_pcode FROM u_mtrldef,u_order_wfjgMx WHERE u_mtrldef.mtrlid = u_order_wfjgMx.mtrlid AND u_order_wfjgMx.scid = :ll_scid AND u_order_wfjgMx.wfjgid = :ll_relid AND u_order_wfjgMx.printid = :ll_relprintid; IF sqlca.SQLCode <> 0 THEN CONTINUE IF li_mtrlkind = 1 THEN CONTINUE UPDATE u_OrderRqMtrl SET inqty = :ld_sumqty WHERE orderid = :ll_orderid AND wrkGrpid = :ll_wrkGrpid AND mtrlid = :ll_mtrlid AND status = :ls_status AND woodcode = :ls_woodcode AND pcode = :ls_pcode AND scid = :ll_scid And (plantype = 3); IF sqlca.SQLCode <> 0 THEN CONTINUE ds_try.Retrieve(ll_relid,ll_scid) FOR ll_j = 1 TO ds_try.RowCount() IF ds_try.Object.qty[ll_j] > 0 AND if_finish THEN if_finish = FALSE END IF NEXT IF if_finish THEN UPDATE u_order_wfjg SET status = 5, accomplishdate = getdate(), finishemp = :publ_operator WHERE ( u_order_wfjg.wfjgid = :ll_relid ) AND ( u_order_wfjg.scid = :ll_scid ) And (u_order_wfjg.status = 1); IF sqlca.SQLCode <> 0 THEN CONTINUE END IF NEXT Close(w_sys_wait_jdt) COMMIT; MessageBox('提示','更新成功',information!,ok!) end event type cb_8 from commandbutton within w_dangus boolean visible = false integer x = 1600 integer y = 500 integer width = 503 integer height = 84 integer taborder = 50 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" boolean enabled = false string text = "生产计划->指令单" end type event clicked;IF MessageBox ("if","是否确定要按原有生产计划生成指令单?执行前请选定义好产品的计划属性及生产车间",question!,yesno! ) = 2 THEN RETURN Long rslt = 1 datastore ds_order ds_order = CREATE datastore ds_order.DataObject = 'ds_tmp_order_ml_type' ds_order.SetTransObject(sqlca) ds_order.Retrieve() Long ll_row Long ll_i Long ll_mxpkid Long ll_scid,ll_orderid,ll_mtrlid,ll_produce_wrkGrpid,ll_scid_mtrlid String ls_status,ls_woodcode,ls_pcode,ls_ordercode,ls_pfcode Decimal ld_orderqty,ld_acmpqty DateTime ld_orderdate,ld_requiredate Long ll_flag Long ll_tmp_orderid String ls_sccode,ls_tmp_ordercode,ls_billcode,ls_relcode String ls_opemp,ls_assign_emp,ls_permit_emp DateTime ld_opdate,ld_permit_date String ls_dscrp DateTime server_dt String arg_msg long ll_cnt SELECT Top 1 getdate() INTO :server_dt FROM u_user ; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,日期 " GOTO ext END IF ll_row = ds_order.RowCount() Open(w_sys_wait_jdt) //初始化进度条 w_sys_wait_jdt.Show() w_sys_wait_jdt.wf_accepttol(ds_order.RowCount()) FOR ll_i = 1 TO ll_row //插入需求表 w_sys_wait_jdt.st_msg.Text = ds_order.Object.ordercode[ll_i] + " 正在执行操作..." //进度信息 w_sys_wait_jdt.wf_inc(ll_i) //进度 ll_scid = ds_order.Object.scid[ll_i] ll_orderid = ds_order.Object.orderid[ll_i] ll_mtrlid = ds_order.Object.mtrlid[ll_i] ll_produce_wrkGrpid = ds_order.Object.u_mtrldef_dftwrkgrpid[ll_i] ll_scid_mtrlid = ds_order.Object.u_mtrldef_scid[ll_i] ls_status = ds_order.Object.status_mode[ll_i] ls_woodcode = ds_order.Object.woodcode[ll_i] ls_pcode = ds_order.Object.pcode[ll_i] ls_ordercode = ds_order.Object.ordercode[ll_i] ld_orderqty = ds_order.Object.orderqty[ll_i] ld_acmpqty = ds_order.Object.acmpqty[ll_i] ls_pfcode = ds_order.Object.u_order_ml_pfcode[ll_i] ld_orderdate = ds_order.Object.orderdate[ll_i] ld_requiredate = ds_order.Object.requiredate[ll_i] ls_relcode = ds_order.Object.u_order_ml_relcode[ll_i] ls_opemp = ds_order.Object.opemp[ll_i] ld_opdate = ds_order.Object.opdate[ll_i] ls_assign_emp = ds_order.Object.assign_emp[ll_i] ls_permit_emp = ds_order.Object.permit_emp[ll_i] ld_permit_date = ds_order.Object.permit_date[ll_i] ls_dscrp = ds_order.Object.dscrp[ll_i] ll_flag = ds_order.Object.status[ll_i] ll_cnt = 0 select count(*) into :ll_cnt from u_orderRqMtrl where orderid = :ll_orderid and mtrlid = :ll_mtrlid; if sqlca.sqlcode <> 0 then rslt = 0 arg_msg = '查询操作失败,第'+string(ll_i)+'行' goto ext end if if ll_cnt > 0 then continue ll_mxpkid = f_sys_scidentity(ll_scid,"u_OrderRqMtrl","mxpkid",arg_msg,FALSE,sqlca) if isnull(ld_orderdate) then ld_orderdate = datetime(today()) if isnull(ld_requiredate) then ld_requiredate = datetime(today()) INSERT INTO u_orderRqMtrl ( scid , orderid , mtrlid , rqqty , truerqqty , plantype , rqdate , edate , wrkgrpid , produce_scid , produce_wrkgrpid , pfcode , status , woodcode , pcode , mxpkid , consignedqty) VALUES (:ll_scid, :ll_orderid, :ll_mtrlid, :ld_orderqty, :ld_orderqty, 0, :ld_orderdate, :ld_requiredate, 0, :ll_scid_mtrlid, :ll_produce_wrkGrpid, :ls_pfcode, :ls_status, :ls_woodcode, :ls_pcode, :ll_mxpkid, :ld_orderqty); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = ls_ordercode+'插入需求失败'+sqlca.SQLErrText GOTO ext END IF //加入生产指令单 IF f_get_sccode(ll_scid,sqlca,ls_sccode,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF ls_billcode = getid(ll_scid,ls_sccode+"PC",Date(server_dt),FALSE,sqlca) IF ls_billcode = "err" THEN rslt = 0 arg_msg = "无法获取排产编号"+"~n"+sqlca.SQLErrText GOTO ext END IF ll_tmp_orderid = f_sys_scidentity(ll_scid,"u_order_ml","orderid",arg_msg,FALSE,sqlca) ls_tmp_ordercode = getid(ll_scid,ls_sccode+"ZL",Date(server_dt),FALSE,sqlca) //取得新单据编号 INSERT INTO u_order_ml (scid, orderid, ordercode, billcode, relcode, orderdate, mtrlid, status_mode, woodcode, pcode, requiredate, orderqty, Opemp, opdate, dscrp, Assign_emp, ordertype, taskrelcode, pfcode, taskid, taskcode, taskmxid, cusid, porderid, pordercode, wrkGrpid, gydscrp, pfklmode, pfqty, status, acmpqty, permit_emp, permit_date) VALUES (:ll_scid, :ll_tmp_orderid, :ls_tmp_ordercode, :ls_billcode, :ls_relcode, :ld_orderdate, :ll_mtrlid, :ls_status, :ls_woodcode, :ls_pcode, :ld_requiredate, :ld_orderqty, :ls_opemp, :ld_opdate, :ls_dscrp, :ls_Assign_emp, 4, '', :ls_pfcode, 0, :ls_ordercode, :ll_mxpkid, 0, :ll_orderid, :ls_ordercode, :ll_produce_wrkGrpid, '', '', 0, :ll_flag, :ld_acmpqty, :ls_permit_emp, :ld_permit_date); IF sqlca.SQLCode <> 0 THEN arg_msg = ls_ordercode+'插入生产指令单失败,原因:'+sqlca.SQLErrText rslt = 0 GOTO ext END IF INSERT INTO u_order_ml_mx (scid, orderid, taskid, taskcode, qty, cusid, taskmxid) VALUES (:ll_scid,:ll_tmp_orderid,:ll_orderid,:ls_ordercode,:ld_orderqty,0,:ll_mxpkid); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = ls_ordercode+'插入指令单明细失败,原因:'+sqlca.SQLErrText GOTO ext END IF //复制相关明细(领料明细,工组明细,工序明细) //1.领料明细 INSERT INTO u_OrderRqMtrl_scll (scid, OrderID, MtrlID, wrkGrpid, trueRqqty, DstrQty, costamt, status, woodcode, pcode, ctmint, ifchanged) SELECT scid,:ll_tmp_orderid, MtrlID, wrkGrpid, trueRqqty, DstrQty, costamt, status, woodcode, pcode, ctmint, ifchanged FROM u_OrderRqMtrl_scll WHERE orderid = :ll_orderid AND scid = :ll_scid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = ls_ordercode+'插入领料明细失败,原因:'+sqlca.SQLErrText GOTO ext END IF //2.工序明细 INSERT INTO U_OrderRqwp (scid, Mtrlid, Procode, Proname, Proorder, proqty, finishqty, printnum, orderid, wrkGrpid, lsxtype, ctmint, finishemp, finishdate, finishflag, workPrice) SELECT scid, Mtrlid, Procode, Proname, Proorder, proqty, finishqty, printnum, :ll_tmp_orderid, wrkGrpid, lsxtype, ctmint, finishemp, finishdate, finishflag, workPrice FROM U_OrderRqwp WHERE orderid = :ll_orderid AND scid = :ll_scid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = ls_ordercode+'插入工序明细失败,原因:'+sqlca.SQLErrText GOTO ext END IF //3.工组明细 INSERT INTO u_OrderMtrl_workgroup (scid, mtrlid, wrkGrpid, owrkGrpid, orderqty, requiredate, lastdays, finishqty, finishdate, finishflag, ifjd, orderid, ctmint, wkpname, printid, dscrp) SELECT scid, mtrlid, wrkGrpid, owrkGrpid, orderqty, requiredate, lastdays, finishqty, finishdate, finishflag, ifjd, :ll_tmp_orderid, ctmint, wkpname, printid, dscrp FROM u_OrderMtrl_workgroup WHERE orderid = :ll_orderid AND scid = :ll_scid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = ls_ordercode+'插入工组明细失败,原因:'+sqlca.SQLErrText GOTO ext END IF NEXT ext: Close(w_sys_wait_jdt) IF rslt = 1 THEN COMMIT; messagebox('提示','操作成功!',information!,ok!) ELSE ROLLBACK; messagebox('错误',arg_msg,stopsign!,ok!) END IF end event type cb_9 from commandbutton within w_dangus end type type cb_10 from commandbutton within w_dangus boolean visible = false integer x = 1586 integer y = 604 integer width = 658 integer height = 88 integer taborder = 60 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" boolean enabled = false string text = "生成工组计件单相关人员" end type event clicked;Long billid[],wrkgrpid[] Long ll_i,i,ll_j,l String relempstr String ls_empname[] w_sys_wait.Show() w_sys_wait.wf_set_msg('正在修复数据...') ll_i = 1 l = 1 //更新月计件单 DECLARE cur_scwg CURSOR FOR SELECT billid, wrkGrpid FROM u_scwg_taskwork_2 WHERE (billtype = 0) OR (billtype = 2); OPEN cur_scwg; FETCH cur_scwg INTO :billid[ll_i],:wrkgrpid[ll_i]; DO WHILE sqlca.SQLCode = 0 ll_i++ FETCH cur_scwg INTO :billid[ll_i],:wrkgrpid[ll_i]; LOOP CLOSE cur_scwg; FOR i = 1 TO ll_i - 1 l = 1 DECLARE cur_emp CURSOR FOR SELECT u_rs_empinfo.Empname FROM u_rs_empinfo, u_workgroupmx WHERE ( u_rs_empinfo.empid = u_workgroupmx.empid ) AND (u_workgroupmx.workgroupid = :wrkgrpid[i]); OPEN cur_emp; FETCH cur_emp INTO :ls_empname[l]; DO WHILE sqlca.SQLCode = 0 l++ FETCH cur_emp INTO :ls_empname[l]; LOOP CLOSE cur_emp; FOR ll_j = 1 TO l - 1 relempstr = relempstr + ls_empname[ll_j] + ',' NEXT UPDATE u_scwg_taskwork_2 SET relempstr = :relempstr Where billid = :billid[i]; IF sqlca.SQLCode <> 0 THEN ROLLBACK; w_sys_wait.Hide() MessageBox('错误','更新失败'+'~n'+sqlca.SQLErrText,stopsign!,ok!) RETURN END IF relempstr = '' NEXT Long billid_day[] Long ll_k,k,ll_l,p p = 1 ll_k = 1 //更新日计件单 DECLARE cur_day CURSOR FOR SELECT billid FROM u_scwg_taskwork_day; OPEN cur_day; FETCH cur_day INTO :billid_day[ll_k]; DO WHILE sqlca.SQLCode = 0 ll_k++ FETCH cur_day INTO :billid_day[ll_k]; LOOP CLOSE cur_day; FOR k = 1 TO ll_k - 1 p= 1 DECLARE cur_emp_day CURSOR FOR SELECT u_rs_empinfo.Empname FROM u_scwg_taskwork_day_mx_emp, u_rs_empinfo WHERE (u_rs_empinfo.empid = u_scwg_taskwork_day_mx_emp.empid) AND (u_scwg_taskwork_day_mx_emp.billid = :billid_day[k]); OPEN cur_emp_day; FETCH cur_emp_day INTO :ls_empname[p]; DO WHILE sqlca.SQLCode = 0 p++ FETCH cur_emp_day INTO :ls_empname[p]; LOOP CLOSE cur_emp_day; FOR ll_l = 1 TO p - 1 relempstr = relempstr + ls_empname[ll_l] + ',' NEXT UPDATE u_scwg_taskwork_day SET relempstr = :relempstr Where billid = :billid_day[k]; IF sqlca.SQLCode <> 0 THEN ROLLBACK; w_sys_wait.Hide() MessageBox('错误','更新失败'+'~n'+sqlca.SQLErrText,stopsign!,ok!) RETURN END IF relempstr = '' NEXT commit; w_sys_wait.Hide() messagebox('提示','更新成功!',information!,ok!) end event type cb_11 from commandbutton within w_dangus boolean visible = false integer x = 567 integer y = 136 integer width = 603 integer height = 84 integer taborder = 50 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" boolean enabled = false string text = "合并外协订单发出明细" end type event clicked;IF Not sys_power_issuper THEN MessageBox('系统提示','非管理员不可以操作') RETURN END IF Long rslt = 1 Long li_row Long li_mtrlwareid Long li_mtrlid Long li_storageid IF MessageBox ("if","是否确定要对外协订单发出明细进行合并?合并后将不能恢复!",question!,yesno! ) = 2 THEN RETURN Long mtrlwareid[],storageid[],cnt = 0,ll_mtrlwareid,ll_storageid,i,mtrlid[],ll_mtrlid Decimal noallocqty[],ld_noallocqty DECLARE cur CURSOR FOR SELECT mtrlwareid,storageid,mtrlid,noallocqty FROM u_mtrlware Where plancode <> '' Or Status <> '' Or woodcode <> '' Or pcode <> '' ; OPEN cur; FETCH cur Into :ll_mtrlwareid,:ll_storageid,:ll_mtrlid,:ld_noallocqty; DO WHILE sqlca.SQLCode = 0 cnt ++ mtrlwareid[cnt ] = ll_mtrlwareid storageid[cnt] = ll_storageid mtrlid[cnt] = ll_mtrlid noallocqty[cnt] = ld_noallocqty FETCH cur Into :ll_mtrlwareid,:ll_storageid,:ll_mtrlid,:ld_noallocqty; LOOP CLOSE cur; FOR i = 1 To cnt SELECT mtrlwareid INTO :ll_mtrlwareid FROM u_mtrlware WHERE plancode = '' AND Status = '' AND woodcode = '' AND pcode = '' AND storageid = :storageid[i] And mtrlid = :mtrlid[i]; IF sqlca.SQLCode = -1 THEN rslt = 0 GOTO ext ELSEIF sqlca.SQLCode = 100 THEN UPDATE u_mtrlware SET plancode = '', Status = '', woodcode = '', pcode = '' Where mtrlwareid = :mtrlwareid[i] ; IF sqlca.SQLCode <> 0 THEN rslt = 0 GOTO ext END IF UPDATE u_outwaremx SET plancode = '', Status = '', woodcode = '', pcode = '' Where mtrlwareid = :mtrlwareid[i] ; IF sqlca.SQLCode <> 0 THEN rslt = 0 GOTO ext END IF ELSE UPDATE u_mtrlware SET noallocqty = noallocqty + :noallocqty[i] Where mtrlwareid = :ll_mtrlwareid; IF sqlca.SQLCode <> 0 THEN rslt = 0 GOTO ext END IF UPDATE u_outwaremx SET mtrlwareid = :ll_mtrlwareid, plancode = '', Status = '', woodcode = '', pcode = '' Where mtrlwareid = :mtrlwareid[i] ; IF sqlca.SQLCode <> 0 THEN rslt = 0 GOTO ext END IF DELETE FROM u_mtrlware Where mtrlwareid = :mtrlwareid[i] ; IF sqlca.SQLCode <> 0 THEN rslt = 0 GOTO ext END IF END IF NEXT UPDATE u_inwaremx SET plancode = '', Status = '', woodcode = '', pcode = '' ; IF sqlca.SQLCode <> 0 THEN rslt = 0 GOTO ext END IF UPDATE u_outwaremx SET plancode = '', Status = '', woodcode = '', pcode = '' ; IF sqlca.SQLCode <> 0 THEN rslt = 0 GOTO ext END IF ext: IF rslt = 1 THEN COMMIT; MessageBox('提示','合并成功',information!,ok!) ELSE ROLLBACK; MessageBox('错误','合并失败~n'+sqlca.sqlerrtext,stopsign!,ok!) RETURN END IF end event type cb_16 from commandbutton within w_dangus boolean visible = false integer x = 1650 integer y = 148 integer width = 658 integer height = 84 integer taborder = 50 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" boolean enabled = false string text = "更新发货单结存(软体版)" end type event clicked;Long balcdateint[] DateTime balcdate[] Long Storageid[] Long ll_i,i UPDATE u_outware SET flag = 1 Where (flag = 5); IF sqlca.SQLCode <> 0 THEN MessageBox('错误','更新单据仓审标记失败',stopsign!,ok!) ROLLBACK; RETURN END IF ll_i = 1 DECLARE cur_mx CURSOR FOR SELECT DISTINCT balcdateint, balcdate, Storageid FROM u_warebalc WHERE (balcdateint > 0) AND (Storageid IN (SELECT DISTINCT u_outware.StorageID FROM u_outware INNER JOIN u_storage ON u_outware.StorageID = u_storage.storageid WHERE (u_outware.billtype = 1))) Order By Storageid, balcdateint; OPEN cur_mx; FETCH cur_mx INTO :balcdateint[ll_i],:balcdate[ll_i],:Storageid[ll_i]; DO WHILE sqlca.SQLCode = 0 ll_i++ FETCH cur_mx INTO :balcdateint[ll_i],:balcdate[ll_i],:Storageid[ll_i]; LOOP CLOSE cur_mx; Open(w_sys_wait_jdt) //初始化进度条 w_sys_wait_jdt.Show() w_sys_wait_jdt.wf_accepttol(ll_i - 1) FOR i = 1 TO ll_i - 1 w_sys_wait_jdt.st_msg.Text = string(i)+'/'+string(ll_i - 1) + " 正在执行操作..." //进度信息 w_sys_wait_jdt.wf_inc(i) //进度 UPDATE u_outware SET balcflag = 1 , u_outware.balcdateint = :balcdateint[i] WHERE ( u_outware.flag = 1 ) AND ( u_outware.balcflag = 0 ) AND ( u_outware.storageid = :Storageid[i] ) AND ( u_outware.balcdateint = 0 ) AND ( year(u_outware.outdate) = year(:balcdate[i]) ) AND ( Month(u_outware.outdate) = Month(:balcdate[i])) and ( u_outware.billtype = 1 ); IF sqlca.SQLCode <> 0 THEN ROLLBACK; MessageBox('错误','更新失败',stopsign!,ok!) RETURN END IF NEXT Close(w_sys_wait_jdt) commit; messagebox('提示','操作成功!',information!,ok!) end event type cb_17 from commandbutton within w_dangus boolean visible = false integer x = 1541 integer y = 392 integer width = 878 integer height = 84 integer taborder = 50 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" boolean enabled = false string text = "修复软件版升L1导数据后结存错误" end type event clicked;open(w_repair_balc) end event type cb_18 from uo_imflatbutton within w_dangus boolean visible = false integer x = 1554 integer y = 272 integer width = 686 integer taborder = 50 boolean bringtotop = true boolean enabled = false string text = "销售订单成品仓增加0库存" end type event clicked;call super::clicked;datastore ds_task ds_task = CREATE datastore ds_task.DataObject = 'ds_saletask' ds_task.SetTransObject(sqlca) ds_task.Retrieve() Long ll_i Long rslt = 1 Long ll_storageid_arr[],ll_storageid Long ll_scid_arr[],ll_scid String ll_storagename_arr[],ls_storagename Long ll_j,count Int li_balctype_arr[],li_balctype Long ll_cusid String ls_status,ls_mtrlcode,ls_pcode,ls_woodcode,ls_plancode Long ll_mtrlwareid,ll_mtrlid String arg_msg Long ll_cnt ll_cnt = 0 SELECT u_storage.storageid, u_storage.storagename, u_storage.scid, u_storage.balctype INTO :ll_storageid, :ls_storagename, :ll_scid, :li_balctype FROM u_storage Where ( u_storage.storageid = 11 ); IF sqlca.SQLCode <> 0 THEN MessageBox('Error','查询成品仓失败') RETURN END IF Open(w_sys_wait_jdt) //初始化进度条 w_sys_wait_jdt.Show() w_sys_wait_jdt.wf_accepttol(ds_task.RowCount()) FOR ll_i = 1 TO ds_task.RowCount() w_sys_wait_jdt.st_msg.Text = "正在执行操作..." //进度信息 w_sys_wait_jdt.wf_inc(ll_i) ll_mtrlid = ds_task.Object.u_saletaskmx_mtrlid[ll_i] ls_mtrlcode = ds_task.Object.u_mtrldef_mtrlcode[ll_i] ls_status = ds_task.Object.u_saletaskmx_status[ll_i] ls_pcode = ds_task.Object.u_saletaskmx_pcode[ll_i] ls_woodcode = ds_task.Object.u_saletaskmx_woodcode[ll_i] ls_plancode = ds_task.Object.u_saletaskmx_mtrlcuscode[ll_i] IF li_balctype = 1 THEN ll_cusid = ds_task.Object.u_saletask_cusid[ll_i] ELSE ll_cusid = 0 END IF SELECT top 1 mtrlwareid INTO :ll_mtrlwareid FROM u_mtrlware WHERE mtrlid = :ll_mtrlid AND status = :ls_status AND storageid = :ll_storageid AND woodcode = :ls_woodcode AND plancode = :ls_plancode AND pcode = :ls_pcode AND sptid = :ll_cusid; IF sqlca.SQLCode = -1 THEN // arg_msg = '查询:'+ls_mtrlcode+'仓库:'+ll_storagename_arr[ll_j]+'库存失败' // rslt = 0 // GOTO ext ll_cnt++ CONTINUE ELSEIF sqlca.SQLCode = 100 THEN ll_mtrlwareid = 0 ll_mtrlwareid = f_sys_scidentity(ll_scid,"u_mtrlware","mtrlwareid",arg_msg,FALSE,sqlca) IF ll_mtrlwareid <= 0 THEN // rslt = 0 // GOTO ext ll_cnt++ ROLLBACK; CONTINUE END IF INSERT INTO u_mtrlware(scid,mtrlwareid,mtrlid,storageid,noallocqty,status,plancode,woodcode,pcode,sptid) Values(:ll_scid,:ll_mtrlwareid,:ll_mtrlid,:ll_storageid,0,:ls_status,:ls_plancode,:ls_woodcode,:ls_pcode,:ll_cusid); IF sqlca.SQLCode <> 0 THEN // arg_msg = '产品:'+ls_mtrlcode+'仓库:'+ll_storagename_arr[ll_j]+'加0库存失败或物料已经有库存,请检查' // rslt = 0 // GOTO ext ll_cnt++ ROLLBACK; CONTINUE ELSE COMMIT; END IF END IF NEXT //ext: Close(w_sys_wait_jdt) MessageBox('提示','操作完成!失败:'+String(ll_cnt)+'条',information!,ok!) end event type cb_19 from commandbutton within w_dangus integer x = 46 integer y = 580 integer width = 439 integer height = 96 integer taborder = 70 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" boolean enabled = false string text = "修复历史库存表" end type event clicked;Long ll_mtrlid[],ll_storageid[],ll_sptid_cusid[] String ls_status[],ls_woodcode[],ls_pcode[] Long ll_scid Long i,ll_i,j,ll_j Long cnt Long ls_mtrlwareid String arg_msg Long ll_mtrlid_out[],ll_storageid_out[],ll_sptid_cusid_out[] String ls_status_out[],ls_woodcode_out[],ls_pcode_out[] i = 1 j = 1 DECLARE cur_in CURSOR FOR SELECT mtrlid, storageid, status, woodcode, pcode, sptid_cusid FROM v_ware_inc; OPEN cur_in; FETCH cur_in INTO :ll_mtrlid[i],:ll_storageid[i],:ls_status[i],:ls_woodcode[i],:ls_pcode[i],:ll_sptid_cusid[i]; DO WHILE sqlca.SQLCode = 0 i++ FETCH cur_in INTO :ll_mtrlid[i],:ll_storageid[i],:ls_status[i],:ls_woodcode[i],:ls_pcode[i],:ll_sptid_cusid[i]; LOOP CLOSE cur_in; Open(w_sys_wait_jdt) //初始化进度条 w_sys_wait_jdt.Show() w_sys_wait_jdt.wf_accepttol(i - 1) FOR ll_i = 1 TO i - 1 w_sys_wait_jdt.st_msg.Text = '1.更新进仓' w_sys_wait_jdt.wf_inc(ll_i) //进度 cnt = 0 SELECT count(*) INTO :cnt FROM u_mtrlware WHERE mtrlid = :ll_mtrlid[ll_i] AND storageid = :ll_storageid[ll_i] AND status = :ls_status[ll_i] AND woodcode = :ls_woodcode[ll_i] AND pcode = :ls_pcode[ll_i] AND Sptid = :ll_sptid_cusid[ll_i]; IF sqlca.SQLCode <> 0 THEN CONTINUE IF cnt = 0 THEN IF f_insert_0_mtrlware(ls_mtrlwareid,ll_mtrlid[ll_i],'',ll_storageid[ll_i],ll_sptid_cusid[ll_i],ls_status[ll_i],ls_woodcode[ll_i],ls_pcode[ll_i],'',0,arg_msg) = 0 THEN CONTINUE END IF END IF NEXT Close(w_sys_wait_jdt) DECLARE cur_out CURSOR FOR SELECT mtrlid, storageid, status, woodcode, pcode, sptid FROM v_ware_des; OPEN cur_out; FETCH cur_out INTO :ll_mtrlid_out[j],:ll_storageid_out[j],:ls_status_out[j],:ls_woodcode_out[j],:ls_pcode_out[j],:ll_sptid_cusid_out[j]; DO WHILE sqlca.SQLCode = 0 j++ FETCH cur_out INTO :ll_mtrlid_out[j],:ll_storageid_out[j],:ls_status_out[j],:ls_woodcode_out[j],:ls_pcode_out[j],:ll_sptid_cusid_out[j]; LOOP CLOSE cur_out; Open(w_sys_wait_jdt) //初始化进度条 w_sys_wait_jdt.Show() w_sys_wait_jdt.wf_accepttol(j - 1) FOR ll_j = 1 TO j - 1 w_sys_wait_jdt.st_msg.Text = '1.更新出仓' w_sys_wait_jdt.wf_inc(ll_j) //进度 cnt = 0 SELECT count(*) INTO :cnt FROM u_mtrlware WHERE mtrlid = :ll_mtrlid_out[ll_j] AND storageid = :ll_storageid_out[ll_j] AND status = :ls_status_out[ll_j] AND woodcode = :ls_woodcode_out[ll_j] AND pcode = :ls_pcode_out[ll_j] AND Sptid = :ll_sptid_cusid_out[ll_j]; IF sqlca.SQLCode <> 0 THEN CONTINUE IF cnt = 0 THEN IF f_insert_0_mtrlware(ls_mtrlwareid,ll_mtrlid_out[ll_j],'',ll_storageid_out[ll_j],ll_sptid_cusid_out[ll_j],ls_status_out[ll_j],ls_woodcode_out[ll_j],ls_pcode_out[ll_j],'',0,arg_msg) = 0 THEN CONTINUE END IF END IF NEXT Close(w_sys_wait_jdt) MessageBox('提示','执行完毕',information!,ok!) end event type cb_20 from commandbutton within w_dangus integer x = 613 integer y = 952 integer width = 329 integer height = 84 integer taborder = 20 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" boolean enabled = false string text = "更新出纳帐" end type event clicked;Long accountid[] Long i,j,k Long it_max Long rapmoneyid[] Dec msttakeamt[] Dec takeamt[] Dec balcamt[] Long rslt rslt = 1 accountid[1] = 15 accountid[2] = 16 accountid[3] = 12 accountid[4] = 11 Transaction commit_transaction commit_transaction = sqlca Open(w_sys_wait) //初始化进度条 w_sys_wait.Show() FOR i = 1 TO 4 it_max = 1 DECLARE cur CURSOR FOR SELECT rapmoneyid, msttakeamt, takeamt, balcamt FROM u_rap_money WHERE (accountid = :accountid[i]) Order By printid USING commit_transaction; OPEN cur; FETCH cur INTO :rapmoneyid[it_max], :msttakeamt[it_max], :takeamt[it_max], :balcamt[it_max]; DO WHILE commit_transaction.SQLCode = 0 j++ w_sys_wait.st_2.Text = '系统正在处理,请稍候...' + String(j) it_max ++ FETCH cur INTO :rapmoneyid[it_max], :msttakeamt[it_max], :takeamt[it_max], :balcamt[it_max]; LOOP CLOSE cur; FOR k = 2 TO it_max balcamt[k] = balcamt[k - 1 ] + msttakeamt[k] - takeamt[k] UPDATE u_rap_money SET balcamt = :balcamt[k] Where rapmoneyid = :rapmoneyid[k]; IF sqlca.SQLCode <> 0 THEN rslt = 0 GOTO ext END IF NEXT NEXT ext: IF rslt = 0 THEN ROLLBACK; MessageBox('错误','失败',stopsign!,ok!) ELSE COMMIT; MessageBox('提示','成功',information!,ok!) END IF Close(w_sys_wait) end event type cb_21 from commandbutton within w_dangus integer x = 576 integer y = 28 integer width = 603 integer height = 84 integer taborder = 50 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" string text = "更新销售订单单据金额" end type event clicked;long rslt = 1 string arg_msg decimal lde_msttakeamt IF sys_option_mst_multimoney = 1 THEN //使用多币种 UPDATE u_SaleTask SET msttakeamt = a.billamt FROM u_SaleTask INNER JOIN (SELECT SUM(ROUND(u_SaleTaskMx.enprice * u_SaleTaskMx.usaleqty * u_SaleTaskMx.rebate, 2)) AS billamt, u_SaleTask.scid, u_SaleTask.TaskID FROM u_SaleTask INNER JOIN u_SaleTaskMx ON u_SaleTask.scid = u_SaleTaskMx.scid AND u_SaleTask.TaskID = u_SaleTaskMx.TaskID GROUP BY u_SaleTask.scid, u_SaleTask.TaskID) a ON u_SaleTask.scid = a.scid AND u_SaleTask.TaskID = a.TaskID WHERE msttakeamt = 0; ELSE // 系统不使用多币种,转换为人民币 UPDATE u_SaleTask SET msttakeamt = a.billamt FROM u_SaleTask INNER JOIN (SELECT SUM(ROUND(u_SaleTask.mrate * u_SaleTaskMx.enprice * u_SaleTaskMx.usaleqty * u_SaleTaskMx.rebate, 2)) AS billamt, u_SaleTask.scid, u_SaleTask.TaskID FROM u_SaleTask INNER JOIN u_SaleTaskMx ON u_SaleTask.scid = u_SaleTaskMx.scid AND u_SaleTask.TaskID = u_SaleTaskMx.TaskID GROUP BY u_SaleTask.scid, u_SaleTask.TaskID) a ON u_SaleTask.scid = a.scid AND u_SaleTask.TaskID = a.TaskID WHERE msttakeamt = 0; END IF if sqlca.sqlcode <> 0 then rslt = 0 arg_msg = '更新失败,'+sqlca.sqlerrtext end if if rslt = 1 then commit; messagebox('','更新成功') else rollback; messagebox('',arg_msg) end if end event type cb_22 from commandbutton within w_dangus integer x = 571 integer y = 380 integer width = 603 integer height = 84 integer taborder = 60 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" string text = "允许用户更新开" end type event clicked;Long ll_count SELECT count(*) Into :ll_count From sys_msg Using sqlca; IF ll_count > 1 THEN DELETE sys_msg; COMMIT; INSERT Into sys_msg (allow_update) Values (1) ; COMMIT; ELSE UPDATE sys_msg Set allow_update = 1; COMMIT; END IF end event type cb_23 from commandbutton within w_dangus integer x = 1202 integer y = 32 integer width = 658 integer height = 84 integer taborder = 60 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" string text = "更新进仓明细mtrlwareid" end type event clicked;UPDATE u_inwaremx SET mtrlwareid = u_mtrlware.mtrlwareid FROM u_inware INNER JOIN u_inwaremx ON u_inware.scid = u_inwaremx.scid AND u_inware.inwareid = u_inwaremx.inwareid INNER JOIN u_mtrlware ON u_inwaremx.scid = u_mtrlware.scid AND u_inwaremx.mtrlid = u_mtrlware.mtrlid AND u_inwaremx.plancode = u_mtrlware.plancode AND u_inwaremx.status = u_mtrlware.Status AND u_inwaremx.woodcode = u_mtrlware.woodcode AND u_inwaremx.pcode = u_mtrlware.pcode AND u_inwaremx.sptid_cusid = u_mtrlware.Sptid AND u_inware.storageid = u_mtrlware.storageid AND u_inware.Dxflag = u_mtrlware.Dxflag Where (u_inware.flag = 1) And (u_inwaremx.mtrlwareid = 0); IF sqlca.SQLCode <> 0 THEN ROLLBACK; MessageBox('','失败') ELSE COMMIT; MessageBox('','成功') END IF end event type cb_24 from commandbutton within w_dangus integer x = 1211 integer y = 124 integer width = 658 integer height = 84 integer taborder = 70 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" string text = "更新进仓明细costamt" end type event clicked;UPDATE u_inwaremx SET costamt = ROUND(cost * qty, 2); if sqlca.sqlcode <> 0 then rollback; messagebox('', '更新失败,'+sqlca.sqlerrtext) else commit; messagebox('','更新成功') end if end event type cb_25 from commandbutton within w_dangus integer x = 576 integer y = 140 integer width = 603 integer height = 84 integer taborder = 60 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" string text = "更新销售发货单据金额" end type event clicked;Long rslt = 1 String arg_msg Decimal lde_msttakeamt IF sys_option_outware_if_saleqty = 0 THEN UPDATE u_outwaremx SET saleqty = u_outwaremx.uqty, enamt = ROUND(u_outwaremx.uqty * u_outwaremx.enprice * u_outwaremx.rebate, 2), bsamt = ROUND(u_outwaremx.uqty * u_outwaremx.enprice * u_outwaremx.rebate * u_outware.mrate, 2) FROM u_outwaremx INNER JOIN u_outware ON u_outwaremx.scid = u_outware.scid AND u_outwaremx.outwareid = u_outware.outwareid Where u_outware.billtype = 1 And u_outwaremx.saleqty = 0 ; ELSE UPDATE u_outwaremx SET enamt = ROUND(u_outwaremx.saleqty * u_outwaremx.enprice * u_outwaremx.rebate, 2), bsamt = ROUND(u_outwaremx.saleqty * u_outwaremx.enprice * u_outwaremx.rebate * u_outware.mrate, 2) FROM u_outwaremx INNER JOIN u_outware ON u_outwaremx.scid = u_outware.scid AND u_outwaremx.outwareid = u_outware.outwareid Where u_outware.billtype = 1; END IF IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '更新失败,'+sqlca.SQLErrText END IF IF rslt = 1 THEN COMMIT; MessageBox('','更新成功') ELSE ROLLBACK; MessageBox('',arg_msg) END IF end event type cb_26 from commandbutton within w_dangus integer x = 576 integer y = 224 integer width = 603 integer height = 84 integer taborder = 70 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" string text = "更新采购收货单据金额" end type event clicked;Long rslt = 1 String arg_msg Decimal lde_msttakeamt IF sys_option_outware_if_buyqty = 0 THEN UPDATE u_inwaremx SET buyqty = u_inwaremx.uqty, uamt = ROUND(u_inwaremx.uqty * u_inwaremx.uprice * u_inwaremx.rebate,2), bsamt = ROUND(u_inwaremx.uqty * u_inwaremx.uprice * u_inwaremx.rebate * u_inware.mrate,2) FROM u_inwaremx INNER JOIN u_inware ON u_inwaremx.scid = u_inware.scid AND u_inwaremx.inwareid = u_inware.inwareid Where u_inware.billtype = 1 And u_inwaremx.buyqty = 0; ELSE UPDATE u_inwaremx SET uamt = ROUND(u_inwaremx.buyqty * u_inwaremx.uprice * u_inwaremx.rebate,2), bsamt = ROUND(u_inwaremx.buyqty * u_inwaremx.uprice * u_inwaremx.rebate * u_inware.mrate,2) FROM u_inwaremx INNER JOIN u_inware ON u_inwaremx.scid = u_inware.scid AND u_inwaremx.inwareid = u_inware.inwareid Where u_inware.billtype = 1; END IF IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '更新失败,'+sqlca.SQLErrText END IF IF rslt = 1 THEN COMMIT; MessageBox('','更新成功') ELSE ROLLBACK; MessageBox('',arg_msg) END IF end event type cb_15 from commandbutton within w_dangus integer x = 1234 integer y = 656 integer width = 603 integer height = 84 integer taborder = 50 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" string text = "先进先出 仓库初始化" end type event clicked;open(w_temp_storage_inout) end event