123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- $PBExportHeader$f_get_planprice_mtrl.srf
- global type f_get_planprice_mtrl from function_object
- end type
- forward prototypes
- global subroutine f_get_planprice_mtrl (long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, ref decimal arg_planprice)
- end prototypes
- global subroutine f_get_planprice_mtrl (long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, ref decimal arg_planprice);Decimal ld_planprice
- String ls_status,ls_woodcode,ls_pcode
- Int li_pricepztype,li_statusflag
- s_mtrlcfg_expr s_pz[]
- Long ll_i
- SELECT pricepztype,statusflag
- INTO :li_pricepztype,:li_statusflag
- FROM u_mtrldef
- Where mtrlid = :arg_mtrlid;
- IF sqlca.SQLCode <> 0 THEN li_pricepztype = 0
- CHOOSE CASE li_pricepztype
- CASE 0
- ls_status = ''
- ls_woodcode = ''
- ls_pcode = ''
- CASE 1
- ls_status = arg_status
- ls_woodcode = ''
- ls_pcode = ''
- CASE 2
- ls_status = ''
- ls_woodcode = arg_woodcode
- ls_pcode = ''
- CASE 3
- ls_status = ''
- ls_woodcode = ''
- ls_pcode = arg_pcode
- CASE 4
- ls_status = arg_status
- ls_woodcode = arg_woodcode
- ls_pcode = ''
- CASE 5
- ls_status = ''
- ls_woodcode = arg_woodcode
- ls_pcode = arg_pcode
- CASE 6
- ls_status = arg_status
- ls_woodcode = ''
- ls_pcode = arg_pcode
- CASE 7
- ls_status = arg_status
- ls_woodcode = arg_woodcode
- ls_pcode = arg_pcode
- END CHOOSE
- IF li_statusflag = 2 And arg_status <> '' THEN
- SELECT planprice
- INTO :arg_planprice
- FROM u_mtrldef_planprice
- WHERE mtrlid = :arg_mtrlid
- AND status = :arg_status
- AND woodcode = :ls_woodcode
- And pcode = :ls_pcode;
- IF sqlca.SQLCode <> 0 THEN arg_planprice = 0
-
- IF arg_planprice = 0 THEN
- f_checkpz(arg_status,s_pz[])
- FOR ll_i = 1 To UpperBound(s_pz)
- ls_status = s_pz[ll_i].cfgname
-
- SELECT planprice INTO :ld_planprice
- FROM u_mtrldef_planprice
- WHERE mtrlid = :arg_mtrlid
- AND status = :ls_status
- AND woodcode = :ls_woodcode
- And pcode = :ls_pcode;
- IF sqlca.SQLCode <> 0 THEN
- arg_planprice = 0
- RETURN
- END IF
- arg_planprice = arg_planprice + ld_planprice * Long(s_pz[ll_i].qty)
- NEXT
- END IF
- ELSE
- SELECT planprice
- INTO :arg_planprice
- FROM u_mtrldef_planprice
- WHERE mtrlid = :arg_mtrlid
- AND status = :ls_status
- AND woodcode = :ls_woodcode
- And pcode = :ls_pcode;
- IF sqlca.SQLCode <> 0 THEN arg_planprice = 0
- END IF
- end subroutine
|