private Stock AgregarStock(int productoid, decimal stockactual) { var stock = new Stock { ProductoId = productoid, MaxiKioscoId = AppSettings.MaxiKioscoId, Identifier = Guid.NewGuid(), StockActual = stockactual, Desincronizado = true, FechaUltimaModificacion = DateTime.Now, Eliminado = false, OperacionCreacion = "Correccion de stock DESKTOP", FechaCreacion = DateTime.Now }; StockRepository.Agregar(stock); StockRepository.Commit(); return(stock); }
private void Aceptar() { if (PopupAbierto) { PopupAbierto = false; } else if (MensajeErrorAbierto) { MensajeErrorAbierto = false; } else if (ConfirmacionAbierta) { ConfirmacionAbierta = false; } else { if (dgvListado.Rows.Count > 0) { var lineas = new List <VentaProducto>(); decimal total = 0; decimal costoTotal = 0; for (int i = 0; i <= dgvListado.Rows.Count - 1; i++) { var linea = new VentaProducto(); linea.Cantidad = decimal.Parse(dgvListado.Rows[i].Cells["Cantidad"].Value.ToString()); linea.Eliminado = false; linea.Identifier = Guid.NewGuid(); linea.Precio = Convert.ToDecimal(dgvListado.Rows[i].Cells["Unitario"].Value.ToString().Replace("$", "")); linea.ProductoId = (int)dgvListado.Rows[i].Cells["productoId"].Value; linea.Costo = dgvListado.Rows[i].Cells["Costo"].Value == null ? 0 : Convert.ToDecimal(dgvListado.Rows[i].Cells["Costo"].Value.ToString().Replace("$", "")); var recargo = dgvListado.Rows[i].Cells["Recargo"].Value; linea.EsPromocion = bool.Parse(dgvListado.Rows[i].Cells["EsPromocion"].Value.ToString()); linea.AdicionalPorExcepcion = recargo == null ? (decimal?)null : Convert.ToDecimal(recargo.ToString().Replace("$", "")) * linea.Cantidad; linea.Desincronizado = true; total += Convert.ToDecimal(linea.Cantidad) * linea.Precio.GetValueOrDefault(); costoTotal += Convert.ToDecimal(linea.Cantidad) * linea.Costo; lineas.Add(linea); } ConfirmacionAbierta = true; var frmConfirmar = new frmConfirmarVenta(total); if (frmConfirmar.ShowDialog() == DialogResult.OK) { ConfirmacionAbierta = false; var venta = new Venta { ImporteTotal = total, CostoTotal = costoTotal, Identifier = Guid.NewGuid(), Eliminado = false, CierreCajaId = UsuarioActual.CierreCajaIdActual, FechaVenta = DateTime.Now, VentaProductos = lineas }; venta.CierreCajaId = UsuarioActual.CierreCajaIdActual; var stockRepository = new StockRepository(); var stockTransaccionRepository = new EFRepository <StockTransaccion>(); var seAgregoStock = false; var seAgregoTransaccion = false; //Agrego primero a la coleccion las lineas secundarias correspondientes a promociones var secundarias = new List <VentaProducto>(); foreach (var linea in lineas.Where(l => l.EsPromocion)) { var productos = ProductoPromocionRepository.Listado().Where(p => p.PadreId == linea.ProductoId && !p.Eliminado).ToList(); secundarias.AddRange(productos.Select(p => new VentaProducto() { Cantidad = p.Unidades * linea.Cantidad, ProductoId = p.HijoId })); } lineas.AddRange(secundarias); foreach (var line in lineas) { var stockSt = new StockTransaccion { Cantidad = line.Cantidad * (-1), StockTransaccionTipoId = 1, Identifier = Guid.NewGuid(), Desincronizado = true }; var stock = stockRepository.ObtenerByProducto(line.ProductoId, AppSettings.MaxiKioscoId); if (stock != null) { stockSt.StockId = stock.StockId; stock.StockActual = stock.StockActual - Convert.ToDecimal(line.Cantidad); stockTransaccionRepository.Agregar(stockSt); stockRepository.Modificar(stock); seAgregoTransaccion = true; seAgregoStock = true; } else { stock = new Stock() { Identifier = Guid.NewGuid(), MaxiKioscoId = AppSettings.MaxiKioscoId, ProductoId = line.ProductoId, StockActual = -line.Cantidad, OperacionCreacion = "Venta en DESKTOP", FechaCreacion = DateTime.Now, StockTransacciones = new List <StockTransaccion> { stockSt } }; stockRepository.Agregar(stock); seAgregoStock = true; } } if (seAgregoStock) { stockRepository.Commit(); } if (seAgregoTransaccion) { stockTransaccionRepository.Commit(); } Repository.Agregar(venta); if (Repository.Commit()) { Limpiar(); } else { Mensajes.Guardar(false, "Ha ocurrido un error al registrar la venta. Por favor intente nuevamente"); } ReiniciarVenta(); } } } }
private void Aceptar() { if (PopupAbierto) PopupAbierto = false; else if (MensajeErrorAbierto) MensajeErrorAbierto = false; else if (ConfirmacionAbierta) { ConfirmacionAbierta = false; } else { if (dgvListado.Rows.Count > 0) { var lineas = new List<VentaProducto>(); decimal total = 0; decimal costoTotal = 0; for (int i = 0; i <= dgvListado.Rows.Count - 1; i++) { var linea = new VentaProducto(); linea.Cantidad = decimal.Parse(dgvListado.Rows[i].Cells["Cantidad"].Value.ToString()); linea.Eliminado = false; linea.Identifier = Guid.NewGuid(); linea.Precio = Convert.ToDecimal(dgvListado.Rows[i].Cells["Unitario"].Value.ToString().Replace("$", "")); linea.ProductoId = (int)dgvListado.Rows[i].Cells["productoId"].Value; linea.Costo = dgvListado.Rows[i].Cells["Costo"].Value == null ? 0 : Convert.ToDecimal(dgvListado.Rows[i].Cells["Costo"].Value.ToString().Replace("$", "")); var recargo = dgvListado.Rows[i].Cells["Recargo"].Value; linea.EsPromocion = bool.Parse(dgvListado.Rows[i].Cells["EsPromocion"].Value.ToString()); linea.AdicionalPorExcepcion = recargo == null ? (decimal?)null : Convert.ToDecimal(recargo.ToString().Replace("$", "")) * linea.Cantidad; linea.Desincronizado = true; total += Convert.ToDecimal(linea.Cantidad) * linea.Precio.GetValueOrDefault(); costoTotal += Convert.ToDecimal(linea.Cantidad) * linea.Costo; lineas.Add(linea); } ConfirmacionAbierta = true; var frmConfirmar = new frmConfirmarVenta(total); if (frmConfirmar.ShowDialog() == DialogResult.OK) { ConfirmacionAbierta = false; var venta = new Venta { ImporteTotal = total, CostoTotal = costoTotal, Identifier = Guid.NewGuid(), Eliminado = false, CierreCajaId = UsuarioActual.CierreCajaIdActual, FechaVenta = DateTime.Now, VentaProductos = lineas }; venta.CierreCajaId = UsuarioActual.CierreCajaIdActual; var stockRepository = new StockRepository(); var stockTransaccionRepository = new EFRepository<StockTransaccion>(); var seAgregoStock = false; var seAgregoTransaccion = false; //Agrego primero a la coleccion las lineas secundarias correspondientes a promociones var secundarias = new List<VentaProducto>(); foreach (var linea in lineas.Where(l => l.EsPromocion)) { var productos = ProductoPromocionRepository.Listado().Where(p => p.PadreId == linea.ProductoId && !p.Eliminado).ToList(); secundarias.AddRange(productos.Select(p => new VentaProducto() { Cantidad = p.Unidades * linea.Cantidad, ProductoId = p.HijoId })); } lineas.AddRange(secundarias); foreach (var line in lineas) { var stockSt = new StockTransaccion { Cantidad = line.Cantidad * (-1), StockTransaccionTipoId = 1, Identifier = Guid.NewGuid(), Desincronizado = true }; var stock = stockRepository.ObtenerByProducto(line.ProductoId, AppSettings.MaxiKioscoId); if (stock != null) { stockSt.StockId = stock.StockId; stock.StockActual = stock.StockActual - Convert.ToDecimal(line.Cantidad); stockTransaccionRepository.Agregar(stockSt); stockRepository.Modificar(stock); seAgregoTransaccion = true; seAgregoStock = true; } else { stock = new Stock() { Identifier = Guid.NewGuid(), MaxiKioscoId = AppSettings.MaxiKioscoId, ProductoId = line.ProductoId, StockActual = -line.Cantidad, OperacionCreacion = "Venta en DESKTOP", FechaCreacion = DateTime.Now, StockTransacciones = new List<StockTransaccion> { stockSt } }; stockRepository.Agregar(stock); seAgregoStock = true; } } if (seAgregoStock) stockRepository.Commit(); if (seAgregoTransaccion) stockTransaccionRepository.Commit(); Repository.Agregar(venta); if (Repository.Commit()) { Limpiar(); } else { Mensajes.Guardar(false, "Ha ocurrido un error al registrar la venta. Por favor intente nuevamente"); } ReiniciarVenta(); } } } }