public async Task <IActionResult> ObtenerTrama([FromBody] TramaDto trama) { try { var obtenerTramaResult = await _cobranzaService.ObtenerTrama(trama); return(Ok(obtenerTramaResult)); } catch (Exception ex) { return(Ok(ex)); } }
public async Task <PlanillaDto> ObtenerTrama(TramaDto trama) { PlanillaDto planillaDto = new PlanillaDto(); var tramaResult = await _cobranzasRepository.ObtenerTrama(_mapper.Map <Trama>(trama)); if (tramaResult == null) { return(null); } planillaDto = _mapper.Map <PlanillaDto>(tramaResult); // var nombreRuta = planillaDto.RutaTrama.Replace('','*'). planillaDto.RutaTrama = Base64StringEncode(planillaDto.RutaTrama); //planillaDto.RutaTrama = Base64StringEncode(@"D:\Kevin\Develop\APPCONCILACIONES\Doc. Protecta\CARGA DE PLANOS AL BANCO\BCP\19-02\crep.txt"); return(planillaDto); }
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); }