123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- $PBExportHeader$f_delallocqty.srf
- global type f_delallocqty from function_object
- end type
- forward prototypes
- global function integer f_delallocqty (decimal arg_assignday, decimal arg_outday, ref string arg_msg)
- end prototypes
- global function integer f_delallocqty (decimal arg_assignday, decimal arg_outday, ref string arg_msg);Int rslt = 1
- uo_mtrlware_assign uo_assign_bill
- uo_assign_bill = Create uo_mtrlware_assign
- Long ll_i
- //====================================================================
- // u_mtrlware_assign 字段
- //====================================================================
- Long ll_cnt = 0
- Long ll_assignid, ll_assignid_arr[]
- Decimal ld_assignqty, ld_assignqty_arr[]
- //====================================================================
- // 查询超期未开发货单的分配
- //====================================================================
- DECLARE Cur1 CURSOR FOR
- SELECT
- u_mtrlware_assign.Assignid,
- u_mtrlware_assign.assignqty - u_mtrlware_assign.Outqty AS assignqty
- FROM u_mtrlware_assign INNER JOIN
- u_SaleTaskMx ON u_mtrlware_assign.Scid = u_SaleTaskMx.scid AND
- u_mtrlware_assign.Relbillid = u_SaleTaskMx.TaskID AND
- u_mtrlware_assign.Relprintid = u_SaleTaskMx.printid
- WHERE (u_mtrlware_assign.assigntype = 1) AND
- (GETDATE() > DATEADD(s, :arg_assignday * 24 * 60 * 60, u_mtrlware_assign.Opdate)) AND
- (NOT EXISTS(SELECT 1
- FROM u_outwaremx INNER JOIN
- u_outware ON u_outwaremx.scid = u_outware.scid AND
- u_outwaremx.outwareid = u_outware.outwareid
- WHERE (u_outwaremx.ifrel = 1) AND
- (u_outwaremx.scid = u_SaleTaskMx.scid) AND
- (u_outwaremx.relid = u_Saletaskmx.Taskid) AND
- (u_outwaremx.relprintid = u_saletaskmx.printid) AND
- (u_outware.billtype = 1) AND (u_outware.thflag = 0))) AND
- (NOT EXISTS(SELECT 1
- FROM u_inwaremx INNER JOIN
- u_inware ON u_inwaremx.scid = u_inware.scid AND
- u_inwaremx.inwareid = u_inware.inwareid INNER JOIN
- u_Order_ml ON u_inwaremx.scid = u_Order_ml.scid AND
- u_inwaremx.relid = u_Order_ml.OrderID
- WHERE (u_Order_ml.ordertype = 1) AND
- (u_inwaremx.ifrel = 1) AND
- (u_inware.billtype = 3) AND
- (u_inware.inwarecode = u_mtrlware_assign.inwarecode) AND
- (u_inwaremx.printid = u_mtrlware_assign.inprintid)));
- OPEN Cur1;
- FETCH Cur1 Into :ll_assignid, :ld_assignqty;
- DO WHILE sqlca.SQLCode = 0
- ll_cnt++
- ll_assignid_arr[ll_cnt] = ll_assignid
- ld_assignqty_arr[ll_cnt] = ld_assignqty
- FETCH Cur1 Into :ll_assignid, :ld_assignqty;
- LOOP
- CLOSE Cur1;
- //====================================================================
- // 查询已开发货单超期未仓审的分配
- //====================================================================
- DECLARE Cur2 CURSOR FOR
- SELECT
- u_mtrlware_assign.Assignid,
- u_mtrlware_assign.assignqty - u_mtrlware_assign.Outqty AS assignqty
- FROM u_mtrlware_assign INNER JOIN
- u_SaleTaskMx ON u_mtrlware_assign.Scid = u_SaleTaskMx.scid AND
- u_mtrlware_assign.Relbillid = u_SaleTaskMx.TaskID AND
- u_mtrlware_assign.Relprintid = u_SaleTaskMx.printid INNER JOIN
- u_outwaremx ON u_SaleTaskMx.TaskID = u_outwaremx.relid AND
- u_SaleTaskMx.scid = u_outwaremx.scid AND
- u_SaleTaskMx.printid = u_outwaremx.relprintid INNER JOIN
- u_outware ON u_outwaremx.scid = u_outware.scid AND
- u_outwaremx.outwareid = u_outware.outwareid
- WHERE (u_mtrlware_assign.assigntype = 1) AND
- (u_outware.billtype = 1) AND
- (u_outware.thflag = 0) AND
- (u_outwaremx.ifrel = 1) AND
- (u_outware.flag = 0) AND
- (GETDATE() > DATEADD(s, :arg_outday * 24 * 60 * 60, u_outware.Opdate)) AND
- (NOT EXISTS(SELECT 1
- FROM u_inwaremx INNER JOIN
- u_inware ON u_inwaremx.scid = u_inware.scid AND
- u_inwaremx.inwareid = u_inware.inwareid INNER JOIN
- u_Order_ml ON u_inwaremx.scid = u_Order_ml.scid AND
- u_inwaremx.relid = u_Order_ml.OrderID
- WHERE (u_Order_ml.ordertype = 1) AND
- (u_inwaremx.ifrel = 1) AND
- (u_inware.billtype = 3) AND
- (u_inware.inwarecode = u_mtrlware_assign.inwarecode) AND
- (u_inwaremx.printid = u_mtrlware_assign.inprintid))) ;
- OPEN Cur2;
- FETCH Cur2 Into :ll_assignid, :ld_assignqty;
- DO WHILE sqlca.SQLCode = 0
- ll_cnt++
- ll_assignid_arr[ll_cnt] = ll_assignid
- ld_assignqty_arr[ll_cnt] = ld_assignqty
- FETCH Cur2 Into :ll_assignid, :ld_assignqty;
- LOOP
- CLOSE Cur2;
- //====================================================================
- // 取消分配
- //====================================================================
- FOR ll_i = 1 To ll_cnt
- IF uo_assign_bill.uof_assign_del(ll_assignid_arr[ll_i],&
- ld_assignqty_arr[ll_i],ARG_MSG,True) <> 1 THEN
- GOTO _next
- END IF
- _next:
- NEXT
- Destroy uo_assign_bill
- //IF rslt = 1 THEN
- // COMMIT;
- //ELSE
- // ROLLBACK;
- //END IF
- RETURN rslt
- end function
|