private async void AnadirProductoEnvasado() { var formProductoEnvasado = new FormProductoEnvasado(context); if ((bool)await DialogHost.Show(formProductoEnvasado, "RootDialog")) { var formProductoEnvasadoDataContext = formProductoEnvasado.DataContext as FormProductoEnvasadoViewModel; var productoEnvasado = new ProductoEnvasado() { OrdenId = OrdenEnvasadoSeleccionada.OrdenEnvasadoId, TipoProductoEnvasadoId = (formProductoEnvasado.cbTiposProductosEnvasados.SelectedItem as TipoProductoEnvasado).TipoProductoEnvasadoId, Volumen = formProductoEnvasadoDataContext.Volumen, Unidades = formProductoEnvasadoDataContext.Unidades, PickingId = (formProductoEnvasado.cbPicking.SelectedItem as Picking).PickingId, Observaciones = formProductoEnvasadoDataContext.Observaciones }; context.ProductosEnvasados.Add(productoEnvasado); var productosEnvasadosComposiciones = new List <ProductoEnvasadoComposicion>(); foreach (var pec in formProductoEnvasadoDataContext.ProductosEnvasadosComposiciones) { var hhaId = pec.HistorialHuecoAlmacenaje.HistorialHuecoAlmacenajeId; // Los huecos que no se ha añadido ninguna cantidad no se añaden if (pec.Unidades != 0 && pec.Volumen != 0) { // Hay que asegurarse que la cantidad de materia prima escogida es como máximo la disponible en el hueco if (pec.HistorialHuecoAlmacenaje.ProductoTerminado.TipoProductoTerminado.MedidoEnUnidades == true) { pec.Unidades = (pec.Unidades > pec.HistorialHuecoAlmacenaje.UnidadesRestantes) ? (pec.HistorialHuecoAlmacenaje.UnidadesRestantes) : (pec.Unidades); } else { pec.Volumen = (pec.Volumen > pec.HistorialHuecoAlmacenaje.VolumenRestante) ? (pec.HistorialHuecoAlmacenaje.UnidadesRestantes) : (pec.Volumen); } pec.HistorialHuecoAlmacenaje = null; pec.HistorialHuecoId = hhaId; pec.ProductoEnvasado = productoEnvasado; productosEnvasadosComposiciones.Add(pec); } } context.ProductosEnvasadosComposiciones.AddRange(productosEnvasadosComposiciones); context.SaveChanges(); CargarProductosEnvasados(); } }
public async void ModificarProductoEnvasado() { var formProductoEnvasado = new FormProductoEnvasado(context, ProductoEnvasadoSeleccionado); var formProductoEnvasadoDataContext = formProductoEnvasado.DataContext as FormProductoEnvasadoViewModel; var productosEnvasadosComposicionesIniciales = formProductoEnvasadoDataContext.ProductosEnvasadosComposiciones.ToList(); if ((bool)await DialogHost.Show(formProductoEnvasado, "RootDialog")) { ProductoEnvasadoSeleccionado.TipoProductoEnvasadoId = formProductoEnvasadoDataContext.TipoProductoEnvasado.TipoProductoEnvasadoId; ProductoEnvasadoSeleccionado.Unidades = formProductoEnvasadoDataContext.Unidades; ProductoEnvasadoSeleccionado.Volumen = formProductoEnvasadoDataContext.Volumen; ProductoEnvasadoSeleccionado.Observaciones = formProductoEnvasadoDataContext.Observaciones; if (!context.ProductosEnvasadosComposiciones.Any(pec => pec.ProductoId == ProductoEnvasadoSeleccionado.ProductoEnvasadoId)) { // Se borran todos los productos envasados composiciones antiguos y se añaden los nuevos context.ProductosEnvasadosComposiciones.RemoveRange(productosEnvasadosComposicionesIniciales); var productosEnvasadosComposiciones = new List <ProductoEnvasadoComposicion>(); foreach (var pec in formProductoEnvasadoDataContext.ProductosEnvasadosComposiciones) { var hhaId = pec.HistorialHuecoAlmacenaje.HistorialHuecoAlmacenajeId; // Los huecos que no se ha añadido ninguna cantidad no se añaden if (pec.Unidades != 0 && pec.Volumen != 0) { // Hay que asegurarse que la cantidad de materia prima escogida es como máximo la disponible en el hueco if (pec.HistorialHuecoAlmacenaje.ProductoTerminado.TipoProductoTerminado.MedidoEnUnidades == true) { pec.Unidades = (pec.Unidades > pec.HistorialHuecoAlmacenaje.UnidadesRestantes) ? (pec.HistorialHuecoAlmacenaje.UnidadesRestantes) : (pec.Unidades); } else { pec.Volumen = (pec.Volumen > pec.HistorialHuecoAlmacenaje.VolumenRestante) ? (pec.HistorialHuecoAlmacenaje.UnidadesRestantes) : (pec.Volumen); } pec.HistorialHuecoAlmacenaje = null; pec.HistorialHuecoId = hhaId; pec.ProductoEnvasado = ProductoEnvasadoSeleccionado; productosEnvasadosComposiciones.Add(pec); } } context.ProductosEnvasadosComposiciones.AddRange(productosEnvasadosComposiciones); } context.SaveChanges(); ProductosEnvasadosView.Refresh(); } }