﻿-- Juttatáshoz átlag számítása félévi jegy alapján
DROP PROCEDURE IF EXISTS uspUpdateSzamitottAtlagFelevi
GO

CREATE PROCEDURE uspUpdateSzamitottAtlagFelevi
   @pTanevId int
  ,@pDate datetime
  ,@pFelhasznaloId int
AS
BEGIN
SET @pDate = ISNULL(@pDate, GETDATE())

  IF @pDate >= (SELECT C_DATUM + 1 FROM T_TANEVRENDJE_OSSZES tr WHERE tr.C_NAPTIPUSA = 1400 AND tr.TOROLT = 'F' AND tr.C_TANEVID = @pTanevId) BEGIN -- Első félév vége
    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(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.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'
        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 = 1519 
        AND er.C_ISMAGATARTASSZORGALOM = 'F'
        AND er.TOROLT = 'F'
        AND er.C_TANEVID = @pTanevId
        AND ocs.C_FELADATKATEGORIAID = 7553
        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.ID
      WHERE dk.TOROLT = 'F'
  END
END
GO
