f_find_unitrate.srf 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. $PBExportHeader$f_find_unitrate.srf
  2. global type f_find_unitrate from function_object
  3. end type
  4. forward prototypes
  5. global function integer f_find_unitrate (long arg_mtrlid, ref string arg_unit, ref decimal arg_rate)
  6. end prototypes
  7. global function integer f_find_unitrate (long arg_mtrlid, ref string arg_unit, ref decimal arg_rate);Int rslt = 1
  8. String ls_unit,ls_unit_buy,ls_unit_scll,ls_unit_sale
  9. Decimal lde_rate_buy, lde_rate_scll, lde_rate_sale
  10. IF arg_mtrlid = 0 AND arg_unit = "" THEN
  11. arg_rate = 1
  12. RETURN 0
  13. ELSEIF arg_mtrlid = 0 THEN
  14. arg_rate = 1
  15. RETURN 1
  16. END IF
  17. SELECT unit,unit_buy,rate_buy,unit_scll,rate_scll,unit_sale,rate_sale
  18. INTO :ls_unit,:ls_unit_buy,:lde_rate_buy,:ls_unit_scll,:lde_rate_scll,:ls_unit_sale,:lde_rate_sale
  19. FROM u_mtrldef
  20. Where mtrlid = :arg_mtrlid;
  21. IF sqlca.SQLCode <> 0 THEN
  22. rslt = 0
  23. GOTO ext
  24. END IF
  25. IF arg_unit = "" THEN
  26. arg_unit = ls_unit
  27. arg_rate = 1
  28. GOTO ext
  29. END IF
  30. CHOOSE CASE arg_unit
  31. CASE ls_unit
  32. arg_rate = 1
  33. CASE ls_unit_buy
  34. arg_rate = lde_rate_buy
  35. CASE ls_unit_scll
  36. arg_rate = lde_rate_scll
  37. CASE ls_unit_sale
  38. arg_rate = lde_rate_sale
  39. CASE ELSE
  40. arg_unit = ls_unit
  41. arg_rate = 1
  42. END CHOOSE
  43. ext:
  44. RETURN rslt
  45. end function