Pimia
DocumentaciónFrontendIntegracionesAPI ReferenceKnowledge BaseChangelog
PantallasVenta y cobros

Nuevo presupuesto

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

Ruta y puntos de edición

Ruta: /pimia/presupuestos/nuevo. 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

Nuevo presupuesto 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/presupuestos/nuevo/page.tsx
Adaptador Next.jssrc/host/screens/PimiaEstimateScreens.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaEstimateEditorScreen.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaScreenShell.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaStates.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaPageHeader.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaEstimateRecipientField.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaEstimateFormatFields.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaInvoiceLineRow.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaConnectDialog.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaCustomerCombobox.tsx
Vista o componente asociadosrc/features/pimia/ui/PimiaLeadCombobox.tsx

PimiaEstimateEditorScreen

Fuente: src/features/pimia/ui/PimiaEstimateEditorScreen.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
FechaInputestimateDatetype=date705
Válido hastaInputexpiryDatetype=date715
Notas del presupuestoTextareanotesdisabled=tieneImpuestosDeCabecera857
Descuento del totalInputdiscountValuedisabled=tieneImpuestosDeCabecera883

Acciones

Rótulo literalHandler o envíoDeshabilitado cuandoLínea
Cancelar() => void goPimiaPath(ESTIMATES_PATH)No declarado en este nodo597
Rótulo dinámico / iconosubmit del formulario!canSubmit604
Añadir línea() => setLines((current) => [ ...current, // Con el catálogo ya en pantalla, la línea añadida nace con el // predeterminado puesto (P1-4). { ...emptyLine((current.at(-1)?.id ?? 0) + 1), ...taxDefaults }, ])tieneImpuestosDeCabecera824
discountType === "percentage" ? "Descuento del total en porcentaje. Cambiar a euros" : "Descuento del total en euros. Cambiar a porcentaje"() => setDiscountType( discountType === "percentage" ? "fixed" : "percentage", )tieneImpuestosDeCabecera893

Estados reutilizados

  • PimiaErrorState
  • PimiaRowsSkeleton

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, bg-destructive/5, text-sm, text-destructive, bg-warning/5, text-foreground, text-muted-foreground, gap-4, md:grid-cols-2, overflow-x-auto, overflow-y-hidden, text-right, text-xs, bg-muted/30, text-base.

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.

PimiaEstimateRecipientField

Fuente: src/features/pimia/ui/PimiaEstimateRecipientField.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
Cliente del presupuestoPimiaCustomerComboboxcustomerIdNo declaradas en este nodo128
Oportunidad del presupuestoPimiaLeadComboboxleadIdNo declaradas en este nodo149

Acciones

Rótulo literalHandler o envíoDeshabilitado cuandoLínea
Rótulo dinámico / icono() => onKindChange(value)No declarado en este nodo110

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, p-0.5, text-xs, bg-muted/30, text-sm, text-muted-foreground.

PimiaEstimateFormatFields

Fuente: src/features/pimia/ui/PimiaEstimateFormatFields.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 resolubleSelectseriesId === null ? "none" : String(seriesId)No declaradas en este nodo67
Sin etiqueta literal resolubleSelecttemplateName ?? "none"No declaradas en este nodo99

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.

PimiaInvoiceLineRow

Fuente: src/features/pimia/ui/PimiaInvoiceLineRow.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
`Concepto de la línea ${position}`Inputline.namedisabled=disabled242
`Cantidad de la línea ${position}`Inputline.quantitydisabled=disabled285
Sin etiqueta literal resolubleSelectline.unitName ?? NONEdisabled=disabled298
`Precio de la línea ${position}`Inputline.pricedisabled=disabled324
`Descuento de la línea ${position}`Inputdiscount.valuedisabled=disabled339
Sin etiqueta literal resolubleSelectline.vatTaxTypeId === null ? NONE : String(line.vatTaxTypeId)disabled=disabled377
Sin etiqueta literal resolubleSelectline.withholdingTaxTypeId === null ? NONE : String(line.withholdingTaxTypeId)disabled=disabled410

Acciones

Rótulo literalHandler o envíoDeshabilitado cuandoLínea
discount.type === "percentage" ? `Descuento de la línea ${position} en porcentaje. Cambiar a euros` : `Descuento de la línea ${position} en euros. Cambiar a porcentaje`() => discount.onTypeChange( discount.type === "percentage" ? "fixed" : "percentage", )disabled352
`Quitar la línea ${position}`onRemovedisabled || !canRemove448
linked === null ? `Enlazar la línea ${position} con un artículo` : `Línea ${position} enlazada con ${linked.name}. Cambiar o desenlazar`delegado al contenedordisabled491

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-2xs, text-muted-foreground, gap-1, text-xs, text-right, text-sm, p-0.

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.

PimiaCustomerCombobox

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

Acciones

Rótulo literalHandler o envíoDeshabilitado cuandoLínea
labeldelegado al contenedordisabled87

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, p-0, text-xs.

PimiaLeadCombobox

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

Acciones

Rótulo literalHandler o envíoDeshabilitado cuandoLínea
labeldelegado al contenedordisabled82

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, p-0, text-xs.

Hooks, adaptadores y utilidades relacionados

  • src/features/pimia/api/auth.ts
  • src/features/pimia/api/customers.ts
  • src/features/pimia/api/documentTemplates.ts
  • src/features/pimia/api/estimateEditor.ts
  • src/features/pimia/api/estimates.ts
  • src/features/pimia/api/items.ts
  • src/features/pimia/api/leads.ts
  • src/features/pimia/api/pimiaClient.ts
  • src/features/pimia/api/taxTypes.ts
  • src/features/pimia/api/units.ts
  • src/features/pimia/hooks/usePimiaAuth.ts
  • src/features/pimia/hooks/usePimiaLeads.ts
  • src/features/pimia/hooks/usePimiaResources.ts
  • src/features/pimia/lib/calendar.ts
  • src/features/pimia/lib/closedDoors.ts
  • src/features/pimia/lib/deliveryNotes.ts
  • src/features/pimia/lib/invoiceDraft.ts
  • src/features/pimia/lib/missingRecord.ts
  • src/features/pimia/lib/money.ts
  • src/features/pimia/lib/plegarTexto.ts
  • src/features/pimia/lib/scopeDenial.ts
  • src/features/pimia/lib/taxTypes.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