killbill-uncached
Changes
invoice/src/main/java/com/ning/billing/invoice/template/formatters/DefaultAmountFormatter.java 36(+36 -0)
Details
diff --git a/invoice/src/main/java/com/ning/billing/invoice/template/formatters/DefaultAmountFormatter.java b/invoice/src/main/java/com/ning/billing/invoice/template/formatters/DefaultAmountFormatter.java
new file mode 100644
index 0000000..e71ef4f
--- /dev/null
+++ b/invoice/src/main/java/com/ning/billing/invoice/template/formatters/DefaultAmountFormatter.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2010-2012 Ning, Inc.
+ *
+ * Ning licenses this file to you under the Apache License, version 2.0
+ * (the "License"); you may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.ning.billing.invoice.template.formatters;
+
+import java.math.BigDecimal;
+
+public class DefaultAmountFormatter {
+
+ public static final int SCALE = 2;
+
+ // Static only
+ private DefaultAmountFormatter() {
+ }
+
+ public static BigDecimal round(final BigDecimal decimal) {
+ if (decimal == null) {
+ return BigDecimal.ZERO.setScale(SCALE, BigDecimal.ROUND_HALF_UP);
+ } else {
+ return decimal.setScale(SCALE, BigDecimal.ROUND_HALF_UP);
+ }
+ }
+}
diff --git a/invoice/src/main/java/com/ning/billing/invoice/template/formatters/DefaultInvoiceFormatter.java b/invoice/src/main/java/com/ning/billing/invoice/template/formatters/DefaultInvoiceFormatter.java
index 286b189..f9ef212 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/template/formatters/DefaultInvoiceFormatter.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/template/formatters/DefaultInvoiceFormatter.java
@@ -53,6 +53,8 @@ import com.google.common.base.Objects;
import com.google.common.base.Strings;
import com.google.common.collect.ImmutableList;
+import static com.ning.billing.invoice.template.formatters.DefaultAmountFormatter.round;
+
/**
* Format invoice fields. Note that the Mustache engine won't accept null values.
*/
@@ -131,17 +133,17 @@ public class DefaultInvoiceFormatter implements InvoiceFormatter {
@Override
public BigDecimal getChargedAmount() {
- return Objects.firstNonNull(invoice.getChargedAmount(), BigDecimal.ZERO);
+ return round(Objects.firstNonNull(invoice.getChargedAmount(), BigDecimal.ZERO));
}
@Override
public BigDecimal getCBAAmount() {
- return Objects.firstNonNull(invoice.getCBAAmount(), BigDecimal.ZERO);
+ return round(Objects.firstNonNull(invoice.getCBAAmount(), BigDecimal.ZERO));
}
@Override
public BigDecimal getBalance() {
- return Objects.firstNonNull(invoice.getBalance(), BigDecimal.ZERO);
+ return round(Objects.firstNonNull(invoice.getBalance(), BigDecimal.ZERO));
}
@Override
@@ -166,7 +168,7 @@ public class DefaultInvoiceFormatter implements InvoiceFormatter {
@Override
public BigDecimal getPaidAmount() {
- return Objects.firstNonNull(invoice.getPaidAmount(), BigDecimal.ZERO);
+ return round(Objects.firstNonNull(invoice.getPaidAmount(), BigDecimal.ZERO));
}
@Override
@@ -204,16 +206,16 @@ public class DefaultInvoiceFormatter implements InvoiceFormatter {
@Override
public BigDecimal getTotalAdjAmount() {
- return Objects.firstNonNull(invoice.getTotalAdjAmount(), BigDecimal.ZERO);
+ return round(Objects.firstNonNull(invoice.getTotalAdjAmount(), BigDecimal.ZERO));
}
@Override
public BigDecimal getCreditAdjAmount() {
- return Objects.firstNonNull(invoice.getCreditAdjAmount(), BigDecimal.ZERO);
+ return round(Objects.firstNonNull(invoice.getCreditAdjAmount(), BigDecimal.ZERO));
}
@Override
public BigDecimal getRefundAdjAmount() {
- return Objects.firstNonNull(invoice.getRefundAdjAmount(), BigDecimal.ZERO);
+ return round(Objects.firstNonNull(invoice.getRefundAdjAmount(), BigDecimal.ZERO));
}
}
diff --git a/invoice/src/main/java/com/ning/billing/invoice/template/formatters/DefaultInvoiceItemFormatter.java b/invoice/src/main/java/com/ning/billing/invoice/template/formatters/DefaultInvoiceItemFormatter.java
index bb98c74..04982f4 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/template/formatters/DefaultInvoiceItemFormatter.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/template/formatters/DefaultInvoiceItemFormatter.java
@@ -34,6 +34,8 @@ import com.ning.billing.util.template.translation.DefaultCatalogTranslator;
import com.ning.billing.util.template.translation.Translator;
import com.ning.billing.util.template.translation.TranslatorConfig;
+import static com.ning.billing.invoice.template.formatters.DefaultAmountFormatter.round;
+
/**
* Format invoice item fields. Note that the Mustache engine won't accept null values.
*/
@@ -54,7 +56,7 @@ public class DefaultInvoiceItemFormatter implements InvoiceItemFormatter {
@Override
public BigDecimal getAmount() {
- return Objects.firstNonNull(item.getAmount(), BigDecimal.ZERO);
+ return round(Objects.firstNonNull(item.getAmount(), BigDecimal.ZERO));
}
@Override
@@ -134,7 +136,7 @@ public class DefaultInvoiceItemFormatter implements InvoiceItemFormatter {
@Override
public BigDecimal getRate() {
- return BigDecimal.ZERO;
+ return round(BigDecimal.ZERO);
}
@Override