ALTER PROCEDURE dbo.MW_TRANSFER_PRIVATE_Ins @p_TRANFER_PRIVATE_CODE VARCHAR(15) = NULL, @p_EMP_NAME NVARCHAR(200) = NULL, @p_FROM_DATE VARCHAR(20) = NULL, @p_BRANCH_NAME NVARCHAR(200) = NULL, @p_BRANCH_ID VARCHAR(15) = NULL, @p_DEP_ID VARCHAR(15) = NULL, @p_NOTES NVARCHAR(1000) = NULL, @p_WARE_ID VARCHAR(15) = NULL, @p_MAKER_ID VARCHAR(100) = NULL, @p_CHECKER_ID VARCHAR(100) = NULL, @p_AUTH_STATUS VARCHAR(1) = NULL, @p_APPROVE_DT VARCHAR(20) = NULL, @p_RECORD_STATUS VARCHAR(1) = NULL, @p_CREATE_DT varchar(20) = NULL, @p_XmlData XML = NULL AS IF (EXISTS ( SELECT * FROM MW_TRANFER_PRIVATE cd WHERE cd.TRANFER_PRIVATE_CODE = @p_TRANFER_PRIVATE_CODE )) BEGIN SELECT '-1' Result, '' MW_TRANFER_PRIVATE_CODE, N'Mã điều chuyển kho nội đã tồn tại' ErrorDesc RETURN '-1' END DECLARE @TRANFER_PRIVATE_ID VARchar(15), @MATERIAL_ID VARCHAR(15), @MATERIAL_CODE VARCHAR(15), @MATERIAL_NAME NVARCHAR(200), @STOCK_QUANTITY DECIMAL(18,2), @DEFAULT_WARE_ID VARCHAR(15), @DEFAULT_WARE_NAME NVARCHAR(200), @DEFAULT_PROMOTION_ID VARCHAR(15), @DEFAULT_PROMOTION_NAME NVARCHAR(200), @TRANFER_QUANTITY DECIMAL(18,2), @REMAINING_QUANTITY DECIMAL(18,2), @WARE_TRANFER_ID VARCHAR(15), @WARE_TRANFER_NAME NVARCHAR(200), @PROMOTION_TRANFER_ID VARCHAR(15), @PROMOTION_TRANFER_NAME NVARCHAR(200), @MAST_BAL_ID VARCHAR(15) Declare @hdoc INT Exec sp_xml_preparedocument @hdoc Output,@p_XmlData DECLARE XmlData CURSOR FOR SELECT * FROM OPENXML(@hdoc,'/Root/XmlData',2) WITH ( TRANFER_PRIVATE_ID VARCHAR(15), MATERIAL_ID VARCHAR(15), MATERIAL_CODE VARCHAR(15), MATERIAL_NAME_NHOM NVARCHAR(200), STOCK_QUANTITY DECIMAL(18,2), DEFAULT_WARE_ID VARCHAR(15), DEFAULT_WARE_NAME NVARCHAR(200), DEFAULT_PROMOTION_ID VARCHAR(15), DEFAULT_PROMOTION_NAME NVARCHAR(200), TRANFER_QUANTITY DECIMAL(18,2), REMAINING_QUANTITY DECIMAL(18,2), WARE_TRANFER_ID VARCHAR(15), WARE_TRANFER_NAME NVARCHAR(200), PROMOTION_TRANFER_ID VARCHAR(15), PROMOTION_TRANFER_NAME NVARCHAR(200), MAST_BAL_ID VARCHAR(15) ) OPEN XmlData BEGIN TRANSACTION DECLARE @l_TRANFER_PRIVATE_ID VARCHAR(15),@COUNT INT; SET @COUNT = 0; EXEC SYS_CodeMasters_Gen 'MW_TRANFER_PRIVATE', @l_TRANFER_PRIVATE_ID out IF @l_TRANFER_PRIVATE_ID='' OR @l_TRANFER_PRIVATE_ID IS NULL GOTO ABORT 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) 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) FETCH NEXT FROM XmlData INTO @TRANFER_PRIVATE_ID, @MATERIAL_ID , @MATERIAL_CODE, @MATERIAL_NAME, @STOCK_QUANTITY , @DEFAULT_WARE_ID , @DEFAULT_WARE_NAME , @DEFAULT_PROMOTION_ID , @DEFAULT_PROMOTION_NAME , @TRANFER_QUANTITY , @REMAINING_QUANTITY, @WARE_TRANFER_ID, @WARE_TRANFER_NAME , @PROMOTION_TRANFER_ID , @PROMOTION_TRANFER_NAME, @MAST_BAL_ID WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @l_TRANFER_PRIVATE_DT_ID VARCHAR(15) SET @COUNT = @COUNT + 1; -- 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) -- BEGIN -- CLOSE XmlData; -- DEALLOCATE XmlData; -- ROLLBACK TRANSACTION; -- 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 -- RETURN '-1' -- END IF ((@TRANFER_QUANTITY > @STOCK_QUANTITY)) BEGIN GOTO ABORT2 END IF(@TRANFER_QUANTITY = 0 OR @TRANFER_QUANTITY IS NULL) BEGIN GOTO ABORT3 END SET @p_AUTH_STATUS = 'E' EXEC SYS_CodeMasters_Gen 'MW_TRANFER_PRIVATE_DT', @l_TRANFER_PRIVATE_DT_ID out IF @l_TRANFER_PRIVATE_DT_ID='' OR @l_TRANFER_PRIVATE_DT_ID IS NULL GOTO ABORT 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, 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, [RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT]) VALUES (@l_TRANFER_PRIVATE_DT_ID,@l_TRANFER_PRIVATE_ID,@MATERIAL_ID,@MAST_BAL_ID,@MATERIAL_CODE,@MATERIAL_NAME,@STOCK_QUANTITY ,@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 ,@p_RECORD_STATUS ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,'E' ,@p_CHECKER_ID ,CONVERT(DATETIME, @p_APPROVE_DT, 103)); FETCH NEXT FROM XmlData INTO @TRANFER_PRIVATE_ID, @MATERIAL_ID , @MATERIAL_CODE, @MATERIAL_NAME, @STOCK_QUANTITY , @DEFAULT_WARE_ID , @DEFAULT_WARE_NAME , @DEFAULT_PROMOTION_ID , @DEFAULT_PROMOTION_NAME , @TRANFER_QUANTITY , @REMAINING_QUANTITY, @WARE_TRANFER_ID, @WARE_TRANFER_NAME , @PROMOTION_TRANFER_ID , @PROMOTION_TRANFER_NAME, @MAST_BAL_ID END CLOSE XmlData DEALLOCATE XmlData -- Tạo lịch sử xử lý 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) 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') IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION; SELECT '0' AS Result, @l_TRANFER_PRIVATE_ID TRANSFER_PRIVATE_ID, @l_TRANFER_PRIVATE_ID TRANSFER_PRIVATE_CODE, '' ErrorDesc; RETURN '0'; ABORT: BEGIN CLOSE XmlData; DEALLOCATE XmlData; ROLLBACK TRANSACTION; SELECT '-1' AS Result, '' TRANSFER_PRIVATE_ID, '' TRANSFER_RPIVATE_CODE, '' ErrorDesc; RETURN '-1'; END; ABORT2: BEGIN CLOSE XmlData; DEALLOCATE XmlData; ROLLBACK TRANSACTION; 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 RETURN '-1' END ABORT3: BEGIN CLOSE XmlData; DEALLOCATE XmlData; ROLLBACK TRANSACTION; 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 RETURN '-1' END GO ALTER PROCEDURE dbo.MW_TRANSFER_PRIVATE_Upd @p_TRANFER_PRIVATE_ID VARCHAR(15) = NULL, @p_TRANFER_PRIVATE_CODE VARCHAR(15) = NULL, @p_EMP_NAME NVARCHAR(200) = NULL, @p_FROM_DATE VARCHAR(20) = NULL, @p_BRANCH_NAME NVARCHAR(200) = NULL, @p_BRANCH_ID VARCHAR(15) = NULL, @p_DEP_ID VARCHAR(15) = NULL, @p_NOTES VARCHAR(1000) = NULL, @p_WARE_ID VARCHAR(15) = NULL, @p_MAKER_ID VARCHAR(100) = NULL, @p_CHECKER_ID VARCHAR(100) = NULL, @p_AUTH_STATUS VARCHAR(1) = NULL, @p_APPROVE_DT VARCHAR(20) = NULL, @p_RECORD_STATUS VARCHAR(1) = NULL, @p_CREATE_DT varchar(20) = NULL, @p_XmlData XML = NULL AS /* */IF (EXISTS ( SELECT * FROM MW_TRANFER_PRIVATE cd WHERE cd.TRANFER_PRIVATE_CODE = @p_TRANFER_PRIVATE_CODE AND cd.TRANFER_PRIVATE_ID <> @p_TRANFER_PRIVATE_ID )) BEGIN SELECT '-1' Result, '' MW_TRANFER_PRIVATE_CODE, N'Mã điều chuyển kho không khớp, vui lòng thử lại' ErrorDesc RETURN '-1' END IF(@p_FROM_DATE IS NULL) BEGIN SELECT '-1' Result, '' CARMANAGER_ID, N'Chưa chọn ngày điều chuyển' ErrorDesc RETURN '-1' END IF(@p_TRANFER_PRIVATE_CODE IS NULL) BEGIN SELECT '-1' Result, '' CARMANAGER_ID, N'Chưa nhập mã điều chuyển kho nội bộ' ErrorDesc RETURN '-1' END DECLARE @TRANFER_PRIVATE_DT_ID VARCHAR(15), @TRANFER_PRIVATE_ID VARCHAR(15), @MATERIAL_ID VARCHAR(15), @MATERIAL_CODE VARCHAR(15), @MATERIAL_NAME NVARCHAR(200), @STOCK_QUANTITY DECIMAL(18,2), @DEFAULT_WARE_ID VARCHAR(15), @DEFAULT_WARE_NAME NVARCHAR(200), @DEFAULT_PROMOTION_ID VARCHAR(15), @DEFAULT_PROMOTION_NAME NVARCHAR(200), @TRANFER_QUANTITY DECIMAL(18,2), @REMAINING_QUANTITY DECIMAL(18,2), @WARE_TRANFER_ID VARCHAR(15), @WARE_TRANFER_NAME NVARCHAR(200), @PROMOTION_TRANFER_ID VARCHAR(15), @PROMOTION_TRANFER_NAME NVARCHAR(200), @RECORD_STATUS VARCHAR(1), @MAST_BAL_ID VARCHAR(15) Declare @hdoc INT Exec sp_xml_preparedocument @hdoc Output,@p_XmlData DECLARE XmlData CURSOR FOR SELECT * FROM OPENXML(@hdoc,'/Root/XmlData',2) WITH ( TRANFER_PRIVATE_DT_ID VARCHAR(15), TRANFER_PRIVATE_ID VARCHAR(15), MATERIAL_ID VARCHAR(15), MATERIAL_CODE VARCHAR(15), MATERIAL_NAME NVARCHAR(200), STOCK_QUANTITY DECIMAL(18,2), DEFAULT_WARE_ID VARCHAR(15), DEFAULT_WARE_NAME NVARCHAR(200), DEFAULT_PROMOTION_ID VARCHAR(15), DEFAULT_PROMOTION_NAME NVARCHAR(200), TRANFER_QUANTITY DECIMAL(18,2), REMAINING_QUANTITY DECIMAL(18,2), WARE_TRANFER_ID VARCHAR(15), WARE_TRANFER_NAME NVARCHAR(200), PROMOTION_TRANFER_ID VARCHAR(15), PROMOTION_TRANFER_NAME NVARCHAR(200), RECORD_STATUS VARCHAR(1), MAST_BAL_ID VARCHAR(15) ) OPEN XmlData BEGIN TRANSACTION UPDATE MW_TRANFER_PRIVATE SET TRANFER_PRIVATE_CODE = @p_TRANFER_PRIVATE_CODE, EMP_NAME =@p_EMP_NAME, FROM_DATE = CONVERT(DATETIME,@p_FROM_DATE,103), BRANCH_NAME = @p_BRANCH_NAME, BRANCH_ID = @p_BRANCH_ID, DEP_ID = @p_DEP_ID, NOTES = @p_NOTES, WARE_ID = @p_WARE_ID, MAKER_ID = @p_MAKER_ID, CHECKER_ID = @p_CHECKER_ID, AUTH_STATUS = 'E', APPROVE_DT = @p_APPROVE_DT, RECORD_STATUS = @p_RECORD_STATUS, CREATE_DT = @p_CREATE_DT WHERE TRANFER_PRIVATE_ID = @p_TRANFER_PRIVATE_ID IF @@Error <> 0 GOTO ABORT DECLARE @COUNT INT, @TEST NVARCHAR(255) = ''; SET @COUNT = 1; --Insert XmlData FETCH NEXT FROM XmlData INTO @TRANFER_PRIVATE_DT_ID, @TRANFER_PRIVATE_ID, @MATERIAL_ID , @MATERIAL_CODE, @MATERIAL_NAME, @STOCK_QUANTITY , @DEFAULT_WARE_ID , @DEFAULT_WARE_NAME , @DEFAULT_PROMOTION_ID , @DEFAULT_PROMOTION_NAME , @TRANFER_QUANTITY , @REMAINING_QUANTITY, @WARE_TRANFER_ID, @WARE_TRANFER_NAME , @PROMOTION_TRANFER_ID , @PROMOTION_TRANFER_NAME, @RECORD_STATUS, @MAST_BAL_ID WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @ERRORSYS NVARCHAR(200) = '' SET @COUNT = 0; SET @COUNT = @COUNT + 1; IF ((@TRANFER_QUANTITY > @STOCK_QUANTITY)) BEGIN GOTO ABORT2 END IF(@TRANFER_QUANTITY = 0 OR @TRANFER_QUANTITY IS NULL) BEGIN GOTO ABORT3 END -- 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) -- BEGIN -- CLOSE XmlData; -- DEALLOCATE XmlData; -- ROLLBACK TRANSACTION; -- 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 -- RETURN '-1' -- END IF(@TRANFER_PRIVATE_DT_ID = '' OR @TRANFER_PRIVATE_DT_ID IS NULL) BEGIN DECLARE @l_TRANFER_PRIVATE_DT_ID VARCHAR(15) EXEC SYS_CodeMasters_Gen 'MW_TRANFER_PRIVATE_DT', @l_TRANFER_PRIVATE_DT_ID out IF @l_TRANFER_PRIVATE_DT_ID='' OR @l_TRANFER_PRIVATE_DT_ID IS NULL GOTO ABORT 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, 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, [RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT]) VALUES (@l_TRANFER_PRIVATE_DT_ID,@p_TRANFER_PRIVATE_ID,@MATERIAL_ID,@MAST_BAL_ID,@MATERIAL_CODE,@MATERIAL_NAME,@STOCK_QUANTITY ,@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 ,@p_RECORD_STATUS ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,@p_AUTH_STATUS ,@p_CHECKER_ID ,CONVERT(DATETIME, @p_APPROVE_DT, 103)); END IF(@RECORD_STATUS <> '0') BEGIN UPDATE MW_TRANFER_PRIVATE_DT SET MW_TRANFER_PRIVATE_DT.TRANFER_PRIVATE_ID = @TRANFER_PRIVATE_ID, MW_TRANFER_PRIVATE_DT.MATERIAL_ID = @MATERIAL_ID, MW_TRANFER_PRIVATE_DT.MATERIAL_CODE = @MATERIAL_CODE, MW_TRANFER_PRIVATE_DT.MATERIAL_NAME = @MATERIAL_NAME, MW_TRANFER_PRIVATE_DT.STOCK_QUANTITY = @STOCK_QUANTITY, MW_TRANFER_PRIVATE_DT.DEFAULT_WARE_ID = @DEFAULT_WARE_ID, MW_TRANFER_PRIVATE_DT.DEFAULT_WARE_NAME = @DEFAULT_WARE_NAME, MW_TRANFER_PRIVATE_DT.DEFAULT_PROMOTION_ID = @DEFAULT_PROMOTION_ID, MW_TRANFER_PRIVATE_DT.DEFAULT_PROMOTION_NAME = @DEFAULT_PROMOTION_NAME, MW_TRANFER_PRIVATE_DT.TRANFER_QUANTITY = @TRANFER_QUANTITY, MW_TRANFER_PRIVATE_DT.REMAINING_QUANTITY = @REMAINING_QUANTITY, MW_TRANFER_PRIVATE_DT.WARE_TRANFER_ID = @WARE_TRANFER_ID, MW_TRANFER_PRIVATE_DT.WARE_TRANFER_NAME = @WARE_TRANFER_NAME, MW_TRANFER_PRIVATE_DT.PROMOTION_TRANFER_ID = @PROMOTION_TRANFER_ID, MW_TRANFER_PRIVATE_DT.PROMOTION_TRANFER_NAME = @PROMOTION_TRANFER_NAME, MW_TRANFER_PRIVATE_DT.RECORD_STATUS = @RECORD_STATUS, MW_TRANFER_PRIVATE_DT.MAST_BAL_ID = @MAST_BAL_ID WHERE TRANFER_PRIVATE_DT_ID = @TRANFER_PRIVATE_DT_ID IF @@Error <> 0 GOTO ABORT SET @COUNT = @COUNT + 1; END ELSE BEGIN UPDATE MW_TRANFER_PRIVATE_DT SET RECORD_STATUS = @RECORD_STATUS WHERE TRANFER_PRIVATE_DT_ID = @TRANFER_PRIVATE_DT_ID IF @@Error <> 0 GOTO ABORT SET @COUNT = @COUNT + 1; END FETCH NEXT FROM XmlData INTO @TRANFER_PRIVATE_DT_ID, @TRANFER_PRIVATE_ID, @MATERIAL_ID , @MATERIAL_CODE, @MATERIAL_NAME, @STOCK_QUANTITY , @DEFAULT_WARE_ID , @DEFAULT_WARE_NAME , @DEFAULT_PROMOTION_ID , @DEFAULT_PROMOTION_NAME , @TRANFER_QUANTITY , @REMAINING_QUANTITY, @WARE_TRANFER_ID, @WARE_TRANFER_NAME , @PROMOTION_TRANFER_ID , @PROMOTION_TRANFER_NAME, @RECORD_STATUS, @MAST_BAL_ID END CLOSE XmlData DEALLOCATE XmlData COMMIT TRANSACTION SELECT '0' as Result, @p_TRANFER_PRIVATE_ID TRANFER_PRIVATE_ID,@TEST TEST, '' ErrorDesc RETURN '0' ABORT: BEGIN CLOSE XmlData DEALLOCATE XmlData ROLLBACK TRANSACTION SELECT '-1' as Result, '' TRANFER_PRIVATE_ID, '' ErrorDesc RETURN '-1' END ABORT2: BEGIN CLOSE XmlData DEALLOCATE XmlData ROLLBACK TRANSACTION 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(VARCHAR(255),@COUNT) + ' ' + N'Trong phần chi tiết lô vật liệu' ErrorDesc RETURN '-1' End ABORT3: BEGIN CLOSE XmlData; DEALLOCATE XmlData; ROLLBACK TRANSACTION; 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 RETURN '-1' END