All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Add support for Lucky v1.3
- Add support for Crystal v1.13
- Add support for Crystal v1.14
- Add back presets removed unitentionally
- Remove model association presets
- Allow paying for a given invoice
- Add sales receipts (invoices paid for on the spot)
- Add
Api::DirectReceipts::Create
action - Add
Api::DirectReceipts::Edit
action - Add
Api::DirectReceipts::New
action - Add
Api::DirectReceipts::Update
action - Add
DirectReceipts::Create
action - Add
DirectReceipts::Edit
action - Add
DirectReceipts::New
action - Add
DirectReceipts::Update
action
- Allow manually setting
created_at
when finalizing documents - Rename
Bill::SendDirectReceiptEmail
toBill::SendFinalizedDirectReceiptEmail
- Merge mixin presets into their respective main modules
- Rename
ReceivePayment
operation toCreateReceipt
- Rename
ReceiveDirectPayment
operation toCreateDirectReceipt
- Auto mark invoices as paid only when transaction was newly finalized
- Auto mark invoices as paid in
UpdateTransaction
operation - Assign finalized receipt validation error in
RefundPayment
tostatus
attribute
- Add
Bill::User#billing_details
abstract method
- Limit description lengths to mitigate potential DoS
- Limit notes lengths to mitigate potential DoS
- Replace
Transaction#metadata
database column with a polymorphicTransaction#source
- Fix CI issues with Lucky v1.2
- Replace receipt ID variable with reference in refund description translation
- Add
Int#credit?
method - Add
Int#debit?
method
- Remove
Ledger.credit?
method - Remove
Ledger.debit?
method - Remove
Ledger.zero?
method
- Remove redundant uniqueness check when automatically setting
reference
- Compare invoice due days using local timezone
- Add support for Lucky v1.1
- Add
UpdateDirectReceipt
operation
- Send direct receipt emails only for finalized transactions
- Add
TransactionMetadata#credit_note_id
only whenCreditNote
model exists - Add
TransactionMetadata#invoice_id
only whenInvoice
model exists - Add
TransactionMetadata#receipt_id
only whenReceipt
model exists
- Avoid possible bugs with truthiness checks for
Bool
operation attributes
- Add
Bill::SetTransactionAmount
operation mixin
- Fix change from credit to debit amount not working in
UpdateTransaction
- Fix
PQ::PQError
in transaction update operations whenstatus
is not set
- Require
status
inBill::ValidateTransaction
operation mixin
- Fix finalized receipt transactions not created
- Add
credit : Bool
attribute toCreateTransaction
operation - Add
credit : Bool
attribute toUpdateTransaction
operation - Add
Api::FinalizedTransactions::*
actions - Add
FinalizedTransactions::*
actions
- Remove
CreateCreditTransaction
operation - Remove
CreateDebitTransaction
operation - Remove
Api::CreditTransactions::*
actions - Remove
Api::DebitTransactions::*
actions - Remove
CreditTransactions::*
actions - Remove
DebitTransactions::*
actions
- Add
Transaction#status
column - Allow setting custom quantity and amount/price column types
- Relax
types
parameter type restriction forLedger.balance
toIndexable(TransactionType)
- Add
time
parameter toInvoiceQuery#is_due
method - Add
time
parameter toInvoiceQuery#is_not_due
method - Add
time
parameter toInvoiceQuery#is_overdue
method - Add
time
parameter toInvoiceQuery#is_not_overdue
method - Add
time
parameter toInvoiceQuery#is_underdue
method - Add
time
parameter toInvoiceQuery#is_not_underdue
method
- Compare
price_mu
param asFloat64
instead ofInt32
inBill::NeedsLineItems
- Add
Transaction#balance(User::PrimaryKeyType, ...)
methods - Add
Bill::ReferenceColumns
model mixin
- Support namespaced parent model types
- Add
user
parameter type restriction toLedger.balance
methods
- Upgrade
GrottoPress/lucille
shard to v1.0 - Do not skip default validations in operations outside Bill
- Remove
ApiAction
andBrowserAction
from presets
- Upgrade
GrottoPress/lucille
shard to v0.11
- Add support for CockroachDB
- Do a case-insensitive search when validating
reference
uniqueness
- Upgrade to support Lucky v1.0
- Add
CreditNote#counter
column for use in references - Add
Invoice#counter
column for use in references - Add
Receipt#counter
column for use in references - Add
Transaction#counter
column for use in references - Add
Ledger.balance_fm
method - Pay earliest invoices first if they have same due date
- Add
Bill::CreditNoteFromCreditNoteId
operation mixin - Add
Bill::InvoiceFromInvoiceId
operation mixin - Add
CreditNoteTotals#line_items_fm
- Add
InvoiceTotals#credit_notes_fm
- Add
InvoiceTotals#line_items_fm
- Make
Invoice#description
column optional - Make
CreditNote#description
column optional - Use a zero quantity or price as a flag to delete an item in
Bill::NeedsLineItems
.
- Remove
.max_debt_allowed
setting - Remove
Ledger.invoices.hard_owing?
- Remove
Ledger.invoices.hard_owing!
- Remove
Ledger.invoices.soft_owing?
- Remove
Ledger.invoices.soft_owing!
- Remove
Ledger.invoices.over_hard_owing?
- Remove
Ledger.invoices.over_hard_owing!
- Remove
Ledger.invoices.over_soft_owing?
- Remove
Ledger.invoices.over_soft_owing!
- Fix negative sign stripped in fractional money formats for negative amounts
- Ensure calculated amounts are constant even if modules are included multiple times
- Add
Bill::BelongsToReceipt
model mixin - Add
Bill::OptionalBelongsToReceipt
model mixin
- Upgrade to support Crystal v1.6
- Use net amount (instead of full amount) when marking invoices as paid
- Fix
PQ::PQError
(syntax error) inLedger.balance!
when usingUUID
primary keys
- Upgrade to support Lucky v1.0.0-rc1
- Add
CreditNote#reference
column - Add
Invoice#reference
column - Add
Receipt#reference
column - Add
Transaction#reference
column - Add support for all database primary key types (not just
Int64
)
- Add support for Lucky v0.30
- Add
Invoice#net_amount_fm
method - Add
Invoice#net_amount_fm!
method
- Ensure support for Crystal v1.3
- Use saved status to determine status of create operations
- Respond with HTTP status code
400
in actions if operation failed - Rename
User#full_address
to#billing_details
- Replace
NamedTuple
responses in APIs entirely with serializers
- Add support for Lucky v0.29
- Set up i18n with Rex
- Remove
Lucky::Env
module in favour ofLuckyEnv
- Convert
CreditNoteTotals
to a struct - Convert
InvoiceTotals
to a struct - Convert
TransactionMetadata
to a struct
- Remove support for Lucky v0.28
- Add transactions ledger
- Add invoices
- Add credit notes
- Add receipts