f_mtrl_storageid.srf 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. $PBExportHeader$f_mtrl_storageid.srf
  2. global type f_mtrl_storageid from function_object
  3. end type
  4. forward prototypes
  5. global function long f_mtrl_storageid (long arg_scid, long arg_mtrlid)
  6. end prototypes
  7. global function long f_mtrl_storageid (long arg_scid, long arg_mtrlid);Long rst_storageid
  8. Long cnt
  9. rst_storageid = 0
  10. //1.先取默认存放仓库
  11. SELECT top 1 u_mtrl_storage.storageid
  12. INTO :rst_storageid
  13. FROM u_mtrl_storage INNER JOIN
  14. u_storage ON u_mtrl_storage.storageid = u_storage.storageid
  15. WHERE (u_storage.inuse = 1)
  16. AND (u_storage.ifmrp = 1)
  17. AND (u_mtrl_storage.dft = 1)
  18. AND (u_storage.scid = :arg_scid)
  19. And (u_mtrl_storage.mtrlid = :arg_mtrlid);
  20. IF sqlca.SQLCode <> 0 THEN
  21. rst_storageid = 0
  22. END IF
  23. IF IsNull(rst_storageid) THEN rst_storageid = 0
  24. //2.没有默认存放,选存放仓库
  25. IF rst_storageid = 0 THEN
  26. SELECT top 1 u_mtrl_storage.storageid
  27. INTO :rst_storageid
  28. FROM u_mtrl_storage INNER JOIN
  29. u_storage ON u_mtrl_storage.storageid = u_storage.storageid
  30. WHERE (u_storage.inuse = 1)
  31. AND (u_storage.ifmrp = 1)
  32. AND (u_storage.scid = :arg_scid)
  33. And (u_mtrl_storage.mtrlid = :arg_mtrlid);
  34. IF sqlca.SQLCode <> 0 THEN
  35. rst_storageid = 0
  36. END IF
  37. IF IsNull(rst_storageid) THEN rst_storageid = 0
  38. END IF
  39. //3.没有存放,选最后一次进仓
  40. IF rst_storageid = 0 THEN
  41. SELECT top 1 u_inware.storageid INTO :rst_storageid
  42. FROM u_inware,u_inwaremx,u_storage
  43. WHERE u_inware.scid = u_inwaremx.scid
  44. AND u_inware.inwareid = u_inwaremx.inwareid
  45. AND u_inware.storageid = u_storage.storageid
  46. AND u_inware.flag = 1
  47. AND u_inwaremx.mtrlid = :arg_mtrlid
  48. AND u_inware.scid = :arg_scid
  49. AND u_storage.ifmrp = 1
  50. AND u_storage.ifscll = 1
  51. Order By u_inware.inwareid Desc;
  52. IF sqlca.SQLCode <> 0 THEN rst_storageid = 0
  53. IF IsNull(rst_storageid) THEN rst_storageid = 0
  54. END IF
  55. /*
  56. SELECT top 1 u_inware.storageid INTO :rst_storageid
  57. FROM u_inware,u_inwaremx,u_storage
  58. WHERE u_inware.scid = u_inwaremx.scid
  59. AND u_inware.inwareid = u_inwaremx.inwareid
  60. AND u_inware.storageid = u_storage.storageid
  61. // AND u_inware.billtype = 1
  62. AND u_inware.flag = 1
  63. AND u_inwaremx.mtrlid = :arg_mtrlid
  64. AND u_inware.scid = :arg_scid
  65. and u_storage.ifmrp = 1
  66. and u_storage.ifscll = 1
  67. Order By u_inware.inwareid Desc;
  68. IF sqlca.SQLCode <> 0 THEN rst_storageid = 0
  69. IF IsNull(rst_storageid) THEN rst_storageid = 0
  70. IF rst_storageid = 0 THEN
  71. SELECT count(*) INTO :cnt
  72. FROM u_mtrl_storage,u_storage
  73. WHERE u_mtrl_storage.storageid = u_storage.storageid
  74. AND u_mtrl_storage.mtrlid = :arg_mtrlid
  75. AND u_storage.scid = :arg_scid;
  76. IF sqlca.SQLCode <> 0 THEN cnt = 0
  77. IF IsNull(cnt) THEN cnt = 0
  78. // IF cnt <> 1 THEN
  79. // rst_storageid = 0
  80. // ELSE
  81. SELECT top 1 u_mtrl_storage.storageid INTO :rst_storageid
  82. FROM u_mtrl_storage,u_storage
  83. WHERE u_mtrl_storage.storageid = u_storage.storageid
  84. AND u_mtrl_storage.mtrlid = :arg_mtrlid
  85. AND u_storage.scid = :arg_scid;
  86. IF sqlca.SQLCode <> 0 THEN rst_storageid = 0
  87. // END IF
  88. END IF
  89. */
  90. RETURN rst_storageid
  91. end function