f_find_mtrlware_spt.srf 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. $PBExportHeader$f_find_mtrlware_spt.srf
  2. global type f_find_mtrlware_spt from function_object
  3. end type
  4. forward prototypes
  5. global function integer f_find_mtrlware_spt (string arg_mtrlcode, long arg_sptid, ref s_sptware_array arg_s_mtrlware)
  6. end prototypes
  7. global function integer f_find_mtrlware_spt (string arg_mtrlcode, long arg_sptid, ref s_sptware_array arg_s_mtrlware);Int rslt = 1
  8. Long cnt = 0
  9. String ls_like_mtrlcode
  10. String ls_mtrlcode,ls_mtrlname,ls_unit,ls_mtrlmode
  11. String ls_plancode,ls_status,ls_woodcode,ls_pcode
  12. Long ls_mtrlwareid,ls_mtrlid,ll_sptid
  13. String ls_mtrlsectype,ls_zxmtrlmode
  14. Dec ls_noallocqty,ls_planprice,ls_cost
  15. int li_ifunit
  16. Boolean if_find = FALSE
  17. IF Pos(Trim(arg_mtrlcode),'%') = 0 THEN
  18. ls_like_mtrlcode = '%'+ Trim(arg_mtrlcode) + '%'
  19. ELSE
  20. ls_like_mtrlcode = Trim(arg_mtrlcode)
  21. END IF
  22. SELECT count(*) INTO :cnt
  23. FROM ow_wfjgware, u_mtrldef
  24. WHERE ( u_mtrldef.mtrlid = ow_wfjgware.mtrlid )
  25. AND ( ow_wfjgware.sptid = :arg_sptid )
  26. And ( u_mtrldef.mtrlcode = :arg_mtrlcode OR u_mtrldef.mtrlname = :arg_mtrlcode );
  27. IF sqlca.SQLCode <> 0 THEN
  28. rslt = 0
  29. GOTO ext
  30. ELSE
  31. IF cnt <> 1 THEN
  32. SELECT count(*) INTO :cnt
  33. FROM ow_wfjgware, u_mtrldef
  34. WHERE ( u_mtrldef.mtrlid = ow_wfjgware.mtrlid )
  35. AND ( ow_wfjgware.sptid = :arg_sptid )
  36. And ( u_mtrldef.mtrlcode Like :ls_like_mtrlcode OR u_mtrldef.mtrlname Like :ls_like_mtrlcode );
  37. IF sqlca.SQLCode <> 0 THEN
  38. rslt = 0
  39. GOTO ext
  40. ELSE
  41. IF cnt <> 1 THEN
  42. rslt = 0
  43. GOTO ext
  44. ELSE
  45. SELECT ow_wfjgware.mtrlwareid ,
  46. ow_wfjgware.mtrlid,
  47. u_mtrldef.mtrlcode,
  48. u_mtrldef.mtrlname,
  49. u_mtrldef.unit,
  50. ow_wfjgware.noallocqty,
  51. ow_wfjgware.planprice,
  52. ow_wfjgware.plancode,
  53. u_mtrldef.mtrlmode,
  54. ow_wfjgware.status,
  55. ow_wfjgware.woodcode,
  56. ow_wfjgware.pcode,
  57. ow_wfjgware.cost,
  58. u_mtrldef.mtrlsectype,
  59. u_mtrldef.zxmtrlmode,
  60. ow_wfjgware.sptid,
  61. u_mtrldef.ifunit
  62. INTO :ls_mtrlwareid,
  63. :ls_mtrlid,
  64. :ls_mtrlcode,
  65. :ls_mtrlname,
  66. :ls_unit,
  67. :ls_noallocqty,
  68. :ls_planprice,
  69. :ls_plancode,
  70. :ls_mtrlmode,
  71. :ls_status,
  72. :ls_woodcode,
  73. :ls_pcode,
  74. :ls_cost,
  75. :ls_mtrlsectype,
  76. :ls_zxmtrlmode,
  77. :ll_sptid,
  78. :li_ifunit
  79. FROM u_mtrldef,
  80. ow_wfjgware
  81. WHERE ( u_mtrldef.mtrlid = ow_wfjgware.mtrlid )
  82. AND ( ow_wfjgware.sptid = :arg_sptid )
  83. And ( u_mtrldef.mtrlcode Like :ls_like_mtrlcode OR u_mtrldef.mtrlname Like :ls_like_mtrlcode );
  84. IF sqlca.SQLCode <> 0 THEN
  85. rslt = 0
  86. GOTO ext
  87. ELSE
  88. if_find = TRUE
  89. END IF
  90. END IF
  91. END IF
  92. ELSE
  93. SELECT ow_wfjgware.mtrlwareid ,
  94. ow_wfjgware.mtrlid,
  95. u_mtrldef.mtrlcode,
  96. u_mtrldef.mtrlname,
  97. u_mtrldef.unit,
  98. ow_wfjgware.noallocqty,
  99. ow_wfjgware.planprice,
  100. ow_wfjgware.plancode,
  101. u_mtrldef.mtrlmode,
  102. ow_wfjgware.status,
  103. ow_wfjgware.woodcode,
  104. ow_wfjgware.pcode,
  105. ow_wfjgware.cost,
  106. u_mtrldef.mtrlsectype,
  107. u_mtrldef.zxmtrlmode,
  108. ow_wfjgware.sptid,
  109. u_mtrldef.ifunit
  110. INTO :ls_mtrlwareid,
  111. :ls_mtrlid,
  112. :ls_mtrlcode,
  113. :ls_mtrlname,
  114. :ls_unit,
  115. :ls_noallocqty,
  116. :ls_planprice,
  117. :ls_plancode,
  118. :ls_mtrlmode,
  119. :ls_status,
  120. :ls_woodcode,
  121. :ls_pcode,
  122. :ls_cost,
  123. :ls_mtrlsectype,
  124. :ls_zxmtrlmode,
  125. :ll_sptid,
  126. :li_ifunit
  127. FROM u_mtrldef,
  128. ow_wfjgware
  129. WHERE ( u_mtrldef.mtrlid = ow_wfjgware.mtrlid )
  130. AND ( ow_wfjgware.sptid = :arg_sptid )
  131. And ( u_mtrldef.mtrlcode = :arg_mtrlcode OR u_mtrldef.mtrlname = :arg_mtrlcode );
  132. IF sqlca.SQLCode <> 0 THEN
  133. rslt = 0
  134. GOTO ext
  135. ELSE
  136. if_find = TRUE
  137. END IF
  138. END IF
  139. END IF
  140. IF if_find THEN
  141. arg_s_mtrlware.u_mtrldef_mtrlcode[1] = ls_mtrlcode
  142. arg_s_mtrlware.u_mtrldef_mtrlname[1] = ls_mtrlname
  143. arg_s_mtrlware.u_mtrldef_unit[1] = ls_unit
  144. arg_s_mtrlware.u_mtrldef_mtrlmode[1] = ls_mtrlmode
  145. arg_s_mtrlware.u_mtrldef_mtrlsectype[1] = ls_mtrlsectype
  146. arg_s_mtrlware.u_mtrldef_zxmtrlmode[1] = ls_zxmtrlmode
  147. arg_s_mtrlware.plancode[1] = ls_plancode
  148. arg_s_mtrlware.status[1] = ls_status
  149. arg_s_mtrlware.woodcode[1] = ls_woodcode
  150. arg_s_mtrlware.pcode[1] = ls_pcode
  151. arg_s_mtrlware.mtrlid[1] = ls_mtrlid
  152. arg_s_mtrlware.mtrlwareid[1] = ls_mtrlwareid
  153. arg_s_mtrlware.sptid[1] = ll_sptid
  154. arg_s_mtrlware.noallocqty[1] = ls_noallocqty
  155. arg_s_mtrlware.planprice[1] = ls_planprice
  156. arg_s_mtrlware.cost[1] = ls_cost
  157. arg_s_mtrlware.ifunit[1] = li_ifunit
  158. END IF
  159. ext:
  160. RETURN rslt
  161. end function