CREATE PROCEDURE [dbo].[ASS_IMPORT_UPDATE_DT_ById] @p_IMP_MASTER_ID VARCHAR(15) AS SELECT A.*,B.BRANCH_NAME,C.DEP_NAME,D.EMP_NAME,E.ASSET_CODE, F.BRANCH_NAME AS BRANCH_NAME_OLD, G.DEP_NAME AS DEP_NAME_OLD, H.EMP_NAME AS EMP_NAME_OLD FROM ASS_IMPORT_UPDATE_DT A LEFT JOIN CM_BRANCH B ON A.BRANCH_ID = B.BRANCH_ID LEFT JOIN CM_DEPARTMENT C ON A.DEP_ID = C.DEP_ID LEFT JOIN CM_EMPLOYEE D ON A.EMP_ID = D.EMP_ID LEFT JOIN ASS_MASTER E ON A.ASSET_ID = E.ASSET_ID LEFT JOIN CM_BRANCH F ON A.BRANCH_ID_OLD = F.BRANCH_ID LEFT JOIN CM_DEPARTMENT G ON A.DEP_ID_OLD = G.DEP_ID LEFT JOIN CM_EMPLOYEE H ON A.EMP_ID_OLD = H.EMP_ID WHERE A.IMP_MASTER_ID = @p_IMP_MASTER_ID GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[ASS_IMPORT_UPDATE_App]' GO CREATE PROCEDURE [dbo].[ASS_IMPORT_UPDATE_App] @p_IMP_MASTER_ID VARCHAR(15), @p_CHECKER_ID VARCHAR(100), @p_APPROVE_DT VARCHAR(50) AS DECLARE @MESSAGE_VALIDATION NVARCHAR(MAX) IF(EXISTS(SELECT 1 FROM ASS_IMPORT_UPDATE_MASTER WHERE IMP_MASTER_ID = @p_IMP_MASTER_ID AND AUTH_STATUS = 'A')) BEGIN SELECT '-1' Result, N'Phiếu đã được phê duyệt' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT 1 FROM ASS_IMPORT_UPDATE_MASTER WHERE IMP_MASTER_ID = @p_IMP_MASTER_ID AND AUTH_STATUS = 'R')) BEGIN SELECT '-1' Result, N'Phiếu đang được trả về' ErrorDesc RETURN '-1' END BEGIN TRANSACTION UPDATE ASS_IMPORT_UPDATE_MASTER SET AUTH_STATUS = 'A' , CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@p_APPROVE_DT,103) WHERE IMP_MASTER_ID = @p_IMP_MASTER_ID --kiểm tra branch,dep của tài sản hiện tại có giống branch,dep import không SET @MESSAGE_VALIDATION = (SELECT REPLACE((SELECT CASE WHEN ROW_NUMBER() OVER (ORDER BY (SELECT 0)) = 1 THEN '' ELSE '|' END + N'Tài sản ' + C.ASSET_CODE + N' đã bị thay đổi Đơn vị/Phòng ban so với File Import' FROM ( SELECT B.ASSET_CODE FROM ASS_IMPORT_UPDATE_DT A LEFT JOIN ASS_MASTER B ON A.ASSET_ID = B.ASSET_ID WHERE (ISNULL(A.BRANCH_ID,'') <> ISNULL(B.BRANCH_ID,'') OR ISNULL(A.DEP_ID,'') <> ISNULL(B.DEPT_ID,'')) AND A.IMP_MASTER_ID = @p_IMP_MASTER_ID) C FOR XML PATH ('')) , '|', '
')) IF(@MESSAGE_VALIDATION IS NOT NULL AND @MESSAGE_VALIDATION <> '') BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, @MESSAGE_VALIDATION ErrorDesc RETURN '-1' END --check branch,dep của tài sản hiện tại có giống với branch,dep của người dùng không SET @MESSAGE_VALIDATION = (SELECT REPLACE((SELECT CASE WHEN ROW_NUMBER() OVER (ORDER BY (SELECT 0)) = 1 THEN '' ELSE '|' END + N'Người dùng ' + C.EMP_NAME + '(' + C.EMP_CODE + ')' + N' không cùng đơn vị/phòng ban với tài sản ' + C.ASSET_CODE FROM ( SELECT B.ASSET_CODE,D.EMP_CODE,D.EMP_NAME FROM ASS_IMPORT_UPDATE_DT A LEFT JOIN ASS_MASTER B ON A.ASSET_ID = B.ASSET_ID LEFT JOIN CM_EMPLOYEE D ON A.EMP_ID = D.EMP_ID WHERE (ISNULL(D.BRANCH_ID,'') <> ISNULL(B.BRANCH_ID,'') OR ISNULL(D.DEP_ID,'') <> ISNULL(B.DEPT_ID,'')) AND A.IMP_MASTER_ID = @p_IMP_MASTER_ID) C FOR XML PATH ('')) , '|', '
')) IF(@MESSAGE_VALIDATION IS NOT NULL AND @MESSAGE_VALIDATION <> '') BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, @MESSAGE_VALIDATION ErrorDesc RETURN '-1' END UPDATE B SET B.EMP_ID = A.EMP_ID, B.ASSET_SERIAL_NO = A.ASSET_SERIAL_NO, B.ASSET_DESC = A.ASSET_DESC, B.NOTES = A.NOTES FROM ASS_IMPORT_UPDATE_DT A LEFT JOIN ASS_MASTER B ON A.ASSET_ID = B.ASSET_ID WHERE A.IMP_MASTER_ID = @p_IMP_MASTER_ID INSERT INTO PL_PROCESS (REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES) VALUES (@p_IMP_MASTER_ID, 'APPROVE', @p_CHECKER_ID, GETDATE(), N'Duyệt phiếu cập nhật tài sản', N'Duyệt phiếu cập nhật tài sản thành công'); IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[ASS_IMPORT_UPDATE_ById]' GO CREATE PROCEDURE [dbo].[ASS_IMPORT_UPDATE_ById] @p_IMP_MASTER_ID VARCHAR(15) AS SELECT A.* , B.TLFullName AS MAKER_NAME, C.AUTH_STATUS_NAME FROM ASS_IMPORT_UPDATE_MASTER A LEFT JOIN TL_USER B ON A.MAKER_ID = B.TLNANME LEFT JOIN CM_AUTH_STATUS C ON A.AUTH_STATUS = C.AUTH_STATUS WHERE A.IMP_MASTER_ID = @p_IMP_MASTER_ID GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[ASS_IMPORT_UPDATE_Del]' GO CREATE PROCEDURE [dbo].[ASS_IMPORT_UPDATE_Del] @p_IMP_MASTER_ID VARCHAR(15) AS IF(EXISTS(SELECT 1 FROM ASS_IMPORT_UPDATE_MASTER WHERE IMP_MASTER_ID = @p_IMP_MASTER_ID AND AUTH_STATUS = 'U')) BEGIN SELECT '-1' Result, N'Phiếu đang chờ phê duyệt. Xoá thất bại' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT 1 FROM ASS_IMPORT_UPDATE_MASTER WHERE IMP_MASTER_ID = @p_IMP_MASTER_ID AND AUTH_STATUS = 'A')) BEGIN SELECT '-1' Result, N'Phiếu đã được phê duyệt. Xoá thất bại' ErrorDesc RETURN '-1' END BEGIN TRANSACTION DELETE ASS_IMPORT_UPDATE_MASTER WHERE IMP_MASTER_ID = @p_IMP_MASTER_ID DELETE ASS_IMPORT_UPDATE_DT WHERE IMP_MASTER_ID = @p_IMP_MASTER_ID IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[ASS_IMPORT_UPDATE_Ins]' GO CREATE PROCEDURE [dbo].[ASS_IMPORT_UPDATE_Ins] @p_NOTES NVARCHAR(4000) = NULL, @p_RECORD_STATUS varchar(1) = NULL, @p_MAKER_ID VARCHAR(100) = NULL, @p_CREATE_DT VARCHAR(50) = NULL, @p_AUTH_STATUS VARCHAR(50) = NULL, @p_CHECKER_ID VARCHAR(100) = NULL, @p_APPROVE_DT VARCHAR(50) = NULL, @p_JSON_DATA NVARCHAR(MAX) = NULL AS DECLARE @ASSET_ID VARCHAR(15), @BRANCH_ID VARCHAR(15), @DEP_ID VARCHAR(15), @EMP_ID VARCHAR(15), @NOTES NVARCHAR(4000), @ASSET_DESC NVARCHAR(4000), @ASSET_SERIAL_NO NVARCHAR(4000), @ASSET_ID_OLD VARCHAR(15), @BRANCH_ID_OLD VARCHAR(15), @DEP_ID_OLD VARCHAR(15), @EMP_ID_OLD VARCHAR(15), @NOTES_OLD NVARCHAR(4000), @ASSET_DESC_OLD NVARCHAR(4000), @ASSET_SERIAL_NO_OLD NVARCHAR(4000) DECLARE cur CURSOR FAST_FORWARD READ_ONLY LOCAL FOR SELECT * FROM OPENJSON(@P_JSON_DATA) WITH ( ASSET_ID VARCHAR(15) '$.ASSET_ID', BRANCH_ID VARCHAR(15) '$.BRANCH_ID', DEP_ID VARCHAR(15) '$.DEP_ID', EMP_ID VARCHAR(15) '$.EMP_ID', NOTES NVARCHAR(4000) '$.NOTES', ASSET_DESC NVARCHAR(4000) '$.ASSET_DESC', ASSET_SERIAL_NO NVARCHAR(4000) '$.ASSET_SERIAL_NO', BRANCH_ID_OLD VARCHAR(15) '$.BRANCH_ID_OLD', DEP_ID_OLD VARCHAR(15) '$.DEP_ID_OLD', EMP_ID_OLD VARCHAR(15) '$.EMP_ID_OLD', NOTES_OLD NVARCHAR(4000) '$.NOTES_OLD', ASSET_DESC_OLD NVARCHAR(4000) '$.ASSET_DESC_OLD', ASSET_SERIAL_NO_OLD NVARCHAR(4000) '$.ASSET_SERIAL_NO_OLD' ) OPEN cur BEGIN TRANSACTION DECLARE @p_IMP_MASTER_ID VARCHAR(15) EXEC SYS_CodeMasters_Gen 'ASS_IMPORT_UPDATE_MASTER', @p_IMP_MASTER_ID out IF @p_IMP_MASTER_ID ='' OR @p_IMP_MASTER_ID IS NULL GOTO ABORT INSERT INTO ASS_IMPORT_UPDATE_MASTER (IMP_MASTER_ID, NOTES, RECORD_STATUS, AUTH_STATUS, MAKER_ID, CREATE_DT, CHECKER_ID, APPROVE_DT) VALUES (@p_IMP_MASTER_ID, @p_NOTES, '1', 'E', @p_MAKER_ID, GETDATE(), NULL, NULL); FETCH NEXT FROM cur INTO @ASSET_ID,@BRANCH_ID,@DEP_ID,@EMP_ID,@NOTES,@ASSET_DESC,@ASSET_SERIAL_NO,@BRANCH_ID_OLD,@DEP_ID_OLD,@EMP_ID_OLD,@NOTES_OLD,@ASSET_DESC_OLD,@ASSET_SERIAL_NO_OLD WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @l_IMP_DT_ID VARCHAR(15) EXEC SYS_CodeMasters_Gen 'ASS_IMPORT_UPDATE_DT', @l_IMP_DT_ID out IF @l_IMP_DT_ID='' OR @l_IMP_DT_ID IS NULL GOTO ABORT INSERT INTO ASS_IMPORT_UPDATE_DT (IMP_DT_ID, IMP_MASTER_ID, ASSET_ID, BRANCH_ID, DEP_ID, EMP_ID, NOTES, ASSET_DESC, ASSET_SERIAL_NO, BRANCH_ID_OLD, DEP_ID_OLD, EMP_ID_OLD, NOTES_OLD, ASSET_DESC_OLD, ASSET_SERIAL_NO_OLD) VALUES (@l_IMP_DT_ID, @p_IMP_MASTER_ID, @ASSET_ID, @BRANCH_ID, @DEP_ID, @EMP_ID, @NOTES, @ASSET_DESC, @ASSET_SERIAL_NO, @BRANCH_ID_OLD, @DEP_ID_OLD, @EMP_ID_OLD, @NOTES_OLD, @ASSET_DESC_OLD, @ASSET_SERIAL_NO_OLD); FETCH NEXT FROM cur INTO @ASSET_ID,@BRANCH_ID,@DEP_ID,@EMP_ID,@NOTES,@ASSET_DESC,@ASSET_SERIAL_NO,@BRANCH_ID_OLD,@DEP_ID_OLD,@EMP_ID_OLD,@NOTES_OLD,@ASSET_DESC_OLD,@ASSET_SERIAL_NO_OLD END CLOSE cur DEALLOCATE cur INSERT INTO PL_PROCESS (REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES) VALUES (@p_IMP_MASTER_ID, 'CREATE', @p_MAKER_ID, GETDATE(), N'Nhân viên thêm mới', N'Thêm mới import tài sản thành công'); IF @@ERROR <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result,@p_IMP_MASTER_ID ID, N'Thêm mới thành công' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' AS RESULT RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[ASS_IMPORT_UPDATE_Search]' GO CREATE PROCEDURE [dbo].[ASS_IMPORT_UPDATE_Search] @p_IMP_MASTER_ID VARCHAR(15) = NULL, @p_NOTES NVARCHAR(4000) = NULL, @p_MAKER_NAME NVARCHAR(1000) = NULL, @p_TOP INT = NULL AS BEGIN -- PAGING IF @p_TOP IS NULL OR @p_TOP = '' BEGIN -- PAGING BEGIN SELECT A.*,B.TLFullName AS MAKER_NAME, C.AUTH_STATUS_NAME -- SELECT END FROM ASS_IMPORT_UPDATE_MASTER A LEFT JOIN TL_USER B ON A.MAKER_ID = B.TLNANME LEFT JOIN CM_AUTH_STATUS C ON A.AUTH_STATUS = C.AUTH_STATUS WHERE 1=1 AND (@p_IMP_MASTER_ID = A.IMP_MASTER_ID OR @p_IMP_MASTER_ID IS NULL OR @p_IMP_MASTER_ID = '') AND (B.TLFullName COLLATE Latin1_general_CI_AI LIKE N'%' + @p_MAKER_NAME + N'%' COLLATE Latin1_general_CI_AI OR @p_MAKER_NAME IS NULL OR @p_MAKER_NAME = '') AND (A.NOTES COLLATE Latin1_general_CI_AI LIKE N'%' + @p_NOTES + N'%' COLLATE Latin1_general_CI_AI OR @p_NOTES IS NULL OR @p_NOTES = '') ORDER BY A.CREATE_DT DESC -- PAGING END END ELSE BEGIN -- PAGING BEGIN SELECT TOP (@p_TOP) A.*, B.TLFullName AS MAKER_NAME, C.AUTH_STATUS_NAME -- SELECT END FROM ASS_IMPORT_UPDATE_MASTER A LEFT JOIN TL_USER B ON A.MAKER_ID = B.TLNANME LEFT JOIN CM_AUTH_STATUS C ON A.AUTH_STATUS = C.AUTH_STATUS WHERE 1=1 AND (@p_IMP_MASTER_ID = A.IMP_MASTER_ID OR @p_IMP_MASTER_ID IS NULL OR @p_IMP_MASTER_ID = '') AND (B.TLFullName COLLATE Latin1_general_CI_AI LIKE N'%' + @p_MAKER_NAME + N'%' COLLATE Latin1_general_CI_AI OR @p_MAKER_NAME IS NULL OR @p_MAKER_NAME = '') AND (A.NOTES COLLATE Latin1_general_CI_AI LIKE N'%' + @p_NOTES + N'%' COLLATE Latin1_general_CI_AI OR @p_NOTES IS NULL OR @p_NOTES = '') ORDER BY A.CREATE_DT DESC -- PAGING END END END -- PAGING GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[ASS_IMPORT_UPDATE_SendAppr]' GO CREATE PROCEDURE [dbo].[ASS_IMPORT_UPDATE_SendAppr] @p_IMP_MASTER_ID VARCHAR(15) AS IF(EXISTS(SELECT 1 FROM ASS_IMPORT_UPDATE_MASTER WHERE IMP_MASTER_ID = @p_IMP_MASTER_ID AND AUTH_STATUS = 'U')) BEGIN SELECT '-1' Result, N'Phiếu đã được gửi phê duyệt' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT 1 FROM ASS_IMPORT_UPDATE_MASTER WHERE IMP_MASTER_ID = @p_IMP_MASTER_ID AND AUTH_STATUS = 'A')) BEGIN SELECT '-1' Result, N'Phiếu đã được phê duyệt' ErrorDesc RETURN '-1' END BEGIN TRANSACTION UPDATE ASS_IMPORT_UPDATE_MASTER SET AUTH_STATUS = 'U' WHERE IMP_MASTER_ID = @p_IMP_MASTER_ID IF @@Error <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result, N'Gửi phê duyệt thành công' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' ErrorDesc RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[ASS_IMPORT_UPDATE_Upd]' GO CREATE PROCEDURE [dbo].[ASS_IMPORT_UPDATE_Upd] @p_IMP_MASTER_ID VARCHAR(15) = NULL, @p_NOTES NVARCHAR(4000) = NULL, @p_RECORD_STATUS varchar(1) = NULL, @p_MAKER_ID VARCHAR(100) = NULL, @p_CREATE_DT VARCHAR(50) = NULL, @p_AUTH_STATUS VARCHAR(50) = NULL, @p_CHECKER_ID VARCHAR(100) = NULL, @p_APPROVE_DT VARCHAR(50) = NULL, @p_JSON_DATA NVARCHAR(MAX) = NULL AS DECLARE @ASSET_ID VARCHAR(15), @BRANCH_ID VARCHAR(15), @DEP_ID VARCHAR(15), @EMP_ID VARCHAR(15), @NOTES NVARCHAR(4000), @ASSET_DESC NVARCHAR(4000), @ASSET_SERIAL_NO NVARCHAR(4000), @ASSET_ID_OLD VARCHAR(15), @BRANCH_ID_OLD VARCHAR(15), @DEP_ID_OLD VARCHAR(15), @EMP_ID_OLD VARCHAR(15), @NOTES_OLD NVARCHAR(4000), @ASSET_DESC_OLD NVARCHAR(4000), @ASSET_SERIAL_NO_OLD NVARCHAR(4000) DECLARE cur CURSOR FAST_FORWARD READ_ONLY LOCAL FOR SELECT * FROM OPENJSON(@P_JSON_DATA) WITH ( ASSET_ID VARCHAR(15) '$.ASSET_ID', BRANCH_ID VARCHAR(15) '$.BRANCH_ID', DEP_ID VARCHAR(15) '$.DEP_ID', EMP_ID VARCHAR(15) '$.EMP_ID', NOTES NVARCHAR(4000) '$.NOTES', ASSET_DESC NVARCHAR(4000) '$.ASSET_DESC', ASSET_SERIAL_NO NVARCHAR(4000) '$.ASSET_SERIAL_NO', BRANCH_ID_OLD VARCHAR(15) '$.BRANCH_ID_OLD', DEP_ID_OLD VARCHAR(15) '$.DEP_ID_OLD', EMP_ID_OLD VARCHAR(15) '$.EMP_ID_OLD', NOTES_OLD NVARCHAR(4000) '$.NOTES_OLD', ASSET_DESC_OLD NVARCHAR(4000) '$.ASSET_DESC_OLD', ASSET_SERIAL_NO_OLD NVARCHAR(4000) '$.ASSET_SERIAL_NO_OLD' ) OPEN cur BEGIN TRANSACTION UPDATE ASS_IMPORT_UPDATE_MASTER SET NOTES = @p_NOTES WHERE IMP_MASTER_ID = @p_IMP_MASTER_ID FETCH NEXT FROM cur INTO @ASSET_ID,@BRANCH_ID,@DEP_ID,@EMP_ID,@NOTES,@ASSET_DESC,@ASSET_SERIAL_NO,@BRANCH_ID_OLD,@DEP_ID_OLD,@EMP_ID_OLD,@NOTES_OLD,@ASSET_DESC_OLD,@ASSET_SERIAL_NO_OLD WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @l_IMP_DT_ID VARCHAR(15) EXEC SYS_CodeMasters_Gen 'ASS_IMPORT_UPDATE_DT', @l_IMP_DT_ID out IF @l_IMP_DT_ID='' OR @l_IMP_DT_ID IS NULL GOTO ABORT INSERT INTO ASS_IMPORT_UPDATE_DT (IMP_DT_ID, IMP_MASTER_ID, ASSET_ID, BRANCH_ID, DEP_ID, EMP_ID, NOTES, ASSET_DESC, ASSET_SERIAL_NO, BRANCH_ID_OLD, DEP_ID_OLD, EMP_ID_OLD, NOTES_OLD, ASSET_DESC_OLD, ASSET_SERIAL_NO_OLD) VALUES (@l_IMP_DT_ID, @p_IMP_MASTER_ID, @ASSET_ID, @BRANCH_ID, @DEP_ID, @EMP_ID, @NOTES, @ASSET_DESC, @ASSET_SERIAL_NO, @BRANCH_ID_OLD, @DEP_ID_OLD, @EMP_ID_OLD, @NOTES_OLD, @ASSET_DESC_OLD, @ASSET_SERIAL_NO_OLD); FETCH NEXT FROM cur INTO @ASSET_ID,@BRANCH_ID,@DEP_ID,@EMP_ID,@NOTES,@ASSET_DESC,@ASSET_SERIAL_NO,@BRANCH_ID_OLD,@DEP_ID_OLD,@EMP_ID_OLD,@NOTES_OLD,@ASSET_DESC_OLD,@ASSET_SERIAL_NO_OLD END CLOSE cur DEALLOCATE cur INSERT INTO PL_PROCESS (REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES) VALUES (@p_IMP_MASTER_ID, 'UPDATE', @p_MAKER_ID, GETDATE(), N'Nhân viên cập nhật', N'Cập nhật import tài sản thành công'); IF @@ERROR <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' as Result,@p_IMP_MASTER_ID ID, N'Cập nhật thành công' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' AS RESULT RETURN '-1' End GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[CM_DEPARTMENT_GET_BLOCK_CENTER]' GO CREATE PROCEDURE [dbo].[CM_DEPARTMENT_GET_BLOCK_CENTER] @p_DEP_ID_INPUT VARCHAR(15), @p_BLOCK_ID VARCHAR(15) OUT, @p_CENTER_ID VARCHAR(15) OUT, @p_DEP_ID VARCHAR(15) OUT AS SELECT @p_BLOCK_ID = (CASE WHEN DP.TYPE = 'K' THEN DP.DEP_ID ELSE K.DEP_ID END), @p_CENTER_ID = (CASE WHEN DP.TYPE = 'TT' THEN DP.DEP_ID ELSE TT.DEP_ID END), @p_DEP_ID = (CASE WHEN DP.TYPE = 'PB' THEN DP.DEP_ID ELSE NULL END) FROM CM_DEPARTMENT DP LEFT JOIN CM_DEPARTMENT TT ON DP.FATHER_ID = TT.DEP_ID --TRUNG TÂM LEFT JOIN CM_DEPARTMENT K ON DP.KHOI_ID = K.DEP_ID --KHỐI WHERE DP.DEP_ID = @p_DEP_ID_INPUT GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[ASS_IMPORT_UPDATE_Import]' GO CREATE PROCEDURE [dbo].[ASS_IMPORT_UPDATE_Import] @P_JSON_DATA NVARCHAR(MAX) AS BEGIN DECLARE @TMPASSETCODE TABLE( ASSET_CODE VARCHAR(100), BRANCH_CODE VARCHAR(100), DEP_CODE VARCHAR(100), EMP_CODE VARCHAR(100), NOTES NVARCHAR(4000), ASSET_DESC NVARCHAR(4000), ASSET_SERIAL_NO NVARCHAR(4000) ) INSERT INTO @TMPASSETCODE SELECT * FROM OPENJSON(@P_JSON_DATA) WITH ( ASSET_CODE VARCHAR(100) '$.ASSET_CODE', BRANCH_CODE VARCHAR(1000) '$.BRANCH_CODE', DEP_CODE VARCHAR(100) '$.DEP_CODE', EMP_CODE VARCHAR(100) '$.EMP_CODE', NOTES NVARCHAR(4000) '$.NOTES', ASSET_DESC NVARCHAR(4000) '$.ASSET_DESC', ASSET_SERIAL_NO NVARCHAR(4000) '$.ASSET_SERIAL_NO' ) DECLARE @ERROR_MESSAGE NVARCHAR(MAX) SELECT @ERROR_MESSAGE = STUFF( ( SELECT ',' + A.ROW FROM ( SELECT CONVERT(VARCHAR(10),ROW_NUMBER() OVER (ORDER BY (SELECT 1))) AS ROW, T.ASSET_CODE FROM @TMPASSETCODE T ) A WHERE A.ASSET_CODE IS NULL FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') IF(LEN(@ERROR_MESSAGE) > 0) BEGIN SET @ERROR_MESSAGE = N'Dòng: ' + @ERROR_MESSAGE + N' mã tài sản không được để trống' EXEC SP_SETERRORMESSAGE @ERROR_MESSAGE RETURN '-1' END SELECT @ERROR_MESSAGE = STUFF( ( SELECT ',' + A.ROW FROM ( SELECT CONVERT(VARCHAR(10),ROW_NUMBER() OVER (ORDER BY (SELECT 1))) AS ROW, T.BRANCH_CODE FROM @TMPASSETCODE T LEFT JOIN ASS_MASTER B ON T.ASSET_CODE = B.ASSET_CODE WHERE B.BRANCH_ID IS NOT NULL AND B.BRANCH_ID <> '' ) A WHERE A.BRANCH_CODE IS NULL FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') IF(LEN(@ERROR_MESSAGE) > 0) BEGIN SET @ERROR_MESSAGE = N'Dòng: ' + @ERROR_MESSAGE + N' mã đơn vị không được để trống' EXEC SP_SETERRORMESSAGE @ERROR_MESSAGE RETURN '-1' END SELECT @ERROR_MESSAGE = STUFF( ( SELECT T.EMP_CODE FROM @TMPASSETCODE T LEFT JOIN CM_EMPLOYEE E ON T.EMP_CODE = E.EMP_CODE WHERE E.EMP_ID IS NULL AND T.EMP_CODE IS NOT NULL AND T.EMP_CODE <> '' FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') IF(LEN(@ERROR_MESSAGE) > 0) BEGIN SET @ERROR_MESSAGE = N'Người dùng không tồn tại trên hệ thống: ' + @ERROR_MESSAGE EXEC SP_SETERRORMESSAGE @ERROR_MESSAGE RETURN '-1' END SELECT @ERROR_MESSAGE = STUFF( ( SELECT N'Người dùng ' + A.EMP_CODE + N' và tài sản ' + A.ASSET_CODE + N' không cùng Đơn vị/Phòng ban với nhau
' FROM @TMPASSETCODE A LEFT JOIN ASS_MASTER B ON A.ASSET_CODE = B.ASSET_CODE LEFT JOIN CM_EMPLOYEE E ON A.EMP_CODE = E.EMP_CODE WHERE A.EMP_CODE IS NOT NULL AND A.EMP_CODE <> '' AND (ISNULL(E.BRANCH_ID,'') <> ISNULL(B.BRANCH_ID,'') OR ISNULL(E.DEP_ID,'') <> ISNULL(B.DEPT_ID,'')) FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') IF(LEN(@ERROR_MESSAGE) > 0) BEGIN SET @ERROR_MESSAGE = @ERROR_MESSAGE EXEC SP_SETERRORMESSAGE @ERROR_MESSAGE RETURN '-1' END SELECT @ERROR_MESSAGE = STUFF( ( SELECT ',' + T.ASSET_CODE FROM @TMPASSETCODE T LEFT JOIN ASS_MASTER B ON T.ASSET_CODE = B.ASSET_CODE WHERE B.ASSET_ID IS NULL FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') IF(LEN(@ERROR_MESSAGE) > 0) BEGIN SET @ERROR_MESSAGE = N'Mã tài sản không tồn tại trong hệ thống: ' + @ERROR_MESSAGE EXEC SP_SETERRORMESSAGE @ERROR_MESSAGE RETURN '-1' END SELECT @ERROR_MESSAGE = STUFF( ( SELECT ',' + T.ASSET_CODE FROM @TMPASSETCODE T GROUP BY T.ASSET_CODE HAVING COUNT(*) > 1 FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') IF(LEN(@ERROR_MESSAGE) > 0) BEGIN SET @ERROR_MESSAGE = N'Mã tài sản bị trùng: ' + @ERROR_MESSAGE EXEC SP_SETERRORMESSAGE @ERROR_MESSAGE RETURN '-1' END SELECT @ERROR_MESSAGE = STUFF( ( SELECT ',' + T.BRANCH_CODE FROM @TMPASSETCODE T WHERE T.BRANCH_CODE IS NOT NULL AND T.BRANCH_CODE <> '' AND NOT EXISTS(SELECT 1 FROM CM_BRANCH B WHERE B.BRANCH_CODE = T.BRANCH_CODE AND B.RECORD_STATUS = '1') FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') IF(LEN(@ERROR_MESSAGE) > 0) BEGIN SET @ERROR_MESSAGE = N'Mã đơn vị không tồn tại trong hệ thống: ' + @ERROR_MESSAGE EXEC SP_SETERRORMESSAGE @ERROR_MESSAGE RETURN '-1' END SELECT @ERROR_MESSAGE = STUFF( ( SELECT ',' + A.ASSET_CODE FROM @TMPASSETCODE A LEFT JOIN ASS_MASTER B ON A.ASSET_CODE = B.ASSET_CODE LEFT JOIN CM_BRANCH C ON B.BRANCH_ID = C.BRANCH_ID LEFT JOIN CM_DEPARTMENT D ON B.DEPT_ID = D.DEP_ID WHERE (ISNULL(C.BRANCH_CODE,'') <> ISNULL(A.BRANCH_CODE,'') OR ISNULL(D.DEP_CODE,'') <> ISNULL(A.DEP_CODE,'')) AND A.BRANCH_CODE IS NOT NULL AND A.BRANCH_CODE <> '' FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') IF(LEN(@ERROR_MESSAGE) > 0) BEGIN SET @ERROR_MESSAGE = N'Những tài sản có Đơn vị/Phòng ban không khớp với tài sản trên hệ thống: ' + @ERROR_MESSAGE EXEC SP_SETERRORMESSAGE @ERROR_MESSAGE RETURN '-1' END SELECT B.ASSET_ID,B.ASSET_CODE,B.ASSET_NAME, G.BRANCH_ID,G.BRANCH_CODE,G.BRANCH_NAME, H.DEP_ID,H.DEP_CODE,H.DEP_NAME, E.EMP_ID,E.EMP_CODE,E.EMP_NAME, A.NOTES,A.ASSET_DESC,A.ASSET_SERIAL_NO, B.ASSET_ID AS ASSET_ID_OLD,B.ASSET_CODE AS ASSET_CODE_OLD,B.ASSET_NAME AS ASSET_NAME_OLD, C.BRANCH_ID AS BRANCH_ID_OLD,C.BRANCH_CODE AS BRANCH_CODE_OLD,C.BRANCH_NAME AS BRANCH_NAME_OLD, D.DEP_ID AS DEP_ID_OLD,D.DEP_CODE AS DEP_CODE_OLD,D.DEP_NAME AS DEP_NAME_OLD, F.EMP_ID AS EMP_ID_OLD,F.EMP_CODE AS EMP_CODE_OLD,F.EMP_NAME AS EMP_NAME_OLD, B.NOTES AS NOTES_OLD,B.ASSET_DESC AS ASSET_DESC_OLD,B.ASSET_SERIAL_NO AS ASSET_SERIAL_NO_OLD FROM @TMPASSETCODE A LEFT JOIN ASS_MASTER B ON A.ASSET_CODE = B.ASSET_CODE LEFT JOIN CM_BRANCH C ON B.BRANCH_ID = C.BRANCH_ID LEFT JOIN CM_DEPARTMENT D ON B.DEPT_ID = D.DEP_ID LEFT JOIN CM_EMPLOYEE F ON B.EMP_ID = F.EMP_ID LEFT JOIN CM_BRANCH G ON A.BRANCH_CODE = G.BRANCH_CODE LEFT JOIN CM_DEPARTMENT H ON A.DEP_CODE = H.DEP_CODE LEFT JOIN CM_EMPLOYEE E ON A.EMP_CODE = E.EMP_CODE END GO IF @@ERROR <> 0 SET NOEXEC ON GO PRINT N'Creating [dbo].[ASS_COST_ALLOCATION_Import]' GO CREATE PROCEDURE [dbo].[ASS_COST_ALLOCATION_Import] @p_XmlData XML = NULL AS DECLARE @BRANCH_CODE VARCHAR(25), @DEP_CODE VARCHAR(25), @COST_AMOUNT DECIMAL(18,2), @COST_MONTH INT, @COST_RATE DECIMAL(18,2) DECLARE @TableCost TABLE ( BRANCH_ID VARCHAR(25), DEPT_ID VARCHAR(25), COST_AMOUNT VARCHAR(25), COST_RATE VARCHAR(25), COST_MONTH VARCHAR(25) ) Declare @hdoc INT Exec sp_xml_preparedocument @hdoc Output,@p_XmlData SELECT T.BRANCH_CODE ,T.DEP_CODE ,T.COST_AMOUNT ,T.COST_MONTH ,T.COST_RATE, cb.BRANCH_ID, cb.BRANCH_NAME, cd.DEP_ID, cd.DEP_NAME FROM ( SELECT BRANCH_CODE,DEP_CODE,COST_AMOUNT,COST_MONTH,COST_RATE FROM OPENXML(@hdoc,'/Root/XmlData',2) WITH ( BRANCH_CODE varchar(15), DEP_CODE VARCHAR(15), COST_AMOUNT DECIMAL(18,2), COST_MONTH INT, COST_RATE DECIMAL(18,2) ) ) T LEFT JOIN CM_BRANCH cb ON cb.BRANCH_CODE=T.BRANCH_CODE LEFT JOIN CM_DEPARTMENT cd ON cd.DEP_CODE=T.DEP_CODE