Parser para las facturas de buro de credito en formato texto

les comparto un "Parser" para las facturas de Buro de Credito en formato texto *.wri. Tambien pongo un proyecto de test y ejemplos de uso.

Implementacion de TextReader para importar las facturas de buro de credito de texto a una estructura de datos

image.png

Ejemplo de encabezado de la factura parseado image

image.png

Ejemplo de detalle de factura parseado

image.png

Por favor si tienes cualquier duda, consejo para mejorar mi codigo o deseas ayudarme a mejorar no dudes en contactarme o abrir un "Pull Request"


/// <summary>
///  Obtener columnas de factura de buro de credito a una lista
///</summary>
///<param name="msStream">Archivo de texto plano(extension *.wri cargado en memoria</param>
///<param name="filename">Nombre del archivo cargado</param>
///<returns>Lista de las descripciones de la factura</returns> 
public List<BuroCreditoBillingDetail> GetBillingDetailsFromTextFile(MemoryStream msStream, string filename){
using (var trackingReader = new BureauTextReader(msStream))
            {
                while ((line = trackingReader.ReadLine()) != null)
                {

                    var billingCode = trackingReader.BcBillingCode;
                    var pageNumber = trackingReader.PageNumber;

                    if (!trackingReader.IsLineToIgnore() && trackingReader.IsItemDataLine())
                    {
                        var item = ToBuroCreditoBillingDetail(trackingReader);
                        result.Add(item);
                    }
                    var position = trackingReader.Position;
                    var lineNumber = trackingReader.LineNumber;
                    var message = $"{lineNumber:d3}\t{line}\t\t[OK]";
                    Console.WriteLine(message);
                    //_logger.LogInformation(message: message);
                }
            }
}


        private Func<BureauTextReader, BuroCreditoBillingDetail> ToBuroCreditoBillingDetail
            => trackingReader
                => new BuroCreditoBillingDetail
                {
                    Created = DateTime.Now,
                    Date = trackingReader.BcDataTimestamp,
                    NumeroControlConsulta = trackingReader.BcDataBcControlNumber,
                    ReferenceCode = trackingReader.BcDataReferenceCode,
                    LastName = trackingReader.BcDataLastName,
                    MaidenName = trackingReader.BcDataMaidenName,
                    FirstName = trackingReader.BcDataFirstName,
                    TipoConsulta = trackingReader.BcDataSvco,
                    Score = trackingReader.BcDataSc,
                    Auditoria = trackingReader.BcDataA,
                    IntercambioCirculoCredito = trackingReader.BcDataIC,
                    Paquete = trackingReader.BcDataP,
                    Hit = trackingReader.BcDataHN,
                    Optimiza = trackingReader.BcDataOp,
                    Amount = trackingReader.BcDataCosto
                };

Fuente: github.com/Jorgelig-Labs/buro-credito-factu..