-- ============================================================
-- Gustito Express — El ticket ahora incluye la nota de personalizacion por producto
-- (ej: "sin vegetales, sin mostaza"), para que el comensal la vea impresa.
-- Mismo tipo de retorno, solo cambia el contenido del jsonb de items.
-- ============================================================
create or replace function public.pedido_ticket(p_pedido_id uuid)
returns table (
  codigo             text,
  estado             text,
  tipo_entrega       text,
  mesa               text,
  cliente_nombre     text,
  cliente_telefono   text,
  cliente_cedula     text,
  total_usd          numeric,
  tasa_bs            numeric,
  pago_estado        text,
  metodo_pago        text,
  restaurante_nombre text,
  items              jsonb
)
language sql stable security definer set search_path = public
as $$
  select p.codigo, p.estado, p.tipo_entrega, p.mesa,
         p.cliente_nombre, p.cliente_telefono, p.cliente_cedula,
         p.total_usd, p.tasa_bs,
         pg.estado, p.metodo_pago,
         r.nombre,
         coalesce(
           (select jsonb_agg(jsonb_build_object(
                     'nombre', it.nombre, 'cantidad', it.cantidad,
                     'precio_usd', it.precio_usd, 'nota', it.nota))
              from public.pedido_items it where it.pedido_id = p.id),
           '[]'::jsonb)
    from public.pedidos p
    join public.restaurantes r on r.id = p.restaurante_id
    left join public.pagos pg on pg.pedido_id = p.id
   where p.id = p_pedido_id
   limit 1;
$$;
grant execute on function public.pedido_ticket(uuid) to anon, authenticated;
