FactuGES_ERP/modules/customer-invoices/src/common/locales/es.json
david 26e2ee59bd feat: add error handling and feedback state management for customer and proforma updates
- Implemented feedback state resolution for proforma list and update pages.
- Created error view models for proforma and customer updates, including handling for various error types.
- Added tests for error handling in proforma and customer list updates.
- Introduced utility functions for building error view models and resolving feedback states.
- Ensured translation support for error messages in Spanish.
- Removed duplicate error alert components in customer module.
2026-08-06 13:03:48 +02:00

734 lines
28 KiB
JSON

{
"common": {
"more_actions": "Más acciones",
"append_empty_row": "Añadir fila",
"append_empty_row_tooltip": "Añadir una fila vacía",
"edit_row": "Modificar",
"duplicate_row": "Duplicar",
"duplicate_selected_rows": "Duplicar",
"duplicate_selected_rows_tooltip": "Duplicar fila(s) seleccionada(s)",
"remove_selected_rows": "Eliminar",
"remove_selected_rows_tooltip": "Eliminar fila(s) seleccionada(s)",
"download_pdf": "Descargar en PDF",
"send_email": "Enviar por email",
"insert_row_above": "Insertar fila arriba",
"insert_row_below": "Insertar fila abajo",
"delete_row": "Eliminar",
"actions": "Acciones",
"rows_selected": "{{count}} fila(s) seleccionadas.",
"rows_selected_of_total": "{{count}} de {{total}} fila(s) seleccionadas.",
"search_placeholder": "Escribe aquí para buscar...",
"search": "Buscar",
"clear": "Limpiar"
},
"catalog": {
"proformas": {
"status": {
"all": {
"label": "Todas",
"description": ""
},
"draft": {
"label": "Borrador",
"description": "Proforma en preparación"
},
"sent": {
"label": "Enviada",
"description": "Enviada al cliente"
},
"approved": {
"label": "Aprobada",
"description": "Aprobada por el cliente"
},
"rejected": {
"label": "Rechazada",
"description": "Rechazada por el cliente"
},
"issued": {
"label": "Emitida",
"description": "Convertida a factura"
}
}
},
"issued_invoices": {
"status": {
"all": {
"label": "All",
"description": "Proforma en preparación"
},
"pendiente": {
"label": "Pendiente",
"description": "Registro encolado y no procesado aún"
},
"correcto": {
"label": "Correcto",
"description": "Registro procesado correctamente por la AEAT"
},
"aceptado_con_error": {
"label": "Aceptado con errores",
"description": "Registro aceptado con errores por la AEAT. Se requiere enviar un registro de subsanación o emitir una rectificativa"
},
"incorrecto": {
"label": "Incorrecto",
"description": "Registro considerado incorrecto por la AEAT. Se requiere enviar un registro de subsanación con rechazo_previo=S o rechazo_previo=X o emitir una rectificativa"
},
"duplicado": {
"label": "Duplicado",
"description": "Registro no aceptado por la AEAT por existir un registro con el mismo (serie, numero, fecha_expedicion)"
},
"anulado": {
"label": "Anulado",
"description": "Registro de anulación procesado correctamente por la AEAT"
},
"factura_inexistente": {
"label": "Factura inexistente",
"description": "Registro de anulación no aceptado por la AEAT por no existir la factura"
},
"rechazado": {
"label": "No registrado",
"description": "Registro rechazado por la AEAT"
},
"error": {
"label": "Error",
"description": "Error en el servidor de la AEAT. Se intentará reenviar el registro de facturación de nuevo"
}
}
}
},
"proformas": {
"archive": {
"confirm_title": "Archivar proforma",
"confirm_description": "La proforma se ocultará del listado principal, pero seguirá conservada para consulta histórica.",
"confirm": "Archivar",
"cancel": "Cancelar",
"submitting": "Archivando...",
"success_title": "Proforma archivada",
"success_description": "La proforma se ha archivado correctamente.",
"error_title": "No se pudo archivar la proforma",
"error_conflict_message": "No se puede archivar una proforma en este estado.",
"error_unknown_message": "Ha ocurrido un error inesperado al archivar la proforma."
},
"unarchive": {
"confirm_title": "Desarchivar proforma",
"confirm_description": "La proforma volverá a aparecer en el listado principal.",
"confirm": "Desarchivar",
"cancel": "Cancelar",
"submitting": "Desarchivando...",
"success_title": "Proforma desarchivada",
"success_description": "La proforma se ha desarchivado correctamente.",
"error_title": "No se pudo desarchivar la proforma",
"error_conflict_message": "No se puede desarchivar una proforma en este estado.",
"error_unknown_message": "Ha ocurrido un error inesperado al desarchivar la proforma."
},
"issue_proforma_dialog": {
"title": "Emitir a factura",
"description": "¿Seguro que quieres emitir la factura desde la proforma {{reference}}?",
"warning": "Esta acción creará una nueva factura definitiva y la proforma pasará al estado \"Emitida\", no pudiendo modificarse ni eliminarse posteriormente.",
"confirm": "Emitir factura",
"submitting": "Emitiendo...",
"success_title": "Proforma emitida correctamente",
"success_description": "La proforma {{reference}} se ha emitido a factura correctamente.",
"error_title": "Error al emitir la proforma",
"not_allowed_title": "Acción no permitida",
"not_allowed_description": "Solo se pueden emitir proformas en estado \"Aprobada\".",
"unknown_error": "Ha ocurrido un error inesperado",
"cancel": "Cancelar"
},
"delete_proforma_dialog": {
"single_title": "Eliminar proforma",
"single_description": "Se eliminará la proforma. Su referencia no se reutilizará.",
"archived_single_title": "Eliminar proforma archivada",
"archived_single_description": "Se eliminará la proforma en borrador. Su referencia no se reutilizará.",
"multiple_title": "Eliminar proformas",
"multiple_description": "Se eliminarán {{count}} proformas draft. Sus referencias no se reutilizarán.",
"warning": "Esta acción no elimina facturas emitidas ni reutiliza numeración.",
"archived_warning": "Esta acción no borra físicamente sus datos, pero dejará de estar disponible en los listados operativos.",
"confirm_delete": "Confirmar eliminación",
"deleting": "Eliminando...",
"cancel": "Cancelar",
"list_item": "Proforma {{reference}}",
"success_title": "Proforma eliminada",
"success_single_message": "La proforma {{reference}} se ha eliminado correctamente.",
"success_multiple_message": "Se han eliminado {{count}} proformas correctamente.",
"error_title": "No se pudo eliminar la proforma",
"error_single_message": "La proforma seleccionada no se ha podido eliminar.",
"error_multiple_message": "{{count}} proformas no se han podido eliminar.",
"error_conflict_message": "Solo se pueden eliminar proformas en borrador.",
"error_not_found_message": "La proforma ya no existe o no está disponible."
},
"change_proforma_status_dialog": {
"title": "Cambiar estado de la proforma",
"single_description": "Selecciona el nuevo estado para la proforma {{reference}}.",
"multiple_description": "Selecciona el nuevo estado para {{count}} proformas seleccionadas.",
"empty_available_statuses": "No hay transiciones de estado disponibles para las proformas seleccionadas.",
"cancel": "Cancelar",
"confirm": "Cambiar estado",
"submitting": "Cambiando...",
"success_title": "Estado actualizado correctamente",
"success_single_description": "La proforma {{reference}} ha cambiado de estado correctamente.",
"success_multiple_description": "Se ha actualizado el estado de {{count}} proformas.",
"error_title": "Error al cambiar el estado",
"error_single_description": "No se ha podido cambiar el estado de la proforma seleccionada.",
"error_multiple_description": "No se ha podido cambiar el estado de {{count}} proformas.",
"error_unexpected_description": "Ha ocurrido un error inesperado.",
"legend": {
"current": "Estado actual",
"available": "Estados disponibles",
"unavailable": "Estados no disponibles"
}
},
"duplicate": {
"success_title": "Proforma duplicada",
"success_description": "La proforma se ha duplicado correctamente.",
"success_with_reference": "Proforma duplicada como {{reference}}.",
"error_title": "No se pudo duplicar la proforma",
"error_not_found_message": "La proforma ya no existe o no está disponible.",
"error_unknown_message": "Ha ocurrido un error inesperado al duplicar la proforma."
},
"detail": {
"header": {
"title": "Proforma {{reference}}",
"archived_label": "Archivada"
},
"document": {
"title": "Documento",
"description": "Vista previa del PDF generado de la proforma.",
"error": "No se pudo cargar el PDF.",
"error_title": "No se pudo cargar la vista previa",
"loading": "Cargando documento...",
"refreshing": "Actualizando documento...",
"retry": "Reintentar",
"empty_title": "Documento no disponible",
"empty_description": "El PDF de la proforma todavía no está disponible para mostrarse.",
"actions": {
"open": "Abrir PDF",
"download": "Descargar PDF",
"print": "Imprimir PDF",
"zoom_in": "Acercar",
"zoom_out": "Alejar",
"zoom_select": "Seleccionar zoom",
"fit": "Ajustar"
}
},
"page_error": {
"actions": {
"retry": "Reintentar",
"back_to_list": "Volver al listado",
"go_back": "Volver"
},
"notFound": {
"title": "Proforma no encontrada",
"description": "La proforma ya no existe o no está disponible."
},
"forbidden": {
"title": "No tienes acceso a esta proforma",
"description": "No dispones de permisos para consultar este documento."
},
"network": {
"title": "No se pudo conectar con el servidor",
"description": "Comprueba tu conexión e inténtalo de nuevo."
},
"timeout": {
"title": "La carga está tardando demasiado",
"description": "El servidor no respondió dentro del tiempo esperado."
},
"server": {
"title": "No se pudo cargar la proforma",
"description": "Se produjo un error interno mientras se recuperaba la proforma."
},
"unavailable": {
"title": "Servicio temporalmente no disponible",
"description": "El servicio de proformas no está disponible en este momento."
},
"unknown": {
"title": "No se pudo cargar la proforma",
"description": "Ha ocurrido un error inesperado al cargar la proforma."
}
},
"regions": {
"document": "Documento",
"details": "Detalles"
},
"customer": {
"unknown": "Cliente sin nombre"
},
"sections": {
"summary": "Resumen",
"customer": "Cliente",
"dates": "Fechas",
"commercial": "Condiciones comerciales",
"fiscal": "Fiscalidad",
"content": "Descripción y notas",
"linked_invoice": "Documento relacionado"
},
"section_descriptions": {
"summary": "Datos operativos principales de la proforma.",
"customer": "",
"dates": "Fechas disponibles en el contrato actual del detalle.",
"commercial": "Método, plazo y referencias comerciales configuradas.",
"fiscal": "Resumen fiscal y desglose preparado desde el ViewModel.",
"content": "Contenido textual asociado a la proforma.",
"linked_invoice": "Estado actual de la relación Proforma -> Factura."
},
"fields": {
"total": "Total",
"reference": "Número de proforma",
"status": "Estado",
"currency": "Moneda",
"lines": "Líneas",
"units": "Unidades",
"global_discount": "Descuento global",
"customer_tin": "NIF",
"address": "Dirección",
"proforma_date": "Fecha de proforma",
"operation_date": "Fecha de operación",
"payment_method": "Método de pago",
"payment_term": "Plazo de pago",
"language": "Idioma",
"internal_reference": "Referencia interna",
"tax_regime": "Régimen fiscal",
"tax_mode": "Modo fiscal",
"subtotal": "Subtotal",
"discount": "Descuento",
"taxable_base": "Base imponible",
"tax": "Impuesto",
"rec": "Recargo de equivalencia",
"retention": "Retención",
"tax_breakdown": "Desglose fiscal",
"description": "Descripción",
"notes": "Notas",
"linked_invoice_id": "Identificador de factura vinculada"
},
"empty": {
"no_address": "Sin dirección registrada.",
"not_available": "—",
"no_description": "Sin descripción.",
"no_notes": "Sin notas."
},
"actions": {
"open_customer": "Ver cliente",
"disabled_reasons": {
"edit_archived": "Las proformas archivadas deben desarchivarse antes de editarse.",
"status_archived": "Desarchiva la proforma para poder cambiar su estado."
}
},
"fiscal": {
"unknown_tax_code": "Impuesto",
"tax_mode": {
"single": "Impuesto único",
"perLine": "Impuestos por línea"
}
},
"linked_invoice": {
"states": {
"not-issued": {
"title": "Pendiente de emitir",
"description": "La proforma todavía no se ha convertido en factura."
},
"ready-to-issue": {
"title": "Lista para emitir",
"description": "Puede convertirse en factura desde la cabecera."
},
"issued-without-link": {
"title": "Emitida",
"description": "No se ha recibido una referencia a la factura vinculada."
},
"issued-linked-without-detail-route": {
"title": "Factura emitida",
"description": "La factura vinculada existe, pero su detalle individual todavía no está disponible en esta aplicación."
}
}
}
}
},
"pages": {
"proformas": {
"title": "Proformas",
"description": "Gestiona tus proformas",
"list": {
"title": "Proformas",
"description": "Lista las proformas no archivadas ni eliminadas",
"loadErrorTitle": "No se pudo cargar el listado de proformas",
"actions": {
"view": "Ver",
"edit": "Editar",
"change_status": "Cambiar estado",
"issue": "Emitir factura",
"duplicate": "Duplicar",
"archive": "Archivar",
"unarchive": "Desarchivar",
"download_pdf": "Descargar PDF",
"delete": "Eliminar",
"retry": "Reintentar",
"retrying": "Reintentando…",
"go_home": "Volver al inicio",
"view_linked_invoice": "Ver factura vinculada",
"disabled_reasons": {
"archived_scope": "No se puede ejecutar desde el listado de proformas archivadas.",
"deleted_scope": "No se puede ejecutar desde el listado de proformas eliminadas.",
"archived_only": "Solo está disponible en proformas archivadas.",
"edit_issued": "No se puede editar una proforma emitida.",
"status_issued": "Una proforma emitida no admite cambios de estado.",
"linked_invoice_unavailable": "Solo está disponible cuando la proforma emitida tiene una factura vinculada.",
"operation_in_progress": "La operación está en curso."
}
},
"empty": {
"normal": "No hay proformas.",
"archived": "No hay proformas archivadas.",
"deleted": "No hay proformas eliminadas."
},
"errors": {
"refresh": {
"title": "No se pudo actualizar el listado",
"message": "Se muestran los últimos datos disponibles mientras vuelves a intentarlo."
},
"page": {
"forbidden": {
"title": "No tienes acceso al listado de proformas",
"description": "No dispones de permisos para consultar este listado."
},
"network": {
"title": "No se pudo conectar con el servidor",
"description": "Comprueba tu conexión e inténtalo de nuevo."
},
"timeout": {
"title": "La carga está tardando demasiado",
"description": "El servidor no respondió dentro del tiempo esperado."
},
"server": {
"title": "No se pudo cargar el listado de proformas",
"description": "Se produjo un error interno al recuperar las proformas."
},
"unavailable": {
"title": "Servicio temporalmente no disponible",
"description": "El servicio de proformas no está disponible en este momento."
},
"unknown": {
"title": "No se pudo cargar el listado de proformas",
"description": "Ha ocurrido un error inesperado al cargar el listado."
}
}
},
"filters": {
"status": {
"label": "Estado"
}
},
"columns": {
"proforma_reference": "Num.",
"series": "Serie",
"reference": "Reference",
"status": "Estado",
"proforma_date": "Fecha",
"operation_date": "Fecha de operación",
"recipient": "Cliente",
"recipient_tin": "NIF/CIF",
"recipient_name": "Cliente",
"recipient_street": "Dirección",
"recipient_city": "Ciudad",
"recipient_province": "Provincia",
"recipient_postal_code": "Código postal",
"recipient_country": "País",
"subtotal_amount": "Subtotal",
"discount_amount": "Descuentos",
"taxes_amount": "Impuestos",
"total_amount": "Importe total"
}
},
"archived": {
"title": "Proformas archivadas",
"description": "Consulta las proformas archivadas sin mezclar el listado operativo"
},
"deleted": {
"title": "Proformas eliminadas",
"description": "Consulta las proformas eliminadas en modo solo lectura"
},
"create": {
"title": "Nueva proforma",
"description": "Crear una nueva proforma",
"back_to_list": "Volver al listado"
},
"update": {
"title": "Editar proforma",
"description": "Editar la proforma seleccionada",
"load_error.message": "Inténtalo de nuevo más tarde",
"load_error.title": "No se pudo cargar la proforma",
"not_found_msg": "Revisa el identificador o vuelve al listado",
"not_found_title": "Proforma no encontrada",
"error_msg": "Revisa los datos e inténtalo de nuevo.",
"error_title": "No se pudo guardar los cambios",
"page_error": {
"actions": {
"retry": "Reintentar",
"retrying": "Reintentando…",
"go_home": "Volver al inicio",
"back_to_list": "Volver al listado"
},
"notFound": {
"title": "Proforma no encontrada",
"description": "La proforma ya no existe o no está disponible."
},
"forbidden": {
"title": "No tienes acceso a esta proforma",
"description": "No dispones de permisos para editar este documento."
},
"network": {
"title": "No se pudo conectar con el servidor",
"description": "Comprueba tu conexión e inténtalo de nuevo."
},
"timeout": {
"title": "La carga está tardando demasiado",
"description": "El servidor no respondió dentro del tiempo esperado."
},
"server": {
"title": "No se pudo cargar la proforma",
"description": "Se produjo un error interno al recuperar la proforma."
},
"unavailable": {
"title": "Servicio temporalmente no disponible",
"description": "El servicio de proformas no está disponible en este momento."
},
"unknown": {
"title": "No se pudo cargar la proforma",
"description": "Ha ocurrido un error inesperado al cargar la proforma."
},
"missing_entity": {
"title": "No se pudo cargar la proforma",
"description": "La respuesta recibida no contiene una proforma válida."
}
}
},
"delete": {
"title": "Eliminar proforma",
"description": "Eliminar la proforma seleccionada"
},
"delete.error_title": "No se pudo eliminar la proforma",
"delete.error_unexpected_message": "Ha ocurrido un error inesperado al eliminar la proforma.",
"view": {
"title": "Ver proforma",
"description": "Ver los detalles de la proforma seleccionada"
}
},
"issued_invoices": {
"title": "Facturas de cliente",
"description": "Gestiona tus facturas de cliente",
"list": {
"title": "Facturas de cliente",
"description": "Lista todas las facturas de cliente",
"search_placeholder": "Buscar por número, cliente o NIF/CIF...",
"actions": {
"retry": "Reintentar",
"retrying": "Reintentando…",
"go_home": "Volver al inicio"
},
"errors": {
"refresh": {
"title": "No se pudo actualizar el listado",
"message": "Se muestran los últimos datos disponibles mientras vuelves a intentarlo."
},
"page": {
"forbidden": {
"title": "No tienes acceso al listado de facturas",
"description": "No dispones de permisos para consultar este listado."
},
"network": {
"title": "No se pudo conectar con el servidor",
"description": "Comprueba tu conexión e inténtalo de nuevo."
},
"timeout": {
"title": "La carga está tardando demasiado",
"description": "El servidor no respondió dentro del tiempo esperado."
},
"server": {
"title": "No se pudo cargar el listado de facturas",
"description": "Se produjo un error interno al recuperar las facturas."
},
"unavailable": {
"title": "Servicio temporalmente no disponible",
"description": "El servicio de facturación no está disponible en este momento."
},
"unknown": {
"title": "No se pudo cargar el listado de facturas",
"description": "Ha ocurrido un error inesperado al cargar el listado."
}
}
},
"grid_columns": {
"series_invoice_number": "#",
"verifactu_status": "Estado",
"verifactu_qr_code": "QR",
"verifactu_url": "URL",
"invoice_number": "Nº factura",
"series": "Serie",
"reference": "Reference",
"invoice_date": "Fecha de factura",
"operation_date": "Fecha de operación",
"recipient": "Cliente",
"recipient_tin": "NIF/CIF",
"recipient_name": "Cliente",
"recipient_street": "Dirección",
"recipient_city": "Ciudad",
"recipient_province": "Provincia",
"recipient_postal_code": "Código postal",
"recipient_country": "País",
"subtotal_amount": "Subtotal",
"discount_amount": "Descuentos",
"taxes_amount": "Impuestos",
"total_amount": "Importe total"
}
}
}
},
"form_groups": {
"proformas": {
"customer": {
"title": "Cliente",
"description": "Selecciona el cliente para esta proforma"
},
"items": {
"title": "Detalles de la proforma",
"description": ""
},
"basic_info": {
"title": "Información de la proforma",
"description": "Información básica de la proforma"
},
"totals": {
"title": "Totales de la proforma",
"description": "Desglose de los importes de la proforma con descuentos e impuestos."
},
"preferences": {
"title": "Preferencias",
"description": "Configuraciones adicionales de la proforma"
}
}
},
"form_fields": {
"proformas": {
"invoice_number": {
"label": "Número de proforma",
"placeholder": "",
"description": ""
},
"proforma_date": {
"label": "Fecha de la proforma",
"placeholder": "Selecciona una fecha",
"description": "Fecha de emisión de la proforma"
},
"series": {
"label": "Serie",
"placeholder": "",
"description": ""
},
"operation_date": {
"label": "Fecha de operación",
"placeholder": "Selecciona una fecha",
"description": "Fecha de la operación de la proforma"
},
"reference": {
"label": "Referencia",
"placeholder": "Referencia de la proforma",
"description": "Referencia de la proforma"
},
"description": {
"label": "Descripción",
"placeholder": "Descripción de la proforma",
"description": "Descripción general de la proforma"
},
"subtotal_amount": {
"label": "Subtotal",
"placeholder": "",
"desc": "Subtotal de la proforma"
},
"discount": {
"label": "Descuento (%)",
"placeholder": "",
"desc": "Porcentaje de descuento"
},
"discount_amount": {
"label": "Importe del descuento",
"placeholder": "",
"desc": "Importe del descuento porcentual"
},
"total_amount": {
"label": "Precio total",
"placeholder": "",
"desc": "Precio total de la proforma"
},
"notes": {
"label": "Notas",
"placeholder": "Notas adicionales sobre la proforma",
"description": "Notas adicionales que se pueden incluir en la proforma"
},
"item": {
"quantity": {
"label": "Cantidad",
"placeholder": "",
"description": ""
},
"description": {
"label": "Descripción",
"placeholder": "",
"description": ""
},
"unit_amount": {
"label": "Precio unitario",
"placeholder": "",
"description": "Precio unitario del producto"
},
"discount_percentage": {
"label": "Dto (%)",
"placeholder": "",
"description": "Porcentaje de descuento"
},
"discount_amount": {
"label": "Importe del descuento",
"placeholder": "",
"description": "Importe del descuento porcentual"
},
"taxable_amount": {
"label": "Subtotal",
"placeholder": "",
"description": ""
},
"tax_codes": {
"label": "Impuestos",
"placeholder": "",
"description": "Impuestos"
},
"taxes_amount": {
"label": "Importe impuestos",
"placeholder": "",
"description": "Importe porcentual de los impuestos"
},
"total_amount": {
"label": "Precio total",
"placeholder": "",
"description": "Precio total con descuento porcentual"
}
}
}
},
"components": {
"datatable": {
"actions": "Acciones"
},
"customer_invoice_taxes_multi_select": {
"label": "Impuestos",
"placeholder": "Selecciona impuestos",
"description": "Selecciona los impuestos a aplicar a los artículos de la proforma",
"invalid_tax_selection": "Selección de impuestos no válida. Por favor, selecciona un impuesto válido."
},
"hover_card_totals_summary": {
"label": "Desglose del importe",
"fields": {
"subtotal_amount": "Subtotal",
"discount_percentage": "Descuento",
"taxable_amount": "Importe base",
"total_amount": "Total"
}
}
}
}