summaryrefslogtreecommitdiff
path: root/src/administration_reader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/administration_reader.cpp')
-rw-r--r--src/administration_reader.cpp18
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);
}