Code Monkey home page Code Monkey logo

challenge's Introduction

Flux Challenge

Crear una aplicación en Javascript (puede ser un CLI, una webapp, una API) que pueda parsear un archivo TXT y generar un CSV y viceversa.

Un ejemplo del archivo TXT a parsear es el siguiente:

FLUX_<FECHA>.txt

H07092021
RPA0000000100000709202120470000000000000000000000000000000012345679125695425500124300010000002000000000000000
RPA0000000200200709202120495500000000000000000000000000000012345779125695579100095000010000004004000000000000
RPA0000000155500709202121303300000000000000000000000000000012345879125695589900124300010000001555000000000000
RPA0000000090000709202121334500000000000000000000000000000012345979125695809300002200010000000900000000000000
RRV0000000090000709202121340000000000000000000000000000000012346079125695809400002200010000000000000000000000
RPA0000000060000709202122111100000000000000000000000000000012346179125695911000057100010000000600000000000000
RRE0000000005000709202122135000000000000000000000000000000012346279125695915000057100010000000000000000000000
RPA0000001000000709202122152000000000000000000000000000000012346379125696020114021100020000000000000000100000
F000008000000000151070

Transformado en CSV debería verse así:

type,amount,date,time,externalId,authorization,store,terminal,cashback,cashout
payment,100.00,07/09/2021,20:47:00,123456,791256954255,001243,0001,20.00,0
payment,200.20,07/09/2021,20:49:55,123457,791256955791,000950,0001,40.04,0
payment,155.50,07/09/2021,21:30:33,123458,791256955899,001243,0001,15.55,0
payment,90.00,07/09/2021,21:33:45,123459,791256958093,000022,0001,9.00,0
reversal,90.00,07/09/2021,21:34:00,123460,791256958094,000022,0001,0,0
payment,60.00,07/09/2021,22:11:11,123461,791256959110,000571,0001,6.00,0
refund,5.00,07/09/2021,22:13:50,123462,791256959150,000571,0001,0,0
payment,1000.00,07/09/2021,22:15:20,123463,791256960201,140211,0002,0,1000.00

Descripción del archivo de conciliación

El archivo de conciliación que se quiere parsear así como los que se quieren generar siguen una lógica específica, la cual se detalla a continuación:

Nombre del archivo

El nombre del archivo siempre deberá ser: FLUX_<FECHA>.TXT donde la fecha siga el siguiente formato: DDMMAAAA por lo que un archivo generado el 31 de Diciembre del 2021 debería ser: FLUX_31122021.TXT.

Encabezado

La primera fila del archivo debe empezar con la letra H seguido de la fecha en el cual fue generado con el formato: DDMMAAAA.

Registros

Cada línea debe representar una transacción, cada campo tiene longitudes específicas definidas por la siguiente tabla:

Campo Longitud Descripción
Bandera 1 Es un indicador que indica el comienzo de una fila nueva
Tipo transacción 2 Indica que tipo de transacción es: PA - Pago, RV - Reverso y RE - Devolución
Monto 12 El monto con centavos. Justificado a la derecha
Fecha 8 Fecha de la transacción, con el formato: DDMMAAAA
Hora 6 Hora de la transacción con el formato: HHMMSS
ID Interno 36 ID interno correspondiente a la transacción
Autorización 12 Número de autorización de la transacción
ID Sucursal 6 ID de la sucursal que realizó la transacción
ID Terminal 4 ID de la terminal que realizó la transacción
Cashback 10 El monto con centavos. Justificado a la derecha
Cashout 12 El monto con centavos. Justificado a la derecha

Pie

La última fila deberá comenzar con la letra F seguido por el número de transacciones a 6 posiciones y justificado a la derecha; Y por último el monto total sumando los pagos y restando los reversos y devoluciones, el monto es con centavos a 15 posiciones y justificado a la derecha.

Puntos a evaluar

Considere que el archivo CSV desde el cual se generará el archivo TXT de conciliación puede venir en desorden y es deseable que el archivo TXT venga ordenado por hora.

Bonus:

  • Testing
  • Documentación

NOTA: Se puede utilizar cualquier biblioteca o modulo de npm.

challenge's People

Contributors

rodmoreno avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.