Project

General

Profile

DCNB_INS.txt

Luc Tran Van, 11/17/2023 09:17 AM

 
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