Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Pagina 2 di 3 primaprima 123 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 24

Calcolo compenso con orari a cavallo di giorni

  1. #11
    Sergio Mazza non  in linea Novello
    Post
    18
    Like Inviati  
    1
    Like Ricevuti  
    0
    Sto facendo dei test e un loop che mi "gira" in test questo:

    Sub test(giorno As Date, entrata As Date, uscita As Date)
    'uso: test date, #12-01-2020 17:30:00#, #12-03-2020 03:30:00#
    
    Dim giornoEntrata As Date, giornoUscita As Date, entrataTmp As Date, uscitaTmp As Date
    Dim giorniDifferenza As Integer
    
    giornoEntrata = DateValue(entrata)
    giornoUscita = DateValue(uscita)
    entrataTmp = entrata
    uscitaTmp = uscita
    
    Do
    
        '--> c' una differenza di giorni tra entrata e uscita?
        giorniDifferenza = DateDiff("d", giornoEntrata, giornoUscita)
        
        '--> se c' differenza il giorno di uscita diventa il giorno di entrata e l'orario lo imposto alle 24:00
        If giorniDifferenza > 0 Then
            giornoUscita = DateValue(giornoEntrata) & " 00:00:00"
        End If
        '<--
        
        '--> calcolo compenso orario
        Debug.Print "Calcolo compenso orario per Entrata : " & giornoEntrata & " Uscita: " & giornoUscita
        '<-- fine calcolo compenso orario
    
        Debug.Print "Entrata : " & giornoEntrata & " Uscita: " & giornoUscita
        
        '--> se c' differenza tra giorni entrata/uscita,
        If DateDiff("d", giornoUscita, uscita) > 0 Then
            giornoEntrata = DateAdd("d", 1, giornoEntrata)
            giornoUscita = DateAdd("d", 1, giornoUscita)
        Else
            Exit Do
        End If
        
    Loop
    
    Debug.Print "Esco con Entrata : " & giornoEntrata & " Uscita: " & giornoUscita
    End Sub
    
    il loop funziona ora dovrei vedere se integrato con la funzione del calcolo del compenso, mi ritorna valori giusti.
    ℹ️ Leggi di pi su Sergio Mazza ...

  2. #12
    Sergio Mazza non  in linea Novello
    Post
    18
    Like Inviati  
    1
    Like Ricevuti  
    0
    Ecco cosa ho partorito:

    Sub test(giorno As Date, entrata As Date, uscita As Date)
    'uso: test date, #12-01-2020 17:30:00#, #12-03-2020 03:30:00#
    
    Dim entrataTmp As Date, uscitaTmp As Date
    
    entrataTmp = entrata
    uscitaTmp = uscita
        
    '--> se c' differenza il giorno di uscita diventa il giorno di entrata e l'orario lo imposto alle 24:00
    If DateDiff("d", entrata, uscita) > 0 Then
        uscitaTmp = DateValue(entrataTmp) & " 23:59:59"
    End If
    '<--
    
    Do
            
        '--> calcolo compenso orario
        Debug.Print "Calcolo compenso orario per Entrata : " & entrataTmp & " Uscita: " & uscitaTmp & " ore lavorate: " & ElapsedTime(uscitaTmp - entrataTmp, "ore:minuti:secondi")
        '<-- fine calcolo compenso orario
                  
        '--> aggiungo un giorno all'entrata e uscita, l'orario di entrata diventa 00:00:00
        entrataTmp = DateValue(DateAdd("d", 1, entrataTmp)) & " 00:00:00"
        uscitaTmp = DateAdd("d", 1, uscitaTmp)
        
    Loop Until DateDiff("d", uscitaTmp, uscita) = 0
    
    '--> se c' differenza il giorno di uscita diventa il giorno di entrata e l'orario lo imposto alle 24:00
    If DateDiff("d", entrata, uscita) > 0 Then
         uscitaTmp = uscita
    End If
    '<--
    
    '--> calcolo compenso orario
    Debug.Print "Calcolo compenso orario per Entrata : " & entrataTmp & " Uscita: " & uscitaTmp & " ore lavorate: " & ElapsedTime(uscitaTmp - entrataTmp, "ore:minuti:secondi")
    '<-- fine calcolo compenso orario
    
    End Sub
    
    Ricordo che la funzione ElapsedTime l'ho trovata qui:
    https://docs.microsoft.com/it-it/off...-datetime-data

    Nella finestra immediata ho l'output:
    test date, #12-01-2020 17:30:00#, #12-03-2020 03:30:00#
    Calcolo compenso orario per Entrata : 01/12/2020 17:30:00 Uscita: 01/12/2020 23:59:59 ore lavorate: 6:29:59
    Calcolo compenso orario per Entrata : 02/12/2020 Uscita: 02/12/2020 23:59:59 ore lavorate: 23:59:59
    Calcolo compenso orario per Entrata : 03/12/2020 Uscita: 03/12/2020 03:30:00 ore lavorate: 3:30:00

    Secondo me una zozzeria di codice, vorrei evitare di fare l'ultimo aggiustamento dell'ora di uscita quando sono fuori dal loop... Se possibile...
    ℹ️ Leggi di pi su Sergio Mazza ...

  3. #13
    Sergio Mazza non  in linea Novello
    Post
    18
    Like Inviati  
    1
    Like Ricevuti  
    0
    Lasciate perdere, mi ero talmente concentrato sul calcolo di pi giorni che se l'entrata e l'uscita sono nello stesso giorno il loop risulta infinito.

    Quote Originariamente inviato da Sergio Mazza Visualizza il messaggio
    Ecco cosa ho partorito:

    Sub test(giorno As Date, entrata As Date, uscita As Date)
    'uso: test date, #12-01-2020 17:30:00#, #12-03-2020 03:30:00#
    
    Dim entrataTmp As Date, uscitaTmp As Date
    
    entrataTmp = entrata
    uscitaTmp = uscita
        
    '--> se c' differenza il giorno di uscita diventa il giorno di entrata e l'orario lo imposto alle 24:00
    If DateDiff("d", entrata, uscita) > 0 Then
        uscitaTmp = DateValue(entrataTmp) & " 23:59:59"
    End If
    '<--
    
    Do
            
        '--> calcolo compenso orario
        Debug.Print "Calcolo compenso orario per Entrata : " & entrataTmp & " Uscita: " & uscitaTmp & " ore lavorate: " & ElapsedTime(uscitaTmp - entrataTmp, "ore:minuti:secondi")
        '<-- fine calcolo compenso orario
                  
        '--> aggiungo un giorno all'entrata e uscita, l'orario di entrata diventa 00:00:00
        entrataTmp = DateValue(DateAdd("d", 1, entrataTmp)) & " 00:00:00"
        uscitaTmp = DateAdd("d", 1, uscitaTmp)
        
    Loop Until DateDiff("d", uscitaTmp, uscita) = 0
    
    '--> se c' differenza il giorno di uscita diventa il giorno di entrata e l'orario lo imposto alle 24:00
    If DateDiff("d", entrata, uscita) > 0 Then
         uscitaTmp = uscita
    End If
    '<--
    
    '--> calcolo compenso orario
    Debug.Print "Calcolo compenso orario per Entrata : " & entrataTmp & " Uscita: " & uscitaTmp & " ore lavorate: " & ElapsedTime(uscitaTmp - entrataTmp, "ore:minuti:secondi")
    '<-- fine calcolo compenso orario
    
    End Sub
    
    Ricordo che la funzione ElapsedTime l'ho trovata qui:
    https://docs.microsoft.com/it-it/off...-datetime-data

    Nella finestra immediata ho l'output:
    test date, #12-01-2020 17:30:00#, #12-03-2020 03:30:00#
    Calcolo compenso orario per Entrata : 01/12/2020 17:30:00 Uscita: 01/12/2020 23:59:59 ore lavorate: 6:29:59
    Calcolo compenso orario per Entrata : 02/12/2020 Uscita: 02/12/2020 23:59:59 ore lavorate: 23:59:59
    Calcolo compenso orario per Entrata : 03/12/2020 Uscita: 03/12/2020 03:30:00 ore lavorate: 3:30:00

    Secondo me una zozzeria di codice, vorrei evitare di fare l'ultimo aggiustamento dell'ora di uscita quando sono fuori dal loop... Se possibile...
    ℹ️ Leggi di pi su Sergio Mazza ...

  4. #14
    L'avatar di @Alex
    @Alex non  in linea Very Important Person
    Post
    16,745
    Like Inviati  
    0
    Like Ricevuti  
    18
    Scusa non ho guardato le tue proposte... ho buttato gi 2 righe della mia idea che ti propongo.
    Porta pazienza per gli eventuali BUGS, ma era solo per esporti il concetto, molto sconclusionato che ho provato a spiegare malamente.

    Test:
    ?CalcolaOre(#12-01-2020 17:30:00#,#12-03-2020 01:30:00#)
    Ore in Fascia(0)=7          Costo=140,00 €              Minuti=390
    Ore in Fascia(1)=4          Costo=120,00 €              Minuti=240
    Ore in Fascia(2)=8          Costo=320,00 €              Minuti=450
    580,00 €
    
    ?CalcolaOre(#12-01-2020 17:30:00#,#12-03-2020 03:30:00#) 
    Ore in Fascia(0)=7          Costo=140,00 €              Minuti=390
    Ore in Fascia(1)=4          Costo=120,00 €              Minuti=240
    Ore in Fascia(2)=8          Costo=320,00 €              Minuti=480
    580,00 €
    
    Risultati uguali per la questione dell'arrotondamento orario... ben visibile dal confronto in Minuti.

    Questo quanto:
    Option Compare Database
    Option Explicit
    
    Private Type dtStep
        hIni        As Date
        hEnd        As Date
        Costo       As Currency
        mFatti      As Integer
        HFatte      As Integer
    End Type
    
    Function CalcolaOre(Inizio As Date, Fine As Date) As String
        Dim i                   As Integer
        Dim dtAct               As dtStep
        Dim Fascia(0 To 2)      As dtStep
        Dim Compenso            As Currency
        
        Fascia(0).hIni = TimeValue("16:00")
        Fascia(0).hEnd = TimeValue("20:00")
        Fascia(0).Costo = 20
        Fascia(1).hIni = TimeValue("20:00")
        Fascia(1).hEnd = TimeValue("22:00")
        Fascia(1).Costo = 30
        Fascia(2).hIni = TimeValue("22:00")
        Fascia(2).hEnd = TimeValue("02:00")
        Fascia(2).Costo = 40
    
        i = 0
        dtAct.hIni = Fix(Inizio) + Fascia(i).hIni
        dtAct.hEnd = Fix(Inizio) + Fascia(i).hEnd
        
        Do Until dtAct.hIni > Fine
            If Inizio > dtAct.hIni And Fine >= dtAct.hEnd Then
                ' la fascia va contabilizzata  parzialmente inclusa, ha INIZIATO nel mezzo della fascia.
                ' ho arrotondato nel caso di Ore spezzate
                Fascia(i).HFatte = Fascia(i).HFatte + Fix(0.99 + DateDiff("n", Inizio, dtAct.hEnd) / 60)
                Fascia(i).mFatti = Fascia(i).mFatti + DateDiff("n", Inizio, dtAct.hEnd)
            ElseIf Inizio <= dtAct.hIni And Fine >= dtAct.hEnd Then
                ' la fascia va contabilizzata  completamente inclusa
                Fascia(i).HFatte = Fascia(i).HFatte + DateDiff("h", dtAct.hIni, dtAct.hEnd)
                Fascia(i).mFatti = Fascia(i).mFatti + DateDiff("n", dtAct.hIni, dtAct.hEnd)
                
            ElseIf Inizio <= dtAct.hIni And Fine < dtAct.hEnd Then
                ' la fascia va contabilizzata  parzialmente inclusa, ha FINITO nel mezzo della fascia.
                ' ho arrotondato nel caso di Ore spezzate
                Fascia(i).HFatte = Fascia(i).HFatte + Fix(0.99 + DateDiff("n", dtAct.hIni, Fine) / 60)
                Fascia(i).mFatti = Fascia(i).mFatti + DateDiff("n", dtAct.hIni, Fine)
            End If
            i = i + 1
            If i > UBound(Fascia()) Then i = 0
            
            dtAct.hIni = Fix(dtAct.hEnd) + Fascia(i).hIni
            dtAct.hEnd = DateAdd("d", -(Fascia(i).hEnd < Fascia(i).hIni), Fix(dtAct.hEnd)) + Fascia(i).hEnd
    
        Loop
        For i = 0 To 2
            Compenso = Compenso + Fascia(i).HFatte * Fascia(i).Costo
            Debug.Print "Ore in Fascia(" & i & ")=" & Fascia(i).HFatte, "Costo=" & FormatCurrency(Fascia(i).HFatte * Fascia(i).Costo), "Minuti=" & Fascia(i).mFatti
        Next
        CalcolaOre = FormatCurrency(Compenso)
    End Function
    
    Se il metodo utile, so che non hai problemi ad adattarlo... ma penso ad occhio sia il metoo che hai usato tu.
    Ultima modifica di @Alex; 31-12-2020 10:16 
    ℹ️ Leggi di pi su @Alex ...

  5. #15
    L'avatar di @Alex
    @Alex non  in linea Very Important Person
    Post
    16,745
    Like Inviati  
    0
    Like Ricevuti  
    18
    Ho semplificato una variabile aggiungedo al Type il Tempo in Ore... e minuti se serve...

    Funziona anche il calcolo in giornata, questo ad esempio:
    ? CalcolaOre(#12-01-2020 17:30:00#, #12-01-2020 23:30:00#)
    Ore in Fascia(0)=3          Costo=60,00 € Minuti=150
    Ore in Fascia(1)=2          Costo=60,00 € Minuti=120
    Ore in Fascia(2)=2          Costo=80,00 € Minuti=90
    200,00 €
    
    Risulta evidente che sono 5 Ore + 2 mezz'ore nelle fasce esterne, che, nel calcolo ho arrotondato, quindi 7 ore, se non si desidera arrotondare basta fare il calcolo in relazione alla porzione minima fatturabile calcolando in Minuti ed arrotondando poi a 15Min o 30Min.

    P.S. da verificare in caso di fasce non cotigue...
    Ultima modifica di @Alex; 31-12-2020 10:21 
    ℹ️ Leggi di pi su @Alex ...

  6. #16
    L'avatar di @Alex
    @Alex non  in linea Very Important Person
    Post
    16,745
    Like Inviati  
    0
    Like Ricevuti  
    18
    Oggi una giornata di relax, credo sia pi chiara e forse pi performante avendo ridotto i calcoli inutili:
    Option Compare Database
    Option Explicit
    
    Private Type dtStep
        hIni        As Date
        hEnd        As Date
        Costo       As Currency
        mFatti      As Integer
        HFatte      As Integer
    End Type
    
    Function CalcolaOre(Inizio As Date, Fine As Date) As String
        Dim i                   As Integer
        Dim dtAct               As dtStep
        Dim Fascia(0 To 2)      As dtStep
        Dim Compenso            As Currency
        Dim iMin                As Integer
        Dim dt1                 As Date
        Dim dt2                 As Date
        
        Fascia(0).hIni = TimeValue("16:00")
        Fascia(0).hEnd = TimeValue("20:00")
        Fascia(0).Costo = 20
        Fascia(1).hIni = TimeValue("20:00")
        Fascia(1).hEnd = TimeValue("22:00")
        Fascia(1).Costo = 30
        Fascia(2).hIni = TimeValue("22:00")
        Fascia(2).hEnd = TimeValue("02:00")
        Fascia(2).Costo = 40
    
        i = 0
        dtAct.hIni = Fix(Inizio) + Fascia(i).hIni
        dtAct.hEnd = Fix(Inizio) + Fascia(i).hEnd
        
        Do Until dtAct.hIni > Fine
            dt1 = dtAct.hIni
            dt2 = dtAct.hEnd
    
            If Inizio > dt1 And Fine >= dt2  Then
                dt1 = Inizio
            ElseIf Inizio <= dt1 And Fine < dt2  Then
                dt2 = Fine
            End If
            
            iMin = DateDiff("n", dt1, dt2)
            Fascia(i).HFatte = Fascia(i).HFatte + Fix(0.99 + iMin / 60)
            Fascia(i).mFatti = Fascia(i).mFatti + iMin
            
            i = i + 1
            If i > UBound(Fascia()) Then i = 0
            dtAct.hIni = Fix(dtAct.hEnd) + Fascia(i).hIni
            dtAct.hEnd = DateAdd("d", -(Fascia(i).hEnd < Fascia(i).hIni), Fix(dtAct.hEnd)) + Fascia(i).hEnd
        Loop
        For i = 0 To 2
            Compenso = Compenso + Fascia(i).HFatte * Fascia(i).Costo
            Debug.Print "Ore in Fascia(" & i & ")=" & Fascia(i).HFatte, "Costo=" & FormatCurrency(Fascia(i).HFatte * Fascia(i).Costo), "Minuti=" & Fascia(i).mFatti
        Next
        CalcolaOre = FormatCurrency(Compenso)
    End Function
    
    Ultima modifica di @Alex; 31-12-2020 10:56 
    ℹ️ Leggi di pi su @Alex ...

  7. #17
    Sergio Mazza non  in linea Novello
    Post
    18
    Like Inviati  
    1
    Like Ricevuti  
    0
    ...Copio; includo; adatto; testo e ritorno a rapporto...

    Grazie
    ℹ️ Leggi di pi su Sergio Mazza ...

  8. #18
    L'avatar di @Alex
    @Alex non  in linea Very Important Person
    Post
    16,745
    Like Inviati  
    0
    Like Ricevuti  
    18
    Abbiamo rilevato qualche BUGS nel caso in cui le Fasce orarie fossero minori di 3, quindi 2 o anche 1 sola..., il calcolo andava in OverFlow... soprattutto nel caso in cui la fascia di intervento fosse all'interno della stessa giornata.
    Quindi il codice rivisiitato questo, ho aggiunto qualche commento per la comprensinoe della logica di calcolo:
    Option Compare Database
    Option Explicit
    
    Private Type dtStep
        hIni        As Date
        hEnd        As Date
        Costo       As Currency
        mFatti      As Integer
        HFatte      As Integer
    End Type
    
    Function CalcolaOre(Inizio As Date, Fine As Date) As String
        Dim i                   As Integer
        Dim dtAct               As dtStep
        Dim Fascia(0 To 2)      As dtStep
        Dim Compenso            As Currency
        Dim iMin                As Integer
        Dim dt1                 As Date
        Dim dt2                 As Date
        
        Fascia(0).hIni = TimeValue("08:00")
        Fascia(0).hEnd = TimeValue("20:30")
        Fascia(0).Costo = 20
        Fascia(1).hIni = TimeValue("20:30")
        Fascia(1).hEnd = TimeValue("22:00")
        Fascia(1).Costo = 30
        Fascia(2).hIni = TimeValue("22:00")
        Fascia(2).hEnd = TimeValue("02:00")
        Fascia(2).Costo = 40
    
        i = 0
        ' Calcolo in base a [Inizio] la 1 Fascia del Giorno
        dtAct.hIni = Fix(Inizio) + Fascia(i).hIni
        dtAct.hEnd = Fix(Inizio) + Fascia(i).hEnd
        
        Do Until dtAct.hIni > Fine
            ' dt1 e dt2 sono Variabili solo per il calcolo
            dt1 = dtAct.hIni
            dt2 = dtAct.hEnd
        
            If Inizio > dt1 Then dt1 = Inizio           ' Data/Ora Inizio sono Maggiori della Fascia significa che ho un calcolo in fascia parziale
                                                        ' quindi dt1 deve assumere il valore di inzio vero per il calcolo
                                                        ' Es: Inizio = 10:00 ma Fascia.hini=08:00 ovviamente il calcolo deve prendere 10:00
                                                        
            If Fine < dt2 Then dt2 = Fine               ' Data/Ora Fine sono Inferiori a Fine Fascia
                                                        ' quindi dt2 deve assumere il valore di fine vero per il calcolo
                                                        ' Es: Inizio = 22:00 ma Fascia.hend=20:00 ovviamente il calcolo deve prendere 20:00
    
                                                        ' Se invece Inizio < InizioFascia e Fine>FineFascia significa che la fascia in questione  completamente da contabilizzare
                                                        ' in quanto tutta inclusa.
                                                        ' Es:   Inizio=16:00  Fine=21:00 dove Fascia(n).hIni=18:00   Fascia(n).hEnd=20:00, la fascia in questione 4h  inclusa
                                                        ' quindi le 2 variabili dt1 e dt2 non le tocco
            iMin = DateDiff("n", dt1, dt2)
            Fascia(i).HFatte = Fascia(i).HFatte + Fix(0.99 + iMin / 60)
            Fascia(i).mFatti = Fascia(i).mFatti + iMin
            If dt2 = Fine Then Exit Do
            i = i + 1
            If i > UBound(Fascia()) Then i = 0
    
            ' Qu gestisco il salto giorno se serve...
            If Fascia(i).hEnd < Fascia(i).hIni Then
                ' di fatto se la fine Fascia  minore dell'inizio... significa che la Fascia  a cavallo del giorno.
                ' Es: Fascia(n).hIni=22:00 Fascia(n).hEnd=03:00, risulter vera questa condizione
                ' quindi a dtAct.hEnd, e solo a dtAct.hEnd devo aggiungere 1gg
                dtAct.hIni = Fix(dtAct.hEnd) + Fascia(i).hIni
                dtAct.hEnd = DateAdd("d", 1, Fix(dtAct.hEnd)) + Fascia(i).hEnd
            Else
                ' Se ho azzerato i significa che ho ricominciato la Fascia(0)... quindi a meno di altre varianti aggiungo 1gg all''inizio
                ' Es: Fascia(n).hIni=22:00 Fascia(n).hEnd=03:00, risulter vera questa condizione
                ' quindi a dtAct.hEnd, e solo a dtAct.hEnd devo aggiungere 1gg
                dtAct.hIni = DateAdd("d", -(i = 0), Fix(dtAct.hIni)) + Fascia(i).hIni
                dtAct.hEnd = Fix(dtAct.hIni) + Fascia(i).hEnd
            End If
        Loop
        For i = 0 To UBound(Fascia())
            Compenso = Compenso + Fascia(i).HFatte * Fascia(i).Costo
            Debug.Print "Ore in Fascia(" & i & ")=" & Fascia(i).HFatte, "Costo=" & FormatCurrency(Fascia(i).HFatte * Fascia(i).Costo), "Minuti=" & Fascia(i).mFatti
        Next
        CalcolaOre = FormatCurrency(Compenso)
    End Function
    
    Serve fare qualche controllo sul calcolo orario, nel caso in cui le Fasce orarie non fossero consecutive, ovvero, quando tra una fascia e la successiva ci fosse 1 o pi ore di salto.

    Chiaramente non tiene conto dei Giorni Festivi, quindi se servisse anche questo serve implementare il Check del Festivo... nel caso va skippato ed aggiunto 1gg alla volta fino ad uscire dal Festivo...
    ℹ️ Leggi di pi su @Alex ...

  9. #19
    Sergio Mazza non  in linea Novello
    Post
    18
    Like Inviati  
    1
    Like Ricevuti  
    0
    Quote Originariamente inviato da @Alex Visualizza il messaggio
    Abbiamo rilevato qualche BUGS nel caso in cui le Fasce orarie fossero minori di 3, quindi 2 o anche 1 sola..., il calcolo andava in OverFlow... soprattutto nel caso in cui la fascia di intervento fosse all'interno della stessa giornata.
    Quindi il codice rivisiitato questo, ho aggiunto qualche commento per la comprensinoe della logica di calcolo:
    ...omissis...
    Serve fare qualche controllo sul calcolo orario, nel caso in cui le Fasce orarie non fossero consecutive, ovvero, quando tra una fascia e la successiva ci fosse 1 o pi ore di salto.

    Chiaramente non tiene conto dei Giorni Festivi, quindi se servisse anche questo serve implementare il Check del Festivo... nel caso va skippato ed aggiunto 1gg alla volta fino ad uscire dal Festivo...
    Non sar questo il mio caso.
    Le pause ci potrebbero essere solo nelle timbrature; non prevista una continuit lavorativa interrotta da festivi o similari.

    Testo e riferisco...

    Grazie
    ℹ️ Leggi di pi su Sergio Mazza ...

  10. #20
    Sergio Mazza non  in linea Novello
    Post
    18
    Like Inviati  
    1
    Like Ricevuti  
    0
    Mi sembra ci sia quiquoqua sul conteggio orelavorate * tariffaoraria.

    La riga: Fascia(i).HFatte * Fascia(i).Costo, da quanto leggo non tiene conto dei minuti eccedenti in Fascia(i).mFatti; o sbaglio?

    Io utilizzavo: ((Hour(oreLavorate) + Minute(oreLavorate) / 60) * compensoPerFascia).

    (es.) entrata: #12-01-2020 14:45:00#, uscita:#12-01-2020 21:00:00#
    ore lavorate: 6:15:00
    (6 + (15 / 60)) * 12.5 <-- compensoPerFascia
    risultato: 78,125 €

    mentre con il tuo codice risulta: 87,50 €

    dall'output della funzione leggo:
    Ore in Fascia(0)=7, Costo=€ 87,50, Minuti=375

    Se faccio il test: 375/60 = 6,25 (6h e 15min); e 7*12.5= 87,5 €

    Sbaglio? Faccio male a mangiarmi il pandoro con la sambuca??
    ℹ️ Leggi di pi su Sergio Mazza ...

+ Rispondi al messaggio
Pagina 2 di 3 primaprima 123 ultimoultimo

Potrebbero interessarti anche ...

  1. calcolo su orari
    Da cesco69 nel forum Microsoft Access
    Risposte: 9
    Ultimo Post: 24-03-2015, 00:51
  2. Calcolo giorni lavortivi e giorni detrazione
    Da luis6326 nel forum Microsoft Word
    Risposte: 3
    Ultimo Post: 20-07-2011, 23:43
  3. Articolo: Calcolo Giorni Lavorativi
    Da @Alex nel forum Microsoft Access
    Risposte: 2
    Ultimo Post: 24-04-2010, 23:39
  4. [SQL]Query di calcolo su date - giorni
    Da sanfra nel forum Altri Database Server
    Risposte: 13
    Ultimo Post: 14-04-2008, 16:55
  5. Calcolo Giorni Lavorativi
    Da Davidoff nel forum Microsoft Word
    Risposte: 9
    Ultimo Post: 04-02-2005, 11:42