killbill-aplcache
Changes
entitlement/src/main/java/com/ning/billing/entitlement/api/billing/DefaultEntitlementBillingApi.java 12(+7 -5)
Details
diff --git a/account/src/main/java/com/ning/billing/account/api/DefaultAccount.java b/account/src/main/java/com/ning/billing/account/api/DefaultAccount.java
index 022e341..0dd8740 100644
--- a/account/src/main/java/com/ning/billing/account/api/DefaultAccount.java
+++ b/account/src/main/java/com/ning/billing/account/api/DefaultAccount.java
@@ -305,7 +305,7 @@ public class DefaultAccount extends CustomizableEntityBase implements Account {
@Override
public MutableAccountData toMutableAccountData() {
- return new MutableAccountData(this);
+ return new DefaultMutableAccountData(this);
}
@Override
diff --git a/account/src/main/java/com/ning/billing/account/api/DefaultMutableAccountData.java b/account/src/main/java/com/ning/billing/account/api/DefaultMutableAccountData.java
new file mode 100644
index 0000000..4476130
--- /dev/null
+++ b/account/src/main/java/com/ning/billing/account/api/DefaultMutableAccountData.java
@@ -0,0 +1,333 @@
+/*
+ * Copyright 2010-2011 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.account.api;
+
+import org.joda.time.DateTime;
+import org.joda.time.DateTimeZone;
+
+import com.ning.billing.catalog.api.Currency;
+import com.ning.billing.util.tag.TagStore;
+
+public class DefaultMutableAccountData implements AccountData, MutableAccountData {
+ private String externalKey;
+ private String email;
+ private String name;
+ private int firstNameLength;
+ private Currency currency;
+ private int billCycleDay;
+ private String paymentProviderName;
+ private DateTimeZone timeZone;
+ private String locale;
+ private String address1;
+ private String address2;
+ private String companyName;
+ private String city;
+ private String stateOrProvince;
+ private String country;
+ private String postalCode;
+ private String phone;
+
+ public DefaultMutableAccountData(String externalKey, String email, String name,
+ int firstNameLength, Currency currency, int billCycleDay,
+ String paymentProviderName, TagStore tags, DateTimeZone timeZone,
+ String locale, String address1, String address2,
+ String companyName, String city, String stateOrProvince,
+ String country, String postalCode, String phone,
+ DateTime createdDate, DateTime updatedDate) {
+ super();
+ this.externalKey = externalKey;
+ this.email = email;
+ this.name = name;
+ this.firstNameLength = firstNameLength;
+ this.currency = currency;
+ this.billCycleDay = billCycleDay;
+ this.paymentProviderName = paymentProviderName;
+ this.timeZone = timeZone;
+ this.locale = locale;
+ this.address1 = address1;
+ this.address2 = address2;
+ this.companyName = companyName;
+ this.city = city;
+ this.stateOrProvince = stateOrProvince;
+ this.country = country;
+ this.postalCode = postalCode;
+ this.phone = phone;
+ }
+
+ public DefaultMutableAccountData(AccountData accountData) {
+ super();
+ this.externalKey = accountData.getExternalKey();
+ this.email = accountData.getEmail();
+ this.name = accountData.getName();
+ this.firstNameLength = accountData.getFirstNameLength();
+ this.currency = accountData.getCurrency();
+ this.billCycleDay = accountData.getBillCycleDay();
+ this.paymentProviderName = accountData.getPaymentProviderName();
+ this.timeZone = accountData.getTimeZone();
+ this.locale = accountData.getLocale();
+ this.address1 = accountData.getAddress1();
+ this.address2 = accountData.getAddress2();
+ this.companyName = accountData.getCompanyName();
+ this.city = accountData.getCity();
+ this.stateOrProvince = accountData.getStateOrProvince();
+ this.country = accountData.getCountry();
+ this.postalCode = accountData.getPostalCode();
+ this.phone = accountData.getPhone();
+ }
+
+ /* (non-Javadoc)
+ * @see com.ning.billing.account.api.MutableAccountData#getExternalKey()
+ */
+ @Override
+ public String getExternalKey() {
+ return externalKey;
+ }
+ /* (non-Javadoc)
+ * @see com.ning.billing.account.api.MutableAccountData#getEmail()
+ */
+ @Override
+ public String getEmail() {
+ return email;
+ }
+ /* (non-Javadoc)
+ * @see com.ning.billing.account.api.MutableAccountData#getName()
+ */
+ @Override
+ public String getName() {
+ return name;
+ }
+ /* (non-Javadoc)
+ * @see com.ning.billing.account.api.MutableAccountData#getFirstNameLength()
+ */
+ @Override
+ public int getFirstNameLength() {
+ return firstNameLength;
+ }
+ /* (non-Javadoc)
+ * @see com.ning.billing.account.api.MutableAccountData#getCurrency()
+ */
+ @Override
+ public Currency getCurrency() {
+ return currency;
+ }
+ /* (non-Javadoc)
+ * @see com.ning.billing.account.api.MutableAccountData#getBillCycleDay()
+ */
+ @Override
+ public int getBillCycleDay() {
+ return billCycleDay;
+ }
+ /* (non-Javadoc)
+ * @see com.ning.billing.account.api.MutableAccountData#getPaymentProviderName()
+ */
+ @Override
+ public String getPaymentProviderName() {
+ return paymentProviderName;
+ }
+ /* (non-Javadoc)
+ * @see com.ning.billing.account.api.MutableAccountData#getTimeZone()
+ */
+ @Override
+ public DateTimeZone getTimeZone() {
+ return timeZone;
+ }
+ /* (non-Javadoc)
+ * @see com.ning.billing.account.api.MutableAccountData#getLocale()
+ */
+ @Override
+ public String getLocale() {
+ return locale;
+ }
+ /* (non-Javadoc)
+ * @see com.ning.billing.account.api.MutableAccountData#getAddress1()
+ */
+ @Override
+ public String getAddress1() {
+ return address1;
+ }
+ /* (non-Javadoc)
+ * @see com.ning.billing.account.api.MutableAccountData#getAddress2()
+ */
+ @Override
+ public String getAddress2() {
+ return address2;
+ }
+ /* (non-Javadoc)
+ * @see com.ning.billing.account.api.MutableAccountData#getCompanyName()
+ */
+ @Override
+ public String getCompanyName() {
+ return companyName;
+ }
+ /* (non-Javadoc)
+ * @see com.ning.billing.account.api.MutableAccountData#getCity()
+ */
+ @Override
+ public String getCity() {
+ return city;
+ }
+ /* (non-Javadoc)
+ * @see com.ning.billing.account.api.MutableAccountData#getStateOrProvince()
+ */
+ @Override
+ public String getStateOrProvince() {
+ return stateOrProvince;
+ }
+ /* (non-Javadoc)
+ * @see com.ning.billing.account.api.MutableAccountData#getCountry()
+ */
+ @Override
+ public String getCountry() {
+ return country;
+ }
+ /* (non-Javadoc)
+ * @see com.ning.billing.account.api.MutableAccountData#getPostalCode()
+ */
+ @Override
+ public String getPostalCode() {
+ return postalCode;
+ }
+ /* (non-Javadoc)
+ * @see com.ning.billing.account.api.MutableAccountData#getPhone()
+ */
+ @Override
+ public String getPhone() {
+ return phone;
+ }
+
+ /* (non-Javadoc)
+ * @see com.ning.billing.account.api.MutableAccountData#setExternalKey(java.lang.String)
+ */
+ @Override
+ public void setExternalKey(String externalKey) {
+ this.externalKey = externalKey;
+ }
+ /* (non-Javadoc)
+ * @see com.ning.billing.account.api.MutableAccountData#setEmail(java.lang.String)
+ */
+ @Override
+ public void setEmail(String email) {
+ this.email = email;
+ }
+ /* (non-Javadoc)
+ * @see com.ning.billing.account.api.MutableAccountData#setName(java.lang.String)
+ */
+ @Override
+ public void setName(String name) {
+ this.name = name;
+ }
+ /* (non-Javadoc)
+ * @see com.ning.billing.account.api.MutableAccountData#setFirstNameLength(int)
+ */
+ @Override
+ public void setFirstNameLength(int firstNameLength) {
+ this.firstNameLength = firstNameLength;
+ }
+ /* (non-Javadoc)
+ * @see com.ning.billing.account.api.MutableAccountData#setCurrency(com.ning.billing.catalog.api.Currency)
+ */
+ @Override
+ public void setCurrency(Currency currency) {
+ this.currency = currency;
+ }
+ /* (non-Javadoc)
+ * @see com.ning.billing.account.api.MutableAccountData#setBillCycleDay(int)
+ */
+ @Override
+ public void setBillCycleDay(int billCycleDay) {
+ this.billCycleDay = billCycleDay;
+ }
+ /* (non-Javadoc)
+ * @see com.ning.billing.account.api.MutableAccountData#setPaymentProviderName(java.lang.String)
+ */
+ @Override
+ public void setPaymentProviderName(String paymentProviderName) {
+ this.paymentProviderName = paymentProviderName;
+ }
+ /* (non-Javadoc)
+ * @see com.ning.billing.account.api.MutableAccountData#setTimeZone(org.joda.time.DateTimeZone)
+ */
+ @Override
+ public void setTimeZone(DateTimeZone timeZone) {
+ this.timeZone = timeZone;
+ }
+ /* (non-Javadoc)
+ * @see com.ning.billing.account.api.MutableAccountData#setLocale(java.lang.String)
+ */
+ @Override
+ public void setLocale(String locale) {
+ this.locale = locale;
+ }
+ /* (non-Javadoc)
+ * @see com.ning.billing.account.api.MutableAccountData#setAddress1(java.lang.String)
+ */
+ @Override
+ public void setAddress1(String address1) {
+ this.address1 = address1;
+ }
+ /* (non-Javadoc)
+ * @see com.ning.billing.account.api.MutableAccountData#setAddress2(java.lang.String)
+ */
+ @Override
+ public void setAddress2(String address2) {
+ this.address2 = address2;
+ }
+ /* (non-Javadoc)
+ * @see com.ning.billing.account.api.MutableAccountData#setCompanyName(java.lang.String)
+ */
+ @Override
+ public void setCompanyName(String companyName) {
+ this.companyName = companyName;
+ }
+ /* (non-Javadoc)
+ * @see com.ning.billing.account.api.MutableAccountData#setCity(java.lang.String)
+ */
+ @Override
+ public void setCity(String city) {
+ this.city = city;
+ }
+ /* (non-Javadoc)
+ * @see com.ning.billing.account.api.MutableAccountData#setStateOrProvince(java.lang.String)
+ */
+ @Override
+ public void setStateOrProvince(String stateOrProvince) {
+ this.stateOrProvince = stateOrProvince;
+ }
+ /* (non-Javadoc)
+ * @see com.ning.billing.account.api.MutableAccountData#setCountry(java.lang.String)
+ */
+ @Override
+ public void setCountry(String country) {
+ this.country = country;
+ }
+ /* (non-Javadoc)
+ * @see com.ning.billing.account.api.MutableAccountData#setPostalCode(java.lang.String)
+ */
+ @Override
+ public void setPostalCode(String postalCode) {
+ this.postalCode = postalCode;
+ }
+ /* (non-Javadoc)
+ * @see com.ning.billing.account.api.MutableAccountData#setPhone(java.lang.String)
+ */
+ @Override
+ public void setPhone(String phone) {
+ this.phone = phone;
+ }
+
+
+}
diff --git a/account/src/main/java/com/ning/billing/account/api/user/DefaultAccountUserApi.java b/account/src/main/java/com/ning/billing/account/api/user/DefaultAccountUserApi.java
index 7e7c33e..c1204cf 100644
--- a/account/src/main/java/com/ning/billing/account/api/user/DefaultAccountUserApi.java
+++ b/account/src/main/java/com/ning/billing/account/api/user/DefaultAccountUserApi.java
@@ -26,7 +26,7 @@ import com.ning.billing.account.api.AccountApiException;
import com.ning.billing.account.api.AccountData;
import com.ning.billing.account.api.DefaultAccount;
import com.ning.billing.account.api.MigrationAccountData;
-import com.ning.billing.account.api.MutableAccountData;
+import com.ning.billing.account.api.DefaultMutableAccountData;
import com.ning.billing.account.dao.AccountDao;
import com.ning.billing.util.clock.Clock;
import com.ning.billing.util.customfield.CustomField;
diff --git a/analytics/src/test/java/com/ning/billing/analytics/MockAccount.java b/analytics/src/test/java/com/ning/billing/analytics/MockAccount.java
index f25ec05..ac7ed34 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/MockAccount.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/MockAccount.java
@@ -24,7 +24,7 @@ import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import com.ning.billing.account.api.Account;
-import com.ning.billing.account.api.MutableAccountData;
+import com.ning.billing.account.api.DefaultMutableAccountData;
import com.ning.billing.catalog.api.Currency;
import com.ning.billing.util.customfield.CustomField;
import com.ning.billing.util.tag.Tag;
@@ -220,7 +220,7 @@ public class MockAccount implements Account
}
@Override
- public MutableAccountData toMutableAccountData() {
+ public DefaultMutableAccountData toMutableAccountData() {
throw new NotImplementedException();
}
diff --git a/api/src/main/java/com/ning/billing/account/api/MutableAccountData.java b/api/src/main/java/com/ning/billing/account/api/MutableAccountData.java
index 2909b2d..78dad92 100644
--- a/api/src/main/java/com/ning/billing/account/api/MutableAccountData.java
+++ b/api/src/main/java/com/ning/billing/account/api/MutableAccountData.java
@@ -16,182 +16,78 @@
package com.ning.billing.account.api;
-import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import com.ning.billing.catalog.api.Currency;
-import com.ning.billing.util.tag.TagStore;
-
-public class MutableAccountData implements AccountData {
- private String externalKey;
- private String email;
- private String name;
- private int firstNameLength;
- private Currency currency;
- private int billCycleDay;
- private String paymentProviderName;
- private DateTimeZone timeZone;
- private String locale;
- private String address1;
- private String address2;
- private String companyName;
- private String city;
- private String stateOrProvince;
- private String country;
- private String postalCode;
- private String phone;
-
- public MutableAccountData(String externalKey, String email, String name,
- int firstNameLength, Currency currency, int billCycleDay,
- String paymentProviderName, TagStore tags, DateTimeZone timeZone,
- String locale, String address1, String address2,
- String companyName, String city, String stateOrProvince,
- String country, String postalCode, String phone,
- DateTime createdDate, DateTime updatedDate) {
- super();
- this.externalKey = externalKey;
- this.email = email;
- this.name = name;
- this.firstNameLength = firstNameLength;
- this.currency = currency;
- this.billCycleDay = billCycleDay;
- this.paymentProviderName = paymentProviderName;
- this.timeZone = timeZone;
- this.locale = locale;
- this.address1 = address1;
- this.address2 = address2;
- this.companyName = companyName;
- this.city = city;
- this.stateOrProvince = stateOrProvince;
- this.country = country;
- this.postalCode = postalCode;
- this.phone = phone;
- }
-
- public MutableAccountData(AccountData accountData) {
- super();
- this.externalKey = accountData.getExternalKey();
- this.email = accountData.getEmail();
- this.name = accountData.getName();
- this.firstNameLength = accountData.getFirstNameLength();
- this.currency = accountData.getCurrency();
- this.billCycleDay = accountData.getBillCycleDay();
- this.paymentProviderName = accountData.getPaymentProviderName();
- this.timeZone = accountData.getTimeZone();
- this.locale = accountData.getLocale();
- this.address1 = accountData.getAddress1();
- this.address2 = accountData.getAddress2();
- this.companyName = accountData.getCompanyName();
- this.city = accountData.getCity();
- this.stateOrProvince = accountData.getStateOrProvince();
- this.country = accountData.getCountry();
- this.postalCode = accountData.getPostalCode();
- this.phone = accountData.getPhone();
- }
-
- public String getExternalKey() {
- return externalKey;
- }
- public String getEmail() {
- return email;
- }
- public String getName() {
- return name;
- }
- public int getFirstNameLength() {
- return firstNameLength;
- }
- public Currency getCurrency() {
- return currency;
- }
- public int getBillCycleDay() {
- return billCycleDay;
- }
- public String getPaymentProviderName() {
- return paymentProviderName;
- }
- public DateTimeZone getTimeZone() {
- return timeZone;
- }
- public String getLocale() {
- return locale;
- }
- public String getAddress1() {
- return address1;
- }
- public String getAddress2() {
- return address2;
- }
- public String getCompanyName() {
- return companyName;
- }
- public String getCity() {
- return city;
- }
- public String getStateOrProvince() {
- return stateOrProvince;
- }
- public String getCountry() {
- return country;
- }
- public String getPostalCode() {
- return postalCode;
- }
- public String getPhone() {
- return phone;
- }
-
- public void setExternalKey(String externalKey) {
- this.externalKey = externalKey;
- }
- public void setEmail(String email) {
- this.email = email;
- }
- public void setName(String name) {
- this.name = name;
- }
- public void setFirstNameLength(int firstNameLength) {
- this.firstNameLength = firstNameLength;
- }
- public void setCurrency(Currency currency) {
- this.currency = currency;
- }
- public void setBillCycleDay(int billCycleDay) {
- this.billCycleDay = billCycleDay;
- }
- public void setPaymentProviderName(String paymentProviderName) {
- this.paymentProviderName = paymentProviderName;
- }
- public void setTimeZone(DateTimeZone timeZone) {
- this.timeZone = timeZone;
- }
- public void setLocale(String locale) {
- this.locale = locale;
- }
- public void setAddress1(String address1) {
- this.address1 = address1;
- }
- public void setAddress2(String address2) {
- this.address2 = address2;
- }
- public void setCompanyName(String companyName) {
- this.companyName = companyName;
- }
- public void setCity(String city) {
- this.city = city;
- }
- public void setStateOrProvince(String stateOrProvince) {
- this.stateOrProvince = stateOrProvince;
- }
- public void setCountry(String country) {
- this.country = country;
- }
- public void setPostalCode(String postalCode) {
- this.postalCode = postalCode;
- }
- public void setPhone(String phone) {
- this.phone = phone;
- }
-
-
-}
+
+public interface MutableAccountData extends AccountData {
+
+ public String getExternalKey();
+
+ public String getEmail();
+
+ public String getName();
+
+ public int getFirstNameLength();
+
+ public Currency getCurrency();
+
+ public int getBillCycleDay();
+
+ public String getPaymentProviderName();
+
+ public DateTimeZone getTimeZone();
+
+ public String getLocale();
+
+ public String getAddress1();
+
+ public String getAddress2();
+
+ public String getCompanyName();
+
+ public String getCity();
+
+ public String getStateOrProvince();
+
+ public String getCountry();
+
+ public String getPostalCode();
+
+ public String getPhone();
+
+ public void setExternalKey(String externalKey);
+
+ public void setEmail(String email);
+
+ public void setName(String name);
+
+ public void setFirstNameLength(int firstNameLength);
+
+ public void setCurrency(Currency currency);
+
+ public void setBillCycleDay(int billCycleDay);
+
+ public void setPaymentProviderName(String paymentProviderName);
+
+ public void setTimeZone(DateTimeZone timeZone);
+
+ public void setLocale(String locale);
+
+ public void setAddress1(String address1);
+
+ public void setAddress2(String address2);
+
+ public void setCompanyName(String companyName);
+
+ public void setCity(String city);
+
+ public void setStateOrProvince(String stateOrProvince);
+
+ public void setCountry(String country);
+
+ public void setPostalCode(String postalCode);
+
+ public void setPhone(String phone);
+
+}
\ No newline at end of file
diff --git a/api/src/main/java/com/ning/billing/catalog/api/overdue/PaymentResponse.java b/api/src/main/java/com/ning/billing/catalog/api/overdue/PaymentResponse.java
index 6227e2e..6a03047 100644
--- a/api/src/main/java/com/ning/billing/catalog/api/overdue/PaymentResponse.java
+++ b/api/src/main/java/com/ning/billing/catalog/api/overdue/PaymentResponse.java
@@ -17,9 +17,76 @@
package com.ning.billing.catalog.api.overdue;
public enum PaymentResponse {
- INSUFFICIENT_FUNDS,
- TEMPORARY_ACCOUNT_ISSUE,
- LOST_OR_STOLEN,
- PERMANENT_ACCOUNT_ISSUE,
- OTHER
+ // Card issues
+ INVALID_CARD("The card number, expiry date or cvc is invalid or incorrect"),
+ EXPIRED_CARD("The card has expired"),
+ LOST_OR_STOLEN_CARD("The card has been lost or stolen"),
+
+ // Account issues
+ DO_NOT_HONOR("Do not honor the card - usually a problem with account"),
+ INSUFFICIENT_FUNDS("The account had insufficient funds to fulfil the payment"),
+ DECLINE("Generic payment decline"),
+
+ //Transaction
+ PROCESSING_ERROR("Error processing card"),
+ INVALID_AMOUNT("An invalid amount was entered"),
+ DUPLICATE_TRANSACTION("A transaction with identical amount and credit card information was submitted very recently."),
+
+ //Other
+ OTHER("Some other error");
+
+ private String description;
+
+ private PaymentResponse(String description) {
+ this.description = description;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+// 690118 | Approved
+// 136956 | Do Not Honor
+// 119640 | Insufficient Funds
+// 68514 | Invalid Account Number
+// 66824 | Declined: 10417-The transaction cannot complete successfully. Instruct the customer to use an alternative payment
+// 55473 | Declined: 10201-Agreement was canceled
+// 30930 | Pick Up Card
+// 29857 | Lost/Stolen Card
+// 28197 | Declined
+// 24830 | Declined: 10207-Transaction failed but user has alternate funding source
+// 18445 | Generic Decline
+// 18254 | Expired Card
+// 16521 | Cardholder transaction not permitted
+// 11576 | Restricted Card
+// 7410 | Account Number Does Not Match Payment Type
+// 7312 | Invalid merchant information: 10507-Payer's account is denied
+// 6425 | Invalid Transaction
+// 2825 | Declined: 10204-User's account is closed or restricted
+// 2730 | Invalid account number
+// 1331 |
+// 1240 | Field format error: 10561-There's an error with this transaction. Please enter a complete billing address.
+// 1125 | Cardholder requested that recurring or installment payment be stopped
+// 1060 | No such issuer
+// 1047 | Issuer Unavailable
+// 816 | Not signed up for this tender type
+// 749 | Transaction not allowed at terminal
+// 663 | Invalid expiration date: 0910
+// 548 | Invalid expiration date: 1010
+// 542 | Invalid expiration date:
+// 500 | Invalid expiration date: 0810
+// 492 | Invalid expiration date: 1110
+// 410 | Invalid expiration date: 0710
+// 388 | Exceeds Approval Amount Limit
+// 362 | Generic processor error: 10001-Internal Error
+// 313 | Exceeds per transaction limit: 10553-This transaction cannot be processed.
+// 310 | Decline CVV2/CID Fail
+// 309 | Generic processor error: 10201-Agreement was canceled
+// 278 | Generic processor error: 10417-The transaction cannot complete successfully. Instruct the customer to use an alte
+// 246 | Call Issuer
+// 237 | Generic processor error: 11091-The transaction was blocked as it would exceed the sending limit for this buyer.
+// 202 | Failed to connect to host Input Server Uri = https://payflowpro.paypal.com:443
+// 166 | Exceeds number of PIN entries
+// 150 | Invalid Amount
+
}
diff --git a/api/src/main/java/com/ning/billing/entitlement/api/billing/EntitlementBillingApi.java b/api/src/main/java/com/ning/billing/entitlement/api/billing/EntitlementBillingApi.java
index 6dc3e94..04ca9bb 100644
--- a/api/src/main/java/com/ning/billing/entitlement/api/billing/EntitlementBillingApi.java
+++ b/api/src/main/java/com/ning/billing/entitlement/api/billing/EntitlementBillingApi.java
@@ -32,7 +32,7 @@ public interface EntitlementBillingApi {
* @return an ordered list of billing event for the given accounts
*
*/
- public SortedSet<BillingEvent> getBillingEventsForAccount(UUID accountId);
+ public SortedSet<BillingEvent> getBillingEventsForAccountAndUpdateAccountBCD(UUID accountId);
public UUID getAccountIdFromSubscriptionId(UUID subscriptionId);
diff --git a/api/src/main/java/com/ning/billing/util/tag/ControlTagType.java b/api/src/main/java/com/ning/billing/util/tag/ControlTagType.java
index 902f4a1..ea09e84 100644
--- a/api/src/main/java/com/ning/billing/util/tag/ControlTagType.java
+++ b/api/src/main/java/com/ning/billing/util/tag/ControlTagType.java
@@ -18,7 +18,8 @@ package com.ning.billing.util.tag;
public enum ControlTagType {
AUTO_PAY_OFF("Suspends payments until removed.", true, false),
- AUTO_INVOICING_OFF("Suspends invoicing until removed.", false, true);
+ AUTO_INVOICING_OFF("Suspends invoicing until removed.", false, true),
+ OVERDUE_ENFORCEMENT_OFF("Suspends overdue enforcement behaviour until removed.", false, false);;
private final String description;
private final boolean autoPaymentOff;
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegration.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegration.java
index 8b4cd27..38ee4bf 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegration.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegration.java
@@ -622,7 +622,7 @@ public class TestIntegration {
assertTrue(busHandler.isCompleted(DELAY));
invoices = invoiceUserApi.getInvoicesByAccount(accountId);
assertNotNull(invoices);
- assertTrue(invoices.size() == 2);
+ assertEquals(invoices.size(),2);
busHandler.pushExpectedEvent(NextEvent.PHASE);
busHandler.pushExpectedEvent(NextEvent.INVOICE);
@@ -631,7 +631,7 @@ public class TestIntegration {
assertTrue(busHandler.isCompleted(DELAY));
invoices = invoiceUserApi.getInvoicesByAccount(accountId);
assertNotNull(invoices);
- assertTrue(invoices.size() == 3);
+ assertEquals(invoices.size(),3);
}
protected AccountData getAccountData(final int billingDay) {
diff --git a/catalog/src/test/java/com/ning/billing/catalog/overdue/TestBundleCondition.java b/catalog/src/test/java/com/ning/billing/catalog/overdue/TestBundleCondition.java
index ec2547a..823112e 100644
--- a/catalog/src/test/java/com/ning/billing/catalog/overdue/TestBundleCondition.java
+++ b/catalog/src/test/java/com/ning/billing/catalog/overdue/TestBundleCondition.java
@@ -59,11 +59,11 @@ public class TestBundleCondition {
DateTime now = new DateTime();
- BillingState accountState0 = new BillingState(new UUID(0L,1L), 0, BigDecimal.ZERO, now, PaymentResponse.LOST_OR_STOLEN, new Tag[]{new DefaultControlTag("Martin", now, ControlTagType.AUTO_INVOICING_OFF),new DescriptiveTag(null, "Tag", "Martin", now)});
- BillingState accountState1 = new BillingState(new UUID(0L,1L), 1, new BigDecimal("100.00"), now.minusDays(10), PaymentResponse.INSUFFICIENT_FUNDS, new Tag[]{new DefaultControlTag("Martin", now, ControlTagType.AUTO_PAY_OFF)});
+ BillingState accountState0 = new BillingState(new UUID(0L,1L), 0, BigDecimal.ZERO, now, PaymentResponse.LOST_OR_STOLEN_CARD, new Tag[]{new DefaultControlTag("Martin", now, ControlTagType.AUTO_INVOICING_OFF),new DescriptiveTag(null, "Tag", "Martin", now)});
+ BillingState accountState1 = new BillingState(new UUID(0L,1L), 1, new BigDecimal("100.00"), now.minusDays(10), PaymentResponse.INSUFFICIENT_FUNDS, new Tag[]{new DefaultControlTag("Martin", now, ControlTagType.OVERDUE_ENFORCEMENT_OFF)});
BillingState accountState2 = new BillingState(new UUID(0L,1L), 1, new BigDecimal("200.00"), now.minusDays(20),
- PaymentResponse.TEMPORARY_ACCOUNT_ISSUE,
- new Tag[]{new DefaultControlTag("Martin", now, ControlTagType.AUTO_PAY_OFF),
+ PaymentResponse.DO_NOT_HONOR,
+ new Tag[]{new DefaultControlTag("Martin", now, ControlTagType.OVERDUE_ENFORCEMENT_OFF),
new DefaultControlTag("Martin", now, ControlTagType.AUTO_INVOICING_OFF),
new DescriptiveTag(null, "Tag", "Martin", now)});
@@ -83,8 +83,8 @@ public class TestBundleCondition {
DateTime now = new DateTime();
- BillingState accountState0 = new BillingState(new UUID(0L,1L), 0, BigDecimal.ZERO, now, PaymentResponse.LOST_OR_STOLEN, new Tag[]{new DefaultControlTag("Martin", now, ControlTagType.AUTO_INVOICING_OFF),new DescriptiveTag(null, "Tag", "Martin", now)});
- BillingState accountState1 = new BillingState(new UUID(0L,1L), 1, new BigDecimal("100.00"), now.minusDays(10), PaymentResponse.INSUFFICIENT_FUNDS, new Tag[]{new DefaultControlTag("Martin", now, ControlTagType.AUTO_PAY_OFF)});
+ BillingState accountState0 = new BillingState(new UUID(0L,1L), 0, BigDecimal.ZERO, now, PaymentResponse.LOST_OR_STOLEN_CARD, new Tag[]{new DefaultControlTag("Martin", now, ControlTagType.AUTO_INVOICING_OFF),new DescriptiveTag(null, "Tag", "Martin", now)});
+ BillingState accountState1 = new BillingState(new UUID(0L,1L), 1, new BigDecimal("100.00"), now.minusDays(10), PaymentResponse.INSUFFICIENT_FUNDS, new Tag[]{new DefaultControlTag("Martin", now, ControlTagType.OVERDUE_ENFORCEMENT_OFF)});
BillingStateBundle state0 = new BillingStateBundle(new UUID(0L,1L), accountState0, 0, BigDecimal.ZERO, new DateTime(), PaymentResponse.INSUFFICIENT_FUNDS, new Tag[]{}, MockProduct.createJet(), BillingPeriod.MONTHLY, new MockPriceList() );
BillingStateBundle state1 = new BillingStateBundle(new UUID(0L,1L), accountState1, 0, BigDecimal.ZERO, new DateTime(), PaymentResponse.INSUFFICIENT_FUNDS, new Tag[]{}, prod, BillingPeriod.MONTHLY, new MockPriceList() );
@@ -100,8 +100,8 @@ public class TestBundleCondition {
DateTime now = new DateTime();
- BillingState accountState0 = new BillingState(new UUID(0L,1L), 0, BigDecimal.ZERO, now, PaymentResponse.LOST_OR_STOLEN, new Tag[]{new DefaultControlTag("Martin", now, ControlTagType.AUTO_INVOICING_OFF),new DescriptiveTag(null, "Tag", "Martin", now)});
- BillingState accountState1 = new BillingState(new UUID(0L,1L), 1, new BigDecimal("100.00"), now.minusDays(10), PaymentResponse.INSUFFICIENT_FUNDS, new Tag[]{new DefaultControlTag("Martin", now, ControlTagType.AUTO_PAY_OFF)});
+ BillingState accountState0 = new BillingState(new UUID(0L,1L), 0, BigDecimal.ZERO, now, PaymentResponse.LOST_OR_STOLEN_CARD, new Tag[]{new DefaultControlTag("Martin", now, ControlTagType.AUTO_INVOICING_OFF),new DescriptiveTag(null, "Tag", "Martin", now)});
+ BillingState accountState1 = new BillingState(new UUID(0L,1L), 1, new BigDecimal("100.00"), now.minusDays(10), PaymentResponse.INSUFFICIENT_FUNDS, new Tag[]{new DefaultControlTag("Martin", now, ControlTagType.OVERDUE_ENFORCEMENT_OFF)});
BillingStateBundle state0 = new BillingStateBundle(new UUID(0L,1L), accountState0, 0, BigDecimal.ZERO, new DateTime(), PaymentResponse.INSUFFICIENT_FUNDS, new Tag[]{}, MockProduct.createJet(), BillingPeriod.MONTHLY, new MockPriceList() );
BillingStateBundle state1 = new BillingStateBundle(new UUID(0L,1L), accountState1, 0, BigDecimal.ZERO, new DateTime(), PaymentResponse.INSUFFICIENT_FUNDS, new Tag[]{}, MockProduct.createJet(), BillingPeriod.ANNUAL, new MockPriceList() );
@@ -117,8 +117,8 @@ public class TestBundleCondition {
DateTime now = new DateTime();
- BillingState accountState0 = new BillingState(new UUID(0L,1L), 0, BigDecimal.ZERO, now, PaymentResponse.LOST_OR_STOLEN, new Tag[]{new DefaultControlTag("Martin", now, ControlTagType.AUTO_INVOICING_OFF),new DescriptiveTag(null, "Tag", "Martin", now)});
- BillingState accountState1 = new BillingState(new UUID(0L,1L), 1, new BigDecimal("100.00"), now.minusDays(10), PaymentResponse.INSUFFICIENT_FUNDS, new Tag[]{new DefaultControlTag("Martin", now, ControlTagType.AUTO_PAY_OFF)});
+ BillingState accountState0 = new BillingState(new UUID(0L,1L), 0, BigDecimal.ZERO, now, PaymentResponse.LOST_OR_STOLEN_CARD, new Tag[]{new DefaultControlTag("Martin", now, ControlTagType.AUTO_INVOICING_OFF),new DescriptiveTag(null, "Tag", "Martin", now)});
+ BillingState accountState1 = new BillingState(new UUID(0L,1L), 1, new BigDecimal("100.00"), now.minusDays(10), PaymentResponse.INSUFFICIENT_FUNDS, new Tag[]{new DefaultControlTag("Martin", now, ControlTagType.OVERDUE_ENFORCEMENT_OFF)});
BillingStateBundle state0 = new BillingStateBundle(new UUID(0L,1L), accountState0, 0, BigDecimal.ZERO, new DateTime(), PaymentResponse.INSUFFICIENT_FUNDS, new Tag[]{}, MockProduct.createJet(), BillingPeriod.MONTHLY, new MockPriceList() );
BillingStateBundle state1 = new BillingStateBundle(new UUID(0L,1L), accountState1, 0, BigDecimal.ZERO, new DateTime(), PaymentResponse.INSUFFICIENT_FUNDS, new Tag[]{}, MockProduct.createJet(), BillingPeriod.MONTHLY, pl );
@@ -126,8 +126,6 @@ public class TestBundleCondition {
Assert.assertTrue(!c.evaluate(state0, new DateTime()));
Assert.assertTrue(c.evaluate(state1, new DateTime()));
}
-
- //MDW TODO: test Pricelist and billing period
diff --git a/catalog/src/test/java/com/ning/billing/catalog/overdue/TestCondition.java b/catalog/src/test/java/com/ning/billing/catalog/overdue/TestCondition.java
index b1105e6..79dad9f 100644
--- a/catalog/src/test/java/com/ning/billing/catalog/overdue/TestCondition.java
+++ b/catalog/src/test/java/com/ning/billing/catalog/overdue/TestCondition.java
@@ -101,16 +101,16 @@ public class TestCondition {
public void testResponseForLastFailedPaymentIn() throws Exception {
String xml =
"<condition>" +
- " <responseForLastFailedPaymentIn><response>INSUFFICIENT_FUNDS</response><response>TEMPORARY_ACCOUNT_ISSUE</response></responseForLastFailedPaymentIn>" +
+ " <responseForLastFailedPaymentIn><response>INSUFFICIENT_FUNDS</response><response>DO_NOT_HONOR</response></responseForLastFailedPaymentIn>" +
"</condition>";
InputStream is = new ByteArrayInputStream(xml.getBytes());
MockCondition c = XMLLoader.getObjectFromStreamNoValidation(is, MockCondition.class);
DateTime now = new DateTime();
- BillingState state0 = new BillingState(new UUID(0L,1L), 0, BigDecimal.ZERO, now, PaymentResponse.LOST_OR_STOLEN, new Tag[]{});
+ BillingState state0 = new BillingState(new UUID(0L,1L), 0, BigDecimal.ZERO, now, PaymentResponse.LOST_OR_STOLEN_CARD, new Tag[]{});
BillingState state1 = new BillingState(new UUID(0L,1L), 1, new BigDecimal("100.00"), now.minusDays(10), PaymentResponse.INSUFFICIENT_FUNDS, new Tag[]{});
- BillingState state2 = new BillingState(new UUID(0L,1L), 1, new BigDecimal("200.00"), now.minusDays(20), PaymentResponse.TEMPORARY_ACCOUNT_ISSUE, new Tag[]{});
+ BillingState state2 = new BillingState(new UUID(0L,1L), 1, new BigDecimal("200.00"), now.minusDays(20), PaymentResponse.DO_NOT_HONOR , new Tag[]{});
Assert.assertTrue(!c.evaluate(state0, now));
Assert.assertTrue(c.evaluate(state1, now));
@@ -128,11 +128,11 @@ public class TestCondition {
DateTime now = new DateTime();
- BillingState state0 = new BillingState(new UUID(0L,1L), 0, BigDecimal.ZERO, now, PaymentResponse.LOST_OR_STOLEN, new Tag[]{new DefaultControlTag("Martin", now, ControlTagType.AUTO_INVOICING_OFF),new DescriptiveTag(null, "Tag", "Martin", now)});
- BillingState state1 = new BillingState(new UUID(0L,1L), 1, new BigDecimal("100.00"), now.minusDays(10), PaymentResponse.INSUFFICIENT_FUNDS, new Tag[]{new DefaultControlTag("Martin", now, ControlTagType.AUTO_PAY_OFF)});
+ BillingState state0 = new BillingState(new UUID(0L,1L), 0, BigDecimal.ZERO, now, PaymentResponse.LOST_OR_STOLEN_CARD, new Tag[]{new DefaultControlTag("Martin", now, ControlTagType.AUTO_INVOICING_OFF),new DescriptiveTag(null, "Tag", "Martin", now)});
+ BillingState state1 = new BillingState(new UUID(0L,1L), 1, new BigDecimal("100.00"), now.minusDays(10), PaymentResponse.INSUFFICIENT_FUNDS, new Tag[]{new DefaultControlTag("Martin", now, ControlTagType.OVERDUE_ENFORCEMENT_OFF)});
BillingState state2 = new BillingState(new UUID(0L,1L), 1, new BigDecimal("200.00"), now.minusDays(20),
- PaymentResponse.TEMPORARY_ACCOUNT_ISSUE,
- new Tag[]{new DefaultControlTag("Martin", now, ControlTagType.AUTO_PAY_OFF),
+ PaymentResponse.DO_NOT_HONOR,
+ new Tag[]{new DefaultControlTag("Martin", now, ControlTagType.OVERDUE_ENFORCEMENT_OFF),
new DefaultControlTag("Martin", now, ControlTagType.AUTO_INVOICING_OFF),
new DescriptiveTag(null, "Tag", "Martin", now)});
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/billing/DefaultEntitlementBillingApi.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/billing/DefaultEntitlementBillingApi.java
index 4856798..d969434 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/billing/DefaultEntitlementBillingApi.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/billing/DefaultEntitlementBillingApi.java
@@ -56,7 +56,7 @@ public class DefaultEntitlementBillingApi implements EntitlementBillingApi {
}
@Override
- public SortedSet<BillingEvent> getBillingEventsForAccount(
+ public SortedSet<BillingEvent> getBillingEventsForAccountAndUpdateAccountBCD(
final UUID accountId) {
List<SubscriptionBundle> bundles = entitlementDao.getSubscriptionBundleForAccount(accountId);
@@ -70,10 +70,12 @@ public class DefaultEntitlementBillingApi implements EntitlementBillingApi {
Account account = accountApi.getAccountById(accountId);
int bcd = bcdCalculator.calculateBcd(bundle, subscription, transition, account);
- MutableAccountData modifiedData = account.toMutableAccountData();
- modifiedData.setBillCycleDay(bcd);
-
- accountApi.updateAccount(account.getExternalKey(), modifiedData);
+ if(account.getBillCycleDay() == 0) {
+ MutableAccountData modifiedData = account.toMutableAccountData();
+ modifiedData.setBillCycleDay(bcd);
+ accountApi.updateAccount(account.getExternalKey(), modifiedData);
+ }
+
BillingEvent event = new DefaultBillingEvent(transition, subscription, bcd, account.getCurrency());
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/api/billing/TestDefaultEntitlementBillingApi.java b/entitlement/src/test/java/com/ning/billing/entitlement/api/billing/TestDefaultEntitlementBillingApi.java
index 1c65d28..c5868b3 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/api/billing/TestDefaultEntitlementBillingApi.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/api/billing/TestDefaultEntitlementBillingApi.java
@@ -135,7 +135,7 @@ public class TestDefaultEntitlementBillingApi {
BillCycleDayCalculator bcdCalculator = new BillCycleDayCalculator(catalogService);
DefaultEntitlementBillingApi api = new DefaultEntitlementBillingApi(dao,bcdCalculator, accountApi);
- SortedSet<BillingEvent> events = api.getBillingEventsForAccount(new UUID(0L,0L));
+ SortedSet<BillingEvent> events = api.getBillingEventsForAccountAndUpdateAccountBCD(new UUID(0L,0L));
Assert.assertEquals(events.size(), 0);
}
@@ -159,7 +159,7 @@ public class TestDefaultEntitlementBillingApi {
BillCycleDayCalculator bcdCalculator = new BillCycleDayCalculator(catalogService);
DefaultEntitlementBillingApi api = new DefaultEntitlementBillingApi(dao,bcdCalculator, accountApi);
- SortedSet<BillingEvent> events = api.getBillingEventsForAccount(new UUID(0L,0L));
+ SortedSet<BillingEvent> events = api.getBillingEventsForAccountAndUpdateAccountBCD(new UUID(0L,0L));
checkFirstEvent(events, nextPlan, 32, oneId, now, nextPhase, ApiEventType.CREATE.toString());
}
@@ -184,7 +184,7 @@ public class TestDefaultEntitlementBillingApi {
BillCycleDayCalculator bcdCalculator = new BillCycleDayCalculator(catalogService);
DefaultEntitlementBillingApi api = new DefaultEntitlementBillingApi(dao,bcdCalculator, accountApi);
- SortedSet<BillingEvent> events = api.getBillingEventsForAccount(new UUID(0L,0L));
+ SortedSet<BillingEvent> events = api.getBillingEventsForAccountAndUpdateAccountBCD(new UUID(0L,0L));
checkFirstEvent(events, nextPlan, subscription.getStartDate().getDayOfMonth(), oneId, now, nextPhase, ApiEventType.CREATE.toString());
}
@@ -207,7 +207,7 @@ public class TestDefaultEntitlementBillingApi {
BillCycleDayCalculator bcdCalculator = new BillCycleDayCalculator(catalogService);
DefaultEntitlementBillingApi api = new DefaultEntitlementBillingApi(dao,bcdCalculator, accountApi);
- SortedSet<BillingEvent> events = api.getBillingEventsForAccount(new UUID(0L,0L));
+ SortedSet<BillingEvent> events = api.getBillingEventsForAccountAndUpdateAccountBCD(new UUID(0L,0L));
checkFirstEvent(events, nextPlan, 32, oneId, now, nextPhase, ApiEventType.CREATE.toString());
}
@@ -230,7 +230,7 @@ public class TestDefaultEntitlementBillingApi {
((ZombieControl)accountApi).addResult("getAccountById", account);
BillCycleDayCalculator bcdCalculator = new BillCycleDayCalculator(catalogService);
DefaultEntitlementBillingApi api = new DefaultEntitlementBillingApi(dao,bcdCalculator, accountApi);
- SortedSet<BillingEvent> events = api.getBillingEventsForAccount(new UUID(0L,0L));
+ SortedSet<BillingEvent> events = api.getBillingEventsForAccountAndUpdateAccountBCD(new UUID(0L,0L));
checkFirstEvent(events, nextPlan, bundles.get(0).getStartDate().getDayOfMonth(), oneId, now, nextPhase, ApiEventType.CREATE.toString());
}
diff --git a/invoice/src/main/java/com/ning/billing/invoice/InvoiceDispatcher.java b/invoice/src/main/java/com/ning/billing/invoice/InvoiceDispatcher.java
index c4a3b6a..04a55ca 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/InvoiceDispatcher.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/InvoiceDispatcher.java
@@ -123,7 +123,7 @@ public class InvoiceDispatcher {
return null;
}
- SortedSet<BillingEvent> events = entitlementBillingApi.getBillingEventsForAccount(accountId);
+ SortedSet<BillingEvent> events = entitlementBillingApi.getBillingEventsForAccountAndUpdateAccountBCD(accountId);
BillingEventSet billingEvents = new BillingEventSet(events);
Currency targetCurrency = account.getCurrency();