From 8b6c5e37aff416b59f4182f901328479d543a71e Mon Sep 17 00:00:00 2001 From: Bjørn Christian Seime Date: Mon, 30 Oct 2023 15:30:10 +0100 Subject: Add country to tax id definition --- .../vespa/hosted/controller/persistence/TenantSerializerTest.java | 2 +- .../controller/restapi/application/ApplicationApiCloudTest.java | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) (limited to 'controller-server/src/test/java') diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializerTest.java index cfc3320b083..f2fc43933df 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializerTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/TenantSerializerTest.java @@ -238,7 +238,7 @@ public class TenantSerializerTest { .withAddress("Central Station") .withRegion("Irish Sea")) .withPurchaseOrder(new PurchaseOrder("PO42")) - .withTaxId(new TaxId("no_vat", "123456789MVA")) + .withTaxId(new TaxId("NO", "no_vat", "123456789MVA")) .withInvoiceEmail(new Email("billing@mycomp.any", false)) ); diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiCloudTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiCloudTest.java index 1ad88675169..f8ae7c8ea50 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiCloudTest.java +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiCloudTest.java @@ -107,6 +107,7 @@ public class ApplicationApiCloudTest extends ControllerContainerCloudTest { "phone":"" }, "taxId": { + "country": "", "type": "", "code": "" }, @@ -125,7 +126,7 @@ public class ApplicationApiCloudTest extends ControllerContainerCloudTest { "email":"foo@example", "phone":"phone" }, - "taxId":{"type": "no_vat", "code": "123456789MVA"}, + "taxId":{"country": "NO", "type": "no_vat", "code": "123456789MVA"}, "purchaseOrder":"PO9001", "invoiceEmail":"billing@mycomp.any", "address": { @@ -151,6 +152,7 @@ public class ApplicationApiCloudTest extends ControllerContainerCloudTest { "phone":"phone" }, "taxId": { + "country": "NO", "type": "no_vat", "code": "123456789MVA" }, @@ -238,6 +240,7 @@ public class ApplicationApiCloudTest extends ControllerContainerCloudTest { "email":"","emailVerified":false, "phone":"", "taxId": { + "country": "", "type": "", "code": "" }, @@ -272,6 +275,7 @@ public class ApplicationApiCloudTest extends ControllerContainerCloudTest { "emailVerified":false, "phone":"phone", "taxId": { + "country": "", "type": "", "code": "" }, -- cgit v1.2.3 From 6a3584d8b799bc815ec339aa2038dccc8a415f1a Mon Sep 17 00:00:00 2001 From: Bjørn Christian Seime Date: Mon, 30 Oct 2023 15:58:22 +0100 Subject: Make tax id optional for some countries --- .../hosted/controller/api/integration/billing/AcceptedCountries.java | 2 +- .../controller/api/integration/billing/MockBillingController.java | 4 ++-- .../hosted/controller/restapi/application/ApplicationApiHandler.java | 4 ---- .../vespa/hosted/controller/restapi/billing/BillingApiHandlerV2.java | 1 + .../controller/restapi/billing/responses/accepted-countries.json | 2 ++ 5 files changed, 6 insertions(+), 7 deletions(-) (limited to 'controller-server/src/test/java') diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/AcceptedCountries.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/AcceptedCountries.java index c665b4fb7c2..082eaac7315 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/AcceptedCountries.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/AcceptedCountries.java @@ -13,7 +13,7 @@ public record AcceptedCountries(List countries) { countries = List.copyOf(countries); } - public record Country(String code, String displayName, List taxTypes) { + public record Country(String code, String displayName, boolean taxIdMandatory, List taxTypes) { public Country { taxTypes = List.copyOf(taxTypes); } diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/MockBillingController.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/MockBillingController.java index 92a84ad9918..9012b45748c 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/MockBillingController.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/MockBillingController.java @@ -210,10 +210,10 @@ public class MockBillingController implements BillingController { public AcceptedCountries getAcceptedCountries() { return new AcceptedCountries(List.of( new AcceptedCountries.Country( - "NO", "Norway", + "NO", "Norway", true, List.of(new AcceptedCountries.TaxType("no_vat", "Norwegian VAT number", "[0-9]{9}MVA", "123456789MVA"))), new AcceptedCountries.Country( - "CA", "Canada", + "CA", "Canada", true, List.of(new AcceptedCountries.TaxType("ca_gst_hst", "Canadian GST/HST number", "([0-9]{9}) ?RT ?([0-9]{4})", "123456789RT0002"), new AcceptedCountries.TaxType("ca_pst_bc", "Canadian PST number (British Columbia)", "PST-?([0-9]{4})-?([0-9]{4})", "PST-1234-5678"))) )); 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 fa32d61675c..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 @@ -721,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) 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 { var taxTypeCursor = taxTypesCursors.addObject(); diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/billing/responses/accepted-countries.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/billing/responses/accepted-countries.json index 2714de1e64d..5247b84a900 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/billing/responses/accepted-countries.json +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/billing/responses/accepted-countries.json @@ -3,6 +3,7 @@ { "code": "NO", "name": "Norway", + "taxIdMandatory": true, "taxTypes": [ { "id": "no_vat", @@ -15,6 +16,7 @@ { "code": "CA", "name": "Canada", + "taxIdMandatory": true, "taxTypes": [ { "id": "ca_gst_hst", -- cgit v1.2.3