f_find_cust.srf 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. $PBExportHeader$f_find_cust.srf
  2. global type f_find_cust from function_object
  3. end type
  4. forward prototypes
  5. global function integer f_find_cust (string arg_cuscode, ref s_custom arg_s_cus)
  6. end prototypes
  7. global function integer f_find_cust (string arg_cuscode, ref s_custom arg_s_cus);Int rslt = 1
  8. Long cnt = 0
  9. String ls_code,ls_name,ls_custype,ls_find_code
  10. String ls_freight,ls_freight_tele
  11. String ls_rel_rep, ls_cus_address, ls_cus_tele, ls_cus_tele1, ls_cus_fax
  12. Int li_banktypeid
  13. Long ll_cusid
  14. Boolean if_find
  15. Long li_option_outrep
  16. string ls_freight_address
  17. IF sys_power_issuper THEN
  18. li_option_outrep = 0
  19. ELSE
  20. li_option_outrep = sys_option_outrep
  21. END IF
  22. SELECT u_cust.cusid
  23. INTO :ll_cusid
  24. FROM u_cust
  25. WHERE (cuscode = :arg_cuscode OR Name = :arg_cuscode) AND (inuse = 1) AND
  26. ( :li_option_outrep = 0 Or (u_cust.custype In (:sys_user_outrepstr) Or :sys_user_outrepstr = '0')) and
  27. ( :sys_option_cusarea = 0 or ( :sys_areastr like '%,' + rtrim(cast(u_cust.cusareaid as varchar(10))) + ',%' OR u_cust.cusareaid = 0 OR :sys_areastr='0' )) ;
  28. IF sqlca.SQLCode <> 0 THEN
  29. IF Pos(Trim(ls_code),'%') = 0 THEN
  30. ls_find_code = '%'+ Trim(arg_cuscode) + '%'
  31. ELSE
  32. ls_find_code = Trim(arg_cuscode)
  33. END IF
  34. SELECT count(*) INTO :cnt
  35. FROM u_cust
  36. WHERE ( cuscode LIKE :ls_find_code OR Name LIKE :ls_find_code ) AND (inuse = 1) AND
  37. ( :li_option_outrep = 0 Or (u_cust.custype In (:sys_user_outrepstr) Or :sys_user_outrepstr = '0')) and
  38. ( :sys_option_cusarea = 0 or ( :sys_areastr like '%,' + rtrim(cast(u_cust.cusareaid as varchar(10))) + ',%' OR u_cust.cusareaid = 0 OR :sys_areastr='0' )) ;
  39. IF sqlca.SQLCode <> 0 THEN
  40. rslt = 0
  41. GOTO ext
  42. END IF
  43. IF cnt <> 1 THEN
  44. rslt = 0
  45. GOTO ext
  46. END IF
  47. SELECT u_cust.cusid
  48. INTO :ll_cusid
  49. FROM u_cust
  50. WHERE ( cuscode LIKE :ls_find_code OR Name LIKE :ls_find_code ) AND (inuse = 1) AND
  51. ( :li_option_outrep = 0 Or (u_cust.custype In (:sys_user_outrepstr) Or :sys_user_outrepstr = '0')) and
  52. ( :sys_option_cusarea = 0 or ( :sys_areastr like '%,' + rtrim(cast(u_cust.cusareaid as varchar(10))) + ',%' OR u_cust.cusareaid = 0 OR :sys_areastr='0' )) ;
  53. IF sqlca.SQLCode <> 0 THEN
  54. rslt = 0
  55. GOTO ext
  56. END IF
  57. if_find = True
  58. ELSE
  59. if_find = True
  60. END IF
  61. IF if_find = True THEN
  62. SELECT u_cust.cusid,
  63. u_cust.name,
  64. u_cust.custype,
  65. u_cust.cuscode,
  66. u_cust.freight,
  67. u_cust.freight_tele,
  68. u_cust.address,
  69. u_cust.tele,
  70. u_cust.tele1,
  71. u_cust.faxno,
  72. u_cust.banktypeid,
  73. u_cust.rep,
  74. u_cust.freight_address
  75. INTO :ll_cusid,:ls_name,:ls_custype,:ls_code,
  76. :ls_freight,:ls_freight_tele,
  77. :ls_cus_address,:ls_cus_tele,:ls_cus_tele1,:ls_cus_fax,:li_banktypeid,:ls_rel_rep,:ls_freight_address
  78. FROM u_cust
  79. Where (cusid = :ll_cusid) ;
  80. arg_s_cus.cusid = ll_cusid
  81. arg_s_cus.Name = ls_name
  82. arg_s_cus.custype = ls_custype
  83. arg_s_cus.cuscode = ls_code
  84. arg_s_cus.freight = ls_freight
  85. arg_s_cus.freight_tele = ls_freight_tele
  86. arg_s_cus.Address = ls_cus_address
  87. arg_s_cus.tele = ls_cus_tele
  88. arg_s_cus.tele1 = ls_cus_tele1
  89. arg_s_cus.faxno = ls_cus_fax
  90. arg_s_cus.banktypeid = li_banktypeid
  91. arg_s_cus.rep = ls_rel_rep
  92. arg_s_cus.freight_address = ls_freight_address
  93. END IF
  94. ext:
  95. RETURN rslt
  96. end function