diff options
Diffstat (limited to 'include/administration.hpp')
| -rw-r--r-- | include/administration.hpp | 117 |
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); |
