ALTER PROCEDURE dbo.ASS_TRANSFER_MULTI_MASTER_Upd @p_TRANS_MULTI_MASTER_ID varchar(15) = null , @p_BRANCH_ID varchar(15) = NULL , @p_TRANSFER_DT VARCHAR(20) = NULL, @p_USER_TRANSFER nvarchar(200) = NULL, @p_NOTES nvarchar(1000) = NULL , @p_RECORD_STATUS varchar(1) = NULL , @p_AUTH_STATUS varchar(1) = NULL , @p_MAKER_ID varchar(15) = NULL , @p_CREATE_DT VARCHAR(20) = NULL, @p_CHECKER_ID varchar(15) = NULL , @p_APPROVE_DT VARCHAR(20) = NULL, @p_AUTH_STATUS_KT varchar(15) = NULL , @p_CREATE_DT_KT VARCHAR(20) = NULL, @p_APPROVE_DT_KT VARCHAR(20) = NULL, @p_MAKER_ID_KT varchar(50) = NULL , @p_CHECKER_ID_KT varchar(50) = NULL , @p_REPORT_STATUS varchar(15) = NULL, @p_BRANCH_CREATE varchar(15) = NULL, @p_XmlData XML = NUL AS DECLARE @TRANSFER_MULTI_ID varchar(15), @ASSET_ID varchar(15), @BRANCH_ID varchar(15), @DEPT_ID varchar(15), @EMP_ID varchar(15), @LOCATION varchar(500), @DESCRIPTION nvarchar(1000), @BRANCH_ID_OLD varchar(15), @DEPT_ID_OLD varchar(15), @EMP_ID_OLD varchar(15), @REMAIN_VALUE DECIMAL(18,0) Declare @hdoc INT Exec sp_xml_preparedocument @hdoc Output,@p_XmlData DECLARE XmlData CURSOR FOR SELECT * FROM OPENXML(@hDoc,'/Root/XmlData',2) WITH ( TRANSFER_MULTI_ID varchar(15), ASSET_ID varchar(15), BRANCH_ID varchar(15), DEPT_ID varchar(15), EMP_ID varchar(15), LOCATION varchar(500), [DESCRIPTION] nvarchar(1000), REMAIN_VALUE DECIMAL(18,0) ) OPEN XmlData BEGIN TRANSACTION UPDATE ASS_TRANSFER_MULTI_MASTER SET [BRANCH_ID] = @p_BRANCH_ID,[TRANSFER_DT] = CONVERT(DATETIME, @p_TRANSFER_DT, 103),[USER_TRANSFER] = @p_USER_TRANSFER,[NOTES] = @p_NOTES,[RECORD_STATUS] = @p_RECORD_STATUS,[AUTH_STATUS] = @p_AUTH_STATUS,[MAKER_ID] = @p_MAKER_ID,[CREATE_DT] = CONVERT(DATETIME, @p_CREATE_DT, 103),[CHECKER_ID] = @p_CHECKER_ID,[APPROVE_DT] = CONVERT(DATETIME, @p_APPROVE_DT, 103),[REPORT_STATUS] = @p_REPORT_STATUS WHERE TRANS_MULTI_MASTER_ID= @p_TRANS_MULTI_MASTER_ID IF @@Error <> 0 GOTO ABORT DELETE FROM ASS_TRANSFER_MULTI_DT WHERE TRANS_MULTI_MASTER_ID = @p_TRANS_MULTI_MASTER_ID DECLARE @COUNT INT; SET @COUNT = 1; --Insert XmlData FETCH NEXT FROM XmlData INTO @TRANSFER_MULTI_ID,@ASSET_ID,@BRANCH_ID,@DEPT_ID,@EMP_ID,@LOCATION,@DESCRIPTION, @REMAIN_VALUE WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @ERRORSYS NVARCHAR(200) = '',@ASSET_CODE nVARCHAR(20) IF (@DEPT_ID IS NULL OR @DEPT_ID = '') BEGIN SET @ASSET_CODE=(SELECT ASSET_CODE FROM ASS_MASTER WHERE [ASSET_ID] = @ASSET_ID) SET @ERRORSYS = N'Dòng số '+ CAST(@COUNT AS NVARCHAR) + N': phòng ban không được để trống.' CLOSE XmlData DEALLOCATE XmlData ROLLBACK TRANSACTION SELECT '-1' as Result, '' TRANS_MULTI_MASTER_ID, @ERRORSYS ErrorDesc RETURN '-1' END IF ( EXISTS ( SELECT * FROM ASS_TRANSFER_MULTI_DT WHERE [ASSET_ID] = @ASSET_ID AND AUTH_STATUS<>'A')) BEGIN SET @ASSET_CODE=(SELECT ASSET_CODE FROM ASS_MASTER WHERE [ASSET_ID] = @ASSET_ID) SET @ERRORSYS = N'Mã: '+@ASSET_CODE+N' đang được điều chuyển' CLOSE XmlData DEALLOCATE XmlData ROLLBACK TRANSACTION SELECT '-1' as Result, '' TRANS_MULTI_MASTER_ID, @ERRORSYS ErrorDesc RETURN '-1' END IF ( EXISTS ( SELECT * FROM ASS_TRANSFER WHERE [ASSET_ID] = @ASSET_ID AND AUTH_STATUS<>'A')) BEGIN SET @ASSET_CODE=(SELECT ASSET_CODE FROM ASS_MASTER WHERE [ASSET_ID] = @ASSET_ID) SET @ERRORSYS = N'Mã: '+@ASSET_CODE+N' đang được điều chuyển' CLOSE XmlData DEALLOCATE XmlData ROLLBACK TRANSACTION SELECT '-1' as Result, '' TRANS_MULTI_MASTER_ID, @ERRORSYS ErrorDesc RETURN '-1' END IF(LEN(@TRANSFER_MULTI_ID) = 0) BEGIN EXEC SYS_CodeMasters_Gen 'ASS_TRANSFER_MULTI_DT', @TRANSFER_MULTI_ID out IF @TRANSFER_MULTI_ID='' OR @TRANSFER_MULTI_ID IS NULL GOTO ABORT END --LAY THONG TIN DON VI CU TRUOC DIEU CHUYEN SELECT @BRANCH_ID_OLD = BRANCH_ID, @DEPT_ID_OLD = DEPT_ID, @EMP_ID_OLD = EMP_ID FROM ASS_MASTER WHERE ASSET_ID = @ASSET_ID --thieuvq 07/09/2016 -- ngay 231120 Thieuvq bo sung neu la HOI SO thi khong kiem tra trung theo yeu cau Anh Tan - dieu chuyen ts tu kho HCQT cho HCQT su dung IF @BRANCH_ID_OLD <> 'DV0001' AND @BRANCH_ID = @BRANCH_ID_OLD AND ISNULL(@DEPT_ID,'') = ISNULL(@DEPT_ID_OLD,'') AND ISNULL(@EMP_ID,'') = ISNULL(@EMP_ID_OLD,'') BEGIN SET @ASSET_CODE=(SELECT ASSET_CODE FROM ASS_MASTER WHERE [ASSET_ID] = @ASSET_ID) SELECT '-1' Result, '' TRANSFER_ID, N'TS: '+@ASSET_CODE+ N' Đơn vị nhận hoặc người nhận phải khác với đơn vị/nhân viên đang sử dụng hiện tại.' ErrorDesc CLOSE XmlData DEALLOCATE XmlData ROLLBACK TRANSACTION RETURN '-1' END -- luctv 03/08/2021 người nhận phải cùng đơn vị nhận IF (SELECT BRANCH_ID FROM CM_DEPARTMENT WHERE DEP_ID = @DEPT_ID) <> @BRANCH_ID BEGIN SET @ASSET_CODE=(SELECT ASSET_CODE FROM ASS_MASTER WHERE [ASSET_ID] = @ASSET_ID) SELECT '-1' Result, '' TRANSFER_ID, N'TS: '+ @ASSET_CODE + N' Phòng bản nhận phải thuộc về đơn vị nhận.' ErrorDesc CLOSE XmlData DEALLOCATE XmlData ROLLBACK TRANSACTION RETURN '-1' END -- IF (SELECT DEP_ID FROM CM_EMPLOYEE WHERE EMP_ID = @EMP_ID) <> @DEPT_ID -- BEGIN -- SET @ASSET_CODE=(SELECT ASSET_CODE FROM ASS_MASTER WHERE [ASSET_ID] = @ASSET_ID) -- SELECT '-1' Result, '' TRANSFER_ID, N'TS: '+ @ASSET_CODE + N' Người nhận phải thuộc về phòng ban nhận.' ErrorDesc -- CLOSE XmlData -- DEALLOCATE XmlData -- ROLLBACK TRANSACTION -- RETURN '-1' -- END INSERT INTO ASS_TRANSFER_MULTI_DT([TRANSFER_MULTI_ID],[TRANS_MULTI_MASTER_ID],[ASSET_ID],[BRANCH_ID],[DEPT_ID],[EMP_ID],[USE_START_DT],[DESCRIPTION],[LOCATION],[RECORD_STATUS],[AUTH_STATUS],[MAKER_ID],[CREATE_DT],[CHECKER_ID],[APPROVE_DT],[BRANCH_CREATE],[AUTH_STATUS_KT],[CREATE_DT_KT],[APPROVE_DT_KT],[MAKER_ID_KT],[CHECKER_ID_KT],[REPORT_STATUS], [BRANCH_ID_OLD], [DEPT_ID_OLD], [EMP_ID_OLD], [REMAIN_VALUE]) VALUES(@TRANSFER_MULTI_ID ,@p_TRANS_MULTI_MASTER_ID ,@ASSET_ID ,@BRANCH_ID ,@DEPT_ID ,@EMP_ID ,CONVERT(DATETIME, @p_TRANSFER_DT, 103) ,@DESCRIPTION ,@LOCATION ,@p_RECORD_STATUS ,@p_AUTH_STATUS ,@p_MAKER_ID ,CONVERT(DATETIME, @p_CREATE_DT, 103) ,@p_CHECKER_ID ,CONVERT(DATETIME, @p_APPROVE_DT, 103) ,@p_BRANCH_CREATE ,@p_AUTH_STATUS_KT ,CONVERT(DATETIME, @p_CREATE_DT_KT, 103) ,CONVERT(DATETIME, @p_APPROVE_DT_KT, 103) ,@p_MAKER_ID_KT ,@p_CHECKER_ID_KT ,'N', @BRANCH_ID_OLD, @DEPT_ID_OLD , @EMP_ID_OLD,@REMAIN_VALUE) IF @@Error <> 0 GOTO ABORT SET @COUNT = @COUNT + 1; FETCH NEXT FROM XmlData INTO @TRANSFER_MULTI_ID,@ASSET_ID,@BRANCH_ID,@DEPT_ID,@EMP_ID,@LOCATION,@DESCRIPTION, @REMAIN_VALUE END CLOSE XmlData DEALLOCATE XmlData -- HUYHT 06/05/2022: XÓA CÁC PROCESS UPDATE CŨ DELETE dbo.PL_PROCESS WHERE REQ_ID = @p_TRANS_MULTI_MASTER_ID AND PROCESS_ID = 'UPDATE' -- GIANT 21/09/2021 INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC,NOTES ) VALUES ( @p_TRANS_MULTI_MASTER_ID, -- REQ_ID - varchar(15) 'UPDATE', -- PROCESS_ID - varchar(10) @p_MAKER_ID, -- CHECKER_ID - varchar(15) GETDATE(), -- APPROVE_DT - datetime N'Cập nhật phiếu điều chuyển thành công' , N'Đơn vị cập nhật phiếu' -- PROCESS_DESC - nvarchar(1000) ) COMMIT TRANSACTION SELECT '0' as Result, @p_TRANS_MULTI_MASTER_ID TRANS_MULTI_MASTER_ID, '' ErrorDesc RETURN '0' ABORT: BEGIN CLOSE XmlData DEALLOCATE XmlData ROLLBACK TRANSACTION SELECT '-1' as Result, '' TRANS_MULTI_MASTER_ID, '' ErrorDesc RETURN '-1' End