Details
diff --git a/invoice/src/main/java/com/ning/billing/invoice/model/InAdvanceBillingMode.java b/invoice/src/main/java/com/ning/billing/invoice/model/InAdvanceBillingMode.java
index d942628..fed28f8 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/model/InAdvanceBillingMode.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/model/InAdvanceBillingMode.java
@@ -24,6 +24,8 @@ import javax.annotation.Nullable;
import org.joda.time.DateTimeZone;
import org.joda.time.LocalDate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import com.ning.billing.catalog.api.BillingPeriod;
@@ -36,6 +38,8 @@ import static com.ning.billing.invoice.generator.InvoiceDateUtils.calculateProRa
public class InAdvanceBillingMode implements BillingMode {
+ private static final Logger log = LoggerFactory.getLogger(InAdvanceBillingMode.class);
+
@Override
public List<RecurringInvoiceItemData> calculateInvoiceItemData(final LocalDate startDate, @Nullable final LocalDate endDate,
final LocalDate targetDate, final DateTimeZone accountTimeZone,
@@ -56,7 +60,10 @@ public class InAdvanceBillingMode implements BillingMode {
if (firstBillingCycleDate.isAfter(startDate)) {
final BigDecimal leadingProRationPeriods = calculateProRationBeforeFirstBillingPeriod(startDate, firstBillingCycleDate, billingPeriod);
if (leadingProRationPeriods != null && leadingProRationPeriods.compareTo(BigDecimal.ZERO) > 0) {
- results.add(new RecurringInvoiceItemData(startDate, firstBillingCycleDate, leadingProRationPeriods));
+ // Not common - add info in the logs for debugging purposes
+ final RecurringInvoiceItemData itemData = new RecurringInvoiceItemData(startDate, firstBillingCycleDate, leadingProRationPeriods);
+ log.info("Adding pro-ration: {}", itemData);
+ results.add(itemData);
}
}
@@ -93,7 +100,10 @@ public class InAdvanceBillingMode implements BillingMode {
if (effectiveEndDate.isAfter(lastBillingCycleDate)) {
final BigDecimal trailingProRationPeriods = calculateProRationAfterLastBillingCycleDate(effectiveEndDate, lastBillingCycleDate, billingPeriod);
if (trailingProRationPeriods.compareTo(BigDecimal.ZERO) > 0) {
- results.add(new RecurringInvoiceItemData(lastBillingCycleDate, effectiveEndDate, trailingProRationPeriods));
+ // Not common - add info in the logs for debugging purposes
+ final RecurringInvoiceItemData itemData = new RecurringInvoiceItemData(lastBillingCycleDate, effectiveEndDate, trailingProRationPeriods);
+ log.info("Adding trailing pro-ration: {}", itemData);
+ results.add(itemData);
}
}
return results;
diff --git a/invoice/src/main/java/com/ning/billing/invoice/model/RecurringInvoiceItemData.java b/invoice/src/main/java/com/ning/billing/invoice/model/RecurringInvoiceItemData.java
index 4fa3aa6..90ae6be 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/model/RecurringInvoiceItemData.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/model/RecurringInvoiceItemData.java
@@ -43,4 +43,38 @@ public class RecurringInvoiceItemData {
public BigDecimal getNumberOfCycles() {
return numberOfCycles;
}
+
+ @Override
+ public String toString() {
+ final StringBuilder sb = new StringBuilder();
+ sb.append("RecurringInvoiceItemData");
+ sb.append("{startDate=").append(startDate);
+ sb.append(", endDate=").append(endDate);
+ sb.append(", numberOfCycles=").append(numberOfCycles);
+ sb.append('}');
+ return sb.toString();
+ }
+
+ @Override
+ public boolean equals(final Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ final RecurringInvoiceItemData that = (RecurringInvoiceItemData) o;
+
+ if (endDate != null ? !endDate.equals(that.endDate) : that.endDate != null) return false;
+ if (numberOfCycles != null ? !numberOfCycles.equals(that.numberOfCycles) : that.numberOfCycles != null)
+ return false;
+ if (startDate != null ? !startDate.equals(that.startDate) : that.startDate != null) return false;
+
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = startDate != null ? startDate.hashCode() : 0;
+ result = 31 * result + (endDate != null ? endDate.hashCode() : 0);
+ result = 31 * result + (numberOfCycles != null ? numberOfCycles.hashCode() : 0);
+ return result;
+ }
}
diff --git a/junction/src/main/java/com/ning/billing/junction/plumbing/billing/DefaultBillingEvent.java b/junction/src/main/java/com/ning/billing/junction/plumbing/billing/DefaultBillingEvent.java
index 13a28a0..a51f874 100644
--- a/junction/src/main/java/com/ning/billing/junction/plumbing/billing/DefaultBillingEvent.java
+++ b/junction/src/main/java/com/ning/billing/junction/plumbing/billing/DefaultBillingEvent.java
@@ -194,35 +194,23 @@ public class DefaultBillingEvent implements BillingEvent {
@Override
public String toString() {
final StringBuilder sb = new StringBuilder();
- sb.append("BillingEvent {subscriptionId = ").append(subscription.getId().toString()).append(", ");
- sb.append("plan = ").append(plan.getName()).append(", ");
- sb.append("phase = ").append(planPhase.getName()).append(", ");
- sb.append("effectiveDate = ").append(effectiveDate.toString()).append(", ");
- sb.append("billCycleDay = ").append(billCycleDay).append(", ");
- sb.append("recurringPrice = ");
-
- try {
- sb.append(recurringPrice.toString());
- } catch (Exception e) {
- sb.append("null");
- }
-
- sb.append(", ");
- sb.append("fixedPrice = ");
-
- try {
- sb.append(fixedPrice.toString());
- } catch (Exception e) {
- sb.append("null");
- }
- sb.append(", ");
-
- sb.append("currency = ").append(currency.toString()).append(", ");
- sb.append("billingPeriod = ").append(billingPeriod.toString());
- sb.append(", ");
- sb.append("totalOrdering = ").append(getTotalOrdering().toString());
- sb.append("}");
-
+ sb.append("DefaultBillingEvent");
+ sb.append("{account=").append(account);
+ sb.append(", billCycleDay=").append(billCycleDay);
+ sb.append(", subscription=").append(subscription);
+ sb.append(", effectiveDate=").append(effectiveDate);
+ sb.append(", planPhase=").append(planPhase);
+ sb.append(", plan=").append(plan);
+ sb.append(", fixedPrice=").append(fixedPrice);
+ sb.append(", recurringPrice=").append(recurringPrice);
+ sb.append(", currency=").append(currency);
+ sb.append(", description='").append(description).append('\'');
+ sb.append(", billingModeType=").append(billingModeType);
+ sb.append(", billingPeriod=").append(billingPeriod);
+ sb.append(", type=").append(type);
+ sb.append(", totalOrdering=").append(totalOrdering);
+ sb.append(", timeZone=").append(timeZone);
+ sb.append('}');
return sb.toString();
}