Temas

Selecciona un modulo para leer su procedimiento.

Mostrando todos los temas.
Resumen del sistema Para que sirve sistema gestion ventas caja stock compras clientes cuentas corrientes facturacion reportes tienda ecommerce restaurantes hoteles matafuegos reparaciones alquileres modulos rubros Manual completo paso a paso Libro por modulos Operacion comercial Ventas sale Ingresar al modulo Ventas desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Cuando el modulo lo permita, generar el comprobante PDF, ticket o impresion desde las acciones del registro. En ventas y caja, seleccionar cliente, cargar articulos, controlar totales, elegir medio de pago y finalizar la operacion. Caja cashier Ingresar al modulo Caja desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Cuando el modulo lo permita, generar el comprobante PDF, ticket o impresion desde las acciones del registro. En ventas y caja, seleccionar cliente, cargar articulos, controlar totales, elegir medio de pago y finalizar la operacion. Registradoras cashregister Ingresar al modulo Registradoras desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Cajas de venta boxsales Ingresar al modulo Cajas de venta desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Cuando el modulo lo permita, generar el comprobante PDF, ticket o impresion desde las acciones del registro. En ventas y caja, seleccionar cliente, cargar articulos, controlar totales, elegir medio de pago y finalizar la operacion. Presupuestos budget Ingresar al modulo Presupuestos desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Cuando el modulo lo permita, generar el comprobante PDF, ticket o impresion desde las acciones del registro. Clientes client Ingresar al modulo Clientes desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Productos product Ingresar al modulo Productos desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Para productos, revisar precio, stock, categoria, proveedor, codigo de barras y configuraciones especiales antes de vender. Categorias category Ingresar al modulo Categorias desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Cuando el modulo lo permita, generar el comprobante PDF, ticket o impresion desde las acciones del registro. Subcategorias subcategory Ingresar al modulo Subcategorias desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Cuando el modulo lo permita, generar el comprobante PDF, ticket o impresion desde las acciones del registro. Marcas brand Ingresar al modulo Marcas desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Cuando el modulo lo permita, generar el comprobante PDF, ticket o impresion desde las acciones del registro. Combos combo Ingresar al modulo Combos desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Offer offer Ingresar al modulo Offer desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Medios de pago paymethod Ingresar al modulo Medios de pago desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Stock, compras y proveedores Compras purchase Ingresar al modulo Compras desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Cuando el modulo lo permita, generar el comprobante PDF, ticket o impresion desde las acciones del registro. Ordenes de compra purchaseorder Ingresar al modulo Ordenes de compra desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Cuando el modulo lo permita, generar el comprobante PDF, ticket o impresion desde las acciones del registro. Proveedores provider Ingresar al modulo Proveedores desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Provider Payment provider_payment Ingresar al modulo Provider Payment desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Cuando el modulo lo permita, generar el comprobante PDF, ticket o impresion desde las acciones del registro. Depositos warehouse Ingresar al modulo Depositos desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Warehouse Transfer warehouse_transfer Ingresar al modulo Warehouse Transfer desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Cuando el modulo lo permita, generar el comprobante PDF, ticket o impresion desde las acciones del registro. Devoluciones devolution Ingresar al modulo Devoluciones desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Cuando el modulo lo permita, generar el comprobante PDF, ticket o impresion desde las acciones del registro. Conceptos concept Ingresar al modulo Conceptos desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Cuando el modulo lo permita, generar el comprobante PDF, ticket o impresion desde las acciones del registro. Concept Category concept_category Ingresar al modulo Concept Category desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Administracion y control Empresa y configuracion business Ingresar al modulo Empresa y configuracion desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Unidades de negocio business_unit Ingresar al modulo Unidades de negocio desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. ARCA y comprobantes arca Ingresar al modulo ARCA y comprobantes desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. En facturacion ante ARCA, verificar datos fiscales, punto de venta, tipo de comprobante e importes antes de emitir. Bancos bank Ingresar al modulo Bancos desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Cheques cheque Ingresar al modulo Cheques desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Cuando el modulo lo permita, generar el comprobante PDF, ticket o impresion desde las acciones del registro. Echeck echeck Ingresar al modulo Echeck desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Cuando el modulo lo permita, generar el comprobante PDF, ticket o impresion desde las acciones del registro. Reportes report Ingresar al modulo Reportes desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Cuando el modulo lo permita, generar el comprobante PDF, ticket o impresion desde las acciones del registro. Respaldos backup Ingresar al modulo Respaldos desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Auditoria audit Ingresar al modulo Auditoria desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Cuando el modulo lo permita, generar el comprobante PDF, ticket o impresion desde las acciones del registro. Roles y permisos role Ingresar al modulo Roles y permisos desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Usuarios user Ingresar al modulo Usuarios desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Licence licence Ingresar al modulo Licence desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Impresoras printer Ingresar al modulo Impresoras desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Configuracion de PDF pdf_setting Ingresar al modulo Configuracion de PDF desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Clientes, rutas y comunicacion Asignaciones assignment Ingresar al modulo Asignaciones desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Campanas campaign Ingresar al modulo Campanas desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Message message Ingresar al modulo Message desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Mails mails Consultar el modulo Mails, revisar las acciones disponibles y seguir los formularios indicados por pantalla. Geolocalizacion geolocalization Consultar el modulo Geolocalizacion, revisar las acciones disponibles y seguir los formularios indicados por pantalla. Routesheet routesheet Ingresar al modulo Routesheet desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Zonas zone Ingresar al modulo Zonas desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Delivery Driver delivery_driver Ingresar al modulo Delivery Driver desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Repartos deliverie Ingresar al modulo Repartos desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Tienda y canales digitales E-commerce ecommerce Ingresar al modulo E-commerce desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Tienda online on_line_store Consultar el modulo Tienda online, revisar las acciones disponibles y seguir los formularios indicados por pantalla. Supermercados supermarket Consultar el modulo Supermercados, revisar las acciones disponibles y seguir los formularios indicados por pantalla. Publicidad advertisement Ingresar al modulo Publicidad desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Asistente assistant Consultar el modulo Asistente, revisar las acciones disponibles y seguir los formularios indicados por pantalla. Rubros especializados Restaurant restaurant Para restaurant, usar mesas, comandas, cocina, mozos y confirmaciones segun la configuracion activa del negocio. Hoteles hotel Ingresar al modulo Hoteles desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Para hoteleria, gestionar habitaciones, reservas, check-in, check-out, consumos y pagos. Habitaciones room Ingresar al modulo Habitaciones desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Cuando el modulo lo permita, generar el comprobante PDF, ticket o impresion desde las acciones del registro. Para hoteleria, gestionar habitaciones, reservas, check-in, check-out, consumos y pagos. Room Type room_type Ingresar al modulo Room Type desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Floor floor Ingresar al modulo Floor desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Departamentos apartment Ingresar al modulo Departamentos desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Rental Space rental_space Ingresar al modulo Rental Space desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Rental Main Contract rental_main_contract Ingresar al modulo Rental Main Contract desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Cuando el modulo lo permita, generar el comprobante PDF, ticket o impresion desde las acciones del registro. Alquileres rentable Ingresar al modulo Alquileres desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Cuando el modulo lo permita, generar el comprobante PDF, ticket o impresion desde las acciones del registro. Matafuegos extinguisher Ingresar al modulo Matafuegos desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Cuando el modulo lo permita, generar el comprobante PDF, ticket o impresion desde las acciones del registro. Para matafuegos, cargar cliente, equipo, vencimientos, recargas, retiros y comprobantes segun el circuito operativo. Extinguisher Type extinguisher_type Ingresar al modulo Extinguisher Type desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Cuando el modulo lo permita, generar el comprobante PDF, ticket o impresion desde las acciones del registro. Para matafuegos, cargar cliente, equipo, vencimientos, recargas, retiros y comprobantes segun el circuito operativo. Prestamos de matafuegos fire_extinguisher_loan Ingresar al modulo Prestamos de matafuegos desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Cuando el modulo lo permita, generar el comprobante PDF, ticket o impresion desde las acciones del registro. Para matafuegos, cargar cliente, equipo, vencimientos, recargas, retiros y comprobantes segun el circuito operativo. Recargas recharge Ingresar al modulo Recargas desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Cuando el modulo lo permita, generar el comprobante PDF, ticket o impresion desde las acciones del registro. Para matafuegos, cargar cliente, equipo, vencimientos, recargas, retiros y comprobantes segun el circuito operativo. Dispositivos device Ingresar al modulo Dispositivos desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Device Type device_type Ingresar al modulo Device Type desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Ordenes de reparacion repair_order Ingresar al modulo Ordenes de reparacion desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Cuando el modulo lo permita, generar el comprobante PDF, ticket o impresion desde las acciones del registro. Vehiculos vehicle Ingresar al modulo Vehiculos desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Cuando el modulo lo permita, generar el comprobante PDF, ticket o impresion desde las acciones del registro. Vehicle Log vehicle_log Ingresar al modulo Vehicle Log desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Cuando el modulo lo permita, generar el comprobante PDF, ticket o impresion desde las acciones del registro. Vehicle Exit Log vehicle_exit_log Ingresar al modulo Vehicle Exit Log desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Cuando el modulo lo permita, generar el comprobante PDF, ticket o impresion desde las acciones del registro. Turismo tourism Consultar el modulo Turismo, revisar las acciones disponibles y seguir los formularios indicados por pantalla. Empeños pawn Ingresar al modulo Empeños desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Consignaciones consignation Ingresar al modulo Consignaciones desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Prestamos loan Ingresar al modulo Prestamos desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Cuando el modulo lo permita, generar el comprobante PDF, ticket o impresion desde las acciones del registro. Prestamos de dinero money_lending Ingresar al modulo Prestamos de dinero desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Cuando el modulo lo permita, generar el comprobante PDF, ticket o impresion desde las acciones del registro. Tarjetas de regalo giftcard Ingresar al modulo Tarjetas de regalo desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Cuando el modulo lo permita, generar el comprobante PDF, ticket o impresion desde las acciones del registro. Trabajos y servicios work Ingresar al modulo Trabajos y servicios desde el menu del sistema para ver el listado principal, filtros, estados y acciones disponibles. Presionar el boton de registrar o crear, completar los campos obligatorios y guardar el formulario. Para modificar un registro, abrir la accion de editar, revisar los datos cargados y confirmar los cambios. Usar la vista de detalle para consultar informacion completa, historial, movimientos o comprobantes asociados. Paquetes Turisticos Turismo, hoteles, buses, reservas y reportes paquetes turisticos turismo hoteles buses reservas ventas adquisiciones pasajeros asientos habitaciones rooming list reportes pdf tickets cobranzas pagos voucher Ayuda del módulo: Actualización de costos de artículos nocosts Esta sección te permite actualizar de forma rápida el costo de los artículos ya existentes, comparándolo con sus precios de venta configurados. Procedimiento 📄 Tabla de artículos Se listan todos los productos con su: - **ID y Nombre** del artículo (enlace al detalle). - **Precios de venta** configurados: minorista, mayorista, preferencial, y los precios adicionales que tenga habilitada tu empresa (Fábrica, Distribuidor, Repartidor, Especial). - **Costo actual** editable directamente desde la tabla. ✏️ Actualización del costo - En la columna 'Costo', escribí el nuevo valor deseado. - Hacé clic en el botón **Actualizar** para guardar el nuevo costo del artículo. 📌 Tené en cuenta: - El cambio de costo **no modifica automáticamente los precios de venta**, salvo que tengas fórmulas automáticas configuradas. - El valor se guarda de inmediato al hacer clic en el botón. ❓ Botón de ayuda - En el título principal hay un ícono (❓) para ver esta explicación en cualquier momento. Ayuda del módulo: Adelantos de Dinero advance Este módulo permite consultar, filtrar y visualizar los adelantos de dinero otorgados a los usuarios. 💰 **Listado de adelantos** - Visualizá todos los adelantos registrados a cada usuario. - Se muestra el **ID**, **usuario receptor**, **fecha**, **monto**, **descripción**, **caja asociada** y **concepto**. 📅 **Búsqueda por fecha** - Usá los campos **'Desde'** y **'Hasta'** para filtrar los adelantos por período. - ⚠️ Si completás una fecha, debés completar también la otra. - 🛑 No se permite que la fecha 'Desde' sea mayor que la fecha 'Hasta'. 🧑‍💼 **Filtro por usuario** - Seleccioná un usuario específico para ver solo sus adelantos. - Por defecto se muestran todos. 💳 **Total adelantado** - En la parte superior de la tabla se muestra el total acumulado de adelantos registrados, expresado en la moneda local. 🖨️ **Acciones disponibles** - 📄 PDF: Genera un comprobante en PDF del adelanto. - 🖨️ Imprimir: Abre la vista de impresión del mismo. ❓ **Botón de ayuda** - El ícono ❓ al lado del título te permite abrir esta ayuda para entender cómo funciona el módulo. 💡 Consejo: - Los adelantos pueden ser útiles para anticipos de sueldos, viáticos o fondos para gastos menores. Mantené los registros actualizados para una correcta administración. Ayuda del módulo: Artículos - Salón salon Este módulo permite consultar, visualizar y gestionar artículos disponibles en el sector salón, con filtros por proveedor y buscador por nombre o código. 📦 **Listado de artículos** - Visualizá todos los productos disponibles en el salón con información clave como: - Nombre, unidad de medida, proveedor, stock, categoría y vencimiento. - El ID del producto es único y sirve para identificarlo en otras funciones. 🔎 **Búsqueda de artículos** - Podés buscar artículos escribiendo parte del nombre o código en el campo de búsqueda. - También podés filtrar por proveedor específico desde el selector desplegable. - Presioná `TAB` cuando el texto supere 3 caracteres para activar la búsqueda automáticamente. 💰 **Precios disponibles** - Se muestran múltiples precios según los permisos del usuario: - 🛍️ Min: Precio minorista - 🏬 May: Precio mayorista - 💎 Pre: Precio preferencial - 🏭 Fáb: Precio de fábrica - 🚛 Rep: Precio de repartidor - 📦 Dis: Precio distribuidor - 🌟 Esp: Precio especial - Cada precio está separado visualmente por líneas y columnas claras. 📁 **Información adicional** - Sector asignado: muestra dónde está almacenado el producto. - Fecha de modificación: última vez que fue actualizado. - Fecha de vencimiento: si está definida, te ayuda a identificar productos perecederos. 🛠️ **Acciones rápidas** - ✏️ Botón de edición: te permite modificar los datos del producto. - 📄 Imagen: se muestra en miniatura para reconocer visualmente el artículo. ❓ **Botón de ayuda** - El ícono ❓ ubicado junto al título permite acceder a esta ayuda para conocer cómo utilizar el módulo. 💡 **Consejo** - Asegurate de mantener los precios y stock actualizados para una correcta operación del sistema. Ayuda del módulo: Asignación de Clientes 👥 assignment Este formulario permite que los clientes asignados a un usuario (usuario de origen) pasen a estar visibles o gestionables por otro usuario (usuario de destino). 🔄 **¿Qué hace este módulo?** Permite asignar la visibilidad y gestión de los clientes de un usuario a otro. Es útil para: - Redistribuir cartera de clientes. - Asignar clientes de un vendedor inactivo a otro. 👤 **Usuario de origen:** - Es quien tiene actualmente los clientes asignados. 👥 **Usuario de destino:** - Será quien podrá ver y trabajar con los clientes del usuario de origen. ⚠️ **Restricciones:** - No se puede seleccionar el mismo usuario como origen y destino. - Ambos campos son obligatorios. ✅ **Pasos para asignar:** 1. Seleccionar el *Usuario de origen*. 2. Seleccionar el *Usuario de destino* (el primero será ocultado del segundo para evitar errores). 3. Hacer clic en **Asignar** para completar la operación. 🧠 **Consejo:** Esta operación **no elimina la relación del usuario de origen con los clientes**, solo agrega acceso al usuario de destino. Ayuda del módulo: Asignación de entregas 🚚 delivery_assignments En esta pantalla podés asignar y quitar ventas pendientes a fleteros, filtrando por zona y buscando por cliente/dirección/ID. Incluye selección por página y acciones masivas por zona. 📌 **¿Para qué sirve esta pantalla?** Acá administrás qué ventas **pendientes** quedan asignadas a cada **fletero (delivery)**. Tenés dos listados: - **Pendientes sin asignar** (izquierda) → para **asignar** al fletero. - **Asignadas al fletero** (derecha) → para **quitar** la asignación del fletero actual. 🧭 **Guía rápida (paso a paso)** 1) Elegí un **Fletero** en el filtro superior. 2) (Opcional) Elegí una **Zona** para acotar resultados. 3) (Opcional) Usá **Buscar** para filtrar por *ID de venta, cliente o dirección*. 4) En el listado correspondiente, tildá ventas y: - Izquierda: tocá **Asignar seleccionadas** - Derecha: tocá **Quitar asignación** 5) Si necesitás hacer acciones masivas por zona: - **Asignar TODO por zona** - **Quitar TODO por zona** (Solo se habilitan si elegiste **Fletero + Zona**) 🔎 **Filtros (arriba)** - **Fletero (Delivery)** *(requerido para asignar/quitar)*: - Si no elegís fletero, los botones de asignación/desasignación quedan **deshabilitados**. - **Zona** *(opcional / recomendada para masivos)*: - Afecta los listados y habilita acciones masivas cuando está seleccionada. - **Buscar**: - Usalo para ir directo por **ID** o para filtrar por **cliente/dirección**. - **Por pág.**: - Define cuántas ventas ves por página (25/50/100). - Importante: el **Seleccionar todo** aplica **solo a la página actual**. ✅ **Acciones disponibles** 1) **Asignar seleccionadas** (columna izquierda) - Asigna las ventas marcadas al fletero seleccionado. - Requiere: fletero seleccionado + al menos 1 venta tildada. 2) **Quitar asignación** (columna derecha) - Quita la asignación de las ventas marcadas del fletero actual. - Requiere: fletero seleccionado + al menos 1 venta tildada. 3) **Asignar TODO por zona** (acciones masivas) - Asigna **todas** las ventas pendientes que correspondan a la zona seleccionada al fletero actual. - Requiere: fletero + zona. - Sugerencia: usalo cuando querés cargar un recorrido completo para el fletero de esa zona. 4) **Quitar TODO por zona** (acciones masivas) - Quita la asignación masiva para las ventas de esa zona (según tu lógica del controlador). - Requiere: fletero + zona. 🧠 **Selección y contadores** - Cada columna tiene: - **Seleccionar todo** / **Deseleccionar todo** - Contador de **Seleccionadas** - Recordá: *Seleccionar todo* marca solo lo visible en esa página. 👁️ **Vista rápida y ver venta** - Botón **lista**: abre el modal **Detalle rápido de venta** (sin salir de la pantalla). - Botón **ojo**: abre la venta completa en una pestaña nueva (si tenés permiso `sales.show`). 🏷️ **Estados y etiquetas** - Vas a ver badges como: - **Asignada** - Estado de entrega (por ejemplo: *Pendiente, En reparto, Entregada*, etc. según tus labels) - Estos estados ayudan a identificar rápidamente qué está pasando con cada venta. ⚠️ **Validaciones y mensajes** - Si intentás asignar/quitar sin fletero: aparece un aviso "Seleccioná un fletero". - Si no seleccionaste ventas: aparece "Seleccioná al menos una venta". - Acciones masivas: antes de ejecutar, aparece una confirmación para evitar errores. 💡 **Buenas prácticas** - Para recorridos eficientes: filtrá por **Zona** y asigná en bloque. - Para ir rápido a un caso puntual: buscá por **ID de venta**. - Usá la **Vista rápida** para confirmar dirección/cliente sin abrir otra pantalla. ❗ **Errores comunes** - No seleccionar fletero y querer asignar → los botones no funcionan (queda deshabilitado / alerta). - Usar "Seleccionar todo" pensando que toma todas las páginas → solo toma la **página actual**. - Ejecutar masivo sin zona → el sistema te lo va a impedir y mostrará advertencia. 🧾 **Acciones** - **Aplicar filtros** (lupa): refresca listados con los criterios. - **Limpiar filtros** (goma): vuelve a la vista sin filtros. - **Asignar / Quitar**: impacta la asignación del fletero sobre las ventas seleccionadas. Ayuda del módulo: Asignación de Zonas assignmentzone Este módulo permite asignar zonas geográficas a empleados o equipos para optimizar la cobertura de atención, reparto o trabajo en campo. 📍 **Registro de asignación de zonas** - Desde esta vista podés **asignar una zona específica** a un empleado, agente o repartidor. - Cada asignación puede implicar una zona exclusiva o compartida, según las necesidades operativas. 👤 **Selección de empleado** - Elegí al usuario que será responsable de la zona. - Podés asignar más de una zona a un mismo usuario si es necesario. 🗺️ **Selección de zona** - Las zonas disponibles estarán precargadas desde el sistema. - Se pueden organizar por nombre, área, región o tipo de cobertura. 📝 **Formulario de asignación** - Completá los campos requeridos y presioná **Registrar**. - También podés **cancelar** la operación si necesitás hacer cambios. 📦 **Aplicaciones típicas** - Reparto de productos, asignación de rutas, planificación de visitas técnicas, zonas de venta o atención. 💡 Consejo: - Mantené las asignaciones actualizadas para evitar superposiciones y mejorar la eficiencia logística. Ayuda del módulo: Backups backup Este módulo permite crear, visualizar, descargar y restaurar copias de seguridad de la base de datos y archivos del sistema. 🗂️ **Tipos de backup disponibles** - Dependiendo del entorno (local o producción), tendrás opciones para realizar: - 💾 **Backup de base de datos**: guarda toda la información estructural y de contenido. - 🖼️ **Backup completo (incluye imágenes)**: además de la base de datos, se incluyen archivos como logos, productos, fotos de usuarios, etc. 📥 **Restaurar base de datos** - 🔁 Opción para restaurar la última copia de seguridad creada. - Esta opción requiere permisos especiales y debe usarse con precaución. 📊 **Tabla de backups disponibles** - Muestra todas las copias existentes con: - 📄 **Nombre del archivo** - 📏 **Tamaño estimado** - 🕒 **Fecha y hora de creación** - ⚙️ **Acciones disponibles**: descarga o eliminación. 🔒 **Permisos requeridos** - 🧑‍💻 Solo los usuarios con los permisos adecuados (`backup.db_backup`, `backup.full_backup`, `backup.restore`, etc.) pueden ver y utilizar cada funcionalidad. ⚠️ **Consejo** - Realizá backups frecuentes, especialmente antes de actualizaciones importantes o cambios masivos en el sistema. ❓ **Botón de ayuda** - El ícono ❓ ubicado en el encabezado abre esta ayuda para guiarte en el uso correcto del módulo. 🔐 **Seguridad** - La descarga de respaldos puede requerir confirmación o ingreso de contraseña, según cómo esté configurado el sistema. Ayuda del módulo: Bauleras / Espacios 📦 rentalspaces Desde aquí creás un espacio (baulera/depósito) con sus dimensiones, precio mensual y estado. 🎯 **Objetivo** Registrar una **baulera / espacio** asociado (opcionalmente) a un *Piso/Sección*, con dimensiones, precio y estado. 🧩 **Dónde estás** **Panel administrador → Bauleras → Nuevo** Título de la pantalla: *Registrar baulera / espacio*. 📝 **Campos del formulario** - **Piso / Sección** *(opcional)* Seleccioná el piso/sección donde se ubica el espacio. Si lo dejás vacío, el espacio quedará sin piso asociado. - **Nombre** *(obligatorio)* Identificación única y clara del espacio (ej.: "B-12", "Deposito A"). - **Alto (m)**, **Ancho (m)**, **Largo (m)** *(obligatorios)* Ingresá medidas en **metros** con 3 decimales (ej.: `2.400`). El sistema calculará **Volumen (m³)** automáticamente (`alto × ancho × largo`) al guardar. - **Precio mensual** *(obligatorio)* Importe en la moneda del negocio, 2 decimales (ej.: `15000.00`). - **Activo** *(checkbox)* Indica si el espacio está disponible para operar/mostrar en listados. (Se envía `0`/`1`). - **Notas** *(opcional)* Observaciones internas (ej.: "Cerca del montacargas", "Requiere llave especial"). 🔁 **Cálculos automáticos** - **Volumen (m³)** se recalcula al **guardar** (no es editable). Esto lo hace el modelo `RentalSpace` en su `boot()`. 🔒 **Relaciones y estado** - Podés vincularlo a un **Piso** (`floor_id`). - Un espacio puede tener un **Contrato activo** (`activeContract`). - Estados posibles (referencia): **AVAILABLE**, **RESERVED**, **OCCUPIED**, **DISABLED**, **CLEANING**, **RESTORATION**. Algunos listados usan color/etiqueta según `status`. ✅ **Al guardar** - Si todo está bien: se crea el espacio, se calcula el volumen y verás un aviso de éxito; redirige al índice. - Si hay errores: se muestran mensajes y se preservan tus datos para corregir. 🚫 **Errores frecuentes** - Falta **Nombre** o dimensiones: completá los campos obligatorios. - Dimensiones con formato inválido: usar números con **punto** decimal y hasta **3 decimales**. - Precio con formato inválido: usar hasta **2 decimales**. 🧠 **Buenas prácticas** - Definí una **convención de nombres** (ej.: "B-01", "B-02" por piso/sección). - Cargá primero los **Pisos/Secciones** (si los usás) para facilitar la búsqueda. - Usá **Notas** para detalles operativos que ayuden al equipo (accesos, llaves, altura útil). 📌 **Consejo** Si necesitás filtrar por piso en listados o reportes, asociá siempre `floor_id` cuando corresponda. Ayuda del módulo: Buses 🚌 tourism_buses Creación y administración de buses utilizados en paquetes turísticos, con configuración por pisos, capacidad y clase de asientos para generar mapas y asignaciones. 📌 **¿Para qué sirve este módulo?** Este módulo te permite crear y administrar los **buses** que se usarán en los paquetes turísticos. Cada bus define su **configuración por pisos**, **capacidad** y **clase de asientos**. Con esa información el sistema puede: - Generar automáticamente los **asientos** (TourBusSeat). - Construir el **mapa de asientos**. - Permitir **asignación de pasajeros**. - Controlar **ocupación** (libre / reservado / confirmado) según ventas y reservas. --- 🧱 **Crear un bus (esta pantalla)** 1) Completá los datos principales del vehículo. 2) Definí si el bus tiene **1 o 2 pisos**. 3) Indicá la **capacidad por piso** y la **clase por piso**. 4) Confirmá con **Guardar** → el sistema generará automáticamente los asientos. --- 🚍 **Campos** 1) **Pisos (floors_count)** *(obligatorio)* - Indica si el bus tiene **1** o **2** pisos. - Si elegís **1 piso**, el Piso 2 queda inhabilitado (capacidad y clase). 2) **Capacidad Piso 1 (capacity_floor_1)** *(obligatorio)* - Cantidad de asientos del piso 1. - Debe ser **>= 1**. - Se usa para generar los asientos del piso 1. 3) **Capacidad Piso 2 (capacity_floor_2)** *(condicional)* - Obligatorio **solo si** el bus tiene **2 pisos**. - Debe ser **>= 1** cuando floors_count = 2. - Si floors_count = 1, se considera **0 / null** según tu implementación. 4) **Clase de asientos Piso 1 (seat_class_floor_1)** *(obligatorio)* - Define la categoría de asientos para el piso 1. - Ejemplos: **SEMICAMA / CAMA / EJECUTIVO / MINI** (según tus opciones). - Se usa en el mapa de asientos y en la identificación operativa. 5) **Clase de asientos Piso 2 (seat_class_floor_2)** *(condicional)* - Obligatorio **solo si** floors_count = 2. - Puede ser distinta a la del piso 1 (ej: piso 1 semicama, piso 2 cama). 6) **Patente** *(opcional)* - Identificador legal del vehículo. - Ej: ABC123 / AB123CD. - Útil para documentación y voucher. - Recomendado: evitar duplicados dentro del mismo negocio. 7) **Código interno** *(opcional)* - Alias operativo del bus. - Ej: BUS-01 / NORTE-02. 8) **Marca / Modelo** *(opcional)* - Información descriptiva. - Ej: Mercedes O500 – Marcopolo. 9) **Estado** *(obligatorio)* - **ACTIVO** → puede utilizarse en paquetes y asignaciones. - **INACTIVO** → no debería aparecer para nuevas operaciones. - Recomendado: inactivar en lugar de eliminar si ya tuvo movimientos. 10) **Observaciones** *(opcional)* - Características especiales: baño, aire, TV, servicio a bordo, doble piso, etc. --- 🧩 **Qué ocurre al guardar** - El sistema **genera automáticamente** los asientos (`TourBusSeat`) en base a: - floors_count - capacity_floor_1 - capacity_floor_2 - seat_class_floor_1 - seat_class_floor_2 - Esto alimenta el **mapa de asientos** y las futuras asignaciones. --- ⚠️ **Reglas / Validaciones típicas** - floors_count: **1 o 2**. - capacity_floor_1: **required, >= 1**. - capacity_floor_2: **required y >= 1** solo si floors_count = 2 (si no, debe ser 0/null). - seat_class_floor_1: **required**. - seat_class_floor_2: **required** solo si floors_count = 2. - status: **required**. - Recomendado: patente única por negocio. --- 🔒 **Restricciones por integridad (lógica de negocio)** - Si el bus ya tiene **reservas/ventas asociadas**, se bloquea la modificación del **layout** (capacidad/pisos/clases) para no romper asignaciones. - No se permite eliminar un bus si existen **ventas o reservas** asociadas. - Si se necesita sacar de circulación: usar **INACTIVO**. --- 📊 **Relación con otros módulos** - **Paquetes turísticos:** el paquete puede utilizar un bus específico. - **Ventas / Reservas:** asignan pasajeros a asientos del bus. - **Mapa de asientos:** se basa en pisos/capacidades/clases definidas aquí. --- 💡 **Buenas prácticas** - Definí pisos y capacidades antes de vender/asignar pasajeros. - No cambies capacidades si ya hubo operaciones. - Usá clases consistentes (SEMICAMA / CAMA / EJECUTIVO). - Inactivá unidades fuera de servicio en lugar de borrarlas. Ayuda del módulo: Caja (Ventas) basic_cashier Este módulo permite realizar ventas rápidas desde la caja, gestionar productos, aplicar descuentos, seleccionar métodos de pago y emitir comprobantes. 🛒 **Selección de productos** - Se muestran los artículos disponibles organizados por categoría. - Cada producto muestra: imagen, nombre, precio y stock disponible. - Al hacer clic en un producto, se agrega al resumen de caja con cantidad, descuento y botón para quitarlo. 🔍 **Búsqueda inteligente** - Usá el botón 🔍 para alternar entre: - Buscar por nombre o código de barras. - Buscar por marca. - Buscar por proveedor. - Escribí y presioná *Tab* para buscar artículos según el criterio seleccionado. 📦 **Carrito de productos** - Los productos seleccionados aparecen con: - Cantidad editable. - Descuento por unidad. - Precio final calculado. - Botón ❌ para eliminar el producto del carrito. - Se actualiza el **total de venta** automáticamente. 👥 **Cliente** - Seleccioná un cliente del sistema o ingresá un nombre libre para *cliente de paso*. 🧾 **Tipo de comprobante** - Podés elegir entre: Recibo X, Factura A, B, C o Remito. - Si elegís un tipo distinto a Recibo X, se debe ingresar el número correspondiente del comprobante. 💳 **Método de pago** - Seleccioná el método con el que se realizará el pago (efectivo, tarjeta, etc.). - Es obligatorio elegir uno para poder registrar la venta. 📍 **Geolocalización** - El sistema intenta capturar tu ubicación al momento de la venta y la guarda junto a la operación. - Si no se permite o no está disponible, la venta igualmente se puede registrar. 📤 **Finalizar venta** - Al hacer clic en **Registrar**, el sistema: - Valida que haya productos seleccionados. - Que esté elegido el cliente y el método de pago. - Que se haya completado el número del comprobante si corresponde. - Luego solicita confirmación con SweetAlert antes de enviar la venta. 🧠 **Validaciones inteligentes** - No se permite vender más unidades que el stock disponible. - Se evita aplicar un descuento mayor al precio. - Se controla que el total nunca sea negativo. 💡 Consejo: - Podés usar el módulo incluso con pantallas táctiles o escáner de código de barras para agilizar la operación. Ayuda del módulo: Cálculo de Comisiones por Usuario 🧮 commission Herramienta para calcular y registrar comisiones generadas por ventas en un período determinado para cada vendedor. 📊 **Objetivo del módulo** Este módulo permite calcular las comisiones de un vendedor basadas en sus ventas entre dos fechas. También puede registrar el pago de dicha comisión en el sistema. 🔎 **Pasos para usarlo:** 1. **Seleccionar Usuario** - Elegí el vendedor al que querés calcularle las comisiones. 2. **Definir el rango de fechas** - Ingresá una fecha de inicio y una de fin para acotar el período de ventas. 3. **Ingresar el porcentaje de comisión** - Este porcentaje se aplicará sobre el total de ventas del período. 4. **Consultar** - Al presionar el botón 'Consultar', se mostrarán: - El total vendido - El porcentaje ingresado - La comisión correspondiente calculada automáticamente 5. **Registrar comisión** - Si el cálculo es correcto, podés hacer clic en **Registrar comisión**, lo que almacenará el registro con: - Usuario - Fecha inicial y final - Monto total de ventas - Porcentaje - Comisión calculada 🖨️ **Imprimir resultados** Podés imprimir la tabla con un clic. Algunos elementos como filtros y botones serán ocultados automáticamente en la impresión. ⚠️ **Validaciones automáticas:** - No se permite seleccionar una fecha final menor que la inicial. - Se debe seleccionar un usuario. - El porcentaje no puede ser 0. Ayuda del módulo: Campañas 📣 campaign Este módulo te permite crear, editar y enviar campañas personalizadas a tus clientes. 📋 **Título de la campaña** Utilizá el editor visual para redactar un título atractivo. Podés aplicar formato como negrita, cursiva o listas. Este será el encabezado del mensaje que recibirán los clientes. 📝 **Detalle de la campaña** Redactá el contenido principal de la campaña en el editor. Incluí toda la información relevante: promociones, novedades, invitaciones, etc. Se permite aplicar formato enriquecido para hacerlo más visual y claro. 👥 **Selección de clientes** Marcá los clientes a quienes querés enviar la campaña. Podés usar el botón *Seleccionar todos* o tildar individualmente. 📧 Solo se mostrarán clientes con un correo electrónico válido. 🔄 **Editar campaña** Si estás modificando una campaña existente, el formulario se completa automáticamente con los datos actuales. Al finalizar, presioná *Actualizar*. 📤 **Enviar campaña** Una vez finalizado el contenido y seleccionados los destinatarios, hacé clic en *Registrar*. La campaña se almacenará y estará lista para ser enviada desde el panel de gestión. 📌 **Importante** - El título y el detalle son campos obligatorios. - Asegurate de seleccionar al menos un cliente para que la campaña tenga destinatarios. 🛠️ **¿Problemas al cargar la ayuda?** Hacé clic en el ícono de pregunta para volver a abrir esta ayuda o contactá con soporte si el problema persiste. Ayuda del módulo: Características de unidad 🧩 unit_features Registrar o editar características (atributos) que pueden asociarse a unidades: baño en suite, cochera, patio, balcón, etc. 🎯 **Objetivo** Crear o editar **características de unidad** que describen atributos como *Baño en suite*, *Cochera*, *Patio*, *Balcón*, etc. Luego se pueden asociar múltiples características a cada unidad. 🧩 **Dónde estás** **Panel administrador → Características → Registrar / Editar** Títulos de pantalla: - *Registro de características* (alta) - *Edición de características* (modificación) 🧭 **Flujo rápido** 1) Ir a **Panel administrador → Características**. 2) Hacer clic en **Nueva característica** o en **Editar** para modificar una existente. 3) Completar el formulario: **Nombre**, **Detalle** (opcional) y **Activo**. 4) Guardar con **Guardar** (alta) o **Actualizar** (edición). 5) Volvemos al listado con mensaje de confirmación. 🧾 **Campos del formulario** - **Nombre** (`name`) — **Obligatorio**, máx. 255 caracteres, **único**. Se normaliza a **MAYÚSCULAS** y se limpian comillas/espacios especiales. - **Detalle** (`detail`) — **Opcional**. Texto informativo para aclaraciones. - **Activo** (`is_active`) — Checkbox. Envía siempre `0`/`1`. Sugerido desactivar lo obsoleto en lugar de eliminarlo. 🛠️ **Qué pasa al guardar** - **POST** a `unit_features.store` si es nuevo. - **PUT** a `unit_features.update` si es edición. - Se persisten: `name`, `detail`, `is_active`. - Redirige al índice `unit_features.index` con alerta de éxito. 🚫 **Errores comunes** - Intentar guardar sin **Nombre**. - Duplicar **Nombre** existente. - Eliminar una característica aún vinculada a unidades (si no usás `cascade` o lo tenés bloqueado por regla de negocio). 🧠 **Buenas prácticas** - Mantener nombres **consistentes y claros** (ej.: COCHERA, BAÑO EN SUITE). - **Desactivar** en lugar de eliminar para preservar historial. - Si usás búsqueda, agrupá condiciones (`where(...)->orWhere(...)`) para resultados más precisos. 💡 **Tip** - El **toggle de Activo** desde el listado permite activar/desactivar **sin recargar** la página. - El botón **❓** abre esta ayuda en modal para consulta rápida. Ayuda del módulo: Cierre de Comodatos loanclose Cierre definitivo del comodato y reintegro total de artículos. 📌 **¿Qué es un comodato?** Un comodato es el préstamo de productos al cliente sin cargo, por un tiempo determinado, que puede devolverse parcial o totalmente. 🛠️ **¿Qué podés hacer en este módulo?** @if ($operation == 0) - Registrar devoluciones **parciales** de artículos o combos. @else - Registrar la **devolución total** y **cerrar** el comodato. @endif 🔄 **Pasos para completar la devolución:** 1. **Revisar información del comodato** Se muestra el cliente, la fecha de inicio del comodato y el total aún pendiente de reintegro. 2. **Ingresar las cantidades devueltas** - Para cada artículo y combo prestado, indicá cuántas unidades devuelve el cliente. - El sistema controla que no se ingrese una cantidad mayor a la prestada. 3. **Ver el total acumulado** A medida que se ingresan cantidades, se actualiza automáticamente el monto total del reintegro. 4. **Confirmar la operación** - Si es parcial, el comodato sigue abierto. - Si es cierre, se finaliza el comodato y se registra el total reintegrado. ✅ **Importante:** - Las cantidades devueltas impactan directamente en el stock. - El reintegro **parcial** puede repetirse hasta completar el total prestado. - Una vez cerrado, el comodato **no puede modificarse**. ❓ **¿Necesitás más ayuda?** Hacé clic en el botón de ayuda o consultá a tu supervisor. Ayuda del módulo: Cocina kitchen-view Gestioná las órdenes en cocina en tiempo real: cambiá estados (Nuevo, En preparación, Listo, Servido), revisá ítems sin precios, reconocé cambios antes de marcar “Listo” y recibí avisos por sonido/toasts. El tablero se actualiza automáticamente. 🍳 Tablero de cocina - El tablero muestra tarjetas por orden con su estado y meta-información (mapa, mesa, cliente, cantidad de ítems). - Se actualiza automáticamente cada 7 segundos. Podés pausar/reanudar con el botón “Pausar/Seguir”. 🟢 Estados y flujo de trabajo - NEW (Nuevo): Orden recién ingresada. - IN_PROGRESS (En preparación): Pulsa “Comenzar” para indicar que el equipo ya cocina. - READY (Listo para servir): Cuando finalizás la preparación, marcá “Listo”. Si hubo cambios en la orden (“Actualizada”), primero confirmá “Revisada” y luego “Listo”. - SERVED (Servido): Se usa cuando el mozo confirma que el pedido fue entregado. ⚠️ Orden “Actualizada” (revisión obligatoria) - Si la orden cambió mientras cocinabas (por ejemplo, agregaron/quitaron ítems), verás una cinta “ACTUALIZADA”. - Antes de marcar “Listo” deberás confirmar “Revisada” para evitar duplicar preparación. 📝 Ver ítems (sin precios) - Abrí “Ver ítems” para ver el detalle de productos y cantidades. No se muestran precios en cocina. - El contenido se cachea por orden y se invalida automáticamente cuando hay cambios. 🔔 Sonidos y avisos - Habilitá sonidos con el botón específico (“Habilitar sonidos”). Por políticas del navegador, requieren una interacción previa. - Cuando llegan órdenes nuevas se reproduce un sonido y aparece un toast informativo. - Al marcar “Listo”, suena un aviso de confirmación. 🧰 Acciones rápidas - “Comenzar” → pasa la orden a En preparación. - “Listo” → pasa la orden a Listo para servir (si la orden estaba “Actualizada”, primero “Revisada”). - “Servido” → marca la orden como entregada. - “Revisada” → quita la cinta “ACTUALIZADA” cuando ya verificaste los cambios. 🔁 Actualización incremental - El tablero pide datos completos periódicamente y, entre medias, hace refrescos “delta” con ?since= para reducir tráfico. - Si una orden deja de aparecer en el tablero (por ejemplo, porque ya se sirvió o fue cancelada), se remueve en el refresco completo. ℹ️ Consejos - Si no ves cambios, pulsá “Actualizar” o revisá la conexión. - Si el navegador bloquea los sonidos, tocá “Habilitar sonidos”. - Los colores del punto de estado indican: Nuevo (gris), En preparación (celeste), Listo (verde), Servido (violeta). Ayuda del módulo: Comodatos 📄 loan Registro de préstamos temporales de productos a clientes en calidad de comodato. 📌 **¿Qué es un comodato?** Un comodato es un préstamo de artículos a un cliente sin costo, por un tiempo determinado, que debe devolverse en buen estado. 🛠️ **Pasos para registrar un comodato:** 1. **Seleccionar cliente** Elegí el cliente al que se le prestarán los artículos. Este paso es obligatorio. 2. **Cargar producto por código de barras o búsqueda por nombre** - Escaneá el código o escribí el nombre del producto. - Se completarán automáticamente el precio y el stock actual. - Se puede modificar la cantidad antes de agregarlo al detalle. 3. **Agregar artículos** - Hacé clic en *Agregar artículo* para incluirlo al comodato. - Podés agregar múltiples artículos. - El sistema controla que no se exceda el stock disponible. 4. **Establecer fecha fin del comodato** - Esta fecha indica cuándo debe devolverse el artículo. - Se sugiere automáticamente según la configuración del negocio (días o meses). 5. **Observaciones** - Se debe completar con una descripción breve (mínimo 5 letras). - Si está incompleto, se solicita confirmación antes de registrar. 🧾 **Detalle de la tabla:** - **Eliminar**: Permite quitar un artículo del comodato. - **Artículo / Precio / Cantidad**: Información de los productos agregados. - **Subtotal / Total / Total a pagar**: Calculado automáticamente. 📍 **Geolocalización automática:** Se registra la IP y coordenadas del usuario que genera el comodato, para mayor control de auditoría. 🛑 **Importante:** El monto total del comodato impactará como *Nota de Débito* en la cuenta del cliente. Solo usuarios con permisos especiales pueden modificar descuentos o impuestos. ❓ **¿Tenés dudas?** Presioná el botón de ayuda o consultá a tu administrador para más información. Ayuda del módulo: Configuración de impresora printer Este módulo permite configurar el tipo de impresora predeterminada y los parámetros necesarios para su funcionamiento según su tipo (térmica o tradicional). 🖨️ **Tipo de impresora** - Podés seleccionar entre impresoras: - 🧾 **Térmicas** (usadas comúnmente para tickets) - 📄 **Inkjet o Láser** (usadas para documentos A4, A5, etc.) 📐 **Tamaño de papel** - Si seleccionás impresora térmica, podés elegir tamaños como: - 58mm, 80mm, etc. - Si seleccionás inkjet/láser, podés elegir tamaños comunes como: - A4, A5, A6, Letter, Legal, Oficio 🧾 **Nombre** - Para impresoras tradicionales, debés especificar el nombre exacto de la impresora instalada en tu sistema. 🛠️ **Edición** - El botón `Actualizar` permite modificar la configuración seleccionada previamente. 🎛️ **Visualización dinámica** - El formulario cambia automáticamente según el tipo de impresora que selecciones. - Solo se muestran los campos necesarios para cada tipo, ayudando a evitar errores. ❓ **Botón de ayuda** - El ícono ❓ ubicado en el encabezado abre esta ayuda para conocer cómo utilizar la interfaz correctamente. 💡 **Consejo** - Si usás una impresora térmica, asegurate de tener configurado correctamente el tamaño del papel en el sistema operativo para evitar errores de corte o margen. Ayuda del módulo: Configuración de PDFs 🧾⚙️ pdf_settings Permite configurar tipografías y tamaños para PDFs por módulo y por template. La prioridad de aplicación es: Template → Módulo → valores por defecto. 📌 **¿Para qué sirve este módulo?** Este panel te permite definir **cómo se ven los PDFs** (tipografía y tamaños) en tu sistema, con una jerarquía clara: ✅ **Prioridad de aplicación:** **Template** → **Módulo** → **Defaults del sistema** Es decir: si un template tiene override, **manda el template**. Si no, se usa el **default del módulo**. --- 🧩 **Conceptos clave** - **Módulo:** grupo funcional (por ejemplo: ventas, compras, work, etc.). - **Template:** un PDF específico dentro de un módulo (por ejemplo: `work.listado_de_trabajos`). - **Default del módulo:** configuración general que se aplica a todo el módulo. - **Override del template:** configuración especial que aplica solo a ese template. --- 🧾 **PDF vs Ticket (térmico)** En cada card vas a ver 2 secciones: 1) **PDF (Reportes / Hojas)** - Para reportes A4/carta u hojas completas. - Define familia y tamaños para textos y tablas. 2) **Ticket (térmico)** - Para impresiones tipo ticket (58mm/80mm). - Suele requerir tamaños más chicos y compactos. --- 🛠️ **Cómo usarlo (paso a paso)** 1) Elegí un **Módulo** y presioná **Ver**. 2) Primero configurá el **Default del módulo**: - Elegí **Familia** (recomendado: **DejaVu Sans**). - Ajustá tamaños: - **Base**: tamaño principal del texto. - **Small**: textos secundarios / notas. - **TH**: encabezados de tabla. - **TD small**: celdas pequeñas / columnas compactas. - Guardá con **Guardar default**. 3) Luego, si un template necesita un formato distinto, configurá el **Override del template** y presioná **Guardar**. 💡 Tip: la mejor práctica es **definir bien el default del módulo** y tocar solo los templates “especiales”. --- 📌 **Qué significa cada campo** - **Familia:** fuente usada (compatibles con dompdf). - **Base:** tamaño general. - **Small:** textos más chicos (subtítulos, observaciones, etc.). - **TH:** tamaño para encabezados de tablas (`<th>`). - **TD small:** tamaño para celdas compactas (`<td>` cuando se usa variante small). --- ✅ **Estado (Activo / Inactivo)** - **Activo:** la configuración se aplica. - **Inactivo:** se ignora y el sistema cae al siguiente nivel (Template → Módulo → default). Ejemplo: - Si desactivás un **override de template**, vuelve a aplicar el **default del módulo**. - Si desactivás el **default del módulo**, el sistema usará los **defaults internos**. --- 🧯 **Recomendaciones para evitar errores de render** - Usá **DejaVu Sans** si hay acentos, eñes, símbolos o textos largos. - No pongas tamaños demasiado grandes en tickets: suele romper saltos de línea. - Si una tabla se “desarma”, bajá **TH** y **TD small**. - Para módulos con tablas densas, una base de **10.0–11.0** suele funcionar bien. --- 🟡 **Si no ves templates** Si aparece el mensaje de “No hay templates declarados”, revisá: - El archivo **`config/pdf_templates.php`** - Que el template tenga `module` y `key` definidos. --- 🔎 **Cómo verificar que se aplicó** 1) Guardá cambios. 2) Generá el PDF de ese módulo/template. 3) Si el template no cambió, asegurate de: - Haber guardado con el `template_key` correcto - Que esté **Activo** - Que el PDF que estás viendo corresponda a ese template Ayuda del módulo: Configuración E-commerce 🛒 ecommerce_configuration Configuración de textos y contenidos visibles de la tienda online: secciones informativas, contacto, ubicación, CTA, tarjetas destacadas, footer y descarga del QR de acceso. 📌 **¿Para qué sirve este módulo?** Este módulo te permite configurar los **textos visibles de la tienda online** del e-commerce. Desde aquí podés personalizar el contenido institucional y comercial que verá el cliente en la tienda pública, incluyendo: - Sección **Sobre nosotros**. - Sección **Ubicación**. - Sección **Contacto**. - Sección **Llamado a la acción (CTA)**. - **Tarjetas destacadas** con ícono, título y descripción. - Texto de marca del **footer**. - Descarga del **QR** para acceso directo a la tienda. --- 🧱 **¿Qué se configura en esta pantalla?** Esta pantalla no administra productos, stock ni ventas. Su objetivo es definir el **contenido visual y textual** de la tienda online para mejorar la presentación del negocio y la experiencia del cliente. --- 📝 **Sección: Sobre nosotros** Permite cargar el contenido institucional principal de la tienda. 1) **Kicker** - Texto corto introductorio o subtítulo visual. - Suele usarse como frase superior decorativa o contextual. 2) **Título** - Encabezado principal de la sección. - Ejemplo: **Quiénes somos**, **Nuestra historia**, **Moda con identidad**. 3) **Descripción** - Texto principal explicando el negocio, propuesta de valor o trayectoria. - Conviene usar un mensaje claro, breve y comercial. --- 🧩 **Tarjetas informativas** Esta sección permite mostrar bloques complementarios dentro del apartado institucional. Para cada tarjeta se puede definir: - **Título** - **Descripción** Se incluyen: - Tarjeta 1 - Tarjeta 2 - Tarjeta 3 - Tarjeta 4 💡 Recomendación: usar estas tarjetas para destacar beneficios como: - calidad del producto - atención personalizada - trayectoria - envíos - medios de pago - compromiso con el cliente --- 📍 **Sección: Ubicación** Permite mostrar información relacionada con el lugar físico del negocio. 1) **Kicker** - Texto corto introductorio de la sección. 2) **Título** - Encabezado principal. - Ejemplo: **Dónde encontrarnos**. 3) **Descripción** - Texto descriptivo sobre dirección, zona de atención o referencias del local. 💡 Esta sección puede complementar un mapa o información visual si la tienda lo incorpora en el front. --- 📞 **Sección: Contacto** Permite presentar la información textual de contacto de la tienda. 1) **Kicker** - Texto introductorio breve. 2) **Título** - Encabezado principal de contacto. - Ejemplo: **Estamos para ayudarte**. 3) **Descripción** - Texto general sobre canales de contacto, tiempos de respuesta o asistencia. 4) **Tarjeta contacto - Título** - Título de una tarjeta adicional de contacto. 5) **Tarjeta contacto - Descripción** - Texto descriptivo complementario para destacar atención, soporte o información útil. --- ⭐ **Tarjetas destacadas del CTA** Esta sección permite configurar dos bloques visuales destacados dentro del área de llamado a la acción. Cada tarjeta tiene: 1) **Ícono** - Se selecciona desde una lista predefinida. - Tiene vista previa inmediata en pantalla. - Opciones observadas en la vista: - Remera - Envío - Tarjeta - Destacado - Calidad premium - Bolsa de compras - Promociones - Compra segura - Favorito - Tienda 2) **Título** - Encabezado breve del beneficio o mensaje destacado. 3) **Descripción** - Texto corto explicando el beneficio. 💡 Ejemplos de uso: - Envíos a domicilio - Compra segura - Productos destacados - Promociones especiales --- 📢 **Sección: Llamado a la acción (CTA)** Sirve para reforzar el cierre comercial e invitar al cliente a comprar o contactar. 1) **Kicker** - Texto breve superior. 2) **Título** - Mensaje principal del CTA. - Ejemplo: **Descubrí nuestra colección**. 3) **Descripción** - Texto persuasivo para incentivar la compra, el contacto o la navegación por la tienda. --- 👣 **Footer** Permite definir el texto de marca que se mostrará al pie de la tienda. 1) **Texto de marca en footer** - Puede incluir descripción breve del negocio, lema comercial o mensaje institucional. - Recomendado mantenerlo corto y claro. --- 📲 **Botón Descargar QR** En la parte superior de la pantalla hay un botón para descargar el **QR de la tienda**. Este QR apunta a la ruta pública del e-commerce: - `/tienda` Su objetivo es facilitar: - impresión - exhibición en mostrador - envío por WhatsApp - difusión en redes o material gráfico --- 💾 **Guardar configuración** Al presionar **Guardar configuración**: - se almacenan los textos cargados en los campos del negocio - los cambios impactan sobre el contenido visual de la tienda online - no modifica productos, categorías, stock ni clientes --- ⚠️ **Qué NO hace este módulo** Este módulo no sirve para: - crear productos - cambiar precios - administrar stock - ver ventas - gestionar pedidos - crear marcas o categorías Su función es exclusivamente de **configuración visual y textual** del e-commerce. --- 🧪 **Buenas prácticas** - Usar títulos cortos y claros. - Evitar textos demasiado largos en descripciones. - Mantener coherencia entre el tono de las secciones. - Revisar ortografía antes de guardar. - Usar las tarjetas para destacar beneficios concretos. - Descargar e imprimir el QR para facilitar el acceso de clientes a la tienda. --- 🔗 **Relación con otros módulos** - **Tienda online (/tienda):** consume y muestra estos textos. - **Productos / Marcas / Categorías:** se visualizan dentro de la tienda, pero no se administran aquí. - **Clientes / Ventas web:** operan dentro del e-commerce, aunque esta pantalla solo personaliza contenido. Ayuda del módulo: Configuración tienda on-line ⚙️ online_store_config Configuración de contenido, contacto, WhatsApp, Mercado Pago y estado general de la tienda. 📌 ¿Para qué sirve este módulo? Este módulo permite configurar el contenido y funcionamiento general de la tienda on-line. Desde aquí se define: - qué ve el cliente - cómo se contacta - cómo paga - si la tienda está activa --- 🏠 HOME Título home: Es el título principal de la tienda. Subtítulo home: Complemento del título. Cuerpo home: Texto descriptivo inicial. 💡 Recomendación: Usar mensajes claros y orientados a la venta. --- 👥 NOSOTROS Título nosotros: Encabezado de la sección institucional. Cuerpo nosotros: Descripción del negocio, historia o propuesta. --- 🏷️ OFERTAS Etiqueta ofertas: Texto corto para destacar promociones. Ejemplo: - Ofertas - Promociones - Destacados --- 📞 CONTACTO Email: Correo visible al cliente. Teléfono: Número de contacto. WhatsApp: Número principal de comunicación. Dirección: Ubicación del negocio. --- 🛒 CHECKOUT POR WHATSAPP WhatsApp checkout: Número usado para cerrar pedidos. Habilitar checkout por WhatsApp: Activa esta modalidad. 💡 Ideal para ventas asistidas. --- 📜 TÉRMINOS Y CONDICIONES Permite definir reglas de la tienda: - compras - envíos - cambios - pagos --- 💳 MERCADO PAGO Habilitar Mercado Pago: Activa pagos online. Public key: Clave pública. Access token: Clave privada. ⚠️ Deben ser válidas. --- 🧪 SANDBOX Modo prueba de Mercado Pago. Permite testear sin cobrar dinero real. --- ✅ TIENDA HABILITADA Activa o desactiva la tienda. Desactivada: - no disponible para clientes Activa: - tienda operativa --- 💾 GUARDAR Guarda todos los cambios. Cancelar: vuelve sin guardar. --- ⚠️ ESTE MÓDULO NO PERMITE - crear productos - manejar stock - ver pedidos - modificar precios --- ✅ BUENAS PRÁCTICAS - Revisar datos de contacto - Validar WhatsApp - Probar Mercado Pago en sandbox - Mantener textos claros - Revisar ortografía --- 🔗 RELACIÓN - Panel tienda - Pedidos online - Contactos - Checkout --- 🧠 RESUMEN Esta pantalla define cómo se presenta y cómo funciona la tienda. Es la base de configuración del e-commerce. Ayuda del módulo: Consulta General de Cuentas Corrientes 🔍 accountancies En esta vista podés realizar búsquedas y análisis de la deuda y los movimientos de todos los clientes con cuenta corriente habilitada. 🔎 **Filtros de búsqueda** En la parte superior tenés varios filtros para afinar tu consulta: - **Tipo de comprobante:** Seleccioná entre Débitos, Notas de crédito, Notas de débito, Pagos o Recibos. - **Fechas:** Podés filtrar por un rango específico (inicio y fin) o indicar una cantidad de días hacia atrás desde hoy. - **Comprobantes:** Permite agrupar por tipo general. 📋 **Tabla de resultados** Cada fila representa un cliente con los siguientes datos: - **Id / Cliente:** Identificación y nombre del cliente. - **Debe:** Saldo actual (negativo si debe dinero). - **Último Pago / Días transcurridos:** Fecha y antigüedad del último pago. - **Último Débito / Días transcurridos:** Fecha y antigüedad del último movimiento de débito. - **Ver:** Enlace al detalle completo de la cuenta corriente del cliente. 💡 **Sugerencias** - Si el cliente tiene muchos días sin pagar, el sistema te lo muestra en la columna correspondiente. - Para ver movimientos específicos o generar comprobantes, hacé clic en el ícono de ojo 👁️. 📌 **Recordá** - Solo se listan clientes que tienen movimientos registrados en la cuenta corriente. - El total en rojo al inicio representa la suma de todas las deudas activas del sistema. Ayuda del módulo: Contratos de alquiler de bauleras 🧭 rental_main_contract Desde aquí creás contratos para asignar una baulera (espacio) a un cliente, definiendo período, día de cobro, depósito y precio mensual. 📌 **¿Para qué sirve?** Este módulo permite **crear un contrato** entre un *Cliente* y un *Espacio (baulera)*. El contrato fija **fechas**, **precio**, **depósito** y **día de cobro**. Se recomienda crearlo desde un espacio **Disponible**. 🧩 **Dónde estás** **Panel administrador → Contratos → Nuevo** Título: *Contrato de alquiler de bauleras*. 📝 **Campos principales** - **Código** *(obligatorio)* Identificador único del contrato. Podés generarlo con el botón **Auto** (formato `CNT-YYYYMMDD-HHMMSS-IDESPACIO`). - **Cliente** *(obligatorio)* Seleccioná un cliente o creá uno nuevo con el botón **+**. - **Espacio** *(obligatorio)* Elegí la baulera. Al seleccionar, se sugiere el **Precio mensual**. - **Inicio** *(obligatorio)* Fecha de comienzo del contrato. - **Fin** *(opcional)* Si se indica, el contrato tiene fin determinado. Si no, queda abierto. - **Día de facturación** *(1..28)* Día del mes para generar el cobro/facturación. - **Depósito** *(opcional)* Monto de garantía (se visualiza con el **prepend** de moneda). - **Precio mensual** *(obligatorio)* Importe mensual del alquiler (con **prepend** de moneda). - **Notas** *(opcional)* Comentarios internos del contrato. ⚡ **Período rápido** Botonera para calcular **Fin** = *Inicio + N meses* con preservación del día (si el mes destino no lo tiene, usa el último día). También podés ingresar **Meses personalizados** y presionar **Aplicar**. ✅ **Confirmación antes de guardar** Al presionar **Guardar**, se muestra un **confirm con SweetAlert** que resume: - Código - Inicio (formato **DD/MM/YYYY**) - Fin (formato **DD/MM/YYYY**) - Día de cobro - Depósito y Precio mensual (con 2 decimales) Si confirmás, el sistema crea el contrato (estado inicial **ACTIVE**, salvo configuración distinta) y marca el espacio como **OCCUPIED**. 🔒 **Reglas y validaciones** - El **Código** debe ser **único**. - El **Espacio** debe estar **Disponible** y sin otro contrato **Activo** que se solape con `[Inicio, Fin]`. - **Fin** debe ser ≥ **Inicio** (si se indica). - **Día de facturación** entre **1** y **28**. - **Montos** no negativos (2 decimales). 🚫 **Errores frecuentes** - *“El espacio no está disponible”*: el espacio tiene estado distinto de **AVAILABLE** o ya posee un **contrato activo**. - *“Solapamiento con otro contrato activo”*: hay otro contrato del mismo espacio que cruza las fechas elegidas. - *“Código ya utilizado”*: generá otro con **Auto** o modificalo manualmente. 🧠 **Buenas prácticas** - Definí siempre el **Día de facturación** y usá **Período rápido** para minimizar errores de fechas. - Conservá un criterio consistente para el **Código**. - Revisá el resumen del **SweetAlert** antes de confirmar. 🔗 **Relación con otros módulos** - Un **Contrato** pertenece a un **Cliente** y a un **Espacio**. - Un **Espacio** con contrato **ACTIVO** pasa a estado **OCCUPIED**. Al cerrar o cancelar, si no hay otro contrato activo, vuelve a **AVAILABLE**. - Más adelante, desde este contrato podrás generar **comprobantes/facturas** y **registrar pagos**. ❓ **¿Dónde ver esta ayuda?** Tocá el ícono **?** en el título de la tarjeta. La ayuda se carga en un modal específico para el módulo `rental_main_contract`. Ayuda del módulo: Cuentas Corrientes 💼 accountancy Desde esta sección podés consultar todos los movimientos financieros del cliente vinculados a su cuenta corriente. 📊 **Resumen general** Al inicio verás un resumen con tarjetas por cada tipo de movimiento: - 🟦 **NC (Notas de crédito)** → Importe que el sistema descuenta como crédito. - 🟥 **ND (Notas de débito)** → Ajustes o cargos que aumentan la deuda. - 🟨 **DBT (Débitos por ventas)** → Importe cargado automáticamente por ventas en cuenta corriente. - 🟩 **PAY (Pagos)** → Dinero abonado por el cliente. - 🟪 **RCB (Recibos)** → Confirmación oficial de pagos. - 💟 **Disponible** → Saldo total que el cliente puede utilizar en su cuenta corriente. 🧾 **Tabla de movimientos** Cada fila representa un movimiento: - **Id** → Número del movimiento. - **Tipo** → Débito, Crédito, Nota, etc. - **Fecha** → Cuándo se generó. - **Monto** → Importe total. - **Estado** → Validado, Anulado, etc. - **Observaciones** → Comentarios o detalles extra. - **Venta** → Muestra el número de venta asociada (si existe). 🧰 **Acciones rápidas** - 🔍 Ver detalle. - 🖨️ Imprimir movimiento. - 📄 Descargar PDF. - ➕ Crear nuevos movimientos desde los íconos en las tarjetas superiores. 🔒 **Restricciones** - Solo los usuarios con permisos adecuados podrán editar o eliminar. - Los totales reflejan solo movimientos validados. - Algunos movimientos no se pueden modificar si están ligados a ventas cerradas. 📌 **Consejo** - Usá las tarjetas de resumen para identificar rápidamente la situación financiera del cliente y generar acciones correctivas o preventivas. Ayuda del módulo: Dashboard dashboard El dashboard es el panel principal del sistema, diseñado para brindarte una visión rápida y completa del estado actual de tu empresa. 📊 **Resumen general** - El dashboard muestra un resumen visual de las **ventas**, **compras**, **movimientos de caja**, **productos más vendidos**, y **categorías destacadas**. - Los valores están acompañados de íconos y colores para identificar su impacto (💹 ingresos, 📉 egresos). 📆 **Filtros de fecha** - Podés filtrar la información por **día**, **mes**, o **año** usando los botones disponibles o campos personalizados. - Esto te permite analizar el rendimiento de tu empresa en distintos períodos. 💰 **Indicadores principales** - Incluye tarjetas con datos como: - **Total vendido** 🛒 - **Total comprado** 📦 - **Movimientos de caja** 💵 - **Cantidad de clientes y productos activos** 👥🧾 📈 **Gráficos interactivos** - Los gráficos de barras o líneas muestran: - Evolución de ventas 🧮 - Comparación de categorías o productos más vendidos 🍔📦 - Comportamiento de ventas por hora o por vendedor. 🧾 **Listados rápidos** - Vistas rápidas de: - **Últimas ventas realizadas** - **Compras recientes** - **Cheques o echeques próximos a vencer** (si están habilitados los módulos). 🛠️ **Personalización** - La información mostrada puede variar según los módulos habilitados: - Si tenés ventas, caja, artículos, etc., verás los widgets relacionados. - Si activaste el módulo de restaurante, también se mostrarán datos de cocina y mesas. 📱 **Responsive** - El tablero se adapta a dispositivos móviles, permitiéndote revisar el estado del negocio desde cualquier lugar. ❓ **Botón de ayuda** - El ícono ❓ en el encabezado permite abrir esta ayuda para entender cómo usar el dashboard de forma eficiente. 💡 Consejo: - Usalo como punto de partida diario para tomar decisiones rápidas y eficaces. Si algo no se ve bien, revisá si hay permisos o módulos desactivados. Ayuda del módulo: Depósitos (Warehouses) 🏬 warehouse Creación y administración de depósitos para almacenar stock y realizar transferencias hacia la tienda principal u otros depósitos. 📌 **¿Para qué sirve este módulo?** Este módulo te permite crear y administrar **depósitos** donde vas a guardar mercadería **fuera de la tienda principal**. El stock del depósito se controla en **Depósitos**, y el stock vendible se controla en **Tienda principal (Productos)**. 🧱 **Crear un depósito (esta pantalla)** Completá los campos y presioná **Guardar**. ✅ **Campos** 1) **Nombre** *(obligatorio)* - Identifica el depósito (ej: *Depósito Central*, *Depósito Taller*, *Depósito Sucursal*). 2) **Código** *(opcional)* - Código corto para identificarlo rápido (ej: *DEP01*, *SUC2*). 3) **Dirección** *(opcional)* - Ubicación del depósito (útil para logística). 4) **Depósito por defecto** - Si lo activás, el sistema puede sugerirlo automáticamente al cargar movimientos o entradas de stock (según tu lógica). 5) **Activo** - Si está desactivado, el depósito no debería aparecer como opción en movimientos/transferencias (recomendado para depósitos fuera de uso). 🔄 **Cómo funciona el stock** - **Depósitos:** el stock vive en `warehouse_stocks` por depósito y producto. - **Tienda principal:** el stock vendible vive en `products.stock`. - **Ventas:** descuentan **solo** del stock de tienda principal. - **Transferencias:** mueven stock entre depósitos o desde depósito → tienda principal. 🚚 **Transferir stock** Luego de crear depósitos, usá el módulo **Transferencias** para: - **Depósito → Tienda** (incrementa stock vendible en productos) - **Depósito → Depósito** (traslado entre depósitos) ⚠️ **Validaciones típicas** - Nombre requerido. - No se permite duplicar nombres dentro del mismo negocio. - No se debe transferir más stock del disponible (el sistema valida stock insuficiente). 💡 **Buenas prácticas** - Usá nombres claros (Central / Sucursal / Taller). - Definí un depósito default si la mayoría de los ingresos van siempre al mismo. - Desactivá depósitos viejos en lugar de borrarlos si ya tienen historial. Ayuda del módulo: Desasignación de Clientes 🚫 unassignment Este formulario permite quitar el acceso del usuario de destino a los clientes asignados desde el usuario de origen. 🔄 **¿Qué hace este módulo?** Elimina la visibilidad o relación del *usuario de destino* sobre los clientes del *usuario de origen*. Es útil si: - Un usuario ya no debe gestionar ciertos clientes. - Se desea revertir una asignación anterior. 👤 **Usuario de origen:** - Es el que tiene originalmente asignados los clientes. 👥 **Usuario de destino:** - Es el que dejará de ver/gestionar esos clientes. ⚠️ **Restricciones:** - No se puede seleccionar el mismo usuario en ambos campos. - Ambos campos son obligatorios. 🧾 **Funcionamiento:** - Se elimina el vínculo de asignación entre el usuario destino y los clientes que pertenecen al usuario origen. - **Importante:** No se eliminan los clientes, ni se afecta al usuario de origen. ✅ **Pasos para desasignar:** 1. Elegir el *Usuario de origen*. 2. Elegir el *Usuario de destino*. 3. Hacer clic en **Desasignar** para completar la acción. 🔐 **Consejo de seguridad:** Esta función no borra datos, solo revoca el acceso compartido. Ayuda del módulo: Detalle de Caja 🧾 cashierdetail Visualizá en profundidad todos los movimientos asociados a una caja específica, incluyendo ventas, compras, reintegros, préstamos y otros ingresos o egresos. 📋 **Resumen General** Este módulo muestra un desglose completo de la caja N° `{{ $id }}`, incluyendo: - **Cajero asignado** - **Cantidad y total de ventas** - **Saldo inicial** - **Totales agrupados por método de pago** - **Cálculo del efectivo real en caja (En Caja)** 💼 **Secciones detalladas** - **Compras:** número y total de compras asociadas. - **Reintegros:** cantidad y monto de devoluciones realizadas. - **Comisiones:** si están habilitadas, se muestra su impacto en el total. - **Parciales:** cortes intermedios registrados durante la jornada. - **Préstamos:** pagos recibidos relacionados a créditos o cuotas. - **Empeños:** si la empresa lo habilita, muestra ingresos por este tipo de operaciones. - **Cuentas Corrientes:** incluye pagos, notas de crédito/débito, y débitos en ventas. 📊 **Tabla de ventas** Incluye todas las ventas asociadas a la caja: - Número de venta - Fecha - Cliente - Total - Estado (activo o cancelado) - Acciones disponibles: - 📄 Ver PDF - 🖨️ Imprimir - 👁️ Ver detalle - 📱 Enviar por WhatsApp - 🗑️ Eliminar (si la caja está abierta) ⚠️ **Importante** - Las ventas **no pueden ser modificadas** si la caja está cerrada. - Si una venta está cancelada, podés activarla nuevamente solo si la caja está abierta. 📥 **PDF y Reporte** Desde el ícono de PDF se puede descargar un **resumen impreso de toda la caja**. 🔙 **Regresar** Botón para volver a la pantalla anterior sin perder el contexto. Ayuda del módulo: Detalle de Cuenta Corriente 🧾 accountancydetail En esta vista podés consultar el estado detallado de la cuenta corriente de un cliente específico, incluyendo información de deudas, pagos, saldo disponible y compras recientes. 📌 **Información mostrada:** 🔴 **DEBE / HABER** - Muestra si el cliente tiene saldo a favor (*HABER*) o si está debiendo dinero (*DEBE*). - También se indica la fecha de la **última deuda generada**. 🟦 **SALDO DISPONIBLE** - Muestra cuánto tiene disponible el cliente para usar en cuenta corriente. - También se indica el **monto autorizado** como tope de crédito. 🟨 **ÚLTIMO PAGO** - Muestra el **monto del último pago** registrado por el cliente y su **fecha**. 🟩 **ÚLTIMA COMPRA** - Muestra el **monto y fecha** de la última compra realizada por el cliente. 🔙 **Botón Regresar** - Permite volver al detalle completo de los movimientos de cuenta corriente del cliente (pagos, notas, etc.). 🧠 **Sugerencias:** - Esta vista es ideal para hacer una revisión rápida del estado de cuenta sin entrar en los movimientos. - Usala como pantalla informativa antes de generar nuevos débitos o pagos. Ayuda del módulo: Generar Parcial 🧾 partial Este formulario permite realizar un corte de caja parcial registrando el monto en caja en un momento determinado. 🧮 **¿Qué es un parcial?** Un parcial es un corte intermedio de caja que te permite: - Registrar cuánto dinero hay en caja en un momento específico. - Justificar entregas parciales de dinero o arqueos. - Tener mayor control sobre el flujo de efectivo sin cerrar la caja. 📌 **Datos requeridos para generar un parcial:** 1. **Monto recibido:** Dinero contado en ese momento. 2. **Responsable:** Persona que realiza o valida el parcial. 3. **Observaciones:** Comentarios relevantes del corte (recomendado especificar si hubo diferencias). ⚠️ **Importante:** - El sistema muestra automáticamente el monto calculado como sugerencia, pero podés ajustarlo si lo que se entrega es distinto. - Las diferencias entre el saldo de apertura y el cierre se muestran destacadas para facilitar su control. - Si hay reintegros, comisiones, préstamos o empeños asociados a la caja, se mostrarán detalladamente para justificar el dinero disponible. 🧾 **Luego de confirmar el parcial:** - Se registrará en el historial de parciales de la caja. - No podrá ser editado o eliminado. - Podrás descargar el comprobante en PDF o imprimirlo. 🔒 **Seguridad:** Antes de generar el parcial, el sistema validará: - Que el monto sea mayor o igual a cero. - Que haya un responsable seleccionado. - Que las observaciones no estén vacías. Ayuda del módulo: Gestión de Artículos products Este módulo permite visualizar, filtrar, editar o eliminar artículos registrados en el sistema, incluyendo sus precios, categorías, stock, visibilidad y estado. Procedimiento 🔍 Búsqueda avanzada Usá los filtros disponibles para encontrar artículos más fácilmente: - **Proveedor, Marca, Categoría y Subcategoría**: Filtran por origen y clasificación del artículo. - **Tamaño y Segmento**: Ideales para productos como ropa o calzado. - **Visibilidad**: Permite mostrar solo los artículos visibles en POS o ecommerce. *Al cambiar cualquier filtro, el listado se actualiza automáticamente.* 📋 Tabla de artículos Cada fila representa un artículo e incluye: - **Nombre, Unidad de medida y Categoría**. - **Precios**: Se muestran todos los tipos habilitados (minorista, mayorista, etc.). - **Moneda**: Indicada con una bandera (Pesos, Dólares o Euros). - **Stock actual**. - **Fecha de última modificación**. - **Estado**: Podés activar o desactivar el artículo desde la misma tabla. - **Vencimiento**: Si tiene una fecha de expiración, aparecerá; si no, mostrará 'Sin definir'. ⚙️ Acciones En cada artículo podés: - **Editar**: Cambiar sus datos. - **Eliminar**: Borrarlo del sistema si tenés los permisos necesarios. 📎 Paginación Si hay muchos artículos, se dividen en varias páginas. Navegá usando los controles al pie de la tabla. ❓ Botón de ayuda Hacé clic en el ícono de ayuda junto al título 'Artículos' para consultar esta explicación cuando lo necesites. Ayuda del módulo: Gestión de Caja (V2) 🧾💰 basic_cashier_v2 Pantalla de cobro rápida con categorías, búsqueda, carrito, lista de precios, métodos de pago con interés, vuelto, ticket y factura ARCA. 📌 **¿Para qué sirve este módulo?** Esta pantalla es la **caja rápida (V2)** para registrar ventas desde **Tienda principal** (productos y servicios), calculando: - Subtotal - Intereses por método de pago - Total a cobrar - Vuelto - (Opcional) Ticket y/o Factura ARCA --- ## 🧭 Estructura de la pantalla La vista tiene 3 zonas principales: 1) **Categorías (izquierda)** - Botones para filtrar productos por categoría. - Podés **ocultar/mostrar** con el botón *Ocultar Categorías* para ganar espacio. 2) **Productos (centro)** - Grilla de productos/servicios. - Cada tarjeta muestra: nombre, precio, stock (si aplica). - Click en un producto lo agrega al carrito (si hay stock y el negocio controla stock). 3) **Resumen de Caja (derecha)** - Carrito (items + cantidades + descuentos) - Medios de pago - Totales (subtotal, interés, total, vuelto) - ARCA (si corresponde) - Observaciones - Botón **Registrar** --- ## 🔎 Búsqueda de productos (V2) Tenés 3 modos de búsqueda (se alternan con el botón de flechas): - **Nombre / Código de barras** - **Marca** - **Proveedor** ✅ Para buscar: - Escribí y presioná **Enter** o **Tab**, o el botón **Buscar**. --- ## 🏷️ Lista de precios Si tu usuario tiene permisos, vas a ver el selector de **lista de precios** (por ejemplo: Minorista, Mayorista, Preferencial, Fábrica, Distribuidor, Reparto, Especial). 🧠 Importante: - Cuando cambiás la lista, el sistema vuelve a traer productos (según lo último que hiciste): - Última categoría seleccionada, o - Última búsqueda realizada. --- ## 🛒 Carrito / Items seleccionados Al agregar un producto o servicio, aparece una fila con: - **Precio** (editable si tenés permiso `sales.price.modify`) - **Cantidad** - **Descuento** (editable si tenés permiso `sales.discount`) - **Total línea** (precio × cantidad - descuento) - Botón **Quitar** ⚠️ Validaciones típicas: - No permite cantidad mayor al stock (si hay control de stock). - No permite descuento negativo. - No permite descuento mayor o igual al total de la línea. --- ## 💳 Métodos de pago (múltiples) + Interés Podés cargar 1 o más métodos de pago: - Elegís el método (puede tener % de interés) - Cargás el **monto** - Podés agregar otra línea con **Agregar otro método** - Podés quitar líneas con la ❌ 🧾 **Cómo calcula el interés** - El interés se calcula por línea: `monto × (tax/100)` - Se muestra: - **Sub Total** (suma de líneas sin interés) - **Interés** (suma de intereses) - **Total** = Sub Total + Interés 💡 **Tip importante (para métodos con interés)** Si un método tiene interés y vos tipeás el **TOTAL cobrado** (con interés) en ese método, al salir del campo el sistema lo convierte automáticamente al **monto base** (sin interés) para que: - contablemente sume bien el Sub Total, - y el interés se calcule separado. --- ## 🪙 Vuelto (cambio) El vuelto se calcula contra el **total con interés**: - **Entregó** = suma real entregada (monto + interés por cada método) - **Total a cobrar** = Sub Total + Interés - **Vuelto** = Entregó - Total a cobrar ✅ Si hay vuelto, se muestra: - En el campo **Cambio** - Y también un mensaje informativo (Entregó / Vuelto) - Y al registrar, aparece un modal con el vuelto (para evitar errores) --- ## 🧾 Ticket El checkbox **Ticket** permite indicar si se imprime/genera ticket (según configuración del negocio). Si el sistema devuelve un `ticketUrl`, se abre automáticamente en una pestaña nueva. --- ## 🧷 Observaciones (con prefijo rápido) Botón **Añadir observación** despliega el textarea. Además tenés un botón con ícono (configurable) que inserta un prefijo tipo: **"Cuadro N°:"** (o el que tengas en `obs_prefix`) para escribir rápido. --- ## 🧾 ARCA (Factura electrónica) Si el negocio tiene **ARCA habilitado**, aparece el selector: - **No generar factura** - **Sí, generar factura ARCA** ### ✅ DNI + Nombre del cliente (solo si corresponde) El sistema muestra los campos **Nombre** y **DNI** cuando se cumplen estas condiciones: - Generar factura ARCA = **Sí** - Cliente seleccionado = **Cliente por defecto (ID 1)** - El **Sub Total** es mayor o igual al mínimo configurado (`invoice_min_amount`) 📌 Esto evita pedir datos cuando no hace falta, pero obliga a pedirlos cuando corresponde. --- ## 📍 Geolocalización La caja intenta obtener ubicación y guarda: - `latitude` - `longitude` Se refresca automáticamente cada ~100 segundos. Si falla y el usuario tiene permiso `users.force_location`, puede mostrar un aviso. --- ## ✅ Registrar venta Al presionar **Registrar**: 1) Valida que haya productos en el carrito. 2) Valida cliente seleccionado. 3) Valida que cada método de pago tenga: - método elegido - monto > 0 4) Valida que los métodos (base) sumen exactamente el **Sub Total**. 5) Valida que el cliente haya entregado al menos el **Total con interés**. 6) Si hay vuelto, muestra modal informativo. 7) Pide confirmación final: **¿Deseás registrar la venta?** --- 💡 **Buenas prácticas** - Usá la búsqueda por **código de barras** para agilizar. - Si hay interés, cargá el monto del método normalmente y dejá que el sistema calcule el total. - Verificá el modal de vuelto antes de confirmar. - Si emitís factura ARCA con cliente genérico, completá DNI y nombre cuando el monto lo exija. Ayuda del módulo: Gestión de Cajas cashier Este módulo permite la apertura, seguimiento, movimiento, y cierre de cajas diarias con detalle de ventas, pagos y cheques/e-cheques. 🔐 **Apertura y cierre de caja** - Para abrir una caja, presioná el botón 'Abrir'. Si ya hay una caja abierta, verás los botones para cerrar o realizar operaciones. - El botón 'Cerrar' te permite finalizar la jornada de caja, registrando todos los movimientos y ventas. - El botón 'Parcial' te permite realizar un cierre parcial. 💸 **Movimientos** - Usá el botón 'Movimiento' para registrar ingresos o egresos distintos a ventas (por ejemplo: gastos, adelantos, etc.). 🧾 **Listado de ventas** - Verás todas las ventas realizadas en esta caja, con su fecha, cliente, documento, total y estado. - Podés finalizar una venta pendiente con el botón “Finalizar venta”. - Si una venta fue cancelada, aparecerá en rojo como 'Cancelada'. 📄 **Documentos** - Podés elegir el tipo de documento: Recibo X, Factura A/B/C o Remito. - Si seleccionás 'Recibo X', el campo de número de documento se desactiva automáticamente. 💰 **Métodos de pago** - Al finalizar una venta, podés cargar múltiples métodos de pago. Cada método puede tener intereses asociados. - El sistema calcula automáticamente el saldo restante y los intereses. - Se permiten pagos parciales, cuenta corriente, cheques y e-cheques. 📑 **Cheques y E-cheques** - Los pagos con cheque o e-cheque deben incluir: - Número - Monto - Banco - Fecha de emisión - Fecha de vencimiento (mayor a la de emisión y no menor a la actual) - El sistema calcula los intereses y los muestra al instante. - Se pueden agregar varios cheques por venta. 📊 **Resumen del pago** - Al ir agregando pagos, el sistema muestra: - Total pagado - Total en cheques - Total en e-cheques - Total a cuenta corriente - Saldo restante ✅ **Finalización automática** - Cuando el total de pagos (capital + intereses) iguala al total de la venta, se habilita el botón “Finalizar venta. 🧍‍♂️ **Ventas Externas** - Se muestran aquí las ventas realizadas por vendedores ambulantes, ventas móviles o cualquier operación no asociada a una caja registrada dentro del sistema. Estas transacciones no están ligadas a una apertura de caja tradicional, pero igualmente quedan registradas para control y seguimiento. 🛠️ **Atajos** - Icono de PDF: descarga el comprobante - Icono de impresora: imprime el ticket - Icono de ojo: ver detalles de la venta - Icono de WhatsApp: envía la venta al cliente por mensaje con el PDF 🧹 **Reiniciar pagos** - Si necesitás reiniciar una venta, usá el botón con ícono de reciclaje. Esto borra todos los pagos cargados para esa venta. ⚠️ **Recomendaciones** - Evitá cerrar la caja si tenés ventas sin finalizar. - Verificá siempre las fechas de vencimiento de los cheques. - Tené en cuenta el disponible en cuenta corriente antes de cargar pagos por ese método. Ayuda del módulo: Gestión de Cajas cashiers Este módulo permite visualizar, gestionar y analizar las cajas abiertas diariamente o anualmente, con acceso detallado al historial y total de ventas. 📆 **Vista de cajas** - Dependiendo del contexto, se mostrarán **Cajas Diarias** o **Cajas Anuales**. - En la vista de **Cajas Diarias**, verás una lista de los días con cajas abiertas, el total vendido y un botón para ver más detalles del día. - En la vista de **Cajas Anuales**, verás el total de cajas abiertas en cada año, la cantidad de cajas y el total vendido acumulado. 🔍 **Detalle de cajas** - El botón con el ícono 👁️ (ojo) permite ver el detalle de las cajas abiertas en un día o en un año, dependiendo de la vista actual. - El total de ventas se muestra con el código de moneda de tu país. ❓ **Botón de ayuda** - El ícono ❓ ubicado junto al título del módulo permite abrir esta ayuda para entender cómo utilizar la interfaz. ⚙️ **Opciones adicionales** - El botón de tres puntos verticales (⋮) está reservado para futuras funcionalidades adicionales o accesos rápidos. 🧾 **Tabla de información** - Las tablas son ordenables y muestran columnas como ID, Fecha, Total y Acción. - Los totales están formateados con separadores decimales y de miles según la configuración local. 💡 Consejo: - Si no ves resultados, asegurate de que existan cajas abiertas en los días o años correspondientes. Ayuda del módulo: Gestión de Cajas boxes Este módulo permite consultar las ventas agrupadas por día o por año, con acceso al detalle de cada caja. 📅 **Vista de ventas por día o año** - Si accedés con una fecha, verás las **ventas diarias** realizadas ese día. - Si no hay fecha específica, se muestran los **totales anuales**, agrupando las ventas por año. 🔍 **Detalle de ventas** - El ícono 👁️ te permite ver los detalles de cada día o año seleccionado, incluyendo la lista completa de ventas realizadas. 💰 **Totales** - Se muestra el total vendido en cada día o año con el símbolo de la moneda configurada en el sistema. - También se indica la cantidad de ventas en la vista anual. 📈 **Propósito** - Este módulo te permite analizar el rendimiento de ventas en diferentes períodos. - Ideal para llevar un control histórico y comparar por día o año. 💡 Consejo: - Para un mejor análisis, podés complementar esta vista con los filtros de métodos de pago, usuarios o estados desde otras secciones. Ayuda del módulo: Gestión de Cálculo de Precios coefficients Este módulo permite establecer los coeficientes que se aplican automáticamente al costo base de los productos para generar precios finales según diferentes perfiles de venta. 🧮 **¿Qué es un coeficiente de precio?** - Un coeficiente representa un porcentaje adicional que se suma al **costo del producto** para formar el precio final de venta. 📋 **Tipos de precios configurables** Podrás establecer coeficientes para diferentes perfiles de clientes o situaciones: - 🛒 **Precio minorista**: para ventas al consumidor final. - 🏪 **Precio mayorista**: para ventas en volumen. - 🤝 **Precio preferencial**: para clientes frecuentes o con acuerdos especiales. - 🏭 **Precio de fábrica** *(si está habilitado)*: suele usarse para precios sin intermediarios. - 🚚 **Precio de repartidor** *(si está habilitado)*: para personal de entrega o logística. - 🧾 **Precio distribuidor** *(si está habilitado)*: para quienes revenden los productos. - 🌟 **Precio especial** *(si está habilitado)*: para campañas o descuentos particulares. 🧑‍🔧 **Actualización de coeficientes** - Usá el botón **Actualizar** para modificar los porcentajes directamente desde un formulario con validación. - El sistema registra la **fecha de última modificación** para mantener trazabilidad. 💾 **Aplicación automática** - Una vez configurados, estos coeficientes se aplican automáticamente en la carga o actualización de productos. - Asegurá consistencia en tus precios sin tener que calcularlos manualmente. 🧠 **Ejemplo práctico** - Si un producto cuesta **$100** y el coeficiente minorista es **30%**, su precio será **$130**. - Todo se calcula automáticamente según el perfil seleccionado. 📌 **Importante** - Si una opción de precio no está habilitada desde la configuración del sistema, no aparecerá en esta vista. - Solo se permite cargar valores numéricos positivos con hasta 3 decimales. ❓ **Botón de ayuda** - El ícono ❓ junto al título te permite acceder rápidamente a esta explicación dentro del sistema. 💡 Consejo: - Mantené actualizados tus coeficientes para reflejar los cambios de costos, inflación o políticas comerciales. Ayuda del módulo: Gestión de Campañas 📢 campaigns Desde esta vista podés gestionar todas las campañas creadas, ver su estado, editarlas, eliminarlas y enviarlas por correo a los clientes seleccionados. 📋 **Listado de campañas** En esta sección se muestran todas las campañas creadas con su información principal: - **ID** - **Título** - **Detalle (cuerpo del mensaje)** - **Estado** (Activa o Desactivada) ✅ **Acciones disponibles** - 👁️ **Ver**: Muestra los detalles completos de la campaña. - ✏️ **Editar**: Permite modificar la campaña seleccionada. - 🗑️ **Eliminar**: Borra la campaña del sistema. - 📧 **Enviar (programado)**: Envia los correos a las 9 AM automáticamente. - 📨 **Enviar (rápido)**: Envía los correos inmediatamente (solo recomendado para menos de 10 destinatarios). 🟢 **Activar / Desactivar** Podés activar o desactivar una campaña con los botones verdes o rojos. Solo las campañas activas pueden ser enviadas. ⚠️ **Requisitos para envío** Una campaña debe: - Estar **activa** - Tener **clientes seleccionados** con correos válidos 💡 **Consejo** Utilizá el botón ✉️ rápido solo para pruebas o envíos pequeños. Para envíos grandes, usá la opción programada. 📌 **Importante** Las campañas no se reenvían automáticamente cada día. Se deben enviar manualmente si se repite el envío. Ayuda del módulo: Gestión de Clientes 👥 clients Visualizá, activá, desactivá, editá y eliminá clientes desde esta sección. También podés gestionar su inclusión en campañas, su cuenta corriente y marcarlos como sucursal. 🧾 **¿Qué ves en esta tabla?** La tabla muestra todos los clientes registrados, junto a sus datos más importantes: - **ID** - **Nombre** - **DNI/CUIT/NIT** - **Teléfono** - **Correo electrónico** - **Campañas:** checkbox para habilitar o deshabilitar la recepción de correos. - **Estado:** Activo o No activo (solo si tienen email válido). - **Sucursal:** switch que permite marcar al cliente como sucursal. 🔘 **Botones de acción:** - ✏️ *Editar:* Accedé al formulario para modificar datos del cliente. - 🗑️ *Eliminar:* Eliminá el cliente del sistema (solo si su ID es mayor a 1). - 👁️ *Cuenta Corriente:* (ícono 🤝) Solo si la cuenta corriente está activa. - 📤 *Campañas:* Marcá el checkbox para incluir/excluir al cliente de campañas automáticas de marketing. 🏬 **Clientes indicados como sucursal** - Un cliente puede ser **marcado como sucursal** mediante el *switch* correspondiente. - Al hacerlo, podrá vincularse a una **configuración de conexión** en el módulo *Sucursales*. - Esta conexión permite sincronizar stock automáticamente con la base de datos remota cuando se realiza una **venta al cliente local** (sucursal). - Solo puede haber **una sucursal por cliente** (relación uno a uno). ⚙️ **Acciones rápidas:** - Activar o desactivar clientes con un clic. - Acceder a la edición sin recargar desde cero. - Marcar un cliente como sucursal directamente desde la lista o al editarlo. - Eliminar directamente si tenés los permisos. 🚫 **Restricciones importantes:** - No se puede editar ni eliminar el cliente con ID 1 (consumidor genérico). - La campaña solo se muestra si el cliente tiene un email válido. - Solo los usuarios con permisos pueden acceder a las acciones de editar y eliminar. - Un cliente marcado como sucursal no puede vincularse a más de una conexión de sucursal. 📌 **Consejos:** - Usá el campo *Sucursal* solo si el cliente va a representar un punto de venta o local con stock propio. - Completá luego su conexión desde el módulo *Sucursales*. - Si necesitás convertir una sucursal en cliente normal, desmarcá el switch y eliminá su conexión correspondiente. - Asegurate de que los emails sean válidos para recibir notificaciones o campañas. 🛡️ **Permisos necesarios:** - `clients.edit` → para poder editar. - `clients.destroy` → para eliminar. - `clients.mark_as_branch` → para marcar o desmarcar clientes como sucursal (si implementás permiso específico). - `accountancies.show` → para visualizar la cuenta corriente. Ayuda del módulo: Gestión de Combos 📦 combos Vista general de todos los combos registrados en el sistema, con controles de stock, precios, estado y acciones rápidas. 📋 **Listado de combos** Esta pantalla muestra todos los combos registrados, sus artículos incluidos, precios asignados, proveedor, stock y estado de activación. 🧩 **Datos que se visualizan:** - **Nombre**: Nombre del combo. - **Artículos**: Productos que lo componen. - **Precios**: Se muestran todos los precios disponibles según los permisos del usuario (Minorista, Mayorista, Preferencial, etc.). - **Moneda**: Indicada por una bandera. Al posicionarte, muestra un tooltip con precios en moneda extranjera si aplica. - **Stock**: Se puede aumentar, disminuir o vaciar con íconos (+, −, 🗑️). - **Estado**: Botón para activar o desactivar el combo. - **Fecha de vencimiento**: Si tiene definida. ⚙️ **Acciones rápidas disponibles:** - **Editar** (🖉): Modifica los datos del combo. - **Eliminar** (🗑️): Elimina completamente el combo. - **Vaciar stock**: Quita todo el stock disponible (requiere confirmación). - **Aumentar o disminuir stock**: Controla manualmente la cantidad. 🔐 **Permisos requeridos**: - Ver precios: `combos.viewprice`, `combos.view_price_factory`, etc. - Modificar stock: `combos.create` - Editar y eliminar: `combos.edit`, `combos.destroy` 🎯 **Consejo:** Usá los tooltips y colores para identificar rápidamente combos en moneda extranjera, combos sin stock o sin fecha de vencimiento. Ayuda del módulo: Gestión de Cotizaciones money Este módulo permite visualizar y actualizar las cotizaciones de monedas extranjeras como el dólar y el euro para su aplicación en el sistema. 💱 **Gestión de cotizaciones** - Este módulo te permite **definir manualmente** el valor de referencia del **dólar** 🇺🇸 y el **euro** 🇪🇺 utilizados en el sistema. - Las cotizaciones se usan en distintos puntos, como: - Listas de precios en moneda extranjera. - Reportes contables o comparativos. - Proyecciones comerciales internacionales. 📆 **Fecha de actualización** - El sistema muestra la **última vez que se actualizó** el valor de las monedas para mantener trazabilidad y control. ✏️ **Actualizar valores** - Al hacer clic en el botón **Actualizar**, se abre un modal donde podés: - Ingresar el nuevo valor del **dólar**. - Ingresar el nuevo valor del **euro**. - Ambos campos son obligatorios y deben tener un valor mayor a 1. ⚠️ **Validación** - Si dejás un campo vacío o ingresás un valor inválido, el sistema te avisará con un mensaje de error. ❓ **Botón de ayuda** - El ícono ❓ junto al título te permite consultar esta misma ayuda desde cualquier lugar del módulo. 💡 Consejo: - Mantené las cotizaciones actualizadas diariamente o según el flujo de tu negocio si tenés productos o proveedores en el exterior. Ayuda del módulo: Gestión de Empresa business Este módulo permite configurar todos los aspectos fundamentales del sistema, adaptándolo a las necesidades y rubros de cada empresa. 🏢 **Datos generales de la empresa** - Podés modificar el **nombre**, **título**, **subtítulos**, **mensaje institucional**, **correo electrónico**, **teléfono**, **CUIT**, **dirección**, y el **logo de la empresa**. - Se puede establecer la **moneda** y ver la bandera del país configurado. - También se define el porcentaje de **IVA visual** aplicado a los artículos (solo visible en listas/exportaciones, no afecta ventas). 📍 **Ubicación en el mapa** - Permite ver y modificar la ubicación geográfica de la empresa. - Podés arrastrar el marcador en el mapa y luego hacer clic en "Actualizar ubicación" para guardar los cambios. 🧮 **Tolerancia en pagos** - Configurá la **diferencia máxima permitida** entre el total de la venta y el pago recibido. - Permite aceptar diferencias de más o de menos hasta el valor que definas. - Ideal para flexibilizar cobros y evitar rechazos por montos mínimos. 🔔 **Alertas automáticas** Configurá cuándo y cómo se deben emitir avisos: - 💸 **Clientes deudores**: Se define cuántos días o meses sin pago deben pasar para alertar. - 💳 **Cheques y e-cheques**: Alerta antes de su vencimiento. - 🛒 **Artículos con vencimiento**: Aviso para productos próximos a vencer. - 🏷️ **Precios sin actualizar**: Se genera un recordatorio si no se modifica el precio dentro de un período. - 🔧 **Estados de trabajos**: Detecta inactividad en procesos de trabajos si no se actualiza su estado. - 📄 **Presupuestos**: Tiempo de validez antes de vencer. - 🔁 **Comodatos**: Plazo máximo antes de presentación. - 🔥 **Recarga de matafuegos**: Aviso a clientes y al sistema antes del vencimiento (si está habilitado). ⚙️ **Parámetros del sistema** - ➕ **¿Sumar automáticamente 1 al vender?**: Podés establecer que se agregue 1 o un valor personalizado al vender desde el buscador. - 🏷️ **Precios extras**: Activá o desactivá precios como Fábrica, Distribuidor, Repartidor o Especial para los artículos. 🔐 **Funciones de seguridad y conectividad** - 🛡️ **Anti-bot (reCAPTCHA)**: Habilita o deshabilita protección contra bots en formularios. - 📶 **Modo offline (PWA)**: Permite el uso del sistema sin conexión (opcional). - 🛍️ **E-commerce y tienda on-line**: Activá la venta en línea y la conexión con tienda externa. - 🏦 **Préstamos, Ferretería y Propaganda**: Habilitá o deshabilitá funciones según el rubro de tu empresa. 🔥 **Control de matafuegos** (Si está habilitado) - Podés establecer si querés: - Enviar **avisos automáticos por vencimiento** al cliente. - Permitir a los clientes ver **el estado de sus matafuegos** en línea. 📦 **Módulos adicionales** - Activá o desactivá módulos del sistema como: Clientes, Proveedores, Categorías, Cheques, Métodos de pago, Reportes, Usuarios, Ventas, Presupuestos, Devoluciones, etc. Cada módulo tiene su checkbox para control granular. 📋 **Actualización de datos** - Usá el botón 🖊️ "Actualizar" para editar todos los datos de la empresa desde un modal con campos como nombre, correo, dirección, términos y condiciones, teléfono, IVA, etc. ❓ **Botón de ayuda** - El ícono ❓ junto al título permite abrir esta ayuda interactiva para entender la funcionalidad completa del módulo. 💡 Consejo: - Si no sabés cómo usar alguna opción, colocá el mouse encima del ícono ℹ️ de cada sección para ver una breve explicación en el tooltip. Ayuda del módulo: Gestión de Fraccionamiento Fractionation Esta sección permite descomponer un artículo existente en unidades más pequeñas (peso, volumen, longitud o cantidad), generando un nuevo producto fraccionado listo para la venta. 🧭 Antes de empezar - Elegí primero la Unidad de Medida a descomponer: esto filtra las búsquedas para mostrarte solo artículos compatibles. - Los select con lupa (selectpicker) tienen búsqueda en vivo. Escribí al menos 2–3 letras para ver resultados. 🔢 Cantidad a fraccionar Ingresá cuántas unidades del producto original vas a descomponer (por ejemplo: 1 bolsa de 5 kg, 2 bidones de 10 L, etc.). 📦 Seleccionar artículo Usá el select con búsqueda para encontrar el artículo original. La búsqueda se filtra por la Unidad de Medida seleccionada. Al elegir un artículo: - Se completan automáticamente el Stock actual y el Precio de venta del producto original. - La cantidad máxima se ajusta al stock disponible del artículo. 📐 Unidad de medida a descomponer Al seleccionar un producto, el sistema propone las unidades de medida compatibles (por ejemplo, de Kilogramos a Gramos). Elegí la unidad objetivo y se calculará el multiplicador (xN), que también se guarda en un campo oculto para el cálculo final. 🏷️ Nombre del nuevo producto Podés: - Escribirlo libremente en el Input, o - Usar el Select con búsqueda (nameSelect), que también se filtra por Unidad de Medida. Tenés dos botones para alternar entre Input y Select. Sugerencia: si usás el Select, al elegir una opción podés copiar ese nombre al Input y ajustarlo si necesitás. 📊 Stock resultante El stock final del nuevo producto se calcula multiplicando: Cantidad a fraccionar × Stock ingresado × Multiplicador (xN). La leyenda bajo el formulario te recuerda esta fórmula. 💲 Precio de venta Minorista Si dejás el campo vacío y hacés foco sobre él, el sistema calcula automáticamente un precio proporcional al fraccionamiento del artículo original. También podés editarlo manualmente. 🌐 Visibilidad Definí dónde se publicará el nuevo producto (por ejemplo, POS o Ecommerce). 📍 Sector de almacenamiento Campo opcional para indicar el sector físico donde guardarás el producto fraccionado. 📘 Confirmación obligatoria Marcá la casilla de verificación para confirmar que comprendiste cómo se calcula el nuevo stock. 🚀 Fraccionar Hacé clic en Fraccionar para crear y guardar el nuevo producto fraccionado en el sistema. ❌ Cancelar Volvés a la pantalla anterior sin guardar cambios. 🛠️ Consejos y solución de problemas - Si no ves resultados en los select con búsqueda, asegurate de haber elegido antes la Unidad de Medida. - Si aparece “(Error al buscar)”, verificá que la ruta de búsqueda esté configurada correctamente y que el servidor devuelva JSON. - El stock 0 también se muestra y es válido en las búsquedas. Ayuda del módulo: Gestión de Matafuegos 🧯 Help_fire_extinguisher Desde esta sección podés administrar todos los matafuegos registrados: ver sus estados, programar mantenimientos, gestionar notificaciones y acciones relacionadas. 📋 **Listado de Matafuegos** En esta vista se muestran todos los matafuegos registrados, junto a su información principal: - **Cliente** (nombre y si es móvil o fijo) - **Estado** actual (Ej: En mantenimiento, Listo, Retirado, etc.) - **Disponibilidad y Notificaciones** (Activo/No Activo - Aviso habilitado o no) - **Número de serie / Año de fabricación / Tipo** - **Ubicación** (Municipio y localización exacta) - **Reprueba** (fecha y vencimiento de prueba hidráulica) - **Recambio de polvo** (fecha y vencimiento) - **Último y Próximo Mantenimiento** ✅ **Acciones disponibles** - 🕒 **Historial de notificaciones**: Visualiza las notificaciones enviadas (WhatsApp o Email). - 🛠️ **Historial de mantenimientos**: Muestra todos los mantenimientos realizados. - ♻️ **Mantenimiento**: Registra un nuevo mantenimiento para el matafuego. - 👁️ **Ver detalles**: Visualiza toda la información específica del matafuego. - ✏️ **Editar**: Modifica la información del matafuego. - 📄 **Descargar PDF**: Exporta en PDF la ficha del matafuego. - 🟢 **Notificar WhatsApp**: Envía un aviso al cliente vía WhatsApp. - ✉️ **Notificar Email**: Envía un aviso al correo del cliente (si tiene correo válido). - 🗑️ **Eliminar**: Elimina el matafuego (requiere confirmación). 🟢 **Controles rápidos** - **Activo / No Activo**: Indica si el matafuego está actualmente en servicio. - **Aviso habilitado**: Habilita o deshabilita el envío de notificaciones automáticas. ⚠️ **Indicadores visuales** - 🟥 **Vencido**: Si supera los 20 años de fabricación, muestra fondo rojo. - 🔵 **Reprueba vencida**: Si pasaron 5 años sin prueba hidráulica. - 🔵 **Recambio vencido**: Si pasaron 10 años sin cambio de polvo. - 🟡 **Próximo mantenimiento vencido**: Más de 1 año desde el último mantenimiento. 💡 **Consejos** - Usá los filtros para buscar rápidamente por **Estado**, **Cliente** o si es **Móvil**. - El botón 🔍 **Buscar** permite aplicar los filtros seleccionados. - El ícono ❓ de ayuda siempre está disponible arriba a la derecha. 📌 **Importante** - Los mantenimientos vencidos o próximos vencimientos se muestran resaltados para facilitar la gestión de tareas pendientes. - Las notificaciones por WhatsApp o Email se registran automáticamente en el historial. Ayuda del módulo: Grilla de Bauleras por Piso 🧱📦 rental_spaces_grid Visualizá y filtrá espacios (bauleras) organizados por piso/sección. Revisá estado, dimensiones, volumen y precio mensual de un vistazo. 🎯 **Objetivo** Consultar rápidamente la disponibilidad y detalles clave de las bauleras/espacios, agrupados por piso, y acceder a acciones rápidas (ver/editar). 🧭 **Dónde estás** **Panel administrador → Bauleras → Grilla** Título de la pantalla: *Bauleras por piso*. 🔎 **Filtro por piso** - Usá el selector **"Filtrar por piso"** (con búsqueda) para limitar la grilla a un piso/sección específico. - Opción **"Todos los pisos"** muestra el conjunto completo. - Luego presioná **Filtrar** para aplicar. 🧱 **Tarjetas de espacio (qué ves en cada card)** - **Nombre** del espacio (ej.: "B-12"). - **Estado** con color y etiqueta (badge): - **Disponible** (`AVAILABLE`) - **Reservado** (`RESERVED`) - **Ocupado** (`OCCUPIED`) - **Deshabilitado** (`DISABLED`) - **Limpieza** (`CLEANING`) - **Restauración** (`RESTORATION`) El color de la insignia se toma desde el mapeo del modelo `RentalSpace` (`status_info`). - **Piso/Sección** asociado (o "—" si no tiene). - **Dimensiones** en metros, formato `Largo x Ancho x Alto` (ej.: `2.000 x 1.500 x 2.400 m`). - **Volumen** en m³ (se calcula automáticamente en el modelo al guardar). - **Precio mensual** formateado (ej.: `$ 15.000,00 / mes`). ⚡ **Acciones rápidas** - **👁️ Ver** → Detalle del espacio. - **✏️ Editar** → Modificar datos del espacio. ℹ️ **Estados y colores (referencia)** El color/label proviene de `getStatusInfoAttribute()` del modelo: - Disponible → `#28a745` - Reservado → `#ffc107` - Ocupado → `#17a2b8` - Deshabilitado → `#6c757d` - Limpieza → `#20c997` - Restauración → `#fd7e14` 📭 **Sin resultados** Si no hay espacios para el filtro aplicado, se muestra el mensaje **"No hay espacios para el filtro seleccionado."** 🧠 **Buenas prácticas** - Definí una **convención de nombres** por piso (ej.: "PB-01", "P1-07"). - Mantené coherentes los **estados** para reflejar la realidad operativa. - Usá el filtro por piso para reuniones o recorridos in situ: acelera la verificación de disponibilidad. 🔐 **Permisos** Ver/editar requiere permisos adecuados. Los usuarios sin permiso de edición solo deberían acceder a la vista. 🔗 **Relaciones** - Cada espacio puede estar asociado a un **Piso** (`floor`). - Puede tener un **Contrato activo** (`activeContract`), lo que impacta en su estado/operatividad. 💡 **Tip** Si necesitás detectar espacios potencialmente **mal cargados**, buscá tarjetas con volumen inusual (muy alto/bajo) y revisá dimensiones. Ayuda del módulo: Habitaciones — Estado y acciones 🏨 rooms_grid Desde aquí ves el estado general de las habitaciones por hotel, filtrás por hotel y realizás cambios individuales o masivos de disponibilidad. 🎯 **Objetivo** Monitorear y actualizar el **estado de las habitaciones** por hotel. Permite ver un **resumen**, filtrar por **hotel** y hacer **acciones rápidas** (individuales o masivas). 🧩 **Dónde estás** **Panel administrador → Habitaciones → Grid de estado** Título de la pantalla: *Estado de habitaciones*. 🧾 **Secciones de la pantalla** 1) **Resumen por hotel** (panel izquierdo) - Muestra: **Total**, **Disponibles**, **No disponibles** por hotel. - Acciones: - **Ver habitaciones** del hotel: abre el listado filtrado. - **Marcar todas disponibles**: cambia todas las habitaciones del hotel a *Disponible*. - **Marcar todas NO disponibles**: cambia todas a *No disponible*. - Estas dos últimas acciones piden confirmación con **SweetAlert** y se ejecutan por **AJAX**. 2) **Filtro + listado de habitaciones** (panel derecho) - **Filtro por hotel** (select con `selectpicker`). - **Tabla paginada** con columnas: - **Nombre**, **Número**, **Tipo**, **Capacidad**, **Precio** (2 decimales), - **Estado** (badge *Disponible* / *No disponible*), - **Acciones** (*Ver*, *Editar*, *Eliminar* — visibles según permisos). - **Paginación**. 🛠️ **Acciones rápidas en el listado** - **Toggle individual** (icono de interruptor): cambia *Disponible/No disponible* por **AJAX** Ruta usada en el ejemplo: `rooms.toggleStatus` (POST). Al cambiar, se actualiza: - El **icono** (`fa-toggle-on/off`) - La **pill** de estado (`badge-success` / `badge-secondary`) y su texto. - **Eliminar**: botón con confirmación **SweetAlert**; envía `DELETE` al form si aceptás. 🔁 **Acciones masivas por hotel (Resumen)** - Botones **Marcar todas disponibles / NO disponibles**. - Confirman con SweetAlert y hacen POST a: `hotels/{hotelId}/rooms/set-status` con `status` **1** o **0**. - Al finalizar, muestran éxito y **recargan** la pantalla para refrescar el resumen. ✅ **Al operar** - **Éxito**: se refleja visualmente (icono/etiqueta) y/o alerta de confirmación. - **Error**: se muestran mensajes (parciales/alerts) y no se pierde el contexto. 🚫 **Errores frecuentes** - No refrescar el **resumen** luego de cambios masivos → recargar tras éxito. 🧠 **Buenas prácticas** - Mantener consistente el **estado** entre DB y UI (actualizá ambos en success). - Usar **políticas** (`RoomPolicy`) para las acciones. - Registrar auditoría si el negocio lo requiere (quién cambió estados y cuándo). 📌 **Consejo** - Si trabajás con múltiples hoteles, usá el **filtro** para operar en uno a la vez y evitá cambios masivos accidentales. Ayuda del módulo: Habitaciones 🛏️ rooms Desde aquí podés registrar y administrar habitaciones de tus hoteles: datos básicos, capacidad, tarifa por noche y estado. 📌 **Objetivo** Crear y gestionar **habitaciones** vinculadas a un **hotel**. Definís nombre, tipo, capacidad, precio por noche y estado de disponibilidad. 🧭 **Dónde estás** **Panel administrador → Habitaciones → Nuevo** Título de la pantalla: *Registrar habitación*. 📝 **Campos del formulario** - **Hotel** *(obligatorio)* Lista de hoteles existentes. Debe existir en `hotels`. - **Nombre** *(obligatorio)* Máx. 255 caracteres. Identificador interno visible (ej.: "Suite 101"). - **Número** *(opcional)* Código/etiqueta de la habitación (ej.: "101"). Texto libre. - **Tipo** *(obligatorio)* Uno de: `SINGLE`, `DOUBLE`, `TRIPLE`, `SUITE`. En pantalla se puede mostrar con etiqueta en español (via accesor): *Individual, Doble, Triple, Suite*. - **Capacidad** *(obligatorio)* Entero entre **1 y 20** (validación por backend). - **Precio por noche** *(obligatorio)* Número **≥ 0** con hasta 2 decimales (ej.: `12500.00`). - **Piso** *(opcional)* Texto libre (ej.: "3", "PB", "Torre A - 5"). - **Estado** *(obligatorio)* `1` = Disponible / `0` = No disponible. En pantalla (via accesor): **Disponible** / **No disponible**. - **Descripción** *(opcional)* Observaciones, equipamiento, vista, notas internas. 🔧 **Comportamiento del sistema** - Las validaciones del backend exigen: `hotel_id` válido, `name` y `room_type` requeridos, `capacity` (1–20), `price_per_night` ≥ 0. - Accesores del modelo `Room`: - `status_label` → **Disponible** / **No disponible**. - `room_type_label` → **Individual, Doble, Triple, Suite**. - Se recomienda normalizar campos en el controlador antes de guardar (ej.: `name` y `floor` sin espacios extra). 🔘 **Acciones** - **Guardar** → Crea la habitación y muestra aviso de éxito. - **Cancelar** → Vuelve al listado sin guardar. - En el listado, las acciones **Ver / Editar / Eliminar** aparecen como botones compactos en línea con confirmación SweetAlert al eliminar. ✅ **Al guardar** - Si todo es correcto: verás **"Habitación creada con éxito"** y podrás acceder al detalle. - Si hay errores: se mostrarán debajo de cada campo y se conservarán los datos ingresados. 🚫 **Errores frecuentes y soluciones** - **"El campo hotel es obligatorio"** → seleccioná un hotel válido. - **"El campo nombre es obligatorio"** → completá *Nombre*. - **"El campo tipo es obligatorio"** → elegí una opción válida (SINGLE/DOUBLE/TRIPLE/SUITE). - **"La capacidad debe ser entre 1 y 20"** → ajustá el valor. - **"El precio por noche debe ser mayor o igual a 0"** → corregí el importe. 🧠 **Buenas prácticas** - Definí una **convención** para *Nombre* y *Número* (ej.: "Suite 101" + "101"). - Mantené **Capacidad** y **Tipo** consistentes con la realidad operativa. - Usá *Descripción* para detallar equipamiento (cama king/queen, vista, accesibilidad). - Deshabilitá (**Estado = No disponible**) si la habitación queda fuera de servicio. 🔗 **Relaciones** - Cada habitación **pertenece** a un hotel (`hotel_id`). - En el detalle del hotel podés ver sus habitaciones. 💡 **Tips** - En el listado, usá los filtros/búsquedas para encontrar por *Nombre*, *Número* o *Tipo*. - Los botones de acciones están **compactados en una sola línea** y usan **SweetAlert** al eliminar para evitar errores. Ayuda del módulo: Hoteles 🏨 hotels Desde aquí podés registrar hoteles de tu negocio, con datos de contacto, ubicación y referencias. Luego podrás asociar habitaciones. 📌 **Objetivo** Esta pantalla te permite **crear un hotel** dentro de tu negocio. Es el paso previo para **gestionar habitaciones** y disponibilidades. 🧭 **Dónde estás** **Panel administrador → Hoteles → Nuevo** Título de la pantalla: *Registrar hotel*. 📝 **Campos del formulario** - **Nombre** *(obligatorio)* Máx. 255 caracteres. Se normaliza a **MAYÚSCULAS** al guardar. - **CUIT/RUC/NIT** *(obligatorio)* Máx. 50 caracteres. Debe ser **único dentro del mismo negocio** (no puede repetirse el mismo RUC para el mismo `business_id`). - **Email** *(opcional)* Se guarda en **minúsculas** y debe tener formato válido. - **Dirección** *(opcional)* Texto libre, se normaliza a **MAYÚSCULAS**. - **Teléfono** *(opcional)* Se limpia para conservar `+` inicial y dígitos. - **País** *(obligatorio)* Debe existir en la tabla `countries`. - **Provincia/Estado** *(opcional)* Debe existir en `locations`. - **Municipio/Ciudad** *(opcional)* Debe existir en `municipalities`. - **Nombre referencia** *(opcional)* Contacto de referencia en MAYÚSCULAS. - **Teléfono referencia** *(opcional)* Igual limpieza que *Teléfono*. - **Email referencia** *(opcional)* En **minúsculas**, formato válido. - **Observaciones** *(opcional)* Texto libre para notas internas. 🔘 **Acciones** - **Guardar** → Crea el hotel y muestra aviso de éxito. - **Cancelar** → Vuelve al listado de hoteles sin guardar. ✅ **Comportamiento al guardar** - Si todo está correcto, verás **"Hotel creado con éxito"** y podrás acceder al detalle. - Si hay errores de validación, se muestran mensajes bajo cada campo y se conserva lo ingresado. 🚫 **Errores frecuentes y cómo resolver** - **"El campo nombre es obligatorio"** → completá *Nombre*. - **"El campo cuit/ruc/nit es obligatorio"** → completá *CUIT/RUC/NIT*. - **"El campo país es obligatorio"** → seleccioná un *País*. - **"Ya existe un hotel con ese RUC en el negocio seleccionado"** El RUC está duplicado para el mismo `business_id`. Modificalo o verificá si el hotel ya existe. - **Email inválido** → corregí el formato (ej.: `nombre@dominio.com`). 🧠 **Buenas prácticas** - Usá nombres **claros y consistentes** (ej.: "HOTEL CENTRAL", "HOTEL LAGO NORTE"). - Completá **País/Provincia/Municipio** para mejorar reportes y filtros. - Mantené **Datos de referencia** para facilitar la comunicación. - Si operás varios negocios, verificá el **`business_id`** por defecto (1) o seleccioná el correcto. 🔗 **Relación con otros módulos** - Un hotel puede tener **muchas habitaciones** (módulo *Habitaciones*). La asociación se hace desde **Habitaciones → Crear**, eligiendo el *Hotel*. 💡 **Tip** - Usá el ícono **?** en el título para abrir esta ayuda en un modal. - Podés buscar hoteles por **Nombre**, **RUC** o **Email** desde el listado. Ayuda del módulo: Importación de precios import_price Este módulo permite importar precios y actualizar artículos desde archivos Excel para diferentes proveedores. Incluye dos modos de importación: general y específica para ferreterías. 🚨 Instrucciones generales Este módulo permite importar artículos desde un archivo Excel (.xls o .xlsx) para actualizar precios y stock de forma masiva. Está dividido en dos secciones: 🛒 General: - Usá el formulario para seleccionar el archivo Excel. - Completá: Unidad de Medida, Marca, Categoría y Proveedor. - Si un artículo coincide por nombre, marca, categoría y proveedor, se actualizará. - Si no se encuentra coincidencia, el sistema creará un nuevo artículo. 🛠️ Ferretería (proveedores específicos): - Accedé a través de los botones con nombre de proveedores como Wesinger, FerreteraCentral, etc. - Cada proveedor requiere un formato de archivo específico. Pasá el mouse por el botón para ver el formato esperado. - Si no seleccionás un archivo, se mostrará un error. - Al presionar un botón, se pedirá confirmación antes de importar. - Podés marcar o no la opción “Modificar stock”. Si está marcada: - Se carga stock 500 y stock mínimo 10 (excepto cuando el archivo indica otra cosa). 📥 Estructura esperada del Excel general: 1. Código de barras (texto) 2. Nombre del artículo 3. Precio de costo (número con dos decimales) 4. Precio de venta 5. Stock (si vacío se carga 500, si 0 no se modifica, si negativo resetea stock) 6. Stock mínimo (si 0 se carga 1) 7. Sector (opcional) 8. Precio mayorista (opcional) 9. Precio preferencial (opcional) 📌 Consideraciones: - El archivo no debe tener más de 5000 filas. - Se permite cargar artículos sin código de barra. - Se generará automáticamente una compra con lo importado. - El archivo Excel no debe tener títulos en las columnas. - Si un artículo está referenciado, solo se actualizará el precio. 📺 Al pie de página encontrarás un video explicativo sobre el formato del Excel. Ayuda del módulo: Licencias utilizadas 📄 licence Sección informativa que muestra el historial de licencias activas o anteriores en el sistema. 🧾 **¿Qué es una licencia?** Una licencia representa el permiso otorgado para el uso del sistema por un período determinado, normalmente adquirido mediante un pago. 📋 **Información mostrada en la tabla:** - **ID**: Número identificador único de la licencia. - **Inicio**: Fecha en la que comenzó la validez de la licencia. - **Vencimiento**: Fecha en la que la licencia caduca. - **Costo**: Precio de la licencia, en la moneda local. 📌 **Consideraciones:** - Las licencias vencidas no permiten el uso completo del sistema. - El sistema puede mostrar alertas de vencimiento si una fecha cercana se aproxima. - Esta vista es solo informativa. La gestión o renovación de licencias debe hacerse desde el panel administrativo correspondiente o por contacto con soporte. 🔒 **¿No ves tus licencias?** Si una licencia reciente no aparece en la tabla, asegurate de haberla registrado correctamente o consultá con el administrador del sistema. Ayuda del módulo: Movimientos de Caja 💰 cashier_movements Este módulo permite consultar todos los movimientos de caja, filtrarlos y visualizar ingresos, egresos y su balance neto. 📆 **Filtros disponibles** Podés buscar movimientos según los siguientes criterios: - **Rango de fechas** (obligatorio) - **Tipo de impacto**: Ingresos o Egresos - **Usuario receptor**: Responsable del movimiento - **Concepto**: Categoría del movimiento 🔍 **Búsqueda** Presioná el botón **Buscar** para aplicar los filtros. > ⚠️ Si no seleccionás ambas fechas o la fecha de inicio es mayor a la de fin, se mostrará una advertencia. 📊 **Resumen** En la parte superior de la tabla se muestra el **saldo neto** (ingresos - egresos), en color verde si es positivo y rojo si es negativo. 📋 **Tabla de movimientos** Cada fila muestra: - **Fecha y hora del movimiento** - **Monto con símbolo de moneda** - **Tipo**: Ingreso o Egreso - **Concepto asociado** - **Descripción opcional** - **Usuario receptor o 'No Corresponde'** 💡 **Consejo** Este módulo es ideal para hacer auditoría rápida de caja, revisar movimientos realizados por usuarios o ver los egresos por concepto. Ayuda del módulo: Pagos 💵 unit_payments En este módulo visualizás, filtrás, imprimís recibos y anulás pagos realizados sobre los contratos de alquiler. 📌 **¿Para qué sirve esta pantalla?** Acá ves **todos los pagos** registrados, podés **filtrar por contrato**, **imprimir recibos** y **anular** un pago con confirmación. 🧭 **Cómo usarla rápidamente** 1) **Filtrá por contrato** con el campo *Contrato #* (arriba a la derecha) y tocá **Filtrar**. 2) En la tabla, cada fila es un pago. 3) Acciones: - **🧾 Imprimir recibo**: ícono *file-invoice-dollar* abre el PDF (tamaño A5) del pago. - **👁️ Ver**: abre el detalle del pago. - **🗑️ Anular**: abre confirmación (**SweetAlert2**) y, si aceptás, anula el pago. 📄 **Columnas** - **Fecha**: fecha en que se realizó el pago. - **Contrato**: N° de contrato asociado. - **Unidad**: nombre de la unidad del contrato. - **Cuota**: número de cuota abonada (si aplica). - **Monto**: total pagado. - **Métodos**: desglose por método (tarjeta, transferencia, etc.) y montos parciales. - **Ref.**: referencias de los métodos (número de operación, comprobante, etc.). 🖨️ **Recibo de pago (PDF)** - Botón: **Imprimir recibo** (ícono de factura). - Ruta usada: `unit_payments.print` → genera un PDF con datos de **empresa**, **contrato**, **inquilino**, **unidad**, **cuota**, **métodos** y **notas**. - Formato recomendado: **A5 vertical** (ideal para recibos). ⚠️ **Anulación con confirmación (SweetAlert2 v8)** - Al tocar **Anular**, aparece confirmación: *“¿Anular pago? Esta acción no se puede deshacer.”* - Si confirmás, se envía el formulario `DELETE` y se anula el registro. - Recomendado: mostrar un `toastr()->success('Pago anulado', 'Pagos')` al volver. 💡 **Sugerencias** - Si un pago aplica a **varios métodos**, usá las referencias para rastrear las operaciones bancarias. - Mostrá la **moneda** en el listado usando el código del país de tu negocio. - Si necesitás exportar, agregá un botón **CSV/XLSX** en la barra superior. ❗ **Errores comunes** - Filtrar por un *Contrato #* inexistente → la lista se muestra vacía. - Intentar anular un pago ya conciliado/contabilizado: definí una política (bloquear o advertir). Ayuda del módulo: Panel tienda on-line 📊 online_store_dashboard Panel general de administración de la tienda on-line con indicadores, gráficos, accesos rápidos, resumen operativo y últimos pedidos. 📌 **¿Para qué sirve este módulo?** Este módulo funciona como el **panel principal de administración de la tienda on-line**. Desde aquí podés visualizar rápidamente el estado general del e-commerce, consultar indicadores clave y acceder a los sectores más importantes del módulo. Su objetivo es darte una visión rápida de: - productos visibles en la tienda - cantidad de pedidos - pedidos pendientes - consultas nuevas - carritos activos - pedidos confirmados - monto vendido - ticket promedio - evolución de pedidos - estado de pagos - canal de checkout utilizado - últimos pedidos generados --- 🧭 **¿Qué se ve en esta pantalla?** El panel está dividido en bloques visuales que resumen el funcionamiento actual de la tienda online. Incluye: - cabecera del módulo - botones de acceso rápido - indicadores principales - indicadores secundarios - gráficos de comportamiento - resumen operativo - tabla con últimos pedidos Esta pantalla está pensada para consulta rápida y control administrativo. --- 🏷️ **Cabecera del módulo** En la parte superior se muestra el nombre del panel: - **Panel tienda on-line** También incluye: - botón de **ayuda** - acceso a **Configuración** - acceso a **Pedidos** - acceso a **Contactos** Esto permite ingresar rápidamente a las secciones operativas sin salir del panel principal. --- 📦 **Indicadores principales** En la primera fila se muestran las métricas más importantes del módulo. 1) **Productos visibles** - Indica cuántos productos están actualmente disponibles para mostrarse en la tienda. - Sirve para validar que el catálogo público tenga contenido publicado. 2) **Pedidos totales** - Muestra la cantidad total histórica de pedidos generados en la tienda online. 3) **Pedidos pendientes** - Informa cuántos pedidos están en estado pendiente. - Es útil para detectar operaciones que todavía requieren revisión o confirmación. 4) **Consultas nuevas** - Muestra la cantidad de mensajes o contactos nuevos recibidos desde la tienda. - Ayuda a controlar la atención comercial o administrativa. --- 📈 **Indicadores secundarios** En la segunda fila se muestran métricas complementarias para entender mejor la operación. 1) **Carritos activos** - Representa carritos que aún siguen en curso o no fueron cerrados. - Puede servir como referencia para medir interés o intención de compra. 2) **Pedidos confirmados** - Indica cuántos pedidos ya pasaron a estado confirmado. 3) **Monto vendido** - Muestra el importe total acumulado de pedidos confirmados. - Es un indicador económico general del canal online. 4) **Ticket promedio** - Calcula el promedio de importe por pedido confirmado. - Ayuda a entender el valor medio de compra de los clientes. --- 📊 **Gráfico: Pedidos de los últimos meses** Este gráfico permite visualizar la evolución mensual de pedidos. ¿Para qué sirve? - detectar crecimiento o baja en la tienda - comparar meses - observar tendencia comercial - medir impacto de promociones o campañas 💡 Si un mes baja mucho respecto al anterior, conviene revisar: - productos visibles - precios - medios de pago - difusión de la tienda - funcionamiento del checkout --- 🍩 **Gráfico: Estado de pedidos** Este gráfico muestra la distribución de pedidos según su estado. Normalmente puede incluir estados como: - Pendiente - Confirmado - Cancelado - Borrador ¿Para qué sirve? - identificar carga operativa pendiente - ver cuántos pedidos efectivamente avanzan - detectar cancelaciones o desvíos --- 🛒 **Gráfico: Canal de checkout** Este gráfico muestra por qué medio se están cerrando los pedidos. Puede incluir: - Manual - Mercado Pago - WhatsApp ¿Para qué sirve? - entender qué canal usan más los clientes - validar si Mercado Pago se está usando - medir si WhatsApp sigue siendo el principal canal de cierre 💡 Si casi todos los pedidos terminan por WhatsApp, puede ser señal de que el checkout online todavía necesita mejoras o que el cliente prefiere contacto directo. --- 💳 **Gráfico: Estado de pagos** Este gráfico resume la situación de los pagos registrados en la tienda. Puede mostrar estados como: - Pendiente - Aprobado - Rechazado - Cancelado - Redireccionado ¿Para qué sirve? - controlar cobros - detectar rechazos - revisar operaciones que quedaron sin cerrar - evaluar el funcionamiento del medio de pago --- ⚙️ **Acciones rápidas** En el panel hay tarjetas de acceso directo a sectores clave del módulo. 1) **Contenido y ajustes** - Lleva a la configuración general de la tienda. - Desde allí se administran textos, contenido, contacto, WhatsApp, Mercado Pago y demás parámetros visuales o funcionales. 2) **Pedidos online** - Lleva al listado administrativo de pedidos de la tienda. - Sirve para seguimiento, control y revisión del detalle de cada operación. 3) **Consultas recibidas** - Lleva a la gestión de mensajes recibidos desde el formulario de contacto. - Permite ordenar y responder el canal comercial. --- 🧾 **Resumen operativo** Este bloque muestra un resumen rápido en formato visual. Allí se destacan: - pedidos pendientes - pagos aprobados - carritos activos - conversión estimada 📌 **Conversión estimada** Es una referencia porcentual entre carritos activos y pedidos confirmados. No reemplaza un análisis comercial profundo, pero sirve como orientación rápida para medir rendimiento del flujo de compra. --- 🕒 **Últimos pedidos** En la parte inferior se muestra una tabla con los pedidos más recientes. La tabla incluye: - número de pedido - cliente - total - estado del pedido - estado del pago - canal de checkout - fecha ¿Para qué sirve? - ver la actividad reciente de la tienda - controlar rápidamente pedidos nuevos - identificar clientes y montos sin tener que entrar al listado completo Si no hay pedidos cargados, el panel informa que todavía no hay registros. --- 🔍 **¿Qué decisiones permite tomar este panel?** Este dashboard sirve para responder rápidamente preguntas como: - ¿La tienda tiene productos visibles? - ¿Hay pedidos pendientes de atención? - ¿Se están aprobando los pagos? - ¿Qué canal de checkout se usa más? - ¿Está creciendo la cantidad de pedidos? - ¿Hay consultas sin responder? - ¿Cuál es el ticket promedio del canal online? --- ⚠️ **Qué NO hace este módulo** Este panel no sirve para: - crear productos - editar stock - cambiar precios directamente - modificar marcas o categorías - responder contactos desde aquí mismo - editar pedidos desde el dashboard - configurar textos institucionales directamente en esta pantalla Este módulo es principalmente de **visualización, seguimiento y acceso rápido**. --- ✅ **Buenas prácticas de uso** - Revisar diariamente los **pedidos pendientes**. - Controlar las **consultas nuevas** para no demorar respuestas. - Verificar el gráfico de **estado de pagos** si se usa Mercado Pago. - Revisar la evolución mensual de pedidos para detectar caídas. - Usar los accesos rápidos para entrar de inmediato a configuración, pedidos o contactos. - Tomar el panel como tablero de control general, no como pantalla de edición. --- 🔗 **Relación con otros módulos** Este panel se relaciona con: - **Configuración de tienda on-line** para definir contenido, contacto, WhatsApp, Mercado Pago y comportamiento general del e-commerce. - **Pedidos on-line** donde se administra el detalle operativo de cada pedido. - **Contactos de tienda** donde se visualizan y gestionan consultas recibidas desde la tienda pública. - **Catálogo visible** ya que el indicador de productos visibles depende de los productos habilitados para mostrarse en la tienda. - **Checkout / pagos** porque los estados de pago y canales de cierre se reflejan en los gráficos del panel. --- 🧠 **Resumen final** El panel de tienda on-line es el tablero principal del e-commerce. Su función es darte una lectura rápida del estado comercial y operativo del canal online para facilitar el seguimiento diario y la toma de decisiones. Ayuda del módulo: Paquetes Turísticos 🧳✈️ tourism_packages Creación y administración de paquetes turísticos con fechas de estadía y datos de viaje (voucher), para luego vender/reservar y asignar pasajeros/asientos. 📌 **¿Para qué sirve este módulo?** Este módulo te permite crear y administrar **Paquetes Turísticos** (ej: *Bariloche*, *Cataratas*, *Promo Verano*), definiendo: - **Datos comerciales** (título, monto, estado, destino) - **Fechas de estadía** (inicio/fin de la estadía) - **Datos del viaje** (salida/llegada con fecha y hora) para el **voucher** del pasajero 🧱 **Crear un paquete (esta pantalla)** 1) Completá los campos obligatorios. 2) Verificá fechas y horarios. 3) Presioná **Guardar** (el sistema pedirá confirmación). ✅ **Campos** 1) **Título** *(obligatorio)* - Nombre del paquete (ej: *Promoción Verano*, *Bariloche 7 noches*, *Cataratas Full*). 2) **Monto** *(obligatorio)* - Precio total del paquete. - Se expresa en la moneda del negocio. 3) **Estado** *(obligatorio)* - **ACTIVO:** disponible para operar (vender / reservar). - **INACTIVO:** no debería ofrecerse ni usarse para nuevas operaciones. 4) **Destino** *(obligatorio)* - Lugar principal del paquete (ej: *Bariloche*, *Cataratas*, *Salta*). 🛏️ **Fechas de estadía (reservas de habitaciones)** 5) **Fecha inicio (estadía)** *(obligatorio)* 6) **Fecha fin (estadía)** *(obligatorio)* Estas fechas se usan para generar/calcular **reservas de habitaciones** del paquete. ✅ Regla: **Fin de estadía no puede ser menor que Inicio de estadía**. 🎫 **Datos del viaje (voucher del pasajero)** 7) **Día de salida** *(obligatorio)* 8) **Hora de salida** *(obligatorio)* 9) **Día de llegada** *(obligatorio)* 10) **Hora de llegada** *(obligatorio)* Estos datos se imprimen/usan en el **voucher** como fecha y horario oficial de traslado. ✅ Regla: **Llegada no puede ser anterior a Salida** (incluyendo hora). 📝 **Detalle** *(opcional)* - Información adicional (hotel, puntos de encuentro, qué incluye, condiciones, etc.). - Sugerencia: usarlo para aclarar políticas (señas, cancelaciones, equipaje, etc.). ⚠️ **Validaciones típicas** - Título requerido. - Destino requerido. - Monto requerido y mayor/igual a 0. - **Fin de estadía ≥ Inicio de estadía**. - **Llegada (fecha+hora) ≥ Salida (fecha+hora)**. - Recomendado: evitar duplicados (mismo título/destino/fechas) dentro del mismo negocio si tu lógica lo exige. 🔄 **Cómo se usa después** - Con el paquete creado y **ACTIVO**, se puede: - **Vender / reservar** a un cliente. - Generar **voucher** del pasajero con los datos del viaje. - Asignar pasajeros / asientos (si tu flujo incluye buses y mapa de asientos). 💡 **Buenas prácticas** - Usá títulos claros (Destino + noches + temporada). - Confirmá que las **fechas de estadía** coincidan con la estadía real (hotel). - Confirmá que los **datos de viaje** coincidan con lo que irá al voucher. - Si el paquete ya tuvo ventas/historial, preferí **INACTIVAR** antes que borrar. Ayuda del módulo: Parciales 💰 partials Visualizá los cortes parciales realizados durante el turno de una caja. 🧾 **¿Qué es un parcial?** Los parciales son registros intermedios que permiten hacer cortes de caja durante una jornada de trabajo. Sirven para controlar el dinero acumulado hasta un momento determinado **sin necesidad de cerrar la caja**. 🧑‍💼 **Información mostrada** Cada registro parcial contiene: - ID del parcial - Monto parcial registrado - Usuario que lo generó - Observaciones o comentarios opcionales - Fecha y hora exacta del corte 📄 **Opciones disponibles** En cada fila de la tabla podés: - Descargar el **PDF** del corte parcial - Imprimirlo directamente 🔍 **Detalle adicional** El encabezado muestra: - Número de caja relacionada - Nombre del cajero responsable de la caja - Listado ordenado cronológicamente de todos los parciales 📌 **Importante** Los parciales no modifican el estado de la caja (ni la cierran). Son útiles para: - Realizar arqueos parciales - Retirar montos sin cerrar caja - Control interno y conciliaciones 🔙 **Regresar** El botón "Regresar" te lleva al listado principal de cajas, sin perder el contexto. Ayuda del módulo: Pisos / Secciones 🧭 floors Desde aquí podés registrar nuevos pisos o secciones de tu local/negocio. Luego podrás asociar espacios de alquiler u otros recursos al piso creado. 🎯 **Objetivo** Esta pantalla te permite **crear un piso o sección** para tu negocio. Es útil para organizar áreas físicas y, más adelante, asociarles espacios (p. ej., puestos, locales, mesas). 🧩 **Dónde estás** **Panel administrador → Pisos → Nuevo** Título de la pantalla: *Registrar piso o sección*. 📝 **Campos del formulario** - **Nombre** *(obligatorio)* - Máx. 120 caracteres. - Debe ser **único dentro del mismo negocio**. - Se guarda **en MAYÚSCULAS** automáticamente. - Se genera un **slug** automáticamente con el patrón `nombre-business_id` (ej.: `PLANTA-BAJA-1`). - **Descripción** *(opcional)* - Máx. 1000 caracteres. - Podés detallar ubicación, referencia o cualquier info útil (ej.: "Sector derecho, frente a cajas"). 🔘 **Acciones** - **Guardar** → Crea el piso y muestra un aviso de éxito. - **Cancelar** → Vuelve al listado de pisos sin guardar cambios. ✅ **Comportamiento al guardar** - Si todo está correcto, verás **"Piso creado con éxito"** y volverás al índice de pisos. - Si hay errores de validación, se muestran mensajes y el formulario mantiene tus datos para corregir. 🚫 **Errores frecuentes y cómo resolverlos** - "**El nombre ya ha sido tomado**": existe otro piso con el mismo nombre **en tu negocio**. Cambiá el nombre (ej.: "Planta Baja" → "Planta Baja A"). - "**El nombre es obligatorio**" o "**El nombre es demasiado largo**": completá el campo y respetá el máximo de 120 caracteres. - "**La descripción es demasiado larga**": recortá a 1000 caracteres. 🧠 **Buenas prácticas** - Usá nombres **claros y consistentes** (ej.: "PLANTA BAJA", "PRIMER PISO", "SECTOR ELECTRÓNICA"). - Si tenés varias sucursales o negocios, incluí un sufijo para diferenciarlos (ej.: "PLANTA BAJA - CENTRO"). - Cargá primero los pisos/secciones y **después** creá los espacios/puestos vinculados a cada piso. 🔒 **Permisos** Solo usuarios con permisos adecuados pueden **crear, editar o eliminar** pisos. ℹ️ **Relación con otros módulos** Un piso puede tener **muchos espacios** (p. ej., puestos de alquiler). La asociación se hace desde el módulo correspondiente a *Espacios*. 💡 **Tip** Si no ves la ayuda, tocá el ícono **?** en el título de la tarjeta. La ayuda se carga en un modal por cada módulo. Ayuda del módulo: Planes de licencias 🧾 plans Selección del tiempo de duración de la licencia y su costo correspondiente. 📅 **¿Qué se muestra aquí?** En esta sección podés visualizar los diferentes planes de duración para las licencias de uso del sistema. 🧮 **Detalles del contenido de la tabla:** - **Meses**: Cantidad de meses que tendrá validez la licencia si se selecciona este plan. - **Precio**: Costo total que debe abonarse para adquirir la licencia correspondiente. - **Acciones**: Botón para seleccionar y continuar con el proceso de pago/registro del plan. 🛠️ **¿Qué sucede al seleccionar un plan?** Al hacer clic en el botón 'Seleccionar', serás redirigido al formulario de registro de licencia para continuar el proceso. 💡 **Consideraciones importantes:** - El monto es en la moneda del país seleccionado y corresponde al total por el período elegido. - Las licencias una vez adquiridas, no se renuevan automáticamente. - Es posible registrar múltiples licencias con fechas consecutivas para anticipar vencimientos. ❓ **¿Necesitás ayuda adicional?** Contactá a soporte o al administrador del sistema si tenés dudas sobre cuál plan elegir o cómo realizar el pago. Ayuda del módulo: Porcentajes por categoría % category_percentages Actualizá los porcentajes de sobrecosto por categoría y, opcionalmente, recalculá los precios de venta de todos los productos afectados. 🎯 **Objetivo** Configurar y aplicar **porcentajes por categoría** para los productos. Podés actualizar solo los **over_cost_1..7** o, además, **recalcular los precios de venta** según esos porcentajes. 🧩 **Dónde estás** **Panel administrador → Categorías → Porcentajes por categoría** Título de la pantalla: *Porcentajes por categoría*. 🧭 **Flujo rápido** 1) **Elegí la categoría** (o **Todas las categorías**). 2) Seleccioná **Alcance**: - **Recalcular precios (APPLY)**: guarda porcentajes y recalcula precios de venta. - **No realizar cambios (NONE)**: guarda porcentajes sin tocar precios. 3) Completá los **porcentajes**: - **Siempre visibles**: *Minorista*, *Mayorista*, *Preferencial*. - **Opcionales** (según negocio): *Fábrica*, *Distribuidor*, *Repartidor*, *Especial*. 4) **Minorista sincroniza** automáticamente el resto mientras tipeás (se puede editar manualmente si querés). 5) **Guardar**. 🧮 **Cálculo de precios (cuando Alcance = APPLY)** - Fórmula base por precio: `precio = cost * (1 + (porcentaje / 100))`. - **Precisión de redondeo** (propiedad del negocio `presition`): - `0` → **sin redondeo** (se deja el valor tal cual). - `1` → redondeo **hacia arriba** a **decenas** (10). - `2` → redondeo **hacia arriba** a **centenas** (100). - `3` → redondeo **hacia arriba** a **miles** (1000). - Ejemplos: - `presition = 1`: 957,10 → **960** ; 954,10 → **950** - `presition = 2`: 80,10 → **100** ; 849,99 → **900** - `presition = 0`: 957,10 → **957,10** (sin cambios de redondeo) 🧾 **Campos del formulario** - **Categoría** (selectpicker): una sola categoría o **Todas las categorías**. - **Alcance**: - `APPLY` → recalcula precios y guarda over_cost\_*. - `NONE` → solo guarda over_cost\_*. - **Porcentajes**: - `Minorista` → guarda en **over_cost_1** (y sincroniza a los demás al escribir). - `Mayorista` → **over_cost_2** - `Preferencial` → **over_cost_3** - `Fábrica` → **over_cost_4** *(si está habilitado)* - `Distribuidor` → **over_cost_5** *(si está habilitado)* - `Repartidor` → **over_cost_6** *(si está habilitado)* - `Especial` → **over_cost_7** *(si está habilitado)* 🛠️ **Qué se actualiza** - **Siempre** (APPLY y NONE): `over_cost_1..7` de los productos alcanzados. - **Solo con APPLY**: - `sell_price`, `wholesaler`, `offer_price`. - Opcionales (si el negocio los muestra): `price_factory`, `price_distributor`, `price_delivery`, `price_special`. - Redondeo **hacia arriba** según `presition`. ⚡ **Rendimiento** - **Actualización masiva** con **un solo UPDATE** por bloque (porcentajes y precios), usando expresiones SQL (`DB::raw` + `CEIL`) dentro de una **transacción**. 🚫 **Errores frecuentes** - No seleccionar categoría ni “Todas las categorías”. - Dejar **Alcance** vacío. - Inconsistencia entre flags del negocio y campos visibles. - No inicializar selectpicker o no adjuntar los JS requeridos. 🧠 **Buenas prácticas** - Confirmar con SweetAlert cuando `scope = APPLY` (afecta muchos productos). - Mostrar un **resumen** de cuántos productos fueron actualizados. - Loguear auditoría (quién cambió, cuándo y qué alcance). 💡 **Tip** - Si tu negocio cambia seguido la `presition`, documentalo en **Configuración → Negocio** y agregá un tooltip en el ícono de precisión: `<i class="fas fa-crosshairs" title="Nivel de precisión aplicado al redondeo"></i>` Ayuda del módulo: Registrar Categoría 🗂️ category Este módulo te permite crear nuevas categorías para organizar productos en el sistema. 🧾 **¿Qué es una categoría?** Una categoría es una forma de agrupar productos similares para facilitar su búsqueda, gestión y reporte. Ej: Bebidas, Alimentos, Electrónica. 📋 **Campos obligatorios:** 1. **Nombre:** Es el nombre de la categoría. Se sugiere que sea claro y representativo. Ej: "Lácteos". 2. **Porcentaje (%):** *Solo visible si se usa sistema de comisiones.* Define el porcentaje de comisión aplicable a productos dentro de esta categoría. 3. **Descripción:** Campo opcional para detalles adicionales o notas internas sobre la categoría. 🏷️ **Otras consideraciones:** - El campo `Nombre` debe ser único dentro de la empresa. - Si se usa comisión por categoría, el campo `Porcentaje` será obligatorio y debe estar entre 0 y 100. - Todas las categorías quedan asociadas a la empresa seleccionada (`business_id`). 📤 **¿Qué pasa al guardar?** - Si todos los datos son válidos, la categoría se guarda y queda disponible para su uso inmediato al crear o editar productos. ❌ **Errores comunes:** - El nombre ya existe. - El porcentaje está fuera del rango permitido. - Se omiten campos obligatorios. Ayuda del módulo: Registrar Contrato de Alquiler 🏠 unit_rentals En este módulo registrás contratos de alquiler vinculados a una unidad y a un inquilino. El sistema puede generar las cuotas mensuales automáticamente. 📌 **¿Para qué sirve esta pantalla?** Acá cargás un contrato de alquiler para una unidad específica. Definís quién es el inquilino, desde cuándo rige el contrato, cuánto se paga por mes y las reglas de mora. Con estos datos, el sistema puede generar las cuotas y ayudarte a gestionar pagos y vencimientos. 🧭 **Pasos rápidos para registrar un contrato** 1) **Elegí la Unidad**: buscá por nombre/código/tipo. 2) **Seleccioná al Inquilino**: si no existe, tocá el botón con el ícono de persona para crearlo sin salir. 3) **Fechas**: - **Inicio**: día desde el que comienza el contrato. - **Fin (opcional)**: dejalo vacío si el contrato es abierto. 4) **Vencimiento y Monto**: - **Día de vencimiento**: día del mes en que vence cada cuota. - **Monto mensual**: importe fijo por mes. 5) **Opcionales**: - **Propietario** (si querés redundancia rápida). - **Depósito** (si se retuvo). - **Mora**: % anual, días de gracia, base de días y tope. 6) **Notas**: comentarios internos o condiciones particulares. 7) **Guardar**: el sistema registrará el contrato y (según configuración) podrá generar las cuotas. 🧾 **Campos del formulario** - **Unidad**: la habitación/departamento que se alquila. - **Inquilino**: la persona/empresa que alquila. Podés crearlo desde el botón verde. - **Propietario (opcional)**: útil si trabajás con administración de propiedades. - **Inicio**: fecha desde la que se empieza a cobrar. - **Fin (opcional)**: completalo solo si el contrato tiene fecha de finalización. - **Día de vencimiento**: número del 1 al 31. Sugerencia: usá el mismo día que el inicio si querés simplificar. - **Monto mensual**: importe de la cuota mensual. - **Depósito (opcional)**: registro del depósito en garantía. - **% anual mora**: porcentaje anual que se aplicará si hay atraso (ejemplo: 36,50). - **Días de gracia**: días que no generan mora después del vencimiento. - **Base de días**: cómo se calcula el año para la mora (365 o 360). - **Tipo de interés**: - **Simple**: la mora se calcula sin capitalizar. - **Compuesto**: la mora se capitaliza (más exigente). - **Tope mora % (opcional)**: límite de la mora respecto a la cuota (por ejemplo, 100 = como máximo una cuota). - **Notas**: datos adicionales del contrato. 💡 **Consejos útiles** - El campo **Fin** es opcional. Si lo dejás vacío, podés generar cuotas por un número de meses predefinido. - Si elegís el **Inicio**, el sistema puede sugerirte automáticamente el **Día de vencimiento**. - Usá el buscador de los combos (tienen lupa) para encontrar rápido unidades y clientes. - **Propietario** es opcional: si no lo cargás, podés seguir igual. - **Depósito**: anotarlo ayuda para conciliaciones al finalizar el contrato. ⚠️ **Errores comunes** - Falta elegir **Unidad** o **Inquilino**. - **Inicio** vacío o **Fin** anterior al **Inicio**. - **Monto mensual** en 0 o sin completar. - **Día de vencimiento** fuera del rango 1–31. - Valores de **mora** fuera de rango (por ejemplo, negativos). ✅ **Al guardar correctamente** - El contrato queda **activo** y asociado a la unidad e inquilino. - Podrás ver el contrato en el listado y registrar **cuotas/pagos**. - Si tu configuración lo permite, se **generan las cuotas mensuales** según el inicio, el día de vencimiento y el monto. ❓ **Preguntas frecuentes** - *¿Puedo cargar un contrato sin fecha de fin?* Sí. Dejalo vacío y más adelante podés agregarla o finalizar el contrato. - *¿Qué día conviene usar como vencimiento?* Muchas administraciones usan el mismo día del **Inicio**. Si el mes tiene menos días, el sistema ajusta al último día disponible. - *¿Cómo agrego un inquilino nuevo rápido?* Tocá el botón **Agregar nuevo cliente** (ícono de persona con +), completá y al cerrar se selecciona automáticamente. - *¿Qué es el tope de mora?* Es el máximo que puede sumar la mora respecto a la cuota. Por ejemplo, 100 significa que la mora no superará el valor de una cuota. 🧩 **Recordá** - La **frecuencia** es **mensual**. - Podés editar el contrato luego para actualizar fechas, importes o reglas de mora. - Si hay otro contrato activo para la misma unidad, el sistema puede bloquearlo o advertirte según la configuración. ¡Listo! Con estos pasos vas a poder registrar contratos de forma rápida y segura. Ayuda del módulo: Registrar reserva 🧾 booking Desde aquí registrás una nueva reserva: elegís fechas, cantidad de personas, habitación disponible por capacidad, cliente y precio. También ves próximas reservas de la habitación y los días libres hasta la más cercana. 🎯 **Objetivo** Crear una **reserva** seleccionando **fechas**, **personas** y una **habitación disponible** (sin solapamientos y con capacidad suficiente), asignarla a un **cliente**, y confirmar **precio/estado**. 🧩 **Dónde estás** **Panel administrador → Reservas → Registrar reserva** Título de la pantalla: *Registro de reservas*. 🧾 **Secciones de la pantalla** 1) **Datos principales** - **Check-in (fecha)** y **Check-out (fecha)** → definen el rango. - **Personas** → determina la **capacidad mínima** de la habitación. - **Habitación disponible** (select con `selectpicker`) - Se llena vía **AJAX** filtrando: - Habitaciones **activas** - **Sin solapamiento** en el rango seleccionado - Con **capacidad ≥ Personas** - En cada opción se muestra: *Nombre — Tarifa base — Capacidad*. - **Próximas reservas** (panel informativo) - Lista las **reservas futuras** de la habitación elegida. - Muestra **cuántos días libres** hay desde la fecha “Desde” (check-in elegido o “hoy”) hasta la **próxima reserva**. - **Hora Check-in / Check-out** - Si no se informan manualmente, se **precargan** con los valores por defecto del negocio (`$globalBusiness->checkin_at` / `checkout_at`, formateados a `HH:mm`). 2) **Cliente y precio** - **Cliente** (select con búsqueda). - **Noches**: cálculo automático `checkout - checkin` (solo lectura). - **Precio total**: se precalcula como *Noches × Tarifa base* (editable). - **Estado**: `PENDING | CONFIRMED | CHECKED_IN | CHECKED_OUT | CANCELLED`. - **Notas** (opcional). 3) **Acciones** - **Recalcular precio**: reevalúa *Noches × Tarifa base* según la habitación actual. - **Guardar reserva** / **Cancelar**. 📡 **Rutas / Endpoints (AJAX y Form)** - **Disponibilidad de habitaciones** `GET {{ route('rooms.available') }}` **Query params**: - `checkin=YYYY-MM-DD` - `checkout=YYYY-MM-DD` - `guests={int}` **Respuesta**: `[{ id, name, capacity, base_price }]` - **Próximas reservas de una habitación** `GET {{ route('rooms.future', ['room' => '{id}']) }}?from=YYYY-MM-DD` **Respuesta**: `{ from, days_available_until_next, reservations: [{checkin_date, checkout_date, status}, ...] }` - **Guardar reserva** `POST {{ route('reservations.store') }}` con CSRF. 🧠 **Cómo funciona la disponibilidad** 1. Al cambiar **fechas** o **personas**, se llama a `rooms.available` con esos 3 parámetros. 2. El select muestra **solo** habitaciones disponibles con **capacidad suficiente**. 3. Al elegir habitación: - Se setean `max` y ayuda de **capacidad** sobre “Personas”. - Se pide `rooms.future` para mostrar futuras reservas y **días libres** hasta la próxima. ✅ **Validaciones del servidor (resumen)** - `checkin_date` < `checkout_date`. - `guests_count ≥ 1` y `guests_count ≤ capacity` de la habitación. - Sin **solapamiento** de reservas (excluye `CANCELLED` y `CHECKED_OUT`). - `price_total ≥ 0`. - Horas por defecto desde **negocio** si no se envían. 🔒 **Permisos y seguridad** - Formularios protegidos con **CSRF**. - Endpoints de disponibilidad y futuras deben requerir autorización acorde a tu política (ej. `auth`/`can`). - Validar `room_id` con `exists:rooms,id` y pertenencia lógica si aplica. 🚫 **Errores frecuentes** - No pasar **`guests`** al consultar disponibilidad → aparecen habitaciones que no cumplen la capacidad. - No formatear horas de negocio a `HH:mm` → el `<input type="time">` queda vacío. - No refrescar el select (`.selectpicker('refresh')`) tras el AJAX → no se ven las opciones. 🧩 **Buenas prácticas** - Mantener consistente la **regla de solapamiento**: usar rango semiabierto `[checkin, checkout)` para evitar off-by-one. - Mostrar feedback claro en panel de futuras reservas y en el select (mensajes “Sin disponibilidad” / “Error al cargar”). - Si cambia **Personas** y la habitación ya no cumple capacidad, **limpiar selección** automáticamente. 💡 **Consejo** - Usá el botón **Recalcular precio** luego de cambiar fechas o habitación para llevar el importe a la tarifa base actual (podés sobreescribirlo si hay descuentos o extras). Ayuda del módulo: Registrar Subcategoría 🧩 subcategory En este módulo podés registrar subcategorías para clasificar mejor tus productos dentro de una categoría principal. 🔹 **¿Qué es una subcategoría?** Una subcategoría es una subdivisión de una categoría. Te permite clasificar productos con más detalle. Por ejemplo, la categoría 'Bebidas' puede tener subcategorías como 'Gaseosas', 'Jugos', o 'Cervezas'. 📋 **Campos del formulario:** 1. **Nombre:** Es el nombre de la subcategoría. Debe ser único dentro de la misma empresa y estar correctamente escrito. Ej: "Cremas hidratantes". 2. **Porcentaje:** (*Visible solo si hay sistema de comisiones*) Indica el porcentaje de comisión para esta subcategoría. Se aplica a las ventas de los productos relacionados. 3. **Descripción:** Campo opcional para registrar información adicional sobre esta subcategoría. 4. **ID de Empresa (`business_id`):** Se asigna automáticamente según la empresa actual. ✅ **Consideraciones:** - Las subcategorías deben estar asociadas a una categoría padre, la cual se define generalmente en la lógica del controlador. - No se pueden repetir nombres de subcategorías dentro de la misma empresa. - Si usás sistema de comisiones, el campo `Porcentaje` es obligatorio. 🚫 **Errores comunes:** - El nombre ya está en uso. - El campo porcentaje tiene un valor fuera del rango 0-100. - Campos obligatorios no completados. 📤 **Al registrar correctamente:** La subcategoría estará disponible para ser seleccionada al crear o editar productos y será visible en los reportes y listados relacionados. Ayuda del módulo: Registrar unidad 🏠 units En esta pantalla cargás nuevas unidades (habitaciones, departamentos, cocheras, etc.) para usarlas en contratos y listados. 📌 **¿Para qué sirve esta pantalla?** Acá creás una **nueva unidad** para tu negocio. Una vez guardada, la unidad podrá usarse en **contratos**, listados y búsquedas. 🧭 **Guía rápida (paso a paso)** 1) **Cliente** (propietario) → elegí el cliente de la lista. - ¿No está? Tocá **➕** para **agregar cliente** sin salir (se abre una ventana). 2) **Nombre** → poné un nombre claro: *'Depto 2B'*, *'Habitación 101'*, etc. 3) **Código** *(opcional)* → un identificador interno: *'A-101'*, *'PISO2-B'*, etc. 4) **Tipo de unidad** → elegí el tipo (habitación, dpto, cochera, etc.). 5) **Características** *(opcional)* → tildá lo que corresponda (baño privado, TV, balcón…). 6) **Descripción** *(opcional)* → detalles útiles para tu equipo. 7) **Activo** → dejalo **encendido** si querés que la unidad esté disponible. 8) Tocá **Guardar**. 🧩 **Campos y cómo completarlos** - **Cliente** *(obligatorio)*: quien figura como dueño/asociado a la unidad. - Tenés **búsqueda** por nombre/teléfono/email (lista con lupa). - **Nombre** *(obligatorio)*: hasta **255** caracteres. Aparece en listados y contratos. - **Código** *(opcional)*: hasta **50** caracteres. Útil para inventario interno. - **Tipo de unidad** *(obligatorio)*: clasifica la unidad para filtros y reportes. - **Características** *(opcional, múltiple)*: podés seleccionar varias. - **Descripción** *(opcional)*: notas internas (comodidades, ubicación, etc.). - **Activo**: si lo apagás, la unidad queda **inactiva** (según tu configuración, puede no mostrarse para nuevos contratos). 🛠️ **Atajos y ayudas en pantalla** - Botón **➕** junto a *Cliente*: abre el **formulario rápido** para crear un cliente. - Selects con **búsqueda en vivo**: escribí para filtrar. - En *Características*, podés seleccionar varias y ver el conteo. ✅ **Validaciones y mensajes** - **Obligatorios**: *Cliente*, *Nombre*, *Tipo de unidad*. - Si falta algún campo, lo vas a ver **marcado en rojo** con el mensaje al pie. - Al guardar correctamente, verás un **mensaje de confirmación** y volverás al listado. 💡 **Sugerencias** - Usá un **nombre descriptivo** y consistente (ej.: *"Torre A - 3°B"*). - Definí un **código corto** para búsquedas rápidas. - Cargá **características**: después te ayudan a **filtrar** y comparar unidades. - Si la unidad aún no está disponible, **creala inactiva** y activala cuando corresponda. ❗ **Errores comunes** - **No elegir Cliente/Tipo de unidad** → el sistema no deja guardar. - **Nombre vacío** → es obligatorio. - **Cerrar la ventana de cliente nuevo sin guardar** → no aparece en la lista; crealo de nuevo. Ayuda del módulo: Registro de artículos product Este formulario te permite registrar un nuevo artículo o producto en el sistema, asignándole información clave como nombre, unidad de medida, precios de venta, proveedor, categoría y más. Al crear un nuevo producto, el campo 'Nombre' puede incluir la descripción del tamaño y peso del producto. Sin embargo, para facilitar las búsquedas, se recomienda separar estos datos utilizando la opción Unidad de Medida. Ejemplo: Si deseas crear el producto 'Azúcar x 1 kg', escribe 'Azúcar x 1' en el nombre y selecciona Kilogramos como unidad de medida. Nota: El sistema selecciona de manera predeterminada la unidad 'Unidad'. Si prefieres otra opción, puedes cambiarla durante la creación del producto pero a la hora de importar productos desde un excel debes tener un mayor control. Importación de Productos desde Excel: Al importar productos desde un archivo Excel, asegúrate de seleccionar la unidad de medida en la que se encuentran los productos que vas a importar o a actualizarle los precios, deben ser los mismos parámetros con los que fueron cargados ya que si no lo son el sistema entenderá que estas ingresando productos nuevos y estos se crearán con los nuevos valores. Cuando importas productos sin código de barras, el sistema identifica cada producto por los siguientes campos: - Nombre - Unidad de Medida - Marca - Categoría - Proveedor Si escoges parámetros diferentes a los que ya había en el sistema para cada producto, producirá que se generen productos nuevos con los parámetros que tú seleccionaste. Ten extrema precaución al realizar importaciones desde un excel. Subcategorías es opcional y favorece a la búsqueda de productos. Tamaño es opcional y favorece a la búsqueda de productos. Formato del Nombre del Producto: El sistema realiza un formateo automático del nombre al guardar el producto. Este proceso incluye: - Convertir el nombre a mayúsculas. - Eliminar los espacios dobles. - Quitar los espacios en blanco al inicio y final del nombre. Seguir estas pautas evitará duplicados y garantizará que tus productos se gestionen de manera eficiente al importar desde un archivo Excel. Campos Obligatorios y Opcionales: Los campos que aparecen con el texto 'Campo obligatorio' en color rojo deben ser completados. Los campos que indican 'Campo opcional' pueden dejarse en blanco. Código de Barras: El código de barras es opcional. Ten en cuenta que si ingresas un código de barras repetido este será pintado de rojo y no te dejará cargar el producto (código no disponible). Si no se ingresa, el sistema generará automáticamente un código único para el producto. Stock Mínimo: El campo de stock mínimo también es opcional. Si lo dejas en blanco, el sistema le asignará un valor predeterminado de 1. Es recomendable ingresar el stock mínimo para tener un mejor control de compras y ganancias. Ingresar el Precio: Puedes seleccionar si el precio será en la moneda local, dólares, o euros. En los casos de dólares o euros, el sistema calculará su valor tomando la cotización actual desde el apartado de cotizaciones. Precios a Ingresar: - Precio Minorista - Precio Mayorista - Precio Preferencial Al ingresar el Precio Minorista, el sistema llenará automáticamente los precios mayorista y preferencial con el mismo valor. Puedes modificar estos precios según sea necesario si deseas mantener precios diferenciados. Permisos para Ingresar Stock: Si el usuario que está creando el producto cuenta con el permiso para ingresar cantidad en el stock, podrá asignar un valor específico. En caso de no tener este permiso, el stock se establecerá en cero (0) de manera predeterminada. Recuerda que el camino para aumentar el stock de un producto es a través de las compras y es por eso que solo se permite cargar el stock de un producto en la creación del mismo. Fecha de Vencimiento: Si el producto cuenta con una fecha de vencimiento puedes ingresarla o no. Si lo haces te asegurarás de que no se te venzan los productos en el local pudiendo así ofrecer ofertas de productos antes que se venzan. Al ingresar una fecha de vencimiento, el sistema supervisará este valor y te avisará según los días de anticipación que hayas configurado en el módulo de Configuración de Empresa. Sector de Almacenamiento: Es recomendable ingresar el sector de almacenamiento para facilitar la organización y localización de los productos dentro del establecimiento. Esta información es útil para que cualquier usuario, aunque no conozca la distribución del local, pueda encontrar el producto fácilmente. Producto de Referencia: Puedes asociar el producto que estás creando con un Producto de Referencia. Esto es especialmente útil si varios productos comparten un mismo código de barras pero tienen características diferentes. Ejemplo: Un pendrive de 16 GB color negro y otro de 16 GB color rojo de la misma marca pueden compartir el mismo código de barras. En este caso, al actualizar el producto de referencia, el sistema actualizará automáticamente los productos asociados. Campos Esenciales: - Marca: Debes seleccionar una marca. - Categoría: Debes seleccionar una categoría. - Proveedor: Debes seleccionar un proveedor. Imágenes del Producto: La imagen del producto es opcional. Sin embargo, se recomienda cargar una imagen de alta resolución para evitar que se vea pixelada cuando se muestre en publicidad. Resoluciones sugeridas: - 3840 x 2160 píxeles (4K) - 1920 x 1080 píxeles (Full HD) Si no se ingresa una imagen, el sistema mostrará una imagen predeterminada. Opciones adicionales: - **Disponible para alquiler**: Permite habilitar que el producto pueda ser alquilado. Si activás esta opción, deberás completar el precio diario y mensual de alquiler. - **Permitir editar el nombre al vender**: Activa la posibilidad de modificar el nombre del producto al momento de venderlo, ideal para productos personalizados o especiales. - **Disponible como ingrediente**: Marca el producto como apto para ser usado en recetas si estás en un negocio de tipo restaurante. Resumen: - Utiliza la Unidad de Medida para agilizar las búsquedas. - En importaciones sin código de barras, el producto se identifica por el nombre, unidad de medida, marca, categoría y proveedor. - El sistema ajusta el nombre del producto al guardarlo (mayúsculas y eliminación de espacios). - Los precios se completan automáticamente al ingresar el precio minorista. - El stock inicial depende de los permisos del usuario. - Puedes ingresar la fecha de vencimiento para monitoreo y alertas. - Asociar productos como referencia permite actualizaciones en masa. - Es recomendable ingresar el sector de almacenamiento. 📝 Información básica - **Nombre**: Ingresá el nombre del producto. - **Unidad de medida**: Seleccioná en qué unidad se mide (Unidad, Kilos, Litros, etc.). - **Código de barras**: Opcional. Podés ingresar un código único para lectura por scanner. - **Stock mínimo**: Define el nivel de alerta por bajo stock. 🏷️ Clasificación - **Categoría / Subcategoría / Marca / Proveedor**: Seleccioná las opciones correspondientes para clasificar el producto. 👕 Campos opcionales para indumentaria - **Sub-Categoría-Uso y Sub-Categoría-Tamaño**: Usá estos campos si trabajás con ropa o calzado. 💰 Precios de venta - **Minorista / Mayorista / Preferencial**: Completá estos valores manualmente o calculalos automáticamente desde el campo 'Costo'. - **Fábrica / Distribuidor / Repartidor / Especial**: Solo si están habilitados en tu negocio. 🛒 Opciones ecommerce - **Visibilidad**: Definí si el producto estará disponible en POS, ecommerce o ambos. - **Precio ecommerce**: Elegí qué tipo de precio se usará en la tienda online. 💼 Otros campos - **Costo**: Se usa para calcular los precios de venta según coeficientes predefinidos. - **Moneda**: Seleccioná en qué moneda se expresan los precios del producto. - **Sector de almacenamiento**: Indicá en qué lugar físico se guarda el producto. - **Artículo de referencia**: Opcional, útil para relacionarlo con otro artículo existente. 📦 Alquiler (si aplica) - Si el producto es alquilable, activá el switch 'Disponible para alquiler' y completá los precios diarios y mensuales. 📷 Imágenes - Cargá una imagen principal del producto. También podés añadir imágenes extras opcionales. 🧾 Descripción - Agregá una descripción breve para identificar mejor el producto. ## 🧩 Producto compuesto e ingredientes Si tu negocio tiene activado **“Usar compuesto/ingredientes”**, vas a ver dos switches: - **Disponible para ingrediente**: marca este artículo para poder usarlo como parte de recetas/compuestos. - **Producto compuesto**: habilita la tabla para elegir **ingredientes** y **cantidades**. > **Reglas de validación importantes** > - Un artículo no puede ser **Ingrediente** y **Compuesto** a la vez. > - Si marcás **Producto compuesto**, debés cargar **al menos 1 ingrediente** con **cantidad > 0**. > - Solo se pueden seleccionar como ingredientes artículos que estén marcados como **Disponible para ingrediente**. > - No se permiten **ingredientes repetidos** dentro del mismo compuesto. **Cómo cargar ingredientes** 1. Activá **Producto compuesto**. 2. Usá **“Agregar ingrediente”** para sumar filas. 3. En cada fila, buscá el **ingrediente** (lista filtrada por artículos con “Disponible para ingrediente”). 4. Ingresá la **cantidad** necesaria para la receta (respeta la U.M. del ingrediente). 5. (Opcional) Agregá una **nota**. > **Stock y ventas** (si corresponde a tu operación): al vender el compuesto, podés descontar stock de los ingredientes. La cantidad máxima fabricable se define por el mínimo de `floor(stock_i / qty_i)` entre todos los ingredientes. ✅ Finalización - Al hacer clic en el botón 'Registrar', se validará el formulario. Si todo está correcto, el producto se guardará en el sistema. - Si algún campo obligatorio no está completo, recibirás una advertencia. ❓ Botón de ayuda - Podés consultar esta información en cualquier momento haciendo clic en el ícono de ayuda junto al título del módulo. Ayuda del módulo: Registro de Bajas de Artículos deductions Este formulario permite registrar una baja de inventario, indicando qué artículo se descuenta, en qué cantidad y por qué motivo. Procedimiento 📦 Selección de artículo - Elegí el artículo que será dado de baja. Se muestra el stock actual al lado del nombre. - Este campo es obligatorio. 🔢 Cantidad - Ingresá la cantidad de unidades que serán dadas de baja. - No puede ser mayor al stock actual del artículo. 📝 Motivo de la baja - Indicá por qué se está realizando la baja (por ejemplo: 'producto vencido', 'dañado', 'rotura en transporte'). - Este campo es obligatorio. ⚠️ Validaciones automáticas - Si la cantidad supera el stock, se mostrará un mensaje de advertencia y no se permitirá continuar. - Si faltan campos obligatorios, el sistema también mostrará una alerta. ✅ Confirmación - Al hacer clic en **Registrar baja**, se mostrará una confirmación de seguridad. - Si confirmás, se descontará la cantidad indicada del stock del artículo seleccionado. ❓ Botón de ayuda - Hacé clic en el ícono de ayuda junto al título para volver a leer estas instrucciones en cualquier momento. Ayuda del módulo: Registro de Cheques 🧾 cheque Este módulo te permite registrar cheques emitidos o recibidos en el sistema para una mejor trazabilidad de los pagos y vencimientos. 🔹 **¿Qué se puede hacer aquí?** Podés registrar cheques con todos sus datos esenciales: número, cliente asociado, monto, fechas de emisión y vencimiento, estado actual y banco correspondiente. 📋 **Campos del formulario:** 1. **Número de cheque:** Código impreso en el cheque. Debe ser único por banco. Campo obligatorio. 2. **Cliente:** Persona o entidad que emite o a quien pertenece el cheque. Obligatorio. 3. **Monto:** Valor monetario del cheque. Usá coma o punto decimal si es necesario. 4. **Fecha de emisión:** Día en que se generó el cheque. Debe ser anterior o igual a la de vencimiento. 5. **Fecha de vencimiento:** Día en que el cheque puede cobrarse. No puede ser anterior a la emisión. 6. **Estado:** - *Pendiente:* Aún no se cobró. - *Aclarado:* Ya fue cobrado correctamente. - *Rebotado:* Fue rechazado. - *Vencido:* Pasó la fecha sin aclararse. - *Entregado a proveedor:* Cheque fue entregado a un proveedor (estado inactivo para edición manual). 7. **Banco:** Seleccioná el banco emisor del cheque. Campo obligatorio. ⚠️ **Validaciones importantes:** - No se permite registrar dos cheques con el mismo número y banco. - Las fechas deben tener coherencia lógica. - No puede faltar ninguno de los campos obligatorios. ✅ **Qué sucede al registrar un cheque:** El cheque quedará almacenado en el sistema, y se podrá usar en pagos, consultar su estado en reportes y modificarlo o eliminarlo si aún no está asociado a una venta o caja cerrada. 🔁 **¿Puedo editar o eliminar luego?** Sí, mientras no esté asociado a una operación cerrada (como una caja cerrada o una venta). 📌 **Recomendaciones:** - Verificá bien las fechas antes de confirmar. - Si vas a entregar un cheque a un proveedor, usá el módulo de pagos a proveedores, no este formulario. Ayuda del módulo: Registro de Clientes 🧑‍💼 client Este módulo permite ingresar nuevos clientes al sistema, asociando información fiscal, ubicación, y límites de crédito si corresponde. 📝 **¿Qué se puede registrar?** Se registran clientes con sus datos de contacto, localización geográfica (incluyendo georreferencia), información fiscal y opcionalmente límites de cuenta corriente. 🔍 **Campos principales:** - **Apellido y Nombre:** Campo obligatorio. - **Correo electrónico:** Opcional. Se usa para envíos automáticos (facturas, recordatorios, etc.). - **Teléfono / Celular:** Campo obligatorio. Usado también para notificaciones por WhatsApp. - **DNI / CUIT:** Opcionales, pero pueden volverse obligatorios según la categoría fiscal elegida. - **Categoría Fiscal:** Campo obligatorio. Determina si se requiere CUIT y afecta la emisión de comprobantes. 📦 **Información comercial y ubicación:** - **Dirección y búsqueda en mapa:** Se puede buscar una dirección exacta para asignar coordenadas mediante Leaflet y OpenStreetMap. - **Departamento y provincia:** Obligatorios para la ubicación administrativa. - **Zona:** (si está habilitado en tu negocio) Permite asignar una zona geográfica para planificación de rutas de entrega. - **Geolocalización:** El sistema intenta capturar la ubicación automáticamente. También se puede ubicar manualmente con el mapa. 💳 **Cuenta corriente:** - **Autoriza a cuenta corriente:** Si se activa, se habilita el campo de monto máximo. - **Monto límite de cuenta corriente:** Obligatorio si se autoriza cuenta corriente. Se bloquea si está deshabilitada. 👥 **Asignación de usuario responsable:** Campo opcional que permite vincular al cliente con un usuario interno. ⚠️ **Validaciones automáticas:** - CUIT obligatorio para categorías como RESPONSABLE INSCRIPTO, EXENTO, MONOTRIBUTO, etc. - Límite obligatorio si autoriza cuenta corriente. - Verificación por geolocalización si el navegador lo permite. ✅ **Acciones posteriores:** Una vez registrado, el cliente estará disponible para: - Asignación de ventas - Generación de facturas - Inclusión en campañas de marketing - Análisis de cuentas corrientes y movimientos 📌 **Consejos:** - Si un cliente no tiene email, podés dejarlo vacío. - Para clientes sin CUIT, usá 'CONSUMIDOR FINAL'. - Usá la búsqueda por dirección para ubicar con precisión en el mapa. Ayuda del módulo: Registro de Combos 🧩 combo Formulario para crear un nuevo combo o pack de productos con precios, visibilidad y artículos asociados. 🔹 **¿Qué es un Combo?** Un combo es un conjunto de productos agrupados que se venden como una sola unidad. 🛠️ **Opciones clave:** - **Disponible para alquiler:** Útil si tu negocio alquila combos (por ejemplo, herramientas o equipos). - **Disponible como ingrediente:** Si estás en un restaurante, podés usar este combo como parte de una receta. 🏷️ **Datos requeridos:** - **Nombre del combo** (único, validado automáticamente). - **Unidad de medida** (por ejemplo: Unidad, Paquete). - **Código de barras** (opcional, con validación en tiempo real). - **Stock mínimo** (opcional). - **Categoría y proveedor** (obligatorios). 💵 **Precios requeridos:** - Precio minorista, mayorista, preferencial. - Si están habilitados, también: fábrica, distribuidor, repartidor, especial. - **Visibilidad y tipo de precio para ecommerce**. 📦 **Artículos del combo:** - Se agregan productos individuales desde el botón '+ Agregar artículo'. - Se listan debajo del campo nombre. - Podés eliminar artículos antes de registrar. 🖼️ **Imágenes:** - Imagen principal (opcional). - Imágenes adicionales desde el botón con ícono ➕. - Previsualización automática antes de guardar. 📅 **Fecha de vencimiento:** - Opcional. Se sugiere colocar la más antigua si los productos del combo tienen vencimiento. 📍 **Sector de almacenamiento:** - Campo de texto opcional para indicar dónde se guarda físicamente el combo. 📊 **Validaciones interactivas:** - Código y nombre verificados en tiempo real para evitar duplicados. - Alertas visuales y validaciones con SweetAlert. ✅ **Al finalizar:** 1. Revisá todos los campos obligatorios. 2. Hacé clic en 'Registrar'. 3. Confirmá en la alerta de SweetAlert. 🧠 **Consejo:** Si un combo tiene artículos con precios definidos, se puede usar el botón de precio sugerido (si está implementado) para autocompletar. Ayuda del módulo: Registro de conceptos 💡 concept Formulario para registrar nuevos conceptos utilizados en los movimientos de caja (ingresos o egresos). 📌 **¿Qué es un concepto?** Un concepto define el motivo o la causa de un movimiento de caja, como por ejemplo 'Pago a proveedor', 'Adelanto a empleado', o 'Venta directa'. 📝 **Cómo completarlo:** 1. **Nombre** 🏷️ Escribí el nombre identificador del concepto. Ej.: 'Adelanto', 'Devolución', 'Cobro de deuda'. 2. **Impacto** ➕➖ Seleccioná si el concepto genera un **ingreso** (`increase`) o un **egreso** (`decrease`) de dinero. 3. **Uso (Caja Mayor o Menor)** 🧾 Este campo define a qué caja se aplica el movimiento: - Si seleccionás **Ingreso**, se asignará automáticamente a **Caja Menor**. - Si seleccionás **Egreso**, podrás elegir entre **Caja Mayor** y **Caja Menor**, **salvo que** el movimiento esté asociado a un usuario o sea un adelanto, en cuyo caso se forzará a **Caja Menor**. 4. **Requiere Usuario (solo si es egreso)** 👤 Si el movimiento debe asociarse a un usuario (como en un adelanto de sueldo), tildá esta opción. 5. **Adelanto (si aplica)** 💸 Solo aparece si está tildado 'Requiere Usuario'. Indicá si el concepto es específicamente un adelanto de dinero. 6. **Descripción** 🗒️ Podés dejar una nota aclaratoria o ampliación del concepto (opcional). ✅ **Recomendaciones:** - Definí los conceptos con claridad para facilitar reportes. - Evitá duplicar nombres similares con diferencias mínimas. - Si la empresa no utiliza Caja Mayor, el campo 'Uso' no se mostrará. Ayuda del módulo: Registro de devolución devolution Este formulario permite registrar devoluciones de productos al proveedor, especificando los artículos, cantidades, motivos y observaciones correspondientes. Procedimiento 📦 Selección de proveedor - Seleccioná el proveedor al cual se le devolverán los productos. Este campo es obligatorio. 🔍 Búsqueda del artículo - Podés buscar un producto escribiendo el código de barras o seleccionándolo desde el listado desplegable. - Al seleccionar el producto, se completarán automáticamente su stock actual, código y precio de venta. ✏️ Detalle del artículo a devolver - **Cantidad**: Indicá cuántas unidades vas a devolver. No puede superar el stock disponible. - **Detalle**: Especificá la razón o característica relevante de la devolución (por ejemplo: 'producto vencido', 'defecto en envase'). - **Stock actual / Precio de venta**: Son informativos y se completan automáticamente. - **Observaciones generales**: Campo obligatorio donde se puede aclarar el contexto general de la devolución. ➕ Agregar artículo - Hacé clic en el botón **Agregar artículo** para sumarlo al listado. - Cada producto agregado se mostrará en la tabla de 'Detalles de la devolución'. 🗑️ Eliminar - Podés quitar cualquier fila presionando el ícono de la papelera. 📋 Tabla de devolución - Visualizá el listado completo de artículos agregados, con su nombre, cantidad y motivo detallado. ✅ Confirmar devolución - Cuando hayas agregado al menos un artículo, se habilitará el botón **Registrar**. - Al hacer clic, se enviará la devolución al sistema para su registro. ❓ Botón de ayuda - Podés consultar esta guía en cualquier momento desde el ícono de ayuda junto al título del formulario. Ayuda del módulo: Registro de e-cheks 💳 echeck Formulario para registrar un e-cheque recibido por la empresa. 📌 **¿Qué es un e-chek?** Un e-cheque (cheque electrónico) es un documento digital de pago. Este módulo permite registrar la recepción de un e-cheque y asociarlo a un cliente, una venta u otra operación. 📝 **Campos principales del formulario:** 1. **Número de e-cheque** 🧾 Ingresá el número exacto del cheque. Debe ser único para cada banco. 2. **Banco** 🏦 Seleccioná el banco emisor del e-cheque. 3. **Monto** 💰 Ingresá el valor total del cheque. 4. **Fecha de emisión** 📅 Fecha en la que fue generado el e-cheque. 5. **Fecha de vencimiento** 📅 Fecha límite para depositarlo. **Debe ser posterior a la fecha de emisión.** 6. **Estado** 🔄 El estado inicial suele ser `pendiente`, pero puede cambiarse a `cobrado`, `rechazado`, etc. según el flujo del sistema. 7. **Observaciones** 📝 Espacio libre para registrar detalles adicionales, como condiciones del cobro o acuerdos con el cliente. ✅ **Validaciones importantes:** - No se permite ingresar un e-cheque con fecha de vencimiento anterior a la de emisión. - No se debe registrar un e-cheque duplicado (número y banco ya existentes). Ayuda del módulo: Registro de Empeños 💍 pawns Formulario para registrar nuevos artículos empeñados por los clientes, incluyendo todos los datos necesarios para su seguimiento y control. 📝 **Formulario de Registro de Empeños** Aquí podés registrar un nuevo artículo entregado en garantía por un cliente a cambio de un préstamo. Es obligatorio completar todos los campos marcados como requeridos. 🧾 **Campos del formulario:** - **Cliente**: Seleccioná el cliente que entrega el artículo en garantía. - **Artículo**: Nombre o título corto del objeto empeñado. - **Descripción**: Detalles relevantes del objeto (color, marca, estado, etc.). - **Valor estimado**: Valor aproximado del artículo. - **Monto prestado**: Importe que se le entrega al cliente. - **Interés (%)**: Porcentaje mensual de interés aplicado. - **Fecha de empeño**: Día en que se otorga el préstamo. - **Fecha de vencimiento**: Día límite para recuperar el objeto. 📷 **Imágenes del artículo (opcional)** Podés subir una o varias imágenes que ayuden a identificar el artículo. ⚠️ **Validaciones** - Todos los campos obligatorios se validan antes de guardar. - Si falta un campo, se muestra una alerta con `SweetAlert`. ✅ **Finalizar** Una vez completo el formulario, hacé clic en **Registrar**. Se pedirá confirmación antes de guardar el registro. Ayuda del módulo: Registro de Marcas brand Este módulo permite registrar nuevas marcas de productos, asociarlas a matafuegos y configurar comisiones si corresponde. 🏷️ **Nombre de la marca** - Ingresá el nombre de la marca que querés registrar. - Este campo es obligatorio y debe ser único. - Se completará automáticamente con mayúscula inicial en cada palabra. 🔥 **¿Marca de matafuegos?** - Si la marca es específica para matafuegos, marcá esta casilla. - Esto ayuda a filtrar y gestionar mejor los productos en ese rubro. - ✅ Campo opcional. 💼 **Comisiones (si están habilitadas)** - Si el sistema tiene activada la gestión de comisiones, podrás definir un **porcentaje** para esta marca. - El valor debe estar entre 0 y 100. - Esto permite aplicar comisiones automáticas en ventas asociadas. 📝 **Descripción** - Podés agregar una breve descripción o detalle sobre la marca. - Este campo es opcional, pero útil para futuras referencias. 🏢 **Empresa asignada** - El sistema asignará automáticamente la marca a la empresa con la que estás trabajando. - Si estás gestionando múltiples empresas, asegurate de estar en la correcta. 💡 Consejo: - Evitá duplicar marcas con nombres parecidos. - Usá la opción de importar marcas si tenés un listado grande. Ayuda del módulo: Registro de Presupuestos budget Este módulo permite generar presupuestos detallados para clientes, incluyendo productos, precios, impuestos y trabajos personalizados. 🧾 **Cliente** Seleccioná el cliente destinatario del presupuesto. Podés buscarlo por nombre, dirección o localidad. También podés agregar uno nuevo desde el botón de búsqueda. 🔍 **Buscar productos** Usá el buscador por nombre o código de barras para encontrar rápidamente los productos. Podés usar el lector o escribir el nombre y presionar Tab. 🛒 **Artículo, precio y cantidad** - Seleccioná un producto y cargá su precio (o elegí entre precios minorista, mayorista, etc). - Ingresá la cantidad y aplicá un descuento si corresponde (si tenés permisos). - También podés usar el campo divisor para calcular el precio unitario. 🛠️ **Agregar trabajos personalizados** Si la empresa tiene habilitada la opción de trabajos, podés sumar trabajos adicionales, como servicios o mano de obra. Incluí observaciones, cantidad, descuentos y precios especiales. 💰 **Cálculo automático** El sistema calcula automáticamente: - Subtotal por ítem - Total general - Impuesto - Total a pagar 📆 **Validez del presupuesto** El sistema completa automáticamente la fecha límite de validez, basada en la configuración de la empresa. Podés modificarla si tenés permisos. 📝 **Observaciones** Podés agregar aclaraciones u observaciones generales. Si el campo está vacío o es muy corto, el sistema pedirá confirmación antes de guardar. 📤 **Finalizar y guardar** Presioná **Registrar** para guardar el presupuesto. ⚠️ No impactará directamente en la cuenta del cliente hasta que se transforme en venta. 📦 **Modal de productos** Desde el botón "Buscar producto" podés abrir un modal con tabla dinámica que permite buscar y seleccionar productos por nombre, código, precio o stock. 🌍 **Geolocalización** El sistema intentará registrar automáticamente la ubicación al generar el presupuesto. Si no es posible, los campos quedarán vacíos. ✅ **Importante** - Solo se permite guardar presupuestos si hay al menos un ítem cargado. - El botón de guardar se activa automáticamente al agregar productos o trabajos. 📚 Consejo Usá el campo de código de barras si trabajás con escáner para agilizar el proceso. Ayuda del módulo: Registro de videos de ayuda help Este módulo permite subir y registrar videos explicativos para ayudar a los usuarios del sistema. 🎥 **Carga de video de ayuda** - Podés registrar un nuevo video con su **nombre**, una breve **descripción** y el archivo de video correspondiente. - El video debe estar en un formato compatible (.mp4, .webm, etc.). 📝 **Campos obligatorios** - **Nombre**: título o referencia del contenido del video. - **Video**: archivo a subir. Usá el botón para elegir un archivo desde tu dispositivo. - **Detalle**: campo opcional para agregar una descripción más amplia sobre el contenido del video. 🗃️ **Dónde se guardan** - Los videos se almacenan en el sistema y luego pueden reproducirse desde los distintos módulos cuando el usuario solicita ayuda con el ícono ❓. 📦 **Formulario** - Al llenar los campos y presionar **Guardar**, el video se carga y queda disponible como ayuda visual dentro del sistema. ❓ **Botón de ayuda** - El ícono ❓ ubicado junto al título te permite ver esta ayuda para entender el proceso de carga. 💡 Consejo: - Mantené los nombres claros y específicos (por ejemplo: *Cómo registrar una venta*, *Generar PDF de presupuesto*) para que los usuarios encuentren rápidamente lo que necesitan. Ayuda del módulo: Reporte de Cajas 💼 cashierreports Este módulo muestra un resumen detallado de las cajas abiertas y cerradas, permitiendo consultar ingresos, ventas y generar reportes PDF o para impresión. 📅 **Resumen general** - Muestra la **fecha actual** como referencia. - Se informa la **cantidad de ventas** o **cantidad de cajas**, según el tipo de vista. - Se indica el **total de ingresos acumulado**. 📊 **Tabla de cajas** Cada fila representa una caja abierta o cerrada: - **Id**: identificador único de la caja - **Fecha**: apertura de la caja - **Total**: monto total de ingresos registrado - **Estado**: indica si la caja está cerrada (verde) o abierta (rojo) - **Parciales**: cantidad de cortes realizados en la caja - **Acciones**: - Ver detalles de la caja 🕵️ - Descargar PDF 📄 - Imprimir 📠 🔁 **Regresar** Según el contexto, el botón **Regresar** te lleva: - A la lista de todas las cajas (`cashiers.list_all`) - Al resumen del año en curso si venís de ver ventas por caja 💡 **Consejo** Este módulo es útil para auditorías de cierre de caja, verificar ingresos diarios, mensuales o anuales, y consultar si una caja fue correctamente cerrada. Ayuda del módulo: Reporte por Proveedor 📊 provider_report Reporte de ventas por proveedor en un período. Muestra cantidades, costos, totales, y permite descargar PDF completo o PDF solo costos. 📌 **¿Para qué sirve este módulo?** Este reporte te permite analizar **qué productos de un proveedor se vendieron** en un período de fechas y ver: - **Cantidad vendida** - **Costo** y **Total de costo** - **Precio de venta** y **Total de venta** - **Ganancia** (Total venta - Total costo) Y además descargar el reporte en **PDF**. --- 🧾 **Cómo usar el reporte (paso a paso)** 1) Seleccioná un **Proveedor**. 2) Elegí un rango de fechas: - **Desde**: fecha inicial - **Hasta**: fecha final 3) Presioná **Generar**. --- ✅ **Validaciones de fechas** - La fecha **Desde** no puede ser mayor que **Hasta**. - La fecha **Hasta** no puede ser menor que **Desde**. Si el rango no es válido, el sistema mostrará un error. --- 📄 **Descargas disponibles** En la cabecera del resultado vas a ver 2 botones: 1) **PDF Completo** - Incluye: Cantidad, Costo, Total costo, Precio venta, Total venta y Ganancia. 2) **Solo Costos** - Incluye: Cantidad, Costo y Total costo. - Ideal para enviar al proveedor sin exponer precios de venta ni ganancias. --- 📊 **Qué significa cada columna** - **Producto**: nombre del producto. - **Cantidad**: suma total vendida en el período. - **Costo unit.**: costo unitario del producto (tomado del maestro de productos). - **Total costo**: `Cantidad * Costo unit.`. - **Precio venta (prom.)**: promedio del precio vendido en el período (sale_details.price). - **Total venta**: `SUM(Cantidad * Precio venta)`. - **Ganancia**: `Total venta - Total costo`. --- ⚠️ **Importante sobre el costo** El costo usado en el reporte se obtiene del campo `products.cost`. Si el costo del producto cambia con el tiempo, el reporte puede reflejar el **costo actual** y no el histórico. Si necesitás costo histórico, se recomienda guardar el costo en el detalle de venta al momento de vender. --- 🟡 **Si el reporte aparece vacío** Puede pasar por: - No hubo ventas de productos del proveedor en el período. - Se vendieron productos que tienen asignado otro proveedor. - El proveedor fue cambiado en el producto después de la venta. --- 💡 **Buenas prácticas** - Usá períodos cortos (por ejemplo 7/15/30 días) para analizar mejor. - Verificá que los productos tengan **proveedor asignado** correctamente. - Si vas a compartir el reporte, usá el PDF **Solo Costos** cuando corresponda. Ayuda del módulo: Reportes de Venta por Rango de Fechas Sales_report Esta sección te permite generar diferentes tipos de reportes de ventas según tus necesidades, filtrando por producto, categoría, marca o periodo de tiempo. A continuación te explicamos cada uno: 🛒 Reporte por Producto Seleccioná un producto específico e indicá un rango de fechas. Al hacer clic en "Reporte por Producto", obtendrás un informe detallado de las ventas de ese artículo. Si hay resultados, también podrás descargar el reporte en PDF. 📂 Reporte por Categoría Elegí una categoría (por ejemplo, "Bebidas" o "Limpieza") y especificá desde qué fecha hasta qué fecha querés ver las ventas. El botón "Reporte por Categoría" te mostrará los productos vendidos dentro de esa categoría en ese periodo. 🏷️ Reporte por Marca Filtrá las ventas por una marca específica y rango de fechas. Es útil para analizar el rendimiento de marcas determinadas en tu negocio. 📦 Reportes Generales Productos no vendidos: Muestra qué productos no se vendieron en el periodo seleccionado. Ideal para detectar stock detenido. Productos más vendidos: Visualizá cuáles fueron los artículos con más ventas en el periodo que definas. Reporte completo: Accedé a un resumen general de ventas entre dos fechas, sin filtrar por producto, marca o categoría. 📥 Descarga de Reportes Si se generan resultados, verás botones para descargar el reporte en formato PDF, según el tipo (Producto, Categoría, Marca, No Vendidos o Más Vendidos). ❓ Botón de Ayuda En la parte superior derecha del título, podés hacer clic en el ícono de ayuda (?) para ver esta explicación en cualquier momento. Ayuda del módulo: Salón / Mesas waiter-view Gestioná el salón en tiempo real: cambiá de mapa, abrí o adjuntá órdenes a mesas, agregá productos, mové, cerrá o cancelá órdenes y recibí avisos de cocina cuando estén listas para servir. 🗺️ Mapas - En la columna izquierda ves la lista de mapas del salón. Hacé clic para cambiar de mapa. - El encabezado muestra el nombre del mapa y una leyenda de estados (Disponible, Ocupada, Reservada, Inhabilitada). - El lienzo respeta el color de fondo, bordes y relación de aspecto definidos para el mapa. 🪑 Mesas y estados - Cada mesa se dibuja en la posición/tamaño configurados. El color/borde indica el estado: • Disponible (verde) • Ocupada (rojo) • Reservada (amarillo) • Inhabilitada (gris). - Las mesas “Reservada” o “Inhabilitada” no permiten abrir orden desde esta vista. 🧾 Abrir o adjuntar orden - Hacé clic en una mesa Disponible u Ocupada: • Si no tenía orden abierta, se crea una nueva y la mesa pasa a Ocupada. • Si ya tenía, se adjunta la orden vigente y se abre el modal de la orden. - El modal muestra “Mesa – {nombre}” y, si corresponde, el # de orden. 🛒 Agregar productos - Buscá por nombre o código (ENTER o botón “Buscar”). Hasta 30 resultados. - Elegí cantidad con el stepper y pulsá “+” para agregar. Se suman al detalle de la orden a la derecha. - Cada agregado recalcula total y mantiene sincronizado el estado de la mesa en el mapa. ✏️ Modificar o quitar ítems - En la tabla de la orden podés subir/bajar cantidades o escribir el valor. - El subtotal y el total se recalculan automáticamente. - Botón “Quitar” elimina el ítem de la orden. 🔁 Mover orden a otra mesa - Botón “Mover” abre un modal con las mesas disponibles (se muestran con su estado/sector). - Seleccioná destino y confirmá: si había una orden en destino, puede fusionarse según reglas del negocio. - Al terminar, se actualiza el mapa y los datos del modal. ✅ Cerrar / ❌ Cancelar orden - “Cerrar orden” libera la mesa y mantiene el historial de la orden (según tu lógica). - “Cancelar orden” descarta ítems y libera la mesa. Ambas acciones piden confirmación. 🖨️ Imprimir comanda - “Imprimir” abre la comanda en una nueva pestaña/ventana lista para imprimir. 👤 Cliente / Consumidor - Campo “Cliente / Consumidor” (p. ej. “Consumidor Final”, “Delivery”, etc.). - Se guarda automáticamente mientras escribís (límite 40 caracteres). Solo editable con orden abierta. 🔔 Órdenes listas para servir (Kitchen → Waiter) - El sistema consulta periódicamente a cocina (cada pocos segundos). - Si hay órdenes “listas”, suena un aviso y aparece un contador (FAB verde). - Abrí el listado para ver detalle (mesa, ítems, cliente) y marcarlas como “Entendido”. - El contador se limpia cuando confirmás “Entendido” (se guarda localmente que ya fueron avisadas). ℹ️ Notas - Los estados, colores y recortes de forma dependen de la configuración del mapa/mesa. - Si no ves resultados al buscar productos, revisá filtros de inventario y que “ingredientes” estén excluidos si corresponde. - Para evitar confusiones, los mensajes de confirmación usan SweetAlert2 con “icon” y “isConfirmed”. Ayuda del módulo: Sucursales client_stores Configurá clientes como sucursales para sincronizar stock en su propia base de datos. Registrá credenciales, probá la conexión y mantené el stock actualizado cuando la venta sea al cliente local. 🏬 ¿Qué es una sucursal? - Es un cliente configurado con su propia base de datos (conexión remota). - Al realizar una venta al **cliente local** configurado, se dispara una **sincronización de stock** hacia la base de la sucursal. 🧭 Dónde encontrarlo - Menú → Sucursales (icono de tienda). - Pantallas disponibles: Listado, Registrar, Editar. 📝 Registrar sucursal (Crear) 1) Completá los datos: - Cliente ID: ID del cliente que actuará como sucursal. - Nombre de la sucursal. - Estado: ACTIVE / INACTIVE. - Conexión: Driver (MySQL/PostgreSQL), Host, Puerto, Base de datos, Usuario, Contraseña. 2) Usá **"Probar conexión"** para verificar credenciales antes de guardar. 3) Guardá para crear la sucursal. 🛠 Probar conexión - El botón "Probar conexión" envía los datos cargados a un endpoint que intenta abrir la conexión. - Si es exitosa, verás un mensaje verde. Si falla, revisá host/puerto/usuario/pass/firewall/VPN. ✏️ Editar sucursal - Podés cambiar datos de conexión y estado. - La **Contraseña** puede dejarse vacía para mantener la actual. - Se muestran los últimos resultados de sincronización (estado y fecha), si existen. 🔁 ¿Cuándo se sincroniza el stock? - **Sólo** cuando se registra una venta al **cliente local** (configurado en la app). - La sincronización corre en segundo plano (Job/Queue) y descuenta stock en la base de la sucursal. - Requisitos: - Sucursal **ACTIVE**. - Mapeo de productos consistente entre matriz y sucursal (por ID/SKU/código). 🔐 Seguridad y buenas prácticas - La contraseña se guarda cifrada (no texto plano). - Limitá el acceso al módulo a roles autorizados. - Usá conexiones seguras (VPN/SSL) si la DB está fuera de la red local. - Configurá colas con reintentos/backoff para robustez de la sincronización. 🧪 Troubleshooting común - Error de conexión: verificá host, puerto, firewall, credenciales y alcance de red. - Timeouts: revisá latencia/red; considerá aumentar el timeout del DB driver. - Stock no descuenta: confirmá que la venta fue al cliente local y que hay mapeo correcto de productos. - Último estado = ERROR: revisá el mensaje en "Última sincronización" y logs del Job. 💡 Tips - Si necesitás múltiples sucursales por cliente, habilitá más de un registro apuntando a distintos Client IDs. - Usá nombres claros (ej.: "Sucursal Centro", "Depósito Este"). - Probá la conexión cada vez que cambies credenciales o servidor. Ayuda del módulo: SuperBoard de habitaciones 🧭 rooms_super_board Vista avanzada en formato tablero interactivo para controlar el estado de todas las habitaciones con filtros, colores visuales y acciones rápidas. 🎯 **Objetivo** Supervisar y gestionar de forma visual y rápida el **estado operativo** de las habitaciones. Cada habitación se muestra como una **tarjeta coloreada** según su disponibilidad (*verde = libre*, *rojo = ocupada/no disponible*), permitiendo cambiar su estado con un solo click. 🧩 **Dónde estás** **Panel administrador → Habitaciones → SuperBoard** Título de la pantalla: *SuperBoard de habitaciones*. --- 🧾 **Elementos de la pantalla** 1️⃣ **Barra de filtros (toolbar superior)** Permite acotar el tablero según tus criterios: - 🔍 **Buscar**: por *nombre*, *número* o *tipo*. - 👥 **Capacidad mínima y máxima** (`cap_min`, `cap_max`) — el valor 0 en máx. significa “sin límite”. - ✅ **Solo disponibles**: marca esta casilla para ocultar habitaciones ocupadas o deshabilitadas. - 🔘 **Aplicar**: actualiza los resultados con los filtros seleccionados. 2️⃣ **Leyenda de colores** - 🟩 *Disponible*: fondo verde claro (`.is-free`). - 🟥 *No disponible / Ocupada*: fondo rosado (`.is-busy`). Sirve para identificar rápidamente el estado de cada habitación. 3️⃣ **Grilla de habitaciones** - Cada **tarjeta** (`.room-card`) representa una habitación con: - **Nombre** y número (`#N`) - **Hotel** al que pertenece - **Tipo de habitación** - **Capacidad (pax)** - **Estado actual** (badge: *Disponible* / *No disponible*) - **Color de fondo** según disponibilidad. - **Acciones por tarjeta**: - 👁️ Ver (`rooms.show`) - ✏️ Editar (`rooms.edit`) - ℹ️ Info / Cambiar estado (abre modal con detalle) - **Click en la tarjeta o el pill de estado** → alterna el estado (Disponible / No disponible) sin recargar. Internamente usa AJAX sobre `rooms.toggleStatus`. 4️⃣ **Modal de información** Muestra detalles ampliados de la habitación (nombre, tipo, capacidad, precio/noche, piso, estado, descripción). Desde el modal podés: - 🔄 Cambiar estado (toggle AJAX) - ✏️ Ir a editar 5️⃣ **Paginación** Abajo del tablero, con `{{ $rooms->links() }}`. --- ⚙️ **Interacciones y comportamiento** - Click sobre `.room-card` (excepto botones internos) → llama a `toggleRoom()` - Click sobre `.super-toggle` (badge) → también llama a `toggleRoom()` - `toggleRoom()` hace un `POST` a `rooms.toggleStatus` y actualiza: - Clases: `.is-free` ↔ `.is-busy` - Badge: `.status-free` ↔ `.status-busy` - Texto: “Disponible” ↔ “No disponible” - En el modal, el botón **Cambiar estado** actualiza tanto la vista del modal como la tarjeta. --- ✅ **Al operar** - **Cambios de estado** inmediatos, sin recargar página. - **Actualización visual** del color de tarjeta y badge. - **Modal** refleja la información actualizada. - **Alertas de error** o pérdida de token CSRF pueden verse en consola o con feedback visual si se configura. --- 🚫 **Errores comunes** - No incluir el **token CSRF** (`_token`) → las llamadas AJAX fallan. - No prevenir propagación de eventos (`e.stopPropagation()`) → clicks múltiples no deseados. - Omitir actualización del color de tarjeta (`.is-free/.is-busy`) tras toggle. - Falta de permisos → endpoint devuelve 403. --- 🧠 **Buenas prácticas** - Mantener la sincronización visual: actualizar UI sólo en `success`. - Confirmar con SweetAlert si se agregan acciones masivas. - Evitar recargas innecesarias: todo el flujo es AJAX. - Aprovechar los colores y badges para informes rápidos al personal operativo. --- 📌 **Consejo** Usá este tablero en monitores o tablets del equipo de limpieza o recepción para ver **en tiempo real** qué habitaciones están libres, ocupadas o pendientes, y realizar cambios con un simple click. Ayuda del módulo: Tablero de habitaciones 🛏️ rooms_board Vista tipo tablero (cards) para monitorear y operar rápidamente el estado de las habitaciones, con filtros, búsqueda, acciones y modal de información. 🎯 **Objetivo** Visualizar y gestionar el **estado** de las habitaciones en un tablero de **tarjetas**. Permite **filtrar**, **buscar**, hacer **toggle** del estado por *doble click*, abrir **modal de información** y acceder a **acciones rápidas**. 🧩 **Dónde estás** **Panel administrador → Habitaciones → Board** Título de la pantalla: *Tablero de habitaciones*. 🧾 **Secciones y controles** - **Barra de filtros** - **Hotel**: selector (con `selectpicker`) para filtrar por hotel. - **Buscar** (`q`): texto libre por **nombre**, **número** o **tipo**. - **Aplicar**: recarga con los filtros. - **Grilla de tarjetas** - Cada tarjeta muestra: - **Nombre** y, si corresponde, **Número** (pill `#123`). - **Hotel** (texto tenue). - **Tipo** y **Capacidad** (pax). - **Estado** con **badge** (*Disponible* / *No disponible*). - **Doble click** sobre la tarjeta: cambia el estado (*toggle*) por **AJAX**. - **Acciones** (según permisos): - *Ver* (`rooms.show`) - *Editar* (`rooms.edit`) - *Info / Cambiar estado* (abre modal) - **Paginación** - Navegación con `{{ $rooms->links() }}` al pie del tablero. 🛠️ **Interacciones clave** - **Toggle por doble click** Doble click en `.room-card` → llama a `rooms.toggleStatus` (**POST**), actualiza la **badge** (`success`/`secondary`) y el texto (**Disponible/No disponible**), sin recargar. - **Modal de información** Botón *Info* → **GET** `rooms/{id}/info` Completa campos del modal: **Hotel**, **Nombre**, **Número**, **Tipo**, **Capacidad**, **Precio/noche** (usa `currency` del negocio), **Piso**, **Estado**, **Descripción**. Desde el modal: - **Cambiar estado** (*toggle*) por **POST** a `rooms.toggleStatus`. - **Editar**: link a `rooms/{id}/edit`. ✅ **Al operar** - **Éxito**: se actualiza el estilo de la **badge** y su texto, o se refrescan datos del modal. - **Error**: mostrar feedback (alerts/modales) y mantener el estado visual consistente. 🚫 **Errores frecuentes** - Falta de **CSRF token** en llamadas AJAX. - No parsear correctamente `res.is_active` → usar `parseInt(res.is_active) === 1`. - No sincronizar la **badge** y el **texto** después del toggle. - No usar `e.stopPropagation()` en el botón *Info* → dispara sin querer el doble click. 🧠 **Buenas prácticas** - Mantener consistentes **UI y backend**: actualizar badge/texto sólo en `success`. - Centralizar el **core de toggle** en una función reutilizable (`toggleRoom`). - Respetar la **moneda** del negocio al formatear precio (`currency` del país). - Validar en servidor que el usuario tenga permisos para modificar el estado. 📌 **Consejo** - Usá la búsqueda por `q` para ubicar rápido habitaciones por **nombre**, **número** o **tipo**, y luego operá con *doble click* o *Info* para agilizar cambios. Ayuda del módulo: Tareas del Hotel 🧭 hotel_tasks Planificador operativo para programar, notificar y registrar tareas de housekeeping, mantenimiento, front desk y servicio al huésped. 🎯 **Objetivo** Gestionar tareas operativas del hotel con **repeticiones**, **notificaciones** y **registro de realización**. Permite programar acciones como cambiar sábanas, encender calefón o preparar desayunos, y llevar trazabilidad. 🧩 **Dónde estás** **Panel administrador → Tareas del Hotel** Pantalla: *Tareas del Hotel* (`hotel_tasks.index`). --- 🧾 **Elementos de la pantalla** 1️⃣ **Encabezado** - Título *Tareas del Hotel* y botón **Nueva tarea** (abre modal de creación). - Acceso a **Ayuda** (icono ?) que muestra este contenido. 2️⃣ **Listado en tarjetas** Cada tarjeta muestra: - **Categoría** (badge): 🛏 Housekeeping | 🔧 Mantenimiento | 👔 Front Desk | ☕ Servicio. - **Título** y **Descripción**. - **Programación**: hora, fecha desde, **Frecuencia** y **Intervalo**. - **Próxima ejecución** y **Última realizada** (si existe). - **Acciones**: - ✅ **Realizada**: marca como completada (ver lógica abajo). - ✏️ **Editar**: abre modal con el formulario. - 🗑 **Eliminar**: borra la tarea (confirmación SweetAlert). - 🔁 **Activo/Inactivo**: alterna estado (botón Outline). 3️⃣ **Paginación** Abajo con `{{ $tasks->links() }}`. 4️⃣ **Modal de Crear/Editar** Campos: - **Título**, **Descripción**, **Categoría**. - **Desde (fecha)** y **Hora**. - **Frecuencia**: `once | daily | weekly | monthly | custom_days`. - **Intervalo** (según frecuencia): - *daily*: cada X **días**. - *weekly*: cada X **semanas** + **Días de la semana** (Lu..Do). - *monthly*: cada X **meses** + **Día del mes**. - *custom_days*: **solo días** (no usa intervalo). - *once*: no usa intervalo. - **Activo** (switch). --- 🔁 **Frecuencias e Intervalo** - `daily` + intervalo 2 → **cada 2 días**. - `weekly` + intervalo 1 + días (p.ej. Lu, Mi, Vi) → **esas semanas** en esos días. - `monthly` + intervalo 1 + día 15 → **cada mes el día 15**. - `custom_days` → ejecuta **solo** en los días marcados. - `once` → única ejecución. --- ✅ **Marcar como realizada** - **once** → al marcar **se elimina** la tarea. - **repetitivas** (daily/weekly/monthly/custom_days) → se registra en el **log** y se calcula la **próxima ejecución** (`next_run_at`). Se registra en `hotel_task_logs`: `hotel_task_id`, `user_id`, `completed_at`, `note`. --- ⚙️ **Interacciones y comportamiento** - **Realizada** y **Eliminar** usan **SweetAlert2** (confirmación). - **Toggle Activo/Inactivo** actualiza `next_run_at` (si se reactiva) o lo limpia (si se desactiva). - Al **guardar** una tarea (crear/editar), se recalcula `next_run_at` a partir de: - `start_date + time_of_day`, - frecuencia + intervalo, - días seleccionados. --- 🧠 **Buenas prácticas** - Definí la **zona horaria** del hotel: `America/Argentina/Mendoza` (consistente en modelo y vistas). - Validá coherencia: `monthly` requiere `month_day`; `weekly/custom_days` requieren `days_of_week`. - Evitá errores de fecha: combiná `start_date` (Carbon) con `time_of_day` usando `setTimeFromTimeString()` (no concatenar strings). --- 🚫 **Errores comunes** - **“Double time specification”**: ocurre si se concatena `"YYYY-mm-dd 00:00:00 10:00:00"`. Solución: *no* concatenar; usar `start_date->setTimeFromTimeString(time_of_day)`. - `format()` sobre **null** en Blade: envolver con ternarios (ej. `{{ $t->next_run_at ? $t->next_run_at->format(...) : '—' }}`). - No setear días en `weekly/custom_days`: la tarea no se ejecutará nunca. --- 📌 **Consejo** Usá categorías para segmentar trabajo de equipos (housekeeping, mantenimiento, front desk) y filtros rápidos en el listado. Podés llevar la pantalla en una tablet para que el personal marque **Realizada** en el momento. Ayuda del módulo: Timeline de habitaciones 📅 time_line Calendario horizontal por habitación para visualizar y navegar ocupación, reservas y disponibilidad con filtros, acceso rápido a reserva y exportación a PDF. 🎯 **Objetivo** Visualizar de forma rápida el **estado diario** de cada habitación (Libre / Reservado / Ocupado) en un rango de fechas, con filtros por hotel, estado, habitación y capacidad, y acciones rápidas de reserva / detalle. 🧩 **Dónde estás** **Panel administrador → Timeline de habitaciones** Pantalla: *Timeline de habitaciones* (`rooms.timeline`). --- 🧾 **Elementos de la pantalla** 1️⃣ **Barra de filtros** - **Hotel** *(select con búsqueda)*. - **Desde / Hasta** *(fechas)*. - **Estado**: Libre / Reservado / Ocupado. - **Habitación** *(select con búsqueda)*. - **Cap. mín.** *(capacidad mínima en pax)*. - Botón **Aplicar** → recarga con los filtros. > **Comportamiento extra**: al cambiar **Hotel**, se limpia **Habitación** y se recarga el combo (manteniendo el resto de filtros). 2️⃣ **Leyenda** - **Libre**: gris claro. - **Reservado**: amarillo. - **Ocupado**: verde. 3️⃣ **Tabla timeline** - Columnas fijas: **Hotel**, **Habitación**, **Cap.** - Luego una columna por **día** del rango seleccionado. - Cada día muestra una **celda** con el estado: `FREE`, `RESERVED`, `OCCUPIED`. - Tooltip con detalle (p.ej. datos de reserva). 4️⃣ **Acciones rápidas (click en celda)** - Si la celda está **FREE** → abre **crear reserva** prellenando `room_id` y `checkin`. - Si la celda tiene **reserva** → abre **detalle de reserva** (`reservations.show`). 5️⃣ **Exportar PDF** - Botón **Exportar PDF** respeta los filtros actuales (incluye `capacity_min`). --- ⚙️ **Interacciones y comportamiento** - **Click en celda**: - `FREE` → `booking.create?room_id=...&checkin=...&from_timeline=1` - `RESERVED/OCCUPIED` con `res_id` → `reservations.show(res_id)` - Cambio de **Hotel** actualiza el listado de **Habitaciones** y limpia selección previa. - **Selects** usan **bootstrap-select** con búsqueda (`.selectpicker`). --- 🔒 **Permisos (recomendado)** - Ver timeline: `rooms.timeline` - Ver reserva: `reservations.show` - Crear reserva: `booking.create` Protegé los endpoints en rutas/controlador con `can:*` según tu esquema de roles. --- 🚫 **Errores comunes** - **Rango de fechas inválido**: `start > end`. Verificar antes de consultar. - **Sin hotel y sin habitación**: se listan todas; usar filtros para reducir. - **Capacidad mínima demasiado alta**: puede devolver lista vacía. - No inicializar `.selectpicker()` → selects sin búsqueda. --- 🧠 **Buenas prácticas** - Usar rangos de fechas **acotados** para mejorar rendimiento de la tabla. - Mantener consistente la **zona horaria** del sistema. - Asegurar tooltips con información útil (huésped, código de reserva, noches). - Si se agrega edición inline, confirmar con **SweetAlert** y refrescar solo la fila. --- 📌 **Consejo** Abrí el timeline en pantallas anchas o habilitá scroll horizontal. Podés llevarlo en recepción para ubicar rápidamente disponibilidad y crear reservas con un click en días libres. Ayuda del módulo: Tipos de unidad ⚖️ unit_type Registrar o editar los tipos de unidad disponibles en el sistema, definiendo nombre, detalle y estado de actividad. 🎯 **Objetivo** Crear o editar los **tipos de unidad** utilizados en productos, servicios u otras entidades del sistema. Cada tipo de unidad define cómo se mide un artículo (*Unidad*, *Litros*, *Kilogramos*, etc.) y puede activarse o desactivarse según su vigencia. 🧩 **Dónde estás** **Panel administrador → Tipos de unidad → Registrar / Editar** Títulos de pantalla: - *Registro de tipos de unidad* → alta de un nuevo tipo. - *Edición de tipos de unidad* → modificación de uno existente. 🧭 **Flujo rápido** 1. Ingresá a **Panel administrador → Tipos de unidad**. 2. Elegí una de las siguientes opciones: - **Registrar tipo**: crea un nuevo registro desde cero. - **Editar**: modifica un tipo existente haciendo clic en el botón ✏️. 3. Completá el formulario: - **Nombre** (obligatorio). - **Detalle** (opcional). - **Activo** (checkbox). 4. Presioná **Guardar** (si es nuevo) o **Actualizar** (si lo estás editando). 5. El sistema mostrará un mensaje de confirmación y volverá al listado general. 🧾 **Campos del formulario** - **Nombre** (`name`) - Campo **obligatorio**, máx. 255 caracteres. - Define el nombre de la unidad (por ejemplo: *Unidad*, *Kilogramos*, *Litros*, *Metros*). - Se valida para evitar duplicados. - **Detalle** (`detail`) - Campo **opcional**. - Permite agregar una descripción corta o aclaración interna. - No afecta la operación del sistema, es meramente informativo. - **Activo** (`is_active`) - Checkbox que determina si el tipo de unidad está disponible para uso. - Enviar valor `1` si está marcado, `0` si no lo está. - Por defecto, los nuevos tipos se crean **activos**. - Ideal para **desactivar** tipos obsoletos sin eliminarlos. 🛠️ **Comportamiento al guardar** - El formulario se envía con método: - **POST** → si se está creando (`unit_types.store`). - **PUT** → si se está editando (`unit_types.update`). - Guarda/actualiza los campos: - `name`, `detail`, `is_active`. - Redirige a `unit_types.index` con mensaje de éxito. 🚫 **Errores frecuentes** - Dejar el campo *Nombre* vacío. - Intentar duplicar un nombre ya existente. - Desactivar un tipo aún en uso en productos. - No incluir el `@csrf` o `@method('PUT')` según corresponda. 🧠 **Buenas prácticas** - Usar nombres consistentes y claros (plural o singular según convención del negocio). - Desactivar tipos obsoletos en lugar de eliminarlos, para preservar integridad histórica. - Revisar el listado después de guardar para confirmar los cambios. 💡 **Tip** - El botón **❓ de ayuda** abre esta misma información desde cualquier vista (*Registrar* o *Editar*). - El checkbox de **Activo** tiene un `input hidden` que asegura siempre enviar un valor (`0` o `1`), evitando errores de formulario. Ayuda: Asignar columnas del Excel asign_columns Pantalla para mapear las columnas del archivo Excel con los campos del sistema antes de importar productos. 📌 **Asignar columnas del Excel** Esta pantalla permite definir qué columnas del archivo Excel corresponden a cada campo del producto dentro del sistema. Es una etapa fundamental para asegurar que los datos se importen correctamente. --- 🛠️ **¿Para qué sirve esta asignación?** - Permite que el Excel tenga las columnas en cualquier orden. - Evita errores de importación al indicar con claridad qué dato representa cada campo. - Ofrece control total sobre cómo se interpretan los datos antes de crear o actualizar productos. --- 📥 **Campos a asignar obligatoriamente:** - Código de barras - Nombre del producto - Marca - Categoría - Costo 🧮 **Campo opcional:** - Stock (si no se asigna, no se modificará el stock existente) --- 🏷️ **Proveedor del archivo:** Se debe seleccionar el proveedor desde la lista desplegable. Este proveedor será asignado a todos los productos que se importen desde el archivo. --- ✅ **Opciones adicionales:** - **¿Sumar el stock al stock actual?** - Si está marcada, el stock del Excel se **sumará** al stock ya existente de cada producto. - Si no está marcada, el stock **no se modificará**. - **¿Incluir IVA en el costo?** - Si está marcada, el sistema aplicará el porcentaje de IVA definido en la configuración del negocio al costo indicado en el Excel. - Si no está marcada, se toma el costo tal como viene en el archivo. --- 🧑‍🏫 **Ejemplo práctico de uso:** 1. Seleccioná el proveedor del Excel. 2. Activá o no las opciones de stock e IVA según tus necesidades. 3. En cada campo (Código de barras, Nombre, etc.), seleccioná la columna correspondiente del Excel. 4. Hacé clic en **Importar productos** para continuar con la carga. --- 🛡️ **Recomendaciones:** - Verificá que todas las columnas requeridas estén bien asignadas. - Revisá que el proveedor seleccionado sea el correcto. - Asegurate de tener el Excel en buen estado, sin celdas combinadas ni encabezados mal formateados. --- ❓ **Ayuda interactiva:** Al hacer clic en el ícono de ayuda (`?`), se mostrará esta explicación para guiarte paso a paso sobre cómo completar correctamente esta pantalla. Ayuda: Búsqueda detalles de balance de Clientes search_client_balances Pantalla que permite consultar los movimientos en cuenta corriente de un cliente con filtros por tipo y fechas, y exportar el resultado. 📌 **Búsqueda de detalles de balance de Clientes** Esta pantalla permite ver en detalle los movimientos de cuenta corriente realizados por un cliente, incluyendo débitos, pagos, notas de crédito y notas de débito. Se puede filtrar por tipo de movimiento y por un rango de fechas. --- 🔍 **Filtros disponibles:** - **Tipo:** permite seleccionar el tipo de movimiento (Débito, Pago, Nota de Crédito, Nota de Débito o Todos). - **Desde / Hasta:** define un rango de fechas para acotar los resultados. ⏳ Si no se especifica un rango de fechas, se mostrarán todos los movimientos registrados del cliente. --- 📋 **Datos que se muestran en la tabla de resultados:** 1. **Fecha:** fecha y hora en que se registró el movimiento. 2. **Tipo:** tipo de movimiento (Débito, Pago, NC, ND). 3. **Monto:** valor del movimiento, siempre mostrado en pesos. 4. **Estado:** indica si el movimiento es válido o ha sido anulado. 5. **Observaciones:** cualquier nota adicional ingresada al cargar el movimiento. --- 📄 **Exportar a PDF** Al lado del botón de búsqueda, hay un ícono de PDF que permite generar un reporte imprimible en formato PDF con los movimientos que coincidan con los filtros aplicados. --- 👤 **Datos adicionales del cliente** En la parte superior se muestra información relevante del cliente seleccionado: - Nombre completo - DNI / CUIT - Teléfono y correo - Dirección - Categoría fiscal - Saldo total en cuenta corriente (positivo o negativo) - Disponible El saldo muestra con claridad si el cliente tiene un HABER (saldo a favor) o un DEBE (deuda), utilizando colores verdes o rojos según corresponda. --- ✅ **Pasos sugeridos para usar esta pantalla:** 1. Seleccioná el tipo de movimiento que deseás consultar o dejá “Todos”. 2. Ingresá una fecha de inicio y fin si querés restringir el periodo. 3. Presioná el botón **Buscar**. 4. Opcionalmente, exportá el resultado haciendo clic en el botón PDF. --- ❓ **Ayuda interactiva:** Al hacer clic en el ícono de ayuda (`?`), esta explicación se mostrará para guiarte en el uso correcto de la herramienta de búsqueda de movimientos de cuenta corriente. Ayuda: Caja Mayor major_cashier Este módulo centraliza los ingresos y egresos provenientes de las cajas chicas, permite registrar egresos manuales y visualizar totales consolidados por año, día y método de pago. 📦 **Caja Mayor - Control Tesorería** El módulo de **Caja Mayor** (`major_cashier`) consolida los movimientos financieros de todas las cajas chicas por día y por año, brindando a Tesorería una vista clara, resumida y accionable. --- ### 📅 Selección de Año - En la parte superior derecha podés elegir el **año** a visualizar. - Los datos de cierres se filtran automáticamente al cambiar el año. --- ### 📊 Resumen General En la parte superior central se muestra: - 💵 **Total Ingresos** - 💸 **Total Egresos** - 🧮 **Balance** Todos presentados en tarjetas grandes, con colores distintivos y formato amigable. --- ### 💳 Totales por Método de Pago Debajo del resumen general aparece un bloque con **totales acumulados por tipo de pago**: - Efectivo - Cheques - Mercado Pago - Tarjetas - Otros Esto brinda una vista rápida de cómo está compuesto el flujo financiero. --- ### 📋 Tabla Detallada Diario Se muestra cada día con: - Fecha del cierre - Empresa - Ingresos y egresos del día - Balance - Botón **Ver detalle** --- ### 🔍 Detalle de Caja Mayor por Día Al hacer clic en **“Ver detalle”**, se muestra: - Todos los movimientos del día - Tipo (Ingreso o Egreso) - Método de pago - Monto - Caja origen (si aplica) - Detalle - Usuario que lo registró --- ### ➕ Registrar Egreso Desde el botón **Registrar Egreso**, se abre un **modal emergente** donde podés cargar manualmente una salida de dinero desde la Caja Mayor: - Seleccionás el método de pago - Ingresás el monto - Escribís un detalle Esto queda vinculado al día actual y visible en los movimientos. --- ### ⚙️ Funcionamiento - **Ingresos**: se cargan automáticamente al cerrar una caja chica. - **Egresos**: se registran manualmente desde este módulo. --- ### 💡 Consejos útiles - Usá el resumen por método de pago para validar conciliaciones. - Antes de cierres contables, revisá el balance anual. - Mantené trazabilidad completa con los detalles por movimiento. Ayuda: Cálculo de comisiones por retiro de matafuegos Commisions_fire_extinguisher Pantalla que permite calcular comisiones por cada retiro de matafuegos realizado por los usuarios del sistema, con filtros por fecha y usuario. 📌 **Cálculo de comisiones por retiro de matafuegos** Esta pantalla permite ver cuántos matafuegos retiró cada usuario en un período determinado, calcular comisiones en base a un monto fijo y porcentaje, ver el detalle de los retiros por usuario, y generar un comprobante imprimible con firma. --- 🔍 **Filtros disponibles:** - **Desde / Hasta:** Define un rango de fechas para analizar los retiros. - **Usuarios:** Permite seleccionar un usuario específico o ver todos. ⏳ Si no se especifica un usuario, se mostrarán los retiros de todos los técnicos registrados. --- 📋 **Datos que se muestran en la tabla de resultados:** 1. **Usuario:** Nombre del técnico que realizó el retiro. 2. **Cantidad:** Total de matafuegos retirados por ese usuario en el rango de fechas seleccionado. 3. **Monto:** Monto base por cada retiro (editable). 4. **Porcentaje:** Porcentaje a aplicar sobre el monto base (editable). 5. **Comisión:** Resultado del cálculo `cantidad * monto * porcentaje / 100`. --- 📎 **Detalle de Retiros:** Se puede acceder al detalle completo de cada retiro presionando el botón **"Ver"**, donde se visualiza: - Fecha del retiro. - Cliente asociado. - Número de serie del matafuego. - Ubicación del equipo. - Municipalidad. --- 📄 **Descarga de Comprobante de Comisión:** Junto a cada usuario se muestra un ícono de descarga. Al hacer clic se genera un **PDF** con el resumen de la comisión, incluyendo: - Nombre del técnico. - Rango de fechas. - Cantidad de retiros. - Monto aplicado y porcentaje. - Comisión total calculada. - Espacio para la firma del usuario. Este comprobante puede imprimirse para ser firmado y archivado. --- ✅ **Pasos sugeridos para usar esta pantalla:** 1. Seleccioná una fecha de inicio y fin. 2. (Opcional) Seleccioná un usuario específico. 3. Presioná el botón **Filtrar**. 4. Ajustá los montos y porcentajes si es necesario. 5. Visualizá la comisión estimada por usuario. 6. (Opcional) Consultá los detalles de cada retiro. 7. (Opcional) Descargá el comprobante en PDF para firma. --- ❓ **Ayuda interactiva:** Al hacer clic en el ícono de ayuda (`?`), esta explicación se mostrará para guiarte en el uso correcto de la herramienta de cálculo de comisiones por retiro de matafuegos. Ayuda: Clientes Cercanos y Lejanos nearbyclients Este módulo permite buscar y listar clientes según su proximidad a una ubicación geográfica, mostrando la distancia estimada en kilómetros. 📍 **Clientes Cercanos y Lejanos** Este módulo está compuesto por dos secciones: --- ## 🧭 **1. Búsqueda por distancia** En la primera pantalla se puede: - **Ingresar un radio en kilómetros** (ej. 10 km). - **Elegir entre dos botones:** - 🟢 **Buscar Cercanos**: muestra clientes **dentro** del radio especificado. - 🔴 **Buscar Lejanos**: muestra clientes **fuera** del radio especificado. - Se usan automáticamente las coordenadas actuales del usuario (si el navegador lo permite). > 📌 Es ideal para planificar rutas de visitas, optimizar logística o priorizar clientes más próximos. --- ## 📋 **2. Vista de resultados** Después de realizar una búsqueda, se mostrará: - Una **tabla con los resultados** que incluye: - Nombre del cliente. - Dirección registrada. - Teléfono. - Distancia calculada en kilómetros. - Acceso directo a su ubicación en **Google Maps**. > ⚠️ Si un cliente no tiene latitud/longitud asignada, se indica como “No disponible”. --- ## 🔄 Botón de retorno En la parte inferior se incluye un botón para **volver a realizar una búsqueda** nueva con otros parámetros. --- ### 🛠 Requisitos técnicos - Cada cliente debe tener guardada su **latitud y longitud**. - El navegador debe permitir acceso a la **geolocalización del usuario** para mejorar la precisión. - El cálculo de distancia usa la fórmula del **Haversine** y se presenta en kilómetros con dos decimales. Ayuda: Clientes On-line Clients-on-line Visualización y gestión de clientes que registraron matafuegos mediante el sistema web externo. 📌 **Clientes On-line** Este módulo permite visualizar a los clientes que se dieron de alta automáticamente al cargar matafuegos desde el formulario web público. Brinda control y trazabilidad sobre los extintores ingresados por los propios usuarios. --- 🌐 **¿Qué clientes aparecen acá?** - Solo aquellos que cargaron uno o más matafuegos desde la web. - No se muestran clientes internos creados manualmente en el sistema. - Se excluye el cliente genérico n.º 1 (consumidor final). --- 🧯 **¿Qué se puede ver?** - Datos de contacto del cliente (nombre, teléfono, email). - Fechas de vencimiento y cantidad de matafuegos registrados. - Notas adicionales asociadas por el usuario en la carga. --- 📅 **¿Cómo usar los filtros?** - Podés filtrar por: - Fecha de alta del cliente (desde / hasta). - Fecha de vencimiento de los matafuegos (desde / hasta). - Esto permite analizar qué clientes se sumaron o cargaron extintores en un período determinado. --- 📤 **¿Se puede descargar un PDF?** - Sí, haciendo clic en el ícono de PDF. - El archivo incluirá todos los clientes listados y sus matafuegos, ideal para reportes o control. --- 📎 **Importante:** - El correo electrónico no es obligatorio, pero si está presente y es válido, el cliente puede recibir campañas. - Las fechas vencidas se resaltan en rojo automáticamente. --- ❓ **Ayuda interactiva:** Al hacer clic en el ícono de ayuda (`?`), esta explicación se despliega para guiar al administrador sobre cómo interpretar y usar correctamente la vista de clientes on-line. Ayuda: Control de Salida Vehicular vehicleExit Listado y gestión de registros de entradas y salidas de vehículos, incluyendo tiempos y diferencias de peso si están habilitadas. 🚚 **Control de Salida Vehicular** Este módulo permite gestionar la salida de vehículos previamente registrados en el sistema, así como consultar sus entradas y salidas con detalles. --- 📋 **Columnas principales:** - **ID:** Identificador único del registro. - **Vehículo:** Patente del vehículo. - **Entrada:** Fecha y hora en que ingresó. - **Salida:** Fecha y hora en que salió (si ya se registró). - **Duración:** Tiempo total entre entrada y salida (formato hh:mm:ss). - **Peso de entrada / salida:** Si el sistema tiene balanza habilitada, se muestran estos campos. - **Diferencia:** Diferencia de peso (positivo = descarga, negativo = carga). - **Proceso:** Indicador visual del tipo de movimiento: carga, descarga, sin cambio o no calculado. - **Usuario:** Persona que registró la entrada o salida. --- 🛠️ **Acciones disponibles por fila:** - 👁️ **Ver:** Ver los detalles completos del registro. - 📄 **PDF:** Descargar un comprobante de la operación. - 🚪 **Registrar salida:** Si el vehículo aún no salió, permite registrar el momento de salida. - 🗑️ **Eliminar:** Borra el registro (requiere confirmación). --- ⚠️ **Notas importantes:** - Solo pueden registrarse salidas para vehículos con entrada previa y sin salida asignada. - El sistema calcula automáticamente el tiempo de permanencia y la diferencia de peso. - Los estilos de color ayudan a identificar si el vehículo descargó, cargó o no hubo cambio. --- 🔍 **Sugerencia:** activá la balanza desde la configuración del negocio si querés registrar pesos y controlar cargas/descargas automáticamente. Ayuda: Estados de trabajos process Vista para consultar y actualizar el estado de los trabajos vinculados a las ventas. 🔎 **¿Qué permite esta pantalla?** Consultar, filtrar y cambiar el estado de los trabajos asignados a las ventas del sistema. 📄 **Información visible por fila:** - **Venta:** N° de venta vinculado. - **Cliente:** Persona asociada a la venta. - **Trabajo:** Tipo de trabajo solicitado. - **Observaciones:** Notas cargadas al registrar el trabajo. - **Estado actual:** Indica si el trabajo está Pendiente, En progreso, Completado, Entregado o Cancelado. - **Modificado:** Fecha/hora del último cambio de estado. - **Transcurridos:** Cuántos días pasaron desde el último cambio de estado. - **Acciones:** Botón para descargar el historial de estados en PDF. 🧩 **Cambiar estado:** Haciendo clic en el botón de estado (dropdown), se pueden seleccionar los nuevos estados disponibles. Cada cambio se guarda y se agrega al historial. 📁 **Descargar historial PDF:** El ícono de PDF permite obtener un informe de los cambios de estado para una venta específica. 🎯 **Filtros disponibles:** En la parte superior están ocultos por defecto, pero al pasar el mouse aparecen. Puedes buscar por: - Número de venta - Estado actual - Nombre/apellido del cliente - Observaciones 🧠 **Consejo:** El historial de cambios te permite tener trazabilidad completa del flujo del trabajo. 🔐 **Permisos:** Solo los usuarios con el permiso adecuado pueden modificar los estados. Ayuda: Exportar códigos de barra download_pdf_barcode Generación de códigos de barras en PDF filtrados por categoría, proveedor y marca. 🖨️ **Exportar códigos de barra en PDF** Este módulo permite generar archivos PDF con los códigos de barra de los artículos disponibles en el sistema. Podés aplicar filtros por categoría, proveedor o marca, y descargar los resultados por lotes para impresión o control físico de stock. --- 🔎 **¿Cómo utilizar el módulo?** 1. Seleccioná uno o más filtros: - ✅ Categoría - ✅ Proveedor - ✅ Marca 2. Hacé clic en el botón **Filtrar**. 3. Se mostrarán todos los artículos coincidentes y, si hay más de 50, se dividirán en **lotes**. 4. Descargá el PDF de cada lote con el botón correspondiente. --- 📄 **¿Qué incluye cada PDF?** - Imagen del producto (si está cargada). - Nombre del artículo. - Marca y categoría. - Código del producto. - Código de barras tipo **C128** generado automáticamente. --- 📌 **Campos utilizados:** - `code`: Código del producto. - `name`: Nombre del artículo. - `brand`: Marca asociada. - `category`: Categoría del producto. - `image`: Imagen del artículo (si existe en `/public/image`). --- 📤 **Descargas por lote:** - Cada PDF contiene hasta **50 productos** por página. - Si hay más de 50 artículos, se crean botones de descarga por lote (ej: *Lote 1*, *Lote 2*, etc). --- ✅ **Recomendaciones:** - Verificá que los productos tengan código válido para evitar errores en la generación de barras. - Asegurate de tener imágenes optimizadas si querés incluirlas en el PDF. - Mantené los filtros simples para resultados más rápidos. --- ❓ **Ayuda interactiva:** Hacé clic en el ícono `?` para acceder a esta explicación en cualquier momento dentro del módulo. Ayuda: Gestión de Registradoras cashregisters Administración de registradoras físicas asociadas a las cajas del sistema. 🖥️ **Gestión de Registradoras** Este módulo permite crear, editar y eliminar registradoras físicas (también llamadas terminales o cajas) que están asociadas a las cajas abiertas por los usuarios. --- 🛠️ **Funciones principales:** - Registrar nuevas **registradoras** con un nombre y ubicación. - Asociar cada **caja (`cashier`)** a una registradora específica. - Visualizar todas las registradoras existentes en el sistema. - Editar el nombre o ubicación de una registradora. - Eliminar registradoras que no estén vinculadas a cajas activas. --- 📌 **Campos importantes:** - `Nombre`: Identifica la registradora (ej: *Caja Principal*, *Terminal 2*). - `Ubicación`: Define físicamente dónde está instalada (ej: *Mostrador*, *Depósito*). --- 🔄 **Relación con el sistema:** - Cada caja abierta (`cashier`) debe estar vinculada a una registradora. - Esto permite llevar control detallado de qué caja fue utilizada y por quién. --- ✅ **Buenas prácticas:** - Usar nombres claros y únicos para cada registradora. - Mantener actualizada la ubicación para facilitar la identificación física. - Verificar que no haya cajas abiertas antes de eliminar una registradora. --- ❓ **Ayuda interactiva:** Al hacer clic en el botón de ayuda (ícono `?`), se despliega esta información para orientar a los administradores sobre cómo gestionar correctamente las registradoras en el sistema. Ayuda: Gestión de Usuarios del Sistema users Pantalla para visualizar, activar/desactivar, editar, dar de baja o eliminar usuarios. 👥 **Gestión de Usuarios del Sistema** Esta vista muestra una tabla con todos los usuarios registrados en el sistema. --- 🔍 **Columnas del listado:** - **Id:** Orden secuencial del listado. - **Nombre:** Nombre y apellido del usuario. Puedes hacer clic para ver su perfil. - **Correo electrónico:** Email de acceso del usuario. - **Estado:** Indica si el usuario está **Activo** o **No Activo**. Puede cambiarse haciendo clic en el botón. --- ⚙️ **Acciones disponibles para cada usuario:** - 🟡 **Activar/Desactivar:** - Si el usuario está activo (`btn-info`), se puede desactivar. - Si está inactivo (`btn-warning`), se puede activar. - 🔽 **Baja de usuario:** - Abre una pantalla o acción específica para registrar la baja del usuario. - ✏️ **Editar:** - Permite modificar nombre, apellido, email, contraseña y roles asignados. - 🗑️ **Eliminar:** - Elimina permanentemente al usuario del sistema. - Se solicita confirmación con SweetAlert antes de procesar. --- 📘 **Notas adicionales:** - El botón de ayuda (ícono azul con signo de pregunta) despliega este contenido. - Se utiliza `tooltip` para mostrar descripciones breves sobre cada acción. - Se puede añadir paginación o búsqueda si el listado de usuarios es muy grande. Ayuda: Gestión de Ventas sales Vista principal del listado de ventas realizadas con filtros, acciones y estado. 📦 **Gestión de Ventas** Esta vista permite revisar todas las ventas realizadas, filtrarlas por distintos criterios, y realizar acciones como ver, imprimir, eliminar, cambiar estado o enviar comprobantes. --- 🔍 **Filtros disponibles**: - **Año:** Muestra solo las ventas realizadas en el año seleccionado. - **Tipo de comprobante:** Filtra por 'Factura A', 'Recibo X', etc. - **N° de comprobante:** Busca una venta específica por número. - **Monto:** Filtra por monto exacto. 🕵️‍♂️ Usá estos filtros para encontrar rápidamente la venta deseada. --- 📋 **Columnas mostradas:** | Campo | Descripción | |-------|-------------| | Id | Número de venta con acceso al detalle | | Fecha | Día y hora de la venta | | Cliente | Cliente asociado (se muestra nombre personalizado si fue de paso) | | Tipo | Tipo y número de comprobante generado | | Total | Monto total con intereses incluidos | | Estado | Activa o cancelada (según la caja) | | Acciones | Acceso a PDF, impresión, ver detalle, eliminar y enviar por WhatsApp | --- 🛠️ **Acciones disponibles por venta:** - **📄 PDF:** Descargar el comprobante generado. - **🖨️ Imprimir:** Acceso a vista para impresión física. - **👁️ Ver:** Abre el detalle completo de la venta. - **🗑️ Eliminar:** Elimina la venta (confirmación por SweetAlert). - **📱 WhatsApp:** Envía el PDF al teléfono del cliente si está registrado. --- ⚠️ **Estado de la venta:** - Si **no hay caja asociada** o la caja está **abierta**, se puede activar/cancelar la venta. - Si la caja está **cerrada**, no se permite modificar el estado. --- 📘 **Notas:** - La tabla incluye paginación, ordenamiento y búsqueda dinámica. - Las acciones están protegidas por permisos y condiciones del estado de caja. Ayuda: Hojas de Ruta de Retiro de Matafuegos routesheet Formulario para generar hojas de ruta según municipio y fechas de mantenimiento de matafuegos. 📌 **Generación de Hojas de Ruta** Este módulo permite generar automáticamente una hoja de ruta para los técnicos que deben retirar matafuegos según: - El **municipio** del cliente. - La **fecha de próximo mantenimiento** de cada matafuego. --- ### 🧭 **Uso del formulario** 1. **Fecha Inicio** *(opcional)* Permite filtrar los matafuegos cuyo próximo mantenimiento es desde esta fecha. 2. **Fecha Fin** *(obligatorio)* Matafuegos cuya fecha de *próximo mantenimiento* sea **menor o igual a esta** se incluirán. 3. **Municipio** *(obligatorio)* Filtra los matafuegos solo de los clientes de ese distrito. Si seleccionás 'Todos', se incluirán todos. --- ### ✅ **Resultados esperados** Luego de hacer clic en **Generar**, se creará una hoja de ruta con los clientes y matafuegos filtrados, y se podrán ver las direcciones, mapas y descargar el PDF. --- ### 🛠️ **Recomendaciones** - Elegí una **fecha fin futura** para prever las tareas próximas. - Generá hojas por municipio para facilitar la organización geográfica del recorrido. 🔐 Solo usuarios con permisos pueden generar hojas de ruta. Ayuda: Importación avanzada de productos advance_import_products Pantalla inicial para cargar un archivo Excel con productos. Permite iniciar el proceso de importación avanzada. 📌 **Importación avanzada de productos** Esta pantalla permite comenzar el proceso de carga masiva de productos mediante un archivo Excel. Desde aquí se sube el archivo y se pasa a la etapa de asignación de columnas. --- 🧾 **¿Qué tipo de archivo se puede subir?** - Archivos `.xlsx`, `.xls` o `.csv`. - El archivo debe contener al menos las columnas requeridas (aunque pueden estar en cualquier orden). - Las celdas no deben estar combinadas ni tener encabezados duplicados. --- 📋 **Campos requeridos en el archivo Excel:** 1. **Código de barras** *(obligatorio)* 2. **Nombre del producto** *(obligatorio)* 3. **Marca** *(obligatorio)* 4. **Categoría** *(obligatorio)* 5. **Costo** *(obligatorio)* 6. **Stock** *(opcional)* ⛔ Si falta alguno de los campos obligatorios en la primera fila, el sistema impedirá continuar. --- 🛠️ **¿Qué sucede al subir el archivo?** - El sistema lee el archivo y presenta una pantalla donde se pueden asignar las columnas reales del Excel a los campos internos del sistema. - Esto permite que los encabezados puedan estar en cualquier orden o con nombres personalizados (por ejemplo: “nombre_producto” o “costo final”). --- ✅ **Pasos para usar esta pantalla:** 1. Hacé clic en el botón **“Elegir archivo”** y seleccioná tu archivo Excel. 2. Verificá que el archivo sea correcto. 3. Hacé clic en **“Subir y continuar”**. 4. Serás redirigido a una nueva vista donde deberás asignar manualmente cada columna. --- ⚠️ **Importante:** - No es necesario que las columnas tengan nombres exactos, ya que luego podrás asignarlas manualmente. - Es recomendable evitar filas vacías al comienzo del archivo. - No deben haber celdas combinadas en la primera fila (encabezado). --- ❓ **Ayuda interactiva:** Al hacer clic en el ícono de ayuda (`?`), se muestra esta explicación para que sepas exactamente qué pasos seguir al iniciar una importación avanzada. Ayuda: Información del Proveedor y Estado de Cuenta provideraccountancy Pantalla que muestra la información completa de un proveedor, sus compras, pagos, devoluciones y estado de cuenta. 📄 **¿Qué muestra esta pantalla?** Esta vista detalla toda la información del proveedor seleccionado, incluyendo datos personales, artículos relacionados, historial de compras, pagos, devoluciones y el balance final de cuenta corriente. 🧾 **Secciones importantes:** - **Sobre el proveedor:** Información de contacto, CUIT/DNI, país, provincia, dirección, persona de referencia y observaciones. - **Artículos y combos:** Accesos para ver y registrar artículos o combos asociados al proveedor. - **Compras:** Muestra el total de compras realizadas a este proveedor. - **Pagos:** Indica cuánto se le ha pagado al proveedor. - **Devoluciones:** Lista la cantidad de devoluciones y el monto total asociado. - **Balance:** Calculado como: > `Pagos - Compras` - Si el resultado es negativo: **Debe** (deuda con proveedor) - Si es positivo: **Haber** (saldo a favor) 📥 **Botones de navegación:** - Ver artículos del proveedor. - Registrar artículo nuevo. - Registrar combo. - Ver historial de compras. - Ver pagos realizados. - Ver devoluciones. - Editar proveedor. 🔐 **Permisos requeridos:** Solo los usuarios con permisos adecuados pueden editar la información del proveedor o registrar artículos/combos. 💡 **Sugerencia:** Si el proveedor tiene muchos movimientos, es recomendable hacer seguimiento periódico del balance para evitar desequilibrios financieros. Ayuda: Inicio de sesión y geolocalización de usuarios usersubications Visualización en tiempo real de la última ubicación registrada de cada usuario al iniciar sesión. 🧭 **Inicio de Sesión y Geolocalización** Este módulo permite visualizar en un mapa la última ubicación (latitud y longitud) registrada por cada usuario al iniciar sesión en el sistema. --- 📍 **Visualización en tiempo real:** - Se muestra un mapa interactivo con **Leaflet.js**. - Cada marcador representa a un usuario. - Al hacer clic sobre un marcador, se despliega el **nombre y apellido** del usuario correspondiente. - Los datos se actualizan automáticamente cada **10 segundos** sin necesidad de recargar la página. --- 🛠️ **Funcionamiento técnico:** - El mapa utiliza **OpenStreetMap** como proveedor de mapas base. - Se realiza una petición AJAX a `users.list_locations` que retorna los usuarios con sus coordenadas. - Cada respuesta incluye: - `name` - `surname` - `latitude` - `longitude` --- 🧪 **Requisitos técnicos:** - Los usuarios deben tener habilitada la geolocalización en su navegador. - Se requiere que el sistema registre correctamente la posición GPS al momento del login del usuario. --- 📌 **Usos recomendados:** - Verificar ubicación del personal en el momento del ingreso. - Control en tiempo real para sistemas distribuidos. - Monitorear accesos desde ubicaciones no autorizadas. --- ❓ **Ayuda interactiva:** Al hacer clic en el botón de ayuda (ícono `?`), se despliega esta información para orientar a los administradores sobre cómo interpretar los datos en el mapa. Ayuda: Log de artículos log Visualizá todas las novedades registradas sobre artículos y combos del sistema. 📌 **¿Qué es este módulo?** El log de artículos registra automáticamente los cambios, actualizaciones o eventos relevantes vinculados a los artículos o combos del sistema. 🔎 **¿Qué podés ver en esta tabla?** - **ID:** Identificador del registro. - **Título:** Título del cambio o acción realizada. - **Novedad:** Detalle del evento (ej: cambio de stock, edición de precio, etc.). - **Usuario:** Persona que realizó el cambio. - **Fecha:** Momento en que ocurrió la modificación. 🗑️ **¿Cómo eliminar registros antiguos?** Haciendo clic en el ícono de opciones (tres puntos verticales) se abre un **modal** donde podés seleccionar una fecha límite. > Se eliminarán todos los logs **anteriores o iguales** a la fecha elegida. ⚠️ **Importante** - Esta acción es irreversible. - Se recomienda exportar los logs si necesitás respaldos antes de eliminarlos. 💡 Este módulo es útil para auditorías internas o para rastrear cambios inesperados en los artículos del sistema. Ayuda: Mapa de Clientes por Distrito y Usuario clients_muncipalities_route Vista de mapa interactivo para ubicar clientes por municipio y por responsable. Utiliza geolocalización y cálculo de distancia. 🗺️ **Mapa de Clientes** Este módulo permite visualizar los clientes en un mapa interactivo, filtrando por **usuario asignado** y **distrito**. Se utiliza la geolocalización del navegador para calcular distancias. --- ### 🔍 **Opciones de búsqueda** - **Usuario:** Filtra clientes según el usuario (vendedor, técnico, etc.) asignado. - **Distrito:** Filtra clientes según el municipio seleccionado. --- ### 📍 **Funcionalidad del mapa** - Al cargar, se solicita permiso de geolocalización. Si el usuario lo permite, se mostrará su ubicación actual. - Los clientes se cargan automáticamente al seleccionar un distrito (y usuario opcionalmente). - Se marcan en el mapa con `Leaflet`, y al hacer clic en un marcador se muestra: - Nombre del cliente - Dirección - Distancia desde tu ubicación actual --- ### 📋 **Tabla de Clientes** Debajo del mapa, se muestra una tabla con la siguiente información: | Nombre | Dirección | Distancia | Mapa | |--------|-----------|-----------|------| | Cliente A | Calle Falsa 123 | 2.45 km | [📍 Google Maps](#) | --- ### 📦 **Cálculo de Distancia** Se usa la fórmula del **haversine** para calcular la distancia entre tu ubicación actual y la ubicación de cada cliente. --- ### 🛠️ **¿Qué hacer si no carga?** - Verificá que tu navegador permita el acceso a la ubicación. - Asegurate de que los clientes tengan latitud y longitud guardadas. - Si no aparece ningún cliente, probá con otro distrito o usuario. --- ✅ **Este módulo es útil para la planificación de rutas, visitas técnicas o entregas**. Ayuda: Métodos de pago paymethod Formulario para registrar nuevos métodos de pago. 💳 **¿Qué permite este módulo?** Registrar y configurar los métodos de pago disponibles en el sistema (efectivo, tarjeta, transferencia, etc.). 📝 **Campos a completar:** - **Nombre:** Descripción del método de pago (ej: Efectivo, Transferencia, Tarjeta de crédito). - **Impuesto (%):** Porcentaje adicional que se aplicará al total de la operación si se utiliza este método de pago. Por ejemplo, si una tarjeta tiene un recargo del 10%, se ingresa '10'. 📌 **Consideraciones:** - El impuesto ingresado será sumado automáticamente al total de la venta cuando se seleccione este método de pago. - Podés modificar o eliminar métodos de pago desde el listado general. - Si el impuesto es cero, se puede dejar como `0`. 🔐 **Permisos:** - Sólo usuarios con los permisos adecuados pueden crear, editar o eliminar métodos de pago. ⚠️ **Importante:** El sistema usará estos métodos en todos los formularios donde se realiza una venta, pago o préstamo, por lo tanto se recomienda mantenerlos claros y actualizados. Ayuda: Parcial de Comodatos loanpartial Cerrar un comodato reintegrando los productos prestados de forma definitiva. 📌 **¿Qué es este módulo?** Este formulario te permite gestionar la devolución de artículos prestados en comodato a un cliente. @if ($operation == 0) 🔁 **Modo Parcial** Permite registrar devoluciones parciales. El comodato se mantiene abierto y puede recibir más reintegros en el futuro. @else 🔒 **Modo Cierre** Registra la devolución total de artículos y finaliza el comodato. Ya no se podrán hacer nuevas devoluciones sobre este préstamo. @endif 🧾 **Pasos a seguir:** 1. **Ver información del comodato** - Cliente asociado - Fecha del préstamo - Monto restante a reintegrar 2. **Indicar cantidades a devolver** - Para cada artículo o combo, escribí la cantidad que el cliente devuelve. - El sistema calcula el total en base al precio de cada unidad. - No se permite ingresar una cantidad mayor a la entregada. 3. **Visualizar el total a reintegrar** Se actualiza automáticamente con cada cambio. 4. **Confirmar** - En modo parcial: se guarda la devolución pero el comodato sigue abierto. - En modo cierre: se marca como devuelto y se cierra definitivamente. ⚠️ **Importante** - El reintegro se refleja automáticamente en el stock. - No se puede modificar un comodato cerrado. Ayuda: Préstamos personales moneyloan Creación y gestión de préstamos personales otorgados a clientes. 💼 **¿Qué permite este módulo?** Registrar préstamos personales a clientes con cuotas configurables, tasas de interés, vencimientos y seguimiento de saldos. 📝 **Campos clave a completar:** - **Intervalo de vencimientos:** Define la frecuencia de las cuotas (mensual, semanal, diario o personalizado). - **Tasa de interés:** Aplicación anual, mensual, semanal o diaria. - **Monto del préstamo:** Cantidad total del dinero otorgado. - **Número de cuotas:** En cuántas partes se dividirá el pago. - **Fechas:** Fecha de inicio del préstamo y fecha de vencimiento de la primera cuota. - **Cliente:** Persona que recibirá el préstamo. - **Descripción:** Detalle del préstamo (motivo o condiciones). - **Moneda:** Podés otorgarlo en moneda local, dólares o euros. - **Adjuntos:** Podés subir archivos (opcional). 🔎 **Chequeo de préstamos pendientes:** Al seleccionar un cliente, el sistema verifica automáticamente si tiene préstamos sin finalizar. Se mostrarán en un aviso si los hubiera. 📌 **Observaciones:** - Si seleccionás **'Personalizado'** como intervalo de cuotas, debés indicar la cantidad de días. - La tasa de interés se aplicará según el tipo seleccionado. - El préstamo se registrará como deuda activa del cliente hasta su pago total. 🛡️ **Permisos especiales:** - Sólo usuarios con permisos adecuados podrán elegir intervalos o tasas distintas a las predeterminadas. 💡 Este módulo es útil para gestionar préstamos de manera estructurada, segura y con seguimiento automático del estado de cada préstamo. Ayuda: Registro de Certificados ARCA arca-certificates Formulario para registrar certificados digitales necesarios para emitir comprobantes con ARCA. 📌 **Registro de Certificados ARCA** Este módulo permite registrar los certificados digitales (.crt y .key) requeridos por AFIP para operar con los servicios web del sistema ARCA. --- 📝 **¿Qué se puede completar acá?** - **CUIT**: Identificación del contribuyente titular del certificado. - **Punto de venta**: Asociado al certificado y servicio. - **Servicio de ARCA**: Nombre técnico del servicio (ej: `wsfe`, `wsfex`). - **Predeterminado**: Si se usará como opción por defecto en el sistema. - **Contenido del certificado (.crt)**: Todo el contenido, incluyendo `BEGIN` y `END CERTIFICATE`. - **Clave privada (.key)**: Contenido completo, incluyendo encabezado y pie `BEGIN/END RSA PRIVATE KEY`. - **Passphrase**: Contraseña de la clave privada (opcional). - **Fecha de vencimiento**: Fecha hasta la cual es válido el certificado. --- 🔄 **¿Dónde se usa esta información?** - Al generar el **Login Ticket Request (LTR)** para autenticarse con AFIP. - En la firma digital de comprobantes. - En la validación automática de vigencia de certificados. - En la emisión de facturas electrónicas a través de ARCA. --- ✅ **Buenas prácticas** - Pegá el contenido del `.crt` y `.key` directamente desde los archivos generados por OpenSSL o tu proveedor. - Verificá que los bloques `-----BEGIN...` y `-----END...` estén completos. - No compartas certificados ni claves privadas por canales inseguros. - Establecé un certificado por CUIT, punto de venta y servicio. - Indicá correctamente el vencimiento para evitar cortes de servicio. --- 📎 **Importante:** - El certificado tiene una vigencia limitada (AFIP suele otorgar 2 años). - Si el certificado está vencido o mal cargado, **no se podrá emitir ningún comprobante**. - Podés cambiar el certificado predeterminado si necesitás usar otro. --- ❓ **Ayuda interactiva:** Hacé clic en el ícono de ayuda (`?`) en la parte superior del formulario para volver a ver esta información en cualquier momento. Ayuda: Registro de Compras purchase Este módulo permite registrar una nueva compra de productos a un proveedor, asociando artículos, precios, cantidades, fechas de vencimiento y cálculo de impuestos. 🛒 **¿Para qué sirve esta pantalla?** Permite registrar una compra de artículos detalladamente, asociándola a un proveedor y completando datos clave como tipo de comprobante, número, impuesto y artículos. 📌 **Campos obligatorios:** - **Proveedor:** Persona o empresa a la cual se le compran los productos. - **Tipo de comprobante:** Puede ser Remito, Recibo X, Factura A/B/C. - **N° de comprobante:** Requerido salvo que el tipo sea 'Recibo X'. - **Impuesto (%):** Porcentaje de impuesto aplicado al total. 📦 **Carga de productos:** - **Código de barras:** Si se ingresa, se autocompleta el producto. - **Artículo:** Puede seleccionarse manualmente si no se usa código de barras. - **Cantidad, Precio, Vencimiento:** Datos necesarios para calcular el subtotal. - **Botón "Agregar artículo":** Añade la fila a la tabla de detalles. 📋 **Tabla de detalles:** Muestra cada producto agregado con su subtotal. Incluye 3 totales calculados automáticamente: - **Total:** Suma de subtotales. - **Total impuesto:** En base al % ingresado. - **Total a pagar:** Total + Impuesto. 🧾 **Registro rápido de proveedor:** Se puede abrir un modal para crear un proveedor sin salir del formulario actual. 🔐 **Validaciones automáticas:** - Se muestra un mensaje de error si no se completa correctamente el número de comprobante para ciertos tipos. - Si no se agregan productos, no se permite registrar la compra. ✅ **Para registrar la compra:** - Hacer clic en **Registrar**. - Confirmar en el cuadro emergente. 🗑️ **Para eliminar un producto del detalle:** - Hacer clic en el ícono rojo de la fila correspondiente. Ayuda: Registro de comprobantes en ARCA arca_invoices Formulario para emitir comprobantes electrónicos válidos ante AFIP a través del sistema ARCA. 📌 **Registro de comprobantes en ARCA** Este módulo permite generar y registrar comprobantes electrónicos (Factura A, B, C, Notas de Crédito/Débito, etc.) a través del servicio ARCA de AFIP. --- 📝 **¿Qué se puede completar acá?** - Tipo de comprobante (Factura A, B, C, NC, ND, etc.). - Datos del receptor: CUIT/DNI, nombre o razón social. - Condición frente al IVA del receptor. - Importe total del comprobante. - Moneda utilizada (Pesos, Dólares, Euros). - Alicuota IVA correspondiente (21%, 10.5%, Exento). - Venta asociada y comprobante relacionado (en caso de NC/ND). --- 🔄 **¿Dónde se usa esta información?** - Para registrar comprobantes válidos en AFIP desde el sistema. - Como respaldo legal y contable de las operaciones de venta. - Para generar informes tributarios o exportaciones oficiales. --- ✅ **Buenas prácticas** - Verificá el CUIT/DNI antes de emitir el comprobante. - Asegurate de seleccionar correctamente la condición frente al IVA. - Las Facturas A solo deben emitirse a Responsables Inscriptos. - El importe debe ser mayor a 0 y con hasta 2 decimales. - Asociá correctamente la venta en Notas de Crédito o Débito. --- 📎 **Importante:** - El sistema valida automáticamente el tipo de comprobante y la condición frente al IVA. - Se bloquean combinaciones inválidas como Factura B a Responsables Inscriptos. - El código y número del comprobante asociado es obligatorio en NC/ND. --- 🎨 **Vista previa e impresión:** - Una vez emitido el comprobante, se puede descargar en PDF desde la tabla principal. --- ❓ **Ayuda interactiva:** Hacé clic en el ícono de ayuda (`?`) en la parte superior del formulario para volver a ver esta información en cualquier momento. Ayuda: Registro de Contratos de Alquiler de Artículos products_for_rent Formulario para registrar un contrato de alquiler de artículos a un cliente con fechas, duración, monto total y adjuntos. 📝 **¿Para qué sirve esta pantalla?** Este formulario permite registrar contratos de alquiler de artículos para clientes, especificando el producto, la cantidad, duración del contrato, fechas y precio total. 📌 **Campos obligatorios:** - **Cliente:** Persona o empresa que realiza el alquiler. - **Producto en alquiler:** Selección de un artículo habilitado para alquiler, con precios diarios y mensuales. - **Cantidad:** Número de unidades que se alquilan. - **Tipo de duración:** Indica si el contrato es por días o meses. - **Duración:** Cantidad de días o meses según el tipo elegido. - **Fecha de inicio / finalización:** Se calcula automáticamente la fecha de fin. - **Precio total:** Calculado automáticamente según cantidad, duración y tarifa. Solo editable con permiso especial. 🗂️ **Otros campos:** - **Notas:** Información adicional sobre el contrato (opcional). - **Adjuntos:** Permite subir archivos relacionados al contrato (imágenes o PDFs). 🔄 **Cálculos automáticos:** - El sistema actualiza el precio total y la fecha de finalización automáticamente al cambiar cantidad, duración o tipo. - Si tenés el permiso `for_rent.modify_price`, podés editar manualmente el monto final. 📎 **Acciones disponibles:** - Registrar el contrato con el botón `Registrar`. - Cancelar y volver al listado con `Cancelar`. 📢 **Importante:** Una vez creado, el contrato puede incluir seguimiento, estado, historial y posibles renovaciones o cancelaciones desde la gestión de contratos. Ayuda: Registro de cortes meat_cuts Formulario para configurar cortes, subproductos y merma a partir de una fuente (Res, Media Res, Cuarto Trasero, Cuarto Delantero). 🔪 **Registro de cortes** Este módulo te permite definir qué *cortes* (y subproductos/mermas) se obtienen a partir de una **fuente**: **Res**, **Media Res**, **Cuarto Trasero** o **Cuarto Delantero**. --- 🧭 **Cómo usar la pantalla** 1) **Fuente**: elegí *Res*, *Media Res*, *Cuarto Trasero* o *Cuarto Delantero*. Al cambiar este campo, se muestra **automáticamente** una lista *ordenada* de los cortes ya cargados para esa fuente. 2) **Producto (corte)**: seleccioná el producto del catálogo que representa el corte. > Debe existir previamente. (Usualmente con unidad **Gramos**) 3) **Rol**: - **Corte vendible**: para ítems que se venden al público. - **Subproducto**: aprovechable pero no principal. - **Merma**: desperdicio/pérdida. 4) **Gramos por Kg de fuente**: cantidad en *gramos* que se obtiene por cada **1 kg** de la fuente. Ej.: si de 1 kg de *Media Res* salen 350 g de Nalga, ingresá `350`. 5) **Orden**: número (opcional) para controlar el orden de visualización de los cortes. 6) Presioná **Guardar** (o **Actualizar** si estás editando). --- 📋 **Lista de cortes de la fuente** Debajo del selector **Fuente** vas a ver una lista con: - **Producto** - **g/Kg** (gramos por cada kg de la fuente) - **Rol** (Corte/Subproducto/Merma) - **Orden** (si aplica) La lista se **actualiza automáticamente** al cambiar la fuente, sin recargar la página. --- ✅ **Buenas prácticas** - Procurá que la suma de *todos los ítems* (cortes + subproductos + merma) por fuente se aproxime a **1000 g** por cada 1 kg de fuente. - Usá **Orden** para priorizar los cortes principales. - Cargá **unidades en gramos** para evitar inconsistencias. - Si un producto no aparece, verificá que exista en tu catálogo y pertenezca a tu negocio. --- ⚠️ **Errores frecuentes** - *“Corte duplicado para la misma fuente”*: el mismo producto ya fue asignado a esa fuente. - *“El producto no existe”*: creá primero el producto en el catálogo. - *Validaciones*: `grams_per_kg` debe ser ≥ 0; `role` debe ser uno de *cut*, *byproduct*, *waste*. --- 💡 **Tips** - Al cambiar **Fuente**, la lista se actualiza vía *AJAX*: no necesitás recargar. - Los select usan **búsqueda** (selectpicker) para encontrar rápido los productos. - El ícono de **ayuda (?)** reabre esta guía cuando la necesites. Ayuda: Registro de Despostes meat_shop Formulario para registrar el desposte de res, media res o cuarto en el sistema. 📌 **Registro de Despostes** Este módulo permite registrar la operación de **fraccionamiento** de una res, media res o cuarto, controlando siempre el stock disponible y los costos asociados. --- 📝 **¿Qué se completa en este formulario?** - **Producto origen**: Seleccionar la res, media res o cuarto que se desea despostar. - **Cantidad de producto**: Número de unidades que se van a fraccionar (**controlado por stock**). - **Peso de entrada**: Peso total del producto a despostar (**Kg o g**, según corresponda). - **Costo total**: Valor monetario asociado al producto de origen. --- ⚖️ **Reglas importantes** - **La cantidad ingresada nunca puede superar el stock disponible** del producto seleccionado. - Es **recomendable despostar de a una unidad por vez** para llevar un control más claro. - Si se decide despostar en **cantidad mayor a 1**, se debe calcular correctamente: - **Peso total** = cantidad × peso unitario. - **Monto total** = cantidad × costo unitario. - Seleccioná correctamente la **unidad de medida** (**Kg** o **g**); impacta en el control de stock y los cálculos posteriores. - **Conversión automática:** todo **peso ingresado en *Kilogramos*** se **convierte automáticamente a *gramos*** al guardar, para unificar el inventario. --- 🧩 **Comportamiento de la interfaz** - Al elegir la **unidad de medida** (Kg/g), la etiqueta del campo **“Peso de entrada”** cambia para reflejar la unidad seleccionada. - Antes de confirmar, aparece un **resumen** que muestra: producto, cantidad, **peso + unidad seleccionada** y costo total. - En ese resumen se recuerda que los **valores en Kg serán convertidos a gramos** al guardar. --- 🔄 **¿Dónde se usa esta información?** - En la reducción automática del **stock** del producto origen. - En la creación de los **cortes/fracciones** resultantes. - En el **cálculo de costos** de los productos derivados. - En **reportes de inventario** y **trazabilidad**. --- ✅ **Buenas prácticas** - Verificá el **stock** antes de iniciar el desposte. - Usá la **unidad de medida correcta** (Kg o g). - **Despostá de a una** unidad siempre que sea posible. - Revisá **peso** y **costo** antes de confirmar. - Si trabajás en Kg, recordá que el sistema **normaliza a gramos**. --- 📎 **Importante** - Si el **stock no es suficiente**, el sistema **no permitirá continuar**. - Un error en **peso** o **costo** afecta la **rentabilidad** del desposte. - La **trazabilidad** de cada corte depende de la correcta **selección del producto origen**. --- ❓ **Ayuda interactiva** Hacé clic en el ícono de ayuda (`?`) en la parte superior del formulario para volver a ver esta información en cualquier momento. Ayuda: Registro de Dispositivos devices Formulario para registrar nuevos dispositivos de clientes para su seguimiento y reparación. 📌 **Registro de Dispositivos** Este módulo permite registrar dispositivos pertenecientes a clientes, asociándolos con sus características principales. --- 📝 **¿Qué se puede completar acá?** - Cliente propietario del dispositivo. - Tipo de dispositivo (ej: Teléfono, Notebook, Impresora). - Marca y modelo del equipo. - Número de serie o identificación. - Notas u observaciones relevantes. - Asociación con una empresa. --- 🔄 **¿Dónde se usa esta información?** - En órdenes de reparación. - En reportes de dispositivos registrados. - En seguimiento de historial técnico. --- ✅ **Buenas prácticas** - Verificá que el número de serie no esté duplicado para evitar confusiones. - Usá notas para agregar detalles como fallas reportadas, estado físico, etc. --- 📎 **Importante:** - Todos los campos obligatorios están marcados con asterisco (*). - El tipo de dispositivo debe existir previamente (ver módulo: Tipos de Dispositivos). --- ❓ **Ayuda interactiva:** Hacé clic en el ícono de ayuda (`?`) para volver a ver esta información en cualquier momento desde el formulario de registro. Ayuda: Registro de Entrada de Vehículos vehicleLog Formulario para registrar el ingreso de un vehículo a las instalaciones, incluyendo seguro y peso si está habilitado. 🚗 **Registro de Entrada de Vehículos** Este formulario permite registrar manualmente el ingreso de un vehículo al predio. --- 🧾 **Campos del formulario:** - **Vehículo:** Seleccioná la patente del vehículo desde la lista desplegable. Solo se mostrarán los vehículos registrados previamente. - **Seguro:** Indicá si el seguro del vehículo se encuentra vigente ('Vigente') o no ('No Vigente'). - **Fecha y hora de ingreso:** Se debe especificar la fecha y hora exacta en la que ingresó el vehículo. - **Peso de ingreso:** Si el sistema tiene activado el control de peso, este campo se mostrará y es obligatorio. Se debe ingresar el peso leído por la balanza al momento del ingreso. --- 💡 **Importante:** - Asegurate de registrar correctamente la hora de entrada. Esta se usará luego para calcular la duración de permanencia del vehículo. - Si el sistema tiene balanza habilitada, el campo de peso aparecerá automáticamente. - No se permite duplicar ingresos para el mismo vehículo si ya tiene un ingreso abierto (sin salida). --- 🔁 **Próximo paso:** Una vez ingresado el vehículo, este aparecerá en el listado de entradas y podrá registrar su salida posteriormente desde el módulo de salida vehicular. Ayuda: Registro de GiftCards GiftCards Formulario para emitir GiftCards asociadas a ventas o como crédito para clientes. 📌 **Registro de GiftCards** Este módulo permite generar tarjetas de regalo electrónicas (GiftCards) para entregar a clientes, ya sea de forma manual o asociadas a una venta. --- 📝 **¿Qué se puede completar acá?** - Monto de la tarjeta (en la moneda del negocio). - Fecha de vencimiento (opcional). - Asociación a una venta previa (opcional). - Estado activo/inactivo (automático). - Código único generado automáticamente. --- 🔄 **¿Dónde se usa esta información?** - En futuras compras, como forma de pago parcial o total. - En informes contables de créditos emitidos. - En el módulo de ventas, al aplicar GiftCards. --- ✅ **Buenas prácticas** - Verificá que el monto sea correcto antes de registrar. - Si la tarjeta se genera como devolución, asociála a la venta correspondiente. - Usá el vencimiento solo si querés limitar su uso en el tiempo. --- 📎 **Importante:** - Las GiftCards se consumen completamente en una sola operación. - Una vez marcadas como *usadas*, no pueden reactivarse. - Las tarjetas activas pueden inactivarse manualmente desde la tabla principal. --- 🎨 **Vista previa e impresión:** - Podés visualizar e imprimir el diseño IA en PDF desde el ícono <i class='fas fa-file-pdf'></i>. - El diseño incluye código, monto, vencimiento y datos del negocio. --- ❓ **Ayuda interactiva:** Hacé clic en el ícono de ayuda (`?`) en la parte superior del formulario para volver a ver esta información en cualquier momento. Ayuda: Registro de Mantenimiento de Matafuegos recharges Guía para registrar la recarga o mantenimiento periódico de un matafuego. 🛠 **Módulo: Mantenimiento de Matafuegos** Este formulario permite registrar el mantenimiento (carga o servicio) realizado sobre un matafuego previamente registrado. --- ## 🧾 **Datos mostrados automáticamente** Estos campos son solo informativos (no editables) y reflejan el estado actual del matafuego: - Cliente al que pertenece. - Marca, tipo, capacidad y color. - N° de serie, año de fabricación. - Ubicación y detalle adicional. --- ## 📅 **Fechas importantes a completar** - **Fecha de mantenimiento:** Fecha en que se realiza el trabajo. - **Próximo mantenimiento:** Se genera automáticamente un año después (editable). - **Recambio de polvo extintor:** Recomendado cada 10 años. - **Reprueba hidráulica:** Recomendado cada 5 años. > ⚠️ Si el polvo o la prueba hidráulica están vencidos, se mostrarán alertas en rojo automáticamente. --- ## 👤 **Técnico responsable** - Si el usuario tiene permisos, puede seleccionar un técnico de la lista. - Si no, se asigna automáticamente el usuario autenticado. --- ## ⚙️ **Estado** Puedes actualizar el estado actual del matafuego: - `recharging` = En mantenimiento - `ready` = Listo - `onsite` = En el local > Los estados `withdrawn`, `delivered` y `pendingWithdrawal` están deshabilitados para evitar cambios desde esta vista. --- ## 💬 **Observaciones** Campo opcional para registrar cualquier observación del técnico. --- ## ✅ **Confirmación** Antes de guardar, se mostrará un mensaje de confirmación con SweetAlert para evitar registros accidentales. Ayuda: Registro de Matafuegos fire_extinguisher Formulario para registrar matafuegos en el sistema, asociándolos a clientes y completando información técnica y geolocalización. 🧯 **Registro de Matafuegos** Este módulo permite registrar un nuevo matafuego, asignándolo a un cliente y completando toda su información técnica, mantenimiento y ubicación. --- ### 📋 **Campos del formulario** 🔹 **Cliente** Seleccionar el cliente al que pertenece el matafuego. 📌 *Obligatorio* 🔹 **Tipo y Capacidad** Indicar el tipo de matafuego (ej. PQS, CO₂, Agua) y su capacidad en litros o kilogramos. 📌 *Obligatorio* 🔹 **Marca y Número de Serie** Seleccionar la marca del matafuego e ingresar el número de serie único. El sistema validará que no esté duplicado. 📌 *Obligatorio* 🔹 **Año de Fabricación** Elegir el año de fabricación del matafuego. 📌 *Obligatorio* 🔹 **¿Es bolita?** Indicar si se trata de un matafuego tipo bolita (se mostrará con un ícono amarillo). 📌 *Obligatorio* 🔹 **¿Cliente de paso?** Seleccionar si el cliente es eventual. En ese caso se ocultará el mapa y la dirección. 📌 *Obligatorio* 🔹 **Fechas de mantenimiento** - Mantenimiento actual - Próximo mantenimiento (se autocompleta a 1 año) - Recambio de polvo (opcional) - Reprueba hidráulica (opcional) 🔹 **Ubicación y Detalles** Ingresar el lugar donde se encuentra el matafuego (texto libre) y cualquier detalle adicional. 📎 *Opcional* 🔹 **Dirección y mapa interactivo** Permite buscar una dirección manualmente y marcar la ubicación exacta en el mapa. Se guardan latitud y longitud. Si el cliente es de paso, esta sección se oculta automáticamente. --- ### 📌 Validaciones - El número de serie debe ser único. - Si se selecciona un cliente, se muestra una lista de matafuegos previos para ese cliente. - Si cambia la fecha de mantenimiento, se actualiza automáticamente la fecha del próximo mantenimiento. --- 📤 **Guardar Registro** Presioná el botón **Guardar** para registrar el nuevo matafuego. Si deseas cancelar, podés usar el botón **Regresar**. Ayuda: Registro de Órdenes de Compra purchase_orders Formulario para registrar una orden de compra seleccionando proveedor, productos, cantidades y costos. 📌 **Registro de Órdenes de Compra** Este módulo permite registrar órdenes de compra vinculadas a proveedores y productos, incluyendo cantidad, precio unitario y total calculado. --- 📝 **¿Qué se puede completar acá?** - Selección del proveedor (obligatorio). - Búsqueda y selección de productos del proveedor. - Costo unitario y cantidad de cada producto. - Total de la orden (calculado automáticamente). - Observaciones generales del formulario (si las agregás luego). --- 🛒 **¿Cómo agregar productos?** 1. Seleccioná un proveedor. 2. Hacé clic en **Agregar producto**. 3. Buscá por nombre o código. 4. Hacé clic en el ícono de ✅ para incluir el producto. 5. Completá o ajustá el **costo** y **cantidad** si es necesario. ⚠️ Si el proveedor no está seleccionado, no se pueden buscar productos. --- 🔁 **¿Dónde se usa esta información?** - En el listado general de órdenes de compra. - En la impresión PDF de la orden. - Para análisis de gastos y seguimiento de proveedores. --- ✅ **Buenas prácticas** - Verificá que el proveedor tenga los productos cargados correctamente. - Usá el botón "Cambiar proveedor" si necesitás volver a seleccionar. - Revisá que los precios unitarios estén bien antes de registrar. - No dejes productos con costo 0 o cantidad 0 (hay validaciones que lo impiden). --- 📎 **Importante:** - La orden no puede guardarse sin productos. - Cada producto debe tener **costo > 0** y **cantidad > 0**. - El proveedor no se puede cambiar luego de agregados los productos, salvo que reinicies la selección. --- ❓ **Ayuda interactiva:** Hacé clic en el ícono de ayuda (`?`) en la parte superior del formulario para volver a ver esta información. Ayuda: Registro de Órdenes de Reparación repair_orders Formulario para registrar una orden de reparación detallando dispositivo, técnico, problema, diagnóstico, productos y trabajos realizados. 📌 **Registro de Órdenes de Reparación** Este módulo permite crear órdenes de reparación asociadas a dispositivos de clientes, asignando técnicos, productos, trabajos y estado del servicio. --- 📝 **¿Qué se puede completar acá?** - Cliente y dispositivo relacionado. - Técnico asignado. - Fecha de ingreso y salida estimada. - Descripción del problema y diagnóstico técnico. - Estado de la reparación (Pendiente, En proceso, Completado, Cancelado). - Productos utilizados (cantidad, precio). - Trabajos realizados (cantidad, precio). - Costo estimado y costo final (automático o manual). --- 🔄 **¿Dónde se usa esta información?** - En reportes de servicio técnico. - En impresión de PDF de la orden de trabajo. - En historial del cliente y dispositivo. --- ✅ **Buenas prácticas** - Seleccioná primero el cliente para que se filtren sus dispositivos. - Asegurate de detallar bien el problema y el diagnóstico para mayor trazabilidad. - Usá los campos de productos y trabajos para llevar el costo estimado automáticamente. --- 📎 **Importante:** - El dispositivo debe estar previamente registrado. - El técnico debe estar dado de alta como usuario del sistema. - El estado *Completado* sincroniza automáticamente el costo final si se cargó el estimado. --- ❓ **Ayuda interactiva:** Hacé clic en el ícono de ayuda (`?`) dentro del formulario para volver a ver esta información. Ayuda: Registro de Pagos a Proveedores providerPayment Formulario para registrar pagos realizados a proveedores, con asociación a compras específicas, selección de método de pago y registro de cheques o e-cheques. 🧾 **¿Para qué sirve esta pantalla?** Este formulario permite registrar un pago a un proveedor, ya sea con un método tradicional, cheque o e-cheque, asociándolo a una compra específica. 📌 **Campos obligatorios:** - **Proveedor:** Selecciona el proveedor al que se le está pagando. - **Fecha:** Fecha en la que se realiza el pago. - **Monto:** Se sugiere automáticamente según el saldo pendiente, pero puede editarse. - **Observaciones:** Permite registrar detalles adicionales (opcional). - **Compra:** Debe seleccionarse la compra específica a la que se asocia el pago. - **Método de pago:** Puede ser transferencia, efectivo, cheque, e-cheque, etc. 💳 **Métodos de pago especiales:** - **Cheque (ID=1):** Se abre un modal donde se deben seleccionar cheques disponibles. - **E-Cheque (ID=2):** Se abre un modal donde se deben seleccionar e-cheques disponibles. - El monto se calcula automáticamente sumando los montos de los cheques seleccionados. - Si se elige un método diferente, el monto puede editarse libremente. 🔄 **Lógica automática:** - Al seleccionar una compra, se carga automáticamente el saldo adeudado. - Si se cambia el proveedor, se filtran las compras correspondientes. - La suma de cheques y e-cheques se refleja en el campo `Monto`. - Al realizar un pago a un proveedor se generará automáticamente el egreso de caja con el nombre pago a proveedor 'Nombre del proveedor'. - Al eliminar el pago a un proveedor se eliminará automáticamente el egreso generao por dicho movimiento. 🛑 **Validaciones importantes:** - Se debe seleccionar proveedor y compra antes de elegir método de pago. - Si se elige cheque o e-cheque sin proveedor o compra, se muestra una advertencia. 📎 **Acciones disponibles:** - Registrar el pago con el botón `Registrar`. - Cancelar la operación con `Cancelar`. Ayuda: Registro de Préstamos de Matafuegos fire_extinguisher_loans Formulario para registrar el préstamo de matafuegos a clientes seleccionados. 🔥 **Registro de Préstamos de Matafuegos** Este formulario permite asignar uno o varios matafuegos disponibles a un cliente específico en calidad de préstamo. --- 🔹 **Pasos para registrar un préstamo:** 1. **Seleccionar Cliente:** - Utilizá el buscador para elegir al cliente que recibirá los matafuegos. 2. **Elegir Matafuegos a prestar:** - Se muestra una tabla con todos los matafuegos disponibles (no prestados actualmente). - Cada fila indica: - N° de serie - Color (con significado visual) - Tipo de matafuego - Ubicación actual - Capacidad ✅ Marcá los matafuegos que querés prestar al cliente. 3. **Observaciones:** - Campo opcional para registrar detalles como: - Fecha estimada de devolución - Persona responsable de la entrega - Estado físico de los equipos --- 📌 **Notas:** - Solo se muestran matafuegos disponibles. - El color visual de cada matafuego ayuda a identificar rápidamente su uso (por ejemplo, *rojo* para uso general, *blanco* para CO₂, etc.). - La tabla es dinámica y se puede extender con filtros o búsquedas si es necesario. --- 💾 **Finalizar:** - Presioná **"Prestar Matafuegos"** para confirmar la asignación. - Usá el botón **"Cancelar"** si querés volver atrás sin guardar. Ayuda: Registro de Proveedores provider Formulario para registrar nuevos proveedores en el sistema. 📄 **¿Qué permite esta pantalla?** Registrar la información de un nuevo proveedor en el sistema, incluyendo sus datos fiscales, ubicación y datos de contacto. 🧾 **Campos obligatorios:** - **Nombre:** Nombre del proveedor. - **Correo electrónico:** Email de contacto principal. - **CUIT/L/DNI:** Número de identificación fiscal. - **Dirección:** Calle y número del proveedor. - **País y provincia:** Permite seleccionar desde una lista desplegable. - **Teléfono:** Número de contacto principal. 🌍 **Ubicación personalizada:** Si el país o la provincia no está en la lista, se puede seleccionar 'Otro' y completar manualmente los campos correspondientes. 👤 **Persona de referencia (opcional):** Se puede registrar nombre, correo y teléfono de una persona de contacto, además de observaciones adicionales. 🛠 **Automatización:** Al seleccionar un país, el sistema carga automáticamente las provincias correspondientes. Si se elige *Otro*, se habilita el campo para escribir una ubicación personalizada. 📎 **Validaciones:** Todos los campos obligatorios deben estar completos antes de registrar. Se utiliza validación de email y número fiscal. 🔐 **Permisos:** Solo los usuarios con los permisos correspondientes pueden registrar proveedores. Ayuda: Registro de Remitos refer Este formulario permite generar un remito detallado para entregar productos a un cliente, controlando cantidades y observaciones, sin necesidad de facturación inmediata. 📄 **¿Qué es un remito?** Un remito es un documento que acompaña la entrega de productos al cliente y sirve como comprobante de recepción, sin ser una factura. 📌 **¿Para qué sirve esta pantalla?** Permite registrar los artículos entregados a un cliente en forma de remito, asegurando control sobre el stock y generando trazabilidad de la salida de productos. 🧾 **Pasos para registrar un remito:** 1. **Seleccionar Cliente:** Obligatorio. Podés buscarlo por nombre. 2. **Buscar producto:** - Usá el campo de código de barras o el botón de búsqueda avanzada. - También podés escribir el nombre del producto en el buscador. 3. **Cargar artículo:** - Elegí el artículo desde el select. - Indicá la **cantidad** a remitir. - El sistema valida que haya stock suficiente. 4. **Agregar artículo:** - Haciendo clic en **Agregar artículo**, se suma a la tabla de detalle. 5. **Observaciones:** - Es obligatorio ingresar un texto descriptivo (mínimo 10 caracteres) sobre la entrega. 6. **Registrar remito:** - Luego de confirmar, el sistema registra la operación. - No se emite factura automáticamente. 📋 **Tabla de detalle del remito:** Contiene los artículos seleccionados con sus cantidades. Podés eliminar filas antes de confirmar. 🔎 **Modal de búsqueda de productos:** Te permite buscar por nombre o código y seleccionar fácilmente productos. Muestra todos los precios habilitados según el tipo de usuario: - Minorista - Mayorista - Preferencial - Fábrica, Distribuidor, Repartidor, Especial (si están activados por configuración) 🔐 **Validaciones importantes:** - No se puede registrar sin cliente. - No se puede registrar sin observaciones completas. - No se permite cantidad mayor al stock disponible. ✅ **Finalizar:** Hacer clic en **Registrar** y confirmar la acción para guardar el remito. Ayuda: Registro de rol role Este formulario permite crear nuevos roles y asignarles los permisos necesarios dentro del sistema. 🛡️ **¿Qué es un rol?** Un rol define un conjunto de permisos que habilitan a un usuario a realizar acciones específicas en el sistema, como acceder a módulos, registrar ventas, modificar artículos, etc. --- 🔹 **Campos del formulario:** - **Nombre:** Nombre del rol, por ejemplo *Administrador*, *Vendedor*, *Contador*. - **Slug:** Identificador único, en minúscula y sin espacios. Ej: `admin`, `vendedor`. - **Descripción:** Breve explicación sobre el propósito del rol. --- ✅ **Permisos especiales:** Podés: - **Marcar todos** los permisos. - **Desmarcar todos**. Esto es útil para roles amplios (como un administrador) o restringidos. ⚠️ Si el rol tiene activado simultáneamente los permisos **'Permitir controlar caja propia'** y **'Permitir controlar cualquier caja'**, se desactivará automáticamente uno de ellos para evitar conflicto. --- 📋 **Lista de permisos:** Organizada por módulos del sistema (Ventas, Caja, Clientes, Productos, etc.). Cada permiso muestra su nombre y una breve descripción. 🚨 Algunos permisos críticos se muestran con texto en rojo, como: - `Ingresar costo` - `Replicar artículos en la tienda on-line` - `Control de geolocalización en ventas` --- 🔐 **Consejo:** Creá roles con los permisos mínimos necesarios. Evitá usar el rol de 'admin' para todos los usuarios. Esto mejora la seguridad y el control de acciones. Ayuda: Registro de Servicios working Formulario para registrar o editar servicios o trabajos realizados por la empresa, incluyendo nombre, precios, estado, descripción e imagen del trabajo. 🛠️ **Registro de Servicios** Este módulo permite registrar nuevos trabajos o servicios que ofrece la empresa. A continuación, se explican los campos del formulario: --- 🔹 **Nombre** Nombre del servicio. Debe ingresarse con claridad para identificarlo luego en las búsquedas. 📌 *Obligatorio* 🔹 **Código de barras** Código identificador único opcional que puede utilizarse para escanear o buscar el servicio rápidamente. 📎 *Opcional* 🔹 **Precio de costo** Costo que implica realizar este trabajo. 📌 *Obligatorio* 🔹 **Precio de venta** Valor de venta al cliente del trabajo o servicio. 📌 *Obligatorio* 🔹 **Estado** Seleccionar si el servicio está `Activo` (disponible para su uso) o `Desactivado` (no se mostrará en listados activos). 📌 *Obligatorio* 🔹 **Descripción** Campo opcional para añadir detalles relevantes del trabajo o aclaraciones. 📎 *Opcional* 🔹 **Imagen del trabajo** Permite cargar una imagen representativa del servicio. Si no se selecciona una, se utilizará una por defecto. 📎 *Opcional* --- 📤 **Finalizar el Registro** Presionar el botón **Registrar** para guardar el nuevo trabajo. Si querés cancelar la operación, hacé clic en **Cancelar**. Ayuda: Registro de URLs de ARCA arca-urls Formulario para registrar las URLs técnicas de los servicios web de AFIP utilizados por ARCA. 📌 **Registro de URLs de ARCA** Este módulo permite registrar las URLs correspondientes a los servicios web SOAP de AFIP, necesarios para que el sistema ARCA pueda autenticarse, emitir comprobantes y consultar el estado fiscal. --- 📝 **¿Qué se puede completar acá?** - **Nombre técnico**: Identificador del servicio (ej.: `wsaa_login`, `wsfe`, `wsmtxca`). - **URL del servicio**: Dirección WSDL o endpoint del servicio AFIP (homologación o producción). - **Descripción** (opcional): Explicación del uso o contexto del servicio. --- 🔄 **¿Dónde se usa esta información?** - En el momento de emitir comprobantes electrónicos desde el sistema. - Durante el proceso de autenticación WSAA (login CMS). - En tareas automáticas o integraciones con AFIP. --- ✅ **Buenas prácticas** - Usá nombres técnicos claros, sin espacios (ej.: `wsfe`, `wsaa_login`). - Verificá que la URL sea válida y empiece con `https://`. - Indicá si es de producción u homologación en la descripción para evitar confusiones. - Mantené separadas las URLs de cada entorno (una para pruebas, otra para producción). --- 📎 **Importante:** - Estas URLs son críticas para la comunicación con AFIP. Si están mal configuradas, no se podrán emitir comprobantes. - Se recomienda no modificar estas URLs una vez configuradas, salvo para actualizaciones oficiales de AFIP. --- ❓ **Ayuda interactiva:** Hacé clic en el ícono de ayuda (`?`) en la parte superior del formulario para volver a ver esta información en cualquier momento. Ayuda: Registro de Usuario user Formulario para crear un nuevo usuario dentro del sistema y asignarle uno o más roles. 👤 **Registro de Usuario** Este formulario permite registrar un nuevo usuario dentro del sistema, completando los siguientes campos: --- 📝 **Datos Personales:** - **Nombre:** Campo obligatorio. Se guarda con mayúscula inicial automáticamente. - **Apellido:** Campo obligatorio. - **Correo electrónico:** Debe ser único. Se validará el formato y que no esté registrado previamente. 🔒 **Credenciales de acceso:** - **Contraseña:** Mínimo 8 caracteres, máximo 30. Campo obligatorio. - **Confirmación de contraseña:** Debe coincidir exactamente con la contraseña ingresada. --- 🔐 **Asignación de Roles:** - Se muestra un listado de roles disponibles (excepto el rol con `id = 1`, usualmente reservado). - Puedes seleccionar uno o varios roles para el usuario. - Cada rol está acompañado de una breve descripción. 📌 Los roles determinan los permisos del usuario dentro del sistema (ventas, administración, reportes, etc.). --- ✅ **Acciones disponibles:** - **Registrar:** Guarda el usuario en la base de datos y lo habilita automáticamente. - **Cancelar:** Vuelve al listado de usuarios sin guardar cambios. --- 📘 **Notas adicionales:** - El formulario incluye validaciones inmediatas (`is-invalid`) y mensajes de error debajo de cada campo. - El botón de registrar se desactiva al hacer clic para evitar envíos duplicados. - Se puede acceder a la ayuda contextual desde el ícono azul con signo de pregunta. Ayuda: Registro de Vehículos vehicle Formulario para registrar nuevos vehículos al sistema con datos del vehículo, propietario y conductor. 🚗 **Registro de Vehículos** Este formulario permite ingresar vehículos al sistema, almacenando información clave para control logístico, trazabilidad y seguimiento. --- 📋 **Campos obligatorios:** - **Tipo de vehículo:** Selección desde una lista predefinida (camión, utilitario, motocicleta, etc.). - **Placa:** Número de patente/placa del vehículo. Se guarda en mayúsculas automáticamente. - **Marca y Modelo:** Marca (ej: Ford) y modelo (ej: Ranger). - **Año de fabricación:** Debe ser un valor entre 1900 y el año actual. - **Peso:** Peso del vehículo expresado en kilogramos. - **NIT del propietario / conductor:** Documento de identificación (CUIT/DNI/NIT). Solo números. - **Nombre del propietario / conductor:** Nombres y apellidos. Se guardan con la primera letra en mayúscula. --- 🛡️ **Validaciones:** - Todos los campos son requeridos. - El peso debe expresarse en kilogramos. - Se aplica un control visual de errores mediante bordes rojos y mensajes debajo del campo. --- 📌 **Acciones disponibles:** - **Registrar:** Envía el formulario al backend y guarda el vehículo. - **Cancelar:** Vuelve a la página anterior sin guardar cambios. --- 🛠️ **Sugerencias de uso:** - Utilizá el campo de búsqueda de `Tipo de vehículo` para encontrar más rápido una opción. - Completá los datos del propietario y conductor aunque sean la misma persona. - Revisá que la placa esté bien escrita, ya que puede ser usada para búsquedas y validaciones. Ayuda: Registro de venta sale Formulario para registrar ventas en el sistema con múltiples opciones de carga y validación. 🛒 **Registro de Venta** Este formulario permite cargar una nueva venta, ya sea seleccionando un cliente registrado o ingresando uno de paso. --- 🔹 **Secciones principales:** 1. **Cliente y comprobante:** - *Cliente:* Elegí uno existente o escribí en 'Cliente de paso'. - *Tipo de comprobante:* Recibo X, Factura A, B, C o Remito. 2. **Carga de artículos:** - Podés ingresar el producto mediante: - Código de barras. - Identificador. - Selector desplegable. - Búsqueda avanzada (botón de lupa). - Se muestran distintos precios según los permisos del usuario (Minorista, Mayorista, Preferencial, etc.). 3. **Detalle del artículo:** - *Stock disponible*: visible pero no editable. - *Precio de venta:* editable si el usuario tiene permiso. - *Divisor:* para calcular el precio unitario por partes. - *Descuentos:* por porcentaje o monto. - *Cantidad:* predeterminada según la configuración del negocio. 4. **Detalle de trabajos (opcional):** - Si el negocio tiene habilitados los trabajos, se pueden agregar con su propio precio, cantidad, descuento y observaciones. --- 📋 **Tabla de venta:** Cada ítem agregado (artículo o trabajo) se muestra en una tabla con columnas para: - Eliminar - Artículo o trabajo - Precio - Descuentos - Cantidad - Subtotal --- 💰 **Totales:** - Total bruto - Total impuesto (según porcentaje indicado) - Total descuento - Total a pagar (se actualiza automáticamente) --- 🌍 **Geolocalización y conexión:** - Si no hay internet, la venta se guarda localmente para reenviarse luego. - Se toma la IP pública y ubicación geográfica del dispositivo si está habilitado. --- 🛠️ **Autofoco personalizable:** El sistema recuerda en qué campo querés comenzar a trabajar (Código, Identificador, Selector), y lo aplica automáticamente. --- ✅ **Botón Registrar:** Al hacer clic, se validan los datos: - Si hay conexión: se muestra una confirmación. - Si no hay conexión: se guarda temporalmente para sincronizar luego. Ayuda: Registro de venta con precios extra extrasales Formulario para registrar ventas utilizando precios especiales como fábrica, distribuidor, reparto o especial, según el permiso del usuario. 🧾 **Registro de Venta con Precios Extra** Este formulario permite registrar una venta utilizando precios distintos a los comunes, como fábrica, distribuidor, reparto o especial. Está orientado a negocios que trabajan con varios tipos de precios según canal o cliente. --- 🔹 **Secciones principales:** 1. **Cliente y comprobante:** - *Cliente:* Podés seleccionar un cliente registrado o ingresar uno de paso. - *Tipo de comprobante:* Recibo X, Factura A, B, C o Remito. 2. **Carga de artículos:** - Los productos pueden buscarse por: - Código de barras - Identificador - Selector desplegable - Búsqueda por nombre (lupa) - El sistema permite cambiar el precio desde un selector de precios si el usuario tiene permiso. - Al seleccionar un producto, se muestran automáticamente los precios disponibles (según permisos y configuración del negocio). 3. **Detalle del artículo:** - *Stock disponible:* solo lectura. - *Precio de venta:* editable si se cuenta con el permiso correspondiente. - *Divisor:* permite dividir el precio para ventas fraccionadas. - *Descuento:* por porcentaje o por monto (si el usuario lo permite). - *Cantidad:* predefinida o editable según la configuración global. 4. **Carga de trabajos (si está habilitado):** - Permite agregar trabajos personalizados (ej: instalación, armado, etc.). - Se configura precio, cantidad, descuento y observaciones. --- 📋 **Tabla de venta:** Muestra el detalle de todos los ítems agregados (productos o trabajos) con: - Botón eliminar - Descripción - Precio - Descuento (porcentaje y monto) - Cantidad - Subtotal calculado automáticamente --- 💰 **Totales:** - *Total bruto:* suma de subtotales - *Impuesto:* calculado sobre el total si se indica un % de IVA - *Descuento:* suma de descuentos aplicados - *Total a pagar:* monto final con IVA y descuentos aplicados --- 🌍 **Geolocalización:** - El sistema captura IP pública y coordenadas del dispositivo (si el navegador lo permite), para validar el origen de la venta. --- 🛠️ **Autofoco configurable:** Desde el botón junto a la lupa, podés elegir en qué campo querés comenzar la carga: - Código de barras - Identificador - Selector de artículos El sistema recordará esta preferencia para futuros registros. --- ✅ **Botón Registrar:** Al presionar **Registrar**, se muestra una confirmación con SweetAlert. Si se confirma, se envía la venta al sistema: - Si el total es cero, muestra un error. - Si hay productos válidos, registra la operación. Ayuda: Registro de zonas zone Formulario para registrar zonas dentro de la empresa, útil para segmentar áreas geográficas, comerciales o de distribución. 📍 **Registro de Zonas** Este módulo permite dar de alta nuevas zonas dentro de la empresa, facilitando la organización territorial para entregas, ventas, logística u otros propósitos definidos por el negocio. --- 🔹 **Campos del formulario:** 1. **Zona (obligatorio):** - Ingresá el nombre de la zona. Ejemplo: "Zona Centro", "Zona Norte", etc. - Se guarda en mayúscula inicial automáticamente. - Campo requerido para guardar el formulario. 2. **Descripción (opcional):** - Texto libre para detallar el propósito o alcance de la zona. - Ejemplo: "Zona destinada a repartos dentro del área urbana de la ciudad de Mendoza". 3. **Business ID (oculto):** - Asociado automáticamente al negocio actual del usuario. - No es necesario modificarlo manualmente. --- 🧭 **¿Para qué sirven las zonas?** - Agrupar clientes por sector. - Organizar rutas de repartidores. - Asignar zonas a vendedores o técnicos. - Crear reportes segmentados por región. --- 🛠️ **Acciones disponibles:** - **Registrar:** guarda la nueva zona. - **Cancelar:** vuelve al listado general sin guardar. --- 🧩 **Integración con otros módulos:** Las zonas pueden ser utilizadas luego en: - Clientes (asignar zona de atención) - Pedidos o entregas - Reportes y filtros administrativos --- 🆘 **Ayuda interactiva:** Hacé clic en el ícono de ayuda `?` para desplegar esta guía rápida y entender cómo usar el formulario correctamente. Ayuda: Reintegros de artículos vendidos refund Formulario para devolver artículos o combos vendidos, calculando el total a reintegrar y registrando la devolución. 📦 **Reintegros de Ventas** Este módulo permite registrar devoluciones de productos o combos que fueron vendidos previamente. Se utiliza cuando un cliente devuelve parte o la totalidad de su compra. --- 🧾 **Datos generales mostrados:** - **Cliente:** Persona asociada a la venta original. - **Fecha de venta:** Cuándo se concretó la venta. - **Total de la venta:** Importe original vendido (sin intereses). --- 🧮 **Cálculo del reintegro:** - Se puede devolver tanto **productos individuales** como **combos**. - Cada línea muestra: - El nombre del artículo o combo. - La cantidad vendida. - La cantidad a devolver (editable por el operador). - El precio final con descuentos aplicados. ✍️ Al ingresar una cantidad en la columna *Cantidad Reintegro*, se recalcula automáticamente el total a devolver. --- ⚠️ **Validaciones:** - No se puede ingresar una cantidad mayor a la vendida. - Se alerta con SweetAlert si se excede la cantidad permitida. - El botón **Registrar Reintegro** guarda la operación y afecta el stock. --- 📘 **Notas:** - Este formulario está ligado directamente a una venta previa (`sale_id`). - El reintegro total acumulado se muestra dinámicamente en la parte superior. - Se generan los campos `product_ids`, `combo_ids`, `quantities`, y `combo_quantities` para su procesamiento backend. Ayuda: Reporte por fecha y usuario reportusudate Este módulo permite consultar ventas y artículos vendidos por usuario en una fecha específica o en un rango de fechas. 📌 **¿Qué permite esta pantalla?** Consultar: - Los artículos vendidos por un usuario en una fecha puntual. - Las ventas totales realizadas por un usuario en un rango de fechas. --- 🔍 **Consulta de artículos vendidos por usuario:** 1. Seleccioná una **fecha específica**. 2. Elegí el **usuario**. 3. Hacé clic en **Consultar**. Se mostrará el detalle de artículos vendidos por el usuario en esa fecha. --- 📊 **Consulta de ventas realizadas por usuario (rango de fechas):** 1. Ingresá una **fecha inicial**. 2. Ingresá una **fecha final**. 3. Seleccioná el **usuario** correspondiente. 4. Hacé clic en **Consultar**. Se mostrará un listado de todas las ventas hechas por ese usuario en el periodo especificado. --- 🧾 **Notas:** - Ambos formularios son independientes. Usá el primero para ver productos vendidos, y el segundo para ver ventas completas. - Todos los campos son obligatorios para evitar resultados vacíos o incorrectos. - El botón de búsqueda se desactiva automáticamente al enviarse el formulario para prevenir envíos duplicados. ✅ **Consejo:** Este reporte es útil para monitorear la productividad de vendedores, auditar movimientos individuales o hacer cierres de turno por usuario. Ayuda: Reporte por rango de fechas report Este módulo permite visualizar todas las ventas realizadas dentro de un rango de fechas seleccionado, junto con el total de ingresos y acciones sobre cada venta. 📌 **¿Qué hace esta pantalla?** Permite consultar las ventas registradas entre dos fechas específicas y ver el total recaudado en ese periodo. 📆 **Pasos para generar el reporte:** 1. **Seleccionar fecha inicial:** Obligatorio. Marca el comienzo del periodo de búsqueda. 2. **Seleccionar fecha final:** Obligatorio. Marca el fin del periodo de búsqueda. 3. **Presionar Consultar:** El sistema mostrará todas las ventas realizadas en ese rango. 💰 **Total de ingresos:** Se muestra automáticamente a la derecha del botón de búsqueda, representando el total sumado de las ventas mostradas. 🧾 **Listado de ventas encontradas:** La tabla muestra los siguientes campos: - **ID:** Número de venta. Es un enlace para ver más detalles. - **Fecha:** Fecha y hora de la venta. - **Total:** Importe total de la venta con la moneda del negocio. - **Estado:** - **Activo:** Venta válida. - **Cancelado:** Venta anulada. - **Caja cerrada:** No permite editar estado. - **No asociada a caja:** Indica que la venta no fue procesada aún por caja. - **Acciones:** - Ver detalle (`👁️`) - Imprimir (`🖨️`) - Generar PDF (`📄`) 📌 **Notas importantes:** - Si el estado indica que la venta no pertenece a una caja abierta, no podrá ser modificada. - Las fechas deben estar completas para ejecutar la consulta. - El botón 'Consultar' se desactiva al enviarse para evitar duplicaciones. 🔍 **Recomendación:** Utilizá este reporte para análisis contable, cierre diario o mensual, y para obtener historial completo de operaciones por fechas específicas. Ayuda: Rutas de Usuarios clientsroute Vista para visualizar en el mapa las rutas que debe recorrer un usuario con sus clientes asignados. 🗺️ **Rutas de Usuarios** Este módulo permite generar y visualizar en el mapa la ruta que debe seguir un usuario para visitar a sus clientes asignados, comenzando desde su ubicación actual. --- ### 🔍 ¿Cómo usar? 1. **Seleccioná un usuario** del listado desplegable. El sistema buscará todos los clientes que tiene asignados y los ubicará en el mapa. 2. Se mostrará: - Un marcador de **tu ubicación actual** (si el navegador lo permite). - Los **clientes del usuario** como marcadores con su nombre y dirección. - Una **ruta trazada automáticamente** desde tu ubicación hasta cada cliente. --- ### 📤 Funciones adicionales - ✅ **Exportar a Google Maps**: Podés abrir la ruta completa directamente en Google Maps para navegación en tiempo real. - 📄 **Ver Lista de Clientes**: Accede a la lista detallada de clientes del usuario seleccionado desde el botón. --- ### 💡 Tips - Asegurate de tener activada la ubicación en tu navegador. - Si no se encuentra ubicación, la vista comienza en Mendoza como valor por defecto. - El mapa se actualiza automáticamente al cambiar de usuario. 🔐 Solo los usuarios con permisos pueden acceder a esta herramienta. Ayuda: Tipos de Dispositivos device_types Gestión de categorías para los distintos dispositivos que ingresan al sistema para reparación o seguimiento. 📌 **Tipos de Dispositivos** Este módulo permite administrar las diferentes categorías de dispositivos que maneja la empresa (ej: Teléfonos, Notebooks, Impresoras, etc.). Estas categorías son usadas para clasificar los equipos que cargan los usuarios o el personal técnico. --- 🔧 **¿Qué se puede registrar acá?** - Nombre del tipo de dispositivo (obligatorio). - Descripción opcional con observaciones generales. - Asociación a una empresa (business_id). --- 🧭 **¿Dónde se usa esta información?** - Al registrar un nuevo dispositivo de un cliente. - En órdenes de reparación para clasificar equipos. - En reportes para filtrar dispositivos por tipo. --- ✏️ **Ejemplos de tipos comunes** - Teléfono - Notebook - Monitor - Consola de videojuegos - Impresora 3D --- 📎 **Importante:** - Cada tipo debe tener un nombre único. - La descripción puede ayudar a que el equipo administrativo/técnico entienda qué entra en cada categoría. --- ❓ **Ayuda interactiva:** Hacé clic en el ícono de ayuda (`?`) para volver a ver esta información en cualquier momento desde el formulario de creación o edición. Ayuda: Tipos de Matafuegos fire_extinguisher_types Formulario para registrar nuevos tipos de matafuegos utilizados por los clientes o en la carga técnica. 📌 **Registro de Tipos de Matafuegos** Este formulario permite registrar los distintos **tipos de matafuegos** que luego se podrán asignar a cada equipo registrado en el sistema. --- ### 🧾 **Campos del formulario** - **Nombre:** Campo obligatorio donde se especifica el nombre del tipo de matafuego (Ej: `PQS`, `CO₂`, `AFFF`, etc.). - **Descripción:** Campo opcional donde se puede agregar información adicional como el uso, propiedades o normativas aplicables. --- ### ✅ **Uso habitual** Este módulo se utiliza al momento de iniciar la carga técnica del sistema o al tener que registrar un tipo no contemplado previamente. Los tipos registrados aquí aparecerán como opciones en la carga de matafuegos. --- ### 📌 Recomendaciones - Utilizar nombres cortos y estandarizados para facilitar la selección posterior. - Evitar duplicados: antes de cargar uno nuevo, verificar si ya existe. --- 🔐 **Solo usuarios con permisos adecuados pueden acceder a este formulario.** Ayuda: Ubicaciones de Clientes geoclients Este módulo muestra una lista de clientes con sus coordenadas geográficas y enlaces para ver su ubicación en Google Maps. 📍 **Ubicaciones de Clientes** Este módulo permite visualizar los clientes registrados junto a su información de contacto y ubicación geográfica (si está disponible). --- ### 🧾 ¿Qué se muestra? - Nombre del cliente - Dirección y teléfono - Correo electrónico - Enlace a su ubicación en Google Maps (si tiene latitud y longitud) - Distancia desde tu ubicación actual (si está habilitada) --- ### 📌 Funciones destacadas - Si tu navegador lo permite, se detecta automáticamente tu ubicación para calcular la **distancia a cada cliente**. - Haciendo clic en el ícono 📍 se abre **Google Maps** directamente con la ubicación del cliente. - Si el cliente no tiene coordenadas geográficas, aparecerá “No disponible”. --- ### 💡 Consejos - Permití el uso de tu ubicación para acceder a todas las funciones. - Verificá que el cliente tenga latitud y longitud cargadas correctamente para usar el enlace al mapa. - Podés volver al mapa general de rutas usando el botón “Volver”. Esta herramienta es útil para logística, planificaciones de visita o validación de direcciones registradas. Ayuda: Unión a Registradoras join_cash_register Pantalla de selección de registradora para operar con cajas abiertas. 📌 **Unión a Registradoras** Esta pantalla permite a los usuarios elegir con qué registradora van a trabajar durante su sesión en el sistema. Es necesaria para asociar sus ventas, cobros y movimientos a una terminal específica. --- 🛠️ **¿Por qué se necesita seleccionar una registradora?** - Permite llevar trazabilidad sobre qué terminal fue usada por cada usuario. - Garantiza que las operaciones queden correctamente vinculadas a una caja y lugar físico. - Evita errores cuando hay múltiples puntos de venta activos. --- 🧑‍💼 **¿Quiénes deben hacerlo?** - Todo usuario que NO tenga el permiso especial `sales.peddler` debe seleccionar una registradora activa. - Los usuarios con ese permiso pueden operar sin estar asignados a una terminal. --- ✅ **Pasos para unirse a una registradora:** 1. Seleccionar una registradora activa de la lista desplegable. 2. Hacer clic en el botón **Asignarme**. 3. A partir de ese momento, todas tus operaciones se registrarán en esa terminal. --- 🔐 **Consideraciones de seguridad:** - Solo se muestran registradoras que están activas (`status: ACTIVE`) y corresponden al negocio del usuario. - El sistema impide avanzar si no se selecciona una registradora válida. --- 📎 **Importante:** - Esta selección es obligatoria al iniciar sesión, salvo para vendedores ambulantes. - Podés cambiar de registradora cerrando sesión y seleccionando otra al ingresar nuevamente. --- ❓ **Ayuda interactiva:** Al hacer clic en el ícono de ayuda (`?`), se muestra esta explicación completa para guiar a los usuarios sobre cómo asociarse correctamente a una registradora activa. Crear Banco bank Ayuda para crear bancos y poder consultar su información rapidamente Antes de crear un nuevo banco, es importante verificar que el banco que deseas agregar no exista previamente en el sistema. El sistema identifica a los bancos por su nombre y no permite que se dupliquen. Si intentas crear un banco con un nombre que ya está registrado, el sistema mostrará un error y no permitirá su creación. Asegúrate de que el nombre del banco sea único para evitar conflictos. Una vez que hayas verificado que el banco no está registrado en el sistema, puedes proceder a ingresarlo. El nombre del banco es un campo obligatorio, por lo que debes asegurarte de completarlo. Los demás campos, como teléfono, dirección y observaciones, son opcionales, pero es recomendable que los completes para tener toda la información disponible de manera más rápida y accesible en el futuro. Campos recomendados: Teléfono: Para poder contactarte con el banco de forma ágil. Dirección: Para localizar fácilmente la sucursal o sede del banco. Observaciones: Aquí puedes incluir datos adicionales importantes, como el correo electrónico, el teléfono y el nombre de una persona de referencia, o cualquier otra información que consideres útil. Completar todos los campos te permitirá gestionar los datos del banco de manera más eficiente y organizada. Crear publicidad advertisement Ayuda para seleccionar productos a ser mostrados en el cartel de propaganda Para agregar productos al cartel, primero se debe hacer clic en Mostrar 10 y seleccionar Todos para visualizar la lista completa de productos del sistema (excluyendo los combos). A continuación, se debe seleccionar cada producto deseado marcando su casilla correspondiente. Además, es necesario elegir con qué tipo de precio se mostrará el producto: Minorista, Mayorista o Preferencial. Estas opciones estarán disponibles únicamente si el usuario tiene los permisos necesarios para ver dichos precios. Una vez seleccionados los productos y los precios deseados, se debe hacer clic en el botón Registrar. Es importante tener en cuenta que si un producto ha sido seleccionado pero no se ha especificado un precio, el sistema utilizará el precio Minorista de manera predeterminada. Si se desea quitar productos del cartel, simplemente se debe desmarcar la casilla correspondiente y, al hacer clic en Registrar, el sistema eliminará esos productos de la lista del cartel. Generación de Orden de Retiro/Recepción withdrawalorder Formulario para crear una orden de retiro o recepción de matafuegos, incluyendo detalles del cliente, extintores, productos y trabajos realizados. 📋 **Funcionalidad del módulo** Este formulario permite generar una **Orden de Retiro** o una **Orden de Recepción** para uno o varios matafuegos, asociándolos a un cliente, junto con trabajos y artículos vinculados al mantenimiento. --- ### 🧾 **Secciones principales del formulario** #### 1. **Datos del cliente y matafuego** - Selecciona el cliente. - Luego selecciona el matafuego disponible (filtrado automáticamente por cliente). - Se mostrará información como: - Capacidad - Ubicación - Fecha de última y próxima recarga - Tipo y color del matafuego #### 2. **Fechas clave** - Fecha de retiro o recepción (obligatoria). - Fecha de entrega (opcional). #### 3. **Ubicación del retiro** - Dirección sugerida automáticamente desde los datos del matafuego (puede ser editada). #### 4. **Geolocalización** - Se captura automáticamente la latitud y longitud del dispositivo. #### 5. **Carga de Artículos y Trabajos** - Se pueden agregar múltiples productos y trabajos. - Se calcula automáticamente el total según cantidad y precio. #### 6. **Pago a cuenta** - Se puede registrar un monto a cuenta como pre-pago. #### 7. **Observaciones** - Campo opcional para dejar comentarios adicionales. --- ### 💡 **Validaciones y Confirmación** - Si el monto total es 0, se muestra un error para evitar registros vacíos. - Antes de guardar, se muestra un mensaje de confirmación con SweetAlert. - Campos obligatorios están destacados y validados. --- ### 🧠 **Consejo** Si no ves los matafuegos en el select, asegúrate de que el cliente tiene cargados extintores activos. 🍽️ Crear / editar mesa table Guía para completar el formulario de mesas y posicionarlas dentro de un plano. Este formulario te permite **crear o editar una mesa** y ubicarla dentro de un plano existente. 🧾 **Campos del formulario** - **Nombre \*** ✍️ Nombre visible de la mesa (ej.: *Mesa 1*, *VIP A*, *Patio 3*). Recomendamos un esquema consistente para identificar rápido. - **Mapa \*** 🗺️ Seleccioná el **plano** donde vivirá la mesa. Si no aparece el plano, crealo primero en *Planos de mesas*. - **Forma** 🟦⚪️ - *Cuadrada*: mesa rectangular/cuadrada. - *Redonda*: mesa circular (se renderiza con borde redondeado completo). - *Personalizada*: reservada para usos especiales (no agrega controles extra en el formulario; el layout define su tamaño). - **Capacidad** 👥 Cantidad de comensales (entero ≥ 1). - **Estado** 🚦 - *Disponible*: libre para asignar. - *Ocupada*: actualmente en uso. - *Reservada*: bloqueada por reserva. - *Inhabilitada*: fuera de servicio (no asignable). 📐 **Layout (porcentajes)** - **x% / y%**: posición **desde la esquina superior izquierda** del plano. - **w% / h%**: ancho y alto relativos al tamaño del plano. - **Ángulo**: rotación en **grados** (positivo horario). > Los valores van de **0 a 100** para x/y/w/h. El editor de plano impide salir del contorno del salón y ajusta al polígono. 💡 **Sugerencias** - Para mesas **redondas**, mantené **w ≈ h** para que se vea circular. - Si usás la grilla/snap en el editor, los porcentajes quedarán alineados y es más fácil mantener simetría. - Usá nombres claros (*PB-01*, *Terraza-02*) para búsquedas más rápidas. 💾 **Guardar** - Presioná **Guardar** para aplicar los cambios. Si la mesa ya existe en el plano, se actualizará su posición/tamaño/estado. ℹ️ **Notas** - La mesa no puede ubicarse fuera de la forma del plano (clip). - El sistema normaliza valores fuera de rango (0–100) y evita solapamientos con los bordes del salón. 🗺️ Editor de plano de mesas layout-maps Guía rápida para diseñar, editar la forma del plano, usar grilla/snap y guardar cambios. Bienvenido al **Editor de plano**. Acá podés acomodar mesas, definir la forma del salón y guardar el layout. 🧰 **Barra de herramientas** - 🪜 **Z-Index:** `↑↑` trae al frente, `↑` sube 1 capa, `↓` baja 1 capa, `↓↓` manda al fondo. - ✏️ **Editar forma:** activa el modo polígono para definir la **forma del plano** (clip). - 💾 **Guardar forma:** guarda los vértices del polígono actual. - ⭕ **Presets:** *Círculo* y *Forma L* para empezar rápido. - 🔲 **1:1:** fuerza el lienzo cuadrado (ideal para círculos perfectos). - #️⃣ **Grilla:** muestra/oculta la grilla de referencia. - 🧲 **Snap / Libre:** encendé el imán para que todo calce a la grilla o movete libre. 🍽️ **Mesas (arrastrar, redimensionar, rotar)** - Click para **seleccionar** una mesa. - 🖱️ **Arrastre:** mové la mesa por el lienzo (respeta bordes y forma del plano). - ↔️ **Redimensionar:** desde los bordes. - 🔄 **Rotar:** mantené **Alt** y mové la **rueda del mouse**. - 🗑️ **Eliminar:** con la mesa seleccionada, presioná **Supr** y confirmá. ⌨️ **Atajos de teclado** - **Flechas**: mover (paso 1%). - **Shift + Flechas**: mover fino (0.25%). - **Q / E**: rotar ±5°. - **Supr**: eliminar mesa seleccionada. 📐 **Editar forma del plano (polígono)** - Activá **Editar forma** para ver los vértices. - 🔵 Arrastrá los **vértices** para ajustar la forma. - ➕ **Agregar vértice:** click sobre el borde. - ➖ **Quitar vértice:** **click derecho** sobre un punto. - 💾 **Guardá la forma** con el botón **Guardar forma**. 🧭 **Presets** - ⭕ **Círculo**: crea un contorno circular (usá **1:1** para círculo perfecto). - 🧱 **Forma L**: genera una L básica para salones irregulares. #️⃣ **Grilla & Snap** - **Grilla**: referencia visual. - **Snap**: hace que movimiento y tamaño **encajen** con la grilla. - Consejo: activá ambos para layouts más prolijos. 🎨 **Apariencia del lienzo** - El color de fondo y radio de borde se toman del plano (p. ej. **bg_color** y **border_radius**). 💾 **Guardar** - **Guardar layout**: guarda posición, tamaño, rotación y z-index de las mesas. - **Guardar forma**: guarda el polígono del salón. - 🔔 Si hay cambios sin guardar, se avisará al intentar salir. ❗ **Notas** - Las mesas se mantienen **dentro** del área del plano (no salen del polígono). - El conteo de mesas se muestra en la barra (badge **Mesas**). - Ante errores de red, se muestran alertas y no se pierden cambios mientras no cierres la página. ✨ **Tip rápido** - Para diseños simétricos: activá **Grilla + Snap**, usá **Presets**, acomodá con **Flechas/Shift**, y finalizá con **Guardar layout** y **Guardar forma** si tocaste el polígono. 🏢 Seleccionar piso / nivel table-maps Guía para elegir o crear un piso/nivel al guardar un plano de mesas. 🔹 El campo **Piso / Nivel** sirve para organizar los planos de mesas según su ubicación dentro del negocio. 📋 **Opciones disponibles:** - ✅ Elegí un piso existente de la lista desplegable (ej: *1, 2, Planta Baja, Terraza*). - ✏️ Escribí un nombre nuevo si todavía no figura (ej: *Patio, Entrepiso*). ℹ️ **Detalles importantes:** - Si seleccionás un valor de la lista, el plano quedará asociado a ese piso/nivel. - Si escribís un valor nuevo, el sistema lo guardará automáticamente y estará disponible para futuros planos. - Este campo no es obligatorio, pero **facilita la identificación rápida** de cada plano dentro del negocio. ✨ Consejo: Usá nombres claros y consistentes para evitar confusiones en la administración de los planos.
No se encontraron temas para esa busqueda.
Capitulo 1

Para que sirve este sistema

Este sistema centraliza la gestion diaria de una empresa: ventas, caja, stock, compras, clientes, cuentas corrientes, facturacion, reportes y configuraciones operativas. Esta pensado para que cada negocio pueda activar los modulos que necesita y trabajar desde una misma plataforma.

El manual contiene 143 temas de ayuda cargados. Desde el indice podes abrir cada modulo y consultar su funcionamiento paso a paso.

Ventas, caja y cobranzas

Permite registrar ventas, emitir comprobantes, controlar cajas, parciales, pagos, descuentos y cuentas corrientes.

Stock, productos y compras

Administra articulos, precios, proveedores, categorias, marcas, reposicion, movimientos y control de inventario.

Clientes y seguimiento

Organiza clientes, asignaciones, zonas, rutas, ubicaciones, saldos, historial comercial y comunicaciones.

Facturacion ante ARCA

Permite trabajar con comprobantes, configuracion fiscal, puntos de venta, emision de facturas, tickets y controles administrativos vinculados a ARCA.

E-commerce y tienda online

Incluye herramientas para tienda, carrito, catalogo, pedidos, contactos, pagos y sincronizacion comercial.

Modulos por rubro

Puede adaptarse a restaurantes, hoteles, alquileres, matafuegos, reparaciones, consignaciones, paquetes turisticos y otros rubros.

Capitulos detectados en el sistema

Esta seccion sirve como mapa general para entender el alcance completo del sistema.

2. Operacion comercial

Ventas Caja Registradoras Cajas de venta Presupuestos Clientes Productos Categorias Subcategorias Marcas Combos Offer Medios de pago

3. Stock, compras y proveedores

Compras Ordenes de compra Proveedores Provider Payment Depositos Warehouse Transfer Devoluciones Conceptos Concept Category

4. Administracion y control

Empresa y configuracion Unidades de negocio ARCA y comprobantes Bancos Cheques Echeck Reportes Respaldos Auditoria Roles y permisos Usuarios Licence Impresoras Configuracion de PDF

5. Clientes, rutas y comunicacion

Asignaciones Campanas Message Mails Geolocalizacion Routesheet Zonas Delivery Driver Repartos

6. Tienda y canales digitales

E-commerce Tienda online Supermercados Publicidad Asistente

7. Rubros especializados

Restaurant Hoteles Habitaciones Room Type Floor Departamentos Rental Space Rental Main Contract Alquileres Matafuegos Extinguisher Type Prestamos de matafuegos Recargas Dispositivos Device Type Ordenes de reparacion Vehiculos Vehicle Log Vehicle Exit Log Turismo Empeños Consignaciones Prestamos Prestamos de dinero Tarjetas de regalo Trabajos y servicios