- Implemented `evaluateProformaCustomerChange` function to assess changes in customer details for proforma invoices. - Introduced types for customer change details, blockers, field differences, and fiscal targets. - Added utility functions for normalizing text and formatting recipient information. test: add unit tests for customer payment resolver - Created tests for `CustomerPaymentResolver` to validate payment term retrieval and handling of inactive terms. - Ensured proper behavior when clearing payment terms and handling non-existent terms. test: add unit tests for customer default payment term resolver - Developed tests for `CustomerDefaultPaymentTermResolver` to verify default payment term resolution logic. - Included scenarios for creating customers with and without explicit payment term IDs. feat: implement customer default payment term resolver - Created `CustomerDefaultPaymentTermResolver` to manage default payment term resolution during customer creation. - Integrated with company finder and payment resolver services. test: add unit tests for create customer use case - Implemented tests for `CreateCustomerUseCase` to ensure correct handling of payment term IDs during customer creation. - Validated behavior when no explicit payment term ID is provided. test: add unit tests for update customer use case - Developed tests for `UpdateCustomerUseCase` to verify payment term handling during customer updates. - Ensured that inactive payment terms are not assigned and that explicit null values are respected. feat: add dependency injection for customer company services - Implemented DI for customer company dependencies to facilitate service resolution. test: add tests for customer create data utility - Created tests for `buildCustomerCreateData` to validate payment term handling based on user input. |
||
|---|---|---|
| .. | ||
| public | ||
| src | ||
| .env.acana | ||
| .env.development | ||
| .env.production | ||
| .env.rodax | ||
| Dockerfile | ||
| index.html | ||
| package.json | ||
| README.md | ||
| tsconfig.app.json | ||
| tsconfig.json | ||
| tsconfig.node.json | ||
| vite.config.mts | ||
apps/web
Aplicación frontend principal del ERP.
Documentación canónica
- Flujo de autenticación y selección de empresa:
../../docs/frontend/auth-and-company-selection.md - Contexto tenant y reglas de
X-Company-Id:../../docs/architecture/tenant-context.md - Tratamiento de errores HTTP en frontend:
../../docs/architecture/http-error-handling-frontend.md
Runtime actual de autenticación
La app usa @erp/identity/client como runtime actual.
Flujo actual
- La sesión y la empresa activa se resuelven según el flujo documentado en
docs/frontend/auth-and-company-selection.md. - Las rutas tenant-scoped deben respetar las reglas de
X-Company-Iddocumentadas endocs/architecture/tenant-context.md.
Headers
- No duplicar aquí la matriz de headers.
- Consultar
docs/frontend/auth-and-company-selection.mdpara endpoints excluidos ytenant-context.mdpara reglas tenant-scoped.
App company switcher
Componente:
apps/web/src/layout/app-company-switcher.tsx
Propósito:
- mostrar la empresa activa real en el layout autenticado
- permitir cambiar entre
availableCompaniesde la sesión actual
Reglas:
- usar el contexto de
identity - no manejar tokens
- no llamar directamente a
GET /companies/available - no usar
companySlugpara auth - no modificar el access token
- respetar el flujo canónico documentado en
docs/frontend/auth-and-company-selection.md
Refresh automático
La app implementa refresh automático global sobre 401.
La semántica completa de retry, exclusiones y limpieza de sesión se documenta en docs/frontend/auth-and-company-selection.md.