<%= @organization.name %>

<%= status_badge(@organization.status) %> <% stage = @organization.primary_pipeline_stage(current_project) %> <% if stage %><%= stage_badge(stage) %><% end %> Owner: <%= @organization.assigned_user&.full_name || "—" %> Fonte: <%= @organization.lead_source_label %> Progetti: <%= @organization.projects.ordered.map(&:name).join(", ").presence || "—" %>
<%= link_to "Modifica", edit_organization_path(@organization), class: btn_secondary %> <%= button_to "Elimina", @organization, method: :delete, form: { data: { turbo_confirm: "Eliminare?" } }, class: btn_danger %>
<% [ ["Aggiungi nota", "note", "Nota"], ["Registra email", "email_sent", "Email inviata"], ["Registra telefonata", "call", "Telefonata"], ["Registra demo", "demo", "Demo"], ["Segna primo utilizzo", "first_use", "Primo utilizzo"], ["Crea proposta", "proposal_sent", "Proposta inviata"] ].each do |label, type, subject| %> <%= form_with url: organization_activities_path(@organization), class: "inline" do %> <%= hidden_field_tag "activity[activity_type]", type %> <%= hidden_field_tag "activity[subject]", subject %> <%= hidden_field_tag "activity[happened_at]", Time.current %> <%= submit_tag label, class: chip_action_class %> <% end %> <% end %> <%= link_to "Crea follow-up", new_task_path(organization_id: @organization.id, task_type: "follow_up"), class: chip_action_class %> <% opp = @opportunities.open_stage.first || @opportunities.first %> <% if opp %> <%= button_to "Segna come vinto", update_stage_opportunity_path(opp), method: :patch, params: { pipeline_stage: "won" }, class: "rounded-md bg-emerald-600 px-3 py-2 text-xs font-medium text-white" %> <%= form_with url: update_stage_opportunity_path(opp), method: :patch, class: "inline-flex items-center gap-1" do %> <%= hidden_field_tag :pipeline_stage, "lost" %> <%= select_tag :lost_reason, options_for_catalog(Catalog::LOST_REASONS), class: "rounded-md border border-zinc-300 bg-white px-2 py-1 text-xs dark:border-zinc-600 dark:bg-zinc-950 dark:text-zinc-100" %> <%= submit_tag "Segna come perso", class: "rounded-md bg-rose-600 px-3 py-2 text-xs font-medium text-white" %> <% end %> <% end %>
<% if @next_task %>
Prossima azione
<%= @next_task.title %>
<%= format_dt(@next_task.due_at) %> · <%= @next_task.task_type_label %> · <%= priority_badge(@next_task.priority) %>
<%= button_to "Completa", complete_task_path(@next_task), method: :patch, class: "rounded-lg bg-emerald-600 px-4 py-2 text-sm font-medium text-white" %> <%= link_to "Modifica", edit_task_path(@next_task), class: "rounded-lg border border-amber-400 bg-white px-4 py-2 text-sm font-medium text-amber-900 hover:bg-amber-50 dark:bg-transparent dark:text-amber-100 dark:hover:bg-amber-900/30" %>
<% end %>

Informazioni

Tipologia
<%= @organization.organization_type_label %>
Sport
<%= [@organization.sport.presence, @organization.team_gender_label.presence].compact.join(" · ").presence || "—" %>
Località
<%= [@organization.city, @organization.province, @organization.region, @organization.country].compact_blank.join(", ").presence || "—" %>
Lista campagna
<%= @organization.list_position || "—" %>
Email
<%= mailto_link(@organization.email, class: "text-sky-700 hover:underline dark:text-sky-400") %> <% if @organization.email_invalid? %> Non valida <% end %> <% if @organization.bounced_email.present? && @organization.bounced_email != @organization.email %>
Bounce: <%= @organization.bounced_email %>
<% end %>
Telefono
<%= tel_link(@organization.phone, class: "text-sky-700 hover:underline dark:text-sky-400") %>
Sito / profilo
<%= external_link(@organization.website, class: "text-sky-700 hover:underline dark:text-sky-400") %>
Fonte ricerca
<%= external_link(@organization.source_url, class: "text-sky-700 hover:underline dark:text-sky-400") %>
Streaming rilevato
<%= streaming_badge(@organization.streaming_status) || "—" %>
Data verifica
<%= format_date(@organization.verified_at) %>
Evidenza / fit commerciale
<%= @organization.commercial_fit.presence || "—" %>
Note follow-up
<%= @organization.notes.presence || "—" %>

Contatti

<%= link_to "+ Contatto", new_contact_path(organization_id: @organization.id), class: "text-sm font-medium text-emerald-700 hover:underline dark:text-emerald-400" %>
<% @contacts.each do |contact| %>
<%= contact.full_name %> <% if contact.primary_contact? %>Principale<% end %>
<%= [contact.role, contact.email, contact.phone.presence || contact.mobile].compact_blank.join(" · ") %> <% if contact.email_invalid? %> Email non valida <% end %>
<%= link_to "Modifica", edit_contact_path(contact), class: "text-sm text-zinc-600 hover:underline dark:text-zinc-300" %>
<% end %> <% if @contacts.blank? %>

Nessun contatto.

<% end %>

Opportunità

<%= link_to "+ Opportunità", new_opportunity_path(organization_id: @organization.id), class: "text-sm font-medium text-emerald-700 hover:underline dark:text-emerald-400" %>
<% @opportunities.each do |opp| %>
<%= opp.name %>
<%= stage_badge(opp.pipeline_stage) %>
<%= format_money(opp.estimated_value) %> · <%= opp.product.presence || "—" %> · <%= opp.probability || 0 %>% · <%= opp.assigned_user&.full_name || "—" %>
Test <%= opp.ab_variant.presence || "—" %> · <%= opp.send_status_label.presence || "Invio n/d" %> · Demo/Trial <%= yes_no(opp.demo_trial) %> · Conversione <%= yes_no(opp.converted) %> <% if opp.sent_on %> · Inviato il <%= format_date(opp.sent_on) %><% end %> <% if opp.outcome.present? %> · Esito: <%= opp.outcome %><% end %>
<%= form_with url: update_stage_opportunity_path(opp), method: :patch, class: "mt-2 flex flex-wrap items-center gap-2" do %> <%= select_tag :pipeline_stage, options_for_catalog(Catalog::PIPELINE_STAGES, opp.pipeline_stage), class: "#{input_class} text-xs py-1" %> <%= select_tag :lost_reason, options_for_catalog(Catalog::LOST_REASONS, opp.lost_reason), include_blank: "Motivo perdita", class: "#{input_class} text-xs py-1" %> <%= submit_tag "Aggiorna stage", class: "#{btn_primary} px-2 py-1 text-xs" %> <%= link_to "Modifica", edit_opportunity_path(opp), class: "text-xs text-zinc-600 hover:underline dark:text-zinc-300" %> <% end %>
<% end %> <% if @opportunities.blank? %>

Nessuna opportunità.

<% end %>

Task

<%= link_to "+ Task", new_task_path(organization_id: @organization.id), class: "text-sm font-medium text-emerald-700 hover:underline dark:text-emerald-400" %>

Pendenti

<%= render "shared/task_list", tasks: @pending_tasks %>

Completati

    <% @completed_tasks.each do |task| %>
  • ✓ <%= task.title %> · <%= format_dt(task.completed_at) %> <%= link_to "Modifica", edit_task_path(task), class: "shrink-0 text-xs text-zinc-500 hover:underline dark:text-zinc-400" %>
  • <% end %> <% if @completed_tasks.blank? %>
  • Nessuno
  • <% end %>

Aggiungi nota

<%= form_with url: organization_activities_path(@organization), class: "mt-3 space-y-3" do %> <%= hidden_field_tag "activity[activity_type]", "note" %> <%= text_field_tag "activity[subject]", nil, placeholder: "Oggetto", required: true, class: input_class %> <%= text_area_tag "activity[description]", nil, rows: 3, placeholder: "Descrizione", class: input_class %> <%= datetime_local_field_tag "activity[happened_at]", Time.current.strftime("%Y-%m-%dT%H:%M"), class: input_class %> <%= submit_tag "Salva nota", class: btn_primary %> <% end %>

Timeline

<% @activities.each do |activity| %>
<%= format_dt(activity.happened_at) %>
<%= activity.activity_type_label %>: <%= activity.subject %>
<% if activity.description.present? %>
<%= activity.description %>
<% end %>
<%= activity.user&.full_name || "Utente rimosso" %><% if activity.contact %> · <%= activity.contact.full_name %><% end %>
<%= link_to "Modifica", edit_organization_activity_path(@organization, activity), class: "font-medium text-zinc-600 hover:underline dark:text-zinc-300" %> <%= button_to "Elimina", organization_activity_path(@organization, activity), method: :delete, form: { data: { turbo_confirm: "Eliminare questa voce dalla timeline?" }, class: "inline" }, class: "font-medium text-rose-600 hover:underline dark:text-rose-400" %>
<% end %> <% if @activities.blank? %>

Nessuna attività.

<% end %>