mirror of
https://github.com/rickbarrette/redmine_qbo_calendar.git
synced 2026-10-04 12:40:43 -04:00
121 lines
4.6 KiB
ERB
121 lines
4.6 KiB
ERB
<div class="contextual">
|
|
<%= link_to issues_calendar_path do %>
|
|
<i class="fa-regular fa-calendar-days"></i> <%= l(:button_calendar) %>
|
|
<% end %>
|
|
|
|
<%= link_to customer_appointments_path do %>
|
|
<i class="fa-solid fa-list"></i> <%= l(:button_appointments) %>
|
|
<% end %>
|
|
|
|
<%= link_to edit_customer_appointment_path(@appointment) do %>
|
|
<i class="fa-solid fa-pen-to-square"></i> <%= l(:button_edit) %>
|
|
<% end %>
|
|
|
|
<%= link_to customer_appointment_path(@appointment), method: :delete, data: { confirm: l(:text_are_you_sure) } do %>
|
|
<i class="fa-solid fa-trash"></i> <%= l(:button_delete) %>
|
|
<% end %>
|
|
</div>
|
|
|
|
<h2>
|
|
<% if @appointment.date %>
|
|
<div class="calendar-badge">
|
|
<div class="month"><%= @appointment.date.strftime('%b').upcase %></div>
|
|
<div class="day"><%= @appointment.date.day %></div>
|
|
</div>
|
|
<% end %>
|
|
|
|
<span class="appointment-title"><%= @appointment.subject %></span>
|
|
|
|
<span class="appointment-dates">
|
|
<% if @appointment.date %>
|
|
(<%= format_date(@appointment.date) %> <%= l(:label_at, default: 'at') %> <%= @appointment.date.strftime('%I:%M %p') %>
|
|
<% if @appointment.respond_to?(:due_date) && @appointment.due_date.present? && @appointment.duration.to_i > 1 %>
|
|
- <%= format_date(@appointment.due_date) %>
|
|
<% end %>)
|
|
<% end %>
|
|
</span>
|
|
</h2>
|
|
|
|
<%# Quick Status Action Buttons %>
|
|
<%
|
|
statuses = CustomerAppointment::STATUSES
|
|
current_status = @appointment.status.to_s.parameterize.underscore
|
|
%>
|
|
<div class="appointment-quick-actions">
|
|
<span class="quick-action-label"><%= l(:label_change_status, default: 'Change Status:') %></span>
|
|
<% statuses.reject { |s| s == current_status }.each do |status_key| %>
|
|
<%= link_to status_key.humanize,
|
|
customer_appointment_path(@appointment, customer_appointment: { status: status_key }),
|
|
method: :patch,
|
|
class: "quick-status-btn status-#{status_key.parameterize}" %>
|
|
<% end %>
|
|
</div>
|
|
|
|
<div class="issue details">
|
|
<div class="attributes">
|
|
<div class="splitcontent">
|
|
<div class="splitcontentleft">
|
|
<div class="attribute">
|
|
<div class="label"><%= l(:label_customer, default: 'Customer') %>:</div>
|
|
<div class="value"><%= link_to_if @appointment.customer, @appointment.customer&.name, @appointment.customer %></div>
|
|
</div>
|
|
<div class="attribute">
|
|
<div class="label"><%= l(:label_vehicle, default: 'Vehicle') %>:</div>
|
|
<div class="value"><%= link_to_if @appointment.vehicle, @appointment.vehicle&.name, @appointment.vehicle %></div>
|
|
</div>
|
|
<div class="attribute">
|
|
<div class="label"><%= l(:label_primary_phone, default: 'Primary phone') %>:</div>
|
|
<div class="value"><%= @appointment.customer&.primary_phone %></div>
|
|
</div>
|
|
<div class="attribute">
|
|
<div class="label"><%= l(:label_estimate) %>:</div>
|
|
<% if @appointment.estimate %>
|
|
<div class="value"><%= link_to @appointment.estimate, @appointment.estimate, target: "_blank" %></div>
|
|
<% end %>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="splitcontentright">
|
|
<div class="attribute">
|
|
<div class="label"><%= l(:field_status) %>:</div>
|
|
<div class="value">
|
|
<span class="status-badge status-<%= @appointment.status.to_s.parameterize %>">
|
|
<%= @appointment.status.to_s.humanize %>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
<div class="attribute">
|
|
<div class="label"><%= l(:label_time, default: 'Time') %>:</div>
|
|
<div class="value">
|
|
<%= @appointment.date ? @appointment.date.strftime('%I:%M %p') : '-' %>
|
|
</div>
|
|
</div>
|
|
<div class="attribute">
|
|
<div class="label"><%= l(:field_user) %>:</div>
|
|
<div class="value"><%= link_to_user(@appointment.user) %></div>
|
|
</div>
|
|
<div class="attribute">
|
|
<div class="label"><%= l(:label_duration, default: 'Duration') %>:</div>
|
|
<div class="value"><%= @appointment.duration %> <%= l(:label_days) %></div>
|
|
</div>
|
|
<div class="attribute">
|
|
<div class="label"><%= l(:field_estimated_hours) %>:</div>
|
|
<div class="value"><%= @appointment.estimated_hours %> <%= l(:label_hours) %></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<% if @appointment.description.present? %>
|
|
<hr />
|
|
<div class="description">
|
|
<p><strong><%= l(:field_description) %></strong></p>
|
|
<div class="wiki">
|
|
<%= textilizable(@appointment, :description) %>
|
|
</div>
|
|
</div>
|
|
<% end %>
|
|
</div>
|
|
|
|
<%= call_hook :show_customer_appointment, { appointment: @appointment } %>
|