summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/administration.cpp84
-rw-r--r--src/administration_reader.cpp2
-rw-r--r--src/log.cpp6
3 files changed, 16 insertions, 76 deletions
diff --git a/src/administration.cpp b/src/administration.cpp
index a724892..b6dfcbb 100644
--- a/src/administration.cpp
+++ b/src/administration.cpp
@@ -294,8 +294,9 @@ static bool is_initialized = false;
void administration_create()
{
- is_initialized = true;
STOPWATCH_START;
+ log_clear();
+ is_initialized = true;
list_init(&g_administration.invoices);
list_init(&g_administration.contacts);
@@ -1499,85 +1500,16 @@ a_err administration_invoice_remove(invoice* inv)
return A_ERR_NOT_FOUND;
}
-static void administration_invoice_set_refs(invoice* inv)
+a_err administration_invoice_update(invoice* inv)
{
- // This function makes sure that contact info referenced in the IDs actually
- // matches the contact info stored in administration, if not we make new contacts.
-
- // Check if supplier info is equal to contact stored in supplier id, in case we autocomplete and edit data after,
- // this should be handled as a new contact.
- contact lookup_buffer;
- if (administration_contact_get_by_id(&lookup_buffer, inv->supplier.id) == A_ERR_SUCCESS)
- {
- if (!administration_contact_equals(lookup_buffer, inv->supplier))
- {
- // Zero id so new contact is created for supplier.
- inv->supplier_id[0] = '\0';
- inv->supplier.id[0] = '\0';
- }
- else
- {
- // Store supplier id in invoice, (only id is stored to disk, supplier field is filled on load).
- strops_copy(inv->supplier_id, inv->supplier.id, sizeof(inv->supplier_id));
- }
- }
-
- // Supplier is valid but supplier id is unset means we need to register a new contact.
- if (strcmp(inv->supplier_id, "") == 0)
- {
- contact new_contact = administration_contact_create_empty();
- strops_copy(inv->supplier_id, new_contact.id, sizeof(new_contact.id));
- strops_copy(inv->supplier.id, new_contact.id, sizeof(new_contact.id));
-
- memcpy(&new_contact, &inv->supplier, sizeof(contact));
- administration_contact_add(new_contact);
-
- inv->supplier = new_contact;
- }
-
- // Check if customer info is equal to contact stored in customer id, in case we autocomplete and edit data after,
- // this should be handled as a new contact.
- if (administration_contact_get_by_id(&lookup_buffer, inv->customer.id) == A_ERR_SUCCESS)
- {
- if (!administration_contact_equals(lookup_buffer, inv->customer))
- {
- // Zero id so new contact is created for supplier.
- inv->customer_id[0] = '\0';
- inv->customer.id[0] = '\0';
- }
- else
- {
- // Store customer id in invoice.
- strops_copy(inv->customer_id, inv->customer.id, sizeof(inv->customer_id));
- }
- }
-
- // Invoice is valid but customer id is unset means we need to register a new contact.
- if (strcmp(inv->customer_id, "") == 0)
- {
- contact new_contact = administration_contact_create_empty();
- strops_copy(inv->customer_id, new_contact.id, sizeof(new_contact.id));
- strops_copy(inv->customer.id, new_contact.id, sizeof(new_contact.id));
-
- memcpy(&new_contact, &inv->customer, sizeof(contact));
- administration_contact_add(new_contact);
-
- inv->customer = new_contact;
- }
+ a_err result = administration_invoice_is_valid(inv);
+ if (result != A_ERR_SUCCESS) return result;
// Addressee is same as customer.
if (!inv->is_triangulation)
{
memcpy(&inv->addressee, &inv->customer, sizeof(contact));
}
-}
-
-a_err administration_invoice_update(invoice* inv)
-{
- a_err result = administration_invoice_is_valid(inv);
- if (result != A_ERR_SUCCESS) return result;
-
- administration_invoice_set_refs(inv);
list_iterator_start(&g_administration.invoices);
while (list_iterator_hasnext(&g_administration.invoices)) {
@@ -1631,7 +1563,11 @@ a_err administration_invoice_add(invoice* inv)
a_err result = administration_invoice_is_valid(inv);
if (result != A_ERR_SUCCESS) return result;
- administration_invoice_set_refs(inv);
+ // Addressee is same as customer.
+ if (!inv->is_triangulation)
+ {
+ memcpy(&inv->addressee, &inv->customer, sizeof(contact));
+ }
inv->issued_at -= (inv->issued_at % 86400);
inv->delivered_at -= (inv->delivered_at % 86400);
diff --git a/src/administration_reader.cpp b/src/administration_reader.cpp
index fb2fbf0..09a4a0a 100644
--- a/src/administration_reader.cpp
+++ b/src/administration_reader.cpp
@@ -163,7 +163,6 @@ bool administration_reader_import_invoice(char* buffer, size_t buffer_size)
// Supplier
xml_get_str_x(root, data.supplier.id, MAX_LEN_ID, "cac:AccountingSupplierParty", "cac:Party", "cac:Contact", "cbc:Name", 0);
- strops_copy(data.supplier_id, data.supplier.id, MAX_LEN_ID);
strops_copy(data.supplier.bank_account, data.payment_means.payee_bank_account, MAX_LEN_BANK);
xml_get_str_x(root, data.supplier.name, MAX_LEN_LONG_DESC, "cac:AccountingSupplierParty", "cac:Party", "cac:PartyName", "cbc:Name", 0);
xml_get_str_x(root, data.supplier.address.address1, MAX_LEN_ADDRESS, "cac:AccountingSupplierParty", "cac:Party", "cac:PostalAddress", "cbc:StreetName", 0);
@@ -179,7 +178,6 @@ bool administration_reader_import_invoice(char* buffer, size_t buffer_size)
// Customer
xml_get_str_x(root, data.customer.id, MAX_LEN_ID, "cac:AccountingCustomerParty", "cac:Party", "cac:Contact", "cbc:Name", 0);
- strops_copy(data.customer_id, data.customer.id, MAX_LEN_ID);
strops_copy(data.customer.bank_account, data.payment_means.payer_bank_account, MAX_LEN_BANK);
xml_get_str_x(root, data.customer.name, MAX_LEN_LONG_DESC, "cac:AccountingCustomerParty", "cac:Party", "cac:PartyName", "cbc:Name", 0);
xml_get_str_x(root, data.customer.address.address1, MAX_LEN_ADDRESS, "cac:AccountingCustomerParty", "cac:Party", "cac:PostalAddress", "cbc:StreetName", 0);
diff --git a/src/log.cpp b/src/log.cpp
index 839ebbe..5180705 100644
--- a/src/log.cpp
+++ b/src/log.cpp
@@ -27,6 +27,12 @@ log* get_log()
return &g_log;
}
+void log_clear()
+{
+ g_log.write_cursor = 0;
+ g_log.history_length = 0;
+}
+
static void log_message(const char* fmt, ImVec4 color, va_list args)
{
vsnprintf(g_log.history[g_log.write_cursor], MAX_LEN_LOG_TXT, fmt, args);