f_get_defsaleprice.srf 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. $PBExportHeader$f_get_defsaleprice.srf
  2. global type f_get_defsaleprice from function_object
  3. end type
  4. forward prototypes
  5. global subroutine f_get_defsaleprice (long arg_cusid, long arg_mtrlid, string arg_unit, string arg_status, string arg_pcode, string arg_woodcode, long arg_moneyid, ref decimal arg_def_dftsaleprice, decimal arg_qty)
  6. end prototypes
  7. global subroutine f_get_defsaleprice (long arg_cusid, long arg_mtrlid, string arg_unit, string arg_status, string arg_pcode, string arg_woodcode, long arg_moneyid, ref decimal arg_def_dftsaleprice, decimal arg_qty);Int rslt = 1
  8. String ls_status,ls_pcode,ls_woodcode
  9. Long ll_pricelistid,li_flag
  10. IF sys_option_price_if_status = 0 THEN
  11. ls_status = ''
  12. ls_pcode = ''
  13. ls_woodcode = ''
  14. ELSE
  15. ls_status = arg_status
  16. ls_pcode = arg_pcode
  17. ls_woodcode = arg_woodcode
  18. END IF
  19. SELECT pricelistid INTO :ll_pricelistid
  20. FROM u_cust
  21. Where cusid = :arg_cusid;
  22. IF sqlca.SQLCode <> 0 THEN
  23. rslt = 0
  24. GOTO ext
  25. END IF
  26. arg_qty = Abs(arg_qty)//取绝对值进行查询
  27. IF ll_pricelistid = 0 THEN
  28. SELECT top 1 u_sale_price_list.pricelistid INTO :ll_pricelistid
  29. FROM u_sale_price_list,u_sale_price_mx
  30. WHERE u_sale_price_mx.pricelistid = u_sale_price_list.pricelistid
  31. AND u_sale_price_mx.mtrlid = :arg_mtrlid
  32. AND u_sale_price_mx.status = :arg_status
  33. AND u_sale_price_mx.pcode = :arg_pcode
  34. AND u_sale_price_mx.woodcode = :arg_woodcode
  35. AND u_sale_price_mx.unit = :arg_unit
  36. AND u_sale_price_list.dftflag = 1
  37. AND u_sale_price_list.flag = 1
  38. AND u_sale_price_list.moneyid = :arg_moneyid
  39. AND (u_sale_price_mx.saleqty <= :arg_qty and u_sale_price_mx.saleqty1 >= :arg_qty);
  40. IF sqlca.SQLCode <> 0 THEN
  41. rslt = 0
  42. GOTO ext
  43. END IF
  44. END IF
  45. SELECT price,flag
  46. INTO :arg_def_dftsaleprice,:li_flag
  47. FROM u_sale_price_list,u_sale_price_mx
  48. WHERE u_sale_price_mx.pricelistid = u_sale_price_list.pricelistid
  49. AND u_sale_price_mx.mtrlid = :arg_mtrlid
  50. AND u_sale_price_mx.status = :arg_status
  51. AND u_sale_price_mx.pcode = :arg_pcode
  52. AND u_sale_price_mx.woodcode = :arg_woodcode
  53. AND u_sale_price_mx.unit = :arg_unit
  54. AND u_sale_price_mx.pricelistid = :ll_pricelistid
  55. AND (u_sale_price_mx.saleqty <= :arg_qty and u_sale_price_mx.saleqty1 >= :arg_qty);
  56. IF sqlca.SQLCode <> 0 THEN
  57. rslt = 0
  58. GOTO ext
  59. END IF
  60. IF li_flag = 0 THEN
  61. rslt = 0
  62. GOTO ext
  63. END IF
  64. ext:
  65. IF rslt = 0 THEN
  66. arg_def_dftsaleprice = 0
  67. END IF
  68. end subroutine