123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893 |
- $PBExportHeader$uo_order_ml_stop.sru
- forward
- global type uo_order_ml_stop from nonvisualobject
- end type
- end forward
- global type uo_order_ml_stop from nonvisualobject
- end type
- global uo_order_ml_stop uo_order_ml_stop
- type variables
- Long uo_billid
- String uo_billcode
- Int uo_option_order_bh_use_yc
- end variables
- forward prototypes
- public function integer save (s_order_ml_stop arg_stop, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
- public function integer p_getflag (long arg_billid, ref integer arg_flag, ref string arg_msg)
- public function integer updatebegin (long arg_billid, ref string arg_msg)
- public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
- public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit)
- public function integer audit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
- public function integer getinfo (long arg_billid, ref s_order_ml_stop_mx arg_ref_mx[], ref long arg_arr_cnt, ref string arg_msg)
- public function integer getinfo_order (long arg_scid, long arg_orderid, ref s_order_ml_mx arg_order_mx[], ref long arg_cnt_arr, ref string arg_msg)
- end prototypes
- public function integer save (s_order_ml_stop arg_stop, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long cnt = 0
- DateTime server_dt
- Long ll_billid
- String ls_sccode,ls_billcode
- Long it_mxbt,i
- IF IsNull(arg_stop.scid) THEN arg_stop.scid = 0
- IF IsNull(arg_stop.billid) THEN arg_stop.billid = 0
- IF IsNull(arg_stop.billemp) THEN arg_stop.billemp = ''
- IF IsNull(arg_stop.relcode) THEN arg_stop.relcode = ''
- IF IsNull(arg_stop.dscrp) THEN arg_stop.dscrp = ''
- IF IsNull(arg_stop.orderid) THEN arg_stop.orderid = 0
- IF IsNull(arg_stop.oriqty) THEN arg_stop.oriqty = 0
- IF IsNull(arg_stop.stopqty) THEN arg_stop.stopqty = 0
- IF IsNull(arg_stop.ifchange) THEN arg_stop.ifchange = 0
- IF IsNull(arg_stop.ifstoppro) THEN arg_stop.ifstoppro = 0
- IF arg_stop.orderid = 0 THEN
- rslt = 0
- arg_msg = '请选择要终止数量的生产计划'
- GOTO ext
- END IF
- Long ll_status
- Decimal ld_orderqty,ld_acmpqty
- SELECT status,orderqty,acmpqty INTO :ll_status,:ld_orderqty,:ld_acmpqty
- FROM u_order_ml
- WHERE scid = :arg_stop.scid
- AND orderid = :arg_stop.orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询生产计划状态失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF ll_status <> 1 THEN
- rslt = 0
- arg_msg = '生产计划不是在进行状态,不能终止数量'
- GOTO ext
- END IF
- arg_stop.oriqty = ld_orderqty
- IF ld_orderqty - ld_acmpqty < arg_stop.stopqty THEN
- rslt = 0
- arg_msg = '生产计划未完成数:'+String(ld_orderqty - ld_acmpqty,'#,##0.##########')+',不能终止数量:'+String( arg_stop.stopqty,'#,##0.##########')
- GOTO ext
- END IF
- IF arg_stop.billemp = '' THEN
- arg_msg = '请输入经手人'
- rslt = 0
- GOTO ext
- END IF
- it_mxbt = UpperBound(arg_stop.arg_s_stopmx)
- FOR i = 1 TO it_mxbt
- IF arg_stop.arg_s_stopmx[i].qty_stop > arg_stop.arg_s_stopmx[i].qty THEN
- rslt = 0
- arg_msg = '第'+String(i)+'行,终止数量不能大于原计划数量'
- GOTO ext
- END IF
- NEXT
- SELECT Top 1 getdate() INTO :server_dt FROM u_user;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,日期 "
- GOTO ext
- END IF
- IF arg_stop.billid = 0 THEN
- ll_billid = f_sys_scidentity(0,"u_order_ml_stop","billid",arg_msg,TRUE,id_sqlca)
-
- IF ll_billid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF f_get_sccode(arg_stop.scid,sqlca,ls_sccode,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- ls_billcode = getid(arg_stop.scid,ls_sccode + 'OS',Date(server_dt),FALSE,sqlca)
- IF ls_billcode = "err" THEN
- rslt = 0
- arg_msg = "无法获取单据编号"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- INSERT INTO u_order_ml_stop
- (scid,
- billid,
- billcode,
- billdate,
- billemp,
- opdate,
- opemp,
- relcode,
- dscrp,
- orderid,
- oriqty,
- stopqty,
- ifchange,
- ifstoppro)
- VALUES (
- :arg_stop.scid,
- :ll_billid,
- :ls_billcode,
- :arg_stop.billdate,
- :arg_stop.billemp,
- getdate(),
- :arg_opemp,
- :arg_stop.relcode,
- :arg_stop.dscrp,
- :arg_stop.orderid,
- :arg_stop.oriqty,
- :arg_stop.stopqty,
- :arg_stop.ifchange,
- :arg_stop.ifstoppro) ;
-
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致建立单据操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- FOR i = 1 TO it_mxbt
- INSERT INTO u_order_ml_stop_mx
- (billid,
- printid,
- taskid,
- scid,
- orderid,
- taskcode,
- qty,
- cusid,
- taskmxid,
- taskscid,
- qty_stop)
- VALUES (
- :ll_billid,
- :arg_stop.arg_s_stopmx[i].printid,
- :arg_stop.arg_s_stopmx[i].taskid,
- :arg_stop.scid,
- :arg_stop.arg_s_stopmx[i].orderid,
- :arg_stop.arg_s_stopmx[i].taskcode,
- :arg_stop.arg_s_stopmx[i].qty,
- :arg_stop.arg_s_stopmx[i].cusid,
- :arg_stop.arg_s_stopmx[i].taskmxid,
- :arg_stop.arg_s_stopmx[i].taskscid,
- :arg_stop.arg_s_stopmx[i].qty_stop);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- NEXT
-
- uo_billid = ll_billid
- uo_billcode = ls_billcode
-
- ELSE
- UPDATE u_order_ml_stop
- SET
- billdate = :arg_stop.billdate,
- billemp = :arg_stop.billemp,
- moddate = getdate(),
- modemp = :arg_opemp,
- relcode = :arg_stop.relcode,
- dscrp = :arg_stop.dscrp,
- orderid = :arg_stop.orderid,
- oriqty = :arg_stop.oriqty,
- stopqty = :arg_stop.stopqty,
- ifchange = :arg_stop.ifchange,
- ifstoppro = :arg_stop.ifstoppro
- WHERE billid = :arg_stop.billid
- AND flag = 0;
- IF sqlca.SQLCode <> 0 OR sqlca.SQLNRows <= 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致更新单据操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- DELETE FROM u_order_ml_stop_mx
- WHERE billid = :arg_stop.billid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除原有明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- FOR i = 1 TO it_mxbt
- INSERT INTO u_order_ml_stop_mx
- (billid,
- printid,
- taskid,
- scid,
- orderid,
- taskcode,
- qty,
- cusid,
- taskmxid,
- taskscid,
- qty_stop)
- VALUES (
- :arg_stop.billid,
- :arg_stop.arg_s_stopmx[i].printid,
- :arg_stop.arg_s_stopmx[i].taskid,
- :arg_stop.scid,
- :arg_stop.arg_s_stopmx[i].orderid,
- :arg_stop.arg_s_stopmx[i].taskcode,
- :arg_stop.arg_s_stopmx[i].qty,
- :arg_stop.arg_s_stopmx[i].cusid,
- :arg_stop.arg_s_stopmx[i].taskmxid,
- :arg_stop.arg_s_stopmx[i].taskscid,
- :arg_stop.arg_s_stopmx[i].qty_stop);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- NEXT
-
- uo_billid = arg_stop.billid
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF arg_ifcommit AND rslt = 1 THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer p_getflag (long arg_billid, ref integer arg_flag, ref string arg_msg);Int rslt = 1
- SELECT flag
- INTO :arg_flag
- FROM u_order_ml_stop
- WHERE billid = :arg_billid;
- IF sqlca.SQLCode <> 0 THEN
- ARG_MSG = '查询单据审核标记失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ext:
- RETURN rslt
- end function
- public function integer updatebegin (long arg_billid, ref string arg_msg);Int rslt = 1
- Int li_flag
- Long cnt
- IF arg_billid <= 0 THEN
- rslt = 0
- arg_msg = '错误单据唯一码'
- GOTO ext
- END IF
- IF p_getflag(arg_billid,li_flag,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF li_flag = 1 THEN
- rslt = 0
- arg_msg = '单据已经审核,不可以再修改'
- GOTO ext
- END IF
- ext:
- RETURN rslt
- end function
- public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_flag
- IF arg_billid <= 0 THEN
- rslt = 0
- arg_msg = '错误单据唯一码'
- GOTO ext
- END IF
- IF p_getflag(arg_billid,li_flag,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF li_flag = 1 THEN
- rslt = 0
- arg_msg = '单据不是在待审状态,不可以删除'
- GOTO ext
- END IF
- DELETE FROM u_order_ml_stop
- WHERE billid = :arg_billid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除单据操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_flag
- IF arg_newdescppart = '' THEN
- rslt = 0
- arG_MSG = "要添加内容为空,操作取消"
- GOTO ext
- END IF
- IF p_getflag(arg_billid,li_flag,arG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF li_flag = 0 THEN
- rslt = 0
- arG_MSG = "待审核状态下不可用"
- GOTO ext
- END IF
- UPDATE u_order_ml_stop
- SET DSCRP = DSCRP+' '+:arg_newdescppart
- WHERE u_order_ml_stop.billid = :arg_billid;
- IF SQLCA.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "因网络或其它原因导致添加备注操作失败"+"~n"+SQLCA.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- Return (rslt)
- end function
- public function integer audit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_flag
- Long ll_i
- Long ll_arr_cnt
- Decimal ld_stopqty,ld_stopqty_ori
- datastore ds_pro
- ds_pro = Create datastore
- ds_pro.DataObject = 'ds_order_ml_stop_proqty'
- ds_pro.SetTransObject(sqlca)
- uo_saletask uo_task
- uo_task = Create uo_saletask
- uo_task.commit_transaction = sqlca
- uo_order_ml uo_order
- uo_order = Create uo_order_ml
- IF uo_option_order_bh_use_yc = -1000 THEN
- rslt = 0
- arg_msg = '选项:[074]备货生产计划选销售预测单,读取初始默认值失败,操作取消!'
- GOTO ext
- END IF
- IF arg_billid <= 0 THEN
- rslt = 0
- arg_msg = '错误单据唯一码'
- GOTO ext
- END IF
- IF p_getflag(arg_billid,li_flag,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF li_flag <> 0 THEN
- rslt = 0
- arg_msg = '单据不是在待审核状态,不可以再审'
- GOTO ext
- END IF
- //更新审核标记
- UPDATE u_order_ml_stop
- SET auditemp = :arg_opemp,
- auditdate = getdate(),
- flag = 1
- WHERE billid = :arg_billid
- And flag = 0;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致单据审核操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- ELSEIF sqlca.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "单据正在审核,请稍后查询。"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- //更新计划数量,需求表,领料明细
- Long ll_scid,ll_orderid
- Decimal ld_orderqty,ld_acmpqty,ld_stopqty_zl
- Long ll_ordertype
- Int li_ifchange,li_ifstoppro
- SELECT stopqty,scid,orderid,ifchange,ifstoppro INTO :ld_stopqty,:ll_scid,:ll_orderid,:li_ifchange,:li_ifstoppro
- FROM u_order_ml_stop
- Where billid = :arg_billid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询单据信息失败'+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- SELECT orderqty,acmpqty,ordertype,stopqty
- INTO :ld_orderqty,:ld_acmpqty,:ll_ordertype,:ld_stopqty_zl
- FROM u_order_ml
- WHERE orderid = :ll_orderid
- And scid = :ll_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询生产计划信息失败'+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- IF ld_orderqty <= 0 THEN
- rslt = 0
- arg_msg = '生产计划数为0,不允许再终止'
- GOTO ext
- END IF
- IF ld_orderqty - ld_acmpqty - ld_stopqty_zl < ld_stopqty THEN
- rslt = 0
- arg_msg = '未进仓数只有:'+String(ld_orderqty - ld_acmpqty - ld_stopqty_zl,'#,##0.##########')+',不能终止:'+String(ld_stopqty,'#,##0.##########')
- GOTO ext
- END IF
- UPDATE u_order_ml
- SET stopqty = stopqty + :ld_stopqty
- WHERE orderid = :ll_orderid
- And scid = :ll_scid;
- IF sqlca.SQLCode <> 0 Or sqlca.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = '更新生产计划数,终止数失败'+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- Decimal ld_rate
- ld_rate = (ld_orderqty - ld_stopqty - ld_stopqty_zl) / (ld_orderqty - ld_stopqty_zl)
- IF li_ifchange = 1 Or li_ifchange = 2 THEN
- IF uo_order.uof_mtrl_change(ll_scid,ll_orderid,ld_rate,0,li_ifchange,0,arg_msg,False) = 0 THEN
- rslt = 0
- arg_msg = '建立相关变更类型的生产指令单换料单失败,'+arg_msg
- GOTO ext
- END IF
- ELSE
- UPDATE u_OrderRqMtrl_scll
- SET truerqqty = truerqqty * :ld_rate
- WHERE orderid = :ll_orderid
- And scid = :ll_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新领料明细失败'+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- END IF
- //UPDATE u_OrderRqMtrl_scll
- // SET truerqqty = truerqqty * :ld_rate
- // WHERE orderid = :ll_orderid
- // And scid = :ll_scid;
- //IF sqlca.SQLCode <> 0 THEN
- // rslt = 0
- // ARG_MSG = '更新领料明细失败'+"~n"+sqlca.SQLErrText
- // GOTO ext
- //END IF
- //
- //IF ll_ordertype <> 4 THEN
- // UPDATE u_OrderRqMtrl
- // SET truerqqty = truerqqty * :ld_rate,
- // RqQty = RqQty * :ld_rate
- // WHERE orderid = :ll_orderid
- // And scid = :ll_scid;
- // IF sqlca.SQLCode <> 0 THEN
- // rslt = 0
- // ARG_MSG = '更新需求表失败'+"~n"+sqlca.SQLErrText
- // GOTO ext
- // END IF
- //END IF
- IF ld_orderqty - ld_acmpqty - ld_stopqty_zl = ld_stopqty THEN
- UPDATE u_order_ml
- SET status = 3,
- Accomplishdate = getdate(),
- stopemp = :publ_operator
- WHERE orderid = :ll_orderid
- And scid = :ll_scid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致终止生产计划操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- s_order_ml_stop_mx s_stop_mx[]
- IF getinfo(arg_billid,s_stop_mx,ll_arr_cnt,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- FOR ll_i = 1 To ll_arr_cnt
- IF ll_ordertype <> 4 THEN
- UPDATE u_SaleTaskMx
- SET AssignQty = AssignQty - :s_stop_mx[ll_i].qty_stop
- WHERE scid = :s_stop_mx[ll_i].taskscid AND
- taskid = :s_stop_mx[ll_i].taskid AND
- printid = :s_stop_mx[ll_i].taskmxid ;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新订单已排产数失败>>'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF ll_ordertype = 0 And uo_option_order_bh_use_yc = 1 THEN
- IF s_stop_mx[ll_i].taskid > 0 THEN
- SELECT stopqty
- INTO :ld_stopqty_ori
- FROM u_saletaskmx
- WHERE scid = :s_stop_mx[ll_i].taskscid
- AND taskid = :s_stop_mx[ll_i].taskid
- And printid = :s_stop_mx[ll_i].taskmxid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询生产计划相关销售预测单信息失败'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- ld_stopqty = ld_stopqty_ori + s_stop_mx[ll_i].qty_stop
-
- IF uo_task.stopqty(s_stop_mx[ll_i].taskscid,s_stop_mx[ll_i].taskid,s_stop_mx[ll_i].taskmxid,'',ld_stopqty,'',arg_msg,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
-
- ELSE
- Int li_plantype
- Long ll_wrkGrpid_scll
- Long ll_mtrlid
- String ls_status,ls_woodcode,ls_pcode
- SELECT plantype,
- wrkGrpid,
- mtrlid,
- status,
- woodcode,
- pcode
- INTO :li_plantype,
- :ll_wrkGrpid_scll,
- :ll_mtrlid,
- :ls_status,
- :ls_woodcode,
- :ls_pcode
- FROM u_OrderRqMtrl
- WHERE scid = :s_stop_mx[ll_i].scid
- AND orderid = :s_stop_mx[ll_i].taskid
- And mxpkid = :s_stop_mx[ll_i].taskmxid;
-
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询生产自制需求资料失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- UPDATE u_OrderRqMtrl
- SET consignedqty = consignedqty - :s_stop_mx[ll_i].qty_stop
- WHERE orderid = :s_stop_mx[ll_i].taskid
- AND wrkGrpid = :ll_wrkGrpid_scll
- AND mtrlid = :ll_mtrlid
- AND status = :ls_status
- AND woodcode = :ls_woodcode
- AND pcode = :ls_pcode
- AND scid = :s_stop_mx[ll_i].scid
- And plantype = 0;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新生产计划自制需求已排产数失败>>'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- END IF
-
- UPDATE u_order_ml_mx
- SET qty = qty - :s_stop_mx[ll_i].qty_stop
- WHERE orderid = :s_stop_mx[ll_i].orderid
- AND scid = :s_stop_mx[ll_i].scid
- And taskid = :s_stop_mx[ll_i].taskid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新生产计划/生产指令单明细失败>>'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- NEXT
- String ls_procode,ls_proname
- Decimal ld_proqty_ori,ld_finishqty,ld_contaskqty,ld_stopqty_pro
- IF li_ifstoppro = 1 THEN
- ds_pro.Retrieve(ll_scid,ll_orderid)
-
- ld_rate = ld_stopqty / ld_orderqty
-
- FOR ll_i = 1 To ds_pro.RowCount()
- ls_procode = ds_pro.Object.u_orderrqwp_procode[ll_i]
- ls_proname = ds_pro.Object.u_orderrqwp_proname[ll_i]
- ld_proqty_ori = ds_pro.Object.proqty_ori[ll_i]
- ld_finishqty = ds_pro.Object.finishqty[ll_i] //已开计件单数
- ld_contaskqty = ds_pro.Object.contaskqty[ll_i] //已开派工单数
- ld_stopqty_pro = ds_pro.Object.u_orderrqwp_stopqty[ll_i]
-
- IF ld_finishqty > ld_proqty_ori - (ld_proqty_ori * ld_rate + ld_stopqty_pro) THEN
- rslt = 0
- arg_msg = '['+ls_procode+']'+ls_proname+'已开计件单数:'+String(ld_finishqty,'#,##0.##########')+' 大于本次终止后的数:'+String(ld_proqty_ori - (ld_proqty_ori * ld_rate + ld_stopqty_pro),'#,##0.##########')+',不能终止'
- GOTO ext
- END IF
-
- IF ld_contaskqty > ld_proqty_ori - (ld_proqty_ori * ld_rate + ld_stopqty) THEN
- rslt = 0
- arg_msg = '['+ls_procode+']'+ls_proname+'已开派工单数:'+String(ld_contaskqty,'#,##0.##########')+' 大于本次终止后的数:'+String(ld_proqty_ori - (ld_proqty_ori * ld_rate + ld_stopqty_pro),'#,##0.##########')+',不能终止'
- GOTO ext
- END IF
-
- UPDATE u_orderrqwp
- SET proqty = proqty - :ld_proqty_ori * :ld_rate,
- stopqty = stopqty + :ld_proqty_ori * :ld_rate
- WHERE scid = :ll_scid
- AND orderid = :ll_orderid
- And procode = :ls_procode;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新生产计划/生产指令单工序进度失败>>工序:['+ls_procode+']'+ls_proname+','+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- NEXT
-
-
- END IF
- ext:
- Destroy ds_pro
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- Destroy uo_order
- Destroy uo_task
- RETURN rslt
- end function
- public function integer getinfo (long arg_billid, ref s_order_ml_stop_mx arg_ref_mx[], ref long arg_arr_cnt, ref string arg_msg);Int rslt = 1
- Long i = 1,no_mxcheck = 0
- IF arg_billid <= 0 THEN
- rslt = 0
- arg_msg = '错误单据唯一码'
- GOTO ext
- END IF
- DECLARE cur_mx CURSOR FOR
- SELECT printid,
- taskid,
- scid,
- orderid,
- taskcode,
- qty,
- cusid,
- taskmxid,
- taskscid,
- qty_stop
- FROM u_order_ml_stop_mx
- Where billid = :arg_billid;
-
- OPEN cur_mx;
- FETCH cur_mx INTO :arg_ref_mx[i].printid,
- :arg_ref_mx[i].taskid,
- :arg_ref_mx[i].scid,
- :arg_ref_mx[i].orderid,
- :arg_ref_mx[i].taskcode,
- :arg_ref_mx[i].qty,
- :arg_ref_mx[i].cusid,
- :arg_ref_mx[i].taskmxid,
- :arg_ref_mx[i].taskscid,
- :arg_ref_mx[i].qty_stop;
-
- DO WHILE sqlca.SQLCode = 0
- i++
- FETCH cur_mx INTO :arg_ref_mx[i].printid,
- :arg_ref_mx[i].taskid,
- :arg_ref_mx[i].scid,
- :arg_ref_mx[i].orderid,
- :arg_ref_mx[i].taskcode,
- :arg_ref_mx[i].qty,
- :arg_ref_mx[i].cusid,
- :arg_ref_mx[i].taskmxid,
- :arg_ref_mx[i].taskscid,
- :arg_ref_mx[i].qty_stop;
- LOOP
- CLOSE cur_mx;
- //检验明细是否读入完整
- SELECT count(*) INTO :no_mxcheck
- FROM u_order_ml_stop_mx
- Where billid = :arg_billid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,单据汇总数量"
- GOTO ext
- END IF
- IF i <> (no_mxcheck + 1) THEN
- rslt = 0
- arg_msg = "查询操作失败,单据汇总内容"
- GOTO ext
- END IF
- arg_arr_cnt = i - 1
- ext:
- RETURN rslt
- end function
- public function integer getinfo_order (long arg_scid, long arg_orderid, ref s_order_ml_mx arg_order_mx[], ref long arg_cnt_arr, ref string arg_msg);Int rslt = 1
- Long i = 1,no_mxcheck = 0
- IF arg_orderid <= 0 THEN
- rslt = 0
- arg_msg = "非法单据唯一码"
- GOTO ext
- END IF
- //用游标读取明细
- DECLARE cur_ordermx CURSOR FOR
- SELECT u_order_ml_mx.taskid,
- u_order_ml_mx.taskmxid,
- u_order_ml_mx.qty,
- u_order_ml_mx.taskscid
- FROM u_order_ml_mx
- WHERE u_order_ml_mx.orderid = :arg_orderid AND
- u_order_ml_mx.scid = :arg_scid ;
-
- OPEN cur_ordermx;
- FETCH cur_ordermx INTO :arg_order_mx[i].taskid,
- :arg_order_mx[i].taskmxid,
- :arg_order_mx[i].qty,
- :arg_order_mx[i].taskscid;
-
- DO WHILE sqlca.SQLCode = 0
- i++
- FETCH cur_ordermx INTO :arg_order_mx[i].taskid,
- :arg_order_mx[i].taskmxid,
- :arg_order_mx[i].qty,
- :arg_order_mx[i].taskscid;
- LOOP
- CLOSE cur_ordermx;
- //检验明细是否读入完整
- SELECT count(*) INTO :no_mxcheck
- FROM u_order_ml_mx
- WHERE orderid = :arg_orderid
- AND scid = :arg_scid ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,计划明细数量"
- GOTO ext
- END IF
- IF i <> (no_mxcheck+1) THEN
- rslt = 0
- arg_msg = "查询操作失败,计划明细"
- GOTO ext
- END IF
- arg_cnt_arr = i - 1
- ext:
- RETURN rslt
- end function
- on uo_order_ml_stop.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_order_ml_stop.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
- event constructor;String str_optionvalue,arg_msg
- f_get_sys_option_value('074',str_optionvalue,arg_msg)
- uo_option_order_bh_use_yc = Long(str_optionvalue)
- end event
|