summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAldrik Ramaekers <aldrikboy@gmail.com>2025-10-05 14:37:11 +0200
committerAldrik Ramaekers <aldrikboy@gmail.com>2025-10-05 14:37:11 +0200
commit0a2b0e347d926ac0f29c9dd0f49e00634e822d0e (patch)
treef84ecc1e559227b1435f6647b36d150f4b101585 /src
parentcd827834f9ee329c27b82d987f0d1d48a854a954 (diff)
namespace administration
Diffstat (limited to 'src')
-rw-r--r--src/administration.cpp338
-rw-r--r--src/administration_reader.cpp32
-rw-r--r--src/administration_writer.cpp64
-rw-r--r--src/ai_providers/DeepSeek.cpp2
-rw-r--r--src/ai_providers/openAI.cpp4
-rw-r--r--src/importer.cpp8
-rw-r--r--src/locales.cpp19
-rw-r--r--src/locales/en.cpp4
-rw-r--r--src/main.cpp2
-rw-r--r--src/strops.cpp9
-rw-r--r--src/ui/imgui_extensions.cpp14
-rw-r--r--src/ui/ui_contacts.cpp22
-rw-r--r--src/ui/ui_earnings.cpp4
-rw-r--r--src/ui/ui_expenses.cpp38
-rw-r--r--src/ui/ui_invoices.cpp54
-rw-r--r--src/ui/ui_main.cpp2
-rw-r--r--src/ui/ui_projects.cpp24
-rw-r--r--src/ui/ui_settings.cpp36
18 files changed, 344 insertions, 332 deletions
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();