Record product→merchant-profile write path; refresh Current state
Document the now-functional product→profile write path in the payments guide (set_product_merchant_profile, post-write pattern, picker gating, double-Option clear). Mark the multi-profile GAP closed, drop the done work-queue item, and note the discovered set_product_entitlements_catalog rows_affected gap.
This commit is contained in:
@@ -39,6 +39,14 @@ merchant_profiles (1) ──< (N) payment_providers
|
||||
- **merchant_profile_rail_preferences** — tie-breaker `(profile, rail) → provider`
|
||||
when a profile has two providers serving the same rail.
|
||||
|
||||
Products attach to a profile via `repo::set_product_merchant_profile` (validates
|
||||
the profile exists → 404, else UPDATE), called **post-write** from the create /
|
||||
update handlers — same pattern as the entitlements catalog. The admin product form
|
||||
renders the profile `<select>` only when >1 profile exists; a NULL
|
||||
`merchant_profile_id` resolves to the default profile (`merchant_profiles::for_product`,
|
||||
NOT the bare repo query, applies that fallback). On `UpdateProductReq` the field is a
|
||||
double-Option: `Some(None)` clears back to default-resolution.
|
||||
|
||||
**Rails** are buyer-facing methods (`lightning`, `onchain`, `card`), declared per
|
||||
provider kind via `rails_for_kind` (BTCPay → lightning+onchain; Zaprite →
|
||||
card+lightning+onchain), NOT stored per row.
|
||||
|
||||
Reference in New Issue
Block a user