Project

General

Profile

ASS_INVENTORY_MASTER_Upd.txt

Luc Tran Van, 01/17/2023 10:11 AM

 
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