Files
MatchLiveTv/backend/app/services/billing/stripe/sync_payments.rb
Emiliano Frascaro a5e781729c Billing: fatture manuali, profilo obbligatorio e piani Stripe mensile/annuale.
Rimuove link al portale Stripe in area cliente, aggiunge flusso admin per PDF
fattura e email, blocca checkout senza dati di fatturazione, allinea prezzi
a €4,90/€39,90 e €9,90/€69,90, locale italiano e documentazione deploy.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-02 17:10:12 +02:00

41 lines
1.0 KiB
Ruby

module Billing
module Stripe
class SyncPayments
def self.call(club:)
new(club: club).call
end
def initialize(club:)
@club = club
end
def call
customer_id = @club.subscription&.stripe_customer_id
return 0 if customer_id.blank?
count = 0
starting_after = nil
loop do
# Lista senza expand profondo (limite Stripe 4 livelli); RecordPayment arricchisce ogni fattura.
list = ::Stripe::Invoice.list(customer: customer_id, limit: 25, starting_after: starting_after)
list.data.each do |invoice|
next unless invoice.status == "paid"
RecordPayment.call(stripe_invoice: invoice, club: @club)
count += 1
end
break unless list.has_more
starting_after = list.data.last.id
end
# Allinea anche piano/intervallo da abbonamento Stripe attivo (non solo lo storico pagamenti).
CheckoutSync.call(club: @club)
count
end
end
end
end