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 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 static Tuple <ComparacionConciliacionBancariaViewModel, List <RelacionadosYConciliados> > ConciliarSiSePuede(ComparacionConciliacionBancariaViewModel DatosConciliacion, FacturaPoliContext db, ClientesContablesModel ObjCliente)
    {
        List <RelacionadosYConciliados> Relacionados = (from LibroM in DatosConciliacion.lstLibroMayor
                                                        join CartolaB in DatosConciliacion.lstCartola on LibroM.NumDocAsignado equals CartolaB.Folio
                                                        where LibroM.Haber > 0 && CartolaB.Debe > 0 && Math.Abs(LibroM.Haber) - Math.Abs(CartolaB.Debe) == 0 ||
                                                        CartolaB.Haber > 0 && LibroM.Debe > 0 && Math.Abs(CartolaB.Haber) - Math.Abs(LibroM.Debe) == 0

                                                        select new RelacionadosYConciliados
        {
            IdDetalle = LibroM.DetalleVoucherID,
            IdCartolaDetalle = CartolaB.CartolaBancariaModelId,
            VoucherId = LibroM.VoucherId
        }).ToList();


        var ListaConciliada = (from LibroM in DatosConciliacion.lstLibroMayor
                               join CartolaB in DatosConciliacion.lstCartola on LibroM.NumDocAsignado equals CartolaB.Folio
                               where LibroM.Haber > 0 && CartolaB.Debe > 0 && Math.Abs(LibroM.Haber) - Math.Abs(CartolaB.Debe) == 0 ||
                               CartolaB.Haber > 0 && LibroM.Debe > 0 && Math.Abs(CartolaB.Haber) - Math.Abs(LibroM.Debe) == 0

                               select new Tuple <LibroMayorConciliacion, CartolaBancariaModel>(LibroM, CartolaB)).Select(x => { x.Item1.EstaConciliado = true; x.Item2.EstaConciliado = true; return(x); }).ToList();


        return(Tuple.Create(DatosConciliacion, Relacionados));
    }