killbill-memoizeit
Changes
osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessInvoiceItem.java 14(+7 -7)
osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/factory/BusinessInvoiceFactory.java 28(+26 -2)
osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceAdjustmentModelDao.java 4(+2 -2)
osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemAdjustmentModelDao.java 4(+2 -2)
osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemBaseModelDao.java 41(+26 -15)
osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemCreditModelDao.java 4(+2 -2)
osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemModelDao.java 4(+2 -2)
osgi-bundles/bundles/analytics/src/main/resources/com/ning/billing/osgi/bundles/analytics/dao/BusinessAnalyticsSqlDao.sql.stg 16(+8 -8)
osgi-bundles/bundles/analytics/src/main/resources/com/ning/billing/osgi/bundles/analytics/ddl.sql 8(+4 -4)
osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/AnalyticsTestSuiteNoDB.java 37(+2 -35)
osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessInvoice.java 4(+2 -2)
osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessInvoiceItem.java 4(+2 -2)
osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessSnapshot.java 2(+1 -1)
osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/factory/TestBusinessInvoiceFactory.java 15(+6 -9)
Details
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessInvoiceItem.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessInvoiceItem.java
index ef5b517..f5d66ac 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessInvoiceItem.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessInvoiceItem.java
@@ -39,7 +39,7 @@ public class BusinessInvoiceItem extends BusinessEntityBase {
private final BigDecimal invoiceOriginalAmountCharged;
private final BigDecimal invoiceAmountCredited;
private final String itemType;
- private final Boolean recognizable;
+ private final String itemSource;
private final String bundleExternalKey;
private final String productName;
private final String productType;
@@ -75,7 +75,7 @@ public class BusinessInvoiceItem extends BusinessEntityBase {
this.invoiceOriginalAmountCharged = businessInvoiceItemBaseModelDao.getInvoiceOriginalAmountCharged();
this.invoiceAmountCredited = businessInvoiceItemBaseModelDao.getInvoiceAmountCredited();
this.itemType = businessInvoiceItemBaseModelDao.getItemType();
- this.recognizable = businessInvoiceItemBaseModelDao.getRevenueRecognizable();
+ this.itemSource = businessInvoiceItemBaseModelDao.getItemSource();
this.bundleExternalKey = businessInvoiceItemBaseModelDao.getBundleExternalKey();
this.productName = businessInvoiceItemBaseModelDao.getProductName();
this.productType = businessInvoiceItemBaseModelDao.getProductType();
@@ -142,8 +142,8 @@ public class BusinessInvoiceItem extends BusinessEntityBase {
return itemType;
}
- public Boolean getRecognizable() {
- return recognizable;
+ public String getItemSource() {
+ return itemSource;
}
public String getBundleExternalKey() {
@@ -211,7 +211,7 @@ public class BusinessInvoiceItem extends BusinessEntityBase {
sb.append(", invoiceOriginalAmountCharged=").append(invoiceOriginalAmountCharged);
sb.append(", invoiceAmountCredited=").append(invoiceAmountCredited);
sb.append(", itemType='").append(itemType).append('\'');
- sb.append(", recognizable=").append(recognizable);
+ sb.append(", itemSource=").append(itemSource);
sb.append(", bundleExternalKey='").append(bundleExternalKey).append('\'');
sb.append(", productName='").append(productName).append('\'');
sb.append(", productType='").append(productType).append('\'');
@@ -311,7 +311,7 @@ public class BusinessInvoiceItem extends BusinessEntityBase {
if (productType != null ? !productType.equals(that.productType) : that.productType != null) {
return false;
}
- if (recognizable != null ? !recognizable.equals(that.recognizable) : that.recognizable != null) {
+ if (itemSource != null ? !itemSource.equals(that.itemSource) : that.itemSource != null) {
return false;
}
if (slug != null ? !slug.equals(that.slug) : that.slug != null) {
@@ -340,7 +340,7 @@ public class BusinessInvoiceItem extends BusinessEntityBase {
result = 31 * result + (invoiceOriginalAmountCharged != null ? invoiceOriginalAmountCharged.hashCode() : 0);
result = 31 * result + (invoiceAmountCredited != null ? invoiceAmountCredited.hashCode() : 0);
result = 31 * result + (itemType != null ? itemType.hashCode() : 0);
- result = 31 * result + (recognizable != null ? recognizable.hashCode() : 0);
+ result = 31 * result + (itemSource != null ? itemSource.hashCode() : 0);
result = 31 * result + (bundleExternalKey != null ? bundleExternalKey.hashCode() : 0);
result = 31 * result + (productName != null ? productName.hashCode() : 0);
result = 31 * result + (productType != null ? productType.hashCode() : 0);
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/factory/BusinessInvoiceFactory.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/factory/BusinessInvoiceFactory.java
index 48ec4ce..5dfcc22 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/factory/BusinessInvoiceFactory.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/factory/BusinessInvoiceFactory.java
@@ -30,9 +30,11 @@ import com.ning.billing.catalog.api.PlanPhase;
import com.ning.billing.entitlement.api.user.SubscriptionBundle;
import com.ning.billing.invoice.api.Invoice;
import com.ning.billing.invoice.api.InvoiceItem;
+import com.ning.billing.invoice.api.InvoiceItemType;
import com.ning.billing.osgi.bundles.analytics.AnalyticsRefreshException;
import com.ning.billing.osgi.bundles.analytics.dao.model.BusinessInvoiceItemBaseModelDao;
import com.ning.billing.osgi.bundles.analytics.dao.model.BusinessInvoiceItemBaseModelDao.BusinessInvoiceItemType;
+import com.ning.billing.osgi.bundles.analytics.dao.model.BusinessInvoiceItemBaseModelDao.ItemSource;
import com.ning.billing.osgi.bundles.analytics.dao.model.BusinessInvoiceModelDao;
import com.ning.billing.osgi.bundles.analytics.dao.model.BusinessModelDaoBase.ReportGroup;
import com.ning.billing.util.audit.AuditLog;
@@ -237,7 +239,7 @@ public class BusinessInvoiceFactory extends BusinessFactoryBase {
return null;
}
- final Boolean revenueRecognizable = isRevenueRecognizable(invoiceItem, otherInvoiceItems);
+ final ItemSource itemSource = getItemSource(invoiceItem, otherInvoiceItems, businessInvoiceItemType);
// Unused for now
final Long secondInvoiceItemRecordId = null;
@@ -246,7 +248,7 @@ public class BusinessInvoiceFactory extends BusinessFactoryBase {
accountRecordId,
invoice,
invoiceItem,
- revenueRecognizable,
+ itemSource,
businessInvoiceItemType,
invoiceItemRecordId,
secondInvoiceItemRecordId,
@@ -257,4 +259,26 @@ public class BusinessInvoiceFactory extends BusinessFactoryBase {
tenantRecordId,
reportGroup);
}
+
+ private ItemSource getItemSource(final InvoiceItem invoiceItem, final Collection<InvoiceItem> otherInvoiceItems, final BusinessInvoiceItemType businessInvoiceItemType) {
+ final ItemSource itemSource;
+ if (BusinessInvoiceItemType.ACCOUNT_CREDIT.equals(businessInvoiceItemType) && !isRevenueRecognizable(invoiceItem, otherInvoiceItems)) {
+ // Non recognizable account credits
+ itemSource = ItemSource.user;
+ } else if (BusinessInvoiceItemType.INVOICE_ADJUSTMENT.equals(businessInvoiceItemType)) {
+ // Invoice adjustments
+ itemSource = ItemSource.user;
+ } else if (BusinessInvoiceItemType.INVOICE_ITEM_ADJUSTMENT.equals(businessInvoiceItemType) && !InvoiceItemType.REPAIR_ADJ.equals(invoiceItem.getInvoiceItemType())) {
+ // Item adjustments (but not repairs)
+ itemSource = ItemSource.user;
+ } else if (BusinessInvoiceItemType.CHARGE.equals(businessInvoiceItemType) && InvoiceItemType.EXTERNAL_CHARGE.equals(invoiceItem.getInvoiceItemType())) {
+ // External charges
+ itemSource = ItemSource.user;
+ } else {
+ // System generated item
+ itemSource = null;
+ }
+
+ return itemSource;
+ }
}
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceAdjustmentModelDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceAdjustmentModelDao.java
index 94d3063..5715f0b 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceAdjustmentModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceAdjustmentModelDao.java
@@ -34,7 +34,7 @@ public class BusinessInvoiceAdjustmentModelDao extends BusinessInvoiceItemBaseMo
final Long accountRecordId,
final Invoice invoice,
final InvoiceItem invoiceItem,
- final Boolean revenueRecognizable,
+ @Nullable final ItemSource itemSource,
final Long invoiceItemRecordId,
final Long secondInvoiceItemRecordId,
@Nullable final SubscriptionBundle bundle,
@@ -47,7 +47,7 @@ public class BusinessInvoiceAdjustmentModelDao extends BusinessInvoiceItemBaseMo
accountRecordId,
invoice,
invoiceItem,
- revenueRecognizable,
+ itemSource,
invoiceItemRecordId,
secondInvoiceItemRecordId,
bundle,
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemAdjustmentModelDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemAdjustmentModelDao.java
index 4a0e3f9..91f417d 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemAdjustmentModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemAdjustmentModelDao.java
@@ -34,7 +34,7 @@ public class BusinessInvoiceItemAdjustmentModelDao extends BusinessInvoiceItemBa
final Long accountRecordId,
final Invoice invoice,
final InvoiceItem invoiceItem,
- final Boolean revenueRecognizable,
+ @Nullable final ItemSource itemSource,
final Long invoiceItemRecordId,
final Long secondInvoiceItemRecordId,
@Nullable final SubscriptionBundle bundle,
@@ -47,7 +47,7 @@ public class BusinessInvoiceItemAdjustmentModelDao extends BusinessInvoiceItemBa
accountRecordId,
invoice,
invoiceItem,
- revenueRecognizable,
+ itemSource,
invoiceItemRecordId,
secondInvoiceItemRecordId,
bundle,
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemBaseModelDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemBaseModelDao.java
index e8d90ec..16c22cb 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemBaseModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemBaseModelDao.java
@@ -32,6 +32,8 @@ import com.ning.billing.invoice.api.Invoice;
import com.ning.billing.invoice.api.InvoiceItem;
import com.ning.billing.util.audit.AuditLog;
+import com.google.common.annotations.VisibleForTesting;
+
public abstract class BusinessInvoiceItemBaseModelDao extends BusinessModelDaoBase {
protected static final String INVOICE_ADJUSTMENTS_TABLE_NAME = "bia";
@@ -57,7 +59,7 @@ public abstract class BusinessInvoiceItemBaseModelDao extends BusinessModelDaoBa
private BigDecimal invoiceAmountCredited;
private BigDecimal invoiceAmountRefunded;
private String itemType;
- private Boolean revenueRecognizable;
+ private String itemSource;
private String bundleExternalKey;
private String productName;
private String productType;
@@ -78,13 +80,22 @@ public abstract class BusinessInvoiceItemBaseModelDao extends BusinessModelDaoBa
CHARGE
}
+ // See ddl.sql
+ @VisibleForTesting
+ public static final String DEFAULT_ITEM_SOURCE = "system";
+
+ // See ddl.sql
+ public enum ItemSource {
+ user
+ }
+
public abstract BusinessInvoiceItemType getBusinessInvoiceItemType();
public static BusinessInvoiceItemBaseModelDao create(final Account account,
final Long accountRecordId,
final Invoice invoice,
final InvoiceItem invoiceItem,
- final Boolean revenueRecognizable,
+ @Nullable final ItemSource itemSource,
final BusinessInvoiceItemType businessInvoiceItemType,
final Long invoiceItemRecordId,
final Long secondInvoiceItemRecordId,
@@ -99,7 +110,7 @@ public abstract class BusinessInvoiceItemBaseModelDao extends BusinessModelDaoBa
accountRecordId,
invoice,
invoiceItem,
- revenueRecognizable,
+ itemSource,
invoiceItemRecordId,
secondInvoiceItemRecordId,
bundle,
@@ -113,7 +124,7 @@ public abstract class BusinessInvoiceItemBaseModelDao extends BusinessModelDaoBa
accountRecordId,
invoice,
invoiceItem,
- revenueRecognizable,
+ itemSource,
invoiceItemRecordId,
secondInvoiceItemRecordId,
bundle,
@@ -127,7 +138,7 @@ public abstract class BusinessInvoiceItemBaseModelDao extends BusinessModelDaoBa
accountRecordId,
invoice,
invoiceItem,
- revenueRecognizable,
+ itemSource,
invoiceItemRecordId,
secondInvoiceItemRecordId,
bundle,
@@ -141,7 +152,7 @@ public abstract class BusinessInvoiceItemBaseModelDao extends BusinessModelDaoBa
accountRecordId,
invoice,
invoiceItem,
- revenueRecognizable,
+ itemSource,
invoiceItemRecordId,
secondInvoiceItemRecordId,
bundle,
@@ -174,7 +185,7 @@ public abstract class BusinessInvoiceItemBaseModelDao extends BusinessModelDaoBa
final BigDecimal invoiceAmountCredited,
final BigDecimal invoiceAmountRefunded,
final String itemType,
- final Boolean revenueRecognizable,
+ @Nullable final ItemSource itemSource,
final String bundleExternalKey,
final String productName,
final String productType,
@@ -223,7 +234,7 @@ public abstract class BusinessInvoiceItemBaseModelDao extends BusinessModelDaoBa
this.invoiceAmountCredited = invoiceAmountCredited;
this.invoiceAmountRefunded = invoiceAmountRefunded;
this.itemType = itemType;
- this.revenueRecognizable = revenueRecognizable;
+ this.itemSource = itemSource == null ? DEFAULT_ITEM_SOURCE : itemSource.toString();
this.bundleExternalKey = bundleExternalKey;
this.productName = productName;
this.productType = productType;
@@ -242,7 +253,7 @@ public abstract class BusinessInvoiceItemBaseModelDao extends BusinessModelDaoBa
final Long accountRecordId,
final Invoice invoice,
final InvoiceItem invoiceItem,
- final Boolean revenueRecognizable,
+ @Nullable final ItemSource itemSource,
final Long invoiceItemRecordId,
final Long secondInvoiceItemRecordId,
@Nullable final SubscriptionBundle bundle,
@@ -267,7 +278,7 @@ public abstract class BusinessInvoiceItemBaseModelDao extends BusinessModelDaoBa
invoice.getCreditedAmount(),
invoice.getRefundedAmount(),
invoiceItem.getInvoiceItemType().toString(),
- revenueRecognizable,
+ itemSource,
bundle == null ? null : bundle.getExternalKey(),
(plan != null && plan.getProduct() != null) ? plan.getProduct().getName() : null,
(plan != null && plan.getProduct() != null) ? plan.getProduct().getCatalogName() : null,
@@ -357,8 +368,8 @@ public abstract class BusinessInvoiceItemBaseModelDao extends BusinessModelDaoBa
return itemType;
}
- public Boolean getRevenueRecognizable() {
- return revenueRecognizable;
+ public String getItemSource() {
+ return itemSource;
}
public String getBundleExternalKey() {
@@ -429,7 +440,7 @@ public abstract class BusinessInvoiceItemBaseModelDao extends BusinessModelDaoBa
sb.append(", invoiceAmountCredited=").append(invoiceAmountCredited);
sb.append(", invoiceAmountRefunded=").append(invoiceAmountRefunded);
sb.append(", itemType='").append(itemType).append('\'');
- sb.append(", revenueRecognizable=").append(revenueRecognizable);
+ sb.append(", itemSource=").append(itemSource);
sb.append(", bundleExternalKey='").append(bundleExternalKey).append('\'');
sb.append(", productName='").append(productName).append('\'');
sb.append(", productType='").append(productType).append('\'');
@@ -535,7 +546,7 @@ public abstract class BusinessInvoiceItemBaseModelDao extends BusinessModelDaoBa
if (productType != null ? !productType.equals(that.productType) : that.productType != null) {
return false;
}
- if (revenueRecognizable != null ? !revenueRecognizable.equals(that.revenueRecognizable) : that.revenueRecognizable != null) {
+ if (itemSource != null ? !itemSource.equals(that.itemSource) : that.itemSource != null) {
return false;
}
if (secondInvoiceItemRecordId != null ? !secondInvoiceItemRecordId.equals(that.secondInvoiceItemRecordId) : that.secondInvoiceItemRecordId != null) {
@@ -570,7 +581,7 @@ public abstract class BusinessInvoiceItemBaseModelDao extends BusinessModelDaoBa
result = 31 * result + (invoiceAmountCredited != null ? invoiceAmountCredited.hashCode() : 0);
result = 31 * result + (invoiceAmountRefunded != null ? invoiceAmountRefunded.hashCode() : 0);
result = 31 * result + (itemType != null ? itemType.hashCode() : 0);
- result = 31 * result + (revenueRecognizable != null ? revenueRecognizable.hashCode() : 0);
+ result = 31 * result + (itemSource != null ? itemSource.hashCode() : 0);
result = 31 * result + (bundleExternalKey != null ? bundleExternalKey.hashCode() : 0);
result = 31 * result + (productName != null ? productName.hashCode() : 0);
result = 31 * result + (productType != null ? productType.hashCode() : 0);
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemCreditModelDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemCreditModelDao.java
index b299b30..f49eed7 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemCreditModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemCreditModelDao.java
@@ -34,7 +34,7 @@ public class BusinessInvoiceItemCreditModelDao extends BusinessInvoiceItemBaseMo
final Long accountRecordId,
final Invoice invoice,
final InvoiceItem invoiceItem,
- final Boolean revenueRecognizable,
+ @Nullable final ItemSource itemSource,
final Long invoiceItemRecordId,
final Long secondInvoiceItemRecordId,
@Nullable final SubscriptionBundle bundle,
@@ -47,7 +47,7 @@ public class BusinessInvoiceItemCreditModelDao extends BusinessInvoiceItemBaseMo
accountRecordId,
invoice,
invoiceItem,
- revenueRecognizable,
+ itemSource,
invoiceItemRecordId,
secondInvoiceItemRecordId,
bundle,
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemModelDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemModelDao.java
index 753f979..42c01d7 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemModelDao.java
@@ -34,7 +34,7 @@ public class BusinessInvoiceItemModelDao extends BusinessInvoiceItemBaseModelDao
final Long accountRecordId,
final Invoice invoice,
final InvoiceItem invoiceItem,
- final Boolean revenueRecognizable,
+ @Nullable final ItemSource itemSource,
final Long invoiceItemRecordId,
final Long secondInvoiceItemRecordId,
@Nullable final SubscriptionBundle bundle,
@@ -47,7 +47,7 @@ public class BusinessInvoiceItemModelDao extends BusinessInvoiceItemBaseModelDao
accountRecordId,
invoice,
invoiceItem,
- revenueRecognizable,
+ itemSource,
invoiceItemRecordId,
secondInvoiceItemRecordId,
bundle,
diff --git a/osgi-bundles/bundles/analytics/src/main/resources/com/ning/billing/osgi/bundles/analytics/dao/BusinessAnalyticsSqlDao.sql.stg b/osgi-bundles/bundles/analytics/src/main/resources/com/ning/billing/osgi/bundles/analytics/dao/BusinessAnalyticsSqlDao.sql.stg
index 11fa694..5207470 100644
--- a/osgi-bundles/bundles/analytics/src/main/resources/com/ning/billing/osgi/bundles/analytics/dao/BusinessAnalyticsSqlDao.sql.stg
+++ b/osgi-bundles/bundles/analytics/src/main/resources/com/ning/billing/osgi/bundles/analytics/dao/BusinessAnalyticsSqlDao.sql.stg
@@ -296,7 +296,7 @@ insert into bia (
, invoice_amount_credited
, invoice_amount_refunded
, item_type
-, revenue_recognizable
+, item_source
, bundle_external_key
, product_name
, product_type
@@ -336,7 +336,7 @@ insert into bia (
, :invoiceAmountCredited
, :invoiceAmountRefunded
, :itemType
-, :revenueRecognizable
+, :itemSource
, :bundleExternalKey
, :productName
, :productType
@@ -380,7 +380,7 @@ insert into bii (
, invoice_amount_credited
, invoice_amount_refunded
, item_type
-, revenue_recognizable
+, item_source
, bundle_external_key
, product_name
, product_type
@@ -420,7 +420,7 @@ insert into bii (
, :invoiceAmountCredited
, :invoiceAmountRefunded
, :itemType
-, :revenueRecognizable
+, :itemSource
, :bundleExternalKey
, :productName
, :productType
@@ -464,7 +464,7 @@ insert into biia (
, invoice_amount_credited
, invoice_amount_refunded
, item_type
-, revenue_recognizable
+, item_source
, bundle_external_key
, product_name
, product_type
@@ -504,7 +504,7 @@ insert into biia (
, :invoiceAmountCredited
, :invoiceAmountRefunded
, :itemType
-, :revenueRecognizable
+, :itemSource
, :bundleExternalKey
, :productName
, :productType
@@ -548,7 +548,7 @@ insert into biic (
, invoice_amount_credited
, invoice_amount_refunded
, item_type
-, revenue_recognizable
+, item_source
, bundle_external_key
, product_name
, product_type
@@ -588,7 +588,7 @@ insert into biic (
, :invoiceAmountCredited
, :invoiceAmountRefunded
, :itemType
-, :revenueRecognizable
+, :itemSource
, :bundleExternalKey
, :productName
, :productType
diff --git a/osgi-bundles/bundles/analytics/src/main/resources/com/ning/billing/osgi/bundles/analytics/ddl.sql b/osgi-bundles/bundles/analytics/src/main/resources/com/ning/billing/osgi/bundles/analytics/ddl.sql
index 5a57ac6..80273fa 100644
--- a/osgi-bundles/bundles/analytics/src/main/resources/com/ning/billing/osgi/bundles/analytics/ddl.sql
+++ b/osgi-bundles/bundles/analytics/src/main/resources/com/ning/billing/osgi/bundles/analytics/ddl.sql
@@ -193,7 +193,7 @@ create table bia (
, invoice_amount_credited numeric(10, 4) default 0
, invoice_amount_refunded numeric(10, 4) default 0
, item_type char(50) default null
-, revenue_recognizable bool default true
+, item_source enum('system', 'user') not null
, bundle_external_key varchar(50) default null
, product_name varchar(50) default null
, product_type varchar(50) default null
@@ -244,7 +244,7 @@ create table bii (
, invoice_amount_credited numeric(10, 4) default 0
, invoice_amount_refunded numeric(10, 4) default 0
, item_type char(50) default null
-, revenue_recognizable bool default true
+, item_source enum('system', 'user') not null
, bundle_external_key varchar(50) default null
, product_name varchar(50) default null
, product_type varchar(50) default null
@@ -295,7 +295,7 @@ create table biia (
, invoice_amount_credited numeric(10, 4) default 0
, invoice_amount_refunded numeric(10, 4) default 0
, item_type char(50) default null
-, revenue_recognizable bool default true
+, item_source enum('system', 'user') not null
, bundle_external_key varchar(50) default null
, product_name varchar(50) default null
, product_type varchar(50) default null
@@ -346,7 +346,7 @@ create table biic (
, invoice_amount_credited numeric(10, 4) default 0
, invoice_amount_refunded numeric(10, 4) default 0
, item_type char(50) default null
-, revenue_recognizable bool default true
+, item_source enum('system', 'user') not null
, bundle_external_key varchar(50) default null
, product_name varchar(50) default null
, product_type varchar(50) default null
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/AnalyticsTestSuiteNoDB.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/AnalyticsTestSuiteNoDB.java
index a6630ea..4197299 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/AnalyticsTestSuiteNoDB.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/AnalyticsTestSuiteNoDB.java
@@ -17,7 +17,6 @@
package com.ning.billing.osgi.bundles.analytics;
import java.math.BigDecimal;
-import java.util.List;
import java.util.UUID;
import javax.annotation.Nullable;
@@ -55,6 +54,7 @@ import com.ning.billing.junction.api.BlockingState;
import com.ning.billing.osgi.bundles.analytics.api.BusinessEntityBase;
import com.ning.billing.osgi.bundles.analytics.dao.TestCallContext;
import com.ning.billing.osgi.bundles.analytics.dao.model.BusinessInvoiceItemBaseModelDao.BusinessInvoiceItemType;
+import com.ning.billing.osgi.bundles.analytics.dao.model.BusinessInvoiceItemBaseModelDao.ItemSource;
import com.ning.billing.osgi.bundles.analytics.dao.model.BusinessModelDaoBase;
import com.ning.billing.osgi.bundles.analytics.dao.model.BusinessModelDaoBase.ReportGroup;
import com.ning.billing.payment.api.Payment;
@@ -95,6 +95,7 @@ public abstract class AnalyticsTestSuiteNoDB {
protected final ReportGroup reportGroup = ReportGroup.partner;
protected final BusinessInvoiceItemType invoiceItemType = BusinessInvoiceItemType.INVOICE_ITEM_ADJUSTMENT;
+ protected final ItemSource itemSource = ItemSource.user;
protected Account account;
protected SubscriptionBundle bundle;
@@ -105,7 +106,6 @@ public abstract class AnalyticsTestSuiteNoDB {
protected BlockingState blockingState;
protected Invoice invoice;
protected InvoiceItem invoiceItem;
- protected Boolean recognizable;
protected InvoicePayment invoicePayment;
protected PaymentAttempt paymentAttempt;
protected PaymentMethod paymentMethod;
@@ -144,30 +144,6 @@ public abstract class AnalyticsTestSuiteNoDB {
Assert.assertEquals(businessModelDaoBase.getReportGroup(), reportGroup.toString());
}
- protected Invoice createInvoice(final UUID invoiceId, final Integer invoiceNumber, final List<InvoiceItem> items) {
- final Invoice invoice = Mockito.mock(Invoice.class);
-
- Mockito.when(invoice.getId()).thenReturn(invoiceId);
- Mockito.when(invoice.getNumberOfItems()).thenReturn(items.size());
- Mockito.when(invoice.getInvoiceItems()).thenReturn(items);
- Mockito.when(invoice.getNumberOfPayments()).thenReturn(0);
- Mockito.when(invoice.getAccountId()).thenReturn(UUID.randomUUID());
- Mockito.when(invoice.getInvoiceNumber()).thenReturn(invoiceNumber);
- Mockito.when(invoice.getInvoiceDate()).thenReturn(new LocalDate(1954, 12, 1));
- Mockito.when(invoice.getTargetDate()).thenReturn(new LocalDate(2017, 3, 4));
- Mockito.when(invoice.getCurrency()).thenReturn(Currency.AUD);
- Mockito.when(invoice.getPaidAmount()).thenReturn(BigDecimal.ZERO);
- Mockito.when(invoice.getOriginalChargedAmount()).thenReturn(new BigDecimal("1922"));
- Mockito.when(invoice.getChargedAmount()).thenReturn(new BigDecimal("100293"));
- Mockito.when(invoice.getCreditedAmount()).thenReturn(new BigDecimal("283"));
- Mockito.when(invoice.getRefundedAmount()).thenReturn(new BigDecimal("384"));
- Mockito.when(invoice.getBalance()).thenReturn(new BigDecimal("18376"));
- Mockito.when(invoice.isMigrationInvoice()).thenReturn(false);
- Mockito.when(invoice.getCreatedDate()).thenReturn(INVOICE_CREATED_DATE);
-
- return invoice;
- }
-
protected InvoiceItem createInvoiceItem(final UUID invoiceId, final InvoiceItemType type) {
return createInvoiceItem(invoiceId, type, BigDecimal.TEN);
}
@@ -178,13 +154,6 @@ public abstract class AnalyticsTestSuiteNoDB {
protected InvoiceItem createInvoiceItem(final UUID invoiceId,
final InvoiceItemType invoiceItemType,
- final BigDecimal amount,
- final UUID linkedItemId) {
- return createInvoiceItem(invoiceId, invoiceItemType, UUID.randomUUID(), new LocalDate(2013, 1, 2), new LocalDate(2013, 2, 5), amount, linkedItemId);
- }
-
- protected InvoiceItem createInvoiceItem(final UUID invoiceId,
- final InvoiceItemType invoiceItemType,
final UUID subscriptionId,
final LocalDate startDate,
final LocalDate endDate,
@@ -320,8 +289,6 @@ public abstract class AnalyticsTestSuiteNoDB {
Mockito.when(invoiceItem.getCreatedDate()).thenReturn(new DateTime(2016, 1, 22, 10, 56, 51, DateTimeZone.UTC));
final UUID invoiceItemId = invoiceItem.getId();
- recognizable = false;
-
final UUID invoiceId = UUID.randomUUID();
invoicePayment = Mockito.mock(InvoicePayment.class);
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessInvoice.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessInvoice.java
index 51fdbb1..64c7fa4 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessInvoice.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessInvoice.java
@@ -40,7 +40,7 @@ public class TestBusinessInvoice extends AnalyticsTestSuiteNoDB {
accountRecordId,
invoice,
invoiceItem,
- recognizable,
+ itemSource,
invoiceItemType,
invoiceItemRecordId,
secondInvoiceItemRecordId,
@@ -82,7 +82,7 @@ public class TestBusinessInvoice extends AnalyticsTestSuiteNoDB {
Assert.assertEquals(businessInvoiceItem.getInvoiceOriginalAmountCharged(), invoiceItemBaseModelDao.getInvoiceOriginalAmountCharged());
Assert.assertEquals(businessInvoiceItem.getInvoiceAmountCredited(), invoiceItemBaseModelDao.getInvoiceAmountCredited());
Assert.assertEquals(businessInvoiceItem.getItemType(), invoiceItemBaseModelDao.getItemType());
- Assert.assertEquals(businessInvoiceItem.getRecognizable(), invoiceItemBaseModelDao.getRevenueRecognizable());
+ Assert.assertEquals(businessInvoiceItem.getItemSource(), invoiceItemBaseModelDao.getItemSource());
Assert.assertEquals(businessInvoiceItem.getBundleExternalKey(), invoiceItemBaseModelDao.getBundleExternalKey());
Assert.assertEquals(businessInvoiceItem.getProductName(), invoiceItemBaseModelDao.getProductName());
Assert.assertEquals(businessInvoiceItem.getProductType(), invoiceItemBaseModelDao.getProductType());
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessInvoiceItem.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessInvoiceItem.java
index c7c2c55..e6c0b9d 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessInvoiceItem.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessInvoiceItem.java
@@ -30,7 +30,7 @@ public class TestBusinessInvoiceItem extends AnalyticsTestSuiteNoDB {
accountRecordId,
invoice,
invoiceItem,
- recognizable,
+ itemSource,
invoiceItemType,
invoiceItemRecordId,
secondInvoiceItemRecordId,
@@ -56,7 +56,7 @@ public class TestBusinessInvoiceItem extends AnalyticsTestSuiteNoDB {
Assert.assertEquals(businessInvoiceItem.getInvoiceOriginalAmountCharged(), invoiceItemBaseModelDao.getInvoiceOriginalAmountCharged());
Assert.assertEquals(businessInvoiceItem.getInvoiceAmountCredited(), invoiceItemBaseModelDao.getInvoiceAmountCredited());
Assert.assertEquals(businessInvoiceItem.getItemType(), invoiceItemBaseModelDao.getItemType());
- Assert.assertEquals(businessInvoiceItem.getRecognizable(), invoiceItemBaseModelDao.getRevenueRecognizable());
+ Assert.assertEquals(businessInvoiceItem.getItemSource(), invoiceItemBaseModelDao.getItemSource());
Assert.assertEquals(businessInvoiceItem.getBundleExternalKey(), invoiceItemBaseModelDao.getBundleExternalKey());
Assert.assertEquals(businessInvoiceItem.getProductName(), invoiceItemBaseModelDao.getProductName());
Assert.assertEquals(businessInvoiceItem.getProductType(), invoiceItemBaseModelDao.getProductType());
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessSnapshot.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessSnapshot.java
index 1634b9d..1f731c4 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessSnapshot.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessSnapshot.java
@@ -79,7 +79,7 @@ public class TestBusinessSnapshot extends AnalyticsTestSuiteNoDB {
accountRecordId,
invoice,
invoiceItem,
- recognizable,
+ itemSource,
invoiceItemType,
invoiceItemRecordId,
secondInvoiceItemRecordId,
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/factory/TestBusinessInvoiceFactory.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/factory/TestBusinessInvoiceFactory.java
index 39d367e..a153d52 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/factory/TestBusinessInvoiceFactory.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/factory/TestBusinessInvoiceFactory.java
@@ -33,6 +33,7 @@ import com.ning.billing.invoice.api.InvoiceItem;
import com.ning.billing.invoice.api.InvoiceItemType;
import com.ning.billing.osgi.bundles.analytics.AnalyticsTestSuiteNoDB;
import com.ning.billing.osgi.bundles.analytics.dao.model.BusinessInvoiceItemBaseModelDao;
+import com.ning.billing.osgi.bundles.analytics.dao.model.BusinessInvoiceItemBaseModelDao.ItemSource;
import com.ning.billing.osgi.bundles.analytics.utils.BusinessInvoiceUtils;
import com.ning.killbill.osgi.libs.killbill.OSGIKillbillDataSource;
import com.ning.killbill.osgi.libs.killbill.OSGIKillbillLogService;
@@ -101,7 +102,7 @@ public class TestBusinessInvoiceFactory extends AnalyticsTestSuiteNoDB {
// We treat these as NOT recognizable account credits
Assert.assertEquals(businessCreditItem.getAmount().compareTo(new BigDecimal("10")), 0);
Assert.assertEquals(businessCreditItem.getItemType(), InvoiceItemType.CBA_ADJ.toString());
- Assert.assertFalse(businessCreditItem.getRevenueRecognizable());
+ Assert.assertEquals(businessCreditItem.getItemSource(), ItemSource.user.toString());
// Invoice adjustment, not to be mixed with credits!
final BusinessInvoiceItemBaseModelDao businessInvoiceAdjustmentItem = invoiceFactory.createBusinessInvoiceItem(account,
@@ -118,8 +119,7 @@ public class TestBusinessInvoiceFactory extends AnalyticsTestSuiteNoDB {
reportGroup);
Assert.assertEquals(businessInvoiceAdjustmentItem.getAmount().compareTo(new BigDecimal("-10")), 0);
Assert.assertEquals(businessInvoiceAdjustmentItem.getItemType(), InvoiceItemType.CREDIT_ADJ.toString());
- // Recognizable by default
- Assert.assertTrue(businessInvoiceAdjustmentItem.getRevenueRecognizable());
+ Assert.assertEquals(businessInvoiceAdjustmentItem.getItemSource(), ItemSource.user.toString());
// Invoice adjustment via refund
final BusinessInvoiceItemBaseModelDao businessRefundInvoiceAdjustmentItem = invoiceFactory.createBusinessInvoiceItem(account,
@@ -136,8 +136,7 @@ public class TestBusinessInvoiceFactory extends AnalyticsTestSuiteNoDB {
reportGroup);
Assert.assertEquals(businessRefundInvoiceAdjustmentItem.getAmount().compareTo(new BigDecimal("-10")), 0);
Assert.assertEquals(businessRefundInvoiceAdjustmentItem.getItemType(), InvoiceItemType.REFUND_ADJ.toString());
- // Recognizable by default
- Assert.assertTrue(businessRefundInvoiceAdjustmentItem.getRevenueRecognizable());
+ Assert.assertEquals(businessRefundInvoiceAdjustmentItem.getItemSource(), ItemSource.user.toString());
// Item adjustment
final BusinessInvoiceItemBaseModelDao businessInvoiceItemAdjustmentItem = invoiceFactory.createBusinessInvoiceItem(account,
@@ -154,8 +153,7 @@ public class TestBusinessInvoiceFactory extends AnalyticsTestSuiteNoDB {
reportGroup);
Assert.assertEquals(businessInvoiceItemAdjustmentItem.getAmount().compareTo(new BigDecimal("-10")), 0);
Assert.assertEquals(businessInvoiceItemAdjustmentItem.getItemType(), InvoiceItemType.ITEM_ADJ.toString());
- // Recognizable by default
- Assert.assertTrue(businessInvoiceItemAdjustmentItem.getRevenueRecognizable());
+ Assert.assertEquals(businessInvoiceItemAdjustmentItem.getItemSource(), ItemSource.user.toString());
// System generated account credit
final BusinessInvoiceItemBaseModelDao businessCBAItem = invoiceFactory.createBusinessInvoiceItem(account,
@@ -174,8 +172,7 @@ public class TestBusinessInvoiceFactory extends AnalyticsTestSuiteNoDB {
reportGroup);
Assert.assertEquals(businessCBAItem.getAmount().compareTo(new BigDecimal("10")), 0);
Assert.assertEquals(businessCBAItem.getItemType(), InvoiceItemType.CBA_ADJ.toString());
- // Recognizable by default
- Assert.assertTrue(businessCBAItem.getRevenueRecognizable());
+ Assert.assertEquals(businessCBAItem.getItemSource(), BusinessInvoiceItemBaseModelDao.DEFAULT_ITEM_SOURCE);
}
@Test(groups = "fast")
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessInvoiceItemModelDao.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessInvoiceItemModelDao.java
index 2ba5730..63631e2 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessInvoiceItemModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessInvoiceItemModelDao.java
@@ -29,7 +29,7 @@ public class TestBusinessInvoiceItemModelDao extends AnalyticsTestSuiteNoDB {
accountRecordId,
invoice,
invoiceItem,
- recognizable,
+ itemSource,
invoiceItemRecordId,
secondInvoiceItemRecordId,
null,
@@ -54,7 +54,7 @@ public class TestBusinessInvoiceItemModelDao extends AnalyticsTestSuiteNoDB {
accountRecordId,
invoice,
invoiceItem,
- recognizable,
+ itemSource,
invoiceItemRecordId,
secondInvoiceItemRecordId,
bundle,
@@ -92,7 +92,6 @@ public class TestBusinessInvoiceItemModelDao extends AnalyticsTestSuiteNoDB {
Assert.assertEquals(invoiceItemModelDao.getInvoiceAmountCredited(), invoice.getCreditedAmount());
Assert.assertEquals(invoiceItemModelDao.getInvoiceAmountRefunded(), invoice.getRefundedAmount());
Assert.assertEquals(invoiceItemModelDao.getItemType(), invoiceItem.getInvoiceItemType().toString());
- //Assert.assertEquals(invoiceItemModelDao.getRevenueRecognizable(), /* TODO */);
Assert.assertEquals(invoiceItemModelDao.getStartDate(), invoiceItem.getStartDate());
Assert.assertEquals(invoiceItemModelDao.getAmount(), invoiceItem.getAmount());
Assert.assertEquals(invoiceItemModelDao.getCurrency(), invoiceItem.getCurrency().toString());
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/TestBusinessAnalyticsSqlDao.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/TestBusinessAnalyticsSqlDao.java
index abd47c7..5d2e8e3 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/TestBusinessAnalyticsSqlDao.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/TestBusinessAnalyticsSqlDao.java
@@ -176,7 +176,7 @@ public class TestBusinessAnalyticsSqlDao extends AnalyticsTestSuiteWithEmbeddedD
accountRecordId,
invoice,
invoiceItem,
- recognizable,
+ itemSource,
// ITEM_ADJ
invoiceItemType,
invoiceItemRecordId,