killbill-aplcache
Changes
beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestIntegrationWithAutoInvoiceOffTag.java 66(+62 -4)
invoice/src/test/java/org/killbill/billing/invoice/generator/TestDefaultInvoiceGenerator.java 27(+27 -0)
junction/src/main/java/org/killbill/billing/junction/plumbing/billing/DefaultBillingEventSet.java 9(+8 -1)
Details
diff --git a/api/src/main/java/org/killbill/billing/junction/BillingEventSet.java b/api/src/main/java/org/killbill/billing/junction/BillingEventSet.java
index b44faa9..dcb4b2a 100644
--- a/api/src/main/java/org/killbill/billing/junction/BillingEventSet.java
+++ b/api/src/main/java/org/killbill/billing/junction/BillingEventSet.java
@@ -30,6 +30,8 @@ public interface BillingEventSet extends SortedSet<BillingEvent> {
public boolean isAccountAutoInvoiceOff();
+ public boolean isAccountAutoInvoiceDraft();
+
public BillingMode getRecurringBillingMode();
public List<UUID> getSubscriptionIdsWithAutoInvoiceOff();
diff --git a/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestIntegrationWithAutoInvoiceOffTag.java b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestIntegrationWithAutoInvoiceOffTag.java
index 729e277..e3825da 100644
--- a/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestIntegrationWithAutoInvoiceOffTag.java
+++ b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestIntegrationWithAutoInvoiceOffTag.java
@@ -23,9 +23,6 @@ import java.util.List;
import java.util.UUID;
import org.joda.time.DateTime;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
import org.killbill.billing.ObjectType;
import org.killbill.billing.account.api.Account;
import org.killbill.billing.api.TestApiListener.NextEvent;
@@ -33,12 +30,15 @@ import org.killbill.billing.catalog.api.BillingPeriod;
import org.killbill.billing.catalog.api.ProductCategory;
import org.killbill.billing.entitlement.api.DefaultEntitlement;
import org.killbill.billing.invoice.api.Invoice;
+import org.killbill.billing.invoice.api.InvoiceStatus;
import org.killbill.billing.invoice.api.InvoiceUserApi;
import org.killbill.billing.util.api.TagApiException;
import org.killbill.billing.util.api.TagDefinitionApiException;
import org.killbill.billing.util.api.TagUserApi;
import org.killbill.billing.util.tag.ControlTagType;
import org.killbill.billing.util.tag.Tag;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
import com.google.inject.Inject;
@@ -145,14 +145,72 @@ public class TestIntegrationWithAutoInvoiceOffTag extends TestIntegrationBase {
assertEquals(invoices.size(), 3); // Only one additional invoice generated
}
+
+ @Test(groups = "slow")
+ public void testAutoInvoiceDraftAccount() throws Exception {
+ clock.setTime(new DateTime(2017, 6, 16, 18, 24, 42, 0));
+ add_AUTO_INVOICING_DRAFT_Tag(account.getId(), ObjectType.ACCOUNT);
+
+ final DefaultEntitlement bpEntitlement = createBaseEntitlementAndCheckForCompletion(account.getId(), "externalKey", productName, ProductCategory.BASE, term, NextEvent.CREATE, NextEvent.BLOCK);
+ assertNotNull(bpEntitlement);
+
+ List<Invoice> invoices = invoiceApi.getInvoicesByAccount(account.getId(), false, callContext);
+ assertEquals(invoices.size(), 1);
+ final Invoice trialInvoice = invoices.get(0);
+ assertEquals(trialInvoice.getStatus(), InvoiceStatus.DRAFT);
+
+ busHandler.pushExpectedEvent(NextEvent.INVOICE);
+ invoiceApi.commitInvoice(trialInvoice.getId(), callContext);
+ assertListenerStatus();
+
+ // Move out of TRIAL
+ busHandler.pushExpectedEvents(NextEvent.PHASE);
+ clock.addDays(30);
+ assertListenerStatus();
+
+ invoices = invoiceApi.getInvoicesByAccount(account.getId(), false, callContext);
+ assertEquals(invoices.size(), 2);
+
+ final Invoice firstNonTrialInvoice = invoices.get(1);
+ assertEquals(firstNonTrialInvoice.getStatus(), InvoiceStatus.DRAFT);
+
+ busHandler.pushExpectedEvents(NextEvent.INVOICE, NextEvent.INVOICE_PAYMENT, NextEvent.PAYMENT);
+ invoiceApi.commitInvoice(firstNonTrialInvoice.getId(), callContext);
+ assertListenerStatus();
+
+
+ busHandler.pushExpectedEvents(NextEvent.TAG);
+ remove_AUTO_INVOICING_DRAFT_Tag(account.getId(), ObjectType.ACCOUNT);
+ assertListenerStatus();
+
+ busHandler.pushExpectedEvents(NextEvent.INVOICE, NextEvent.PAYMENT, NextEvent.INVOICE_PAYMENT);
+ clock.addMonths(1);
+ assertListenerStatus();
+
+ invoices = invoiceApi.getInvoicesByAccount(account.getId(), false, callContext);
+ assertEquals(invoices.size(), 3);
+ }
+
+ private void add_AUTO_INVOICING_DRAFT_Tag(final UUID id, final ObjectType type) throws TagDefinitionApiException, TagApiException {
+ add_account_Tag(id, ControlTagType.AUTO_INVOICING_DRAFT, type);
+ }
+
private void add_AUTO_INVOICING_OFF_Tag(final UUID id, final ObjectType type) throws TagDefinitionApiException, TagApiException {
+ add_account_Tag(id, ControlTagType.AUTO_INVOICING_OFF, type);
+ }
+
+ private void add_account_Tag(final UUID id, final ControlTagType controlTagType, final ObjectType type) throws TagDefinitionApiException, TagApiException {
busHandler.pushExpectedEvent(NextEvent.TAG);
- tagApi.addTag(id, type, ControlTagType.AUTO_INVOICING_OFF.getId(), callContext);
+ tagApi.addTag(id, type, controlTagType.getId(), callContext);
assertListenerStatus();
final List<Tag> tags = tagApi.getTagsForObject(id, type, false, callContext);
assertEquals(tags.size(), 1);
}
+ private void remove_AUTO_INVOICING_DRAFT_Tag(final UUID id, final ObjectType type) throws TagDefinitionApiException, TagApiException {
+ tagApi.removeTag(id, type, ControlTagType.AUTO_INVOICING_DRAFT.getId(), callContext);
+ }
+
private void remove_AUTO_INVOICING_OFF_Tag(final UUID id, final ObjectType type) throws TagDefinitionApiException, TagApiException {
tagApi.removeTag(id, type, ControlTagType.AUTO_INVOICING_OFF.getId(), callContext);
}
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/dao/DefaultInvoiceDao.java b/invoice/src/main/java/org/killbill/billing/invoice/dao/DefaultInvoiceDao.java
index e1d1df0..5a7f3ce 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/dao/DefaultInvoiceDao.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/dao/DefaultInvoiceDao.java
@@ -339,8 +339,6 @@ public class DefaultInvoiceDao extends EntityDaoBase<InvoiceModelDao, Invoice, I
if (InvoiceStatus.COMMITTED.equals(invoiceModelDao.getStatus())) {
committedInvoiceIds.add(invoiceModelDao.getId());
- notifyOfFutureBillingEvents(entitySqlDaoWrapperFactory, invoiceModelDao.getAccountId(), callbackDateTimePerSubscriptions, context);
-
if (wasInvoiceCreated) {
notifyBusOfInvoiceCreation(entitySqlDaoWrapperFactory, invoiceModelDao, context);
}
@@ -348,6 +346,8 @@ public class DefaultInvoiceDao extends EntityDaoBase<InvoiceModelDao, Invoice, I
// Commit queue
notifyOfParentInvoiceCreation(entitySqlDaoWrapperFactory, invoiceModelDao, context);
}
+
+ notifyOfFutureBillingEvents(entitySqlDaoWrapperFactory, invoiceModelDao.getAccountId(), callbackDateTimePerSubscriptions, context);
}
for (final UUID adjustedInvoiceId : modifiedInvoiceIds) {
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/generator/DefaultInvoiceGenerator.java b/invoice/src/main/java/org/killbill/billing/invoice/generator/DefaultInvoiceGenerator.java
index 33f7c25..1d73b89 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/generator/DefaultInvoiceGenerator.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/generator/DefaultInvoiceGenerator.java
@@ -35,6 +35,7 @@ import org.killbill.billing.catalog.api.Currency;
import org.killbill.billing.invoice.api.Invoice;
import org.killbill.billing.invoice.api.InvoiceApiException;
import org.killbill.billing.invoice.api.InvoiceItem;
+import org.killbill.billing.invoice.api.InvoiceStatus;
import org.killbill.billing.invoice.generator.InvoiceWithMetadata.SubscriptionFutureNotificationDates;
import org.killbill.billing.invoice.model.DefaultInvoice;
import org.killbill.billing.junction.BillingEventSet;
@@ -77,7 +78,8 @@ public class DefaultInvoiceGenerator implements InvoiceGenerator {
final LocalDate adjustedTargetDate = adjustTargetDate(existingInvoices, targetDate);
final LocalDate invoiceDate = context.toLocalDate(context.getCreatedDate());
- final DefaultInvoice invoice = new DefaultInvoice(account.getId(), invoiceDate, adjustedTargetDate, targetCurrency);
+ final InvoiceStatus invoiceStatus = events.isAccountAutoInvoiceDraft() ? InvoiceStatus.DRAFT : InvoiceStatus.COMMITTED;
+ final DefaultInvoice invoice = new DefaultInvoice(account.getId(), invoiceDate, adjustedTargetDate, targetCurrency, invoiceStatus);
final UUID invoiceId = invoice.getId();
final Map<UUID, SubscriptionFutureNotificationDates> perSubscriptionFutureNotificationDates = new HashMap<UUID, SubscriptionFutureNotificationDates>();
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/model/DefaultInvoice.java b/invoice/src/main/java/org/killbill/billing/invoice/model/DefaultInvoice.java
index 0541c07..442a4f8 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/model/DefaultInvoice.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/model/DefaultInvoice.java
@@ -39,6 +39,7 @@ import org.killbill.billing.invoice.dao.InvoiceModelDao;
import org.killbill.billing.invoice.dao.InvoicePaymentModelDao;
import org.killbill.billing.util.UUIDs;
+import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Function;
import com.google.common.collect.Collections2;
@@ -60,11 +61,8 @@ public class DefaultInvoice extends EntityBase implements Invoice, Cloneable {
private final Invoice parentInvoice;
- // Used to create a new invoice
- public DefaultInvoice(final UUID accountId, final LocalDate invoiceDate, final LocalDate targetDate, final Currency currency) {
- this(UUIDs.randomUUID(), accountId, null, invoiceDate, targetDate, currency, false, InvoiceStatus.COMMITTED);
- }
+ // Used to create a new invoice
public DefaultInvoice(final UUID accountId, final LocalDate invoiceDate, final LocalDate targetDate, final Currency currency, final InvoiceStatus status) {
this(UUIDs.randomUUID(), accountId, null, invoiceDate, targetDate, currency, false, status);
}
@@ -74,6 +72,11 @@ public class DefaultInvoice extends EntityBase implements Invoice, Cloneable {
this(invoiceId, null, accountId, invoiceNumber, invoiceDate, targetDate, currency, currency, isMigrationInvoice, false, status, false, null);
}
+ @VisibleForTesting
+ public DefaultInvoice(final UUID accountId, final LocalDate invoiceDate, final LocalDate targetDate, final Currency currency) {
+ this(UUIDs.randomUUID(), accountId, null, invoiceDate, targetDate, currency, false, InvoiceStatus.COMMITTED);
+ }
+
// This CTOR is used to return an existing invoice and must include everything (items, payments, tags,..)
public DefaultInvoice(final InvoiceModelDao invoiceModelDao, @Nullable final Catalog catalog) {
this(invoiceModelDao.getId(), invoiceModelDao.getCreatedDate(), invoiceModelDao.getAccountId(),
diff --git a/invoice/src/test/java/org/killbill/billing/invoice/generator/TestDefaultInvoiceGenerator.java b/invoice/src/test/java/org/killbill/billing/invoice/generator/TestDefaultInvoiceGenerator.java
index bdf3a39..bfc6eb7 100644
--- a/invoice/src/test/java/org/killbill/billing/invoice/generator/TestDefaultInvoiceGenerator.java
+++ b/invoice/src/test/java/org/killbill/billing/invoice/generator/TestDefaultInvoiceGenerator.java
@@ -1060,6 +1060,33 @@ public class TestDefaultInvoiceGenerator extends InvoiceTestSuiteNoDB {
assertTrue(invoice3.getBalance().compareTo(FIFTEEN.multiply(TWO).add(TWELVE)) == 0);
}
+ @Test(groups = "fast")
+ public void testAutoInvoiceDraftAccount() throws Exception {
+ final MockBillingEventSet events = new MockBillingEventSet();
+ events.setAccountAutoInvoiceDraft(true);
+
+ final SubscriptionBase sub = createSubscription();
+ final LocalDate startDate = invoiceUtil.buildDate(2011, 9, 1);
+
+ final Plan plan = new MockPlan();
+ final BigDecimal rate1 = TEN;
+ final PlanPhase phase = createMockMonthlyPlanPhase(rate1);
+
+ final BillingEvent event = createBillingEvent(sub.getId(), sub.getBundleId(), startDate, plan, phase, 1);
+ events.add(event);
+
+ final LocalDate targetDate = invoiceUtil.buildDate(2011, 10, 3);
+ final UUID accountId = UUID.randomUUID();
+ final InvoiceWithMetadata invoiceWithMetadata = generator.generateInvoice(account, events, null, targetDate, Currency.USD, internalCallContext);
+
+ assertNotNull(invoiceWithMetadata.getInvoice());
+ assertEquals(invoiceWithMetadata.getInvoice().getStatus(), InvoiceStatus.DRAFT);
+ assertEquals(invoiceWithMetadata.getInvoice().getInvoiceItems().size(), 2);
+
+ }
+
+
+
@Test(groups = "fast", description = "https://github.com/killbill/killbill/issues/654")
public void testCancelEOTWithFullItemAdjustment() throws CatalogApiException, InvoiceApiException {
final BigDecimal rate = new BigDecimal("39.95");
diff --git a/invoice/src/test/java/org/killbill/billing/invoice/MockBillingEventSet.java b/invoice/src/test/java/org/killbill/billing/invoice/MockBillingEventSet.java
index 431a8dd..dabf129 100644
--- a/invoice/src/test/java/org/killbill/billing/invoice/MockBillingEventSet.java
+++ b/invoice/src/test/java/org/killbill/billing/invoice/MockBillingEventSet.java
@@ -35,11 +35,14 @@ public class MockBillingEventSet extends TreeSet<BillingEvent> implements Billin
private static final long serialVersionUID = 1L;
private boolean isAccountInvoiceOff;
+ private boolean isAccountAutoInvoiceDraft;
+
private List<UUID> subscriptionIdsWithAutoInvoiceOff;
public MockBillingEventSet() {
super();
this.isAccountInvoiceOff = false;
+ this.isAccountAutoInvoiceDraft = false;
this.subscriptionIdsWithAutoInvoiceOff = new ArrayList<UUID>();
}
@@ -53,6 +56,11 @@ public class MockBillingEventSet extends TreeSet<BillingEvent> implements Billin
}
@Override
+ public boolean isAccountAutoInvoiceDraft() {
+ return isAccountAutoInvoiceDraft;
+ }
+
+ @Override
public BillingMode getRecurringBillingMode() {
return BillingMode.IN_ADVANCE;
}
@@ -71,6 +79,11 @@ public class MockBillingEventSet extends TreeSet<BillingEvent> implements Billin
this.isAccountInvoiceOff = isAccountInvoiceOff;
}
+ public void setAccountAutoInvoiceDraft(final boolean isAccountAutoInvoiceDraft) {
+ this.isAccountAutoInvoiceDraft = isAccountAutoInvoiceDraft;
+
+ }
+
public void setSubscriptionIdsWithAutoInvoiceOff(final List<UUID> subscriptionIdsWithAutoInvoiceOff) {
this.subscriptionIdsWithAutoInvoiceOff = subscriptionIdsWithAutoInvoiceOff;
}
diff --git a/junction/src/main/java/org/killbill/billing/junction/plumbing/billing/DefaultBillingEventSet.java b/junction/src/main/java/org/killbill/billing/junction/plumbing/billing/DefaultBillingEventSet.java
index c971588..35bda36 100644
--- a/junction/src/main/java/org/killbill/billing/junction/plumbing/billing/DefaultBillingEventSet.java
+++ b/junction/src/main/java/org/killbill/billing/junction/plumbing/billing/DefaultBillingEventSet.java
@@ -41,11 +41,13 @@ public class DefaultBillingEventSet extends TreeSet<BillingEvent> implements Sor
private static final long serialVersionUID = 1L;
private final boolean accountAutoInvoiceOff;
+ private final boolean accountAutoInvoiceDraft;
private final List<UUID> subscriptionIdsWithAutoInvoiceOff;
private final BillingMode recurringBillingMode;
- public DefaultBillingEventSet(final boolean accountAutoInvoiceOff, final BillingMode recurringBillingMode) {
+ public DefaultBillingEventSet(final boolean accountAutoInvoiceOff, final boolean accountAutoInvoiceDraft, final BillingMode recurringBillingMode) {
this.accountAutoInvoiceOff = accountAutoInvoiceOff;
+ this.accountAutoInvoiceDraft = accountAutoInvoiceDraft;
this.recurringBillingMode = recurringBillingMode;
this.subscriptionIdsWithAutoInvoiceOff = new ArrayList<UUID>();
}
@@ -56,6 +58,11 @@ public class DefaultBillingEventSet extends TreeSet<BillingEvent> implements Sor
}
@Override
+ public boolean isAccountAutoInvoiceDraft() {
+ return accountAutoInvoiceDraft;
+ }
+
+ @Override
public BillingMode getRecurringBillingMode() {
return recurringBillingMode;
}
diff --git a/junction/src/main/java/org/killbill/billing/junction/plumbing/billing/DefaultInternalBillingApi.java b/junction/src/main/java/org/killbill/billing/junction/plumbing/billing/DefaultInternalBillingApi.java
index 8116a89..b8f0bac 100644
--- a/junction/src/main/java/org/killbill/billing/junction/plumbing/billing/DefaultInternalBillingApi.java
+++ b/junction/src/main/java/org/killbill/billing/junction/plumbing/billing/DefaultInternalBillingApi.java
@@ -26,8 +26,6 @@ import java.util.Set;
import java.util.SortedSet;
import java.util.UUID;
-import javax.annotation.Nullable;
-
import org.killbill.billing.ObjectType;
import org.killbill.billing.account.api.AccountApiException;
import org.killbill.billing.account.api.AccountInternalApi;
@@ -62,8 +60,9 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.base.Function;
-import com.google.common.base.Preconditions;
+import com.google.common.base.Predicate;
import com.google.common.collect.Collections2;
+import com.google.common.collect.Iterables;
import com.google.inject.Inject;
public class DefaultInternalBillingApi implements BillingInternalApi {
@@ -96,17 +95,18 @@ public class DefaultInternalBillingApi implements BillingInternalApi {
// Check to see if billing is off for the account
final List<Tag> accountTags = tagApi.getTags(accountId, ObjectType.ACCOUNT, context);
final boolean found_AUTO_INVOICING_OFF = is_AUTO_INVOICING_OFF(accountTags);
+ final boolean found_INVOICING_DRAFT = is_AUTO_INVOICING_DRAFT(accountTags);
final Set<UUID> skippedSubscriptions = new HashSet<UUID>();
final DefaultBillingEventSet result;
if (found_AUTO_INVOICING_OFF) {
- result = new DefaultBillingEventSet(true, ((StaticCatalog) currentCatalog).getRecurringBillingMode()); // billing is off, we are done
+ result = new DefaultBillingEventSet(true, found_INVOICING_DRAFT, ((StaticCatalog) currentCatalog).getRecurringBillingMode()); // billing is off, we are done
} else {
final List<SubscriptionBaseBundle> bundles = subscriptionApi.getBundlesForAccount(accountId, context);
final ImmutableAccountData account = accountApi.getImmutableAccountDataById(accountId, context);
- result = new DefaultBillingEventSet(false, ((StaticCatalog) currentCatalog).getRecurringBillingMode());
+ result = new DefaultBillingEventSet(false, found_INVOICING_DRAFT, ((StaticCatalog) currentCatalog).getRecurringBillingMode());
addBillingEventsForBundles(bundles, account, dryRunArguments, context, result, skippedSubscriptions, currentCatalog);
}
@@ -244,11 +244,19 @@ public class DefaultInternalBillingApi implements BillingInternalApi {
private boolean is_AUTO_INVOICING_OFF(final List<Tag> tags) {
return ControlTagType.isAutoInvoicingOff(Collections2.transform(tags, new Function<Tag, UUID>() {
- @Nullable
@Override
- public UUID apply(@Nullable final Tag tag) {
+ public UUID apply(final Tag tag) {
return tag.getTagDefinitionId();
}
}));
}
+
+ private boolean is_AUTO_INVOICING_DRAFT(final List<Tag> tags) {
+ return Iterables.any(tags, new Predicate<Tag>() {
+ @Override
+ public boolean apply(final Tag input) {
+ return input.getTagDefinitionId().equals(ControlTagType.AUTO_INVOICING_DRAFT.getId());
+ }
+ });
+ }
}
diff --git a/overdue/src/test/java/org/killbill/billing/overdue/TestOverdueHelper.java b/overdue/src/test/java/org/killbill/billing/overdue/TestOverdueHelper.java
index 135e86f..7ad5c4d 100644
--- a/overdue/src/test/java/org/killbill/billing/overdue/TestOverdueHelper.java
+++ b/overdue/src/test/java/org/killbill/billing/overdue/TestOverdueHelper.java
@@ -34,11 +34,13 @@ import org.killbill.billing.entitlement.api.BlockingState;
import org.killbill.billing.invoice.api.Invoice;
import org.killbill.billing.invoice.api.InvoiceInternalApi;
import org.killbill.billing.invoice.api.InvoiceItem;
+import org.killbill.billing.invoice.api.InvoiceStatus;
import org.killbill.billing.junction.BlockingInternalApi;
import org.killbill.billing.overdue.api.OverdueState;
import org.killbill.billing.overdue.glue.TestOverdueModule.ApplicatorBlockingApi;
import org.killbill.billing.subscription.api.user.SubscriptionBaseApiException;
import org.killbill.billing.tag.TagInternalApi;
+import org.killbill.billing.util.tag.ControlTagType;
import org.killbill.billing.util.tag.Tag;
import org.mockito.Mockito;
import org.testng.Assert;
@@ -131,6 +133,7 @@ public class TestOverdueHelper {
final Invoice invoice = Mockito.mock(Invoice.class);
Mockito.when(invoice.getInvoiceDate()).thenReturn(dateOfLastUnPaidInvoice);
Mockito.when(invoice.getBalance()).thenReturn(BigDecimal.TEN);
+ Mockito.when(invoice.getStatus()).thenReturn(InvoiceStatus.COMMITTED);
Mockito.when(invoice.getId()).thenReturn(UUID.randomUUID());
final InvoiceItem item = Mockito.mock(InvoiceItem.class);
@@ -146,7 +149,7 @@ public class TestOverdueHelper {
final Tag tag = Mockito.mock(Tag.class);
Mockito.when(tag.getObjectId()).thenReturn(accountId);
Mockito.when(tag.getObjectType()).thenReturn(ObjectType.ACCOUNT);
- Mockito.when(tag.getTagDefinitionId()).thenReturn(new UUID(0, 6));
+ Mockito.when(tag.getTagDefinitionId()).thenReturn(ControlTagType.TEST.getId());
final List<Tag> tags = new ArrayList<Tag>();
tags.add(tag);
Mockito.when(tagInternalApi.getTags(Mockito.eq(account.getId()), Mockito.eq(ObjectType.ACCOUNT), Mockito.<InternalTenantContext>any()))
diff --git a/util/src/main/resources/org/killbill/billing/util/tag/dao/TagSqlDao.sql.stg b/util/src/main/resources/org/killbill/billing/util/tag/dao/TagSqlDao.sql.stg
index 6f4d604..3b5aefa 100644
--- a/util/src/main/resources/org/killbill/billing/util/tag/dao/TagSqlDao.sql.stg
+++ b/util/src/main/resources/org/killbill/billing/util/tag/dao/TagSqlDao.sql.stg
@@ -102,6 +102,11 @@ userAndSystemTagDefinitions() ::= <<
, \'Indicates that this is a partner account\' description
union
select
+ \'00000000-0000-0000-0000-000000000008\' id
+ , \'AUTO_INVOICING_DRAFT\' as name
+ , \'Generate account invoices in DRAFT mode.\' description
+ union
+ select
\'00000000-0000-0001-0000-000000000001\' id
, \'__PARK__\' as name
, \'Accounts with invalid invoicing state\' description