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
|
--TU PHAT SINH SO PO
|
37
|
DECLARE @ldate INT = (SELECT YEAR(GETDATE()) );
|
38
|
EXEC [dbo].[TR_PO_MASTER_NO_Gen] @p_BRANCH_ID, @ldate, @p_PO_CODE OUT;
|
39
|
IF @p_PO_CODE = ''
|
40
|
OR @p_PO_CODE IS NULL
|
41
|
GOTO ABORT;
|
42
|
|
43
|
INSERT INTO TR_PO_MASTER
|
44
|
(
|
45
|
[PO_TYPE],
|
46
|
[PO_ID],
|
47
|
[PO_CODE],
|
48
|
[PO_NAME],
|
49
|
[CONTRACT_ID],
|
50
|
[SUP_ID],
|
51
|
[SUP_NAME],
|
52
|
[SUP_ADDR],
|
53
|
[INPUT_DT],
|
54
|
[PAYMENT_DT],
|
55
|
[TOTAL_AMT],
|
56
|
[REQ_DOC_ID],
|
57
|
[DELIVERY_DT],
|
58
|
[PAYAPP_DT],
|
59
|
[NOTES],
|
60
|
[RECORD_STATUS],
|
61
|
[MAKER_ID],
|
62
|
[CREATE_DT],
|
63
|
[AUTH_STATUS],
|
64
|
[CHECKER_ID],
|
65
|
[APPROVE_DT],
|
66
|
BRANCH_ID
|
67
|
)
|
68
|
VALUES
|
69
|
(1, @l_PO_ID, @p_PO_CODE, @p_PO_NAME, '', @p_SUP_ID, @p_SUP_NAME, @p_SUP_ADDR, GETDATE(),
|
70
|
NULL, @p_TOTAL_AMT, @p_TR_REQ_ID, NULL,
|
71
|
NULL, '', '1', @p_MAKER_ID, GETDATE(),
|
72
|
'E', NULL, NULL, @p_BRANCH_ID);
|
73
|
IF @@Error <> 0
|
74
|
GOTO ABORT;
|
75
|
PRINT 'INSERT MASTER SUCCESS';
|
76
|
INSERT INTO dbo.TR_PO_MASTER_TEMP
|
77
|
(
|
78
|
PO_ID,
|
79
|
TR_REQ_ID,
|
80
|
TR_REQ_CODE
|
81
|
)
|
82
|
VALUES
|
83
|
( @l_PO_ID, -- PO_ID - varchar(15)
|
84
|
@p_TR_REQ_ID, -- TR_REQ_ID - varchar(20)
|
85
|
@p_TR_REQ_CODE -- TR_REQ_CODE - varchar(20)
|
86
|
);
|
87
|
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),
|
88
|
@CURRENCY VARCHAR(15),@RATE INT ,@TOTAL_AMT_FN DECIMAL(18,2), @HH_DESC NVARCHAR(500)
|
89
|
DECLARE lstData CURSOR FOR
|
90
|
SELECT HANGHOA_ID,QUANTITY,PRICE,TOTAL_AMT,CURRENCY,EXCHANGE_RATE,TOTAL_AMT_ETM,[DESCRIPTION] FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_TR_REQ_ID AND ISNULL(SUP_ID,'') =ISNULL(@p_SUP_ID,'')
|
91
|
|
92
|
OPEN lstData
|
93
|
FETCH NEXT FROM lstData INTO @HANGHOA_ID,@QUANTITY,@PRICE,@TOTAL_AMT,@CURRENCY,@RATE ,@TOTAL_AMT_FN ,@HH_DESC
|
94
|
WHILE @@FETCH_STATUS = 0
|
95
|
BEGIN
|
96
|
SELECT @HH_NAME= HH_NAME,@HH_TYPE=HH_TYPE_ID FROM dbo.CM_HANGHOA WHERE HH_ID=@HANGHOA_ID
|
97
|
DECLARE @l_PD_ID VARCHAR(15)
|
98
|
EXEC SYS_CodeMasters_Gen 'TR_PO_DETAIL', @l_PD_ID out
|
99
|
IF @l_PD_ID='' OR @l_PD_ID IS NULL GOTO ABORT
|
100
|
|
101
|
INSERT INTO dbo.TR_PO_DETAIL
|
102
|
(
|
103
|
PD_ID,
|
104
|
PO_ID,
|
105
|
PLAN_ID,
|
106
|
TRADE_ID,
|
107
|
GOODS_ID,
|
108
|
DESCRIPTION,
|
109
|
UNIT_ID,
|
110
|
QUANTITY,
|
111
|
PRICE,
|
112
|
TOTAL_AMT,
|
113
|
IS_DELIVERY,
|
114
|
DELIVERY_DT,
|
115
|
PAYMENT_STATUS,
|
116
|
AMOUNT_PAID,
|
117
|
PAID_DT,
|
118
|
INVOICENO,
|
119
|
NOTES,
|
120
|
RECEIVE_BRANCH,
|
121
|
RECEIVE_ADDR,
|
122
|
RECEIVE_PERSON,
|
123
|
RECEIVE_TEL,
|
124
|
RECORD_STATUS,
|
125
|
MAKER_ID,
|
126
|
CREATE_DT,
|
127
|
AUTH_STATUS,
|
128
|
CHECKER_ID,
|
129
|
APPROVE_DT,
|
130
|
EXP_DELIVERY_DT,
|
131
|
GOODS_NAME,
|
132
|
INVOICE_DT,
|
133
|
GOODSTYPE_REAL,
|
134
|
VAT,
|
135
|
PRICE_VAT,
|
136
|
CONTRACT_DT,CURRENCY,RATE,TOTAL_AMT_FN
|
137
|
)
|
138
|
VALUES
|
139
|
( @l_PD_ID, -- PD_ID - varchar(15)
|
140
|
@l_PO_ID, -- PO_ID - varchar(15)
|
141
|
'', -- PLAN_ID - varchar(15)
|
142
|
'', -- TRADE_ID - varchar(15)
|
143
|
@HANGHOA_ID, -- GOODS_ID - varchar(15)
|
144
|
@HH_DESC, -- DESCRIPTION - nvarchar(500)
|
145
|
'', -- UNIT_ID - varchar(15)
|
146
|
@QUANTITY, -- QUANTITY - decimal(18, 0)
|
147
|
@PRICE, -- PRICE - decimal(18, 0)
|
148
|
@QUANTITY*@PRICE, -- TOTAL_AMT - decimal(18, 0)6
|
149
|
'', -- IS_DELIVERY - varchar(1)
|
150
|
NULL, -- DELIVERY_DT - datetime
|
151
|
'CTT', -- PAYMENT_STATUS - varchar(4)
|
152
|
NULL, -- AMOUNT_PAID - decimal(18, 0)
|
153
|
NULL, -- PAID_DT - datetime
|
154
|
'', -- INVOICENO - varchar(1000)
|
155
|
@HH_DESC, -- NOTES - nvarchar(1000)
|
156
|
@p_BRANCH_RE, -- RECEIVE_BRANCH - varchar(15)
|
157
|
N'', -- RECEIVE_ADDR - nvarchar(1000)
|
158
|
N'', -- RECEIVE_PERSON - nvarchar(500)
|
159
|
'', -- RECEIVE_TEL - varchar(100)
|
160
|
'', -- RECORD_STATUS - varchar(1)
|
161
|
@p_MAKER_ID, -- MAKER_ID - varchar(15)
|
162
|
GETDATE(), -- CREATE_DT - datetime
|
163
|
'', -- AUTH_STATUS - varchar(50)
|
164
|
'', -- CHECKER_ID - varchar(15)
|
165
|
NULL, -- APPROVE_DT - datetime
|
166
|
NULL, -- EXP_DELIVERY_DT - datetime
|
167
|
@HH_NAME, -- GOODS_NAME - nvarchar(500)
|
168
|
NULL, -- INVOICE_DT - datetime
|
169
|
@HH_TYPE, -- GOODSTYPE_REAL - varchar(15)
|
170
|
0, -- VAT - decimal(18, 2)
|
171
|
--@TOTAL_AMT - (ROUND(@PRICE/1.1,0) *@QUANTITY), -- PRICE_VAT - decimal(18, 0)
|
172
|
--@PRICE -ROUND(@PRICE/1.1,0),
|
173
|
0.0,
|
174
|
'' ,@CURRENCY,@RATE,@TOTAL_AMT_FN -- CONTRACT_DT - varchar(15)
|
175
|
)
|
176
|
|
177
|
FETCH NEXT FROM lstData INTO @HANGHOA_ID,@QUANTITY,@PRICE,@TOTAL_AMT,@CURRENCY,@RATE ,@TOTAL_AMT_FN,@HH_DESC
|
178
|
END
|
179
|
CLOSE lstData;
|
180
|
DEALLOCATE lstData;
|
181
|
|
182
|
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,''))
|
183
|
|
184
|
DECLARE @l_PAY_ID VARCHAR(15)
|
185
|
EXEC SYS_CodeMasters_Gen 'TR_PO_PAYMENT', @l_PAY_ID out
|
186
|
IF @l_PAY_ID='' OR @l_PAY_ID IS NULL GOTO ABORT
|
187
|
INSERT INTO dbo.TR_PO_PAYMENT
|
188
|
(
|
189
|
PAY_ID,
|
190
|
PO_ID,
|
191
|
PAY_PHASE,
|
192
|
EXP_DT,
|
193
|
[PERCENT],
|
194
|
AMOUNT,
|
195
|
NOTES,
|
196
|
RECORD_STATUS,
|
197
|
MAKER_ID,
|
198
|
CREATE_DT,
|
199
|
AUTH_STATUS,
|
200
|
CHECKER_ID,
|
201
|
APPROVE_DT,CURRENCY,RATE,TOTAL_AMT
|
202
|
)
|
203
|
VALUES
|
204
|
( @l_PAY_ID, -- PAY_ID - varchar(15)
|
205
|
@l_PO_ID, -- PO_ID - varchar(15)
|
206
|
'1', -- PAY_PHASE - varchar(20)
|
207
|
GETDATE(), -- EXP_DT - datetime
|
208
|
100, -- PERCENT - decimal(18, 0)
|
209
|
@TOTAL_AMT , -- AMOUNT - decimal(18, 0)
|
210
|
N'', -- NOTES - nvarchar(1000)
|
211
|
'1', -- RECORD_STATUS - varchar(1)
|
212
|
@p_MAKER_ID, -- MAKER_ID - varchar(15)
|
213
|
GETDATE(), -- CREATE_DT - datetime
|
214
|
'U', -- AUTH_STATUS - varchar(50)
|
215
|
'', -- CHECKER_ID - varchar(15)
|
216
|
NULL,@CURRENCY,@RATE, @TOTAL_AMT*@RATE -- APPROVE_DT - datetime
|
217
|
)
|
218
|
EXEC SYS_CodeMasters_Gen 'TR_PO_PAYMENT', @l_PAY_ID out
|
219
|
IF @l_PAY_ID='' OR @l_PAY_ID IS NULL GOTO ABORT
|
220
|
--INSERT INTO dbo.TR_PO_PAYMENT
|
221
|
--(
|
222
|
-- PAY_ID,
|
223
|
-- PO_ID,
|
224
|
-- PAY_PHASE,
|
225
|
-- EXP_DT,
|
226
|
-- [PERCENT],
|
227
|
-- AMOUNT,
|
228
|
-- NOTES,
|
229
|
-- RECORD_STATUS,
|
230
|
-- MAKER_ID,
|
231
|
-- CREATE_DT,
|
232
|
-- AUTH_STATUS,
|
233
|
-- CHECKER_ID,
|
234
|
-- APPROVE_DT
|
235
|
--)
|
236
|
--VALUES
|
237
|
--( @l_PAY_ID, -- PAY_ID - varchar(15)
|
238
|
-- @l_PO_ID, -- PO_ID - varchar(15)
|
239
|
-- '2', -- PAY_PHASE - varchar(20)
|
240
|
-- GETDATE(), -- EXP_DT - datetime
|
241
|
-- 50, -- PERCENT - decimal(18, 0)
|
242
|
-- @TOTAL_AMT / 2 , -- AMOUNT - decimal(18, 0)
|
243
|
-- N'', -- NOTES - nvarchar(1000)
|
244
|
-- '1', -- RECORD_STATUS - varchar(1)
|
245
|
-- @p_MAKER_ID, -- MAKER_ID - varchar(15)
|
246
|
-- GETDATE(), -- CREATE_DT - datetime
|
247
|
-- 'E', -- AUTH_STATUS - varchar(50)
|
248
|
-- '', -- CHECKER_ID - varchar(15)
|
249
|
-- NULL -- APPROVE_DT - datetime
|
250
|
-- )
|
251
|
|
252
|
IF(@TOTAL_AMT <=5000000)
|
253
|
BEGIN
|
254
|
UPDATE dbo.TR_PO_MASTER SET AUTH_STATUS='A' WHERE PO_ID=@l_PO_ID
|
255
|
END
|
256
|
--XOA DI NHA CUNG CAP
|
257
|
--DELETE FROM @TABLE_NCC WHERE SUP_ID =@l_SUP_ID
|
258
|
--- KET THUC VONG LAP KIEM TRA DANH SACH NHA CUNG CAP PYCMS
|
259
|
FETCH NEXT FROM lstDATANCC INTO @l_SUP_ID
|
260
|
END
|
261
|
CLOSE lstDATANCC
|
262
|
DEALLOCATE lstDATANCC
|
263
|
COMMIT TRANSACTION;
|
264
|
RETURN 1;
|
265
|
ABORT:
|
266
|
BEGIN
|
267
|
ROLLBACK TRANSACTION;
|
268
|
RETURN 1;
|
269
|
END;
|
270
|
ABORT1:
|
271
|
BEGIN
|
272
|
CLOSE lstData;
|
273
|
DEALLOCATE lstData;
|
274
|
ROLLBACK TRANSACTION;
|
275
|
RETURN 1;
|
276
|
END;
|
277
|
|
278
|
|