logo

Bienvenido(a)

Panel de Control de Tengo Hambre

{{ loginError }}

¿Aún no tienes cuenta? Registrate

A

Gestión de Negocios

NegocioURL SlugPlanEstadoAcciones
{{ biz.name }}/menu/{{ biz.slug }}{{ biz.plan }}

Catálogo de Municipios

Gestiona las zonas de cobertura disponibles para los negocios.

Nombre C.P. Ciudad Zona Estado Acciones
Cargando...
No hay municipios registrados.
{{ mun.name }} {{ mun.zipCode }} {{ mun.city }} {{ mun.zone || 'General' }} Activa Inactiva

Categorías Globales (Marketplace)

Gestiona las categorías de comida disponibles para todos los negocios.

Categoría Estado Acciones
{{ cat.emoji }}

{{ cat.name }}

{{ cat._id }}

No se encontraron categorías

Intenta con otro término o crea una nueva.

Panel de Control

{{ kpi.value }}

{{ kpi.label }}

Ventas Última Semana

Más Vendidos

Aún no hay ventas

  • {{ prod.name }}

    {{ prod.salesCount }} vendidos

    ${{ prod.price }}

{{ prod.name }}

{{ prod.barcode || 'Sin código' }}

${{ prod.price }}
{{ prod.stock || '∞' }}

No se encontraron productos

{{ tab.name }}
{{ pos.activeTab.value.customer.name[0] }}
{{ pos.activeTab.value.customer ? pos.activeTab.value.customer.name : 'Mostrador' }} {{ pos.activeTab.value.customer.points }} Pts

Escanea productos

{{ item.name }}

${{ item.price }}/u

+{{ opt.name }} +{{ item.selectedOptions.length - 1 }}
${{ (item.price * item.qty).toFixed(2) }}
{{ item.qty }}
Subtotal ${{ pos.currentTotals.value.subtotal.toFixed(2) }}
Descuento -${{ pos.currentTotals.value.discountAmount.toFixed(2) }}
IVA ({{ settings.iva }}%) ${{ pos.currentTotals.value.tax.toFixed(2) }}
Total ${{ pos.currentTotals.value.total.toFixed(2) }}

Programa de Lealtad

Configuración

Activar Programa

Escanear

Productos

Gestión de platillos

ImagenNombreExistenciasOrdenamientoPrecioCategoríasEstadoAcciones

Biblioteca de Medios

Gestiona imágenes y videos

No se encontraron archivos.

Categorías

Organiza tu menú en secciones

{{ cat.name }}

{{ cat.description || 'Sin descripción' }}

{{ cat.active ? 'Visible' : 'Oculta' }}

Complementos y Extras

Grupos de opciones

{{ addon.name }}

{{ addon.required ? 'Obligatorio' : 'Opcional' }}Max: {{ addon.maxOptions }}

Opciones ({{ addon.options.length }})

  • {{ opt.name }}+${{ opt.priceExtra }}Gratis

Publicidad y Banners

Promociones visibles en el menú

{{ banner.active ? 'ACTIVO' : 'INACTIVO' }}

{{ banner.title }}

{{ banner.description }}

Historial de Ventas

Registro de todas las transacciones POS y Web

Folio Fecha Cliente Canal Método Total Estado Acción

Cargando detalles del pedido...

Orden #{{ orders.selectedOrder.value._id.slice(-6).toUpperCase() }} {{ orders.selectedOrder.value.status }}

{{ new Date(orders.selectedOrder.value.createdAt).toLocaleString() }}

Productos Adquiridos

Producto Cant. Precio U. Total

{{ item.name }}

+ {{ opt.name }} (${{ opt.price }})

{{ item.note }}

{{ item.quantity }} ${{ item.price.toFixed(2) }} ${{ ((item.price + (item.selectedOptions ? item.selectedOptions.reduce((a,b)=>a+(b.price||0),0) : 0)) * item.quantity).toFixed(2) }}

Información de Venta

Cliente

{{ orders.selectedOrder.value.customerName ? orders.selectedOrder.value.customerName : 'Venta Mostrador' }}

Telefono

{{ orders.selectedOrder.value.customerPhone ? orders.selectedOrder.value.customerPhone : 'S/N' }}

Calle y Numero

{{ orders.selectedOrder.value.customerStreet ? orders.selectedOrder.value.customerStreet : 'S/N' }} {{ orders.selectedOrder.value.customerNumber ? orders.selectedOrder.value.customerNumber : '' }}

Referencia

{{ orders.selectedOrder.value.customerReference ? orders.selectedOrder.value.customerReference : 'S/N' }}

Paga Con:

{{ orders.selectedOrder.value.customerHowToPay ? orders.selectedOrder.value.customerHowToPay : 'S/N' }}

Atendido por

{{ orders.selectedOrder.value.createdBy ? orders.selectedOrder.value.createdBy.username : 'Sistema' }}

Canal

{{ orders.selectedOrder.value.source }}

Pago

{{ orders.selectedOrder.value.paymentMethod }}

Resumen Financiero

Subtotal ${{ orders.selectedOrder.value.subtotal?.toFixed(2) || '0.00' }}
Descuentos -${{ orders.selectedOrder.value.discount?.toFixed(2) }}
IVA (16%) ${{ orders.selectedOrder.value.tax?.toFixed(2) || '0.00' }}
Total ${{ orders.selectedOrder.value.total.toFixed(2) }}

Cotizaciones

Folio Cliente Validez Total Status Acciones

{{ quotes.isEditing.value ? 'Editar' : 'Nueva' }} Cotización

{{ prod.name }}

${{ prod.price.toFixed(2) }}

No se encontraron productos
  • {{ user.name }}

    {{ user.phone }}

Producto Cant. Precio Total
{{ item.name }}
{{ item.qty }}
${{ item.price.toFixed(2) }} ${{ (item.price * item.qty).toFixed(2) }}
La cotización está vacía
Subtotal ${{ quotes.totals.value.subtotal.toFixed(2) }}
IVA ({{ settings.iva }}%) ${{ quotes.totals.value.tax.toFixed(2) }}
Desc. {{ quotes.form.discount.title ? `(${quotes.form.discount.title})` : '' }} -${{ quotes.totals.value.discount.toFixed(2) }}
Total ${{ quotes.totals.value.total.toFixed(2) }}

Control de Caja

Gestión de flujo de efectivo y cortes

La caja está cerrada

Debes realizar la apertura de caja para comenzar a registrar ventas y movimientos.

Efectivo en Caja

${{ finance.currentData.value.currentCashInDrawer.toFixed(2) }}

Incluye fondo inicial y movimientos

Tarjetas Crédito

${{ finance.currentData.value.salesSummary.credit_card.toFixed(2) }}

Tarjetas Dédito

${{ finance.currentData.value.salesSummary.debit_card.toFixed(2) }}

Ventas Totales

${{ finance.currentData.value.salesSummary.total.toFixed(2) }}

Movimientos de Caja

Info del Turno

  • Apertura: {{ new Date(finance.currentData.value.shift.startTime).toLocaleString() }}
  • Fondo Inicial: ${{ finance.currentData.value.shift.initialCash.toFixed(2) }}
  • Responsable: Admin

Bitácora de Movimientos

Tipo Monto Motivo Hora
Sin movimientos manuales registrados
{{ mov.type === 'in' ? 'Ingreso' : 'Retiro' }} ${{ mov.amount.toFixed(2) }} {{ mov.reason }} {{ new Date(mov.date).toLocaleTimeString() }}

Historial de Cortes

Fecha Cierre Responsable Ventas Totales Efectivo Esperado Efectivo Real Diferencia Acción
{{ new Date(h.endTime).toLocaleString() }} {{ h.closedBy ? h.closedBy.username : 'Admin' }} - ${{ h.finalCashExpected.toFixed(2) }} ${{ h.finalCashActual.toFixed(2) }} {{ h.difference >= 0 ? '+' : '' }}{{ h.difference.toFixed(2) }}

Base de Usuarios

Clientes registrados en lealtad

Cliente Teléfono Puntos Visitas Última Visita Acciones

{{ users.selectedUser.value?.name }} Activo

ID: {{ users.selectedUser.value?._id }}

Compras

{{ users.selectedUserStats.value?.totalOrders || 0 }}

Visitas App

{{ users.selectedUserStats.value?.totalVisits || 0 }}

Gasto Total

${{ (users.selectedUserStats.value?.totalSpent || 0).toFixed(2) }}

Últimas Compras

Este usuario aún no ha realizado compras.

Orden #{{ order._id.slice(-6).toUpperCase() }}

{{ new Date(order.createdAt).toLocaleDateString() }} • {{ new Date(order.createdAt).toLocaleTimeString([], {hour: '2-digit', minute:'2-digit'}) }}

${{ order.total.toFixed(2) }}

{{ order.status }}

Datos Básicos

{{ users.selectedUser.value?.name[0] }}

{{ users.selectedUser.value?.name }}

Cliente Lealtad

{{ users.selectedUser.value?.phone }}

{{ users.selectedUser.value?.points }} pts

Facturación

PRÓXIMAMENTE

Aquí podrás gestionar los datos fiscales del cliente para facturación automática.

Notas Internas

Configuración del Negocio

Administra tu perfil, categorías y zonas de entrega.

Información

Tiempos y Entrega

Configura los Tiempos y costos de entrega.

Ej: 30-45 min

$

Cobertura (Municipio)

{{settings.municipioId ? '1 Municipio' : 'Sin cobertura'}}

Selecciona tu Municipio para configurar las colonias de entrega.

{{ municipio.name }}

CP: {{ municipio.zipCode }}

No se encontraron Municipios

Categorías

{{settings.categories.length}} seleccionadas

Selecciona todas las categorías que describan tu menú. Esto ayuda a que te encuentren en el buscador.

{{ avilcts.emoji }} {{ avilcts.name }}

Debes seleccionar al menos una.

Logo / Portada

Subir Logo

Acceso

Cocina (KDS)

Pendientes: {{ kds.pendingOrders.value.length }} Prep: {{ kds.preparingOrders.value.length }}
Pendientes
#{{ order._id.slice(-6).toUpperCase()}} {{ kds.getTimeElapsed(order.createdAt) }}
{{ order.customerId ? order.customerId.name : 'Mostrador' }}
{{ item.quantity }} {{ item.name }}
{{ opt.name }}
Nota: {{ item.note }}

Sin pedidos

En Preparación
#{{ order._id.slice(-4) }} Preparando...
{{ item.quantity }} {{ item.name }}
{{ opt.name }}
Nota: {{ item.note }}
Nota: {{ item.notes }}
Listos para Entrega
#{{ order._id.slice(-4) }} LISTO
{{ order.customerId ? order.customerId.name : 'Mostrador' }}

{{ currentMunicipio.value ? currentMunicipio.value.name : 'Colonias' }}

Selecciona las zonas donde entregas

{{ colonia.name }}
{{ colonia.zone }}

No hay colonias registradas en este municipio.

{{ settings.deliveryZones.length }} seleccionadas

{{ categoriesStore.editingCategory.value ? 'Editar Categoría' : 'Nueva Categoría Global' }}

Pega un emoji o usa (Win + .) / (Cmd + Ctrl + Espacio)

Puedes buscar ejemplos en: https://emojidb.org/trend-emojis

Apunta al código QR del cliente

Escanear Producto

{{ editingBusiness ? 'Editar Negocio' : 'Nuevo Cliente SaaS' }}

{{ isEditing ? 'Editar Municipio' : 'Registrar Nuevo Municipio' }}

Colonias / Zonas ({{ municipioForm.colonias?.length || 0 }})

#{{ index + 1 }}

No hay colonias registradas

Método de Pago

${{ pos.currentTotals.value.total.toFixed(2) }}

Total a Pagar

Cambio ${{ pos.paymentForm.change.toFixed(2) }}

Procesar cobro externo

Confirma que la transacción fue exitosa en la terminal.

Separar Cuentas

Distribuye los productos de la mesa en cuentas individuales.

Mesa / Original {{ pos.splitState.originalItems.length }} ítems

Todo asignado

{{ item.qty }}
{{ item.name }}
{{ item.selectedAddons.map(a => a.name).join(', ') }}
${{ (item.price * item.qty).toFixed(2) }}
Restante en mesa: ${{ pos.getCheckTotal(pos.splitState.originalItems).toFixed(2) }}
#{{ check.id }}
${{ pos.getCheckTotal(check.items).toFixed(2) }}

Asigna productos aquí

{{ item.qty }} {{ item.name }}
${{ (item.price * item.qty).toFixed(2) }}

Seleccionar Cliente

No se encontraron clientes

{{ cust.name[0] }}

{{ cust.name }}

{{ cust.phone }}

{{ cust.points }} pts Visitas: {{ cust.visits }}

¿Cliente nuevo? Regístralo en la App de Lealtad

Aplicar Descuento

Total Original ${{ pos.discountPreview.value.original.toFixed(2) }}
Descuento -${{ pos.discountPreview.value.saving.toFixed(2) }}
Nuevo Total ${{ pos.discountPreview.value.newTotal.toFixed(2) }}

Aplicar Descuento

Configura el tipo y monto del descuento.

{{ editingProduct ? 'Editar' : 'Nuevo' }} Producto

Mantén presionado Ctrl (Windows) o Cmd (Mac) para seleccionar varias.

{{ selectedCartItem.name }}

{{ selectedCartItem.barcode || 'Sin código' }}

Precio Final Unitario

${{ selectedItemUnitPrice.toFixed(2) }}

Subtotal Línea

${{ (selectedItemUnitPrice * selectedCartItem.qty).toFixed(2) }}

{{ group.name }}

{{ group.maxOptions > 1 ? `Elige hasta ${group.maxOptions}` : 'Elige 1' }}
{{ opt.name }}
+${{ opt.priceExtra }}
Sin complementos disponibles para este producto.
{{ selectedCartItem.qty }}

{{ editingCategory ? 'Editar' : 'Nueva' }} Categoría

{{ editingAddon ? 'Editar' : 'Nuevo' }} Grupo de Opciones

$
Agrega opciones para que el cliente elija.

{{ editingBanner ? 'Editar' : 'Nuevo' }} Banner

Sin imagen

Apertura de Caja

Ingresa el monto de efectivo con el que inicias el turno (Fondo).

$

{{ finance.movementForm.type === 'in' ? 'Ingreso de Efectivo' : 'Retiro de Efectivo' }}

$

Corte de Caja

Registra los recuentos de cada método de pago e ingresa el total real contado.

Efectivo en Sistema: ${{ finance.currentData.value.currentCashInDrawer.toFixed(2) }}
Ventas Totales del Turno: ${{ finance.currentData.value.salesSummary.total.toFixed(2) }}

Recuento Manual por Método de Pago

Efectivo

Dinero físico contado

$
${{ finance.currentData.value.currentCashInDrawer.toFixed(2) }}
- Sobrante: ${{ ((finance.closeAmount.value || 0) - finance.currentData.value.currentCashInDrawer).toFixed(2) }} Faltante: ${{ (finance.currentData.value.currentCashInDrawer - (finance.closeAmount.value || 0)).toFixed(2) }}

Tarjeta Débito

Débito contado

$
${{ (finance.currentData.value.salesSummary?.debit_card || 0).toFixed(2) }}
- Sobrante: ${{ ((finance.closeRecounts.debit || 0) - (finance.currentData.value.salesSummary?.debit_card || 0)).toFixed(2) }} Faltante: ${{ ((finance.currentData.value.salesSummary?.debit_card || 0) - (finance.closeRecounts.debit || 0)).toFixed(2) }}

Tarjeta Crédito

Crédito contado

$
${{ (finance.currentData.value.salesSummary?.credit_card || 0).toFixed(2) }}
- Sobrante: ${{ ((finance.closeRecounts.credit || 0) - (finance.currentData.value.salesSummary?.credit_card || 0)).toFixed(2) }} Faltante: ${{ ((finance.currentData.value.salesSummary?.credit_card || 0) - (finance.closeRecounts.credit || 0)).toFixed(2) }}

Monto Total Real (Sumado)

$ {{ ( (finance.closeAmount.value || 0) + (finance.closeRecounts.debit || 0) + (finance.closeRecounts.credit || 0) + (finance.closeRecounts.transfer || 0) ).toFixed(2) }}

Enviar {{ shareContext === 'quote' ? 'Cotización' : 'Ticket' }}

Selecciona el país e ingresa el WhatsApp.

Vista Previa Ticket

{{ settings.appName }}

{{ settings.address }}

Tel: {{ settings.phone }}

{{ new Date().toLocaleString() }}

Folio: #{{ ticketData?.folio }}
Cliente: {{ ticketData?.customer }}
Cant. Prod. Total
{{ item.qty }} x {{ item.name }} ${{ (item.price * item.qty).toFixed(2) }}
TOTAL ${{ ticketData?.total.toFixed(2) }}

Método: {{ ticketData?.method }}

¡Gracias por su compra!

Software: Tengo Hambre