Esempio n. 1
0
        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);
        }
Esempio n. 2
0
 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
     });
 }
Esempio n. 3
0
 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());
         }
     }
 }
Esempio n. 4
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);
        }