123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539 |
- $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
|