summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAldrik Ramaekers <aldrikboy@gmail.com>2025-09-21 20:37:34 +0200
committerAldrik Ramaekers <aldrikboy@gmail.com>2025-09-21 20:37:34 +0200
commit051666a90b2c4779efdc8cfb49ab7316c94b58b0 (patch)
tree041ad949685731db2b824f502f0a7a8e64715517 /include
parent946a0c939c0cb7c28c9af9b7e4e2b20c45dd3702 (diff)
peppol file importing + invoice rw tests
Diffstat (limited to 'include')
-rw-r--r--include/administration.hpp5
-rw-r--r--include/administration_reader.hpp3
-rw-r--r--include/file_templates.hpp33
3 files changed, 30 insertions, 11 deletions
diff --git a/include/administration.hpp b/include/administration.hpp
index e2ff80d..130993f 100644
--- a/include/administration.hpp
+++ b/include/administration.hpp
@@ -270,7 +270,6 @@ typedef struct
bool is_outgoing; // Outgoing or incomming invoice.
payment_information payment_means;
- // Used for forms, not stored on disk. Filled when retrieved.
contact supplier;
contact customer;
} invoice;
@@ -474,6 +473,7 @@ u32 administration_invoice_count();
u32 administration_invoice_get_incomming_count();
u32 administration_invoice_get_outgoing_count();
invoice administration_invoice_create_empty();
+a_err administration_invoice_import(invoice* invoice);
a_err administration_invoice_add(invoice* invoice);
a_err administration_invoice_update(invoice* invoice);
a_err administration_invoice_remove(invoice* invoice);
@@ -486,7 +486,7 @@ char* administration_invoice_get_status_string(invoice* invoice);
u32 administration_invoice_get_partial_list_outgoing(u32 page_index, u32 page_size, invoice* buffer);
u32 administration_invoice_get_partial_list_incomming(u32 page_index, u32 page_size, invoice* buffer);
u32 administration_invoice_get_all(invoice* buffer);
-
+a_err administration_invoice_get_by_id(invoice* buffer, char* id);
u32 administration_invoice_get_tax_rates(invoice* invoice, tax_rate* buffer);
bool administration_invoice_get_subtotal_for_tax_rate(invoice* invoice, tax_rate rate, tax_subtotal* buffer);
@@ -494,6 +494,7 @@ bool administration_invoice_get_subtotal_for_tax_rate(invoice* invoice, tax_r
// =======================
u32 administration_billing_item_count(invoice* invoice);
billing_item administration_billing_item_create_empty();
+a_err administration_billing_item_import_to_invoice(invoice* invoice, billing_item item);
a_err administration_billing_item_add_to_invoice(invoice* invoice, billing_item item);
a_err administration_billing_item_update_in_invoice(invoice* invoice, billing_item item);
a_err administration_billing_item_remove_from_invoice(invoice* invoice, billing_item item);
diff --git a/include/administration_reader.hpp b/include/administration_reader.hpp
index cbd69ba..7765680 100644
--- a/include/administration_reader.hpp
+++ b/include/administration_reader.hpp
@@ -24,4 +24,5 @@ bool administration_reader_import_administration_info(char* buffer, size_t buffe
bool administration_reader_import_tax_rate(char* buffer, size_t buffer_size);
bool administration_reader_import_cost_center(char* buffer, size_t buffer_size);
bool administration_reader_import_project(char* buffer, size_t buffer_size);
-bool administration_reader_import_contact(char* buffer, size_t buffer_size); \ No newline at end of file
+bool administration_reader_import_contact(char* buffer, size_t buffer_size);
+bool administration_reader_import_invoice(char* buffer, size_t buffer_size); \ No newline at end of file
diff --git a/include/file_templates.hpp b/include/file_templates.hpp
index 9064abf..4ed3611 100644
--- a/include/file_templates.hpp
+++ b/include/file_templates.hpp
@@ -94,6 +94,12 @@ const char* peppol_invoice_line_template =
" <cac:Item>\n"
" <cbc:Name>{{ITEM_NAME}}</cbc:Name>\n"
+
+" <cac:AdditionalItemProperty>\n"
+" <cbc:Name>Internal Tax Rate ID</cbc:Name>\n"
+" <cbc:Value>{{LINE_TAX_ID}}</cbc:Value>\n"
+" </cac:AdditionalItemProperty>\n"
+
" <cac:ClassifiedTaxCategory>\n"
" <cbc:ID>{{LINE_TAX_CATEGORY}}</cbc:ID>\n"
" <cbc:Percent>{{LINE_TAX_PERCENT}}</cbc:Percent>\n"
@@ -123,24 +129,28 @@ const char *peppol_invoice_template =
" <cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>\n"
" <cbc:DocumentCurrencyCode>{{CURRENCY}}</cbc:DocumentCurrencyCode>\n"
"\n"
+" <cac:DespatchDocumentReference>\n"
+" <cbc:ID>{{INVOICE_STATUS}}</cbc:ID>\n"
+" </cac:DespatchDocumentReference>\n"
+"\n"
" <cac:AdditionalDocumentReference>\n"
" <cbc:ID>{{INVOICE_DOCUMENT}}</cbc:ID>\n"
" </cac:AdditionalDocumentReference>\n"
"\n"
" <cac:OrderReference>\n"
-" <cbc:ID>{{INVOICE_ID}}</cbc:ID>\n"
+" <cbc:ID>{{INVOICE_SEQUENCE_ID}}</cbc:ID>\n"
" </cac:OrderReference>\n"
"\n"
" <cac:ProjectReference>\n"
" <cbc:ID>{{PROJECT_ID}}</cbc:ID>\n"
" </cac:ProjectReference>\n"
-" <cbc:AccountingCost>{{COST_CENTER_CODE}}</cbc:AccountingCost>\n"
+" <cbc:AccountingCost>{{COST_CENTER_ID}}</cbc:AccountingCost>\n"
"\n"
" <cac:AccountingSupplierParty>\n"
" <cac:Party>\n"
" <cbc:EndpointID schemeID=\"{{SUPPLIER_ENDPOINT_SCHEME}}\">{{SUPPLIER_ENDPOINT_ID}}</cbc:EndpointID>\n"
" <cac:PartyIdentification>\n"
-" <cbc:ID schemeID=\"ZZZ\">{{SUPPLIER_ID}}</cbc:ID>\n"
+" <cbc:ID schemeID=\"ZZZ\">{{SUPPLIER_BUSINESS_ID}}</cbc:ID>\n"
" </cac:PartyIdentification>\n"
" <cac:PartyName>\n"
" <cbc:Name>{{SUPPLIER_NAME}}</cbc:Name>\n"
@@ -167,7 +177,7 @@ const char *peppol_invoice_template =
" </cac:PartyLegalEntity>\n"
"\n"
" <cac:Contact>\n"
-" <cbc:Name>{{SUPPLIER_NAME}}</cbc:Name>\n"
+" <cbc:Name>{{SUPPLIER_ID}}</cbc:Name>\n"
" <cbc:Telephone>{{SUPPLIER_PHONE_NUMBER}}</cbc:Telephone>\n"
" <cbc:ElectronicMail>{{SUPPLIER_EMAIL}}</cbc:ElectronicMail>\n"
" </cac:Contact>\n"
@@ -179,7 +189,7 @@ const char *peppol_invoice_template =
" <cac:Party>\n"
" <cbc:EndpointID schemeID=\"{{CUSTOMER_ENDPOINT_SCHEME}}\">{{CUSTOMER_ENDPOINT_ID}}</cbc:EndpointID>\n"
" <cac:PartyIdentification>\n"
-" <cbc:ID schemeID=\"ZZZ\">{{CUSTOMER_ID}}</cbc:ID>\n"
+" <cbc:ID schemeID=\"ZZZ\">{{CUSTOMER_BUSINESS_ID}}</cbc:ID>\n"
" </cac:PartyIdentification>\n"
" <cac:PartyName>\n"
" <cbc:Name>{{CUSTOMER_NAME}}</cbc:Name>\n"
@@ -206,7 +216,7 @@ const char *peppol_invoice_template =
" </cac:PartyLegalEntity>\n"
"\n"
" <cac:Contact>\n"
-" <cbc:Name>{{CUSTOMER_NAME}}</cbc:Name>\n"
+" <cbc:Name>{{CUSTOMER_ID}}</cbc:Name>\n"
" <cbc:Telephone>{{CUSTOMER_PHONE_NUMBER}}</cbc:Telephone>\n"
" <cbc:ElectronicMail>{{CUSTOMER_EMAIL}}</cbc:ElectronicMail>\n"
" </cac:Contact>\n"
@@ -238,14 +248,21 @@ const char *peppol_invoice_template =
" <cac:PaymentMeans>\n"
" <cbc:PaymentMeansCode>{{PAYMENT_TYPE}}</cbc:PaymentMeansCode>\n"
" <cbc:PaymentID>{{INVOICE_ID}}</cbc:PaymentID>\n"
+
" <cac:PayeeFinancialAccount>\n"
-" <cbc:ID>{{SUPPLIER_IBAN}}</cbc:ID>\n"
+" <cbc:ID>{{RECIPIENT_IBAN}}</cbc:ID>\n"
+" <cbc:Name>{{RECIPIENT_NAME}}</cbc:Name>\n"
" <cac:FinancialInstitutionBranch>\n"
" <cac:FinancialInstitution>\n"
-" <cbc:ID>{{SUPPLIER_BIC}}</cbc:ID>\n"
+" <cbc:ID>{{RECIPIENT_BIC}}</cbc:ID>\n"
" </cac:FinancialInstitution>\n"
" </cac:FinancialInstitutionBranch>\n"
" </cac:PayeeFinancialAccount>\n"
+
+" <cac:PayerFinancialAccount>\n"
+" <cbc:ID>{{SENDER_IBAN}}</cbc:ID>\n"
+" </cac:PayerFinancialAccount>\n"
+
" </cac:PaymentMeans>\n"
"\n"
" <cac:TaxTotal>\n"