ALTER PROC [dbo].[TR_REQ_GOOD_BYCONTRACT] @p_REF_ID VARCHAR(150) AS BEGIN DECLARE @PYC_MS_ID VARCHAR(15) IF(EXISTS(SELECT * FROM TR_CONTRACT WHERE CONTRACT_ID =@p_REF_ID )) BEGIN SET @PYC_MS_ID = (SELECT REQ_DOC_ID FROM TR_CONTRACT WHERE CONTRACT_ID =@p_REF_ID) --- BAT DAU LAY DU LIEU SELECT PM.PLAN_ID,PM.PLAN_CODE,PLDT.TRADE_ID,DT.GOODS_ID,CG.GD_CODE,CG.GD_NAME,PM.BRANCH_ID,PM.DEPT_ID, ISNULL(PLDT.QUANTITY,0) AS QUANTITY, ISNULL(DT.QUANTITY_EXE,0) AS QUANTITY_EXE, ISNULL(DT.QUANTITY_ETM,0) AS QUANTITY_ETM, ISNULL(DT.QUANTITY,0)- ISNULL(DT.QUANTITY_EXE,0) AS QUANTITY_REMAIN, ISNULL(DT.QUANTITY,0)-ISNULL(DT.QUANTITY_ETM,0) AS QUANTITY_REMAIN_ETM, ISNULL( PLDT.AMT_APP,0)+ ISNULL( DT.AMT_RECEIVE_TF,0) AS AMT_APP, ISNULL( X.AMT_EXE,0) AS AMT_EXE, ISNULL( DT.AMT_ETM,0) AS AMT_ETM, --ISNULL(DT.AMT_APP,0) + ISNULL( DT.AMT_RECEIVE_TF,0)- ISNULL( DT.AMT_TF,0)- ISNULL(DT.AMT_EXE,0) AS AMT_REMAIN, ISNULL(DT.AMT_APP,0) + ISNULL( DT.AMT_RECEIVE_TF,0)- ISNULL( DT.AMT_TF,0)-ISNULL(DT.AMT_ETM,0) AS AMT_REMAIN_ETM, ISNULL(PLDT.AMT_APP,0) - ISNULL(X.AMT_EXE,0) AS AMT_REMAIN, @p_REF_ID AS REF_ID FROM ( SELECT B.TRADE_ID,B.GOODS_ID,A.REQ_DOC_ID,CT.CONTRACT_ID, SUM(CT.QUANTITY) AS QUANTITY,SUM( CT.QUANTITY * CT.PRICE) AS AMT_APP FROM TR_REQUEST_DOC_DT A LEFT JOIN PL_REQUEST_DOC_DT B ON A.PL_REQDT_ID=B.REQDT_ID LEFT JOIN TR_CONTRACT_DT CT ON A.HANGHOA_ID = CT.GOODS_ID GROUP BY B.TRADE_ID,B.GOODS_ID,A.REQ_DOC_ID,CT.CONTRACT_ID ) PLDT LEFT JOIN ( SELECT A.TRADE_ID, SUM(A.AMT_EXE) AS AMT_EXE FROM TR_REQ_PAY_BUDGET A LEFT JOIN TR_REQ_PAYMENT B ON A.REQ_PAY_ID = B.REQ_PAY_ID --LEFT JOIN TR_REQ_PAY_SCHEDULE C ON B.REQ_PAY_ID = C.REQ_PAY_ID WHERE B.AUTH_STATUS_KT='A' AND A.REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@p_REF_ID) GROUP BY TRADE_ID ) X ON PLDT.TRADE_ID = X.TRADE_ID INNER JOIN PL_TRADEDETAIL DT ON DT.TRADE_ID=PLDT.TRADE_ID INNER JOIN PL_MASTER PM ON DT.PLAN_ID= PM.PLAN_ID INNER JOIN CM_GOODS CG ON PLDT.GOODS_ID = CG.GD_ID WHERE PLDT.REQ_DOC_ID =@PYC_MS_ID AND PLDT.CONTRACT_ID =@p_REF_ID END ELSE BEGIN SET @PYC_MS_ID = (SELECT REQ_DOC_ID FROM TR_PO_MASTER WHERE PO_ID =@p_REF_ID) -- BAT DAU LAY DU LIEU SELECT PM.PLAN_ID,PM.PLAN_CODE,PLDT.TRADE_ID,DT.GOODS_ID,CG.GD_CODE,CG.GD_NAME,PM.BRANCH_ID,PM.DEPT_ID, ISNULL(PLDT.QUANTITY,0) AS QUANTITY, ISNULL(DT.QUANTITY_EXE,0) AS QUANTITY_EXE, ISNULL(DT.QUANTITY_ETM,0) AS QUANTITY_ETM, ISNULL(DT.QUANTITY,0)- ISNULL(DT.QUANTITY_EXE,0) AS QUANTITY_REMAIN, ISNULL(DT.QUANTITY,0)-ISNULL(DT.QUANTITY_ETM,0) AS QUANTITY_REMAIN_ETM, ISNULL( PLDT.AMT_APP,0) + ISNULL( DT.AMT_RECEIVE_TF,0) AS AMT_APP, ISNULL( X.AMT_EXE,0) AS AMT_EXE, ISNULL( DT.AMT_ETM,0) AS AMT_ETM, --ISNULL(DT.AMT_APP,0) + ISNULL( DT.AMT_RECEIVE_TF,0)- ISNULL( DT.AMT_TF,0)- ISNULL(DT.AMT_EXE,0) AS AMT_REMAIN, ISNULL(DT.AMT_APP,0) + ISNULL( DT.AMT_RECEIVE_TF,0)- ISNULL( DT.AMT_TF,0)-ISNULL(DT.AMT_ETM,0) AS AMT_REMAIN_ETM, --ISNULL(PLDT.AMT_APP,0) - ISNULL(X.AMT_EXE,0) AS AMT_REMAIN ISNULL(PLDT.AMT_APP,0) - ISNULL(X.AMT_EXE,0) AS AMT_REMAIN , @p_REF_ID AS REF_ID FROM ( SELECT B.TRADE_ID,B.GOODS_ID,A.REQ_DOC_ID,CT.PO_ID, SUM(CT.QUANTITY) AS QUANTITY, SUM( CT.QUANTITY * (CT.PRICE+CT.PRICE_VAT)) AS AMT_APP FROM TR_REQUEST_DOC_DT A LEFT JOIN PL_REQUEST_DOC_DT B ON A.PL_REQDT_ID=B.REQDT_ID LEFT JOIN TR_PO_DETAIL CT ON A.HANGHOA_ID = CT.GOODS_ID GROUP BY B.TRADE_ID,B.GOODS_ID,A.REQ_DOC_ID,CT.PO_ID ) PLDT LEFT JOIN ( SELECT A.TRADE_ID, SUM(A.AMT_EXE) AS AMT_EXE FROM TR_REQ_PAY_BUDGET A LEFT JOIN TR_REQ_PAYMENT B ON A.REQ_PAY_ID = B.REQ_PAY_ID WHERE B.AUTH_STATUS_KT='A' AND A.REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@p_REF_ID) GROUP BY TRADE_ID ) X ON PLDT.TRADE_ID = X.TRADE_ID INNER JOIN PL_TRADEDETAIL DT ON DT.TRADE_ID=PLDT.TRADE_ID INNER JOIN PL_MASTER PM ON DT.PLAN_ID= PM.PLAN_ID INNER JOIN CM_GOODS CG ON PLDT.GOODS_ID = CG.GD_ID WHERE PLDT.REQ_DOC_ID =@PYC_MS_ID AND PLDT.PO_ID =@p_REF_ID END END