ALTER FUNCTION dbo.FN_CHECK_VALIDATE_APP ( -- Add the parameters for the function here @REQ_ID VARCHAR(20), @TYPE_VALIDATE VARCHAR(20), @REF_VALIDATE VARCHAR(20), @MAKER_ID VARCHAR(20), @PROCESS_ID VARCHAR(20) ) RETURNS @Results TABLE (ERROR BIT , ERROR_DES NVARCHAR(100)) AS BEGIN IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@REQ_ID AND PL_BASED_ID IS NOT NULL AND PL_BASED_ID <>'')) BEGIN INSERT INTO @Results ( ERROR, ERROR_DES ) VALUES ( 0, -- ERROR - bit N'' -- ERROR_DES - nvarchar(100) ) RETURN END DECLARE @BRANCH_ID VARCHAR(20),@DEP_ID VARCHAR(20),@BRANCH_TYPE VARCHAR(20),@ROLE_ID VARCHAR(20) DECLARE @LST_DVDM TABLE(DVDM_ID VARCHAR(20)) DECLARE @LST_KHOI TABLE(KHOI_ID VARCHAR(20)) SELECT @BRANCH_ID=TLSUBBRID,@BRANCH_TYPE=BRANCH_TYPE,@DEP_ID=SECUR_CODE,@ROLE_ID=RoleName FROM dbo.TL_USER WHERE TLNANME=@MAKER_ID IF(@ROLE_ID='TC' OR @ROLE_ID='TGD') BEGIN INSERT INTO @LST_DVDM SELECT CD.DVDM_ID FROM dbo.CM_DVDM CD WHERE CD.IS_DVDM=1 INSERT INTO @LST_KHOI SELECT CD.DVDM_ID FROM dbo.CM_DVDM CD WHERE CD.IS_KHOI=1 END ELSE BEGIN INSERT INTO @LST_DVDM SELECT CD.DVDM_ID FROM dbo.CM_DVDM CD LEFT JOIN dbo.PL_COSTCENTER PC ON PC.DVDM_ID=CD.DVDM_ID LEFT JOIN dbo.PL_COSTCENTER_DT PCDT ON PCDT.COST_ID=PC.COST_ID WHERE CD.IS_DVDM=1 AND PCDT.DEP_ID=@DEP_ID AND PCDT.BRANCH_ID=@BRANCH_ID INSERT INTO @LST_KHOI SELECT CD.DVDM_ID FROM dbo.CM_DVDM CD LEFT JOIN dbo.PL_COSTCENTER PC ON PC.DVDM_ID=CD.DVDM_ID LEFT JOIN dbo.PL_COSTCENTER_DT PCDT ON PCDT.COST_ID=PC.COST_ID WHERE CD.IS_KHOI=1 AND PCDT.DEP_ID=@DEP_ID AND PCDT.BRANCH_ID=@BRANCH_ID END IF(@REF_VALIDATE='PL_REQUEST_DOC') BEGIN IF(@TYPE_VALIDATE='APPNEW') BEGIN IF(@BRANCH_TYPE='HS') BEGIN IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@REQ_ID AND FR_BRN_ID=@BRANCH_ID AND FR_DEP_ID=@DEP_ID AND (FR_TRADE_ID IS NULL OR FR_TRADE_ID =''))) BEGIN INSERT INTO @Results ( ERROR, ERROR_DES ) VALUES ( 1, -- ERROR - bit N'Vui lòng chọn hạng mục ngân sách điều chuyển' -- ERROR_DES - nvarchar(100) ) RETURN END ELSE BEGIN IF(EXISTS(SELECT Temp.FR_TRADE_ID FROM ( SELECT TB.FR_TRADE_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE, SUM(ROUND(ISNULL(PT.AMT_APP,0),0) + ROUND(ISNULL(PT.AMT_RECEIVE_TF,0),0) - ROUND(ISNULL(PT.AMT_TF,0),0) - ROUND(ISNULL(PT.AMT_ETM,0),0))/COUNT(TB.FR_TRADE_ID) - (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_DOC_DT DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE') AND doc.REQ_ID <> @REQ_ID AND DDT.TRADE_ID = TB.FR_TRADE_ID) - (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_TRANSFER DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE') AND doc.REQ_ID <> @REQ_ID AND DDT.FR_TRADE_ID = TB.FR_TRADE_ID) AS TOTAL_AMT_REMAIN FROM dbo.PL_REQUEST_TRANSFER TB LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.FR_TRADE_ID WHERE TB.REQ_DOC_ID=@REQ_ID AND TB.FR_BRN_ID=@BRANCH_ID AND @DEP_ID=TB.FR_DEP_ID GROUP BY TB.FR_TRADE_ID )Temp WHERE (Temp.TOTAL_AMT_EXE) > Temp.TOTAL_AMT_REMAIN)) BEGIN INSERT INTO @Results ( ERROR, ERROR_DES ) VALUES ( 1, -- ERROR - bit N'Lưới điều chuyển ngân sách: Số tiền điều chuyển vượt hạng mức ngân sách dự kiến còn lại' -- ERROR_DES - nvarchar(100) ) RETURN END END END ELSE IF(@BRANCH_TYPE<>'HS') BEGIN IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@REQ_ID AND FR_BRN_ID=@BRANCH_ID AND (FR_TRADE_ID IS NULL OR FR_TRADE_ID =''))) BEGIN INSERT INTO @Results ( ERROR, ERROR_DES ) VALUES ( 1, -- ERROR - bit N'Vui lòng chọn hạng mục ngân sách điều chuyển' -- ERROR_DES - nvarchar(100) ) RETURN END ELSE BEGIN IF(EXISTS(SELECT Temp.FR_TRADE_ID FROM ( SELECT TB.FR_TRADE_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE, SUM(ROUND(ISNULL(PT.AMT_APP,0),0) + ROUND(ISNULL(PT.AMT_RECEIVE_TF,0),0) - ROUND(ISNULL(PT.AMT_TF,0),0) - ROUND(ISNULL(PT.AMT_ETM,0),0))/COUNT(TB.FR_TRADE_ID) - (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_DOC_DT DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE') AND doc.REQ_ID <> @REQ_ID AND DDT.TRADE_ID = TB.FR_TRADE_ID) - (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_TRANSFER DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE') AND doc.REQ_ID <> @REQ_ID AND DDT.FR_TRADE_ID = TB.FR_TRADE_ID) AS TOTAL_AMT_REMAIN FROM dbo.PL_REQUEST_TRANSFER TB LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.FR_TRADE_ID WHERE TB.REQ_DOC_ID=@REQ_ID AND TB.FR_BRN_ID=@BRANCH_ID GROUP BY TB.FR_TRADE_ID )Temp WHERE (Temp.TOTAL_AMT_EXE) > Temp.TOTAL_AMT_REMAIN)) BEGIN INSERT INTO @Results ( ERROR, ERROR_DES ) VALUES ( 1, -- ERROR - bit N'Lưới điều chuyển ngân sách: Số tiền điều chuyển vượt hạng mức ngân sách dự kiến còn lại' -- ERROR_DES - nvarchar(100) ) RETURN END END END IF(EXISTS(SELECT Temp.TRADE_ID FROM ( SELECT TB.TRADE_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE, SUM(ROUND(ISNULL(PT.AMT_APP,0),0) + ROUND(ISNULL(PT.AMT_RECEIVE_TF,0),0) - ROUND(ISNULL(PT.AMT_TF,0),0) - ROUND(ISNULL(PT.AMT_ETM,0),0))/COUNT(TB.TRADE_ID) - (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_DOC_DT DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE') AND doc.REQ_ID <> @REQ_ID AND DDT.TRADE_ID = TB.TRADE_ID) - (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_TRANSFER DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE') AND doc.REQ_ID <> @REQ_ID AND DDT.FR_TRADE_ID = TB.TRADE_ID) AS TOTAL_AMT_REMAIN, SUM(ISNULL(PLTF.TOTAL_AMT,0)) AS TOTAL_TF FROM dbo.PL_REQUEST_DOC_DT TB LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.TRADE_ID LEFT JOIN dbo.PL_MASTER PM ON PM.PLAN_ID=PT.PLAN_ID LEFT JOIN dbo.PL_REQUEST_TRANSFER PLTF ON PLTF.FR_BRN_ID=PM.BRANCH_ID AND PLTF.FR_TRADE_ID=PT.TRADE_ID AND PLTF.REQ_DOC_ID=TB.REQ_ID WHERE TB.REQDT_TYPE='I' AND TB.REQ_ID=@REQ_ID GROUP BY TB.TRADE_ID )Temp WHERE (Temp.TOTAL_AMT_EXE + Temp.TOTAL_TF) > Temp.TOTAL_AMT_REMAIN)) BEGIN INSERT INTO @Results ( ERROR, ERROR_DES ) VALUES ( 1, -- ERROR - bit N'Lưới hàng hóa: Số tiền sử dụng vượt số tiền còn lại dự kiến của hạng mục ngân sách' -- ERROR_DES - nvarchar(100) ) RETURN END IF(EXISTS(SELECT Temp.GOODS_ID FROM ( SELECT TB.GOODS_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE, SUM(ROUND(ISNULL(PT.AMT_APP,0),0) + ROUND(ISNULL(PT.AMT_RECEIVE_TF,0),0) - ROUND(ISNULL(PT.AMT_TF,0),0) - ROUND(ISNULL(PT.AMT_ETM,0),0)) AS TOTAL_AMT_REMAIN , SUM(ISNULL(PLTF.TOTAL_AMT,0)) AS TOTAL_TF FROM dbo.PL_REQUEST_DOC_DT TB LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.TRADE_ID LEFT JOIN ( SELECT SUM(TOTAL_AMT) AS TOTAL_AMT,TO_GOOD_ID,REQ_DOC_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@REQ_ID GROUP BY TO_GOOD_ID,REQ_DOC_ID ) PLTF ON PLTF.TO_GOOD_ID=TB.GOODS_ID AND PLTF.REQ_DOC_ID=TB.REQ_ID WHERE TB.REQDT_TYPE='O' AND TB.REQ_ID=@REQ_ID GROUP BY TB.GOODS_ID )Temp WHERE Temp.TOTAL_AMT_EXE > (Temp.TOTAL_AMT_REMAIN + Temp.TOTAL_TF))) BEGIN INSERT INTO @Results ( ERROR, ERROR_DES ) VALUES ( 1, -- ERROR - bit --N'Số tiền sử dụng vượt số tiền còn lại dự kiến của hạng mục ngân sách và số tiền điều chuyển' -- ERROR_DES - nvarchar(100) N'Lưới hàng hóa: Số tiền ngân sách sử dụng đang vượt quá số tiền chuyển của lưới điều chuyển ngân sách' ) RETURN END END ELSE IF (@TYPE_VALIDATE='PDDC') BEGIN IF(@PROCESS_ID='DVDM_DC') BEGIN IF(EXISTS(SELECT Temp.FR_TRADE_ID FROM ( SELECT TB.FR_TRADE_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE, SUM(ROUND(ISNULL(PT.AMT_APP,0),0) + ROUND(ISNULL(PT.AMT_RECEIVE_TF,0),0) - ROUND(ISNULL(PT.AMT_TF,0),0) - ROUND(ISNULL(PT.AMT_ETM,0),0))/COUNT(TB.FR_TRADE_ID) - (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_DOC_DT DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE') AND doc.REQ_ID <> @REQ_ID AND DDT.TRADE_ID = TB.FR_TRADE_ID) - (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_TRANSFER DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE') AND doc.REQ_ID <> @REQ_ID AND DDT.FR_TRADE_ID = TB.FR_TRADE_ID) AS TOTAL_AMT_REMAIN FROM dbo.PL_REQUEST_TRANSFER TB LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.FR_TRADE_ID WHERE TB.REQ_DOC_ID=@REQ_ID AND TB.FR_DVDM_ID IN (SELECT DVDM_ID FROM @LST_DVDM) GROUP BY TB.FR_TRADE_ID )Temp WHERE (Temp.TOTAL_AMT_EXE) > Temp.TOTAL_AMT_REMAIN)) BEGIN INSERT INTO @Results ( ERROR, ERROR_DES ) VALUES ( 1, -- ERROR - bit N'Số tiền điều chuyển vượt hạng mức ngân sách dự kiến còn lại' -- ERROR_DES - nvarchar(100) ) RETURN END END ELSE IF(@PROCESS_ID='TC') BEGIN IF(EXISTS(SELECT Temp.FR_TRADE_ID FROM ( SELECT TB.FR_TRADE_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE, SUM(ROUND(ISNULL(PT.AMT_APP,0),0) + ROUND(ISNULL(PT.AMT_RECEIVE_TF,0),0) - ROUND(ISNULL(PT.AMT_TF,0),0) - ROUND(ISNULL(PT.AMT_ETM,0),0))/COUNT(TB.FR_TRADE_ID) - (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_DOC_DT DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE') AND doc.REQ_ID <> @REQ_ID AND DDT.TRADE_ID = TB.FR_TRADE_ID) - (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_TRANSFER DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE') AND doc.REQ_ID <> @REQ_ID AND DDT.FR_TRADE_ID = TB.FR_TRADE_ID) AS TOTAL_AMT_REMAIN FROM dbo.PL_REQUEST_TRANSFER TB LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.FR_TRADE_ID WHERE TB.REQ_DOC_ID=@REQ_ID GROUP BY TB.FR_TRADE_ID )Temp WHERE (Temp.TOTAL_AMT_EXE) > Temp.TOTAL_AMT_REMAIN)) BEGIN INSERT INTO @Results ( ERROR, ERROR_DES ) VALUES ( 1, -- ERROR - bit N'Số tiền điều chuyển vượt hạng mức ngân sách dự kiến còn lại' -- ERROR_DES - nvarchar(100) ) RETURN END END ELSE BEGIN IF(@BRANCH_TYPE='HS') BEGIN IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@REQ_ID AND FR_BRN_ID=@BRANCH_ID AND FR_DEP_ID=@DEP_ID AND (FR_TRADE_ID IS NULL OR FR_TRADE_ID =''))) BEGIN INSERT INTO @Results ( ERROR, ERROR_DES ) VALUES ( 1, -- ERROR - bit N'Chưa chọn hạng mục ngân sách điều chuyển' -- ERROR_DES - nvarchar(100) ) RETURN END ELSE BEGIN IF(EXISTS(SELECT Temp.FR_TRADE_ID FROM ( SELECT TB.FR_TRADE_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE, SUM(ROUND(ISNULL(PT.AMT_APP,0),0) + ROUND(ISNULL(PT.AMT_RECEIVE_TF,0),0) - ROUND(ISNULL(PT.AMT_TF,0),0) - ROUND(ISNULL(PT.AMT_ETM,0),0))/COUNT(TB.FR_TRADE_ID) - (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_DOC_DT DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE') AND doc.REQ_ID <> @REQ_ID AND DDT.TRADE_ID = TB.FR_TRADE_ID) - (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_TRANSFER DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE') AND doc.REQ_ID <> @REQ_ID AND DDT.FR_TRADE_ID = TB.FR_TRADE_ID) AS TOTAL_AMT_REMAIN FROM dbo.PL_REQUEST_TRANSFER TB LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.FR_TRADE_ID WHERE TB.REQ_DOC_ID=@REQ_ID AND TB.FR_BRN_ID=@BRANCH_ID AND @DEP_ID=TB.FR_DEP_ID GROUP BY TB.FR_TRADE_ID )Temp WHERE (Temp.TOTAL_AMT_EXE) > Temp.TOTAL_AMT_REMAIN)) BEGIN INSERT INTO @Results ( ERROR, ERROR_DES ) VALUES ( 1, -- ERROR - bit N'Số tiền điều chuyển vượt hạng mức ngân sách dự kiến còn lại' -- ERROR_DES - nvarchar(100) ) RETURN END END END ELSE IF(@BRANCH_TYPE<>'HS') BEGIN IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@REQ_ID AND FR_BRN_ID=@BRANCH_ID AND (FR_TRADE_ID IS NULL OR FR_TRADE_ID =''))) BEGIN INSERT INTO @Results ( ERROR, ERROR_DES ) VALUES ( 1, -- ERROR - bit N'Chưa chọn hạng mục ngân sách điều chuyển' -- ERROR_DES - nvarchar(100) ) RETURN END ELSE BEGIN IF(EXISTS(SELECT Temp.FR_TRADE_ID FROM ( SELECT TB.FR_TRADE_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE, SUM(ROUND(ISNULL(PT.AMT_APP,0),0) + ROUND(ISNULL(PT.AMT_RECEIVE_TF,0),0) - ROUND(ISNULL(PT.AMT_TF,0),0) - ROUND(ISNULL(PT.AMT_ETM,0),0))/COUNT(TB.FR_TRADE_ID) - (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_DOC_DT DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE') AND doc.REQ_ID <> @REQ_ID AND DDT.TRADE_ID = TB.FR_TRADE_ID) - (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_TRANSFER DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE') AND doc.REQ_ID <> @REQ_ID AND DDT.FR_TRADE_ID = TB.FR_TRADE_ID) AS TOTAL_AMT_REMAIN FROM dbo.PL_REQUEST_TRANSFER TB LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.FR_TRADE_ID WHERE TB.REQ_DOC_ID=@REQ_ID AND TB.FR_BRN_ID=@BRANCH_ID GROUP BY TB.FR_TRADE_ID )Temp WHERE (Temp.TOTAL_AMT_EXE) > Temp.TOTAL_AMT_REMAIN)) BEGIN INSERT INTO @Results ( ERROR, ERROR_DES ) VALUES ( 1, -- ERROR - bit N'Số tiền điều chuyển vượt hạng mức ngân sách dự kiến còn lại' -- ERROR_DES - nvarchar(100) ) RETURN END END END END END ELSE IF(@TYPE_VALIDATE='PDTT') BEGIN IF(EXISTS(SELECT Temp.TRADE_ID FROM ( SELECT TB.TRADE_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE, SUM(ROUND(ISNULL(PT.AMT_APP,0),0) + ROUND(ISNULL(PT.AMT_RECEIVE_TF,0),0) - ROUND(ISNULL(PT.AMT_TF,0),0) - ROUND(ISNULL(PT.AMT_ETM,0),0))/COUNT(TB.TRADE_ID) - (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_DOC_DT DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE') AND doc.REQ_ID <> @REQ_ID AND DDT.TRADE_ID = TB.TRADE_ID) - (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_TRANSFER DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE') AND doc.REQ_ID <> @REQ_ID AND DDT.FR_TRADE_ID = TB.TRADE_ID) AS TOTAL_AMT_REMAIN , SUM(ISNULL(PLTF.TOTAL_AMT,0)) AS TOTAL_TF FROM dbo.PL_REQUEST_DOC_DT TB LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.TRADE_ID LEFT JOIN dbo.PL_MASTER PM ON PM.PLAN_ID=PT.PLAN_ID LEFT JOIN dbo.PL_REQUEST_TRANSFER PLTF ON PLTF.FR_BRN_ID=PM.BRANCH_ID AND PLTF.FR_TRADE_ID=PT.TRADE_ID AND PLTF.REQ_DOC_ID=TB.REQ_ID WHERE TB.REQDT_TYPE='I' AND TB.REQ_ID=@REQ_ID AND TB.KHOI_ID IN (SELECT KHOI_ID FROM @LST_KHOI) GROUP BY TB.TRADE_ID )Temp WHERE (Temp.TOTAL_AMT_EXE + Temp.TOTAL_TF) > Temp.TOTAL_AMT_REMAIN)) BEGIN INSERT INTO @Results ( ERROR, ERROR_DES ) VALUES ( 1, -- ERROR - bit N'Số tiền sử dụng vượt số tiền còn lại dự kiến của hạng mục ngân sách' -- ERROR_DES - nvarchar(100) ) RETURN END IF(EXISTS(SELECT Temp.GOODS_ID FROM ( SELECT TB.GOODS_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE, SUM(ROUND(ISNULL(PT.AMT_APP,0),0) + ROUND(ISNULL(PT.AMT_RECEIVE_TF,0),0) - ROUND(ISNULL(PT.AMT_TF,0),0) - ROUND(ISNULL(PT.AMT_ETM,0),0)) AS TOTAL_AMT_REMAIN , SUM(ISNULL(PLTF.TOTAL_AMT,0)) AS TOTAL_TF FROM dbo.PL_REQUEST_DOC_DT TB LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.TRADE_ID LEFT JOIN ( SELECT SUM(TOTAL_AMT) AS TOTAL_AMT,TO_GOOD_ID,REQ_DOC_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@REQ_ID GROUP BY TO_GOOD_ID,REQ_DOC_ID ) PLTF ON PLTF.TO_GOOD_ID=TB.GOODS_ID AND PLTF.REQ_DOC_ID=TB.REQ_ID WHERE TB.REQDT_TYPE='O' AND TB.REQ_ID=@REQ_ID AND TB.KHOI_ID IN (SELECT KHOI_ID FROM @LST_KHOI) GROUP BY TB.GOODS_ID )Temp WHERE Temp.TOTAL_AMT_EXE > (Temp.TOTAL_AMT_REMAIN + Temp.TOTAL_TF))) BEGIN INSERT INTO @Results ( ERROR, ERROR_DES ) VALUES ( 1, -- ERROR - bit N'Số tiền sử dụng vượt số tiền còn lại dự kiến của hạng mục ngân sách và số tiền điều chuyển' -- ERROR_DES - nvarchar(100) ) RETURN END IF(EXISTS(SELECT Temp.FR_TRADE_ID FROM ( SELECT TB.FR_TRADE_ID ,SUM(TB.TOTAL_AMT) AS TOTAL_AMT_EXE, SUM(ROUND(ISNULL(PT.AMT_APP,0),0) + ROUND(ISNULL(PT.AMT_RECEIVE_TF,0),0) - ROUND(ISNULL(PT.AMT_TF,0),0) - ROUND(ISNULL(PT.AMT_ETM,0),0))/COUNT(TB.FR_TRADE_ID) - (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_DOC_DT DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE') AND doc.REQ_ID <> @REQ_ID AND DDT.TRADE_ID = TB.FR_TRADE_ID) - (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0) FROM dbo.PL_REQUEST_TRANSFER DDT LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE') AND doc.REQ_ID <> @REQ_ID AND DDT.FR_TRADE_ID = TB.FR_TRADE_ID) AS TOTAL_AMT_REMAIN FROM dbo.PL_REQUEST_TRANSFER TB LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.FR_TRADE_ID WHERE TB.REQ_DOC_ID=@REQ_ID AND TB.FR_KHOI_ID IN (SELECT KHOI_ID FROM @LST_KHOI) GROUP BY TB.FR_TRADE_ID )Temp WHERE (Temp.TOTAL_AMT_EXE) > Temp.TOTAL_AMT_REMAIN)) BEGIN INSERT INTO @Results ( ERROR, ERROR_DES ) VALUES ( 1, -- ERROR - bit N'Số tiền điều chuyển vượt hạng mức ngân sách dự kiến còn lại' -- ERROR_DES - nvarchar(100) ) RETURN END END END INSERT INTO @Results ( ERROR, ERROR_DES ) VALUES ( 0, -- ERROR - bit N'' -- ERROR_DES - nvarchar(100) ) RETURN END