$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