예제 #1
0
        public async Task <IActionResult> EditLotes(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var lote = _context.LoteRecibos.Where(l => l.CajaId == id.Value).FirstOrDefault();

            ViewBag.Caja = _context.Caja.Find(id).Description;
            if (lote == null)
            {
                var newLote = new LoteRecibos
                {
                    CajaId = id.Value,
                    Actual = 0,
                    Final  = 0,
                    Inicio = 0
                };
                _context.LoteRecibos.Add(newLote);
                _context.SaveChanges();
                return(View(newLote));
            }

            decimal porcentaje = 0;

            if (Convert.ToInt16(lote.Final - lote.Inicio) != 0)
            {
                porcentaje = (Convert.ToDecimal(lote.Actual - lote.Inicio) / Convert.ToDecimal(lote.Final - lote.Inicio)) * 100;
            }

            ViewBag.Porcentaje = Math.Round(porcentaje, 2);
            return(View(lote));
        }
예제 #2
0
        public IActionResult CorregirFecha(int Id, DateTime FechaProceso)
        {
            var user = this.GetServiceUser();

            var oldRecibo = db.IngresosEgresosCaja.Find(Id);

            if (oldRecibo == null)
            {
                return(NotFound("No se encontro el recibo con id: " + Id));
            }

            oldRecibo.FechaProceso    = FechaProceso;
            oldRecibo.UsernameEditado = user.username;
            oldRecibo.FechaEditado    = DateTime.Now;

            db.SaveChanges();
            return(Json(FechaProceso));
        }
예제 #3
0
        public async Task <IActionResult> update(int BancoCuenta, [Bind("BancoCuenta,SaldoInicial,Fecha")] ProcesoBanco procesoBanco)
        {
            var user = this.GetServiceUser();
            var procesoBancoSesrvices = new ProcesoBancoServices(db);

            var Existe = procesoBancoSesrvices.ExistSaldoIncial(BancoCuenta);

            if (Existe)
            {
                var oldProcesoBanco = db.ProcesoBanco.Where(b => b.BancoCuenta == BancoCuenta && b.TipoProcesoId == (int)TipoProcesos.SaldoInicial).FirstOrDefault();
                if (procesoBanco.SaldoInicial != 0)
                {
                    oldProcesoBanco.SaldoInicial = procesoBanco.SaldoInicial;
                }

                if (procesoBanco.Fecha > DateTime.MinValue)
                {
                    oldProcesoBanco.Fecha = new DateTime(procesoBanco.Fecha.Year, procesoBanco.Fecha.Month, 1);
                }

                db.SaveChanges();
            }
            else
            {
                var newProcesoBanco = new ProcesoBanco
                {
                    BancoCuenta     = BancoCuenta,
                    SaldoInicial    = procesoBanco.SaldoInicial,
                    SaldoFinal      = 0,
                    Fecha           = procesoBanco.Fecha,
                    Username        = user.username,
                    FechaRegistrado = DateTime.Now,
                    TipoProcesoId   = (int)TipoProcesos.SaldoInicial
                };

                db.ProcesoBanco.Add(newProcesoBanco);
                db.SaveChanges();
            }

            return(Ok());
        }
예제 #4
0
        public IActionResult SaveAuxiliarAndIngresosEgresos(ConciliacionViewModel conciliacionViewModel)
        {
            var procesoBancoServices = new ProcesoBancoServices(db);
            var procesoBanco         = procesoBancoServices.Find(conciliacionViewModel.BancoCuenta, conciliacionViewModel.Year, conciliacionViewModel.Month);

            if (procesoBanco == null)
            {
                return(BadRequest($"No se encontro el proceso para el banco {conciliacionViewModel.BancoCuenta} del año {conciliacionViewModel.Year} y mes {conciliacionViewModel.Month}"));
            }

            var id = procesoBanco.Id;

            var auxs = new List <ConciliacionBancariaAux>();

            foreach (var aux in conciliacionViewModel.conciliacionBancariaAux)
            {
                auxs.Add(new ConciliacionBancariaAux
                {
                    Fecha            = aux.Fecha,
                    Referencia       = aux.Referencia,
                    TipoMovimientoId = aux.TipoMovimientoId,
                    Debito           = aux.Debito,
                    Credito          = aux.Credito,
                    EstadoId         = aux.EstadoId,
                    Uuid             = aux.Uuid,
                    ProcesoBancoId   = id
                });
            }

            var ecs = new List <ConciliacionBancaria>();

            foreach (var ec in conciliacionViewModel.conciliacionBancaria)
            {
                ecs.Add(new ConciliacionBancaria
                {
                    Fecha            = ec.Fecha,
                    Referencia       = ec.Referencia,
                    TipoMovimientoId = ec.TipoMovimientoId,
                    Debito           = ec.Debito,
                    Credito          = ec.Credito,
                    EstadoId         = ec.EstadoId,
                    Uuid             = ec.Uuid,
                    ProcesoBancoId   = id
                });
            }

            var oldProcesoBanco = db.ProcesoBanco.Find(id);

            oldProcesoBanco.ConciliacionBancaria    = ecs;
            oldProcesoBanco.ConciliacionBancariaAux = auxs;
            db.SaveChanges();
            return(Ok());
        }
예제 #5
0
        public async Task <IActionResult> Delete(ProfileViewModel profileViewModel)
        {
            var profile = await db.Profile.FindAsync(profileViewModel.Username);

            if (profile != null)
            {
                profile.Nestado = 91;
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }
            return(View(profileViewModel));
        }
예제 #6
0
        public async Task <IActionResult> AjustarRecibo(int idrecibo, decimal monto)
        {
            var i = new IngresosEgresosCajaDetalle
            {
                Cantidad    = 1,
                CtaContable = $"1000{0}",
                Precio      = monto,
                Montodolar  = monto,
                ReciboId    = idrecibo
            };

            db.IngresosEgresosCajaDetalle.Add(i);
            db.SaveChanges();
            return(Ok());
        }
예제 #7
0
        public async Task <IActionResult> CancelRecibo(int idrecibo, string motivo)
        {
            var user   = this.GetServiceUser();
            var recibo = db.IngresosEgresosCaja.Find(idrecibo);

            if (recibo.EstadoId == (int)IngresosEgresosCajaEstado.Anulado)
            {
                return(BadRequest($"No se puede anular el recibo {recibo.NumRecibo} por que ya estaba anulado"));
            }
            recibo.EstadoId        = (int)IngresosEgresosCajaEstado.Anulado;
            recibo.MotivoAnulado   = motivo;
            recibo.UsernameAnulado = user.username;
            recibo.FechaAnulado    = DateTime.Now;
            db.SaveChanges();
            return(Ok());
        }
        public async Task <IActionResult> Put(IngresosEgresosBanco ingresosEgresosBanco)
        {
            var user          = this.GetServiceUser();
            var oldMovimiento = db.IngresosEgresosBanco.Find(ingresosEgresosBanco.Id);

            if (oldMovimiento.EstadoId == (int)IngresosEgresosBancoEstados.Anulado)
            {
                return(BadRequest($"No se puede editar el movimiento {ingresosEgresosBanco.Id} por que esta anulado"));
            }
            var cambioOficial = await db.CambioOficial.FindAsync(ingresosEgresosBanco.FechaProceso);

            if (cambioOficial == null)
            {
                return(BadRequest("No se encontró la tasa de cambios para la fecha " + ingresosEgresosBanco.FechaProceso.ToShortDateString()));
            }
            oldMovimiento.TipoCambio = cambioOficial.Dolares;

            var bancoCuenta = DbIpsa.BancosCuentas.Find(ingresosEgresosBanco.BancoCuenta, "1000");

            if (bancoCuenta == null)
            {
                return(BadRequest("No se encontró información del banco " + bancoCuenta.Descripcion));
            }

            if (oldMovimiento.Procesado == true)
            {
                return(BadRequest($"No se puede editar el movimiento {ingresosEgresosBanco.Id} por que esta conciliado"));
            }

            oldMovimiento.TipoMonedaId     = bancoCuenta.Moneda.Value;
            oldMovimiento.TipoDocumentoId  = ingresosEgresosBanco.TipoDocumentoId;
            oldMovimiento.TipoMovimientoId = ingresosEgresosBanco.TipoMovimientoId;
            oldMovimiento.BancoCuenta      = ingresosEgresosBanco.BancoCuenta;
            oldMovimiento.Referencia       = ingresosEgresosBanco.Referencia;
            oldMovimiento.Monto            = ingresosEgresosBanco.Monto;
            oldMovimiento.Concepto         = ingresosEgresosBanco.Concepto;
            oldMovimiento.FechaProceso     = ingresosEgresosBanco.FechaProceso;

            oldMovimiento.UsernameEditado = user.username;
            oldMovimiento.FechaEditado    = DateTime.Now;

            db.SaveChanges();

            return(Json(ingresosEgresosBanco));
        }
예제 #9
0
        public IActionResult SaveAuxiliarAndIngresosEgresos(ConciliacionViewModel conciliacionViewModel)
        {
            var usr = this.GetServiceUser();

            var info = DbIpsa.BancosCuentas.Include(b => b.Banco).Where(bc => bc.BancoCuenta == conciliacionViewModel.BancoCuenta).ToList();

            if (info == null)
            {
                return(BadRequest("No se encontró el banco"));
            }

            var accountInfo = from i in info
                              join m in db.TipoMoneda on i.Moneda equals m.Id
                              select new AccountDescription
            {
                BancoId     = i.Bancoid,
                Banco       = i.Banco.Descripcion,
                MonedaId    = i.Moneda.Value,
                Moneda      = m.Descripcion,
                Sucursal    = i.NombreSucursal,
                Cuenta      = i.CtaContable,
                Descripcion = i.Descripcion,
                BancoCuenta = i.BancoCuenta
            };

            var _BancosCuentas = accountInfo.FirstOrDefault();

            var procesoBancoServices = new ProcesoBancoServices(db);

            var existeSaldoInicial = procesoBancoServices.ExistSaldoIncial(conciliacionViewModel.BancoCuenta);

            if (!existeSaldoInicial)
            {
                return(BadRequest($"No se encontró el proceso inicial para el banco {conciliacionViewModel.BancoCuenta} del año {conciliacionViewModel.Year} y mes {conciliacionViewModel.Month}"));
            }

            var procesoBanco = procesoBancoServices.Find(conciliacionViewModel.BancoCuenta, conciliacionViewModel.Year, conciliacionViewModel.Month);

            if (procesoBanco.Exist() && !procesoBanco.IsInitialBalance())
            {
                return(BadRequest($"Ya se concilio el mes de {HelperExtensions.NombreDelMes(conciliacionViewModel.Month)} para el año {conciliacionViewModel.Year} de la cuenta {conciliacionViewModel.BancoCuenta}"));
            }

            //Verificar que existe un preceso en el mes anterior
            var validate = procesoBancoServices.VerificarProcesoAnterio(_BancosCuentas, conciliacionViewModel.Year, conciliacionViewModel.Month);

            if (!validate.successed)
            {
                return(BadRequest(validate.Error));
            }

            decimal saldoAnterior = validate.saldoAnterior;

            var auxs = new List <ConciliacionBancariaAux>();

            foreach (var aux in conciliacionViewModel.conciliacionBancariaAux)
            {
                auxs.Add(new ConciliacionBancariaAux
                {
                    Fecha            = aux.Fecha,
                    Referencia       = aux.Referencia,
                    TipoMovimientoId = aux.TipoMovimientoId,
                    Debito           = aux.Debito,
                    Credito          = aux.Credito,
                    EstadoId         = aux.EstadoId,
                    Uuid             = aux.Uuid,
                    Conciliado       = string.IsNullOrEmpty(aux.Uuid) ? false : true,
                    TableInfo        = aux.TableInfo,
                    IdOrigen         = aux.IdOrigen,
                    IdRef            = aux.IdRef
                });
            }

            var ecs = new List <ConciliacionBancaria>();

            foreach (var ec in conciliacionViewModel.conciliacionBancaria)
            {
                ecs.Add(new ConciliacionBancaria
                {
                    Fecha            = ec.Fecha,
                    Referencia       = ec.Referencia,
                    TipoMovimientoId = ec.TipoMovimientoId,
                    Debito           = ec.Debito,
                    Credito          = ec.Credito,
                    EstadoId         = ec.EstadoId,
                    Uuid             = ec.Uuid,
                    Conciliado       = string.IsNullOrEmpty(ec.Uuid) ? false : true
                });
            }

            if (procesoBanco.Exist() && procesoBanco.IsInitialBalance())
            {
                procesoBanco.ConciliacionBancaria    = ecs;
                procesoBanco.ConciliacionBancariaAux = auxs;
                procesoBanco.SaldoFinal = procesoBanco.SaldoInicial + ecs.Sum(x => x.Credito) - ecs.Sum(x => x.Debito);
            }
            else if (!procesoBanco.Exist())
            {
                var newProcesoBanco = new ProcesoBanco
                {
                    BancoCuenta             = conciliacionViewModel.BancoCuenta,
                    Fecha                   = new DateTime(conciliacionViewModel.Year, conciliacionViewModel.Month, 1),
                    SaldoInicial            = saldoAnterior,
                    SaldoFinal              = saldoAnterior + ecs.Sum(x => x.Credito) - ecs.Sum(x => x.Debito),
                    Username                = usr.username,
                    FechaRegistrado         = DateTime.Now,
                    TipoProcesoId           = (int)TipoProcesos.Movimientos,
                    ConciliacionBancaria    = ecs,
                    ConciliacionBancariaAux = auxs
                };
            }
            var iecData = conciliacionViewModel.conciliacionBancariaAux.Where(x => x.TableInfo == 1).Select(x => x.IdOrigen).ToArray();
            var ingresosCajaReferencias = db.IngresosEgresosCajaReferencias.Where(f => iecData.Contains(f.Id)).ToList();

            if (ingresosCajaReferencias.Count > 0)
            {
                ingresosCajaReferencias.ForEach(a => a.Procesado = string.IsNullOrEmpty(conciliacionViewModel.conciliacionBancariaAux.Where(x => x.IdOrigen == a.Id && x.TableInfo == 1).FirstOrDefault().Uuid) ? false : true);
            }

            var iebData       = conciliacionViewModel.conciliacionBancariaAux.Where(x => x.TableInfo == 2).Select(x => x.IdOrigen).ToArray();
            var ingresosBanco = db.IngresosEgresosBanco.Where(f => iebData.Contains(f.Id)).ToList();

            if (ingresosBanco.Count > 0)
            {
                ingresosBanco.ForEach(a => a.Procesado = string.IsNullOrEmpty(conciliacionViewModel.conciliacionBancariaAux.Where(x => x.IdOrigen == a.Id && x.TableInfo == 2).FirstOrDefault().Uuid) ? false : true);
            }

            db.SaveChanges();

            return(Ok());
        }