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
Ejemplo de encabezado de la factura parseado image
Ejemplo de detalle de factura parseado
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:
https://github.com/Jorgelig-Labs/buro-credito-factura-parser/wiki/Ejemplo-de-uso