123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- $PBExportHeader$uo_order_wkp_jd.sru
- forward
- global type uo_order_wkp_jd from nonvisualobject
- end type
- end forward
- global type uo_order_wkp_jd from nonvisualobject
- end type
- global uo_order_wkp_jd uo_order_wkp_jd
- forward prototypes
- public function integer uof_order_add_wrk_jd (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit)
- end prototypes
- public function integer uof_order_add_wrk_jd (long arg_scid, long arg_orderid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Decimal ld_finishqty
- Long ll_dftwrkgrpid
- DateTime ldt_tmp
- datastore ds
- ds = Create datastore
- IF arg_orderid = 0 THEN
- rslt = 0
- arg_msg = "没有审核对象"
- GOTO ext
- END IF
- Long ll_sc_wkpid
- SELECT wrkGrpid
- INTO :ll_sc_wkpid
- FROM u_order_ml
- WHERE scid = :arg_scid
- And orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查找安排车间失败,"+sqlca.SQLErrText
- GOTO ext
- END IF
- Long i,cnt
- Long ll_i
- i = 1
- Long ll_wrkgrpid
- DateTime ldt_sdate,ldt_edate
- Decimal lde_fqty,lde_sqty
- Long ll_jdtype,ll_jdnum
- String ls_sql_updatestr
- string ls_wrkgrpname
- boolean lb_GetMx = false
- ds.DataObject = "ds_rp_order_wkp_jd_workgroup_1"
- ds.SetTransObject(sqlca)
- cnt = ds.Retrieve( arg_scid, arg_orderid)
- if cnt = 0 then
- rslt = 1
- goto ext
-
- elseif cnt < 0 then
- rslt = 0
- arg_msg = "读取工组数据失败"
- goto ext
-
- end if
- IF cnt > 0 THEN
- // /////////////////// //拼Update语句
- ls_sql_updatestr = " update u_order_wrk_jd "
- ls_sql_updatestr += " set "
-
-
- FOR i = 1 To cnt
- ll_jdnum = ds.Object.jdnum[i]
- ll_wrkgrpid = ds.Object.u_ordermtrl_workgroup_wrkgrpid[i]
- ls_wrkgrpname = ds.Object.u_sc_workgroup_wrkgrpname[i]
-
- lde_fqty = ds.Object.fqty[i]
- lde_sqty = ds.Object.sqty[i]
- ldt_sdate = ds.Object.sdate[i]
- ldt_edate = ds.Object.edate[i]
-
- if isnull(lde_fqty) then lde_fqty = 0
- if isnull(lde_sqty) then lde_sqty = 0
-
- if ll_jdnum = 0 then continue
- if ll_jdnum > 50 then continue
- if ll_jdnum = 0 or ll_jdnum > 50 then
- rslt = 0
- arg_msg = "指令工组进度更新失败,工组["+ls_wrkgrpname+"]进度序号超出赋值范围, 进度序号当前只支持在1~~50间取值"
- goto ext
- end if
- lb_GetMx = true
-
- //按工组序号动态更新进度表
- ls_sql_updatestr += " wgid"+String(ll_jdnum)+" = "+String(ll_wrkgrpid) +", "
- ls_sql_updatestr += " fqty"+String(ll_jdnum)+" = "+String(lde_fqty) +", "
- ls_sql_updatestr += " sqty"+String(ll_jdnum)+" = "+String(lde_sqty) +", "
- ls_sql_updatestr += " sdate"+String(ll_jdnum)+" = '"+String(ldt_sdate, "yyyy-mm-dd hh:00:00") +"', "
-
- ls_sql_updatestr += " edate"+String(ll_jdnum)+" = '"+String(ldt_edate, "yyyy-mm-dd hh:00:00") +"' "
-
- IF i <> cnt THEN
- ls_sql_updatestr += ", "
- END IF
- NEXT
- ls_sql_updatestr += " where scid = "+String(arg_scid)
- ls_sql_updatestr += " and orderid = "+String(arg_orderid)
- ///////////////////////////////////// //
- if not lb_GetMx then
- ls_sql_updatestr = ""
- end if
- ELSE
- ls_sql_updatestr = ""
- END IF
- //检查是否有当前指令记录
- Long ll_cnt
- SELECT count(1)
- INTO :ll_cnt
- FROM u_order_wrk_jd
- WHERE scid = :arg_scid AND
- orderid = :arg_orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '指令工组进度查询失败,原因:'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF ll_cnt = 0 THEN
- INSERT INTO u_order_wrk_jd
- (scid,
- orderid ,
- wrkgrpid)
- VALUES
- (:arg_scid,
- :arg_orderid,
- :ll_sc_wkpid
- );
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '指令工组进度插入失败,原因:'+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- IF cnt > 0 THEN
- //更新指令进度表数据
- EXECUTE Immediate :ls_sql_updatestr;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '指令工组进度更新失败,请检查工组资料进度序号设置,可用范围为[1,50],原因:'+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- // p_reset()
- ELSEIF arg_ifcommit And rslt = 1 THEN
- COMMIT;
- END IF
- destroy ds
- RETURN rslt
- end function
- on uo_order_wkp_jd.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_order_wkp_jd.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
|