﻿-- Juttatáshoz átlag számítása az előző év végi jegyek alapján

DROP PROCEDURE IF EXISTS uspUpdateSzamitottAtlagEvvegi
GO

CREATE PROCEDURE uspUpdateSzamitottAtlagEvvegi
   @pTanevId int
  ,@pKovTanevId int
  ,@pFelhasznaloId int
AS
BEGIN

  UPDATE dk SET dk.C_SZAMITOTTATLAG = x.ATLAG
    ,dk.MODIFIER = @pFelhasznaloId
    ,dk.LASTCHANGED = GETDATE()
    ,dk.SERIAL = dk.SERIAL + 1
  FROM T_TANULO_OSSZES dk
  INNER JOIN (
    SELECT er.C_TANULOID, AVG(ISNULL(dpot.C_VALUE, d.C_VALUE) * 1.0) AS ATLAG 
    FROM T_TANULOERTEKELES_OSSZES er
      INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = er.C_OSZTALYCSOPORTID AND ocs.C_FELADATKATEGORIAID = 7553 AND ocs.TOROLT = 'F'
      INNER JOIN T_DICTIONARYITEMBASE_OSSZES d ON d.ID = er.C_ERTEKELESOSZTALYZATID AND d.C_TANEVID = er.C_TANEVID AND d.TOROLT = 'F'
      LEFT JOIN T_TANULOERTEKELES_OSSZES erpot ON er.C_TANULOID = erpot.C_TANULOID AND er.TOROLT = 'F' AND erpot.C_TANTARGYID = er.C_TANTARGYID AND erpot.C_TIPUSID = 6917 -- Javítóvizsga
      LEFT JOIN T_DICTIONARYITEMBASE_OSSZES dpot ON d.ID = erpot.C_ERTEKELESOSZTALYZATID AND d.C_TANEVID = erpot.C_TANEVID AND dpot.TOROLT = 'F'
      INNER JOIN T_TANTARGY_OSSZES tgy ON tgy.ID = er.C_TANTARGYID AND tgy.TOROLT = 'F'
      LEFT JOIN T_CSOPORT_OSSZES cs ON cs.ID = ocs.ID  AND cs.TOROLT = 'F'
      LEFT JOIN T_CSOPORTTIPUS_OSSZES cst ON cst.ID = cs.C_TIPUSA AND cs.C_ALTANEVID = cst.C_ALTANEVID  AND cst.TOROLT = 'F'
    WHERE er.C_TIPUSID = 1520 /* Év végi jegy */
      AND er.TOROLT = 'F' 
      AND er.C_ISMAGATARTASSZORGALOM = 'F'
      AND er.C_TANEVID = @pTanevId
      AND tgy.C_ISOSZTALYNAPLOBANEMLATSZIK = 'F' AND tgy.C_ISTANULMANYIATLAGBANEMSZAMIT = 'F'
      AND ((cs.ID IS NULL OR cst.C_ISTANORAICELU = 'T' AND tgy.C_FOTARGYE = 'T') OR (tgy.C_FOTARGYE = 'F' AND tgy.C_ALTANTARGYKENTNYOMTATVANYBAN = 'T'))
    GROUP BY er.C_TANULOID
  ) x ON x.C_TANULOID = dk.ELOZOTANEVIREKORDID
  WHERE dk.TOROLT = 'F'
    AND dk.C_ALTANEVID = @pKovTanevId
END
GO
