summaryrefslogtreecommitdiff
path: root/src/administration_reader.cpp
diff options
context:
space:
mode:
authorAldrik Ramaekers <aldrikboy@gmail.com>2025-09-28 17:41:50 +0200
committerAldrik Ramaekers <aldrikboy@gmail.com>2025-09-28 17:41:50 +0200
commita2299b0bae21c8f05f091732a78fc250cbd5e016 (patch)
treeb1de8319d1088b1209ba377665995b4543180d4b /src/administration_reader.cpp
parentd8c4d84dc75300c6d4d8b0adceafa33741960b92 (diff)
openAI invoice importing v0.1
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);
}