Completa i18n IT/EN/FR/DE/ES su sito pubblico, area autenticata e admin.
Tutte le view marketing, legali, viewer, dashboard e admin usano t(); mailer utente-facing e flash localizzati; admin con LocaleResolver e selettore lingua. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1,14 +1,16 @@
|
||||
module ClubBillingProfile
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
BILLING_ENTITY_TYPES = {
|
||||
"company" => "Società / ASD con P.IVA",
|
||||
"individual" => "Persona fisica",
|
||||
"nonprofit" => "Associazione senza scopo di lucro"
|
||||
}.freeze
|
||||
BILLING_ENTITY_TYPE_KEYS = %w[company individual nonprofit].freeze
|
||||
|
||||
class_methods do
|
||||
def billing_entity_types
|
||||
ClubBillingProfile::BILLING_ENTITY_TYPE_KEYS.index_with { |key| I18n.t("billing.entity_types.#{key}") }
|
||||
end
|
||||
end
|
||||
|
||||
included do
|
||||
validates :billing_entity_type, inclusion: { in: BILLING_ENTITY_TYPES.keys }, allow_nil: true
|
||||
validates :billing_entity_type, inclusion: { in: BILLING_ENTITY_TYPE_KEYS }, allow_nil: true
|
||||
validates :billing_email, format: { with: URI::MailTo::EMAIL_REGEXP }, allow_blank: true
|
||||
validates :billing_recipient_code, length: { is: 7 }, allow_blank: true
|
||||
validates :billing_province, length: { is: 2 }, allow_blank: true
|
||||
@@ -23,28 +25,28 @@ module ClubBillingProfile
|
||||
# Campi minimi per intestazione fattura e invio (email PDF + SDI/PEC).
|
||||
def billing_profile_errors
|
||||
errors = []
|
||||
errors << "Tipo intestatario" if billing_entity_type.blank?
|
||||
errors << "Ragione sociale o nome intestatario" if billing_legal_name.blank?
|
||||
errors << "Email di fatturazione" if billing_email.blank?
|
||||
errors << "Indirizzo" if billing_address_line.blank?
|
||||
errors << "Città" if billing_city.blank?
|
||||
errors << "Provincia (sigla 2 lettere)" if billing_province.blank? || billing_province.to_s.length != 2
|
||||
errors << "CAP" if billing_postal_code.blank?
|
||||
errors << "Paese (ISO)" if billing_country.blank? || billing_country.to_s.length != 2
|
||||
errors << I18n.t("billing.profile_errors.entity_type") if billing_entity_type.blank?
|
||||
errors << I18n.t("billing.profile_errors.legal_name") if billing_legal_name.blank?
|
||||
errors << I18n.t("billing.profile_errors.email") if billing_email.blank?
|
||||
errors << I18n.t("billing.profile_errors.address") if billing_address_line.blank?
|
||||
errors << I18n.t("billing.profile_errors.city") if billing_city.blank?
|
||||
errors << I18n.t("billing.profile_errors.province") if billing_province.blank? || billing_province.to_s.length != 2
|
||||
errors << I18n.t("billing.profile_errors.postal_code") if billing_postal_code.blank?
|
||||
errors << I18n.t("billing.profile_errors.country") if billing_country.blank? || billing_country.to_s.length != 2
|
||||
errors.concat(billing_tax_id_errors)
|
||||
errors << "Codice destinatario SDI (7 caratteri) o PEC" if billing_recipient_code.blank? && billing_pec.blank?
|
||||
errors << "Codice destinatario SDI (7 caratteri)" if billing_recipient_code.present? && billing_recipient_code.length != 7
|
||||
errors << I18n.t("billing.profile_errors.sdi_or_pec") if billing_recipient_code.blank? && billing_pec.blank?
|
||||
errors << I18n.t("billing.profile_errors.sdi_invalid") if billing_recipient_code.present? && billing_recipient_code.length != 7
|
||||
errors
|
||||
end
|
||||
|
||||
def billing_tax_id_errors
|
||||
case billing_entity_type
|
||||
when "company"
|
||||
billing_vat_number.blank? ? ["Partita IVA"] : []
|
||||
billing_vat_number.blank? ? [I18n.t("billing.profile_errors.vat_number")] : []
|
||||
when "individual"
|
||||
billing_fiscal_code.blank? ? ["Codice Fiscale"] : []
|
||||
billing_fiscal_code.blank? ? [I18n.t("billing.profile_errors.fiscal_code")] : []
|
||||
else
|
||||
billing_vat_number.blank? && billing_fiscal_code.blank? ? ["P.IVA o Codice Fiscale"] : []
|
||||
billing_vat_number.blank? && billing_fiscal_code.blank? ? [I18n.t("billing.profile_errors.vat_or_fiscal")] : []
|
||||
end
|
||||
end
|
||||
|
||||
@@ -56,7 +58,7 @@ module ClubBillingProfile
|
||||
# Righe per intestazione fattura in admin (etichetta, valore).
|
||||
def billing_profile_invoice_lines
|
||||
lines = []
|
||||
lines << ["Tipo", BILLING_ENTITY_TYPES[billing_entity_type]] if billing_entity_type.present?
|
||||
lines << ["Tipo", self.class.billing_entity_types[billing_entity_type]] if billing_entity_type.present?
|
||||
lines << ["Intestatario", billing_legal_name]
|
||||
lines << ["P.IVA", billing_vat_number] if billing_vat_number.present?
|
||||
lines << ["Codice fiscale", billing_fiscal_code] if billing_fiscal_code.present?
|
||||
|
||||
Reference in New Issue
Block a user