diff options
| -rw-r--r-- | TODO | 2 | ||||
| -rw-r--r-- | include/administration.hpp | 18 | ||||
| -rw-r--r-- | include/countries.hpp | 19 | ||||
| -rw-r--r-- | manual/02_countries.md | 7 | ||||
| -rw-r--r-- | manual/Doxyfile | 3 | ||||
| -rw-r--r-- | manual/OpenBooks_Manual.pdf | bin | 128283 -> 132192 bytes | |||
| -rw-r--r-- | run.bat | 2 | ||||
| -rw-r--r-- | src/administration.cpp | 179 | ||||
| -rw-r--r-- | src/countries.cpp | 8 | ||||
| -rw-r--r-- | src/countries/nl.cpp | 382 | ||||
| -rw-r--r-- | src/locales/en.cpp | 344 | ||||
| -rw-r--r-- | src/ui/ui_settings.cpp | 210 |
12 files changed, 810 insertions, 364 deletions
@@ -5,9 +5,11 @@ Refactor: - refactor _add functions to use _import functions - replace strncpy and similar with strops functions - There is alot of memory leakage +- remove category_code from tax rate and get it from internal code as it has nothing to do with our administration. Testing: - write tests for all NL tax categories +- write test to make sure all tax rates are unique per country. - write tests for strops.hpp - write tests that check error handling for corrupt files. (e.g. references to tax rates, project and cost center that failed to load) - it is possible a referenced tax rate is loaded after an invoice is loaded. This means all invoices need to be recalculated after file load. (try to write a test for this). diff --git a/include/administration.hpp b/include/administration.hpp index 5053d7e..151df2a 100644 --- a/include/administration.hpp +++ b/include/administration.hpp @@ -46,12 +46,28 @@ #define MY_COMPANY_ID "C/1" +typedef enum +{ + TAX_RATE_OUTGOING_INVOICE, + TAX_RATE_INCOMMING_INVOICE, + + TAX_RATE_TYPE_END, +} tax_rate_type; + +#define MAX_TAX_SECTION_PER_RATE 3 typedef struct { char id[MAX_LEN_ID]; // T/[id] - char country_code[MAX_LEN_COUNTRY_CODE]; // 2 letter country code + char internal_code[MAX_LEN_SHORT_DESC]; float rate; // 0-100% + u32 tax_section_count; + char tax_sections[MAX_TAX_SECTION_PER_RATE][MAX_LEN_SHORT_DESC]; // Country specific tax section + tax_rate_type type; + + // depricated: + char tax_section[MAX_LEN_SHORT_DESC]; char category_code[MAX_LEN_CODE]; // Category code. https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL5305/ + char country_code[MAX_LEN_COUNTRY_CODE]; // 2 letter country code } tax_rate; typedef struct diff --git a/include/countries.hpp b/include/countries.hpp index 8b4bb88..68b6fa0 100644 --- a/include/countries.hpp +++ b/include/countries.hpp @@ -20,13 +20,14 @@ typedef struct { - char* country_code; - bool is_EU; - time_t (*get_default_invoice_expire_duration)(); - void (*fill_tax_report_with_categories)(tax_report* report); - bool (*add_billing_item_to_tax_report)(tax_report* report, invoice* inv, billing_item* item); - float (*calculate_tax_report_final)(tax_report* report); - time_t (*get_invoice_date_to_use_for_tax_report)(invoice* inv); + char* country_code; + bool is_EU; + time_t (*get_default_invoice_expire_duration)(); + void (*fill_tax_report_with_categories)(tax_report* report); + bool (*add_billing_item_to_tax_report)(tax_report* report, invoice* inv, billing_item* item); + float (*calculate_tax_report_final)(tax_report* report); + time_t (*get_invoice_date_to_use_for_tax_report)(invoice* inv); + u32 (*get_available_tax_rates)(tax_rate* buffer, u32 buffer_size); } country_impl; namespace country { @@ -41,6 +42,6 @@ namespace country { void fill_tax_report_with_categories(char* country_code, tax_report* report); bool add_billing_item_to_tax_report(char* country_code, tax_report* report, invoice* inv, billing_item* item); float calculate_tax_report_final(char* country_code, tax_report* report); - time_t get_invoice_date_to_use_for_tax_report(char* country_code, invoice* inv); - + time_t get_invoice_date_to_use_for_tax_report(char* country_code, invoice* inv); + u32 get_available_tax_rates(char* country_code, tax_rate* buffer, u32 buffer_size); }
\ No newline at end of file diff --git a/manual/02_countries.md b/manual/02_countries.md index 33ccb8f..a8d03dc 100644 --- a/manual/02_countries.md +++ b/manual/02_countries.md @@ -2,7 +2,10 @@ This section lists all supported countries. If the country you operate from is not listed below, some reporting requirements might not be handled by OpenBooks. **Invoicing**: -The Netherlands +[The Netherlands](\ref page_the_netherlands) **Tax reporting**: -The Netherlands (for invoices after 1 January 2020)
\ No newline at end of file +The Netherlands (for invoices after 1 January 2020) + +**Peppol E-Invoicing**: +-
\ No newline at end of file diff --git a/manual/Doxyfile b/manual/Doxyfile index 5103bc8..085925f 100644 --- a/manual/Doxyfile +++ b/manual/Doxyfile @@ -991,7 +991,7 @@ WARN_LOGFILE = # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. -INPUT = ../manual ../include +INPUT = ../manual ../include ../src/countries # This tag can be used to specify the character encoding of the source files # that Doxygen parses. Internally Doxygen uses the UTF-8 encoding. Doxygen uses @@ -1050,6 +1050,7 @@ FILE_PATTERNS = *.cc \ *.h \ *.hh \ *.hxx \ + *.cpp \ *.hpp \ *.h++ \ *.l \ diff --git a/manual/OpenBooks_Manual.pdf b/manual/OpenBooks_Manual.pdf Binary files differindex 1fef2aa..aa03e79 100644 --- a/manual/OpenBooks_Manual.pdf +++ b/manual/OpenBooks_Manual.pdf @@ -40,7 +40,7 @@ set LIB_SOURCES=libs\imgui-1.92.1\backends\imgui_impl_dx11.cpp^ libs\tinyfiledialogs\tinyfiledialogs.c @set SOURCES= src\*.cpp src\ui\*.cpp src\locales\*.cpp src\ai_providers\*.cpp @set LIBS=opengl32.lib Advapi32.lib Shell32.lib Ole32.lib User32.lib Pathcch.lib D3D11.lib Comdlg32.lib Kernel32.lib /LIBPATH:"libs/openssl-3.6.0-beta1/x64/lib" libssl.lib libcrypto.lib -@set FLAGS=/nologo /Ob0 /MD /Oy- /Zi /FS /W4 /EHsc /utf-8 /F8000000 +@set FLAGS=/nologo /Ob0 /MD /Oy- /Zi /FS /W4 /EHsc /utf-8 /F16000000 @set INCLUDE_DIRS=/I"libs/imgui-1.92.1" /I"libs/imgui-1.92.1/backends" /I"/" /I"libs/openssl-3.6.0-beta1/x64/include" /I"libs/cpp-httplib" /I"libs/timer_lib" /I"libs/greatest" /I"libs/simclist-1.5" /I"libs/tinyfiledialogs" /I"libs/zip/src" /I"libs/xml.c/src" /I"libs/" /Iinclude @set DEFINITIONS=/D_BUILD_DATE_=\"%date%\" /D_COMMIT_=\"%COMMIT_ID%\" /D_PLATFORM_=\"win64\" /D_CRT_SECURE_NO_WARNINGS diff --git a/src/administration.cpp b/src/administration.cpp index f79a0af..d01ec61 100644 --- a/src/administration.cpp +++ b/src/administration.cpp @@ -39,13 +39,6 @@ static s32 create_id() return g_administration.next_id; } -static int compare_tax_countries(const void *a, const void *b) -{ - tax_rate *objA = (tax_rate *)a; - tax_rate *objB = (tax_rate *)b; - return strcmp(objA->country_code, objB->country_code); -} - time_t administration::get_default_invoice_expire_duration() // TODO depricated { return (30 * 24 * 60 * 60); // 30 days @@ -53,170 +46,6 @@ time_t administration::get_default_invoice_expire_duration() // TODO depricated static char* get_default_currency_for_country(char* country_code); -static void create_default_tax_rates() -{ - #define ADD_BRACKET(_country, _rate, _code)\ - {\ - tax_rate* tb = (tax_rate*)memops::alloc(sizeof(tax_rate));\ - strops::format(tb->id, sizeof(tb->id), "T/%d", create_id());\ - memops::copy(tb->country_code, _country, sizeof(tb->country_code));\ - tb->rate = _rate;\ - memops::copy(tb->category_code, _code, sizeof(tb->category_code));\ - list_append(&g_administration.tax_rates, tb);\ - g_administration.next_id++;\ - if (taxrate_changed_event_callback) taxrate_changed_event_callback(tb);\ - if (data_changed_event_callback) data_changed_event_callback();\ - } - - // General rates shared between countries. - // Category options: https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL5305/ - - // TODO unimplemented category L, M, B - - ADD_BRACKET("00", 0.0f, "AE"); // Vat Reverse Charge - ADD_BRACKET("00", 0.0f, "E"); // Exempt from Tax - ADD_BRACKET("00", 0.0f, "Z"); // Zero rated goods - ADD_BRACKET("00", 0.0f, "G"); // Free export item, VAT not charged - ADD_BRACKET("00", 0.0f, "O"); // Services outside scope of tax - ADD_BRACKET("00", 0.0f, "K#G"); // VAT exempt for EEA intra-community supply of goods - ADD_BRACKET("00", 0.0f, "K#S"); // VAT exempt for EEA intra-community supply of services - - // Austria - ADD_BRACKET("AT", 20.0f, "S"); - ADD_BRACKET("AT", 10.0f, "S"); - ADD_BRACKET("AT", 13.0f, "S"); - - // Belgium - ADD_BRACKET("BE", 21.0f, "S"); - ADD_BRACKET("BE", 6.0f, "S"); - ADD_BRACKET("BE", 12.0f, "S"); - - // Bulgaria - ADD_BRACKET("BG", 20.0f, "S"); - ADD_BRACKET("BG", 9.0f, "S"); - - // Cyprus - ADD_BRACKET("CY", 19.0f, "S"); - ADD_BRACKET("CY", 5.0f, "S"); - ADD_BRACKET("CY", 9.0f, "S"); - - // Czechia - ADD_BRACKET("CZ", 21.0f, "S"); - ADD_BRACKET("CZ", 12.0f, "S"); - - // Croatia - ADD_BRACKET("HR", 25.0f, "S"); - ADD_BRACKET("HR", 5.0f, "S"); - ADD_BRACKET("HR", 13.0f, "S"); - - // Denmark - ADD_BRACKET("DK", 25.0f, "S"); - - // Estonia - ADD_BRACKET("EE", 22.0f, "S"); - ADD_BRACKET("EE", 9.0f, "S"); - - // Finland - ADD_BRACKET("FI", 25.5f, "S"); - ADD_BRACKET("FI", 10.0f, "S"); - ADD_BRACKET("FI", 14.0f, "S"); - - // France - ADD_BRACKET("FR", 20.0f, "S"); - ADD_BRACKET("FR", 5.5f, "S"); - ADD_BRACKET("FR", 10.0f, "S"); - ADD_BRACKET("FR", 2.1f, "S"); - - // Germany - ADD_BRACKET("DE", 19.0f, "S"); - ADD_BRACKET("DE", 7.0f, "S"); - - // Greece - ADD_BRACKET("GR", 24.0f, "S"); - ADD_BRACKET("GR", 6.0f, "S"); - ADD_BRACKET("GR", 13.0f, "S"); - - // Hungary - ADD_BRACKET("HU", 27.0f, "S"); - ADD_BRACKET("HU", 5.0f, "S"); - ADD_BRACKET("HU", 18.0f, "S"); - - // Ireland - ADD_BRACKET("IE", 23.0f, "S"); - ADD_BRACKET("IE", 9.0f, "S"); - ADD_BRACKET("IE", 13.5f, "S"); - ADD_BRACKET("IE", 4.8f, "S"); - - // Italy - ADD_BRACKET("IT", 22.0f, "S"); - ADD_BRACKET("IT", 5.0f, "S"); - ADD_BRACKET("IT", 10.0f, "S"); - ADD_BRACKET("IT", 4.0f, "S"); - - // Latvia - ADD_BRACKET("LV", 21.0f, "S"); - ADD_BRACKET("LV", 5.0f, "S"); - ADD_BRACKET("LV", 12.0f, "S"); - - // Lithuania - ADD_BRACKET("LT", 21.0f, "S"); - ADD_BRACKET("LT", 5.0f, "S"); - ADD_BRACKET("LT", 9.0f, "S"); - - // Luxembourg - ADD_BRACKET("LU", 17.0f, "S"); - ADD_BRACKET("LU", 8.0f, "S"); - ADD_BRACKET("LU", 14.0f, "S"); - ADD_BRACKET("LU", 3.0f, "S"); - - // Malta - ADD_BRACKET("MT", 18.0f, "S"); - ADD_BRACKET("MT", 5.0f, "S"); - ADD_BRACKET("MT", 7.0f, "S"); - - // Netherlands - ADD_BRACKET("NL", 21.0f, "S"); - ADD_BRACKET("NL", 9.0f, "S"); - - // Poland - ADD_BRACKET("PL", 23.0f, "S"); - ADD_BRACKET("PL", 5.0f, "S"); - ADD_BRACKET("PL", 8.0f, "S"); - - // Portugal - ADD_BRACKET("PT", 23.0f, "S"); - ADD_BRACKET("PT", 6.0f, "S"); - ADD_BRACKET("PT", 13.0f, "S"); - - // Romania - ADD_BRACKET("RO", 19.0f, "S"); - ADD_BRACKET("RO", 5.0f, "S"); - ADD_BRACKET("RO", 9.0f, "S"); - - // Slovakia - ADD_BRACKET("SK", 23.0f, "S"); - ADD_BRACKET("SK", 5.0f, "S"); - ADD_BRACKET("SK", 19.0f, "S"); - - // Slovenia - ADD_BRACKET("SI", 22.0f, "S"); - ADD_BRACKET("SI", 5.0f, "S"); - ADD_BRACKET("SI", 9.5f, "S"); - - // Spain - ADD_BRACKET("ES", 21.0f, "S"); - ADD_BRACKET("ES", 10.0f, "S"); - ADD_BRACKET("ES", 4.0f, "S"); - - // Sweden - ADD_BRACKET("SE", 25.0f, "S"); - ADD_BRACKET("SE", 6.0f, "S"); - ADD_BRACKET("SE", 12.0f, "S"); - - list_attributes_comparator(&g_administration.tax_rates, compare_tax_countries); - list_sort(&g_administration.tax_rates, -1); -} - static void create_default_cost_centers() { #define ADD_COSTCENTER(_description, _code)\ @@ -354,7 +183,6 @@ void administration::create_empty(char* save_file) void administration::create_default(char* save_file) { administration::create_empty(save_file); - create_default_tax_rates(); create_default_cost_centers(); //administration::create_debug_data(); } @@ -392,7 +220,7 @@ s32 administration::get_next_sequence_number() return g_administration.next_sequence_number; } -bool administration::can_create_invoices() +bool administration::can_create_invoices() // TODO rename to be more generic as it is used for more than invoices { return administration::contact_is_valid(g_administration.company_info) == A_ERR_SUCCESS; } @@ -1280,8 +1108,6 @@ a_err administration::tax_rate_import(tax_rate data) return A_ERR_GENERIC; } - list_attributes_comparator(&g_administration.tax_rates, compare_tax_countries); - list_sort(&g_administration.tax_rates, -1); return A_ERR_SUCCESS; } @@ -1297,9 +1123,6 @@ a_err administration::tax_rate_add(tax_rate data) g_administration.next_id++; - list_attributes_comparator(&g_administration.tax_rates, compare_tax_countries); - list_sort(&g_administration.tax_rates, -1); - if (taxrate_changed_event_callback) taxrate_changed_event_callback(&data); if (data_changed_event_callback) data_changed_event_callback(); diff --git a/src/countries.cpp b/src/countries.cpp index 7170e5b..d03848b 100644 --- a/src/countries.cpp +++ b/src/countries.cpp @@ -101,4 +101,12 @@ time_t country::get_invoice_date_to_use_for_tax_report(char* country_code, invoi assert(index != -1); return country_map[index].get_invoice_date_to_use_for_tax_report(inv); +} + +u32 country::get_available_tax_rates(char* country_code, tax_rate* buffer, u32 buffer_size) +{ + s32 index = get_index_by_country_code(country_code); + assert(index != -1); + + return country_map[index].get_available_tax_rates(buffer, buffer_size); }
\ No newline at end of file diff --git a/src/countries/nl.cpp b/src/countries/nl.cpp index 62f947f..4d507f4 100644 --- a/src/countries/nl.cpp +++ b/src/countries/nl.cpp @@ -14,6 +14,14 @@ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +/** + * \page page_the_netherlands The Netherlands + * + * ## Tax reporting + * Tax reports can be generated for invoices that have been issued after 1 January 2020. + * Private usage (tax section 1d) is not managed by OpenBooks and needs to be handled by the user. + */ + #include <math.h> #include "countries.hpp" @@ -104,11 +112,13 @@ bool _nl_add_billing_item_to_tax_report(tax_report* report, invoice* inv, billin // Tax is paid to country of customer. } else { + // TODO: 3b is for companies (intra community) + tax_line* tl = administration::get_tax_line_from_report(report, "3b"); tl->total_net += totals.net; // Tax is paid to country of customer. } - // TODO 3c + // TODO 3c is for sales to individuals } else { @@ -173,6 +183,375 @@ time_t _nl_get_invoice_date_to_use_for_tax_report(invoice* inv) return inv->issued_at; } +static tax_rate _create_tax_rate(tax_rate_type type, char* internal_code, float rate, ...) +{ + tax_rate result; + result.type = type; + result.tax_section_count = 0; + result.rate = rate; + strops::copy(result.internal_code, internal_code, sizeof(result.internal_code)); + + va_list args; + va_start(args, rate); + + char* tax_category = 0; + do + { + tax_category = va_arg(args, char*); + if (tax_category) strops::copy(result.tax_sections[result.tax_section_count++], tax_category, MAX_LEN_SHORT_DESC); + else break; + } while (1); + + va_end(args); + + return result; +} + +u32 _nl_get_available_tax_rates(tax_rate* buffer, u32 buffer_size) +{ + assert(buffer); + u32 cc = 0; + + #define ADD(_line) if (cc < buffer_size) buffer[cc++] = _line; else assert(0); + + // Outgoing + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/21", 21.00, "NL/1a", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/9", 9.00, "NL/1b", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/0", 0.00, "NL/1e", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/BTV", 0.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/BVB", 0.00, "NL/1e", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/PBEU", 0.00, "NL/3a", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/PIEU", 0.00, "NL/3b", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/DIEU", 0.00, "NL/3b", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/NBTW", 0.00, "", 0)); + + // Unieregeling diensten + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/MT/18/D", 18.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/MT/5/D", 5.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/MT/7/D", 7.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/BE/21/D", 21.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/BE/6/D", 6.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/BE/12/D", 12.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/BG/20/D", 20.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/BG/9/D", 9.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/CY/19/D", 19.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/CY/5/D", 5.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/CY/9/D", 9.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/DK/25/D", 25.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/DE/19/D", 19.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/DE/7/D", 7.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/EE/24/D", 24.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/EE/9/D", 9.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/FI/25.5/D", 25.50, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/FI/10/D", 10.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/FI/14/D", 14.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/FR/20/D", 20.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/FR/5.5/D", 5.50, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/FR/10/D", 10.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/FR/2.1/D", (float)2.10, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/GR/24/D", 24.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/GR/6/D", 6.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/GR/13/D", 13.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/HU/27/D", 27.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/HU/5/D", 5.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/HU/18/D", 18.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/IE/23/D", 23.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/IE/9/D", 9.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/IE/13.5/D", 13.50, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/IE/4.8/D", (float)4.80, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/IT/22/D", 22.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/IT/5/D", 5.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/IT/10/D", 10.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/IT/4/D", 4.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/HR/25/D", 25.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/HR/5/D", 5.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/HR/13/D", 13.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/LV/21/D", 21.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/LV/5/D", 5.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/LV/12/D", 12.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/LT/21/D", 21.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/LT/5/D", 5.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/LT/9/D", 9.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/LU/17/D", 17.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/LU/8/D", 8.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/LU/3/D", 3.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/LU/14/D", 14.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/GB-NI/20/D", 20.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/GB-NI/5/D", 5.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/AT/20/D", 20.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/AT/10/D", 10.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/AT/13/D", 13.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/PL/23/D", 23.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/PL/5/D", 5.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/PL/8/D", 8.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/PT/23/D", 23.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/PT/6/D", 6.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/PT/13/D", 13.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/RO/21/D", 21.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/RO/11/D", 11.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/SI/22/D", 22.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/SI/5/D", 5.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/SI/9.5/D", 9.50, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/SK/23/D", 23.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/SK/19/D", 19.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/ES/21/D", 21.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/ES/10/D", 10.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/ES/4/D", 4.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/CZ/21/D", 21.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/CZ/12/D", 12.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/SE/25/D", 25.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/SE/6/D", 6.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/SE/12/D", 12.00, "OBU", 0)); + + // Tax reported to foreign country AND the netherlands using NL/3c. + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/BE/21/3C", 21.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/BE/6/3C", 6.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/BE/12/3C", 12.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/BG/20/3C", 20.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/BG/9/3C", 9.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/CY/19/3C", 19.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/CY/5/3C", 5.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/CY/9/3C", 9.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/DK/25/3C", 25.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/DE/19/3C", 19.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/DE/7/3C", 7.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/EE/24/3C", 24.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/EE/9/3C", 9.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/FI/25.5/3C", 25.50, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/FI/10/3C", 10.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/FI/14/3C", 14.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/FR/20/3C", 20.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/FR/5.5/3C", 5.50, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/FR/10/3C", 10.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/FR/2.1/3C", (float)2.10, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/GR/24/3C", 24.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/GR/6/3C", 6.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/GR/13/3C", 13.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/HU/27/3C", 27.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/HU/5/3C", 5.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/HU/18/3C", 18.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/IE/23/3C", 23.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/IE/9/3C", 9.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/IE/13.5/3C", 13.50, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/IE/4.8/3C", (float)4.80, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/IT/22/3C", 22.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/IT/5/3C", 5.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/IT/10/3C", 10.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/IT/4/3C", 4.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/HR/25/3C", 25.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/HR/5/3C", 5.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/HR/13/3C", 13.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/LV/21/3C", 21.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/LV/5/3C", 5.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/LV/12/3C", 12.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/LT/21/3C", 21.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/LT/5/3C", 5.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/LT/9/3C", 9.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/LU/17/3C", 17.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/LU/8/3C", 8.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/LU/3/3C", 3.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/LU/14/3C", 14.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/MT/18/3C", 18.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/MT/5/3C", 5.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/MT/7/3C", 7.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/GB-NI/20/3C", 20.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/GB-NI/5/3C", 5.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/AT/20/3C", 20.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/AT/10/3C", 10.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/AT/13/3C", 13.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/PL/23/3C", 23.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/PL/5/3C", 5.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/PL/8/3C", 8.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/PT/23/3C", 23.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/PT/6/3C", 6.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/PT/13/3C", 13.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/RO/21/3C", 21.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/RO/11/3C", 11.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/SI/22/3C", 22.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/SI/5/3C", 5.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/SI/9.5/3C", 9.50, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/SK/23/3C", 23.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/SK/19/3C", 19.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/ES/21/3C", 21.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/ES/10/3C", 10.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/ES/4/3C", 4.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/CZ/21/3C", 21.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/CZ/12/3C", 12.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/SE/25/3C", 25.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/SE/6/3C", 6.00, "NL/3c", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/SE/12/3C", 12.00, "NL/3c", 0)); + + // Unieregeling Producten + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/BE/21/P", 21.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/BE/6/P", 6.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/BE/12/P", 12.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/BG/20/P", 20.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/BG/9/P", 9.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/CY/19/P", 19.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/CY/5/P", 5.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/CY/9/P", 9.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/DK/25/P", 25.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/DE/19/P", 19.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/DE/7/P", 7.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/EE/24/P", 24.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/EE/9/P", 9.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/FI/25.5/P", 25.50, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/FI/10/P", 10.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/FI/14/P", 14.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/FR/20/P", 20.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/FR/5.5/P", 5.50, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/FR/10/P", 10.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/FR/2.1/P", (float)2.10, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/GR/24/P", 24.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/GR/6/P", 6.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/GR/13/P", 13.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/HU/27/P", 27.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/HU/5/P", 5.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/HU/18/P", 18.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/IE/23/P", 23.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/IE/9/P", 9.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/IE/13.5/P", 13.50, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/IE/4.8/P", (float)4.80, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/IT/22/P", 22.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/IT/5/P", 5.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/IT/10/P", 10.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/IT/4/P", 4.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/HR/25/P", 25.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/HR/5/P", 5.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/HR/13/P", 13.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/LV/21/P", 21.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/LV/5/P", 5.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/LV/12/P", 12.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/LT/21/P", 21.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/LT/5/P", 5.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/LT/9/P", 9.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/LU/17/P", 17.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/LU/8/P", 8.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/LU/3/P", 3.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/LU/14/P", 14.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/MT/18/P", 18.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/MT/5/P", 5.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/MT/7/P", 7.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/GB-NI/20/P", 20.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/GB-NI/5/P", 5.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/AT/20/P", 20.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/AT/10/P", 10.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/AT/13/P", 13.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/PL/23/P", 23.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/PL/5/P", 5.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/PL/8/P", 8.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/PT/23/P", 23.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/PT/6/P", 6.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/PT/13/P", 13.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/RO/21/P", 21.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/RO/11/P", 11.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/SI/22/P", 22.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/SI/5/P", 5.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/SI/9.5/P", 9.50, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/SK/23/P", 23.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/SK/19/P", 19.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/ES/21/P", 21.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/ES/10/P", 10.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/ES/4/P", 4.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/CZ/21/P", 21.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/CZ/12/P", 12.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/SE/25/P", 25.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/SE/6/P", 6.00, "OBU", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/SE/12/P", 12.00, "OBU", 0)); + + // Tax reported in foreign country. + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/BE/21", 21.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/BE/6", 6.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/BE/12", 12.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/BG/20", 20.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/BG/9", 9.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/CY/19", 19.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/CY/5", 5.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/CY/9", 9.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/DK/25", 25.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/DE/19", 19.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/DE/7", 7.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/EE/24", 24.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/EE/9", 9.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/FI/25.5", 25.50, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/FI/10", 10.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/FI/14", 14.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/FR/20", 20.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/FR/5.5", 5.50, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/FR/10", 10.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/FR/2.1", (float)2.10, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/GR/24", 24.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/GR/6", 6.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/GR/13", 13.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/HU/27", 27.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/HU/5", 5.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/HU/18", 18.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/IE/23", 23.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/IE/9", 9.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/IE/13.5", 13.50, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/IE/4.8", (float)4.80, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/IT/22", 22.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/IT/5", 5.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/IT/10", 10.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/IT/4", 4.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/HR/25", 25.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/HR/5", 5.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/HR/13", 13.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/LV/21", 21.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/LV/5", 5.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/LV/12", 12.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/LT/21", 21.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/LT/5", 5.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/LT/9", 9.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/LU/17", 17.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/LU/8", 8.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/LU/3", 3.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/LU/14", 14.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/MT/18", 18.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/MT/5", 5.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/MT/7", 7.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/GB-NI/20", 20.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/GB-NI/5", 5.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/AT/20", 20.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/AT/10", 10.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/AT/13", 13.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/PL/23", 23.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/PL/5", 5.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/PL/8", 8.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/PT/23", 23.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/PT/6", 6.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/PT/13", 13.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/RO/21", 21.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/RO/11", 11.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/SI/22", 22.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/SI/5", 5.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/SI/9.5", 9.50, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/SK/23", 23.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/SK/19", 19.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/ES/21", 21.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/ES/10", 10.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/ES/4", 4.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/CZ/21", 21.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/CZ/12", 12.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/SE/25", 25.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/SE/6", 6.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_OUTGOING_INVOICE, "NL/SE/12", 12.00, "", 0)); + + // Incomming + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_INCOMMING_INVOICE, "NL_IN/21/5B", 21.00, "NL/5b", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_INCOMMING_INVOICE, "NL_IN/9/5B", 9.00, "NL/5b", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_INCOMMING_INVOICE, "NL_IN/BTV/5B", 0.00, "", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_INCOMMING_INVOICE, "NL_IN/NBTW/5B", 0.00, "NL/5b", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_INCOMMING_INVOICE, "NL_IN/BV/21", 21.00, "NL/2a", "NL/5b", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_INCOMMING_INVOICE, "NL_IN/BV/9", 9.00, "NL/2a", "NL/5b", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_INCOMMING_INVOICE, "NL_IN/BEUV/21", 21.00, "NL/4a", "NL/5b", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_INCOMMING_INVOICE, "NL_IN/BEUV/9", 9.00, "NL/4a", "NL/5b", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_INCOMMING_INVOICE, "NL_IN/IEUV/21", 21.00, "NL/4b", "NL/5b", 0)); + ADD(_create_tax_rate(tax_rate_type::TAX_RATE_INCOMMING_INVOICE, "NL_IN/IEUV/9", 9.00, "NL/4b", "NL/5b", 0)); + + return cc; +} + country_impl _nl_country_impl = { "NL", true, @@ -181,4 +560,5 @@ country_impl _nl_country_impl = { _nl_add_billing_item_to_tax_report, _nl_calculate_tax_report_final, _nl_get_invoice_date_to_use_for_tax_report, + _nl_get_available_tax_rates, };
\ No newline at end of file diff --git a/src/locales/en.cpp b/src/locales/en.cpp index 5b78ec9..7a98d44 100644 --- a/src/locales/en.cpp +++ b/src/locales/en.cpp @@ -59,16 +59,6 @@ locale_entry en_locales[] = { {"costcenter.customer_service_support", "Customer Service & Support"}, {"costcenter.other_specialized", "Other / Specialized"}, - // Tax category strings. - {"taxcategory.AE", "VAT Reverse Charge"}, - {"taxcategory.E", "Exempt from Tax"}, - {"taxcategory.S", "Standard rate"}, - {"taxcategory.Z", "Zero rated goods"}, - {"taxcategory.G", "Free export item, VAT not charged"}, - {"taxcategory.O", "Services outside scope of tax"}, - {"taxcategory.K#G", "Intra-community supply of goods"}, - {"taxcategory.K#S", "Intra-community supply of services"}, - // Countries { "country.AT", "Austria" }, { "country.BE", "Belgium" }, @@ -145,8 +135,10 @@ locale_entry en_locales[] = { {"settings.table.vatrates", "VAT Rates"}, {"settings.table.costcenters", "Cost Centers"}, {"settings.table.services", "Services"}, - {"settings.vat.table.country", "Country"}, - {"settings.vat.table.rates", "Rates"}, + {"settings.vat.table.outgoing", "Sales invoice"}, + {"settings.vat.table.incomming", "Purchase invoice"}, + {"settings.vat.table.rates", "Rate"}, + {"settings.vat.table.section", "Tax-report"}, {"settings.costcenters.table.code", "Code"}, {"settings.costcenters.table.description", "Description"}, {"settings.services.ai_service", "AI Service"}, @@ -214,6 +206,334 @@ locale_entry en_locales[] = { {"import.error.query","Failure: Querying service failed"}, {"import.error.import","Failure: Service returned unparseable response. Try using another model."}, + // Tax rate strings. + {"taxrate.code.NL/21","21% VAT"}, + {"taxrate.code.NL/9","9% VAT"}, + {"taxrate.code.NL/0","0% VAT"}, + {"taxrate.code.NL/BTV","VAT exempt"}, + {"taxrate.code.NL/BVB","Domestic reverse charge VAT"}, + {"taxrate.code.NL/PBEU","Product outside EU (reverse charge)"}, + {"taxrate.code.NL/PIEU","Product within EU (reverse charge)"}, + {"taxrate.code.NL/DIEU","Service within EU (reverse charge)"}, + {"taxrate.code.NL/NBTW","No VAT"}, + {"taxrate.code.NL/MT/18/D","Malta 18% (Union Scheme) Service"}, + {"taxrate.code.NL/MT/5/D","Malta 5% (Union Scheme) Service"}, + {"taxrate.code.NL/MT/7/D","Malta 7% (Union Scheme) Service"}, + {"taxrate.code.NL/BE/21/D","Belgium 21% (Union Scheme) Service"}, + {"taxrate.code.NL/BE/6/D","Belgium 6% (Union Scheme) Service"}, + {"taxrate.code.NL/BE/12/D","Belgium 12% (Union Scheme) Service"}, + {"taxrate.code.NL/BG/20/D","Bulgaria 20% (Union Scheme) Service"}, + {"taxrate.code.NL/BG/9/D","Bulgaria 9% (Union Scheme) Service"}, + {"taxrate.code.NL/CY/19/D","Cyprus 19% (Union Scheme) Service"}, + {"taxrate.code.NL/CY/5/D","Cyprus 5% (Union Scheme) Service"}, + {"taxrate.code.NL/CY/9/D","Cyprus 9% (Union Scheme) Service"}, + {"taxrate.code.NL/DK/25/D","Denmark 25% (Union Scheme) Service"}, + {"taxrate.code.NL/DE/19/D","Germany 19% (Union Scheme) Service"}, + {"taxrate.code.NL/DE/7/D","Germany 7% (Union Scheme) Service"}, + {"taxrate.code.NL/EE/24/D","Estonia 24% (Union Scheme) Service"}, + {"taxrate.code.NL/EE/9/D","Estonia 9% (Union Scheme) Service"}, + {"taxrate.code.NL/FI/25.5/D","Finland 25.5% (Union Scheme) Service"}, + {"taxrate.code.NL/FI/10/D","Finland 10% (Union Scheme) Service"}, + {"taxrate.code.NL/FI/14/D","Finland 14% (Union Scheme) Service"}, + {"taxrate.code.NL/FR/20/D","France 20% (Union Scheme) Service"}, + {"taxrate.code.NL/FR/5.5/D","France 5.5% (Union Scheme) Service"}, + {"taxrate.code.NL/FR/10/D","France 10% (Union Scheme) Service"}, + {"taxrate.code.NL/FR/2.1/D","France 2.1% (Union Scheme) Service"}, + {"taxrate.code.NL/GR/24/D","Greece 24% (Union Scheme) Service"}, + {"taxrate.code.NL/GR/6/D","Greece 6% (Union Scheme) Service"}, + {"taxrate.code.NL/GR/13/D","Greece 13% (Union Scheme) Service"}, + {"taxrate.code.NL/HU/27/D","Hungary 27% (Union Scheme) Service"}, + {"taxrate.code.NL/HU/5/D","Hungary 5% (Union Scheme) Service"}, + {"taxrate.code.NL/HU/18/D","Hungary 18% (Union Scheme) Service"}, + {"taxrate.code.NL/IE/23/D","Ireland 23% (Union Scheme) Service"}, + {"taxrate.code.NL/IE/9/D","Ireland 9% (Union Scheme) Service"}, + {"taxrate.code.NL/IE/13.5/D","Ireland 13.5% (Union Scheme) Service"}, + {"taxrate.code.NL/IE/4.8/D","Ireland 4.8% (Union Scheme) Service"}, + {"taxrate.code.NL/IT/22/D","Italy 22% (Union Scheme) Service"}, + {"taxrate.code.NL/IT/5/D","Italy 5% (Union Scheme) Service"}, + {"taxrate.code.NL/IT/10/D","Italy 10% (Union Scheme) Service"}, + {"taxrate.code.NL/IT/4/D","Italy 4% (Union Scheme) Service"}, + {"taxrate.code.NL/HR/25/D","Croatia 25% (Union Scheme) Service"}, + {"taxrate.code.NL/HR/5/D","Croatia 5% (Union Scheme) Service"}, + {"taxrate.code.NL/HR/13/D","Croatia 13% (Union Scheme) Service"}, + {"taxrate.code.NL/LV/21/D","Latvia 21% (Union Scheme) Service"}, + {"taxrate.code.NL/LV/5/D","Latvia 5% (Union Scheme) Service"}, + {"taxrate.code.NL/LV/12/D","Latvia 12% (Union Scheme) Service"}, + {"taxrate.code.NL/LT/21/D","Lithuania 21% (Union Scheme) Service"}, + {"taxrate.code.NL/LT/5/D","Lithuania 5% (Union Scheme) Service"}, + {"taxrate.code.NL/LT/9/D","Lithuania 9% (Union Scheme) Service"}, + {"taxrate.code.NL/LU/17/D","Luxembourg 17% (Union Scheme) Service"}, + {"taxrate.code.NL/LU/8/D","Luxembourg 8% (Union Scheme) Service"}, + {"taxrate.code.NL/LU/3/D","Luxembourg 3% (Union Scheme) Service"}, + {"taxrate.code.NL/LU/14/D","Luxembourg 14% (Union Scheme) Service"}, + {"taxrate.code.NL/GB-NI/20/D","Northern Ireland 20% (Union Scheme) Service"}, + {"taxrate.code.NL/GB-NI/5/D","Northern Ireland 5% (Union Scheme) Service"}, + {"taxrate.code.NL/AT/20/D","Austria 20% (Union Scheme) Service"}, + {"taxrate.code.NL/AT/10/D","Austria 10% (Union Scheme) Service"}, + {"taxrate.code.NL/AT/13/D","Austria 13% (Union Scheme) Service"}, + {"taxrate.code.NL/PL/23/D","Poland 23% (Union Scheme) Service"}, + {"taxrate.code.NL/PL/5/D","Poland 5% (Union Scheme) Service"}, + {"taxrate.code.NL/PL/8/D","Poland 8% (Union Scheme) Service"}, + {"taxrate.code.NL/PT/23/D","Portugal 23% (Union Scheme) Service"}, + {"taxrate.code.NL/PT/6/D","Portugal 6% (Union Scheme) Service"}, + {"taxrate.code.NL/PT/13/D","Portugal 13% (Union Scheme) Service"}, + {"taxrate.code.NL/RO/21/D","Romania 21% (Union Scheme) Service"}, + {"taxrate.code.NL/RO/11/D","Romania 11% (Union Scheme) Service"}, + {"taxrate.code.NL/SI/22/D","Slovenia 22% (Union Scheme) Service"}, + {"taxrate.code.NL/SI/5/D","Slovenia 5% (Union Scheme) Service"}, + {"taxrate.code.NL/SI/9.5/D","Slovenia 9.5% (Union Scheme) Service"}, + {"taxrate.code.NL/SK/23/D","Slovakia 23% (Union Scheme) Service"}, + {"taxrate.code.NL/SK/19/D","Slovakia 19% (Union Scheme) Service"}, + {"taxrate.code.NL/ES/21/D","Spain 21% (Union Scheme) Service"}, + {"taxrate.code.NL/ES/10/D","Spain 10% (Union Scheme) Service"}, + {"taxrate.code.NL/ES/4/D","Spain 4% (Union Scheme) Service"}, + {"taxrate.code.NL/CZ/21/D","Czech Republic 21% (Union Scheme) Service"}, + {"taxrate.code.NL/CZ/12/D","Czech Republic 12% (Union Scheme) Service"}, + {"taxrate.code.NL/SE/25/D","Sweden 25% (Union Scheme) Service"}, + {"taxrate.code.NL/SE/6/D","Sweden 6% (Union Scheme) Service"}, + {"taxrate.code.NL/SE/12/D","Sweden 12% (Union Scheme) Service"}, + + {"taxrate.code.NL/BE/21/3C","Belgium 21% (NL/3c)"}, + {"taxrate.code.NL/BE/6/3C","Belgium 6% (NL/3c)"}, + {"taxrate.code.NL/BE/12/3C","Belgium 12% (NL/3c)"}, + {"taxrate.code.NL/BG/20/3C","Bulgaria 20% (NL/3c)"}, + {"taxrate.code.NL/BG/9/3C","Bulgaria 9% (NL/3c)"}, + {"taxrate.code.NL/CY/19/3C","Cyprus 19% (NL/3c)"}, + {"taxrate.code.NL/CY/5/3C","Cyprus 5% (NL/3c)"}, + {"taxrate.code.NL/CY/9/3C","Cyprus 9% (NL/3c)"}, + {"taxrate.code.NL/DK/25/3C","Denmark 25% (NL/3c)"}, + {"taxrate.code.NL/DE/19/3C","Germany 19% (NL/3c)"}, + {"taxrate.code.NL/DE/7/3C","Germany 7% (NL/3c)"}, + {"taxrate.code.NL/EE/24/3C","Estonia 24% (NL/3c)"}, + {"taxrate.code.NL/EE/9/3C","Estonia 9% (NL/3c)"}, + {"taxrate.code.NL/FI/25.5/3C","Finland 25.5% (NL/3c)"}, + {"taxrate.code.NL/FI/10/3C","Finland 10% (NL/3c)"}, + {"taxrate.code.NL/FI/14/3C","Finland 14% (NL/3c)"}, + {"taxrate.code.NL/FR/20/3C","France 20% (NL/3c)"}, + {"taxrate.code.NL/FR/5.5/3C","France 5.5% (NL/3c)"}, + {"taxrate.code.NL/FR/10/3C","France 10% (NL/3c)"}, + {"taxrate.code.NL/FR/2.1/3C","France 2.1% (NL/3c)"}, + {"taxrate.code.NL/GR/24/3C","Greece 24% (NL/3c)"}, + {"taxrate.code.NL/GR/6/3C","Greece 6% (NL/3c)"}, + {"taxrate.code.NL/GR/13/3C","Greece 13% (NL/3c)"}, + {"taxrate.code.NL/HU/27/3C","Hungary 27% (NL/3c)"}, + {"taxrate.code.NL/HU/5/3C","Hungary 5% (NL/3c)"}, + {"taxrate.code.NL/HU/18/3C","Hungary 18% (NL/3c)"}, + {"taxrate.code.NL/IE/23/3C","Ireland 23% (NL/3c)"}, + {"taxrate.code.NL/IE/9/3C","Ireland 9% (NL/3c)"}, + {"taxrate.code.NL/IE/13.5/3C","Ireland 13.5% (NL/3c)"}, + {"taxrate.code.NL/IE/4.8/3C","Ireland 4.8% (NL/3c)"}, + {"taxrate.code.NL/IT/22/3C","Italy 22% (NL/3c)"}, + {"taxrate.code.NL/IT/5/3C","Italy 5% (NL/3c)"}, + {"taxrate.code.NL/IT/10/3C","Italy 10% (NL/3c)"}, + {"taxrate.code.NL/IT/4/3C","Italy 4% (NL/3c)"}, + {"taxrate.code.NL/HR/25/3C","Croatia 25% (NL/3c)"}, + {"taxrate.code.NL/HR/5/3C","Croatia 5% (NL/3c)"}, + {"taxrate.code.NL/HR/13/3C","Croatia 13% (NL/3c)"}, + {"taxrate.code.NL/LV/21/3C","Latvia 21% (NL/3c)"}, + {"taxrate.code.NL/LV/5/3C","Latvia 5% (NL/3c)"}, + {"taxrate.code.NL/LV/12/3C","Latvia 12% (NL/3c)"}, + {"taxrate.code.NL/LT/21/3C","Lithuania 21% (NL/3c)"}, + {"taxrate.code.NL/LT/5/3C","Lithuania 5% (NL/3c)"}, + {"taxrate.code.NL/LT/9/3C","Lithuania 9% (NL/3c)"}, + {"taxrate.code.NL/LU/17/3C","Luxembourg 17% (NL/3c)"}, + {"taxrate.code.NL/LU/8/3C","Luxembourg 8% (NL/3c)"}, + {"taxrate.code.NL/LU/3/3C","Luxembourg 3% (NL/3c)"}, + {"taxrate.code.NL/LU/14/3C","Luxembourg 14% (NL/3c)"}, + {"taxrate.code.NL/MT/18/3C","Malta 18% (NL/3c)"}, + {"taxrate.code.NL/MT/5/3C","Malta 5% (NL/3c)"}, + {"taxrate.code.NL/MT/7/3C","Malta 7% (NL/3c)"}, + {"taxrate.code.NL/GB-NI/20/3C","Northern Ireland 20% (NL/3c)"}, + {"taxrate.code.NL/GB-NI/5/3C","Northern Ireland 5% (NL/3c)"}, + {"taxrate.code.NL/AT/20/3C","Austria 20% (NL/3c)"}, + {"taxrate.code.NL/AT/10/3C","Austria 10% (NL/3c)"}, + {"taxrate.code.NL/AT/13/3C","Austria 13% (NL/3c)"}, + {"taxrate.code.NL/PL/23/3C","Poland 23% (NL/3c)"}, + {"taxrate.code.NL/PL/5/3C","Poland 5% (NL/3c)"}, + {"taxrate.code.NL/PL/8/3C","Poland 8% (NL/3c)"}, + {"taxrate.code.NL/PT/23/3C","Portugal 23% (NL/3c)"}, + {"taxrate.code.NL/PT/6/3C","Portugal 6% (NL/3c)"}, + {"taxrate.code.NL/PT/13/3C","Portugal 13% (NL/3c)"}, + {"taxrate.code.NL/RO/21/3C","Romania 21% (NL/3c)"}, + {"taxrate.code.NL/RO/11/3C","Romania 11% (NL/3c)"}, + {"taxrate.code.NL/SI/22/3C","Slovenia 22% (NL/3c)"}, + {"taxrate.code.NL/SI/5/3C","Slovenia 5% (NL/3c)"}, + {"taxrate.code.NL/SI/9.5/3C","Slovenia 9.5% (NL/3c)"}, + {"taxrate.code.NL/SK/23/3C","Slovakia 23% (NL/3c)"}, + {"taxrate.code.NL/SK/19/3C","Slovakia 19% (NL/3c)"}, + {"taxrate.code.NL/ES/21/3C","Spain 21% (NL/3c)"}, + {"taxrate.code.NL/ES/10/3C","Spain 10% (NL/3c)"}, + {"taxrate.code.NL/ES/4/3C","Spain 4% (NL/3c)"}, + {"taxrate.code.NL/CZ/21/3C","Czech Republic 21% (NL/3c)"}, + {"taxrate.code.NL/CZ/12/3C","Czech Republic 12% (NL/3c)"}, + {"taxrate.code.NL/SE/25/3C","Sweden 25% (NL/3c)"}, + {"taxrate.code.NL/SE/6/3C","Sweden 6% (NL/3c)"}, + {"taxrate.code.NL/SE/12/3C","Sweden 12% (NL/3c)"}, + + {"taxrate.code.NL/BE/21/P","Belgium 21% (Union Scheme) Product"}, + {"taxrate.code.NL/BE/6/P","Belgium 6% (Union Scheme) Product"}, + {"taxrate.code.NL/BE/12/P","Belgium 12% (Union Scheme) Product"}, + {"taxrate.code.NL/BG/20/P","Bulgaria 20% (Union Scheme) Product"}, + {"taxrate.code.NL/BG/9/P","Bulgaria 9% (Union Scheme) Product"}, + {"taxrate.code.NL/CY/19/P","Cyprus 19% (Union Scheme) Product"}, + {"taxrate.code.NL/CY/5/P","Cyprus 5% (Union Scheme) Product"}, + {"taxrate.code.NL/CY/9/P","Cyprus 9% (Union Scheme) Product"}, + {"taxrate.code.NL/DK/25/P","Denmark 25% (Union Scheme) Product"}, + {"taxrate.code.NL/DE/19/P","Germany 19% (Union Scheme) Product"}, + {"taxrate.code.NL/DE/7/P","Germany 7% (Union Scheme) Product"}, + {"taxrate.code.NL/EE/24/P","Estonia 24% (Union Scheme) Product"}, + {"taxrate.code.NL/EE/9/P","Estonia 9% (Union Scheme) Product"}, + {"taxrate.code.NL/FI/25.5/P","Finland 25.5% (Union Scheme) Product"}, + {"taxrate.code.NL/FI/10/P","Finland 10% (Union Scheme) Product"}, + {"taxrate.code.NL/FI/14/P","Finland 14% (Union Scheme) Product"}, + {"taxrate.code.NL/FR/20/P","France 20% (Union Scheme) Product"}, + {"taxrate.code.NL/FR/5.5/P","France 5.5% (Union Scheme) Product"}, + {"taxrate.code.NL/FR/10/P","France 10% (Union Scheme) Product"}, + {"taxrate.code.NL/FR/2.1/P","France 2.1% (Union Scheme) Product"}, + {"taxrate.code.NL/GR/24/P","Greece 24% (Union Scheme) Product"}, + {"taxrate.code.NL/GR/6/P","Greece 6% (Union Scheme) Product"}, + {"taxrate.code.NL/GR/13/P","Greece 13% (Union Scheme) Product"}, + {"taxrate.code.NL/HU/27/P","Hungary 27% (Union Scheme) Product"}, + {"taxrate.code.NL/HU/5/P","Hungary 5% (Union Scheme) Product"}, + {"taxrate.code.NL/HU/18/P","Hungary 18% (Union Scheme) Product"}, + {"taxrate.code.NL/IE/23/P","Ireland 23% (Union Scheme) Product"}, + {"taxrate.code.NL/IE/9/P","Ireland 9% (Union Scheme) Product"}, + {"taxrate.code.NL/IE/13.5/P","Ireland 13.5% (Union Scheme) Product"}, + {"taxrate.code.NL/IE/4.8/P","Ireland 4.8% (Union Scheme) Product"}, + {"taxrate.code.NL/IT/22/P","Italy 22% (Union Scheme) Product"}, + {"taxrate.code.NL/IT/5/P","Italy 5% (Union Scheme) Product"}, + {"taxrate.code.NL/IT/10/P","Italy 10% (Union Scheme) Product"}, + {"taxrate.code.NL/IT/4/P","Italy 4% (Union Scheme) Product"}, + {"taxrate.code.NL/HR/25/P","Croatia 25% (Union Scheme) Product"}, + {"taxrate.code.NL/HR/5/P","Croatia 5% (Union Scheme) Product"}, + {"taxrate.code.NL/HR/13/P","Croatia 13% (Union Scheme) Product"}, + {"taxrate.code.NL/LV/21/P","Latvia 21% (Union Scheme) Product"}, + {"taxrate.code.NL/LV/5/P","Latvia 5% (Union Scheme) Product"}, + {"taxrate.code.NL/LV/12/P","Latvia 12% (Union Scheme) Product"}, + {"taxrate.code.NL/LT/21/P","Lithuania 21% (Union Scheme) Product"}, + {"taxrate.code.NL/LT/5/P","Lithuania 5% (Union Scheme) Product"}, + {"taxrate.code.NL/LT/9/P","Lithuania 9% (Union Scheme) Product"}, + {"taxrate.code.NL/LU/17/P","Luxembourg 17% (Union Scheme) Product"}, + {"taxrate.code.NL/LU/8/P","Luxembourg 8% (Union Scheme) Product"}, + {"taxrate.code.NL/LU/3/P","Luxembourg 3% (Union Scheme) Product"}, + {"taxrate.code.NL/LU/14/P","Luxembourg 14% (Union Scheme) Product"}, + {"taxrate.code.NL/MT/18/P","Malta 18% (Union Scheme) Product"}, + {"taxrate.code.NL/MT/5/P","Malta 5% (Union Scheme) Product"}, + {"taxrate.code.NL/MT/7/P","Malta 7% (Union Scheme) Product"}, + {"taxrate.code.NL/GB-NI/20/P","Northern Ireland 20% (Union Scheme) Product"}, + {"taxrate.code.NL/GB-NI/5/P","Northern Ireland 5% (Union Scheme) Product"}, + {"taxrate.code.NL/AT/20/P","Austria 20% (Union Scheme) Product"}, + {"taxrate.code.NL/AT/10/P","Austria 10% (Union Scheme) Product"}, + {"taxrate.code.NL/AT/13/P","Austria 13% (Union Scheme) Product"}, + {"taxrate.code.NL/PL/23/P","Poland 23% (Union Scheme) Product"}, + {"taxrate.code.NL/PL/5/P","Poland 5% (Union Scheme) Product"}, + {"taxrate.code.NL/PL/8/P","Poland 8% (Union Scheme) Product"}, + {"taxrate.code.NL/PT/23/P","Portugal 23% (Union Scheme) Product"}, + {"taxrate.code.NL/PT/6/P","Portugal 6% (Union Scheme) Product"}, + {"taxrate.code.NL/PT/13/P","Portugal 13% (Union Scheme) Product"}, + {"taxrate.code.NL/RO/21/P","Romania 21% (Union Scheme) Product"}, + {"taxrate.code.NL/RO/11/P","Romania 11% (Union Scheme) Product"}, + {"taxrate.code.NL/SI/22/P","Slovenia 22% (Union Scheme) Product"}, + {"taxrate.code.NL/SI/5/P","Slovenia 5% (Union Scheme) Product"}, + {"taxrate.code.NL/SI/9.5/P","Slovenia 9.5% (Union Scheme) Product"}, + {"taxrate.code.NL/SK/23/P","Slovakia 23% (Union Scheme) Product"}, + {"taxrate.code.NL/SK/19/P","Slovakia 19% (Union Scheme) Product"}, + {"taxrate.code.NL/ES/21/P","Spain 21% (Union Scheme) Product"}, + {"taxrate.code.NL/ES/10/P","Spain 10% (Union Scheme) Product"}, + {"taxrate.code.NL/ES/4/P","Spain 4% (Union Scheme) Product"}, + {"taxrate.code.NL/CZ/21/P","Czech Republic 21% (Union Scheme) Product"}, + {"taxrate.code.NL/CZ/12/P","Czech Republic 12% (Union Scheme) Product"}, + {"taxrate.code.NL/SE/25/P","Sweden 25% (Union Scheme) Product"}, + {"taxrate.code.NL/SE/6/P","Sweden 6% (Union Scheme) Product"}, + {"taxrate.code.NL/SE/12/P","Sweden 12% (Union Scheme) Product"}, + + {"taxrate.code.NL/BE/21","Belgium 21%"}, + {"taxrate.code.NL/BE/6","Belgium 6%"}, + {"taxrate.code.NL/BE/12","Belgium 12%"}, + {"taxrate.code.NL/BG/20","Bulgaria 20%"}, + {"taxrate.code.NL/BG/9","Bulgaria 9%"}, + {"taxrate.code.NL/CY/19","Cyprus 19%"}, + {"taxrate.code.NL/CY/5","Cyprus 5%"}, + {"taxrate.code.NL/CY/9","Cyprus 9%"}, + {"taxrate.code.NL/DK/25","Denmark 25%"}, + {"taxrate.code.NL/DE/19","Germany 19%"}, + {"taxrate.code.NL/DE/7","Germany 7%"}, + {"taxrate.code.NL/EE/24","Estonia 24%"}, + {"taxrate.code.NL/EE/9","Estonia 9%"}, + {"taxrate.code.NL/FI/25.5","Finland 25.5%"}, + {"taxrate.code.NL/FI/10","Finland 10%"}, + {"taxrate.code.NL/FI/14","Finland 14%"}, + {"taxrate.code.NL/FR/20","France 20%"}, + {"taxrate.code.NL/FR/5.5","France 5.5%"}, + {"taxrate.code.NL/FR/10","France 10%"}, + {"taxrate.code.NL/FR/2.1","France 2.1%"}, + {"taxrate.code.NL/GR/24","Greece 24%"}, + {"taxrate.code.NL/GR/6","Greece 6%"}, + {"taxrate.code.NL/GR/13","Greece 13%"}, + {"taxrate.code.NL/HU/27","Hungary 27%"}, + {"taxrate.code.NL/HU/5","Hungary 5%"}, + {"taxrate.code.NL/HU/18","Hungary 18%"}, + {"taxrate.code.NL/IE/23","Ireland 23%"}, + {"taxrate.code.NL/IE/9","Ireland 9%"}, + {"taxrate.code.NL/IE/13.5","Ireland 13.5%"}, + {"taxrate.code.NL/IE/4.8","Ireland 4.8%"}, + {"taxrate.code.NL/IT/22","Italy 22%"}, + {"taxrate.code.NL/IT/5","Italy 5%"}, + {"taxrate.code.NL/IT/10","Italy 10%"}, + {"taxrate.code.NL/IT/4","Italy 4%"}, + {"taxrate.code.NL/HR/25","Croatia 25%"}, + {"taxrate.code.NL/HR/5","Croatia 5%"}, + {"taxrate.code.NL/HR/13","Croatia 13%"}, + {"taxrate.code.NL/LV/21","Latvia 21%"}, + {"taxrate.code.NL/LV/5","Latvia 5%"}, + {"taxrate.code.NL/LV/12","Latvia 12%"}, + {"taxrate.code.NL/LT/21","Lithuania 21%"}, + {"taxrate.code.NL/LT/5","Lithuania 5%"}, + {"taxrate.code.NL/LT/9","Lithuania 9%"}, + {"taxrate.code.NL/LU/17","Luxembourg 17%"}, + {"taxrate.code.NL/LU/8","Luxembourg 8%"}, + {"taxrate.code.NL/LU/3","Luxembourg 3%"}, + {"taxrate.code.NL/LU/14","Luxembourg 14%"}, + {"taxrate.code.NL/MT/18","Malta 18%"}, + {"taxrate.code.NL/MT/5","Malta 5%"}, + {"taxrate.code.NL/MT/7","Malta 7%"}, + {"taxrate.code.NL/GB-NI/20","Northern Ireland 20%"}, + {"taxrate.code.NL/GB-NI/5","Northern Ireland 5%"}, + {"taxrate.code.NL/AT/20","Austria 20%"}, + {"taxrate.code.NL/AT/10","Austria 10%"}, + {"taxrate.code.NL/AT/13","Austria 13%"}, + {"taxrate.code.NL/PL/23","Poland 23%"}, + {"taxrate.code.NL/PL/5","Poland 5%"}, + {"taxrate.code.NL/PL/8","Poland 8%"}, + {"taxrate.code.NL/PT/23","Portugal 23%"}, + {"taxrate.code.NL/PT/6","Portugal 6%"}, + {"taxrate.code.NL/PT/13","Portugal 13%"}, + {"taxrate.code.NL/RO/21","Romania 21%"}, + {"taxrate.code.NL/RO/11","Romania 11%"}, + {"taxrate.code.NL/SI/22","Slovenia 22%"}, + {"taxrate.code.NL/SI/5","Slovenia 5%"}, + {"taxrate.code.NL/SI/9.5","Slovenia 9.5%"}, + {"taxrate.code.NL/SK/23","Slovakia 23%"}, + {"taxrate.code.NL/SK/19","Slovakia 19%"}, + {"taxrate.code.NL/ES/21","Spain 21%"}, + {"taxrate.code.NL/ES/10","Spain 10%"}, + {"taxrate.code.NL/ES/4","Spain 4%"}, + {"taxrate.code.NL/CZ/21","Czech Republic 21%"}, + {"taxrate.code.NL/CZ/12","Czech Republic 12%"}, + {"taxrate.code.NL/SE/25","Sweden 25%"}, + {"taxrate.code.NL/SE/6","Sweden 6%"}, + {"taxrate.code.NL/SE/12","Sweden 12%"}, + {"taxrate.code.NL_IN/21/5B","21% VAT"}, + {"taxrate.code.NL_IN/9/5B","9% VAT"}, + {"taxrate.code.NL_IN/BTV/5B","VAT exempt"}, + {"taxrate.code.NL_IN/NBTW/5B","No VAT"}, + {"taxrate.code.NL_IN/BV/21","Domestic reverse charge 21% VAT"}, + {"taxrate.code.NL_IN/BV/9","Domestic reverse charge 9% VAT"}, + {"taxrate.code.NL_IN/BEUV/21","Outside EU reverse charge 21% VAT"}, + {"taxrate.code.NL_IN/BEUV/9","Outside EU reverse charge 9% VAT"}, + {"taxrate.code.NL_IN/IEUV/21","Intra-EU reverse charge 21% VAT"}, + {"taxrate.code.NL_IN/IEUV/9","Intra-EU reverse charge 9% VAT"}, + // Tax statement strings. {"taxes.total", "Total"}, diff --git a/src/ui/ui_settings.cpp b/src/ui/ui_settings.cpp index 7de543f..7feacb2 100644 --- a/src/ui/ui_settings.cpp +++ b/src/ui/ui_settings.cpp @@ -20,6 +20,7 @@ #include "memops.hpp" #include "locales.hpp" #include "importer.hpp" +#include "countries.hpp" #include "administration.hpp" #include "administration_writer.hpp" @@ -47,171 +48,59 @@ void ui::setup_settings() select_company_tab = 1; company_info = administration::company_info_get(); - tax_rate_count = administration::tax_rate_count(); - tax_rates = (tax_rate*)memops::alloc(tax_rate_count * sizeof(tax_rate)); - administration::tax_rate_get_all(tax_rates); + if (administration::can_create_invoices()) { + tax_rates = (tax_rate*)memops::alloc(sizeof(tax_rate) * 400); + tax_rate_count = country::get_available_tax_rates(administration::company_info_get().address.country_code, tax_rates, 400); - cost_center_count = administration::cost_center_count(); - cost_centers = (cost_center*)memops::alloc(cost_center_count * sizeof(cost_center)); - administration::cost_center_get_all(cost_centers); + cost_center_count = administration::cost_center_count(); + cost_centers = (cost_center*)memops::alloc(cost_center_count * sizeof(cost_center)); + administration::cost_center_get_all(cost_centers); - new_service = administration::get_ai_service(); + new_service = administration::get_ai_service(); + } } static void draw_vat_rates() { - static bool is_adding_item = false; - static tax_rate new_tax_rate; - - static bool is_editing_item = false; - static u32 editing_item_index = 0; + tax_rate_type type_iter = tax_rate_type::TAX_RATE_OUTGOING_INVOICE; + go_again: - if (ImGui::BeginTable("TableVatRates", 2, ImGuiTableFlags_Borders | ImGuiTableFlags_RowBg)) { + char id[MAX_LEN_SHORT_DESC]; + strops::format(id, MAX_LEN_SHORT_DESC, "TableVatRates##%d", static_cast<int>(type_iter)); - ImGui::TableSetupColumn(locale::get("settings.vat.table.country"), ImGuiTableColumnFlags_WidthFixed, 220); - ImGui::TableSetupColumn(locale::get("settings.vat.table.rates")); + if (ImGui::BeginTable(id, 3, ImGuiTableFlags_Borders | ImGuiTableFlags_RowBg)) { - // Used to generate headers for each individual country. - char prev_country[MAX_LEN_COUNTRY_CODE]; - prev_country[0] = 0; + ImGui::TableSetupColumn(locale::get("settings.vat.table.outgoing"), ImGuiTableColumnFlags_WidthStretch); + ImGui::TableSetupColumn(locale::get("settings.vat.table.rates"), ImGuiTableColumnFlags_WidthFixed, 120); + ImGui::TableSetupColumn(locale::get("settings.vat.table.section"), ImGuiTableColumnFlags_WidthFixed, 200); + ImGui::TableHeadersRow(); for (u32 i = 0; i < tax_rate_count; i++) { tax_rate c = tax_rates[i]; + if (c.type != type_iter) continue; - // Set to false for shared rates. - bool can_be_modified = false; - - // Check for fixed rates shared accross countries. - if (strcmp(c.country_code, "00") == 0) - { - strops::copy(prev_country, c.country_code, 3); - can_be_modified = false; - } - // Generate headers per country. - else if (strcmp(c.country_code, prev_country) != 0) - { - strops::copy(prev_country, c.country_code, 3); - - // Empty row. - ImGui::TableNextRow(); - ImGui::TableSetColumnIndex(0); ImGui::Text(""); - ImGui::TableSetBgColor(ImGuiTableBgTarget_CellBg, IM_COL32(69, 69, 69, 255)); - ImGui::TableSetColumnIndex(1); ImGui::Text(""); - ImGui::TableSetBgColor(ImGuiTableBgTarget_CellBg, IM_COL32(69, 69, 69, 255)); - - ImGui::TableNextRow(); - - char locale_buf[20]; - strops::format(locale_buf, sizeof(locale_buf), "country.%s", c.country_code); - ImGui::TableSetColumnIndex(0); - ImGui::Text(locale::get(locale_buf)); - - // If not adding an item already, show + button next to country name. - if (!is_adding_item) - { - ImGui::SameLine(); - char btn_name[20]; - strops::format(btn_name, sizeof(btn_name), "+##%d",i); - ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(0,0)); - if (ImGui::Button(btn_name, ImVec2(20,20))) { - is_adding_item = true; - is_editing_item = false; - new_tax_rate = administration::tax_rate_create_empty(); - strops::copy(new_tax_rate.country_code, c.country_code, 3); - } - ImGui::PopStyleVar(); - } - - ImGui::TableSetColumnIndex(1); ImGui::Text(""); - } - - // Column 1: description of tax rate. Is only displayed on shared tax rates for clarity. ImGui::TableNextRow(); - ImGui::TableSetColumnIndex(0); - - char category_code_desc[MAX_LEN_LONG_DESC]; - strops::format(category_code_desc, MAX_LEN_LONG_DESC, "taxcategory.%s", c.category_code); - ImGui::Text(can_be_modified ? "" : locale::get(category_code_desc)); - - - // Column 2: When editing, show input for new rate. Else we display the stored rate and check for modify request. - ImGui::TableSetColumnIndex(1); - if (is_editing_item && editing_item_index == i) - { - ImGui::InputFloat("##Rate", &new_tax_rate.rate, 1.0f, 5.0f, "%.2f"); - if (new_tax_rate.rate < 0.0f) new_tax_rate.rate = 0.0f; - if (new_tax_rate.rate > 100.0f) new_tax_rate.rate = 100.0f; - - ImGui::SameLine(); - if (ImGui::Button(locale::get("form.save"))) { - is_editing_item = false; - is_adding_item = false; - - administration::tax_rate_update(new_tax_rate); - - ui::destroy_settings(); - ui::setup_settings(); - } - - ImGui::SameLine(); - if (ImGui::Button(locale::get("form.cancel"))) { - is_editing_item = false; - is_adding_item = false; - memops::zero(&new_tax_rate, sizeof(new_tax_rate)); - } - } - else - { - ImGui::Text("%.2f%%", c.rate); - - if (can_be_modified && ImGui::IsItemHovered() && ImGui::IsMouseDoubleClicked(ImGuiMouseButton_Left)) - { - is_editing_item = true; - is_adding_item = false; - editing_item_index = i; - new_tax_rate = c; - } - } - - // When adding a new entry it is displayed at the bottom of the list of the country we are adding to. - // Check for end of list (for last country in the list), or check if next country differs from current country. - // If it is different we have reached the end of the list for the current country. - if (i == tax_rate_count-1 || (i < tax_rate_count-1 && strcmp(tax_rates[i+1].country_code, c.country_code) != 0)) - { - if (is_adding_item && strcmp(new_tax_rate.country_code, prev_country) == 0) - { - ImGui::TableNextRow(); - ImGui::TableSetColumnIndex(0); ImGui::Text(""); - ImGui::TableSetColumnIndex(1); - ImGui::InputFloat("##Rate", &new_tax_rate.rate, 1.0f, 5.0f, "%.2f"); - - if (new_tax_rate.rate < 0.0f) new_tax_rate.rate = 0.0f; - if (new_tax_rate.rate > 100.0f) new_tax_rate.rate = 100.0f; - - ImGui::SameLine(); - if (ImGui::Button(locale::get("form.save"))) { - is_editing_item = false; - is_adding_item = false; - - administration::tax_rate_add(new_tax_rate); - - ui::destroy_settings(); - ui::setup_settings(); - } - - ImGui::SameLine(); - if (ImGui::Button(locale::get("form.cancel"))) { - is_editing_item = false; - is_adding_item = false; - memops::zero(&new_tax_rate, sizeof(new_tax_rate)); - } - } + char localized_code[MAX_LEN_LONG_DESC]; + strops::format(localized_code, MAX_LEN_LONG_DESC, "taxrate.code.%s", c.internal_code); + ImGui::TableSetColumnIndex(0); ImGui::TextUnformatted(locale::get(localized_code)); + ImGui::TableSetColumnIndex(1); ImGui::Text("%.2f%%", c.rate); + ImGui::TableSetColumnIndex(2); + for (u32 x = 0; x < c.tax_section_count; x++) { + if (x == 0) ImGui::TextUnformatted(c.tax_sections[x]); + else ImGui::Text(", %s", c.tax_sections[x]); + if (x != c.tax_section_count-1) ImGui::SameLine(0, 0); } } ImGui::EndTable(); + ImGui::Spacing(); + ImGui::Spacing(); + ImGui::Spacing(); } + + type_iter = static_cast<tax_rate_type>(static_cast<int>(type_iter) + 1); + if (type_iter < TAX_RATE_TYPE_END) goto go_again; } static void draw_cost_centers() @@ -226,6 +115,7 @@ static void draw_cost_centers() ImGui::TableSetupColumn(locale::get("settings.costcenters.table.code"), ImGuiTableColumnFlags_WidthFixed, 140); ImGui::TableSetupColumn(locale::get("settings.costcenters.table.description")); + ImGui::TableHeadersRow(); for (u32 i = 0; i < cost_center_count; i++) { cost_center c = cost_centers[i]; @@ -443,20 +333,22 @@ void ui::draw_settings() ImGui::EndTabItem(); } - if (ImGui::BeginTabItem(locale::get("settings.table.vatrates"))) - { - draw_vat_rates(); - ImGui::EndTabItem(); - } - if (ImGui::BeginTabItem(locale::get("settings.table.costcenters"))) - { - draw_cost_centers(); - ImGui::EndTabItem(); - } - if (ImGui::BeginTabItem(locale::get("settings.table.services"))) - { - draw_services(); - ImGui::EndTabItem(); + if (administration::can_create_invoices()) { + if (ImGui::BeginTabItem(locale::get("settings.table.vatrates"))) + { + draw_vat_rates(); + ImGui::EndTabItem(); + } + if (ImGui::BeginTabItem(locale::get("settings.table.costcenters"))) + { + draw_cost_centers(); + ImGui::EndTabItem(); + } + if (ImGui::BeginTabItem(locale::get("settings.table.services"))) + { + draw_services(); + ImGui::EndTabItem(); + } } ImGui::EndTabBar(); } |
