private ListadoConciliacionDto ObtenerListadoConciliacionManual(ConciliacionDto conciliacionDto) { var retornar = new ListadoConciliacionDto(); retornar.IsValido = conciliacionDto.IsValido; retornar.Mensaje = conciliacionDto.Mensaje; retornar.IdProceso = conciliacionDto.IdProceso; retornar.IdBanco = conciliacionDto.IdBanco.ToString(); retornar.TipoOperacion = "GP"; retornar.IdProducto = conciliacionDto.IdProducto.ToString(); retornar.NumeroRecibo = FormatoNumeroRecibo(conciliacionDto.NumeroRecibo, conciliacionDto.IdBanco); retornar.Importe = conciliacionDto.Importe; retornar.IdCuentaBanco = conciliacionDto.NumeroCuenta == string.Empty ? this.NumeroCuenta : conciliacionDto.NumeroCuenta; retornar.NombreCliente = conciliacionDto.NombreCliente; retornar.DocumentoCliente = conciliacionDto.NumeroDocuento.ToString(); retornar.FechaVencimiento = (conciliacionDto.FechaVencimiento); retornar.FechaCargaArchivo = DateTime.Now.ToString("dd/MM/yyyy"); retornar.FechaOperacion = conciliacionDto.FechaPago; retornar.IdMoneda = conciliacionDto.IdMoneda == string.Empty ? this.IdMoneda : conciliacionDto.IdMoneda; //FlagExtorno = int.Parse(conciliacionDto.FlagExtorno)==2 || this.FlagExtorno == 2 ? 2 : 1 retornar.FlagExtorno = 2; retornar.UserCode = conciliacionDto.UserCode; return(retornar); }
private ListadoConciliacionDto ObtenerListadoConciliacion(ConciliacionDto conciliacionDto) { return(new ListadoConciliacionDto() { IsValido = conciliacionDto.IsValido, Mensaje = conciliacionDto.Mensaje, IdProceso = conciliacionDto.IdProceso, IdBanco = conciliacionDto.IdBanco.ToString(), TipoOperacion = "GP", IdProducto = conciliacionDto.IdProducto.ToString(), NumeroRecibo = FormatoNumeroRecibo(conciliacionDto.NumeroRecibo, conciliacionDto.IdBanco), Importe = FormatoImporte(conciliacionDto.Importe), IdCuentaBanco = conciliacionDto.NumeroCuenta == string.Empty ? this.NumeroCuenta : conciliacionDto.NumeroCuenta, NombreCliente = conciliacionDto.NombreCliente, DocumentoCliente = conciliacionDto.NumeroDocuento.ToString(), FechaVencimiento = FormatoFecha(conciliacionDto.FechaVencimiento), FechaCargaArchivo = DateTime.Now.ToString("dd/MM/yyyy"), FechaOperacion = FormatoFecha(conciliacionDto.FechaPago), NumeroOperacion = conciliacionDto.NumeroOperacion, Referencia = conciliacionDto.Referencia, IdMoneda = conciliacionDto.IdMoneda == string.Empty ? this.IdMoneda : conciliacionDto.IdMoneda, //FlagExtorno = int.Parse(conciliacionDto.FlagExtorno)==2 || this.FlagExtorno == 2 ? 2 : 1 FlagExtorno = int.Parse(conciliacionDto.FlagExtorno) == 2 ? 2 : 1, UserCode = conciliacionDto.UserCode }); }
public void ValidateProforma(ref ConciliacionDto conciliacionDto, ref List <string> ListProforma, string Line, int segmento, int idbanco) { if (conciliacionDto.IsValido && (((idbanco == 1 || idbanco == 2) && segmento == 2) || (idbanco == 3 && segmento == 1))) { if (ListProforma.Contains(conciliacionDto.NumeroRecibo.Trim())) { conciliacionDto.IsValido = false; conciliacionDto.Mensaje = "Excepción en la Ln " + Line + " : El código de proforma ya existe en la trama."; } else { ListProforma.Add(conciliacionDto.NumeroRecibo.Trim()); } } }
public async Task <TramaDto> ValidarTrama(string usercode, string base64String, int idbanco, int idproducto, string idproceso, string fechaInicio, string fechaFinal, string CodProforma) { int CantidadCab = 0; string MontoCab = string.Empty; decimal MontoDet = 0; int CantidadDet = 0; string MontoOrigen = string.Empty; decimal MontoDetOrigen = 0; Boolean ExistCab = true, ExistPie = true; Boolean ExistDet = false; List <string> ListProforma = new List <string>(); TramaDto tramaDto = new TramaDto(); ConciliacionDto conciliacionDto = new ConciliacionDto(); DateTime tinicial = DateTime.Now; tramaDto.listado = new List <ListadoConciliacionDto>(); int totalfilas = 1; int indice = 1; bool ProcesoValido = true; idproceso = string.IsNullOrEmpty(idproceso) ? ObtenerIdProceso(idbanco, idproducto, usercode) : idproceso; if (idbanco != 0) { Stream stream = new MemoryStream(Convert.FromBase64String(base64String)); StreamReader file = new StreamReader(stream); string line; int numeroFilas = 1; while ((line = file.ReadLine()) != null) { if (!string.IsNullOrEmpty(line.Trim())) { totalfilas++; } } stream = new MemoryStream(Convert.FromBase64String(base64String)); file = new StreamReader(stream); while ((line = file.ReadLine()) != null) { if (!string.IsNullOrEmpty(line.Trim())) { tramaDto.IdProducto = idproducto; tramaDto.StringTrama = line.Trim(); tramaDto.IdBanco = idbanco; tramaDto.Fila = numeroFilas.ToString(); tramaDto.Segmento = ObtenerSegmento(numeroFilas, totalfilas, idbanco); tramaDto.TipoIngreso = "R"; var tramaResult = await _cobranzasRepository.ValidarTrama(_mapper.Map <Trama>(tramaDto)); conciliacionDto = _mapper.Map <ConciliacionDto>(tramaResult); if (tramaDto.Segmento == 1 && conciliacionDto.IsValido == false) { ExistCab = false; } if (tramaDto.Segmento == 3 && conciliacionDto.IsValido == false) { ExistPie = false; } ValidateProforma(ref conciliacionDto, ref ListProforma, tramaDto.Fila, tramaDto.Segmento, idbanco); if (((idbanco == 1 || idbanco == 2) && tramaDto.Segmento == 2) || (idbanco == 3 && tramaDto.Segmento == 1)) { ExistDet = true; } if (conciliacionDto.IsValido) { if (((idbanco == 1) && tramaDto.Segmento == 1) || (idbanco == 2 && tramaDto.Segmento == 3)) { CantidadCab = Int32.Parse(tramaResult.CantTotal); MontoCab = FormatoImporte(tramaResult.MontoTotal); if (idbanco == 2) { MontoOrigen = FormatoImporte(tramaResult.MontoTotalOrigen); } } conciliacionDto.IdBanco = idbanco; conciliacionDto.IdProducto = idproducto; conciliacionDto.IdProceso = idproceso; conciliacionDto.UserCode = usercode; if (((idbanco == 1 || idbanco == 2) && tramaDto.Segmento == 2) || (idbanco == 3 && tramaDto.Segmento == 1)) { CantidadDet++; MontoDet = MontoDet + Convert.ToDecimal(FormatoImporte(conciliacionDto.Importe)); if (idbanco == 2) { MontoDetOrigen = MontoDetOrigen + Convert.ToDecimal(FormatoImporte(conciliacionDto.ImporteOrigen)); } tramaDto.listado.Add(ObtenerListadoConciliacion(conciliacionDto)); } else if (idbanco == 2 && tramaDto.Segmento == 1) { this.NumeroCuenta = conciliacionDto.NumeroCuenta; this.IdMoneda = conciliacionDto.IdMoneda; } tramaDto.EsValido = conciliacionDto.IsValido; tramaDto.Mensaje = conciliacionDto.Mensaje; indice++; } else { tramaDto.listado.Add(new ListadoConciliacionDto { IsValido = conciliacionDto.IsValido, Mensaje = conciliacionDto.Mensaje, TipoOperacion = "GP" }); ProcesoValido = false; tramaDto.EsValido = conciliacionDto.IsValido; //break; } numeroFilas++; //if (!conciliacionDto.IsValido) // { // ProcesoValido = false; // tramaDto.EsValido = conciliacionDto.IsValido; // break; // } } else { ProcesoValido = false; break; } } try { if ((idbanco == 1 && ExistCab && ExistDet) || (idbanco == 2 && tramaDto.Segmento == 3 && ExistPie && ExistDet)) { if (CantidadCab != CantidadDet) { tramaDto.listado.Add(new ListadoConciliacionDto { IsValido = false, Mensaje = "Excepción " + ((idbanco == 2) ? "Pie" : "Cabecera") + " : La cantidad total de registros enviados no corresponde con el detalle.", TipoOperacion = "GP" }); } if (MontoDet.ToString("N2") != Convert.ToDecimal(MontoCab).ToString("N2")) { tramaDto.listado.Add(new ListadoConciliacionDto { IsValido = false, Mensaje = "Excepción " + ((idbanco == 2) ? "Pie" : "Cabecera") + " : El monto total de los importes pagados no corresponde con el detalle.", TipoOperacion = "GP" }); } if (idbanco == 2) { if (MontoDetOrigen.ToString("N2") != Convert.ToDecimal(MontoOrigen).ToString("N2")) { tramaDto.listado.Add(new ListadoConciliacionDto { IsValido = false, Mensaje = "Excepción " + ((idbanco == 2) ? "Pie" : "Cabecera") + " : El monto total de pagos no corresponde con la suma de importes de origen.", TipoOperacion = "GP" }); } } } if (!ExistDet) { tramaDto.listado.Add(new ListadoConciliacionDto { IsValido = false, Mensaje = "Excepción Detalle : No se encontró ningún detalle en la trama.", TipoOperacion = "GP" }); } }catch (Exception ex) { } } else { try { var LiqManual = _mapper.Map <Models.ResponseControl>(await _cobranzasRepository.ObtenerLiquidacionManual(idproceso, idproducto, idbanco, CodProforma, fechaInicio, fechaFinal, usercode)); if (LiqManual.Code != "1") { var LstConciliacion = _mapper.Map <List <ConciliacionDto> >(LiqManual.Data); foreach (ConciliacionDto conciliacion in LstConciliacion) { conciliacion.UserCode = usercode; var ListaConciliacion = ObtenerListadoConciliacionManual(_mapper.Map <ConciliacionDto>(conciliacion)); tramaDto.listado.Add(ListaConciliacion); } tramaDto.EsValido = true; return(tramaDto); } } catch (Exception ex) { tramaDto.EsValido = false; tramaDto.Mensaje = ex.Message; } } //if (ProcesoValido) if (tramaDto.listado.Where(x => x.IsValido == true).Count() > 0) { var result = await _cobranzasRepository.InsertarProceso(_mapper.Map <List <ListaConciliacion> >(tramaDto.listado)); if (result) { tramaDto.EsValido = true; tramaDto.Mensaje = "Procesado con éxito"; } else { tramaDto.EsValido = false; tramaDto.Mensaje = "No se pudo realizar la insercion de los documentos"; } } else { tramaDto.EsValido = true; tramaDto.Mensaje = "No se pudo Encontraron documentos a insertar"; } DateTime tfinal = DateTime.Now; TimeSpan totaltiempo = new TimeSpan(tfinal.Ticks - tinicial.Ticks); tramaDto.TiempoTranscurrido = totaltiempo.TotalSeconds.ToString(); return(tramaDto); }