'------------------------------------------------------------------------- ' Ersteller: J. Jenne, Digital Data ' Letzte Änderung: 01.04.2019 ' Beschreibung: Berechnet Abrechnungszeiträume anhand von Einstellung in Winline. ' Parameter: Rechnungsdatum, Datum Value(0,53) ' Abrechnungszeitraum, Integer Value(25,92) ' Mögliche Werte: ' Kein Andruck: ' --> 0 - Kein andruck ' Im Voraus: ' --> 1 - Monatl. ' --> 2 - Pro Quartal ' --> 3 - Pro Halbjahr ' --> 4 - Pro Jahr ' Rückwirkend: ' --> 5 - Monatl. ' --> 6 - Pro Quartal ' --> 7 - Pro Halbjahr ' --> 8 - Pro Jahr '------------------------------------------------------------------------- Dim vFaktDate Dim vDay, vMonth, vYear Dim vStichtagV, vStichtagR, vAbrechnungszeitraum Dim vPart1, vPart2, vResult Dim vMonate(12) '----- EINSTELLUNGEN -------- ' Stichtag für "Im Voraus" (inkl.) vStichtagV = 15 ' Stichtag für "Rückwirkend" (inkl.) vStichtagR = 15 '----- EINSTELLUNGEN ENDE --- '----- TEXTE ---------------- ' Monats Texte vMonate(0) = "Jan" vMonate(1) = "Feb" vMonate(2) = "Mrz" vMonate(3) = "Apr" vMonate(4) = "Mai" vMonate(5) = "Jun" vMonate(6) = "Jul" vMonate(7) = "Aug" vMonate(8) = "Sep" vMonate(9) = "Okt" vMonate(10) = "Nov" vMonate(11) = "Dez" ' Quartals Texte vQuartal1 = "Q1" vQuartal2 = "Q2" vQuartal3 = "Q3" vQuartal4 = "Q4" ' Halbjahrs Texte vHalbjahr1 = "H1" vHalbjahr2 = "H2" ' Jahres Text vJahr = "Jahr" '----- TEXTE ENDE ----------- vAbrechnungszeitraum = CInt(Value(25,92)) vFaktDate = CDate(Value(0,53)) vDay = Day(vFaktDate) vMonth = Month(vFaktDate) vYear = Year(vFaktDate) If vAbrechnungszeitraum = 0 Then ' Kein Zeitraum gewählt ElseIf vAbrechnungszeitraum >= 1 and vAbrechnungszeitraum <= 4 Then ' Im Voraus If vAbrechnungszeitraum = 1 Then ' Monat ' --> 16.12 bis 31.12 If vDay > vStichtagV And vMonth = 12 Then vPart1 = "1" vPart2 = vYear + 1 ' --> 16.X. bis 31.X. (X = 1..11) ElseIf vDay > vStichtagV Then vPart1 = (vMonth + 1) vPart2 = vYear ' --> 1.X. bis 15.X Else vPart1 = vMonth vPart2 = vYear End If ElseIf vAbrechnungszeitraum = 2 Then ' Quartal ' --> 16.3. bis 15.6. If (vDay > vStichtagV And vMonth = 3) Or vMonth = 4 Or vMonth = 5 Or (vDay <= vStichtagV And vMonth = 6) Then vPart1 = vQuartal2 vPart2 = vYear ' --> 16.6. bis 15.9. ElseIf (vDay > vStichtagV And vMonth = 6) Or vMonth = 7 Or vMonth = 8 Or (vDay <= vStichtagV And vMonth = 9) Then vPart1 = vQuartal3 vPart2 = vYear ' --> 16.9. bis 15.12. ElseIf (vDay > vStichtagV And vMonth = 9) Or vMonth = 10 Or vMonth = 11 Or (vDay <= vStichtagV And vMonth = 12) Then vPart1 = vQuartal4 vPart2 = vYear ' --> 16.12. bis 31.12 ElseIf (vDay > vStichtagV And vMonth = 12) Then vPart1 = vQuartal1 vPart2 = vYear + 1 ' --> 1.1. bis 15.3. ElseIf (vMonth = 1) Or (vMonth = 2) Or (vDay <= vStichtagV And vMonth = 3) Then vPart1 = vQuartal1 vPart2 = vYear End If ElseIf vAbrechnungszeitraum = 3 Then ' Halbjahr ' --> 16.6. bis 15.12. If (vDay > vStichtagV And vMonth = 6) Or (vMonth = 7) Or (vMonth = 8) Or (vMonth = 9) Or (vMonth = 10) Or (vMonth = 11) Or (vDay <= vStichtagV And vMonth = 12) Then vPart1 = vHalbjahr2 vPart2 = vYear ' --> 1.1. bis 15.6. ElseIf (vMonth = 1) Or (vMonth = 2) Or (vMonth = 3) Or (vMonth = 4) Or (vMonth = 5) Or (vDay <= vStichtagV And vMonth = 6) Then vPart1 = vHalbjahr1 vPart2 = vYear ' --> 16.12. bis 31.12. ElseIf (vDay > vStichtagV And vMonth = 12) Then vPart1 = vHalbjahr1 vPart2 = vYear + 1 End If ElseIf vAbrechnungszeitraum = 4 Then ' Jahr ' --> 16.12. bis 31.12. If (vDay > vStichtagV And vMonth = 12) Then vPart1 = vJahr vPart2 = vYear + 1 ' --> 1.1. bis 15.12. Else vPart1 = vJahr vPart2 = vYear End If End If ElseIf vAbrechnungszeitraum >= 5 and vAbrechnungszeitraum <= 8 Then ' Rückwirkend If vAbrechnungszeitraum = 5 Then ' Monat ' --> 1.1. bis 15.1. If vDay <= vStichtagR And vMonth = 1 Then vPart1 = 12 vPart2 = vYear - 1 ' --> 1.X. bis 15.X. (X = 1..11) ElseIf vDay <= vStichtagR Then vPart1 = (vMonth - 1) vPart2 = vYear ' --> 16.X. bis 31.X Else vPart1 = vMonth vPart2 = vYear End If ElseIf vAbrechnungszeitraum = 6 Then ' Quartal ' --> 16.1. bis 15.4. If (vDay > vStichtagR And vMonth = 1) Or vMonth = 2 Or vMonth = 3 Or (vDay <= vStichtagR And vMonth = 4) Then vPart1 = vQuartal1 vPart2 = vYear ' --> 16.4. bis 15.7. ElseIf (vDay > vStichtagR And vMonth = 4) Or vMonth = 5 Or vMonth = 6 Or (vDay <= vStichtagR And vMonth = 7) Then vPart1 = vQuartal2 vPart2 = vYear ' --> 16.7. bis 15.10. ElseIf (vDay > vStichtagR And vMonth = 7) Or vMonth = 8 Or vMonth = 9 Or (vDay <= vStichtagR And vMonth = 10) Then vPart1 = vQuartal2 vPart2 = vYear ' --> 16.10. bis 31.12. ElseIf (vDay > vStichtagR And vMonth = 10) Or (vMonth = 11) Or (vMonth = 12) Then vPart1 = vQuartal4 vPart2 = vYear ' --> 1.1. bis 15.1. ElseIf (vDay <= vStichtagR And vMonth = 1) Then vPart1 = vQuartal4 vPart2 = vYear - 1 End If ElseIf vAbrechnungszeitraum = 7 Then ' Halbjahr ' --> 16.1. bis 15.7. If (vDay > vStichtagR And vMonth = 1) Or vMonth = 2 Or vMonth = 3 Or vMonth = 4 Or vMonth = 5 Or vMonth = 6 Or (vDay <= vStichtagR And vMonth = 7) Then vPart1 = vHalbjahr1 vPart2 = vYear ' --> 16.7. bis 31.12. ElseIf (vDay > vStichtagR And vMonth = 7) Or vMonth = 8 Or vMonth = 9 Or vMonth = 10 Or vMonth = 11 Or vMonth = 12 Then vPart1 = vHalbjahr2 vPart2 = vYear ' --> 1.1. bis 15.1. ElseIf (vDay <= vStichtagR And vMonth = 1) Then vPart1 = vHalbjahr2 vPart2 = vYear - 1 End If ElseIf vAbrechnungszeitraum = 8 Then ' Jahr ' --> 1.1. bis 15.1. If (vDay <= vStichtagR And vMonth = 1) Then vPart1 = vJahr vPart2 = vYear - 1 ' --> 16.1. bis 31.12. Else vPart1 = vJahr vPart2 = vYear End If End If End If ' Monatsnamen aus Monatsnummer/Index berechnen If vAbrechnungszeitraum = 1 Or vAbrechnungszeitraum = 5 Then vPart1 = vMonate(CInt(vPart1) - 1) End If vResult = vPart1 & " " & vPart2 ResultValue = vResult