Pimia
DocumentaciónFrontendIntegracionesAPI ReferenceKnowledge BaseChangelog
PantallasVenta y cobros

Factura

Ruta /pimia/facturas/[invoiceId] · componentes, campos y acciones del checkout documentado.

Ruta y puntos de edición

Ruta: /pimia/facturas/[invoiceId]. 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

Factura 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/facturas/[invoiceId]/page.tsx
Adaptador Next.jssrc/host/screens/PimiaInvoiceScreens.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaInvoiceScreen.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaAmountCell.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/PimiaInvoiceActions.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaStatusBadge.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaInvoiceVeriFactu.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaInvoiceDocument.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaDocumentParts.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaConnectDialog.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaCompanyDialog.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaInvoiceSendDialog.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaInvoicePaymentDialog.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaAddressFields.tsx

PimiaInvoiceScreen

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

Acciones

Rótulo literalHandler o envíoDeshabilitado cuandoLínea
Ver el recibo() => void goPimiaPayment(payment.id)No declarado en este nodo263
Rótulo dinámico / icono() => void goPimiaInvoice(creditNote.id)No declarado en este nodo292
Ver el cliente() => void goPimiaCustomer(invoice.customerId as string)No declarado en este nodo619
Ver la factura rectificada() => void goPimiaInvoice( invoice.rectifiedInvoiceId as string, )No declarado en este nodo644
Facturas() => void goPimiaPath("/pimia/facturas")No declarado en este nodo661
Volver a facturas() => void goPimiaPath("/pimia/facturas")No declarado en este nodo751

Estados reutilizados

  • PimiaNotConnected
  • 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-x-4, gap-y-1, text-muted-foreground, text-foreground, text-xs, text-primary, text-left, hover:bg-muted, p-4, sm:p-5, text-sm, overflow-hidden, bg-card, text-lg, text-center, bg-muted, p-6, gap-x-3, gap-y-1.5.

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.

PimiaInvoiceActions

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

Acciones

Rótulo literalHandler o envíoDeshabilitado cuandoLínea
Rótulo dinámico / icono() => { if (primary === "publish") { pedirEmision("publish"); } else if (primary === "send") { pedirEmision("send"); } else { requestPayment(); } }isBusy356
`Acciones de ${invoice.invoiceNumber ?? "la factura sin numerar"}`delegado al contenedorisBusy391
Editar() => void goPimiaPath( `/pimia/facturas/${encodeURIComponent(invoice.id)}/editar`, )No declarado en este nodo409
Publicar() => pedirEmision("publish")No declarado en este nodo421
Rótulo dinámico / icono() => pedirEmision("send")No declarado en este nodo426
Marcar como enviada() => pedirEmision("markSent")No declarado en este nodo436
Registrar cobrorequestPaymentNo declarado en este nodo444
Crear rectificativa() => setConfirmation("creditNote")No declarado en este nodo454
Duplicar() => setConfirmation("clone")No declarado en este nodo459
Descargar el PDF() => void handlePdf()No declarado en este nodo467
Copiar el enlace para el cliente() => void handleCopyLink()No declarado en este nodo478
Publicar() => void handlePublish()No declarado en este nodo509
Marcar como enviada() => void handleMarkSent()No declarado en este nodo539
Duplicar() => void handleClone()No declarado en este nodo558
Crear rectificativa() => void handleCreditNote()No declarado en este nodo584
Volver a conectar() => { setConfirmation(null); setIsReconnectOpen(true); }No declarado en este nodo604
Rellenar los datos de mi empresa() => { setConfirmation(null); setIsCompanyOpen(true); }No declarado en este nodo634

PimiaInvoiceVeriFactu

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

Acciones

Rótulo literalHandler o envíoDeshabilitado cuandoLínea
Reintentar el registro() => void handleRetry()isBusy231
Sincronizar() => void handleSync()isBusy244
Sincronizar() => void handleSync()isBusy269
Verificar en la sede de la AEAT() => void handleQr()No declarado en este nodo318

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, text-2xs, text-muted-foreground, text-right, text-xs, text-foreground, p-4, sm:p-5, gap-2, text-destructive, text-sm, overflow-auto, bg-background/60, p-2.

PimiaInvoiceDocument

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

Columnas declaradas

  • Concepto
  • Importe

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-base, text-foreground, text-muted-foreground, gap-x-6, gap-y-2, text-2xs, text-lg, text-2xl, grid-cols-1, gap-5, sm:grid-cols-3, bg-primary, gap-7, xl:grid-cols-2, overflow-x-auto, text-left, text-sm, gap-2.

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.

PimiaCompanyDialog

Fuente: src/features/pimia/ui/PimiaCompanyDialog.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
Razón socialInputform.namerequired=true182
Nombre comercialInputform.tradeNameNo declaradas en este nodo205
NIF / CIFInputform.taxIdNo declaradas en este nodo219
CorreoInputform.emailtype=email249
TeléfonoInputform.phoneNo declaradas en este nodo265
Sin etiqueta literal resolubleSelectform.address.countryIdNo declaradas en este nodo292

Acciones

Rótulo literalHandler o envíoDeshabilitado cuandoLínea
Cancelar() => onOpenChange(false)No declarado en este nodo349
Guardarsubmit del formulario!puedeGuardar356

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, text-sm, text-foreground, text-xs, text-muted-foreground, grid-cols-1, gap-4, sm:grid-cols-2, text-destructive.

PimiaInvoiceSendDialog

Fuente: src/features/pimia/ui/PimiaInvoiceSendDialog.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
ParaInputtotype=email190
AsuntoInputsubjectNo declaradas en este nodo204
MensajetextareabodyNo declaradas en este nodo216

Acciones

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

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-2.5, bg-destructive/10, text-sm, text-foreground, text-destructive, bg-muted/40, text-muted-foreground, gap-1.5, text-2xs, bg-background, text-xs.

PimiaInvoicePaymentDialog

Fuente: src/features/pimia/ui/PimiaInvoicePaymentDialog.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
Importe cobradoInputamountNo declaradas en este nodo198
Fecha del cobroInputdatetype=date243
Sin etiqueta literal resolubleSelectmethodIdNo declaradas en este nodo272

Acciones

Rótulo literalHandler o envíoDeshabilitado cuandoLínea
Cancelar() => onOpenChange(false)No declarado en este nodo307
Registrar cobrosubmit del formulario!canRecord314

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, text-2xs, text-muted-foreground, text-xs, text-destructive, text-sm.

PimiaAddressFields

Fuente: src/features/pimia/ui/PimiaAddressFields.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
A nombre deInputform.nameNo declaradas en este nodo70
DirecciónInputform.street1No declaradas en este nodo79
Segunda líneaInputform.street2No declaradas en este nodo89
Código postalInputform.zipNo declaradas en este nodo99
CiudadInputform.cityNo declaradas en este nodo108
ProvinciaInputform.stateNo declaradas en este nodo116
Teléfono de esta direcciónInputform.phoneNo declaradas en este nodo126

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, grid-cols-1, gap-4, sm:grid-cols-3.

Hooks, adaptadores y utilidades relacionados

  • src/features/pimia/api/auth.ts
  • src/features/pimia/api/company.ts
  • src/features/pimia/api/estimates.ts
  • src/features/pimia/api/invoiceSharedLink.ts
  • src/features/pimia/api/invoices.ts
  • src/features/pimia/api/pimiaClient.ts
  • src/features/pimia/api/shell.ts
  • src/features/pimia/hooks/usePimiaAuth.ts
  • src/features/pimia/hooks/usePimiaCorreo.ts
  • src/features/pimia/hooks/usePimiaEmpresa.ts
  • src/features/pimia/hooks/usePimiaResources.ts
  • src/features/pimia/hooks/usePimiaVerifactuConfig.ts
  • src/features/pimia/lib/calendar.ts
  • src/features/pimia/lib/closedDoors.ts
  • src/features/pimia/lib/companyDraft.ts
  • src/features/pimia/lib/documentActivity.ts
  • src/features/pimia/lib/documentSeries.ts
  • src/features/pimia/lib/invoiceIssuer.ts
  • src/features/pimia/lib/invoices.ts
  • src/features/pimia/lib/mailConfig.ts
  • src/features/pimia/lib/missingRecord.ts
  • src/features/pimia/lib/money.ts
  • src/features/pimia/lib/payments.ts
  • src/features/pimia/lib/pdfPropio.ts
  • src/features/pimia/lib/scopeDenial.ts
  • src/features/pimia/lib/taxes.ts
  • src/features/pimia/lib/verifactuPublicacion.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