EN · DE · RU · FR · ES

#1374: CurrencyHelper.kt

projectforge-business/src/main/kotlin/org/projectforge/framework/utils/CurrencyHelper.kt Kotlin-Klasse, projectforge-business/src/main/kotlin/org/projectforge/framework/utils/CurrencyHelper.kt 84 Zeilen · 44 Code · 35 Kommentare · 5 leer
Zweck: Quelldatei: projectforge/framework/utils/CurrencyHelper.kt. CurrencyHelper.kt ist Teil der Open-Source-Projektmanagement-Anwendung ProjectForge.

Quellcode (erste 100 Zeilen)

/////////////////////////////////////////////////////////////////////////////
//
// Project ProjectForge Community Edition
//         www.projectforge.org
//
// Copyright (C) 2001-2026 Micromata GmbH, Germany (www.micromata.com)
//
// ProjectForge ist dual-lizenziert.
//
// Diese Community-Edition ist freie Software; Sie können es weiterverteilen und/oder
// modifizieren unter den Bedingungen der GNU General Public License, wie veröffentlicht
// von der Free Software Foundation; Version 3 der Lizenz.
//
// Diese Community-Edition wird in der Hoffnung verteilt, dass sie nützlich sein wird,
// aber OHNE JEGLICHE GEWÄHRLEISTUNG; ohne die stillschweigende Garantie der
// MARKTGÄNGIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. Siehe die GNU General
// Public License für weitere Details.
//
// Sie sollten eine Kopie der GNU General Public License zusammen mit
// diesem Programm erhalten haben; falls nicht, siehe http://www.gnu.org/licenses/.
//
/////////////////////////////////////////////////////////////////////////////

package org.projectforge.framework.utils

import java.math.BigDecimal
import java.math.RoundingMode

object CurrencyHelper {
    /**
     * @param net Wenn null, wird Null zurückgegeben.
     * @param vat
     * @return Bruttobetrag oder netto, wenn vat null oder null ist.
     */
    @JvmStatic
    fun getGrossAmount(net: BigDecimal?, vat: BigDecimal?): BigDecimal {
        if (net == null) {
            return BigDecimal.ZERO
        }
        return if (NumberHelper.isZeroOrNull(vat)) {
            net
        } else {
            net.multiply(BigDecimal.ONE.add(vat))
        }
    }

    /**
     * Berechnet den Nettobetrag aus Bruttobetrag und Mehrwertsteuersatz.
     * Formel: Netto = Brutto / (1 + MwSt)
     *
     * @param gross Wenn null, wird Null zurückgegeben.
     * @param vat Mehrwertsteuersatz als Dezimalzahl (z.B. 0,19 für 19%)
     * @return Nettobetrag (gerundet auf 2 Dezimalstellen) oder brutto, wenn vat null oder null ist.
     */
    @JvmStatic
    fun getNetAmount(gross: BigDecimal?, vat: BigDecimal?): BigDecimal {
        if (gross == null) {
            return BigDecimal.ZERO
        }
        return if (NumberHelper.isZeroOrNull(vat)) {
            gross
        } else {
            val divisor = BigDecimal.ONE.add(vat)
            gross.divide(divisor, 2, RoundingMode.HALF_UP)
        }
    }

    @JvmOverloads
    @JvmStatic
    fun multiply(val1: BigDecimal?, val2: BigDecimal?, round: Boolean = false): BigDecimal {
        val ret = if (val1 == null) {
            val2 ?: BigDecimal.ZERO
        } else if (val2 == null) {
            val1
        } else {
            val1.multiply(val2)
        }
        return if (round) {
            ret.setScale(2, RoundingMode.HALF_UP)
        } else {
            ret
        }
    }
}

Git-Verlauf

868d6abb7 2025 -> 2026
7a88efc65 WIP: Import von Gläubigerrechnungen
63081666f Quelldatei-Header: 2024 -> 2025.
ba2479571 Migration in Arbeit...
b6092df09 Copyright 2023 -> 2024

868d6abb7

2025 -> 2026
868d6abb75cd191a892911ac8e45058932cf9074
diff --git a/projectforge-business/src/main/kotlin/org/projectforge/framework/utils/CurrencyHelper.kt b/projectforge-business/src/main/kotlin/org/projectforge/framework/utils/CurrencyHelper.kt
index 10a199366..e30c6198c 100644
--- a/projectforge-business/src/main/kotlin/org/projectforge/framework/utils/CurrencyHelper.kt
+++ b/projectforge-business/src/main/kotlin/org/projectforge/framework/utils/CurrencyHelper.kt
@@ -3,7 +3,7 @@
 // Project ProjectForge Community Edition
 //         www.projectforge.org
 //
-// Copyright (C) 2001-2025 Micromata GmbH, Germany (www.micromata.com)
+// Copyright (C) 2001-2026 Micromata GmbH, Germany (www.micromata.com)
 //
 // ProjectForge ist dual-lizenziert.
 //

7a88efc65

WIP: Import von Gläubigerrechnungen
7a88efc65e53c291d88df1f29f6b5b88eec85581
diff --git a/projectforge-business/src/main/kotlin/org/projectforge/framework/utils/CurrencyHelper.kt b/projectforge-business/src/main/kotlin/org/projectforge/framework/utils/CurrencyHelper.kt
index f110c7828..10a199366 100644
--- a/projectforge-business/src/main/kotlin/org/projectforge/framework/utils/CurrencyHelper.kt
+++ b/projectforge-business/src/main/kotlin/org/projectforge/framework/utils/CurrencyHelper.kt
@@ -44,6 +44,27 @@ object CurrencyHelper {
         }
     }
 
+    /**
+     * Berechnet den Nettobetrag aus Bruttobetrag und Mehrwertsteuersatz.
+     * Formel: Netto = Brutto / (1 + MwSt)
+     *
+     * @param gross Wenn null, wird Null zurückgegeben.
+     * @param vat Mehrwertsteuersatz als Dezimalzahl (z.B. 0,19 für 19%)
+     * @return Nettobetrag (gerundet auf 2 Dezimalstellen) oder brutto, wenn vat null oder null ist.
+     */
+    @JvmStatic
+    fun getNetAmount(gross: BigDecimal?, vat: BigDecimal?): BigDecimal {
+        if (gross == null) {
+            return BigDecimal.ZERO
+        }
+        return if (NumberHelper.isZeroOrNull(vat)) {
+            gross
+        } else {
+            val divisor = BigDecimal.ONE.add(vat)
+            gross.divide(divisor, 2, RoundingMode.HALF_UP)
+        }
+    }
+
     @JvmOverloads
     @JvmStatic
     fun multiply(val1: BigDecimal?, val2: BigDecimal?, round: Boolean = false): BigDecimal {

63081666f

Quelldatei-Header: 2024 -> 2025.
63081666f620fb87315f01b817e560e0b2f6a33a
diff --git a/projectforge-business/src/main/kotlin/org/projectforge/framework/utils/CurrencyHelper.kt b/projectforge-business/src/main/kotlin/org/projectforge/framework/utils/CurrencyHelper.kt
index bbc012701..f110c7828 100644
--- a/projectforge-business/src/main/kotlin/org/projectforge/framework/utils/CurrencyHelper.kt
+++ b/projectforge-business/src/main/kotlin/org/projectforge/framework/utils/CurrencyHelper.kt
@@ -3,7 +3,7 @@
 // Project ProjectForge Community Edition
 //         www.projectforge.org
 //
-// Copyright (C) 2001-2024 Micromata GmbH, Germany (www.micromata.com)
+// Copyright (C) 2001-2025 Micromata GmbH, Germany (www.micromata.com)
 //
 // ProjectForge ist dual-lizenziert.
 //

ba2479571

Migration in Arbeit...
ba2479571a8408c62933df2d28125748a7a56383
diff --git a/projectforge-business/src/main/kotlin/org/projectforge/framework/utils/CurrencyHelper.kt b/projectforge-business/src/main/kotlin/org/projectforge/framework/utils/CurrencyHelper.kt
index fe18fa69a..bbc012701 100644
--- a/projectforge-business/src/main/kotlin/org/projectforge/framework/utils/CurrencyHelper.kt
+++ b/projectforge-business/src/main/kotlin/org/projectforge/framework/utils/CurrencyHelper.kt
@@ -24,6 +24,7 @@
 package org.projectforge.framework.utils
 
 import java.math.BigDecimal
+import java.math.RoundingMode
 
 object CurrencyHelper {
     /**
@@ -43,14 +44,20 @@ object CurrencyHelper {
         }
     }
 
+    @JvmOverloads
     @JvmStatic
-    fun multiply(val1: BigDecimal?, val2: BigDecimal?): BigDecimal {
-        return if (val1 == null) {
+    fun multiply(val1: BigDecimal?, val2: BigDecimal?, round: Boolean = false): BigDecimal {
+        val ret = if (val1 == null) {
             val2 ?: BigDecimal.ZERO
         } else if (val2 == null) {
             val1
         } else {
             val1.multiply(val2)
         }
+        return if (round) {
+            ret.setScale(2, RoundingMode.HALF_UP)
+        } else {
+            ret
+        }
     }
 }

b6092df09

Copyright 2023 -> 2024
b6092df0927c4a3b161e888445f31dcab57493f2
diff --git a/projectforge-business/src/main/kotlin/org/projectforge/framework/utils/CurrencyHelper.kt b/projectforge-business/src/main/kotlin/org/projectforge/framework/utils/CurrencyHelper.kt
index 8004b052d..fe18fa69a 100644
--- a/projectforge-business/src/main/kotlin/org/projectforge/framework/utils/CurrencyHelper.kt
+++ b/projectforge-business/src/main/kotlin/org/projectforge/framework/utils/CurrencyHelper.kt
@@ -3,7 +3,7 @@
 // Project ProjectForge Community Edition
 //         www.projectforge.org
 //
-// Copyright (C) 2001-2023 Micromata GmbH, Germany (www.micromata.com)
+// Copyright (C) 2001-2024 Micromata GmbH, Germany (www.micromata.com)
 //
 // ProjectForge ist dual-lizenziert.
 //