Project

General

Profile

TR_REQ_DOC_INS_TO_PO.txt

Luc Tran Van, 01/13/2023 01:53 PM

 
1

    
2
ALTER   PROCEDURE [dbo].[TR_REQ_DOC_Ins_To_PO] @p_TR_REQ_ID VARCHAR(15)
3
AS
4
BEGIN TRANSACTION;
5
	DECLARE @l_SUP_ID VARCHAR(15)
6
	DECLARE @p_PO_CODE VARCHAR(15),
7
        @p_BRANCH_ID VARCHAR(20),
8
		@p_SUP_ID VARCHAR(20),
9
		@p_TOTAL_AMT DECIMAL(18,2),
10
		@p_MAKER_ID VARCHAR(20),
11
		@p_TR_REQ_CODE VARCHAR(20),
12
		@p_SUP_NAME NVARCHAR(200),
13
		@p_SUP_ADDR NVARCHAR(200),
14
		@p_BRANCH_RE VARCHAR(20),
15
        @p_PO_NAME NVARCHAR(100);
16
--- LAY DANH SACH NHA CUNG CAP CUA HANG HOA TRONG PYCMS - LUCTV 25052020
17
	DECLARE @TABLE_NCC TABLE (SUP_ID VARCHAR(15))
18
	INSERT INTO @TABLE_NCC SELECT SUP_ID FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID =@p_TR_REQ_ID GROUP BY SUP_ID
19

    
20
	DECLARE lstDATANCC CURSOR FOR SELECT SUP_ID FROM @TABLE_NCC
21
	OPEN lstDATANCC
22
	FETCH NEXT FROM lstDATANCC INTO @l_SUP_ID
23
	WHILE @@FETCH_STATUS=0
24
	BEGIN
25
	--SET @l_SUP_ID =(SELECT TOP 1 SUP_ID FROM @TABLE_NCC)
26
	--insert master		
27
	DECLARE @l_PO_ID VARCHAR(15);
28
	EXEC SYS_CodeMasters_Gen 'TR_PO_MASTER', @l_PO_ID OUT;
29
	IF @l_PO_ID = '' OR @l_PO_ID IS NULL
30
	GOTO ABORT;
31
	SELECT @p_BRANCH_ID=BRANCH_DVMS,@p_BRANCH_RE=BRANCH_CREATE,@p_TR_REQ_CODE=REQ_CODE,@p_PO_NAME=REQ_REASON,@p_MAKER_ID=USER_DVMS FROM dbo.TR_REQUEST_DOC WHERE REQ_ID=@p_TR_REQ_ID
32

    
33
	--SELECT TOP 1 @p_SUP_ID = SUP_ID FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_TR_REQ_ID
34
	SET @p_SUP_ID =@l_SUP_ID
35
	SET @p_TOTAL_AMT= (SELECT SUM(TOTAL_AMT) FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_TR_REQ_ID AND  ISNULL(SUP_ID,'') =ISNULL(@p_SUP_ID,''))
36
	-- LUCTV 06042021 NEU TRONG TRUONG HOP BRANCH DVMS VA NHAN VIEN MUA SAM KO KHOP, THI LAY THEO NV MS
37
	IF(NOT EXISTS(SELECT * FROM TL_USER WHERE TLSUBBRID =@p_BRANCH_ID AND TLNANME =@p_MAKER_ID))
38
	BEGIN
39
		SET @p_BRANCH_ID =(SELECT TOP 1 TLSUBBRID FROM TL_USER WHERE TLNANME =@p_MAKER_ID)
40
	END
41
	--TU PHAT SINH SO PO
42
	DECLARE @ldate INT = (SELECT YEAR(GETDATE()) );
43
	EXEC [dbo].[TR_PO_MASTER_NO_Gen] @p_BRANCH_ID, @ldate, @p_PO_CODE OUT;
44
	IF @p_PO_CODE = ''
45
	   OR @p_PO_CODE IS NULL
46
		GOTO ABORT;
47

    
48
	INSERT INTO TR_PO_MASTER
49
	(
50
		[PO_TYPE],
51
		[PO_ID],
52
		[PO_CODE],
53
		[PO_NAME],
54
		[CONTRACT_ID],
55
		[SUP_ID],
56
		[SUP_NAME],
57
		[SUP_ADDR],
58
		[INPUT_DT],
59
		[PAYMENT_DT],
60
		[TOTAL_AMT],
61
		[REQ_DOC_ID],
62
		[DELIVERY_DT],
63
		[PAYAPP_DT],
64
		[NOTES],
65
		[RECORD_STATUS],
66
		[MAKER_ID],
67
		[CREATE_DT],
68
		[AUTH_STATUS],
69
		[CHECKER_ID],
70
		[APPROVE_DT],
71
		BRANCH_ID
72
	)
73
	VALUES
74
	(1, @l_PO_ID, @p_PO_CODE, @p_PO_NAME, '', @p_SUP_ID, @p_SUP_NAME, @p_SUP_ADDR, GETDATE(),
75
	 NULL, @p_TOTAL_AMT, @p_TR_REQ_ID, NULL,
76
	 NULL, '', '1', @p_MAKER_ID, GETDATE(),
77
	 'E', NULL, NULL, @p_BRANCH_ID);
78
	IF @@Error <> 0
79
		GOTO ABORT;
80
	PRINT 'INSERT MASTER SUCCESS';
81
	INSERT INTO dbo.TR_PO_MASTER_TEMP
82
	(
83
		PO_ID,
84
		TR_REQ_ID,
85
		TR_REQ_CODE
86
	)
87
	VALUES
88
	(   @l_PO_ID,      -- PO_ID - varchar(15)
89
		@p_TR_REQ_ID,  -- TR_REQ_ID - varchar(20)
90
		@p_TR_REQ_CODE -- TR_REQ_CODE - varchar(20)
91
	 );
92
	 DECLARE @HANGHOA_ID VARCHAR(20),@QUANTITY DECIMAL(18,0),@PRICE DECIMAL(18,2),@TOTAL_AMT DECIMAL(18,2),@HH_TYPE VARCHAR(20),@HH_NAME NVARCHAR(100),
93
	 @CURRENCY VARCHAR(15),@RATE INT ,@TOTAL_AMT_FN DECIMAL(18,2), @HH_DESC NVARCHAR(500)
94
	 DECLARE lstData CURSOR FOR
95
		SELECT HANGHOA_ID,QUANTITY,PRICE,TOTAL_AMT,CURRENCY,EXCHANGE_RATE,TOTAL_AMT_ETM,[DESCRIPTION] 
96
			FROM dbo.TR_REQUEST_DOC_DT 
97
		WHERE REQ_DOC_ID=@p_TR_REQ_ID AND ISNULL(SUP_ID,'') =ISNULL(@p_SUP_ID,'')
98
		ORDER BY REQDT_ID ASC
99
		
100
	OPEN lstData
101
	FETCH NEXT FROM lstData INTO @HANGHOA_ID,@QUANTITY,@PRICE,@TOTAL_AMT,@CURRENCY,@RATE ,@TOTAL_AMT_FN ,@HH_DESC
102
	WHILE @@FETCH_STATUS = 0
103
	BEGIN
104
	SELECT @HH_NAME= HH_NAME,@HH_TYPE=HH_TYPE_ID FROM dbo.CM_HANGHOA WHERE HH_ID=@HANGHOA_ID
105
	DECLARE @l_PD_ID VARCHAR(15)
106
			EXEC SYS_CodeMasters_Gen 'TR_PO_DETAIL', @l_PD_ID out
107
			IF @l_PD_ID='' OR @l_PD_ID IS NULL GOTO ABORT		
108

    
109
	 INSERT INTO dbo.TR_PO_DETAIL
110
	 (
111
		 PD_ID,
112
		 PO_ID,
113
		 PLAN_ID,
114
		 TRADE_ID,
115
		 GOODS_ID,
116
		 DESCRIPTION,
117
		 UNIT_ID,
118
		 QUANTITY,
119
		 PRICE,
120
		 TOTAL_AMT,
121
		 IS_DELIVERY,
122
		 DELIVERY_DT,
123
		 PAYMENT_STATUS,
124
		 AMOUNT_PAID,
125
		 PAID_DT,
126
		 INVOICENO,
127
		 NOTES,
128
		 RECEIVE_BRANCH,
129
		 RECEIVE_ADDR,
130
		 RECEIVE_PERSON,
131
		 RECEIVE_TEL,
132
		 RECORD_STATUS,
133
		 MAKER_ID,
134
		 CREATE_DT,
135
		 AUTH_STATUS,
136
		 CHECKER_ID,
137
		 APPROVE_DT,
138
		 EXP_DELIVERY_DT,
139
		 GOODS_NAME,
140
		 INVOICE_DT,
141
		 GOODSTYPE_REAL,
142
		 VAT,
143
		 PRICE_VAT,
144
		 CONTRACT_DT,CURRENCY,RATE,TOTAL_AMT_FN
145
	 )
146
	 VALUES
147
	 (   @l_PD_ID,        -- PD_ID - varchar(15)
148
		 @l_PO_ID,        -- PO_ID - varchar(15)
149
		 '',        -- PLAN_ID - varchar(15)
150
		 '',        -- TRADE_ID - varchar(15)
151
		 @HANGHOA_ID,        -- GOODS_ID - varchar(15)
152
		 @HH_DESC,       -- DESCRIPTION - nvarchar(500)
153
		 '',        -- UNIT_ID - varchar(15)
154
		 @QUANTITY,      -- QUANTITY - decimal(18, 0)
155
		 @PRICE,      -- PRICE - decimal(18, 0)
156
		 @QUANTITY*@PRICE,      -- TOTAL_AMT - decimal(18, 0)6
157
		 '',        -- IS_DELIVERY - varchar(1)
158
		 NULL, -- DELIVERY_DT - datetime
159
		 'CTT',        -- PAYMENT_STATUS - varchar(4)
160
		 NULL,      -- AMOUNT_PAID - decimal(18, 0)
161
		 NULL, -- PAID_DT - datetime
162
		 '',        -- INVOICENO - varchar(1000)
163
		 @HH_DESC,       -- NOTES - nvarchar(1000)
164
		 @p_BRANCH_RE,        -- RECEIVE_BRANCH - varchar(15)
165
		 N'',       -- RECEIVE_ADDR - nvarchar(1000)
166
		 N'',       -- RECEIVE_PERSON - nvarchar(500)
167
		 '',        -- RECEIVE_TEL - varchar(100)
168
		 '',        -- RECORD_STATUS - varchar(1)
169
		 @p_MAKER_ID,        -- MAKER_ID - varchar(15)
170
		 GETDATE(), -- CREATE_DT - datetime
171
		 '',        -- AUTH_STATUS - varchar(50)
172
		 '',        -- CHECKER_ID - varchar(15)
173
		 NULL, -- APPROVE_DT - datetime
174
		 NULL, -- EXP_DELIVERY_DT - datetime
175
		 @HH_NAME,       -- GOODS_NAME - nvarchar(500)
176
		 NULL, -- INVOICE_DT - datetime
177
		 @HH_TYPE,        -- GOODSTYPE_REAL - varchar(15)
178
		 0,      -- VAT - decimal(18, 2)
179
		--@TOTAL_AMT -   (ROUND(@PRICE/1.1,0) *@QUANTITY),      -- PRICE_VAT - decimal(18, 0)
180
		 --@PRICE -ROUND(@PRICE/1.1,0),
181
		 0.0,
182
		 '' ,@CURRENCY,@RATE,@TOTAL_AMT_FN       -- CONTRACT_DT - varchar(15)
183
		 )
184
 
185
	   FETCH NEXT FROM lstData INTO @HANGHOA_ID,@QUANTITY,@PRICE,@TOTAL_AMT,@CURRENCY,@RATE ,@TOTAL_AMT_FN,@HH_DESC
186
	END
187
	 CLOSE lstData;
188
    DEALLOCATE lstData;
189

    
190
	SET @TOTAL_AMT=(SELECT SUM(TOTAL_AMT) AS TOTAL_AMT FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_TR_REQ_ID AND ISNULL(SUP_ID,'') =ISNULL(@p_SUP_ID,''))
191

    
192
	DECLARE @l_PAY_ID VARCHAR(15)
193
	EXEC SYS_CodeMasters_Gen 'TR_PO_PAYMENT', @l_PAY_ID out
194
	IF @l_PAY_ID='' OR @l_PAY_ID IS NULL GOTO ABORT
195
	INSERT INTO dbo.TR_PO_PAYMENT
196
	(
197
	    PAY_ID,
198
	    PO_ID,
199
	    PAY_PHASE,
200
	    EXP_DT,
201
	    [PERCENT],
202
	    AMOUNT,
203
	    NOTES,
204
	    RECORD_STATUS,
205
	    MAKER_ID,
206
	    CREATE_DT,
207
	    AUTH_STATUS,
208
	    CHECKER_ID,
209
	    APPROVE_DT,CURRENCY,RATE,TOTAL_AMT
210
	)
211
	VALUES
212
	(   @l_PAY_ID,        -- PAY_ID - varchar(15)
213
	    @l_PO_ID,        -- PO_ID - varchar(15)
214
	    '1',        -- PAY_PHASE - varchar(20)
215
	    GETDATE(), -- EXP_DT - datetime
216
	    100,      -- PERCENT - decimal(18, 0)
217
	    @TOTAL_AMT ,      -- AMOUNT - decimal(18, 0)
218
	    N'',       -- NOTES - nvarchar(1000)
219
	    '1',        -- RECORD_STATUS - varchar(1)
220
	    @p_MAKER_ID,        -- MAKER_ID - varchar(15)
221
	    GETDATE(), -- CREATE_DT - datetime
222
	    'U',        -- AUTH_STATUS - varchar(50)
223
	    '',        -- CHECKER_ID - varchar(15)
224
	    NULL,@CURRENCY,@RATE, @TOTAL_AMT*@RATE  -- APPROVE_DT - datetime
225
	    )
226
		EXEC SYS_CodeMasters_Gen 'TR_PO_PAYMENT', @l_PAY_ID out
227
	IF @l_PAY_ID='' OR @l_PAY_ID IS NULL GOTO ABORT
228
	--INSERT INTO dbo.TR_PO_PAYMENT
229
	--(
230
	--    PAY_ID,
231
	--    PO_ID,
232
	--    PAY_PHASE,
233
	--    EXP_DT,
234
	--    [PERCENT],
235
	--    AMOUNT,
236
	--    NOTES,
237
	--    RECORD_STATUS,
238
	--    MAKER_ID,
239
	--    CREATE_DT,
240
	--    AUTH_STATUS,
241
	--    CHECKER_ID,
242
	--    APPROVE_DT
243
	--)
244
	--VALUES
245
	--(   @l_PAY_ID,        -- PAY_ID - varchar(15)
246
	--    @l_PO_ID,        -- PO_ID - varchar(15)
247
	--    '2',        -- PAY_PHASE - varchar(20)
248
	--    GETDATE(), -- EXP_DT - datetime
249
	--    50,      -- PERCENT - decimal(18, 0)
250
	--    @TOTAL_AMT / 2 ,      -- AMOUNT - decimal(18, 0)
251
	--    N'',       -- NOTES - nvarchar(1000)
252
	--    '1',        -- RECORD_STATUS - varchar(1)
253
	--    @p_MAKER_ID,        -- MAKER_ID - varchar(15)
254
	--    GETDATE(), -- CREATE_DT - datetime
255
	--    'E',        -- AUTH_STATUS - varchar(50)
256
	--    '',        -- CHECKER_ID - varchar(15)
257
	--    NULL  -- APPROVE_DT - datetime
258
	--    )
259
	IF((SELECT BRANCH_ID FROM TR_PO_MASTER WHERE PO_ID=@l_PO_ID)='DV0001')
260
	BEGIN
261
		IF(@TOTAL_AMT <=5000000)
262
		BEGIN
263
			UPDATE dbo.TR_PO_MASTER SET AUTH_STATUS='A' WHERE PO_ID=@l_PO_ID
264
		END
265
	END
266
	ELSE -- LUCTV: 11 12 2020 KIEM TRA HAN MUC DUOI 20 TRIEU THI DUYET PO
267
	BEGIN
268
		IF(@TOTAL_AMT <=20000000)
269
		BEGIN
270
			UPDATE dbo.TR_PO_MASTER SET AUTH_STATUS='A' WHERE PO_ID=@l_PO_ID
271
		END
272
	END
273
	--XOA DI NHA CUNG CAP
274
	--DELETE FROM @TABLE_NCC WHERE SUP_ID =@l_SUP_ID
275
	--- KET THUC VONG LAP KIEM TRA DANH SACH NHA CUNG CAP PYCMS
276
FETCH NEXT FROM lstDATANCC INTO @l_SUP_ID
277
	END
278
	CLOSE lstDATANCC
279
	DEALLOCATE lstDATANCC
280
	COMMIT TRANSACTION;
281
	RETURN 1;
282
	ABORT:
283
	BEGIN
284
		ROLLBACK TRANSACTION;
285
		RETURN 1;
286
	END;
287
	ABORT1:
288
	BEGIN
289
		CLOSE lstData;
290
		DEALLOCATE lstData;
291
		ROLLBACK TRANSACTION;
292
		RETURN 1;
293
	END;