123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219 |
- $PBExportHeader$dbauo_adapter.sru
- forward
- global type dbauo_adapter from nonvisualobject
- end type
- end forward
- global type dbauo_adapter from nonvisualobject
- end type
- global dbauo_adapter dbauo_adapter
- type variables
- //====================================================================
- // 事件: .Declare Instance Variables()
- //--------------------------------------------------------------------
- // 描述:
- //--------------------------------------------------------------------
- // 参数:
- //--------------------------------------------------------------------
- // 返回: (none)
- //--------------------------------------------------------------------
- // 作者: lwl 日期: 2011年05月20日
- //--------------------------------------------------------------------
- // LONGJOE
- //--------------------------------------------------------------------
- // 修改历史:
- //
- //====================================================================
- dbauo_mtrlware ins_mtrlwares[]
- dbauo_task ins_tasks[]
- dbauo_sort ins_sorts[] // 排序方案集
- boolean ins_reallocall
- boolean ins_ignorOut
- end variables
- forward prototypes
- public subroutine f_clear ()
- public function integer f_init ()
- public function dbauo_mtrlware f_getware (long arg_mtrlid, string arg_mtrlcuscode, string arg_status, string arg_pcode, string arg_woodcode)
- public function long f_getmaxvalue ()
- public subroutine f_sort2 ()
- public subroutine f_sort1 ()
- end prototypes
- public subroutine f_clear ();long ll_i
- for ll_i = 1 to upperbound(ins_mtrlwares)
- destroy ins_mtrlwares[ll_i]
- next
- for ll_i = 1 to upperbound(ins_tasks)
- destroy ins_tasks[ll_i]
- next
- for ll_i = 1 to upperbound(ins_sorts)
- destroy ins_sorts[ll_i]
- next
- dbauo_mtrlware mtrlwares_empty[]
- dbauo_task tasks_empty[]
- dbauo_sort sort_empty[]
- ins_mtrlwares = mtrlwares_empty
- ins_tasks = tasks_empty
- ins_sorts = sort_empty
- end subroutine
- public function integer f_init ();//====================================================================
- // 事件: dbauo_adapter.f_init()
- //--------------------------------------------------------------------
- // 描述:重新分配订单
- //--------------------------------------------------------------------
- // 参数:
- // value integer arg_all :0-齐货不影响 1-齐货也重新分配
- //--------------------------------------------------------------------
- // 返回: integer
- //--------------------------------------------------------------------
- // 作者: lwl 日期: 2011年05月20日
- //--------------------------------------------------------------------
- // LONGJOE
- //--------------------------------------------------------------------
- // 修改历史:
- //
- //====================================================================
- Int rslt = 1
- f_clear()
- Long ll_scid, ll_taskid
- Long arr_scid[], arr_taskid[]
- Long ll_mxCnt, arr_mxCnt[]
- Decimal ld_sumqty, arr_sumqty[]
- Long ll_level, arr_level[]
- datetime ll_requiredate, arr_requiredate[]
- Long ll_cnt = 0, ll_i
- DECLARE cur1 CURSOR FOR
- SELECT u_SaleTask.scid, u_SaleTask.TaskID, COUNT(0) AS Expr1, SUM(u_SaleTaskMx.SaleQty - u_SaleTaskMx.consignedQty) AS Expr2, u_SaleTask.level, u_SaleTask.requiredate
- FROM u_SaleTask INNER JOIN
- u_SaleTaskMx ON u_SaleTask.scid = u_SaleTaskMx.scid AND u_SaleTask.TaskID = u_SaleTaskMx.TaskID
- WHERE u_saletask.status = 1
- GROUP BY u_SaleTask.scid, u_SaleTask.TaskID,u_SaleTask.level, u_SaleTask.requiredate
- Order By u_SaleTask.requiredate,u_SaleTask.Level,Expr1, Expr2;
- OPEN cur1;
- FETCH cur1 Into :ll_scid, :ll_taskid, :ll_mxCnt, :ld_sumqty, :ll_level, :ll_requiredate;
- DO WHILE sqlca.SQLCode = 0
- ll_cnt++
- arr_scid[ll_cnt] = ll_scid
- arr_taskid[ll_cnt] = ll_taskid
- arr_mxCnt[ll_cnt] = ll_mxCnt
- arr_sumqty[ll_cnt] = ld_sumqty
- arr_level[ll_cnt] = ll_level
- arr_requiredate[ll_cnt] = ll_requiredate
- FETCH cur1 Into :ll_scid, :ll_taskid, :ll_mxCnt, :ld_sumqty, :ll_level, :ll_requiredate;
- LOOP
- CLOSE cur1;
- FOR ll_i = 1 To ll_cnt
- ins_tasks[ll_i] = Create dbauo_task
- ins_tasks[ll_i].f_init(This,arr_scid[ll_i], arr_taskid[ll_i], arr_mxCnt[ll_i], arr_sumqty[ll_i], arr_level[ll_i], arr_requiredate[ll_i])
- NEXT
- RETURN rslt
- end function
- public function dbauo_mtrlware f_getware (long arg_mtrlid, string arg_mtrlcuscode, string arg_status, string arg_pcode, string arg_woodcode);long ll_i
- for ll_i = 1 to upperbound(ins_mtrlwares)
- if arg_mtrlid = ins_mtrlwares[ll_i].ins_mtrlid and arg_mtrlcuscode = ins_mtrlwares[ll_i].ins_mtrlcuscode and arg_status = ins_mtrlwares[ll_i].ins_status and arg_pcode = ins_mtrlwares[ll_i].ins_pcode and arg_woodcode = ins_mtrlwares[ll_i].ins_woodcode then
- return ins_mtrlwares[ll_i]
- end if
- next
- ll_i = upperbound(ins_mtrlwares) + 1
- ins_mtrlwares[ll_i] = create dbauo_mtrlware
- ins_mtrlwares[ll_i].f_init(arg_mtrlid, arg_mtrlcuscode, arg_status, arg_pcode, arg_woodcode)
- return ins_mtrlwares[ll_i]
- end function
- public function long f_getmaxvalue ();//====================================================================
- // 事件: dbauo_adapter.f_getmaxvalue()
- //--------------------------------------------------------------------
- // 描述:返回当前排序的可齐货订单数
- //--------------------------------------------------------------------
- // 参数:
- // value integer
- //--------------------------------------------------------------------
- // 返回: long
- //--------------------------------------------------------------------
- // 作者: lwl 日期: 2011年05月21日
- //--------------------------------------------------------------------
- // LONGJOE
- //--------------------------------------------------------------------
- // 修改历史:
- //
- //====================================================================
- long ll_taskCount = 0
- long ll_i, ll_j
- boolean lb_enough
- for ll_i = 1 to upperbound(ins_mtrlwares)
- ins_mtrlwares[ll_i].ins_tempqty = ins_mtrlwares[ll_i].ins_noallocqty
- next
- for ll_i = 1 to upperbound(ins_tasks)
- lb_enough = true
- for ll_j = 1 to upperbound(ins_tasks[ll_i].ins_mx)
- if ins_tasks[ll_i].ins_mx[ll_j].ins_saleqty > ins_tasks[ll_i].ins_mx[ll_j].ins_mtrlware.ins_tempqty then
- lb_enough = false
- exit
- end if
- next
-
- if lb_enough then
- for ll_j = 1 to upperbound(ins_tasks[ll_i].ins_mx)
- ins_tasks[ll_i].ins_mx[ll_j].ins_mtrlware.ins_tempqty -= ins_tasks[ll_i].ins_mx[ll_j].ins_saleqty
- next
- ll_taskCount ++
- end if
-
- next
- return ll_taskCount
- end function
- public subroutine f_sort2 ();long ll_sortindex
- ll_sortindex = upperbound(ins_sorts) + 1
- ins_sorts[ll_sortindex] = create dbauo_sort
- ins_sorts[ll_sortindex].f_init(this)
- ins_sorts[ll_sortindex].f_sort2()
- end subroutine
- public subroutine f_sort1 ();long ll_sortindex
- ll_sortindex = upperbound(ins_sorts) + 1
- ins_sorts[ll_sortindex] = create dbauo_sort
- ins_sorts[ll_sortindex].f_init(this)
- ins_sorts[ll_sortindex].f_sort1()
- end subroutine
- on dbauo_adapter.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on dbauo_adapter.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
- event destructor;f_clear()
- end event
|