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")); }
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)); }
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)); }