f_check_inoutdate.srf 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. $PBExportHeader$f_check_inoutdate.srf
  2. global type f_check_inoutdate from function_object
  3. end type
  4. forward prototypes
  5. global function integer f_check_inoutdate (long arg_storageid, ref datetime arg_date, boolean arg_ifcheck_balc, ref string arg_msg)
  6. end prototypes
  7. global function integer f_check_inoutdate (long arg_storageid, ref datetime arg_date, boolean arg_ifcheck_balc, ref string arg_msg);Int rslt = 1
  8. DateTime server_dt
  9. DateTime ld_ctdate,ld_balcdate
  10. //IF sys_power_issuper THEN
  11. // rslt = 1
  12. // GOTO ext
  13. //END IF
  14. //
  15. SELECT Top 1 getdate() INTO :server_dt FROM u_user;
  16. IF sqlca.SQLCode <> 0 THEN
  17. rslt = 0
  18. arg_msg = "查询操作失败,日期"
  19. GOTO ext
  20. END IF
  21. IF Year(Date(arg_date)) < 2000 Or IsNull(arg_date) THEN
  22. rslt = 0
  23. arg_msg = "缺少发生日期或不合理"
  24. GOTO ext
  25. END IF
  26. IF DaysAfter(Date(String(server_dt,'yyyy-mm-dd')),Date(String(arg_date,'yyyy-mm-dd'))) > sys_option_input_days THEN
  27. rslt = 0
  28. arg_msg = '发生日期错误,日期不能超前系统日期,系统选项[015]限制,只允许录入'+string(sys_option_input_days)+"天的数据"
  29. GOTO ext
  30. END IF
  31. IF DaysAfter(Date(String(arg_date,'yyyy-mm-dd')),Date(String(server_dt,'yyyy-mm-dd'))) > sys_option_input_days THEN
  32. rslt = 0
  33. arg_msg = '发生日期错误,日期不能落后系统日期,系统选项[015]限制,只允许录入'+string(sys_option_input_days)+"天的数据"
  34. GOTO ext
  35. END IF
  36. SELECT max(ct_datetime)
  37. INTO :ld_ctdate
  38. FROM sys_ct_data;
  39. IF sqlca.SQLCode = -1 THEN
  40. rslt = 0
  41. arg_msg = '查询最后截数日期出错'
  42. GOTO ext
  43. ELSEIF sqlca.SQLCode = 100 THEN
  44. GOTO balc
  45. END IF
  46. IF arg_storageid = -100 THEN
  47. IF arg_date <= ld_ctdate THEN
  48. arg_msg = '非法发生日期,日期:'+String(arg_date,'yyyy-mm-dd')+'小于最后截数日期:'+String(ld_ctdate,'yyyy-mm-dd')
  49. rslt = 0
  50. GOTO ext
  51. END IF
  52. END IF
  53. balc:
  54. IF arg_ifcheck_balc THEN
  55. SELECT max(balcdate)
  56. INTO :ld_balcdate
  57. FROM u_warebalc
  58. WHERE balcdateint > 0
  59. AND storageid = :arg_storageid;
  60. IF sqlca.SQLCode = -1 THEN
  61. rslt = 0
  62. arg_msg = '查询最后结存日期出错'
  63. GOTO ext
  64. ELSEIF sqlca.SQLCode = 100 THEN
  65. rslt = 1
  66. GOTO ext
  67. END IF
  68. IF arg_date <= ld_balcdate THEN
  69. arg_msg = '非法发生日期,日期:'+String(arg_date,'yyyy-mm-dd')+'小于最后结存日期:'+String(ld_balcdate,'yyyy-mm-dd')
  70. rslt = 0
  71. GOTO ext
  72. END IF
  73. END IF
  74. ext:
  75. RETURN rslt
  76. end function