Para poder configurar un transfer bancario en Json debemos considerar los siguientes parámetros.
Tipo de Fila:
- "row_type": Tipo de renglón o fila, puede ser “header” para encabezado, “body” para cuerpo y “footer” para pie de página.
- "max_chars": Se define el largo de la estructura, en este ejemplo se definen 400 caracteres.
Tipo de Dato:
- "align": Alineamiento del dato, se puede alinear todo para la izquierda con el “ljust” o todo a la derecha con “rjust”.
- "order": Correlativo, debe iniciar en 1 y los siguientes deben ser 2,3,4 siguiendo una cadena.
- "value": Dato que aparecerá en el reporte. Pueden ser variables como pueden ser datos fijos. Depende especialmente del campo “Field_Type”.
- "filler": Dato que completará los espacios en caso de ser menor al largo. Ejemplo: Si el dato es de largo 5 y el renglón o fila tiene 10 caracteres, el filler va a completar los 5 espacios restantes con el dato que se desee (en este caso 0).
- "field_type": Tipo de campo, puede ser fijo “custom_text” o pueden ser datos variables que se llamen desde la ficha del trabajador con el nombre "specific_field". Para este segundo dato se dejará una lista de variables existentes.
- "chars_length": Se define la cantidad de caracteres que debe tener el campo creado.
Un ejemplo de como utilizar los parámetros tipo dato para obtener información relacionada al transfer:
Ejemplo 1:
{ "align": "rjust", "order": 1, "value": "1", "filler": "0", "field_type": "custom_text", "chars_length": 2 },
Ese campo, estamos definiendo un dato 1 alineado a la derecha de largo 2, por lo tanto el espacio vacío se llenará con un 0. Por lo tanto aparecería un 01.
Ejemplo 2:
{ "align": "rjust", "order": 8, "value": "total_records_amount", "filler": "0", "field_type": "specific_field", "chars_length": 13 },
En este ejemplo se está definiendo un campo específico que retorna el monto total del a pagar de todos los trabajadores. Si la cantidad de caracteres es menor a 13 ingresa 0 a la izquierda hasta completar los 13 caracteres.
Lista de variables
Ahora definimos las variables que están disponible, hay que considerar que existen variables que solo son funcionales en el header, footer o en el body. Esto especificamente porque el body retorna información del trabajador a diferencia del header y footer quienes retornan información consolidada de toda la nómina y de la compañía.
Campos compartidos (Header, Body, Footer):
- payment_date => Fecha de pago
- file_creation_date => Fecha de creacion del archivo
- company_identifier => Identificador de la compañia
- consecutive_number => Numero consecutivo
Campos Header/Footer
- company_name => Nombre compañia
- company_bank_account_number => Cuenta bancaria compañia
- company_bank_code => codigo banco de la compañia
- total_records_count => cuenta total de registros
- total_records_amount => total a pagar (En proceso de nómina) / total finiquito (en proceso finiquito)
- total_records_received => Total a pagar (En proceso de finiquito)
Campos Body:
- employee_name => Primer nombre (empleado)
- employee_middle_name => Segundo nombre (empleado)
- employee_lastname => Primer apellido (empleado)
- employee_mothers_name => Segundo apellido (empleado)
- employee_company_email => Email de la compañia (empleado)
- employee_email => Email (empleado)
- employee_identifier => Identificador (empleado)
- employee_rut => Rut (empleado) - Exclusivo Chile
- employee_bank_account => Cuenta bancaria (empleado)
- employee_bank_code => Codigo banco (empleado)
- employee_amount => Total a pagar del proceso (Empleado nómina) / Total pago Finiquito (Empleado Finiquito)
- employee_total_received => Total a pagar del proceso (empleado Finiquito)
- employee_formatted_full_name => Nombre completo formateado (Empleado)
- employee_contract_id => ID del contrato
- employee_curp => CURP (empleado) - Exclusivo México
- employee_bank_interbank => Cuenta clabe (empleado) - Exclusivo México
- employee_destination_square => Plaza Destino (4,5 Y 6to) digito de la cuenta clabe (Empleado) - Exclusivo México
- company_account_number => Numero de cuenta bancaria de la compañia
- employee_transfer_key => Clave bancaria para las instituciones en MX - Exclusivo México
- employee_account_type => Tipo de cuenta del trabajador
- employee_payment_type => Tipo de pago del trabajador
- payroll_type => Tipo de proceso, puede ser nomina (payroll) o finiquito (settlements)
Condiciones Bancos
Para poder filtrar que trabajadores no deben salir en el transfer bancario debido a que es un layout interbancario o del mismo banco se debe utilizar este extracto de código. Esto es solamente exclusivo para Perú y México.
"conditions": { "query": { "employee_bank_information_bank_id_not_eq": 136 } },
Donde se incluye una parte que dice “conditions”, acá se debe aplicar la condición en, que en este ejemplo está filtrando por el banco que tiene cada empleado. Luego se define que bancos se debe condicionar y finalmente si los trabajadores pertenecientes a ese banco se deben incluir o excluir. Para este último caso se debe utilizar.
- "employee_bank_information_bank_id_not_eq": Busco quienes no tienen el banco
- "employee_bank_information_bank_id_eq": Busco solo quienes tienen el banco asignado.
Luego de los dos puntos se debe dejar el ID del banco que corresponda, esa lista de bancos serían los dejo en el siguiente excel.
Cambiar Nombre al transfer bancario
Es posible que se pueda seleccionar un nombre según la necesidad del cliente para esto debemos escribir al inicio como ejemplo:
"file_name": "CONCAT(CURRENT_DATE('%m'), CURRENT_DATE('%Y'), code, correlative_id)",
- CURRENT_DATE: Fecha de hoy
- FORMAT_DATA(fecha, format): Cuyo valor puede ser un campo fecha de la tabla company una fecha.
- correlative_id: Correlativo.
No es obligatorio su uso, si no deja el detalle el sistema seguirá funcionando normalmente.
Formato de Fechas
Para configurar formatos de fecha solo se debe utilizar esta estructura %Y%m%d o %d%m%Y entre otras.
{ "align": "ljust", "order": 4, "value": "file_creation_date", "filler": "0", "format": "%m%d%Y", "field_type": "specific_field", "chars_length": 8 },
Con esto debería salir la fecha en formato mm/dd/yyyy, osea si es 25 de diciembre de 2024 mostraría 12/25/2024. Si requieren mas formatos pueden revisar esté Link.
Formato del TXT
Se puede seleccionar el formato del archivo en caso que el banco requiera explicitamente un tipo de archivo, estos pueden ser UNIX o Windows. El código para poder seleccionar un formato debería ser:
- Unix: ("encoding": "Unix")
- Windows: ("encoding": "Win")
Por defecto, siempre está codificado en formato Unix.
Rescatar rango de información
Para poder obtener parte de una variable y no la data completa podemos utilizar la función.
"Chars_range": Busca rango de la información según el rango que se configure.
Dejo un ejemplo de como se debe configurar para obtener parte de la información que se requiere (en este ejemplo se puede ver que se va a obtener el identificador del trabajador):
{ "align": "ljust", "order": 3, "value": "employee_identifier", "filler": " ", "field_type": "specific_field", "chars_range": [ 4, 6 ], "chars_length": 7 },
Ejemplo de un transfer bancario
Dejamos un ejemplo de un transfer en TXT pdonde consideramos varios de los puntos antes mecionados.
{ "status": "active", "type": "LayoutTxt", "file_name": "", "conditions": { "query": {} }, "encoding": "Unix", "layout_contents_attributes": [ { "structure": { "max_chars": 30, "row_type": "header", "content": [ { "order": 1, "code": "", "formula": "", "field_type": "blank_space", "chars_length": 10, "align": "ljust", "value": "", "filler": "0" }, { "order": 2, "code": "", "formula": "", "field_type": "custom_text", "chars_length": 10, "align": "ljust", "value": "Some Value", "filler": "0" }, { "order": 3, "code": "", "formula": "", "field_type": "specific_field", "chars_length": 10, "align": "ljust", "value": "company_identifier", "filler": "0" } ] } }, { "structure": { "max_chars": 50, "row_type": "body", "content": [ { "order": 1, "code": "", "formula": "", "field_type": "blank_space", "chars_length": 10, "align": "ljust", "value": "", "filler": "0" }, { "order": 2, "code": "", "formula": "", "field_type": "custom_text", "chars_length": 10, "align": "ljust", "value": "Some Value", "filler": "0" }, { "order": 3, "code": "", "formula": "", "field_type": "specific_field", "chars_length": 10, "align": "ljust", "value": "employee_rut", "filler": "0" }, { "order": 4, "code": "payroll_3", "formula": "if(payroll_3 == '3',3,4)", "field_type": "specific_field", "chars_length": 10, "align": "ljust", "value": "3", "filler": "0" }, { "align": "ljust", "order": 5, "value": "file_creation_date", "filler": "0", "format": "%d%m%Y", "field_type": "specific_field", "chars_length": 10 } ] } } ] }
Otros puntos a considerar
- En cada estructura vienen los campos formula y code. Pero en caso de no utilizarlos no es obligatorio completarlos, estos pueden quedar vacios.
- El code sirve para que el valor que viene de esa columna se pueda utilizar en la formula como se puede ver en el ejemplo anterior.
¿Necesitas ayuda?
Si tienes dudas o consultas, nuestro equipo de soporte estará para proporcionar ayuda personalizada. Estamos comprometidos a brindarte la mejor asistencia posible. ¡No dudes en contactarnos!
¿Le ha sido útil este artículo?
¡Qué bien!
Gracias por sus comentarios
¡Sentimos mucho no haber sido de ayuda!
Gracias por sus comentarios
Sus comentarios se han enviado
Agradecemos su esfuerzo e intentaremos corregir el artículo