Project

General

Profile

ASS_LIQ_REQUEST_Upd.txt

Luc Tran Van, 04/05/2023 04:54 PM

 
1
ALTER PROCEDURE dbo.ASS_LIQ_REQUEST_Upd
2
@p_LIQ_REQ_ID VARCHAR(15) = NULL,
3
@p_ASS_TYPE_ID	varchar(15)  = NULL,
4
@p_REQ_DT	VARCHAR(20) = NULL,
5
@p_BRANCH_ID	varchar(15)  = NULL,
6
@p_NOTES	nvarchar(1000)  = NULL,
7
@p_RECORD_STATUS	varchar(1)  = NULL,
8
@p_MAKER_ID	varchar(12)  = NULL,
9
@p_CREATE_DT	VARCHAR(20) = NULL,
10
@p_AUTH_STATUS	varchar(50)  = NULL,
11
@p_CHECKER_ID	varchar(12)  = NULL,
12
@p_APPROVE_DT	VARCHAR(20) = NULL,
13
@p_LiqDetails XML = NULL,
14
@p_ListCostCenter XML = NULL,
15
@p_BRANCH_CREATE	VARCHAR(15) = NULL,
16
@p_DEP_ID	VARCHAR(15) = NULL,
17
@p_TERM_ID VARCHAR(15) = NULL,
18
@p_USER_LOGIN VARCHAR(15)
19

    
20
AS
21
--Validation is here
22
	DECLARE @ERRORSYS NVARCHAR(15) = '' 
23
	IF ( NOT EXISTS ( SELECT * FROM ASS_LIQ_REQUEST WHERE  LIQ_REQ_ID= @p_LIQ_REQ_ID))
24
		SET @ERRORSYS = ''
25
	IF @ERRORSYS <> '' 
26
	BEGIN
27
		SELECT ErrorCode Result, ''  LIQ_REQ_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
28
		RETURN '0'
29
	END 
30
	Declare @hdoc INT
31
	Exec sp_xml_preparedocument @hdoc Output,@p_LiqDetails
32

    
33
	--Them dieu kien kiem tra lý do de xuat khong duoc de trong
34
	DECLARE @reason NVARCHAR(max) = ''
35
	SELECT @reason = COALESCE(@reason + ', ', '') + ASSET_CODE 
36
	FROM OPENXML(@hdoc,'/Root/LiquiDetail',2)
37
	WITH 
38
	(
39
		ASSET_ID	varchar(15),
40
		LIQ_REASON	nvarchar(1000),
41
		NOTES	nvarchar(1000)	,
42
		REQ_AMT DECIMAL(18,0),
43
		LIQ_RECEIVE NVARCHAR(500),
44
		BRANCH_USE VARCHAR(15),
45
		DEPT_USE VARCHAR(15),
46
		REMAIN_VALUE DECIMAL(18,0),
47
		ASSET_CODE varchar(100),
48
		IS_IMP varchar(15)
49
	)
50
	WHERE LIQ_REASON = '' OR LIQ_REASON IS NULL
51

    
52
	IF @reason <> ''
53
	BEGIN
54
		SELECT '-1' as Result, '' LIQ_REQ_ID, N'Lý do đề xuất thanh lý không được để trống! DS tài sản: '+ @reason ErrorDesc
55
		RETURN '-1'
56
	END
57

    
58
	-------BO SUNG PHAN IMPORT TS TU FILE
59
	----KIEM TRA TS IMPORT PHAI THUOC DON VI DA CHON
60
	declare @tmp table(BRANCH_ID varchar(15))
61
	insert into @tmp  SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_ID)
62

    
63
	DECLARE liqDetail CURSOR FOR
64
	SELECT B.DETAIL_ID,
65
	--A.ASSET_ID,
66
	B.ASSET_ID,
67
		B.LIQ_REASON,
68
		B.NOTES,
69
		B.REQ_AMT,
70
		B.LIQ_RECEIVE,
71
		--khanhnhd
72
		--(CASE WHEN IS_IMP = 'N' THEN B.BRANCH_USE ELSE B.ASSET_ID END) BRANCH_USE,
73
		--(CASE WHEN IS_IMP = 'N' THEN B.DEPT_USE ELSE B.ASSET_ID END) DEPT_USE,		
74
		B.BRANCH_USE,
75
		B.DEPT_USE,
76
		--end khanhnhd
77
		B.REMAIN_VALUE
78
	FROM OPENXML(@hdoc,'/Root/LiquiDetail',2)
79
	WITH 
80
	(
81
		DETAIL_ID VARCHAR(15),
82
		ASSET_ID	varchar(15),
83
		LIQ_REASON	nvarchar(1000),
84
		NOTES	nvarchar(1000)	,
85
		REQ_AMT DECIMAL(18,0),
86
		LIQ_RECEIVE NVARCHAR(500),
87
		BRANCH_USE VARCHAR(15),
88
		DEPT_USE VARCHAR(15),
89
		REMAIN_VALUE DECIMAL(18,0),
90
		ASSET_CODE varchar(100),
91
			IS_IMP varchar(15)
92
	) B
93
	--LAY MA TAI SAN
94
	--LEFT JOIN ASS_MASTER A ON A.ASSET_CODE = B.ASSET_CODE AND A.BRANCH_ID IN (SELECT C.* FROM @tmp C)
95
	OPEN liqDetail
96
	
97
BEGIN TRANSACTION
98

    
99
		IF @p_APPROVE_DT = '' SET @p_APPROVE_DT = NULL
100
    SET @p_MAKER_ID = (SELECT alr.MAKER_ID FROM ASS_LIQ_REQUEST alr WHERE LIQ_REQ_ID = @p_LIQ_REQ_ID)
101
		UPDATE ASS_LIQ_REQUEST SET [ASS_TYPE_ID] = @p_ASS_TYPE_ID,[REQ_DT] = CONVERT(DATETIME, @p_REQ_DT, 103),[BRANCH_ID] = @p_BRANCH_ID,[NOTES] = @p_NOTES,[RECORD_STATUS] = @p_RECORD_STATUS,[CREATE_DT] = CONVERT(DATETIME, @p_CREATE_DT, 103),[AUTH_STATUS] = @p_AUTH_STATUS,[CHECKER_ID] = @p_CHECKER_ID,[APPROVE_DT] = CONVERT(DATETIME, @p_APPROVE_DT, 103),
102
		BRANCH_CREATE= @p_BRANCH_CREATE, TERM_ID = @p_TERM_ID,DEP_ID=@p_DEP_ID
103
		WHERE  LIQ_REQ_ID= @p_LIQ_REQ_ID
104
		IF @@Error <> 0 GOTO ABORT 
105
		PRINT 'A'
106
		DELETE FROM ASS_LIQ_REQUEST_DT WHERE LIQ_REQ_ID = @p_LIQ_REQ_ID
107
		PRINT 'B'
108
		Declare @DETAIL_ID  VARCHAR(15), @ASSET_ID VARCHAR(15), @LIQ_REASON NVARCHAR(1000),@NOTES NVARCHAR(1000), 
109
		@REQ_AMT DECIMAL(18,0), @LIQ_RECEIVE NVARCHAR(500), @BRANCH_USE VARCHAR(15), @DEPT_USE VARCHAR(15), @REMAIN_VALUE DECIMAL(18,0)
110
		FETCH NEXT FROM liqDetail INTO @DETAIL_ID,@ASSET_ID, @LIQ_REASON, @NOTES, @REQ_AMT, @LIQ_RECEIVE,@BRANCH_USE, @DEPT_USE, @REMAIN_VALUE
111
		WHILE @@FETCH_STATUS = 0	
112
		BEGIN
113
			IF LEN (@DETAIL_ID) =  0
114
			BEGIN
115
				PRINT 'C'
116
				EXEC SYS_CodeMasters_Gen 'ASS_LIQ_REQUEST_DT', @DETAIL_ID out
117
				IF @DETAIL_ID='' OR @DETAIL_ID IS NULL GOTO ABORT
118
			END
119
			PRINT @DETAIL_ID
120
			--print 'asset_id: ' + @ASSET_ID
121
			INSERT INTO ASS_LIQ_REQUEST_DT([LIQREQDT_ID],[LIQ_REQ_ID],[ASSET_ID],[LIQ_REASON],[NOTES],[RECORD_STATUS],
122
			[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT], [REQ_AMT], [LIQ_RECEIVE], [BRANCH_USE], [DEPT_USE], [REMAIN_VALUE])
123
			VALUES(@DETAIL_ID ,@p_LIQ_REQ_ID ,@ASSET_ID ,@LIQ_REASON ,@NOTES ,@p_RECORD_STATUS ,@p_MAKER_ID ,
124
			CONVERT(DATETIME, @p_CREATE_DT, 103) ,@p_AUTH_STATUS ,@p_CHECKER_ID ,CONVERT(DATETIME, @p_APPROVE_DT, 103), @REQ_AMT, @LIQ_RECEIVE,
125
			@BRANCH_USE, @DEPT_USE, @REMAIN_VALUE )
126
			IF @@Error <> 0 GOTO ABORT
127
			FETCH NEXT FROM liqDetail INTO @DETAIL_ID,@ASSET_ID, @LIQ_REASON, @NOTES, @REQ_AMT, @LIQ_RECEIVE,@BRANCH_USE, @DEPT_USE, @REMAIN_VALUE
128
		END
129
		CLOSE liqDetail
130
		DEALLOCATE liqDetail
131

    
132
		--khanhnhd cập nhật đơn vị chuyên môn
133
	Declare @hdocc INT
134
	Exec sp_xml_preparedocument @hdocc Output,@p_ListCostCenter
135

    
136
	DECLARE ConcenterDetaisls CURSOR FOR
137
	SELECT D.REQ_COST_ID,
138
		D.COST_ID,
139
		D.REQ_ID,
140
    D.ASS_STATUS,
141
    D.RE_CONTENT,
142
		D.NOTES,
143
		D.AUTH_STATUS
144
	FROM OPENXML(@hdocc,'/Root/ListCostCenter',2)
145
	WITH 
146
	(
147
		REQ_COST_ID	varchar(15),
148
		COST_ID	nvarchar(1000),
149
		REQ_ID	nvarchar(1000),
150
    ASS_STATUS NVARCHAR(100),
151
    RE_CONTENT NVARCHAR(100),
152
		NOTES nvarchar(500),
153
		AUTH_STATUS NVARCHAR(500)
154
	)D
155
	OPEN ConcenterDetaisls
156
	Declare @REQ_COST_ID VARCHAR(15), @COST_ID NVARCHAR(1000), @REQ_ID NVARCHAR(1000), @ASS_STATUS NVARCHAR(100), @RE_CONTENT NVARCHAR(100), @AUTH_STATUS NVARCHAR(500)
157
		
158
		DELETE FROM TR_REQUEST_SHOP_COSTCENTER WHERE REQ_ID =@p_LIQ_REQ_ID 
159

    
160
		FETCH NEXT FROM ConcenterDetaisls INTO @REQ_COST_ID, @COST_ID, @REQ_ID, @ASS_STATUS, @RE_CONTENT, @NOTES, @AUTH_STATUS
161
		WHILE @@FETCH_STATUS = 0	
162
		BEGIN
163
		  DECLARE @l_REQ_COST_ID VARCHAR(15)
164
			EXEC SYS_CodeMasters_Gen 'TR_REQUEST_SHOP_COSTCENTER', @l_REQ_COST_ID out
165
			IF @l_REQ_COST_ID='' OR @l_REQ_COST_ID IS NULL GOTO ABORT
166
      IF((EXISTS(SELECT * FROM dbo.FN_GET_USER_BY_ROLE('DVCM',@p_BRANCH_ID,@p_DEP_ID) US WHERE US.TLNANME = @p_USER_LOGIN)) AND @RE_CONTENT <> '')-- OR A.MAKER_ID = @p_USER_LOGIN)
167
      BEGIN
168
        ROLLBACK TRANSACTION
169
      	SELECT '-1' as Result, '' LIQ_REQ_ID, N'Nội dung đề xuất không được để trống! DS DVCM: '+ @RE_CONTENT ErrorDesc
170
      	RETURN '-1'
171
      END
172
      
173
			INSERT INTO TR_REQUEST_SHOP_COSTCENTER([REQ_COST_ID],[COST_ID],[ASS_STATUS],[RE_CONTENT],[REQ_ID],[NOTES],[AUTH_STATUS])		
174
			VALUES(@l_REQ_COST_ID ,@COST_ID, @ASS_STATUS, @RE_CONTENT, @p_LIQ_REQ_ID, @NOTES, @AUTH_STATUS)
175
				IF @@Error <> 0 GOTO ABORT
176
					FETCH NEXT FROM ConcenterDetaisls INTO @REQ_COST_ID, @COST_ID, @REQ_ID, @ASS_STATUS, @RE_CONTENT, @NOTES, @AUTH_STATUS
177

    
178
	  END
179
	CLOSE ConcenterDetaisls
180
	DEALLOCATE ConcenterDetaisls
181
	--end khanhnhd
182
		--INSERT DETAIL 
183
COMMIT TRANSACTION
184
SELECT '0' as Result, @p_LIQ_REQ_ID  LIQ_REQ_ID,  @l_REQ_COST_ID  REQ_COST_ID,'' ErrorDesc
185
RETURN '0'
186
ABORT:
187
BEGIN
188
		ROLLBACK TRANSACTION
189
		SELECT '-1' as Result, '' LIQ_REQ_ID, '' ErrorDesc
190
		RETURN '-1'
191
End