1
|
ALTER PROCEDURE dbo.ASS_INVENTORY_MASTER_Upd
|
2
|
@P_INVENT_ID VARCHAR(15) = NULL,
|
3
|
@p_INVENTORY_DT VARCHAR(20) = NULL,
|
4
|
@p_TERM nvarchar(20) = NULL,
|
5
|
@p_BRANCH_ID varchar(15) = NULL,
|
6
|
@p_DEPT_ID varchar(15) = NULL,
|
7
|
@p_NOTES NVARCHAR(1000) = NULL,
|
8
|
@p_RECORD_STATUS varchar(1) = NULL,
|
9
|
@p_AUTH_STATUS_DVKD varchar(1) = NULL,
|
10
|
@p_MAKER_ID varchar(15) = NULL,
|
11
|
@p_CREATE_DT VARCHAR(20) = NULL,
|
12
|
@p_CHECKER_ID varchar(15) = NULL,
|
13
|
@p_APPROVE_DT VARCHAR(20) = NULL,
|
14
|
@P_INVENTDETAILS XML = NULL,
|
15
|
@p_BRANCH_CREATE VARCHAR(15) = NULL,
|
16
|
@p_PARTYDETAILS XML = NULL,
|
17
|
@p_UNSTOCKEDDETAILS XML = NULL,
|
18
|
@p_SIGN_USER VARCHAR(20) = NULL
|
19
|
AS
|
20
|
--Validation is here
|
21
|
/*
|
22
|
DECLARE @ERRORSYS NVARCHAR(15) = ''
|
23
|
IF ( NOT EXISTS ( SELECT * FROM ASS_INVENTORY_MASTER WHERE ))
|
24
|
SET @ERRORSYS = ''
|
25
|
IF @ERRORSYS <> ''
|
26
|
BEGIN
|
27
|
SELECT ErrorCode Result, '' CAR_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
|
28
|
RETURN '0'
|
29
|
END
|
30
|
*/
|
31
|
IF (SELECT AUTH_STATUS FROM ASS_INVENTORY_MASTER WHERE INVENT_ID = @P_INVENT_ID) = 'A'
|
32
|
BEGIN
|
33
|
SELECT '-1' as Result, '' INVENT_ID, N'Thông tin đã được duyệt nên không được phép chỉnh sửa!' ErrorDesc
|
34
|
return '-1'
|
35
|
END
|
36
|
IF (EXISTS(SELECT * FROM ASS_INVENTORY_MASTER aim WHERE aim.BRANCH_ID = @p_BRANCH_ID
|
37
|
AND aim.INVENT_ID <> @P_INVENT_ID
|
38
|
AND aim.TERM = @p_TERM AND aim.INVENTORY_DT = CONVERT(DATETIME, @p_INVENTORY_DT, 103)))
|
39
|
BEGIN
|
40
|
SELECT '-1' as Result, '' INVENT_ID, N'Đơn vị đã tồn tại kỳ kiểm kê có cùng ngày và đợt kiểm kê.' ErrorDesc
|
41
|
RETURN '-1'
|
42
|
END
|
43
|
IF (EXISTS(SELECT * FROM ASS_INVENTORY_MASTER aim
|
44
|
WHERE aim.BRANCH_ID = @p_BRANCH_ID
|
45
|
AND aim.INVENT_ID <> @P_INVENT_ID
|
46
|
AND (aim.AUTH_STATUS <> 'A' OR aim.AUTH_STATUS IS NULL OR aim.AUTH_STATUS_DVKD <> 'A' OR aim.AUTH_STATUS_DVKD IS NULL)))
|
47
|
BEGIN
|
48
|
SELECT '-1' as Result, '' INVENT_ID, N'Đơn vị có kỳ kiểm kê chưa hoàn thành nên không thể tạo thêm kỳ kiểm kê mới.' ErrorDesc
|
49
|
RETURN '-1'
|
50
|
END
|
51
|
|
52
|
Declare @hdoc INT
|
53
|
Exec sp_xml_preparedocument @hdoc Output,@P_INVENTDETAILS
|
54
|
DECLARE InventDetail CURSOR FOR
|
55
|
SELECT *
|
56
|
FROM OPENXML(@hDoc,'/Root/InventDetail',2)
|
57
|
WITH
|
58
|
(
|
59
|
INVENTDT_ID VARCHAR(15),
|
60
|
ASSET_ID varchar(15) ,
|
61
|
ASSET_STATUS nvarchar(20) ,
|
62
|
INVENT_DESC nvarchar(1000) ,
|
63
|
NOTES nvarchar(500),
|
64
|
BRANCH_USE varchar(15) ,
|
65
|
DEPT_USE varchar(15) ,
|
66
|
REMAIN_VALUE decimal(18,0)
|
67
|
)
|
68
|
OPEN InventDetail
|
69
|
|
70
|
-- GiaNT 23/08/2021
|
71
|
Declare @hdocParty INT
|
72
|
Exec sp_xml_preparedocument @hdocParty Output,@p_PARTYDETAILS
|
73
|
DECLARE PartyDetail CURSOR FOR
|
74
|
SELECT *
|
75
|
FROM OPENXML(@hdocParty,'/Root/PartyDetail',2)
|
76
|
WITH
|
77
|
(
|
78
|
PARTY_ID VARCHAR(15),
|
79
|
INVENT_ID VARCHAR(15),
|
80
|
PARTY_NAME NVARCHAR(100),
|
81
|
PARTY_ROLE NVARCHAR(100),
|
82
|
IS_RECIVE_MAIL NVARCHAR(100),
|
83
|
IS_DONE NVARCHAR(100),
|
84
|
IS_MAIN NVARCHAR(1)
|
85
|
|
86
|
|
87
|
)
|
88
|
OPEN PartyDetail
|
89
|
|
90
|
Declare @hdocUnstocked INT
|
91
|
Exec sp_xml_preparedocument @hdocUnstocked Output,@p_UNSTOCKEDDETAILS
|
92
|
DECLARE UnstockedDetail CURSOR FOR
|
93
|
SELECT *
|
94
|
FROM OPENXML(@hdocUnstocked,'/Root/UnstockedDetail',2)
|
95
|
WITH
|
96
|
(
|
97
|
UNSTOCKED_ID VARCHAR(15),
|
98
|
INVENT_ID VARCHAR(15),
|
99
|
ASS_NAME NVARCHAR(1000),
|
100
|
SERIAL NVARCHAR(MAX),
|
101
|
BRANCH_ID NVARCHAR(50),
|
102
|
DEPT_ID NVARCHAR(50),
|
103
|
USE_DATE VARCHAR(20)
|
104
|
)
|
105
|
OPEN UnstockedDetail
|
106
|
|
107
|
BEGIN TRANSACTION
|
108
|
|
109
|
IF @p_APPROVE_DT = '' SET @p_APPROVE_DT = NULL
|
110
|
|
111
|
UPDATE ASS_INVENTORY_MASTER SET [INVENTORY_DT] = CONVERT(DATETIME, @p_INVENTORY_DT, 103),[TERM] = @p_TERM,[BRANCH_ID] = @p_BRANCH_ID,[NOTES] = @p_NOTES,[RECORD_STATUS] = @p_RECORD_STATUS,[AUTH_STATUS_DVKD] = @p_AUTH_STATUS_DVKD,[MAKER_ID] = @p_MAKER_ID,[CREATE_DT] = CONVERT(DATETIME, @p_CREATE_DT, 103),[CHECKER_ID] = @p_CHECKER_ID,[APPROVE_DT] = CONVERT(DATETIME, @p_APPROVE_DT, 103),
|
112
|
BRANCH_CREATE=@p_BRANCH_CREATE,SIGN_USER=@p_SIGN_USER
|
113
|
WHERE INVENT_ID= @p_INVENT_ID
|
114
|
IF @@Error <> 0 GOTO ABORT
|
115
|
|
116
|
DELETE FROM ASS_INVENTORY_DT WHERE INVENT_ID = @P_INVENT_ID
|
117
|
Declare @INVENTDT_ID VARCHAR(15),@ASSET_ID varchar(15), @ASSET_STATUS nvarchar(20),@INVENT_DESC nvarchar(1000),
|
118
|
@NOTES nvarchar(500), @DEPT_USE VARCHAR(15), @BRANCH_USE VARCHAR(15), @REMAIN_VALUE decimal(18,0)
|
119
|
FETCH NEXT FROM InventDetail INTO @INVENTDT_ID,@ASSET_ID, @ASSET_STATUS, @INVENT_DESC, @NOTES, @BRANCH_USE, @DEPT_USE, @REMAIN_VALUE
|
120
|
--------THIEUVQ THEM PHAN DEPT_ID CHO DOT KIEM KE, TAM THOI LAY THEO TAI SAN DAU TIEN TRONG BANG INVENTORY_DT
|
121
|
IF @p_BRANCH_ID = 'DV0001'
|
122
|
BEGIN
|
123
|
UPDATE ASS_INVENTORY_MASTER SET DEPT_ID = @DEPT_USE WHERE INVENT_ID = @P_INVENT_ID
|
124
|
END
|
125
|
--------
|
126
|
WHILE @@FETCH_STATUS = 0
|
127
|
BEGIN
|
128
|
IF(LEN (@INVENTDT_ID) = 0 )
|
129
|
BEGIN
|
130
|
EXEC SYS_CodeMasters_Gen 'ASS_INVENTORY_DT', @INVENTDT_ID out
|
131
|
IF @INVENTDT_ID ='' OR @INVENTDT_ID IS NULL GOTO ABORT
|
132
|
END
|
133
|
INSERT INTO ASS_INVENTORY_DT([INVENTDT_ID],[INVENT_ID],[ASSET_ID],[ASSET_STATUS],[INVENT_DESC], [NOTES], [BRANCH_USE], [DEPT_USE], [REMAIN_VALUE])
|
134
|
VALUES(@INVENTDT_ID,@P_INVENT_ID,@ASSET_ID,@ASSET_STATUS,@INVENT_DESC, @NOTES, @BRANCH_USE, @DEPT_USE, @REMAIN_VALUE)
|
135
|
-- next Group_Id
|
136
|
IF @@ERROR <> 0 GOTO ABORT
|
137
|
FETCH NEXT FROM InventDetail INTO @INVENTDT_ID,@ASSET_ID, @ASSET_STATUS, @INVENT_DESC, @NOTES, @BRANCH_USE, @DEPT_USE, @REMAIN_VALUE
|
138
|
END
|
139
|
CLOSE InventDetail
|
140
|
DEALLOCATE InventDetail
|
141
|
|
142
|
|
143
|
-- GiaNT 23/08/2021
|
144
|
DELETE FROM ASS_INVENTORY_PARTY_DT WHERE INVENT_ID = @P_INVENT_ID
|
145
|
|
146
|
DECLARE
|
147
|
@PARTY_ID VARCHAR(15),
|
148
|
@INVENT_ID VARCHAR(15),
|
149
|
@PARTY_NAME NVARCHAR(200),
|
150
|
@PARTY_ROLE NVARCHAR(200),
|
151
|
@IS_RECIVE_MAIL VARCHAR(1),
|
152
|
@IS_DONE VARCHAR(1),
|
153
|
@IS_MAIN VARCHAR(1)
|
154
|
|
155
|
|
156
|
FETCH NEXT FROM PartyDetail INTO @PARTY_ID,@INVENT_ID,@PARTY_NAME,@PARTY_ROLE,@IS_RECIVE_MAIL,@IS_DONE,@IS_MAIN
|
157
|
WHILE @@FETCH_STATUS = 0
|
158
|
BEGIN
|
159
|
DECLARE @l_PARTY_ID VARCHAR(15)
|
160
|
EXEC SYS_CodeMasters_Gen 'ASS_INVENTORY_PARTY_DT', @l_PARTY_ID out
|
161
|
IF @l_PARTY_ID='' OR @l_PARTY_ID IS NULL
|
162
|
BEGIN
|
163
|
GOTO ABORT
|
164
|
END
|
165
|
|
166
|
INSERT INTO ASS_INVENTORY_PARTY_DT([PARTY_ID], [INVENT_ID], [PARTY_NAME], [PARTY_ROLE],[IS_RECIVE_MAIL],[IS_DONE],[IS_MAIN])
|
167
|
VALUES(@l_PARTY_ID ,@p_INVENT_ID, @PARTY_NAME, @PARTY_ROLE,@IS_RECIVE_MAIL,@IS_DONE,@IS_MAIN)
|
168
|
IF @@Error <> 0 GOTO ABORT
|
169
|
|
170
|
FETCH NEXT FROM PartyDetail INTO @PARTY_ID,@INVENT_ID,@PARTY_NAME,@PARTY_ROLE,@IS_RECIVE_MAIL,@IS_DONE,@IS_MAIN
|
171
|
END
|
172
|
CLOSE PartyDetail
|
173
|
DEALLOCATE PartyDetail
|
174
|
|
175
|
DELETE FROM dbo.ASS_INVENTORY_UNSTOCKED WHERE INVENT_ID = @P_INVENT_ID
|
176
|
|
177
|
DECLARE
|
178
|
@UNSTOCKED_ID VARCHAR(15),
|
179
|
@ASS_NAME NVARCHAR(1000),
|
180
|
@SERIAL NVARCHAR(MAX),
|
181
|
@BRANCH_ID NVARCHAR(50),
|
182
|
@DEPT_ID NVARCHAR(50),
|
183
|
@USE_DATE VARCHAR(20)
|
184
|
|
185
|
FETCH NEXT FROM UnstockedDetail INTO @UNSTOCKED_ID,@INVENT_ID,@ASS_NAME,@SERIAL,@BRANCH_ID,@DEPT_ID,@USE_DATE
|
186
|
WHILE @@FETCH_STATUS = 0
|
187
|
BEGIN
|
188
|
DECLARE @l_UNSTOCKED_ID VARCHAR(15)
|
189
|
EXEC SYS_CodeMasters_Gen 'ASS_INVENTORY_UNSTOCKED', @l_UNSTOCKED_ID out
|
190
|
IF @l_UNSTOCKED_ID='' OR @l_UNSTOCKED_ID IS NULL
|
191
|
BEGIN
|
192
|
GOTO ABORT
|
193
|
END
|
194
|
|
195
|
INSERT INTO ASS_INVENTORY_UNSTOCKED([UNSTOCKED_ID], [INVENT_ID], [ASS_NAME], [SERIAL],[BRANCH_ID],[DEPT_ID],[USE_DATE])
|
196
|
VALUES(@l_UNSTOCKED_ID ,@p_INVENT_ID, @ASS_NAME, @SERIAL,@BRANCH_ID,@DEPT_ID,CONVERT(DATETIME,@USE_DATE,103))
|
197
|
IF @@Error <> 0 GOTO ABORT
|
198
|
|
199
|
FETCH NEXT FROM UnstockedDetail INTO @UNSTOCKED_ID,@INVENT_ID,@ASS_NAME,@SERIAL,@BRANCH_ID,@DEPT_ID,@USE_DATE
|
200
|
END
|
201
|
CLOSE UnstockedDetail
|
202
|
DEALLOCATE UnstockedDetail
|
203
|
|
204
|
COMMIT TRANSACTION
|
205
|
SELECT '0' as Result, @P_INVENT_ID INVENT_ID, '' ErrorDesc
|
206
|
RETURN '0'
|
207
|
ABORT:
|
208
|
BEGIN
|
209
|
CLOSE InventDetail
|
210
|
DEALLOCATE InventDetail
|
211
|
ROLLBACK TRANSACTION
|
212
|
SELECT '-1' as Result, '' INVENT_ID, '' ErrorDesc
|
213
|
RETURN '-1'
|
214
|
End
|