$PBExportHeader$w_cmp_balc.srw forward global type w_cmp_balc from w_publ_base end type type mle_log from multilineedit within w_cmp_balc end type type cb_1 from uo_imflatbutton within w_cmp_balc end type type cbx_1 from checkbox within w_cmp_balc end type type ddlb_storageid from uo_ddlb_storageid within w_cmp_balc end type type st_2 from statictext within w_cmp_balc end type type em_month from editmask within w_cmp_balc end type type gb_1 from groupbox within w_cmp_balc end type end forward global type w_cmp_balc from w_publ_base integer width = 3200 integer height = 2000 string title = "结存重算" boolean maxbox = true windowstate windowstate = maximized! mle_log mle_log cb_1 cb_1 cbx_1 cbx_1 ddlb_storageid ddlb_storageid st_2 st_2 em_month em_month gb_1 gb_1 end type global w_cmp_balc w_cmp_balc type variables Long cur_storageid = -1 end variables on w_cmp_balc.create int iCurrent call super::create this.mle_log=create mle_log this.cb_1=create cb_1 this.cbx_1=create cbx_1 this.ddlb_storageid=create ddlb_storageid this.st_2=create st_2 this.em_month=create em_month this.gb_1=create gb_1 iCurrent=UpperBound(this.Control) this.Control[iCurrent+1]=this.mle_log this.Control[iCurrent+2]=this.cb_1 this.Control[iCurrent+3]=this.cbx_1 this.Control[iCurrent+4]=this.ddlb_storageid this.Control[iCurrent+5]=this.st_2 this.Control[iCurrent+6]=this.em_month this.Control[iCurrent+7]=this.gb_1 end on on w_cmp_balc.destroy call super::destroy destroy(this.mle_log) destroy(this.cb_1) destroy(this.cbx_1) destroy(this.ddlb_storageid) destroy(this.st_2) destroy(this.em_month) destroy(this.gb_1) end on event resize;call super::resize;mle_log.Width = THIS.Width - 30 mle_log.Height = THIS.Height - mle_log.Y - 30 end event type cb_func from w_publ_base`cb_func within w_cmp_balc integer x = 46 integer y = 1272 end type type cb_exit from w_publ_base`cb_exit within w_cmp_balc integer x = 2226 integer y = 44 end type type mle_log from multilineedit within w_cmp_balc integer y = 160 integer width = 3136 integer height = 1712 integer taborder = 20 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 boolean vscrollbar = true boolean displayonly = true borderstyle borderstyle = stylelowered! end type type cb_1 from uo_imflatbutton within w_cmp_balc integer x = 1929 integer y = 44 integer height = 96 integer taborder = 10 boolean bringtotop = true string text = "计算" end type event clicked;call super::clicked;//IF cur_storageid <= 0 THEN // MessageBox(publ_operator,'请选择仓库') // RETURN //END IF // //DateTime ld_balcdate //Long ls_i //Long ll_rowcount // //Long rslt = 1 //String arg_log,arg_msg //String char_enter // //char_enter = Char(13)+Char(10) //换行符 //ld_balcdate = DateTime(Date(em_month.Text),Time('23:59:59')) // //IF uf_warebalc_check_inoutflag(cur_storageid,ld_balcdate,arg_msg) = 0 THEN // MessageBox(publ_operator,arg_msg) // RETURN //END IF // //datastore ds // //ds = CREATE datastore //ds.DataObject = 'dw_warebalc_view' //ds.SetTransObject(sqlca) //ds.Retrieve(cur_storageid) // //ll_rowcount = ds.RowCount() //IF ll_rowcount <= 0 THEN // rslt = 0 // arg_log = '没有结存数据' // GOTO ext //END IF // //Open(w_sys_wait_jdt) //初始化进度条 //w_sys_wait_jdt.Show() //w_sys_wait_jdt.wf_accepttol(ll_rowcount) // //Long cnt //Long ll_mtrlid //Long ll_mtrlorigin //String ls_mtrlcode,ls_mtrlname,ls_status // //Dec ld_incamt,ld_incqty //Dec ld_planprice,ld_newprice // // //Dec ls_balcamt,ls_bgamt,ls_outwareprice //Dec ls_decqty,ls_wareamt,ls_desamt //Dec ls_temp_cost,ls_temp_jgprice //Long ll_temp_scid,ll_temp_inwareid,ll_temp_printid // ////循环列表计算 //FOR ls_i = 1 TO ll_rowcount // ls_mtrlcode = ds.Object.u_mtrldef_mtrlcode[ls_i] // ls_mtrlname = ds.Object.u_mtrldef_mtrlname[ls_i] // // w_sys_wait_jdt.st_msg.Text = ls_mtrlcode+'/'+ ls_mtrlname + " 正在处理..." //进度信息 // // ll_mtrlid = ds.Object.u_mtrldef_mtrlid[ls_i] // ls_balcamt = ds.Object.u_mtrldef_balcamt[ls_i] // ls_bgamt = ds.Object.u_mtrldef_bgamt[ls_i] // ls_status = ds.Object.u_warebalc_status[ls_i] // ls_decqty = ds.Object.u_mtrldef_desqty[ls_i] // ld_incqty = ds.Object.u_mtrldef_incqty[ls_i] // // //查物料来源 // SELECT mtrlorigin // INTO :ll_mtrlorigin // FROM u_mtrldef // Where mtrlid = :ll_mtrlid; // IF sqlca.SQLCode <> 0 THEN // arg_log = ls_mtrlcode+'查询物料来源失败'+char_enter // CONTINUE // END IF // // // CHOOSE CASE ll_mtrlorigin // CASE 0,5 // cnt = 0 // SELECT count(*) INTO :cnt // FROM u_inwaremx,u_inware // WHERE u_inwaremx.scid = u_inware.scid // AND u_inwaremx.inwareid = u_inware.inwareid // AND u_inware.storageid = :cur_storageid // AND u_inware.indate <= :ld_balcdate // AND u_inware.flag = 1 // and u_inware.billtype <> 1 // and u_inware.billtype <> 4 // AND u_inware.balcdateint = 0 // AND u_inwaremx.fprice = 0 // AND u_inwaremx.mtrlid = :ll_mtrlid // AND u_inwaremx.status = :ls_status; // IF sqlca.SQLCode <> 0 THEN // arg_log = ls_mtrlcode+'查询0进价单据失败' // CONTINUE // END IF // // IF cnt = 0 THEN // SELECT planprice // INTO :ld_planprice // FROM u_mtrldef // Where mtrlid = :ll_mtrlid; // IF sqlca.SQLCode <> 0 THEN // arg_log = ls_mtrlcode+'查询计划价失败'+char_enter // CONTINUE // END IF // // IF ld_planprice = 0 THEN // arg_log = ls_mtrlcode+'计划价为0'+char_enter // CONTINUE // END IF // // UPDATE u_inwaremx // SET u_inwaremx.fprice = :ld_planprice, // u_inwaremx.uprice = :ld_planprice, // u_inwaremx.cost = :ld_planprice * u_inwaremx.rebate, // u_inwaremx.price = :ld_planprice * u_inwaremx.rebate // FROM u_inwaremx,u_inware // WHERE u_inwaremx.scid = u_inware.scid // AND u_inwaremx.inwareid = u_inware.inwareid // AND u_inware.storageid = :cur_storageid // AND u_inware.indate <= :ld_balcdate // AND u_inware.flag = 1 // and u_inware.billtype <> 1 // and u_inware.billtype <> 4 // AND u_inware.balcdateint = 0 // AND u_inwaremx.fprice = 0 // AND u_inwaremx.mtrlid = :ll_mtrlid // AND u_inwaremx.status = :ls_status; // IF sqlca.SQLCode <> 0 THEN // arg_log = ls_mtrlcode+'更新0进价单据失败' // CONTINUE // END IF // END IF // // CASE 2 // cnt = 0 // SELECT count(*) INTO :cnt // FROM u_inwaremx,u_inware // WHERE u_inwaremx.scid = u_inware.scid // AND u_inwaremx.inwareid = u_inware.inwareid // AND u_inware.storageid = :cur_storageid // AND u_inware.indate <= :ld_balcdate // AND u_inware.flag = 1 // and u_inware.billtype <> 1 // and u_inware.billtype <> 4 // AND u_inware.balcdateint = 0 // AND u_inwaremx.fprice = 0 // AND u_inwaremx.mtrlid = :ll_mtrlid // AND u_inwaremx.status = :ls_status; // IF sqlca.SQLCode <> 0 THEN // arg_log = ls_mtrlcode+'查询0进价单据失败' // CONTINUE // END IF // // IF cnt = 0 THEN // SELECT price // INTO :ld_newprice // FROM v_maxprice_sptprice // Where mtrlid = :ll_mtrlid USING sqlca; // IF sqlca.SQLCode <> 0 THEN // arg_log = ls_mtrlcode+'查询最新价失败'+char_enter // CONTINUE // END IF // // IF ld_newprice = 0 THEN // arg_log = ls_mtrlcode+'最新价为0'+char_enter // CONTINUE // END IF // // UPDATE u_inwaremx // SET u_inwaremx.fprice = :ld_newprice, // u_inwaremx.uprice = :ld_newprice, // u_inwaremx.cost = :ld_newprice * u_inwaremx.rebate, // u_inwaremx.price = :ld_newprice * u_inwaremx.rebate // FROM u_inwaremx,u_inware // WHERE u_inwaremx.scid = u_inware.scid // AND u_inwaremx.inwareid = u_inware.inwareid // AND u_inware.storageid = :cur_storageid // AND u_inware.indate <= :ld_balcdate // AND u_inware.flag = 1 // AND u_inware.balcdateint = 0 // AND u_inwaremx.fprice = 0 // AND u_inwaremx.mtrlid = :ll_mtrlid // AND u_inwaremx.status = :ls_status; // IF sqlca.SQLCode <> 0 THEN // arg_log = ls_mtrlcode+'更新0进价单据失败' // CONTINUE // END IF // END IF // // CASE 3 // cnt = 0 // SELECT count(*) INTO :cnt // FROM u_inwaremx,u_inware // WHERE u_inwaremx.scid = u_inware.scid // AND u_inwaremx.inwareid = u_inware.inwareid // AND u_inware.storageid = :cur_storageid // AND u_inware.indate <= :ld_balcdate // AND u_inware.flag = 1 // and u_inware.billtype <> 1 // and u_inware.billtype <> 4 // AND u_inware.balcdateint = 0 // AND u_inwaremx.fprice = 0 // AND u_inwaremx.mtrlid = :ll_mtrlid // AND u_inwaremx.status = :ls_status; // IF sqlca.SQLCode <> 0 THEN // arg_log = ls_mtrlcode+'查询0进价单据失败' // CONTINUE // END IF // // IF cnt = 0 THEN // SELECT price // INTO :ld_newprice // FROM v_maxprice_sptprice // Where mtrlid = :ll_mtrlid USING sqlca; // IF sqlca.SQLCode <> 0 THEN // arg_log = ls_mtrlcode+'查询最新价失败'+char_enter // CONTINUE // END IF // // IF ld_newprice = 0 THEN // arg_log = ls_mtrlcode+'最新价为0'+char_enter // CONTINUE // END IF // // UPDATE u_inwaremx // SET u_inwaremx.fprice = :ld_newprice, // u_inwaremx.uprice = :ld_newprice, // u_inwaremx.cost = :ld_newprice * u_inwaremx.rebate, // u_inwaremx.price = :ld_newprice * u_inwaremx.rebate // FROM u_inwaremx,u_inware // WHERE u_inwaremx.scid = u_inware.scid // AND u_inwaremx.inwareid = u_inware.inwareid // AND u_inware.storageid = :cur_storageid // AND u_inware.indate <= :ld_balcdate // AND u_inware.flag = 1 // AND u_inware.balcdateint = 0 // AND u_inwaremx.fprice = 0 // AND u_inwaremx.mtrlid = :ll_mtrlid // AND u_inwaremx.status = :ls_status; // IF sqlca.SQLCode <> 0 THEN // arg_log = ls_mtrlcode+'更新0进价单据失败' // CONTINUE // END IF // END IF // // // // // SELECT planprice // INTO :ld_planprice // FROM u_mtrldef // Where mtrlid = :ll_mtrlid USING sqlca; // IF sqlca.SQLCode <> 0 THEN // rslt = 0 // MessageBox('error_9','查询操作失败,产品计划价:'+sqlca.SQLErrText) // GOTO ext // END IF // IF ld_planprice = 0 THEN // MessageBox('error_10','发现0计划价,在物料'+ls_mtrlcode+'['+ls_mtrlname+'],颜色:'+ls_status) // CONTINUE // END IF // // ///查询0加工价 // DECLARE find_0_price_2 CURSOR FOR // SELECT u_inwaremx.jgprice,u_inwaremx.scid,u_inwaremx.inwareid,u_inwaremx.printid // FROM u_inware INNER JOIN // u_inwaremx ON u_inware.scid = u_inwaremx.scid AND // u_inware.inwareid = u_inwaremx.inwareid // WHERE u_inware.storageid = :cur_storageid AND u_inware.indate >= :st_date AND u_inware.indate <= :ld_balcdate // AND u_inware.flag = 1 AND u_inwaremx.mtrlid = :ll_mtrlid AND u_inwaremx.status = :ls_status USING sqlca; // // OPEN find_0_price_2; // // FETCH find_0_price_2 INTO :ls_temp_jgprice,:ll_temp_scid,:ll_temp_inwareid,:ll_temp_printid; // // DO WHILE sqlca.SQLCode = 0 // // IF ls_temp_jgprice = 0 THEN //0进价 // // MessageBox('error_11','发现0加工价,在物料'+ls_mtrlcode+'['+ls_mtrlname+'],颜色:'+ls_status) // // END IF // // UPDATE u_inwaremx // SET cost = :ld_planprice+:ls_temp_jgprice // FROM u_inwaremx // WHERE u_inwaremx.scid = :ll_temp_scid AND // u_inwaremx.inwareid = :ll_temp_inwareid AND // u_inwaremx.printid = :ll_temp_printid USING sqlca; // IF sqlca.SQLCode <> 0 THEN // rslt = 0 // MessageBox('error_12','更新操作失败,计划价+加工价--》进仓价:'+sqlca.SQLErrText) // GOTO ext // END IF // // FETCH find_0_price_2 INTO :ls_temp_jgprice,:ll_temp_scid,:ll_temp_inwareid,:ll_temp_printid; // // LOOP // // CLOSE find_0_price_2; // // // END CHOOSE // // //查询期间进金额 // SELECT SUM(u_inwaremx.cost * u_inwaremx.qty) AS sumamt // INTO :ld_incamt // FROM u_inware INNER JOIN // u_inwaremx ON u_inware.scid = u_inwaremx.scid AND // u_inware.inwareid = u_inwaremx.inwareid // WHERE u_inware.storageid = :cur_storageid AND u_inware.indate >= :st_date AND u_inware.indate <= :ld_balcdate // AND u_inware.flag = 1 AND u_inwaremx.mtrlid = :ll_mtrlid AND u_inwaremx.status = :ls_status USING sqlca; // IF sqlca.SQLCode <> 0 THEN // rslt = 0 // MessageBox('error_13','查询操作失败,进仓金额:'+sqlca.SQLErrText) // GOTO ext // // END IF // // if ld_incamt = 0 then // // messagebox('','发现0进价,在物料'+ls_mtrlcode+'['+ls_mtrlname+'],颜色:'+ls_status) // // continue // // end if // // //查询库存结余金额 // ls_wareamt = 0 // SELECT sum(wareamt) // INTO :ls_wareamt // FROM u_mtrlware // Where storageid = :cur_storageid AND mtrlid = :ll_mtrlid AND status = :ls_status USING sqlca; // IF sqlca.SQLCode <> 0 THEN // rslt = 0 // MessageBox('error_14','查询操作失败,库存结余金额:'+sqlca.SQLErrText) // GOTO ext // END IF // // //计算出仓价 // IF ls_decqty <> 0 THEN //期间有出仓 // // ls_outwareprice = (ls_bgamt + ld_incamt - ls_wareamt)/ls_decqty // // //更新出仓价 // UPDATE u_outwaremx // SET cost = :ls_outwareprice,costamt = :ls_outwareprice*u_outwaremx.qty // FROM u_outwaremx,u_outware // WHERE u_outwaremx.scid = u_outware.scid AND // u_outwaremx.outwareid = u_outware.outwareid AND // u_outware.storageid = :cur_storageid AND // u_outware.outdate <= :ld_balcdate AND // u_outware.balcint = 0 AND // u_outware.flag = 1 AND // u_outwaremx.mtrlid = :ll_mtrlid AND // u_outwaremx.status = :ls_status USING sqlca; // // ELSE //期间无出仓 // ls_outwareprice = 0 // END IF // // //更新结存表 // ls_desamt = Round(ls_decqty*ls_outwareprice,2) // IF IsNull(ls_desamt) THEN ls_desamt = 0 // IF IsNull(ld_incamt) THEN ld_incamt = 0 // UPDATE u_warebalc // SET incamt = :ld_incamt,desamt = :ls_desamt,balcamt = :ls_wareamt // WHERE storageid = :cur_storageid AND // mtrlid = :ll_mtrlid AND // status = :ls_status AND // balcdateint = 0 USING sqlca; // IF sqlca.SQLCode <> 0 THEN // rslt = 0 // MessageBox('error_15','更新操作失败,结存表:'+sqlca.SQLErrText) // GOTO ext // END IF // // //next_mtrlid: //w_sys_wait_jdt.wf_inc(ls_i) //进度 //NEXT // //Close(w_sys_wait_jdt) //ext: //IF rslt = 1 THEN // COMMIT USING sqlca; // MessageBox('','修改成功!') //ELSE // ROLLBACK USING sqlca; //END IF //mle_log.Text = arg_log //RETURN // // // // end event type cbx_1 from checkbox within w_cmp_balc integer x = 1413 integer y = 64 integer width = 507 integer height = 60 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 long backcolor = 67108864 string text = "更新 0 进价单据" end type type ddlb_storageid from uo_ddlb_storageid within w_cmp_balc integer x = 18 integer y = 44 integer width = 686 integer height = 1108 integer taborder = 20 boolean bringtotop = true end type event constructor;call super::constructor;cur_storageid = this.uo_storageid end event event selectionchanged;call super::selectionchanged;cur_storageid = this.uo_storageid end event type st_2 from statictext within w_cmp_balc integer x = 713 integer y = 68 integer width = 242 integer height = 48 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 long backcolor = 67108864 string text = "结存日期" alignment alignment = center! boolean focusrectangle = false end type type em_month from editmask within w_cmp_balc integer x = 965 integer y = 44 integer width = 434 integer height = 96 integer taborder = 110 boolean bringtotop = true integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 string text = "none" alignment alignment = center! borderstyle borderstyle = stylelowered! maskdatatype maskdatatype = datemask! string mask = "yyyy-mm-dd" boolean spin = true end type event constructor;this.text = string(today(),'yyyy-mm-dd') end event event rbuttondown;s_calender_arg s_calender s_calender.PointerX = THIS.PointerX() s_calender.PointerY = THIS.PointerY() s_calender.X = THIS.X s_calender.Y = THIS.Y OpenWithParm(w_calendar,s_calender) THIS.Text = String(id_date_selected) end event type gb_1 from groupbox within w_cmp_balc integer width = 2565 integer height = 160 integer taborder = 10 integer textsize = -9 integer weight = 400 fontcharset fontcharset = gb2312charset! fontpitch fontpitch = variable! string facename = "宋体" long textcolor = 33554432 long backcolor = 67108864 end type