ALTER PROCEDURE [dbo].[TR_CHECK_ReportPrice_PlAppContractor] @p_LIST_TRAN_TYPE_ID NVARCHAR(MAX) = NULL, @p_TYPE VARCHAR(50) = NULL, @p_REQ_ID VARCHAR(15) = NULL AS BEGIN TRANSACTION DECLARE @p_CAN_OPEN VARCHAR(1) = 'N', @p_ERROR_MSG NVARCHAR(MAX), @p_ROW_NUM INT = 0, @p_TRAN_TYPE_NAME NVARCHAR(500) DECLARE @lst_TRAN_TYPE_ID TABLE( ID INT IDENTITY(1,1) NOT NULL, TRAN_TYPE_ID VARCHAR(15) NULL ) INSERT INTO @lst_TRAN_TYPE_ID SELECT VALUE FROM wsiSplit(@p_LIST_TRAN_TYPE_ID, ',') -------------------Khai báo CURSOR------------- DECLARE TranTypeCursor CURSOR FOR SELECT TRAN_TYPE_ID FROM @lst_TRAN_TYPE_ID DECLARE @p_TRAN_TYPE_ID VARCHAR(15) ----------Nếu là BBXG-------------- IF(@p_TYPE = 'REPORT_PRICE') BEGIN OPEN TranTypeCursor FETCH NEXT FROM TranTypeCursor INTO @p_TRAN_TYPE_ID WHILE @@FETCH_STATUS = 0 BEGIN SET @p_ROW_NUM = @p_ROW_NUM + 1 SET @p_TRAN_TYPE_NAME = (SELECT TRN_TYPE_NAME FROM CM_TRAN_TYPE WHERE TRN_TYPE = @p_TRAN_TYPE_ID) ----------Nếu có HTMS = CDT, CDTDQ ; ko cho sử dụng BBXG----------- IF(@p_TRAN_TYPE_ID = 'TRN0000000003' OR @p_TRAN_TYPE_ID = 'TRN0000000010') BEGIN SET @p_CAN_OPEN = 'N' SET @p_ERROR_MSG = N'Chi tiết mua sắm thực tế, dòng ' + CONVERT(VARCHAR, @p_ROW_NUM) + N': Hình thức mua sắm: ' + @p_TRAN_TYPE_NAME + N' không được áp dụng cho biên bản xét giá' BREAK END ----------Nếu có ít nhất 1 dòng có HTMS là (Mua sắm trực tiếp, Chào hàng cạnh tranh, Đấu thầu hạn chế, Đấu thầu rộng rãi, Mua sắm theo quy định) ----------cho sử dụng BBXG----------------- ELSE IF (@p_TRAN_TYPE_ID IN ('TRN0000000001', 'TRN0000000002', 'TRN0000000004', 'TRN0000000005', 'TRN0000000009')) BEGIN SET @p_CAN_OPEN = 'Y' END ELSE BEGIN SET @p_ERROR_MSG = N'Chi tiết mua sắm thực tế không tồn tại các hình thức được áp dụng cho biên bản xét giá' END FETCH NEXT FROM TranTypeCursor INTO @p_TRAN_TYPE_ID END CLOSE TranTypeCursor DEALLOCATE TranTypeCursor END -----------Tờ trình CĐT/ tờ trình chi phí--------------- ELSE IF(@p_TYPE = 'APP_CONTRACTOR') BEGIN OPEN TranTypeCursor FETCH NEXT FROM TranTypeCursor INTO @p_TRAN_TYPE_ID WHILE @@FETCH_STATUS = 0 BEGIN SET @p_ROW_NUM = @p_ROW_NUM + 1 SET @p_TRAN_TYPE_NAME = (SELECT TRN_TYPE_NAME FROM CM_TRAN_TYPE WHERE TRN_TYPE = @p_TRAN_TYPE_ID) ----------Nếu có 1 dòng có HTMS là (Mua sắm trực tiếp, Chào hàng cạnh tranh, Đấu thầu hạn chế, Đấu thầu rộng rãi, Mua sắm theo quy định) ----------ko cho sử dụng tờ trình CDT----------------- IF(@p_TRAN_TYPE_ID IN ('TRN0000000001', 'TRN0000000002', 'TRN0000000004', 'TRN0000000005', 'TRN0000000009')) BEGIN SET @p_CAN_OPEN = 'N' SET @p_ERROR_MSG = N'Chi tiết mua sắm thực tế, dòng ' + CONVERT(VARCHAR, @p_ROW_NUM) + N': Hình thức mua sắm: ' + @p_TRAN_TYPE_NAME + N' không được áp dụng cho tờ trình chỉ định thầu / tờ trình xin chi phí' BREAK END ----------Nếu có ít nhất 1 dòng có HTMS là CDT / mua sắm trực tiếp(HĐNT)/ CDTDQ, cho sử dụng tờ trình CDT----------------- ELSE IF(@p_TRAN_TYPE_ID IN ('TRN0000000003', 'TRN0000000008', 'TRN0000000010')) BEGIN IF(NOT EXISTS(SELECT * FROM PL_APPOINT_CONTRACTOR WHERE TR_REQUEST_DOC_ID = @p_REQ_ID)) BEGIN SET @p_CAN_OPEN = 'Y' END ELSE BEGIN -----------Nếu tờ trình là CĐT-------------- IF((SELECT TYPE_PL FROM PL_APPOINT_CONTRACTOR WHERE TR_REQUEST_DOC_ID = @p_REQ_ID) = 'CDT') BEGIN IF(@p_TRAN_TYPE_ID = 'TRN0000000003' OR @p_TRAN_TYPE_ID = 'TRN0000000010') BEGIN SET @p_CAN_OPEN = 'Y' END ELSE BEGIN SET @p_CAN_OPEN = 'N' SET @p_ERROR_MSG = N'Chi tiết mua sắm thực tế, dòng ' + CONVERT(VARCHAR, @p_ROW_NUM) + N': Hình thức mua sắm: ' + @p_TRAN_TYPE_NAME + N' không được áp dụng cho tờ trình chỉ định thầu' END END ELSE IF((SELECT TYPE_PL FROM PL_APPOINT_CONTRACTOR WHERE TR_REQUEST_DOC_ID = @p_REQ_ID) = 'TTCP') BEGIN IF(@p_TRAN_TYPE_ID = 'TRN0000000008') BEGIN SET @p_CAN_OPEN = 'Y' END ELSE BEGIN SET @p_CAN_OPEN = 'N' SET @p_ERROR_MSG = N'Chi tiết mua sắm thực tế, dòng ' + CONVERT(VARCHAR, @p_ROW_NUM) + N': Hình thức mua sắm: ' + @p_TRAN_TYPE_NAME + N' không được áp dụng cho tờ trình xin chi phí' END END END END ELSE BEGIN SET @p_ERROR_MSG = N'Chi tiết mua sắm thực tế không tồn tại các hình thức được áp dụng cho tờ trình chỉ định thầu / tờ trình xin chi phí' END FETCH NEXT FROM TranTypeCursor INTO @p_TRAN_TYPE_ID END CLOSE TranTypeCursor DEALLOCATE TranTypeCursor END COMMIT TRANSACTION SELECT @p_CAN_OPEN as Result, @p_ERROR_MSG ErrorDesc RETURN '0'