diff options
Diffstat (limited to 'src/administration_reader.cpp')
| -rw-r--r-- | src/administration_reader.cpp | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/administration_reader.cpp b/src/administration_reader.cpp index b8b4958..f316f40 100644 --- a/src/administration_reader.cpp +++ b/src/administration_reader.cpp @@ -123,14 +123,13 @@ bool administration_reader_open_existing(char* file_path) return true; } -bool administration_reader_import_invoice(char* buffer, size_t buffer_size) +bool administration_reader_read_invoice_from_xml(invoice* result, 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) return false; invoice data = administration_invoice_create_empty(); xml_get_str(root, data.id, MAX_LEN_ID, "cbc:ID"); @@ -238,8 +237,19 @@ bool administration_reader_import_invoice(char* buffer, size_t buffer_size) free(child_name); } - + + *result = data; + return true; +} + +bool administration_reader_import_invoice(char* buffer, size_t buffer_size) +{ + STOPWATCH_START; + + invoice data; + if (!administration_reader_read_invoice_from_xml(&data, buffer, buffer_size)) return false; a_err result = administration_invoice_import(&data); + if (result == A_ERR_SUCCESS) { log_info("Loaded invoice '%s' in %.3fms.", data.sequential_number, STOPWATCH_TIME); } |
