예제 #1
0
        public ActionResult TramitarCompra(Compra compra, bool esPorCaja)
        {
            var usuario = User.Identity.GetUserId();

            compra.UsuarioId = usuario;
            if (ModelState.IsValid)
            {
                if (!compra.Productos.Any())
                {
                    TempData["error"] = "No se puede efectuar una compra vacia";
                    return(View());
                }
                bool result = true;
                if (esPorCaja)
                {
                    var cta         = _cuentasServices.FindCuentaByNombre("Caja");
                    var totalCompra = compra.Productos.Sum(p => p.ImporteTotal);
                    if (cta.Disponibilidad.Saldo - totalCompra < 0)
                    {
                        TempData["error"] = "No se puede pagar por caja porque no existe esta cantidad de efectivo";
                        result            = false;
                    }
                }
                if (result)
                {
                    if (_comprasService.ComprarYDarEntradaAAlmacen(compra, esPorCaja, usuario))
                    {
                        TempData["exito"] = "Compra agregada correctamente";
                    }
                }
                return(RedirectToAction("Index", "Compras"));
            }
            return(RedirectToAction("Index", "Compras"));
        }
예제 #2
0
        public ActionResult Extraccion(ExtraccionDeCajaViewModel extraccion)
        {
            if (ModelState.IsValid)
            {
                var cta         = _cuentasServices.FindCuentaByNombre("Caja");
                var cuentaGasto = _cuentasServices.FindCuentaByNombre("Gastos");

                string detalle = "Extracción de efectivo: " + extraccion.Observaciones;
                _cuentasServices.AgregarOperacion(cta.Id, cuentaGasto.Id, extraccion.Importe, DateTime.Now,
                                                  detalle, User.Identity.GetUserId());
                _db.SaveChanges();
                TempData["exito"] = "Extracción efectuada correctamente";
                return(RedirectToAction("Index"));
            }
            return(View(extraccion));
        }
 public ActionResult Agregar(OtrosGastos otrosGastos)
 {
     otrosGastos.DiaContableId = _periodoContableService.GetDiaContableActual().Id;
     if (ModelState.IsValid)
     {
         _db.Set <OtrosGastos>().Add(otrosGastos);
         var    cta         = _cuentasServices.FindCuentaByNombre(otrosGastos.PagadoPorCaja ? "Caja" : "Banco");
         var    cuentaGasto = _cuentasServices.FindCuentaByNombre("Gastos");
         var    concepto    = _db.Set <ConceptoDeGasto>().Find(otrosGastos.ConceptoDeGastoId);
         string detalle     = "Pago de: " + concepto.Nombre;
         bool   result      = true;
         if (otrosGastos.PagadoPorCaja)
         {
             if (cta.Disponibilidad.Saldo - otrosGastos.Importe < 0)
             {
                 TempData["error"] = "No existe saldo en caja para realizar la extracción";
                 result            = false;
             }
         }
         if (result)
         {
             _cuentasServices.AgregarOperacion(cta.Id, cuentaGasto.Id, otrosGastos.Importe, DateTime.Now,
                                               detalle, User.Identity.GetUserId());
             _db.SaveChanges();
             TempData["exito"] = "Gasto agregado correctamente";
         }
         return(RedirectToAction("Index"));
     }
     ViewBag.DiaContable       = _periodoContableService.GetDiaContableActual();
     ViewBag.ConceptoDeGastoId = new SelectList(_db.Set <ConceptoDeGasto>(), "Id", "Nombre", otrosGastos.ConceptoDeGastoId);
     return(View(otrosGastos));
 }
예제 #4
0
 public JsonResult CerrarPeriodo(DesgloceEfectivoViewModel desgloceEfectivoViewModel, decimal importeAExtraer, decimal pagoTrabajadores)
 {
     if (importeAExtraer >= 0)
     {
         var dia = _service.GetDiaContableActual();
         if (_db.Set <Venta>().Any(v => v.DiaContableId == dia.Id && (v.EstadoDeVenta == EstadoDeVenta.Facturada || v.EstadoDeVenta == EstadoDeVenta.Pendiente)))
         {
             return(Json(new { result = false, mensaje = "No se puede cerrar, ventas pendientes de pago" }, JsonRequestBehavior.AllowGet));
         }
         var cuentaCaja  = _cuentasServices.FindCuentaByNombre("Caja");
         var cuentaBanco = _cuentasServices.FindCuentaByNombre("Banco");
         var cuentaGasto = _cuentasServices.FindCuentaByNombre("Gastos");
         if (cuentaCaja.Disponibilidad.Saldo < importeAExtraer + pagoTrabajadores)
         {
             return(Json(new { result = false, mensaje = "No se puede realizar la extraccion de la caja, saldo en caja inferior al extraer" }, JsonRequestBehavior.AllowGet));
         }
         _cuentasServices.AgregarOperacion(cuentaCaja.Id, cuentaBanco.Id, importeAExtraer, DateTime.Now, "Cierre del dia",
                                           User.Identity.GetUserId());
         _cuentasServices.AgregarOperacion(cuentaCaja.Id, cuentaGasto.Id, pagoTrabajadores, DateTime.Now, "Trabajadores : Pago al cierre",
                                           User.Identity.GetUserId());
         var caja   = _db.Set <Caja>().FirstOrDefault();
         var cierre = new CierreDeCaja()
         {
             CajaId        = caja.Id,
             DiaContableId = dia.Id
         };
         var cuc = _db.Set <Moneda>().SingleOrDefault(m => m.Sigla == "CUC");
         var cup = _db.Set <Moneda>().SingleOrDefault(m => m.Sigla == "CUP");
         foreach (var billete in desgloceEfectivoViewModel.Billetes)
         {
             if (billete.Cuc && billete.CantidadCuc > 0)
             {
                 var denominacion =
                     _db.Set <DenominacionDeMoneda>().SingleOrDefault(d => d.Billete && d.MonedaId == cuc.Id && d.Valor == billete.Valor);
                 cierre.Desglose.Add(new DenominacionesEnCierreDeCaja()
                 {
                     DenominacionDeMonedaId = denominacion.Id,
                     Cantidad = billete.CantidadCuc
                 });
             }
             if (billete.Cup && billete.CantidadCup > 0)
             {
                 var denominacion =
                     _db.Set <DenominacionDeMoneda>().SingleOrDefault(d => d.Billete && d.MonedaId == cup.Id && d.Valor == billete.Valor);
                 cierre.Desglose.Add(new DenominacionesEnCierreDeCaja()
                 {
                     DenominacionDeMonedaId = denominacion.Id,
                     Cantidad = billete.CantidadCup
                 });
             }
         }
         foreach (var moneda in desgloceEfectivoViewModel.Monedas)
         {
             if (moneda.Cuc && moneda.CantidadCuc > 0)
             {
                 var denominacion =
                     _db.Set <DenominacionDeMoneda>().SingleOrDefault(d => !d.Billete && d.MonedaId == cuc.Id && d.Valor == moneda.Valor);
                 cierre.Desglose.Add(new DenominacionesEnCierreDeCaja()
                 {
                     DenominacionDeMonedaId = denominacion.Id,
                     Cantidad = moneda.CantidadCuc
                 });
             }
             if (moneda.Cup && moneda.CantidadCup > 0)
             {
                 var denominacion =
                     _db.Set <DenominacionDeMoneda>().SingleOrDefault(d => !d.Billete && d.MonedaId == cup.Id && d.Valor == moneda.Valor);
                 cierre.Desglose.Add(new DenominacionesEnCierreDeCaja()
                 {
                     DenominacionDeMonedaId = denominacion.Id,
                     Cantidad = moneda.CantidadCup
                 });
             }
         }
         _cierreService.CerrarCaja(cierre);
         _service.CerrarDiaContable();
         _db.SaveChanges();
         //HttpContext.GetOwinContext().Authentication.SignOut();
         return(Json(new { result = true, cierreId = cierre.DiaContableId, mensaje = "Cierre correcto" }, JsonRequestBehavior.AllowGet));
     }
     return(Json(new { result = false, mensaje = "No se puede cerrar, importe a extraer negativo" }, JsonRequestBehavior.AllowGet));
 }