コード例 #1
0
    public static IQueryable <EstadoCuentasCorrientesViewModel> FiltrosCtaCorriente(IQueryable <EstadoCuentasCorrientesViewModel> LstCtaCorriente, FiltrosEstadoCtasCorrientes Filtros)
    {
        if (Filtros != null)
        {
            if (Filtros.Anio > 0)
            {
                LstCtaCorriente = LstCtaCorriente.Where(anio => anio.Fecha.Year == Filtros.Anio);
            }
            if (Filtros.Mes > 0)
            {
                LstCtaCorriente = LstCtaCorriente.Where(mes => mes.Fecha.Month == Filtros.Mes);
            }
            if (Filtros.CuentaAuxiliar > 0)
            {
                LstCtaCorriente = LstCtaCorriente.Where(cta => cta.CuentaContable.CuentaContableModelID == Filtros.CuentaAuxiliar);
            }
            if (!string.IsNullOrWhiteSpace(Filtros.RazonSocial))
            {
                LstCtaCorriente = LstCtaCorriente.Where(razonsocial => razonsocial.NombrePrestador.Contains(Filtros.RazonSocial));
            }
            if (!string.IsNullOrWhiteSpace(Filtros.Rut))
            {
                LstCtaCorriente = LstCtaCorriente.Where(rut => rut.RutPrestador.Contains(Filtros.Rut));
            }
            if (!string.IsNullOrWhiteSpace(Filtros.FechaInicio) && !string.IsNullOrWhiteSpace(Filtros.FechaFin))
            {
                DateTime dtFechaInicio = ParseExtensions.ToDD_MM_AAAA_Multi(Filtros.FechaInicio);
                DateTime dtFechaFin    = ParseExtensions.ToDD_MM_AAAA_Multi(Filtros.FechaFin);
                LstCtaCorriente = LstCtaCorriente.Where(fecha => fecha.Fecha >= dtFechaInicio && fecha.Fecha <= dtFechaFin);
            }
        }

        return(LstCtaCorriente);
    }
コード例 #2
0
    public static decimal CalcularAcumuladosGenerales(List <ObjetoCtasCtesPorConciliar> ListaOrdenada, IQueryable <EstCtasCtesConciliadasViewModel> ListaCtaCteCompleta, FiltrosEstadoCtasCorrientes Filtros)
    {
        decimal TotalDebe  = 0;
        decimal TotalHaber = 0;
        decimal TotalGeneralTodosLosAnios  = 0;
        decimal TotalGeneralAnioConsultado = 0;
        decimal TotalAcumulado             = 0;

        if (Filtros.TodosLosAnios == null)
        {
            var QueryASumar = ListaCtaCteCompleta.Where(x => x.Fecha.Year < Filtros.Anio).ToList();

            if (QueryASumar != null)
            {
                TotalDebe  = QueryASumar.Sum(y => y.DebeAnalisis);
                TotalHaber = QueryASumar.Sum(x => x.HaberAnalisis);
            }

            TotalGeneralTodosLosAnios  = Math.Abs(TotalHaber) - Math.Abs(TotalDebe);
            TotalGeneralAnioConsultado = ListaOrdenada.Sum(x => x.TotalSaldo);

            TotalAcumulado = TotalGeneralTodosLosAnios - TotalGeneralAnioConsultado;
        }
        else if (!string.IsNullOrWhiteSpace(Filtros.FechaInicio) && !string.IsNullOrWhiteSpace(Filtros.FechaFin))
        {
            //Query de esta busqueda
            DateTime dtFechaInicio = ParseExtensions.ToDD_MM_AAAA_Multi(Filtros.FechaInicio);
            var      QueryASumar   = ListaCtaCteCompleta.Where(x => x.Fecha < dtFechaInicio).ToList();

            if (QueryASumar != null)
            {
                TotalDebe  = QueryASumar.Sum(y => y.DebeAnalisis);
                TotalHaber = QueryASumar.Sum(x => x.HaberAnalisis);
            }
        }

        else if (Filtros.TodosLosAnios == "on")
        {
            TotalAcumulado = 0;
        }

        return(TotalAcumulado);
    }
コード例 #3
0
    public static bool GuardarCartolaBancariaManual(List <CartolaBancariaModel> LstCartolaAGuardar, string FechaCartola, int NumeroCartola, ClientesContablesModel ObjCliente, FacturaPoliContext db)
    {
        bool Result = false;

        decimal TotalCartola = Math.Abs(LstCartolaAGuardar.Sum(x => x.Haber) - LstCartolaAGuardar.Sum(x => x.Debe));

        CartolaBancariaMacroModel CartolaBancariaMacro = new CartolaBancariaMacroModel();

        CartolaBancariaMacro.FechaCartola             = ParseExtensions.ToDD_MM_AAAA_Multi(FechaCartola);
        CartolaBancariaMacro.ClientesContablesModelID = ObjCliente;
        CartolaBancariaMacro.NumeroCartola            = NumeroCartola;
        CartolaBancariaMacro.TotalCartola             = TotalCartola;
        CartolaBancariaMacro.CartolaDetalle           = LstCartolaAGuardar;

        db.DBCartolaBMacro.Add(CartolaBancariaMacro);
        db.SaveChanges();
        Result = true;

        return(Result);
    }
コード例 #4
0
 public static IQueryable <FatherObjEstadoResultado> GetEstadoResultadoFiltrado(IQueryable <FatherObjEstadoResultado> EstadoResultado, FiltrosEstadoResultado Filtros)
 {
     if (Filtros != null)
     {
         if (Filtros.Anio > 0)
         {
             EstadoResultado = EstadoResultado.Where(x => x.Fecha.Year == Filtros.Anio);
         }
         if (Filtros.Mes > 0)
         {
             EstadoResultado = EstadoResultado.Where(x => x.Fecha.Month == Filtros.Mes);
         }
         if (!string.IsNullOrWhiteSpace(Filtros.FechaDesde) && !string.IsNullOrWhiteSpace(Filtros.FechaHasta))
         {
             DateTime dtFechaDesde = ParseExtensions.ToDD_MM_AAAA_Multi(Filtros.FechaDesde);
             DateTime dtFechaHasta = ParseExtensions.ToDD_MM_AAAA_Multi(Filtros.FechaHasta);
             EstadoResultado = EstadoResultado.Where(x => x.Fecha >= dtFechaDesde && x.Fecha <= dtFechaHasta);
         }
     }
     return(EstadoResultado);
 }
        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"));
        }
コード例 #6
0
    public static bool GuardarCartolaBancaria(List <CartolaBancariaModel> LstCartolaConInfo /*, List<CartolaBancariaModel> LstCartolaSinInfo*/, string FechaCartola, int NumeroCartola, CuentaContableModel CuentaConsultada, ClientesContablesModel ObjCliente, FacturaPoliContext db)
    {
        bool Result = false;

        List <CartolaBancariaModel> CartolaBancariaCompleta = new List <CartolaBancariaModel>();

        CartolaBancariaCompleta.AddRange(LstCartolaConInfo);

        CartolaBancariaMacroModel CartolaBancariaMacro = new CartolaBancariaMacroModel();

        CartolaBancariaMacro.FechaCartola             = ParseExtensions.ToDD_MM_AAAA_Multi(FechaCartola);
        CartolaBancariaMacro.ClientesContablesModelID = ObjCliente;
        CartolaBancariaMacro.CuentaContableModelID    = CuentaConsultada;
        CartolaBancariaMacro.NumeroCartola            = NumeroCartola;
        CartolaBancariaMacro.CartolaDetalle           = CartolaBancariaCompleta;

        db.DBCartolaBMacro.Add(CartolaBancariaMacro);
        db.SaveChanges();
        Result = true;

        return(Result);
    }
コード例 #7
0
    public static List <LibroMayorConciliacion> getListaLibroMayor(List <string[]> MayorDeLaCuenta)
    {
        List <LibroMayorConciliacion> LstLibroMayor = new List <LibroMayorConciliacion>();

        if (MayorDeLaCuenta.Count() > 0)
        {
            foreach (string[] itemMayor in MayorDeLaCuenta)
            {
                LibroMayorConciliacion objMayor = new LibroMayorConciliacion();

                objMayor.FechaContabilizacion = ParseExtensions.ToDD_MM_AAAA_Multi(itemMayor[1]);
                objMayor.Comprobante          = itemMayor[2];
                objMayor.Glosa       = itemMayor[3];
                objMayor.RazonSocial = itemMayor[4];
                objMayor.Rut         = itemMayor[5];
                if (itemMayor[6].Contains("."))
                {
                    itemMayor[6] = itemMayor[6].Replace(".", "");
                }
                itemMayor[7]   = itemMayor[7].Replace(".", "");
                itemMayor[8]   = itemMayor[8].Replace(".", "");
                objMayor.Debe  = Convert.ToDecimal(itemMayor[6]);
                objMayor.Haber = Convert.ToDecimal(itemMayor[7]);
                objMayor.Saldo = Convert.ToDecimal(itemMayor[8]);
                objMayor.NombreCuentaContable = itemMayor[9];
                if (itemMayor[5] != "Total Final:")
                {
                    objMayor.VoucherId        = Convert.ToInt32(itemMayor[11]);
                    objMayor.DetalleVoucherID = Convert.ToInt32(itemMayor[12]);
                }

                LstLibroMayor.Add(objMayor);
            }
        }

        return(LstLibroMayor);
    }
コード例 #8
0
    public static List <LibroHonorariosDeTerceros> ProcesarLibroHonorariosTerceros(FacturaPoliContext db, ClientesContablesModel ObjCliente, QuickEmisorModel EstaEmpresa, List <string[]> BoletasNoProcesadas, string FechaContabilizacion)
    {
        BoletasNoProcesadas.RemoveRange(0, 8);
        int NumeroFinal = BoletasNoProcesadas.Count();                      //Arreglo para simular los elementos de un array partiendo del 0
        int IndexElementosNoDeseados     = BoletasNoProcesadas.Count() - 3; //Arreglo para simular los elementos de un array partiendo del 0
        int CantidadDeElementosAeliminar = NumeroFinal - IndexElementosNoDeseados;

        BoletasNoProcesadas.RemoveRange(IndexElementosNoDeseados, CantidadDeElementosAeliminar);

        List <LibroHonorariosDeTerceros> ListaARetornar = new List <LibroHonorariosDeTerceros>();

        string TipoReceptor = "H";
        List <LibroHonorariosDeTerceros> SinRepetidos = new List <LibroHonorariosDeTerceros>();

        foreach (string[] ColumnaBoleta in BoletasNoProcesadas)
        {
            LibroHonorariosDeTerceros VerificadorLibroHonorTercero = new LibroHonorariosDeTerceros();

            DateTime FechaConta      = ParseExtensions.ToDD_MM_AAAA_Multi(FechaContabilizacion);
            DateTime FechaInicial    = ParseExtensions.ToDD_MM_AAAA_Multi(ColumnaBoleta[2]);
            DateTime FechaFinal      = ParseExtensions.ToDD_MM_AAAA_Multi(ColumnaBoleta[5]);
            int      Folio           = Convert.ToInt32(ColumnaBoleta[0]);
            string   Estado          = ColumnaBoleta[1].Trim();
            string   RutPrestador    = ColumnaBoleta[6].Trim();
            string   NombrePrestador = ColumnaBoleta[7].Trim();
            decimal  Bruto           = Convert.ToDecimal(ColumnaBoleta[8].Replace(".", ""));
            decimal  Retenido        = Convert.ToDecimal(ColumnaBoleta[9].Replace(".", ""));
            decimal  Pagado          = Convert.ToDecimal(ColumnaBoleta[10].Replace(".", ""));

            SinRepetidos = db.DBLibroHonorariosTerceros.Where(x => x.ClienteContable.ClientesContablesModelID == ObjCliente.ClientesContablesModelID &&
                                                              x.NumOFolio == Folio &&
                                                              x.Receptor.RUT == RutPrestador &&
                                                              x.HaSidoConvertidoAVoucher == true &&
                                                              x.TipoLibro == TipoCentralizacion.Honorarios).ToList();

            List <VoucherModel> EstaVigenteEncontrado = new List <VoucherModel>();
            VoucherModel        VoucherEncontrado     = new VoucherModel();

            if (SinRepetidos != null || SinRepetidos.Count() > 0)
            {
                foreach (var ItemRepetido in SinRepetidos)
                {
                    VoucherEncontrado = db.DBVoucher.SingleOrDefault(x => x.VoucherModelID == ItemRepetido.VoucherModel.VoucherModelID);

                    if (VoucherEncontrado.DadoDeBaja == false)
                    {
                        EstaVigenteEncontrado.Add(VoucherEncontrado);
                    }
                }
            }

            if (SinRepetidos.Count() > 0 && SinRepetidos != null && EstaVigenteEncontrado.Count() > 0)
            {
                continue;
            }

            if (Estado == "VIGENTE")
            {
                VerificadorLibroHonorTercero.FechaContabilizacion = FechaConta;
                VerificadorLibroHonorTercero.Estado          = Estado;
                VerificadorLibroHonorTercero.ClienteContable = ObjCliente;
                VerificadorLibroHonorTercero.NumOFolio       = Folio;
                VerificadorLibroHonorTercero.FechaInicial    = FechaInicial;
                VerificadorLibroHonorTercero.RutEmpresa      = EstaEmpresa.RUTEmpresa;
                VerificadorLibroHonorTercero.NombreEmpresa   = EstaEmpresa.RazonSocial;
                VerificadorLibroHonorTercero.FechaFinal      = FechaFinal;
                VerificadorLibroHonorTercero.RutReceptor     = RutPrestador;
                VerificadorLibroHonorTercero.NombreReceptor  = NombrePrestador;
                VerificadorLibroHonorTercero.Brutos          = Bruto;
                VerificadorLibroHonorTercero.Retenidos       = Retenido;
                VerificadorLibroHonorTercero.Pagado          = Pagado;

                QuickReceptorModel objPrestador = QuickReceptorModel.CrearOActualizarPrestadorPorRut(VerificadorLibroHonorTercero.RutReceptor, VerificadorLibroHonorTercero.NombreReceptor, ObjCliente, db, TipoReceptor);
                VerificadorLibroHonorTercero.Receptor = objPrestador;

                ListaARetornar.Add(VerificadorLibroHonorTercero);
            }
        }
        if (ListaARetornar.Count() > 0 && SinRepetidos.Count() == 0)
        {
            db.DBLibroHonorariosTerceros.AddRange(ListaARetornar);
            db.SaveChanges();
        }

        return(ListaARetornar);
    }
コード例 #9
0
    //Queda pendiente crear este mismo metodo pero generico para reutilizar.
    //public static List<ObjCartolaYVouchers> ConvertirAObjetoCartola(HttpPostedFileBase file)
    //{
    //    List<ObjCartolaYVouchers> ReturnValues = new List<ObjCartolaYVouchers>();

    //    if (file == null || file.ContentLength == 0)
    //    {
    //        string Error = "Error Excel Vacio";
    //    }
    //    else
    //    {
    //        if (file.FileName.EndsWith("xls") || file.FileName.EndsWith("xlsx"))
    //        {
    //            string path = ParseExtensions.Get_Temp_path(file.FileName); // Le indicamos la ruta donde guardará el excel.

    //            if (File.Exists(path))
    //            {
    //                File.Delete(path); //Si ya existe lo elimina.
    //            }
    //            file.SaveAs(path); //Guardamos momentaneamente el fichero. -> La idea es extraer su información y luego eliminarlo.

    //            Application application = new Application();
    //            Workbook workBook = application.Workbooks.Open(path);
    //            Worksheet worksheet = workBook.ActiveSheet;
    //            Range range = worksheet.UsedRange;

    //            for (int row = 2; row <= range.Rows.Count; row++)
    //            {
    //                ObjCartolaYVouchers FilaAGuardar = new ObjCartolaYVouchers();

    //                FilaAGuardar.Fecha = ParseExtensions.ToDD_MM_AAAA_Multi(((Range)range.Cells[row, 1]).Text);
    //                FilaAGuardar.Docum = Convert.ToInt32(((Range)range.Cells[row, 2]).Text);
    //                FilaAGuardar.Detalle = ((Range)range.Cells[row, 3]).Text;
    //                FilaAGuardar.Debe = decimal.Parse(((Range)range.Cells[row, 4]).Text);
    //                FilaAGuardar.Haber = decimal.Parse(((Range)range.Cells[row, 5]).Text);
    //                FilaAGuardar.Saldo = decimal.Parse(((Range)range.Cells[row, 6]).Text);
    //                //Parte del voucher
    //                FilaAGuardar.CodigoInterno = ((Range)range.Cells[row, 7]).Text;
    //                FilaAGuardar.Rut = ((Range)range.Cells[row, 8]).Text;
    //                FilaAGuardar.Glosa = ((Range)range.Cells[row, 9]).Text;

    //                ReturnValues.Add(FilaAGuardar);
    //            }
    //            workBook.Close();
    //            File.Delete(path);
    //        }
    //    }

    //    return ReturnValues;
    //}

    public static Tuple <bool, List <ObjCartolaYVouchers> > ConvertirAVoucher(List <ObjCartolaYVouchers> LstCartolaYVouchers, ClientesContablesModel ObjCliente, FacturaPoliContext db, CuentaContableModel CuentaConsultada, string FechaCartola, int NumeroCartola)
    {
        bool Result = false;

        List <ObjCartolaYVouchers> LosQueNoPudieronInsertarse = new List <ObjCartolaYVouchers>();

        List <ObjCartolaYVouchers> LosQueTienenInformacion = LstCartolaYVouchers.Where(x => !string.IsNullOrWhiteSpace(x.CodigoInterno)).ToList();

        if (!LosQueTienenInformacion.Any())
        {
            throw new Exception("No hay registros validos para insertar.");
        }
        //Los que están en la cartola pero no en el mayor...
        List <ObjCartolaYVouchers> Pendientes = LstCartolaYVouchers.Where(x => string.IsNullOrWhiteSpace(x.CodigoInterno)).ToList();

        LosQueNoPudieronInsertarse.AddRange(Pendientes);

        List <CartolaBancariaModel> CartolaCompleta = new List <CartolaBancariaModel>();

        if (LstCartolaYVouchers.Any())
        {
            db.Configuration.AutoDetectChangesEnabled = false; //revisar como mejora la performance
            DateTime FechaConvertida = ParseExtensions.ToDD_MM_AAAA_Multi(FechaCartola);
            DeleteCartolaBancariaExistente(FechaConvertida, NumeroCartola, db, ObjCliente);
            List <CartolaBancariaModel> CartolaDetalle = new List <CartolaBancariaModel>();


            DateTime Fecha = LosQueTienenInformacion.FirstOrDefault().Fecha;
            int?     nullableProxVoucherNumber = ParseExtensions.GetNumVoucher(ObjCliente, db, Fecha.Month, Fecha.Year);
            int      baseNumberFolio           = nullableProxVoucherNumber.Value;

            List <VoucherModel> LstVoucher = new List <VoucherModel>();

            foreach (ObjCartolaYVouchers itemCartola in LosQueTienenInformacion)
            {
                CuentaContableModel CuentaAUsar   = UtilesContabilidad.CuentaContableDesdeCodInterno(itemCartola.CodigoInterno, ObjCliente);
                QuickReceptorModel  Prestador     = UtilesContabilidad.ObtenerPrestadorSiExiste(itemCartola.Rut, db, ObjCliente);
                TipoOrigen          TipoPrestador = UtilesContabilidad.RetornaTipoReceptor(Prestador);

                if (CuentaAUsar == null)
                {
                    throw new Exception($"La cuenta contable que intentas ingresar no está en el plan de cuentas O no está digitada en el excel CUENTA CONTABLE CON ERROR : {itemCartola.CodigoInterno}");
                }

                if (CuentaAUsar.TieneAuxiliar == 1 && Prestador != null || CuentaAUsar.TieneAuxiliar == 0 && Prestador == null)
                {
                    VoucherModel CapaVoucher = new VoucherModel();

                    CapaVoucher.TipoOrigenVoucher = TipoPrestador;

                    CapaVoucher.FechaEmision             = itemCartola.Fecha;
                    CapaVoucher.NumeroVoucher            = baseNumberFolio;
                    CapaVoucher.NumVoucherWithDate       = ParseExtensions.BuildNewFormatNumVoucher(baseNumberFolio, Fecha);
                    CapaVoucher.ClientesContablesModelID = ObjCliente.ClientesContablesModelID;
                    CapaVoucher.Glosa = itemCartola.Glosa;

                    if (itemCartola.Debe > 0 && itemCartola.Haber == 0)
                    {
                        CapaVoucher.Tipo = TipoVoucher.Ingreso;
                    }
                    else if (itemCartola.Haber > 0 && itemCartola.Debe == 0)
                    {
                        CapaVoucher.Tipo = TipoVoucher.Egreso;
                    }

                    //Armamos tabla Detalle Voucher
                    //1

                    List <DetalleVoucherModel> LstToEvaluate  = new List <DetalleVoucherModel>();
                    DetalleVoucherModel        DetalleCartola = new DetalleVoucherModel(); //cada linea es solo 1 monto
                    DetalleCartola.VoucherModelID    = CapaVoucher.VoucherModelID;
                    DetalleCartola.ObjCuentaContable = CuentaConsultada;
                    DetalleCartola.FechaDoc          = itemCartola.Fecha;
                    DetalleCartola.GlosaDetalle      = itemCartola.Glosa;

                    if (itemCartola.Debe > 0 && itemCartola.Haber == 0)
                    {
                        DetalleCartola.MontoDebe = itemCartola.Debe;
                    }
                    else if (itemCartola.Haber > 0 && itemCartola.Debe == 0)
                    {
                        DetalleCartola.MontoHaber = itemCartola.Haber;
                    }

                    //2
                    DetalleVoucherModel DetalleConciliacion = new DetalleVoucherModel();
                    DetalleConciliacion.VoucherModelID    = CapaVoucher.VoucherModelID;
                    DetalleConciliacion.FechaDoc          = itemCartola.Fecha;
                    DetalleConciliacion.ObjCuentaContable = CuentaAUsar;
                    DetalleConciliacion.GlosaDetalle      = itemCartola.Glosa;
                    if (DetalleCartola.MontoDebe > 0 && DetalleCartola.MontoHaber == 0)
                    {
                        DetalleConciliacion.MontoHaber = DetalleCartola.MontoDebe;
                    }
                    else if (DetalleCartola.MontoHaber > 0 && DetalleCartola.MontoDebe == 0)
                    {
                        DetalleConciliacion.MontoDebe = DetalleCartola.MontoHaber;
                    }

                    LstToEvaluate.Add(DetalleCartola);
                    LstToEvaluate.Add(DetalleConciliacion);

                    //Guardamos los detalles en una lista de detalles
                    if (LstToEvaluate.Sum(r => r.MontoDebe) == LstToEvaluate.Sum(r => r.MontoHaber))
                    {
                        foreach (DetalleVoucherModel itemDetalle in LstToEvaluate)
                        {
                            itemDetalle.Conciliado = true;
                        }

                        CapaVoucher.ListaDetalleVoucher = LstToEvaluate;
                        LstVoucher.Add(CapaVoucher);

                        if (CuentaAUsar.TieneAuxiliar == 1 && Prestador != null)
                        {
                            foreach (DetalleVoucherModel NuevoDetalleVoucher in LstToEvaluate)
                            {
                                if (NuevoDetalleVoucher.ObjCuentaContable == CuentaAUsar)
                                {
                                    CuentaContableModel CtaAux   = NuevoDetalleVoucher.ObjCuentaContable;
                                    AuxiliaresModel     Auxiliar = new AuxiliaresModel();
                                    Auxiliar.LineaNumeroDetalle = CapaVoucher.ListaDetalleVoucher.Count;
                                    Auxiliar.MontoTotal         = NuevoDetalleVoucher.MontoDebe + NuevoDetalleVoucher.MontoHaber;
                                    Auxiliar.objCtaContable     = CtaAux;

                                    NuevoDetalleVoucher.Auxiliar = Auxiliar;

                                    List <AuxiliaresDetalleModel> lstAuxDetalle   = new List <AuxiliaresDetalleModel>();
                                    AuxiliaresDetalleModel        nuevoAuxDetalle = new AuxiliaresDetalleModel();

                                    decimal MontoTotal = NuevoDetalleVoucher.MontoDebe + NuevoDetalleVoucher.MontoHaber;

                                    nuevoAuxDetalle.TipoDocumento         = itemCartola.TipoDteNumVoucher;
                                    nuevoAuxDetalle.Fecha                 = itemCartola.Fecha;
                                    nuevoAuxDetalle.FechaContabilizacion  = itemCartola.Fecha;
                                    nuevoAuxDetalle.Folio                 = itemCartola.Docum;
                                    nuevoAuxDetalle.Individuo2            = Prestador;
                                    nuevoAuxDetalle.MontoNetoLinea        = 0;
                                    nuevoAuxDetalle.MontoExentoLinea      = 0;
                                    nuevoAuxDetalle.MontoIVALinea         = 0;
                                    nuevoAuxDetalle.MontoTotalLinea       = MontoTotal;
                                    nuevoAuxDetalle.AuxiliaresModelID     = Auxiliar.AuxiliaresModelID;
                                    nuevoAuxDetalle.MontoIVANoRecuperable = 0;
                                    nuevoAuxDetalle.MontoIVAUsoComun      = 0;
                                    nuevoAuxDetalle.MontoIVAActivoFijo    = 0;

                                    if (CtaAux.TipoAuxiliarQueUtiliza == TipoAuxiliar.Honorarios)
                                    {
                                        nuevoAuxDetalle.ValorLiquido = MontoTotal;
                                    }

                                    lstAuxDetalle.Add(nuevoAuxDetalle);

                                    Auxiliar.ListaDetalleAuxiliares = lstAuxDetalle;
                                }
                            }
                        }

                        baseNumberFolio++;
                    }
                }
                else
                {
                    LosQueNoPudieronInsertarse.Add(itemCartola);
                }
            }

            List <DetalleVoucherModel> detalle = LstVoucher.SelectMany(x => x.ListaDetalleVoucher.Where(y => y.Auxiliar != null)).ToList();

            db.DBVoucher.AddRange(LstVoucher);
            db.SaveChanges();

            if (detalle.Any())
            {
                detalle.ForEach(x => { x.Auxiliar.DetalleVoucherModelID = x.DetalleVoucherModelID; });

                foreach (AuxiliaresModel itemAuxiliar in detalle.Select(x => x.Auxiliar).ToArray())
                {
                    db.Entry(itemAuxiliar).State = System.Data.Entity.EntityState.Modified;
                }
                db.SaveChanges();
            }

            CartolaDetalle = LstVoucher.SelectMany(x => x.ListaDetalleVoucher.Where(y => y.ObjCuentaContable.CuentaContableModelID == CuentaConsultada.CuentaContableModelID))
                             .Select(x => new CartolaBancariaModel {
                VoucherModelID        = x.VoucherModelID,
                Fecha                 = x.FechaDoc,
                Folio                 = x.Auxiliar != null ? x.Auxiliar.ListaDetalleAuxiliares.FirstOrDefault().Folio : 0,
                EstaConciliado        = true,
                Detalle               = x.GlosaDetalle,
                CuentaContableModelID = x.ObjCuentaContable,
                Debe  = x.MontoDebe,
                Haber = x.MontoHaber
            }).ToList();

            bool ResultadoInsercionCartolaBancaria = GuardarCartolaBancaria(CartolaDetalle, FechaCartola, NumeroCartola, CuentaConsultada, ObjCliente, db);
            Result = true;
        }
        else
        {
            throw new Exception("No hay registros para insertar.");
        }
        return(Tuple.Create(Result, LosQueNoPudieronInsertarse));
    }
コード例 #10
0
    public static List <CartolaBancariaPuraModel> DeExcelACartolaBancaria(HttpPostedFileBase file, FacturaPoliContext db)
    {
        List <CartolaBancariaPuraModel> ReturnValues = new List <CartolaBancariaPuraModel>();

        try
        {
            if (file == null || file.ContentLength == 0)
            {
                string Error = "Error Excel Vacio";
            }
            else
            {
                if (file.FileName.EndsWith("xls") || file.FileName.EndsWith("xlsx"))
                {
                    string path = ParseExtensions.Get_Temp_path(file.FileName); // Le indicamos la ruta donde guardará el excel.

                    if (File.Exists(path))
                    {
                        File.Delete(path); //Si ya existe lo elimina.
                    }
                    file.SaveAs(path);     //Guardamos momentaneamente el fichero. -> La idea es extraer su información y luego eliminarlo.

                    Application application = new Application();
                    Workbook    workBook    = application.Workbooks.Open(path);
                    Worksheet   worksheet   = workBook.ActiveSheet;
                    Range       range       = worksheet.UsedRange;

                    for (int row = 2; row <= range.Rows.Count; row++)
                    {
                        CartolaBancariaPuraModel FilaAGuardar = new CartolaBancariaPuraModel();

                        FilaAGuardar.Fecha   = ParseExtensions.ToDD_MM_AAAA_Multi(((Range)range.Cells[row, 1]).Text);
                        FilaAGuardar.Docum   = Convert.ToInt32(((Range)range.Cells[row, 2]).Text);
                        FilaAGuardar.Detalle = ((Range)range.Cells[row, 3]).Text;
                        FilaAGuardar.Debe    = decimal.Parse(((Range)range.Cells[row, 4]).Text);
                        FilaAGuardar.Haber   = decimal.Parse(((Range)range.Cells[row, 5]).Text);
                        FilaAGuardar.Saldo   = decimal.Parse(((Range)range.Cells[row, 6]).Text);
                        //Parte del voucher

                        ReturnValues.Add(FilaAGuardar);
                    }
                    workBook.Close();
                    File.Delete(path);
                }
                return(ReturnValues);
            }
        }
        catch (Exception ex)
        {
            ErrorMensajeMonitoreo Error = new ErrorMensajeMonitoreo()
            {
                Mensaje = ex.Message
            };
            db.DBErrores.Add(Error);
            db.SaveChanges();

            return(null);
        }



        return(ReturnValues);
    }