ALTER PROCEDURE [dbo].[ASS_USE_MULTI_BVB_MASTER_Upd] @p_USER_MASTER_ID varchar(15) = null , @p_BRANCH_ID varchar(15) = NULL, @p_USE_EXPORT_DT VARCHAR(20) = NULL, @p_USER_EXPORT 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 /* --Validation is here DECLARE @ERRORSYS NVARCHAR(15) = '' IF ( NOT EXISTS ( SELECT * FROM ASS_USE_MULTI_MASTER WHERE USER_MASTER_ID=@p_USER_MASTER_ID SET @ERRORSYS = '' IF @ERRORSYS <> '' BEGIN SELECT ErrorCode Result, ''USER_MASTER_ID, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS RETURN '0' END */ --------LUCTV - KHAI BAO SO THANG KHAU HAO MIN, MAX CUA TAI SAN DECLARE @NHOMTS VARCHAR(15) DECLARE @MIN_AMR INT, @MAX_AMR INT, @INDEX INT SET @INDEX=0 --END DECLARE @USE_MULTI_ID varchar(15), @ASSET_ID varchar(15), @BRANCH_ID varchar(15), @DEPT_ID varchar(15), @DIVISION_ID varchar(15), @EMP_ID varchar(15), @AMORT_START_DATE VARCHAR(20), @AMORT_MONTH decimal(18), @AMORT_END_DATE VARCHAR(20), @CORE_NOTE nvarchar(500), @NOTES nvarchar(1000) Declare @hdoc INT Exec sp_xml_preparedocument @hdoc Output,@p_XmlData DECLARE XmlData CURSOR FOR SELECT * FROM OPENXML(@hDoc,'/Root/XmlData',2) WITH ( USE_MULTI_ID varchar(15), ASSET_ID varchar(15), BRANCH_ID varchar(15), DEPT_ID varchar(15), DIVISION_ID varchar(15), EMP_ID varchar(15), AMORT_START_DATE VARCHAR(20), AMORT_MONTH decimal(18), AMORT_END_DATE VARCHAR(20), CORE_NOTE nvarchar(500), NOTES nvarchar(1000) ) OPEN XmlData DELETE FROM ASS_USE_MULTI_DT WHERE USER_MASTER_ID = @p_USER_MASTER_ID BEGIN TRANSACTION UPDATE ASS_USE_MULTI_MASTER SET [BRANCH_ID] = @p_BRANCH_ID,[USE_EXPORT_DT] = CONVERT(DATETIME, @p_USE_EXPORT_DT, 103),[USER_EXPORT] = @p_USER_EXPORT,[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),[AUTH_STATUS_KT] = 'U', [CREATE_DT_KT] = CONVERT(DATETIME, @p_CREATE_DT_KT, 103),[APPROVE_DT_KT] = CONVERT(DATETIME, @p_APPROVE_DT_KT, 103),[MAKER_ID_KT] = @p_MAKER_ID_KT,[CHECKER_ID_KT] = @p_CHECKER_ID_KT,[REPORT_STATUS] = @p_REPORT_STATUS WHERE USER_MASTER_ID= @p_USER_MASTER_ID IF @@Error <> 0 GOTO ABORT --Insert XmlData FETCH NEXT FROM XmlData INTO @USE_MULTI_ID,@ASSET_ID,@BRANCH_ID,@DEPT_ID,@DIVISION_ID,@EMP_ID,@AMORT_START_DATE,@AMORT_MONTH,@AMORT_END_DATE,@CORE_NOTE,@NOTES WHILE @@FETCH_STATUS = 0 BEGIN SET @INDEX= @INDEX+1 -- --LUCTV - KIEM TRA SO THANG KHAU HAO PHAI NAM TRONG MIN -MAX -- SET @NHOMTS =(SELECT GROUP_ID FROM ASS_MASTER WHERE ASSET_ID= @ASSET_ID) -- SET @MIN_AMR =(SELECT AMORT_MONTH_MIN FROM ASS_GROUP WHERE GROUP_ID =@NHOMTS) -- SET @MAX_AMR =(SELECT AMORT_MONTH_MAX FROM ASS_GROUP WHERE GROUP_ID=@NHOMTS) -- IF(@AMORT_MONTH >@MAX_AMR OR @AMORT_MONTH <@MIN_AMR) -- BEGIN --ROLLBACK TRANSACTION --CLOSE XmlData --DEALLOCATE XmlData --SELECT '-1' as Result,N'Dòng' +CONVERT(VARCHAR(15),@INDEX) +N': Số tháng khấu hao phải nằm trong khoảng ('+CONVERT(VARCHAR(15),@MIN_AMR)+' - '+CONVERT(VARCHAR(15),@MAX_AMR)+N') tháng' ErrorDesc --RETURN '-1' -- END --END if(@AMORT_START_DATE='') set @AMORT_START_DATE=NULL if(@AMORT_END_DATE='') set @AMORT_END_DATE=NULL DECLARE @ERRORSYS NVARCHAR(200) = '',@ASSET_CODE nVARCHAR(20) IF ( EXISTS ( SELECT 1 FROM ASS_USE_MULTI_DT A INNER JOIN ASS_USE_MULTI_MASTER B ON A.USER_MASTER_ID = B.USER_MASTER_ID WHERE [ASSET_ID] = @ASSET_ID AND A.USER_MASTER_ID<> @p_USER_MASTER_ID AND (A.CHECKER_ID IS NULL OR A.CHECKER_ID_KT IS NULL OR (A.CHECKER_ID_KT IS NOT NULL AND A.CHECKER_ID_KT<>'system')))) BEGIN SET @ASSET_CODE=(SELECT ASSET_CODE FROM ASS_MASTER WHERE [ASSET_ID] = @ASSET_ID) SET @ERRORSYS = N'Mã: '+@ASSET_CODE+N' đang xuất sử dụng' CLOSE XmlData DEALLOCATE XmlData ROLLBACK TRANSACTION SELECT '-1' as Result, '' USER_MASTER_ID, @ERRORSYS ErrorDesc RETURN '-1' END IF ( EXISTS ( SELECT * FROM ASS_USE WHERE [ASSET_ID] = @ASSET_ID)) BEGIN SET @ASSET_CODE=(SELECT ASSET_CODE FROM ASS_MASTER WHERE [ASSET_ID] = @ASSET_ID) SET @ERRORSYS = N'Mã: '+@ASSET_CODE+N' đang xuất sử dụng' CLOSE XmlData DEALLOCATE XmlData ROLLBACK TRANSACTION SELECT '-1' as Result, '' USER_MASTER_ID, @ERRORSYS ErrorDesc 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, '' USER_MASTER_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 IF(LEN(@USE_MULTI_ID) = 0) BEGIN EXEC SYS_CodeMasters_Gen 'ASS_USE_MULTI_DT', @USE_MULTI_ID out IF @USE_MULTI_ID='' OR @USE_MULTI_ID IS NULL GOTO ABORT END INSERT INTO ASS_USE_MULTI_DT([USE_MULTI_ID],[USER_MASTER_ID],[ASSET_ID],[AMORT_START_DATE],[BRANCH_ID],[DEPT_ID],[EMP_ID],[DIVISION_ID],[NOTES], [CORE_NOTE],[RECORD_STATUS],[AUTH_STATUS],[MAKER_ID],[CREATE_DT],[CHECKER_ID],[APPROVE_DT],[BRANCH_CREATE],[AMORT_MONTH],[AUTH_STATUS_KT],[REPORT_STATUS],[AMORT_END_DATE]) VALUES(@USE_MULTI_ID ,@p_USER_MASTER_ID,@ASSET_ID ,CONVERT(DATETIME, @AMORT_START_DATE, 103) ,@BRANCH_ID ,@DEPT_ID ,@EMP_ID ,@DIVISION_ID ,@NOTES ,@CORE_NOTE ,@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 ,@AMORT_MONTH , 'U' ,'N' ,CONVERT(DATETIME, @AMORT_END_DATE, 103) ) IF @@Error <> 0 GOTO ABORT FETCH NEXT FROM XmlData INTO @USE_MULTI_ID,@ASSET_ID,@BRANCH_ID,@DEPT_ID,@DIVISION_ID,@EMP_ID,@AMORT_START_DATE,@AMORT_MONTH,@AMORT_END_DATE,@CORE_NOTE,@NOTES END CLOSE XmlData DEALLOCATE XmlData -- GIANT 21/09/2021 INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC,NOTES ) VALUES ( @p_USER_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 xuất sử dụng thành công' , N'Cập nhật phiếu xuất sử dụng' -- PROCESS_DESC - nvarchar(1000) ) COMMIT TRANSACTION SELECT '0' as Result, @p_USER_MASTER_ID USER_MASTER_ID, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' USER_MASTER_ID, '' ErrorDesc RETURN '-1' End