PhoenixKit.Migrations.Postgres.V162 (phoenix_kit v1.7.233)

Copy Markdown View Source

V162: First-class payment-option linkage on billing orders.

An order records HOW it is to be paid via payment_method, a small closed vocabulary (bank, stripe, paypal, …). What the customer actually chose at checkout is a phoenix_kit_payment_options row — an operator-configured method with its own name, instructions, provider and billing-profile requirement. The two are not the same thing: several options can share one payment_method ("Bank transfer (EU)" and "Bank transfer (UK)" are both bank), and an option can be renamed or deactivated after the order is placed.

Without a link, the choice was simply lost at conversion: nothing on the order said which option the customer picked, so an operator processing a bank transfer could not tell which instructions the customer had been shown, and payment reconciliation had to guess.

ON DELETE SET NULL rather than restrict: deactivating and deleting a payment option is an ordinary operator action, and it must not be blocked by — or destroy — historical orders. The order keeps payment_method and its metadata snapshot regardless, so a deleted option degrades to "we know it was a bank transfer" rather than to nothing.

Summary

Functions

down(opts)

up(opts)