f_find_mtrlware.srf 6.8 KB

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