Fix prezzi pubblici: Premium Light €5/€40, Full €20/€200.

Ripristina le etichette in PriceCatalog usate da prezzi, abbonamento e checkout.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-02 17:17:32 +02:00
parent a5e781729c
commit 62d86d16ec
5 changed files with 14 additions and 12 deletions

View File

@@ -5,8 +5,8 @@ module Billing
DEFAULT_INTERVAL = "yearly" DEFAULT_INTERVAL = "yearly"
PRICING = { PRICING = {
"premium_light" => { "yearly" => "39,90/anno", "monthly" => "4,90/mese" }, "premium_light" => { "yearly" => "40/anno", "monthly" => "5/mese" },
"premium_full" => { "yearly" => "69,90/anno", "monthly" => "9,90/mese" } "premium_full" => { "yearly" => "200/anno", "monthly" => "20/mese" }
}.freeze }.freeze
class << self class << self

View File

@@ -12,11 +12,11 @@
<% if plan.slug == "free" %> <% if plan.slug == "free" %>
<div class="plan-price">€0</div> <div class="plan-price">€0</div>
<% elsif plan.slug == "premium_light" %> <% elsif plan.slug == "premium_light" %>
<div class="plan-price" style="color:#e53935">€40/anno</div> <div class="plan-price" style="color:#e53935"><%= Billing::Stripe::PriceCatalog.label(plan_slug: plan.slug, interval: "yearly") %></div>
<p style="color:#888;font-size:0.85rem">oppure €5/mese</p> <p style="color:#888;font-size:0.85rem">oppure <%= Billing::Stripe::PriceCatalog.label(plan_slug: plan.slug, interval: "monthly") %></p>
<% else %> <% else %>
<div class="plan-price">€200/anno</div> <div class="plan-price"><%= Billing::Stripe::PriceCatalog.label(plan_slug: plan.slug, interval: "yearly") %></div>
<p style="color:#888;font-size:0.85rem">oppure €20/mese</p> <p style="color:#888;font-size:0.85rem">oppure <%= Billing::Stripe::PriceCatalog.label(plan_slug: plan.slug, interval: "monthly") %></p>
<% end %> <% end %>
<ul> <ul>
<li>Staff trasmissione: <%= plan.max_staff_transmission || "illimitato" %> / anno</li> <li>Staff trasmissione: <%= plan.max_staff_transmission || "illimitato" %> / anno</li>

View File

@@ -32,7 +32,7 @@ RSpec.describe Public::BillingHelper, type: :helper do
current_interval: "yearly" current_interval: "yearly"
) )
expect(action[:kind]).to eq(:current) expect(action[:kind]).to eq(:current)
expect(action[:label]).to include("39,90/anno") expect(action[:label]).to include("40/anno")
end end
it "propone cambio intervallo sullo stesso piano" do it "propone cambio intervallo sullo stesso piano" do

View File

@@ -72,7 +72,7 @@ RSpec.describe "Public club billing", type: :request do
get public_club_billing_path(club) get public_club_billing_path(club)
expect(response.body).to include("Completa dati di fatturazione") expect(response.body).to include("Completa dati di fatturazione")
expect(response.body).not_to include("Attiva Premium Light — €39,90/anno") expect(response.body).not_to include("Attiva Premium Light — €40/anno")
end end
it "dopo profilo completo reindirizza al checkout" do it "dopo profilo completo reindirizza al checkout" do
@@ -111,8 +111,8 @@ RSpec.describe "Public club billing", type: :request do
login! login!
get public_club_billing_path(club) get public_club_billing_path(club)
expect(response.body).to include("Attiva Premium Light — €39,90/anno") expect(response.body).to include("Attiva Premium Light — €40/anno")
expect(response.body).to include("Attiva Premium Light — €4,90/mese") expect(response.body).to include("Attiva Premium Light — €5/mese")
allow(Billing::Stripe::CheckoutSession).to receive(:new).and_return( allow(Billing::Stripe::CheckoutSession).to receive(:new).and_return(
instance_double(Billing::Stripe::CheckoutSession, url: "https://checkout.stripe.com/test") instance_double(Billing::Stripe::CheckoutSession, url: "https://checkout.stripe.com/test")

View File

@@ -7,8 +7,10 @@ Crea **2 prodotti** in Stripe, ciascuno con **2 prezzi ricorrenti**:
| Piano app | Prodotto Stripe (Dashboard) | Mensile | Annuale | Variabile `.env` | | Piano app | Prodotto Stripe (Dashboard) | Mensile | Annuale | Variabile `.env` |
|-----------|------------------------------|---------|---------|------------------| |-----------|------------------------------|---------|---------|------------------|
| Premium Light | **Match Live TV** | €4,90 | €39,90 | `STRIPE_PREMIUM_LIGHT_MONTHLY_PRICE_ID` / `..._YEARLY_...` | | Premium Light | **Match Live TV** | €5 | €40 | `STRIPE_PREMIUM_LIGHT_MONTHLY_PRICE_ID` / `..._YEARLY_...` |
| Premium Full | **Match Live TV PRO** | €9,90 | €69,90 | `STRIPE_PREMIUM_FULL_MONTHLY_PRICE_ID` / `..._YEARLY_...` | | Premium Full | **Match Live TV PRO** | €20 | €200 | `STRIPE_PREMIUM_FULL_MONTHLY_PRICE_ID` / `..._YEARLY_...` |
Gli importi in Stripe Dashboard devono coincidere con il sito (€5/€40 e €20/€200).
In Stripe apri ogni prezzo e copia l**ID prezzo** (`price_...`), non lID prodotto. In Stripe apri ogni prezzo e copia l**ID prezzo** (`price_...`), non lID prodotto.