ALTER PROCEDURE [dbo].[TR_REQ_ADVANCE_PAYMENT_Confirm] @p_REQ_PAY_ID varchar(15)= NULL, @p_CHECKER_ID varchar(15) = NULL, @p_NOTES NVARCHAR(MAX) = NULL AS -- BEGIN VALIDATION -- KIEM TRA NEU PHIEU DA XAC NHAN ROI THI KHONG CHO PHÉP XAC NHAN LAN THU 2 IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@p_REQ_PAY_ID AND PROCESS = '' AND @p_CHECKER_ID = TRASFER_USER_RECIVE)) BEGIN SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID ,N'Phiếu đề nghị tạm ứng đã được cấp phê duyệt trung gian xác nhận trước đó' ErrorDesc RETURN '-1' END -- END VALIDATION BEGIN TRANSACTION DECLARE @ROLE_SIGN VARCHAR(50), @REQ_TYPE VARCHAR(15), @BRANCH_CREATE_TYPE VARCHAR(15) SET @BRANCH_CREATE_TYPE = (SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = (SELECT TOP 1 BRANCH_CREATE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@p_REQ_PAY_ID)) --SET @ROLE_SIGN =(SELECT RoleName FROM TL_USER_V2 WHERE TLNANME =@p_CHECKER_ID) SET @ROLE_SIGN = (SELECT STRING_AGG(CONVERT(NVARCHAR (MAX), C.DisplayName), ',') FROM TL_USER A LEFT JOIN AbpUserRoles B ON A.ID = B.UserId LEFT JOIN AbpRoles C ON B.RoleId = C.Id WHERE A.TLNANME = @p_CHECKER_ID) + ',' -- KHAI BAO THEM ROLE NHAN UY QUYEN DECLARE @TABLE_ROLE TABLE (ROLE_AUTH VARCHAR(50)) DECLARE @MENU_PERMISSON NVARCHAR(500) = 'Pages.Administration.ReqTempPayment' INSERT INTO @TABLE_ROLE SELECT RoleDisplayName FROM SYS_PERMISSIONS_PAGE_FOR_USER A WHERE A.TLNAME = @p_CHECKER_ID AND (DATEDIFF(DAY, CONVERT(DATE, A.EffectiveDate, 103) , CONVERT(DATE, GETDATE(), 103)) >= 0 OR A.EffectiveDate IS NULL OR A.EffectiveDate = '') AND (DATEDIFF(DAY, CONVERT(DATE, A.ExpirationDate, 103) , CONVERT(DATE, GETDATE(), 103)) <= 0 OR A.ExpirationDate IS NULL OR A.ExpirationDate = '') AND A.AUTH_STATUS = 'A' AND A.RECORD_STATUS = '1' AND EXISTS(SELECT DT.PER_PAGE_FOR_USER_DT_ID FROM SYS_PERMISSIONS_PAGE_FOR_USER_DT DT WHERE DT.PER_PAGE_FOR_USER_ID = A.PER_PAGE_FOR_USER_ID AND DT.MENU_PERMISSION = @MENU_PERMISSON) DECLARE @ROLE_ID_TL_USER_V2 VARCHAR(50) IF(@ROLE_SIGN IS NOT NULL AND @ROLE_SIGN <>'' AND EXISTS(SELECT TOP 1 A.ROLE_NAME FROM TMP_ROLE_PAYMENT_SEARCH A WHERE CHARINDEX(A.ROLE_NAME + ',', @ROLE_SIGN) > 0)) BEGIN PRINT @ROLE_SIGN END ELSE BEGIN SET @ROLE_ID_TL_USER_V2 = (SELECT TOP 1 RoleName FROM TL_USER_V2 WHERE TLNANME = @p_CHECKER_ID) SET @ROLE_SIGN = @ROLE_SIGN + @ROLE_ID_TL_USER_V2 + ',' END SET @REQ_TYPE =(SELECT REQ_TYPE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID) IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@p_REQ_PAY_ID AND AUTH_STATUS ='R')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID ,N'Bạn không được phép xác nhận hoặc phê duyệt giao dịch này. Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+ N' đang được trả về. Vui lòng đợi nhân viên cập nhật thông tin và gửi phê duyệt lại' ErrorDesc RETURN '-1' END -- NEU LA TAM UNG NOI BO IF(@REQ_TYPE ='I') BEGIN PRINT '0' DECLARE @USER_SIGN VARCHAR(15) SET @USER_SIGN =(SELECT ISNULL(TRASFER_USER_RECIVE,'') FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID) -- NEU LA O HOI SO IF(@BRANCH_CREATE_TYPE ='HS' AND EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND TRASFER_USER_RECIVE IS NOT NULL AND TRASFER_USER_RECIVE <> '')) BEGIN IF(@p_CHECKER_ID <> @USER_SIGN AND (SELECT TOP 1 PROCESS_ID FROM PL_PROCESS WHERE REQ_ID =@p_REQ_PAY_ID ORDER BY ID DESC ) = 'SEND') BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID ,N'Phiếu đề nghị tạm ứng đang chờ cấp phê duyệt trung gian xác nhận. User domain: '+ISNULL(@USER_SIGN,'') ErrorDesc RETURN '-1' END -- doanptt 19/04/2022 nếu người duyệt là trưởng phòng hành chính thì phải duyệt có hạn mức IF(@p_CHECKER_ID <> @USER_SIGN AND CHARINDEX('GDDV,', @ROLE_SIGN) > 0 AND (SELECT B.DEP_CODE FROM TL_USER A LEFT JOIN CM_DEPARTMENT B ON A.DEP_ID = B.DEP_ID WHERE TLNANME =@p_CHECKER_ID) ='0690604' -- mã phòng hành chính AND (SELECT TOP 1 PROCESS_ID FROM PL_PROCESS WHERE REQ_ID =@p_REQ_PAY_ID ORDER BY ID DESC ) = '0') BEGIN ROLLBACK TRANSACTION SELECT '3' as Result, @p_REQ_PAY_ID REQ_PAY_ID ,ISNULL(@USER_SIGN,'') ErrorDesc RETURN '3' END --IF(EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ISNULL(NOTES,'') <> '')) --BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID ,N'Phiếu đề nghị tạm ứng đã được bạn xác nhận trước đó. Vui lòng đợi các cấp duyệt tiếp theo' ErrorDesc -- RETURN '-1' --END END IF(EXISTS(SELECT TOP 1 A.ROLE_NAME FROM TMP_ROLE_PAYMENT_SEARCH A WHERE A.ROLE_NAME IN ('GDDV','PP','KTT','TC','TPTC') AND CHARINDEX(A.ROLE_NAME + ',', @ROLE_SIGN) > 0) OR ( EXISTS (SELECT * FROM @TABLE_ROLE WHERE ROLE_AUTH IN ('GDDV','PP','KTT','TC','TPTC')) AND NOT EXISTS ( SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND TRASFER_USER_RECIVE =@p_CHECKER_ID ) ) ) BEGIN --- LUCTV 11072023_SECRETKEY: RIÊNG CÁC TĐV P.HÀNH CHÍNH NẾU ĐƯỢC CHỌN LÀM CẤP DUYỆT TRUNG GIAN THÌ XÉT DUYỆT TRUNG GIAN, KHÔNG ĐƯỢC XÁC NHẬN TĐV IF(@p_CHECKER_ID = @USER_SIGN AND (SELECT B.DEP_CODE FROM TL_USER A LEFT JOIN CM_DEPARTMENT B ON A.DEP_ID = B.DEP_ID WHERE TLNANME =@p_CHECKER_ID) ='0690604')-- mã phòng hành chính BEGIN UPDATE TR_REQ_ADVANCE_PAYMENT SET PROCESS='',NOTES =N'SIGN' WHERE REQ_PAY_ID =@p_REQ_PAY_ID INSERT INTO PL_PROCESS VALUES (@p_REQ_PAY_ID,'0',@p_CHECKER_ID, GETDATE(),@p_NOTES ,N'Cấp phê duyệt trung gian xác nhận phiếu tạm ứng',NULL) END ELSE BEGIN UPDATE TR_REQ_ADVANCE_PAYMENT SET PROCESS='0',NOTES =N'SIGN' WHERE REQ_PAY_ID =@p_REQ_PAY_ID INSERT INTO PL_PROCESS VALUES (@p_REQ_PAY_ID,'0',@p_CHECKER_ID, GETDATE(),@p_NOTES,N'Trưởng đơn vị xác nhận phiếu tạm ứng',NULL) END END ELSE BEGIN IF((SELECT BRANCH_CREATE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID) ='DV0001') BEGIN UPDATE TR_REQ_ADVANCE_PAYMENT SET PROCESS='',NOTES =N'SIGN' WHERE REQ_PAY_ID =@p_REQ_PAY_ID INSERT INTO PL_PROCESS VALUES (@p_REQ_PAY_ID,'0',@p_CHECKER_ID, GETDATE(),@p_NOTES,N'Cấp phê duyệt trung gian xác nhận phiếu tạm ứng',NULL) END ELSE BEGIN UPDATE TR_REQ_ADVANCE_PAYMENT SET PROCESS='',NOTES =N'SIGN' WHERE REQ_PAY_ID =@p_REQ_PAY_ID INSERT INTO PL_PROCESS VALUES (@p_REQ_PAY_ID,'0',@p_CHECKER_ID, GETDATE(),@p_NOTES,N'Cấp phê duyệt trung gian xác nhận phiếu tạm ứng',NULL) END END -- NẾU NGƯỜI DUYỆT TRÙNG VỚI CẤP PHÊ DUYỆT TRUNG GIAN THÌ KHÔNG CẦN UPDATE PROCESS_ID --UPDATE TR_REQ_ADVANCE_PAYMENT SET PROCESS='', NOTES =N'SIGN' WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND TRASFER_USER_RECIVE =@p_CHECKER_ID AND @REQ_TYPE ='I' AND @BRANCH_CREATE_TYPE ='HS' END -- NEU LA CAC TAM UNG CON LAI ELSE BEGIN UPDATE TR_REQ_ADVANCE_PAYMENT SET PROCESS='',NOTES =N'SIGN' WHERE REQ_PAY_ID =@p_REQ_PAY_ID INSERT INTO PL_PROCESS VALUES (@p_REQ_PAY_ID,'0',@p_CHECKER_ID, GETDATE(),@p_NOTES,N'Cấp phê duyệt trung gian xác nhận phiếu tạm ứng',NULL) END COMMIT TRANSACTION IF(@p_CHECKER_ID =(SELECT ISNULL(TRASFER_USER_RECIVE,'') FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)) BEGIN SELECT '0' as Result, @p_REQ_PAY_ID REQ_PAY_ID ,N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đã được cấp phê duyệt trung gian xác nhận thành công! Vui lòng đợi trưởng đơn vị phê duyệt phiếu' ErrorDesc RETURN '0' END ELSE BEGIN UPDATE TR_REQ_ADVANCE_PAYMENT SET NOTES =N'' WHERE REQ_PAY_ID =@p_REQ_PAY_ID SELECT '0' as Result, @p_REQ_PAY_ID REQ_PAY_ID ,N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đã được xác nhận thành công! Vui lòng đợi các cấp phê duyệt tiếp theo' ErrorDesc RETURN '0' END ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc RETURN '-1' END