public ActionResult DetalleCartola(int Id)
        {
            string                 UserID     = User.Identity.GetUserId();
            FacturaPoliContext     db         = ParseExtensions.GetDatabaseContext(UserID);
            ClientesContablesModel objCliente = PerfilamientoModule.GetClienteContableSeleccionado(Session, UserID, db);

            var LstDetalle = CartolaBancariaModel.ObtenerDetalleCartola(Id, db, objCliente);

            return(View(LstDetalle));
        }
        public ActionResult EjecutarConciliacion(ComparacionConciliacionBancariaViewModel DatosConciliacion)
        {
            string                 UserID     = User.Identity.GetUserId();
            FacturaPoliContext     db         = ParseExtensions.GetDatabaseContext(UserID);
            ClientesContablesModel objCliente = PerfilamientoModule.GetClienteContableSeleccionado(Session, UserID, db);

            CuentaContableModel CuentaConsultada = ParseExtensions.ObtenerCuentaDesdeId(DatosConciliacion.IdCuentaContable, objCliente);

            var Reporte = new ReporteResultadoConciliacion();
            var DatosConciliacionActualizados = CartolaBancariaModel.ConciliarSiSePuede(DatosConciliacion, db, objCliente);
            var ActualizarTablas    = CartolaBancariaMacroModel.ActualizarEstadosConciliacion(db, objCliente, DatosConciliacionActualizados.Item2, CuentaConsultada, DatosConciliacionActualizados.Item1.IdCartola);
            var ReporteConciliacion = CartolaBancariaModel.calcularReporteConciliacionManual(DatosConciliacionActualizados.Item1.lstCartola, DatosConciliacionActualizados.Item1.lstLibroMayor);

            return(View(ReporteConciliacion));
        }
        public ActionResult ImportarCartolaBancariaManual(ObjCartolaMacro DataCartola)
        {
            string                 UserID     = User.Identity.GetUserId();
            FacturaPoliContext     db         = ParseExtensions.GetDatabaseContext(UserID);
            ClientesContablesModel objCliente = PerfilamientoModule.GetClienteContableSeleccionado(Session, UserID, db);

            CartolaBancariaMacroModel   CartolaMacro      = new CartolaBancariaMacroModel();
            List <CartolaBancariaModel> LstDetalleCartola = new List <CartolaBancariaModel>();
            bool Result = false;

            bool SiExiste = CartolaBancariaMacroModel.ExistenRepetidos(ParseExtensions.ToDD_MM_AAAA_Multi(DataCartola.FechaCartola), DataCartola.NumeroCartola, db, objCliente);

            if (SiExiste)
            {
                TempData["Error"] = "La cartola que se intenta importar ya existe.";
                RedirectToAction("ConciliacionBancaria", "ContabilidadConciliacionBancaria");
            }
            if (DataCartola.files != null && DataCartola.files.ContentLength > 0)
            {
                var CartolaPura = CartolaBancariaMacroModel.DeExcelAObjetoCartolaYVoucher(DataCartola.files);
                //var CartolaPura = CartolaBancariaModel.DeExcelACartolaBancaria(DataCartola.files, db);
                LstDetalleCartola = CartolaBancariaModel.ObtenerCartolaBancariaManual(CartolaPura, objCliente);
                Result            = CartolaBancariaMacroModel.GuardarCartolaBancariaManual(LstDetalleCartola, DataCartola.FechaCartola, DataCartola.NumeroCartola, objCliente, db);

                if (Result == true)
                {
                    TempData["Correcto"] = "Cartola Importada con éxito.";
                }
                else
                {
                    TempData["Error"] = "Hubo un error al importar la cartola.";
                }
            }
            else
            {
                TempData["Error"] = "No hay datos para importar";
            }

            return(RedirectToAction("ConciliacionBancaria", "ContabilidadConciliacionBancaria"));
        }
        public ActionResult ImportarCartolaBancaria(DatosProcesoConciliacion DatosConciliacion)
        {
            string                 UserID     = User.Identity.GetUserId();
            FacturaPoliContext     db         = ParseExtensions.GetDatabaseContext(UserID);
            ClientesContablesModel objCliente = PerfilamientoModule.GetClienteContableSeleccionado(Session, UserID, db);

            var DatosAcomparar = new ComparacionConciliacionBancariaViewModel();
            var LibroMayor     = new List <LibroMayorConciliacion>();

            var DetalleCartola = CartolaBancariaModel.ObtenerDetalleCartola(DatosConciliacion.IdCartola, db, objCliente);
            var Filtros        = MapperConciliacionBancaria.MapperFiltrosParaLibros(1, 0, "", "", DatosConciliacion.Anio,
                                                                                    DatosConciliacion.Mes, "", "", DatosConciliacion.IdCuentaContable.ToString(),
                                                                                    "", 0, true, 0, true);
            var LibroMayorConsultado = VoucherModel.GetLibroMayorTwo(Filtros, objCliente, db);

            LibroMayor = CartolaBancariaModel.getListaLibroMayor(LibroMayorConsultado.ResultStringArray);
            int CantidadRegistroLibroMayor = LibroMayor.Count();
            var remover = LibroMayor.Where(x => x.Rut.Contains("Total Final")).FirstOrDefault();

            LibroMayor.Remove(remover);

            if (DetalleCartola.Count() > 0 && LibroMayor.Count() > 0)
            {
                DatosAcomparar.lstCartola       = DetalleCartola;
                DatosAcomparar.lstLibroMayor    = LibroMayor;
                DatosAcomparar.IdCuentaContable = DatosConciliacion.IdCuentaContable;
                DatosAcomparar.IdCartola        = DatosConciliacion.IdCartola;
            }
            else
            {
                TempData["Error"] = "No hay datos para iniciar el proceso.";
                return(RedirectToAction("ConciliacionBancaria", "ContabilidadConciliacionBancaria"));
            }

            return(View(DatosAcomparar));
        }
        public ActionResult ImportarExcelConciliacionBancaria(ObjCartolaMacro DataCartola)
        {
            string                 UserID     = User.Identity.GetUserId();
            FacturaPoliContext     db         = ParseExtensions.GetDatabaseContext(UserID);
            ClientesContablesModel objCliente = PerfilamientoModule.GetClienteContableSeleccionado(Session, UserID, db);

            Session["CartolaImportada"] = null;

            using (var dbContextTransaction = db.Database.BeginTransaction())
            {
                try
                {
                    if (DataCartola.files != null && DataCartola.files.ContentLength > 0)
                    {
                        string fileExtension = Path.GetExtension(DataCartola.files.FileName);

                        if (fileExtension == ".xlsx" || fileExtension == ".xls")
                        {
                            List <string[]> MayorConsultado = Session["LibroMayorTwo"] as List <string[]>;
                            List <LibroMayorConciliacion> MayorConsultadoLista = CartolaBancariaModel.getListaLibroMayor(MayorConsultado);

                            string NombreCtaCont = MayorConsultado[0][9];
                            ViewBag.NombreCuentaContable = NombreCtaCont;

                            int CuentaConsultadaID = (int)Session["ObjetoCuentaContableConsultada"];
                            CuentaContableModel CuentaConsultada = UtilesContabilidad.CuentaContableDesdeID(CuentaConsultadaID, objCliente);
                            //DeExcelAObjetoCartolaYVoucher

                            var ObjCartolaCompleto = CartolaBancariaMacroModel.ConvertirAObjetoCartola(DataCartola.files /*NombreCtaCont*/);
                            var ResultadoInsercion = CartolaBancariaMacroModel.ConvertirAVoucher(ObjCartolaCompleto, objCliente, db, CuentaConsultada, DataCartola.FechaCartola, DataCartola.NumeroCartola);

                            //Usar para el reporte de conciliacion bancaria
                            var NoInsertados = ResultadoInsercion.Item2;

                            Session["ReporteNoInsertados"] = NoInsertados;

                            if (ResultadoInsercion.Item1 == false)
                            {
                                TempData["Error"] = "Esta cartola ya existe.";
                                return(RedirectToAction("ConciliacionBAutomatica", "ContabilidadConciliacionBancaria"));
                            }
                        }
                    }
                    else
                    {
                        TempData["Error"] = "No existen registros en el fichero.";
                        return(RedirectToAction("ConciliacionBAutomatica", "ContabilidadConciliacionBancaria"));
                    }

                    dbContextTransaction.Commit();

                    TempData["Correcto"] = "Cartola y Vouchers creados con éxito.";
                    return(RedirectToAction("ResultadoConciliacion", "ContabilidadConciliacionBancaria"));
                }
                catch (Exception ex)
                {
                    dbContextTransaction.Rollback();
                    TempData["Error"] = $"Error al realizar esta acción. Mensaje de error: {ex.Message}. En caso de necesitarlo informar este error.";
                    db.DBErrores.Add(new ErrorMensajeMonitoreo {
                        Mensaje = ex.Message
                    });
                    db.SaveChanges();
                    return(RedirectToAction("ConciliacionBAutomatica", "ContabilidadConciliacionBancaria"));
                }
            }
        }