defmodule BerrypodWeb.Admin.OrderShow do use BerrypodWeb, :live_view alias Berrypod.Orders alias Berrypod.Cart @impl true def mount(%{"id" => id}, _session, socket) do case Orders.get_order(id) do nil -> socket = socket |> put_flash(:error, "Order not found") |> push_navigate(to: ~p"/admin/orders") {:ok, socket} order -> socket = socket |> assign(:page_title, order.order_number) |> assign(:order, order) {:ok, socket} end end @impl true def render(assigns) do ~H""" <.header> <.link navigate={~p"/admin/orders"} class="text-sm font-normal text-base-content/60 hover:underline" > ← Orders
{@order.stripe_payment_intent_id}
<:item title="Currency">{String.upcase(@order.currency)}
No shipping address provided
<% end %>{@order.provider_order_id}
<:item :if={@order.provider_status} title="Provider status">
{@order.provider_status}
<:item :if={@order.submitted_at} title="Submitted">
{format_date(@order.submitted_at)}
<:item :if={@order.tracking_number} title="Tracking">
<%= if @order.tracking_url do %>
{@order.tracking_number}
<% else %>
{@order.tracking_number}
<% end %>
<:item :if={@order.shipped_at} title="Shipped">
{format_date(@order.shipped_at)}
<:item :if={@order.delivered_at} title="Delivered">
{format_date(@order.delivered_at)}
<:item :if={@order.fulfilment_error} title="Error">
{@order.fulfilment_error}
| Product | Variant | Qty | Unit price | Total |
|---|---|---|---|---|
| {item.product_name} | {item.variant_title} | {item.quantity} | {Cart.format_price(item.unit_price)} | {Cart.format_price(item.unit_price * item.quantity)} |
| Subtotal | {Cart.format_price(@order.subtotal)} | |||
| Total | {Cart.format_price(@order.total)} | |||