22,209
社区成员
发帖
与我相关
我的任务
分享
ALTER PROC [dbo].[happ.dcr_work_order_to_bom]
@TRADE_CODE VARCHAR(50) ,
@COP_EMS_NO VARCHAR(50) ,
@DCR_TIMES INT
AS
BEGIN
DECLARE @cop_exg_no VARCHAR(64) ;
DECLARE @work_order VARCHAR(50) ;
DECLARE @work_qty NUMERIC(18, 9) ;
DELETE FROM COP_BOM
WHERE TRADE_CODE = @TRADE_CODE
AND COP_EMS_NO = @COP_EMS_NO
AND DCR_TIMES = @DCR_TIMES
DECLARE cursor1 CURSOR
FOR
SELECT EXG_NO ,
WORK_NO ,
IN_QTY
FROM COP_WORK_HEAD
WHERE TRADE_CODE = @TRADE_CODE
AND COP_EMS_NO = @COP_EMS_NO
AND DCR_TIMES = @DCR_TIMES ;
OPEN cursor1
FETCH NEXT FROM cursor1 INTO @cop_exg_no, @work_order, @work_qty
WHILE @@fetch_status = 0
BEGIN
EXEC [happ.dcr_cal_work_order] @TRADE_CODE, @COP_EMS_NO,
@DCR_TIMES, @cop_exg_no, @cop_exg_no, @work_order,
@work_order, @work_qty;
FETCH NEXT FROM cursor1 INTO @cop_exg_no, @work_order,
@work_qty ;
END
CLOSE cursor1
DEALLOCATE cursor1
END
ALTER PROC [dbo].[happ.dcr_cal_work_order]
@TRADE_CODE VARCHAR(50) ,
@COP_EMS_NO VARCHAR(50) ,
@DCR_TIMES INT ,
@cop_parent_no VARCHAR(64) ,
@parent_work_order VARCHAR(64) ,
@work_order VARCHAR(50) ,
@work_qty NUMERIC(18, 9)
AS
BEGIN
DECLARE @order_no VARCHAR(50) ;
DECLARE @cop_img_no VARCHAR(64) ;
DECLARE @cop_img_qty NUMERIC(18, 9) ;
DECLARE @cop_img_g_no NUMERIC(9, 0) ;
INSERT INTO COP_BOM
( COP_EXG_NO ,
COP_IMG_NO ,
BOM_VERSION ,
DEC_CM ,
DEC_DM ,
COP_IMG_NO_T ,
TRADE_CODE ,
COP_EMS_NO ,
DCR_TIMES
)
SELECT DISTINCT
@cop_parent_no ,
T.IO_COP_G_NO ,
@parent_work_order ,
@work_qty * T1.YCGQ ,
0 ,
T.COP_G_NO_R ,
@TRADE_CODE ,
@COP_EMS_NO ,
@DCR_TIMES
FROM COP_OUT_STOCK_LIST_WXGF T
LEFT JOIN ( SELECT W_ORDER_NO ,
M_NO ,
G_NO_T ,
( SUM(Y_QTY) + SUM(C_QTY) )
/ MAX(G_QTY) YCGQ
FROM COP_LISTE_WXGF
WHERE G_QTY > 0
GROUP BY W_ORDER_NO ,
M_NO ,
G_NO_T
) T1 ON T.WORK_NO = T1.W_ORDER_NO
AND T.IO_COP_G_NO = T1.M_NO
AND T.COP_G_NO_R = T1.G_NO_T
WHERE T.WORK_NO = @work_order
AND T.D_NO = 99
DECLARE cursor2 CURSOR local
FOR
SELECT T.IN_OUT_NO ,
T.IO_COP_G_NO ,
@work_qty * T1.YCGQ * ( T.IO_QTY / T2.TQ ) ,
T.LIST_G_NO
FROM COP_OUT_STOCK_LIST_WXGF T
LEFT JOIN ( SELECT W_ORDER_NO ,
M_NO ,
( SUM(Y_QTY) + SUM(C_QTY) )
/ MAX(G_QTY) YCGQ
FROM COP_LISTE_WXGF
WHERE G_QTY > 0
GROUP BY W_ORDER_NO ,
M_NO
) T1 ON T.WORK_NO = T1.W_ORDER_NO
AND T.IO_COP_G_NO = T1.M_NO
LEFT JOIN ( SELECT T.IO_COP_G_NO ,
SUM(T.IO_QTY) TQ
FROM COP_OUT_STOCK_LIST_WXGF T
WHERE T.WORK_NO = @work_order
AND T.D_NO != 99
AND IO_QTY > 0
GROUP BY T.IO_COP_G_NO
) T2 ON T.IO_COP_G_NO = T2.IO_COP_G_NO
WHERE T.WORK_NO = @work_order
AND T.D_NO != 99 ;
OPEN cursor2
FETCH NEXT FROM cursor2 INTO @order_no, @cop_img_no, @cop_img_qty,
@cop_img_g_no
WHILE @@fetch_status = 0
BEGIN
EXEC [happ.dcr_cal_work_middle_material] @TRADE_CODE,
@COP_EMS_NO, @DCR_TIMES, @cop_parent_no,
@parent_work_order, @order_no, @cop_img_g_no, @cop_img_no,
@cop_img_qty ;
FETCH NEXT FROM cursor2 INTO @order_no, @cop_img_no,
@cop_img_qty, @cop_img_g_no
END
CLOSE cursor2
DEALLOCATE cursor2
END
ALTER PROC [dbo].[happ.dcr_work_order_to_bom]
AS
BEGIN
DECLARE @cop_exg_no VARCHAR(64) ;
DECLARE cursor1 CURSOR
FOR
SELECT EXG_NO ,
FROM COP_WORK_HEAD
OPEN cursor1
FETCH NEXT FROM cursor1 INTO @cop_exg_no
WHILE @@fetch_status = 0
BEGIN
EXEC [happ.dcr_cal_work_order] @cop_exg_no,
FETCH NEXT FROM cursor1 INTO @cop_exg_no
END
CLOSE cursor1
DEALLOCATE cursor1
END
2: ALTER PROC [dbo].[happ.dcr_cal_work_order]
@cop_parent_no VARCHAR(64)
AS
BEGIN
DECLARE @order_no VARCHAR(50) ;
DECLARE cursor2 CURSOR local
FOR
SELECT T.IN_OUT_NO
FROM COP_OUT_STOCK_LIST_WXGF T
WHERE T.WORK_NO = @cop_parent_no
OPEN cursor2
FETCH NEXT FROM cursor2 INTO @order_no
WHILE @@fetch_status = 0
BEGIN
EXEC [happ.dcr_cal_work_middle_material] @order_no
FETCH NEXT FROM cursor2 INTO @order_no
END
CLOSE cursor2
DEALLOCATE cursor2
END
3: ALTER PROC [dbo].[happ.dcr_cal_work_middle_material] @order_no VARCHAR(64)
AS
BEGIN
DECLARE @work_order VARCHAR(50) ;
DECLARE cursor3 CURSOR local
FOR
SELECT WORK_NO
FROM COP_OUT_STOCK_LOT_WXGF
WHERE INVOICE_NO = @order_no
OPEN cursor3
FETCH NEXT FROM cursor3 INTO @work_order ;
WHILE @@fetch_status = 0
BEGIN
EXEC [happ.dcr_cal_work_order] @work_order
FETCH NEXT FROM cursor3 INTO @work_order ;
END
CLOSE cursor3
DEALLOCATE cursor3
END
ALTER PROC [dbo].[happ.dcr_cal_work_middle_material]
@TRADE_CODE VARCHAR(50) ,
@COP_EMS_NO VARCHAR(50) ,
@DCR_TIMES INT ,
@cop_parent_no VARCHAR(64) ,
@parent_work_order VARCHAR(64) ,
@order_no VARCHAR(64) ,
@cop_img_g_no NUMERIC(9, 0) ,
@cop_img_qty NUMERIC(18, 9)
AS
BEGIN
DECLARE @work_order VARCHAR(50) ;
DECLARE @work_qty NUMERIC(18, 9) ;
DECLARE cursor3 CURSOR local
FOR
SELECT C.WORK_NO ,
@cop_img_qty * C.IQT / B.QT
FROM ( SELECT A.INVOICE_NO ,
SUM(A.IN_OUT_QTY) QT
FROM ( SELECT DISTINCT
T.INVOICE_NO ,
t1.WORK_NO ,
T.IN_OUT_QTY
FROM COP_OUT_STOCK_LOT_WXGF t
LEFT JOIN MATERIAL_W T2 ON T.COP_G_NO = T2.COP_G_NO
LEFT JOIN COP_IN_STOCK_LIST_WXGF t1 ON t.COP_G_NO = t1.COP_G_NO
AND t.MAKE_LOT_NO = t1.IN_NO
WHERE t.INVOICE_NO = @order_no
AND t.INVOICE_G_NO = @cop_img_g_no
AND T.IN_OUT_QTY > 0
AND T2.I_license <> 'S'
AND T2.I_license IS NOT NULL
UNION
SELECT DISTINCT
T.INVOICE_NO ,
t1.R_D_NO AS WORK_NO ,
T.IN_OUT_QTY
FROM COP_OUT_STOCK_LOT_WXGF t
LEFT JOIN MATERIAL_W T2 ON T.COP_G_NO = T2.COP_G_NO
LEFT JOIN COP_RETOURNER_WXGF t1 ON t.COP_G_NO = t1.P_NAME
AND t.MAKE_LOT_NO = t1.OUT_NO
WHERE t.INVOICE_NO = @order_no
AND t.INVOICE_G_NO = @cop_img_g_no
AND T.IN_OUT_QTY > 0
AND T2.I_license = 'S'
AND T2.I_license IS NOT NULL
) A
GROUP BY A.INVOICE_NO
) B
LEFT JOIN ( SELECT D.INVOICE_NO ,
D.WORK_NO ,
SUM(D.IN_OUT_QTY) IQT
FROM ( SELECT DISTINCT
T.INVOICE_NO ,
t1.WORK_NO ,
T.IN_OUT_QTY
FROM COP_OUT_STOCK_LOT_WXGF t
LEFT JOIN MATERIAL_W T2 ON T.COP_G_NO = T2.COP_G_NO
LEFT JOIN COP_IN_STOCK_LIST_WXGF t1 ON t.COP_G_NO = t1.COP_G_NO
AND t.MAKE_LOT_NO = t1.IN_NO
WHERE t.INVOICE_NO = @order_no
AND t.INVOICE_G_NO = @cop_img_g_no
AND T.IN_OUT_QTY > 0
AND T2.I_license <> 'S'
AND T2.I_license IS NOT NULL
UNION
SELECT DISTINCT
T.INVOICE_NO ,
t1.R_D_NO AS WORK_NO ,
T.IN_OUT_QTY
FROM COP_OUT_STOCK_LOT_WXGF t
LEFT JOIN MATERIAL_W T2 ON T.COP_G_NO = T2.COP_G_NO
LEFT JOIN COP_RETOURNER_WXGF t1 ON t.COP_G_NO = t1.P_NAME
AND t.MAKE_LOT_NO = t1.OUT_NO
WHERE t.INVOICE_NO = @order_no
AND t.INVOICE_G_NO = @cop_img_g_no
AND T.IN_OUT_QTY > 0
AND T2.I_license = 'S'
AND T2.I_license IS NOT NULL
) D
GROUP BY D.INVOICE_NO ,
D.WORK_NO
) C ON B.INVOICE_NO = C.INVOICE_NO
OPEN cursor3
FETCH NEXT FROM cursor3 INTO @work_order, @work_qty ;
WHILE @@fetch_status = 0
BEGIN
EXEC [happ.dcr_cal_work_order] @TRADE_CODE, @COP_EMS_NO,
@DCR_TIMES, @cop_parent_no, @parent_work_order,
@work_order, @work_qty ;
FETCH NEXT FROM cursor3 INTO @work_order, @work_qty ;
END
CLOSE cursor3
DEALLOCATE cursor3
END