killbill-memoizeit

Modified payments to ignore Migration Invoices (until we can

3/16/2012 11:46:26 PM

Details

diff --git a/invoice/src/test/java/com/ning/billing/invoice/api/migration/TestDefaultInvoiceMigrationApi.java b/invoice/src/test/java/com/ning/billing/invoice/api/migration/TestDefaultInvoiceMigrationApi.java
index ff60d06..23561a1 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/api/migration/TestDefaultInvoiceMigrationApi.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/api/migration/TestDefaultInvoiceMigrationApi.java
@@ -94,7 +94,8 @@ public class TestDefaultInvoiceMigrationApi {
 
 	private UUID accountId ;
 	private UUID subscriptionId ;
-	private DateTime now;
+	private DateTime date_migrated;
+	private DateTime date_regular;
 
 	private UUID migrationInvoiceId;
 	private UUID regularInvoiceId;
@@ -110,7 +111,8 @@ public class TestDefaultInvoiceMigrationApi {
 		log.info("Starting set up");
 		accountId = UUID.randomUUID();
 		subscriptionId = UUID.randomUUID();
-		now = new ClockMock().getUTCNow();
+		date_migrated = new ClockMock().getUTCNow().minusYears(1);
+		date_regular = new ClockMock().getUTCNow();
 
 		final String invoiceDdl = IOUtils.toString(TestInvoiceDispatcher.class.getResourceAsStream("/com/ning/billing/invoice/ddl.sql"));
 		final String utilDdl = IOUtils.toString(TestInvoiceDispatcher.class.getResourceAsStream("/com/ning/billing/util/ddl.sql"));
@@ -137,7 +139,7 @@ public class TestDefaultInvoiceMigrationApi {
 	}
 
 	private UUID createAndCheckMigrationInvoice(){
-		UUID migrationInvoiceId = migrationApi.createMigrationInvoice(accountId, now, MIGRATION_INVOICE_AMOUNT, MIGRATION_INVOICE_CURRENCY);
+		UUID migrationInvoiceId = migrationApi.createMigrationInvoice(accountId, date_migrated, MIGRATION_INVOICE_AMOUNT, MIGRATION_INVOICE_CURRENCY);
 		Assert.assertNotNull(migrationInvoiceId);
 		//Double check it was created and values are correct
 
@@ -145,7 +147,7 @@ public class TestDefaultInvoiceMigrationApi {
 		Assert.assertNotNull(invoice);
 
 		Assert.assertEquals(invoice.getAccountId(), accountId);
-		Assert.assertEquals(invoice.getTargetDate().compareTo(now), 0); //temp to avoid tz test artifact
+		Assert.assertEquals(invoice.getTargetDate().compareTo(date_migrated), 0); //temp to avoid tz test artifact
 		//		Assert.assertEquals(invoice.getTargetDate(),now);
 		Assert.assertEquals(invoice.getNumberOfItems(), 1);
 		Assert.assertEquals(invoice.getInvoiceItems().get(0).getAmount().compareTo(MIGRATION_INVOICE_AMOUNT), 0 );
@@ -178,17 +180,15 @@ public class TestDefaultInvoiceMigrationApi {
 		EntitlementBillingApi entitlementBillingApi = BrainDeadProxyFactory.createBrainDeadProxyFor(EntitlementBillingApi.class);
 		((ZombieControl)entitlementBillingApi).addResult("getBillingEventsForAccount", events);
 
-		DateTime target = new DateTime();
-
 		InvoiceDispatcher dispatcher = new InvoiceDispatcher(generator, accountUserApi, entitlementBillingApi, invoiceDao, locker);
 
-		Invoice invoice = dispatcher.processAccount(accountId, target, true);
+		Invoice invoice = dispatcher.processAccount(accountId, date_regular, true);
 		Assert.assertNotNull(invoice);
 
 		List<Invoice> invoices = invoiceDao.getInvoicesByAccount(accountId);
 		Assert.assertEquals(invoices.size(),0);
 
-		invoice = dispatcher.processAccount(accountId, target, false);
+		invoice = dispatcher.processAccount(accountId, date_regular, false);
 		Assert.assertNotNull(invoice);
 
 		invoices = invoiceDao.getInvoicesByAccount(accountId);
@@ -204,13 +204,13 @@ public class TestDefaultInvoiceMigrationApi {
 		Assert.assertEquals(byAccount.size(),1);
 		Assert.assertEquals(byAccount.get(0).getId(), regularInvoiceId);
 
-		List<Invoice> byAccountAndDate = invoiceUserApi.getInvoicesByAccount(accountId, now.minusDays(1));
+		List<Invoice> byAccountAndDate = invoiceUserApi.getInvoicesByAccount(accountId, date_migrated.minusDays(1));
 		Assert.assertEquals(byAccountAndDate.size(),1);
 		Assert.assertEquals(byAccountAndDate.get(0).getId(), regularInvoiceId);
 
-		Collection<Invoice> unpaid = invoiceUserApi.getUnpaidInvoicesByAccountId(accountId, now.plusDays(1));
-		Assert.assertEquals(unpaid.size(),1);
-		Assert.assertEquals(unpaid.iterator().next().getId(), regularInvoiceId);
+		Collection<Invoice> unpaid = invoiceUserApi.getUnpaidInvoicesByAccountId(accountId, date_regular.plusDays(1));
+		Assert.assertEquals(unpaid.size(), 1);
+		Assert.assertEquals(regularInvoiceId, unpaid.iterator().next().getId());
 
 	}
 
diff --git a/payment/src/main/java/com/ning/billing/payment/api/DefaultPaymentApi.java b/payment/src/main/java/com/ning/billing/payment/api/DefaultPaymentApi.java
index 5d7daca..63bc87e 100644
--- a/payment/src/main/java/com/ning/billing/payment/api/DefaultPaymentApi.java
+++ b/payment/src/main/java/com/ning/billing/payment/api/DefaultPaymentApi.java
@@ -188,6 +188,14 @@ public class DefaultPaymentApi implements PaymentApi {
                                                                                         UUID.fromString(invoiceId)));
                 processedPaymentsOrErrors.add(result);
             }
+            else if (invoice.isMigrationInvoice()) {
+            	log.info("Received invoice for payment that is a migration invoice - don't know how to handle those yet: {}", invoice);
+            	Either<PaymentError, PaymentInfo> result = Either.left(new PaymentError("migration invoice",
+                        "Invoice balance was a migration invoice",
+                        account.getId(),
+                        UUID.fromString(invoiceId)));
+            			processedPaymentsOrErrors.add(result);
+            }
             else {
                 PaymentAttempt paymentAttempt = paymentDao.createPaymentAttempt(invoice);