Project

General

Profile

TL_QLTS.txt

Luc Tran Van, 04/11/2023 01:08 PM

 
1
ALTER PROCEDURE dbo.ASS_LIQUIDATION_BVB_Import
2
	@p_BRANCH_ID		varchar(15) = NULL,
3
	@p_BRANCH_LOGIN		varchar(15) = NULL,
4
	@p_LEVEL			varchar(10) = NULL,
5
	@p_XML XML
6

    
7
AS
8
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 
9
BEGIN -- PAGING
10
	declare @tmp table(BRANCH_ID varchar(15))
11
	insert into @tmp  SELECT BRANCH_ID  FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_ID)
12

    
13
	
14
	
15
	declare @tmpAssetCode table(
16
		STT				INT,
17
		ASSET_CODE varchar(50),
18
		LIQ_AMT	decimal(18,0),
19
		LIQ_REASON NVARCHAR(1000),
20
		LIQ_TYPE	nvarchar(max)
21
	)
22

    
23
	
24
	Declare @hdoc INT
25
	Exec sp_xml_preparedocument @hdoc Output,  @p_XML
26
	insert into @tmpAssetCode
27
--	select ROW_NUMBER() OVER(ORDER BY (SELECT 1)), ASSET_CODE,LIQ_AMT,LIQ_REASON, CASE
28
--                                                                                  	WHEN LIQ_TYPE LIKE N'%Toàn%' THEN '1'
29
--                                                                                  	ELSE '0'
30
--                                                                                  END LIQ_TYPE
31
    select ROW_NUMBER() OVER(ORDER BY (SELECT 1)), ASSET_CODE,LIQ_AMT,LIQ_REASON,LIQ_TYPE
32
	from OPENXML(@hdoc,'/Root/LiquiDetail',2)
33
	WITH 
34
	(
35
		STT				INT,
36
		ASSET_CODE	varchar(50),
37
		LIQ_AMT	decimal(18,0),
38
		LIQ_REASON NVARCHAR(1000),
39
		LIQ_TYPE	nvarchar(100)
40
	)
41

    
42
	-- validate begin
43
	DECLARE @ERROR_MESSAGE NVARCHAR(MAX)
44
    
45
    --valide dup code
46
    select @ERROR_MESSAGE = STUFF( (
47
	--select ',' + ASSET_CODE from @tmpAssetCode T 
48
    SELECT ASSET_CODE, COUNT(ASSET_CODE)
49
    FROM @tmpAssetCode
50
    GROUP BY ASSET_CODE
51
    HAVING COUNT(ASSET_CODE) > 1
52
	
53
	FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '')
54

    
55
	IF(LEN(@ERROR_MESSAGE) > 0)
56
	BEGIN
57
		set @ERROR_MESSAGE = N'Mã tài sản trong file trùng dữ liệu: ' + @ERROR_MESSAGE
58
		exec sp_seterrormessage @ERROR_MESSAGE
59
		RETURN '-1'
60
	END
61
    ------- end dup -----
62

    
63
	select @ERROR_MESSAGE = STUFF( (
64
	select ',' + ASSET_CODE from @tmpAssetCode T 
65
	WHERE T.ASSET_CODE IS NOT NULL AND NOT EXISTS(
66
		SELECT ASSET_CODE 
67
		FROM ASS_MASTER A 	
68
		WHERE A.ASSET_CODE = T.ASSET_CODE and A.RECORD_STATUS = '1'
69
		AND  ( 
70
					((A.AMORT_STATUS <> 'VNM' AND ((@p_LEVEL = 'ALL' AND A.BRANCH_ID IN (SELECT BRANCH_ID from @tmp))
71
												OR (@p_LEVEL = 'UNIT' AND A.BRANCH_ID = @p_BRANCH_ID)))
72
						OR
73
					((A.AMORT_STATUS = 'VNM' OR (A.AMORT_STATUS = 'DTL' AND (A.BRANCH_ID IS NULL OR A.BRANCH_ID = ''))) 
74
							--AND ((@p_LEVEL = 'ALL' AND MK.TLSUBBRID IN (SELECT BRANCH_ID from @tmp))
75
							--					OR (@p_LEVEL = 'UNIT' AND MK.TLSUBBRID = @p_BRANCH_ID))) ) 
76
							AND ((@p_LEVEL = 'ALL' AND A.BRANCH_CREATE IN (SELECT BRANCH_ID from @tmp))
77
												OR (@p_LEVEL = 'UNIT' AND A.BRANCH_CREATE = @p_BRANCH_ID))) ) 
78
					OR @p_BRANCH_ID IS NULL OR @p_BRANCH_ID = ''
79
				)			
80
				AND ( 
81
					((A.AMORT_STATUS <> 'VNM' AND ((@p_LEVEL = 'ALL' AND A.BRANCH_ID IN (SELECT BRANCH_ID from @tmp))
82
												OR (@p_LEVEL = 'UNIT' AND A.BRANCH_ID = @p_BRANCH_LOGIN)))
83
						OR
84
					((A.AMORT_STATUS = 'VNM' OR (A.AMORT_STATUS = 'DTL' AND (A.BRANCH_ID IS NULL OR A.BRANCH_ID = '')))
85
							AND ((@p_LEVEL = 'ALL' AND A.BRANCH_CREATE IN (SELECT BRANCH_ID from @tmp))
86
												OR (@p_LEVEL = 'UNIT' AND A.BRANCH_CREATE = @p_BRANCH_LOGIN)))) 
87
					OR @p_BRANCH_LOGIN IS NULL OR @p_BRANCH_LOGIN = ''
88
				)
89
	
90
	
91
		) FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '')
92

    
93

    
94
	IF(LEN(@ERROR_MESSAGE) > 0)
95
	BEGIN
96
		set @ERROR_MESSAGE = N'Mã tài sản không thuộc đơn vị hoặc không tồn tại trong hệ thống: ' + @ERROR_MESSAGE
97
		exec sp_seterrormessage @ERROR_MESSAGE
98
		RETURN '-1'
99
	END
100

    
101
	select @ERROR_MESSAGE = STUFF( (
102
	select ',' + ASSET_CODE from @tmpAssetCode T 
103
	WHERE T.ASSET_CODE IS NOT NULL AND EXISTS(
104
		SELECT ASSET_CODE 
105
		FROM ASS_MASTER A 	
106
		WHERE A.ASSET_CODE = T.ASSET_CODE and A.RECORD_STATUS = '1' AND A.AMORT_STATUS='DTL'
107
		) FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '')
108
		
109
	-- validate end
110

    
111
	IF(LEN(@ERROR_MESSAGE) > 0)
112
	BEGIN
113
		set @ERROR_MESSAGE = N'Mã tài sản đã được thanh lý: ' + @ERROR_MESSAGE
114
		exec sp_seterrormessage @ERROR_MESSAGE
115
		RETURN '-1'
116
	END
117

    
118

    
119

    
120

    
121
---------------------------
122
	
123
		SELECT
124
			A.ASSET_ID,
125
			A.ASSET_CODE,
126
			A.ASSET_NAME,
127
			T.LIQ_AMT AS REQ_AMT,
128
			A.BUY_PRICE,
129
            ISNULL(ALRD.REQ_AMT, ISNULL((A.AMORT_AMT - A.AMORTIZED_AMT), A.AMORT_AMT)) AS LIQ_AMT,
130
			ISNULL((A.AMORT_AMT - A.AMORTIZED_AMT), A.AMORT_AMT) AS REMAIN_AMORTIZED_AMT,  --So tien khau hao con lai
131
			ISNULL((A.AMORT_AMT - A.AMORTIZED_AMT), A.AMORT_AMT) AS LIQ_PRICE, 
132
			CASE WHEN A.BUY_PRICE > 0 THEN A.BUY_PRICE ELSE 0 END AS BUY_PRICE_LIQ,
133
			E.STATUS_NAME ASS_STATUS_NAME, --Tinh trang tai san
134
			A.BRANCH_ID,
135
			T.LIQ_TYPE AS NOTE,	
136
			--(T.BUY_PRICE_LIQ / A.BUY_PRICE) * ISNULL((A.AMORT_AMT - A.AMORTIZED_AMT), A.AMORT_AMT) AS REMAIN_VALUE,
137
			T.LIQ_REASON,
138
			C.BRANCH_NAME AS BRANCH_NAME_USE,
139
			D.DEP_NAME AS DEPT_NAME_USE,
140
			F.STATUS_NAME AMORT_STATUS_NAME
141
		FROM ASS_MASTER A
142
			LEFT JOIN ASS_GROUP B ON A.GROUP_ID = B.GROUP_ID AND B.RECORD_STATUS = '1'
143
			LEFT JOIN dbo.CM_BRANCH C ON A.BRANCH_ID = C.BRANCH_ID
144
			
145
			LEFT JOIN dbo.CM_DEPARTMENT D ON A.DEPT_ID = D.DEP_ID
146
			LEFT JOIN ASS_STATUS E ON A.ASS_STATUS = E.STATUS_ID
147
			LEFT JOIN ASS_AMORT_STATUS F ON A.AMORT_STATUS = F.STATUS_CODE
148
			INNER JOIN @tmpAssetCode T ON A.ASSET_CODE = T.ASSET_CODE
149
            LEFT JOIN ASS_LIQ_REQUEST_DT ALRD ON ALRD.ASSET_ID = A.ASSET_ID
150
			
151
		ORDER BY STT
152

    
153
	END