uo_find_sc_wrkgrpid.sru 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. $PBExportHeader$uo_find_sc_wrkgrpid.sru
  2. forward
  3. global type uo_find_sc_wrkgrpid from nonvisualobject
  4. end type
  5. end forward
  6. global type uo_find_sc_wrkgrpid from nonvisualobject
  7. end type
  8. global uo_find_sc_wrkgrpid uo_find_sc_wrkgrpid
  9. type variables
  10. Long deep
  11. Boolean lb_find = False
  12. end variables
  13. forward prototypes
  14. public function integer uof_rst_top1_produce_wrkgrpid (long arg_scid, long arg_orderid, long arg_pmtrlid, long arg_mtrlid, long arg_wrkgrpid, string arg_status, string arg_woodcode, string arg_pcode, ref long arg_ref_top1_lp, ref long arg_ref_top1_printid, ref long arg_ref_top1_produce_scid, ref long arg_ref_top1_produce_wrkgrpid, ref string arg_msg)
  15. end prototypes
  16. public function integer uof_rst_top1_produce_wrkgrpid (long arg_scid, long arg_orderid, long arg_pmtrlid, long arg_mtrlid, long arg_wrkgrpid, string arg_status, string arg_woodcode, string arg_pcode, ref long arg_ref_top1_lp, ref long arg_ref_top1_printid, ref long arg_ref_top1_produce_scid, ref long arg_ref_top1_produce_wrkgrpid, ref string arg_msg);Int rslt = 1
  17. Int rst,li_ifselforder
  18. Long ll_j,j,ll_mtrlid_arr[]
  19. Long ll_lp,ll_printid,ll_produce_scid,ll_produce_wrkGrpid
  20. j = 1
  21. deep++
  22. IF deep = 100 THEN
  23. arg_msg = '本次操作物料在指令单对应主生产计划运算结果中找不到对应明细,本指令单物料下级太多虚拟编码(>100),操作取消'
  24. rslt = 0
  25. GOTO ext
  26. END IF
  27. SELECT u_mtrldef.ifselforder
  28. INTO :li_ifselforder
  29. FROM u_mtrldef
  30. Where mtrlid = :arg_pmtrlid;
  31. IF sqlca.SQLCode <> 0 THEN
  32. arg_msg = '查询物料是否虚拟编码失败,'+sqlca.SQLErrText
  33. rslt = 0
  34. GOTO ext
  35. END IF
  36. SELECT top 1 lp,
  37. printid,
  38. produce_scid,
  39. produce_wrkGrpid
  40. INTO :ll_lp,
  41. :ll_printid,
  42. :ll_produce_scid,
  43. :ll_produce_wrkGrpid
  44. FROM u_orderrqmtrl_tree
  45. WHERE scid = :arg_scid
  46. AND orderid = :arg_orderid
  47. AND pmtrlid = :arg_pmtrlid
  48. AND mtrlid = :arg_mtrlid
  49. AND wrkgrpid = :arg_wrkgrpid
  50. AND status = :arg_status
  51. AND woodcode = :arg_woodcode
  52. And pcode = :arg_pcode;
  53. IF sqlca.SQLCode <> 0 THEN
  54. IF sqlca.SQLCode = 100 THEN
  55. DECLARE cur_mtrlmx_1 CURSOR FOR
  56. SELECT u_orderrqmtrl_tree.mtrlid
  57. FROM u_orderrqmtrl_tree,u_mtrldef
  58. WHERE u_orderrqmtrl_tree.scid = :arg_scid
  59. AND u_orderrqmtrl_tree.orderid = :arg_orderid
  60. AND u_orderrqmtrl_tree.pmtrlid = :arg_pmtrlid
  61. AND u_orderrqmtrl_tree.mtrlid = u_mtrldef.mtrlid
  62. And u_mtrldef.ifselforder = 0;
  63. OPEN cur_mtrlmx_1;
  64. FETCH cur_mtrlmx_1 Into :ll_mtrlid_arr[j];
  65. DO WHILE sqlca.SQLCode = 0
  66. j++
  67. FETCH cur_mtrlmx_1 Into :ll_mtrlid_arr[j];
  68. LOOP
  69. CLOSE cur_mtrlmx_1;
  70. IF j - 1 = 0 THEN
  71. rslt = 2
  72. GOTO ext
  73. END IF
  74. FOR ll_j = 1 To j - 1
  75. rst = uof_rst_top1_produce_wrkGrpid(arg_scid,arg_orderid,ll_mtrlid_arr[ll_j],arg_mtrlid,&
  76. arg_wrkgrpid,arg_status,arg_woodcode,arg_pcode,&
  77. arg_ref_top1_lp,arg_ref_top1_printid,&
  78. arg_ref_top1_produce_scid,arg_ref_top1_produce_wrkGrpid,arg_msg)
  79. IF rst = 1 THEN
  80. GOTO ext
  81. ELSEIF rst = 0 THEN
  82. rslt = 0
  83. GOTO ext
  84. ELSEIF rslt = 2 THEN
  85. CONTINUE
  86. END IF
  87. NEXT
  88. ELSE
  89. arg_msg = '本次操作物料在指令单对应主生产计划运算结果中找应明细失败 ~n 1.在对应主生产计划运算结果中查询下级虚拟编码失败 ~n'+sqlca.SQLErrText
  90. rslt = 0
  91. GOTO ext
  92. END IF
  93. ELSE
  94. lb_find = True
  95. arg_ref_top1_lp = ll_lp
  96. arg_ref_top1_printid = ll_printid
  97. arg_ref_top1_produce_scid = ll_produce_scid
  98. arg_ref_top1_produce_wrkGrpid = ll_produce_wrkGrpid
  99. GOTO ext
  100. END IF
  101. IF li_ifselforder <> 0 And Not lb_find THEN
  102. rslt = 0
  103. arg_msg = '本次操作物料在指令单对应主生产计划运算结果中找不到对应明细 ~n 1.在对应主生产计划运算结果中对应指令单下级第1层物料明细找不到该物料 ~n 2.在对应主生产计划运算结果中对应指令单下级物料明细没有虚拟编码'
  104. GOTO ext
  105. END IF
  106. ext:
  107. RETURN rslt
  108. end function
  109. on uo_find_sc_wrkgrpid.create
  110. call super::create
  111. TriggerEvent( this, "constructor" )
  112. end on
  113. on uo_find_sc_wrkgrpid.destroy
  114. TriggerEvent( this, "destructor" )
  115. call super::destroy
  116. end on