Till senaste kommentaren
Detta inlägg är gammalt och kan innehålla inaktuell information.

Medelantal anställda (BL Lön Plus)

I årsredovisningen behöver jag lämna upplysningar om medelantalet av de personer som har varit anställda under räkenskapsåret. Hur kan jag ta fram denna information från löneprogrammet?
Bjorn Lunden (Uppdaterad )

Kommentarer

  • Då vi ännu inte har någon färdig funktion i programmet för att få fram medelantalet anställda så har vi tagit fram ett par SQL-frågor man kan använda sig av för att få fram ett underlag för denna beräkning.  

    Grundförutsättningar 

    • Man har haft semesterhanteringen i Lön Plus* aktiverat hela perioden 
    • Företaget ligger i molnet/på SQL Server
    • Det finns schema (med timmar per dag) på åtminstone alla med månadslön 
    • Korrekt avgångsdatum på de som har slutat under perioden 
    *Information om BL Lön Plus hittar du Här!

    Arbetsgång

    1. Välj vilken SQL-fråga/kod nedan som passar era förutsättningar, markera hela koden och Kopiera.
    1. Gå till Arkiv – Systemunderhåll – SQL-fråga
    1. Klistra in koden i rutan
    1. Ändra datumintervallen så att det stämmer överens med den period du vill titta på (räkenskapsåret)
    • OBS! datumintervallet som i exemplet visar 2020-02-01 till 2021-01-31 avser utbetalningsdatumet, och har alltså en månads förskjutning pga eftersläpande avvikelseperiod på lönen.  
    1. Tryck på Test-knappen
    1. Längst ned i listan summeras antalet arbetstimmar som du sen delar antingen med periodens timmar vid heltid eller med Skatteverkets schablon på 1920, och får på så vis fram medelantalet anställda.  
    SQL Alternativ 1

    • Denna gäller för företag där det finns korrekta schema även på alla timavlönade, och man använder ”hämta timmar från schema” 
    • Vad som hämtas; 
      • Timmar i arbetsschema, minus frånvaroavvikelser (exkl betald semester i någon form), plus timmar med sjuklön

    SELECT a.anstid, sum(a.timmar) as Timmar FROM arbetsschema as a, anstalld as b WHERE a.anstid=b.id AND a.datum>='2020-01-01' AND a.datum<= IIF(b.avgangsdatum = '' or b.avgangsdatum>'2020-12-31', Convert(date,'2020-12-31'), Convert(date, b.avgangsdatum)) GROUP BY a.anstid UNION SELECT a.anstid, sum(-a.timmar) as Timmar FROM salarycalendarlines as a, anstalld as b WHERE a.anstid=b.id AND a.datumfrom between '2020-01-01' and '2020-12-31' AND a.arbetsdag=1 AND (a.aktivitetid between 2000 and 6000 OR a.aktivitetid=1000 and a.semesterdagtyp=-1)  GROUP BY a.anstid UNION SELECT a.anstid, sum(a.antal) as Timmar FROM salarylines as a, anstalld as b, loneart as c WHERE a.anstid=b.id AND a.loneartid=c.id AND a.utbetdatum between '2020-02-01' and '2021-01-31' AND c.enhet='timmar' AND a.loneartkod='SJK' AND a.loneartkopplingtyp=0 GROUP BY a.anstid 


    SQL Alternativ 2

    • Denna används när det finns anställda med timlön som saknar schema/har nollschema/där schema ej stämmer med verkligheten 
    • Tänk på;  
      • Om man använder andra/fler lönearter för timlön än 010 så behöver man gå in på berörda lönearter (Uppläggning – Lönearter, markera och Redigera) och skriva ”timmar” i rutan för Enhet
      • Timlönearterna (utöver 010) måste även vara inställda som lönearttyp= Skattegr ers. med tabellskatt 
      • Beräkningen kommer inte kunna bli helt korrekt vid bruten löneperiod, men relativt nära 
    • Vad som hämtas; 
      • Vid löneavtal med månadslön hämtas precis som alternativ 1 timmar från schema, minus frånvaroavvikelser (exkl betald semester i någon form) plus timmar med sjuklön. 
      • Vid löneavtal med timlön hämtas istället antalet timlönearter (med enhet=timmar) plus betald semester plus timmar med sjuklön. 


    SELECT a.anstid, sum(a.timmar) as Timmar FROM arbetsschema as a, anstalld as b, löneavtal as d WHERE a.anstid=b.id AND a.datum>='2020-01-01' AND a.datum<= IIF(b.avgangsdatum = '' or b.avgangsdatum>'2020-12-31', Convert(date,'2020-12-31'), Convert(date, b.avgangsdatum)) AND b.loneavtalid=d.loneavtalid AND d.formelid='X' AND (d.formel='1' OR d.formel='3') GROUP BY a.anstid UNION SELECT a.anstid, sum(-a.timmar) as Timmar FROM salarycalendarlines as a, anstalld as b, löneavtal as d WHERE a.anstid=b.id AND a.datumfrom between '2020-01-01' and '2020-12-31' AND a.arbetsdag=1 AND (a.aktivitetid between 2000 and 6000 OR a.aktivitetid=1000 AND a.semesterdagtyp=-1) AND b.loneavtalid=d.loneavtalid AND d.formelid='X' AND (d.formel='1' OR d.formel='3') GROUP BY a.anstid UNION SELECT a.anstid, sum(a.antal) as Timmar FROM salarylines as a, anstalld as b, loneart as c WHERE a.anstid=b.id AND a.loneartid=c.id AND a.utbetdatum between '2020-02-01' and '2021-01-31' AND c.enhet='timmar' AND a.loneartkod='SJK' AND a.loneartkopplingtyp=0 GROUP BY a.anstid UNION SELECT a.anstid, sum(a.antal) as Timmar FROM salarylines as a, anstalld as b, loneart as c, löneavtal as d WHERE a.anstid=b.id AND a.loneartid=c.id AND a.utbetdatum between '2020-02-01' and '2021-01-31' AND b.loneavtalid=d.loneavtalid AND d.formelid='X' AND (d.formel='2' or d.formel='4') AND (c.enhet='timmar' AND c.typ=0 AND c.id<1000 OR c.id='010') GROUP BY a.anstid UNION SELECT a.anstid, sum(a.timmar) as Timmar FROM salarycalendarlines as a, anstalld as b, löneavtal as d WHERE a.anstid=b.id AND a.datumfrom between '2020-01-01' and '2020-12-31' AND a.arbetsdag=1 AND a.aktivitetid=1000 AND a.semesterdagtyp<>-1 AND b.loneavtalid=d.loneavtalid AND d.formelid='X' AND (d.formel='2' or d.formel='4') GROUP BY a.anstid
    Bjorn Lunden
    (Uppdaterad )
Inlägget är stängt för ytterligare kommentarer.