f_add_mtrlware_inmx.srf 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. $PBExportHeader$f_add_mtrlware_inmx.srf
  2. global type f_add_mtrlware_inmx from function_object
  3. end type
  4. forward prototypes
  5. global function integer f_add_mtrlware_inmx (long arg_scid, long arg_mtrlwareid, long arg_inwareid, long arg_printid, string arg_inwarecode, datetime arg_inwaredate, decimal arg_inqty, decimal arg_inprice, decimal arg_inprice_notax, long arg_if_outware, boolean arg_ifcommit, ref transaction commit_transaction, ref string arg_msg)
  6. end prototypes
  7. global function integer f_add_mtrlware_inmx (long arg_scid, long arg_mtrlwareid, long arg_inwareid, long arg_printid, string arg_inwarecode, datetime arg_inwaredate, decimal arg_inqty, decimal arg_inprice, decimal arg_inprice_notax, long arg_if_outware, boolean arg_ifcommit, ref transaction commit_transaction, ref string arg_msg);Long rslt = 1
  8. Long ls_newid
  9. DateTime dt
  10. Decimal dec_temp = 0
  11. ls_newid = f_sys_scidentity(0,"u_mtrlware_inmx","mtrlwaremxid",arg_msg,False,commit_transaction)
  12. IF ls_newid <= 0 THEN
  13. rslt = 0
  14. GOTO ext
  15. END IF
  16. dec_temp = arg_inqty
  17. arg_inqty = Abs(arg_inqty)
  18. dt = DateTime(Date(arg_inwaredate),Time(0))
  19. INSERT INTO u_mtrlware_inmx
  20. (mtrlwaremxid,
  21. scid,
  22. mtrlwareid,
  23. inwareid,
  24. printid,
  25. inwarecode,
  26. inwaredate,
  27. inqty,
  28. inprice,
  29. inprice_notax,
  30. if_outware)
  31. VALUES
  32. ( :ls_newid,
  33. :arg_scid,
  34. :arg_mtrlwareid,
  35. :arg_inwareid,
  36. :arg_printid,
  37. :arg_inwarecode,
  38. :dt,
  39. :arg_inqty,
  40. :arg_inprice,
  41. :arg_inprice_notax,
  42. :arg_if_outware) Using commit_transaction ;
  43. IF commit_transaction.SQLCode <> 0 or commit_transaction.SQLNRows=0 THEN
  44. rslt = 0
  45. arg_msg = "插入入库批明细失败"+"~n"
  46. GOTO ext
  47. END IF
  48. IF dec_temp > 0 THEN
  49. UPDATE u_inwaremx SET u_inwaremx.cost = :arg_inprice ,u_inwaremx.costamt = :arg_inprice * :arg_inqty,
  50. u_inwaremx.cost_notax = :arg_inprice_notax
  51. Where scid = :arg_scid And inwareid = :arg_inwareid And printid = :arg_printid Using commit_transaction ;
  52. IF commit_transaction.SQLCode <> 0 THEN
  53. rslt = 0
  54. arg_msg = "更新进仓明细成本失败1"+"~n"
  55. GOTO ext
  56. END IF
  57. ELSE
  58. UPDATE u_outwaremx SET u_outwaremx.cost = :arg_inprice ,u_outwaremx.costamt = :arg_inprice * :arg_inqty * (-1),
  59. u_outwaremx.cost_notax = :arg_inprice_notax
  60. Where scid = :arg_scid And outwareid = :arg_inwareid And printid = :arg_printid Using commit_transaction ;
  61. IF commit_transaction.SQLCode <> 0 THEN
  62. rslt = 0
  63. arg_msg = "更新负数出仓明细成本失败2"+"~n"
  64. GOTO ext
  65. END IF
  66. END IF
  67. ext:
  68. IF rslt = 0 THEN
  69. ROLLBACK Using commit_transaction;
  70. ELSEIF rslt = 1 And arg_ifcommit THEN
  71. COMMIT Using commit_transaction;
  72. END IF
  73. RETURN rslt
  74. end function