diff options
Diffstat (limited to 'src/administration_reader.cpp')
| -rw-r--r-- | src/administration_reader.cpp | 47 |
1 files changed, 46 insertions, 1 deletions
diff --git a/src/administration_reader.cpp b/src/administration_reader.cpp index 6c7234d..2c94028 100644 --- a/src/administration_reader.cpp +++ b/src/administration_reader.cpp @@ -74,6 +74,10 @@ bool administration_reader::open_existing(char* file_path) { administration_reader::import_administration_info(buffer, (size_t)size); } + else if (strops::equals(name, ACTIVITY_FILE)) + { + administration_reader::import_activities(buffer, (size_t)size); + } else if (strops::is_prefixed("T/", name)) { administration_reader::import_tax_rate(buffer, (size_t)size); @@ -271,7 +275,7 @@ bool administration_reader::import_invoice(zip_t* zip, char* buffer, size_t buff invoice data; if (!administration_reader::read_invoice_from_xml(&data, buffer, buffer_size)) return false; if (!_import_invoice_extras(zip, &data)) return false; - printf("%d\n", data.extras.status); + a_err result = administration::invoice_import(&data); if (result == A_ERR_SUCCESS) { @@ -470,4 +474,45 @@ bool administration_reader::import_administration_info(char* buffer, size_t buff xml_document_free(document, false); return true; +} + +bool administration_reader::import_activities(char* buffer, size_t buffer_size) +{ + STOPWATCH_START; + + xml_document* document = xml_parse_document((uint8_t *)buffer, buffer_size); + if (!document) return false; + + struct xml_node* root = xml_document_root(document); + if (!root) { + xml_document_free(document, false); + return false; + } + + size_t child_count = xml_node_children(root); + for (size_t x = 0; x < child_count; x++) + { + xml_node* child = xml_node_child(root, x); + + char* child_name = (char*)xml_easy_name(child); + if (strops::equals(child_name, "Activity")) + { + activity ac = {0}; + time_t timestamp; + + ac.timestamp = xml_get_s64(child, "Timestamp"); + xml_get_str(child, ac.user_name, MAX_LEN_SHORT_DESC, "User"); + xml_get_str(child, ac.ref_id, MAX_LEN_ID, "RefId"); + xml_get_str(child, ac.message, MAX_LEN_LONG_DESC, "Message"); + + administration::activity_import(ac); + } + + memops::unalloc(child_name); + } + + logger::info("Loaded %d activities in %.3fms.", child_count, STOPWATCH_TIME); + + xml_document_free(document, false); + return true; }
\ No newline at end of file |
