//REFACTORIZAR PORQUE NO TIENE EN CUENTA EL EXISTENTE PARA CHEQUEAR STOCK public ActionResult AgregarPreDetalle(DetalleViewModel detalleAgregado) { //Completamos la información del detalle para insertarlo en la tabla de la view (nombre y precio unitario del producto) detalleAgregado = completarDetalle(detalleAgregado); //Buscamos el producto, y chequeamos stock Producto producto = db.Producto.Find(detalleAgregado.SelectedProductoId); if (hayStock(producto, detalleAgregado.cantidad)) { //Primero chequeamos si ya hay un detalle con el mismo producto List <DetalleViewModel> detalles = getDetallesListFromSession(); DetalleViewModel detalleConElMismoProducto = detalles.Where(d => d.SelectedProductoId == detalleAgregado.SelectedProductoId).FirstOrDefault(); if (detalleConElMismoProducto != null) { detalleConElMismoProducto.cantidad += detalleAgregado.cantidad; detalleConElMismoProducto.totalDetalle = producto.precio * detalleConElMismoProducto.cantidad; } else //no existe un detalle con el mismo producto { //calculamos el total y lo insertamos en la tabla detalleAgregado.totalDetalle = producto.precio * detalleAgregado.cantidad; detalles.Add(detalleAgregado); } Session["detalles"] = detalles; } else //no hay stock { ModelState.AddModelError("Error", "No hay stock suficiente"); } ViewBag.detalles = getDetallesListFromSession(); configurarDropDownMenu(); return(View("NuevoPedido")); }
public async Task <ActionResult> DevolverPorCodigo(string numero) { try { var fac = await facturaServices.DevolverPorNumero(numero); FacturaViewModel factura = new FacturaViewModel(); factura.NumeroFactura = fac.Codigo; factura.CodCliente = fac.Cliente.Codigo; var resultcli = await clienteServices.DevolverPorCodigo(fac.Cliente.Codigo); ClienteViewModel cliente = new ClienteViewModel(); cliente.Codigo = resultcli.Codigo; cliente.Identificacion = resultcli.Identificacion; cliente.Tipo_Documento = resultcli.Tipo_Identificacion.Abreviatura; cliente.NombreCompleto = resultcli.NombreCompleto; cliente.Direccion = resultcli.Direccion; cliente.Telefono = resultcli.Telefono; cliente.FechaNac = resultcli.FechaNac.ToString("dd/MM/yyyy"); cliente.Correo = resultcli.Correo; factura.Cliente = cliente; factura.Fecha = fac.Fecha.ToString("dd/MM/yyyy"); factura.SubTotal = fac.SubTotal; factura.TotalDescuento = fac.Descuento; factura.TotalIva = fac.Iva; factura.TotalGeneral = fac.Total; List <DetalleViewModel> listaDetalle = new List <DetalleViewModel>(); foreach (var item in fac.Detalle) { DetalleViewModel detalle = new DetalleViewModel(); detalle.NumeroFactura = fac.Codigo; detalle.CodigoProducto = item.Producto.Codigo; ProductoViewModel Producto = new ProductoViewModel(); Producto.CodigoProducto = item.Producto.Codigo; Producto.NombreProducto = item.Producto.Nombre; Producto.Descripcion = item.Producto.Descripcion; Producto.Precio = item.Lista_Precio.Precio; detalle.Producto = Producto; detalle.Cantidad = item.Cantidad; detalle.Precio = item.Lista_Precio.Precio; detalle.PorcentajeDescuento = item.Descuento; detalle.PorcentajeIva = item.Iva; listaDetalle.Add(detalle); } factura.Detalle = listaDetalle; return(Ok(factura)); } catch (Exception ex) { return(BadRequest(ex.Message)); } }
private Detalle createDetalleFromModel(DetalleViewModel detalleViewModel) { Detalle detalle = new Detalle(); detalle.codProd = detalleViewModel.SelectedProductoId; detalle.cantidad = detalleViewModel.cantidad; return(detalle); }
private DetalleViewModel completarDetalle(DetalleViewModel detalle) { Producto producto = db.Producto.Where(p => p.codigo == detalle.SelectedProductoId).FirstOrDefault(); detalle.productoNombre = producto.nombre; detalle.precioUnitario = producto.precio; return(detalle); }
public async Task <int> Add(DetalleViewModel detalle, Venta venta, Trabajador trabajador, List <Producto> productos) { NpgsqlParameter param1 = new("@p0", detalle.IdProducto); NpgsqlParameter param2 = new("@p1", venta.IdVenta); NpgsqlParameter param3 = new("@p2", trabajador.IdNegocio); NpgsqlParameter param4 = new("@p3", detalle.Importe); NpgsqlParameter param5 = new("@p4", detalle.CantidadVendida); /*NpgsqlParameter param6 = new("@p5", detalle.Importe);*/ Producto prod = productos.First(s => s.IdProducto == detalle.IdProducto); if (detalle.CantidadVendida < prod.Stock) { var nuevoStock = prod.Stock - detalle.CantidadVendida; NpgsqlParameter param6 = new("@p5", nuevoStock); await context.Database.ExecuteSqlRawAsync("update \"Producto\" set \"Stock\" = @p5 where \"IdProducto\" = @p0", param6, param1); /* * CREATE OR REPLACE PROCEDURE agregadetalleventa( * _idproducto character varying, * _idventa character varying, * _idnegocio character varying, * _preciototalventaproducto integer, * _cantidadvendida integer) * LANGUAGE 'sql' * AS $BODY$ * INSERT INTO "Detalle" ( * "IdProducto", * "IdVenta" , * "IdNegocio", * "PrecioTotalVentaProducto", * "CantidadVendida", * "PrecioVenta" * ) * VALUES ( * _idproducto, * _idventa, * _idnegocio, * _preciototalventaproducto, * _cantidadvendida, * (select "PrecioVenta" from "Producto" where "IdProducto"="_idproducto") * ); * $BODY$; * */ return(await context.Database.ExecuteSqlRawAsync("CALL AgregaDetalleVenta(@p0,@p1,@p2,@p3,@p4)", param1, param2, param3, param4, param5)); } else { throw new Exception("No hay stock para la cantidad que se quiere vender"); } }
public ActionResult AgregarDetalle(DetalleViewModel nuevoDetalle) { //Completamos la información del detalle para insertarlo en la tabla de la view (nombre y precio unitario del producto) nuevoDetalle = completarDetalle(nuevoDetalle); //Buscamos el producto para luego chequear stock Producto producto = db.Producto.Find(nuevoDetalle.SelectedProductoId); //Guardamos la lista de detalles de la Session List <DetalleViewModel> detalles = getDetallesListFromSession(); //Primero vemos si ya existe un detalle con el mismo producto en el pedido DetalleViewModel detalleExistente = detalles.Where(d => d.SelectedProductoId == nuevoDetalle.SelectedProductoId).FirstOrDefault(); if (detalleExistente != null) { //consultamos si hay stock teniendo en cuenta la cantidad pedida en el detalle existente, y la del nuevo detalle int cantidadTotal = detalleExistente.cantidad + nuevoDetalle.cantidad; if (hayStock(producto, cantidadTotal)) { //actualizamos el detalle existente, para evitar duplicados en la lista detalleExistente.cantidad = cantidadTotal; detalleExistente.totalDetalle = producto.precio * cantidadTotal; } else //no hay stock para la cantidad pedida sumada a la del detalle existente { ModelState.AddModelError("Error", "No hay stock suficiente"); } } else //no hay un detalle existente con el mismo producto { if (hayStock(producto, nuevoDetalle.cantidad)) { //esta vez si agregamos el detalle a la lista nuevoDetalle.totalDetalle = producto.precio * nuevoDetalle.cantidad; detalles.Add(nuevoDetalle); } else //no hay stock para la cantidad solicitada { ModelState.AddModelError("Error", "No hay stock suficiente"); } } ////En cualquier caso, volvemos a asignar detalles a la Session, ya que la lista se pudo haber actualizado Session["detalles"] = detalles; ViewBag.detalles = detalles; //Configuramos de nuevo el menu de productos, ya que se guarda temporalmente en la ViewBag configurarDropDownMenu(); return(View("NuevoPedido")); }
public DetallePage(ComprasRequest comprasRequest) { try { BindingContext = new DetalleViewModel(comprasRequest); InitializeComponent(); } catch (Exception ex) { Debug.WriteLine(ex.Message); throw; } }
private List <DetalleViewModel> getDetallesFromPedido(int numPed) { List <Detalle> detallesPorPedido = db.Detalle.Where(detalle => detalle.numPed == numPed).ToList(); List <DetalleViewModel> modelList = new List <DetalleViewModel>(); detallesPorPedido.ForEach(detalle => { Producto producto = db.Producto.Find(detalle.codProd); DetalleViewModel model = new DetalleViewModel(); model.SelectedProductoId = detalle.codProd; model.productoNombre = producto.nombre; model.cantidad = detalle.cantidad; model.precioUnitario = producto.precio; model.totalDetalle = producto.precio * detalle.cantidad; modelList.Add(model); }); return(modelList); }
public ActionResult Detalle(string nombre) { using (DocumentClient client = new DocumentClient(new Uri(ConfigurationManager.AppSettings["CosmosdbURL"]), ConfigurationManager.AppSettings["CosmosdbKey"])) { FeedOptions queryOptions = new FeedOptions { MaxItemCount = 1 }; var collectionLink = UriFactory.CreateDocumentCollectionUri(ConfigurationManager.AppSettings["CosmosdbDatabaseId"], ConfigurationManager.AppSettings["CosmosdbCollectionId"]); AudioDTO audio = client.CreateDocumentQuery <AudioDTO>(collectionLink, "SELECT * FROM AudioProcesado WHERE AudioProcesado.Nombre = '" + nombre + "'", queryOptions).ToList().SingleOrDefault(); //var childrenSqlQuery = client.CreateDocumentQuery<EntidadDTO>(collectionLink, //"SELECT c " + //"FROM c IN f.Children WHERE c.Nombre = '" + nombre + "'").ToList(); //audio.Entidades = childrenSqlQuery; DetalleViewModel model = new DetalleViewModel(); model.Audio = audio; return(View(model)); } }
public ActionResult Detalle(DetalleViewModel modelo) { var aDetalle = new DetallePaciente(); if (ModelState.IsValid) { aDetalle.DetPacId = getGUID(); aDetalle.Calle = modelo.Calle; aDetalle.Colonia = modelo.Colonia; aDetalle.Cp = modelo.Cp; aDetalle.DerechohabienciaId = modelo.DerechohabienciaId; aDetalle.EstadoId = modelo.EstadoId; aDetalle.OcupacionId = modelo.OcupacionId; aDetalle.EscolaridadId = modelo.EscolaridadId; aDetalle.PacienteId = getIdPaciente(User.Identity.GetUserId()); db.DetallePaciente.Add(aDetalle); db.SaveChanges(); return(RedirectToAction("AntPer", "Paciente")); } return(RedirectToAction("Index", "Home")); }
public async Task <VentaDocModel> VentaConsUn([FromRoute] int id) { var venta = await _context.Venta .Include(v => v.usuario) .Include(v => v.persona) .Where(v => v.idventa == id) .FirstAsync(); if (venta == null) { return(new VentaDocModel()); } VentaDocModel ventaDocModel = new VentaDocModel(); List <DetalleViewModel> listaDet = new List <DetalleViewModel>(); ventaDocModel.idventa = venta.idventa; ventaDocModel.idusuario = venta.idusuario; ventaDocModel.usuario = venta.usuario.nombre; //cliente ventaDocModel.idcliente = venta.idcliente; ventaDocModel.cliente = venta.persona.nombre; ventaDocModel.num_documento = venta.persona.num_documento; ventaDocModel.direccion = venta.persona.direccion; //comprobante ventaDocModel.nom_comprobante = venta.tipo_comprobante; ventaDocModel.num_serie_comprobante = venta.serie_comprobante + "-" + venta.num_comprobante; ventaDocModel.total_text = Util.NumeroALetras(venta.total.ToString()); ventaDocModel.fecha_hora = venta.fecha_hora; ventaDocModel.impuesto = venta.impuesto; ventaDocModel.igv = venta.igv; ventaDocModel.bim = venta.bim; ventaDocModel.total = venta.total; ventaDocModel.estado = venta.estado; var ventaDet = await _context.DetallesVentas .Include(v => v.articulo) .Where(v => v.idventa == id) .ToListAsync(); List <DetalleViewModel> detalleViewModelgen = new List <DetalleViewModel>(); foreach (var item in ventaDet) { DetalleViewModel detalleViewModel1 = new DetalleViewModel(); detalleViewModel1.articulo = item.articulo.descripcion; detalleViewModel1.cantidad = item.cantidad; detalleViewModel1.precio = item.precio; detalleViewModel1.precio = item.precio; detalleViewModelgen.Add(detalleViewModel1); } ventaDocModel.Detalle = detalleViewModelgen; return(ventaDocModel); }
public void MapearDesde(GrupoDesgasteLlanta grupoDesgasteLlanta) { Detalle.Clear(); foreach (var detalle in grupoDesgasteLlanta.DetalleActivo) { DetalleViewModel detalleViewModel = new DetalleViewModel(); detalleViewModel.MapearDesde(detalle); Detalle.Add(detalleViewModel); } }
public override void MapearDesde(GrupoInformeInspeccion grupoInformeInspeccion) { base.MapearDesde(grupoInformeInspeccion); Detalle.Clear(); foreach (var detalle in (grupoInformeInspeccion as SubGrupoDesgasteFreno).DetalleActivo) { DetalleViewModel detalleViewModel = new DetalleViewModel(); detalleViewModel.MapearDesde(detalle); Detalle.Add(detalleViewModel); } }
public void MapearDesde(GrupoArticuloMantenimiento grupoArticuloMantenimiento) { Detalle.Clear(); Descripcion = grupoArticuloMantenimiento.Descripcion; Id = grupoArticuloMantenimiento.Id; foreach (var detalle in grupoArticuloMantenimiento.DetalleActivo) { DetalleViewModel detalleViewModel = new DetalleViewModel(); detalleViewModel.MapearDesde(detalle); Detalle.Add(detalleViewModel); } }
public async Task <ActionResult> Insertar(FacturaViewModel model) { try { E_Factura factura = new E_Factura(); var cliente = await clienteServices.DevolverPorCodigo(model.CodCliente); factura.IdCliente = cliente.Id; factura.SubTotal = model.SubTotal; factura.Descuento = model.TotalDescuento; factura.Iva = model.TotalIva; if (model.Detalle != null) { factura.Detalle = new List <E_Detalle>(); foreach (var item in model.Detalle) { E_Detalle detalle = new E_Detalle(); var producto = await productoServices.DevolverPorCodigo(item.CodigoProducto); detalle.IdProducto = producto.Id; detalle.Cantidad = item.Cantidad; detalle.Descuento = item.PorcentajeDescuento; detalle.Iva = item.PorcentajeIva; factura.Detalle.Add(detalle); } } E_Factura fac = await facturaServices.Insertar(factura); FacturaViewModel facturaViewModel = new FacturaViewModel(); facturaViewModel.NumeroFactura = fac.Codigo; facturaViewModel.CodCliente = fac.Cliente.Codigo; var resultcli = await clienteServices.DevolverPorCodigo(fac.Cliente.Codigo); ClienteViewModel clienteViewModel = new ClienteViewModel(); clienteViewModel.Codigo = resultcli.Codigo; clienteViewModel.Identificacion = resultcli.Identificacion; clienteViewModel.Tipo_Documento = resultcli.Tipo_Identificacion.Abreviatura; clienteViewModel.NombreCompleto = resultcli.NombreCompleto; clienteViewModel.Direccion = resultcli.Direccion; clienteViewModel.Telefono = resultcli.Telefono; clienteViewModel.FechaNac = resultcli.FechaNac.ToString("dd/MM/yyyy"); clienteViewModel.Correo = resultcli.Correo; facturaViewModel.Cliente = clienteViewModel; facturaViewModel.Fecha = fac.Fecha.ToString("dd/MM/yyyy"); facturaViewModel.SubTotal = fac.SubTotal; facturaViewModel.TotalDescuento = fac.Descuento; facturaViewModel.TotalIva = fac.Iva; facturaViewModel.TotalGeneral = fac.Total; List <DetalleViewModel> listaDetalle = new List <DetalleViewModel>(); foreach (var item in fac.Detalle) { DetalleViewModel detalle = new DetalleViewModel(); detalle.NumeroFactura = fac.Codigo; detalle.CodigoProducto = item.Producto.Codigo; ProductoViewModel Producto = new ProductoViewModel(); Producto.CodigoProducto = item.Producto.Codigo; Producto.NombreProducto = item.Producto.Nombre; Producto.Descripcion = item.Producto.Descripcion; Producto.Precio = item.Lista_Precio.Precio; detalle.Producto = Producto; detalle.Cantidad = item.Cantidad; detalle.Precio = item.Lista_Precio.Precio; detalle.PorcentajeDescuento = item.Descuento; detalle.PorcentajeIva = item.Iva; listaDetalle.Add(detalle); } facturaViewModel.Detalle = listaDetalle; return(Ok(facturaViewModel)); } catch (System.Exception ex) { return(BadRequest(ex.Message)); } }