123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- $PBExportHeader$f_cmp_di_qty.srf
- global type f_cmp_di_qty from function_object
- end type
- forward prototypes
- global function integer f_cmp_di_qty (long arg_mtrlid, long arg_storageid, string arg_status, ref decimal arg_ref_qty, ref string arg_lsg, ref string arg_msg)
- end prototypes
- global function integer f_cmp_di_qty (long arg_mtrlid, long arg_storageid, string arg_status, ref decimal arg_ref_qty, ref string arg_lsg, ref string arg_msg);Int rslt = 1
- Long ll_SonMtrlid[]
- String ls_pf_status[],ls_status_find
- Decimal ld_Sonscale[]
- Long it_mxt = 1
- Decimal ld_qty
- Long ll_i,ll_row
- DECLARE cur_pf CURSOR FOR
- SELECT u_PrdPF.SonMtrlid,
- u_PrdPF.Sonscale,
- u_PrdPF.status
- FROM u_PrdPF
- Where u_PrdPF.mtrlid = :arg_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 = '该产品没有建立组装结构,不能计算'
- GOTO ext
- END IF
- String ls_mtrlcode,ls_mtrlname
- Decimal ld_noallocqty,ld_allqty,ld_maxqty
- ld_maxqty = 1000000
- FOR ll_i = 1 To it_mxt
- SELECT mtrlcode,
- mtrlname
- INTO :ls_mtrlcode,
- :ls_mtrlname
- FROM u_mtrldef
- Where mtrlid = :ll_SonMtrlid[ll_i];
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询产品资料失败'
- GOTO ext
- END IF
-
- IF sys_option_if_color = 1 THEN
- ls_status_find = arg_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 = :arg_storageid OR :arg_storageid = -1)
- AND mtrlid = :ll_SonMtrlid[ll_i]
- And status = :ls_status_find;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询该产品组装材料'+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 )
- arg_lsg = '可装货数量:'+String(ld_qty,'#,##0.####')
- arg_ref_qty = ld_qty
- ext:
- RETURN rslt
- end function
|