Files
basic-erp/CLAUDE.md
T
GeorgeandClaude Sonnet 5.5 598307960e feat(web): lista de documentos con barra de filtros y búsqueda por columna
Cada pantalla de documento del menú abre primero la lista de los últimos
documentos; desde ahí se crea uno (/nuevo) o se abre uno (/:docEntry).

- sbo-list-view: título, botón de alta, barra de filtros, tabla y paginación
  (50 por página, más recientes primero).
- sbo-filter-bar (como el FilterBar del mini-erp): búsqueda por la columna
  activa + filtros declarativos text / select (con valor por defecto) /
  multi (chips + lista de valores) / date (siempre rango [desde – hasta]),
  con Ir y Limpiar. Ir aplica búsqueda y filtros en una sola consulta.
- Búsqueda numérica por igualdad (DocNum eq 314) con aviso si no es número;
  una columna con texto calculado (format) ya no es buscable por defecto.
- Piezas compartidas con sbo-value-help, que se refactoriza sobre ellas:
  createSlList (estado de búsqueda/paginación), sbo-data-table, sbo-pager,
  sbo-search-bar. Insignias de estado (tone) y estilos de botón globales.
- DOCUMENT_SCREENS: columnas y filtros de 17 documentos (ventas, compras,
  inventario) según los campos verificados en el Service Layer real
  (PurchaseRequests no tiene CardCode; StockTransfers no tiene estado).
- Rutas generadas desde el registro: lista, nuevo y :docEntry bajo el
  permiso de la ruta de menú. El formulario es un marcador (paso 9).
- Presupuesto: el aviso del bundle inicial sube a 300 kB; httpResource
  aporta ~18 kB al chunk compartido (278 kB, 78 kB comprimido).
- Verificado en Chrome contra SAP real: 49 órdenes abiertas, 314 en total,
  rango de fechas, chips de monedas, búsqueda por número, navegación y
  botón atrás, tema oscuro; ofertas (4391), transferencias y entradas.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-13 20:01:34 -05:00

2.3 KiB

basic-erp

ERP base para SAP Business One (Service Layer). Monorepo npm workspaces:

  • apps/api — NestJS: proxy hacia el Service Layer, login, sesión SAP compartida, permisos de menú (SQLite).
  • apps/web — Angular: componentes reutilizables estilo SAP Business One.
  • libs/sap-types — tipos TypeScript compartidos entre api y web.
  • tools/ — mockups y colecciones de pruebas.

Reglas del proyecto base

  • Solo campos estándar de SAP Business One. Ningún campo de usuario (U_*) salvo U_WEB_USER / U_WEB_PASS de EmployeesInfo, usados para el login web.
  • Los formularios se construyen con componentes reutilizables y configuración declarativa; no se duplica markup por documento.
  • Los colores y el aspecto salen de variables CSS (temas). Tema por defecto: claro, con la paleta de tools/oferta_venta.html (mockup de ejemplo: tiene algunos campos no estándar, pero se conserva la idea: filas de etiqueta + controles, máx. 2 columnas).

Criterios de la interfaz

Es un ERP, no una página de publicidad: ligera y rápida. Sin librerías de componentes (Material/PrimeNG), sin webfonts ni animaciones, componentes propios y densos, zoneless + OnPush, rutas con carga diferida, presupuesto de bundle en angular.json, listas largas paginadas en el servidor.

Comandos

  • npm install (npm 11) instala todo y compila libs/sap-types (postinstall).
  • npm run dev:api · npm run dev:web · npm run build · npm test.

Flujo de trabajo por cliente (branches)

  1. main es la versión base/genérica, sin personalizaciones de cliente.
  2. Cada cliente tiene su branch (cliente/<nombre-cliente>); ahí viven sus personalizaciones y fixes.
  3. Los cambios de una branch de cliente no se mezclan con main ni con otro cliente, salvo backport genérico decidido explícitamente.
  4. Antes de crear branches, mergear a main, o hacer merge/backport entre clientes, confirmar con el usuario. No hacer git push sin confirmación.

Flujo de las pantallas de documento

Cada menú abre primero una lista de los últimos documentos (con barra de filtros y búsqueda por columna, 50 por página); desde ahí se crea uno nuevo (/…/nuevo, formulario vacío) o se abre uno existente (/…/:docEntry, ver/editar). Las pantallas se definen en apps/web/src/app/features/documents/document-screens.ts.