diff options
| -rw-r--r-- | include/administration.hpp | 276 | ||||
| -rw-r--r-- | include/config.hpp | 4 | ||||
| -rw-r--r-- | include/locales.hpp | 20 | ||||
| -rw-r--r-- | include/strops.hpp | 7 | ||||
| -rw-r--r-- | src/administration.cpp | 338 | ||||
| -rw-r--r-- | src/administration_reader.cpp | 32 | ||||
| -rw-r--r-- | src/administration_writer.cpp | 64 | ||||
| -rw-r--r-- | src/ai_providers/DeepSeek.cpp | 2 | ||||
| -rw-r--r-- | src/ai_providers/openAI.cpp | 4 | ||||
| -rw-r--r-- | src/importer.cpp | 8 | ||||
| -rw-r--r-- | src/locales.cpp | 19 | ||||
| -rw-r--r-- | src/locales/en.cpp | 4 | ||||
| -rw-r--r-- | src/main.cpp | 2 | ||||
| -rw-r--r-- | src/strops.cpp | 9 | ||||
| -rw-r--r-- | src/ui/imgui_extensions.cpp | 14 | ||||
| -rw-r--r-- | src/ui/ui_contacts.cpp | 22 | ||||
| -rw-r--r-- | src/ui/ui_earnings.cpp | 4 | ||||
| -rw-r--r-- | src/ui/ui_expenses.cpp | 38 | ||||
| -rw-r--r-- | src/ui/ui_invoices.cpp | 54 | ||||
| -rw-r--r-- | src/ui/ui_main.cpp | 2 | ||||
| -rw-r--r-- | src/ui/ui_projects.cpp | 24 | ||||
| -rw-r--r-- | src/ui/ui_settings.cpp | 36 | ||||
| -rw-r--r-- | tests/administration_rw_tests.cpp | 166 | ||||
| -rw-r--r-- | tests/administration_validation_tests.cpp | 204 | ||||
| -rw-r--r-- | tests/peppol_write_tests.cpp | 20 | ||||
| -rw-r--r-- | tests/test_helper.cpp | 28 |
26 files changed, 704 insertions, 697 deletions
diff --git a/include/administration.hpp b/include/administration.hpp index 0d6b63a..4cd83ee 100644 --- a/include/administration.hpp +++ b/include/administration.hpp @@ -370,7 +370,7 @@ typedef struct // Service providers. ai_service ai_service; -} administration; +} ledger; // Add/Update result codes. #define A_ERR_SUCCESS 0 @@ -397,138 +397,142 @@ typedef struct typedef uint32_t a_err; -// Setup functions. -// ======================= -void administration_create_empty(char* save_file); -void administration_create_default(char* save_file); -void administration_create_from_file(char* save_file); - -// Callback functions. -// ======================= -void administration_set_data_changed_event_callback(data_changed_event ev); -void administration_set_data_deleted_event_callback(data_deleted_event ev); -void administration_set_invoice_changed_event_callback(invoice_changed_event ev); -void administration_set_contact_changed_event_callback(contact_changed_event ev); -void administration_set_taxrate_changed_event_callback(taxrate_changed_event ev); -void administration_set_costcenter_changed_event_callback(costcenter_changed_event ev); -void administration_set_project_changed_event_callback(project_changed_event ev); - -// Company info functions. -contact administration_company_info_get(); -void administration_company_info_import(contact data); -void administration_company_info_set(contact data); - -// Other functions. -// ======================= -char* administration_get_file_path(); -s32 administration_get_next_id(); -s32 administration_get_next_sequence_number(); -char* administration_get_currency_symbol_for_currency(char* code); -char* administration_get_default_currency(); -time_t administration_get_default_invoice_expire_duration(); -ai_service administration_get_ai_service(); - -void administration_set_file_path(char* path); -void administration_set_next_id(s32 nr); -void administration_set_next_sequence_number(s32 nr); -void administration_set_ai_service(ai_service provider); - -void administration_create_income_statement(income_statement* statement); -bool administration_can_create_invoices(); - -// Contact functions. -// ======================= -u32 administration_contact_count(); -contact administration_contact_create_empty(); -a_err administration_contact_import(contact data); -a_err administration_contact_add(contact data); -a_err administration_contact_update(contact data); -a_err administration_contact_remove(contact data); - -a_err administration_addressee_is_valid(delivery_info data); -a_err administration_contact_is_valid(contact data); -bool administration_contact_equals(contact c1, contact c2); - -a_err administration_contact_get_by_id(contact* buffer, char* id); -int administration_contact_get_autocompletions(contact* buffer, int buf_size, char* name); -u32 administration_contact_get_partial_list(u32 page_index, u32 page_size, contact* buffer); -u32 administration_contact_get_all(contact* buffer); - -// Project functions. -// ======================= -u32 administration_project_count(); -project administration_project_create_empty(); -a_err administration_project_import(project data); -a_err administration_project_add(project data); -a_err administration_project_update(project data); -a_err administration_project_remove(project data); -void administration_project_cancel(project data); - -a_err administration_project_is_valid(project data); - -char* administration_project_get_status_string(project data); -u32 administration_project_get_all(project* buffer); -u32 administration_project_get_partial_list(u32 page_index, u32 page_size, project* buffer); -a_err administration_project_get_by_id(project* buffer, char* id); - -// Tax rate functions. -// ======================= -u32 administration_tax_rate_count(); -tax_rate administration_tax_rate_create_empty(); -a_err administration_tax_rate_import(tax_rate data); -a_err administration_tax_rate_add(tax_rate data); -a_err administration_tax_rate_update(tax_rate data); - -a_err administration_tax_rate_get_by_shorthandle(tax_rate* buffer, char* handle); -a_err administration_tax_rate_get_by_id(tax_rate* buffer, char* id); -u32 administration_tax_rate_get_all(tax_rate* buffer); -u32 administration_tax_rate_get_by_country(tax_rate* buffer, u32 code_count, char** country_codes); - -// Cost center functions. -// ======================= -u32 administration_cost_center_count(); -cost_center administration_cost_center_create_empty(); -a_err administration_cost_center_import(cost_center data); -a_err administration_cost_center_add(cost_center data); -a_err administration_cost_center_update(cost_center data); - -a_err administration_cost_center_is_valid(cost_center data); - -u32 administration_cost_center_get_all(cost_center* buffer); -a_err administration_cost_center_get_by_id(cost_center* buffer, char* id); - -// Invoice functions. -// ======================= -u32 administration_invoice_count(); -u32 administration_invoice_get_incomming_count(); -u32 administration_invoice_get_outgoing_count(); -invoice administration_invoice_create_empty(); -a_err administration_invoice_import(invoice* invoice); -a_err administration_invoice_add(invoice* invoice); -a_err administration_invoice_update(invoice* invoice); -a_err administration_invoice_remove(invoice* invoice); -void administration_invoice_set_currency(invoice* invoice, char* currency); -invoice administration_invoice_create_copy(invoice* invoice); - -a_err administration_invoice_is_valid(invoice* invoice); - -char* administration_invoice_get_status_string(invoice* invoice); -u32 administration_invoice_get_partial_list_outgoing(u32 page_index, u32 page_size, invoice* buffer); -u32 administration_invoice_get_partial_list_incomming(u32 page_index, u32 page_size, invoice* buffer); -u32 administration_invoice_get_all(invoice* buffer); -a_err administration_invoice_get_by_id(invoice* buffer, char* id); -u32 administration_invoice_get_tax_rates(invoice* invoice, tax_rate* buffer); -bool administration_invoice_get_subtotal_for_tax_rate(invoice* invoice, tax_rate rate, tax_subtotal* buffer); - -// Billing item functions. -// ======================= -u32 administration_billing_item_count(invoice* invoice); -billing_item administration_billing_item_create_empty(); -a_err administration_billing_item_import_to_invoice(invoice* invoice, billing_item item); -a_err administration_billing_item_add_to_invoice(invoice* invoice, billing_item item); -a_err administration_billing_item_update_in_invoice(invoice* invoice, billing_item item); -a_err administration_billing_item_remove_from_invoice(invoice* invoice, billing_item item); - -a_err administration_billing_item_is_valid(billing_item item); - -u32 administration_billing_item_get_all_for_invoice(invoice* invoice, billing_item* buffer);
\ No newline at end of file +namespace administration { + + // Setup functions. + // ======================= + void create_empty(char* save_file); + void create_default(char* save_file); + void create_from_file(char* save_file); + + // Callback functions. + // ======================= + void set_data_changed_event_callback(data_changed_event ev); + void set_data_deleted_event_callback(data_deleted_event ev); + void set_invoice_changed_event_callback(invoice_changed_event ev); + void set_contact_changed_event_callback(contact_changed_event ev); + void set_taxrate_changed_event_callback(taxrate_changed_event ev); + void set_costcenter_changed_event_callback(costcenter_changed_event ev); + void set_project_changed_event_callback(project_changed_event ev); + + // Company info functions. + contact company_info_get(); + void company_info_import(contact data); + void company_info_set(contact data); + + // Other functions. + // ======================= + char* get_file_path(); + s32 get_next_id(); + s32 get_next_sequence_number(); + char* get_currency_symbol_for_currency(char* code); + char* get_default_currency(); + time_t get_default_invoice_expire_duration(); + ai_service get_ai_service(); + + void set_file_path(char* path); + void set_next_id(s32 nr); + void set_next_sequence_number(s32 nr); + void set_ai_service(ai_service provider); + + void create_income_statement(income_statement* statement); + bool can_create_invoices(); + + // Contact functions. + // ======================= + u32 contact_count(); + contact contact_create_empty(); + a_err contact_import(contact data); + a_err contact_add(contact data); + a_err contact_update(contact data); + a_err contact_remove(contact data); + + a_err addressee_is_valid(delivery_info data); + a_err contact_is_valid(contact data); + bool contact_equals(contact c1, contact c2); + + a_err contact_get_by_id(contact* buffer, char* id); + int contact_get_autocompletions(contact* buffer, int buf_size, char* name); + u32 contact_get_partial_list(u32 page_index, u32 page_size, contact* buffer); + u32 contact_get_all(contact* buffer); + + // Project functions. + // ======================= + u32 project_count(); + project project_create_empty(); + a_err project_import(project data); + a_err project_add(project data); + a_err project_update(project data); + a_err project_remove(project data); + void project_cancel(project data); + + a_err project_is_valid(project data); + + char* project_get_status_string(project data); + u32 project_get_all(project* buffer); + u32 project_get_partial_list(u32 page_index, u32 page_size, project* buffer); + a_err project_get_by_id(project* buffer, char* id); + + // Tax rate functions. + // ======================= + u32 tax_rate_count(); + tax_rate tax_rate_create_empty(); + a_err tax_rate_import(tax_rate data); + a_err tax_rate_add(tax_rate data); + a_err tax_rate_update(tax_rate data); + + a_err tax_rate_get_by_shorthandle(tax_rate* buffer, char* handle); + a_err tax_rate_get_by_id(tax_rate* buffer, char* id); + u32 tax_rate_get_all(tax_rate* buffer); + u32 tax_rate_get_by_country(tax_rate* buffer, u32 code_count, char** country_codes); + + // Cost center functions. + // ======================= + u32 cost_center_count(); + cost_center cost_center_create_empty(); + a_err cost_center_import(cost_center data); + a_err cost_center_add(cost_center data); + a_err cost_center_update(cost_center data); + + a_err cost_center_is_valid(cost_center data); + + u32 cost_center_get_all(cost_center* buffer); + a_err cost_center_get_by_id(cost_center* buffer, char* id); + + // Invoice functions. + // ======================= + u32 invoice_count(); + u32 invoice_get_incomming_count(); + u32 invoice_get_outgoing_count(); + invoice invoice_create_empty(); + a_err invoice_import(invoice* invoice); + a_err invoice_add(invoice* invoice); + a_err invoice_update(invoice* invoice); + a_err invoice_remove(invoice* invoice); + void invoice_set_currency(invoice* invoice, char* currency); + invoice invoice_create_copy(invoice* invoice); + + a_err invoice_is_valid(invoice* invoice); + + char* invoice_get_status_string(invoice* invoice); + u32 invoice_get_partial_list_outgoing(u32 page_index, u32 page_size, invoice* buffer); + u32 invoice_get_partial_list_incomming(u32 page_index, u32 page_size, invoice* buffer); + u32 invoice_get_all(invoice* buffer); + a_err invoice_get_by_id(invoice* buffer, char* id); + u32 invoice_get_tax_rates(invoice* invoice, tax_rate* buffer); + bool invoice_get_subtotal_for_tax_rate(invoice* invoice, tax_rate rate, tax_subtotal* buffer); + + // Billing item functions. + // ======================= + u32 billing_item_count(invoice* invoice); + billing_item billing_item_create_empty(); + a_err billing_item_import_to_invoice(invoice* invoice, billing_item item); + a_err billing_item_add_to_invoice(invoice* invoice, billing_item item); + a_err billing_item_update_in_invoice(invoice* invoice, billing_item item); + a_err billing_item_remove_from_invoice(invoice* invoice, billing_item item); + + a_err billing_item_is_valid(billing_item item); + + u32 billing_item_get_all_for_invoice(invoice* invoice, billing_item* buffer); + +}
\ No newline at end of file diff --git a/include/config.hpp b/include/config.hpp index fc15e84..5fe4a2c 100644 --- a/include/config.hpp +++ b/include/config.hpp @@ -19,12 +19,12 @@ #include "stdint.h" #include "imgui.h" -#define s8 int8_t +#define s8 int8_t #define s16 int16_t #define s32 int32_t #define s64 int64_t -#define u8 uint8_t +#define u8 uint8_t #define u16 uint16_t #define u32 uint32_t #define u64 uint64_t diff --git a/include/locales.hpp b/include/locales.hpp index ec6cc74..d0bf3f2 100644 --- a/include/locales.hpp +++ b/include/locales.hpp @@ -16,22 +16,12 @@ #pragma once -namespace locale { - - typedef struct { - const char* key; - const char* value; - } locale_entry; - - typedef struct { - const char* lang_code; - locale_entry* entries; - int entry_count; - } locale_map; - - extern locale_entry en_locales[]; - extern const int en_locale_count; +typedef struct { + const char* key; + const char* value; +} locale_entry; +namespace locale { const char* get_locale(); void set_locale(const char key[2]); const char* get(const char* key); diff --git a/include/strops.hpp b/include/strops.hpp index 5ecc99a..3a85543 100644 --- a/include/strops.hpp +++ b/include/strops.hpp @@ -16,15 +16,16 @@ #pragma once -#include <stdint.h> +#include "config.hpp" namespace strops { size_t copy(char *dst, const char *src, size_t size); char* contains(char* a, char* b); + bool equals(const char* a, const char* b); void replace(char *buf, size_t buf_size, const char *search, const char *replace); - void replace_int32(char *buf, size_t buf_size, const char *search, int32_t number); - void replace_int64(char *buf, size_t buf_size, const char *search, int64_t number); + void replace_int32(char *buf, size_t buf_size, const char *search, s32 number); + void replace_int64(char *buf, size_t buf_size, const char *search, s64 number); void replace_float(char *buf, size_t buf_size, const char *search, float number, int decimals); bool is_prefixed(const char *pre, const char *str); char* get_filename(const char* path); diff --git a/src/administration.cpp b/src/administration.cpp index f9770bd..1de99b4 100644 --- a/src/administration.cpp +++ b/src/administration.cpp @@ -27,17 +27,17 @@ #include "administration.hpp" #include "administration_writer.hpp" -administration g_administration; +static ledger g_administration; -data_changed_event data_changed_event_callback = 0; -data_deleted_event data_deleted_event_callback = 0; -invoice_changed_event invoice_changed_event_callback = 0; -contact_changed_event contact_changed_event_callback = 0; -taxrate_changed_event taxrate_changed_event_callback = 0; -costcenter_changed_event costcenter_changed_event_callback = 0; -project_changed_event project_changed_event_callback = 0; +static data_changed_event data_changed_event_callback = 0; +static data_deleted_event data_deleted_event_callback = 0; +static invoice_changed_event invoice_changed_event_callback = 0; +static contact_changed_event contact_changed_event_callback = 0; +static taxrate_changed_event taxrate_changed_event_callback = 0; +static costcenter_changed_event costcenter_changed_event_callback = 0; +static project_changed_event project_changed_event_callback = 0; -static s32 administration_create_id() +static s32 create_id() { return g_administration.next_id; } @@ -49,19 +49,19 @@ static int compare_tax_countries(const void *a, const void *b) return strcmp(objA->country_code, objB->country_code); } -time_t administration_get_default_invoice_expire_duration() +time_t administration::get_default_invoice_expire_duration() { return (30 * 24 * 60 * 60); // 30 days } -static char* administration_get_default_currency_for_country(char* country_code); +static char* get_default_currency_for_country(char* country_code); -static void administration_create_default_tax_rates() +static void create_default_tax_rates() { #define ADD_BRACKET(_country, _rate, _code)\ {\ tax_rate* tb = (tax_rate*)malloc(sizeof(tax_rate));\ - snprintf(tb->id, sizeof(tb->id), "T/%d", administration_create_id());\ + snprintf(tb->id, sizeof(tb->id), "T/%d", create_id());\ memcpy(tb->country_code, _country, sizeof(tb->country_code));\ tb->rate = _rate;\ memcpy(tb->category_code, _code, sizeof(tb->category_code));\ @@ -219,12 +219,12 @@ static void administration_create_default_tax_rates() list_sort(&g_administration.tax_rates, -1); } -static void administration_create_default_cost_centers() +static void create_default_cost_centers() { #define ADD_COSTCENTER(_description, _code)\ {\ cost_center* tb = (cost_center*)malloc(sizeof(cost_center));\ - snprintf(tb->id, sizeof(tb->id), "E/%d", administration_create_id());\ + snprintf(tb->id, sizeof(tb->id), "E/%d", create_id());\ memcpy(tb->description, _description, sizeof(tb->description));\ memcpy(tb->code, _code, sizeof(tb->code));\ list_append(&g_administration.cost_centers, tb);\ @@ -246,44 +246,44 @@ static void administration_create_default_cost_centers() ADD_COSTCENTER("costcenter.other_specialized", "OTHR"); } -static s32 administration_create_sequence_number() +static s32 create_sequence_number() { return g_administration.next_sequence_number; } // Callback functions. // ======================= -void administration_set_data_changed_event_callback(data_changed_event ev) +void administration::set_data_changed_event_callback(data_changed_event ev) { data_changed_event_callback = ev; } -void administration_set_data_deleted_event_callback(data_deleted_event ev) +void administration::set_data_deleted_event_callback(data_deleted_event ev) { data_deleted_event_callback = ev; } -void administration_set_invoice_changed_event_callback(invoice_changed_event ev) +void administration::set_invoice_changed_event_callback(invoice_changed_event ev) { invoice_changed_event_callback = ev; } -void administration_set_contact_changed_event_callback(contact_changed_event ev) +void administration::set_contact_changed_event_callback(contact_changed_event ev) { contact_changed_event_callback = ev; } -void administration_set_taxrate_changed_event_callback(taxrate_changed_event ev) +void administration::set_taxrate_changed_event_callback(taxrate_changed_event ev) { taxrate_changed_event_callback = ev; } -void administration_set_costcenter_changed_event_callback(costcenter_changed_event ev) +void administration::set_costcenter_changed_event_callback(costcenter_changed_event ev) { costcenter_changed_event_callback = ev; } -void administration_set_project_changed_event_callback(project_changed_event ev) +void administration::set_project_changed_event_callback(project_changed_event ev) { project_changed_event_callback = ev; } @@ -331,7 +331,7 @@ void administration_destroy() administration_destroy_list(&g_administration.cost_centers); } -void administration_create_from_file(char* save_file) +void administration::create_from_file(char* save_file) { if (is_initialized) administration_destroy(); administration_create(); @@ -340,7 +340,7 @@ void administration_create_from_file(char* save_file) strops::copy(g_administration.program_version, config::PROGRAM_VERSION, sizeof(g_administration.program_version)); } -void administration_create_empty(char* save_file) +void administration::create_empty(char* save_file) { if (is_initialized) administration_destroy(); administration_create(); @@ -350,61 +350,61 @@ void administration_create_empty(char* save_file) strops::copy(g_administration.path, save_file, sizeof(g_administration.path)); strops::copy(g_administration.program_version, config::PROGRAM_VERSION, sizeof(g_administration.program_version)); - administration_company_info_set(administration_contact_create_empty()); + administration::company_info_set(administration::contact_create_empty()); } -void administration_create_default(char* save_file) +void administration::create_default(char* save_file) { - administration_create_empty(save_file); - administration_create_default_tax_rates(); - administration_create_default_cost_centers(); - //administration_create_debug_data(); + administration::create_empty(save_file); + create_default_tax_rates(); + create_default_cost_centers(); + //administration::create_debug_data(); } // Other functions. // ======================= -ai_service administration_get_ai_service() +ai_service administration::get_ai_service() { return g_administration.ai_service; } -void administration_set_ai_service(ai_service provider) +void administration::set_ai_service(ai_service provider) { g_administration.ai_service = provider; if (data_changed_event_callback) data_changed_event_callback(); } -void administration_set_next_id(s32 nr) +void administration::set_next_id(s32 nr) { g_administration.next_id = nr; } -void administration_set_next_sequence_number(s32 nr) +void administration::set_next_sequence_number(s32 nr) { g_administration.next_sequence_number = nr; } -s32 administration_get_next_id() +s32 administration::get_next_id() { return g_administration.next_id; } -s32 administration_get_next_sequence_number() +s32 administration::get_next_sequence_number() { return g_administration.next_sequence_number; } -bool administration_can_create_invoices() +bool administration::can_create_invoices() { - return administration_contact_is_valid(g_administration.company_info) == A_ERR_SUCCESS; + return administration::contact_is_valid(g_administration.company_info) == A_ERR_SUCCESS; } -char* administration_get_default_currency() +char* administration::get_default_currency() { return g_administration.default_currency; } -char* administration_get_currency_symbol_for_currency(char* code) +char* administration::get_currency_symbol_for_currency(char* code) { // Major European currencies if (strcmp(code, "EUR") == 0) return "€"; // Euro @@ -458,7 +458,7 @@ static void administration_debug_print_income_statement(income_statement* statem project_report pr = report.reports[x]; project proj; - administration_project_get_by_id(&proj, pr.project_id); + administration::project_get_by_id(&proj, pr.project_id); printf("PROJECT: %s\n", proj.description); printf(" revenue: %.2f\n", pr.revenue); printf(" taxes: %.2f\n", pr.taxes); @@ -469,7 +469,7 @@ static void administration_debug_print_income_statement(income_statement* statem project_expense expense = pr.expenses[y]; cost_center costcenter; - administration_cost_center_get_by_id(&costcenter, expense.cost_center_id); + administration::cost_center_get_by_id(&costcenter, expense.cost_center_id); printf(" %s: %.2f\n", costcenter.code, expense.total); } } @@ -479,17 +479,17 @@ static void administration_debug_print_income_statement(income_statement* statem } #endif -void administration_create_income_statement(income_statement* statement) +void administration::create_income_statement(income_statement* statement) { STOPWATCH_START; assert(statement); statement->quarter_count = 0; - u32 invoice_count = administration_invoice_count(); + u32 invoice_count = administration::invoice_count(); if (invoice_count == 0) return; invoice* invoice_buffer = (invoice*)malloc(sizeof(invoice)*invoice_count); - invoice_count = administration_invoice_get_all(invoice_buffer); + invoice_count = administration::invoice_get_all(invoice_buffer); // Find oldest and youngest invoice. time_t oldest = INT64_MAX; @@ -531,14 +531,14 @@ void administration_create_income_statement(income_statement* statement) quarter.profit = 0.0f; snprintf(quarter.quarter_str, MAX_LEN_SHORT_DESC, "%dQ%d", quarter.quarter+1, quarter.year); - project_count = administration_project_count(); + project_count = administration::project_count(); project* project_buffer = (project*)malloc(sizeof(project)*project_count); - project_count = administration_project_get_all(project_buffer); + project_count = administration::project_get_all(project_buffer); assert(project_count <= MAX_LEN_QUARTERLY_REPORT_PROJECTS); - costcenter_count = administration_cost_center_count(); + costcenter_count = administration::cost_center_count(); cost_center* costcenter_buffer = (cost_center*)malloc(sizeof(cost_center)*costcenter_count); - costcenter_count = administration_cost_center_get_all(costcenter_buffer); + costcenter_count = administration::cost_center_get_all(costcenter_buffer); assert(costcenter_count <= MAX_LEN_PROJECT_REPORT_COSTCENTERS); for (u32 x = 0; x < project_count; x++) @@ -671,32 +671,32 @@ void administration_create_income_statement(income_statement* statement) logger::info("Created income statement in %.3fms.", STOPWATCH_TIME); } -void administration_set_file_path(char* path) +void administration::set_file_path(char* path) { strops::copy(g_administration.path, path, MAX_LEN_PATH); } -char* administration_get_file_path() +char* administration::get_file_path() { return strlen(g_administration.path) == 0 ? NULL : g_administration.path; } -contact administration_company_info_get() +contact administration::company_info_get() { return g_administration.company_info; } -void administration_company_info_import(contact data) +void administration::company_info_import(contact data) { g_administration.company_info = data; - strops::copy(g_administration.default_currency, administration_get_default_currency_for_country(g_administration.company_info.address.country_code), MAX_LEN_CURRENCY); + strops::copy(g_administration.default_currency, get_default_currency_for_country(g_administration.company_info.address.country_code), MAX_LEN_CURRENCY); } -void administration_company_info_set(contact data) +void administration::company_info_set(contact data) { strops::copy(data.id, MY_COMPANY_ID, sizeof(data.id)); g_administration.company_info = data; - strops::copy(g_administration.default_currency, administration_get_default_currency_for_country(g_administration.company_info.address.country_code), MAX_LEN_CURRENCY); + strops::copy(g_administration.default_currency, get_default_currency_for_country(g_administration.company_info.address.country_code), MAX_LEN_CURRENCY); if (contact_changed_event_callback) contact_changed_event_callback(&data); if (data_changed_event_callback) data_changed_event_callback(); @@ -704,14 +704,14 @@ void administration_company_info_set(contact data) // Contact functions. // ======================= -a_err administration_contact_import(contact data) +a_err administration::contact_import(contact data) { - a_err result = administration_contact_is_valid(data); + a_err result = administration::contact_is_valid(data); if (result != A_ERR_SUCCESS) return result; if (strcmp(data.id, MY_COMPANY_ID) == 0) { - administration_company_info_import(data); + administration::company_info_import(data); return A_ERR_SUCCESS; } @@ -726,9 +726,9 @@ a_err administration_contact_import(contact data) return A_ERR_SUCCESS; } -a_err administration_contact_add(contact data) +a_err administration::contact_add(contact data) { - a_err result = administration_contact_is_valid(data); + a_err result = administration::contact_is_valid(data); if (result != A_ERR_SUCCESS) return result; contact* new_contact = (contact*)malloc(sizeof(contact)); @@ -747,9 +747,9 @@ a_err administration_contact_add(contact data) return A_ERR_SUCCESS; } -a_err administration_contact_update(contact data) +a_err administration::contact_update(contact data) { - a_err result = administration_contact_is_valid(data); + a_err result = administration::contact_is_valid(data); if (result != A_ERR_SUCCESS) return result; list_iterator_start(&g_administration.contacts); @@ -771,7 +771,7 @@ a_err administration_contact_update(contact data) return A_ERR_NOT_FOUND; } -a_err administration_contact_remove(contact data) +a_err administration::contact_remove(contact data) { list_iterator_start(&g_administration.contacts); while (list_iterator_hasnext(&g_administration.contacts)) { @@ -792,12 +792,12 @@ a_err administration_contact_remove(contact data) return A_ERR_NOT_FOUND; } -u32 administration_contact_count() +u32 administration::contact_count() { return list_size(&g_administration.contacts); } -u32 administration_contact_get_all(contact* buffer) +u32 administration::contact_get_all(contact* buffer) { u32 write_cursor = 0; @@ -811,7 +811,7 @@ u32 administration_contact_get_all(contact* buffer) return write_cursor; } -u32 administration_contact_get_partial_list(u32 page_index, u32 page_size, contact* buffer) +u32 administration::contact_get_partial_list(u32 page_index, u32 page_size, contact* buffer) { assert(buffer); @@ -833,7 +833,7 @@ u32 administration_contact_get_partial_list(u32 page_index, u32 page_size, conta return write_cursor; } -a_err administration_contact_get_by_id(contact* buffer, char* id) +a_err administration::contact_get_by_id(contact* buffer, char* id) { // Include company info in contact lookup because this might be // used in forms. @@ -859,7 +859,7 @@ a_err administration_contact_get_by_id(contact* buffer, char* id) return result; } -int administration_contact_get_autocompletions(contact* buffer, int buf_size, char* name) +int administration::contact_get_autocompletions(contact* buffer, int buf_size, char* name) { int write_cursor = 0; if (name[0] == '\0') return 0; @@ -878,7 +878,7 @@ int administration_contact_get_autocompletions(contact* buffer, int buf_size, ch return write_cursor; } -a_err administration_addressee_is_valid(delivery_info data) +a_err administration::addressee_is_valid(delivery_info data) { a_err result = A_ERR_SUCCESS; if (strlen(data.name) == 0) result |= A_ERR_MISSING_NAME; @@ -890,7 +890,7 @@ a_err administration_addressee_is_valid(delivery_info data) return result; } -a_err administration_contact_is_valid(contact data) +a_err administration::contact_is_valid(contact data) { a_err result = A_ERR_SUCCESS; if (strlen(data.name) == 0) result |= A_ERR_MISSING_NAME; @@ -909,27 +909,27 @@ a_err administration_contact_is_valid(contact data) return result; } -contact administration_contact_create_empty() +contact administration::contact_create_empty() { contact result; memset(&result, 0, sizeof(contact)); - snprintf(result.id, sizeof(result.id), "C/%d", administration_create_id()); + snprintf(result.id, sizeof(result.id), "C/%d", create_id()); return result; } -bool administration_contact_equals(contact c1, contact c2) +bool administration::contact_equals(contact c1, contact c2) { return memcmp(&c1, &c2, sizeof(contact)) == 0; } // Project functions. // ======================= -u32 administration_project_count() +u32 administration::project_count() { return list_size(&g_administration.projects); } -a_err administration_project_get_by_id(project* buffer, char* id) +a_err administration::project_get_by_id(project* buffer, char* id) { assert(buffer); @@ -948,7 +948,7 @@ a_err administration_project_get_by_id(project* buffer, char* id) return A_ERR_NOT_FOUND; } -u32 administration_project_get_all(project* buffer) +u32 administration::project_get_all(project* buffer) { u32 write_cursor = 0; @@ -962,7 +962,7 @@ u32 administration_project_get_all(project* buffer) return write_cursor; } -u32 administration_project_get_partial_list(u32 page_index, u32 page_size, project* buffer) +u32 administration::project_get_partial_list(u32 page_index, u32 page_size, project* buffer) { assert(buffer); @@ -984,20 +984,20 @@ u32 administration_project_get_partial_list(u32 page_index, u32 page_size, proje return write_cursor; } -void administration_project_cancel(project data) +void administration::project_cancel(project data) { data.end_date = time(NULL); data.state = project_state::PROJECT_CANCELLED; - administration_project_update(data); + administration::project_update(data); } -a_err administration_project_is_valid(project data) +a_err administration::project_is_valid(project data) { if (strlen(data.description) == 0) return A_ERR_MISSING_DESCRIPTION; return A_ERR_SUCCESS; } -char* administration_project_get_status_string(project data) +char* administration::project_get_status_string(project data) { switch(data.state) { @@ -1009,9 +1009,9 @@ char* administration_project_get_status_string(project data) return ""; } -a_err administration_project_import(project data) +a_err administration::project_import(project data) { - a_err result = administration_project_is_valid(data); + a_err result = administration::project_is_valid(data); if (result != A_ERR_SUCCESS) return result; project* new_project = (project*)malloc(sizeof(project)); @@ -1025,9 +1025,9 @@ a_err administration_project_import(project data) return A_ERR_SUCCESS; } -a_err administration_project_add(project data) +a_err administration::project_add(project data) { - a_err result = administration_project_is_valid(data); + a_err result = administration::project_is_valid(data); if (result != A_ERR_SUCCESS) return result; project* new_project = (project*)malloc(sizeof(project)); @@ -1047,9 +1047,9 @@ a_err administration_project_add(project data) return A_ERR_SUCCESS; } -a_err administration_project_update(project data) +a_err administration::project_update(project data) { - a_err result = administration_project_is_valid(data); + a_err result = administration::project_is_valid(data); if (result != A_ERR_SUCCESS) return result; list_iterator_start(&g_administration.projects); @@ -1071,7 +1071,7 @@ a_err administration_project_update(project data) return A_ERR_NOT_FOUND; } -a_err administration_project_remove(project data) +a_err administration::project_remove(project data) { list_iterator_start(&g_administration.projects); while (list_iterator_hasnext(&g_administration.projects)) { @@ -1092,7 +1092,7 @@ a_err administration_project_remove(project data) return A_ERR_NOT_FOUND; } -project administration_project_create_empty() +project administration::project_create_empty() { project result; memset(&result, 0, sizeof(project)); @@ -1100,23 +1100,23 @@ project administration_project_create_empty() result.start_date = time(NULL); result.start_date -= (result.start_date % 86400); result.end_date = 0; - snprintf(result.id, sizeof(result.id), "P/%d", administration_create_id()); + snprintf(result.id, sizeof(result.id), "P/%d", create_id()); return result; } // Tax rate functions. // ======================= -tax_rate administration_tax_rate_create_empty() +tax_rate administration::tax_rate_create_empty() { tax_rate result; memset(&result, 0, sizeof(tax_rate)); - snprintf(result.id, sizeof(result.id), "T/%d", administration_create_id()); + snprintf(result.id, sizeof(result.id), "T/%d", create_id()); snprintf(result.category_code, sizeof(result.category_code), "S"); // S = standard rate. return result; } -a_err administration_tax_rate_get_by_shorthandle(tax_rate* buffer, char* handle) +a_err administration::tax_rate_get_by_shorthandle(tax_rate* buffer, char* handle) { assert(buffer); @@ -1138,7 +1138,7 @@ a_err administration_tax_rate_get_by_shorthandle(tax_rate* buffer, char* handle) return A_ERR_NOT_FOUND; } -a_err administration_tax_rate_get_by_id(tax_rate* buffer, char* id) +a_err administration::tax_rate_get_by_id(tax_rate* buffer, char* id) { assert(buffer); @@ -1157,12 +1157,12 @@ a_err administration_tax_rate_get_by_id(tax_rate* buffer, char* id) return A_ERR_NOT_FOUND; } -u32 administration_tax_rate_count() +u32 administration::tax_rate_count() { return list_size(&g_administration.tax_rates); } -a_err administration_tax_rate_import(tax_rate data) +a_err administration::tax_rate_import(tax_rate data) { tax_rate* tb = (tax_rate*)malloc(sizeof(tax_rate)); if (!tb) return A_ERR_GENERIC; @@ -1177,7 +1177,7 @@ a_err administration_tax_rate_import(tax_rate data) return A_ERR_SUCCESS; } -a_err administration_tax_rate_add(tax_rate data) +a_err administration::tax_rate_add(tax_rate data) { tax_rate* tb = (tax_rate*)malloc(sizeof(tax_rate)); if (!tb) return A_ERR_GENERIC; @@ -1198,7 +1198,7 @@ a_err administration_tax_rate_add(tax_rate data) return A_ERR_SUCCESS; } -u32 administration_tax_rate_get_by_country(tax_rate* buffer, u32 code_count, char** tax_country_codes) +u32 administration::tax_rate_get_by_country(tax_rate* buffer, u32 code_count, char** tax_country_codes) { assert(buffer); @@ -1225,7 +1225,7 @@ u32 administration_tax_rate_get_by_country(tax_rate* buffer, u32 code_count, cha return write_cursor; } -u32 administration_tax_rate_get_all(tax_rate* buffer) +u32 administration::tax_rate_get_all(tax_rate* buffer) { assert(buffer); @@ -1241,7 +1241,7 @@ u32 administration_tax_rate_get_all(tax_rate* buffer) return write_cursor; } -a_err administration_tax_rate_update(tax_rate data) +a_err administration::tax_rate_update(tax_rate data) { list_iterator_start(&g_administration.tax_rates); while (list_iterator_hasnext(&g_administration.tax_rates)) { @@ -1264,20 +1264,20 @@ a_err administration_tax_rate_update(tax_rate data) // Cost center functions. // ======================= -u32 administration_cost_center_count() +u32 administration::cost_center_count() { return list_size(&g_administration.cost_centers); } -cost_center administration_cost_center_create_empty() +cost_center administration::cost_center_create_empty() { cost_center cc; memset(&cc, 0, sizeof(cost_center)); - snprintf(cc.id, sizeof(cc.id), "E/%d", administration_create_id()); + snprintf(cc.id, sizeof(cc.id), "E/%d", create_id()); return cc; } -a_err administration_cost_center_get_by_id(cost_center* buffer, char* id) +a_err administration::cost_center_get_by_id(cost_center* buffer, char* id) { assert(buffer); @@ -1296,7 +1296,7 @@ a_err administration_cost_center_get_by_id(cost_center* buffer, char* id) return A_ERR_NOT_FOUND; } -u32 administration_cost_center_get_all(cost_center* buffer) +u32 administration::cost_center_get_all(cost_center* buffer) { assert(buffer); @@ -1312,7 +1312,7 @@ u32 administration_cost_center_get_all(cost_center* buffer) return write_cursor; } -static bool administration_get_cost_center_by_code(char* code, cost_center* buffer) +static bool get_cost_center_by_code(char* code, cost_center* buffer) { bool result = false; list_iterator_start(&g_administration.cost_centers); @@ -1329,21 +1329,21 @@ static bool administration_get_cost_center_by_code(char* code, cost_center* buff return result; } -a_err administration_cost_center_is_valid(cost_center data) +a_err administration::cost_center_is_valid(cost_center data) { cost_center lookup; a_err result = A_ERR_SUCCESS; if (strlen(data.code) == 0) result |= A_ERR_MISSING_CODE; if (strlen(data.description) == 0) result |= A_ERR_MISSING_DESCRIPTION; - if (administration_get_cost_center_by_code(data.code, &lookup)) result |= A_ERR_CODE_EXISTS; + if (get_cost_center_by_code(data.code, &lookup)) result |= A_ERR_CODE_EXISTS; return result; } -a_err administration_cost_center_import(cost_center data) +a_err administration::cost_center_import(cost_center data) { - a_err result = administration_cost_center_is_valid(data); + a_err result = administration::cost_center_is_valid(data); if (result != A_ERR_SUCCESS) return result; cost_center* tb = (cost_center*)malloc(sizeof(cost_center)); @@ -1356,9 +1356,9 @@ a_err administration_cost_center_import(cost_center data) return A_ERR_SUCCESS; } -a_err administration_cost_center_add(cost_center data) +a_err administration::cost_center_add(cost_center data) { - a_err result = administration_cost_center_is_valid(data); + a_err result = administration::cost_center_is_valid(data); if (result != A_ERR_SUCCESS) return result; cost_center* tb = (cost_center*)malloc(sizeof(cost_center)); @@ -1377,9 +1377,9 @@ a_err administration_cost_center_add(cost_center data) return A_ERR_SUCCESS; } -a_err administration_cost_center_update(cost_center data) +a_err administration::cost_center_update(cost_center data) { - a_err result = administration_cost_center_is_valid(data); + a_err result = administration::cost_center_is_valid(data); if (result != A_ERR_CODE_EXISTS) return result; list_iterator_start(&g_administration.cost_centers); @@ -1403,7 +1403,7 @@ a_err administration_cost_center_update(cost_center data) // Invoice functions. // ======================= -static char* administration_get_default_currency_for_country(char* country_code) +static char* get_default_currency_for_country(char* country_code) { if (country_code == NULL || strlen(country_code) != 2) return "EUR"; // default @@ -1443,19 +1443,19 @@ static char* administration_get_default_currency_for_country(char* country_code) return "EUR"; } -invoice administration_invoice_create_empty() +invoice administration::invoice_create_empty() { invoice result; memset(&result, 0, sizeof(invoice)); - snprintf(result.id, sizeof(result.id), "I/%d", administration_create_id()); - snprintf(result.sequential_number, sizeof(result.id), "INV%010d", administration_create_sequence_number()); + snprintf(result.id, sizeof(result.id), "I/%d", create_id()); + snprintf(result.sequential_number, sizeof(result.id), "INV%010d", create_sequence_number()); result.issued_at = time(NULL); result.issued_at -= (result.issued_at % 86400); result.delivered_at = result.issued_at; - result.expires_at = result.issued_at + administration_get_default_invoice_expire_duration(); + result.expires_at = result.issued_at + administration::get_default_invoice_expire_duration(); list_init(&result.billing_items); // @leak - strops::copy(result.currency, administration_get_default_currency_for_country(g_administration.company_info.address.country_code), MAX_LEN_CURRENCY); + strops::copy(result.currency, get_default_currency_for_country(g_administration.company_info.address.country_code), MAX_LEN_CURRENCY); return result; } @@ -1477,7 +1477,7 @@ static void administration_recalculate_invoice_totals(invoice* invoice) } list_iterator_stop(&invoice->billing_items); - if (strcmp(invoice->currency, administration_get_default_currency()) == 0) { + if (strcmp(invoice->currency, administration::get_default_currency()) == 0) { invoice->tax = invoice->orig_tax; invoice->total = invoice->orig_total; invoice->net = invoice->orig_net; @@ -1485,7 +1485,7 @@ static void administration_recalculate_invoice_totals(invoice* invoice) } } -void administration_invoice_set_currency(invoice* invoice, char* currency) +void administration::invoice_set_currency(invoice* invoice, char* currency) { strops::copy(invoice->currency, currency, MAX_LEN_CURRENCY); @@ -1498,25 +1498,25 @@ void administration_invoice_set_currency(invoice* invoice, char* currency) list_iterator_stop(&invoice->billing_items); } -a_err administration_invoice_is_valid(invoice* invoice) +a_err administration::invoice_is_valid(invoice* invoice) { a_err result = A_ERR_SUCCESS; if (list_size(&invoice->billing_items) == 0) result |= A_ERR_MISSING_BILLING_ITEMS; - if (invoice->is_triangulation && administration_addressee_is_valid(invoice->addressee) != A_ERR_SUCCESS) result |= A_ERR_INVALID_ADDRESSEE; - if (administration_contact_is_valid(invoice->customer) != A_ERR_SUCCESS) result |= A_ERR_INVALID_CUSTOMER; - if (administration_contact_is_valid(invoice->supplier) != A_ERR_SUCCESS) result |= A_ERR_INVALID_SUPPLIER; + if (invoice->is_triangulation && administration::addressee_is_valid(invoice->addressee) != A_ERR_SUCCESS) result |= A_ERR_INVALID_ADDRESSEE; + if (administration::contact_is_valid(invoice->customer) != A_ERR_SUCCESS) result |= A_ERR_INVALID_CUSTOMER; + if (administration::contact_is_valid(invoice->supplier) != A_ERR_SUCCESS) result |= A_ERR_INVALID_SUPPLIER; list_iterator_start(&invoice->billing_items); while (list_iterator_hasnext(&invoice->billing_items)) { billing_item* c = (billing_item *)list_iterator_next(&invoice->billing_items); - if (administration_billing_item_is_valid(*c) != A_ERR_SUCCESS) result |= A_ERR_INVALID_BILLING_ITEM; + if (administration::billing_item_is_valid(*c) != A_ERR_SUCCESS) result |= A_ERR_INVALID_BILLING_ITEM; } list_iterator_stop(&invoice->billing_items); return result; } -a_err administration_invoice_remove(invoice* inv) +a_err administration::invoice_remove(invoice* inv) { list_iterator_start(&g_administration.invoices); while (list_iterator_hasnext(&g_administration.invoices)) { @@ -1541,7 +1541,7 @@ a_err administration_invoice_remove(invoice* inv) return A_ERR_NOT_FOUND; } -static void _administration_invoice_set_addressee(invoice* inv, contact contact) +static void invoice_set_addressee(invoice* inv, contact contact) { memcpy(&inv->addressee.name, &contact.name, sizeof(inv->addressee.name)); memcpy(&inv->addressee.address.address1, &contact.address.address1, sizeof(inv->addressee.address.address1)); @@ -1552,13 +1552,13 @@ static void _administration_invoice_set_addressee(invoice* inv, contact contact) memcpy(&inv->addressee.address.country_code, &contact.address.country_code, sizeof(inv->addressee.address.country_code)); } -a_err administration_invoice_update(invoice* inv) +a_err administration::invoice_update(invoice* inv) { - a_err result = administration_invoice_is_valid(inv); + a_err result = administration::invoice_is_valid(inv); if (result != A_ERR_SUCCESS) return result; // Addressee is same as customer. - if (!inv->is_triangulation) _administration_invoice_set_addressee(inv, inv->customer); + if (!inv->is_triangulation) invoice_set_addressee(inv, inv->customer); list_iterator_start(&g_administration.invoices); while (list_iterator_hasnext(&g_administration.invoices)) { @@ -1579,9 +1579,9 @@ a_err administration_invoice_update(invoice* inv) return A_ERR_NOT_FOUND; } -a_err administration_invoice_import(invoice* inv) +a_err administration::invoice_import(invoice* inv) { - //a_err result = administration_invoice_is_valid(inv); + //a_err result = administration::invoice_is_valid(inv); //if (result != A_ERR_SUCCESS) return result; inv->is_triangulation = !(memcmp(&inv->addressee.address, &inv->customer.address, sizeof(address)) == 0); @@ -1591,7 +1591,7 @@ a_err administration_invoice_import(invoice* inv) inv->expires_at -= (inv->expires_at % 86400); inv->is_outgoing = strcmp(inv->supplier.id, MY_COMPANY_ID) == 0; - invoice copy = administration_invoice_create_copy(inv); // Create copy to make copy of billing item list. + invoice copy = administration::invoice_create_copy(inv); // Create copy to make copy of billing item list. invoice* new_inv = (invoice*)malloc(sizeof(invoice)); if (!new_inv) return A_ERR_GENERIC; @@ -1604,12 +1604,12 @@ a_err administration_invoice_import(invoice* inv) return A_ERR_SUCCESS; } -a_err administration_invoice_add(invoice* inv) +a_err administration::invoice_add(invoice* inv) { - a_err result = administration_invoice_is_valid(inv); + a_err result = administration::invoice_is_valid(inv); if (result != A_ERR_SUCCESS) return result; - if (!inv->is_triangulation) _administration_invoice_set_addressee(inv, inv->customer); + if (!inv->is_triangulation) invoice_set_addressee(inv, inv->customer); inv->issued_at -= (inv->issued_at % 86400); inv->delivered_at -= (inv->delivered_at % 86400); @@ -1622,7 +1622,7 @@ a_err administration_invoice_add(invoice* inv) strops::copy(inv->payment_means.service_provider_id, "", sizeof(inv->payment_means.service_provider_id)); strops::copy(inv->payment_means.payer_bank_account, inv->customer.bank_account, sizeof(inv->payment_means.payer_bank_account)); - invoice copy = administration_invoice_create_copy(inv); // Create copy to make copy of billing item list. + invoice copy = administration::invoice_create_copy(inv); // Create copy to make copy of billing item list. invoice* new_inv = (invoice*)malloc(sizeof(invoice)); if (!new_inv) return A_ERR_GENERIC; @@ -1644,9 +1644,9 @@ a_err administration_invoice_add(invoice* inv) return A_ERR_SUCCESS; } -invoice administration_invoice_create_copy(invoice* inv) +invoice administration::invoice_create_copy(invoice* inv) { - invoice new_inv = administration_invoice_create_empty(); + invoice new_inv = administration::invoice_create_empty(); list_t billing_items = new_inv.billing_items; memcpy((void*)&new_inv, (void*)inv, sizeof(invoice)); @@ -1665,22 +1665,22 @@ invoice administration_invoice_create_copy(invoice* inv) return new_inv; } -u32 administration_invoice_count() +u32 administration::invoice_count() { return list_size(&g_administration.invoices); } -u32 administration_invoice_get_incomming_count() +u32 administration::invoice_get_incomming_count() { return g_administration.expense_count; } -u32 administration_invoice_get_outgoing_count() +u32 administration::invoice_get_outgoing_count() { return g_administration.invoice_count; } -a_err administration_invoice_get_by_id(invoice* buffer, char* id) +a_err administration::invoice_get_by_id(invoice* buffer, char* id) { a_err result = A_ERR_NOT_FOUND; list_iterator_start(&g_administration.invoices); @@ -1698,7 +1698,7 @@ a_err administration_invoice_get_by_id(invoice* buffer, char* id) return result; } -u32 administration_invoice_get_all(invoice* buffer) +u32 administration::invoice_get_all(invoice* buffer) { assert(buffer); @@ -1714,7 +1714,7 @@ u32 administration_invoice_get_all(invoice* buffer) return write_cursor; } -bool administration_invoice_get_subtotal_for_tax_rate(invoice* invoice, tax_rate rate, tax_subtotal* buffer) +bool administration::invoice_get_subtotal_for_tax_rate(invoice* invoice, tax_rate rate, tax_subtotal* buffer) { bool result = false; @@ -1741,7 +1741,7 @@ bool administration_invoice_get_subtotal_for_tax_rate(invoice* invoice, tax_rate return result; } -u32 administration_invoice_get_tax_rates(invoice* invoice, tax_rate* buffer) +u32 administration::invoice_get_tax_rates(invoice* invoice, tax_rate* buffer) { u32 write_cursor = 0; @@ -1750,7 +1750,7 @@ u32 administration_invoice_get_tax_rates(invoice* invoice, tax_rate* buffer) billing_item c = *(billing_item *)list_iterator_next(&invoice->billing_items); tax_rate rate; - a_err found = administration_tax_rate_get_by_id(&rate, c.tax_rate_id); + a_err found = administration::tax_rate_get_by_id(&rate, c.tax_rate_id); if (found == A_ERR_SUCCESS) { bool exists = false; @@ -1771,7 +1771,7 @@ u32 administration_invoice_get_tax_rates(invoice* invoice, tax_rate* buffer) return write_cursor; } -static u32 administration_invoice_get_partial_list(u32 page_index, u32 page_size, invoice* buffer, bool want_outgoing) +static u32 invoice_get_partial_list(u32 page_index, u32 page_size, invoice* buffer, bool want_outgoing) { assert(buffer); u32 write_cursor = 0; @@ -1794,17 +1794,17 @@ static u32 administration_invoice_get_partial_list(u32 page_index, u32 page_size return write_cursor; } -u32 administration_invoice_get_partial_list_outgoing(u32 page_index, u32 page_size, invoice* buffer) +u32 administration::invoice_get_partial_list_outgoing(u32 page_index, u32 page_size, invoice* buffer) { - return administration_invoice_get_partial_list(page_index, page_size, buffer, 1); + return invoice_get_partial_list(page_index, page_size, buffer, 1); } -u32 administration_invoice_get_partial_list_incomming(u32 page_index, u32 page_size, invoice* buffer) +u32 administration::invoice_get_partial_list_incomming(u32 page_index, u32 page_size, invoice* buffer) { - return administration_invoice_get_partial_list(page_index, page_size, buffer, 0); + return invoice_get_partial_list(page_index, page_size, buffer, 0); } -char* administration_invoice_get_status_string(invoice* invoice) +char* administration::invoice_get_status_string(invoice* invoice) { switch(invoice->status) { @@ -1851,7 +1851,7 @@ static void administration_recalculate_billing_item_totals(billing_item* item) } tax_rate rate; - if (administration_tax_rate_get_by_id(&rate, item->tax_rate_id) == A_ERR_SUCCESS) + if (administration::tax_rate_get_by_id(&rate, item->tax_rate_id) == A_ERR_SUCCESS) { item->tax = item->net * (rate.rate/100.0f); } @@ -1859,12 +1859,12 @@ static void administration_recalculate_billing_item_totals(billing_item* item) item->total = item->net + item->tax; } -u32 administration_billing_item_count(invoice* invoice) +u32 administration::billing_item_count(invoice* invoice) { return list_size(&invoice->billing_items); } -u32 administration_billing_item_get_all_for_invoice(invoice* invoice, billing_item* buffer) +u32 administration::billing_item_get_all_for_invoice(invoice* invoice, billing_item* buffer) { u32 write_cursor = 0; @@ -1878,7 +1878,7 @@ u32 administration_billing_item_get_all_for_invoice(invoice* invoice, billing_it return write_cursor; } -a_err administration_billing_item_remove_from_invoice(invoice* invoice, billing_item item) +a_err administration::billing_item_remove_from_invoice(invoice* invoice, billing_item item) { list_iterator_start(&invoice->billing_items); while (list_iterator_hasnext(&invoice->billing_items)) { @@ -1896,7 +1896,7 @@ a_err administration_billing_item_remove_from_invoice(invoice* invoice, billing_ return A_ERR_NOT_FOUND; } -a_err administration_billing_item_update_in_invoice(invoice* invoice, billing_item item) +a_err administration::billing_item_update_in_invoice(invoice* invoice, billing_item item) { list_iterator_start(&invoice->billing_items); while (list_iterator_hasnext(&invoice->billing_items)) { @@ -1916,7 +1916,7 @@ a_err administration_billing_item_update_in_invoice(invoice* invoice, billing_it return A_ERR_NOT_FOUND; } -a_err administration_billing_item_is_valid(billing_item item) +a_err administration::billing_item_is_valid(billing_item item) { a_err result = A_ERR_SUCCESS; if (strlen(item.description) == 0) result |= A_ERR_MISSING_DESCRIPTION; @@ -1925,9 +1925,9 @@ a_err administration_billing_item_is_valid(billing_item item) return result; } -a_err administration_billing_item_import_to_invoice(invoice* invoice, billing_item item) +a_err administration::billing_item_import_to_invoice(invoice* invoice, billing_item item) { - if (administration_billing_item_count(invoice) >= MAX_BILLING_ITEMS) return A_ERR_MAX_ITEMS_REACHED; + if (administration::billing_item_count(invoice) >= MAX_BILLING_ITEMS) return A_ERR_MAX_ITEMS_REACHED; billing_item* tb = (billing_item*)malloc(sizeof(billing_item)); if (!tb) return A_ERR_GENERIC; @@ -1943,15 +1943,15 @@ a_err administration_billing_item_import_to_invoice(invoice* invoice, billing_it return A_ERR_SUCCESS; } -a_err administration_billing_item_add_to_invoice(invoice* invoice, billing_item item) +a_err administration::billing_item_add_to_invoice(invoice* invoice, billing_item item) { - if (administration_billing_item_count(invoice) >= MAX_BILLING_ITEMS) return A_ERR_MAX_ITEMS_REACHED; + if (administration::billing_item_count(invoice) >= MAX_BILLING_ITEMS) return A_ERR_MAX_ITEMS_REACHED; billing_item* tb = (billing_item*)malloc(sizeof(billing_item)); if (!tb) return A_ERR_GENERIC; memcpy(tb, &item, sizeof(billing_item)); - snprintf(tb->id, sizeof(tb->id), "B/%d", administration_create_id()); + snprintf(tb->id, sizeof(tb->id), "B/%d", create_id()); strops::copy(tb->currency, invoice->currency, MAX_LEN_CURRENCY); // Set billing item currency to invoice currency. administration_recalculate_billing_item_totals(tb); @@ -1965,7 +1965,7 @@ a_err administration_billing_item_add_to_invoice(invoice* invoice, billing_item return A_ERR_SUCCESS; } -billing_item administration_billing_item_create_empty() +billing_item administration::billing_item_create_empty() { billing_item item; memset(&item, 0, sizeof(billing_item)); diff --git a/src/administration_reader.cpp b/src/administration_reader.cpp index 49a148f..7400caf 100644 --- a/src/administration_reader.cpp +++ b/src/administration_reader.cpp @@ -36,7 +36,7 @@ bool administration_reader::open_new() if (!save_path) return false; - administration_create_default(save_path); + administration::create_default(save_path); return true; } @@ -49,7 +49,7 @@ bool administration_reader::save_new() if (!save_path) return false; - administration_set_file_path(save_path); + administration::set_file_path(save_path); administration_writer::save_all_async(); return true; @@ -67,7 +67,7 @@ bool administration_reader::open_existing(char* file_path) STOPWATCH_START; - administration_create_from_file(file_path); + administration::create_from_file(file_path); zip_t* zip = zip_open(file_path, 0, 'r'); @@ -131,7 +131,7 @@ bool administration_reader::read_invoice_from_xml(invoice* result, char* buffer, struct xml_node* root = xml_document_root(document); if (!root) return false; - invoice data = administration_invoice_create_empty(); + invoice data = administration::invoice_create_empty(); xml_get_str(root, data.id, MAX_LEN_ID, "cbc:ID"); xml_get_str_x(root, data.sequential_number, MAX_LEN_ID, "cac:OrderReference", "cbc:ID", 0); xml_get_str(root, data.currency, MAX_LEN_CURRENCY, "cbc:DocumentCurrencyCode"); @@ -234,8 +234,8 @@ bool administration_reader::read_invoice_from_xml(invoice* result, char* buffer, // Import service could set tax rate id to shorthandle. tax_rate tax_rate; - if (administration_tax_rate_get_by_id(&tax_rate, bi.tax_rate_id) == A_ERR_NOT_FOUND) { - if (administration_tax_rate_get_by_shorthandle(&tax_rate, bi.tax_rate_id) == A_ERR_SUCCESS) { + if (administration::tax_rate_get_by_id(&tax_rate, bi.tax_rate_id) == A_ERR_NOT_FOUND) { + if (administration::tax_rate_get_by_shorthandle(&tax_rate, bi.tax_rate_id) == A_ERR_SUCCESS) { strops::copy(bi.tax_rate_id, tax_rate.id, MAX_LEN_ID); } else { @@ -243,7 +243,7 @@ bool administration_reader::read_invoice_from_xml(invoice* result, char* buffer, } } - administration_billing_item_import_to_invoice(&data, bi); + administration::billing_item_import_to_invoice(&data, bi); } free(child_name); @@ -259,7 +259,7 @@ bool administration_reader::import_invoice(char* buffer, size_t buffer_size) invoice data; if (!administration_reader::read_invoice_from_xml(&data, buffer, buffer_size)) return false; - a_err result = administration_invoice_import(&data); + a_err result = administration::invoice_import(&data); if (result == A_ERR_SUCCESS) { logger::info("Loaded invoice '%s' in %.3fms.", data.sequential_number, STOPWATCH_TIME); @@ -299,7 +299,7 @@ bool administration_reader::import_contact(char* buffer, size_t buffer_size) xml_get_str(node_address, data.address.postal, MAX_LEN_ADDRESS, "Postal"); xml_get_str(node_address, data.address.region, MAX_LEN_ADDRESS, "Region"); - a_err result = administration_contact_import(data); + a_err result = administration::contact_import(data); if (result == A_ERR_SUCCESS) { logger::info("Loaded contact '%s' in %.3fms.", data.name, STOPWATCH_TIME); } @@ -327,7 +327,7 @@ bool administration_reader::import_project(char* buffer, size_t buffer_size) data.start_date = xml_get_date_x(root, "StartDate", 0); data.end_date = xml_get_date_x(root, "EndDate", 0); - a_err result = administration_project_import(data); + a_err result = administration::project_import(data); if (result == A_ERR_SUCCESS) { logger::info("Loaded project in %.3fms. id=%s description=%s state=%d started=%lld end=%lld", STOPWATCH_TIME, data.id, data.description, data.state, data.start_date, data.end_date); @@ -354,7 +354,7 @@ bool administration_reader::import_cost_center(char* buffer, size_t buffer_size) xml_get_str(root, data.code, MAX_LEN_CODE, "Code"); xml_get_str(root, data.description, MAX_LEN_LONG_DESC, "Description"); - a_err result = administration_cost_center_import(data); + a_err result = administration::cost_center_import(data); if (result == A_ERR_SUCCESS) { logger::info("Loaded cost center in %.3fms. id=%s code=%s description=%s", STOPWATCH_TIME, data.id, data.code, data.description); @@ -382,7 +382,7 @@ bool administration_reader::import_tax_rate(char* buffer, size_t buffer_size) xml_get_str(root, data.category_code, MAX_LEN_CODE, "Category"); data.rate = xml_get_float(root, "Rate"); - a_err result = administration_tax_rate_import(data); + a_err result = administration::tax_rate_import(data); if (result == A_ERR_SUCCESS) { logger::info("Loaded tax rate info in %.3fms. id=%s country_code=%s category_code=%s rate=%.2f", STOPWATCH_TIME, data.id, data.country_code, data.category_code, data.rate); @@ -404,16 +404,16 @@ bool administration_reader::import_administration_info(char* buffer, size_t buff struct xml_node* root = xml_document_root(document); - administration_set_next_id(xml_get_s32(root, "NextId")); - administration_set_next_sequence_number(xml_get_s32(root, "NextSequenceNumber")); + administration::set_next_id(xml_get_s32(root, "NextId")); + administration::set_next_sequence_number(xml_get_s32(root, "NextSequenceNumber")); ai_service ai_service; ai_service.provider = (ai_provider)xml_get_s32_x(root, "AIService", "Provider", 0); xml_get_str_x(root, ai_service.api_key_public, MAX_LEN_API_KEY, "AIService", "PublicKey", 0); - administration_set_ai_service(ai_service); + administration::set_ai_service(ai_service); logger::info("Loaded administration info in %.3fms. next_id=%d next_sequence_number=%d", - STOPWATCH_TIME, administration_get_next_id(), administration_get_next_sequence_number()); + STOPWATCH_TIME, administration::get_next_id(), administration::get_next_sequence_number()); return true; }
\ No newline at end of file diff --git a/src/administration_writer.cpp b/src/administration_writer.cpp index d08db2b..b6dbb8c 100644 --- a/src/administration_writer.cpp +++ b/src/administration_writer.cpp @@ -74,13 +74,13 @@ static void on_project_changed_changed(project* project) bool administration_writer::create() { - administration_set_data_changed_event_callback(on_administration_data_changed); - administration_set_data_deleted_event_callback(on_administration_data_deleted); - administration_set_invoice_changed_event_callback(on_invoice_changed); - administration_set_contact_changed_event_callback(on_contact_changed_changed); - administration_set_taxrate_changed_event_callback(on_taxrate_changed_changed); - administration_set_costcenter_changed_event_callback(on_costcenter_changed_changed); - administration_set_project_changed_event_callback(on_project_changed_changed); + administration::set_data_changed_event_callback(on_administration_data_changed); + administration::set_data_deleted_event_callback(on_administration_data_deleted); + administration::set_invoice_changed_event_callback(on_invoice_changed); + administration::set_contact_changed_event_callback(on_contact_changed_changed); + administration::set_taxrate_changed_event_callback(on_taxrate_changed_changed); + administration::set_costcenter_changed_event_callback(on_costcenter_changed_changed); + administration::set_project_changed_event_callback(on_project_changed_changed); return mtx_init(&_save_file_mutex, mtx_plain) == thrd_success; } @@ -103,7 +103,7 @@ static char* copy_template(const char* template_str, int* buf_size) static bool zip_entry_exists(char* entry) { - struct zip_t *zip_read = zip_open(administration_get_file_path(), 0, 'r'); + struct zip_t *zip_read = zip_open(administration::get_file_path(), 0, 'r'); int result = zip_entry_open(zip_read, entry); zip_close(zip_read); @@ -115,8 +115,8 @@ static bool delete_entry_by_name(char* entry) STOPWATCH_START; bool result = 1; - struct zip_t *zip_write = zip_open(administration_get_file_path(), 0, 'a'); - if (!zip_write) zip_write = zip_open(administration_get_file_path(), 0, 'w'); + struct zip_t *zip_write = zip_open(administration::get_file_path(), 0, 'a'); + if (!zip_write) zip_write = zip_open(administration::get_file_path(), 0, 'w'); char* indices[1] = {entry}; if (zip_entries_delete(zip_write, indices, 1) < 0) result = 0; @@ -142,8 +142,8 @@ static bool write_to_zip(char* entry_to_replace, char* orig_content, int final_l bool entry_exists = zip_entry_exists(entry_to_replace); if (entry_exists) delete_entry_by_name(entry_to_replace); - struct zip_t *zip_write = zip_open(administration_get_file_path(), 0, 'a'); - if (!zip_write) zip_write = zip_open(administration_get_file_path(), 0, 'w'); + struct zip_t *zip_write = zip_open(administration::get_file_path(), 0, 'a'); + if (!zip_write) zip_write = zip_open(administration::get_file_path(), 0, 'w'); zip_entry_open(zip_write, entry_to_replace); if (zip_entry_write(zip_write, orig_content, final_length) < 0) result = 0; @@ -409,8 +409,8 @@ bool administration_writer::save_invoice_blocking(invoice inv) // Tax breakdown strops::replace_float(file_content, buf_length, "{{TOTAL_TAX_AMOUNT}}", inv.tax, 2); { // Create tax subtotal list. - tax_rate* tax_rate_buffer = (tax_rate*)malloc(sizeof(tax_rate)*administration_billing_item_count(&inv)); - u32 tax_rate_count = administration_invoice_get_tax_rates(&inv, tax_rate_buffer); + tax_rate* tax_rate_buffer = (tax_rate*)malloc(sizeof(tax_rate)*administration::billing_item_count(&inv)); + u32 tax_rate_count = administration::invoice_get_tax_rates(&inv, tax_rate_buffer); u32 tax_subtotal_list_buffer_size = (u32)strlen(file_template::peppol_invoice_tax_subtotal_template) * 2 * tax_rate_count; // Ballpark list size. char* tax_subtotal_list_buffer = (char*)malloc(tax_subtotal_list_buffer_size); @@ -423,7 +423,7 @@ bool administration_writer::save_invoice_blocking(invoice inv) char* tax_entry_file_content = copy_template(file_template::peppol_invoice_tax_subtotal_template, &tax_entry_buf_length); tax_subtotal subtotal; - administration_invoice_get_subtotal_for_tax_rate(&inv, tax_rate_buffer[i], &subtotal); + administration::invoice_get_subtotal_for_tax_rate(&inv, tax_rate_buffer[i], &subtotal); strops::replace(tax_entry_file_content, tax_entry_buf_length, "{{CURRENCY}}", inv.currency); strops::replace_float(tax_entry_file_content, tax_entry_buf_length, "{{TAXABLE_AMOUNT}}", subtotal.net, 2); @@ -452,8 +452,8 @@ bool administration_writer::save_invoice_blocking(invoice inv) // Invoice lines { - billing_item* billing_item_buffer = (billing_item*)malloc(sizeof(billing_item) * administration_billing_item_count(&inv)); - u32 billing_item_count = administration_billing_item_get_all_for_invoice(&inv, billing_item_buffer); + billing_item* billing_item_buffer = (billing_item*)malloc(sizeof(billing_item) * administration::billing_item_count(&inv)); + u32 billing_item_count = administration::billing_item_get_all_for_invoice(&inv, billing_item_buffer); u32 billing_item_list_buffer_size = (u32)strlen(file_template::peppol_invoice_line_template) * 2 * billing_item_count; // Ballpark list size. char* billing_item_list_buffer = (char*)malloc(billing_item_list_buffer_size); @@ -467,7 +467,7 @@ bool administration_writer::save_invoice_blocking(invoice inv) billing_item bi = billing_item_buffer[i]; tax_rate rate; - administration_tax_rate_get_by_id(&rate, bi.tax_rate_id); + administration::tax_rate_get_by_id(&rate, bi.tax_rate_id); strops::replace(billing_item_file_content, billing_item_buf_length, "{{CURRENCY}}", bi.currency); strops::replace(billing_item_file_content, billing_item_buf_length, "{{LINE_ID}}", bi.id); @@ -534,10 +534,10 @@ bool administration_writer::save_invoice_blocking(invoice inv) static bool save_all_invoices_blocking() { bool result = 1; - u32 num_invoices = administration_invoice_count(); + u32 num_invoices = administration::invoice_count(); u32 buffer_size = sizeof(invoice) * num_invoices; invoice* invoice_buffer = (invoice*)malloc(buffer_size); - num_invoices = administration_invoice_get_all(invoice_buffer); + num_invoices = administration::invoice_get_all(invoice_buffer); for (u32 i = 0; i < num_invoices; i++) { invoice c = invoice_buffer[i]; @@ -593,10 +593,10 @@ bool administration_writer::save_project_blocking(project project) static bool save_all_projects_blocking() { bool result = 1; - u32 num_projects = administration_project_count(); + u32 num_projects = administration::project_count(); u32 buffer_size = sizeof(project) * num_projects; project* project_buffer = (project*)malloc(buffer_size); - num_projects = administration_project_get_all(project_buffer); + num_projects = administration::project_get_all(project_buffer); for (u32 i = 0; i < num_projects; i++) { project c = project_buffer[i]; @@ -641,10 +641,10 @@ bool administration_writer::save_cost_center_blocking(cost_center cost) bool administration_writer::save_all_cost_centers_blocking() { bool result = 1; - u32 num_costcenters = administration_cost_center_count(); + u32 num_costcenters = administration::cost_center_count(); u32 buffer_size = sizeof(cost_center) * num_costcenters; cost_center* costcenter_buffer = (cost_center*)malloc(buffer_size); - num_costcenters = administration_cost_center_get_all(costcenter_buffer); + num_costcenters = administration::cost_center_get_all(costcenter_buffer); for (u32 i = 0; i < num_costcenters; i++) { cost_center c = costcenter_buffer[i]; @@ -690,10 +690,10 @@ bool administration_writer::save_tax_rate_blocking(tax_rate rate) bool administration_writer::save_all_tax_rates_blocking() { //// Get all data. - u32 num_rates = administration_tax_rate_count(); + u32 num_rates = administration::tax_rate_count(); u32 buffer_size = sizeof(tax_rate) * num_rates; tax_rate* rate_buffer = (tax_rate*)malloc(buffer_size); - num_rates = administration_tax_rate_get_all(rate_buffer); + num_rates = administration::tax_rate_get_all(rate_buffer); bool result = 1; @@ -750,15 +750,15 @@ bool administration_writer::save_contact_blocking(contact c) static bool save_all_contacts_blocking() { //// Get all data. - u32 num_contacts = administration_contact_count(); + u32 num_contacts = administration::contact_count(); u32 buffer_size = sizeof(contact) * num_contacts; contact* contact_buffer = (contact*)malloc(buffer_size); - num_contacts = administration_contact_get_all(contact_buffer); + num_contacts = administration::contact_get_all(contact_buffer); bool result = 1; // Save company info. - if (!administration_writer::save_contact_blocking(administration_company_info_get())) result = 0; + if (!administration_writer::save_contact_blocking(administration::company_info_get())) result = 0; // Save contacts. for (u32 i = 0; i < num_contacts; i++) { @@ -781,11 +781,11 @@ bool administration_writer::save_all_administration_info_blocking() int buf_length = 0; char* file_content = copy_template(file_template::administration_save_template, &buf_length); - strops::replace_int32(file_content, buf_length, "{{NEXT_ID}}", administration_get_next_id()); - strops::replace_int32(file_content, buf_length, "{{NEXT_SEQUENCE_NUMBER}}", administration_get_next_sequence_number()); + strops::replace_int32(file_content, buf_length, "{{NEXT_ID}}", administration::get_next_id()); + strops::replace_int32(file_content, buf_length, "{{NEXT_SEQUENCE_NUMBER}}", administration::get_next_sequence_number()); strops::replace(file_content, buf_length, "{{PROGRAM_VERSION}}", config::PROGRAM_VERSION); - ai_service ai_service = administration_get_ai_service(); + ai_service ai_service = administration::get_ai_service(); strops::replace_int32(file_content, buf_length, "{{AI_SERVICE_PROVIDER}}", (s32)ai_service.provider); strops::replace(file_content, buf_length, "{{AI_SERVICE_PUBLIC_KEY}}", ai_service.api_key_public); diff --git a/src/ai_providers/DeepSeek.cpp b/src/ai_providers/DeepSeek.cpp index f46c62f..5a378dd 100644 --- a/src/ai_providers/DeepSeek.cpp +++ b/src/ai_providers/DeepSeek.cpp @@ -35,7 +35,7 @@ static bool _DeepSeek_query_with_file(char* query, size_t query_length, char* fi (void)query_length; assert(query_buffer); - const char *api_key = administration_get_ai_service().api_key_public; + const char *api_key = administration::get_ai_service().api_key_public; httplib::SSLClient cli("api.deepseek.com"); //cli.enable_server_certificate_verification(false); diff --git a/src/ai_providers/openAI.cpp b/src/ai_providers/openAI.cpp index b9276bc..bbe9f8f 100644 --- a/src/ai_providers/openAI.cpp +++ b/src/ai_providers/openAI.cpp @@ -29,7 +29,7 @@ static bool _openAI_query_with_file(char* query, size_t query_length, char* file_id, char** response) { #if 1 - const char *api_key = administration_get_ai_service().api_key_public; + const char *api_key = administration::get_ai_service().api_key_public; httplib::SSLClient cli("api.openai.com", 443); //cli.enable_server_certificate_verification(false); @@ -73,7 +73,7 @@ static bool _openAI_query_with_file(char* query, size_t query_length, char* file static bool _openAI_upload_file(char* file_path, char* file_id, size_t file_id_len) { - const char *api_key = administration_get_ai_service().api_key_public; + const char *api_key = administration::get_ai_service().api_key_public; const char *filename = strops::get_filename(file_path); FILE* orig_file = fopen(file_path, "rb"); diff --git a/src/importer.cpp b/src/importer.cpp index a533614..3f81672 100644 --- a/src/importer.cpp +++ b/src/importer.cpp @@ -35,7 +35,7 @@ extern importer::ai_provider_impl _deepseek_api_provider; importer::ai_provider_impl _ai_get_impl() { - ai_provider provider = administration_get_ai_service().provider; + ai_provider provider = administration::get_ai_service().provider; switch(provider) { @@ -121,7 +121,7 @@ static int _ai_document_to_invoice_t(void *arg) { inv.status = invoice_status::INVOICE_RECEIVED; // Set customer or supplier depending on incomming or outgoing. - contact my_info = administration_company_info_get(); + contact my_info = administration::company_info_get(); memcpy(&inv.customer, &my_info, sizeof(contact)); strops::copy(inv.customer.id, MY_COMPANY_ID, MAX_LEN_ID); @@ -135,7 +135,7 @@ static int _ai_document_to_invoice_t(void *arg) { // Set dates. if (inv.expires_at == 0) { - inv.expires_at = inv.issued_at + administration_get_default_invoice_expire_duration(); + inv.expires_at = inv.issued_at + administration::get_default_invoice_expire_duration(); } if (inv.delivered_at == 0) { @@ -146,7 +146,7 @@ static int _ai_document_to_invoice_t(void *arg) { free(response); request->status = importer::status::IMPORT_DONE; - request->result = administration_invoice_create_copy(&inv); + request->result = administration::invoice_create_copy(&inv); return 0; } diff --git a/src/locales.cpp b/src/locales.cpp index 883d511..ac3df1d 100644 --- a/src/locales.cpp +++ b/src/locales.cpp @@ -14,14 +14,21 @@ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -#include <stdio.h> -#include <string.h> - #include "locales.hpp" +#include "strops.hpp" + +extern locale_entry en_locales[]; +extern int en_locale_count; + +typedef struct { + const char* lang_code; + locale_entry* entries; + int entry_count; +} locale_map; namespace locale { static locale_map locales[] = { - {"en", locale::en_locales, locale::en_locale_count}, + {"en", en_locales, en_locale_count}, // Add new locales here. }; @@ -36,7 +43,7 @@ namespace locale { void set_locale(const char* key) { for (int i = 0; i < locale_map_count; ++i) { - if (strcmp(locales[i].lang_code, key) == 0) { + if (strops::equals(locales[i].lang_code, key)) { g_locale = locales[i]; } } @@ -45,7 +52,7 @@ namespace locale { const char* get(const char* key) { for (int i = 0; i < g_locale.entry_count; ++i) { - if (strcmp(g_locale.entries[i].key, key) == 0) { + if (strops::equals(g_locale.entries[i].key, key)) { return g_locale.entries[i].value; } } diff --git a/src/locales/en.cpp b/src/locales/en.cpp index 9410663..aa04853 100644 --- a/src/locales/en.cpp +++ b/src/locales/en.cpp @@ -16,7 +16,7 @@ #include "locales.hpp" -locale::locale_entry locale::en_locales[] = { +locale_entry en_locales[] = { // General UI strings. {"ui.unsavedProject", "[unsaved project]"}, {"ui.workingOn", "Working on"}, @@ -209,4 +209,4 @@ locale::locale_entry locale::en_locales[] = { {"import.error.import","Failure: Failed to import result from service"}, }; -const int locale::en_locale_count = sizeof(locale::en_locales) / sizeof(locale::en_locales[0]);
\ No newline at end of file +int en_locale_count = sizeof(en_locales) / sizeof(en_locales[0]);
\ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index 5a79729..e0935f5 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -142,7 +142,7 @@ int main(int argc, char** argv) administration_writer::create(); if (argc < 2) { - administration_create_default(""); + administration::create_default(""); } else { administration_reader::open_existing(argv[1]); diff --git a/src/strops.cpp b/src/strops.cpp index f8184f1..356ce5b 100644 --- a/src/strops.cpp +++ b/src/strops.cpp @@ -43,6 +43,11 @@ namespace strops { return (srclen); } + bool equals(const char* a, const char* b) + { + return strcmp(a, b) == 0; + } + char* contains(char* haystack, char* needle) { do { @@ -91,14 +96,14 @@ namespace strops { *w = '\0'; // terminate } - void replace_int32(char *buf, size_t buf_size, const char *search, int32_t number) + void replace_int32(char *buf, size_t buf_size, const char *search, s32 number) { char num_buf[200]; snprintf(num_buf, 200, "%d", number); strops::replace(buf, buf_size, search, num_buf); } - void replace_int64(char *buf, size_t buf_size, const char *search, int64_t number) + void replace_int64(char *buf, size_t buf_size, const char *search, s64 number) { char num_buf[200]; snprintf(num_buf, 200, "%lld", number); diff --git a/src/ui/imgui_extensions.cpp b/src/ui/imgui_extensions.cpp index a283ad4..5a00648 100644 --- a/src/ui/imgui_extensions.cpp +++ b/src/ui/imgui_extensions.cpp @@ -221,7 +221,7 @@ namespace ImGui ImGui::SetNextItemWidth(widthAvailable*0.5f); contact autocomplete_list[5]; - int autocomplete_count = administration_contact_get_autocompletions(autocomplete_list, 5, buffer->name); + int autocomplete_count = administration::contact_get_autocompletions(autocomplete_list, 5, buffer->name); char* autocomplete_strings[5]; for (int i = 0; i < autocomplete_count; i++) @@ -246,11 +246,11 @@ namespace ImGui void FormCostCenterCombo(char* costcenter_id) { - u32 costcenter_count = administration_cost_center_count(); + u32 costcenter_count = administration::cost_center_count(); cost_center* buffer = (cost_center*) malloc(sizeof(cost_center) * costcenter_count); cost_center* selected_costcenter = NULL; - costcenter_count = administration_cost_center_get_all(buffer); + costcenter_count = administration::cost_center_get_all(buffer); // Select cost center by given id. if (strlen(costcenter_id) > 0) @@ -287,11 +287,11 @@ namespace ImGui void FormProjectCombo(char* project_id) { - u32 project_count = administration_project_count(); + u32 project_count = administration::project_count(); project* buffer = (project*) malloc(sizeof(project) * project_count); project* selected_project = NULL; - project_count = administration_project_get_all(buffer); + project_count = administration::project_get_all(buffer); // Select project by given id. if (strlen(project_id) > 0) @@ -328,12 +328,12 @@ namespace ImGui void FormTaxRateCombo(char* tax_rate_id, char* orig_country, char* dest_country, bool has_error) { - u32 tax_rate_count = administration_tax_rate_count(); + u32 tax_rate_count = administration::tax_rate_count(); tax_rate* buffer = (tax_rate*) malloc(sizeof(tax_rate) * tax_rate_count); tax_rate* selected_tax_rate = NULL; char* tax_country_codes[2] = {orig_country, dest_country}; - tax_rate_count = administration_tax_rate_get_by_country(buffer, strcmp(orig_country, dest_country) == 0 ? 1 : 2, tax_country_codes); + tax_rate_count = administration::tax_rate_get_by_country(buffer, strcmp(orig_country, dest_country) == 0 ? 1 : 2, tax_country_codes); // Select tax rate by given id. if (strlen(tax_rate_id) > 0) diff --git a/src/ui/ui_contacts.cpp b/src/ui/ui_contacts.cpp index c205c87..03fcee0 100644 --- a/src/ui/ui_contacts.cpp +++ b/src/ui/ui_contacts.cpp @@ -44,13 +44,13 @@ void draw_address_form(address* buffer, a_err last_err) void ui::setup_contacts() { current_view_state = ui::view_state::LIST_ALL; - active_contact = active_contact = administration_contact_create_empty(); + active_contact = active_contact = administration::contact_create_empty(); memset(&selected_for_removal, 0, sizeof(contact)); } void draw_addressee_form_ex(delivery_info* buffer, bool viewing_only = false) { - a_err last_err = administration_addressee_is_valid(*buffer); + a_err last_err = administration::addressee_is_valid(*buffer); ImGui::PushID(buffer); @@ -69,7 +69,7 @@ void draw_addressee_form_ex(delivery_info* buffer, bool viewing_only = false) void draw_contact_form_ex(contact* buffer, bool viewing_only = false, bool with_autocomplete = false) { - a_err last_err = administration_contact_is_valid(*buffer); + a_err last_err = administration::contact_is_valid(*buffer); ImGui::PushID(buffer); @@ -109,14 +109,14 @@ static void draw_contact_list() { const u32 items_per_page = 50; static s32 current_page = 0; - s32 max_page = (administration_contact_count() + items_per_page - 1) / items_per_page; + s32 max_page = (administration::contact_count() + items_per_page - 1) / items_per_page; if (max_page == 0) max_page = 1; // Table header controls: create button and pagination. if (ImGui::Button(locale::get("form.create"))) { current_view_state = ui::view_state::CREATE; - active_contact = administration_contact_create_empty(); + active_contact = administration::contact_create_empty(); } if (current_page >= max_page-1) current_page = max_page-1; @@ -150,7 +150,7 @@ static void draw_contact_list() ImGui::TableHeadersRow(); contact contact_list[items_per_page]; - u32 contact_count = administration_contact_get_partial_list(current_page, items_per_page, contact_list); + u32 contact_count = administration::contact_get_partial_list(current_page, items_per_page, contact_list); for (u32 i = 0; i < contact_count; i++) { contact c = contact_list[i]; @@ -191,7 +191,7 @@ static void draw_contact_list() ImGui::Separator(); if (ImGui::Button(locale::get("form.yes"), ImVec2(120, 0))) { - administration_contact_remove(selected_for_removal); + administration::contact_remove(selected_for_removal); ImGui::CloseCurrentPopup(); } ImGui::SameLine(); @@ -213,13 +213,13 @@ static void draw_contacts_create() draw_contact_form(&active_contact); - a_err contact_validation_err = administration_contact_is_valid(active_contact); + a_err contact_validation_err = administration::contact_is_valid(active_contact); bool can_save = contact_validation_err == A_ERR_SUCCESS; if (!can_save) ImGui::BeginDisabled(); // Save button ImGui::Spacing(); if (ImGui::Button(locale::get("form.save"))) { - administration_contact_add(active_contact); + administration::contact_add(active_contact); current_view_state = ui::view_state::LIST_ALL; } if (!can_save) ImGui::EndDisabled(); @@ -233,13 +233,13 @@ static void draw_contacts_update() draw_contact_form(&active_contact); - a_err contact_validation_err = administration_contact_is_valid(active_contact); + a_err contact_validation_err = administration::contact_is_valid(active_contact); bool can_save = contact_validation_err == A_ERR_SUCCESS; if (!can_save) ImGui::BeginDisabled(); // Save button ImGui::Spacing(); if (ImGui::Button(locale::get("form.save"))) { - administration_contact_update(active_contact); + administration::contact_update(active_contact); current_view_state = ui::view_state::LIST_ALL; } if (!can_save) ImGui::EndDisabled(); diff --git a/src/ui/ui_earnings.cpp b/src/ui/ui_earnings.cpp index 07c01ef..5e04a61 100644 --- a/src/ui/ui_earnings.cpp +++ b/src/ui/ui_earnings.cpp @@ -27,7 +27,7 @@ income_statement* statement = 0; void ui::setup_earnings() { statement = (income_statement*)malloc(sizeof(income_statement)); - administration_create_income_statement(statement); + administration::create_income_statement(statement); } void ui::destroy_earnings() @@ -59,7 +59,7 @@ void ui::draw_earnings() ImGui::Spacing(); - char* currency_symbol = administration_get_currency_symbol_for_currency(administration_get_default_currency()); + char* currency_symbol = administration::get_currency_symbol_for_currency(administration::get_default_currency()); if (ImGui::BeginTable("QuarterlyResultsTable", 5, ImGuiTableFlags_Borders | ImGuiTableFlags_RowBg | ImGuiTableFlags_SizingFixedFit | ImGuiTableFlags_Hideable)) { diff --git a/src/ui/ui_expenses.cpp b/src/ui/ui_expenses.cpp index a63cd50..e4441ef 100644 --- a/src/ui/ui_expenses.cpp +++ b/src/ui/ui_expenses.cpp @@ -55,7 +55,7 @@ void ui::setup_expenses() current_view_state = ui::view_state::LIST_ALL; } - active_invoice = administration_invoice_create_empty(); + active_invoice = administration::invoice_create_empty(); u32 invoice_items_count = MAX_BILLING_ITEMS; invoice_items_buffer = (billing_item*)malloc(sizeof(billing_item) * invoice_items_count); @@ -120,12 +120,12 @@ static void draw_expense_form(invoice* buffer, bool viewing_only = false) ImGui::Spacing(); ImGui::Spacing(); - bool max_items_reached = administration_billing_item_count(buffer) >= MAX_BILLING_ITEMS; + bool max_items_reached = administration::billing_item_count(buffer) >= MAX_BILLING_ITEMS; if (max_items_reached) ImGui::BeginDisabled(); if (ImGui::Button(locale::get(locale::get("invoice.form.add")))) { - billing_item item = administration_billing_item_create_empty(); - administration_billing_item_add_to_invoice(buffer, item); + billing_item item = administration::billing_item_create_empty(); + administration::billing_item_add_to_invoice(buffer, item); } if (max_items_reached) ImGui::EndDisabled(); @@ -134,7 +134,7 @@ static void draw_expense_form(invoice* buffer, bool viewing_only = false) ImGui::SameLine(); if (ImGui::FormCurrencyCombo(buffer->currency)) { - administration_invoice_set_currency(buffer, buffer->currency); + administration::invoice_set_currency(buffer, buffer->currency); } draw_invoice_items_form(buffer); @@ -144,7 +144,7 @@ static void draw_expense_form(invoice* buffer, bool viewing_only = false) static void draw_expenses_list() { - if (!administration_can_create_invoices()) { + if (!administration::can_create_invoices()) { ImGui::PushStyleColor(ImGuiCol_Text, IM_COL32(0, 102, 204, 255)); // blue ImGui::Text(locale::get("ui.invoiceRequirementP1")); ImGui::PopStyleColor(); @@ -165,8 +165,8 @@ static void draw_expenses_list() static s32 current_page = 0; invoice invoice_list[items_per_page]; - u32 invoice_count = administration_invoice_get_partial_list_incomming(current_page, items_per_page, invoice_list); - u32 total_invoice_count = administration_invoice_get_incomming_count(); + u32 invoice_count = administration::invoice_get_partial_list_incomming(current_page, items_per_page, invoice_list); + u32 total_invoice_count = administration::invoice_get_incomming_count(); s32 max_page = (total_invoice_count + items_per_page - 1) / items_per_page; if (max_page == 0) max_page = 1; @@ -175,8 +175,8 @@ static void draw_expenses_list() if (ImGui::Button(locale::get("form.create"))) { current_view_state = ui::view_state::CREATE; - active_invoice = administration_invoice_create_empty(); // @leak - active_invoice.customer = administration_company_info_get(); + active_invoice = administration::invoice_create_empty(); // @leak + active_invoice.customer = administration::company_info_get(); active_invoice.is_outgoing = 0; active_invoice.status = invoice_status::INVOICE_RECEIVED; } @@ -185,8 +185,8 @@ static void draw_expenses_list() ImGui::SameLine(); if (ImGui::FormInvoiceFileSelector("+ Import", import_file_path)) { // @locale::get current_view_state = ui::view_state::VIEW_IMPORT_REQUEST; - active_invoice = administration_invoice_create_empty(); // @leak - active_invoice.customer = administration_company_info_get(); + active_invoice = administration::invoice_create_empty(); // @leak + active_invoice.customer = administration::company_info_get(); active_invoice.is_outgoing = 0; active_invoice.status = invoice_status::INVOICE_RECEIVED; @@ -240,7 +240,7 @@ static void draw_expenses_list() ImGui::TableSetColumnIndex(3); ImGui::Text(buf); ImGui::TableSetColumnIndex(4); ImGui::Text("%.2f %s", c.total, c.currency); - ImGui::TableSetColumnIndex(5); ImGui::Text("%s", locale::get(administration_invoice_get_status_string(&c))); + ImGui::TableSetColumnIndex(5); ImGui::Text("%s", locale::get(administration::invoice_get_status_string(&c))); ImGui::TableSetColumnIndex(6); char btn_name[20]; @@ -254,7 +254,7 @@ static void draw_expenses_list() snprintf(btn_name, sizeof(btn_name), "%s##%d", locale::get("form.change"), i); if (ImGui::Button(btn_name)) { - active_invoice = administration_invoice_create_copy(&c); // We create a copy because of billing item list pointers. + active_invoice = administration::invoice_create_copy(&c); // We create a copy because of billing item list pointers. current_view_state = ui::view_state::EDIT_EXISTING; } @@ -272,7 +272,7 @@ static void draw_expenses_list() ImGui::Separator(); if (ImGui::Button(locale::get("form.yes"), ImVec2(120, 0))) { - administration_invoice_remove(&selected_for_removal); + administration::invoice_remove(&selected_for_removal); ImGui::CloseCurrentPopup(); } ImGui::SameLine(); @@ -295,12 +295,12 @@ static void draw_expense_update() draw_expense_form(&active_invoice); - bool can_save = administration_invoice_is_valid(&active_invoice) == A_ERR_SUCCESS; + bool can_save = administration::invoice_is_valid(&active_invoice) == A_ERR_SUCCESS; if (!can_save) ImGui::BeginDisabled(); ImGui::Spacing(); if (ImGui::Button(locale::get("form.save"))) { - administration_invoice_update(&active_invoice); + administration::invoice_update(&active_invoice); current_view_state = ui::view_state::LIST_ALL; @@ -319,12 +319,12 @@ static void draw_expense_create() draw_expense_form(&active_invoice); - bool can_save = administration_invoice_is_valid(&active_invoice) == A_ERR_SUCCESS; + bool can_save = administration::invoice_is_valid(&active_invoice) == A_ERR_SUCCESS; if (!can_save) ImGui::BeginDisabled(); ImGui::Spacing(); if (ImGui::Button(locale::get("form.save"))) { - administration_invoice_add(&active_invoice); + administration::invoice_add(&active_invoice); current_view_state = ui::view_state::LIST_ALL; diff --git a/src/ui/ui_invoices.cpp b/src/ui/ui_invoices.cpp index 1a039b9..191cd7d 100644 --- a/src/ui/ui_invoices.cpp +++ b/src/ui/ui_invoices.cpp @@ -46,7 +46,7 @@ void ui::destroy_invoices() void ui::setup_invoices() { current_view_state = ui::view_state::LIST_ALL; - active_invoice = administration_invoice_create_empty(); + active_invoice = administration::invoice_create_empty(); u32 invoice_items_count = MAX_BILLING_ITEMS; invoice_items_buffer = (billing_item*)malloc(sizeof(billing_item) * invoice_items_count); @@ -55,7 +55,7 @@ void ui::setup_invoices() void draw_invoice_items_form(invoice* invoice) { billing_item* buffer = invoice_items_buffer; - u32 invoice_items = administration_billing_item_get_all_for_invoice(invoice, buffer); + u32 invoice_items = administration::billing_item_get_all_for_invoice(invoice, buffer); if (ImGui::BeginTable("TableBillingItems", 9, ImGuiTableFlags_Borders | ImGuiTableFlags_RowBg)) { @@ -74,7 +74,7 @@ void draw_invoice_items_form(invoice* invoice) for (u32 i = 0; i < invoice_items; i++) { billing_item item = buffer[i]; - a_err valid = administration_billing_item_is_valid(item); + a_err valid = administration::billing_item_is_valid(item); ImGui::TableNextRow(); @@ -83,7 +83,7 @@ void draw_invoice_items_form(invoice* invoice) ImGui::TableSetColumnIndex(0); if (ImGui::Button("X")) { - administration_billing_item_remove_from_invoice(invoice, item); + administration::billing_item_remove_from_invoice(invoice, item); } ImGui::TableSetColumnIndex(1); @@ -125,7 +125,7 @@ void draw_invoice_items_form(invoice* invoice) ImGui::PopID(); - administration_billing_item_update_in_invoice(invoice, item); + administration::billing_item_update_in_invoice(invoice, item); } ImGui::TableNextRow(); @@ -140,32 +140,32 @@ void draw_invoice_items_form(invoice* invoice) ImGui::TableSetColumnIndex(8); ImGui::Text("%.2f %s", invoice->orig_total, invoice->currency); - if (strcmp(invoice->currency, administration_get_default_currency()) != 0) { + if (strcmp(invoice->currency, administration::get_default_currency()) != 0) { ImGui::TableNextRow(); ImGui::TableSetBgColor(ImGuiTableBgTarget_RowBg0, IM_COL32(50, 50, 50, 255)); ImGui::TableSetColumnIndex(2); - ImGui::Text("%s %s", locale::get("invoice.form.finalSettlement"), administration_get_default_currency()); + ImGui::Text("%s %s", locale::get("invoice.form.finalSettlement"), administration::get_default_currency()); ImGui::TableSetColumnIndex(4); ImGui::InputFloat("##final_allowance", &invoice->allowance, 0.0f, 0.0f, "%.2f"); ImGui::SameLine(); - ImGui::Text("%s", administration_get_default_currency()); + ImGui::Text("%s", administration::get_default_currency()); ImGui::TableSetColumnIndex(5); ImGui::InputFloat("##final_net", &invoice->net, 0.0f, 0.0f, "%.2f"); ImGui::SameLine(); - ImGui::Text("%s", administration_get_default_currency()); + ImGui::Text("%s", administration::get_default_currency()); ImGui::TableSetColumnIndex(7); ImGui::InputFloat("##final_tax", &invoice->tax, 0.0f, 0.0f, "%.2f"); ImGui::SameLine(); - ImGui::Text("%s", administration_get_default_currency()); + ImGui::Text("%s", administration::get_default_currency()); ImGui::TableSetColumnIndex(8); ImGui::InputFloat("##final_total", &invoice->total, 0.0f, 0.0f, "%.2f"); ImGui::SameLine(); - ImGui::Text("%s", administration_get_default_currency()); + ImGui::Text("%s", administration::get_default_currency()); } ImGui::EndTable(); @@ -229,12 +229,12 @@ static void draw_invoice_form(invoice* buffer, bool viewing_only = false) ImGui::Spacing(); ImGui::Spacing(); - bool max_items_reached = administration_billing_item_count(buffer) >= MAX_BILLING_ITEMS; + bool max_items_reached = administration::billing_item_count(buffer) >= MAX_BILLING_ITEMS; if (max_items_reached) ImGui::BeginDisabled(); if (ImGui::Button(locale::get(locale::get("invoice.form.add")))) { - billing_item item = administration_billing_item_create_empty(); - administration_billing_item_add_to_invoice(buffer, item); + billing_item item = administration::billing_item_create_empty(); + administration::billing_item_add_to_invoice(buffer, item); } if (max_items_reached) ImGui::EndDisabled(); @@ -243,7 +243,7 @@ static void draw_invoice_form(invoice* buffer, bool viewing_only = false) ImGui::SameLine(); if (ImGui::FormCurrencyCombo(buffer->currency)) { - administration_invoice_set_currency(buffer, buffer->currency); + administration::invoice_set_currency(buffer, buffer->currency); } draw_invoice_items_form(buffer); @@ -253,7 +253,7 @@ static void draw_invoice_form(invoice* buffer, bool viewing_only = false) static void draw_invoices_list() { - if (!administration_can_create_invoices()) { + if (!administration::can_create_invoices()) { ImGui::PushStyleColor(ImGuiCol_Text, IM_COL32(0, 102, 204, 255)); // blue ImGui::Text(locale::get("ui.invoiceRequirementP1")); ImGui::PopStyleColor(); @@ -274,8 +274,8 @@ static void draw_invoices_list() static s32 current_page = 0; invoice invoice_list[items_per_page]; - u32 invoice_count = administration_invoice_get_partial_list_outgoing(current_page, items_per_page, invoice_list); - u32 total_invoice_count = administration_invoice_get_outgoing_count(); + u32 invoice_count = administration::invoice_get_partial_list_outgoing(current_page, items_per_page, invoice_list); + u32 total_invoice_count = administration::invoice_get_outgoing_count(); s32 max_page = (total_invoice_count + items_per_page - 1) / items_per_page; if (max_page == 0) max_page = 1; @@ -284,8 +284,8 @@ static void draw_invoices_list() if (ImGui::Button(locale::get("form.create"))) { current_view_state = ui::view_state::CREATE; - active_invoice = administration_invoice_create_empty(); // @leak - active_invoice.supplier = administration_company_info_get(); + active_invoice = administration::invoice_create_empty(); // @leak + active_invoice.supplier = administration::company_info_get(); active_invoice.is_outgoing = 1; active_invoice.status = invoice_status::INVOICE_CONCEPT; } @@ -337,7 +337,7 @@ static void draw_invoices_list() ImGui::TableSetColumnIndex(3); ImGui::Text(buf); ImGui::TableSetColumnIndex(4); ImGui::Text("%.2f %s", c.total, c.currency); - ImGui::TableSetColumnIndex(5); ImGui::Text("%s", locale::get(administration_invoice_get_status_string(&c))); + ImGui::TableSetColumnIndex(5); ImGui::Text("%s", locale::get(administration::invoice_get_status_string(&c))); ImGui::TableSetColumnIndex(6); char btn_name[20]; @@ -353,7 +353,7 @@ static void draw_invoices_list() { snprintf(btn_name, sizeof(btn_name), "%s##%d", locale::get("form.change"), i); if (ImGui::Button(btn_name)) { - active_invoice = administration_invoice_create_copy(&c); // We create a copy because of billing item list pointers. + active_invoice = administration::invoice_create_copy(&c); // We create a copy because of billing item list pointers. current_view_state = ui::view_state::EDIT_EXISTING; } @@ -372,7 +372,7 @@ static void draw_invoices_list() ImGui::Separator(); if (ImGui::Button(locale::get("form.yes"), ImVec2(120, 0))) { - administration_invoice_remove(&selected_for_removal); + administration::invoice_remove(&selected_for_removal); ImGui::CloseCurrentPopup(); } ImGui::SameLine(); @@ -395,12 +395,12 @@ static void draw_invoice_update() draw_invoice_form(&active_invoice); - bool can_save = administration_invoice_is_valid(&active_invoice) == A_ERR_SUCCESS; + bool can_save = administration::invoice_is_valid(&active_invoice) == A_ERR_SUCCESS; if (!can_save) ImGui::BeginDisabled(); ImGui::Spacing(); if (ImGui::Button(locale::get("form.save"))) { - administration_invoice_update(&active_invoice); + administration::invoice_update(&active_invoice); current_view_state = ui::view_state::LIST_ALL; @@ -419,12 +419,12 @@ static void draw_invoice_create() draw_invoice_form(&active_invoice); - bool can_save = administration_invoice_is_valid(&active_invoice) == A_ERR_SUCCESS; + bool can_save = administration::invoice_is_valid(&active_invoice) == A_ERR_SUCCESS; if (!can_save) ImGui::BeginDisabled(); ImGui::Spacing(); if (ImGui::Button(locale::get("form.save"))) { - administration_invoice_add(&active_invoice); + administration::invoice_add(&active_invoice); current_view_state = ui::view_state::LIST_ALL; diff --git a/src/ui/ui_main.cpp b/src/ui/ui_main.cpp index b54ca62..9e6aeb8 100644 --- a/src/ui/ui_main.cpp +++ b/src/ui/ui_main.cpp @@ -152,7 +152,7 @@ void ui::draw_main() ImGuiWindowFlags_NoBringToFrontOnFocus | ImGuiWindowFlags_NoCollapse); - char* path = administration_get_file_path(); + char* path = administration::get_file_path(); if (path == NULL) { ImGui::Text("%s: %s", locale::get("ui.workingOn"), locale::get("ui.unsavedProject")); } diff --git a/src/ui/ui_projects.cpp b/src/ui/ui_projects.cpp index be0cc2a..f9f494d 100644 --- a/src/ui/ui_projects.cpp +++ b/src/ui/ui_projects.cpp @@ -30,7 +30,7 @@ static project active_project; void ui::setup_projects() { current_view_state = ui::view_state::LIST_ALL; - active_project = administration_project_create_empty(); + active_project = administration::project_create_empty(); } static void draw_project_form() @@ -41,14 +41,14 @@ static void draw_project_form() if (ImGui::Button(locale::get("form.back"))) { current_view_state = ui::view_state::LIST_ALL; - active_project = administration_project_create_empty(); + active_project = administration::project_create_empty(); selected_country = 0; return; } ImGui::Spacing(); ImGui::BeginDisabled(); - a_err last_err = administration_project_is_valid(active_project); + a_err last_err = administration::project_is_valid(active_project); ImGui::SetNextItemWidth(widthAvailable*0.2f); ImGui::InputText(locale::get("project.form.identifier"), active_project.id, IM_ARRAYSIZE(active_project.id)); @@ -59,23 +59,23 @@ static void draw_project_form() if (viewing_only) ImGui::EndDisabled(); if (!viewing_only) { - bool can_save = administration_project_is_valid(active_project) == A_ERR_SUCCESS; + bool can_save = administration::project_is_valid(active_project) == A_ERR_SUCCESS; if (!can_save) ImGui::BeginDisabled(); // Save button ImGui::Spacing(); if (ImGui::Button(locale::get("form.save"))) { if (current_view_state == ui::view_state::CREATE) { - administration_project_add(active_project); + administration::project_add(active_project); } else if (current_view_state == ui::view_state::EDIT_EXISTING) { - administration_project_update(active_project); + administration::project_update(active_project); } current_view_state = ui::view_state::LIST_ALL; selected_country = 0; - active_project = administration_project_create_empty(); + active_project = administration::project_create_empty(); } if (!can_save) ImGui::EndDisabled(); } @@ -88,13 +88,13 @@ static void draw_project_list() { const u32 items_per_page = 50; static s32 current_page = 0; - s32 max_page = (administration_project_count() + items_per_page - 1) / items_per_page; + s32 max_page = (administration::project_count() + items_per_page - 1) / items_per_page; if (max_page == 0) max_page = 1; if (ImGui::Button(locale::get("form.create"))) { current_view_state = ui::view_state::CREATE; - active_project = administration_project_create_empty(); + active_project = administration::project_create_empty(); } if (current_page >= max_page-1) current_page = max_page-1; @@ -126,14 +126,14 @@ static void draw_project_list() ImGui::TableHeadersRow(); project project_list[items_per_page]; - u32 project_count = administration_project_get_partial_list(current_page, items_per_page, project_list); + u32 project_count = administration::project_get_partial_list(current_page, items_per_page, project_list); for (u32 i = 0; i < project_count; i++) { project c = project_list[i]; ImGui::TableNextRow(); ImGui::TableSetColumnIndex(0); ImGui::Text(c.id); - ImGui::TableSetColumnIndex(1); ImGui::Text(locale::get(administration_project_get_status_string(c))); + ImGui::TableSetColumnIndex(1); ImGui::Text(locale::get(administration::project_get_status_string(c))); ImGui::TableSetColumnIndex(2); ImGui::Text(c.description); ImGui::TableSetColumnIndex(3); @@ -168,7 +168,7 @@ static void draw_project_list() ImGui::Separator(); if (ImGui::Button(locale::get("form.yes"), ImVec2(120, 0))) { - administration_project_cancel(selected_for_cancellation); + administration::project_cancel(selected_for_cancellation); ImGui::CloseCurrentPopup(); } ImGui::SameLine(); diff --git a/src/ui/ui_settings.cpp b/src/ui/ui_settings.cpp index a6ce57a..cb6cdf5 100644 --- a/src/ui/ui_settings.cpp +++ b/src/ui/ui_settings.cpp @@ -46,17 +46,17 @@ void ui::destroy_settings() void ui::setup_settings() { select_company_tab = 1; - company_info = administration_company_info_get(); + company_info = administration::company_info_get(); - tax_rate_count = administration_tax_rate_count(); + tax_rate_count = administration::tax_rate_count(); tax_rates = (tax_rate*)malloc(tax_rate_count * sizeof(tax_rate)); - administration_tax_rate_get_all(tax_rates); + administration::tax_rate_get_all(tax_rates); - cost_center_count = administration_cost_center_count(); + cost_center_count = administration::cost_center_count(); cost_centers = (cost_center*)malloc(cost_center_count * sizeof(cost_center)); - administration_cost_center_get_all(cost_centers); + administration::cost_center_get_all(cost_centers); - new_service = administration_get_ai_service(); + new_service = administration::get_ai_service(); } static void draw_vat_rates() @@ -117,7 +117,7 @@ static void draw_vat_rates() if (ImGui::Button(btn_name, ImVec2(20,20))) { is_adding_item = true; is_editing_item = false; - new_tax_rate = administration_tax_rate_create_empty(); + new_tax_rate = administration::tax_rate_create_empty(); strops::copy(new_tax_rate.country_code, c.country_code, 3); } ImGui::PopStyleVar(); @@ -149,7 +149,7 @@ static void draw_vat_rates() is_editing_item = false; is_adding_item = false; - administration_tax_rate_update(new_tax_rate); + administration::tax_rate_update(new_tax_rate); ui::destroy_settings(); ui::setup_settings(); @@ -195,7 +195,7 @@ static void draw_vat_rates() is_editing_item = false; is_adding_item = false; - administration_tax_rate_add(new_tax_rate); + administration::tax_rate_add(new_tax_rate); ui::destroy_settings(); ui::setup_settings(); @@ -240,7 +240,7 @@ static void draw_cost_centers() ImGui::TableSetColumnIndex(1); if (is_editing_item && editing_item_index == i) { - bool is_desc_valid = !(administration_cost_center_is_valid(new_cost_center) & A_ERR_MISSING_DESCRIPTION); + bool is_desc_valid = !(administration::cost_center_is_valid(new_cost_center) & A_ERR_MISSING_DESCRIPTION); if (!is_desc_valid) ImGui::PushStyleColor(ImGuiCol_FrameBg, IM_COL32(105, 43, 43, 255)); ImGui::InputText("##Description", new_cost_center.description, IM_ARRAYSIZE(new_cost_center.description)); if (!is_desc_valid) ImGui::PopStyleColor(); @@ -251,7 +251,7 @@ static void draw_cost_centers() is_editing_item = false; is_adding_item = false; - administration_cost_center_update(new_cost_center); + administration::cost_center_update(new_cost_center); memset(&new_cost_center, 0, sizeof(new_cost_center)); @@ -287,13 +287,13 @@ static void draw_cost_centers() { ImGui::TableNextRow(); - bool is_code_valid = !(administration_cost_center_is_valid(new_cost_center) & (A_ERR_CODE_EXISTS|A_ERR_MISSING_CODE)); + bool is_code_valid = !(administration::cost_center_is_valid(new_cost_center) & (A_ERR_CODE_EXISTS|A_ERR_MISSING_CODE)); if (!is_code_valid) ImGui::PushStyleColor(ImGuiCol_FrameBg, IM_COL32(105, 43, 43, 255)); ImGui::TableSetColumnIndex(0); ImGui::InputText("##Code", new_cost_center.code, IM_ARRAYSIZE(new_cost_center.code), ImGuiInputTextFlags_CharsUppercase|ImGuiInputTextFlags_CharsNoBlank); if (!is_code_valid) ImGui::PopStyleColor(); - bool is_desc_valid = !(administration_cost_center_is_valid(new_cost_center) & A_ERR_MISSING_DESCRIPTION); + bool is_desc_valid = !(administration::cost_center_is_valid(new_cost_center) & A_ERR_MISSING_DESCRIPTION); if (!is_desc_valid) ImGui::PushStyleColor(ImGuiCol_FrameBg, IM_COL32(105, 43, 43, 255)); ImGui::TableSetColumnIndex(1); ImGui::InputText("##Description", new_cost_center.description, IM_ARRAYSIZE(new_cost_center.description)); if (!is_desc_valid) ImGui::PopStyleColor(); @@ -306,7 +306,7 @@ static void draw_cost_centers() { is_adding_item = false; is_editing_item = false; - administration_cost_center_add(new_cost_center); + administration::cost_center_add(new_cost_center); ui::destroy_settings(); ui::setup_settings(); @@ -327,7 +327,7 @@ static void draw_cost_centers() // If not adding a new item already, show create button at bottom of list. if (!is_adding_item && ImGui::Button(locale::get("form.create"))) { - new_cost_center = administration_cost_center_create_empty(); + new_cost_center = administration::cost_center_create_empty(); is_adding_item = true; is_editing_item = false; } @@ -360,7 +360,7 @@ static void draw_services() new_service.api_key_public, sizeof(new_service.api_key_public)); if (ImGui::Button(locale::get("form.save"))) { - administration_set_ai_service(new_service); + administration::set_ai_service(new_service); } } } @@ -375,11 +375,11 @@ void ui::draw_settings() draw_contact_form(&company_info); // Save button. - bool can_save = administration_contact_is_valid(company_info) == A_ERR_SUCCESS; + bool can_save = administration::contact_is_valid(company_info) == A_ERR_SUCCESS; if (!can_save) ImGui::BeginDisabled(); ImGui::Spacing(); if (ImGui::Button(locale::get("form.save"))) { - administration_company_info_set(company_info); + administration::company_info_set(company_info); } if (!can_save) ImGui::EndDisabled(); diff --git a/tests/administration_rw_tests.cpp b/tests/administration_rw_tests.cpp index 321968e..6d12b45 100644 --- a/tests/administration_rw_tests.cpp +++ b/tests/administration_rw_tests.cpp @@ -23,23 +23,23 @@ TEST _administration_rw_taxrate(void) administration_writer::create(); - administration_create_empty(test_file_path); + administration::create_empty(test_file_path); { - pw = administration_tax_rate_create_empty(); + pw = administration::tax_rate_create_empty(); strops::copy(pw.country_code, "NL", sizeof(pw.country_code)); pw.rate = 10.0f; strops::copy(pw.category_code, "S", sizeof(pw.category_code)); - count = administration_tax_rate_count(); - administration_tax_rate_add(pw); + count = administration::tax_rate_count(); + administration::tax_rate_add(pw); - ASSERT_EQ(count+1, administration_tax_rate_count()); + ASSERT_EQ(count+1, administration::tax_rate_count()); } administration_reader::open_existing(test_file_path); { - ASSERT_EQ(count+1, administration_tax_rate_count()); - ASSERT_EQ(A_ERR_SUCCESS, administration_tax_rate_get_by_id(&pr, pw.id)); + ASSERT_EQ(count+1, administration::tax_rate_count()); + ASSERT_EQ(A_ERR_SUCCESS, administration::tax_rate_get_by_id(&pr, pw.id)); ASSERT_MEM_EQ(&pw, &pr, sizeof(tax_rate)); } @@ -54,22 +54,22 @@ TEST _administration_rw_costcenter(void) administration_writer::create(); - administration_create_empty(test_file_path); + administration::create_empty(test_file_path); { - pw = administration_cost_center_create_empty(); + pw = administration::cost_center_create_empty(); strops::copy(pw.code, "CODE", sizeof(pw.code)); strops::copy(pw.description, "Description", sizeof(pw.description)); - count = administration_cost_center_count(); - administration_cost_center_add(pw); + count = administration::cost_center_count(); + administration::cost_center_add(pw); - ASSERT_EQ(count+1, administration_cost_center_count()); + ASSERT_EQ(count+1, administration::cost_center_count()); } administration_reader::open_existing(test_file_path); { - ASSERT_EQ(count+1, administration_cost_center_count()); - ASSERT_EQ(A_ERR_SUCCESS, administration_cost_center_get_by_id(&pr, pw.id)); + ASSERT_EQ(count+1, administration::cost_center_count()); + ASSERT_EQ(A_ERR_SUCCESS, administration::cost_center_get_by_id(&pr, pw.id)); ASSERT_MEM_EQ(&pw, &pr, sizeof(cost_center)); } @@ -84,20 +84,20 @@ TEST _administration_rw_project(void) administration_writer::create(); - administration_create_empty(test_file_path); + administration::create_empty(test_file_path); { - pw = administration_project_create_empty(); + pw = administration::project_create_empty(); strops::copy(pw.description, "Test Project", sizeof(pw.description)); - count = administration_project_count(); - administration_project_add(pw); + count = administration::project_count(); + administration::project_add(pw); - ASSERT_EQ(count+1, administration_project_count()); + ASSERT_EQ(count+1, administration::project_count()); } administration_reader::open_existing(test_file_path); { - ASSERT_EQ(count+1, administration_project_count()); - ASSERT_EQ(A_ERR_SUCCESS, administration_project_get_by_id(&pr, pw.id)); + ASSERT_EQ(count+1, administration::project_count()); + ASSERT_EQ(A_ERR_SUCCESS, administration::project_get_by_id(&pr, pw.id)); ASSERT_MEM_EQ(&pw, &pr, sizeof(project)); } @@ -112,9 +112,9 @@ TEST _administration_rw_contact(void) administration_writer::create(); - administration_create_empty(test_file_path); + administration::create_empty(test_file_path); { - pw = administration_contact_create_empty(); + pw = administration::contact_create_empty(); strops::copy(pw.name, "John Johnsson", sizeof(pw.name)); strops::copy(pw.address.address1, "Address 1", sizeof(pw.address.address1)); strops::copy(pw.address.country_code, "FR", sizeof(pw.address.country_code)); @@ -123,16 +123,16 @@ TEST _administration_rw_contact(void) strops::copy(pw.email, "test@test.com", sizeof(pw.email)); pw.type = contact_type::CONTACT_CONSUMER; - count = administration_contact_count(); - administration_contact_add(pw); + count = administration::contact_count(); + administration::contact_add(pw); - ASSERT_EQ(count+1, administration_contact_count()); + ASSERT_EQ(count+1, administration::contact_count()); } administration_reader::open_existing(test_file_path); { - ASSERT_EQ(count+1, administration_contact_count()); - ASSERT_EQ(A_ERR_SUCCESS, administration_contact_get_by_id(&pr, pw.id)); + ASSERT_EQ(count+1, administration::contact_count()); + ASSERT_EQ(A_ERR_SUCCESS, administration::contact_get_by_id(&pr, pw.id)); ASSERT_MEM_EQ(&pw, &pr, sizeof(contact)); } @@ -145,25 +145,25 @@ TEST _administration_rw_info(void) s32 next_id, next_sequence_number; ai_service ais; - administration_create_empty(test_file_path); + administration::create_empty(test_file_path); { - next_id = administration_get_next_id(); - next_sequence_number = administration_get_next_sequence_number(); + next_id = administration::get_next_id(); + next_sequence_number = administration::get_next_sequence_number(); ai_service ss = {0}; ss.provider = AI_PROVIDER_OPENAI; strops::copy(ss.api_key_public, "123", sizeof(ss.api_key_public)); - administration_set_ai_service(ss); + administration::set_ai_service(ss); - ais = administration_get_ai_service(); + ais = administration::get_ai_service(); } administration_reader::open_existing(test_file_path); { - ASSERT_EQ(next_id, administration_get_next_id()); - ASSERT_EQ(next_sequence_number, administration_get_next_sequence_number()); + ASSERT_EQ(next_id, administration::get_next_id()); + ASSERT_EQ(next_sequence_number, administration::get_next_sequence_number()); - ai_service rs = administration_get_ai_service(); + ai_service rs = administration::get_ai_service(); ASSERT_MEM_EQ(&ais, &rs, sizeof(ai_service)); } @@ -183,9 +183,9 @@ TEST _assert_invoices_are_equal(invoice inv, invoice invr) ASSERT_STR_EQ(invr.project_id, inv.project_id); ASSERT_STR_EQ(invr.cost_center_id, inv.cost_center_id); - ASSERT_EQ(administration_billing_item_count(&inv), administration_billing_item_count(&invr)); + ASSERT_EQ(administration::billing_item_count(&inv), administration::billing_item_count(&invr)); - int num_items = administration_billing_item_count(&inv); + int num_items = administration::billing_item_count(&inv); for (int i = 0; i < num_items; i++) { billing_item* b1 = (billing_item*)list_get_at(&inv.billing_items, i); @@ -236,12 +236,12 @@ TEST _administration_rw_b2b_invoice(void) administration_writer::create(); - administration_create_default(test_file_path); + administration::create_default(test_file_path); { contact pw1 = _create_nl_business(); contact pw2 = _create_nl_business(); - inv = administration_invoice_create_empty(); + inv = administration::invoice_create_empty(); inv.supplier = pw1; inv.customer = pw2; inv.is_outgoing = 1; @@ -250,20 +250,20 @@ TEST _administration_rw_b2b_invoice(void) inv.delivered_at = inv.issued_at; inv.expires_at = inv.issued_at + 1000; - administration_billing_item_add_to_invoice(&inv, _create_bi3(&inv)); - administration_billing_item_add_to_invoice(&inv, _create_bi4(&inv)); - administration_billing_item_add_to_invoice(&inv, _create_bi5(&inv)); - administration_billing_item_add_to_invoice(&inv, _create_bi6(&inv)); + administration::billing_item_add_to_invoice(&inv, _create_bi3(&inv)); + administration::billing_item_add_to_invoice(&inv, _create_bi4(&inv)); + administration::billing_item_add_to_invoice(&inv, _create_bi5(&inv)); + administration::billing_item_add_to_invoice(&inv, _create_bi6(&inv)); - count = administration_invoice_count(); - ASSERT_EQ(administration_invoice_add(&inv), A_ERR_SUCCESS); - ASSERT_EQ(count+1, administration_invoice_count()); + count = administration::invoice_count(); + ASSERT_EQ(administration::invoice_add(&inv), A_ERR_SUCCESS); + ASSERT_EQ(count+1, administration::invoice_count()); } administration_reader::open_existing(test_file_path); { - ASSERT_EQ(count+1, administration_invoice_count()); - ASSERT_EQ(A_ERR_SUCCESS, administration_invoice_get_by_id(&invr, inv.id)); + ASSERT_EQ(count+1, administration::invoice_count()); + ASSERT_EQ(A_ERR_SUCCESS, administration::invoice_get_by_id(&invr, inv.id)); CHECK_CALL(_assert_invoices_are_equal(inv, invr)); } @@ -279,12 +279,12 @@ TEST _administration_rw_b2c_invoice(void) administration_writer::create(); - administration_create_default(test_file_path); + administration::create_default(test_file_path); { contact pw1 = _create_nl_business(); contact pw2 = _create_nl_consumer(); - inv = administration_invoice_create_empty(); + inv = administration::invoice_create_empty(); inv.supplier = pw1; inv.customer = pw2; inv.is_outgoing = 1; @@ -293,20 +293,20 @@ TEST _administration_rw_b2c_invoice(void) inv.delivered_at = inv.issued_at; inv.expires_at = inv.issued_at + 1000; - administration_billing_item_add_to_invoice(&inv, _create_bi3(&inv)); - administration_billing_item_add_to_invoice(&inv, _create_bi4(&inv)); - administration_billing_item_add_to_invoice(&inv, _create_bi5(&inv)); - administration_billing_item_add_to_invoice(&inv, _create_bi6(&inv)); + administration::billing_item_add_to_invoice(&inv, _create_bi3(&inv)); + administration::billing_item_add_to_invoice(&inv, _create_bi4(&inv)); + administration::billing_item_add_to_invoice(&inv, _create_bi5(&inv)); + administration::billing_item_add_to_invoice(&inv, _create_bi6(&inv)); - count = administration_invoice_count(); - ASSERT_EQ(administration_invoice_add(&inv), A_ERR_SUCCESS); - ASSERT_EQ(count+1, administration_invoice_count()); + count = administration::invoice_count(); + ASSERT_EQ(administration::invoice_add(&inv), A_ERR_SUCCESS); + ASSERT_EQ(count+1, administration::invoice_count()); } administration_reader::open_existing(test_file_path); { - ASSERT_EQ(count+1, administration_invoice_count()); - ASSERT_EQ(A_ERR_SUCCESS, administration_invoice_get_by_id(&invr, inv.id)); + ASSERT_EQ(count+1, administration::invoice_count()); + ASSERT_EQ(A_ERR_SUCCESS, administration::invoice_get_by_id(&invr, inv.id)); CHECK_CALL(_assert_invoices_are_equal(inv, invr)); } @@ -322,9 +322,9 @@ TEST _administration_rw_b2b2c_invoice(void) administration_writer::create(); - administration_create_default(test_file_path); + administration::create_default(test_file_path); { - inv = administration_invoice_create_empty(); + inv = administration::invoice_create_empty(); inv.supplier = _create_nl_business(); inv.customer = _create_nl_business(); strops::copy(inv.addressee.name, "Piet Pinda", sizeof(inv.addressee.name)); @@ -336,20 +336,20 @@ TEST _administration_rw_b2b2c_invoice(void) inv.delivered_at = inv.issued_at; inv.expires_at = inv.issued_at + 1000; - administration_billing_item_add_to_invoice(&inv, _create_bi3(&inv)); - administration_billing_item_add_to_invoice(&inv, _create_bi4(&inv)); - administration_billing_item_add_to_invoice(&inv, _create_bi5(&inv)); - administration_billing_item_add_to_invoice(&inv, _create_bi6(&inv)); + administration::billing_item_add_to_invoice(&inv, _create_bi3(&inv)); + administration::billing_item_add_to_invoice(&inv, _create_bi4(&inv)); + administration::billing_item_add_to_invoice(&inv, _create_bi5(&inv)); + administration::billing_item_add_to_invoice(&inv, _create_bi6(&inv)); - count = administration_invoice_count(); - ASSERT_EQ(administration_invoice_add(&inv), A_ERR_SUCCESS); - ASSERT_EQ(count+1, administration_invoice_count()); + count = administration::invoice_count(); + ASSERT_EQ(administration::invoice_add(&inv), A_ERR_SUCCESS); + ASSERT_EQ(count+1, administration::invoice_count()); } administration_reader::open_existing(test_file_path); { - ASSERT_EQ(count+1, administration_invoice_count()); - ASSERT_EQ(A_ERR_SUCCESS, administration_invoice_get_by_id(&invr, inv.id)); + ASSERT_EQ(count+1, administration::invoice_count()); + ASSERT_EQ(A_ERR_SUCCESS, administration::invoice_get_by_id(&invr, inv.id)); CHECK_CALL(_assert_invoices_are_equal(inv, invr)); } @@ -365,12 +365,12 @@ TEST _administration_rw_b2c_2currency_invoice(void) administration_writer::create(); - administration_create_default(test_file_path); + administration::create_default(test_file_path); { contact pw1 = _create_nl_business(); contact pw2 = _create_nl_consumer(); - inv = administration_invoice_create_empty(); + inv = administration::invoice_create_empty(); inv.supplier = pw1; inv.customer = pw2; inv.is_outgoing = 1; @@ -379,12 +379,12 @@ TEST _administration_rw_b2c_2currency_invoice(void) inv.delivered_at = inv.issued_at; inv.expires_at = inv.issued_at + 1000; - administration_invoice_set_currency(&inv, "USD"); + administration::invoice_set_currency(&inv, "USD"); - administration_billing_item_add_to_invoice(&inv, _create_bi3(&inv)); - administration_billing_item_add_to_invoice(&inv, _create_bi4(&inv)); - administration_billing_item_add_to_invoice(&inv, _create_bi5(&inv)); - administration_billing_item_add_to_invoice(&inv, _create_bi6(&inv)); + administration::billing_item_add_to_invoice(&inv, _create_bi3(&inv)); + administration::billing_item_add_to_invoice(&inv, _create_bi4(&inv)); + administration::billing_item_add_to_invoice(&inv, _create_bi5(&inv)); + administration::billing_item_add_to_invoice(&inv, _create_bi6(&inv)); // Finals are set manually for multi currency invoices. inv.total = 20.0f; @@ -392,15 +392,15 @@ TEST _administration_rw_b2c_2currency_invoice(void) inv.net = 10.0f; inv.allowance = 5.0f; - count = administration_invoice_count(); - ASSERT_EQ(administration_invoice_add(&inv), A_ERR_SUCCESS); - ASSERT_EQ(count+1, administration_invoice_count()); + count = administration::invoice_count(); + ASSERT_EQ(administration::invoice_add(&inv), A_ERR_SUCCESS); + ASSERT_EQ(count+1, administration::invoice_count()); } administration_reader::open_existing(test_file_path); { - ASSERT_EQ(count+1, administration_invoice_count()); - ASSERT_EQ(A_ERR_SUCCESS, administration_invoice_get_by_id(&invr, inv.id)); + ASSERT_EQ(count+1, administration::invoice_count()); + ASSERT_EQ(A_ERR_SUCCESS, administration::invoice_get_by_id(&invr, inv.id)); CHECK_CALL(_assert_invoices_are_equal(inv, invr)); } diff --git a/tests/administration_validation_tests.cpp b/tests/administration_validation_tests.cpp index 3803469..7ebe48e 100644 --- a/tests/administration_validation_tests.cpp +++ b/tests/administration_validation_tests.cpp @@ -3,26 +3,26 @@ ////////////////// TEST _administration_validate_project_add(void) { - administration_create_empty(""); - project p1 = administration_project_create_empty(); + administration::create_empty(""); + project p1 = administration::project_create_empty(); - ASSERT_EQ(administration_project_add(p1), A_ERR_MISSING_DESCRIPTION); + ASSERT_EQ(administration::project_add(p1), A_ERR_MISSING_DESCRIPTION); strops::copy(p1.description, "test project", sizeof(p1.description)); - ASSERT_EQ(administration_project_add(p1), A_ERR_SUCCESS); + ASSERT_EQ(administration::project_add(p1), A_ERR_SUCCESS); PASS(); } TEST _administration_validate_project_import(void) { - administration_create_empty(""); - project p1 = administration_project_create_empty(); + administration::create_empty(""); + project p1 = administration::project_create_empty(); - ASSERT_EQ(administration_project_import(p1), A_ERR_MISSING_DESCRIPTION); + ASSERT_EQ(administration::project_import(p1), A_ERR_MISSING_DESCRIPTION); strops::copy(p1.description, "test project", sizeof(p1.description)); - ASSERT_EQ(administration_project_import(p1), A_ERR_SUCCESS); + ASSERT_EQ(administration::project_import(p1), A_ERR_SUCCESS); PASS(); } @@ -30,49 +30,49 @@ TEST _administration_validate_project_import(void) TEST _administration_validate_project_update(void) { - administration_create_empty(""); - project p1 = administration_project_create_empty(); + administration::create_empty(""); + project p1 = administration::project_create_empty(); strops::copy(p1.description, "test project", sizeof(p1.description)); - ASSERT_EQ(administration_project_add(p1), A_ERR_SUCCESS); - ASSERT_EQ(administration_project_update(p1), A_ERR_SUCCESS); + ASSERT_EQ(administration::project_add(p1), A_ERR_SUCCESS); + ASSERT_EQ(administration::project_update(p1), A_ERR_SUCCESS); strops::copy(p1.description, "", sizeof(p1.description)); - ASSERT_EQ(administration_project_update(p1), A_ERR_MISSING_DESCRIPTION); + ASSERT_EQ(administration::project_update(p1), A_ERR_MISSING_DESCRIPTION); strops::copy(p1.id, "-1", sizeof(p1.id)); strops::copy(p1.description, "test project 2", sizeof(p1.description)); - ASSERT_EQ(administration_project_update(p1), A_ERR_NOT_FOUND); + ASSERT_EQ(administration::project_update(p1), A_ERR_NOT_FOUND); PASS(); } TEST _administration_validate_project_remove(void) { - administration_create_empty(""); - project p1 = administration_project_create_empty(); + administration::create_empty(""); + project p1 = administration::project_create_empty(); strops::copy(p1.description, "test project", sizeof(p1.description)); - ASSERT_EQ(administration_project_add(p1), A_ERR_SUCCESS); + ASSERT_EQ(administration::project_add(p1), A_ERR_SUCCESS); - ASSERT_EQ(administration_project_remove(p1), A_ERR_SUCCESS); + ASSERT_EQ(administration::project_remove(p1), A_ERR_SUCCESS); - ASSERT_EQ(administration_project_add(p1), A_ERR_SUCCESS); + ASSERT_EQ(administration::project_add(p1), A_ERR_SUCCESS); strops::copy(p1.id, "-1", sizeof(p1.id)); - ASSERT_EQ(administration_project_remove(p1), A_ERR_NOT_FOUND); + ASSERT_EQ(administration::project_remove(p1), A_ERR_NOT_FOUND); PASS(); } TEST _administration_validate_project_isvalid(void) { - administration_create_empty(""); - project p1 = administration_project_create_empty(); + administration::create_empty(""); + project p1 = administration::project_create_empty(); - ASSERT_EQ(administration_project_is_valid(p1), A_ERR_MISSING_DESCRIPTION); + ASSERT_EQ(administration::project_is_valid(p1), A_ERR_MISSING_DESCRIPTION); strops::copy(p1.description, "test project", sizeof(p1.description)); - ASSERT_EQ(administration_project_is_valid(p1), A_ERR_SUCCESS); + ASSERT_EQ(administration::project_is_valid(p1), A_ERR_SUCCESS); PASS(); } @@ -81,20 +81,20 @@ TEST _administration_validate_project_isvalid(void) ////////////////// TEST _administration_validate_taxrate_add(void) { - administration_create_empty(""); - tax_rate p1 = administration_tax_rate_create_empty(); + administration::create_empty(""); + tax_rate p1 = administration::tax_rate_create_empty(); - ASSERT_EQ(administration_tax_rate_add(p1), A_ERR_SUCCESS); + ASSERT_EQ(administration::tax_rate_add(p1), A_ERR_SUCCESS); PASS(); } TEST _administration_validate_taxrate_import(void) { - administration_create_empty(""); - tax_rate p1 = administration_tax_rate_create_empty(); + administration::create_empty(""); + tax_rate p1 = administration::tax_rate_create_empty(); - ASSERT_EQ(administration_tax_rate_import(p1), A_ERR_SUCCESS); + ASSERT_EQ(administration::tax_rate_import(p1), A_ERR_SUCCESS); PASS(); } @@ -102,14 +102,14 @@ TEST _administration_validate_taxrate_import(void) TEST _administration_validate_taxrate_update(void) { - administration_create_empty(""); - tax_rate p1 = administration_tax_rate_create_empty(); + administration::create_empty(""); + tax_rate p1 = administration::tax_rate_create_empty(); - ASSERT_EQ(administration_tax_rate_add(p1), A_ERR_SUCCESS); - ASSERT_EQ(administration_tax_rate_update(p1), A_ERR_SUCCESS); + ASSERT_EQ(administration::tax_rate_add(p1), A_ERR_SUCCESS); + ASSERT_EQ(administration::tax_rate_update(p1), A_ERR_SUCCESS); strops::copy(p1.id, "-1", sizeof(p1.id)); - ASSERT_EQ(administration_tax_rate_update(p1), A_ERR_NOT_FOUND); + ASSERT_EQ(administration::tax_rate_update(p1), A_ERR_NOT_FOUND); PASS(); } @@ -118,34 +118,34 @@ TEST _administration_validate_taxrate_update(void) ////////////////// TEST _administration_validate_costcenter_add(void) { - administration_create_empty(""); - cost_center p1 = administration_cost_center_create_empty(); + administration::create_empty(""); + cost_center p1 = administration::cost_center_create_empty(); strops::copy(p1.code, "TEST", sizeof(p1.code)); strops::copy(p1.description, "description", sizeof(p1.description)); - ASSERT_EQ(administration_cost_center_add(p1), A_ERR_SUCCESS); + ASSERT_EQ(administration::cost_center_add(p1), A_ERR_SUCCESS); - ASSERT_EQ(administration_cost_center_add(p1), A_ERR_CODE_EXISTS); + ASSERT_EQ(administration::cost_center_add(p1), A_ERR_CODE_EXISTS); strops::copy(p1.code, "", sizeof(p1.code)); - ASSERT_EQ(administration_cost_center_add(p1), A_ERR_MISSING_CODE); + ASSERT_EQ(administration::cost_center_add(p1), A_ERR_MISSING_CODE); strops::copy(p1.description, "", sizeof(p1.description)); - ASSERT_EQ(administration_cost_center_add(p1), A_ERR_MISSING_CODE|A_ERR_MISSING_DESCRIPTION); + ASSERT_EQ(administration::cost_center_add(p1), A_ERR_MISSING_CODE|A_ERR_MISSING_DESCRIPTION); PASS(); } TEST _administration_validate_costcenter_import(void) { - administration_create_empty(""); - cost_center p1 = administration_cost_center_create_empty(); + administration::create_empty(""); + cost_center p1 = administration::cost_center_create_empty(); strops::copy(p1.code, "TEST", sizeof(p1.code)); strops::copy(p1.description, "description", sizeof(p1.description)); - ASSERT_EQ(administration_cost_center_import(p1), A_ERR_SUCCESS); + ASSERT_EQ(administration::cost_center_import(p1), A_ERR_SUCCESS); - ASSERT_EQ(administration_cost_center_import(p1), A_ERR_CODE_EXISTS); + ASSERT_EQ(administration::cost_center_import(p1), A_ERR_CODE_EXISTS); strops::copy(p1.code, "", sizeof(p1.code)); - ASSERT_EQ(administration_cost_center_import(p1), A_ERR_MISSING_CODE); + ASSERT_EQ(administration::cost_center_import(p1), A_ERR_MISSING_CODE); strops::copy(p1.description, "", sizeof(p1.description)); - ASSERT_EQ(administration_cost_center_import(p1), A_ERR_MISSING_CODE|A_ERR_MISSING_DESCRIPTION); + ASSERT_EQ(administration::cost_center_import(p1), A_ERR_MISSING_CODE|A_ERR_MISSING_DESCRIPTION); PASS(); } @@ -153,46 +153,46 @@ TEST _administration_validate_costcenter_import(void) TEST _administration_validate_costcenter_update(void) { - administration_create_empty(""); - cost_center p1 = administration_cost_center_create_empty(); + administration::create_empty(""); + cost_center p1 = administration::cost_center_create_empty(); strops::copy(p1.code, "TEST", sizeof(p1.code)); strops::copy(p1.description, "description", sizeof(p1.description)); - ASSERT_EQ(administration_cost_center_add(p1), A_ERR_SUCCESS); - ASSERT_EQ(administration_cost_center_update(p1), A_ERR_SUCCESS); + ASSERT_EQ(administration::cost_center_add(p1), A_ERR_SUCCESS); + ASSERT_EQ(administration::cost_center_update(p1), A_ERR_SUCCESS); strops::copy(p1.code, "", sizeof(p1.code)); - ASSERT_EQ(administration_cost_center_update(p1), A_ERR_MISSING_CODE); + ASSERT_EQ(administration::cost_center_update(p1), A_ERR_MISSING_CODE); strops::copy(p1.description, "", sizeof(p1.description)); - ASSERT_EQ(administration_cost_center_update(p1), A_ERR_MISSING_CODE|A_ERR_MISSING_DESCRIPTION); + ASSERT_EQ(administration::cost_center_update(p1), A_ERR_MISSING_CODE|A_ERR_MISSING_DESCRIPTION); strops::copy(p1.id, "-1", sizeof(p1.id)); strops::copy(p1.code, "TEST", sizeof(p1.code)); strops::copy(p1.description, "description", sizeof(p1.description)); - ASSERT_EQ(administration_cost_center_update(p1), A_ERR_NOT_FOUND); + ASSERT_EQ(administration::cost_center_update(p1), A_ERR_NOT_FOUND); PASS(); } TEST _administration_validate_costcenter_isvalid(void) { - administration_create_empty(""); - cost_center p1 = administration_cost_center_create_empty(); + administration::create_empty(""); + cost_center p1 = administration::cost_center_create_empty(); strops::copy(p1.code, "TEST", sizeof(p1.code)); strops::copy(p1.description, "description", sizeof(p1.description)); - ASSERT_EQ(administration_cost_center_is_valid(p1), A_ERR_SUCCESS); + ASSERT_EQ(administration::cost_center_is_valid(p1), A_ERR_SUCCESS); strops::copy(p1.code, "", sizeof(p1.code)); - ASSERT_EQ(administration_cost_center_is_valid(p1), A_ERR_MISSING_CODE); + ASSERT_EQ(administration::cost_center_is_valid(p1), A_ERR_MISSING_CODE); strops::copy(p1.code, "", sizeof(p1.code)); strops::copy(p1.description, "", sizeof(p1.description)); - ASSERT_EQ(administration_cost_center_is_valid(p1), A_ERR_MISSING_CODE|A_ERR_MISSING_DESCRIPTION); + ASSERT_EQ(administration::cost_center_is_valid(p1), A_ERR_MISSING_CODE|A_ERR_MISSING_DESCRIPTION); strops::copy(p1.code, "TEST", sizeof(p1.code)); strops::copy(p1.description, "description", sizeof(p1.description)); - ASSERT_EQ(administration_cost_center_add(p1), A_ERR_SUCCESS); - ASSERT_EQ(administration_cost_center_is_valid(p1), A_ERR_CODE_EXISTS); + ASSERT_EQ(administration::cost_center_add(p1), A_ERR_SUCCESS); + ASSERT_EQ(administration::cost_center_is_valid(p1), A_ERR_CODE_EXISTS); PASS(); } @@ -202,7 +202,7 @@ TEST _administration_validate_costcenter_isvalid(void) ////////////////// contact _create_test_contact() { - contact p1 = administration_contact_create_empty(); + contact p1 = administration::contact_create_empty(); strops::copy(p1.name, "John Johnsson", sizeof(p1.name)); strops::copy(p1.address.address1, "Address 1", sizeof(p1.address.address1)); strops::copy(p1.address.country_code, "FR", sizeof(p1.address.country_code)); @@ -215,24 +215,24 @@ contact _create_test_contact() TEST _administration_validate_contact_add(void) { - administration_create_empty(""); + administration::create_empty(""); contact p1 = _create_test_contact(); - ASSERT_EQ(administration_contact_add(p1), A_ERR_SUCCESS); + ASSERT_EQ(administration::contact_add(p1), A_ERR_SUCCESS); strops::copy(p1.name, "", sizeof(p1.name)); - ASSERT_EQ(administration_contact_add(p1), A_ERR_MISSING_NAME); + ASSERT_EQ(administration::contact_add(p1), A_ERR_MISSING_NAME); strops::copy(p1.address.address1, "", sizeof(p1.address.address1)); - ASSERT_EQ(administration_contact_add(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1); + ASSERT_EQ(administration::contact_add(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1); strops::copy(p1.address.city, "", sizeof(p1.address.city)); - ASSERT_EQ(administration_contact_add(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY); + ASSERT_EQ(administration::contact_add(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY); strops::copy(p1.address.postal, "", sizeof(p1.address.postal)); - ASSERT_EQ(administration_contact_add(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY|A_ERR_MISSING_POSTAL); + ASSERT_EQ(administration::contact_add(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY|A_ERR_MISSING_POSTAL); strops::copy(p1.address.country_code, "", sizeof(p1.address.country_code)); - ASSERT_EQ(administration_contact_add(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY|A_ERR_MISSING_POSTAL|A_ERR_MISSING_COUNTRYCODE); + ASSERT_EQ(administration::contact_add(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY|A_ERR_MISSING_POSTAL|A_ERR_MISSING_COUNTRYCODE); p1.type = contact_type::CONTACT_BUSINESS; - ASSERT_EQ(administration_contact_add(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY| + ASSERT_EQ(administration::contact_add(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY| A_ERR_MISSING_POSTAL|A_ERR_MISSING_COUNTRYCODE|A_ERR_MISSING_TAXID|A_ERR_MISSING_BUSINESSID); PASS(); @@ -241,24 +241,24 @@ TEST _administration_validate_contact_add(void) TEST _administration_validate_contact_import(void) { - administration_create_empty(""); + administration::create_empty(""); contact p1 = _create_test_contact(); - ASSERT_EQ(administration_contact_import(p1), A_ERR_SUCCESS); + ASSERT_EQ(administration::contact_import(p1), A_ERR_SUCCESS); strops::copy(p1.name, "", sizeof(p1.name)); - ASSERT_EQ(administration_contact_import(p1), A_ERR_MISSING_NAME); + ASSERT_EQ(administration::contact_import(p1), A_ERR_MISSING_NAME); strops::copy(p1.address.address1, "", sizeof(p1.address.address1)); - ASSERT_EQ(administration_contact_import(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1); + ASSERT_EQ(administration::contact_import(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1); strops::copy(p1.address.city, "", sizeof(p1.address.city)); - ASSERT_EQ(administration_contact_import(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY); + ASSERT_EQ(administration::contact_import(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY); strops::copy(p1.address.postal, "", sizeof(p1.address.postal)); - ASSERT_EQ(administration_contact_import(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY|A_ERR_MISSING_POSTAL); + ASSERT_EQ(administration::contact_import(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY|A_ERR_MISSING_POSTAL); strops::copy(p1.address.country_code, "", sizeof(p1.address.country_code)); - ASSERT_EQ(administration_contact_import(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY|A_ERR_MISSING_POSTAL|A_ERR_MISSING_COUNTRYCODE); + ASSERT_EQ(administration::contact_import(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY|A_ERR_MISSING_POSTAL|A_ERR_MISSING_COUNTRYCODE); p1.type = contact_type::CONTACT_BUSINESS; - ASSERT_EQ(administration_contact_import(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY| + ASSERT_EQ(administration::contact_import(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY| A_ERR_MISSING_POSTAL|A_ERR_MISSING_COUNTRYCODE|A_ERR_MISSING_TAXID|A_ERR_MISSING_BUSINESSID); PASS(); @@ -267,25 +267,25 @@ TEST _administration_validate_contact_import(void) TEST _administration_validate_contact_update(void) { - administration_create_empty(""); + administration::create_empty(""); contact p1 = _create_test_contact(); - ASSERT_EQ(administration_contact_add(p1), A_ERR_SUCCESS); - ASSERT_EQ(administration_contact_update(p1), A_ERR_SUCCESS); + ASSERT_EQ(administration::contact_add(p1), A_ERR_SUCCESS); + ASSERT_EQ(administration::contact_update(p1), A_ERR_SUCCESS); strops::copy(p1.name, "", sizeof(p1.name)); - ASSERT_EQ(administration_contact_update(p1), A_ERR_MISSING_NAME); + ASSERT_EQ(administration::contact_update(p1), A_ERR_MISSING_NAME); strops::copy(p1.address.address1, "", sizeof(p1.address.address1)); - ASSERT_EQ(administration_contact_update(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1); + ASSERT_EQ(administration::contact_update(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1); strops::copy(p1.address.city, "", sizeof(p1.address.city)); - ASSERT_EQ(administration_contact_update(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY); + ASSERT_EQ(administration::contact_update(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY); strops::copy(p1.address.postal, "", sizeof(p1.address.postal)); - ASSERT_EQ(administration_contact_update(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY|A_ERR_MISSING_POSTAL); + ASSERT_EQ(administration::contact_update(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY|A_ERR_MISSING_POSTAL); strops::copy(p1.address.country_code, "", sizeof(p1.address.country_code)); - ASSERT_EQ(administration_contact_update(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY|A_ERR_MISSING_POSTAL|A_ERR_MISSING_COUNTRYCODE); + ASSERT_EQ(administration::contact_update(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY|A_ERR_MISSING_POSTAL|A_ERR_MISSING_COUNTRYCODE); p1.type = contact_type::CONTACT_BUSINESS; - ASSERT_EQ(administration_contact_update(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY| + ASSERT_EQ(administration::contact_update(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY| A_ERR_MISSING_POSTAL|A_ERR_MISSING_COUNTRYCODE|A_ERR_MISSING_TAXID|A_ERR_MISSING_BUSINESSID); strops::copy(p1.id, "-1", sizeof(p1.id)); @@ -295,48 +295,48 @@ TEST _administration_validate_contact_update(void) strops::copy(p1.address.city, "Paris", sizeof(p1.address.city)); strops::copy(p1.address.postal, "12345", sizeof(p1.address.postal)); p1.type = contact_type::CONTACT_CONSUMER; - ASSERT_EQ(administration_contact_update(p1), A_ERR_NOT_FOUND); + ASSERT_EQ(administration::contact_update(p1), A_ERR_NOT_FOUND); PASS(); } TEST _administration_validate_contact_remove(void) { - administration_create_empty(""); + administration::create_empty(""); contact p1 = _create_test_contact(); - ASSERT_EQ(administration_contact_add(p1), A_ERR_SUCCESS); + ASSERT_EQ(administration::contact_add(p1), A_ERR_SUCCESS); - ASSERT_EQ(administration_contact_remove(p1), A_ERR_SUCCESS); + ASSERT_EQ(administration::contact_remove(p1), A_ERR_SUCCESS); - ASSERT_EQ(administration_contact_add(p1), A_ERR_SUCCESS); + ASSERT_EQ(administration::contact_add(p1), A_ERR_SUCCESS); strops::copy(p1.id, "-1", sizeof(p1.id)); - ASSERT_EQ(administration_contact_remove(p1), A_ERR_NOT_FOUND); + ASSERT_EQ(administration::contact_remove(p1), A_ERR_NOT_FOUND); PASS(); } TEST _administration_validate_contact_isvalid(void) { - administration_create_empty(""); + administration::create_empty(""); contact p1 = _create_test_contact(); - ASSERT_EQ(administration_contact_is_valid(p1), A_ERR_SUCCESS); - ASSERT_EQ(administration_contact_is_valid(p1), A_ERR_SUCCESS); + ASSERT_EQ(administration::contact_is_valid(p1), A_ERR_SUCCESS); + ASSERT_EQ(administration::contact_is_valid(p1), A_ERR_SUCCESS); strops::copy(p1.name, "", sizeof(p1.name)); - ASSERT_EQ(administration_contact_is_valid(p1), A_ERR_MISSING_NAME); + ASSERT_EQ(administration::contact_is_valid(p1), A_ERR_MISSING_NAME); strops::copy(p1.address.address1, "", sizeof(p1.address.address1)); - ASSERT_EQ(administration_contact_is_valid(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1); + ASSERT_EQ(administration::contact_is_valid(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1); strops::copy(p1.address.city, "", sizeof(p1.address.city)); - ASSERT_EQ(administration_contact_is_valid(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY); + ASSERT_EQ(administration::contact_is_valid(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY); strops::copy(p1.address.postal, "", sizeof(p1.address.postal)); - ASSERT_EQ(administration_contact_is_valid(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY|A_ERR_MISSING_POSTAL); + ASSERT_EQ(administration::contact_is_valid(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY|A_ERR_MISSING_POSTAL); strops::copy(p1.address.country_code, "", sizeof(p1.address.country_code)); - ASSERT_EQ(administration_contact_is_valid(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY|A_ERR_MISSING_POSTAL|A_ERR_MISSING_COUNTRYCODE); + ASSERT_EQ(administration::contact_is_valid(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY|A_ERR_MISSING_POSTAL|A_ERR_MISSING_COUNTRYCODE); p1.type = contact_type::CONTACT_BUSINESS; - ASSERT_EQ(administration_contact_is_valid(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY| + ASSERT_EQ(administration::contact_is_valid(p1), A_ERR_MISSING_NAME|A_ERR_MISSING_ADDRESS1|A_ERR_MISSING_CITY| A_ERR_MISSING_POSTAL|A_ERR_MISSING_COUNTRYCODE|A_ERR_MISSING_TAXID|A_ERR_MISSING_BUSINESSID); PASS(); diff --git a/tests/peppol_write_tests.cpp b/tests/peppol_write_tests.cpp index fd137b5..7caa102 100644 --- a/tests/peppol_write_tests.cpp +++ b/tests/peppol_write_tests.cpp @@ -5,9 +5,9 @@ TEST _peppol_write_nl2nl_b2b(void) { administration_writer::create(); - administration_create_default(test_file_path); + administration::create_default(test_file_path); - invoice inv = administration_invoice_create_empty(); + invoice inv = administration::invoice_create_empty(); inv.supplier = _create_nl_business(); inv.customer = _create_nl_business(); inv.is_outgoing = 1; @@ -16,9 +16,9 @@ TEST _peppol_write_nl2nl_b2b(void) inv.delivered_at = inv.issued_at; inv.expires_at = inv.issued_at + 1000; - administration_billing_item_add_to_invoice(&inv, _create_bi1(&inv)); - administration_billing_item_add_to_invoice(&inv, _create_bi2(&inv)); - ASSERT_EQ(administration_invoice_add(&inv), A_ERR_SUCCESS); + administration::billing_item_add_to_invoice(&inv, _create_bi1(&inv)); + administration::billing_item_add_to_invoice(&inv, _create_bi2(&inv)); + ASSERT_EQ(administration::invoice_add(&inv), A_ERR_SUCCESS); if (_test_peppol_file(inv.id)) { PASS(); } else { FAIL(); } } @@ -26,9 +26,9 @@ TEST _peppol_write_nl2nl_b2b(void) TEST _peppol_write_nl2nl_b2c(void) { administration_writer::create(); - administration_create_default(test_file_path); + administration::create_default(test_file_path); - invoice inv = administration_invoice_create_empty(); + invoice inv = administration::invoice_create_empty(); inv.supplier = _create_nl_business(); inv.customer = _create_nl_consumer(); inv.is_outgoing = 1; @@ -37,9 +37,9 @@ TEST _peppol_write_nl2nl_b2c(void) inv.delivered_at = inv.issued_at; inv.expires_at = inv.issued_at + 1000; - administration_billing_item_add_to_invoice(&inv, _create_bi1(&inv)); - administration_billing_item_add_to_invoice(&inv, _create_bi2(&inv)); - ASSERT_EQ(administration_invoice_add(&inv), A_ERR_SUCCESS); + administration::billing_item_add_to_invoice(&inv, _create_bi1(&inv)); + administration::billing_item_add_to_invoice(&inv, _create_bi2(&inv)); + ASSERT_EQ(administration::invoice_add(&inv), A_ERR_SUCCESS); if (_test_peppol_file(inv.id)) { PASS(); } else { FAIL(); } } diff --git a/tests/test_helper.cpp b/tests/test_helper.cpp index 38aa655..f0b0d66 100644 --- a/tests/test_helper.cpp +++ b/tests/test_helper.cpp @@ -21,7 +21,7 @@ char* extract_dir = "build\\extracted"; static contact _create_nl_business() { - contact pw = administration_contact_create_empty(); + contact pw = administration::contact_create_empty(); strops::copy(pw.name, "Dutch Company BV", sizeof(pw.name)); strops::copy(pw.address.address1, "Address 1", sizeof(pw.address.address1)); strops::copy(pw.address.country_code, "NL", sizeof(pw.address.country_code)); @@ -39,7 +39,7 @@ static contact _create_nl_business() static contact _create_nl_consumer() { - contact pw = administration_contact_create_empty(); + contact pw = administration::contact_create_empty(); strops::copy(pw.name, "Piet Pinda", sizeof(pw.name)); strops::copy(pw.address.address1, "Address 2", sizeof(pw.address.address1)); strops::copy(pw.address.country_code, "NL", sizeof(pw.address.country_code)); @@ -55,7 +55,7 @@ static contact _create_nl_consumer() static billing_item _create_bi1(invoice *inv) { - billing_item item = administration_billing_item_create_empty(); + billing_item item = administration::billing_item_create_empty(); item.amount = 1; item.amount_is_percentage = 0; strops::copy(item.description, "Shampoo", MAX_LEN_LONG_DESC); @@ -65,7 +65,7 @@ static billing_item _create_bi1(invoice *inv) tax_rate buffer[20]; char* _country_codes[2] = {inv->supplier.address.country_code, inv->customer.address.country_code}; - u32 tax_rate_count = administration_tax_rate_get_by_country(buffer, 2, _country_codes); + u32 tax_rate_count = administration::tax_rate_get_by_country(buffer, 2, _country_codes); tax_rate rand_rate = buffer[tax_rate_count-1]; strops::copy(item.tax_rate_id, rand_rate.id, MAX_LEN_ID); @@ -74,7 +74,7 @@ static billing_item _create_bi1(invoice *inv) static billing_item _create_bi2(invoice *inv) { - billing_item item = administration_billing_item_create_empty(); + billing_item item = administration::billing_item_create_empty(); item.amount = 2; item.amount_is_percentage = 0; strops::copy(item.description, "Soap", MAX_LEN_LONG_DESC); @@ -84,7 +84,7 @@ static billing_item _create_bi2(invoice *inv) tax_rate buffer[20]; char* _country_codes[2] = {inv->supplier.address.country_code, inv->customer.address.country_code}; - u32 tax_rate_count = administration_tax_rate_get_by_country(buffer, 2, _country_codes); + u32 tax_rate_count = administration::tax_rate_get_by_country(buffer, 2, _country_codes); tax_rate rand_rate = buffer[tax_rate_count-1]; strops::copy(item.tax_rate_id, rand_rate.id, MAX_LEN_ID); @@ -93,7 +93,7 @@ static billing_item _create_bi2(invoice *inv) static billing_item _create_bi3(invoice *inv) { - billing_item item = administration_billing_item_create_empty(); + billing_item item = administration::billing_item_create_empty(); item.amount = 1; item.amount_is_percentage = 0; strops::copy(item.description, "Guacamole", MAX_LEN_LONG_DESC); @@ -103,7 +103,7 @@ static billing_item _create_bi3(invoice *inv) tax_rate buffer[20]; char* _country_codes[2] = {inv->supplier.address.country_code, inv->customer.address.country_code}; - u32 tax_rate_count = administration_tax_rate_get_by_country(buffer, 2, _country_codes); + u32 tax_rate_count = administration::tax_rate_get_by_country(buffer, 2, _country_codes); tax_rate rand_rate = buffer[tax_rate_count-1]; strops::copy(item.tax_rate_id, rand_rate.id, MAX_LEN_ID); @@ -112,7 +112,7 @@ static billing_item _create_bi3(invoice *inv) static billing_item _create_bi4(invoice *inv) { - billing_item item = administration_billing_item_create_empty(); + billing_item item = administration::billing_item_create_empty(); item.amount = 3; item.amount_is_percentage = 0; strops::copy(item.description, "Bananas", MAX_LEN_LONG_DESC); @@ -122,7 +122,7 @@ static billing_item _create_bi4(invoice *inv) tax_rate buffer[20]; char* _country_codes[2] = {inv->supplier.address.country_code, inv->customer.address.country_code}; - u32 tax_rate_count = administration_tax_rate_get_by_country(buffer, 2, _country_codes); + u32 tax_rate_count = administration::tax_rate_get_by_country(buffer, 2, _country_codes); tax_rate rand_rate = buffer[tax_rate_count-1]; strops::copy(item.tax_rate_id, rand_rate.id, MAX_LEN_ID); @@ -131,7 +131,7 @@ static billing_item _create_bi4(invoice *inv) static billing_item _create_bi5(invoice *inv) { - billing_item item = administration_billing_item_create_empty(); + billing_item item = administration::billing_item_create_empty(); item.amount = 5; item.amount_is_percentage = 0; strops::copy(item.description, "Apple", MAX_LEN_LONG_DESC); @@ -141,7 +141,7 @@ static billing_item _create_bi5(invoice *inv) tax_rate buffer[20]; char* _country_codes[2] = {inv->supplier.address.country_code, inv->customer.address.country_code}; - u32 tax_rate_count = administration_tax_rate_get_by_country(buffer, 2, _country_codes); + u32 tax_rate_count = administration::tax_rate_get_by_country(buffer, 2, _country_codes); tax_rate rand_rate = buffer[tax_rate_count-1]; strops::copy(item.tax_rate_id, rand_rate.id, MAX_LEN_ID); @@ -150,7 +150,7 @@ static billing_item _create_bi5(invoice *inv) static billing_item _create_bi6(invoice *inv) { - billing_item item = administration_billing_item_create_empty(); + billing_item item = administration::billing_item_create_empty(); item.amount = 10; item.amount_is_percentage = 1; strops::copy(item.description, "Tip", MAX_LEN_LONG_DESC); @@ -160,7 +160,7 @@ static billing_item _create_bi6(invoice *inv) tax_rate buffer[20]; char* _country_codes[2] = {inv->supplier.address.country_code, inv->customer.address.country_code}; - u32 tax_rate_count = administration_tax_rate_get_by_country(buffer, 2, _country_codes); + u32 tax_rate_count = administration::tax_rate_get_by_country(buffer, 2, _country_codes); tax_rate rand_rate = buffer[tax_rate_count-1]; strops::copy(item.tax_rate_id, rand_rate.id, MAX_LEN_ID); |
