diff options
author | Bjørn Christian Seime <bjorn.christian@seime.no> | 2023-10-30 16:55:23 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-30 16:55:23 +0100 |
commit | 6143829e6383f66a09b3292716ddfaff37d66ab2 (patch) | |
tree | e9cb7be64d956ac074abef31da93c571367060e5 /controller-server/src/main/java | |
parent | caa21cf51b78a5426e8a137d7376eea76f59f07d (diff) | |
parent | 6a3584d8b799bc815ec339aa2038dccc8a415f1a (diff) |
Merge pull request #29158 from vespa-engine/bjorncs/taxid-country
Bjorncs/taxid country
Diffstat (limited to 'controller-server/src/main/java')
3 files changed, 11 insertions, 7 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializer.java index 85b7acd603a..7801efe504b 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializer.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializer.java @@ -96,6 +96,7 @@ public class TenantSerializer { private static final String accountField = "account"; private static final String templateVersionField = "templateVersion"; private static final String taxIdField = "taxId"; + private static final String taxIdCountryField = "country"; private static final String taxIdTypeField = "type"; private static final String taxIdCodeField = "code"; private static final String purchaseOrderField = "purchaseOrder"; @@ -293,9 +294,10 @@ public class TenantSerializer { var taxId = switch (taxIdInspector.type()) { case STRING -> TaxId.legacy(taxIdInspector.asString()); case OBJECT -> { + var taxIdCountry = taxIdInspector.field(taxIdCountryField).asString(); var taxIdType = taxIdInspector.field(taxIdTypeField).asString(); var taxIdCode = taxIdInspector.field(taxIdCodeField).asString(); - yield new TaxId(new TaxId.Type(taxIdType), new TaxId.Code(taxIdCode)); + yield new TaxId(new TaxId.Country(taxIdCountry), new TaxId.Type(taxIdType), new TaxId.Code(taxIdCode)); } case NIX -> TaxId.empty(); default -> throw new IllegalStateException(taxIdInspector.type().name()); @@ -374,6 +376,7 @@ public class TenantSerializer { billingCursor.setBool("emailVerified", billingContact.contact().email().isVerified()); billingCursor.setString("phone", billingContact.contact().phone()); var taxIdCursor = billingCursor.setObject(taxIdField); + taxIdCursor.setString(taxIdCountryField, billingContact.getTaxId().country().value()); taxIdCursor.setString(taxIdTypeField, billingContact.getTaxId().type().value()); taxIdCursor.setString(taxIdCodeField, billingContact.getTaxId().code().value()); billingCursor.setString(purchaseOrderField, billingContact.getPurchaseOrder().value()); diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java index 078c27f5d00..1fd8e7c8f3b 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiHandler.java @@ -697,6 +697,7 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler { contact.setBool("emailVerified", billingContact.contact().email().isVerified()); contact.setString("phone", billingContact.contact().phone()); var taxIdCursor = root.setObject("taxId"); + taxIdCursor.setString("country", billingContact.getTaxId().country().value()); taxIdCursor.setString("type", billingContact.getTaxId().type().value()); taxIdCursor.setString("code", billingContact.getTaxId().code().value()); root.setString("purchaseOrder", billingContact.getPurchaseOrder().value()); @@ -720,10 +721,6 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler { var mergedPurchaseOrder = optional("purchaseOrder", inspector).map(PurchaseOrder::new).orElse(billing.getPurchaseOrder()); var mergedInvoiceEmail = optional("invoiceEmail", inspector).map(mail -> new Email(mail, false)).orElse(billing.getInvoiceEmail()); - if (!inspector.field("taxId").valid() && inspector.field("address").valid()) { - throw new IllegalArgumentException("Tax ID information is mandatory for setting up billing"); - } - var mergedBilling = info.billingContact() .withContact(mergedContact) .withAddress(mergedAddress) @@ -809,6 +806,7 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler { billingCursor.setBool("emailVerified", billingContact.contact().email().isVerified()); billingCursor.setString("phone", billingContact.contact().phone()); var taxIdCursor = billingCursor.setObject("taxId"); + taxIdCursor.setString("country", billingContact.getTaxId().country().value()); taxIdCursor.setString("type", billingContact.getTaxId().type().value()); taxIdCursor.setString("code", billingContact.getTaxId().code().value()); billingCursor.setString("purchaseOrder", billingContact.getPurchaseOrder().value()); @@ -924,8 +922,10 @@ public class ApplicationApiHandler extends AuditLoggingRequestHandler { private TaxId updateAndValidateTaxId(Inspector insp, TaxId old) { if (!insp.valid()) return old; - var taxId = new TaxId(getString(insp.field("type"), old.type().value()), - getString(insp.field("code"), old.code().value())); + var taxId = new TaxId( + getString(insp.field("country"), old.country().value()), + getString(insp.field("type"), old.type().value()), + getString(insp.field("code"), old.code().value())); controller.serviceRegistry().billingController().validateTaxId(taxId); return taxId; } diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/billing/BillingApiHandlerV2.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/billing/BillingApiHandlerV2.java index b4237a46c5a..93c13e6ed4c 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/billing/BillingApiHandlerV2.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/billing/BillingApiHandlerV2.java @@ -131,6 +131,7 @@ public class BillingApiHandlerV2 extends RestApiRequestHandler<BillingApiHandler var countryCursor = countries.addObject(); countryCursor.setString("code", country.code()); countryCursor.setString("name", country.displayName()); + countryCursor.setBool("taxIdMandatory", country.taxIdMandatory()); var taxTypesCursors = countryCursor.setArray("taxTypes"); country.taxTypes().forEach(taxType -> { var taxTypeCursor = taxTypesCursors.addObject(); |