f_get_planprice_mtrl.srf 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. $PBExportHeader$f_get_planprice_mtrl.srf
  2. global type f_get_planprice_mtrl from function_object
  3. end type
  4. forward prototypes
  5. global subroutine f_get_planprice_mtrl (long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, ref decimal arg_planprice)
  6. end prototypes
  7. 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
  8. String ls_status,ls_woodcode,ls_pcode
  9. Int li_pricepztype,li_statusflag
  10. s_mtrlcfg_expr s_pz[]
  11. Long ll_i
  12. SELECT pricepztype,statusflag
  13. INTO :li_pricepztype,:li_statusflag
  14. FROM u_mtrldef
  15. Where mtrlid = :arg_mtrlid;
  16. IF sqlca.SQLCode <> 0 THEN li_pricepztype = 0
  17. CHOOSE CASE li_pricepztype
  18. CASE 0
  19. ls_status = ''
  20. ls_woodcode = ''
  21. ls_pcode = ''
  22. CASE 1
  23. ls_status = arg_status
  24. ls_woodcode = ''
  25. ls_pcode = ''
  26. CASE 2
  27. ls_status = ''
  28. ls_woodcode = arg_woodcode
  29. ls_pcode = ''
  30. CASE 3
  31. ls_status = ''
  32. ls_woodcode = ''
  33. ls_pcode = arg_pcode
  34. CASE 4
  35. ls_status = arg_status
  36. ls_woodcode = arg_woodcode
  37. ls_pcode = ''
  38. CASE 5
  39. ls_status = ''
  40. ls_woodcode = arg_woodcode
  41. ls_pcode = arg_pcode
  42. CASE 6
  43. ls_status = arg_status
  44. ls_woodcode = ''
  45. ls_pcode = arg_pcode
  46. CASE 7
  47. ls_status = arg_status
  48. ls_woodcode = arg_woodcode
  49. ls_pcode = arg_pcode
  50. END CHOOSE
  51. IF li_statusflag = 2 And arg_status <> '' THEN
  52. SELECT planprice
  53. INTO :arg_planprice
  54. FROM u_mtrldef_planprice
  55. WHERE mtrlid = :arg_mtrlid
  56. AND status = :arg_status
  57. AND woodcode = :ls_woodcode
  58. And pcode = :ls_pcode;
  59. IF sqlca.SQLCode <> 0 THEN arg_planprice = 0
  60. IF arg_planprice = 0 THEN
  61. f_checkpz(arg_status,s_pz[])
  62. FOR ll_i = 1 To UpperBound(s_pz)
  63. ls_status = s_pz[ll_i].cfgname
  64. SELECT planprice INTO :ld_planprice
  65. FROM u_mtrldef_planprice
  66. WHERE mtrlid = :arg_mtrlid
  67. AND status = :ls_status
  68. AND woodcode = :ls_woodcode
  69. And pcode = :ls_pcode;
  70. IF sqlca.SQLCode <> 0 THEN
  71. arg_planprice = 0
  72. RETURN
  73. END IF
  74. arg_planprice = arg_planprice + ld_planprice * Long(s_pz[ll_i].qty)
  75. NEXT
  76. END IF
  77. ELSE
  78. SELECT planprice
  79. INTO :arg_planprice
  80. FROM u_mtrldef_planprice
  81. WHERE mtrlid = :arg_mtrlid
  82. AND status = :ls_status
  83. AND woodcode = :ls_woodcode
  84. And pcode = :ls_pcode;
  85. IF sqlca.SQLCode <> 0 THEN arg_planprice = 0
  86. END IF
  87. end subroutine