summaryrefslogtreecommitdiff
path: root/include/administration.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/administration.hpp')
-rw-r--r--include/administration.hpp117
1 files changed, 114 insertions, 3 deletions
diff --git a/include/administration.hpp b/include/administration.hpp
index 774faf8..5e6f0c1 100644
--- a/include/administration.hpp
+++ b/include/administration.hpp
@@ -15,7 +15,7 @@
#define MAX_LEN_LONG_DESC 64
#define MAX_LEN_EMAIL 64
#define MAX_LEN_PHONE 16
-#define MAX_LEN_BANK 32
+#define MAX_LEN_BANK 35
#define MAX_LEN_TAXID 32
#define MAX_LEN_BUSINESSID 32
#define MAX_LEN_TAX_SECTION 16
@@ -27,7 +27,7 @@ typedef struct
char id[MAX_LEN_ID]; // T/[id]
char country_code[MAX_LEN_COUNTRY_CODE]; // 2 letter country code
float rate; // 0-100%
- char description[MAX_LEN_SHORT_DESC]; // Currently only used for global tax brackets
+ char description[MAX_LEN_SHORT_DESC];
} country_tax_bracket;
typedef struct
@@ -117,6 +117,113 @@ typedef struct
char tax_section[MAX_LEN_TAX_SECTION];
} billing_item;
+/**
+ * UN/CEFACT Payment Means Code (UNCL4461)
+ * Source: https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL4461/
+ */
+typedef enum {
+ PAYMENT_METHOD_INSTRUMENT_NOT_DEFINED = 1,
+ PAYMENT_METHOD_ACH_CREDIT = 2,
+ PAYMENT_METHOD_ACH_DEBIT = 3,
+ PAYMENT_METHOD_ACH_DEMAND_DEBIT_REVERSAL = 4,
+ PAYMENT_METHOD_ACH_DEMAND_CREDIT_REVERSAL = 5,
+ PAYMENT_METHOD_ACH_DEMAND_CREDIT = 6,
+ PAYMENT_METHOD_ACH_DEMAND_DEBIT = 7,
+ PAYMENT_METHOD_HOLD = 8,
+ PAYMENT_METHOD_NATIONAL_REGIONAL_CLEARING = 9,
+ PAYMENT_METHOD_CASH = 10,
+ PAYMENT_METHOD_ACH_SAVINGS_CREDIT_REVERSAL = 11,
+ PAYMENT_METHOD_ACH_SAVINGS_DEBIT_REVERSAL = 12,
+ PAYMENT_METHOD_ACH_SAVINGS_CREDIT = 13,
+ PAYMENT_METHOD_ACH_SAVINGS_DEBIT = 14,
+ PAYMENT_METHOD_BOOKENTRY_CREDIT = 15,
+ PAYMENT_METHOD_BOOKENTRY_DEBIT = 16,
+ PAYMENT_METHOD_ACH_DEMAND_CCD_CREDIT = 17,
+ PAYMENT_METHOD_ACH_DEMAND_CCD_DEBIT = 18,
+ PAYMENT_METHOD_ACH_DEMAND_CTP_CREDIT = 19,
+ PAYMENT_METHOD_CHEQUE = 20,
+ PAYMENT_METHOD_BANKERS_DRAFT = 21,
+ PAYMENT_METHOD_CERTIFIED_BANKERS_DRAFT = 22,
+ PAYMENT_METHOD_BANK_CHEQUE = 23,
+ PAYMENT_METHOD_BILL_OF_EXCHANGE_AWAITING_ACCEPTANCE = 24,
+ PAYMENT_METHOD_CERTIFIED_CHEQUE = 25,
+ PAYMENT_METHOD_LOCAL_CHEQUE = 26,
+ PAYMENT_METHOD_ACH_DEMAND_CTP_DEBIT = 27,
+ PAYMENT_METHOD_ACH_DEMAND_CTX_CREDIT = 28,
+ PAYMENT_METHOD_ACH_DEMAND_CTX_DEBIT = 29,
+ PAYMENT_METHOD_CREDIT_TRANSFER = 30,
+ PAYMENT_METHOD_DEBIT_TRANSFER = 31,
+ PAYMENT_METHOD_ACH_DEMAND_CCD_PLUS_CREDIT = 32,
+ PAYMENT_METHOD_ACH_DEMAND_CCD_PLUS_DEBIT = 33,
+ PAYMENT_METHOD_ACH_PPD = 34,
+ PAYMENT_METHOD_ACH_SAVINGS_CCD_CREDIT = 35,
+ PAYMENT_METHOD_ACH_SAVINGS_CCD_DEBIT = 36,
+ PAYMENT_METHOD_ACH_SAVINGS_CTP_CREDIT = 37,
+ PAYMENT_METHOD_ACH_SAVINGS_CTP_DEBIT = 38,
+ PAYMENT_METHOD_ACH_SAVINGS_CTX_CREDIT = 39,
+ PAYMENT_METHOD_ACH_SAVINGS_CTX_DEBIT = 40,
+ PAYMENT_METHOD_ACH_SAVINGS_CCD_PLUS_CREDIT = 41,
+ PAYMENT_METHOD_PAYMENT_TO_BANK_ACCOUNT = 42,
+ PAYMENT_METHOD_ACH_SAVINGS_CCD_PLUS_DEBIT = 43,
+ PAYMENT_METHOD_ACCEPTED_BILL_OF_EXCHANGE = 44,
+ PAYMENT_METHOD_REFERENCED_HOME_BANKING_CREDIT_TRANSFER = 45,
+ PAYMENT_METHOD_INTERBANK_DEBIT_TRANSFER = 46,
+ PAYMENT_METHOD_HOME_BANKING_DEBIT_TRANSFER = 47,
+ PAYMENT_METHOD_BANK_CARD = 48,
+ PAYMENT_METHOD_DIRECT_DEBIT = 49,
+ PAYMENT_METHOD_PAYMENT_BY_POSTGIRO = 50,
+ PAYMENT_METHOD_FR_NORME_6_97_CFONB_OPTION_A = 51,
+ PAYMENT_METHOD_URGENT_COMMERCIAL_PAYMENT = 52,
+ PAYMENT_METHOD_URGENT_TREASURY_PAYMENT = 53,
+ PAYMENT_METHOD_CREDIT_CARD = 54,
+ PAYMENT_METHOD_DEBIT_CARD = 55,
+ PAYMENT_METHOD_BANKGIRO = 56,
+ PAYMENT_METHOD_STANDING_AGREEMENT = 57,
+ PAYMENT_METHOD_SEPA_CREDIT_TRANSFER = 58,
+ PAYMENT_METHOD_SEPA_DIRECT_DEBIT = 59,
+ PAYMENT_METHOD_PROMISSORY_NOTE = 60,
+ PAYMENT_METHOD_PROMISSORY_NOTE_SIGNED_BY_DEBTOR = 61,
+ PAYMENT_METHOD_PROMISSORY_NOTE_SIGNED_BY_DEBTOR_AND_ENDORSED_BY_BANK = 62,
+ PAYMENT_METHOD_PROMISSORY_NOTE_SIGNED_BY_DEBTOR_AND_ENDORSED_BY_THIRD_PARTY = 63,
+ PAYMENT_METHOD_PROMISSORY_NOTE_SIGNED_BY_BANK = 64,
+ PAYMENT_METHOD_PROMISSORY_NOTE_SIGNED_BY_BANK_AND_ENDORSED_BY_ANOTHER_BANK = 65,
+ PAYMENT_METHOD_PROMISSORY_NOTE_SIGNED_BY_THIRD_PARTY = 66,
+ PAYMENT_METHOD_PROMISSORY_NOTE_SIGNED_BY_THIRD_PARTY_AND_ENDORSED_BY_BANK = 67,
+ PAYMENT_METHOD_ONLINE_PAYMENT_SERVICE = 68,
+ PAYMENT_METHOD_TRANSFER_ADVICE = 69,
+ PAYMENT_METHOD_BILL_DRAWN_BY_CREDITOR_ON_DEBTOR = 70,
+ PAYMENT_METHOD_BILL_DRAWN_BY_CREDITOR_ON_BANK = 74,
+ PAYMENT_METHOD_BILL_DRAWN_BY_CREDITOR_ENDORSED_BY_ANOTHER_BANK = 75,
+ PAYMENT_METHOD_BILL_DRAWN_BY_CREDITOR_ON_BANK_ENDORSED_BY_THIRD_PARTY = 76,
+ PAYMENT_METHOD_BILL_DRAWN_BY_CREDITOR_ON_THIRD_PARTY = 77,
+ PAYMENT_METHOD_BILL_DRAWN_BY_CREDITOR_ON_THIRD_PARTY_ACCEPTED_AND_ENDORSED_BY_BANK = 78,
+ PAYMENT_METHOD_NOT_TRANSFERABLE_BANKERS_DRAFT = 91,
+ PAYMENT_METHOD_NOT_TRANSFERABLE_LOCAL_CHEQUE = 92,
+ PAYMENT_METHOD_REFERENCE_GIRO = 93,
+ PAYMENT_METHOD_URGENT_GIRO = 94,
+ PAYMENT_METHOD_FREE_FORMAT_GIRO = 95,
+ PAYMENT_METHOD_REQUESTED_METHOD_NOT_USED = 96,
+ PAYMENT_METHOD_CLEARING_BETWEEN_PARTNERS = 97,
+ PAYMENT_METHOD_JP_ELECTRONICALLY_RECORDED_MONETARY_CLAIMS = 98,
+ PAYMENT_METHOD_MUTUALLY_DEFINED = -1 /** ZZZ */
+} payment_method;
+
+typedef struct
+{
+ char payee_bank_account[MAX_LEN_BANK]; // Recipient IBAN or BBAN account.
+ char payee_account_name[MAX_LEN_LONG_DESC]; // Name of account where payment is made to.
+ char service_provider_id[MAX_LEN_LONG_DESC]; // BIC or national clearing code.
+ char payer_bank_account[MAX_LEN_BANK]; // Sender IBAN or BBAN account.
+ payment_method payment_method;
+} payment_information;
+
+typedef struct
+{
+ float total;
+ float tax;
+ float net;
+} tax_subtotal;
+
typedef struct
{
char id[MAX_LEN_ID]; // I/[id]
@@ -138,9 +245,10 @@ typedef struct
float net;
char currency[MAX_LEN_CURRENCY]; // 3 letter code
- bool is_triangulation; // True of addressee != customer
+ bool is_triangulation; // True if addressee != customer
invoice_status status;
bool is_outgoing; // Outgoing or incomming invoice.
+ payment_information payment_means;
bool is_intra_community; // TODO uninplemented
time_t payment_on_account_date; // TODO uninplemented
@@ -253,6 +361,9 @@ u32 administration_invoice_get_partial_list_outgoing(u32 page_index, u32 pag
u32 administration_invoice_get_partial_list_incomming(u32 page_index, u32 page_size, invoice* buffer);
u32 administration_invoice_get_all(invoice* buffer);
+u32 administration_invoice_get_tax_brackets(invoice* invoice, country_tax_bracket* buffer);
+bool administration_invoice_get_subtotal_for_tax_bracket(invoice* invoice, country_tax_bracket bracket, tax_subtotal* buffer);
+
// Billing item functions.
// =======================
u32 administration_billing_item_count(invoice* invoice);