123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373 |
- $PBExportHeader$w_outware_sale_mx4di.srw
- forward
- global type w_outware_sale_mx4di from w_publ_base
- end type
- type cb_ok from uo_imflatbutton within w_outware_sale_mx4di
- end type
- type dw_1 from datawindow within w_outware_sale_mx4di
- end type
- type cbx_1 from checkbox within w_outware_sale_mx4di
- end type
- end forward
- global type w_outware_sale_mx4di from w_publ_base
- integer width = 3616
- integer height = 1628
- string title = "销售收货单明细自动组装"
- boolean minbox = false
- windowtype windowtype = response!
- cb_ok cb_ok
- dw_1 dw_1
- cbx_1 cbx_1
- end type
- global w_outware_sale_mx4di w_outware_sale_mx4di
- type variables
- s_edit_index_tran s_tran
- long ins_scid,ins_outwareid
- string ins_outwarecode
- end variables
- on w_outware_sale_mx4di.create
- int iCurrent
- call super::create
- this.cb_ok=create cb_ok
- this.dw_1=create dw_1
- this.cbx_1=create cbx_1
- iCurrent=UpperBound(this.Control)
- this.Control[iCurrent+1]=this.cb_ok
- this.Control[iCurrent+2]=this.dw_1
- this.Control[iCurrent+3]=this.cbx_1
- end on
- on w_outware_sale_mx4di.destroy
- call super::destroy
- destroy(this.cb_ok)
- destroy(this.dw_1)
- destroy(this.cbx_1)
- end on
- event open;call super::open;dw_1.settransobject(sqlca)
- s_tran=Message.PowerObjectParm
- ins_scid = s_tran.b_long
- ins_outwareid = s_tran.c_long
- ins_outwarecode = s_tran.c_string
- dw_1.retrieve( ins_scid,ins_outwareid)
- dw_1.setfocus()
- end event
- type cb_func from w_publ_base`cb_func within w_outware_sale_mx4di
- boolean visible = false
- end type
- type cb_exit from w_publ_base`cb_exit within w_outware_sale_mx4di
- integer x = 2025
- integer y = 1404
- integer picsize = 16
- end type
- type cb_ok from uo_imflatbutton within w_outware_sale_mx4di
- integer x = 1458
- integer y = 1404
- integer width = 311
- integer height = 96
- integer taborder = 20
- boolean bringtotop = true
- string normalpicname = "ok.bmp"
- integer picsize = 16
- end type
- event clicked;call super::clicked;Long ll_row,ll_ucrow, ll_j,ll_i,rslt = 1,it_mxt = 1,i
- String ls_mtrlcode, ls_plancode,ls_status,ls_woodcode,ls_pcode
- Long ls_mtrlwareid,ls_mtrlid,ls_storageid
- Dec ls_noallocqty,ls_planprice,ls_cost,ld_qty,ld_saleqty
- String arg_msg
- //String ls_outwarecode
- String ls_reason
- Long ll_cnt
- dw_1.AcceptText()
- uo_dismantle_install uo_ware_install
- uo_ware_install = Create uo_dismantle_install
- FOR ll_j = 1 To dw_1.RowCount()
- IF dw_1.Object.ch[ll_j] = 0 THEN CONTINUE //勾选的才处理
-
- ls_mtrlwareid = dw_1.Object.u_outwaremx_mtrlwareid[ll_j]
- ld_saleqty = dw_1.Object.u_outwaremx_qty[ll_j]
-
-
-
- SELECT u_mtrlware.mtrlwareid ,
- u_mtrlware.mtrlid,
- u_mtrlware.noallocqty,
- u_mtrlware.planprice,
- u_mtrlware.storageid,
- u_mtrlware.plancode,
- u_mtrlware.status,
- u_mtrlware.woodcode,
- u_mtrlware.pcode,
- u_mtrldef.mtrlcode
- INTO :ls_mtrlwareid,
- :ls_mtrlid,
- :ls_noallocqty,
- :ls_planprice,
- :ls_storageid,
- :ls_plancode,
- :ls_status,
- :ls_woodcode,
- :ls_pcode,
- :ls_mtrlcode
- FROM u_mtrldef,
- u_mtrlware
- WHERE ( u_mtrldef.mtrlid = u_mtrlware.mtrlid )
- And ( u_mtrlware.mtrlwareid = :ls_mtrlwareid );
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '第'+String(ll_j)+'行,查询物料库存信息失败.'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- //计算组装结构
- Long ll_SonMtrlid[]
- String ls_pf_status[]
- Decimal ld_Sonscale[]
- String ls_mtrlname,ls_status_find
- Decimal ld_noallocqty,ld_allqty,ld_maxqty
-
- it_mxt = 1
- DECLARE cur_pf CURSOR FOR
- SELECT u_PrdPF.SonMtrlid,
- u_PrdPF.Sonscale,
- u_PrdPF.status
- FROM u_PrdPF
- Where u_PrdPF.mtrlid = :ls_mtrlid;
-
- OPEN cur_pf;
- FETCH cur_pf Into :ll_SonMtrlid[it_mxt],:ld_Sonscale[it_mxt],:ls_pf_status[it_mxt];
- DO WHILE sqlca.SQLCode = 0
- it_mxt++
- FETCH cur_pf Into :ll_SonMtrlid[it_mxt],:ld_Sonscale[it_mxt],:ls_pf_status[it_mxt];
- LOOP
- it_mxt = it_mxt - 1
- CLOSE cur_pf;
-
- IF it_mxt = 0 THEN
- rslt = 0
- arg_msg = '第'+String(ll_j)+'行,该产品没有建立组装结构,不能计算'
- GOTO ext
- END IF
-
- ld_maxqty = 1000000
- FOR ll_i = 1 To it_mxt
- SELECT mtrlname INTO :ls_mtrlname
- FROM u_mtrldef
- Where mtrlid = :ll_SonMtrlid[ll_i];
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '第'+String(ll_j)+'行,查询产品资料失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF sys_option_if_color = 1 THEN
- ls_status_find = ls_status
- ELSE
- ls_status_find = ls_pf_status[ll_i]
- END IF
-
- ld_noallocqty = 0
- ld_allqty = 0
- SELECT sum(noallocqty) INTO :ld_noallocqty
- FROM u_mtrlware
- WHERE storageid = :ls_storageid
- AND mtrlid = :ll_SonMtrlid[ll_i]
- And status = :ls_status_find;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '第'+String(ll_j)+'行,查询该产品组装材料'+ls_mtrlname+'的库存资料失败'
- GOTO ext
- END IF
-
- ld_allqty = ld_noallocqty/ld_Sonscale[ll_i]
-
- ld_maxqty = Min(ld_maxqty,ld_allqty)
-
- IF IsNull(ld_maxqty) THEN ld_maxqty = 0
- NEXT
- ld_qty = Truncate ( ld_maxqty, 0 )
-
- IF ld_saleqty > ld_qty THEN
- rslt = 0
- arg_msg = '第'+String(ll_j)+'行,产品没有足够的组装材料库存~n'+'发货单组装数量:'+String(ld_saleqty,'#,###0.##')+',库存最大可装数:'+String(ld_qty,'#,###0.##')
- GOTO ext
- END IF
-
- String mx_status,mx_woodcode,mx_plancode,mx_pcode,mx_mtrlcode
- Dec mx_noallocqty,mx_cost
- Long mx_mtrlwareid,mx_dxflag,mx_sptid
-
- IF uo_ware_install.newbegin(0,arg_msg) = 0 THEN //新建
- rslt = 0
- GOTO ext
- END IF
- ls_reason = '销售发货单:'+ins_outwarecode+'自动组装'
-
- uo_ware_install.billdate = DateTime(Today(),Now()) // 发生时间
- uo_ware_install.rep = publ_operator // 经手人
- uo_ware_install.dscrp = ls_reason //备注
- uo_ware_install.reason = ls_reason
- uo_ware_install.storageid = ls_storageid
- uo_ware_install.mtrlid = ls_mtrlid
- uo_ware_install.mtrlwareid = ls_mtrlwareid
- uo_ware_install.status = ls_status
- uo_ware_install.plancode = ls_pcode
- uo_ware_install.woodcode = ls_woodcode
- uo_ware_install.qty = ld_saleqty
- uo_ware_install.addqty = 0
- uo_ware_install.price = ls_planprice
- uo_ware_install.buildtype = 0
- uo_ware_install.mtrlcode = ls_mtrlcode
-
- FOR ll_i = 1 To it_mxt
- IF sys_option_if_color = 1 THEN
- ls_status_find = ls_status
- ELSE
- ls_status_find = ls_pf_status[ll_i]
- END IF
-
- SELECT mtrlwareid,
- status,
- woodcode,
- plancode,
- pcode,
- noallocqty,
- cost = case u_mtrlware.noallocqty when 0 then 0 else u_mtrlware.wareamt/u_mtrlware.noallocqty END,
- dxflag,
- sptid,
- mtrlcode
- INTO :mx_mtrlwareid,
- :mx_status,
- :mx_woodcode,
- :mx_plancode,
- :mx_pcode,
- :mx_noallocqty,
- :mx_cost,
- :mx_dxflag,
- :mx_sptid,
- :mx_mtrlcode
- FROM u_mtrlware,u_mtrldef
- WHERE u_mtrlware.mtrlid = u_mtrldef.mtrlid
- AND u_mtrlware.mtrlid = :ll_SonMtrlid[ll_i]
- AND u_mtrlware.storageid = :ls_storageid
- And u_mtrlware.status = :ls_status_find;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '第'+String(ll_j)+'行,查询该产品组装材料的库存资料失败>>'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF uo_ware_install.acceptmx(ll_i,&
- ls_storageid,&
- mx_mtrlwareid,&
- ll_SonMtrlid[ll_i],&
- ld_saleqty * ld_Sonscale[ll_i],&
- 0,&
- mx_cost,&
- mx_status,&
- mx_plancode,&
- mx_woodcode,&
- '',&
- mx_mtrlcode,&
- mx_pcode,&
- mx_dxflag,&
- mx_sptid,&
- arg_msg,&
- ld_Sonscale[ll_i]) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
-
- IF uo_ware_install.Save(arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_ware_install.getinfo(uo_ware_install.billid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_ware_install.auditing(publ_operator,False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using sqlca;
- MessageBox('错误',arg_msg,stopsign!,OK!)
- RETURN
- ELSEIF rslt = 1 THEN
- COMMIT Using sqlca;
- MessageBox('提示','自动组装成功',information!,OK!)
- Close(Parent)
- END IF
- end event
- type dw_1 from datawindow within w_outware_sale_mx4di
- integer width = 3584
- integer height = 1348
- integer taborder = 30
- boolean bringtotop = true
- string title = "none"
- string dataobject = "dw_outware_sale_mx4di"
- boolean livescroll = true
- borderstyle borderstyle = stylelowered!
- end type
- event constructor;f_title_change(this)
- end event
- type cbx_1 from checkbox within w_outware_sale_mx4di
- integer x = 389
- integer y = 1424
- integer width = 402
- 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 = 134217739
- string text = "全选"
- end type
- event clicked;Long i
- dw_1.setredraw(false)
- IF This.Checked THEN
- FOR i = 1 To dw_1.RowCount()
- dw_1.Object.ch[i] = 1
- NEXT
- ELSE
- FOR i = 1 To dw_1.RowCount()
- dw_1.Object.ch[i] = 0
- NEXT
- END IF
- dw_1.setredraw(true)
- end event
|