$PBExportHeader$f_aps_mtrl_will_find.srf global type f_aps_mtrl_will_find from function_object end type forward prototypes global function integer f_aps_mtrl_will_find (integer arg_type, integer arg_audittype, long arg_scid, long arg_billid, ref string arg_msg) end prototypes global function integer f_aps_mtrl_will_find (integer arg_type, integer arg_audittype, long arg_scid, long arg_billid, ref string arg_msg);// arg_type //1.销售订单 //2.销售发货单 //3.订单配置变更单 //4.外协订单 //5.外协收货单 //6.采购订单 //7.采购收货单 //8.生产进仓单 //9.生产指令单 //10.指令单换料,增料单 //arg_audittype - 0 - 审核 1-撤审 Int rslt = 1 IF sys_option_if_newmrp = 0 THEN rslt = 1 GOTO ext END IF datastore ds_salemx,ds_outwaremx_sale,ds_sale_changemx,ds_order_wfjgmx,ds_wfjgmx_in,ds_wfjgmx_in_out_mtrlware datastore ds_buytaskmx,ds_inwaremx_buy,ds_inwaremx_cp,ds_order_wfjgmx_out,ds_order_ml_mx,ds_wfjgmx_out_rqmtrl datastore ds_mrpmx ds_wfjgmx_out_rqmtrl = Create datastore ds_wfjgmx_out_rqmtrl.DataObject = 'ds_aps_wfjgmx_out_rqmtrl' ds_wfjgmx_out_rqmtrl.SetTransObject(sqlca) ds_mrpmx = Create datastore ds_mrpmx.DataObject = 'ds_order_ml_mrpmx' ds_mrpmx.SetTransObject(sqlca) ds_salemx = Create datastore ds_salemx.DataObject = 'ds_aps_saletaskmx' ds_salemx.SetTransObject(sqlca) ds_outwaremx_sale = Create datastore ds_outwaremx_sale.DataObject = 'ds_aps_outwaremx_sale' ds_outwaremx_sale.SetTransObject(sqlca) ds_sale_changemx = Create datastore ds_sale_changemx.DataObject = 'ds_aps_saletaskmx_change' ds_sale_changemx.SetTransObject(sqlca) ds_order_wfjgmx = Create datastore ds_order_wfjgmx.DataObject = 'ds_aps_order_wfjgmx' ds_order_wfjgmx.SetTransObject(sqlca) ds_wfjgmx_in = Create datastore ds_wfjgmx_in.DataObject = 'ds_aps_wfjgmx_in_aft' ds_wfjgmx_in.SetTransObject(sqlca) ds_wfjgmx_in_out_mtrlware = Create datastore ds_wfjgmx_in_out_mtrlware.DataObject = 'ds_aps_wfjgmx_in_aft' ds_wfjgmx_in_out_mtrlware.SetTransObject(sqlca) ds_buytaskmx = Create datastore ds_buytaskmx.DataObject = 'ds_aps_buytaskmx' ds_buytaskmx.SetTransObject(sqlca) ds_inwaremx_buy = Create datastore ds_inwaremx_buy.DataObject = 'ds_aps_inwaremx_buy' ds_inwaremx_buy.SetTransObject(sqlca) ds_inwaremx_cp = Create datastore ds_inwaremx_cp.DataObject = 'ds_aps_inwaremx_cp' ds_inwaremx_cp.SetTransObject(sqlca) ds_order_wfjgmx_out = Create datastore ds_order_wfjgmx_out.DataObject = 'ds_aps_order_wfjgmx_out' ds_order_wfjgmx_out.SetTransObject(sqlca) ds_order_ml_mx = Create datastore ds_order_ml_mx.DataObject = 'ds_aps_order_ml_mx' ds_order_ml_mx.SetTransObject(sqlca) Long ll_row ,ll_i,ll_j String ls_status,ls_woodcode,ls_pcode String ls_status_old,ls_woodcode_old,ls_pcode_old Long ll_mtrlid,ll_scid,ll_smtrlid,ll_wrkgrpid DateTime ldt_rqdate,ldt_rqdate_wx_find,ldt_rqdate_out Decimal ld_qty,ld_sqty,ld_dqty,ld_qty_order Int li_inwareflag,li_billtype Int li_ordertype Long ll_porderid,ll_relid,cnt Long ll_ordertype,ll_pzlorderid Long ll_orderid_update,ll_orderid Long ll_taskid[],i Long ll_row_f,ll_k,ll_lp String ls_pfcode Decimal ld_qty_out Long ll_mtrlid_out String ls_status_out,ls_woodcode_out,ls_pcode_out CHOOSE CASE arg_type CASE 1 ds_salemx.Retrieve(arg_scid,arg_billid) FOR ll_i = 1 To ds_salemx.RowCount() ll_mtrlid = ds_salemx.Object.mtrlid[ll_i] ls_status = ds_salemx.Object.status[ll_i] ls_woodcode = ds_salemx.Object.woodcode[ll_i] ls_pcode = ds_salemx.Object.pcode[ll_i] ldt_rqdate = ds_salemx.Object.requiredate[ll_i] IF arg_audittype = 0 THEN ld_qty = ds_salemx.Object.saleqty[ll_i] ELSE ld_qty = 0 - ds_salemx.Object.saleqty[ll_i] END IF IF f_aps_mtrl_will_add(arg_scid,ll_mtrlid,ls_status,ls_woodcode,ls_pcode,ldt_rqdate,ld_qty,1,arg_msg,mrp_sqlca,True) = 0 THEN rslt = 0 GOTO ext END IF NEXT CASE 2 ds_outwaremx_sale.Retrieve(arg_scid,arg_billid) FOR ll_i = 1 To ds_outwaremx_sale.RowCount() ll_mtrlid = ds_outwaremx_sale.Object.u_saletaskmx_mtrlid[ll_i] ls_status = ds_outwaremx_sale.Object.u_saletaskmx_status[ll_i] ls_woodcode = ds_outwaremx_sale.Object.u_saletaskmx_woodcode[ll_i] ls_pcode = ds_outwaremx_sale.Object.u_saletaskmx_pcode[ll_i] ldt_rqdate = ds_outwaremx_sale.Object.u_saletaskmx_requiredate[ll_i] IF arg_audittype = 0 THEN ld_qty = 0 - ds_outwaremx_sale.Object.u_outwaremx_qty[ll_i] ELSE ld_qty = ds_outwaremx_sale.Object.u_outwaremx_qty[ll_i] END IF IF f_aps_mtrl_will_add(arg_scid,ll_mtrlid,ls_status,ls_woodcode,ls_pcode,ldt_rqdate,ld_qty,1,arg_msg,mrp_sqlca,True) = 0 THEN rslt = 0 GOTO ext END IF NEXT CASE 3 ds_sale_changemx.Retrieve(arg_scid,arg_billid) FOR ll_i = 1 To ds_sale_changemx.RowCount() ll_mtrlid = ds_sale_changemx.Object.u_saletaskmx_mtrlid[ll_i] ls_status = ds_sale_changemx.Object.u_saletaskmx_change_newstatus[ll_i] ls_woodcode = ds_sale_changemx.Object.u_saletaskmx_change_newwoodcode[ll_i] ls_pcode = ds_sale_changemx.Object.u_saletaskmx_change_newpcode[ll_i] ls_status_old = ds_sale_changemx.Object.u_saletaskmx_change_oldstatus[ll_i] ls_woodcode_old = ds_sale_changemx.Object.u_saletaskmx_change_oldwoodcode[ll_i] ls_pcode_old = ds_sale_changemx.Object.u_saletaskmx_change_oldpcode[ll_i] ldt_rqdate = ds_sale_changemx.Object.u_saletaskmx_requiredate[ll_i] ld_qty = ds_sale_changemx.Object.u_saletaskmx_saleqty[ll_i] IF f_aps_mtrl_will_add(arg_scid,ll_mtrlid,ls_status_old,ls_woodcode_old,ls_pcode_old,ldt_rqdate, 0 - ld_qty,1,arg_msg,mrp_sqlca,True) = 0 THEN rslt = 0 GOTO ext END IF IF f_aps_mtrl_will_add(arg_scid,ll_mtrlid,ls_status,ls_woodcode,ls_pcode,ldt_rqdate,ld_qty,1,arg_msg,mrp_sqlca,True) = 0 THEN rslt = 0 GOTO ext END IF NEXT CASE 4 //收货明细- 更新外协未到货数 ds_order_wfjgmx.Retrieve(arg_scid,arg_billid) FOR ll_i = 1 To ds_order_wfjgmx.RowCount() ll_mtrlid = ds_order_wfjgmx.Object.mtrlid[ll_i] ls_status = ds_order_wfjgmx.Object.status[ll_i] ls_woodcode = ds_order_wfjgmx.Object.woodcode[ll_i] ls_pcode = ds_order_wfjgmx.Object.pcode[ll_i] ldt_rqdate = ds_order_wfjgmx.Object.requiredate[ll_i] IF arg_audittype = 0 THEN ld_qty = ds_order_wfjgmx.Object.qty[ll_i] ELSE ld_qty = 0 - ds_order_wfjgmx.Object.qty[ll_i] END IF IF f_aps_mtrl_will_add(arg_scid,ll_mtrlid,ls_status,ls_woodcode,ls_pcode,ldt_rqdate,ld_qty,6,arg_msg,mrp_sqlca,True) = 0 THEN rslt = 0 GOTO ext END IF NEXT //发货明细- 更新外协需求数 //发出明细-生产需求数 ds_order_wfjgmx_out.Retrieve(arg_scid,arg_billid) FOR ll_i = 1 To ds_order_wfjgmx_out.RowCount() ll_mtrlid = ds_order_wfjgmx_out.Object.u_order_wfjgmx_out_mtrlid[ll_i] ls_status = ds_order_wfjgmx_out.Object.u_order_wfjgmx_out_status[ll_i] ls_woodcode = ds_order_wfjgmx_out.Object.u_order_wfjgmx_out_woodcode[ll_i] ls_pcode = ds_order_wfjgmx_out.Object.u_order_wfjgmx_out_pcode[ll_i] ldt_rqdate = ds_order_wfjgmx_out.Object.u_order_wfjg_requiredate[ll_i] // //这个有问题取相关收货明细的交货日期 // //最对应收货明细最早交货行 // SELECT min(u_order_wfjgMx.Requiredate) // INTO :ldt_rqdate_wx_find // FROM u_order_wfjgMx,u_order_wfjgmx_out_mx // WHERE u_order_wfjgMx.scid = u_order_wfjgmx_out_mx.scid // AND u_order_wfjgMx.printid = u_order_wfjgmx_out_mx.relprintid // AND u_order_wfjgmx_out_mx.mtrlid = :ll_mtrlid // AND u_order_wfjgmx_out_mx.status = :ls_status // AND u_order_wfjgmx_out_mx.woodcode = :ls_woodcode // AND u_order_wfjgmx_out_mx.pcode = :ls_pcode // AND u_order_wfjgMx.scid = :arg_scid // And u_order_wfjgMx.wfjgid = :arg_billid; // IF sqlca.SQLCode <> 0 THEN // arg_msg = '查询发出明细对应收货明细最早交货日期失败,'+sqlca.SQLErrText // rslt = 0 // GOTO ext // END IF // // ldt_rqdate = ldt_rqdate_wx_find IF arg_audittype = 0 THEN ld_qty = ds_order_wfjgmx_out.Object.u_order_wfjgmx_out_qty[ll_i] // ld_qty_order = 0 - ds_order_wfjgmx_out.Object.u_order_wfjgmx_out_qty[ll_i] ELSE ld_qty = 0 - ds_order_wfjgmx_out.Object.u_order_wfjgmx_out_qty[ll_i] // ld_qty_order = ds_order_wfjgmx_out.Object.u_order_wfjgmx_out_qty[ll_i] END IF IF f_aps_mtrl_will_add(arg_scid,ll_mtrlid,ls_status,ls_woodcode,ls_pcode,ldt_rqdate,ld_qty,3,arg_msg,mrp_sqlca,True) = 0 THEN rslt = 0 GOTO ext END IF ds_wfjgmx_out_rqmtrl.Retrieve(arg_scid,arg_billid,ll_mtrlid,ls_status,ls_woodcode,ls_pcode) FOR ll_j = 1 To ds_wfjgmx_out_rqmtrl.RowCount() ldt_rqdate_wx_find = ds_wfjgmx_out_rqmtrl.Object.rqdate[ll_j] ld_qty_order = ds_wfjgmx_out_rqmtrl.Object.qty[ll_j] IF arg_audittype = 0 THEN ld_qty_order = 0 - ld_qty_order ELSE ld_qty_order = ld_qty_order END IF IF f_aps_mtrl_will_add(arg_scid,ll_mtrlid,ls_status,ls_woodcode,ls_pcode,ldt_rqdate_wx_find,ld_qty_order,2,arg_msg,mrp_sqlca,True) = 0 THEN rslt = 0 GOTO ext END IF NEXT NEXT CASE 5 ds_wfjgmx_in.Retrieve(arg_scid,arg_billid) //收货明细- 更新外协未到货数 //相关发出明细已领数 - 更新外协需求数 FOR ll_i = 1 To ds_wfjgmx_in.RowCount() ll_mtrlid = ds_wfjgmx_in.Object.u_order_wfjgmx_mtrlid[ll_i] ls_status = ds_wfjgmx_in.Object.u_order_wfjgmx_status[ll_i] ls_woodcode = ds_wfjgmx_in.Object.u_order_wfjgmx_woodcode[ll_i] ls_pcode = ds_wfjgmx_in.Object.u_order_wfjgmx_pcode[ll_i] ldt_rqdate = ds_wfjgmx_in.Object.u_order_wfjgmx_requiredate[ll_i] ll_orderid = ds_wfjgmx_in.Object.u_order_wfjgmx_orderid[ll_i] ls_pfcode = ds_wfjgmx_in.Object.u_order_wfjgmx_pfcode[ll_i] ldt_rqdate_out = ds_wfjgmx_in.Object.u_order_wfjg_requiredate[ll_i] IF arg_audittype = 0 THEN ld_qty = 0 - ds_wfjgmx_in.Object.ow_wfjgmx_in_aft_qty[ll_i] ELSE ld_qty = ds_wfjgmx_in.Object.ow_wfjgmx_in_aft_qty[ll_i] END IF IF f_aps_mtrl_will_add(arg_scid,ll_mtrlid,ls_status,ls_woodcode,ls_pcode,ldt_rqdate,ld_qty,6,arg_msg,mrp_sqlca,True) = 0 THEN rslt = 0 GOTO ext END IF IF ll_orderid > 0 THEN ds_mrpmx.Retrieve(arg_scid,ll_orderid) ll_row_f = ds_mrpmx.Find("u_orderrqmtrl_tree_mtrlid = "+String(ll_mtrlid),1,ds_mrpmx.RowCount()) IF ll_row_f > 0 THEN ll_lp = ds_mrpmx.Object.u_orderrqmtrl_tree_lp[ll_row_f] FOR ll_k = ll_row_f + 1 To ds_mrpmx.RowCount() IF ds_mrpmx.Object.u_orderrqmtrl_tree_lp[ll_k] <= ll_lp THEN EXIT IF ds_mrpmx.Object.u_orderrqmtrl_tree_lp[ll_k] = ll_lp + 1 And ds_mrpmx.Object.u_orderrqmtrl_tree_rqqty[ll_k] > 0 THEN ll_mtrlid_out = ds_mrpmx.Object.u_orderrqmtrl_tree_mtrlid[ll_k] ls_status_out = ds_mrpmx.Object.u_orderrqmtrl_tree_status[ll_k] ls_woodcode_out = ds_mrpmx.Object.u_orderrqmtrl_tree_woodcode[ll_k] ls_pcode_out = ds_mrpmx.Object.u_orderrqmtrl_tree_pcode[ll_k] ld_qty_out = ld_qty / ds_mrpmx.Object.u_orderrqmtrl_tree_truerqqty[ll_row_f] * ds_mrpmx.Object.u_orderrqmtrl_tree_rqqty[ll_k] IF f_aps_mtrl_will_add(arg_scid,ll_mtrlid_out,ls_status_out,ls_woodcode_out,ls_pcode_out,ldt_rqdate_out,ld_qty_out,3,arg_msg,mrp_sqlca,True) = 0 THEN rslt = 0 GOTO ext END IF END IF NEXT END IF ELSE DECLARE cur_inmx CURSOR FOR SELECT u_PrdPF.SonMtrlid, :ld_qty * u_prdpf.Sonscale / (1 - u_PrdPF.sonloss) + u_PrdPF.SonDECLoss FROM u_PrdPF INNER JOIN u_mtrldef ON u_PrdPF.SonMtrlid = u_mtrldef.mtrlid WHERE ( u_PrdPF.mtrlid = :ll_mtrlid ) And ( u_PrdPF.pfcode = :ls_pfcode ) ; OPEN cur_inmx; FETCH cur_inmx Into :ll_mtrlid_out,:ld_qty_out; DO WHILE sqlca.SQLCode = 0 IF f_aps_mtrl_will_add(arg_scid,ll_mtrlid_out,'','','',ldt_rqdate_out,ld_qty_out,3,arg_msg,mrp_sqlca,True) = 0 THEN rslt = 0 GOTO ext END IF FETCH cur_inmx Into :ll_mtrlid_out,:ld_qty_out; LOOP CLOSE cur_inmx; END IF NEXT CASE 6 ds_buytaskmx.Retrieve(arg_scid,arg_billid) FOR ll_i = 1 To ds_buytaskmx.RowCount() ll_mtrlid = ds_buytaskmx.Object.mtrlid[ll_i] ls_status = ds_buytaskmx.Object.status[ll_i] ls_woodcode = ds_buytaskmx.Object.woodcode[ll_i] ls_pcode = ds_buytaskmx.Object.pcode[ll_i] ldt_rqdate = ds_buytaskmx.Object.requiredate[ll_i] IF arg_audittype = 0 THEN ld_qty = ds_buytaskmx.Object.qty[ll_i] ELSE ld_qty = 0 - ds_buytaskmx.Object.qty[ll_i] END IF IF f_aps_mtrl_will_add(arg_scid,ll_mtrlid,ls_status,ls_woodcode,ls_pcode,ldt_rqdate,ld_qty,4,arg_msg,mrp_sqlca,True) = 0 THEN rslt = 0 GOTO ext END IF NEXT CASE 7 ds_inwaremx_buy.Retrieve(arg_scid,arg_billid) FOR ll_i = 1 To ds_inwaremx_buy.RowCount() ll_mtrlid = ds_inwaremx_buy.Object.u_buytaskmx_mtrlid[ll_i] ls_status = ds_inwaremx_buy.Object.u_buytaskmx_status[ll_i] ls_woodcode = ds_inwaremx_buy.Object.u_buytaskmx_woodcode[ll_i] ls_pcode = ds_inwaremx_buy.Object.u_buytaskmx_pcode[ll_i] ldt_rqdate = ds_inwaremx_buy.Object.u_buytaskmx_requiredate[ll_i] IF arg_audittype = 0 THEN ld_qty = 0 - ds_inwaremx_buy.Object.u_buytaskmx_qty[ll_i] ELSE ld_qty = ds_inwaremx_buy.Object.u_buytaskmx_qty[ll_i] END IF IF f_aps_mtrl_will_add(arg_scid,ll_mtrlid,ls_status,ls_woodcode,ls_pcode,ldt_rqdate,ld_qty,4,arg_msg,mrp_sqlca,True) = 0 THEN rslt = 0 GOTO ext END IF NEXT CASE 8 ds_inwaremx_cp.Retrieve(arg_scid,arg_billid) FOR ll_i = 1 To ds_inwaremx_cp.RowCount() ll_mtrlid = ds_inwaremx_cp.Object.u_inwaremx_mtrlid[ll_i] ls_status = ds_inwaremx_cp.Object.u_inwaremx_status[ll_i] ls_woodcode = ds_inwaremx_cp.Object.u_inwaremx_woodcode[ll_i] ls_pcode = ds_inwaremx_cp.Object.u_inwaremx_pcode[ll_i] ldt_rqdate = ds_inwaremx_cp.Object.u_order_ml_requiredate[ll_i] IF arg_audittype = 0 THEN ld_qty = 0 - ds_inwaremx_cp.Object.u_inwaremx_qty[ll_i] ELSE ld_qty = ds_inwaremx_cp.Object.u_inwaremx_qty[ll_i] END IF IF f_aps_mtrl_will_add(arg_scid,ll_mtrlid,ls_status,ls_woodcode,ls_pcode,ldt_rqdate,ld_qty,5,arg_msg,mrp_sqlca,True) = 0 THEN rslt = 0 GOTO ext END IF NEXT CASE 9 SELECT mtrlid,status_mode,woodcode,pcode,orderqty,requiredate,inwareflag,ordertype,pzlorderid INTO :ll_mtrlid,:ls_status,:ls_woodcode,:ls_pcode,:ld_qty,:ldt_rqdate,:li_inwareflag,:ll_ordertype,:ll_pzlorderid FROM u_order_ml WHERE scid = :arg_scid And orderid = :arg_billid Using sqlca; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询指令单信息失败,'+sqlca.SQLErrText GOTO ext END IF IF li_inwareflag = 0 THEN GOTO _not_zl END IF IF arg_audittype = 0 THEN ld_qty = ld_qty ELSE ld_qty = 0 - ld_qty END IF IF f_aps_mtrl_will_add(arg_scid,ll_mtrlid,ls_status,ls_woodcode,ls_pcode,ldt_rqdate,ld_qty,5,arg_msg,mrp_sqlca,True) = 0 THEN rslt = 0 GOTO ext END IF //更新生产计划未排指令数 _not_zl: IF ll_ordertype = 4 And ll_pzlorderid = 0 THEN ds_order_ml_mx.Retrieve(arg_scid,arg_billid) FOR ll_i = 1 To ds_order_ml_mx.RowCount() ldt_rqdate = ds_order_ml_mx.Object.u_orderrqmtrl_rqdate[ll_i] ld_qty = ds_order_ml_mx.Object.u_order_ml_mx_qty[ll_i] IF arg_audittype = 0 THEN ld_qty = 0 - ld_qty ELSE ld_qty = ld_qty END IF IF f_aps_mtrl_will_add(arg_scid,ll_mtrlid,ls_status,ls_woodcode,ls_pcode,ldt_rqdate,ld_qty,7,arg_msg,mrp_sqlca,True) = 0 THEN rslt = 0 GOTO ext END IF NEXT END IF CASE 10 SELECT u_order_ml_mtrl_change.billtype, u_order_ml_mtrl_change.smtrlid, u_order_ml_mtrl_change.dmtrlid, u_order_ml_mtrl_change.status, u_order_ml_mtrl_change.woodcode, u_order_ml_mtrl_change.pcode, u_order_ml_mtrl_change.sqty, u_order_ml_mtrl_change.dqty, ISNULL(v_orderrqmtrl.edate, GETDATE()) INTO :li_billtype, :ll_smtrlid, :ll_mtrlid, :ls_status, :ls_woodcode, :ls_pcode, :ld_sqty, :ld_dqty, :ldt_rqdate FROM u_order_ml_mtrl_change LEFT OUTER JOIN (SELECT scid, OrderID, MtrlID, status, woodcode, pcode, MIN(edate) AS edate FROM u_OrderRqMtrl GROUP BY scid, OrderID, MtrlID, status, woodcode, pcode) v_orderrqmtrl ON u_order_ml_mtrl_change.scid = v_orderrqmtrl.scid AND u_order_ml_mtrl_change.orderid = v_orderrqmtrl.OrderID AND u_order_ml_mtrl_change.smtrlid = v_orderrqmtrl.MtrlID AND u_order_ml_mtrl_change.status = v_orderrqmtrl.status AND u_order_ml_mtrl_change.woodcode = v_orderrqmtrl.woodcode AND u_order_ml_mtrl_change.pcode = v_orderrqmtrl.pcode WHERE u_order_ml_mtrl_change.scid = :arg_scid And u_order_ml_mtrl_change.billid = :arg_billid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '更新用料需求数>>查询单据信息失败,'+sqlca.SQLErrText GOTO ext END IF IF li_billtype = 0 Or li_billtype = 1 Or li_billtype = 3 THEN IF f_aps_mtrl_will_add(arg_scid,ll_smtrlid,ls_status,ls_woodcode,ls_pcode,ldt_rqdate,0 - ld_sqty,2,arg_msg,mrp_sqlca,True) = 0 THEN rslt = 0 GOTO ext END IF IF f_aps_mtrl_will_add(arg_scid,ll_mtrlid,ls_status,ls_woodcode,ls_pcode,ldt_rqdate,ld_dqty,2,arg_msg,mrp_sqlca,True) = 0 THEN rslt = 0 GOTO ext END IF ELSEIF li_billtype = 2 THEN IF f_aps_mtrl_will_add(arg_scid,ll_mtrlid,ls_status,ls_woodcode,ls_pcode,ldt_rqdate,ld_dqty,2,arg_msg,mrp_sqlca,True) = 0 THEN rslt = 0 GOTO ext END IF END IF END CHOOSE ext: Destroy ds_salemx Destroy ds_outwaremx_sale Destroy ds_sale_changemx Destroy ds_order_wfjgmx Destroy ds_wfjgmx_in Destroy ds_wfjgmx_in_out_mtrlware Destroy ds_buytaskmx Destroy ds_inwaremx_buy Destroy ds_inwaremx_cp Destroy ds_order_wfjgmx_out Destroy ds_order_ml_mx Destroy ds_mrpmx Destroy ds_wfjgmx_out_rqmtrl RETURN rslt end function