ALTER PROCEDURE dbo.aSS_PRIVATE_TRANSFER_MASTER_SendAppr @p_TRANSFER_MULTI_ID VARCHAR(15) = NULL, @p_TYPE_APP NVARCHAR(15) = NUll, @p_USER_LOGIN VARCHAR(15) = NULL AS DECLARE @ASSET_ID_LST VARCHAR(MAX), @CURRENT_TRANS_ERROR NVARCHAR(MAX) -- KIỂM TRA TÀI SẢN ĐANG TREO TRONG GIAO DỊCH KHÁC SET @ASSET_ID_LST = (SELECT B.ASSET_ID + '|' FROM (SELECT A.ASSET_ID FROM ASS_PRIVATE_TRANSFER_DT A where A.TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID) B FOR XML PATH ('')) SELECT @CURRENT_TRANS_ERROR = dbo.ASSET_CHECK_CURRENT_TRANS(@ASSET_ID_LST) IF(@CURRENT_TRANS_ERROR IS NOT NULL AND @CURRENT_TRANS_ERROR <> '') BEGIN SELECT '-1' as Result, '' WH_O_HCQT_MUL_ID, @CURRENT_TRANS_ERROR ErrorDesc RETURN '-1' END BEGIN TRANSACTION DECLARE @BRANCH_ID VARCHAR(15) = (SELECT TU.TLSUBBRID FROM TL_USER TU WHERE TU.TLNANME = @p_USER_LOGIN) DECLARE @MESSAGE_VALIDATION NVARCHAR(MAX) BEGIN IF(EXISTS(SELECT 1 FROM dbo.ASS_PRIVATE_TRANSFER_MASTER aptm WHERE aptm.TRANS_MULTI_MASTER_ID=@p_TRANSFER_MULTI_ID AND AUTH_STATUS='R')) BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, N'Gửi duyệt thất bại! Thông tin điều chuyển phiếu số: '+@p_TRANSFER_MULTI_ID + N' đang bị từ chối. Vui lòng xử lý phiếu' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT SUM(A.COUNT) FROM( SELECT COUNT(*) AS COUNT FROM ASS_PRIVATE_TRANSFER_DT A WHERE A.TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID AND A.EMP_ID_OLD IS NOT NULL AND A.EMP_ID_OLD <> '' GROUP BY A.EMP_ID_OLD) A HAVING COUNT(*) > 1)) BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, N'Chỉ được điều chuyển tài sản từ 1 người sử dụng.'ErrorDesc RETURN '-1' END IF(EXISTS(SELECT SUM(A.COUNT) FROM( SELECT COUNT(*) AS COUNT FROM ASS_PRIVATE_TRANSFER_DT A WHERE A.TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID AND A.EMP_ID IS NOT NULL AND A.EMP_ID <> '' GROUP BY A.EMP_ID) A HAVING COUNT(*) > 1)) BEGIN ROLLBACK TRANSACTION SELECT '-1' Result, N'Chỉ được điều chuyển tài sản cho 1 người sử dụng.'ErrorDesc RETURN '-1' END IF(EXISTS(SELECT 1 FROM ASS_PRIVATE_TRANSFER_DT A LEFT JOIN ASS_MASTER B ON A.ASSET_ID = B.ASSET_ID LEFT JOIN CM_EMPLOYEE C ON A.EMP_ID = C.EMP_ID WHERE A.EMP_ID IS NOT NULL AND A.EMP_ID <> '' AND (ISNULL(B.BRANCH_ID,'') <> ISNULL(C.BRANCH_ID,'') OR ISNULL(B.DEPT_ID,'') <> ISNULL(C.DEP_ID,'')) AND A.TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID)) BEGIN SET @MESSAGE_VALIDATION = (SELECT REPLACE((SELECT CASE WHEN ROW_NUMBER() OVER (ORDER BY (SELECT 0)) = 1 THEN '' ELSE '|' END + N'Tài sản ' + D.ASSET_CODE + N' và người dùng ' + D.EMP_NAME + N' không cùng Đơn vị/Phòng ban với nhau' FROM ( SELECT B.ASSET_CODE,C.EMP_NAME FROM ASS_PRIVATE_TRANSFER_DT A LEFT JOIN ASS_MASTER B ON A.ASSET_ID = B.ASSET_ID LEFT JOIN CM_EMPLOYEE C ON A.EMP_ID = C.EMP_ID WHERE A.EMP_ID IS NOT NULL AND A.EMP_ID <> '' AND (ISNULL(B.BRANCH_ID,'') <> ISNULL(C.BRANCH_ID,'') OR ISNULL(B.DEPT_ID,'') <> ISNULL(C.DEP_ID,'')) AND A.TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID) D FOR XML PATH ('')) , '|', '
')) ROLLBACK TRANSACTION SELECT '-1' Result, @MESSAGE_VALIDATION ErrorDesc RETURN '-1' END UPDATE ASS_PRIVATE_TRANSFER_MASTER SET AUTH_STATUS = 'U' WHERE TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID IF @@ERROR <> 0 GOTO ABORT -- -- HUYHT 06/05/2022: THAY ĐỔI TRẠNG THÁI UPDATE CŨ THÀNH UPDATE_HC -- UPDATE dbo.PL_PROCESS SET PROCESS_ID = 'UPDATE_HC' WHERE REQ_ID = @p_TRANSFER_MULTI_ID AND PROCESS_ID = 'UPDATE' -- UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='C', RECEPTION_DT=GETDATE() WHERE REQ_ID=@p_TRANSFER_MULTI_ID AND PROCESS_ID='QLTS_D' INSERT INTO dbo.PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES) VALUES(@p_TRANSFER_MULTI_ID, 'SEND', @p_USER_LOGIN, GETDATE(), N'Nhân viên gửi phê duyệt', N'Nhân viên gửi phê duyệt thành công') IF @@ERROR <> 0 GOTO ABORT END --PHUCVH 14/11/22 UPDATE TÀI SẢN ĐANG TREO GIAO DỊCH UPDATE ASS_MASTER SET CURRENT_TRANS = @p_TRANSFER_MULTI_ID, CURRENT_TRANS_TYPE = 'ASS_PRIVATE_TF' WHERE ASSET_ID IN (SELECT B.ASSET_ID FROM ASS_PRIVATE_TRANSFER_DT B WHERE B.TRANS_MULTI_MASTER_ID = @p_TRANSFER_MULTI_ID) COMMIT TRANSACTION SELECT '0' as Result, N'Hồ sơ số: '+@p_TRANSFER_MULTI_ID+ -- N' đã được gửi phê duyệt thành công. Vui lòng đợi trưởng đơn vị xác nhận.' ErrorDesc N' đã được gửi phê duyệt thành công. Vui lòng đợi bộ phận phê duyệt xác nhận.' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' TRANS_MULTI_MASTER_ID, '' ErrorDesc RETURN '-1' END