// ============================================================ // BUSCA DO PEDIDO – CORRIGIDA (Claude) // ============================================================ async function verificarPedidoAtivo() { const container = document.getElementById('message-container'); const pedidoAtivoStr = localStorage.getItem('pedidoAtivo'); if (!pedidoAtivoStr) { mostrarEstadoVazio(container); return false; } try { const pedidoAtivo = JSON.parse(pedidoAtivoStr); let order = null; let metodo = ''; // 1. Tenta por id real if (pedidoAtivo.id) { order = await buscarPedidoPorId(pedidoAtivo.id); metodo = 'id'; } // 2. Se não encontrou, tenta por payment_id if (!order && pedidoAtivo.payment_id) { order = await buscarPedidoPorPaymentId(pedidoAtivo.payment_id); metodo = 'payment_id'; if (order) { // Atualiza localStorage com o id real localStorage.setItem('pedidoAtivo', JSON.stringify({ id: order.id, payment_id: order.payment_id, numero_pedido: order.numero_pedido, status: order.status, timestamp: Date.now(), })); } } // 3. Fallback: busca pelo guest_id (pedido mais recente) if (!order) { const guestId = getGuestId(); if (guestId) { order = await buscarUltimoPedidoPorGuestId(guestId); metodo = 'guest_id'; if (order) { localStorage.setItem('pedidoAtivo', JSON.stringify({ id: order.id, payment_id: order.payment_id, numero_pedido: order.numero_pedido, status: order.status, timestamp: Date.now(), })); } } } // 4. Se ainda não encontrou, mostra vazio if (!order) { localStorage.removeItem('pedidoAtivo'); mostrarEstadoVazio(container); return false; } // Validações if (order.status === 'canceled') { localStorage.removeItem('pedidoAtivo'); mostrarCancelado(container); return false; } if (isOrderExpired(order)) { localStorage.removeItem('pedidoAtivo'); mostrarExpirado(container); return false; } // Exibe card do pedido exibirCardPedido(container, order); return true; } catch (e) { console.error('[MeusPedidos] Erro:', e); mostrarErro(container); return false; } } // ============================================================ // FUNÇÕES AUXILIARES DE EXIBIÇÃO // ============================================================ function mostrarEstadoVazio(container) { container.innerHTML = `
info

Você não possui um pedido ativo no momento.

Que tal explorar nosso cardápio?

Ver Cardápio `; } function exibirCardPedido(container, order) { const statusInfo = getStatusInfo(order.status); const totalFormatado = (order.total_cents / 100).toFixed(2).replace('.', ','); const dataPedido = new Date(order.created_at).toLocaleString('pt-BR'); const phone = order.customer_phone ? order.customer_phone.replace(/\D/g, '') : ''; container.innerHTML = `
Pedido #${order.id.slice(0,8)}
${statusInfo.text}
R$ ${totalFormatado}
${dataPedido}
Acompanhar Pedido ${order.status !== 'delivered' && order.status !== 'canceled' && phone ? ` WhatsApp ` : ''}
`; } // Funções de fallback function buscarUltimoPedidoPorGuestId(guestId) { return supabaseClient .from('orders') .select('id, status, customer_name, total_cents, created_at, delivered_at, payment_method, customer_phone, payment_id, numero_pedido') .eq('guest_id', guestId) .order('created_at', { ascending: false }) .limit(1) .maybeSingle() .then(({ data, error }) => { if (error) return null; return data; }); }