$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