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 AS BRANCH_ID_USE, A.DEPT_ID AS DEP_ID_USE,
|
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
|
ISNULL(ALRD.LIQ_REQ_ID, A.CURRENT_TRANS)
|
142
|
FROM ASS_MASTER A
|
143
|
LEFT JOIN ASS_GROUP B ON A.GROUP_ID = B.GROUP_ID AND B.RECORD_STATUS = '1'
|
144
|
LEFT JOIN dbo.CM_BRANCH C ON A.BRANCH_ID = C.BRANCH_ID
|
145
|
|
146
|
LEFT JOIN dbo.CM_DEPARTMENT D ON A.DEPT_ID = D.DEP_ID
|
147
|
LEFT JOIN ASS_STATUS E ON A.ASS_STATUS = E.STATUS_ID
|
148
|
LEFT JOIN ASS_AMORT_STATUS F ON A.AMORT_STATUS = F.STATUS_CODE
|
149
|
INNER JOIN @tmpAssetCode T ON A.ASSET_CODE = T.ASSET_CODE
|
150
|
LEFT JOIN ASS_LIQ_REQUEST_DT ALRD ON ALRD.ASSET_ID = A.ASSET_ID
|
151
|
|
152
|
ORDER BY STT
|
153
|
|
154
|
END
|