03/12/2024 - lele2006 ha scritto:
Dovrei fare una ricerca del dato (condizione where) con between tra inizio e fine mese (esempio 01/03/2024 al 31/03/2024), la somma del compo oreimpiego, e raggruppi per tutti che hanno nomecognome .
03/12/2024 - Marco195 ha scritto:
Vorrei poter
1) Sommare le ore di impiego di ogni mese
2) Sapere quanti giorni al mese ha lavorato NomeCognome
non sono la stessa cosa...
la tabella che hai rappresentato somiglia ad una tabella estrapolata da un sistema di badge al netto di ora ingresso e ora uscita e dove nomecognome sia l'id del badge.
questi dati servono solo per estrapolare ore e giorni di presenza. mancano dati del tipo festivo, ore straordinarie, ecc...
trattandola per quello che è, ossia un controllo ingressi, la parte da elaborare devi farla da codice.
non penso ti sia utile una tabella riassuntiva per mese e per dipendente per elaborare una busta paga (supponendo sia questo lo scopo finale).
dagli accessi a suon di sql estrapoli gli elementi della busta paga:
giorni lavorativi (la x sulla tabellina esposta in busta paga conforme inps/inail) ai quali vanno aggiunti, in funzione delle ore e giorni pattuite da contratto, i giorni di riposo, le ore eccedenti il contratto come straordinario, i festivi.
trovati i giorni e le ore effettive al netto di permessi (estrapolabili da una tabella "permessi" per usare lafantasia), procedi al calcolo in base ai parametri contrattuali del singolo impiegato nonchè la verifica che a calendario non dia segnato come festivo (considera anche il santo patrono).
Già solo per lo stralcio di elaborazioni citate, non ti serve a nulla trasformare una tabella in un'altra tabella con una sql, devi andare di codice.
elaborazione:
clessidra progressbar e messaggio "elaborazione busta del dott.... in corso".
segni il dipendente: elabDip='Pippo' o lo prendi dalla tabella impiegati where dimesso=false (o qualcosa di simile)
segni il mese da elaborare datainizo='2023-12-31' datafine='2024-01-03'
estrapoli le sue ore:
ElabSql='SELECT sum(ore) FROM presenze where nomecognome='' & elabDip &'' and (presenzadata>' & datainizo & ' and presenzadata<' &datafine);
TotOre=il risultato della query questo per chi ha paga oraria (operaio)
idem per i giorni per chi ha paga giornaliera (amministrativi e impiegati) la seconda queryi che estrapola i giorni.
poi da paga giornaliera o paghecontrattuali elabori gli importi in busta...
per ogni voce inserisci una rigabusta legata 1 a m a bustepaga (basta che dai uno sguardo ala tua busta per capire che le voci sono a sviluppo verticale, trattenute incluse.
mi fermo qui.. il resto lo fai tu.