Project

General

Profile

f8.txt

Luc Tran Van, 11/17/2023 12:05 PM

 
1
CREATE OR ALTER PROCEDURE dbo.MW_TRANSFER_PRIVATE_App
2
  @p_TRANFER_PRIVATE_ID VARCHAR(15),
3
  @p_AUTH_STATUS VARCHAR(1),
4
  @p_CHECKER_ID VARCHAR(200),
5
  @p_APPROVE_DT VARCHAR(20)
6
AS
7

    
8
--Validation is
9
	IF (EXISTS(SELECT mtp.AUTH_STATUS FROM MW_TRANFER_PRIVATE mtp WHERE mtp.TRANFER_PRIVATE_ID = @p_TRANFER_PRIVATE_ID AND mtp.AUTH_STATUS = 'A' AND mtp.PROCESS_ID = 'DONE'))
10
	BEGIN
11
		SELECT '0' as Result, '' ErrorDesc
12
		RETURN 0
13
	END
14

    
15
BEGIN TRANSACTION
16
     
17
     	DECLARE  @ROLE_LOGIN TABLE(ROLE_USER VARCHAR(20), BRANCH_ID VARCHAR(20), DEP_ID VARCHAR(20));
18
       DECLARE @p_DEP_ID VARCHAR(15)
19
      ,@p_BRANCH_ID VARCHAR(15)
20
      ,@WARE_MASTER_ID VARCHAR(15)
21
      ,@ROLE_DV VARCHAR(20)
22
       ,@DEP_ROLE VARCHAR(20),
23
       @IS_SEND_MAIL VARCHAR(1) = '0'
24

    
25
       SELECT @WARE_MASTER_ID = mtp.WARE_ID FROM MW_TRANFER_PRIVATE mtp WHERE  mtp.TRANFER_PRIVATE_ID = @p_TRANFER_PRIVATE_ID 
26

    
27
       SELECT @ROLE_DV = crt.ROLE_RECEIVE,
28
               @DEP_ROLE = crt.DEP_RECEIVE
29
       FROM CM_REQ_TYPE crt 
30
       WHERE crt.WARE_TYPE = @WARE_MASTER_ID
31

    
32
      
33
         
34
     
35

    
36
      INSERT INTO @ROLE_LOGIN
37
      SELECT tugr.ROLE_ID, tugr.BRANCH_ID, tugr.DEPT_ID FROM dbo.TL_USER_GET_ROLES(@p_CHECKER_ID) tugr
38
            
39
               SELECT @p_DEP_ID = DEP_ID,
40
                       @p_BRANCH_ID = BRANCH_ID
41
                        FROM MW_REQUEST_PROCESS
42
                        WHERE REQ_ID = @p_TRANFER_PRIVATE_ID AND PROCESS_ID = 'ADDNEW' 
43

    
44
    IF (EXISTS(SELECT 1 FROM @ROLE_LOGIN 
45
                            WHERE (BRANCH_ID = 'DV0001' 
46
                                 AND ISNULL(DEP_ID,'') = ISNULL(@DEP_ROLE ,'')))                             
47
          AND EXISTS(SELECT 1 
48
                          FROM MW_TRANFER_PRIVATE mtp 
49
                          LEFT JOIN CM_WARE cw ON mtp.WARE_ID = cw.WARE_ID
50
                          WHERE mtp.TRANFER_PRIVATE_ID = @p_TRANFER_PRIVATE_ID AND cw.WARE_CODE IN ('02TE','03CT'))
51
       )         
52
      BEGIN
53
          -- Cập nhật số lượng lô vật liệu
54
             
55
             
56
              -- cộng kho điều chuyển
57
              
58
                DECLARE @MW_MAST_BAL_Temp TABLE(MAST_BAL_ID VARCHAR(15),TRANSFER_PRIVATE_DT_ID VARCHAR(15),TRANSFER_QUANTITY DECIMAL(18,2),PROMOTION_TRANFER_ID VARCHAR(15), PRICE_ID VARCHAR(15), BRANCH_ID VARCHAR(15), DEPT_ID VARCHAR(15), QTY_BALANCE DECIMAL(18,2), QTY_REAL DECIMAL(18,2), QTY_TEMP DECIMAL(18,2)
59
                , QTY_DAMAGED DECIMAL(18,2), QTY_LOSS DECIMAL(18,2), MATERIAL_ID VARCHAR(15), TOTAL_AMT DECIMAL(18,2), PRICE DECIMAL(18,2), PROMOTION_ID VARCHAR(50), WARE_ID VARCHAR(50))
60
                
61
         
62
                INSERT INTO @MW_MAST_BAL_Temp
63
                SELECT  mmb.MAST_BAL_ID,mtpd.TRANFER_PRIVATE_DT_ID,mtpd.TRANFER_QUANTITY,mtpd.PROMOTION_TRANFER_ID, mmb.PRICE_ID , mmb.BRANCH_ID , mmb.DEPT_ID , mmb.QTY_BALANCE, mmb.QTY_REAL , mmb.QTY_TEMP 
64
                , mmb.QTY_DAMAGED, mmb.QTY_LOSS , mmb.MATERIAL_ID , mmb.TOTAL_AMT , mmb.PRICE , mmb.PROMOTION_ID , mmb.WARE_ID
65
                FROM MW_MAST_BAL mmb 
66
                JOIN MW_TRANFER_PRIVATE_DT mtpd ON mtpd.MAST_BAL_ID = mmb.MAST_BAL_ID
67
                WHERE mtpd.TRANFER_PRIVATE_ID = @p_TRANFER_PRIVATE_ID AND mmb.WARE_ID = mtpd.DEFAULT_WARE_ID
68
        
69
                -- loop insert value
70
                 
71
                DECLARE 
72
                @MAST_BAL_ID VARCHAR(15), 
73
                @TRANSFER_PRIVATE_DT_ID VARCHAR(15),
74
                @TRANSFER_QUANTITY DECIMAL(18,2),
75
                @PROMOTION_TRANFER_ID VARCHAR(15), 
76
                @PRICE_ID VARCHAR(15), 
77
                @BRANCH_ID VARCHAR(15), 
78
                @DEPT_ID VARCHAR(15), 
79
                @QTY_BALANCE DECIMAL(18,2), 
80
                @QTY_REAL DECIMAL(18,2), 
81
                @QTY_TEMP DECIMAL(18,2),
82
                @QTY_DAMAGED DECIMAL(18,2), 
83
                @QTY_LOSS DECIMAL(18,2), 
84
                @MATERIAL_ID VARCHAR(15), 
85
                @TOTAL_AMT DECIMAL(18,2),
86
                @PRICE DECIMAL(18,2), 
87
                @PROMOTION_ID VARCHAR(50), 
88
                @WARE_ID VARCHAR(50)
89

    
90

    
91
                DECLARE PASS_DATA CURSOR FOR
92
                SELECT MAST_BAL_ID,TRANSFER_PRIVATE_DT_ID,TRANSFER_QUANTITY,PROMOTION_TRANFER_ID, PRICE_ID, BRANCH_ID, DEPT_ID , QTY_BALANCE , QTY_REAL , QTY_TEMP 
93
                , QTY_DAMAGED , QTY_LOSS, MATERIAL_ID , TOTAL_AMT, PRICE , PROMOTION_ID , WARE_ID 
94
                FROM @MW_MAST_BAL_Temp;
95
                
96
                -- Declare variables
97
                DECLARE @Done BIT = 0;
98
               
99
                  
100
                -- Declare handlers for cursor
101
                DECLARE @ErrorMessage NVARCHAR(4000);
102
                DECLARE @ErrorSeverity INT;
103
                DECLARE @ErrorState INT;
104
                DECLARE @l_MAST_BAL_ID VARCHAR(15)
105
                DECLARE @WARE_TRANFER_NEW_ID VARCHAR(15)
106
                DECLARE @l_MAST_BAL_STMT_ID VARCHAR(15)
107
                DECLARE @t_MAST_BAL_STMT_ID VARCHAR(15)
108
                DECLARE @Mast_Bal_NEW_ID VARCHAR(15)
109
                BEGIN
110
                    OPEN PASS_DATA;
111
                
112
                    FETCH NEXT FROM PASS_DATA INTO @MAST_BAL_ID, 
113
                                                    @TRANSFER_PRIVATE_DT_ID,
114
                                                    @TRANSFER_QUANTITY,
115
                                                    @PROMOTION_TRANFER_ID,
116
                                                     @PRICE_ID , 
117
                                                    @BRANCH_ID , 
118
                                                    @DEPT_ID , 
119
                                                    @QTY_BALANCE, 
120
                                                    @QTY_REAL, 
121
                                                    @QTY_TEMP,
122
                                                    @QTY_DAMAGED, 
123
                                                    @QTY_LOSS , 
124
                                                    @MATERIAL_ID , 
125
                                                    @TOTAL_AMT ,
126
                                                    @PRICE , 
127
                                                    @PROMOTION_ID, 
128
                                                    @WARE_ID
129
                
130
                    WHILE @@FETCH_STATUS = 0
131
                    BEGIN
132
                     -- trừ kho đầu
133
                     UPDATE mmb 
134
                            SET mmb.QTY_BALANCE = mmb.QTY_BALANCE - @TRANSFER_QUANTITY,
135
                                mmb.QTY_REAL = QTY_REAL - @TRANSFER_QUANTITY,
136
                                mmb.TOTAL_AMT = (mmb.QTY_BALANCE - @TRANSFER_QUANTITY) * mmb.PRICE
137
                                FROM MW_MAST_BAL mmb 
138
                                WHERE mmb.MAST_BAL_ID = @MAST_BAL_ID
139
                        -- set ID kho được chuyển qua
140
                        SET @WARE_TRANFER_NEW_ID = (SELECT mtpd.WARE_TRANFER_ID 
141
                                                                FROM 
142
                                                                MW_TRANFER_PRIVATE_DT mtpd
143
                                                                 WHERE mtpd.TRANFER_PRIVATE_DT_ID = @TRANSFER_PRIVATE_DT_ID)
144
                         -- nếu trong lô vật liệu không có kho được chuyển thì add thêm mới
145
                        IF(NOT EXISTS(SELECT * FROM
146
                                      MW_MAST_BAL mmb 
147
                                      WHERE mmb.WARE_ID = @WARE_TRANFER_NEW_ID AND mmb.MATERIAL_ID = @MATERIAL_ID AND mmb.PRICE_ID = @PRICE_ID AND mmb.PROMOTION_ID = @PROMOTION_TRANFER_ID))
148
                                           
149
                        BEGIN
150
               
151

    
152
                        		EXEC SYS_CodeMasters_Gen 'MW_MAST_BAL', @l_MAST_BAL_ID out
153
                          	IF @l_MAST_BAL_ID='' OR @l_MAST_BAL_ID IS NULL GOTO ABORT
154

    
155
                            INSERT INTO MW_MAST_BAL(MAST_BAL_ID, PRICE_ID, BRANCH_ID, DEPT_ID , QTY_BALANCE , QTY_REAL , QTY_TEMP 
156
                                        , QTY_DAMAGED , QTY_LOSS, MATERIAL_ID , TOTAL_AMT, PRICE , PROMOTION_ID , WARE_ID )
157
                              VALUES(@l_MAST_BAL_ID,@PRICE_ID,@BRANCH_ID,@DEPT_ID,@TRANSFER_QUANTITY, @TRANSFER_QUANTITY, @QTY_TEMP
158
                                    , @QTY_DAMAGED, @QTY_LOSS, @MATERIAL_ID, @TRANSFER_QUANTITY * @PRICE, @PRICE, @PROMOTION_TRANFER_ID, @WARE_TRANFER_NEW_ID)
159

    
160
                           
161
                        END
162
                             
163
                          -- cật nhật số lượng lô vật liệu ở kho được chuyển
164
                         ELSE 
165
                         BEGIN
166
                            UPDATE mmb
167
                            SET mmb.QTY_BALANCE = mmb.QTY_BALANCE + @TRANSFER_QUANTITY,
168
                                mmb.QTY_REAL = mmb.QTY_REAL + @TRANSFER_QUANTITY
169
                            FROM MW_MAST_BAL mmb 
170
                            WHERE mmb.WARE_ID = @WARE_TRANFER_NEW_ID AND mmb.MATERIAL_ID = @MATERIAL_ID AND mmb.PRICE_ID = @PRICE_ID AND mmb.PROMOTION_ID = @PROMOTION_TRANFER_ID
171
                         END
172
                      
173
                
174

    
175
                          -- thêm vào Mast_bal_stmt
176
                          EXEC SYS_CodeMasters_Gen 'MW_MAST_BAL_STMT', @l_MAST_BAL_STMT_ID out
177
                          IF @l_MAST_BAL_STMT_ID='' OR @l_MAST_BAL_STMT_ID IS NULL GOTO ABORT
178
                          
179
                          INSERT INTO MW_MAST_BAL_STMT( STMT_ID, REF_ID, MAST_BAL_ID, TRN_DATE, TRN_TIME, TRN_TYPE, CRDR, QTY, PRICE, TRN_DESC, TOTAL_AMT)
180
                          VALUES(@l_MAST_BAL_STMT_ID,@TRANSFER_PRIVATE_DT_ID, @MAST_BAL_ID,CONVERT(DATETIME, GETDATE(), 103), CONVERT(DATETIME, GETDATE(), 120),'PT','D',@TRANSFER_QUANTITY,@PRICE,'',@TRANSFER_QUANTITY * @PRICE )
181
                            
182
                         EXEC SYS_CodeMasters_Gen 'MW_MAST_BAL_STMT', @t_MAST_BAL_STMT_ID out
183
                          IF @t_MAST_BAL_STMT_ID='' OR @t_MAST_BAL_STMT_ID IS NULL GOTO ABORT
184
                          
185

    
186
                          SELECT @Mast_Bal_NEW_ID = mmb.MAST_BAL_ID
187
                          FROM  MW_MAST_BAL mmb
188
                          WHERE mmb.PRICE_ID = @PRICE_ID AND mmb.WARE_ID = @WARE_TRANFER_NEW_ID AND mmb.MATERIAL_ID = @MATERIAL_ID AND mmb.PROMOTION_ID = @PROMOTION_TRANFER_ID
189

    
190
                          INSERT INTO MW_MAST_BAL_STMT( STMT_ID, REF_ID, MAST_BAL_ID, TRN_DATE, TRN_TIME, TRN_TYPE, CRDR, QTY, PRICE, TRN_DESC, TOTAL_AMT)
191
                          VALUES(@t_MAST_BAL_STMT_ID,@TRANSFER_PRIVATE_DT_ID,@Mast_Bal_NEW_ID,CONVERT(DATETIME, GETDATE(), 103), CONVERT(DATETIME, GETDATE(), 120),'PT','C',@TRANSFER_QUANTITY,@PRICE,'',@TRANSFER_QUANTITY * @PRICE )
192

    
193
                        FETCH NEXT FROM PASS_DATA INTO @MAST_BAL_ID, 
194
                                                        @TRANSFER_PRIVATE_DT_ID,
195
                                                        @TRANSFER_QUANTITY,
196
                                                        @PROMOTION_TRANFER_ID,
197
                                                          @PRICE_ID , 
198
                                                          @BRANCH_ID , 
199
                                                          @DEPT_ID , 
200
                                                          @QTY_BALANCE, 
201
                                                          @QTY_REAL, 
202
                                                          @QTY_TEMP,
203
                                                          @QTY_DAMAGED, 
204
                                                          @QTY_LOSS , 
205
                                                          @MATERIAL_ID , 
206
                                                          @TOTAL_AMT ,
207
                                                          @PRICE , 
208
                                                          @PROMOTION_ID, 
209
                                                          @WARE_ID
210
                    END;
211
                
212
                    CLOSE PASS_DATA;
213
                    DEALLOCATE PASS_DATA;
214
                END;
215
                
216
             
217
              
218

    
219
              -- Cập nhật trạng thái 
220
              UPDATE MW_TRANFER_PRIVATE 
221
              SET AUTH_STATUS = @p_AUTH_STATUS,
222
                  APPROVE_DT = GETDATE(), 
223
                  CHECKER_ID = @p_CHECKER_ID,
224
                  PROCESS_ID = 'DONE' 
225
              WHERE TRANFER_PRIVATE_ID = @p_TRANFER_PRIVATE_ID	
226
              
227
              IF @@Error <> 0 GOTO ABORT
228
              
229
             -- Cập nhật lịch sử xử lý
230
              
231
             -- thêm xử lý mới
232
            INSERT INTO MW_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],PROCESS_NAME,ROLE_USER,[STATUS],BRANCH_ID,PARENT_PROCESS_ID,PROCESS_TYPE,DEP_ID, CHECKER_ID,RECEPTION_DT,NOTES)
233
            VALUES(@p_TRANFER_PRIVATE_ID,'TDVDMDD',N'ĐƠN VỊ ĐẦU MỐI DUYỆT','','P',@p_BRANCH_ID,'DVDMTN','Approve',@p_DEP_ID, @p_CHECKER_ID,GETDATE(), N'Đơn vị đầu mối đã duyệt')
234
              -- Câp nhật trạng thái yêu cầu
235
            UPDATE MW_REQUEST_PROCESS 
236
            SET STATUS = 'P'
237
            WHERE REQ_ID = @p_TRANFER_PRIVATE_ID AND PROCESS_ID = 'DVDMTN'
238

    
239
            IF(EXISTS (SELECT STATUS FROM MW_REQUEST_PROCESS WHERE REQ_ID = @p_TRANFER_PRIVATE_ID AND PROCESS_ID = 'SENDAPP' AND STATUS = 'C'))
240
            BEGIN
241
                 UPDATE MW_REQUEST_PROCESS 
242
                SET STATUS = 'P'
243
                WHERE REQ_ID = @p_TRANFER_PRIVATE_ID AND PROCESS_ID = 'SENDAPP'
244
            END
245

    
246
            IF(NOT EXISTS(SELECT * FROM MW_REQUEST_PROCESS mrp WHERE mrp.STATUS = 'C' AND mrp.REQ_ID = @p_TRANFER_PRIVATE_ID))
247
            BEGIN
248
              INSERT INTO MW_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],PROCESS_NAME,ROLE_USER,[STATUS],BRANCH_ID,PARENT_PROCESS_ID,PROCESS_TYPE,DEP_ID, CHECKER_ID,RECEPTION_DT,NOTES)
249
              VALUES(@p_TRANFER_PRIVATE_ID,'DONE',N'HOÀN THÀNH PHIẾU','','P',@p_BRANCH_ID,'TDVDMDD','Approve',@p_DEP_ID, @p_CHECKER_ID,DATEADD(SECOND,1,GETDATE()), N'Hoàn thành phiếu')
250
            END
251
      END
252
    ELSE
253
    BEGIN  
254
          	IF(EXISTS(SELECT * FROM MW_REQUEST_PROCESS mrp WHERE mrp.PROCESS_ID = 'SENDAPP' AND mrp.STATUS = 'C' AND mrp.REQ_ID = @p_TRANFER_PRIVATE_ID))
255
          BEGIN                 
256
                IF(EXISTS(SELECT * FROM MW_REQUEST_PROCESS mrp WHERE mrp.CHECKER_ID = @p_CHECKER_ID AND mrp.REQ_ID = @p_TRANFER_PRIVATE_ID AND mrp.STATUS <> 'F'))
257
                BEGIN
258
                    GOTO ABORT3
259
                END 
260

    
261

    
262
              UPDATE MW_TRANFER_PRIVATE 
263
              SET 
264
                  AUTH_STATUS = @p_AUTH_STATUS,
265
                  CHECKER_ID = @p_CHECKER_ID,
266
                  PROCESS_ID = 'DVDMTN' 
267
              WHERE TRANFER_PRIVATE_ID = @p_TRANFER_PRIVATE_ID	IF @@Error <> 0 GOTO ABORT
268
             -- Cập nhật lịch sử xử lý
269
       
270
             -- thêm xử lý mới
271
            INSERT INTO MW_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],PROCESS_NAME,ROLE_USER,[STATUS],BRANCH_ID,PARENT_PROCESS_ID,PROCESS_TYPE,DEP_ID, CHECKER_ID,RECEPTION_DT,NOTES)
272
            VALUES(@p_TRANFER_PRIVATE_ID,'DVDMTN',  N'TRƯỞNG ĐƠN VỊ DUYỆT','DVDM','C',@p_BRANCH_ID,'SENDAPP','APPROVE',@p_DEP_ID, @p_CHECKER_ID,GETDATE(), N'Trưởng đơn vị duyệt phiếu')
273
              -- Câp nhật trạng thái yêu cầu
274
            UPDATE MW_REQUEST_PROCESS 
275
            SET STATUS = 'P'
276
            WHERE REQ_ID = @p_TRANFER_PRIVATE_ID AND PROCESS_ID = 'SENDAPP'AND STATUS = 'C'
277
            -- GỬI MAIL CHECK
278
            SET @IS_SEND_MAIL = '1'
279
          END
280
          ELSE 
281
             BEGIN
282
                IF EXISTS(SELECT * FROM MW_REQUEST_PROCESS mrp WHERE mrp.PROCESS_ID = 'DVDMTN' AND  mrp.STATUS = 'C' AND mrp.REQ_ID = @p_TRANFER_PRIVATE_ID)
283
                BEGIN
284
                	   
285

    
286
              -- Cập nhật trạng thái 
287
              UPDATE MW_TRANFER_PRIVATE 
288
              SET AUTH_STATUS = @p_AUTH_STATUS,
289
                  APPROVE_DT = GETDATE(), 
290
                  CHECKER_ID = @p_CHECKER_ID,
291
                  PROCESS_ID = 'DONE' 
292
              WHERE TRANFER_PRIVATE_ID = @p_TRANFER_PRIVATE_ID	
293
              
294
              IF @@Error <> 0 GOTO ABORT
295
              
296
             -- Cập nhật lịch sử xử lý
297
              
298
             -- thêm xử lý mới
299
            INSERT INTO MW_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],PROCESS_NAME,ROLE_USER,[STATUS],BRANCH_ID,PARENT_PROCESS_ID,PROCESS_TYPE,DEP_ID, CHECKER_ID,RECEPTION_DT,NOTES)
300
            VALUES(@p_TRANFER_PRIVATE_ID,'TDVDMDD',N'ĐƠN VỊ ĐẦU MỐI DUYỆT','','P',@p_BRANCH_ID,'DVDMTN','Approve',@p_DEP_ID, @p_CHECKER_ID,GETDATE(), N'Đơn vị đầu mối đã duyệt')
301
              -- Câp nhật trạng thái yêu cầu
302
            UPDATE MW_REQUEST_PROCESS 
303
            SET STATUS = 'P'
304
            WHERE REQ_ID = @p_TRANFER_PRIVATE_ID AND PROCESS_ID = 'DVDMTN'
305

    
306
            IF(EXISTS (SELECT STATUS FROM MW_REQUEST_PROCESS WHERE REQ_ID = @p_TRANFER_PRIVATE_ID AND PROCESS_ID = 'SENDAPP' AND STATUS = 'C'))
307
            BEGIN
308
                 UPDATE MW_REQUEST_PROCESS 
309
                SET STATUS = 'P'
310
                WHERE REQ_ID = @p_TRANFER_PRIVATE_ID AND PROCESS_ID = 'SENDAPP'
311
            END
312

    
313
            IF(NOT EXISTS(SELECT * FROM MW_REQUEST_PROCESS mrp WHERE mrp.STATUS = 'C' AND mrp.REQ_ID = @p_TRANFER_PRIVATE_ID))
314
            BEGIN
315
              INSERT INTO MW_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],PROCESS_NAME,ROLE_USER,[STATUS],BRANCH_ID,PARENT_PROCESS_ID,PROCESS_TYPE,DEP_ID, CHECKER_ID,RECEPTION_DT,NOTES)
316
              VALUES(@p_TRANFER_PRIVATE_ID,'DONE',N'HOÀN THÀNH PHIẾU','','P',@p_BRANCH_ID,'TDVDMDD','Approve',@p_DEP_ID, @p_CHECKER_ID,DATEADD(SECOND,1,GETDATE()), N'Hoàn thành phiếu')
317
            END
318
                END
319
             END
320
    END
321

    
322
COMMIT TRANSACTION
323
SELECT '0' as Result, '' ErrorDesc, @IS_SEND_MAIL SEND_MAIL
324
RETURN '0'
325
ABORT:
326
BEGIN
327
		ROLLBACK TRANSACTION
328
		SELECT '-1' as Result, '' ErrorDesc
329
		RETURN '-1'
330
End
331

    
332
ABORT2:
333
BEGIN
334
		ROLLBACK TRANSACTION
335
		SELECT '-1' as Result, N'Không thể duyệt, phiếu chưa đến bước xử lý này' ErrorDesc
336
		RETURN '-1'
337
End
338

    
339
ABORT3:
340
BEGIN
341
		ROLLBACK TRANSACTION
342
		SELECT '-1' as Result, N'Không thể duyệt phiếu này' ErrorDesc
343
		RETURN '-1'
344
END
345
ABORT4:
346
BEGIN
347
		ROLLBACK TRANSACTION
348
		SELECT '-1' as Result, N'Có lỗi xảy ra vui lòng thử lại' ErrorDesc
349
		RETURN '-1'
350
End