public ActionResult AgregarAjax(FacturacionViewModel facturacion) { if (ModelState.IsValid) { using (var dbContextTransaction = _context.Database.BeginTransaction()) { try { foreach (DetalleCompra item in facturacion.DetalleCompra) { var existeCompra = _context.DetalleCompra .Where(dc => (dc.IdCompra == facturacion.Compra.IdCompra && dc.IdProducto == item.IdProducto)).FirstOrDefault(); var producto = _context.Producto.Where(p => p.IdProducto == item.IdProducto).FirstOrDefault(); var monedero = _context.Monedero.Where(m => m.IdCliente == facturacion.Compra.IdCliente).FirstOrDefault(); var diferencia = ((int)existeCompra.Cantidad + (int)item.Cantidad); facturacion.Compra.Importe += ((int)item.Cantidad * (int)item.PrecioUnidad); if (existeCompra != null && producto != null) { existeCompra.Cantidad = (int)diferencia; producto.Existencia -= (int)item.Cantidad; _context.Update(existeCompra); _context.Update(producto); } else { DetalleCompra detalle = new DetalleCompra(); detalle.IdCompra = facturacion.Compra.IdCompra; detalle.IdProducto = item.IdProducto; detalle.PrecioUnidad = item.PrecioUnidad; detalle.Cantidad = item.Cantidad; detalle.Descuento = 0; _context.Add(detalle); } monedero.Saldo -= ((int)item.Cantidad * (int)item.PrecioUnidad); var compraImporte = _context.Compra.Where(c => c.IdCompra == facturacion.Compra.IdCompra).FirstOrDefault(); compraImporte.Importe = facturacion.Compra.Importe; _context.Update(compraImporte); _context.Update(monedero); _context.SaveChanges(); dbContextTransaction.Commit(); } return(Json(new { result = true })); } catch { dbContextTransaction.Rollback(); } } } return(Json(new { result = false })); }
public PartialViewResult IngresarFacturacion(FacturacionViewModel model) { //Datos Pruebas var FacturaList = new List <FacturacionViewModel>(); if (model != null) { if (model.Contabilidad == 0) { model.Contabilidad = (int)Session["NuevaContabilidad"]; } _presupuestoSvc.guardarFacturacion(new FacturacionDto { Mes = Convert.ToInt32(model.Mes), NumeroContabilidad = model.Contabilidad, NumeroCuota = model.NumeroCuotas, NumeroGuia = model.Factura, ValorCuota = model.Valor }); } var fact = _presupuestoSvc.obtenerFacturacion(model.Contabilidad); if (fact.Any()) { FacturaList = fact.Select(f => new FacturacionViewModel { Contabilidad = f.NumeroContabilidad, Factura = f.NumeroGuia, Mes = f.Mes.ToString(), NumeroCuotas = f.NumeroCuota, Valor = Convert.ToInt32(f.ValorCuota) }).ToList(); } else { if (Session["Facturacion"] != null) { FacturaList = (List <FacturacionViewModel>)Session["Facturacion"]; } FacturaList.Add(model); } Session["Facturacion"] = FacturaList; return(PartialView("Facturacion", FacturaList)); }
public IActionResult Edit(int?id) { if (id == null) { return(NotFound()); } var compra = _context.Compra.Where(c => c.IdCompra == id).FirstOrDefault(); List <Producto> productos = _context.Producto.Where(p => p.Existencia > 0).Include(p => p.IdCategoriaNavigation).ToList(); ViewData["Producto"] = productos; List <DetalleCompra> detallecompra = _context.DetalleCompra.Where(d => d.IdCompra == id).Include(d => d.IdProductoNavigation).ToList(); ViewData["DetalleCompra"] = detallecompra; FacturacionViewModel facturacion = new FacturacionViewModel(); facturacion.Compra = compra; //facturacion.DetalleCompra = detallecompra; return(View(facturacion)); }
public Task <FacturacionViewModel> GetFacturacion(int year) { var facturacionVm = new FacturacionViewModel(); foreach (var mes in _pacientesDbContext.FacturasHeaders.Where(x => x.Fecha.Year == year).Include(x => x.Lineas).GroupBy(x => x.Fecha.Month)) { var facturaItem = new FacturacionItem { Mes = GetMes(mes.Key), Year = year, TotalBruto = 0, TotalNeto = 0, TotalIrpf = 0 }; foreach (var factura in mes) { var total = 0.0; foreach (var linea in factura.Lineas) { total += linea.Cantidad * linea.Precio; } var conDescuento = total * (1 - (factura.Descuento / 100.0)); facturaItem.TotalBruto += conDescuento; facturaItem.TotalNeto += conDescuento * (1 - (factura.IRPF / 100.0)); facturaItem.TotalIrpf += conDescuento * (factura.IRPF / 100.0); } facturaItem.TotalBruto = Math.Round(facturaItem.TotalBruto, 2); facturaItem.TotalNeto = Math.Round(facturaItem.TotalNeto, 2); facturaItem.TotalIrpf = Math.Round(facturaItem.TotalIrpf, 2); facturacionVm.FacturacionData.Add(facturaItem); facturacionVm.TotalBruto += facturaItem.TotalBruto; facturacionVm.TotalNeto += facturaItem.TotalNeto; facturacionVm.TotalIrpf += facturaItem.TotalIrpf; } return(Task.FromResult(facturacionVm)); }
public ActionResult EliminarAjax(FacturacionViewModel facturacion) { using (var dbContextTransaction = _context.Database.BeginTransaction()) { try { foreach (DetalleCompra item in facturacion.DetalleCompra) { var DetalleproductoEliminar = _context.DetalleCompra .Where(dc => dc.IdCompra == facturacion.Compra.IdCompra && dc.IdProducto == item.IdProducto) .FirstOrDefault(); var producto = _context.Producto .Where(p => p.IdProducto == DetalleproductoEliminar.IdProducto) .FirstOrDefault(); var monedero = _context.Monedero .Where(m => m.IdCliente == facturacion.Compra.IdCliente) .FirstOrDefault(); producto.Existencia += (int)DetalleproductoEliminar.Cantidad; monedero.Saldo += (int)DetalleproductoEliminar.Cantidad * (int)DetalleproductoEliminar.PrecioUnidad; var compra = _context.Compra.Where(c => c.IdCompra == facturacion.Compra.IdCompra).FirstOrDefault(); compra.Importe += (int)DetalleproductoEliminar.Cantidad * (int)DetalleproductoEliminar.PrecioUnidad; _context.Update(compra); _context.Update(producto); _context.Update(monedero); _context.Remove(DetalleproductoEliminar); } _context.SaveChanges(); dbContextTransaction.Commit(); } catch { dbContextTransaction.Rollback(); } return(Json(new { result = true, })); } }
public IActionResult Guardar(FacturacionViewModel factura) { if (ModelState.IsValid) { using (var dbContextTransaction = _context.Database.BeginTransaction()) { try { Compra comprar = new Compra//Agregar compra { //IdCompra = ((int)factura.Compra.IdCompra), IdCliente = factura.Compra.IdCliente, Fecha = factura.Compra.Fecha, Importe = ((int)factura.Compra.Importe), IdEmpleado = factura.Compra.IdEmpleado }; _context.Add(comprar); _context.SaveChanges(); foreach (DetalleCompra item in factura.DetalleCompra) { DetalleCompra detalle = new DetalleCompra//Agregar detalleCompra { IdCompra = ((int)factura.Compra.IdCompra), IdProducto = item.IdProducto, PrecioUnidad = item.PrecioUnidad, Cantidad = item.Cantidad, Descuento = 0 }; var producto = _context.Producto.Where(p => p.IdProducto == item.IdProducto); foreach (var item2 in producto)//descuenta producto del stock { item2.Existencia = ((int)item2.Existencia - (int)item.Cantidad); _context.Update(item2); } _context.Add(detalle); } _context.SaveChanges(); var monederoCliente = _context.Monedero.Where(m => m.IdCliente == ((int)factura.Compra.IdCliente)); foreach (var item3 in monederoCliente)//resta el monedero { item3.Saldo = ((double)item3.Saldo - ((double)factura.Compra.Importe)); _context.Update(item3); } _context.SaveChanges(); dbContextTransaction.Commit(); } catch { dbContextTransaction.Rollback(); } } Thread.Sleep(2000); return(RedirectToAction("Index")); } ViewData["Fecha"] = DateTime.Now.ToString("dd/MM/yyyy"); List <Cliente> clientes = _context.Cliente.Where(c => c.Estado == "Activo").ToList(); ViewData["Cliente"] = clientes; List <Empleado> empleados = _context.Empleado.Where(e => e.Estado == "Activo").ToList(); ViewData["Empleado"] = empleados; List <Producto> productos = _context.Producto.Where(p => p.Existencia > 0).Include(p => p.IdCategoriaNavigation).ToList(); ViewData["Producto"] = productos; return(View()); }