123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- $PBExportHeader$f_addmx_mtrl_change.srf
- global type f_addmx_mtrl_change from function_object
- end type
- forward prototypes
- global function integer f_addmx_mtrl_change (long arg_scid, long arg_orderid, long arg_mtrlid, long arg_wrkgrpid, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_sqty, decimal arg_dqty, ref s_order_ml_mtrl_change_mx arg_s_mx[], ref string arg_msg)
- end prototypes
- global function integer f_addmx_mtrl_change (long arg_scid, long arg_orderid, long arg_mtrlid, long arg_wrkgrpid, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_sqty, decimal arg_dqty, ref s_order_ml_mtrl_change_mx arg_s_mx[], ref string arg_msg);Long ll_pmtrlid,ll_ordertype,ll_porderid
- long ll_lp,ll_printid,ll_produce_scid,ll_produce_wrkGrpid
- String ls_ordercode,ls_relcode, ls_taskrelcode
- Decimal ld_rqqty
- Long ll_mtrlorigin
- Int rslt = 1
- Long ll_row
- Long i = 1
- Long ll_porderid_arr[]
- String ls_ordercode_arr[],ls_relcode_arr[], ls_taskrelcode_arr[]
- Long ll_i
- Boolean lb_iffind = False
- Decimal ld_DstrQty
- uo_find_sc_wrkgrpid uo_fscwrkgrpid
- uo_fscwrkgrpid = Create uo_find_sc_wrkgrpid
- SELECT ordertype,mtrlid INTO :ll_ordertype,:ll_pmtrlid
- FROM u_order_ml
- WHERE orderid = :arg_orderid
- And scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '查询指令单相关信息失败'+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- IF ll_ordertype <> 4 THEN //生产计划,明细插入自己本身
- uo_fscwrkgrpid.deep = 0
- uo_fscwrkgrpid.lb_find = false
- IF uo_fscwrkgrpid.uof_rst_top1_produce_wrkGrpid(arg_scid,arg_orderid,ll_pmtrlid,&
- arg_mtrlid,arg_wrkgrpid,arg_status,arg_woodcode,arg_pcode,&
- ll_lp,ll_printid,ll_produce_scid,ll_produce_wrkGrpid,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- SELECT mtrlorigin INTO :ll_mtrlorigin
- FROM u_mtrldef
- Where mtrlid = :arg_mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '查询原需求物料来源失败'+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF ll_mtrlorigin = 6 THEN ll_mtrlorigin = 0
- IF ll_mtrlorigin <> 0 THEN ll_produce_wrkGrpid = 0 //yyx20101020
- // IF ll_mtrlorigin = 3 THEN ll_produce_wrkGrpid = 0 //yyx20100622
-
- SELECT rqqty,DstrQty INTO :ld_rqqty,:ld_DstrQty
- FROM u_orderrqmtrl
- WHERE scid = :arg_scid
- AND orderid = :arg_orderid
- AND mtrlid = :arg_mtrlid
- AND wrkgrpid = :arg_wrkgrpid
- AND status = :arg_status
- AND woodcode = :arg_woodcode
- AND pcode = :arg_pcode
- AND plantype = :ll_mtrlorigin
- And produce_wrkGrpid = :ll_produce_wrkGrpid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '查询原需求物料来源失败'+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- SELECT ordercode,relcode, taskrelcode
- INTO :ls_ordercode,:ls_relcode , :ls_taskrelcode
- FROM u_order_ml
- WHERE orderid = :arg_orderid
- And scid = :arg_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '查询主生产计划信息失败'+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- ll_row++
- arg_s_mx[ll_row].printid = ll_row
- arg_s_mx[ll_row].orderid = arg_orderid
- arg_s_mx[ll_row].rqqty_ori = ld_rqqty - ld_DstrQty
- arg_s_mx[ll_row].rateqty = ld_rqqty - ld_DstrQty
-
- ELSE //生产指令单,搜索明细表得出相关主生产计划
- DECLARE cur_mx CURSOR FOR
- SELECT u_order_ml_mx.taskid,
- u_order_ml_mx.taskcode,
- u_order_ml.relcode,
- u_order_ml.taskrelcode
- FROM u_order_ml_mx,
- u_order_ml
- WHERE ( u_order_ml_mx.scid = u_order_ml.scid ) AND
- ( u_order_ml_mx.taskid = u_order_ml.orderid ) AND
- ( u_order_ml_mx.orderid = :arg_orderid ) AND
- ( u_order_ml_mx.scid = :arg_scid ) ;
-
- OPEN cur_mx;
-
- FETCH cur_mx Into :ll_porderid_arr[i],:ls_ordercode_arr[i],:ls_relcode_arr[i],:ls_taskrelcode_arr[i];
- DO WHILE sqlca.SQLCode = 0
- i++
- FETCH cur_mx Into :ll_porderid_arr[i],:ls_ordercode_arr[i],:ls_relcode_arr[i],:ls_taskrelcode_arr[i];
- LOOP
- CLOSE cur_mx;
-
- FOR ll_i = 1 To i - 1
- uo_fscwrkgrpid.deep = 0
- uo_fscwrkgrpid.lb_find = false
- IF uo_fscwrkgrpid.uof_rst_top1_produce_wrkGrpid(arg_scid,ll_porderid_arr[ll_i],ll_pmtrlid,&
- arg_mtrlid,arg_wrkgrpid,arg_status,arg_woodcode,arg_pcode,&
- ll_lp,ll_printid,ll_produce_scid,ll_produce_wrkGrpid,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- SELECT mtrlorigin INTO :ll_mtrlorigin
- FROM u_mtrldef
- Where mtrlid = :arg_mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '查询原需求物料来源失败'+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF ll_mtrlorigin = 6 THEN ll_mtrlorigin = 0
- IF ll_mtrlorigin <> 0 THEN ll_produce_wrkGrpid = 0
-
- SELECT rqqty,DstrQty INTO :ld_rqqty,:ld_DstrQty
- FROM u_orderrqmtrl
- WHERE scid = :arg_scid
- AND orderid = :ll_porderid_arr[ll_i]
- AND mtrlid = :arg_mtrlid
- AND wrkgrpid = :arg_wrkgrpid
- AND status = :arg_status
- AND woodcode = :arg_woodcode
- AND pcode = :arg_pcode
- AND plantype = :ll_mtrlorigin
- And produce_wrkGrpid = :ll_produce_wrkGrpid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '查询原需求物料来源失败'+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- ll_row++
- arg_s_mx[ll_row].printid = ll_row
- arg_s_mx[ll_row].orderid = ll_porderid_arr[ll_i]
- arg_s_mx[ll_row].rqqty_ori = ld_rqqty - ld_DstrQty
- arg_s_mx[ll_row].rateqty = ld_rqqty - ld_DstrQty
-
- NEXT
- END IF
- Decimal ld_sumqty
- ld_sumqty = 0
- FOR ll_i = 1 To ll_row
- ld_sumqty = ld_sumqty + arg_s_mx[ll_i].rateqty
- NEXT
- FOR ll_i = 1 To ll_row
- IF ld_sumqty > 0 THEN
- arg_s_mx[ll_i].rqqty_ori = arg_sqty / ld_sumqty * arg_s_mx[ll_i].rateqty
- arg_s_mx[ll_i].rqqty = arg_dqty / ld_sumqty * arg_s_mx[ll_i].rateqty
- ELSE
- arg_s_mx[ll_i].rqqty_ori = arg_sqty / ll_row
- arg_s_mx[ll_i].rqqty = arg_dqty / ll_row
- END IF
- NEXT
- ext:
- Destroy uo_fscwrkgrpid
- RETURN rslt
- end function
|