Nexus Salarii

Calcul număr de tichete de masă raportat la numarul de zile lucrătoare din pontaj


    Pentru exemplificare, considerăm că dorim să acordăm tichete de masă raportat la numarul de zile lucrătoare din pontaj, fără să țină cont de numărul de ore lucrate din fiecare zi.

     

    Dacă numarul de zile lucrătoare din pontaj depăsește numărul de zile lucrătoare legale din luna, atunci formula va returna numarul de zile lucrătoare legale din luna.


    Formula pentru Număr de tichete (valabila in Nexus de la versiunea 18.13, camp salvat in chenzina a-II-a):

    SELECT @retval= CASE WHEN ISNULL(o.zile,0) > (@ore_lun/8) THEN @ore_lun/8 ELSE ISNULL(o.zile,0) END
    FROM (
          SELECT b.anluna, b.pl_c12, b.id_c12, COUNT(DISTINCT p.data) AS zile
          FROM blc_view b
          INNER JOIN Sal_Pontaj p ON b.anluna = p.anluna AND b.pct_lcr = p.pl_blc AND b.id = p.id_blc
          INNER JOIN Sal_Pontaj_NomOre n ON p.tip = n.id
          WHERE b.anluna=@anluna AND b.pl_c12=@pl_c12 AND b.id_c12=@id_c12 AND n.tiplcr = 'LCR' AND b.calc_tic=1
          GROUP BY b.anluna, b.pl_c12, b.id_c12
    ) o

    Formula pentru Număr de tichete (valabila in Nexus pana la versiunea 18.12, camp salvat in bonul de lucru):

    SELECT @retval=CASE WHEN b.calc_tic=1 THEN CASE WHEN ISNULL(o.zile,0) > (@ore_lun/8) THEN @ore_lun/8 ELSE ISNULL(o.zile,0) END  ELSE 0 END
    FROM blc_view b
    LEFT JOIN (
        SELECT p.anluna, p.pl_blc, p.id_blc, COUNT(DISTINCT p.data) AS zile
        FROM Sal_Pontaj p
        INNER JOIN Sal_Pontaj_NomOre n ON p.tip = n.id    
        WHERE n.tiplcr = 'LCR' AND p.anluna=@anluna AND p.pl_blc=@pl_blc AND p.id_blc=@id_blc
        GROUP BY p.anluna, p.pl_blc, p.id_blc
    ) o ON b.anluna = o.anluna AND b.pct_lcr = o.pl_blc AND b.id = o.id_blc
    WHERE b.anluna=@anluna AND b.pct_lcr=@pl_blc AND b.id=@id_blc