Project

General

Profile

XUAT NHAP TON.txt

Luc Tran Van, 01/25/2021 11:57 AM

 
1
ALTER  PROCEDURE [dbo].[rpt_NhapXuatTonKhoVatLieuDuTru_BanViet]
2
@p_Fromdate VARCHAR(20) =NULL, @p_Todate VARCHAR(20) =NULL, @p_Branch_ID VARCHAR(15) =NULL, @p_Level VARCHAR(10) =NULL,@p_WARE_HOUSE VARCHAR(15) = NULL,
3
@p_BRANCH_LOGIN VARCHAR(15) =NULL
4
AS
5
DECLARE @BRANCH_TMP TABLE ( BRANCH_ID VARCHAR(15), BRANCH_NAME NVARCHAR(200))
6

    
7
DECLARE @tmp TABLE(BRANCH_ID VARCHAR(15));
8
INSERT INTO @tmp
9
SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_Branch_ID);
10

    
11
IF(@p_LEVEL='ALL')
12
	INSERT INTO @BRANCH_TMP
13
	SELECT A.BRANCH_ID,(SELECT BRANCH_NAME FROM CM_BRANCH CM WHERE CM.BRANCH_ID =A.BRANCH_ID) FROM [dbo].[CM_BRANCH_GETCHILDID](@p_Branch_ID) A; 
14
ELSE
15
	INSERT INTO @BRANCH_TMP
16
	SELECT BRANCH_ID,BRANCH_NAME FROM CM_BRANCH WHERE BRANCH_ID =@p_Branch_ID
17

    
18
--DECLARE @tmp TABLE(BRANCH_ID VARCHAR(15));
19
--INSERT INTO @tmp
20
--SELECT BRANCH_ID FROM CM_BRANCH WHERE BRANCH_ID=@p_BRANCH_LOGIN;
21

    
22
DECLARE @BRANCH_NAME NVARCHAR(1000)
23
SET @BRANCH_NAME = (SELECT BRANCH_NAME FROM CM_BRANCH WHERE BRANCH_ID =@p_Branch_ID)
24

    
25

    
26
DECLARE @TABLE_REPORT TABLE(STT INT,LIQ_ACCTNO NVARCHAR(40),MATERIAL_CODE NVARCHAR(100),GROUP_NAME NVARCHAR(100),MATERIAL_NAME NVARCHAR(100),
27
MATERIAL_ACCTNO NVARCHAR(40),SLTonDau NUMERIC(18,0),
28
THANHTIENTonDau NUMERIC(18,0),SLNhap NUMERIC(18,0),THANHTIENNhap NUMERIC(18,0),SLXuatLe NUMERIC(18,0),ThanhTienXuatLe NUMERIC(18,0),SLDieuChuyen NUMERIC(18,0),ThanhTienDieuChuyen NUMERIC(18,0),
29
SLXuatTapTrung NUMERIC(18,0),ThanhTienXuatTapTrung NUMERIC(18,0),SLTonCuoi NUMERIC(18,0),THANHTIENTonCuoi NUMERIC(18,0),
30
UNIT_NAME NVARCHAR(50),GROUP_ID VARCHAR(50), GROUP_LEVEL1 VARCHAR(15), GROUP_LEVEL2 VARCHAR(15), DonGia DECIMAL(18,0), SLThuHoi NUMERIC(18,0),ThanhTienThuHoi NUMERIC(18,0), NOTES NVARCHAR(1000),DVSD NVARCHAR(1000), ORDER_IDE INT)
31
BEGIN
32
-- LEVEL 1
33
INSERT INTO @TABLE_REPORT SELECT AA.*,'5' FROM
34
(
35
	SELECT Row_number() over(order by BRT.BRANCH_NAME) AS STT, GR.LIQ_ACCTNO, F.PRICE_CODE MATERIAL_CODE,GR.GROUP_NAME,MI.MATERIAL_NAME, '' MATERIAL_ACCTNO, 
36
	ISNULL(A.SOLUONG_TON_DAU,0) SLTonDau, 
37
	ISNULL(A.SOTIEN_TONDAU,0) THANHTIENTonDau,
38
	ISNULL(A5.NHAP_TRONG_KI,0) SLNhap, 
39
	ISNULL(A5.SOTIEN_NHAP_TRONG_KI,0) THANHTIENNhap,
40
	ISNULL(A1.SOLUONG_XUAT_DONLE,0) AS SLXuatLe,
41
	ISNULL(A1.SOTIEN_XUAT_DONLE,0) AS ThanhTienXuatLe,
42
	ISNULL(TF.SOLUONG_DIEU_CHUYEN,0) AS SLDieuChuyen,
43
	ISNULL(TF.SOTIEN_DIEU_CHUYEN,0) AS ThanhTienDieuChuyen,
44
	 ISNULL(A2.SOLUONG_XUAT_TAP_TRUNG,0) AS SLXuatTapTrung,
45
	ISNULL(A2.SOTIEN_XUAT_TAP_TRUNG,0) AS ThanhTienXuatTapTrung, 
46
	(ISNULL(A4.SOLUONG_TON_CUOI,0) -ISNULL(NOT_TF.SOLUONG_DIEU_CHUYEN,0))  SLTonCuoi,(ISNULL(A4.SOTIEN_TONCUOI,0) -ISNULL(NOT_TF.SOTIEN_DIEU_CHUYEN,0)) THANHTIENTonCuoi,UN.UNIT_NAME,
47
	--ISNULL(DBO.FN_GET_MW_GROUP_ID(F.GROUP_ID,1),DBO.FN_GET_MW_GROUP_ID(F.GROUP_ID,1)) GROUP_ID,
48
	MI.GROUP_ID  GROUP_ID,
49
	[dbo].[FN_GET_MW_GROUP_ID](MI.GROUP_ID,1) GROUP_LEVE1, 
50
	[dbo].[FN_GET_MW_GROUP_ID](MI.GROUP_ID,2) GROUP_LEVEL2, F.PRICE, TH.SOLUONG_THU_HOI, TH.SOTIEN_THU_HOI,MI.NOTES,( BRT.BRANCH_NAME) AS BRANCH_NAME
51
	FROM @BRANCH_TMP BRT
52
	LEFT JOIN 
53
	(
54
	SELECT PRICE_ID, BRANCH_ID FROM dbo.MW_MAST_BAL 
55
	GROUP BY PRICE_ID, BRANCH_ID
56
	) MB ON MB.BRANCH_ID = BRT.BRANCH_ID
57
	LEFT JOIN MW_MAST_PRICE F ON F.PRICE_ID=MB.PRICE_ID
58
	LEFT JOIN MW_IN MI ON F.MATERIAL_ID = MI.IN_ID
59
	LEFT JOIN MW_IN_MASTER MST ON MI.IN_MASTER_ID = MST.IN_ID
60
	LEFT JOIN MW_MATERIAL MT ON MI.MATERIAL_ID = MT.MATERIAL_ID
61
	LEFT JOIN
62
	(
63
		SELECT PR.PRICE_ID,B.BRANCH_ID, SUM (CASE WHEN A.CRDR='C' THEN A.QTY ELSE -A.QTY END) AS SOLUONG_TON_DAU,
64
		SUM (CASE WHEN A.CRDR='C' THEN A.TOTAL_AMT ELSE -A.TOTAL_AMT END) AS SOTIEN_TONDAU
65
		FROM
66
		MW_MAST_BAL_STMT A 
67
		LEFT JOIN MW_MAST_BAL B ON A.MAST_BAL_ID = B.MAST_BAL_ID
68
		LEFT JOIN MW_MAST_PRICE PR ON B.PRICE_ID = PR.PRICE_ID
69
		WHERE CONVERT(DATE,A.TRN_DATE, 103) < CONVERT(DATE, @p_Fromdate,103) 		
70
		AND (EXISTS (SELECT [@BRANCH_TMP].BRANCH_ID FROM @BRANCH_TMP WHERE [@BRANCH_TMP].BRANCH_ID=B.BRANCH_ID))
71
		GROUP BY PR.PRICE_ID,B.BRANCH_ID
72
	) A ON F.PRICE_ID = A.PRICE_ID AND A.BRANCH_ID=BRT.BRANCH_ID
73

    
74
	LEFT JOIN
75
	(
76
		SELECT PR.PRICE_ID,B.BRANCH_ID, SUM (CASE WHEN A.CRDR='D' THEN A.QTY ELSE 0 END) AS SOLUONG_XUAT_DONLE,
77
		SUM (CASE WHEN A.CRDR='D' THEN A.TOTAL_AMT ELSE 0 END) AS SOTIEN_XUAT_DONLE
78
		FROM
79
		MW_MAST_BAL_STMT A 
80
		LEFT JOIN MW_MAST_BAL B ON A.MAST_BAL_ID = B.MAST_BAL_ID
81
		LEFT JOIN MW_MAST_PRICE PR ON B.PRICE_ID = PR.PRICE_ID
82
		WHERE A.TRN_TYPE IN ('O','T','C') AND CONVERT(DATE,A.TRN_DATE, 103) >= CONVERT(DATE, @p_Fromdate,103)
83
		AND CONVERT(DATE,A.TRN_DATE, 103) <= CONVERT(DATE, @p_Todate,103) 
84
		AND (EXISTS (SELECT [@BRANCH_TMP].BRANCH_ID FROM @BRANCH_TMP WHERE [@BRANCH_TMP].BRANCH_ID=B.BRANCH_ID))
85
		GROUP BY PR.PRICE_ID,B.BRANCH_ID
86
	) A1 ON F.PRICE_ID = A1.PRICE_ID  AND A1.BRANCH_ID=BRT.BRANCH_ID
87
	LEFT JOIN
88
	(
89
		SELECT PR.PRICE_ID,B.BRANCH_ID, SUM (CASE WHEN A.CRDR='D' THEN A.QTY ELSE 0 END) AS SOLUONG_XUAT_TAP_TRUNG,
90
		SUM (CASE WHEN A.CRDR='D' THEN A.TOTAL_AMT ELSE 0 END) AS SOTIEN_XUAT_TAP_TRUNG
91
		FROM
92
		MW_MAST_BAL_STMT A 
93
		LEFT JOIN MW_MAST_BAL B ON A.MAST_BAL_ID = B.MAST_BAL_ID
94
		LEFT JOIN MW_MAST_PRICE PR ON B.PRICE_ID = PR.PRICE_ID
95
		WHERE A.TRN_TYPE ='L' AND CONVERT(DATE,A.TRN_DATE, 103) >= CONVERT(DATE, @p_Fromdate,103)
96
		AND CONVERT(DATE,A.TRN_DATE, 103) <= CONVERT(DATE, @p_Todate,103)
97
		AND (EXISTS (SELECT [@BRANCH_TMP].BRANCH_ID FROM @BRANCH_TMP WHERE [@BRANCH_TMP].BRANCH_ID=B.BRANCH_ID))
98
		GROUP BY PR.PRICE_ID,B.BRANCH_ID
99
	) A2 ON F.PRICE_ID = A2.PRICE_ID AND A2.BRANCH_ID=BRT.BRANCH_ID
100
	LEFT JOIN
101
	(
102
		SELECT PR.PRICE_ID,B.BRANCH_ID, SUM (CASE WHEN A.CRDR='C' THEN A.QTY ELSE 0 END) AS SOLUONG_DIEU_CHUYEN,
103
		SUM (CASE WHEN A.CRDR='C' THEN A.TOTAL_AMT ELSE 0 END) AS SOTIEN_DIEU_CHUYEN
104
		FROM
105
		MW_MAST_BAL_STMT A 
106
		LEFT JOIN MW_MAST_BAL B ON A.MAST_BAL_ID = B.MAST_BAL_ID
107
		LEFT JOIN MW_MAST_PRICE PR ON B.PRICE_ID = PR.PRICE_ID
108
		WHERE A.TRN_TYPE IN ('T','C') AND CONVERT(DATE,A.TRN_DATE, 103) >= CONVERT(DATE, @p_Fromdate,103)
109
		AND CONVERT(DATE,A.TRN_DATE, 103) <= CONVERT(DATE, @p_Todate,103)
110
		AND  (EXISTS ( SELECT TRANSFER_ID FROM dbo.MW_TRANSFER_CONF WHERE TRANSFER_ID=A.REF_ID AND BRANCH_RECIVE=B.BRANCH_ID))
111
		AND (EXISTS (SELECT [@BRANCH_TMP].BRANCH_ID FROM @BRANCH_TMP WHERE [@BRANCH_TMP].BRANCH_ID=B.BRANCH_ID))
112
		GROUP BY PR.PRICE_ID,B.BRANCH_ID
113
	) TF ON F.PRICE_ID = TF.PRICE_ID AND TF.BRANCH_ID=BRT.BRANCH_ID
114
	LEFT JOIN
115
	(
116
		SELECT PR.PRICE_ID,B.BRANCH_ID, SUM (CASE WHEN A.CRDR='D' THEN A.QTY ELSE 0 END) AS SOLUONG_THU_HOI,
117
		SUM (CASE WHEN A.CRDR='D' THEN A.TOTAL_AMT ELSE 0 END) AS SOTIEN_THU_HOI
118
		FROM
119
		MW_MAST_BAL_STMT A 
120
		LEFT JOIN MW_MAST_BAL B ON A.MAST_BAL_ID = B.MAST_BAL_ID
121
		LEFT JOIN MW_MAST_PRICE PR ON B.PRICE_ID = PR.PRICE_ID
122
		WHERE A.TRN_TYPE ='C' AND CONVERT(DATE,A.TRN_DATE, 103) >= CONVERT(DATE, @p_Fromdate,103)
123
		AND CONVERT(DATE,A.TRN_DATE, 103) <= CONVERT(DATE, @p_Todate,103)
124
		AND (EXISTS (SELECT [@BRANCH_TMP].BRANCH_ID FROM @BRANCH_TMP WHERE [@BRANCH_TMP].BRANCH_ID=B.BRANCH_ID))
125
		GROUP BY PR.PRICE_ID,B.BRANCH_ID
126
	) TH ON F.PRICE_ID = TH.PRICE_ID AND TH.BRANCH_ID=BRT.BRANCH_ID
127
	LEFT JOIN
128
	(
129
		SELECT PR.PRICE_ID,B.BRANCH_ID, SUM (CASE WHEN A.CRDR='C' THEN A.QTY ELSE -A.QTY END) AS SOLUONG_TON_CUOI,
130
		SUM (CASE WHEN A.CRDR='C' THEN A.TOTAL_AMT ELSE -A.TOTAL_AMT END) AS SOTIEN_TONCUOI
131
		FROM
132
		MW_MAST_BAL_STMT A 
133
		LEFT JOIN MW_MAST_BAL B ON A.MAST_BAL_ID = B.MAST_BAL_ID
134
		LEFT JOIN MW_MAST_PRICE PR ON B.PRICE_ID = PR.PRICE_ID
135
		WHERE CONVERT(DATE,A.TRN_DATE, 103) <= CONVERT(DATE, @p_Todate,103)
136
		AND (EXISTS (SELECT [@BRANCH_TMP].BRANCH_ID FROM @BRANCH_TMP WHERE [@BRANCH_TMP].BRANCH_ID=B.BRANCH_ID))
137
		GROUP BY PR.PRICE_ID,B.BRANCH_ID
138
	) A4 ON F.PRICE_ID = A4.PRICE_ID AND A4.BRANCH_ID=BRT.BRANCH_ID
139
	LEFT JOIN
140
	(
141
		SELECT PR.PRICE_ID,B.BRANCH_ID, SUM (CASE WHEN A.CRDR='C' THEN A.QTY ELSE 0 END) AS NHAP_TRONG_KI,
142
		SUM (CASE WHEN A.CRDR='C' THEN A.TOTAL_AMT ELSE 0 END) AS SOTIEN_NHAP_TRONG_KI
143
		FROM
144
		MW_MAST_BAL_STMT A 
145
		LEFT JOIN MW_MAST_BAL B ON A.MAST_BAL_ID = B.MAST_BAL_ID
146
		LEFT JOIN MW_MAST_PRICE PR ON B.PRICE_ID = PR.PRICE_ID
147
		WHERE A.TRN_TYPE  IN ('I','O') AND CONVERT(DATE,A.TRN_DATE, 103) >= CONVERT(DATE, @p_Fromdate,103) AND CONVERT(DATE,A.TRN_DATE, 103) <= CONVERT(DATE, @p_Todate,103) 
148
		AND (EXISTS (SELECT [@BRANCH_TMP].BRANCH_ID FROM @BRANCH_TMP WHERE [@BRANCH_TMP].BRANCH_ID=B.BRANCH_ID))
149
		GROUP BY PR.PRICE_ID,B.BRANCH_ID
150
	) A5 ON F.PRICE_ID = A5.PRICE_ID AND A5.BRANCH_ID= BRT.BRANCH_ID
151
	-- TÍNH SỐ LƯỢNG ĐIỀU CHUYỂN VL NHƯNG CHƯA ĐƯỢC XÁC NHẬN
152
	LEFT JOIN
153
	(
154
		SELECT PR.PRICE_ID,B.BRANCH_ID, SUM (CASE WHEN A.CRDR='C' THEN A.QTY ELSE 0 END) AS SOLUONG_DIEU_CHUYEN,
155
		SUM (CASE WHEN A.CRDR='C' THEN A.TOTAL_AMT ELSE 0 END) AS SOTIEN_DIEU_CHUYEN
156
		FROM
157
		MW_MAST_BAL_STMT A 
158
		LEFT JOIN MW_MAST_BAL B ON A.MAST_BAL_ID = B.MAST_BAL_ID
159
		LEFT JOIN MW_MAST_PRICE PR ON B.PRICE_ID = PR.PRICE_ID
160
		WHERE A.TRN_TYPE IN ('T','C') AND CONVERT(DATE,A.TRN_DATE, 103) >= CONVERT(DATE, @p_Fromdate,103)
161
		AND CONVERT(DATE,A.TRN_DATE, 103) <= CONVERT(DATE, @p_Todate,103)
162
		AND  (NOT EXISTS ( SELECT TRANSFER_ID FROM dbo.MW_TRANSFER_CONF WHERE TRANSFER_ID=A.REF_ID AND BRANCH_RECIVE=B.BRANCH_ID))
163
		AND (EXISTS (SELECT [@BRANCH_TMP].BRANCH_ID FROM @BRANCH_TMP WHERE [@BRANCH_TMP].BRANCH_ID=B.BRANCH_ID))
164
		GROUP BY PR.PRICE_ID,B.BRANCH_ID
165
	) NOT_TF ON F.PRICE_ID = NOT_TF.PRICE_ID AND NOT_TF.BRANCH_ID=BRT.BRANCH_ID
166
	----------
167
	LEFT JOIN MW_GROUP GR ON MI.GROUP_ID = GR.GROUP_ID	
168
	LEFT JOIN CM_UNIT UN ON MT.UNIT_ID = UN.UNIT_ID
169
	WHERE MST.WARE_HOUSE =@p_WARE_HOUSE
170
	-- LUCTV BO SUNG DIEU KIEN CHI LAY NHUNG LO VAT LIEU DUOC NHAP KHO TRONG KHOANG THOI GIAN TU NGAY DEN NGAY
171
	--AND (CONVERT(DATE,MST.APPROVE_DT_KT,103) >= CONVERT (DATE,@p_Fromdate,103) OR @p_Fromdate IS NULL OR @p_Fromdate ='')
172
	AND (CONVERT(DATE,MST.APPROVE_DT_KT,103) <= CONVERT (DATE,@p_Todate,103) OR @p_Todate IS NULL OR @p_Todate ='')
173
) AA
174
SELECT A.* FROM @TABLE_REPORT A
175
ORDER BY A.DVSD
176
END