f_insert_0_mtrlware.srf 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. $PBExportHeader$f_insert_0_mtrlware.srf
  2. global type f_insert_0_mtrlware from function_object
  3. end type
  4. forward prototypes
  5. global function integer f_insert_0_mtrlware (ref long arg_mtrlwareid, long arg_mtrlid, string arg_mtrlcode, long arg_storageid, long arg_sptid, string arg_status, string arg_woodcode, string arg_pcode, string arg_plancode, decimal arg_cost, ref string arg_msg)
  6. end prototypes
  7. global function integer f_insert_0_mtrlware (ref long arg_mtrlwareid, long arg_mtrlid, string arg_mtrlcode, long arg_storageid, long arg_sptid, string arg_status, string arg_woodcode, string arg_pcode, string arg_plancode, decimal arg_cost, ref string arg_msg);Int rslt = 1
  8. Long cnt
  9. Long ls_mtrlwareid,ls_scid
  10. String ls_woodcode_dscrp,ls_status_dscrp,ls_pcode_dscrp,ls_dscrp
  11. IF trim(sys_option_change_status) <> '' THEN
  12. ls_status_dscrp = sys_option_change_status
  13. ls_dscrp = ls_status_dscrp+':'+arg_status+' '
  14. END IF
  15. IF trim(sys_option_change_woodcode) <> '' THEN
  16. ls_woodcode_dscrp = sys_option_change_woodcode
  17. ls_dscrp = ls_dscrp+ls_woodcode_dscrp+':'+arg_woodcode+' '
  18. END IF
  19. IF trim(sys_option_change_pcode) <> '' THEN
  20. ls_pcode_dscrp = sys_option_change_pcode
  21. ls_dscrp = ls_dscrp+ls_pcode_dscrp+':'+arg_pcode
  22. END IF
  23. SELECT scid INTO :ls_scid
  24. FROM u_storage
  25. Where storageid = :arg_storageid;
  26. IF sqlca.SQLCode <> 0 THEN
  27. arg_msg = '查询仓库分部失败,请检查'
  28. rslt = 0
  29. GOTO ext
  30. END IF
  31. SELECT count(*) INTO :cnt FROM u_mtrlware
  32. WHERE mtrlid = :arg_mtrlid
  33. AND storageid = :arg_storageid
  34. AND sptid = :arg_sptid
  35. AND dxflag = 0
  36. AND woodcode = :arg_woodcode
  37. AND pcode = :arg_pcode
  38. AND status = :arg_status
  39. AND plancode = :arg_plancode
  40. AND scid = :ls_scid;
  41. IF sqlca.SQLCode <> 0 THEN
  42. arg_msg = '查询物料:'+arg_mtrlcode+'是否有库存失败,请检查'
  43. rslt = 0
  44. GOTO ext
  45. END IF
  46. IF cnt = 1 THEN
  47. SELECT mtrlwareid INTO :ls_mtrlwareid FROM u_mtrlware
  48. WHERE mtrlid = :arg_mtrlid
  49. AND storageid = :arg_storageid
  50. AND sptid = :arg_sptid
  51. AND dxflag = 0
  52. AND woodcode = :arg_woodcode
  53. AND pcode = :arg_pcode
  54. AND status = :arg_status
  55. AND plancode = :arg_plancode
  56. AND scid = :ls_scid;
  57. IF sqlca.SQLCode <> 0 THEN
  58. arg_msg = '查询物料:'+arg_mtrlcode+'是否有库存失败,请检查'
  59. rslt = 0
  60. GOTO ext
  61. END IF
  62. arg_mtrlwareid = ls_mtrlwareid
  63. GOTO ext
  64. END IF
  65. IF arg_cost = 0 THEN
  66. SELECT planprice INTO :arg_cost
  67. FROM u_mtrldef
  68. Where mtrlid = :arg_mtrlid;
  69. IF sqlca.SQLCode <> 0 THEN
  70. arg_msg = '查询计划价失败!!'
  71. rslt = 0
  72. GOTO ext
  73. END IF
  74. END IF
  75. ls_mtrlwareid = f_sys_scidentity(ls_scid,"u_mtrlware","mtrlwareid",arg_msg,false,sqlca)
  76. INSERT INTO u_mtrlware(scid,mtrlwareid,mtrlid,storageid,noallocqty,woodcode,pcode,plancode,status,sptid,cost)
  77. Values(:ls_scid,:ls_mtrlwareid,:arg_mtrlid,:arg_storageid,0,:arg_woodcode,:arg_pcode,:arg_plancode,:arg_status,:arg_sptid,:arg_cost);
  78. IF sqlca.SQLCode <> 0 THEN
  79. arg_msg = '物料:'+arg_mtrlcode+' '+ls_dscrp+' 加0库存失败或物料已经有库存,请检查'+sqlca.SQLErrText
  80. rslt = 0
  81. GOTO ext
  82. END IF
  83. arg_mtrlwareid = ls_mtrlwareid
  84. ext:
  85. IF rslt = 0 THEN
  86. ROLLBACK;
  87. ELSE
  88. COMMIT;
  89. END IF
  90. RETURN rslt
  91. end function