ALTER PROCEDURE [dbo].[REAL_ESTATE_R_H_App] @p_RET_R_H_ID VARCHAR(15) = NULL, @p_AUTH_STATUS VARCHAR(1) = NULL, @p_CHECKER_ID varchar(15) = NULL, @p_APPROVE_DT VARCHAR(20) AS DECLARE @sErrorCode VARCHAR(20) DECLARE @aStatus VARCHAR(1) --Put validation here IF(EXISTS (SELECT * FROM REAL_ESTATE_R_H WHERE RET_R_H_ID = @p_RET_R_H_ID AND AUTH_STATUS = 'R')) BEGIN SELECT '-1' AS Result, N'Phê duyệt thất bại. Thông tin BĐS đi thuê đang được trả về' ErrorDesc RETURN '-1' END IF(EXISTS (SELECT * FROM REAL_ESTATE_R_H WHERE RET_R_H_ID = @p_RET_R_H_ID AND AUTH_STATUS = 'A')) BEGIN SELECT '-1' AS Result, N'Phê duyệt thất bại. Thông tin BĐS đi thuê đã được phê duyệt trước đó' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT RET_R_H_ID FROM REAL_ESTATE_R_H WHERE RET_R_H_ID = @p_RET_R_H_ID AND AUTH_STATUS = 'E' AND IS_SEND_APPR = 'N')) BEGIN SELECT '-1' AS Result, N'Phê duyệt thất bại. Thông tin BĐS đi thuê đang ở trạng thái lưu nháp. Vui lòng đợi người tạo gửi yêu cầu phê duyệt' ErrorDesc RETURN '-1' END IF(EXISTS( SELECT RET_R_H_ID FROM REAL_ESTATE_R_H WHERE RET_R_H_ID = @p_RET_R_H_ID AND IS_SEND_APPR = 'Y' AND AUTH_STATUS = 'U' AND(SIGN_USER IS NOT NULL AND SIGN_USER <> '') AND (SIGN_DT IS NULL OR SIGN_DT = '') )) BEGIN SELECT '-1' AS Result, N'Phê duyệt thất bại. Thông tin BĐS đi thuê đang chờ cấp phê duyệt trung gian xác nhận. Vui lòng đợi cấp phê duyệt trung gian xác nhận' ErrorDesc RETURN '-1' END --SET @sErrorCode = '' --SELECT @aStatus = [AUTH_STATUS] FROM REAL_ESTATE_R_H WHERE RET_R_H_ID = @p_RET_R_H_ID --IF @aStatus = 'A' -- SET @sErrorCode = 'CMDG-0001' --IF @sErrorCode <> '' --BEGIN -- SELECT ErrorCode Result, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @sErrorCode -- RETURN '-1' --END BEGIN TRANSACTION --BEGIN -- UPDATE REAL_ESTATE_R_H -- SET AUTH_STATUS = @p_AUTH_STATUS, -- CHECKER_ID = @p_CHECKER_ID, -- APPROVE_DT = CONVERT(DATETIME, @p_APPROVE_DT, 103) -- WHERE RET_R_H_ID = @p_RET_R_H_ID -- IF @@Error <> 0 GOTO ABORT --END UPDATE REAL_ESTATE_R_H SET AUTH_STATUS = @p_AUTH_STATUS, CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME, @p_APPROVE_DT, 103) WHERE RET_R_H_ID = @p_RET_R_H_ID IF @@Error <> 0 GOTO ABORT ----------------BAODNQ 12/9/2022 : Nếu có nhập ngày gia hạn thì ngày kết thúc sẽ bằng ngày gia hạn------ DECLARE @p_EXTEND_DT DATETIME = (SELECT EXTEND_DT FROM REAL_ESTATE_R_H WHERE RET_R_H_ID = @p_RET_R_H_ID) IF(@p_EXTEND_DT IS NOT NULL) BEGIN UPDATE REAL_ESTATE_R_H SET END_DT = @p_EXTEND_DT WHERE RET_R_H_ID = @p_RET_R_H_ID END --------BAODNQ 14/02/2022: Insert vào PL_PROCESS lưu lịch sử xử lý--------- INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_RET_R_H_ID, 'APPROVE', @p_CHECKER_ID, GETDATE(), N'Trưởng đơn vị phê duyệt thành công' , N'Trưởng đơn vị phê duyệt' ) 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 ALTER PROCEDURE [dbo].[REAL_ESTATE_R_H_ById] @p_RET_R_H_ID varchar(15)=NULL AS BEGIN SELECT A.*, BRUS.BRANCH_NAME AS BRANCH_USE_NAME, AUTH.AUTH_STATUS_NAME, CASE WHEN B.CONTRACT_CODE IS NULL OR B.CONTRACT_CODE = '' THEN B.CONTRACT_ID ELSE B.CONTRACT_CODE END AS CONTRACT_CODE, B.CONTRACT_NAME AS CONTRACT_NAME, CASE WHEN DATEDIFF(DAY, A.END_DT, B.END_DT) <> 0 THEN B.APPROVE_DT ELSE A.EXTEND_DT END AS NGAY_GIA_HAN_HD, C.TLFullName AS SIGN_USER_FULLNAME FROM REAL_ESTATE_R_H AS A LEFT JOIN dbo.CM_AUTH_STATUS AUTH ON AUTH.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN CM_BRANCH BRUS ON A.BRANCH_USE = BRUS.BRANCH_ID --------BAODNQ 7/2/2022: Kết thêm bảng TR_CONTRACT, TL_USER LEFT JOIN TR_CONTRACT B ON A.TR_CONTRACT_ID = B.CONTRACT_ID LEFT JOIN TL_USER C ON A.SIGN_USER = C.TLNANME WHERE A.RET_R_H_ID = @p_RET_R_H_ID SELECT * FROM RET_PRICE WHERE RET_R_H_ID = @p_RET_R_H_ID --ORDER BY PRICE_DT DESC END GO ALTER PROCEDURE [dbo].[REAL_ESTATE_R_H_Confirm] @p_RET_R_H_ID VARCHAR(15) = NULL, @p_SIGN_USER VARCHAR(12) = NULL, @p_SIGN_DT VARCHAR(20) = NULL AS BEGIN TRANSACTION IF(EXISTS (SELECT * FROM REAL_ESTATE_R_H WHERE RET_R_H_ID = @p_RET_R_H_ID AND IS_SEND_APPR = 'Y' AND (SIGN_DT IS NOT NULL OR SIGN_DT <> ''))) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result, '' RET_R_H_ID, N'Xác nhận thất bại. Thông tin BĐS đi thuê đã được cấp trung gian xác nhận trước đó' ErrorDesc RETURN '-1' END IF(EXISTS (SELECT * FROM REAL_ESTATE_R_H WHERE RET_R_H_ID = @p_RET_R_H_ID AND AUTH_STATUS = 'R' )) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result, '' RET_R_H_ID, N'Xác nhận thất bại. Thông tin BĐS đi thuê đang bị trả về' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT RET_R_H_ID FROM REAL_ESTATE_R_H WHERE RET_R_H_ID = @p_RET_R_H_ID AND AUTH_STATUS = 'E' AND IS_SEND_APPR = 'N')) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result, '' RET_R_H_ID, N'Xác nhận thất bại. Thông tin BĐS đi thuê đang ở trạng thái lưu nháp. Vui lòng đợi người tạo gửi yêu cầu phê duyệt' ErrorDesc RETURN '-1' END -------Trường hợp người duyệt là cấp phê duyệt trung gian, update SIGN_DT--------- UPDATE REAL_ESTATE_R_H SET AUTH_STATUS = 'U', SIGN_DT = CONVERT(DATETIME, @p_SIGN_DT, 103) WHERE RET_R_H_ID = @p_RET_R_H_ID IF @@ERROR <> 0 GOTO ABORT ------Insert vào bảng lịch sử xử lý------------- INSERT INTO PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES) VALUES(@p_RET_R_H_ID, 'APPROVE', @p_SIGN_USER, GETDATE(), N'Cấp trung gian xác nhận thành công', N'Cấp trung gian xác nhận') IF @@ERROR <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' AS Result, '' RET_R_H_ID, N'Thông tin BĐS đi thuê: ' +@p_RET_R_H_ID+ N' đã được xác nhận thành công. Vui lòng đợi trưởng đơn vị phê duyệt.' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result, '' RET_R_H_ID, '' ErrorDesc RETURN '-1' END GO ALTER PROCEDURE [dbo].[REAL_ESTATE_R_H_Search] @p_RET_R_H_ID varchar(15)=NULL, @p_BRANCH_MANAGE varchar(15)=NULL, @p_BRANCH_USE varchar(15)=NULL, @p_BRANCH_LOGIN varchar(15)=NULL, @p_BRANCH_CREATE varchar(15)=NULL, @p_RET_ADDR nvarchar(MAX)=NULL, @p_RET_R_H_TIME decimal=NULL, @p_START_DT VARCHAR(20)=NULL, @p_R_LAND_SQUARE decimal=NULL, @p_SCALE NVARCHAR(500)=NULL, @p_CONSTRUCT_SQUARE decimal=NULL, @p_DEPOSIT varchar(1)=NULL, @p_DEPOSIT_PRICE decimal=NULL, @p_DEPOSIT_RETURN_DT VARCHAR(500)=NULL, @p_PURCHASE_EACH_TERM NVARCHAR(500)=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_LEVEL VARCHAR(50) = 'UNIT', @p_TOP INT = 300, -------BAODNQ 14/2/2022: Truyền thêm tham số------ @p_USER_LOGIN VARCHAR(15) AS BEGIN -- PAGING declare @tmp table(BRANCH_ID varchar(15)) insert into @tmp SELECT BRANCH_ID FROM [dbo].[CM_BRANCH_GETCHILDID](@p_BRANCH_LOGIN) DECLARE @TODATE DATETIME = GETDATE() --DECLARE @p_USER_LOGIN_ROLE VARCHAR(15) = (SELECT RoleName FROM TL_USER WHERE TLNANME = @p_USER_LOGIN) DECLARE @t_USER_LOGIN_ROLE_TABLE TABLE (BRANCH_ID VARCHAR(20), DEPT_ID VARCHAR(15), ROLE_ID VARCHAR(20)) INSERT INTO @t_USER_LOGIN_ROLE_TABLE(BRANCH_ID, DEPT_ID, ROLE_ID) SELECT * FROM [dbo].[TL_USER_GET_ROLES](@p_USER_LOGIN) IF(@p_TOP IS NULL OR @p_TOP = '' OR @p_TOP = 0) -- PAGING BEGIN SELECT A.*, BRMN.BRANCH_NAME BRANCH_MANAGE_NAME, BR_USE.BRANCH_NAME BRANCH_USE_NAME, BRNC.BRANCH_NAME BRANCH_CREATE_NAME, PR.PRICE RET_PRICE, AUTH.AUTH_STATUS_NAME, TUM.TLFullName AS MAKER_NAME -- SELECT END FROM REAL_ESTATE_R_H AS A LEFT JOIN dbo.CM_BRANCH BRNC ON BRNC.BRANCH_ID = A.BRANCH_CREATE LEFT JOIN CM_BRANCH BRMN ON BRMN.BRANCH_ID = A.BRANCH_MANAGE --------BAODNQ: 7/2/2022: Kết thêm giá trị----------- LEFT JOIN CM_BRANCH BR_USE ON BR_USE.BRANCH_ID = A.BRANCH_USE LEFT JOIN dbo.CM_AUTH_STATUS AUTH ON AUTH.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN TL_USER TUM ON A.MAKER_ID = TUM.TLNANME LEFT JOIN ( SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY RET_R_H_ID ORDER BY A.PRICE_END_DT DESC) AS rn FROM RET_PRICE A WHERE PRICE_END_DT IS NOT NULL AND PRICE_DT <= @TODATE ) PRICE WHERE RN = 1 ) PR ON PR.RET_R_H_ID = A.RET_R_H_ID WHERE (@p_RET_R_H_ID IS NULL OR @p_RET_R_H_ID='' OR A.RET_R_H_ID = @p_RET_R_H_ID) AND (@p_BRANCH_MANAGE IS NULL OR @p_BRANCH_MANAGE='' OR A.BRANCH_MANAGE LIKE '%' + @p_BRANCH_MANAGE + '%') AND (@p_BRANCH_USE IS NULL OR @p_BRANCH_USE='' OR A.BRANCH_USE LIKE '%' + @p_BRANCH_USE + '%') AND (@p_RET_ADDR IS NULL OR @p_RET_ADDR='' OR A.RET_ADDR LIKE N'%' + @p_RET_ADDR + '%') AND (@p_RET_R_H_TIME IS NULL OR A.RET_R_H_TIME = @p_RET_R_H_TIME) AND (@p_START_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.START_DT,CONVERT(datetime, @p_START_DT,103)) = 0) AND (@p_R_LAND_SQUARE IS NULL OR A.R_LAND_SQUARE = @p_R_LAND_SQUARE) AND (@p_SCALE IS NULL OR A.SCALE = @p_SCALE) AND (@p_CONSTRUCT_SQUARE IS NULL OR A.CONSTRUCT_SQUARE = @p_CONSTRUCT_SQUARE) AND (@p_DEPOSIT IS NULL OR @p_DEPOSIT='' OR A.DEPOSIT = @p_DEPOSIT) AND (@p_DEPOSIT_PRICE IS NULL OR A.DEPOSIT_PRICE = @p_DEPOSIT_PRICE) AND (@p_DEPOSIT_RETURN_DT IS NULL OR A.DEPOSIT_RETURN_DT LIKE '%' + @p_DEPOSIT_RETURN_DT + '%') AND (@p_PURCHASE_EACH_TERM IS NULL OR @p_PURCHASE_EACH_TERM = '' OR A.PURCHASE_EACH_TERM = @p_PURCHASE_EACH_TERM) AND (@p_NOTES IS NULL OR @p_NOTES='' OR A.NOTES LIKE N'%' + @p_NOTES + '%') AND (@p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS='' OR A.RECORD_STATUS = @p_RECORD_STATUS) AND (@p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS='' OR A.AUTH_STATUS = @p_AUTH_STATUS) AND (@p_MAKER_ID IS NULL OR @p_MAKER_ID='' OR A.MAKER_ID = @p_MAKER_ID) AND (@p_CREATE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_CREATE_DT,103)) = 0) AND (@p_CHECKER_ID IS NULL OR @p_CHECKER_ID='' OR A.CHECKER_ID = @p_CHECKER_ID) AND (@p_APPROVE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.APPROVE_DT,CONVERT(datetime, @p_APPROVE_DT,103)) = 0) AND ( (@p_BRANCH_LOGIN = '' OR @p_BRANCH_LOGIN IS NULL) OR (@P_LEVEL = 'ALL' AND A.BRANCH_CREATE IN (SELECT BRANCH_ID from @tmp)) OR ((@P_LEVEL = 'UNIT' AND A.BRANCH_CREATE = @p_BRANCH_LOGIN) )) -------BAODNQ 14/2/2022: Thêm điều kiện search------- --AND (A.MAKER_ID = @p_USER_LOGIN ---- ng login là ng tạo -- OR (A.SIGN_USER = @p_USER_LOGIN AND A.IS_SEND_APPR = 'Y') --- ng login là cấp duyệt trung gian và đã gửi YC phê duyệt -- OR ((@p_USER_LOGIN_ROLE IN('GDDV','PGD', 'TP', 'PP','TPGD','PPGD', 'TBP')) --- ng login là trưởng ĐV và đã gửi YC phê duyệt -- AND A.IS_SEND_APPR = 'Y' -- AND ( -- ISNULL(A.SIGN_USER,'') = '' OR (ISNULL(A.SIGN_USER,'') <> '' AND A.SIGN_DT IS NOT NULL) -- ) -- ) -- ) --AND (A.MAKER_ID = @p_USER_LOGIN ---- user login là ng tạo -- OR (A.SIGN_USER = @p_USER_LOGIN AND A.IS_SEND_APPR = 'Y') --- user login là cấp duyệt trung gian và đã gửi YC phê duyệt -- OR ( -- --user login là trưởng ĐV và đã gửi YC phê duyệt -- ( -- ------user login là trưởng ĐV ở hội sở-------- -- ( -- EXISTS(SELECT * FROM CM_BRANCH WHERE BRANCH_ID = A.BRANCH_CREATE AND BRANCH_TYPE = 'HS') -- AND (SELECT DEP_ID FROM TL_USER WHERE TLNANME = A.MAKER_ID) -- = (SELECT TOP 1 DEPT_ID FROM @t_USER_LOGIN_ROLE_TABLE WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP')) -- ) -- ------user login là trưởng ĐV ở CN/PGD -- OR -- ( -- NOT EXISTS(SELECT * FROM CM_BRANCH WHERE BRANCH_ID = A.BRANCH_CREATE AND BRANCH_TYPE = 'HS') -- AND A.BRANCH_CREATE = (SELECT TOP 1 BRANCH_ID FROM @t_USER_LOGIN_ROLE_TABLE WHERE ROLE_ID IN ('GDDV', 'PGD', 'TPGD', 'PPGD')) -- ) -- ) -- AND A.IS_SEND_APPR = 'Y' -- AND ( -- ISNULL(A.SIGN_USER,'') = '' OR (ISNULL(A.SIGN_USER,'') <> '' AND A.SIGN_DT IS NOT NULL) -- ) -- ) --) -----------BAODNQ: NẾU Ở HỘI SỞ TÌM THẤY NHỮNG PHIẾU THEO PHÒNG BAN------------------ ----------------NẾU Ở DVKD TÌM THẤY PHIẾU THEO ĐƠN VỊ-------------------- AND( A.BRANCH_CREATE = @p_BRANCH_LOGIN AND( (SELECT DEP_ID FROM TL_USER WHERE TLNANME = A.MAKER_ID) = (SELECT TOP 1 DEPT_ID FROM @t_USER_LOGIN_ROLE_TABLE) OR (SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @p_BRANCH_LOGIN) <> 'HS' ) ) ORDER BY A.CREATE_DT DESC -- PAGING END ELSE -- PAGING BEGIN SELECT TOP(CONVERT(INT, @p_TOP)) A.*, BRMN.BRANCH_NAME BRANCH_MANAGE_NAME, BR_USE.BRANCH_NAME BRANCH_USE_NAME, BRNC.BRANCH_NAME BRANCH_CREATE_NAME, PR.PRICE RET_PRICE, AUTH.AUTH_STATUS_NAME, TUM.TLFullName AS MAKER_NAME -- SELECT END FROM REAL_ESTATE_R_H AS A LEFT JOIN dbo.CM_BRANCH BRNC ON BRNC.BRANCH_ID = A.BRANCH_CREATE LEFT JOIN CM_BRANCH BRMN ON BRMN.BRANCH_ID = A.BRANCH_MANAGE --------BAODNQ: 7/2/2022: Kết thêm giá trị----------- LEFT JOIN CM_BRANCH BR_USE ON BR_USE.BRANCH_ID = A.BRANCH_USE LEFT JOIN dbo.CM_AUTH_STATUS AUTH ON AUTH.AUTH_STATUS = A.AUTH_STATUS LEFT JOIN TL_USER TUM ON A.MAKER_ID = TUM.TLNANME LEFT JOIN ( SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY RET_R_H_ID ORDER BY A.PRICE_END_DT DESC) AS rn FROM RET_PRICE A WHERE PRICE_END_DT IS NOT NULL AND PRICE_DT <= @TODATE ) PRICE WHERE RN = 1 ) PR ON PR.RET_R_H_ID = A.RET_R_H_ID WHERE (@p_RET_R_H_ID IS NULL OR @p_RET_R_H_ID='' OR A.RET_R_H_ID = @p_RET_R_H_ID) AND (@p_BRANCH_MANAGE IS NULL OR @p_BRANCH_MANAGE='' OR A.BRANCH_MANAGE LIKE '%' + @p_BRANCH_MANAGE + '%') AND (@p_BRANCH_USE IS NULL OR @p_BRANCH_USE='' OR A.BRANCH_USE LIKE '%' + @p_BRANCH_USE + '%') AND (@p_RET_ADDR IS NULL OR @p_RET_ADDR='' OR A.RET_ADDR LIKE N'%' + @p_RET_ADDR + '%') AND (@p_RET_R_H_TIME IS NULL OR A.RET_R_H_TIME = @p_RET_R_H_TIME) AND (@p_START_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.START_DT,CONVERT(datetime, @p_START_DT,103)) = 0) AND (@p_R_LAND_SQUARE IS NULL OR A.R_LAND_SQUARE = @p_R_LAND_SQUARE) AND (@p_SCALE IS NULL OR A.SCALE = @p_SCALE) AND (@p_CONSTRUCT_SQUARE IS NULL OR A.CONSTRUCT_SQUARE = @p_CONSTRUCT_SQUARE) AND (@p_DEPOSIT IS NULL OR @p_DEPOSIT='' OR A.DEPOSIT = @p_DEPOSIT) AND (@p_DEPOSIT_PRICE IS NULL OR A.DEPOSIT_PRICE = @p_DEPOSIT_PRICE) AND (@p_DEPOSIT_RETURN_DT IS NULL OR A.DEPOSIT_RETURN_DT LIKE '%' + @p_DEPOSIT_RETURN_DT + '%') AND (@p_PURCHASE_EACH_TERM IS NULL OR @p_PURCHASE_EACH_TERM = '' OR A.PURCHASE_EACH_TERM = @p_PURCHASE_EACH_TERM) AND (@p_NOTES IS NULL OR @p_NOTES='' OR A.NOTES LIKE N'%' + @p_NOTES + '%') AND (@p_RECORD_STATUS IS NULL OR @p_RECORD_STATUS='' OR A.RECORD_STATUS = @p_RECORD_STATUS) AND (@p_AUTH_STATUS IS NULL OR @p_AUTH_STATUS='' OR A.AUTH_STATUS = @p_AUTH_STATUS) AND (@p_MAKER_ID IS NULL OR @p_MAKER_ID='' OR A.MAKER_ID = @p_MAKER_ID) AND (@p_CREATE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.CREATE_DT,CONVERT(datetime, @p_CREATE_DT,103)) = 0) AND (@p_CHECKER_ID IS NULL OR @p_CHECKER_ID='' OR A.CHECKER_ID = @p_CHECKER_ID) AND (@p_APPROVE_DT IS NULL OR DATEDIFF(DAYOFYEAR, A.APPROVE_DT,CONVERT(datetime, @p_APPROVE_DT,103)) = 0) AND ( (@p_BRANCH_LOGIN = '' OR @p_BRANCH_LOGIN IS NULL) OR (@P_LEVEL = 'ALL' AND A.BRANCH_CREATE IN (SELECT BRANCH_ID from @tmp)) OR ((@P_LEVEL = 'UNIT' AND A.BRANCH_CREATE = @p_BRANCH_LOGIN) )) -------BAODNQ 14/2/2022: Thêm điều kiện search------- --AND (A.MAKER_ID = @p_USER_LOGIN ---- ng login là ng tạo -- OR (A.SIGN_USER = @p_USER_LOGIN AND A.IS_SEND_APPR = 'Y') --- ng login là cấp duyệt trung gian và đã gửi YC phê duyệt -- OR ((@p_USER_LOGIN_ROLE IN('GDDV','PGD', 'TP', 'PP','TPGD','PPGD', 'TBP')) --- ng login là trưởng ĐV và đã gửi YC phê duyệt -- AND A.IS_SEND_APPR = 'Y' -- AND ( -- ISNULL(A.SIGN_USER,'') = '' OR (ISNULL(A.SIGN_USER,'') <> '' AND A.SIGN_DT IS NOT NULL) -- ) -- ) -- ) --AND (A.MAKER_ID = @p_USER_LOGIN ---- user login là ng tạo -- OR (A.SIGN_USER = @p_USER_LOGIN AND A.IS_SEND_APPR = 'Y') --- user login là cấp duyệt trung gian và đã gửi YC phê duyệt -- OR ( -- --user login là trưởng ĐV và đã gửi YC phê duyệt -- ( -- ------user login là trưởng ĐV ở hội sở-------- -- ( -- EXISTS(SELECT * FROM CM_BRANCH WHERE BRANCH_ID = A.BRANCH_CREATE AND BRANCH_TYPE = 'HS') -- AND (SELECT DEP_ID FROM TL_USER WHERE TLNANME = A.MAKER_ID) -- = (SELECT TOP 1 DEPT_ID FROM @t_USER_LOGIN_ROLE_TABLE WHERE ROLE_ID IN ('GDDV', 'TBP', 'TP', 'PP')) -- ) -- ------user login là trưởng ĐV ở CN/PGD -- OR -- ( -- NOT EXISTS(SELECT * FROM CM_BRANCH WHERE BRANCH_ID = A.BRANCH_CREATE AND BRANCH_TYPE = 'HS') -- AND A.BRANCH_CREATE = (SELECT TOP 1 BRANCH_ID FROM @t_USER_LOGIN_ROLE_TABLE WHERE ROLE_ID IN ('GDDV', 'PGD', 'TPGD', 'PPGD')) -- ) -- ) -- AND A.IS_SEND_APPR = 'Y' -- AND ( -- ISNULL(A.SIGN_USER,'') = '' OR (ISNULL(A.SIGN_USER,'') <> '' AND A.SIGN_DT IS NOT NULL) -- ) -- ) --) -----------BAODNQ: NẾU Ở HỘI SỞ TÌM THẤY NHỮNG PHIẾU THEO PHÒNG BAN------------------ ----------------NẾU Ở DVKD TÌM THẤY PHIẾU THEO ĐƠN VỊ-------------------- AND( A.BRANCH_CREATE = @p_BRANCH_LOGIN AND( (SELECT DEP_ID FROM TL_USER WHERE TLNANME = A.MAKER_ID) = (SELECT TOP 1 DEPT_ID FROM @t_USER_LOGIN_ROLE_TABLE) OR (SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = @p_BRANCH_LOGIN) <> 'HS' ) ) ORDER BY A.CREATE_DT DESC -- PAGING END END -- PAGING GO ALTER PROCEDURE [dbo].[REAL_ESTATE_R_H_SendAppr] @p_RET_R_H_ID VARCHAR(15) = NULL, @p_USER_LOGIN VARCHAR(15) = NULL, @p_SEND_APPR_DT VARCHAR(20) = NULL AS BEGIN TRANSACTION IF(EXISTS (SELECT * FROM REAL_ESTATE_R_H WHERE RET_R_H_ID = @p_RET_R_H_ID AND IS_SEND_APPR = 'Y')) BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result, '' RET_R_H_ID, '' IS_SEND_APPR, N'Gửi yêu cầu phê duyệt thất bại. Thông tin BĐS đi thuê đã được gửi yêu cầu phê duyệt trước đó' ErrorDesc RETURN '-1' END -----Cập nhật trạng thái đã gửi YC phê duyệt---------- UPDATE REAL_ESTATE_R_H SET IS_SEND_APPR = 'Y', SEND_APPR_DT = CONVERT(DATETIME, @p_SEND_APPR_DT,103), SIGN_DT = NULL, AUTH_STATUS = 'U' WHERE RET_R_H_ID = @p_RET_R_H_ID IF @@ERROR <> 0 GOTO ABORT DECLARE @p_IS_SEND_APPR VARCHAR(15) = (SELECT IS_SEND_APPR FROM REAL_ESTATE_R_H WHERE RET_R_H_ID = @p_RET_R_H_ID) DECLARE @p_MESSAGE NVARCHAR(500) ------TH gửi phê duyệt có cấp duyệt trung gian------ IF(EXISTS(SELECT * FROM REAL_ESTATE_R_H WHERE RET_R_H_ID = @p_RET_R_H_ID AND SIGN_USER IS NOT NULL)) BEGIN SET @p_MESSAGE = N'Thông tin BĐS đi thuê: ' +@p_RET_R_H_ID+ N' đã được gửi phê duyệt thành công. Vui lòng đợi cấp phê duyệt trung gian xác nhận.' END ------TH gửi phê duyệt ko có cấp duyệt trung gian------ ELSE BEGIN SET @p_MESSAGE = N'Thông tin BĐS đi thuê: ' +@p_RET_R_H_ID+ N' đã được gửi phê duyệt thành công. Vui lòng đợi trưởng đơn vị phê duyệt.' END ------Insert vào bảng lịch sử xử lý------------- INSERT INTO PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES) VALUES(@p_RET_R_H_ID, 'SEND', @p_USER_LOGIN, GETDATE(), N'Người tạo gửi phê duyệt thành công', N' Người tạo gửi phê duyệt') IF @@ERROR <> 0 GOTO ABORT COMMIT TRANSACTION SELECT '0' AS Result, '' RET_R_H_ID, @p_IS_SEND_APPR IS_SEND_APPR, @p_MESSAGE ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' AS Result, '' RET_R_H_ID, '' IS_SEND_APPR, '' ErrorDesc RETURN '-1' END GO ALTER PROCEDURE [dbo].[REAL_ESTATE_R_H_Upd] @p_RET_R_H_ID varchar(15) = NULL, @p_BRANCH_MANAGE Nvarchar(500) = NULL, @p_BRANCH_USE Nvarchar(500) = NULL, @p_BRANCH_CREATE Nvarchar(15) = NULL, @p_RET_ADDR nvarchar(MAX) = NULL, @p_RET_R_H_TIME DECIMAL = NULL, @p_START_DT VARCHAR(20) = NULL, @p_END_DT VARCHAR(20) = NULL, @p_R_LAND_SQUARE DECIMAL(18,2) = NULL, @p_SCALE nvarchar(500) = NULL, @p_CONSTRUCT_SQUARE DECIMAL(18,2) = NULL, @p_PRICE_DETAIL XML = NULL, @p_DEPOSIT varchar(1) = NULL, @p_DEPOSIT_PRICE DECIMAL = NULL, @p_DEPOSIT_RETURN_DT NVARCHAR(500) = NULL, @p_PURCHASE_EACH_TERM decimal = NULL, @p_PAY_AMT decimal = 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_PAY_PAY_AMT decimal = NULL, @p_PAY_MONTH_TIMES INT = NULL, @p_MONTH_TIMES INT = NULL, ----BAODNQ 7/2/2022: Thêm cột vào bảng REAL_ESTATE_R_H------ @p_TR_CONTRACT_ID varchar(15) = NULL, @p_EXTEND_DT VARCHAR(20) = NULL, @p_STRUCTURE NVARCHAR(500) = NULL, @p_IS_SEND_APPR VARCHAR(15) = NULL, @p_SEND_APPR_DT VARCHAR(20) = NULL, @p_SIGN_USER VARCHAR(15) = NULL, @p_SIGN_DT VARCHAR(20) = NULL, @p_EXTEND_PHASE NVARCHAR(1000) = NULL AS DECLARE @l_ERROR_MESSAGE VARCHAR(1000) IF(CONVERT(DATETIME, @p_END_DT, 103) < CONVERT(DATETIME, @p_START_DT, 103)) BEGIN SELECT '-1' as Result, '' RET_R_H_ID, N'Ngày kết thúc không được nhỏ hơn ngày bắt đầu' ErrorDesc RETURN '-1' END IF(CONVERT(DATETIME, @p_EXTEND_DT, 103) < CONVERT(DATETIME, @p_START_DT, 103)) BEGIN SELECT '-1' as Result, '' RET_R_H_ID, N'Ngày gia hạn hợp đồng không được nhỏ hơn ngày bắt đầu' ErrorDesc RETURN '-1' END IF( (@p_DEPOSIT_RETURN_DT IS NOT NULL OR @p_DEPOSIT_RETURN_DT <> '') AND CONVERT(DATETIME, @p_DEPOSIT_RETURN_DT, 103) < CONVERT(DATETIME, @p_START_DT, 103) ) BEGIN SELECT '-1' as Result, '' RET_R_H_ID, N'Thời điểm hoàn lại tiền cọc không được nhỏ hơn ngày bắt đầu' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM REAL_ESTATE_R_H WHERE RET_R_H_ID = @p_RET_R_H_ID AND IS_SEND_APPR = 'Y' AND AUTH_STATUS = 'U')) BEGIN SELECT '-1' AS Result, '' RET_ID, N'Không thể chỉnh sửa. Thông tin BĐS cho thuê làm trụ sở CN/PGD đã được gửi yêu cầu phê duyệt' ErrorDesc RETURN '-1' END BEGIN TRANSACTION IF(@p_RET_R_H_ID IS NULL) BEGIN SET @l_ERROR_MESSAGE = 'ID IS NULL' GOTO ABORT END DECLARE @p_PRICE_DT_ROW_NO INT = 0 Declare @hdoc INT Exec sp_xml_preparedocument @hdoc Output,@p_PRICE_DETAIL DECLARE PriceDetail CURSOR FOR SELECT * FROM OPENXML(@hDoc,'/Root/RetPriceDetail',2) WITH ( RET_PRICE_ID varchar(15), RET_R_H_ID varchar(15), PRICE decimal(18,2), PRICE_DT VARCHAR(20), PRICE_END_DT VARCHAR(20), PAY_PHASE NVARCHAR(1000), TOTAL_AMT_PAY_PHASE DECIMAL(18,2), NOTES NVARCHAR(MAX) ) OPEN PriceDetail IF(EXISTS (SELECT * FROM REAL_ESTATE_R_H WHERE RET_R_H_ID = @p_RET_R_H_ID AND AUTH_STATUS = 'A')) BEGIN SET @p_CHECKER_ID = NULL SET @p_APPROVE_DT = NULL SET @p_SEND_APPR_DT = NULL SET @p_SIGN_DT = NULL END -- UPDATE ----BAODNQ 7/2/2022: Thêm cột vào bảng REAL_ESTATE_R_H------ UPDATE REAL_ESTATE_R_H SET BRANCH_MANAGE=@p_BRANCH_MANAGE, BRANCH_USE=@p_BRANCH_USE, BRANCH_CREATE=@p_BRANCH_CREATE, RET_ADDR=@p_RET_ADDR, RET_R_H_TIME=@p_RET_R_H_TIME, START_DT=CONVERT(DATETIME, @p_START_DT, 103), END_DT=CONVERT(DATETIME, @p_END_DT, 103), R_LAND_SQUARE=@p_R_LAND_SQUARE, SCALE=@p_SCALE, CONSTRUCT_SQUARE=@p_CONSTRUCT_SQUARE, DEPOSIT=@p_DEPOSIT, DEPOSIT_PRICE=@p_DEPOSIT_PRICE, DEPOSIT_RETURN_DT=CONVERT(DATETIME, @p_DEPOSIT_RETURN_DT, 103), PURCHASE_EACH_TERM=@p_PURCHASE_EACH_TERM, 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), MONTH_TIMES = @p_MONTH_TIMES, PAY_AMT = @p_PAY_AMT, PAY_MONTH_TIMES= @p_PAY_MONTH_TIMES, PAY_PAY_AMT = @p_PAY_PAY_AMT, TR_CONTRACT_ID = @p_TR_CONTRACT_ID, EXTEND_DT = CONVERT(DATETIME, @p_EXTEND_DT, 103), STRUCTURE = @p_STRUCTURE, IS_SEND_APPR = @p_IS_SEND_APPR, SEND_APPR_DT = CONVERT(DATETIME, @p_SEND_APPR_DT, 103), SIGN_USER = @p_SIGN_USER, SIGN_DT = CONVERT(DATETIME, @p_SIGN_DT, 103), EXTEND_PHASE = @p_EXTEND_PHASE WHERE RET_R_H_ID = @p_RET_R_H_ID IF @@Error <> 0 GOTO ABORT DECLARE @RET_PRICE_ID varchar(15), @RET_R_H_ID varchar(15), @PRICE decimal(18,2), @PRICE_DT VARCHAR(20), @PRICE_END_DT VARCHAR(20), @PAY_PHASE NVARCHAR(1000), @TOTAL_AMT_PAY_PHASE DECIMAL(18,2), @NOTES NVARCHAR(MAX) FETCH NEXT FROM PriceDetail INTO @RET_PRICE_ID, @RET_R_H_ID, @PRICE, @PRICE_DT, @PRICE_END_DT, @PAY_PHASE, @TOTAL_AMT_PAY_PHASE, @NOTES DELETE FROM RET_PRICE WHERE RET_R_H_ID = @p_RET_R_H_ID WHILE @@FETCH_STATUS = 0 BEGIN SET @p_PRICE_DT_ROW_NO = @p_PRICE_DT_ROW_NO + 1 IF(CONVERT(DATETIME, @PRICE_END_DT, 103) <= CONVERT(DATETIME, @PRICE_DT, 103)) BEGIN ROLLBACK TRANSACTION CLOSE PriceDetail DEALLOCATE PriceDetail SELECT '-1' as Result, '' RET_R_H_ID, N'Lưới giá thuê: dòng' +CONVERT(VARCHAR, @p_PRICE_DT_ROW_NO)+ N': Đến ngày không được nhỏ hơn từ ngày'ErrorDesc RETURN '-1' END IF @RET_PRICE_ID ='' OR @RET_PRICE_ID IS NULL -- INSERT PRICE DETAIL BEGIN EXEC SYS_CodeMasters_Gen 'RET_PRICE', @RET_PRICE_ID out IF @RET_PRICE_ID ='' OR @RET_PRICE_ID IS NULL GOTO ABORT END INSERT INTO RET_PRICE (RET_PRICE_ID, RET_R_H_ID, PRICE, PRICE_DT, PRICE_END_DT, PAY_PHASE, TOTAL_AMT_PAY_PHASE, NOTES) VALUES (@RET_PRICE_ID, @p_RET_R_H_ID, @PRICE, CONVERT(DATETIME, @PRICE_DT, 103), CONVERT(DATETIME, @PRICE_END_DT, 103), @PAY_PHASE, @TOTAL_AMT_PAY_PHASE, @NOTES) IF @@ERROR <> 0 GOTO ABORT FETCH NEXT FROM PriceDetail INTO @RET_PRICE_ID, @p_RET_R_H_ID, @PRICE, @PRICE_DT, @PRICE_END_DT, @PAY_PHASE, @TOTAL_AMT_PAY_PHASE, @NOTES END CLOSE PriceDetail DEALLOCATE PriceDetail ---------------BAODNQ : TH NGƯỜI TẠO CẬP NHẬT NHIỀU LẦN THÌ CHỈ LƯU LỊCH SỬ XỬ LÝ CẬP NHẬT GẦN NHẤT---------------- IF((SELECT TOP 1 PROCESS_ID FROM PL_PROCESS WHERE REQ_ID = @p_RET_R_H_ID ORDER BY APPROVE_DT DESC) = 'UPDATE') BEGIN WITH RESULT AS( SELECT TOP 1 * FROM PL_PROCESS WHERE REQ_ID = @p_RET_R_H_ID ORDER BY APPROVE_DT DESC ) DELETE FROM RESULT END --------BAODNQ 14/02/2022: Insert vào PL_PROCESS lưu lịch sử xử lý--------- INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES ) VALUES ( @p_RET_R_H_ID, 'UPDATE', @p_MAKER_ID, GETDATE(), N'Cập nhật thông tin BĐS đi thuê thành công' , N'Cập nhật thông tin BĐS đi thuê' ) COMMIT TRANSACTION SELECT '0' as Result, @p_RET_R_H_ID RET_R_H_ID, '' ErrorDesc RETURN '0' ABORT: BEGIN SELECT '-1' as Result, '' RET_R_H_ID, @l_ERROR_MESSAGE ErrorDesc RETURN '-1' END GO