WEB-506 feat: add Remittance Module with 7-step payout wizard (#3200)

WEB-506 fix: address CodeRabbit review (security, validation)

WEB-506 fix: make API gateway header name configurable (MIFOS_REMITTANCE_API_HEADER)

WEB-506 fix: remove duplicate translation keys (Personal Information, Transaction Details)
This commit is contained in:
Shubham Kumar
2026-02-21 23:52:37 -06:00
committed by GitHub
parent e8bfdd435d
commit 4c8f5d8343
50 changed files with 3684 additions and 13 deletions
+95 -4
View File
@@ -560,7 +560,15 @@
"Is Self Service": "Es autoservicio",
"Advanced Search": "Búsqueda avanzada",
"Show advanced search": "Mostrar búsqueda avanzada",
"Hide advanced search": "Ocultar búsqueda avanzada"
"Hide advanced search": "Ocultar búsqueda avanzada",
"Validate Recipient": "Validar Beneficiario",
"Assign Payout": "Asignar Pago",
"Confirm Payment": "Confirmar Pago",
"Print Receipt": "Imprimir Recibo",
"New Remittance": "Nueva Remesa",
"View Receipt": "Ver Recibo",
"Add Entry": "Agregar Entrada",
"Retry": "Reintentar"
},
"catalogs": {
"Interest payment waiver": "Exención de pago de intereses",
@@ -801,6 +809,9 @@
"Passport": "Pasaporte",
"Id": "Identificación",
"Drivers License": "Licencia de conducir",
"Driver's License": "Licencia de Conducir",
"National ID": "Identificación Nacional",
"Voter ID": "Credencial de Elector",
"Any Other Id Type": "Cualquier otro tipo de identificación",
"Check loan repayment overdue": "Verificar pagos vencidos de créditos",
"Update loan arrears aging": "Actualizar antigüedad de atrasos en los créditos",
@@ -1296,7 +1307,30 @@
"Contact Information": "Información de Contacto",
"Classification": "Clasificación",
"Status": "Estado",
"Pending Tasks": "Tareas pendientes"
"Pending Tasks": "Tareas pendientes",
"Process Remittance": "Procesar Remesa",
"Search Remittance": "Buscar Remesa",
"Remittance Details": "Detalles de la Remesa",
"Search Beneficiary": "Buscar Beneficiario",
"Beneficiary Details": "Detalles del Beneficiario",
"Transactional Profile": "Perfil Transaccional",
"Confirm Payout": "Confirmar Pago",
"Confirm Payment": "Confirmar Pago",
"Payment Receipt": "Recibo de Pago",
"Transaction": "Transacción",
"Recipient": "Beneficiario",
"Payout Assignment": "Asignación de Pago",
"Assign Payout": "Asignar Pago",
"Validated Recipient Information": "Información del Beneficiario Validada",
"Identification": "Identificación",
"Professional Information": "Información Profesional",
"Assign to Mifos Client": "Asignar a Cliente Mifos",
"Add Profile Entry": "Agregar Entrada de Perfil",
"Recipient Details": "Detalles del Beneficiario",
"Confirmation Details": "Detalles de Confirmación",
"Payment Successful": "Pago Exitoso",
"Transaction Status": "Estado de la Transacción",
"Transaction Summary": "Resumen de la Transacción"
},
"inputs": {
"Floating rate": "Tasa flotante",
@@ -1986,6 +2020,7 @@
"Liability Account": "Cuenta de responsabilidad",
"Liability Account (CR)": "Cuenta de Pasivo (CR)",
"Lifted On": "levantado",
"Loading vendors...": "Cargando proveedores...",
"Link savings": "Ahorro de enlaces",
"Linked Savings Account": "Cuenta de Ahorros vinculada",
"Linked Savings Account(Dividend Posting)": "Cuenta de Ahorros vinculada (publicación de dividendos)",
@@ -2462,6 +2497,7 @@
"Start Time": "Hora de inicio",
"Started On": "Iniciado en",
"Starting date": "Fecha de inicio",
"State": "Estado",
"State / Province": "Estado o Provincia",
"Status": "Estado",
"Step Name": "Nombre del paso",
@@ -2821,11 +2857,50 @@
"Redeem Shares": "Canjear acciones",
"Approve Additional Shares": "Aprobar acciones adicionales",
"Reject Additional Shares": "Rechazar acciones adicionales",
"Tasks": "Tareas"
"Tasks": "Tareas",
"Vendor": "Proveedor",
"Loading vendors...": "Cargando proveedores...",
"Failed to load vendors": "Error al cargar proveedores",
"External Reference ID": "ID de Referencia Externa",
"Reference ID is required": "Se requiere ID de referencia",
"Minimum 3 characters": "Mínimo 3 caracteres",
"Sent By": "Enviado Por",
"Deposited At": "Depositado En",
"Sender Name": "Nombre del Remitente",
"Payout Amount": "Monto del Pago",
"Recipient Name": "Nombre del Beneficiario",
"Individual": "Individual",
"Legal Entity": "Persona Moral",
"# Remittance": "# Remesa",
"Avg Amount/Transaction": "Monto Promedio/Transacción",
"# Senders": "# Remitentes",
"Sender Registry": "Registro de Remitentes",
"Sender": "Remitente",
"Document": "Documento",
"Document Number": "Número de Documento",
"First name is required": "Se requiere nombre",
"Last name is required": "Se requiere apellido",
"Document number is required": "Se requiere número de documento",
"National Identity Card Number": "Número de Cédula de Identidad Nacional",
"Mothers Maiden Name": "Apellido de Soltera de la Madre",
"Municipality": "Municipio",
"Locality": "Localidad",
"New Locality": "Nueva Localidad",
"Occupation": "Ocupación",
"Economic Activity": "Actividad Económica",
"Entity Member": "Miembro de Entidad",
"Search Client": "Buscar Cliente",
"Type client name or account number": "Escriba nombre del cliente o número de cuenta"
},
"placeholders": {
"# Remittance": "# Remesa",
"Add new server": "Agregar nuevo servidor",
"Enter document number": "Ingrese número de documento",
"Enter first name (include middle name)": "Ingrese nombre (incluya segundo nombre)",
"Enter last name": "Ingrese apellido",
"Enter remittance reference number": "Ingrese número de referencia de remesa",
"Search Activity": "Actividad de búsqueda",
"Sender name": "Nombre del remitente",
"Enter your username": "Ingrese su nombre de usuario",
"Enter your password": "Ingrese su contraseña"
},
@@ -3852,7 +3927,23 @@
"Create Interest Refund": "Crear reembolso de intereses",
"ACTIVE": "ACTIVO",
"PENDING": "PENDIENTE",
"INACTIVE": "INACTIVO"
"INACTIVE": "INACTIVO",
"Unable to load vendors. Please check your connection and try again.": "No se pudieron cargar los proveedores. Verifique su conexión e intente de nuevo.",
"This remittance has a terminal status and cannot be processed further.": "Esta remesa tiene un estado terminal y no puede ser procesada.",
"This remittance has already been paid successfully.": "Esta remesa ya ha sido pagada exitosamente.",
"Register the transactional profile for the beneficiary. Add entries for individuals or legal entities.": "Registre el perfil transaccional del beneficiario. Agregue entradas para individuos o personas morales.",
"Click to remove": "Clic para eliminar",
"No transactional profile entries yet. Add one below.": "Aún no hay entradas en el perfil transaccional. Agregue una a continuación.",
"Please review the details carefully before confirming the payment.": "Revise los detalles cuidadosamente antes de confirmar el pago.",
"Search and assign this beneficiary to an existing Mifos client account": "Buscar y asignar este beneficiario a una cuenta de cliente Mifos existente",
"Failed to search clients. Please try again.": "Error al buscar clientes. Intente de nuevo.",
"Recipient is not valid for this transaction. Please check the details.": "El beneficiario no es válido para esta transacción. Verifique los detalles.",
"Recipient validation failed. Please check the document details and try again.": "La validación del beneficiario falló. Verifique los detalles del documento e intente de nuevo.",
"Missing required information. Please try again.": "Falta información requerida. Intente de nuevo.",
"Failed to confirm payment. Please try again or contact support.": "Error al confirmar el pago. Intente de nuevo o contacte al soporte.",
"Failed to assign payout. Please try again.": "Error al asignar el pago. Intente de nuevo.",
"Remittance not found. Please check the reference number and try again.": "Remesa no encontrada. Verifique el número de referencia e intente de nuevo.",
"Review the transaction and recipient details below, then assign the payout.": "Revise los detalles de la transacción y del beneficiario a continuación, luego asigne el pago."
},
"countries": {
"AF": "Afganistán",