f_find_mtrlware_ls.srf 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. $PBExportHeader$f_find_mtrlware_ls.srf
  2. global type f_find_mtrlware_ls from function_object
  3. end type
  4. forward prototypes
  5. global function integer f_find_mtrlware_ls (string arg_mtrlcode, long arg_storageid, long arg_sptid, ref s_mtrlware_noalloc_array arg_s_mtrlware)
  6. end prototypes
  7. global function integer f_find_mtrlware_ls (string arg_mtrlcode, long arg_storageid, long arg_sptid, ref s_mtrlware_noalloc_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,ls_mtrltype
  11. String ls_plancode,ls_status,ls_woodcode,ls_pcode
  12. Long ls_mtrlwareid,ls_mtrlid,ls_storageid,ll_sptid
  13. Dec ls_noallocqty,ls_noauditingqty,ls_planprice,ls_cost,ls_lmsaleprice
  14. String ls_mtrlsectype,ls_zxmtrlmode
  15. Dec ld_cost_temp
  16. Boolean if_find = FALSE
  17. Dec ll_packqty
  18. String ls_prdpackcode
  19. Dec ld_noallocaddqty
  20. Int li_Dxflag
  21. Dec ld_wareamt
  22. string ls_barcode
  23. if arg_mtrlcode = '' then
  24. rslt = 0
  25. GOTO ext
  26. end if
  27. IF Pos(Trim(arg_mtrlcode),'%') = 0 THEN
  28. ls_like_mtrlcode = '%'+ Trim(arg_mtrlcode) + '%'
  29. ELSE
  30. ls_like_mtrlcode = Trim(arg_mtrlcode)
  31. END IF
  32. SELECT count(*) INTO :cnt
  33. FROM u_mtrlware, u_mtrldef
  34. WHERE ( u_mtrldef.mtrlid = u_mtrlware.mtrlid )
  35. AND ( u_mtrlware.sptid = :arg_sptid OR :arg_sptid = -1)
  36. AND ( u_mtrlware.storageid = :arg_storageid )
  37. AND ( u_mtrldef.mtrlcode = :arg_mtrlcode OR u_mtrldef.mtrlname = :arg_mtrlcode OR u_mtrldef.barcode = :arg_mtrlcode );
  38. IF sqlca.SQLCode <> 0 THEN
  39. rslt = 0
  40. GOTO ext
  41. ELSE
  42. IF cnt = 0 THEN
  43. SELECT count(*) INTO :cnt
  44. FROM u_mtrlware, u_mtrldef
  45. WHERE ( u_mtrldef.mtrlid = u_mtrlware.mtrlid )
  46. AND ( u_mtrlware.sptid = :arg_sptid OR :arg_sptid = -1)
  47. AND ( u_mtrlware.storageid = :arg_storageid )
  48. AND ( u_mtrldef.mtrlcode Like :ls_like_mtrlcode OR u_mtrldef.mtrlname Like :ls_like_mtrlcode OR u_mtrldef.barcode Like :ls_like_mtrlcode );
  49. IF sqlca.SQLCode <> 0 THEN
  50. rslt = 0
  51. GOTO ext
  52. ELSE
  53. SELECT top 1 u_mtrlware.mtrlwareid ,
  54. u_mtrlware.mtrlid,
  55. u_mtrldef.mtrlcode,
  56. u_mtrldef.mtrlname,
  57. u_mtrldef.unit,
  58. u_mtrlware.noallocqty,
  59. u_mtrlware.planprice,
  60. u_mtrlware.storageid,
  61. u_mtrlware.plancode,
  62. u_mtrldef.mtrlmode,
  63. u_mtrldef.mtrlsectype,
  64. u_mtrldef.zxmtrlmode,
  65. isnull(uv_mtrlware_noauditingqty.noauditingqty,0),
  66. u_mtrldef.lmsaleprice,
  67. u_mtrlware.status,
  68. u_mtrlware.woodcode,
  69. u_mtrlware.pcode,
  70. u_mtrlware.cost,
  71. cost = case u_mtrlware.noallocqty when 0 then 0 else u_mtrlware.wareamt/u_mtrlware.noallocqty END,
  72. u_mtrlware.sptid,
  73. u_mtrldef.packqty,
  74. u_mtrldef.prdpackcode,
  75. u_mtrlware.noallocaddqty,
  76. u_mtrlware.Dxflag,
  77. u_mtrlware.wareamt,
  78. u_mtrldef.barcode,
  79. u_mtrldef.mtrltype
  80. INTO :ls_mtrlwareid,
  81. :ls_mtrlid,
  82. :ls_mtrlcode,
  83. :ls_mtrlname,
  84. :ls_unit,
  85. :ls_noallocqty,
  86. :ls_planprice,
  87. :ls_storageid,
  88. :ls_plancode,
  89. :ls_mtrlmode,
  90. :ls_mtrlsectype,
  91. :ls_zxmtrlmode,
  92. :ls_noauditingqty,
  93. :ls_lmsaleprice,
  94. :ls_status,
  95. :ls_woodcode,
  96. :ls_pcode,
  97. :ld_cost_temp,
  98. :ls_cost,
  99. :ll_sptid,
  100. :ll_packqty,
  101. :ls_prdpackcode,
  102. :ld_noallocaddqty,
  103. :li_Dxflag,
  104. :ld_wareamt,
  105. :ls_barcode,
  106. :ls_mtrltype
  107. FROM u_mtrldef,
  108. u_mtrlware left OUTER join u_storage
  109. on ( u_mtrlware.storageid = u_storage.storageid)
  110. left OUTER join uv_mtrlware_noauditingqty
  111. on ( u_mtrlware.mtrlwareid = uv_mtrlware_noauditingqty.mtrlwareid)
  112. WHERE ( u_mtrldef.mtrlid = u_mtrlware.mtrlid )
  113. AND ( u_mtrlware.sptid = :arg_sptid OR :arg_sptid = -1)
  114. AND ( u_mtrlware.storageid = :arg_storageid )
  115. AND ( u_mtrldef.mtrlcode Like :ls_like_mtrlcode OR u_mtrldef.mtrlname Like :ls_like_mtrlcode OR u_mtrldef.barcode Like :ls_like_mtrlcode )
  116. order by u_mtrlware.noallocqty desc;
  117. IF sqlca.SQLCode <> 0 THEN
  118. rslt = 0
  119. GOTO ext
  120. ELSE
  121. if_find = TRUE
  122. END IF
  123. // END IF
  124. END IF
  125. ELSE
  126. SELECT top 1 u_mtrlware.mtrlwareid ,
  127. u_mtrlware.mtrlid,
  128. u_mtrldef.mtrlcode,
  129. u_mtrldef.mtrlname,
  130. u_mtrldef.unit,
  131. u_mtrlware.noallocqty,
  132. u_mtrlware.planprice,
  133. u_mtrlware.storageid,
  134. u_mtrlware.plancode,
  135. u_mtrldef.mtrlmode,
  136. u_mtrldef.mtrlsectype,
  137. u_mtrldef.zxmtrlmode,
  138. isnull(uv_mtrlware_noauditingqty.noauditingqty,0),
  139. u_mtrldef.lmsaleprice,
  140. u_mtrlware.status,
  141. u_mtrlware.woodcode,
  142. u_mtrlware.pcode,
  143. u_mtrlware.cost,
  144. cost = case u_mtrlware.noallocqty when 0 then 0 else u_mtrlware.wareamt/u_mtrlware.noallocqty END,
  145. u_mtrlware.sptid,
  146. u_mtrldef.packqty,
  147. u_mtrldef.prdpackcode,
  148. u_mtrlware.noallocaddqty,
  149. u_mtrlware.Dxflag,
  150. u_mtrlware.wareamt,
  151. u_mtrldef.barcode,
  152. u_mtrldef.mtrltype
  153. INTO :ls_mtrlwareid,
  154. :ls_mtrlid,
  155. :ls_mtrlcode,
  156. :ls_mtrlname,
  157. :ls_unit,
  158. :ls_noallocqty,
  159. :ls_planprice,
  160. :ls_storageid,
  161. :ls_plancode,
  162. :ls_mtrlmode,
  163. :ls_mtrlsectype,
  164. :ls_zxmtrlmode,
  165. :ls_noauditingqty,
  166. :ls_lmsaleprice,
  167. :ls_status,
  168. :ls_woodcode,
  169. :ls_pcode,
  170. :ld_cost_temp,
  171. :ls_cost,
  172. :ll_sptid,
  173. :ll_packqty,
  174. :ls_prdpackcode,
  175. :ld_noallocaddqty,
  176. :li_Dxflag,
  177. :ld_wareamt,
  178. :ls_barcode,
  179. :ls_mtrltype
  180. FROM u_mtrldef,
  181. u_mtrlware left OUTER join u_storage
  182. on ( u_mtrlware.storageid = u_storage.storageid)
  183. left OUTER join uv_mtrlware_noauditingqty
  184. on ( u_mtrlware.mtrlwareid = uv_mtrlware_noauditingqty.mtrlwareid)
  185. WHERE ( u_mtrldef.mtrlid = u_mtrlware.mtrlid )
  186. AND ( u_mtrlware.sptid = :arg_sptid OR :arg_sptid = -1)
  187. AND ( u_mtrlware.storageid = :arg_storageid )
  188. AND ( u_mtrldef.mtrlcode = :arg_mtrlcode OR u_mtrldef.mtrlname = :arg_mtrlcode OR u_mtrldef.barcode = :arg_mtrlcode );
  189. IF sqlca.SQLCode <> 0 THEN
  190. rslt = 0
  191. GOTO ext
  192. ELSE
  193. if_find = TRUE
  194. END IF
  195. END IF
  196. END IF
  197. IF if_find THEN
  198. arg_s_mtrlware.u_mtrldef_mtrlcode[1] = ls_mtrlcode
  199. arg_s_mtrlware.u_mtrldef_mtrlname[1] = ls_mtrlname
  200. arg_s_mtrlware.u_mtrldef_unit[1] = ls_unit
  201. arg_s_mtrlware.u_mtrldef_mtrlmode[1] = ls_mtrlmode
  202. arg_s_mtrlware.u_mtrldef_zxmtrlmode[1] = ls_zxmtrlmode
  203. arg_s_mtrlware.u_mtrldef_mtrlsectype[1] = ls_mtrlsectype
  204. arg_s_mtrlware.plancode[1] = ls_plancode
  205. arg_s_mtrlware.status[1] = ls_status
  206. arg_s_mtrlware.woodcode[1] = ls_woodcode
  207. arg_s_mtrlware.pcode[1] = ls_pcode
  208. arg_s_mtrlware.mtrlid[1] = ls_mtrlid
  209. arg_s_mtrlware.mtrlwareid[1] = ls_mtrlwareid
  210. arg_s_mtrlware.storageid[1] = ls_storageid
  211. arg_s_mtrlware.noallocqty[1] = ls_noallocqty
  212. arg_s_mtrlware.noauditingqty[1] = ls_noauditingqty
  213. arg_s_mtrlware.planprice[1] = ls_planprice
  214. arg_s_mtrlware.sptid[1] = ll_sptid
  215. arg_s_mtrlware.u_mtrldef_packqty[1] = ll_packqty
  216. arg_s_mtrlware.u_mtrldef_prdpackcode[1] = ls_prdpackcode
  217. arg_s_mtrlware.noallocaddqty[1] = ld_noallocaddqty
  218. arg_s_mtrlware.Dxflag[1] = li_Dxflag
  219. arg_s_mtrlware.wareamt[1] = ld_wareamt
  220. arg_s_mtrlware.barcode[1] = ls_barcode
  221. arg_s_mtrlware.u_mtrldef_mtrltype[1] = ls_mtrltype
  222. IF ls_noallocqty = 0 THEN
  223. arg_s_mtrlware.cost[1] = ld_cost_temp
  224. ELSE
  225. arg_s_mtrlware.cost[1] = ls_cost
  226. END IF
  227. arg_s_mtrlware.lmsaleprice[1] = ls_lmsaleprice
  228. END IF
  229. ext:
  230. RETURN rslt
  231. end function