f_find_mtrl.srf 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353
  1. $PBExportHeader$f_find_mtrl.srf
  2. global type f_find_mtrl from function_object
  3. end type
  4. forward prototypes
  5. global function integer f_find_mtrl (string arg_mtrlcode, long arg_storageid, ref s_mtrldef_array arg_s_mtrldef)
  6. end prototypes
  7. global function integer f_find_mtrl (string arg_mtrlcode, long arg_storageid, ref s_mtrldef_array arg_s_mtrldef);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. Long ll_mtrlid
  12. String ls_prdpackcode
  13. Decimal ld_packqty,ld_planprice,ld_lmbuyprice,ld_lmsaleprice
  14. Decimal ld_rate_buy,ls_rate_scll,ls_rate_sale
  15. String ls_mtrlsectype,ls_zxmtrlmode,ls_usermtrlmode,ls_barcode,ls_mtrlengname
  16. Boolean if_find = False
  17. Int li_statusflag,li_woodcodeflag,li_pcodeflag
  18. Long ll_statustype,ll_woodcodetype,ll_pcodetype
  19. String ls_status_config,ls_woodcode_config,ls_pcode_config
  20. Int li_ifcustom,li_status_check,li_woodcode_check,li_pcode_check
  21. Long ll_configcodetype
  22. String ls_configcode,ls_configname,ls_mtrlcolor
  23. String ls_priceformula
  24. String ls_qtyformula
  25. string ls_unit_scll,ls_unit_sale,ls_unit_buy
  26. long ls_buydec,ls_wfjgdec,ls_sclldec,ls_saledec,ls_buyunit,ls_wfjgunit,ls_scllunit,ls_saleunit //ls_rate_scll,ls_rate_sale,
  27. String ls_strcheckaddqty
  28. Decimal ld_net_weight
  29. Decimal ld_gross_weight
  30. Decimal ld_cubage
  31. String ls_handtype
  32. IF Pos(Trim(arg_mtrlcode),'%') = 0 THEN
  33. ls_like_mtrlcode = '%'+ Trim(arg_mtrlcode) + '%'
  34. ELSE
  35. ls_like_mtrlcode = Trim(arg_mtrlcode)
  36. END IF
  37. IF arg_storageid = -1 THEN
  38. SELECT u_mtrldef.mtrlid
  39. INTO :ll_mtrlid
  40. FROM u_mtrldef
  41. Where ( u_mtrldef.mtrlcode = :arg_mtrlcode Or u_mtrldef.mtrlname = :arg_mtrlcode Or u_mtrldef.barcode = :arg_mtrlcode )
  42. and (isuse = 1);
  43. IF sqlca.SQLCode <> 0 THEN
  44. SELECT count(*) INTO :cnt
  45. FROM u_mtrldef
  46. Where ( u_mtrldef.mtrlcode Like :ls_like_mtrlcode Or u_mtrldef.mtrlname Like :ls_like_mtrlcode Or u_mtrldef.barcode Like :ls_like_mtrlcode)
  47. and (isuse = 1) ;
  48. IF sqlca.SQLCode <> 0 THEN
  49. rslt = 0
  50. GOTO ext
  51. END IF
  52. IF cnt <> 1 THEN
  53. rslt = 0
  54. GOTO ext
  55. ELSE
  56. SELECT u_mtrldef.mtrlid
  57. INTO
  58. :ll_mtrlid
  59. FROM u_mtrldef
  60. Where ( u_mtrldef.mtrlcode Like :ls_like_mtrlcode Or u_mtrldef.mtrlname Like :ls_like_mtrlcode Or u_mtrldef.barcode Like :ls_like_mtrlcode)
  61. and (isuse = 1) ;
  62. IF sqlca.SQLCode <> 0 THEN
  63. rslt = 0
  64. GOTO ext
  65. ELSE
  66. if_find = True
  67. END IF
  68. END IF
  69. ELSE
  70. if_find = True
  71. END IF
  72. ELSE
  73. SELECT u_mtrldef.mtrlid
  74. INTO :ll_mtrlid
  75. FROM u_mtrldef LEFT OUTER JOIN
  76. u_mtrl_storage ON u_mtrldef.mtrlid = u_mtrl_storage.mtrlid
  77. WHERE ( u_mtrldef.mtrlcode = :arg_mtrlcode OR u_mtrldef.mtrlname = :arg_mtrlcode OR u_mtrldef.barcode = :arg_mtrlcode)
  78. and (u_mtrldef.isuse = 1)
  79. And ( u_mtrl_storage.storageid = :arg_storageid Or :arg_storageid = -1 );
  80. IF sqlca.SQLCode <> 0 THEN
  81. SELECT count(*) INTO :cnt
  82. FROM u_mtrldef LEFT OUTER JOIN
  83. u_mtrl_storage ON u_mtrldef.mtrlid = u_mtrl_storage.mtrlid
  84. WHERE ( u_mtrldef.mtrlcode LIKE :ls_like_mtrlcode OR u_mtrldef.mtrlname LIKE :ls_like_mtrlcode OR u_mtrldef.barcode LIKE :ls_like_mtrlcode)
  85. and (u_mtrldef.isuse = 1)
  86. And ( u_mtrl_storage.storageid = :arg_storageid Or :arg_storageid = -1 );
  87. IF sqlca.SQLCode <> 0 THEN
  88. rslt = 0
  89. GOTO ext
  90. END IF
  91. IF cnt = 0 THEN
  92. rslt = 0
  93. GOTO ext
  94. ELSEIF cnt > 1 THEN
  95. SELECT u_mtrldef.mtrlid
  96. INTO :ll_mtrlid
  97. FROM u_mtrldef LEFT OUTER JOIN
  98. u_mtrl_storage ON u_mtrldef.mtrlid = u_mtrl_storage.mtrlid
  99. WHERE ( u_mtrldef.mtrlcode LIKE :ls_like_mtrlcode OR u_mtrldef.mtrlname LIKE :ls_like_mtrlcode OR u_mtrldef.barcode LIKE :ls_like_mtrlcode)
  100. and (u_mtrldef.isuse = 1)
  101. And ( u_mtrl_storage.storageid = :arg_storageid Or :arg_storageid = -1 );
  102. IF sqlca.SQLCode <> 0 THEN
  103. rslt = 0
  104. GOTO ext
  105. ELSE
  106. if_find = True
  107. END IF
  108. ELSE
  109. SELECT u_mtrldef.mtrlid
  110. INTO :ll_mtrlid
  111. FROM u_mtrldef LEFT OUTER JOIN
  112. u_mtrl_storage ON u_mtrldef.mtrlid = u_mtrl_storage.mtrlid
  113. WHERE ( u_mtrldef.mtrlcode LIKE :ls_like_mtrlcode OR u_mtrldef.mtrlname LIKE :ls_like_mtrlcode OR u_mtrldef.barcode LIKE :ls_like_mtrlcode)
  114. and (u_mtrldef.isuse = 1)
  115. And ( u_mtrl_storage.storageid = :arg_storageid Or :arg_storageid = -1 );
  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. ELSE
  124. if_find = True
  125. END IF
  126. END IF
  127. IF if_find THEN
  128. SELECT u_mtrldef.mtrlid,
  129. u_mtrldef.mtrlcode,
  130. u_mtrldef.mtrlname,
  131. u_mtrldef.unit,
  132. u_mtrldef.mtrlmode,
  133. u_mtrldef.planprice,
  134. u_mtrldef.mtrltype,
  135. u_mtrldef.mtrlsectype,
  136. u_mtrldef.zxmtrlmode,
  137. u_mtrldef.prdpackcode,
  138. u_mtrldef.packqty,
  139. u_mtrldef.lmbuyprice,
  140. u_mtrldef.lmsaleprice,
  141. u_mtrldef.unit_buy,
  142. u_mtrldef.rate_buy,
  143. u_mtrldef.barcode,
  144. u_mtrldef.statusflag,
  145. u_mtrldef.woodcodeflag,
  146. u_mtrldef.pcodeflag,
  147. u_mtrldef.statustype,
  148. u_mtrldef.woodcodetype,
  149. u_mtrldef.pcodetype,
  150. u_mtrldef.ifcustom,
  151. u_mtrldef.status_check,
  152. u_mtrldef.woodcode_check,
  153. u_mtrldef.pcode_check,
  154. u_mtrldef.configcodetype,
  155. u_mtrldef.configcode,
  156. u_mtrldef.configname,
  157. u_mtrldef.mtrlcolor,
  158. u_mtrldef.status_config,
  159. u_mtrldef.woodcode_config,
  160. u_mtrldef.pcode_config,
  161. u_mtrldef.priceformula,
  162. u_mtrldef.qtyformula,
  163. u_mtrldef.buyunit,
  164. u_mtrldef.wfjgunit,
  165. u_mtrldef.scllunit,
  166. u_mtrldef.saleunit,
  167. u_mtrldef.buydec,
  168. u_mtrldef.wfjgdec,
  169. u_mtrldef.sclldec,
  170. u_mtrldef.saledec,
  171. u_mtrldef.unit_scll,
  172. u_mtrldef.unit_sale,
  173. u_mtrldef.rate_scll,
  174. u_mtrldef.rate_sale,
  175. u_mtrldef.mtrlengname,
  176. u_mtrldef.strcheckaddqty,
  177. u_mtrldef.net_weight,
  178. u_mtrldef.gross_weight,
  179. u_mtrldef.cubage,
  180. u_mtrldef.handtype
  181. INTO :ll_mtrlid,
  182. :ls_mtrlcode,
  183. :ls_mtrlname,
  184. :ls_unit,
  185. :ls_mtrlmode,
  186. :ld_planprice,
  187. :ls_mtrltype,
  188. :ls_mtrlsectype,
  189. :ls_zxmtrlmode,
  190. :ls_prdpackcode,
  191. :ld_packqty,
  192. :ld_lmbuyprice,
  193. :ld_lmsaleprice,
  194. :ls_unit_buy,
  195. :ld_rate_buy,
  196. :ls_barcode,
  197. :li_statusflag,
  198. :li_woodcodeflag,
  199. :li_pcodeflag,
  200. :ll_statustype,
  201. :ll_woodcodetype,
  202. :ll_pcodetype,
  203. :li_ifcustom,
  204. :li_status_check,
  205. :li_woodcode_check,
  206. :li_pcode_check,
  207. :ll_configcodetype,
  208. :ls_configcode,
  209. :ls_configname,
  210. :ls_mtrlcolor,
  211. :ls_status_config,
  212. :ls_woodcode_config,
  213. :ls_pcode_config,
  214. :ls_priceformula,
  215. :ls_qtyformula,
  216. :ls_buyunit,
  217. :ls_wfjgunit,
  218. :ls_scllunit,
  219. :ls_saleunit,
  220. :ls_buydec,
  221. :ls_wfjgdec,
  222. :ls_sclldec,
  223. :ls_saledec,
  224. :ls_unit_scll,
  225. :ls_unit_sale,
  226. :ls_rate_scll,
  227. :ls_rate_sale,
  228. :ls_mtrlengname,
  229. :ls_strcheckaddqty,
  230. :ld_net_weight,
  231. :ld_gross_weight,
  232. :ld_cubage,
  233. :ls_handtype
  234. FROM u_mtrldef
  235. Where u_mtrldef.mtrlid = :ll_mtrlid;
  236. arg_s_mtrldef.mtrlid[1] = ll_mtrlid
  237. arg_s_mtrldef.mtrlcode[1] = ls_mtrlcode
  238. arg_s_mtrldef.mtrlname[1] = ls_mtrlname
  239. arg_s_mtrldef.unit[1] = ls_unit
  240. arg_s_mtrldef.mtrlmode[1] = ls_mtrlmode
  241. arg_s_mtrldef.planprice[1] = ld_planprice
  242. arg_s_mtrldef.mtrltype[1] = ls_mtrltype
  243. arg_s_mtrldef.mtrlsectype[1] = ls_mtrlsectype
  244. arg_s_mtrldef.zxmtrlmode[1] = ls_zxmtrlmode
  245. arg_s_mtrldef.usermtrlmode[1] = ls_usermtrlmode
  246. arg_s_mtrldef.prdpackcode[1] = ls_prdpackcode
  247. arg_s_mtrldef.packqty[1] = ld_packqty
  248. arg_s_mtrldef.lmbuyprice[1] = ld_lmbuyprice
  249. arg_s_mtrldef.lmsaleprice[1] = ld_lmsaleprice
  250. arg_s_mtrldef.unit_buy[1] = ls_unit_buy
  251. arg_s_mtrldef.rate_buy[1] = ld_rate_buy
  252. arg_s_mtrldef.barcode[1] = ls_barcode
  253. arg_s_mtrldef.mtrlengname[1] = ls_mtrlengname
  254. arg_s_mtrldef.strcheckaddqty[1] = ls_strcheckaddqty
  255. arg_s_mtrldef.handtype[1] = ls_handtype
  256. arg_s_mtrldef.statusflag[1] = li_statusflag
  257. arg_s_mtrldef.woodcodeflag[1] = li_woodcodeflag
  258. arg_s_mtrldef.pcodeflag[1] = li_pcodeflag
  259. arg_s_mtrldef.statustype[1] = ll_statustype
  260. arg_s_mtrldef.woodcodetype[1] = ll_woodcodetype
  261. arg_s_mtrldef.pcodetype[1] = ll_pcodetype
  262. arg_s_mtrldef.ifcustom[1] = li_ifcustom
  263. arg_s_mtrldef.status_check[1] = li_status_check
  264. arg_s_mtrldef.woodcode_check[1] = li_woodcode_check
  265. arg_s_mtrldef.pcode_check[1] = li_pcode_check
  266. arg_s_mtrldef.configcodetype[1] = ll_configcodetype
  267. arg_s_mtrldef.configcode[1] = ls_configcode
  268. arg_s_mtrldef.configname[1] = ls_configname
  269. arg_s_mtrldef.mtrlcolor[1] = ls_mtrlcolor
  270. arg_s_mtrldef.status_config[1] = ls_status_config
  271. arg_s_mtrldef.woodcode_config[1] = ls_woodcode_config
  272. arg_s_mtrldef.pcode_config[1] = ls_pcode_config
  273. arg_s_mtrldef.priceformula[1] = ls_priceformula
  274. arg_s_mtrldef.qtyformula[1] =ls_qtyformula
  275. arg_s_mtrldef.buyunit[1] = ls_buyunit
  276. arg_s_mtrldef.wfjgunit[1] = ls_wfjgunit
  277. arg_s_mtrldef.scllunit[1] = ls_scllunit
  278. arg_s_mtrldef.saleunit[1] = ls_saleunit
  279. arg_s_mtrldef.buydec[1] = ls_buydec
  280. arg_s_mtrldef.wfjgdec[1] = ls_wfjgdec
  281. arg_s_mtrldef.sclldec[1] = ls_sclldec
  282. arg_s_mtrldef.saledec[1] = ls_saledec
  283. arg_s_mtrldef.unit_scll[1] = ls_unit_scll
  284. arg_s_mtrldef.unit_sale[1] = ls_unit_sale
  285. arg_s_mtrldef.rate_scll[1] = ls_rate_scll
  286. arg_s_mtrldef.rate_sale[1] = ls_rate_sale
  287. arg_s_mtrldef.net_weight[1] = ld_net_weight
  288. arg_s_mtrldef.gross_weight[1] = ld_gross_weight
  289. arg_s_mtrldef.cubage[1] = ld_cubage
  290. IF arg_s_mtrldef.statusflag[1] = 4 THEN
  291. arg_s_mtrldef.status[1] = ls_status_config
  292. ELSE
  293. arg_s_mtrldef.status[1] = ""
  294. END IF
  295. IF arg_s_mtrldef.woodcodeflag[1] = 4 THEN
  296. arg_s_mtrldef.woodcode[1] = ls_woodcode_config
  297. ELSE
  298. arg_s_mtrldef.woodcode[1] = ""
  299. END IF
  300. IF arg_s_mtrldef.pcodeflag[1] = 4 THEN
  301. arg_s_mtrldef.pcode[1] = ls_pcode_config
  302. ELSE
  303. arg_s_mtrldef.pcode[1] = ""
  304. END IF
  305. IF arg_s_mtrldef.statusflag[1] = 2 THEN
  306. SELECT name
  307. into :ls_status_config
  308. from u_mtrl_configure
  309. where u_mtrl_configure.mtrlid = :ll_mtrlid and u_mtrl_configure.DefaultPZ = 1;
  310. arg_s_mtrldef.status[1] = ls_status_config
  311. END IF
  312. END IF
  313. ext:
  314. RETURN rslt
  315. end function