diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/administration_reader.cpp | 358 |
1 files changed, 90 insertions, 268 deletions
diff --git a/src/administration_reader.cpp b/src/administration_reader.cpp index 35ad2ed..91f62a9 100644 --- a/src/administration_reader.cpp +++ b/src/administration_reader.cpp @@ -123,184 +123,6 @@ bool administration_reader_open_existing(char* file_path) return true; } -static s64 _get_xml_s64(xml_node* root, char* child_name) -{ - struct xml_node* node = xml_easy_child(root, (uint8_t *)child_name, 0); - - char xml_content[512]; - memset(xml_content, 0, 512); - struct xml_string* str = xml_node_content(node); - xml_string_copy(str, (uint8_t *)xml_content, xml_string_length(str)); - - char *endptr; - long long val = strtoll(xml_content, &endptr, 10); - - s64 num = (int64_t) val; - return num; -} - -static s32 _get_xml_s32(xml_node* root, char* child_name) -{ - struct xml_node* node = xml_easy_child(root, (uint8_t *)child_name, 0); - if (!node) return 0; - - char xml_content[512]; - memset(xml_content, 0, 512); - struct xml_string* str = xml_node_content(node); - xml_string_copy(str, (uint8_t *)xml_content, xml_string_length(str)); - - char *endptr; - long val = strtol(xml_content, &endptr, 10); - - s32 num = (int32_t) val; - return num; -} - -static xml_node* _get_xml_node_x(xml_node* root, char* child_name, ...) -{ - va_list arguments; - va_start(arguments, child_name); - - struct xml_node* node = xml_easy_vchild(root, (const uint8_t *)child_name, arguments); - return node; -} - -static char* _get_xml_str_attribute(xml_node* root, char* buffer, size_t bufsize, char* attribute_name, char* child_name, ...) -{ - va_list arguments; - va_start(arguments, child_name); - - struct xml_node* node = xml_easy_vchild(root, (const uint8_t *)child_name, arguments); - if (!node) return 0; - - size_t num_attributes = xml_node_attributes(node); - for (int x = 0; x < num_attributes; x++) - { - struct xml_string* attr_name = xml_node_attribute_name(node, x); - size_t b_length = xml_string_length(attr_name); - uint8_t* b_buffer = (uint8_t*)alloca((b_length + 1) * sizeof(uint8_t)); - xml_string_copy(attr_name, b_buffer, b_length); - b_buffer[b_length] = 0; - - if (strcmp((char*)b_buffer, attribute_name) == 0) { - struct xml_string* attr_content = xml_node_attribute_content(node, x); - - xml_string_copy(attr_content, (uint8_t *)buffer, bufsize); - buffer[bufsize-1] = 0; - return buffer; - } - } - return 0; -} - -static s32 _get_xml_s32_x(xml_node* root, char* child_name, ...) -{ - va_list arguments; - va_start(arguments, child_name); - - struct xml_node* node = xml_easy_vchild(root, (const uint8_t *)child_name, arguments); - if (!node) return 0; - - char xml_content[512]; - memset(xml_content, 0, 512); - struct xml_string* str = xml_node_content(node); - xml_string_copy(str, (uint8_t *)xml_content, xml_string_length(str)); - - char *endptr; - long val = strtol(xml_content, &endptr, 10); - - s32 num = (int32_t) val; - return num; -} - -static float _get_xml_float(xml_node* root, char* child_name) -{ - struct xml_node* node = xml_easy_child(root, (uint8_t *)child_name, 0); - if (!node) return 0; - - char xml_content[512]; - memset(xml_content, 0, 512); - struct xml_string* str = xml_node_content(node); - xml_string_copy(str, (uint8_t *)xml_content, xml_string_length(str)); - - char *endptr; - float val = strtof(xml_content, &endptr); - return val; -} - -static float _get_xml_float_x(xml_node* root, char* child_name, ...) -{ - va_list arguments; - va_start(arguments, child_name); - - struct xml_node* node = xml_easy_vchild(root, (const uint8_t *)child_name, arguments); - if (!node) return 0; - - char xml_content[512]; - memset(xml_content, 0, 512); - struct xml_string* str = xml_node_content(node); - xml_string_copy(str, (uint8_t *)xml_content, xml_string_length(str)); - - char *endptr; - float val = strtof(xml_content, &endptr); - return val; -} - -static char* _get_xml_str(xml_node* root, char* buffer, size_t bufsize, char* child_name) -{ - struct xml_node* node = xml_easy_child(root, (uint8_t *)child_name, 0); - if (!node) return 0; - - memset(buffer, 0, bufsize); - struct xml_string* str = xml_node_content(node); - xml_string_copy(str, (uint8_t *)buffer, xml_string_length(str)); - - return buffer; -} - -static char* _get_xml_str_x(xml_node* root, char* buffer, size_t bufsize, char* child_name, ...) -{ - va_list arguments; - va_start(arguments, child_name); - - struct xml_node* node = xml_easy_vchild(root, (const uint8_t *)child_name, arguments); - if (!node) return 0; - - memset(buffer, 0, bufsize); - struct xml_string* str = xml_node_content(node); - xml_string_copy(str, (uint8_t *)buffer, xml_string_length(str)); - - return buffer; -} - -static time_t _get_xml_date_x(xml_node* root, char* child_name, ...) -{ - va_list arguments; - va_start(arguments, child_name); - - struct xml_node* node = xml_easy_vchild(root, (const uint8_t *)child_name, arguments); - if (!node) return 0; - - char date_buffer[11]; - struct xml_string* str = xml_node_content(node); - xml_string_copy(str, (uint8_t *)date_buffer, xml_string_length(str)); - - struct tm tm_info = {0}; - int year, month, day; - if (sscanf(date_buffer, "%d-%d-%d", &year, &month, &day) != 3) { - return (time_t)-1; // parse failed - } - - tm_info.tm_year = year - 1900; // struct tm expects years since 1900 - tm_info.tm_mon = month - 1; // struct tm months are 0–11 - tm_info.tm_mday = day; - tm_info.tm_hour = 0; - tm_info.tm_min = 0; - tm_info.tm_sec = 0; - - return mktime(&tm_info) + 86400; // Hack -} - bool administration_reader_import_invoice(char* buffer, size_t buffer_size) { STOPWATCH_START; @@ -311,78 +133,78 @@ bool administration_reader_import_invoice(char* buffer, size_t buffer_size) struct xml_node* root = xml_document_root(document); invoice data = administration_invoice_create_empty(); - _get_xml_str(root, data.id, MAX_LEN_ID, "cbc:ID"); - _get_xml_str_x(root, data.sequential_number, MAX_LEN_ID, "cac:OrderReference", "cbc:ID", 0); - _get_xml_str(root, data.currency, MAX_LEN_CURRENCY, "cbc:DocumentCurrencyCode"); - data.status = (invoice_status)_get_xml_s32_x(root, "cac:DespatchDocumentReference", "cbc:ID", 0); + xml_get_str(root, data.id, MAX_LEN_ID, "cbc:ID"); + xml_get_str_x(root, data.sequential_number, MAX_LEN_ID, "cac:OrderReference", "cbc:ID", 0); + xml_get_str(root, data.currency, MAX_LEN_CURRENCY, "cbc:DocumentCurrencyCode"); + data.status = (invoice_status)xml_get_s32_x(root, "cac:DespatchDocumentReference", "cbc:ID", 0); // Dates - data.issued_at = _get_xml_date_x(root, "cbc:IssueDate", 0); - data.expires_at = _get_xml_date_x(root, "cbc:DueDate", 0); - data.delivered_at = _get_xml_date_x(root, "cac:Delivery", "cbc:ActualDeliveryDate", 0); + data.issued_at = xml_get_date_x(root, "cbc:IssueDate", 0); + data.expires_at = xml_get_date_x(root, "cbc:DueDate", 0); + data.delivered_at = xml_get_date_x(root, "cac:Delivery", "cbc:ActualDeliveryDate", 0); // References - _get_xml_str_x(root, data.document, MAX_LEN_PATH, "cac:AdditionalDocumentReference", "cbc:ID", 0); - _get_xml_str_x(root, data.project_id, MAX_LEN_ID, "cac:ProjectReference", "cbc:ID", 0); - _get_xml_str(root, data.cost_center_id, MAX_LEN_ID, "cac:AccountingCost"); + xml_get_str_x(root, data.document, MAX_LEN_PATH, "cac:AdditionalDocumentReference", "cbc:ID", 0); + xml_get_str_x(root, data.project_id, MAX_LEN_ID, "cac:ProjectReference", "cbc:ID", 0); + xml_get_str(root, data.cost_center_id, MAX_LEN_ID, "cac:AccountingCost"); // Payment means - data.payment_means.payment_method = (payment_method)_get_xml_s32_x(root, "cac:PaymentMeans", "cbc:PaymentMeansCode", 0); - _get_xml_str_x(root, data.payment_means.payee_bank_account, MAX_LEN_BANK, "cac:PaymentMeans", "cac:PayeeFinancialAccount", "cbc:ID", 0); - _get_xml_str_x(root, data.payment_means.payee_account_name, MAX_LEN_LONG_DESC, "cac:PaymentMeans", "cac:PayeeFinancialAccount", "cbc:Name", 0); - _get_xml_str_x(root, data.payment_means.service_provider_id, MAX_LEN_ID, "cac:PaymentMeans", "cac:PayeeFinancialAccount", "cac:FinancialInstitutionBranch", "cac:FinancialInstitution", "cbc:ID", 0); - _get_xml_str_x(root, data.payment_means.payer_bank_account, MAX_LEN_BANK, "cac:PaymentMeans", "cac:PayerFinancialAccount", "cbc:ID", 0); + data.payment_means.payment_method = (payment_method)xml_get_s32_x(root, "cac:PaymentMeans", "cbc:PaymentMeansCode", 0); + xml_get_str_x(root, data.payment_means.payee_bank_account, MAX_LEN_BANK, "cac:PaymentMeans", "cac:PayeeFinancialAccount", "cbc:ID", 0); + xml_get_str_x(root, data.payment_means.payee_account_name, MAX_LEN_LONG_DESC, "cac:PaymentMeans", "cac:PayeeFinancialAccount", "cbc:Name", 0); + xml_get_str_x(root, data.payment_means.service_provider_id, MAX_LEN_ID, "cac:PaymentMeans", "cac:PayeeFinancialAccount", "cac:FinancialInstitutionBranch", "cac:FinancialInstitution", "cbc:ID", 0); + xml_get_str_x(root, data.payment_means.payer_bank_account, MAX_LEN_BANK, "cac:PaymentMeans", "cac:PayerFinancialAccount", "cbc:ID", 0); // Totals - data.tax = _get_xml_float_x(root, "cac:TaxTotal", "cbc:TaxAmount", 0); - data.total = _get_xml_float_x(root, "cac:LegalMonetaryTotal", "cbc:TaxInclusiveAmount", 0); - data.net = _get_xml_float_x(root, "cac:LegalMonetaryTotal", "cbc:TaxExclusiveAmount", 0); - data.allowance = data.net - _get_xml_float_x(root, "cac:LegalMonetaryTotal", "cbc:LineExtensionAmount", 0); + data.tax = xml_get_float_x(root, "cac:TaxTotal", "cbc:TaxAmount", 0); + data.total = xml_get_float_x(root, "cac:LegalMonetaryTotal", "cbc:TaxInclusiveAmount", 0); + data.net = xml_get_float_x(root, "cac:LegalMonetaryTotal", "cbc:TaxExclusiveAmount", 0); + data.allowance = data.net - xml_get_float_x(root, "cac:LegalMonetaryTotal", "cbc:LineExtensionAmount", 0); // Supplier - _get_xml_str_x(root, data.supplier.id, MAX_LEN_ID, "cac:AccountingSupplierParty", "cac:Party", "cac:Contact", "cbc:Name", 0); + 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); - _get_xml_str_x(root, data.supplier.name, MAX_LEN_LONG_DESC, "cac:AccountingSupplierParty", "cac:Party", "cac:PartyName", "cbc:Name", 0); - _get_xml_str_x(root, data.supplier.address.address1, MAX_LEN_ADDRESS, "cac:AccountingSupplierParty", "cac:Party", "cac:PostalAddress", "cbc:StreetName", 0); - _get_xml_str_x(root, data.supplier.address.address2, MAX_LEN_ADDRESS, "cac:AccountingSupplierParty", "cac:Party", "cac:PostalAddress", "cbc:AdditionalStreetName", 0); - _get_xml_str_x(root, data.supplier.address.city, MAX_LEN_ADDRESS, "cac:AccountingSupplierParty", "cac:Party", "cac:PostalAddress", "cbc:CityName", 0); - _get_xml_str_x(root, data.supplier.address.postal, MAX_LEN_ADDRESS, "cac:AccountingSupplierParty", "cac:Party", "cac:PostalAddress", "cbc:PostalZone", 0); - _get_xml_str_x(root, data.supplier.address.region, MAX_LEN_ADDRESS, "cac:AccountingSupplierParty", "cac:Party", "cac:PostalAddress", "cbc:CountrySubentity", 0); - _get_xml_str_x(root, data.supplier.address.country_code, MAX_LEN_COUNTRY_CODE, "cac:AccountingSupplierParty", "cac:Party", "cac:PostalAddress", "cac:Country", "cbc:IdentificationCode", 0); - _get_xml_str_x(root, data.supplier.taxid, MAX_LEN_TAXID, "cac:AccountingSupplierParty", "cac:Party", "cac:PartyTaxScheme", "cbc:CompanyID", 0); - _get_xml_str_x(root, data.supplier.businessid, MAX_LEN_BUSINESSID, "cac:AccountingSupplierParty", "cac:Party", "cac:PartyIdentification", "cbc:ID", 0); - _get_xml_str_x(root, data.supplier.phone_number, MAX_LEN_PHONE, "cac:AccountingSupplierParty", "cac:Party", "cac:Contact", "cbc:Telephone", 0); - _get_xml_str_x(root, data.supplier.email, MAX_LEN_EMAIL, "cac:AccountingSupplierParty", "cac:Party", "cac:Contact", "cbc:ElectronicMail", 0); + 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); + xml_get_str_x(root, data.supplier.address.address2, MAX_LEN_ADDRESS, "cac:AccountingSupplierParty", "cac:Party", "cac:PostalAddress", "cbc:AdditionalStreetName", 0); + xml_get_str_x(root, data.supplier.address.city, MAX_LEN_ADDRESS, "cac:AccountingSupplierParty", "cac:Party", "cac:PostalAddress", "cbc:CityName", 0); + xml_get_str_x(root, data.supplier.address.postal, MAX_LEN_ADDRESS, "cac:AccountingSupplierParty", "cac:Party", "cac:PostalAddress", "cbc:PostalZone", 0); + xml_get_str_x(root, data.supplier.address.region, MAX_LEN_ADDRESS, "cac:AccountingSupplierParty", "cac:Party", "cac:PostalAddress", "cbc:CountrySubentity", 0); + xml_get_str_x(root, data.supplier.address.country_code, MAX_LEN_COUNTRY_CODE, "cac:AccountingSupplierParty", "cac:Party", "cac:PostalAddress", "cac:Country", "cbc:IdentificationCode", 0); + xml_get_str_x(root, data.supplier.taxid, MAX_LEN_TAXID, "cac:AccountingSupplierParty", "cac:Party", "cac:PartyTaxScheme", "cbc:CompanyID", 0); + xml_get_str_x(root, data.supplier.businessid, MAX_LEN_BUSINESSID, "cac:AccountingSupplierParty", "cac:Party", "cac:PartyIdentification", "cbc:ID", 0); + xml_get_str_x(root, data.supplier.phone_number, MAX_LEN_PHONE, "cac:AccountingSupplierParty", "cac:Party", "cac:Contact", "cbc:Telephone", 0); + xml_get_str_x(root, data.supplier.email, MAX_LEN_EMAIL, "cac:AccountingSupplierParty", "cac:Party", "cac:Contact", "cbc:ElectronicMail", 0); // Customer - _get_xml_str_x(root, data.customer.id, MAX_LEN_ID, "cac:AccountingCustomerParty", "cac:Party", "cac:Contact", "cbc:Name", 0); + 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); - _get_xml_str_x(root, data.customer.name, MAX_LEN_LONG_DESC, "cac:AccountingCustomerParty", "cac:Party", "cac:PartyName", "cbc:Name", 0); - _get_xml_str_x(root, data.customer.address.address1, MAX_LEN_ADDRESS, "cac:AccountingCustomerParty", "cac:Party", "cac:PostalAddress", "cbc:StreetName", 0); - _get_xml_str_x(root, data.customer.address.address2, MAX_LEN_ADDRESS, "cac:AccountingCustomerParty", "cac:Party", "cac:PostalAddress", "cbc:AdditionalStreetName", 0); - _get_xml_str_x(root, data.customer.address.city, MAX_LEN_ADDRESS, "cac:AccountingCustomerParty", "cac:Party", "cac:PostalAddress", "cbc:CityName", 0); - _get_xml_str_x(root, data.customer.address.postal, MAX_LEN_ADDRESS, "cac:AccountingCustomerParty", "cac:Party", "cac:PostalAddress", "cbc:PostalZone", 0); - _get_xml_str_x(root, data.customer.address.region, MAX_LEN_ADDRESS, "cac:AccountingCustomerParty", "cac:Party", "cac:PostalAddress", "cbc:CountrySubentity", 0); - _get_xml_str_x(root, data.customer.address.country_code, MAX_LEN_COUNTRY_CODE, "cac:AccountingCustomerParty", "cac:Party", "cac:PostalAddress", "cac:Country", "cbc:IdentificationCode", 0); - _get_xml_str_x(root, data.customer.taxid, MAX_LEN_TAXID, "cac:AccountingCustomerParty", "cac:Party", "cac:PartyTaxScheme", "cbc:CompanyID", 0); - _get_xml_str_x(root, data.customer.businessid, MAX_LEN_BUSINESSID, "cac:AccountingCustomerParty", "cac:Party", "cac:PartyIdentification", "cbc:ID", 0); - _get_xml_str_x(root, data.customer.phone_number, MAX_LEN_PHONE, "cac:AccountingCustomerParty", "cac:Party", "cac:Contact", "cbc:Telephone", 0); - _get_xml_str_x(root, data.customer.email, MAX_LEN_EMAIL, "cac:AccountingCustomerParty", "cac:Party", "cac:Contact", "cbc:ElectronicMail", 0); + 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); + xml_get_str_x(root, data.customer.address.address2, MAX_LEN_ADDRESS, "cac:AccountingCustomerParty", "cac:Party", "cac:PostalAddress", "cbc:AdditionalStreetName", 0); + xml_get_str_x(root, data.customer.address.city, MAX_LEN_ADDRESS, "cac:AccountingCustomerParty", "cac:Party", "cac:PostalAddress", "cbc:CityName", 0); + xml_get_str_x(root, data.customer.address.postal, MAX_LEN_ADDRESS, "cac:AccountingCustomerParty", "cac:Party", "cac:PostalAddress", "cbc:PostalZone", 0); + xml_get_str_x(root, data.customer.address.region, MAX_LEN_ADDRESS, "cac:AccountingCustomerParty", "cac:Party", "cac:PostalAddress", "cbc:CountrySubentity", 0); + xml_get_str_x(root, data.customer.address.country_code, MAX_LEN_COUNTRY_CODE, "cac:AccountingCustomerParty", "cac:Party", "cac:PostalAddress", "cac:Country", "cbc:IdentificationCode", 0); + xml_get_str_x(root, data.customer.taxid, MAX_LEN_TAXID, "cac:AccountingCustomerParty", "cac:Party", "cac:PartyTaxScheme", "cbc:CompanyID", 0); + xml_get_str_x(root, data.customer.businessid, MAX_LEN_BUSINESSID, "cac:AccountingCustomerParty", "cac:Party", "cac:PartyIdentification", "cbc:ID", 0); + xml_get_str_x(root, data.customer.phone_number, MAX_LEN_PHONE, "cac:AccountingCustomerParty", "cac:Party", "cac:Contact", "cbc:Telephone", 0); + xml_get_str_x(root, data.customer.email, MAX_LEN_EMAIL, "cac:AccountingCustomerParty", "cac:Party", "cac:Contact", "cbc:ElectronicMail", 0); char customer_endpoint_id[50]; - _get_xml_str_x(root, customer_endpoint_id, 50, "cac:AccountingCustomerParty", "cac:Party", "cbc:EndpointID", 0); + xml_get_str_x(root, customer_endpoint_id, 50, "cac:AccountingCustomerParty", "cac:Party", "cbc:EndpointID", 0); if (strcmp(customer_endpoint_id, "[CONSUMER]") == 0) data.customer.type = contact_type::CONTACT_CONSUMER; // Addressee - _get_xml_str_x(root, data.addressee.name, MAX_LEN_LONG_DESC, "cac:Delivery", "cac:DeliveryParty", "cac:PartyName", "cbc:Name", 0); - _get_xml_str_x(root, data.addressee.address.address1, MAX_LEN_ADDRESS, "cac:Delivery", "cac:DeliveryLocation", "cac:Address", "cbc:StreetName", 0); - _get_xml_str_x(root, data.addressee.address.address2, MAX_LEN_ADDRESS, "cac:Delivery", "cac:DeliveryLocation", "cac:Address", "cbc:AdditionalStreetName", 0); - _get_xml_str_x(root, data.addressee.address.city, MAX_LEN_ADDRESS, "cac:Delivery", "cac:DeliveryLocation", "cac:Address", "cbc:CityName", 0); - _get_xml_str_x(root, data.addressee.address.postal, MAX_LEN_ADDRESS, "cac:Delivery", "cac:DeliveryLocation", "cac:Address", "cbc:PostalZone", 0); - _get_xml_str_x(root, data.addressee.address.region, MAX_LEN_ADDRESS, "cac:Delivery", "cac:DeliveryLocation", "cac:Address", "cbc:CountrySubentity", 0); - _get_xml_str_x(root, data.addressee.address.country_code, MAX_LEN_COUNTRY_CODE, "cac:Delivery", "cac:DeliveryLocation", "cac:Address", "cac:Country", "cbc:IdentificationCode", 0); + xml_get_str_x(root, data.addressee.name, MAX_LEN_LONG_DESC, "cac:Delivery", "cac:DeliveryParty", "cac:PartyName", "cbc:Name", 0); + xml_get_str_x(root, data.addressee.address.address1, MAX_LEN_ADDRESS, "cac:Delivery", "cac:DeliveryLocation", "cac:Address", "cbc:StreetName", 0); + xml_get_str_x(root, data.addressee.address.address2, MAX_LEN_ADDRESS, "cac:Delivery", "cac:DeliveryLocation", "cac:Address", "cbc:AdditionalStreetName", 0); + xml_get_str_x(root, data.addressee.address.city, MAX_LEN_ADDRESS, "cac:Delivery", "cac:DeliveryLocation", "cac:Address", "cbc:CityName", 0); + xml_get_str_x(root, data.addressee.address.postal, MAX_LEN_ADDRESS, "cac:Delivery", "cac:DeliveryLocation", "cac:Address", "cbc:PostalZone", 0); + xml_get_str_x(root, data.addressee.address.region, MAX_LEN_ADDRESS, "cac:Delivery", "cac:DeliveryLocation", "cac:Address", "cbc:CountrySubentity", 0); + xml_get_str_x(root, data.addressee.address.country_code, MAX_LEN_COUNTRY_CODE, "cac:Delivery", "cac:DeliveryLocation", "cac:Address", "cac:Country", "cbc:IdentificationCode", 0); size_t child_count = xml_node_children(root); for (size_t x = 0; x < child_count; x++) @@ -394,22 +216,22 @@ bool administration_reader_import_invoice(char* buffer, size_t buffer_size) { billing_item bi = {0}; - _get_xml_str_x(child, bi.id, MAX_LEN_ID, "cbc:ID", 0); - _get_xml_str_x(child, bi.tax_rate_id, MAX_LEN_ID, "cac:Item", "cac:AdditionalItemProperty", "cbc:Value", 0); - bi.amount = _get_xml_float_x(child, "cbc:InvoicedQuantity", 0); - bi.net_per_item = _get_xml_float_x(child, "cac:Price", "cbc:PriceAmount", 0); - bi.net = _get_xml_float_x(child, "cbc:LineExtensionAmount", 0); - bi.discount = _get_xml_float_x(child, "cac:AllowanceCharge", "cbc:Amount", 0); - _get_xml_str_x(child, bi.description, MAX_LEN_LONG_DESC, "cac:Item", "cbc:Name", 0); + xml_get_str_x(child, bi.id, MAX_LEN_ID, "cbc:ID", 0); + xml_get_str_x(child, bi.tax_rate_id, MAX_LEN_ID, "cac:Item", "cac:AdditionalItemProperty", "cbc:Value", 0); + bi.amount = xml_get_float_x(child, "cbc:InvoicedQuantity", 0); + bi.net_per_item = xml_get_float_x(child, "cac:Price", "cbc:PriceAmount", 0); + bi.net = xml_get_float_x(child, "cbc:LineExtensionAmount", 0); + bi.discount = xml_get_float_x(child, "cac:AllowanceCharge", "cbc:Amount", 0); + xml_get_str_x(child, bi.description, MAX_LEN_LONG_DESC, "cac:Item", "cbc:Name", 0); char percentage_buffer[5] = {0}; - _get_xml_str_attribute(child, percentage_buffer, 5, "unitCode", "cbc:InvoicedQuantity", 0); + xml_get_str_attribute(child, percentage_buffer, 5, "unitCode", "cbc:InvoicedQuantity", 0); bi.amount_is_percentage = strcmp(percentage_buffer, "%") == 0; - _get_xml_str_attribute(child, bi.currency, 5, "currencyID", "cbc:LineExtensionAmount", 0); - bi.discount_is_percentage = _get_xml_node_x(child, "cac:AllowanceCharge", "cbc:MultiplierFactorNumeric", 0) != 0; + xml_get_str_attribute(child, bi.currency, 5, "currencyID", "cbc:LineExtensionAmount", 0); + bi.discount_is_percentage = xml_get_node_x(child, "cac:AllowanceCharge", "cbc:MultiplierFactorNumeric", 0) != 0; if (bi.discount_is_percentage) { - bi.discount = _get_xml_float_x(child, "cac:AllowanceCharge", "cbc:MultiplierFactorNumeric", 0); + bi.discount = xml_get_float_x(child, "cac:AllowanceCharge", "cbc:MultiplierFactorNumeric", 0); } administration_billing_item_import_to_invoice(&data, bi); @@ -434,22 +256,22 @@ bool administration_reader_import_contact(char* buffer, size_t buffer_size) struct xml_node* root = xml_document_root(document); contact data = {0}; - _get_xml_str(root, data.id, MAX_LEN_ID, "Id"); - _get_xml_str(root, data.name, MAX_LEN_LONG_DESC, "Name"); - data.type = (contact_type)_get_xml_s32(root, "Type"); - _get_xml_str(root, data.taxid, MAX_LEN_TAXID, "TaxId"); - _get_xml_str(root, data.businessid, MAX_LEN_BUSINESSID, "BusinessId"); - _get_xml_str(root, data.email, MAX_LEN_EMAIL, "Email"); - _get_xml_str(root, data.phone_number, MAX_LEN_PHONE, "PhoneNumber"); - _get_xml_str(root, data.bank_account, MAX_LEN_BANK, "BankAccount"); + xml_get_str(root, data.id, MAX_LEN_ID, "Id"); + xml_get_str(root, data.name, MAX_LEN_LONG_DESC, "Name"); + data.type = (contact_type)xml_get_s32(root, "Type"); + xml_get_str(root, data.taxid, MAX_LEN_TAXID, "TaxId"); + xml_get_str(root, data.businessid, MAX_LEN_BUSINESSID, "BusinessId"); + xml_get_str(root, data.email, MAX_LEN_EMAIL, "Email"); + xml_get_str(root, data.phone_number, MAX_LEN_PHONE, "PhoneNumber"); + xml_get_str(root, data.bank_account, MAX_LEN_BANK, "BankAccount"); struct xml_node* node_address = xml_easy_child(root, (uint8_t *)"Address", 0); - _get_xml_str(node_address, data.address.address1, MAX_LEN_ADDRESS, "AddressLine1"); - _get_xml_str(node_address, data.address.address2, MAX_LEN_ADDRESS, "AddressLine2"); - _get_xml_str(node_address, data.address.country_code, MAX_LEN_COUNTRY_CODE, "CountryCode"); - _get_xml_str(node_address, data.address.city, MAX_LEN_ADDRESS, "City"); - _get_xml_str(node_address, data.address.postal, MAX_LEN_ADDRESS, "Postal"); - _get_xml_str(node_address, data.address.region, MAX_LEN_ADDRESS, "Region"); + xml_get_str(node_address, data.address.address1, MAX_LEN_ADDRESS, "AddressLine1"); + xml_get_str(node_address, data.address.address2, MAX_LEN_ADDRESS, "AddressLine2"); + xml_get_str(node_address, data.address.country_code, MAX_LEN_COUNTRY_CODE, "CountryCode"); + xml_get_str(node_address, data.address.city, MAX_LEN_ADDRESS, "City"); + xml_get_str(node_address, data.address.postal, MAX_LEN_ADDRESS, "Postal"); + xml_get_str(node_address, data.address.region, MAX_LEN_ADDRESS, "Region"); bool result = administration_contact_import(data); log_add("Loaded contact '%s' in %.3fms.", data.name, STOPWATCH_TIME); @@ -467,11 +289,11 @@ bool administration_reader_import_project(char* buffer, size_t buffer_size) struct xml_node* root = xml_document_root(document); project data = {0}; - _get_xml_str(root, data.id, MAX_LEN_ID, "Id"); - _get_xml_str(root, data.description, MAX_LEN_LONG_DESC, "Description"); - data.state = (project_state)_get_xml_s32(root, "State"); - data.start_date = _get_xml_s64(root, "StartDate"); - data.end_date = _get_xml_s64(root, "EndDate"); + xml_get_str(root, data.id, MAX_LEN_ID, "Id"); + xml_get_str(root, data.description, MAX_LEN_LONG_DESC, "Description"); + data.state = (project_state)xml_get_s32(root, "State"); + data.start_date = xml_get_s64(root, "StartDate"); + data.end_date = xml_get_s64(root, "EndDate"); bool result = administration_project_import(data); log_add("Loaded project in %.3fms. id=%s description=%s state=%d started=%lld end=%lld", @@ -490,9 +312,9 @@ bool administration_reader_import_cost_center(char* buffer, size_t buffer_size) struct xml_node* root = xml_document_root(document); cost_center data = {0}; - _get_xml_str(root, data.id, MAX_LEN_ID, "Id"); - _get_xml_str(root, data.code, MAX_LEN_CODE, "Code"); - _get_xml_str(root, data.description, MAX_LEN_LONG_DESC, "Description"); + xml_get_str(root, data.id, MAX_LEN_ID, "Id"); + xml_get_str(root, data.code, MAX_LEN_CODE, "Code"); + xml_get_str(root, data.description, MAX_LEN_LONG_DESC, "Description"); bool result = administration_cost_center_import(data); log_add("Loaded cost center in %.3fms. id=%s code=%s description=%s", @@ -511,10 +333,10 @@ bool administration_reader_import_tax_rate(char* buffer, size_t buffer_size) struct xml_node* root = xml_document_root(document); tax_rate data = {0}; - _get_xml_str(root, data.id, MAX_LEN_ID, "Id"); - _get_xml_str(root, data.country_code, MAX_LEN_COUNTRY_CODE, "CountryCode"); - _get_xml_str(root, data.category_code, MAX_LEN_CODE, "Category"); - data.rate = _get_xml_float(root, "Rate"); + xml_get_str(root, data.id, MAX_LEN_ID, "Id"); + xml_get_str(root, data.country_code, MAX_LEN_COUNTRY_CODE, "CountryCode"); + xml_get_str(root, data.category_code, MAX_LEN_CODE, "Category"); + data.rate = xml_get_float(root, "Rate"); bool result = administration_tax_rate_import(data); log_add("Loaded tax rate info in %.3fms. id=%s country_code=%s category_code=%s rate=%.2f", @@ -532,8 +354,8 @@ bool administration_reader_import_administration_info(char* buffer, size_t buffe struct xml_node* root = xml_document_root(document); - administration_set_next_id(_get_xml_s32(root, "NextId")); - administration_set_next_sequence_number(_get_xml_s32(root, "NextSequenceNumber")); + administration_set_next_id(xml_get_s32(root, "NextId")); + administration_set_next_sequence_number(xml_get_s32(root, "NextSequenceNumber")); log_add("Loaded administration info in %.3fms. next_id=%d next_sequence_number=%d", STOPWATCH_TIME, administration_get_next_id(), administration_get_next_sequence_number()); |
