private void CargarCorreccion(CorreccionStock correccion) { Descripcion = correccion.Producto.Descripcion; Precio = correccion.Precio; CantidadActual = correccion.Cantidad.ToString(); MotivoId = correccion.MotivoCorreccionId; DeshabilitarDetalle(); }
public void ActualizarStock(Stock stock, decimal diferencia, int motivoCorreccionId, decimal precioConIVA) { ////Obtenemos el producto a actualizar var producto = Uow.Productos.Obtener(stock.ProductoId); if (producto == null) throw new ApplicationException("No se ha encontrado el producto"); if (!producto.AceptaCantidadesDecimales && (stock.StockActual % 1 != 0)) throw new ApplicationException("El producto no acepta cantidades decimales"); var stockTransaccion = new StockTransaccion(); var now = DateTime.Now; producto.PrecioConIVA = precioConIVA; producto.PrecioSinIVA = precioConIVA / 1.21m; //3 = Corrección stockTransaccion.StockTransaccionTipoId = 3; stockTransaccion.Identifier = Guid.NewGuid(); var motivo = Uow.MotivosCorreccion.Obtener(motivoCorreccionId); if (!motivo.SumarAStock) { diferencia = -diferencia; } var stockTransacciones = Uow.StockTransacciones.Listado().Where(st => st.StockId == stock.StockId); //Creamos una nueva transaccion con la diferencia entre el stock actual y el ingresado por el usuario. var stockActual = stockTransacciones.Select(st => st.Cantidad) .DefaultIfEmpty(0) .Sum(); stock.StockActual = stockActual + diferencia; if (stock.StockId == 0) { stock.Identifier = Guid.NewGuid(); Uow.Stocks.Agregar(stock); stockTransaccion.Stock = stock; stockTransaccion.Cantidad = diferencia; } else { stockTransaccion.Cantidad = diferencia; stockTransaccion.StockId = stock.StockId; Uow.Stocks.Modificar(stock); } Uow.StockTransacciones.Agregar(stockTransaccion); ////Agregamos la correccion de stock. var correccionStock = new CorreccionStock(); correccionStock.Cantidad = stockTransaccion.Cantidad; correccionStock.MotivoCorreccionId = motivoCorreccionId; correccionStock.ProductoId = stock.ProductoId; correccionStock.Precio = producto.PrecioConIVA; correccionStock.Fecha = now; correccionStock.Identifier = Guid.NewGuid(); correccionStock.MaxiKioscoId = stock.MaxiKioscoId; ////Set sincronization properties. correccionStock.FechaUltimaModificacion = now; correccionStock.Desincronizado = true; Uow.Productos.Modificar(producto); Uow.CorreccionesDeStock.Agregar(correccionStock); Uow.Commit(); }
private void AgregarCorreccion(ProductoCompleto original) { var correccionstock = new CorreccionStock() //actualizar las propiedades { ProductoId = original.ProductoId, Cantidad = Convert.ToDecimal(CantidadActual), Precio = original.PrecioConIVA, MotivoCorreccionId = MotivoId, Desincronizado = true, FechaUltimaModificacion = DateTime.Now, Fecha =DateTime.Now, Identifier = Guid.NewGuid(), MaxiKioscoId = AppSettings.MaxiKioscoId, }; CorreccionStockRepository.Agregar(correccionstock); CorreccionStockRepository.Commit(); }
public void TransferirStock(Stock stockOrigen, int unidades, int destinoId) { ////Obtenemos el producto a actualizar var producto = Uow.Productos.Obtener(stockOrigen.ProductoId); if (producto == null) throw new ApplicationException("No se ha encontrado el producto"); var now = DateTime.Now; //Actualizo el origen var transOrigen = new StockTransaccion { Cantidad = -unidades, Identifier = Guid.NewGuid(), FechaUltimaModificacion = now, StockTransaccionTipoId = 3 }; if (stockOrigen.StockId == 0) { stockOrigen.StockActual = -unidades; stockOrigen.StockTransacciones = new Collection<StockTransaccion> { transOrigen }; Uow.Stocks.Agregar(stockOrigen); } else { stockOrigen.StockActual -= unidades; stockOrigen.FechaUltimaModificacion = now; Uow.Stocks.Modificar(stockOrigen); transOrigen.StockId = stockOrigen.StockId; Uow.StockTransacciones.Agregar(transOrigen); } var correccionOrigen = new CorreccionStock { Cantidad = transOrigen.Cantidad, MotivoCorreccionId = 5, //Transferencia ProductoId = stockOrigen.ProductoId, Precio = producto.PrecioConIVA, Fecha = now, Identifier = Guid.NewGuid(), MaxiKioscoId = stockOrigen.MaxiKioscoId, FechaUltimaModificacion = now, Desincronizado = true }; Uow.CorreccionesDeStock.Agregar(correccionOrigen); //Ahora actualizo el destino var transDestino = new StockTransaccion { Cantidad = unidades, Identifier = Guid.NewGuid(), FechaUltimaModificacion = now, StockTransaccionTipoId = 3 }; var stockDestino = Uow.Stocks.Obtener(s => s.MaxiKioscoId == destinoId && s.ProductoId == stockOrigen.ProductoId); if (stockDestino == null) { stockDestino = new Stock() { Desincronizado = true, Identifier = Guid.NewGuid(), MaxiKioscoId = destinoId, ProductoId = stockOrigen.ProductoId, StockActual = unidades, OperacionCreacion = "Recibido desde transferencia", FechaCreacion = DateTime.Now, StockTransacciones = new Collection<StockTransaccion> { transDestino } }; Uow.Stocks.Agregar(stockDestino); } else { stockDestino.FechaUltimaModificacion = now; stockDestino.StockActual += unidades; Uow.Stocks.Modificar(stockDestino); transDestino.StockId = stockDestino.StockId; Uow.StockTransacciones.Agregar(transDestino); } var correccionDestino = new CorreccionStock { Cantidad = transDestino.Cantidad, MotivoCorreccionId = 5, //Transferencia ProductoId = stockOrigen.ProductoId, Precio = producto.PrecioConIVA, Fecha = now, Identifier = Guid.NewGuid(), MaxiKioscoId = stockDestino.MaxiKioscoId, FechaUltimaModificacion = now, Desincronizado = true }; Uow.CorreccionesDeStock.Agregar(correccionDestino); Uow.Commit(); }