FloCafe
FloCafe is the free, local-first restaurant POS in the FloPOS ecosystem. Run orders, tables, kitchen display, and local data without a software subscription.
Manage sales, inventory, and customer payments for Joyería ARIGA
Translation pending
AI summary · website content
CommerceJavaScript · PLpgSQLGitHub @desarrolloarigaOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Réplica de la aplicación de Apps Script "Aplicación Ariga", usando Supabase
(esquema tiendaariga) en lugar de la hoja "Registro de ventas 2do".
| Archivo | Qué es |
|---|---|
index.html, css/estilos.css, js/app.js | La aplicación web (equivale a Index.html + CSS.html + Código.gs) |
js/config.js | URL de Supabase, clave publicable y esquema |
supabase/01_esquema.sql | Tablas, vistas, funciones y seguridad |
supabase/02_datos_*.sql | Datos del Excel (generados) |
scripts/generar_datos_sql.py | Regenera 02_datos_*.sql desde el Excel |
Venta, Buscar Pedido, Pagos, Clientes, Histórico, Cartera, Inventario, Maestros y, solo para administradores, Usuarios y Datos.
clientes.id). Ficha con DPI, NIT, teléfonos, correo, dirección y
departamento. Al crearlo se puede indicar un saldo pendiente inicial, que
queda como una venta "SALDO INICIAL" (envío SI-<código>).productos es el catálogo de referencias (nombre,
código, tipo, unidad, controla inventario, activa). Solo las activas aparecen
al vender. El nombre no se puede cambiar porque las ventas lo guardan.ingresos_inventario).inventario): entradas − (ventas + salidas + devoluciones a
oficina), por tienda y referencia o total por referencia.inventario_movimientos): kardex con saldo acumulado.inventario_items) o, si no tiene, la de su primera carga.| Hoja | En Supabase |
|---|---|
| Maestros | tiendas, tipos, vendedores, productos, metodos_pago |
| Clientes | clientes |
| Ventas | ventas |
| Pagos | pagos |
| Devoluciones | devoluciones |
| Ingresos de inventario | ingresos_inventario |
| Devolución a oficina | devoluciones_oficina |
| Coordenadas | coordenadas |
| Cartera 1 | vista cartera_detalle (por envío) |
| Cartera 2 | vistas cartera_clientes y estado_cuenta (por cliente) |
| Inventario | tabla inventario_items (tienda, producto y fecha de corte) + vista inventario |
Funciones: buscar_clientes, crear_cliente, registrar_venta (genera el Id
yyyyMMdd-NNN), actualizar_venta, eliminar_pedido, buscar_pedidos,
lineas_pedido, vincular_clientes, admin_agregar_usuario y hacer_admin.
Usuarios: tabla perfiles. Pagos recibidos: vista pagos_detalle.
supabase/01_esquema.sql. Se puede repetir sin perder datos.02_datos_1.sql … 02_datos_7.sql. El primero vacía las tablas. El último
vincula ventas y pagos importados con su cliente (vincular_clientes()).tiendaariga.03_…, 04_… de
supabase/ (ver Actualizaciones de la base).03_usuarios_y_pedidos.sql:
usuario admin, contraseña admin123. Cámbiela al entrar (botón
Contraseña de la barra superior). Los vendedores se crean desde la pestaña
Usuarios con usuario y contraseña; no se necesitan correos ni configurar
el envío de correos de Supabase.npx serve . y abrir http://localhost:3000.01_esquema.sql es la base inicial. Cada cambio posterior va en un script
propio y numerado, que se ejecuta una vez en el SQL Editor, en orden, y se
puede repetir sin dañar datos:
(si se vuelve a ejecutar uno anterior, hay que volver a ejecutar también los
siguientes, porque algunos reemplazan funciones de los anteriores)
| Script | Qué hace |
|---|---|
03_usuarios_y_pedidos.sql | Usuarios con nombre de usuario (sin correo), administrador inicial admin / admin123, creación de vendedores y cambio de contraseñas por el admin, búsqueda de pedidos por cliente, código de cliente, número de pedido o envío. |
04_usuario_tienda.sql | Vincula cada usuario a una tienda o bodega. Las ventas y cargas de inventario de un vendedor vinculado se guardan siempre con su tienda (lo impone la base). |
05_inteligencia_y_traslados.sql | Traslados entre bodegas (el origen envía, el destino recibe; se puede anular o rechazar en tránsito) e indicadores de Inteligencia Comercial: cartera por cobrar, gramos disponibles por bodega y precio promedio del gramo vendido. |
06_rangos_codigo_cliente.sql | Rango de códigos de cliente por usuario (ej. Pablo 1-5000, Carlos 5001-10000): cada uno numera a sus clientes en orden dentro de su rango; sin rango se usa la numeración general, que salta los rangos asignados. |
07_consecutivo_tipo_cliente_bodega.sql | Consecutivo interno de clientes por vendedor (1, 2, 3…; con rango 1001-2000 el código general es 1001, 1002…), el admin crea clientes para un vendedor con el consecutivo de ese vendedor, tipo de cliente minorista/mayorista (solo el admin crea mayoristas) e Inteligencia Comercial filtrable por bodega. |
08_limpiar_datos.sql | Borra ventas, pagos, devoluciones, clientes, cargas de inventario y traslados para empezar de cero; conserva usuarios, bodegas, vendedores, referencias y demás maestros. Tiene un seguro: solo actúa si se cambia 'NO' por 'BORRAR'. No se puede deshacer. |
09_reasignar_cliente_al_rango.sql | Al asignar un cliente a un vendedor con rango, el cliente pasa a un código del rango de ese vendedor (sus ventas y pagos lo siguen). Repara los clientes ya reasignados que quedaron fuera del rango, numerándolos en el orden en que se crearon. |
10_cartera_vendedor.sql | La cartera (por cliente y por envío) incluye el vendedor dueño del cliente y el código del cliente. |
11_renombrar_maestros.sql | Permite al administrador cambiar el nombre de tiendas/bodegas, vendedores, métodos de pago, tipos y departamentos desde Maestros; el nombre nuevo se aplica a todo el histórico (ventas, pagos, inventario, traslados, clientes y usuarios). |
Es un sitio estático; el único paso de build genera js/config.js desde las variables de entorno.
SUPABASE_URL=https://aijexrcfmakphpqihkig.supabase.co
SUPABASE_KEY=sb_publishable_ipr6oXXU484KmKMPigiM5g_dwBiJm_b
SUPABASE_SCHEMA=tiendaariga
ZONA_HORARIA=America/Guatemala
El resto de la configuración (build, carpeta dist/) ya viene en vercel.json.
Si falta una variable se usa el valor de js/config.js. El build falla a
propósito si SUPABASE_KEY es una clave secreta.git push a main vuelve a publicar automáticamente, y cada
rama o pull request genera una URL de vista previa.vercel.json agrega encabezados de seguridad (incluida una Content-Security-Policy
que solo permite jsDelivr, Google Fonts, imgur y proyectos *.supabase.co). Si se
agrega otro CDN, hay que actualizarla.
.vercelignore evita publicar supabase/ y este README; solo se sirve la carpeta dist/ que genera el build.
supabase/02_datos_*.sql contiene DPI, nombres y teléfonos de clientes, por eso
está en .gitignore y nunca se sube. Para recrearlos en otra máquina:
python scripts/generar_datos_sql.py "ruta/al/Registro de ventas 2do.xlsx".
maria se guarda internamente como [email protected]). Un usuario de Auth solo entra a
ARIGA si tiene un perfil activo en tiendaariga.perfiles; sin sesión (clave
publicable sola) no se puede leer ni escribir nada.En la hoja, muchos abonos se registraron con el nombre del cliente en la
columna ENVÍO. Al cargar los datos se vinculan con su cliente cuando el nombre
coincide con un solo cliente (quedan marcados en nota_importacion). Los
restantes se asignan a mano: Pagos → Pagos Recibidos → "Solo pagos antiguos
sin cliente asignado" → Asignar cliente (administradores).
"BODEGA PABLO ARIAS " con espacio no se descontaban).Las fechas o montos escritos a mano (por ejemplo 31/04/2025, #VALUE! o
1,705.5/1,645.07) quedaron en NULL y el texto original quedó en la columna
nota_importacion. Los años mal digitados (0205, 1015) se corrigieron a 2025.
Para revisarlos:
select 'ventas' tabla, id, nota_importacion from tiendaariga.ventas where nota_importacion is not null
union all
select 'pagos', id, nota_importacion from tiendaariga.pagos where nota_importacion is not null
union all
select 'clientes', id, nota_importacion from tiendaariga.clientes where nota_importacion is not null;
12_tipo_de_referencia.sql| (Reemplazado por el 13; no es necesario ejecutarlo.) Cada referencia pertenece a un tipo (material): las ventas toman el tipo de su referencia (también al cambiar el tipo de la referencia) y se alinean las ventas existentes. Al final lista las referencias que aún no tienen tipo. |
13_tipo_reemplaza_referencia.sql | El tipo (material) reemplaza a la referencia: ventas, cargas, traslados y saldos se manejan por tipo; cada tipo tiene unidad (gramos/unidades) y si lleva inventario. Convierte los datos existentes al tipo de su referencia (las referencias sin tipo pasan a ser un tipo) y deja anotado el nombre anterior. Ejecutarlo antes de publicar esta versión de la app. |
14_admin_editar_historial.sql | Historial del administrador: funciones para editar o eliminar cualquier registro (ventas, pagos, devoluciones, cargas, traslados, clientes) sin las restricciones normales. Solo el admin puede usarlas. |
15_pagos_por_envio.sql | Pagos aplicados a envíos: cada pago se aplica a uno o varios envíos del cliente (puede quedar parcial); el saldo del cliente es la suma de sus envíos. Una venta sin envío se identifica por su pedido. Reparte los abonos antiguos sin envío a los envíos con saldo, del más antiguo al más reciente (lo que sobre queda como saldo a favor). Ejecutarlo antes de publicar esta versión. |
16_corregir_pagos_envio.sql | Corrige pagos registrados con un envío equivocado (número de pedido en vez de envío; pagos de CELESTE DE LEÓN al envío de otra clienta) y hace que la cartera por envío solo cuente los pagos del mismo cliente. |
17_supervisores.sql | Supervisores y jerarquías: rol supervisor, vendedores a cargo de un supervisor (perfiles.supervisor_id) y permisos de solo lectura para que el supervisor vea clientes, ventas, pagos, devoluciones y traslados de su equipo. Inteligencia comercial filtrable por vendedor. |
18_editar_saldo_inicial.sql | Permite editar el saldo pendiente inicial de un cliente (valor, fecha, tienda, vendedor) desde la ficha del cliente; no puede quedar por debajo de lo ya abonado. Lo hace el dueño del cliente o el admin. |
19_mover_pago_envio.sql | Función para mover un pago (completo o una parte) a otro envío del mismo cliente, desde la pantalla de Pagos. Corrige los abonos repartidos automáticamente cuyo valor coincide exacto con un envío (DAILI HERRERA, DORIS ELISABETH). |
20_caja_menor.sql | Ventas en efectivo y caja menor: la venta puede ser a crédito o en efectivo (registra sola su pago y una entrada a la caja menor de quien la registra; al editar o eliminar la venta se ajustan). Tabla caja_menor con entradas y salidas manuales por usuario; cada uno ve y mueve su caja, el supervisor ve las de su equipo y el admin todas. |
21_cuadre_tiendas.sql | Cuadre de tiendas: % de comisión y meta mensual por vendedor (Maestros > Vendedores, solo admin) y función cuadre_tiendas con la foto al cierre de cada mes (cartera por cobrar, inventario en gramos, ventas en gramos y Q, comisiones y meta) por tienda y por vendedor. Solo para el admin. |
22_cuadre_caja.sql | Agrega al cuadre de tiendas la caja menor al cierre de cada mes (y sus entradas y salidas del mes), por tienda y por usuario. |
23_cuadre_recaudo.sql | Agrega al cuadre de tiendas el recaudo del mes (pagos recibidos, incluidos los de ventas en efectivo) por tienda del envío pagado y por método de pago. Incluye lo del 22. |
24_esquemas_comision.sql | Esquemas de comisión por cumplimiento: tabla esquemas_comision (tramos de % según cumplimiento de meta, individual o grupal, y % de mayoreo), con los esquemas "EJECUTIVA DE VENTA" y "SUPERVISORA RS" ya cargados. Cada vendedor tiene esquema y supervisor(a). El cuadre calcula la comisión de cada persona con su esquema. |
25_mis_comisiones.sql | Cada vendedor ve su comisión: perfiles.vendedor vincula el usuario con su vendedor de Maestros (si se deja vacío, por coincidencia de nombre) y mis_comisiones devuelve su comisión mes a mes. El cálculo del cuadre pasa a cuadre_calculo (interna). |
26_varios_esquemas.sql | Varios esquemas por vendedor (tabla vendedor_esquemas): la comisión es la suma de cada esquema (p. ej. supervisora que también vende). Meta individual y meta grupal separadas. El cuadre y mis_comisiones traen el detalle por esquema. Pasa lo ya asignado en el 24 a la tabla nueva. |
27_verificacion_pagos.sql | Verificación de pagos: comprobante adjunto (almacenamiento privado comprobantes), recibo que agrupa las partes de un pago y estado PENDIENTE/VALIDADO/RECHAZADO con quién, cuándo y nota. Solo el admin verifica (verificar_pagos). |
28_cobros_efectivo_caja.sql | Los cobros con método EFECTIVO registrados en Pagos entran solos a la caja menor de quien los registró (origen PAGO) y se ajustan si el pago cambia o se elimina. Carga los cobros en efectivo desde el 18-oct-2026. |
29_devoluciones_clientes.sql | Devoluciones de clientes desde el pedido: registrar_devolucion (total o parcial, sin pasar de lo vendido) reduce la cuenta por cobrar del envío y regresa la cantidad al inventario de la tienda de la venta; eliminar_devolucion revierte ambas cosas. |
30_listado_pedidos_devoluciones.sql | Listado de pedidos y módulo de Devoluciones: listar_pedidos (todos los pedidos/facturas, paginado de a 1000, filtro por texto, factura y fechas, con lo ya devuelto; cada vendedor ve solo lo suyo) y listar_devoluciones. |