ODS Buscar
El ODS El módulo de búsqueda le permitirá buscar pagos a través de una serie de diferentes campos (ID, detalles de las partes e información resumida).
Configuración
Config
Esta configuración se utiliza para el customisation de ciertos elementos en el ODS módulo de búsqueda.
Agregar Tipos de Viaje Personalizados: Los clientes pueden agregar custom tipos de viaje (por ejemplo,sepa-instant) simplemente añadiendo una nueva entrada a la journeys mapa en la configuración. Para más detalles, consulte Añadiendo Tipos de Viaje Personalizados
Formularios de Búsqueda
La configuración de los formularios de búsqueda está organizada por tipo de viaje dentro de un journeys mapa. Cada tipo de viaje (pago, recuperación, masivo, por lotes, o custom) puede tener su propia configuración de formulario de búsqueda.
Puede elegir qué secciones y campos se muestran en los formularios de búsqueda añadiéndolos o eliminándolos de la configuración. Puede elegir entre cualquier campo presente en un IPF. PDS or a custom PDS y MDS. Cualquier custom los campos que añada a los formularios de búsqueda deben estar precedidos por 'custom_'por ejemplo'`custom_customSearchableStringField`.
Aquí tiene un ejemplo de la configuración del formulario de búsqueda para una pantalla de búsqueda de pagos:
# Journey-specific configurations
# Each journey type has its own search-form configuration
journeys {
# Payment journey configuration
payment {
search-form {
searchType: "payment"
formSections: [
{
id: "ids"
name: "heading.ids"
size: "DOUBLE"
fields: [
{
id: "uowId"
name: "formField.unitOfWorkId"
type: "STRING"
},
{
id: "clientRequestId"
name: "formField.clientRequestId"
type: "STRING"
},
{
id: "instructionId"
name: "formField.instructionId"
type: "STRING"
},
{
id: "transactionId"
name: "formField.transactionId"
type: "STRING"
},
{
id: "uetr"
name: "formField.uetr"
type: "STRING"
},
{
name: "formField.alternativeIdentifierName"
type: "ALTERNATIVE_IDENTIFIER"
},
{
id: "alternativeIdentifierValue"
name: "formField.alternativeIdentifierValue"
type: "STRING"
},
{
id: "relatedUnitOfWorkId"
name: "formField.relatedUnitOfWorkId"
type: "STRING"
}
]
},
{
id: "summary"
name: "heading.summaryInfo"
size: "SINGLE"
fields: [
{
name: "formField.reasonCode"
type: "REASON_CODE"
},
{
name: "formField.globalStatus"
type: "GLOBAL_STATUS"
},
{
name: "formField.transactionType"
type: "TRANSACTION_TYPE"
},
{
id: "csm"
name: "formField.csm"
type: "STRING"
}
]
},
{
id: "dates"
name: "heading.dates"
fields: [
{
id: "date"
name: "formField.date"
type: "PAYMENT_DATES"
}
]
},
{
id: "amounts"
name: "heading.amounts"
fields: [
{
id: "amount"
name: "formField.amount"
type: "PAYMENT_AMOUNTS"
}
]
},
{
id: "debtor"
name: "heading.debtorDetails"
size: "SINGLE"
fields: [
{
id: "debtorName"
name: "formField.debtorName"
type: "STRING"
},
{
id: "debtorAccount"
name: "formField.debtorAccount"
type: "STRING"
},
{
id: "debtorAgentBIC"
name: "formField.debtorAgentBIC"
type: "STRING"
},
{
id: "debtorBIC"
name: "formField.debtorBIC"
type: "STRING"
}
]
},
{
id: "creditor"
name: "heading.creditorDetails"
size: "SINGLE"
fields: [
{
id: "creditorName"
name: "formField.creditorName"
type: "STRING"
},
{
id: "creditorAccount"
name: "formField.creditorAccount"
type: "STRING"
},
{
id: "creditorAgentBIC"
name: "formField.creditorAgentBIC"
type: "STRING"
},
{
id: "creditorBIC"
name: "formField.creditorBIC"
type: "STRING"
}
]
},
{
id: "accounts"
name: "heading.accountDetails"
size: "SINGLE"
fields: [
{
id: "creditAccount"
name: "formField.creditAccount"
type: "STRING"
},
{
id: "debitAccount"
name: "formField.debitAccount"
type: "STRING"
},
{
id: "custom_customSearchableStringField"
name: "formField.customField1"
type: "STRING"
},
{
id: "custom_customSearchableStringField2"
name: "formField.customField2"
type: "STRING"
},
{
id: "custom_customSearchableStringField3"
name: "formField.customField3"
type: "STRING"
}
]
}
]
}
}
# Example: Custom journey type (e.g., SEPA Instant)
# sepa-instant {
# search-form {
# searchType: "sepa-instant"
# formSections: [
# {
# id: "ids"
# name: "heading.ids"
# size: "DOUBLE"
# fields: [
# {
# id: "uowId"
# name: "formField.unitOfWorkId"
# type: "STRING"
# },
# {
# id: "instantPaymentId"
# name: "formField.instantPaymentId"
# type: "STRING"
# }
# ]
# }
# ]
# }
# }
}
Nombre |
Descripción |
searchType: Cadena |
El tipo de formulario de búsqueda que desea configurar. Esto puede ser de pago, de recuperación, masivo o por lotes. |
formSections: FormSection[] |
La sección del formulario que se mostrará. A FormSection es un grupo de campos de formulario que aparecen en el formulario de búsqueda. |
id: Cadena |
El identificador único para la sección del formulario. |
nombre: Cadena |
El nombre de la sección del formulario. Este es el título que se mostrará en la interfaz de usuario y debe ser una clave de traducción. |
tamaño: Tamaño |
Este es el tamaño de la sección del formulario. Es un enumerado de Tamaño que puede ser SIMPLE o DOBLE. SIMPLE ocupará una columna y DOBLE ocupará más de una columna. |
campos: FormField[] |
Los campos del formulario que se mostrarán en la sección del formulario. A FormField es un único campo que aparece en el formulario de búsqueda. |
id: Cadena |
El identificador único para el campo del formulario. Esto debe ser el mismo que el nombre del campo en el PDS or MDS que se devuelve del backend. |
nombre: Cadena |
El nombre del campo del formulario. Esta es la etiqueta que se mostrará en la interfaz de usuario y debe ser una clave de traducción. |
tipo: FormFieldType |
El tipo del campo del formulario. Es un FieldType enum que puede ser uno de los siguientes: CADENA, IDENTIFICADOR_ALTERNATIVO, CÓDIGO_DE_RAZÓN, ESTADO_GLOBAL, TIPO_DE_TRANSACCIÓN, FECHAS, CANTIDADES, CASILLA_DE_VERIFICACIÓN, NÚMERO, FECHA, FECHA_HORA |
GLOBAL_STATUS, AMOUNTS y DATES se configuran utilizando el date-types,amount-types y global-statuses propiedades de configuración dentro de cada tipo de viaje
Los tipos de campo ALTERNATIVE_IDENTIFIER, REASON_CODE, TRANSACTION_TYPE y GLOBAL_STATUS mostrarán un campo de autocompletar o un menú desplegable en la interfaz de usuario con los valores definidos en la configuración para identificadores alternativos, códigos de razón, tipos de transacción y estados globales, respectivamente.
Estados Globales
La configuración de estados globales está organizada dentro de la journeys mapa, donde cada tipo de viaje debe tener su propio global-statuses array. Los tipos de viaje válidos incluyen:`payment`,recall,bulk,batch, y cualquier custom tipos de viaje que usted añade.
Esto significa que usted puede configurar custom estados globales para cada uno de los diferentes tipos de viaje de manera independiente.
Por ejemplo, usted puede configurar diferentes estados globales para los pagos bajo journeys.payment.global-statuses en la configuración.
Cada objeto de estado tiene dos campos:`name` y category.
-
namees la etiqueta que se muestra en la interfaz de usuario (por ejemplo: "Pendiente"). -
categorydebe ser una de las 6 categorías permitidas: PENDING, ACCEPTED, REJECTED, MANUAL_ACTION_REQUIRED, SCHEDULED, CANCELADO. Las categorías provienen del conjunto de estado global predeterminado.
Puede encontrar más información sobre estados globales.aquí. Puede haber más de un estado en cada categoría.
Se han introducido categorías porque impulsan ciertos comportamientos de pantalla en la interfaz de usuario. Por ejemplo, solo los pagos con una categoría de estado global no terminal y no manual, es decir, PENDIENTE y SCHEDULED podrá ser cancelado.
# Journey-specific configurations
# Each journey type must have its own global-statuses configuration
journeys {
# Payment journey configuration
payment {
global-statuses = [
{
name: "PENDING",
category: "PENDING"
},
{
name: "ACCEPTED",
category: "ACCEPTED"
},
{
name: "COMPLETED",
category: "ACCEPTED"
},
{
name: "REJECTED",
category: "REJECTED"
},
{
name: "MANUAL_ACTION_REQUIRED",
category: "MANUAL_ACTION_REQUIRED"
},
{
name: "SCHEDULED",
category: "SCHEDULED"
},
{
name: "CANCELLED",
category: "CANCELLED"
}
]
}
# Recall journey configuration
recall {
global-statuses = [
{
name: "PENDING",
category: "PENDING"
},
{
name: "ACCEPTED",
category: "ACCEPTED"
},
{
name: "COMPLETED",
category: "ACCEPTED"
},
{
name: "REJECTED",
category: "REJECTED"
},
{
name: "MANUAL_ACTION_REQUIRED",
category: "MANUAL_ACTION_REQUIRED"
},
{
name: "SCHEDULED",
category: "SCHEDULED"
},
{
name: "CANCELLED",
category: "CANCELLED"
}
]
}
# Bulk journey configuration
bulk {
global-statuses = [
{
name: "PENDING",
category: "PENDING"
},
{
name: "ACCEPTED",
category: "ACCEPTED"
},
{
name: "COMPLETED",
category: "ACCEPTED"
},
{
name: "REJECTED",
category: "REJECTED"
},
{
name: "MANUAL_ACTION_REQUIRED",
category: "MANUAL_ACTION_REQUIRED"
},
{
name: "SCHEDULED",
category: "SCHEDULED"
},
{
name: "CANCELLED",
category: "CANCELLED"
}
]
}
# Batch journey configuration
batch {
global-statuses = [
{
name: "PENDING",
category: "PENDING"
},
{
name: "ACCEPTED",
category: "ACCEPTED"
},
{
name: "COMPLETED",
category: "ACCEPTED"
},
{
name: "REJECTED",
category: "REJECTED"
},
{
name: "MANUAL_ACTION_REQUIRED",
category: "MANUAL_ACTION_REQUIRED"
},
{
name: "SCHEDULED",
category: "SCHEDULED"
},
{
name: "CANCELLED",
category: "CANCELLED"
}
]
}
# Example: Custom journey type (e.g., SEPA Instant)
# sepa-instant {
# global-statuses = [
# {
# name: "PENDING",
# category: "PENDING"
# },
# {
# name: "COMPLETED",
# category: "ACCEPTED"
# }
# ]
# }
}
Tipos de Fecha y Monto
Los tipos de fecha y cantidad por viaje se pueden configurar con el date-types y amount-types propiedades dentro de cada tipo de viaje para determinar qué aparece en los menús desplegables en la interfaz de usuario. Puede cambiar el orden en el que estos tipos aparecen en el
menús desplegables cambiando el orden en el que aparecen en la configuración.
Por ejemplo, esto configuraría el pago y el recordatorio dentro del mapa de viajes:
viajes {
pago {
date-types = [
"CREADO_EN",
"MENSAJE_RECIBIDO_EN",
"FECHA_DE_LIQUIDACIÓN_INTERBANCARIA"
]
}
recall {
date-types = [
"CREATED_AT",
"FECHA_DE_LIQUIDACIÓN_INTERBANCARIA_ORIGINAL"
]
}
}
Si desea que el mensaje recibido en el tipo aparezca en la parte superior de la lista, debe cambiarlo para que sea así:
pago {
date-types = [
"MENSAJE_RECIBIDO_EN",
"CREATED_AT",
"FECHA_DE_LIQUIDACIÓN_INTERBANCARIA"
]
}
Detalles Predeterminados
La propiedad 'details-defaults' se utiliza para manejar el comportamiento de la pantalla de detalles de pago y debe ser configurada dentro de cada tipo de viaje:
viajes {
pago {
details-defaults = {
" showGraphs ": true,
"flujos": {
"abierto": "último",
"ordenar": "asc",
},
"eventos": {
"abierto": "todo",
"ordenar": "asc",
}
}
}
}
Donde 'showGraphs' maneja si los gráficos se muestran por defecto
'opened' maneja si desea tener ciertos flujos abiertos por defecto ('último', 'todos', 'ninguno')
'sort' maneja el orden en el que se ordenan los flujos/eventos ('desc', 'asc')
Columnas
El table-columns La propiedad se configura dentro de cada tipo de viaje para determinar qué columnas se muestran en la tabla de resultados de búsqueda en la página de búsqueda para ese tipo de viaje específico.
Las columnas se mostrarán en el orden en que están definidas en la configuración, por lo que si desea cambiar el orden de las columnas, puede hacerlo modificando el orden en que aparecen en la configuración.
El atributo paths acepta un arreglo de cadenas, donde el valor se correlaciona con la ruta dentro del objeto que se espera. Si la ruta no se proporciona, se utilizará el nombre como valor predeterminado.
por ejemplo, para un objeto como el siguiente
{
"createdAt": "01/01/2025",
"field1": "value1",
"field2": "value2",
"object1": {
"field3": "value3"
}
}
La propiedad paths:
paths: ["createdAt"]
Obtendrá el valor ["01/01/2025"]
Y la propiedad paths:
paths: ["field1", "object1.field3"]
Obtendrá el valor ["value1", "value3"]. Donde cada uno de los valores de cadena estará separado por un salto de línea en la tabla.
Hay seis tipos de los que puede elegir.
CADENA |
Un valor de texto estándar |
NÚMERO |
Un valor numérico estándar |
MONEDA |
Un valor que será formateado a un valor monetario. |
FECHA |
Un valor que será formateado como fecha y mostrará solo la fecha. |
FECHA Y HORA |
Un valor que será formateado a fecha e incluirá hora. |
PRE_DEFINIDO |
Una definición de columna incorporada que manejará columnas más complicadas (consulte las definiciones) |
Para las columnas PRE_DEFINIDAS, puede utilizarlas proporcionando tanto el tipo como el nombre apropiado.
Tipo |
Descripción |
Notas |
cantidad |
Esto se mostrará transactionAmount,instructedAmount,convertedTransactionAmount or originalInterbankSettlementAmount,returnedInterbankSettlementAmount,convertedTransactionAmount dependiendo del tipo de viaje |
También mostrará un tooltip apropiado. |
bankingAccount |
Esto se mostrará debitAccount y creditAccount con prefijos |
|
totalInterbankSettlementAmount |
Esto se mostrará totalInterbankSettlementAmount con totalInterbankSettlementAmountCurrency para la moneda |
|
agentDetails |
Esto se mostrará instructingAgent y instructedAgent |
También se mostrará con un prefijo de 'Instruyendo' e 'Instruido' |
reasonCode |
Esto mostrará el reasonCode con un tooltip que contiene su descripción |
Las columnas se definen de la siguiente manera:
# Journey-specific configurations
# Each journey type has its own table-columns configuration
journeys {
payment {
table-columns = [
{
name: "createdAt",
type: "DATETIME"
},
{
name: "transactionType",
type: "STRING"
},
{
name: "csm",
type: "STRING"
},
{
name: "amount",
type: "PRE_DEFINED"
},
{
name: "clientRequestId",
type: "STRING"
},
{
name: "debtor",
type: "STRING",
paths: ["debtorName", "debtorAccount", "debtorBic", "debtorAgentBic"]
},
{
name: "creditor",
type: "STRING",
paths: ["creditorName", "creditorAccount", "creditorBic", "creditorAgentBic"]
},
{
name: "bankingAccount",
type: "STRING",
paths: ["debitAccount", "creditAccount"]
},
{
name: "globalStatus",
type: "STRING"
},
{
name: "reasonCode",
type: "PRE_DEFINED"
}
]
}
recall {
table-columns = [
{
name: "createdAt",
type: "DATETIME"
},
{
name: "agentDetails",
type: "PRE_DEFINED"
},
{
name: "originalEndToEndId",
type: "STRING"
},
{
name: "originalTransactionId",
type: "STRING"
},
{
name: "amount",
type: "PRE_DEFINED"
},
{
name: "originalInterbankSettlementDate",
type: "DATE"
},
{
name: "debtor",
type: "STRING",
paths: ["debtorName", "debtorAccount", "debtorBic", "debtorAgentBic"]
},
{
name: "creditor",
type: "STRING",
paths: ["creditorName", "creditorAccount", "creditorBic", "creditorAgentBic"]
}
]
}
bulk {
table-columns = [
{
name: "createdAt",
type: "DATETIME"
},
{
name: "agentDetails",
type: "PRE_DEFINED"
},
{
name: "totalInterbankSettlementAmount"
type: "PRE_DEFINED"
},
{
name: "transactionType",
type: "STRING"
},
{
name: "csm",
type: "STRING"
},
{
name: "clientRequestId",
type: "STRING"
},
{
name: "globalStatus",
type: "STRING"
},
{
name: "reasonCode",
type: "PRE_DEFINED"
}
]
}
batch {
table-columns = [
{
name: "createdAt",
type: "DATETIME"
},
{
name: "transactionType",
type: "STRING"
},
{
name: "clientRequestId",
type: "STRING"
},
{
name: "debtor",
type: "STRING",
paths: ["debtorName", "debtorAccount", "debtorBic", "debtorAgentBic"]
},
{
name: "globalStatus",
type: "STRING"
},
{
name: "reasonCode",
type: "PRE_DEFINED"
}
]
}
}
ODS Tamaño de página
ODSajustes predeterminados de resultados de búsqueda. El número máximo de resultados de búsqueda que devuelve ODS está configurado a 1000.
ods-page-results = {
size = 1000
}
Alternative Identifiers
Se deben agregar identificadores alternativos personalizados para los campos de búsqueda de Información Resumida a la alternative-identifiers propiedad dentro de cada tipo de viaje si se van a utilizar como parte de la autocompletación para ese campo de búsqueda:
# Alternative identifiers should be configured within each journey type
journeys {
payment {
alternative-identifiers = [
{
searchBy: "CLIENT_REQUEST_ID",
displayName: "Client Request ID"
}
]
}
}
Reason Codes
Los códigos de razón de la configuración común pueden ser sobrescritos para este módulo al proporcionar los suyos.payment-search-reason-codes.conf.
El objeto de código de razón tiene un definitionKey propiedad que le permite definir una clave de traducción para la definición del código de razón. Si no definitionKey se proporciona, entonces el valor de definición se utiliza como una alternativa.
El definitionKey la cadena debe ser "definición.<código-de-razón>", donde <reason-code> es el código de razón en sí. Puede ver un ejemplo a continuación.
En el menú desplegable de la interfaz de usuario, se mostrará el código de razón junto con la definición traducida o la definición de respaldo. Por ejemplo, "Código de Razón 1 — Esta es la definición del código de razón".
Ejemplo de configuración del código de razón:
reason-codes = [
{
reasonCode = "AB06",
definition = "Transaction stopped due to timeout at the Instructed Agent.",
definitionKey = "definition.AB06",
source = "ISO"
},
{
reasonCode = "AB07",
definition = "Agent of message is not online. Generic usage if it cannot be determined who exactly is not online.",
definitionKey = "definition.AB07",
source = "ISO"
},
{
reasonCode = "AB08",
definition = "Creditor Agent is not online.",
definitionKey = "definition.AB08",
source = "ISO"
}
]
Para obtener información sobre cómo agregar custom traducciones a la Operational Dashboard, vea Operational Dashboard Translation Customisation.
Códigos de Moneda
Los códigos de moneda de la configuración común pueden ser sobrescritos para este módulo proporcionando los suyos propios.payment-search-currency-codes.conf.
En el menú desplegable de la interfaz de usuario, la moneda se mostrará junto con el código alfabético. Por ejemplo, "Código Alfabético — Moneda".
Ejemplo de configuración del código de moneda:
currency-codes = [
{
"alphabeticCode": "AFN",
"currency": "Afghani"
},
{
"alphabeticCode": "EUR",
"currency": "Euro"
},
{
"alphabeticCode": "ALL",
"currency": "Lek"
}
]
Formatos de Fecha
Los formatos de fecha de la configuración común pueden ser sobrescritos para este módulo proporcionando su propia.payment-search-date-formats.conf. Si no proporciona ningún valor, las fechas serán el estándar del Reino Unido.
Los formatos de fecha se establecen según la Entidad de Procesamiento.
Ejemplo de configuración del formato de fecha:
date-formats = {
BANK_ENTITY_1 = {
dateInput = "DD/MM/YYYY",
dateDisplay = "dd/MM/YYYY",
datetimeDisplay = "dd/MM/YYYY"
},
BANK_ENTITY_2 = {
dateInput = "DD/MM/YYYY",
dateDisplay = "dd/MM/YYYY",
datetimeDisplay = "dd/MM/YYYY"
}
}
Resumen de Configuración
Esta configuración determinará cómo renderizar y organizar las diversas páginas de resumen para las unidades de trabajo en la interfaz de usuario. Se requiere un conjunto de configuración por cada tipo de resumen.- payment,recall,bulk,batch
El diseño evaluado puede ser recuperado de /api/ods/summary/{unitOfWorkId}
Los valores configurables son los siguientes:
| Propiedad | Descripción |
|---|---|
Resumen |
|
|
El conjunto de tarjetas que se mostrarán en la pantalla para el tipo de resumen dado. Esto será lo que se cargue cuando un usuario haga clic en una unidad de trabajo individual en la interfaz de usuario. |
Tarjetas |
|
|
La clave de traducción que debe utilizar transloco para el título de la tarjeta. Esto se añadirá a la clave raíz de traducción. p. ej. |
|
La raíz de traducción para el archivo de traducción transloco. p. ej. |
|
Tipo de tarjeta a utilizar desde la página de resumen dinámico. 3 tipos actuales |
|
Cuántas columnas debe ocupar esta tarjeta. El valor predeterminado es 1 y el máximo es 6. |
|
La raíz de traducción para el archivo de traducción transloco. p. ej. |
Artículos |
|
|
La clave de traducción que debe utilizar transloco para el título de la tarjeta. Esto se añadirá a la clave raíz de traducción. p. ej. |
|
El tipo del valor. Por defecto es texto, pero incluirá modificadores como estado, código de razón, negrita, etc.
|
|
La ubicación del valor en el /details/{unit of work id} api de ODS. Este camino se define utilizando SPEL. p. ej. |
|
Una cadena a utilizar en caso de que el valor falte en la respuesta de detalles. Por defecto, N/A. |
Si desea que otros datos aparezcan después de los identificadores alternativos en una tarjeta, asegúrese de agregar un subtítulo en la siguiente configuración para mantener los datos separados.
El archivo fuente para los valores predeterminados se llama summary-layout.conf y puede ser anulado en el proyecto del cliente al proporcionar su propio summary-layout.conf.
layout = {
payment = [
{
cardNameTranslationKey: "paymentTitle",
translationRoot: "summary.processingIds",
type: "list",
width: 2,
data: [
{
translationKey: "uowId",
type: "text",
valuePath: "summary.unitOfWorkId",
},
{
translationKey: "clientRequestId",
type: "text",
valuePath: "summary.clientRequestId",
},
{
translationKey: "transactionId",
type: "text",
valuePath: "summary.transactionId",
},
{
translationKey: "instructingId",
type: "text",
valuePath: "summary.instructionId",
},
{
translationKey: "uetr",
type: "text",
valuePath: "summary.uetr",
},
{
translationKey: "alternativeIds",
type: "altIds"
}
]
},
{
cardNameTranslationKey: "title",
translationRoot: "summary.processingDates",
type: "list",
width: 2,
data: [
{
translationKey: "created",
type: "date",
valuePath: "summary.createdAt",
},
{
translationKey: "instructed",
type: "date",
valuePath: "summary.instructionReceivedAt",
},
{
translationKey: "executionStarted",
type: "date",
valuePath: "summary.executionStartedAt",
},
{
translationKey: "settled",
type: "date",
valuePath: "summary.settlementCompletedAt",
},
{
translationKey: "acceptance",
type: "date",
valuePath: "summary.acceptanceDateTime",
},
{
translationKey: "interbankSettlement",
type: "date",
valuePath: "summary.interbankSettlementDate",
},
{
translationKey: "timeZone",
type: "text",
valuePath: "summary.timeZone",
}
]
},
{
cardNameTranslationKey: "title",
translationRoot: "summary.relatedSummaries",
type: "relatedSummaries",
width: 2,
},
{
cardNameTranslationKey: "title",
translationRoot: "summary.executionStatus",
type: "gridList",
width: 3,
data: [
{
translationKey: "csm",
type: "text",
valuePath: "summary.csm",
},
{
translationKey: "priority",
type: "text",
valuePath: "summary.priority",
},
{
translationKey: "processingEntity",
type: "text",
valuePath: "summary.processingEntity",
},
{
translationKey: "globalStatus",
type: "status",
valuePath: "summary.globalStatus",
},
{
translationKey: "reasonCode",
type: "reasonCode",
valuePath: "summary.reasonCode",
}
]
},
{
cardNameTranslationKey: "title",
translationRoot: "summary.processingAmounts",
type: "gridList",
width: 3,
data: [
{
translationKey: "instructedAmount",
type: "amount",
valuePath: "summary.instructedAmount",
},
{
translationKey: "instructedAmount",
type: "currency",
valuePath: "summary.instructedAmountCurrency",
},
{
translationKey: "transactionAmount",
type: "amount",
valuePath: "summary.transactionAmount",
},
{
translationKey: "transactionAmount",
type: "currency",
valuePath: "summary.transactionAmountCurrency",
},
{
translationKey: "convertedAmount",
type: "amount",
valuePath: "summary.convertedTransactionAmount",
},
{
translationKey: "convertedAmount",
type: "currency",
valuePath: "summary.convertedTransactionAmountCurrency",
},
{
translationKey: "exchangeRate",
type: "text",
valuePath: "summary.exchangeRate",
}
]
},
{
cardNameTranslationKey: "title",
translationRoot: "summary.debtorDetails",
type: "list",
width: 2,
data: [
{
translationKey: "debtorName",
type: "text",
valuePath: "summary.debtorName",
},
{
translationKey: "debtorIban",
type: "text",
valuePath: "summary.debtorAccount",
},
{
translationKey: "debtorBic",
type: "text",
valuePath: "summary.debtorBic",
},
{
translationKey: "debtorAgentBic",
type: "text",
valuePath: "summary.debtorAgentBic",
}
]
},
{
cardNameTranslationKey: "title",
translationRoot: "summary.creditorDetails",
type: "list",
width: 2,
data: [
{
translationKey: "creditorName",
type: "text",
valuePath: "summary.creditorName",
},
{
translationKey: "creditorIban",
type: "text",
valuePath: "summary.creditorAccount",
},
{
translationKey: "creditorBic",
type: "text",
valuePath: "summary.creditorBic",
},
{
translationKey: "creditorAgentBic",
type: "text",
valuePath: "summary.creditorAgentBic",
}
]
},
{
cardNameTranslationKey: "title",
translationRoot: "summary.settlementNotificationInformation",
type: "list",
width: 2,
data: [
{
translationKey: "debitAccount",
type: "text",
valuePath: "summary.debitAccount",
},
{
translationKey: "creditAccount",
type: "text",
valuePath: "summary.creditAccount",
},
{
translationKey: "debitAmount",
type: "amount",
valuePath: "summary.debitAmount",
},
{
translationKey: "debitAmount",
type: "currency",
valuePath: "summary.debitAmountCurrency",
},
{
translationKey: "creditAmount",
type: "amount",
valuePath: "summary.creditAmount",
},
{
translationKey: "creditAmount",
type: "currency",
valuePath: "summary.creditAmountCurrency",
},
]
}
],
recall = [
{
cardNameTranslationKey: "recallTitle",
translationRoot: "summary.processingIds",
type: "list",
width: 2,
data: [
{
translationKey: "uowId",
type: "text",
valuePath: "summary.unitOfWorkId",
},
{
translationKey: "clientRequestId",
type: "text",
valuePath: "summary.clientRequestId",
},
{
translationKey: "originalMessageId",
type: "text",
valuePath: "summary.originalMessageId",
},
{
translationKey: "originalInstructionId",
type: "text",
valuePath: "summary.originalInstructionId",
},
{
translationKey: "originalEndToEndId",
type: "text",
valuePath: "summary.originalEndToEndId",
},
{
translationKey: "originalTransactionId",
type: "text",
valuePath: "summary.originalTransactionId",
},
{
translationKey: "cancellationId",
type: "text",
valuePath: "summary.cancellationId",
},
{
translationKey: "returnId",
type: "text",
valuePath: "summary.returnId",
},
{
translationKey: "alternativeIds",
type: "altIds"
}
]
},
{
cardNameTranslationKey: "title",
translationRoot: "summary.processingDates",
type: "list",
width: 2,
data: [
{
translationKey: "created",
type: "date",
valuePath: "summary.createdAt",
},
{
translationKey: "messageReceived",
type: "date",
valuePath: "summary.messageReceivedAt",
},
{
translationKey: "settled",
type: "date",
valuePath: "summary.interbankSettlementDate",
},
{
translationKey: "originalInterbankSettlement",
type: "date",
valuePath: "summary.originalInterbankSettlementDate",
},
{
translationKey: "timeZone",
type: "text",
valuePath: "summary.timeZone",
}
]
},
{
cardNameTranslationKey: "title",
translationRoot: "summary.relatedSummaries",
type: "relatedSummaries",
width: 2,
},
{
cardNameTranslationKey: "title",
translationRoot: "summary.executionStatus",
type: "gridList",
width: 3,
data: [
{
translationKey: "csm",
type: "text",
valuePath: "summary.csm",
},
{
translationKey: "priority",
type: "text",
valuePath: "summary.priority",
},
{
translationKey: "processingEntity",
type: "text",
valuePath: "summary.processingEntity",
},
{
translationKey: "globalStatus",
type: "status",
valuePath: "summary.globalStatus",
},
{
translationKey: "reasonCode",
type: "reasonCode",
valuePath: "summary.reasonCode",
}
]
},
{
cardNameTranslationKey: "title",
translationRoot: "summary.processingAmounts",
type: "gridList",
width: 3,
data: [
{
translationKey: "returnedInterbankSettlementAmount",
type: "amount",
valuePath: "summary.returnedInterbankSettlementAmount",
},
{
translationKey: "returnedInterbankSettlementAmount",
type: "currency",
valuePath: "summary.returnedInterbankSettlementAmountCurrency",
},
{
translationKey: "originalInterbankSettlementAmount",
type: "amount",
valuePath: "summary.originalInterbankSettlementAmount",
},
{
translationKey: "originalInterbankSettlementAmount",
type: "currency",
valuePath: "summary.originalInterbankSettlementAmountCurrency",
},
{
translationKey: "chargeAmount",
type: "amount",
valuePath: "summary.chargeAmount",
},
{
translationKey: "chargeAmount",
type: "currency",
valuePath: "summary.chargeAmountCurrency",
},
{
translationKey: "convertedAmount",
type: "amount",
valuePath: "summary.convertedTransactionAmount",
},
{
translationKey: "convertedAmount",
type: "currency",
valuePath: "summary.convertedTransactionAmountCurrency",
},
{
translationKey: "exchangeRate",
type: "text",
valuePath: "summary.exchangeRate",
}
]
},
{
cardNameTranslationKey: "title",
translationRoot: "summary.debtorDetails",
type: "list",
width: 2,
data: [
{
translationKey: "debtorName",
type: "text",
valuePath: "summary.debtorName",
},
{
translationKey: "debtorIban",
type: "text",
valuePath: "summary.debtorAccount",
},
{
translationKey: "debtorAgentBic",
type: "text",
valuePath: "summary.debtorAgentBic",
}
]
},
{
cardNameTranslationKey: "title",
translationRoot: "summary.creditorDetails",
type: "list",
width: 2,
data: [
{
translationKey: "creditorName",
type: "text",
valuePath: "summary.creditorName",
},
{
translationKey: "creditorIban",
type: "text",
valuePath: "summary.creditorAccount",
},
{
translationKey: "creditorAgentBic",
type: "text",
valuePath: "summary.creditorAgentBic",
}
]
},
{
cardNameTranslationKey: "title",
translationRoot: "summary.agentDetails",
type: "list",
width: 2,
data: [
{
translationKey: "instructingAgent",
type: "text",
valuePath: "summary.instructingAgent",
},
{
translationKey: "instructedAgent",
type: "text",
valuePath: "summary.instructedAgent",
},
]
}
]
bulk = [
{
cardNameTranslationKey: "bulkTitle",
translationRoot: "summary.processingIds",
type: "list",
width: 2,
data: [
{
translationKey: "uowId",
type: "text",
valuePath: "summary.unitOfWorkId",
},
{
translationKey: "clientRequestId",
type: "text",
valuePath: "summary.clientRequestId",
},
{
translationKey: "messageId",
type: "text",
valuePath: "summary.messageId",
},
{
translationKey: "alternativeIds",
type: "altIds"
}
]
},
{
cardNameTranslationKey: "title",
translationRoot: "summary.processingDates",
type: "list",
width: 2,
data: [
{
translationKey: "created",
type: "date",
valuePath: "summary.createdAt",
},
{
translationKey: "messageReceived",
type: "date",
valuePath: "summary.messageReceivedAt",
},
{
translationKey: "interbankSettlement",
type: "date",
valuePath: "summary.interbankSettlementDate",
},
{
translationKey: "timeZone",
type: "text",
valuePath: "summary.timeZone",
}
]
},
{
cardNameTranslationKey: "title",
translationRoot: "summary.relatedSummaries",
type: "relatedSummaries",
width: 2,
},
{
cardNameTranslationKey: "title",
translationRoot: "summary.executionStatus",
type: "gridList",
width: 3,
data: [
{
translationKey: "csm",
type: "text",
valuePath: "summary.csm",
},
{
translationKey: "priority",
type: "text",
valuePath: "summary.priority",
},
{
translationKey: "processingEntity",
type: "text",
valuePath: "summary.processingEntity",
},
{
translationKey: "globalStatus",
type: "status",
valuePath: "summary.globalStatus",
},
{
translationKey: "reasonCode",
type: "reasonCode",
valuePath: "summary.reasonCode",
}
]
},
{
cardNameTranslationKey: "title",
translationRoot: "summary.processingAmounts",
type: "gridList",
width: 3,
data: [
{
translationKey: "totalInterbankSettlementAmount",
type: "amount",
valuePath: "summary.totalInterbankSettlementAmount",
},
{
translationKey: "totalInterbankSettlementAmount",
type: "currency",
valuePath: "summary.totalInterbankSettlementAmountCurrency",
},
{
translationKey: "controlSum",
type: "text",
valuePath: "summary.controlSum",
},
{
translationKey: "numberOfTransactions",
type: "text",
valuePath: "summary.numberOfTransactions",
}
]
},
{
cardNameTranslationKey: "title",
translationRoot: "summary.agentDetails",
type: "list",
width: 6,
data: [
{
translationKey: "instructingAgent",
type: "text",
valuePath: "summary.instructingAgent",
},
{
translationKey: "instructedAgent",
type: "text",
valuePath: "summary.instructedAgent",
},
{
translationKey: "initiatingPartyName",
type: "text",
valuePath: "summary.initiatingPartyName",
},
]
}
]
batch = [
{
cardNameTranslationKey: "batchTitle",
translationRoot: "summary.processingIds",
type: "list",
width: 2,
data: [
{
translationKey: "uowId",
type: "text",
valuePath: "summary.unitOfWorkId",
},
{
translationKey: "clientRequestId",
type: "text",
valuePath: "summary.clientRequestId",
},
{
translationKey: "paymentInformationId",
type: "text",
valuePath: "summary.paymentInformationId",
}
{
translationKey: "alternativeIds",
type: "altIds"
}
]
},
{
cardNameTranslationKey: "title",
translationRoot: "summary.processingDates",
type: "list",
width: 2,
data: [
{
translationKey: "created",
type: "date",
valuePath: "summary.createdAt",
},
{
translationKey: "timeZone",
type: "text",
valuePath: "summary.timeZone",
}
]
},
{
cardNameTranslationKey: "title",
translationRoot: "summary.relatedSummaries",
type: "relatedSummaries",
width: 2,
},
{
cardNameTranslationKey: "title",
translationRoot: "summary.executionStatus",
type: "gridList",
width: 6,
data: [
{
translationKey: "csm",
type: "text",
valuePath: "summary.csm",
},
{
translationKey: "priority",
type: "text",
valuePath: "summary.priority",
},
{
translationKey: "processingEntity",
type: "text",
valuePath: "summary.processingEntity",
},
{
translationKey: "globalStatus",
type: "status",
valuePath: "summary.globalStatus",
},
{
translationKey: "reasonCode",
type: "reasonCode",
valuePath: "summary.reasonCode",
}
]
},
{
cardNameTranslationKey: "title",
translationRoot: "summary.debtorDetails",
type: "list",
width: 6,
data: [
{
translationKey: "debtorName",
type: "text",
valuePath: "summary.debtorName",
},
{
translationKey: "debtorIban",
type: "text",
valuePath: "summary.debtorAccount",
},
{
translationKey: "debtorAgentBic",
type: "text",
valuePath: "summary.debtorAgentBic",
}
]
},
]
}
Dentro de su aplicación, usted querrá definir sus traducciones correctamente. Así que, para el ejemplo de una configuración de diseño:
layout = {
pago = [
{
cardNameTranslationKey: " paymentTitle ",
translationRoot: " summary.processingIds ",
tipo: "lista",
ancho: 2,
data: [
{
translationKey: " uowId ",
tipo: "texto",
valuePath: " summary.unitOfWorkId ",
}
]
}
]
}
Usted querrá definir su archivo de traducción de la siguiente manera:
"resumen": {
" processingIds ": {
" paymentTitle ": "Prueba"
},
" unitOfWorkId ": "12345"
}
MDS Configuración de Búsqueda
Esta configuración determinará cómo renderizar y organizar los diversos MDS buscar tablas de página en MDS Módulo de búsqueda en la interfaz gráfica. Esto debe hacerse por MDS objeto que desea que se muestre en su MDS página de búsqueda
El diseño evaluado puede ser recuperado de /api/ods/mds-info
Los valores configurables son los siguientes:
| Propiedad | Descripción |
|---|---|
Nombre |
|
|
El nombre del MDS Objeto para el cual desea proporcionar los encabezados de la tabla en el MDS Página de búsqueda. |
Resumen de Respuesta |
|
|
La clave para la traducción en el archivo de traducción transloco para el nombre del encabezado que desea que se represente en el MDS Buscar tabla para un dado MDS Objeto. |
|
La ubicación de los valores que desea mostrar en sus filas del encabezado designado tomados de los objetos ods/all/mds-objects/{type} respuesta de la API. Este camino se define utilizando puntos. JSON ruta. p. ej. |
|
El tipo del valor.
|
El archivo fuente para los valores predeterminados se llama mds-response-fields.conf y puede ser anulado en el proyecto del cliente al proporcionar su propio mds-response-fields.conf.
{
mds = [
{
name = "PAIN_001",
responseDigest = [
{
name = "unitOfWorkId"
paths = ["object.headers.unitOfWorkId"]
type = "STRING"
},
{
name = "clientRequestId"
paths = ["object.headers.clientRequestId"]
type = "STRING"
},
{
name = "mdsObjectId"
paths = ["object.payload.mdsObjectId.id"]
type = "STRING"
},
{
name = "initiatingParty"
paths = [
"object.payload.content.grpHdr.initgPty.nm",
"object.payload.content.grpHdr.initgPty.id.orgId.anyBIC"
]
type = "ARRAY"
}
]
},
{
name = "PAIN_001_PAYMENT_INSTRUCTION",
responseDigest = [
{
name = "unitOfWorkId"
paths = ["object.headers.unitOfWorkId"]
type = "STRING"
},
{
name = "clientRequestId"
paths = ["object.headers.clientRequestId"]
type = "STRING"
},
{
name = "parentMdsObjectId"
paths = ["object.payload.parentMdsObjectId.id"]
type = "STRING"
},
{
name = "debtor"
paths = [
"object.payload.content.dbtr.nm",
"object.payload.content.dbtrAcct.id.iban",
"object.payload.content.dbtr.id.orgId.anyBIC"
]
type = "ARRAY"
}
]
},
{
name = "PAIN_001_CREDIT_TRANSFER_TRANSACTION",
responseDigest = [
{
name = "unitOfWorkId"
paths = ["object.headers.unitOfWorkId"]
type = "STRING"
},
{
name = "clientRequestId"
paths = ["object.headers.clientRequestId"]
type = "STRING"
},
{
name = "parentMdsObjectId"
paths = ["object.payload.parentMdsObjectId.id"]
type = "STRING"
},
{
name = "creditor"
paths = [
"object.payload.content.cdtr.nm",
"object.payload.content.cdtrAcct.id.iban",
"object.payload.content.cdtr.id.orgId.anyBIC"
]
type = "ARRAY"
}
]
},
{
name = "PACS_008",
responseDigest = [
{
name = "unitOfWorkId"
paths = ["object.headers.unitOfWorkId"]
type = "STRING"
},
{
name = "clientRequestId"
paths = ["object.headers.clientRequestId"]
type = "STRING"
},
{
name = "mdsObjectId"
paths = ["object.payload.mdsObjectId.id"]
type = "STRING"
},
{
name = "instructingAgent"
paths = [
"object.payload.content.grpHdr.instgAgt.finInstnId.nm",
"object.payload.content.grpHdr.instgAgt.finInstnId.bicfi"
]
type = "ARRAY"
}
]
},
{
name = "PACS_008_CREDIT_TRANSFER_TRANSACTION",
responseDigest = [
{
name = "unitOfWorkId"
paths = ["object.headers.unitOfWorkId"]
type = "STRING"
},
{
name = "clientRequestId"
paths = ["object.headers.clientRequestId"]
type = "STRING"
},
{
name = "parentMdsObjectId"
paths = ["object.payload.parentMdsObjectId.id"]
type = "STRING"
},
{
name = "transactionId"
paths = ["object.payload.content.pmtId.txId"]
type = "STRING"
},
{
name = "debtor"
paths = [
"object.payload.content.dbtr.nm",
"object.payload.content.dbtrAcct.id.iban",
"object.payload.content.dbtr.orgId.anyBIC"
]
type = "ARRAY"
},
{
name = "creditor"
paths = [
"object.payload.content.cdtr.nm",
"object.payload.content.cdtrAcct.id.othr.id",
"object.payload.content.cdtr.orgId.anyBIC"
]
type = "ARRAY"
},
{
name = "instructingAgent"
paths = [
"object.payload.content.instgAgt.finInstnId.nm",
"object.payload.content.instgAgt.finInstnId.bicfi"
]
type = "ARRAY"
}
]
},
{
name = "PACS_004",
responseDigest = [
{
name = "unitOfWorkId"
paths = ["object.headers.unitOfWorkId"]
type = "STRING"
},
{
name = "clientRequestId"
paths = ["object.headers.clientRequestId"]
type = "STRING"
},
{
name = "messageId"
paths = ["object.payload.content.msgId"]
type = "STRING"
},
{
name = "mdsObjectId"
paths = ["object.payload.mdsObjectId.id"]
type = "STRING"
},
{
name = "instructingAgent"
paths = [
"object.payload.content.instgAgt.finInstnId.nm",
"object.payload.content.instgAgt.finInstnId.bicfi"
]
type = "ARRAY"
}
]
},
{
name = "PACS_004_PAYMENT_TRANSACTION",
responseDigest = [
{
name = "unitOfWorkId"
paths = ["object.headers.unitOfWorkId"]
type = "STRING"
},
{
name = "clientRequestId"
paths = ["object.headers.clientRequestId"]
type = "STRING"
},
{
name = "parentMdsObjectId"
paths = ["object.payload.parentMdsObjectId.id"]
type = "STRING"
},
{
name = "originalMessageId"
paths = ["object.payload.content.orgnlGrpInf.orgnlMsgId"]
type = "STRING"
},
{
name = "reasonCode"
paths = ["object.payload.content.rtrRsnInf[0].rsn.cd"]
type = "REASONCODE"
},
{
name = "debtor"
paths = [
"object.payload.content.orgnlTxRef.dbtr.pty.nm",
"object.payload.content.orgnlTxRef.dbtrAcct.id.iban",
"object.payload.content.orgnlTxRef.dbtr.pty.orgId.anyBIC"
]
type = "ARRAY"
},
{
name = "creditor"
paths = [
"object.payload.content.rtrChain.cdtr.pty.nm",
"object.payload.content.orgnlTxRef.cdtrAcct.id.iban",
"object.payload.content.rtrChain.cdtr.pty.id.orgId.anyBIC"
]
type = "ARRAY"
}
]
}
]
}
Configuración de Entidad de Procesamiento Desconocida
En algunas circunstancias, ciertos System Events y Message Logs ruteado al Operational Dashboard no tiene una entidad de procesamiento identificable. Esto puede suceder por una variedad de razones. Dos ejemplos comunes son:
System Events |
Un mensaje entrante de un esquema de pago no cumple con la validación del esquema. Actualmente, los paquetes del esquema no determinan la entidad de procesamiento para los pagos entrantes. |
Message Logs |
Eventos de fallo de transporte emitidos por un conector. |
En estos casos, se les asignará a UNKNOWN.
Para que un usuario pueda ver tales elementos,UNKNOWN debe ser incluido con ROLE_PAYMENT junto con cualquier otra entidad de procesamiento en users.conf.
Para prevenir problemas como que los usuarios creen configuraciones de procesamiento en contra de esto UNKNOWN entidad de procesamiento, se recomienda que ROLE_PAYMENT es el único rol asignado a él.
users = [
{
username: "user"
password: "password"
roles: {
UNKNOWN = [ROLE_PAYMENT]
OTHER_PROCESSING_ENTITY = [...]
}
}
]
Para obtener más información sobre la búsqueda de System Events y Message Logs asignado a UNKNOWN, vea aquí.
Añadiendo Tipos de Viaje Personalizados
El ODS el módulo admite la adición de custom tipos de viaje sin requerir cambios de código. Simplemente añada una nueva entrada a la journeys mapee en su configuración con todas las propiedades su custom necesidades del tipo de viaje.
Los tipos de viaje personalizados pueden definir los suyos propios:
-
Formularios de búsqueda (
search-form) -
Columnas de la tabla (
table-columns) -
Estados globales (
global-statuses) -
Tipos de fecha (
date-types) -
Tipos de cantidad (
amount-types) -
Identificadores alternativos (
alternative-identifiers) -
Tipos de transacción (
transaction-types) -
Detalles predeterminados (
details-defaults)
Nota:system-event-names es una propiedad de nivel superior (fuera del journeys objeto) que se comparte entre todos los tipos de viaje.
Ejemplo: Agregar un SEPA Instant Tipo de Viaje
ipf.business-operations.payment-search {
system-event-names = [
"ActionInvoked",
"ActionRetriesExhausted",
# ... other event names
]
journeys {
payment { ... } # existing
recall { ... } # existing
bulk { ... } # existing
batch { ... } # existing
# NEW: Custom journey type
sepa-instant {
alternative-identifiers = [
{
searchBy: "CLIENT_REQUEST_ID",
displayName: "Client Request ID"
}
]
transaction-types = ["Credit", "Debit"]
details-defaults {
showGraphs = true
flows {
opened = "latest"
sort = "asc"
}
events {
opened = "all"
sort = "asc"
}
}
search-form {
searchType: "sepa-instant"
formSections: [
# custom form fields
]
}
table-columns = [
# custom table columns
]
global-statuses = [
# custom statuses
]
date-types = [
"CREATED_AT",
"INSTANT_SETTLEMENT_TIME"
]
amount-types = [
"INSTANT_AMOUNT"
]
}
}
}