ALTER PROCEDURE [dbo].[TR_CONTRACT_SendAppr] @p_CONTRACT_ID VARCHAR(15), @p_AUTH_STATUS varchar(50) = NULL, @p_USER_LOGIN varchar(12) = NULL, @p_SEND_APPR_DT VARCHAR(20) = NULL AS BEGIN TRANSACTION DECLARE @tmp_tbl TABLE( GOODS_NAME nvarchar(MAX) , QUANTITY_USE DECIMAL ) INSERT INTO @tmp_tbl SELECT B.GD_NAME AS GOODS_NAME, C.QUANTITY_USE FROM TR_CONTRACT_DT A LEFT JOIN CM_GOODS B ON A.GOODS_ID = B.GD_ID LEFT JOIN ( select GOODS_ID, CONTRACT_ID, SUM(QUANTITY) AS QUANTITY_USE FROM TR_PO_DETAIL A LEFT JOIN TR_PO_MASTER B ON A.PO_ID = B.PO_ID WHERE B.CONTRACT_ID = @p_CONTRACT_ID AND B.AUTH_STATUS = 'A' GROUP BY GOODS_ID, CONTRACT_ID ) C on A.GOODS_ID = C.GOODS_ID WHERE C.QUANTITY_USE > A.QUANTITY AND A.CONTRACT_ID = @p_CONTRACT_ID IF EXISTS(SELECT * FROM @tmp_tbl) BEGIN DECLARE @message NVARCHAR(MAX) SELECT @message = COALESCE(@message + '\n ', '') + (N'Hàng hóa ' + GOODS_NAME + N' số lượng đã gọi là ' + CONVERT(NVARCHAR(50),(QUANTITY_USE))) -- + N' (đã duyệt ' + CONVERT(NVARCHAR(50),QUANTITY_USE) + N', chờ duyệt ' + CONVERT(NVARCHAR(50),QUANTITY) + N')') FROM @tmp_tbl ROLLBACK TRANSACTION SELECT '-1' Result, '' CONTRACT_ID, '' CONTRACT_CODE, N'Số lượng trong hợp đồng không được nhỏ hơn số lượng đã mua: \n' + @message ErrorDesc RETURN '0' END DECLARE @TOTAL_PO DECIMAL, @TOTAL_CONTRACT DECIMAL, @l_CONTRACT_NAME NVARCHAR(MAX) SELECT @TOTAL_PO = SUM(A.TOTAL_AMT) FROM TR_PO_DETAIL A LEFT JOIN TR_PO_MASTER B ON A.PO_ID = B.PO_ID WHERE B.CONTRACT_ID = @p_CONTRACT_ID AND B.AUTH_STATUS = 'A' SELECT @TOTAL_CONTRACT = SUM(PRICE * QUANTITY) FROM TR_CONTRACT_DT WHERE CONTRACT_ID = @p_CONTRACT_ID SET @l_CONTRACT_NAME = (SELECT [CONTRACT_NAME] FROM TR_CONTRACT WHERE CONTRACT_ID = @p_CONTRACT_ID) IF @TOTAL_PO > @TOTAL_CONTRACT BEGIN DECLARE @message1 NVARCHAR(MAX) SELECT @message1 = COALESCE(@message + '\n ', '') + (N'Hợp đồng ' + @l_CONTRACT_NAME + N' giá trị đã gọi là ' + CONVERT(NVARCHAR(50),(@TOTAL_PO))) ROLLBACK TRANSACTION SELECT '-1' Result, '' CONTRACT_ID, '' CONTRACT_CODE, N'Giá trị trong hợp đồng không được nhỏ hơn giá trị đã mua: \n' + @message1 ErrorDesc RETURN '0' END --------------BAODNQ 12/12/2022 : Nếu hợp đồng ko ph là hợp đồng định kỳ----------- ------------------bắt buộc chọn NCC--------------- DECLARE @p_CONT_TYPE VARCHAR(10) = ( SELECT TOP 1 CONT_TYPE FROM TR_CONTRACT WHERE CONTRACT_ID = @p_CONTRACT_ID ) DECLARE @p_SUP_ID VARCHAR(15) = (SELECT TOP 1 SUP_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @p_CONTRACT_ID) IF(@p_CONT_TYPE <> 'DK' AND (@p_SUP_ID IS NULL OR @p_SUP_ID = '')) BEGIN DECLARE @p_DK_TYPE_NAME NVARCHAR(200) = ( SELECT TOP 1 CONTENT FROM CM_ALLCODE WHERE CDTYPE = 'CONTRACT' AND CDNAME = 'CONTRACT_TYPE' AND CDVAL = 'DK' ) ROLLBACK TRANSACTION SELECT '-1' Result, '' CONTRACT_ID, '' CONTRACT_CODE, N'Nếu loại hợp đồng không phải là ' +@p_DK_TYPE_NAME+ N', bắt buộc chọn nhà cung cấp từ hệ thống' ErrorDesc RETURN '0' END UPDATE TR_CONTRACT SET AUTH_STATUS = @p_AUTH_STATUS, IS_SEND_APPR = 'Y', SEND_APPR_DT = CONVERT(DATETIME, @p_SEND_APPR_DT, 103) WHERE CONTRACT_ID = @p_CONTRACT_ID IF @@ERROR <> 0 GOTO ABORT DECLARE @p_IS_SEND_APPR VARCHAR(15) = (SELECT IS_SEND_APPR FROM TR_CONTRACT WHERE CONTRACT_ID = @p_CONTRACT_ID) DECLARE @p_CONTRACT_NAME NVARCHAR(500) = (SELECT [CONTRACT_NAME] FROM TR_CONTRACT WHERE CONTRACT_ID = @p_CONTRACT_ID) --------BAODNQ 16/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_CONTRACT_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, @P_CONTRACT_ID CONTRACT_ID, @p_IS_SEND_APPR IS_SEND_APPR, N'Thông tin hợp đồng: '+@p_CONTRACT_NAME+ N' đã được gửi phê duyệt 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, '' CONTRACT_ID, '' IS_SEND_APPR, ERROR_MESSAGE() ErrorDesc RETURN '-1' End