1
|
|
2
|
ALTER PROCEDURE dbo.MW_TRANSFER_PRIVATE_Ins
|
3
|
@p_TRANFER_PRIVATE_CODE VARCHAR(15) = NULL,
|
4
|
@p_EMP_NAME NVARCHAR(200) = NULL,
|
5
|
@p_FROM_DATE VARCHAR(20) = NULL,
|
6
|
@p_BRANCH_NAME NVARCHAR(200) = NULL,
|
7
|
@p_BRANCH_ID VARCHAR(15) = NULL,
|
8
|
@p_DEP_ID VARCHAR(15) = NULL,
|
9
|
@p_NOTES NVARCHAR(1000) = NULL,
|
10
|
@p_WARE_ID VARCHAR(15) = NULL,
|
11
|
@p_MAKER_ID VARCHAR(100) = NULL,
|
12
|
@p_CHECKER_ID VARCHAR(100) = NULL,
|
13
|
@p_AUTH_STATUS VARCHAR(1) = NULL,
|
14
|
@p_APPROVE_DT VARCHAR(20) = NULL,
|
15
|
@p_RECORD_STATUS VARCHAR(1) = NULL,
|
16
|
@p_CREATE_DT varchar(20) = NULL,
|
17
|
@p_XmlData XML = NULL
|
18
|
AS
|
19
|
|
20
|
IF (EXISTS ( SELECT * FROM MW_TRANFER_PRIVATE cd WHERE cd.TRANFER_PRIVATE_CODE = @p_TRANFER_PRIVATE_CODE ))
|
21
|
BEGIN
|
22
|
SELECT '-1' Result, '' MW_TRANFER_PRIVATE_CODE, N'Mã điều chuyển kho nội đã tồn tại' ErrorDesc
|
23
|
RETURN '-1'
|
24
|
END
|
25
|
|
26
|
|
27
|
|
28
|
DECLARE
|
29
|
@TRANFER_PRIVATE_ID VARchar(15),
|
30
|
@MATERIAL_ID VARCHAR(15),
|
31
|
@MATERIAL_CODE VARCHAR(15),
|
32
|
@MATERIAL_NAME NVARCHAR(200),
|
33
|
@STOCK_QUANTITY DECIMAL(18,2),
|
34
|
@DEFAULT_WARE_ID VARCHAR(15),
|
35
|
@DEFAULT_WARE_NAME NVARCHAR(200),
|
36
|
@DEFAULT_PROMOTION_ID VARCHAR(15),
|
37
|
@DEFAULT_PROMOTION_NAME NVARCHAR(200),
|
38
|
@TRANFER_QUANTITY DECIMAL(18,2),
|
39
|
@REMAINING_QUANTITY DECIMAL(18,2),
|
40
|
@WARE_TRANFER_ID VARCHAR(15),
|
41
|
@WARE_TRANFER_NAME NVARCHAR(200),
|
42
|
@PROMOTION_TRANFER_ID VARCHAR(15),
|
43
|
@PROMOTION_TRANFER_NAME NVARCHAR(200),
|
44
|
@MAST_BAL_ID VARCHAR(15)
|
45
|
|
46
|
Declare @hdoc INT
|
47
|
Exec sp_xml_preparedocument @hdoc Output,@p_XmlData
|
48
|
|
49
|
DECLARE XmlData CURSOR FOR
|
50
|
SELECT *
|
51
|
FROM OPENXML(@hdoc,'/Root/XmlData',2)
|
52
|
WITH
|
53
|
(
|
54
|
TRANFER_PRIVATE_ID VARCHAR(15),
|
55
|
MATERIAL_ID VARCHAR(15),
|
56
|
MATERIAL_CODE VARCHAR(15),
|
57
|
MATERIAL_NAME_NHOM NVARCHAR(200),
|
58
|
STOCK_QUANTITY DECIMAL(18,2),
|
59
|
DEFAULT_WARE_ID VARCHAR(15),
|
60
|
DEFAULT_WARE_NAME NVARCHAR(200),
|
61
|
DEFAULT_PROMOTION_ID VARCHAR(15),
|
62
|
DEFAULT_PROMOTION_NAME NVARCHAR(200),
|
63
|
TRANFER_QUANTITY DECIMAL(18,2),
|
64
|
REMAINING_QUANTITY DECIMAL(18,2),
|
65
|
WARE_TRANFER_ID VARCHAR(15),
|
66
|
WARE_TRANFER_NAME NVARCHAR(200),
|
67
|
PROMOTION_TRANFER_ID VARCHAR(15),
|
68
|
PROMOTION_TRANFER_NAME NVARCHAR(200),
|
69
|
MAST_BAL_ID VARCHAR(15)
|
70
|
|
71
|
)
|
72
|
OPEN XmlData
|
73
|
|
74
|
BEGIN TRANSACTION
|
75
|
DECLARE @l_TRANFER_PRIVATE_ID VARCHAR(15),@COUNT INT;
|
76
|
SET @COUNT = 0;
|
77
|
|
78
|
EXEC SYS_CodeMasters_Gen 'MW_TRANFER_PRIVATE', @l_TRANFER_PRIVATE_ID out
|
79
|
IF @l_TRANFER_PRIVATE_ID='' OR @l_TRANFER_PRIVATE_ID IS NULL GOTO ABORT
|
80
|
INSERT INTO MW_TRANFER_PRIVATE(TRANFER_PRIVATE_ID,TRANFER_PRIVATE_CODE,WARE_ID,PROCESS_ID,EMP_NAME,FROM_DATE,BRANCH_NAME,BRANCH_ID,NOTES,[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT],DEP_ID)
|
81
|
VALUES(@l_TRANFER_PRIVATE_ID,@l_TRANFER_PRIVATE_ID,@p_WARE_ID,'ADDNEW',@p_EMP_NAME,CONVERT(DATETIME, @p_FROM_DATE, 103),@p_BRANCH_NAME,@p_BRANCH_ID,@p_NOTES ,@p_RECORD_STATUS ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,'E' ,@p_CHECKER_ID ,CONVERT(DATETIME, @p_APPROVE_DT, 103),@p_DEP_ID)
|
82
|
|
83
|
FETCH NEXT FROM XmlData INTO
|
84
|
@TRANFER_PRIVATE_ID,
|
85
|
@MATERIAL_ID ,
|
86
|
@MATERIAL_CODE,
|
87
|
@MATERIAL_NAME,
|
88
|
@STOCK_QUANTITY ,
|
89
|
@DEFAULT_WARE_ID ,
|
90
|
@DEFAULT_WARE_NAME ,
|
91
|
@DEFAULT_PROMOTION_ID ,
|
92
|
@DEFAULT_PROMOTION_NAME ,
|
93
|
@TRANFER_QUANTITY ,
|
94
|
@REMAINING_QUANTITY,
|
95
|
@WARE_TRANFER_ID,
|
96
|
@WARE_TRANFER_NAME ,
|
97
|
@PROMOTION_TRANFER_ID ,
|
98
|
@PROMOTION_TRANFER_NAME,
|
99
|
@MAST_BAL_ID
|
100
|
|
101
|
WHILE @@FETCH_STATUS = 0
|
102
|
BEGIN
|
103
|
|
104
|
|
105
|
|
106
|
DECLARE @l_TRANFER_PRIVATE_DT_ID VARCHAR(15)
|
107
|
SET @COUNT = @COUNT + 1;
|
108
|
|
109
|
-- IF (SELECT TRIM(CW.ACC_ACCOUNTING) FROM CM_WARE CW WHERE CW.WARE_ID = @p_WARE_ID) <> (SELECT TRIM(CW2.ACC_ACCOUNTING) FROM CM_WARE CW2 WHERE CW2.WARE_ID = @WARE_TRANFER_ID)
|
110
|
-- BEGIN
|
111
|
-- CLOSE XmlData;
|
112
|
-- DEALLOCATE XmlData;
|
113
|
-- ROLLBACK TRANSACTION;
|
114
|
-- SELECT '-1' Result, '' MW_TRANFER_PRIVATE_CODE, (N'DANH SÁCH ĐƠN VỊ NHẬN ĐIỀU CHUYỂN ở dòng' + ' ' + convert(nvarchar(255), @COUNT) + ': ' + N'Không thể điều chuyển nội bộ khác kho') ErrorDesc
|
115
|
-- RETURN '-1'
|
116
|
-- END
|
117
|
|
118
|
IF ((@TRANFER_QUANTITY > @STOCK_QUANTITY))
|
119
|
BEGIN
|
120
|
GOTO ABORT2
|
121
|
END
|
122
|
IF(@TRANFER_QUANTITY = 0 OR @TRANFER_QUANTITY IS NULL)
|
123
|
BEGIN
|
124
|
GOTO ABORT3
|
125
|
END
|
126
|
|
127
|
SET @p_AUTH_STATUS = 'E'
|
128
|
|
129
|
EXEC SYS_CodeMasters_Gen 'MW_TRANFER_PRIVATE_DT', @l_TRANFER_PRIVATE_DT_ID out
|
130
|
IF @l_TRANFER_PRIVATE_DT_ID='' OR @l_TRANFER_PRIVATE_DT_ID IS NULL GOTO ABORT
|
131
|
|
132
|
INSERT INTO MW_TRANFER_PRIVATE_DT (TRANFER_PRIVATE_DT_ID,TRANFER_PRIVATE_ID,MATERIAL_ID,MAST_BAL_ID,MATERIAL_CODE,MATERIAL_NAME,STOCK_QUANTITY,DEFAULT_WARE_ID,
|
133
|
DEFAULT_WARE_NAME,DEFAULT_PROMOTION_ID,DEFAULT_PROMOTION_NAME,TRANFER_QUANTITY,REMAINING_QUANTITY,WARE_TRANFER_ID,WARE_TRANFER_NAME,PROMOTION_TRANFER_NAME,PROMOTION_TRANFER_ID,
|
134
|
[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT])
|
135
|
VALUES (@l_TRANFER_PRIVATE_DT_ID,@l_TRANFER_PRIVATE_ID,@MATERIAL_ID,@MAST_BAL_ID,@MATERIAL_CODE,@MATERIAL_NAME,@STOCK_QUANTITY
|
136
|
,@DEFAULT_WARE_ID,@DEFAULT_WARE_NAME,@DEFAULT_PROMOTION_ID,@DEFAULT_PROMOTION_NAME, @TRANFER_QUANTITY,@REMAINING_QUANTITY, @WARE_TRANFER_ID,@WARE_TRANFER_NAME,@PROMOTION_TRANFER_NAME,@PROMOTION_TRANFER_ID
|
137
|
,@p_RECORD_STATUS ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,'E' ,@p_CHECKER_ID ,CONVERT(DATETIME, @p_APPROVE_DT, 103));
|
138
|
|
139
|
|
140
|
|
141
|
FETCH NEXT FROM XmlData INTO
|
142
|
@TRANFER_PRIVATE_ID,
|
143
|
@MATERIAL_ID ,
|
144
|
@MATERIAL_CODE,
|
145
|
@MATERIAL_NAME,
|
146
|
@STOCK_QUANTITY ,
|
147
|
@DEFAULT_WARE_ID ,
|
148
|
@DEFAULT_WARE_NAME ,
|
149
|
@DEFAULT_PROMOTION_ID ,
|
150
|
@DEFAULT_PROMOTION_NAME ,
|
151
|
@TRANFER_QUANTITY ,
|
152
|
@REMAINING_QUANTITY,
|
153
|
@WARE_TRANFER_ID,
|
154
|
@WARE_TRANFER_NAME ,
|
155
|
@PROMOTION_TRANFER_ID ,
|
156
|
@PROMOTION_TRANFER_NAME,
|
157
|
@MAST_BAL_ID
|
158
|
END
|
159
|
CLOSE XmlData
|
160
|
DEALLOCATE XmlData
|
161
|
|
162
|
-- Tạo lịch sử xử lý
|
163
|
INSERT INTO MW_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],PROCESS_NAME,ROLE_USER,[STATUS],BRANCH_ID,PARENT_PROCESS_ID,DEP_ID, CHECKER_ID,RECEPTION_DT,NOTES)
|
164
|
VALUES(@l_TRANFER_PRIVATE_ID,'ADDNEW',N'NHÂN VIÊN TẠO PHIẾU','NVTT','C',@p_BRANCH_ID,'',@p_DEP_ID, @p_MAKER_ID,GETDATE(),N'Nhân viên tạo phiếu yêu cầu')
|
165
|
|
166
|
IF @@Error <> 0 GOTO ABORT
|
167
|
COMMIT TRANSACTION;
|
168
|
SELECT '0' AS Result,
|
169
|
@l_TRANFER_PRIVATE_ID TRANSFER_PRIVATE_ID,
|
170
|
@l_TRANFER_PRIVATE_ID TRANSFER_PRIVATE_CODE,
|
171
|
'' ErrorDesc;
|
172
|
RETURN '0';
|
173
|
ABORT:
|
174
|
BEGIN
|
175
|
CLOSE XmlData;
|
176
|
DEALLOCATE XmlData;
|
177
|
ROLLBACK TRANSACTION;
|
178
|
SELECT '-1' AS Result,
|
179
|
'' TRANSFER_PRIVATE_ID,
|
180
|
'' TRANSFER_RPIVATE_CODE,
|
181
|
'' ErrorDesc;
|
182
|
RETURN '-1';
|
183
|
END;
|
184
|
|
185
|
ABORT2:
|
186
|
BEGIN
|
187
|
CLOSE XmlData;
|
188
|
DEALLOCATE XmlData;
|
189
|
ROLLBACK TRANSACTION;
|
190
|
SELECT '-1' Result, '' MW_TRANFER_PRIVATE_CODE, (N'Số lượng điều chuyển vượt quá số lượng tồn kho ở dòng' + ' ' + convert(nvarchar(255), @COUNT) + ' ' + N'Trong phần chi tiết lô vật liệu') ErrorDesc
|
191
|
RETURN '-1'
|
192
|
END
|
193
|
ABORT3:
|
194
|
BEGIN
|
195
|
CLOSE XmlData;
|
196
|
DEALLOCATE XmlData;
|
197
|
ROLLBACK TRANSACTION;
|
198
|
SELECT '-1' Result, '' MW_TRANFER_PRIVATE_CODE, (N'Số lượng điều chuyển chưa được nhập hoặc bằng 0 ở dòng' + ' ' + convert(nvarchar(255), @COUNT) + ' ' + N'Trong phần chi tiết lô vật liệu') ErrorDesc
|
199
|
RETURN '-1'
|
200
|
END
|