public async Task <IActionResult> ObtenerTrama([FromBody] TramaDto trama)
        {
            try {
                var obtenerTramaResult = await _cobranzaService.ObtenerTrama(trama);

                return(Ok(obtenerTramaResult));
            }
            catch (Exception ex)
            {
                return(Ok(ex));
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }