+
+
Puntos de Venta
+
+
+
+
+
+ {medioInactivo && filteredMedio && (
+
+ )}
+
+
+
+ {isLoading ? (
+
+ {Array.from({ length: 5 }).map((_, i) => (
+
+ ))}
+
+ ) : (
+
+ )}
+
+ {/* Pagination */}
+
+
+ {data ? `${data.total} punto${data.total !== 1 ? 's' : ''} de venta` : ''}
+
+
+
+
+ {page} / {totalPages}
+
+
+
+
+
+ )
+}
diff --git a/src/web/src/features/puntos-de-venta/types.ts b/src/web/src/features/puntos-de-venta/types.ts
new file mode 100644
index 0000000..b4fb6f2
--- /dev/null
+++ b/src/web/src/features/puntos-de-venta/types.ts
@@ -0,0 +1,55 @@
+// ADM-008 — shared types for puntos-de-venta feature
+// NOTE: numeración AFIP (NumeroFactura, CAI) es asignada externamente por IMAC/Infogestión.
+// Un worker futuro (INT-001) polleará la vista de Infogestión para asociar
+// NumeroOrdenInterno ↔ NumeroFacturaAFIP + CAI. No se generan números aquí.
+
+export interface PuntoDeVentaListItem {
+ id: number
+ medioId: number
+ numeroAFIP: number
+ nombre: string
+ activo: boolean
+}
+
+export interface PuntoDeVentaDetail {
+ id: number
+ medioId: number
+ numeroAFIP: number
+ nombre: string
+ activo: boolean
+ fechaCreacion: string
+ fechaModificacion: string | null
+}
+
+export interface PuntoDeVentaCreated {
+ id: number
+ medioId: number
+ numeroAFIP: number
+ nombre: string
+ activo: boolean
+}
+
+export interface CreatePuntoDeVentaRequest {
+ medioId: number
+ numeroAFIP: number
+ nombre: string
+}
+
+export interface UpdatePuntoDeVentaRequest {
+ nombre: string
+ numeroAFIP: number
+}
+
+export interface PuntosDeVentaQuery {
+ page?: number
+ pageSize?: number
+ medioId?: number
+ activo?: boolean
+}
+
+export interface PagedResult