From 1d7f3d69b58d0b8eba886b1003a67e60be8f9025 Mon Sep 17 00:00:00 2001 From: Luke Oldenburg <87272260+Luke-Oldenburg@users.noreply.github.com> Date: Mon, 20 Jul 2026 17:16:46 +0000 Subject: [PATCH 1/3] [Ledger::Item] Add special appearances --- app/models/ledger/item.rb | 12 +----------- ...0203941_add_special_appearance_to_ledger_items.rb | 8 ++++++++ db/schema.rb | 1 + 3 files changed, 10 insertions(+), 11 deletions(-) create mode 100644 db/migrate/20260710203941_add_special_appearance_to_ledger_items.rb diff --git a/app/models/ledger/item.rb b/app/models/ledger/item.rb index fc0cdc794c..2aef73e9f3 100644 --- a/app/models/ledger/item.rb +++ b/app/models/ledger/item.rb @@ -16,6 +16,7 @@ # receipt_count :integer default(0), not null # receipt_required :boolean # short_code :text +# special_appearance :integer # status :string # system_memo :text # created_at :datetime not null @@ -66,17 +67,6 @@ class Item < ApplicationRecord has_many :canonical_pending_transactions, foreign_key: "ledger_item_id", inverse_of: :ledger_item has_many :all_ledgers, through: :ledger_mappings, source: :ledger, class_name: "::Ledger" - enum :status, { - pending: "pending", # any CPTs contributing to balance - settled: "settled", # no CPTs contributing to balance or fronted incoming CPT with no CTs - reversed: "reversed", # sum of CTs is zero - released: "released", # uncaptured by Stripe (CardCharge only) - rejected: "rejected", # transfer rejected by ops - failed: "failed", # error - canceled: "canceled", # user canceled transfer (for IncreaseCheck this also includes transfers rejected by ops) - declined: "declined" # CPT has CPDM, no CPTs - } - validates_presence_of :amount_cents, :memo, :datetime normalizes :memo, with: ->(memo) { memo.strip.presence } diff --git a/db/migrate/20260710203941_add_special_appearance_to_ledger_items.rb b/db/migrate/20260710203941_add_special_appearance_to_ledger_items.rb new file mode 100644 index 0000000000..627f5914ae --- /dev/null +++ b/db/migrate/20260710203941_add_special_appearance_to_ledger_items.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +class AddSpecialAppearanceToLedgerItems < ActiveRecord::Migration[8.0] + def change + add_column :ledger_items, :special_appearance, :integer + end + +end diff --git a/db/schema.rb b/db/schema.rb index 72d9ac95f5..443c3ee827 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -1616,6 +1616,7 @@ t.boolean "receipt_required" t.text "short_code" t.string "status" + t.integer "special_appearance" t.text "system_memo" t.datetime "updated_at", null: false t.index ["amount_cents"], name: "index_ledger_items_on_amount_cents" From 26cf97ca8a30b6b04adcdf1de4a69d4d1d2cab9f Mon Sep 17 00:00:00 2001 From: Luke Oldenburg <87272260+Luke-Oldenburg@users.noreply.github.com> Date: Mon, 20 Jul 2026 17:22:39 +0000 Subject: [PATCH 2/3] fix schema --- db/schema.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/schema.rb b/db/schema.rb index 443c3ee827..b705962c83 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -1615,8 +1615,8 @@ t.integer "receipt_count", default: 0, null: false t.boolean "receipt_required" t.text "short_code" - t.string "status" t.integer "special_appearance" + t.string "status" t.text "system_memo" t.datetime "updated_at", null: false t.index ["amount_cents"], name: "index_ledger_items_on_amount_cents" From 4043d2beff68583a6004bae0ccfd6dc6213699da Mon Sep 17 00:00:00 2001 From: Luke Oldenburg <87272260+Luke-Oldenburg@users.noreply.github.com> Date: Mon, 20 Jul 2026 17:52:40 +0000 Subject: [PATCH 3/3] add back enum --- app/models/ledger/item.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/app/models/ledger/item.rb b/app/models/ledger/item.rb index 2aef73e9f3..5c7cf0ac7e 100644 --- a/app/models/ledger/item.rb +++ b/app/models/ledger/item.rb @@ -67,6 +67,17 @@ class Item < ApplicationRecord has_many :canonical_pending_transactions, foreign_key: "ledger_item_id", inverse_of: :ledger_item has_many :all_ledgers, through: :ledger_mappings, source: :ledger, class_name: "::Ledger" + enum :status, { + pending: "pending", # any CPTs contributing to balance + settled: "settled", # no CPTs contributing to balance or fronted incoming CPT with no CTs + reversed: "reversed", # sum of CTs is zero + released: "released", # uncaptured by Stripe (CardCharge only) + rejected: "rejected", # transfer rejected by ops + failed: "failed", # error + canceled: "canceled", # user canceled transfer (for IncreaseCheck this also includes transfers rejected by ops) + declined: "declined" # CPT has CPDM, no CPTs + } + validates_presence_of :amount_cents, :memo, :datetime normalizes :memo, with: ->(memo) { memo.strip.presence }