Skip to content

Commit 75947d9

Browse files
committed
feat(products): link fees to rate_card_rate and add product_item fee type
Fees produced by the new billing path need to reference the catalog rate that generated them and a fee type identifying them as coming from a product item. Add an optional rate_card_rate_id reference to fees (concurrent index, unvalidated foreign key for a safe rollout) and append product_item to Fee::FEE_TYPES. The existing fee types and billing path are untouched.
1 parent ed71e63 commit 75947d9

7 files changed

Lines changed: 100 additions & 35 deletions

File tree

app/models/fee.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ class Fee < ApplicationRecord
2121
belongs_to :organization
2222
belongs_to :billing_entity
2323
belongs_to :fixed_charge, -> { with_discarded }, optional: true
24+
belongs_to :rate_card_rate, optional: true
2425

2526
has_one :adjusted_fee, dependent: :nullify
2627
has_one :billable_metric, -> { with_discarded }, through: :charge
@@ -45,7 +46,7 @@ class Fee < ApplicationRecord
4546
monetize :unit_amount_cents, disable_validation: true, allow_nil: true, with_model_currency: :currency
4647

4748
# TODO: Deprecate add_on type in the near future
48-
FEE_TYPES = %i[charge add_on subscription credit commitment fixed_charge].freeze
49+
FEE_TYPES = %i[charge add_on subscription credit commitment fixed_charge product_item].freeze
4950
PAYMENT_STATUS = %i[pending succeeded failed refunded].freeze
5051

5152
enum :fee_type, FEE_TYPES
@@ -414,6 +415,7 @@ def to_date
414415
# original_fee_id :uuid
415416
# pay_in_advance_event_id :uuid
416417
# pay_in_advance_event_transaction_id :string
418+
# rate_card_rate_id :uuid
417419
# subscription_id :uuid
418420
# true_up_parent_fee_id :uuid
419421
#
@@ -435,6 +437,7 @@ def to_date
435437
# index_fees_on_organization_id (organization_id)
436438
# index_fees_on_original_fee_id (original_fee_id)
437439
# index_fees_on_pay_in_advance_event_transaction_id (pay_in_advance_event_transaction_id) WHERE (deleted_at IS NULL)
440+
# index_fees_on_rate_card_rate_id (rate_card_rate_id)
438441
# index_fees_on_subscription_id (subscription_id)
439442
# index_fees_on_true_up_parent_fee_id (true_up_parent_fee_id)
440443
#
@@ -449,6 +452,7 @@ def to_date
449452
# fk_rails_... (invoice_id => invoices.id)
450453
# fk_rails_... (organization_id => organizations.id)
451454
# fk_rails_... (original_fee_id => fees.id)
455+
# fk_rails_... (rate_card_rate_id => rate_card_rates.id)
452456
# fk_rails_... (subscription_id => subscriptions.id)
453457
# fk_rails_... (true_up_parent_fee_id => fees.id)
454458
#

app/models/rate_card_rate.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ class RateCardRate < ApplicationRecord
3333
belongs_to :organization
3434
belongs_to :rate_card
3535

36+
has_many :fees
37+
3638
enum :rate_model, RATE_MODELS, validate: true
3739
enum :billing_interval_unit, BILLING_INTERVAL_UNITS, validate: true
3840

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# frozen_string_literal: true
2+
3+
class AddRateCardRateToFees < ActiveRecord::Migration[8.0]
4+
disable_ddl_transaction!
5+
6+
def change
7+
add_reference :fees, :rate_card_rate, type: :uuid, null: true, index: {algorithm: :concurrently}
8+
add_foreign_key :fees, :rate_card_rates, column: :rate_card_rate_id, validate: false
9+
end
10+
end

db/structure.sql

Lines changed: 75 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ ALTER TABLE IF EXISTS ONLY public.quantified_events DROP CONSTRAINT IF EXISTS fk
2626
ALTER TABLE IF EXISTS ONLY public.invoice_subscriptions DROP CONSTRAINT IF EXISTS fk_rails_f435d13904;
2727
ALTER TABLE IF EXISTS ONLY public.fees DROP CONSTRAINT IF EXISTS fk_rails_f375d320ad;
2828
ALTER TABLE IF EXISTS ONLY public.wallet_transactions DROP CONSTRAINT IF EXISTS fk_rails_f32b205d44;
29-
ALTER TABLE IF EXISTS ONLY public.rate_phases DROP CONSTRAINT IF EXISTS fk_rails_f2ab981080;
3029
ALTER TABLE IF EXISTS ONLY public.enriched_store_subscription_migrations DROP CONSTRAINT IF EXISTS fk_rails_f232478e56;
3130
ALTER TABLE IF EXISTS ONLY public.payment_requests DROP CONSTRAINT IF EXISTS fk_rails_f228550fda;
3231
ALTER TABLE IF EXISTS ONLY public.usage_monitoring_alert_thresholds DROP CONSTRAINT IF EXISTS fk_rails_f18cd04d51;
@@ -60,7 +59,6 @@ ALTER TABLE IF EXISTS ONLY public.usage_monitoring_alerts DROP CONSTRAINT IF EXI
6059
ALTER TABLE IF EXISTS ONLY public.product_items DROP CONSTRAINT IF EXISTS fk_rails_d9e7580aa8;
6160
ALTER TABLE IF EXISTS ONLY public.integration_resources DROP CONSTRAINT IF EXISTS fk_rails_d9448a540b;
6261
ALTER TABLE IF EXISTS ONLY public.wallets DROP CONSTRAINT IF EXISTS fk_rails_d9342a8ca7;
63-
ALTER TABLE IF EXISTS ONLY public.rate_phases DROP CONSTRAINT IF EXISTS fk_rails_d844d6b2b1;
6462
ALTER TABLE IF EXISTS ONLY public.subscription_fixed_charge_units_overrides DROP CONSTRAINT IF EXISTS fk_rails_d72a9877be;
6563
ALTER TABLE IF EXISTS ONLY public.entitlement_privileges DROP CONSTRAINT IF EXISTS fk_rails_d648e28d9f;
6664
ALTER TABLE IF EXISTS ONLY public.rate_card_rates DROP CONSTRAINT IF EXISTS fk_rails_d53feb5721;
@@ -117,7 +115,6 @@ ALTER TABLE IF EXISTS ONLY public.integration_items DROP CONSTRAINT IF EXISTS fk
117115
ALTER TABLE IF EXISTS ONLY public.subscription_product_items DROP CONSTRAINT IF EXISTS fk_rails_a8771420b2;
118116
ALTER TABLE IF EXISTS ONLY public.recurring_transaction_rules_invoice_custom_sections DROP CONSTRAINT IF EXISTS fk_rails_a7f20c73bb;
119117
ALTER TABLE IF EXISTS ONLY public.charges DROP CONSTRAINT IF EXISTS fk_rails_a710519346;
120-
ALTER TABLE IF EXISTS ONLY public.rate_phases DROP CONSTRAINT IF EXISTS fk_rails_a61520ac30;
121118
ALTER TABLE IF EXISTS ONLY public.product_item_filter_values DROP CONSTRAINT IF EXISTS fk_rails_a32a8f7fc6;
122119
ALTER TABLE IF EXISTS ONLY public.group_properties DROP CONSTRAINT IF EXISTS fk_rails_a2d2cb3819;
123120
ALTER TABLE IF EXISTS ONLY public.quotes DROP CONSTRAINT IF EXISTS fk_rails_a1ab65f1f7;
@@ -144,6 +141,7 @@ ALTER TABLE IF EXISTS ONLY public.fixed_charge_events DROP CONSTRAINT IF EXISTS
144141
ALTER TABLE IF EXISTS ONLY public.commitments_taxes DROP CONSTRAINT IF EXISTS fk_rails_8fa6f0d920;
145142
ALTER TABLE IF EXISTS ONLY public.applied_pricing_units DROP CONSTRAINT IF EXISTS fk_rails_8e0c3d0c5b;
146143
ALTER TABLE IF EXISTS ONLY public.usage_thresholds DROP CONSTRAINT IF EXISTS fk_rails_8df9bf2b6c;
144+
ALTER TABLE IF EXISTS ONLY public.rate_phases DROP CONSTRAINT IF EXISTS fk_rails_8d4c29e03f;
147145
ALTER TABLE IF EXISTS ONLY public.product_items DROP CONSTRAINT IF EXISTS fk_rails_8c9cbcf514;
148146
ALTER TABLE IF EXISTS ONLY public.usage_monitoring_alerts DROP CONSTRAINT IF EXISTS fk_rails_8c18828b53;
149147
ALTER TABLE IF EXISTS ONLY public.fixed_charges_taxes DROP CONSTRAINT IF EXISTS fk_rails_8c09ee2428;
@@ -234,6 +232,7 @@ ALTER TABLE IF EXISTS ONLY public.payment_provider_customers DROP CONSTRAINT IF
234232
ALTER TABLE IF EXISTS ONLY public.wallets DROP CONSTRAINT IF EXISTS fk_rails_4ff087c52e;
235233
ALTER TABLE IF EXISTS ONLY public.rate_cards DROP CONSTRAINT IF EXISTS fk_rails_4f7ffc3e03;
236234
ALTER TABLE IF EXISTS ONLY public.order_forms DROP CONSTRAINT IF EXISTS fk_rails_4ed54bfec0;
235+
ALTER TABLE IF EXISTS ONLY public.fees DROP CONSTRAINT IF EXISTS fk_rails_4cadfc14f3;
237236
ALTER TABLE IF EXISTS ONLY public.product_item_filter_values DROP CONSTRAINT IF EXISTS fk_rails_4b395cde98;
238237
ALTER TABLE IF EXISTS ONLY public.billing_entities DROP CONSTRAINT IF EXISTS fk_rails_4aa58496c3;
239238
ALTER TABLE IF EXISTS ONLY public.recurring_transaction_rules_invoice_custom_sections DROP CONSTRAINT IF EXISTS fk_rails_49fcc221b0;
@@ -268,6 +267,7 @@ ALTER TABLE IF EXISTS ONLY public.fees DROP CONSTRAINT IF EXISTS fk_rails_34ab15
268267
ALTER TABLE IF EXISTS ONLY public.lifetime_usages DROP CONSTRAINT IF EXISTS fk_rails_348acbd245;
269268
ALTER TABLE IF EXISTS ONLY public.customers_taxes DROP CONSTRAINT IF EXISTS fk_rails_33d169382f;
270269
ALTER TABLE IF EXISTS ONLY public.payment_requests DROP CONSTRAINT IF EXISTS fk_rails_32600e5a72;
270+
ALTER TABLE IF EXISTS ONLY public.rate_phases DROP CONSTRAINT IF EXISTS fk_rails_32197619c6;
271271
ALTER TABLE IF EXISTS ONLY public.credits DROP CONSTRAINT IF EXISTS fk_rails_310fcb3585;
272272
ALTER TABLE IF EXISTS ONLY public.invoices DROP CONSTRAINT IF EXISTS fk_rails_309d3a4412;
273273
ALTER TABLE IF EXISTS ONLY public.wallets_invoice_custom_sections DROP CONSTRAINT IF EXISTS fk_rails_3092f5f2e0;
@@ -303,6 +303,7 @@ ALTER TABLE IF EXISTS ONLY public.webhooks DROP CONSTRAINT IF EXISTS fk_rails_20
303303
ALTER TABLE IF EXISTS ONLY public.plan_products DROP CONSTRAINT IF EXISTS fk_rails_1df4cf80e4;
304304
ALTER TABLE IF EXISTS ONLY public.credits DROP CONSTRAINT IF EXISTS fk_rails_1db0057d9b;
305305
ALTER TABLE IF EXISTS ONLY public.applied_usage_thresholds DROP CONSTRAINT IF EXISTS fk_rails_1d112bf8a0;
306+
ALTER TABLE IF EXISTS ONLY public.rate_phases DROP CONSTRAINT IF EXISTS fk_rails_1c069c1c44;
306307
ALTER TABLE IF EXISTS ONLY public.plan_products DROP CONSTRAINT IF EXISTS fk_rails_19f4567acb;
307308
ALTER TABLE IF EXISTS ONLY public.billing_entities_invoice_custom_sections DROP CONSTRAINT IF EXISTS fk_rails_19c47827ba;
308309
ALTER TABLE IF EXISTS ONLY public.customer_metadata DROP CONSTRAINT IF EXISTS fk_rails_195153290d;
@@ -378,6 +379,7 @@ DROP INDEX IF EXISTS public.index_webhooks_on_endpoint_status_and_timestamps;
378379
DROP INDEX IF EXISTS public.index_webhooks_on_endpoint_and_timestamps;
379380
DROP INDEX IF EXISTS public.index_webhooks_for_query;
380381
DROP INDEX IF EXISTS public.index_webhook_endpoints_on_webhook_url_and_organization_id;
382+
DROP INDEX IF EXISTS public.index_webhook_endpoints_on_slow_response;
381383
DROP INDEX IF EXISTS public.index_webhook_endpoints_on_organization_id;
382384
DROP INDEX IF EXISTS public.index_wallets_on_ready_to_be_refreshed;
383385
DROP INDEX IF EXISTS public.index_wallets_on_payment_method_id;
@@ -702,6 +704,7 @@ DROP INDEX IF EXISTS public.index_fees_taxes_on_fee_id_and_tax_id;
702704
DROP INDEX IF EXISTS public.index_fees_taxes_on_fee_id;
703705
DROP INDEX IF EXISTS public.index_fees_on_true_up_parent_fee_id;
704706
DROP INDEX IF EXISTS public.index_fees_on_subscription_id;
707+
DROP INDEX IF EXISTS public.index_fees_on_rate_card_rate_id;
705708
DROP INDEX IF EXISTS public.index_fees_on_pay_in_advance_event_transaction_id;
706709
DROP INDEX IF EXISTS public.index_fees_on_original_fee_id;
707710
DROP INDEX IF EXISTS public.index_fees_on_organization_id;
@@ -3488,7 +3491,8 @@ CREATE TABLE public.fees (
34883491
precise_credit_notes_amount_cents numeric(30,5) DEFAULT 0.0 NOT NULL,
34893492
fixed_charge_id uuid,
34903493
duplicated_in_advance boolean DEFAULT false,
3491-
original_fee_id uuid
3494+
original_fee_id uuid,
3495+
rate_card_rate_id uuid
34923496
);
34933497

34943498

@@ -5719,7 +5723,8 @@ CREATE TABLE public.webhook_endpoints (
57195723
updated_at timestamp(6) without time zone NOT NULL,
57205724
signature_algo integer DEFAULT 0 NOT NULL,
57215725
event_types character varying[],
5722-
name character varying
5726+
name character varying,
5727+
slow_response boolean DEFAULT false NOT NULL
57235728
);
57245729

57255730

@@ -8734,6 +8739,13 @@ CREATE INDEX index_fees_on_original_fee_id ON public.fees USING btree (original_
87348739
CREATE INDEX index_fees_on_pay_in_advance_event_transaction_id ON public.fees USING btree (pay_in_advance_event_transaction_id) WHERE (deleted_at IS NULL);
87358740

87368741

8742+
--
8743+
-- Name: index_fees_on_rate_card_rate_id; Type: INDEX; Schema: public; Owner: -
8744+
--
8745+
8746+
CREATE INDEX index_fees_on_rate_card_rate_id ON public.fees USING btree (rate_card_rate_id);
8747+
8748+
87378749
--
87388750
-- Name: index_fees_on_subscription_id; Type: INDEX; Schema: public; Owner: -
87398751
--
@@ -11002,6 +11014,13 @@ CREATE INDEX index_wallets_on_ready_to_be_refreshed ON public.wallets USING btre
1100211014
CREATE INDEX index_webhook_endpoints_on_organization_id ON public.webhook_endpoints USING btree (organization_id);
1100311015

1100411016

11017+
--
11018+
-- Name: index_webhook_endpoints_on_slow_response; Type: INDEX; Schema: public; Owner: -
11019+
--
11020+
11021+
CREATE INDEX index_webhook_endpoints_on_slow_response ON public.webhook_endpoints USING btree (slow_response);
11022+
11023+
1100511024
--
1100611025
-- Name: index_webhook_endpoints_on_webhook_url_and_organization_id; Type: INDEX; Schema: public; Owner: -
1100711026
--
@@ -11473,6 +11492,14 @@ ALTER TABLE ONLY public.plan_products
1147311492
ADD CONSTRAINT fk_rails_19f4567acb FOREIGN KEY (plan_id) REFERENCES public.plans(id);
1147411493

1147511494

11495+
--
11496+
-- Name: rate_phases fk_rails_1c069c1c44; Type: FK CONSTRAINT; Schema: public; Owner: -
11497+
--
11498+
11499+
ALTER TABLE ONLY public.rate_phases
11500+
ADD CONSTRAINT fk_rails_1c069c1c44 FOREIGN KEY (organization_id) REFERENCES public.organizations(id);
11501+
11502+
1147611503
--
1147711504
-- Name: applied_usage_thresholds fk_rails_1d112bf8a0; Type: FK CONSTRAINT; Schema: public; Owner: -
1147811505
--
@@ -11753,6 +11780,14 @@ ALTER TABLE ONLY public.credits
1175311780
ADD CONSTRAINT fk_rails_310fcb3585 FOREIGN KEY (credit_note_id) REFERENCES public.credit_notes(id);
1175411781

1175511782

11783+
--
11784+
-- Name: rate_phases fk_rails_32197619c6; Type: FK CONSTRAINT; Schema: public; Owner: -
11785+
--
11786+
11787+
ALTER TABLE ONLY public.rate_phases
11788+
ADD CONSTRAINT fk_rails_32197619c6 FOREIGN KEY (subscription_product_item_id) REFERENCES public.subscription_product_items(id);
11789+
11790+
1175611791
--
1175711792
-- Name: payment_requests fk_rails_32600e5a72; Type: FK CONSTRAINT; Schema: public; Owner: -
1175811793
--
@@ -12017,6 +12052,22 @@ ALTER TABLE ONLY public.billing_entities
1201712052
ADD CONSTRAINT fk_rails_4aa58496c3 FOREIGN KEY (applied_dunning_campaign_id) REFERENCES public.dunning_campaigns(id) ON DELETE SET NULL;
1201812053

1201912054

12055+
--
12056+
-- Name: product_item_filter_values fk_rails_4b395cde98; Type: FK CONSTRAINT; Schema: public; Owner: -
12057+
--
12058+
12059+
ALTER TABLE ONLY public.product_item_filter_values
12060+
ADD CONSTRAINT fk_rails_4b395cde98 FOREIGN KEY (billable_metric_filter_id) REFERENCES public.billable_metric_filters(id);
12061+
12062+
12063+
--
12064+
-- Name: fees fk_rails_4cadfc14f3; Type: FK CONSTRAINT; Schema: public; Owner: -
12065+
--
12066+
12067+
ALTER TABLE ONLY public.fees
12068+
ADD CONSTRAINT fk_rails_4cadfc14f3 FOREIGN KEY (rate_card_rate_id) REFERENCES public.rate_card_rates(id) NOT VALID;
12069+
12070+
1202012071
--
1202112072
-- Name: order_forms fk_rails_4ed54bfec0; Type: FK CONSTRAINT; Schema: public; Owner: -
1202212073
--
@@ -12737,6 +12788,14 @@ ALTER TABLE ONLY public.product_items
1273712788
ADD CONSTRAINT fk_rails_8c9cbcf514 FOREIGN KEY (charge_id) REFERENCES public.charges(id);
1273812789

1273912790

12791+
--
12792+
-- Name: rate_phases fk_rails_8d4c29e03f; Type: FK CONSTRAINT; Schema: public; Owner: -
12793+
--
12794+
12795+
ALTER TABLE ONLY public.rate_phases
12796+
ADD CONSTRAINT fk_rails_8d4c29e03f FOREIGN KEY (plan_product_item_id) REFERENCES public.plan_product_items(id);
12797+
12798+
1274012799
--
1274112800
-- Name: usage_thresholds fk_rails_8df9bf2b6c; Type: FK CONSTRAINT; Schema: public; Owner: -
1274212801
--
@@ -12945,14 +13004,6 @@ ALTER TABLE ONLY public.product_item_filter_values
1294513004
ADD CONSTRAINT fk_rails_a32a8f7fc6 FOREIGN KEY (organization_id) REFERENCES public.organizations(id);
1294613005

1294713006

12948-
--
12949-
-- Name: rate_phases fk_rails_a61520ac30; Type: FK CONSTRAINT; Schema: public; Owner: -
12950-
--
12951-
12952-
ALTER TABLE ONLY public.rate_phases
12953-
ADD CONSTRAINT fk_rails_a61520ac30 FOREIGN KEY (plan_product_item_id) REFERENCES public.plan_product_items(id);
12954-
12955-
1295613007
--
1295713008
-- Name: charges fk_rails_a710519346; Type: FK CONSTRAINT; Schema: public; Owner: -
1295813009
--
@@ -13146,18 +13197,21 @@ ALTER TABLE ONLY public.plans_taxes
1314613197

1314713198

1314813199
--
13149-
-- Name: wallet_transactions fk_rails_bcb5aecd6c; Type: FK CONSTRAINT; Schema: public; Owner: -
13150-
--
13151-
13152-
ALTER TABLE ONLY public.wallet_transactions
13153-
ADD CONSTRAINT fk_rails_bcb5aecd6c FOREIGN KEY (billing_entity_id) REFERENCES public.billing_entities(id) NOT VALID;
1315413200
-- Name: product_item_filter_values fk_rails_bbe7738882; Type: FK CONSTRAINT; Schema: public; Owner: -
1315513201
--
1315613202

1315713203
ALTER TABLE ONLY public.product_item_filter_values
1315813204
ADD CONSTRAINT fk_rails_bbe7738882 FOREIGN KEY (product_item_filter_id) REFERENCES public.product_item_filters(id);
1315913205

1316013206

13207+
--
13208+
-- Name: wallet_transactions fk_rails_bcb5aecd6c; Type: FK CONSTRAINT; Schema: public; Owner: -
13209+
--
13210+
13211+
ALTER TABLE ONLY public.wallet_transactions
13212+
ADD CONSTRAINT fk_rails_bcb5aecd6c FOREIGN KEY (billing_entity_id) REFERENCES public.billing_entities(id) NOT VALID;
13213+
13214+
1316113215
--
1316213216
-- Name: usage_monitoring_subscription_activities fk_rails_bda048a8d9; Type: FK CONSTRAINT; Schema: public; Owner: -
1316313217
--
@@ -13398,14 +13452,6 @@ ALTER TABLE ONLY public.subscription_fixed_charge_units_overrides
1339813452
ADD CONSTRAINT fk_rails_d72a9877be FOREIGN KEY (subscription_id) REFERENCES public.subscriptions(id);
1339913453

1340013454

13401-
--
13402-
-- Name: rate_phases fk_rails_d844d6b2b1; Type: FK CONSTRAINT; Schema: public; Owner: -
13403-
--
13404-
13405-
ALTER TABLE ONLY public.rate_phases
13406-
ADD CONSTRAINT fk_rails_d844d6b2b1 FOREIGN KEY (organization_id) REFERENCES public.organizations(id);
13407-
13408-
1340913455
--
1341013456
-- Name: wallets fk_rails_d9342a8ca7; Type: FK CONSTRAINT; Schema: public; Owner: -
1341113457
--
@@ -13670,14 +13716,6 @@ ALTER TABLE ONLY public.enriched_store_subscription_migrations
1367013716
ADD CONSTRAINT fk_rails_f232478e56 FOREIGN KEY (organization_id) REFERENCES public.organizations(id);
1367113717

1367213718

13673-
--
13674-
-- Name: rate_phases fk_rails_f2ab981080; Type: FK CONSTRAINT; Schema: public; Owner: -
13675-
--
13676-
13677-
ALTER TABLE ONLY public.rate_phases
13678-
ADD CONSTRAINT fk_rails_f2ab981080 FOREIGN KEY (subscription_product_item_id) REFERENCES public.subscription_product_items(id);
13679-
13680-
1368113719
--
1368213720
-- Name: wallet_transactions fk_rails_f32b205d44; Type: FK CONSTRAINT; Schema: public; Owner: -
1368313721
--
@@ -13834,6 +13872,7 @@ INSERT INTO "schema_migrations" (version) VALUES
1383413872
('20260608111837'),
1383513873
('20260608074112'),
1383613874
('20260605170919'),
13875+
('20260604182138'),
1383713876
('20260604181958'),
1383813877
('20260604181826'),
1383913878
('20260604181654'),
@@ -13916,6 +13955,7 @@ INSERT INTO "schema_migrations" (version) VALUES
1391613955
('20260219083335'),
1391713956
('20260218102426'),
1391813957
('20260216115709'),
13958+
('20260211194749'),
1391913959
('20260209103920'),
1392013960
('20260209103526'),
1392113961
('20260204153734'),
@@ -14862,3 +14902,4 @@ INSERT INTO "schema_migrations" (version) VALUES
1486214902
('20220530091046'),
1486314903
('20220526101535'),
1486414904
('20220525122759');
14905+

schema.graphql

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

schema.json

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

spec/models/fee_spec.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
it { is_expected.to belong_to(:add_on).optional }
99
it { is_expected.to belong_to(:charge).optional }
1010
it { is_expected.to belong_to(:fixed_charge).optional }
11+
it { is_expected.to belong_to(:rate_card_rate).optional }
1112
it { is_expected.to have_many(:presentation_breakdowns) }
1213
it { is_expected.to have_one(:fixed_charge_add_on).through(:fixed_charge) }
1314
it { is_expected.to have_one(:adjusted_fee).dependent(:nullify) }

0 commit comments

Comments
 (0)