CREATE OR REPLACE FUNCTION MMPM_RECEITAM_COC(
  P_CDFILIAL      IN VARCHAR2,
  P_CDRECEITA     IN VARCHAR2,
  P_NRVARIACAOREC IN NUMBER )
RETURN FLOAT
IS
  V_MMPM_RECEITA FLOAT;
  V_MMPMTOTAL_SUBRECEITAS FLOAT;
BEGIN
  V_MMPMTOTAL_SUBRECEITAS := 0;
  V_MMPM_RECEITA          := 0;
  SELECT VRR.NRTEMPOPREP
  INTO V_MMPM_RECEITA
  FROM VARIACAOREC VRR
  INNER JOIN FILIRECEITA FLR
  ON FLR.CDFILIAL       = P_CDFILIAL
  AND FLR.CDRECEITA     = VRR.CDRECEITA
  AND FLR.NRVARIACAOREC = VRR.NRVARIACAOREC
  AND FLR.NRORG         = VRR.NRORG
  WHERE FLR.CDFILIAL    = P_CDFILIAL
  AND VRR.CDRECEITA     = P_CDRECEITA
  AND VRR.NRVARIACAOREC = P_NRVARIACAOREC;
  SELECT SUM( ROUND( MMPM_RECEITAM_COC( P_CDFILIAL, SR.CDSUBRECEITA, SR.NRVARIACAOREC) * ROUND ( NVL( SR.QTRENDSUBREC,0 ) ,5 ) ,5 ) )
  INTO V_MMPMTOTAL_SUBRECEITAS
  FROM SUBRECEITAM SR
  WHERE SR.CDRECEITA   = P_CDRECEITA
  AND SR.NRVARIACAOREC = P_NRVARIACAOREC;
  RETURN ROUND( NVL(V_MMPMTOTAL_SUBRECEITAS,0) + NVL(V_MMPM_RECEITA, 0) );
END;
/