123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- $PBExportHeader$uo_pf_cmpl.sru
- forward
- global type uo_pf_cmpl from nonvisualobject
- end type
- end forward
- global type uo_pf_cmpl from nonvisualobject
- end type
- global uo_pf_cmpl uo_pf_cmpl
- forward prototypes
- public function integer uof_cmpl_scll (long arg_mtrlid, string arg_pfcode, decimal arg_qty, ref s_pf_cmpl arg_pf, ref string arg_msg)
- end prototypes
- public function integer uof_cmpl_scll (long arg_mtrlid, string arg_pfcode, decimal arg_qty, ref s_pf_cmpl arg_pf, ref string arg_msg);Int rslt = 1
- Long arr,ll_j,l_arr
- s_pf_cmpl l_s_pf
- Decimal ld_Sonscale
- Decimal ld_SonLoss
- Decimal ld_SonDECLosS
- Long ll_SonMtrlid
- String ls_sonpfcode
- String ls_status
- String ls_woodcode
- String ls_pcode
- Int li_ifselforder,li_mtrlorigin
- Int li_mrptype,li_mrparg
- arr = UpperBound(arg_pf.sonmtrlid)
- DECLARE pf_cur CURSOR FOR
- SELECT u_PrdPF.Sonscale,
- u_PrdPF.SonLoss,
- u_PrdPF.SonDECLosS,
- u_PrdPF.SonMtrlid,
- u_PrdPF.sonpfcode,
- u_PrdPF.status,
- u_PrdPF.woodcode,
- u_PrdPF.pcode,
- u_mtrldef.ifselforder,
- u_mtrldef.mtrlorigin,
- u_mtrldef.mrptype,
- u_mtrldef.mrparg
- FROM u_PrdPF,u_mtrldef
- WHERE ( u_PrdPF.SonMtrlid = u_mtrldef.mtrlid )
- AND ( u_PrdPF.pfcode = :arg_pfcode )
- And ( u_PrdPF.mtrlid = :arg_mtrlid );
-
- OPEN pf_cur;
- FETCH pf_cur INTO :ld_Sonscale,:ld_SonLoss,:ld_SonDECLosS,
- :ll_SonMtrlid,:ls_sonpfcode,:ls_status,:ls_woodcode,
- :ls_pcode,:li_ifselforder,:li_mtrlorigin,:li_mrptype,:li_mrparg;
-
- DO WHILE sqlca.SQLCode = 0
- //
- l_arr++
- IF ld_SonLoss = 1 THEN
- l_s_pf.scllqty[l_arr] = 0
- ELSE
- IF li_mrptype = 0 THEN
- l_s_pf.scllqty[l_arr] = Round(arg_qty * ld_Sonscale/(1 - ld_SonLoss) + ld_SonDECLosS,li_mrparg)
- ELSE
- l_s_pf.scllqty[l_arr] = Ceiling(Truncate(arg_qty * ld_Sonscale/(1 - ld_SonLoss) + ld_SonDECLosS,10))
- END IF
- l_s_pf.sonmtrlid[l_arr] = ll_SonMtrlid
- l_s_pf.sonpfcode[l_arr] = ls_sonpfcode
- l_s_pf.ifselforder[l_arr] = li_ifselforder
- l_s_pf.mtrlorigin[l_arr] = li_mtrlorigin
- END IF
-
-
- //总
- arr++
- IF ld_SonLoss = 1 THEN
- arg_pf.scllqty[arr] = 0
- ELSE
- IF li_mrptype = 0 THEN
- arg_pf.scllqty[arr] = Round(arg_qty * ld_Sonscale/(1 - ld_SonLoss) + ld_SonDECLosS,li_mrparg)
- ELSE
- arg_pf.scllqty[arr] = Ceiling(Truncate(arg_qty * ld_Sonscale/(1 - ld_SonLoss) + ld_SonDECLosS,10))
- END IF
- arg_pf.sonmtrlid[arr] = ll_SonMtrlid
- arg_pf.sonpfcode[arr] = ls_sonpfcode
- arg_pf.ifselforder[arr] = li_ifselforder
- arg_pf.mtrlorigin[arr] = li_mtrlorigin
- arg_pf.status[arr] = ls_status
- arg_pf.woodcode[arr] = ls_woodcode
- arg_pf.pcode[arr] = ls_pcode
- END IF
-
-
-
- FETCH pf_cur INTO :ld_Sonscale,:ld_SonLoss,:ld_SonDECLosS,
- :ll_SonMtrlid,:ls_sonpfcode,:ls_status,:ls_woodcode,
- :ls_pcode,:li_ifselforder,:li_mtrlorigin,:li_mrptype,:li_mrparg;
- LOOP
- CLOSE pf_cur;
- IF arr = 0 THEN
- rslt = 0
- arg_msg = '物料没有清单内容'
- GOTO ext
- END IF
- FOR ll_j = 1 To l_arr
- IF l_s_pf.mtrlorigin[ll_j] = 0 And &
- l_s_pf.ifselforder[ll_j] = 0 THEN
- IF uof_cmpl_scll(l_s_pf.sonmtrlid[ll_j],l_s_pf.sonpfcode[ll_j],l_s_pf.scllqty[ll_j],arg_pf,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- NEXT
- ext:
- RETURN rslt
- end function
- on uo_pf_cmpl.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_pf_cmpl.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
|