Pimia
DocumentaciónFrontendIntegracionesAPI ReferenceKnowledge BaseChangelog
PantallasCatálogo y almacén

Artículos

Ruta /pimia/articulos · componentes, campos y acciones del checkout documentado.

Ruta y puntos de edición

Ruta: /pimia/articulos. Revisión: 2aec1b16cc01.

Esta ficha procede de lectura estática del código. Los componentes asociados pueden incluir diálogos cerrados y bloques condicionales. Las expresiones dinámicas se conservan como código; no equivalen a campos siempre visibles ni a permisos concedidos.

Vista en el tenant de referencia

Artículos en Pimia

Captura de escritorio del tenant de demostración Reformas Vera, S.L., tomada el 10 de septiembre de 2026. Los datos ilustran la composición de la pantalla y pueden cambiar.

CapaArchivo relativo al repositorio
Rutasrc/app/pimia/articulos/page.tsx
Adaptador Next.jssrc/host/screens/PimiaItemScreens.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaItemsScreen.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaStates.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaScreenShell.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaPageHeader.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaFilterBar.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaTablePanel.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaPagination.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaSortableHead.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaItemStockCell.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaItemMovementsSheet.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaItemDialog.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaConnectDialog.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaStockAdjustmentDialog.tsx

PimiaItemsScreen

Fuente: src/features/pimia/ui/PimiaItemsScreen.tsx.

Campos y controles

La columna «Reglas JSX» recoge propiedades explícitas; la validación adicional vive en los helpers y en el servidor. El enlace de estado indica dónde se lee el valor.

Etiqueta o pistaControlEnlace de estadoReglas JSXLínea
BuscarInputsearchNo declaradas en este nodo262
Sin etiqueta literal resolubleSelectitemTypeNo declaradas en este nodo276
Sin etiqueta literal resolubleSelectcategoryIdNo declaradas en este nodo298

Columnas declaradas

  • Categoría
  • Existencias
  • Margen
  • Acciones

Acciones

Rótulo literalHandler o envíoDeshabilitado cuandoLínea
Nuevo artículoopenNewNo declarado en este nodo249
Dar de alta el primeroopenNewNo declarado en este nodo355
`Movimientos de ${item.name}`() => setMovementsOf({ id: item.id, name: item.name })No declarado en este nodo482
`Editar ${item.name}`() => openEdit(item)No declarado en este nodo496
`Borrar ${item.name}`() => { setDeleteError(null); setToDelete(item); }No declarado en este nodo505
Borrar(event) => { event.preventDefault(); void confirmDelete(); }remove.isPending585

Estados reutilizados

  • PimiaNotConnected
  • PimiaRowsSkeleton
  • PimiaErrorState
  • PimiaEmpty

Clases de presentación locales

Selección de clases literales; las clases condicionales y los estilos de los primitivos se consultan en el archivo.

gap-1.5, bg-warning/10, text-sm, text-foreground, bg-muted/40, text-muted-foreground, text-right, gap-2, text-xs, gap-1, text-destructive.

PimiaStates

Fuente: src/features/pimia/ui/PimiaStates.tsx.

Acciones

Rótulo literalHandler o envíoDeshabilitado cuandoLínea
Conectar una empresa() => setIsConnectOpen(true)No declarado en este nodo99
Rótulo dinámico / icono() => void goPimiaPath(notFound.listPath)No declarado en este nodo233
Rótulo dinámico / iconodelegado al contenedorNo declarado en este nodo247
Rótulo dinámico / icono() => void goPimiaPath( closedDoor.action?.kind === "plan" ? PLAN_PATH : MODULES_SETTINGS_PATH, )No declarado en este nodo257
Volver a conectar() => setIsConnectOpen(true)No declarado en este nodo273
ReintentaronRetryNo declarado en este nodo279

Clases de presentación locales

Selección de clases literales; las clases condicionales y los estilos de los primitivos se consultan en el archivo.

gap-4, p-8, text-center, text-base, text-foreground, text-sm, text-muted-foreground, gap-2, overflow-hidden, bg-muted/40.

PimiaFilterBar

Fuente: src/features/pimia/ui/PimiaFilterBar.tsx.

Campos y controles

La columna «Reglas JSX» recoge propiedades explícitas; la validación adicional vive en los helpers y en el servidor. El enlace de estado indica dónde se lee el valor.

Etiqueta o pistaControlEnlace de estadoReglas JSXLínea
searchLabel ?? searchPlaceholderInputsearchValue ?? ""No declaradas en este nodo56

Clases de presentación locales

Selección de clases literales; las clases condicionales y los estilos de los primitivos se consultan en el archivo.

text-muted-foreground, gap-2.

PimiaPagination

Fuente: src/features/pimia/ui/PimiaPagination.tsx.

Campos y controles

La columna «Reglas JSX» recoge propiedades explícitas; la validación adicional vive en los helpers y en el servidor. El enlace de estado indica dónde se lee el valor.

Etiqueta o pistaControlEnlace de estadoReglas JSXLínea
Sin etiqueta literal resolubleSelectString(pageSize)No declaradas en este nodo82

Acciones

Rótulo literalHandler o envíoDeshabilitado cuandoLínea
Anterior() => onPageChange(Math.max(1, page - 1))page <= 1 || isBusy104
Siguiente() => onPageChange(page + 1)page >= lastPage || isBusy115

Clases de presentación locales

Selección de clases literales; las clases condicionales y los estilos de los primitivos se consultan en el archivo.

gap-3, text-xs, text-muted-foreground, gap-2.

PimiaSortableHead

Fuente: src/features/pimia/ui/PimiaSortableHead.tsx.

Acciones

Rótulo literalHandler o envíoDeshabilitado cuandoLínea
Rótulo dinámico / icono() => onSortChange({ direction: isActive && sort.direction === "desc" ? "asc" : ("desc" as const), field, })No declarado en este nodo61

PimiaItemMovementsSheet

Fuente: src/features/pimia/ui/PimiaItemMovementsSheet.tsx.

Columnas declaradas

  • Fecha
  • Motivo
  • Cantidad
  • Saldo

Acciones

Rótulo literalHandler o envíoDeshabilitado cuandoLínea
Rótulo dinámico / icono() => { onClose(); goPimiaPath(destino.path); }No declarado en este nodo237
Ajustar existencias() => setAjusteAbierto(true)No declarado en este nodo270
Rótulo dinámico / icono() => void goPimiaPath(documento.path)No declarado en este nodo340

Estados reutilizados

  • PimiaRowsSkeleton
  • PimiaErrorState
  • PimiaEmpty

Clases de presentación locales

Selección de clases literales; las clases condicionales y los estilos de los primitivos se consultan en el archivo.

overflow-y-auto, bg-muted/40, text-xs, text-foreground, gap-4, text-sm, text-muted-foreground, text-destructive, hover:text-foreground, overflow-x-auto, text-right, p-0.

PimiaItemDialog

Fuente: src/features/pimia/ui/PimiaItemDialog.tsx.

Campos y controles

La columna «Reglas JSX» recoge propiedades explícitas; la validación adicional vive en los helpers y en el servidor. El enlace de estado indica dónde se lee el valor.

Etiqueta o pistaControlEnlace de estadoReglas JSXLínea
NombreInputdraft.namemaxLength=255125
Sin etiqueta literal resolubleSelectdraft.itemTypeNo declaradas en este nodo139
Sin etiqueta literal resolubleSelectdraft.categoryId === "" ? NINGUNA : draft.categoryIdNo declaradas en este nodo161
Sin etiqueta literal resolubleSelectdraft.unitId === "" ? NINGUNA : draft.unitIdNo declaradas en este nodo183
Precio de venta (€)Inputdraft.priceNo declaradas en este nodo205
Precio de compra (€)Inputdraft.purchasePriceNo declaradas en este nodo222
Descuento (%)Inputdraft.defaultDiscountNo declaradas en este nodo235
ReferenciaInputdraft.skumaxLength=100248
Referencia del proveedorInputdraft.supplierReferencemaxLength=100260
ExistenciasInputdraft.openingStockNo declaradas en este nodo275
Mínimo de stockInputdraft.stockAlertQtyNo declaradas en este nodo296
Permitir venta sin stockSwitchdraft.allowSaleWithoutStockNo declaradas en este nodo317
DescripciónTextareadraft.descriptionNo declaradas en este nodo329
ActivoSwitchdraft.isActiveNo declaradas en este nodo346

Acciones

Rótulo literalHandler o envíoDeshabilitado cuandoLínea
Cancelar() => props.onOpenChange(false)No declarado en este nodo377
Rótulo dinámico / iconosubmitprops.isSaving384

Clases de presentación locales

Selección de clases literales; las clases condicionales y los estilos de los primitivos se consultan en el archivo.

overflow-y-auto, gap-4, sm:grid-cols-3, text-xs, text-muted-foreground, sm:grid-cols-2, gap-3, p-3, text-sm, text-destructive.

PimiaConnectDialog

Fuente: src/features/pimia/ui/PimiaConnectDialog.tsx.

Campos y controles

La columna «Reglas JSX» recoge propiedades explícitas; la validación adicional vive en los helpers y en el servidor. El enlace de estado indica dónde se lee el valor.

Etiqueta o pistaControlEnlace de estadoReglas JSXLínea
Tu empresaInputbaseUrldisabled=connect.isPending114

Acciones

Rótulo literalHandler o envíoDeshabilitado cuandoLínea
Cancelar() => handleOpenChange(false)No declarado en este nodo155
Rótulo dinámico / iconosubmit del formulario!canSubmit162

Clases de presentación locales

Selección de clases literales; las clases condicionales y los estilos de los primitivos se consultan en el archivo.

text-sm, text-foreground, gap-2, text-muted-foreground, text-xs, text-destructive.

PimiaStockAdjustmentDialog

Fuente: src/features/pimia/ui/PimiaStockAdjustmentDialog.tsx.

Campos y controles

La columna «Reglas JSX» recoge propiedades explícitas; la validación adicional vive en los helpers y en el servidor. El enlace de estado indica dónde se lee el valor.

Etiqueta o pistaControlEnlace de estadoReglas JSXLínea
CantidadInputdraft.quantityNo declaradas en este nodo138
Sin etiqueta literal resolubleSelectwarehouseIdNo declaradas en este nodo164
MotivoInputdraft.notemaxLength=255190

Acciones

Rótulo literalHandler o envíoDeshabilitado cuandoLínea
Cancelar() => onOpenChange(false)No declarado en este nodo211
Ajustarsubmit del formularioajustar.isPending218

Clases de presentación locales

Selección de clases literales; las clases condicionales y los estilos de los primitivos se consultan en el archivo.

text-xs, text-muted-foreground, text-sm, text-destructive.

Hooks, adaptadores y utilidades relacionados

  • src/features/pimia/api/auth.ts
  • src/features/pimia/api/itemCategories.ts
  • src/features/pimia/api/items.ts
  • src/features/pimia/api/pimiaClient.ts
  • src/features/pimia/api/units.ts
  • src/features/pimia/hooks/usePimiaArticulos.ts
  • src/features/pimia/hooks/usePimiaAuth.ts
  • src/features/pimia/hooks/usePimiaResources.ts
  • src/features/pimia/lib/closedDoors.ts
  • src/features/pimia/lib/items.ts
  • src/features/pimia/lib/missingRecord.ts
  • src/features/pimia/lib/money.ts
  • src/features/pimia/lib/pagination.ts
  • src/features/pimia/lib/scopeDenial.ts
  • src/features/pimia/lib/stockCommitments.ts
  • src/features/pimia/lib/stockMovements.ts
  • src/features/pimia/lib/warehouses.ts

Antes de entregar un retoque

  • Revisa los archivos de formulario y sus helpers antes de cambiar tipos, obligatoriedad o valores iniciales.
  • Prueba carga, error, vacío, permisos insuficientes y guardado pendiente en las variantes que usa esta pantalla.
  • Comprueba escritorio, móvil, teclado, tema oscuro y scroll con suficientes filas.
  • Conserva los handlers y la invalidación de datos al modificar la presentación.

En esta página