feat(payouts): implement promoter earnings viewing, request flow, and admin Stripe processing with webhooks

Add model methods for accurate net calculations (€0.50 + 1.5% fees), eligibility, refund handling
Update promoter/payouts controller for index (pending events), create (eligibility checks)
Integrate admin processing via Stripe::Transfer, webhook for status sync
Enhance views: index pending cards, events/show preview/form
Add comprehensive tests (models, controllers, service, integration); run migrations
This commit is contained in:
kbe
2025-09-17 02:07:52 +02:00
parent 47f4f50e5b
commit 3c1e17c2af
31 changed files with 1096 additions and 148 deletions

View File

@@ -22,6 +22,8 @@ class Ticket < ApplicationRecord
before_validation :set_price_from_ticket_type, on: :create
before_validation :generate_qr_code, on: :create
after_update :recalculate_earning_if_refunded, if: :saved_change_to_status?
# Generate PDF ticket
def to_pdf
TicketPdfGenerator.new(self).generate
@@ -73,4 +75,12 @@ class Ticket < ApplicationRecord
def draft?
status == "draft"
end
private
def recalculate_earning_if_refunded
if status == "refunded"
order.earning&.recalculate!
end
end
end