Project

General

Profile

TR_REQUEST_DOC_DVMS_Upd.txt

Sang Đặng Thái, 10/15/2020 01:19 PM

 
1
ALTER PROCEDURE [dbo].[TR_REQUEST_DOC_DVMS_Upd]
2
@p_REQ_ID varchar(15),
3
@p_REQ_CODE	nvarchar(100)  = NULL,
4
@p_REQ_NAME	nvarchar(200)  = NULL,
5
@p_REQ_DT	DATETIME = NULL,
6
@p_REQ_TYPE	int = NULL,
7
@p_REQ_CONTENT NVARCHAR(1000)=NULL,
8
@p_REQ_REASON NVARCHAR(500)=NULL,
9
@p_PL_REQ_ID VARCHAR(15),
10
@p_TOTAL_AMT	decimal(18, 2) = NULL,
11
@p_NOTES	nvarchar(1000)  = NULL,
12
@p_RECORD_STATUS	varchar(1)  = NULL,
13
@p_MAKER_ID	varchar(12)  = NULL,
14
@p_CREATE_DT	DATETIME = NULL,
15
@p_AUTH_STATUS	varchar(50)  = NULL,
16
@p_CHECKER_ID	varchar(12)  = NULL,
17
@p_APPROVE_DT	DATETIME = NULL,
18
@p_BRANCH_DO VARCHAR(15)=NULL,
19
@p_BRANCH_CREATE VARCHAR(15)=NULL,
20
@p_USER_REQUEST VARCHAR(15)=NULL,
21
@p_ListGood XML,
22
@p_ListCostCenter XML
23
AS
24
	--IF EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE [REQ_CODE] = @p_REQ_CODE AND REQ_ID <> @p_REQ_ID)
25
	--BEGIN
26
	--	SELECT ErrorCode Result, '' REQ_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = 'REQ-00001'
27
	--	RETURN '0'
28
	--END
29
	DECLARE @sErrorCode VARCHAR(20)
30
	
31
  BEGIN TRANSACTION
32

    
33
		UPDATE dbo.TR_REQUEST_DOC
34
		SET BRANCH_DO=@p_BRANCH_DO,USER_DVMS=@p_MAKER_ID
35
		WHERE REQ_ID=@p_REQ_ID
36
		IF @@Error <> 0 GOTO ABORT
37

    
38

    
39
		--DELETE FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID
40
		DELETE FROM dbo.TR_REQUEST_COSTCENTER WHERE REQ_ID=@p_REQ_ID
41
		--Insert into TABLE PL_REQUEST_DOC_DT
42
		Declare @hdoc INT
43
		Exec sp_xml_preparedocument @hdoc Output,@p_ListGood
44
		DECLARE ListGoods  CURSOR FOR
45
		SELECT *
46
		FROM OPENXML(@hDoc,'/Root/ListGood',2)
47
		WITH 
48
		(
49
			REQDT_ID 	varchar(15)  ,
50
			PL_REQDT_ID	varchar(15)  ,
51
			GOODS_ID	varchar(15)  ,
52
			[DESCRIPTION] nvarchar(500),
53
			QUANTITY	decimal(18, 0)  ,
54
			PRICE	decimal(18, 2)  ,
55
			TOTAL_AMT	decimal(18, 2),	
56
			NOTES	nvarchar(1000),
57
			REQ_DT DATETIME,
58
			AMORT_MONTH DECIMAL(18,2),
59
			TRADE_TYPE_ID varchar(15),
60
			SUP_ID varchar(15),
61
			BID_ID VARCHAR(20),
62
			SUP_NAME NVARCHAR(2000),
63
			OFFERING_VALUE decimal(18, 2),
64
			NOTE_DVMS NVARCHAR(500),
65
			PO_ID VARCHAR(15),
66
			PO_AMT DECIMAL(18,2),
67
			TOTAL_AMT_ETM DECIMAL(18,2)
68
		)
69
		OPEN ListGoods
70

    
71
		Declare 
72
		@REQDT_ID 	varchar(15)  ,
73
		@PL_REQDT_ID	varchar(15),
74
		@SUP_ID	varchar(15),
75
		@GOODS_ID	varchar(15),
76
		@DESCRIPTION nvarchar(500),
77
		@QUANTITY	decimal(18, 0),
78
		@PRICE	decimal(18, 2),
79
		@TOTAL_AMT	decimal(18, 2),		
80
		@NOTES	nvarchar(1000),
81
		@TRADE_TYPE_ID varchar(15),
82
		@AMORT_MONTH DECIMAL(18,2),
83
		@RED_DT DATETIME,
84
		@BID_ID VARCHAR(20),
85
		@SUP_NAME NVARCHAR(2000),
86
		@l_SUP_ID VARCHAR(15),
87
		@OFFERING_VALUE DECIMAL(18,2),
88
		@NOTE_DVMS NVARCHAR(500),
89
		@PO_ID VARCHAR(15),
90
		@PO_AMT DECIMAL(18,2),
91
		@TOTAL_AMT_ETM DECIMAL(18,2)
92
		
93

    
94
		FETCH NEXT FROM ListGoods INTO @REQDT_ID, @PL_REQDT_ID,@GOODS_ID,@DESCRIPTION,@QUANTITY,@PRICE,@TOTAL_AMT,
95
		@NOTES,@RED_DT,@AMORT_MONTH, @TRADE_TYPE_ID, @SUP_ID,@BID_ID,@SUP_NAME,@OFFERING_VALUE,@NOTE_DVMS,@PO_ID,@PO_AMT,@TOTAL_AMT_ETM
96
		WHILE @@FETCH_STATUS = 0	
97
		BEGIN
98
			--LUCTV 21052020 KIEM TRA NEU CHUA TON TAI NHA CUNG CAP THI THEM MOI NHA CUNG CAP
99
			IF((@SUP_NAME IS NOT NULL AND @SUP_NAME <> '') AND NOT EXISTS(SELECT * FROM CM_SUPPLIER WHERE SUP_NAME =@SUP_NAME AND SUP_NAME IS NOT NULL AND SUP_NAME <>''))
100
			BEGIN
101
			EXEC SYS_CodeMasters_Gen 'CM_SUPPLIER', @l_SUP_ID out
102
				IF @l_SUP_ID='' OR @l_SUP_ID IS NULL GOTO ABORT
103
				INSERT INTO CM_SUPPLIER([DISCIPLINES],[SUP_ID],[SUP_CODE],[SUP_NAME],[SUP_TYPE_ID],[REGION_ID],[ADDR],[EMAIL],[TAX_NO],[TEL],[CONTACT_PERSON],[NOTES],[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT],ACC_NUM)
104
				VALUES('', @l_SUP_ID ,@l_SUP_ID ,@SUP_NAME ,NULL ,NULL ,'' ,'' ,'' ,'' ,'' ,'' ,'1' ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,'U' ,NULL,NULL,NULL)
105
			END
106
			----
107
			--IF(@SUP_ID IS NULL OR @SUP_ID='')
108
			IF(EXISTS(SELECT * FROM CM_SUPPLIER WHERE SUP_NAME =@SUP_NAME AND SUP_NAME IS NOT NULL AND SUP_NAME <>''))
109
				SET @SUP_ID =(SELECT TOP 1 SUP_ID FROM dbo.CM_SUPPLIER WHERE SUP_NAME=@SUP_NAME)
110

    
111
			IF(EXISTS(SELECT * FROM CM_SUPPLIER WHERE SUP_NAME =@SUP_NAME AND SUP_NAME IS NOT NULL AND SUP_NAME <>'' AND SUP_ID =@SUP_ID))
112
				SET @SUP_ID =(SELECT TOP 1 SUP_ID FROM dbo.CM_SUPPLIER WHERE SUP_ID=@SUP_ID AND SUP_NAME = @SUP_NAME)
113

    
114

    
115
			IF(@SUP_NAME IS NULL OR @SUP_NAME = '')
116
				SET @SUP_ID = NULL
117

    
118
			UPDATE dbo.TR_REQUEST_DOC_DT SET PRICE=@PRICE,TOTAL_AMT=((QUANTITY * @PRICE + TAXES) * EXCHANGE_RATE),TRAN_TYPE_ID=@TRADE_TYPE_ID,SUP_ID=@SUP_ID,BID_ID=@BID_ID,OFFERING_VALUE =@OFFERING_VALUE,
119
			NOTE_DVMS =@NOTE_DVMS,PO_ID = @PO_ID,PO_AMT = @PO_AMT, TOTAL_AMT_ETM = @TOTAL_AMT_ETM, DESCRIPTION = @DESCRIPTION
120
			WHERE REQDT_ID=@REQDT_ID
121
			UPDATE dbo.BID_MASTER SET REQUEST_ID=@p_REQ_ID WHERE BID_ID=@BID_ID
122
			
123
			IF @@ERROR <> 0 GOTO ABORT1
124
		-- next Group_Id
125
			FETCH NEXT FROM ListGoods INTO @REQDT_ID, @PL_REQDT_ID,@GOODS_ID,@DESCRIPTION,@QUANTITY,@PRICE,@TOTAL_AMT,
126
		@NOTES,@RED_DT,@AMORT_MONTH, @TRADE_TYPE_ID, @SUP_ID,@BID_ID,@SUP_NAME,@OFFERING_VALUE,@NOTE_DVMS,@PO_ID,@PO_AMT,@TOTAL_AMT_ETM
127
		END
128
		CLOSE ListGoods
129
		DEALLOCATE ListGoods
130
		IF @@Error <> 0 GOTO ABORT
131

    
132
		UPDATE dbo.TR_REQUEST_DOC SET TOTAL_AMT=(SELECT SUM(TOTAL_AMT) FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID) WHERE REQ_ID=@p_REQ_ID 
133

    
134
		--Insert into TABLE PL_REQUEST_DOC_DT
135
		Exec sp_xml_preparedocument @hdoc Output,@p_ListCostCenter
136
		DECLARE ListCostCenters  CURSOR FOR
137
		SELECT *
138
		FROM OPENXML(@hDoc,'/Root/ListCostCenter',2)
139
		WITH 
140
		(
141
			COST_ID	varchar(15),	
142
			NOTES	nvarchar(1000),
143
			AUTH_STATUS varchar(15),
144
			MAKER_ID varchar(15),
145
			CREATE_DT DATETIME,
146
			CHECKER_ID varchar(15),
147
			APPROVE_DT DATETIME
148
		)
149

    
150
		OPEN ListCostCenters
151
		Declare 
152
		@COST_ID	varchar(15),
153
		@AUTH_STATUS varchar(15),
154
		@MAKER_ID varchar(15),
155
		@CREATE_DT DATETIME,
156
		@CHECKER_ID varchar(15),
157
		@APPROVE_DT DATETIME
158

    
159
		FETCH NEXT FROM ListCostCenters INTO @COST_ID, @NOTES,@AUTH_STATUS,@MAKER_ID,@CREATE_DT,@CHECKER_ID,@APPROVE_DT
160
		WHILE @@FETCH_STATUS = 0	
161
		BEGIN
162
			
163
			DECLARE @l_REQ_COST_ID VARCHAR(15)
164
			EXEC SYS_CodeMasters_Gen 'TR_REQUEST_COSTCENTER', @l_REQ_COST_ID out
165
			IF @l_REQ_COST_ID='' OR @l_REQ_COST_ID IS NULL GOTO ABORT
166
	
167
			INSERT INTO dbo.TR_REQUEST_COSTCENTER
168
			(
169
			    REQ_COST_ID,
170
			    COST_ID,
171
			    REQ_ID,
172
			    NOTES,
173
			    AUTH_STATUS,
174
			    MAKER_ID,
175
			    CREATE_DT,
176
			    CHECKER_ID,
177
			    APPROVE_DT
178
			)
179
			VALUES
180
			(   @l_REQ_COST_ID,        -- REQ_COST_ID - varchar(15)
181
			    @COST_ID,        -- COST_ID - varchar(15)
182
			    @p_REQ_ID,        -- REQ_ID - varchar(15)
183
			    @NOTES,       -- NOTES - nvarchar(500)
184
			    @AUTH_STATUS,        -- AUTH_STATUS - varchar(1)
185
			    @MAKER_ID,        -- MAKER_ID - varchar(15)
186
			    @CREATE_DT, -- CREATE_DT - datetime
187
			    @CHECKER_ID,        -- CHECKER_ID - varchar(15)
188
			   @APPROVE_DT -- APPROVE_DT - datetime
189
			 )
190
			
191
			IF @@ERROR <> 0 GOTO ABORT1
192
		-- next Group_Id
193
			FETCH NEXT FROM ListCostCenters INTO @COST_ID, @NOTES,@AUTH_STATUS,@MAKER_ID,@CREATE_DT,@CHECKER_ID,@APPROVE_DT
194
		END
195
		CLOSE ListCostCenters
196
		DEALLOCATE ListCostCenters
197

    
198
		UPDATE dbo.TR_REQUEST_DOC SET TOTAL_AMT= (SELECT SUM(TOTAL_AMT) FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID) WHERE REQ_ID=@p_REQ_ID
199

    
200
		
201

    
202
		
203
COMMIT TRANSACTION
204
SELECT '0' as Result, @p_REQ_ID  REQ_ID, '' ErrorDesc
205
RETURN '0'
206
ABORT:
207
BEGIN
208
		ROLLBACK TRANSACTION
209
		SELECT '-1' AS RESULT
210
		RETURN '-1'
211
End
212
ABORT1:
213
BEGIN
214
		CLOSE ListGoods
215
		DEALLOCATE ListGoods
216
		CLOSE ListCostCenters
217
		DEALLOCATE ListCostCenters
218
		ROLLBACK TRANSACTION
219
		SELECT '-1' AS RESULT
220
		RETURN '-1'
221
End
222