diff options
Diffstat (limited to 'src/ledger.h')
| -rw-r--r-- | src/ledger.h | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/ledger.h b/src/ledger.h new file mode 100644 index 0000000..30271d0 --- /dev/null +++ b/src/ledger.h @@ -0,0 +1,51 @@ +#ifndef BOKF_LEDGER_H +#define BOKF_LEDGER_H + +#include <sqlite3.h> +#include <stddef.h> +#include <stdint.h> + +struct ledger_row { + const char *account; + int64_t debit_ore; + int64_t credit_ore; + const char *description; +}; + +struct ledger_error { + const char *code; + char msg[512]; + int has_details; + int64_t difference_ore; +}; + +struct ledger_post_opts { + int64_t org_id; + int64_t user_id; + int64_t token_id; + const char *date; + const char *description; + const char *series; /* NULL -> "A" */ + const struct ledger_row *rows; + size_t nrows; + int64_t corrects_voucher_id; /* 0 = none */ + const int64_t *attachment_ids; + size_t n_attachments; + const char *client_ref; /* NULL = none */ + int dry_run; + const char *source; /* NULL -> "manual" or "agent" */ +}; + +int ledger_post(sqlite3 *db, const struct ledger_post_opts *o, + struct ledger_error *e, char **out_result_json); + +/* Appends the canonical bytes for a voucher hash (SCHEMA.md 7.1) and + returns the 32-byte hash. */ +void ledger_voucher_hash(const unsigned char prev[32], int64_t org_id, + const char *fy_label, const char *series, + int64_t number, const char *date, + const char *description, + const struct ledger_row *rows, size_t nrows, + unsigned char out[32]); + +#endif |
