public async void ModificarProductoTerminado() { var formProductoTerminado = new FormProductoTerminado(context, ProductoTerminadoSeleccionado); var formProductoTerminadoDataContext = formProductoTerminado.DataContext as FormProductoTerminadoViewModel; var productosTerminadosComposicionesIniciales = formProductoTerminadoDataContext.ProductosTerminadosComposiciones.ToList(); var historialHuecosAlmacenajesIniciales = formProductoTerminadoDataContext.HistorialHuecosAlmacenajes.ToList(); if ((bool)await DialogHost.Show(formProductoTerminado, "RootDialog")) { ProductoTerminadoSeleccionado.TipoId = formProductoTerminadoDataContext.TipoProductoTerminado.TipoProductoTerminadoId; ProductoTerminadoSeleccionado.Unidades = formProductoTerminadoDataContext.Unidades; ProductoTerminadoSeleccionado.Volumen = formProductoTerminadoDataContext.Volumen; ProductoTerminadoSeleccionado.Observaciones = formProductoTerminadoDataContext.Observaciones; if (formProductoTerminadoDataContext.FechaBaja != null) { ProductoTerminadoSeleccionado.FechaBaja = new DateTime( formProductoTerminadoDataContext.FechaBaja.Value.Year, formProductoTerminadoDataContext.FechaBaja.Value.Month, formProductoTerminadoDataContext.FechaBaja.Value.Day, formProductoTerminadoDataContext.HoraBaja.Value.Hour, formProductoTerminadoDataContext.HoraBaja.Value.Minute, formProductoTerminadoDataContext.HoraBaja.Value.Second); } else { ProductoTerminadoSeleccionado.FechaBaja = null; } if (!context.ProductosTerminadosComposiciones.Any(ptc => ptc.ProductoId == ProductoTerminadoSeleccionado.ProductoTerminadoId)) { // Se borran todos los productos terminados comosiciones antiguos y se añaden los nuevos context.ProductosTerminadosComposiciones.RemoveRange(productosTerminadosComposicionesIniciales); var productosTerminadosComposiciones = new List <ProductoTerminadoComposicion>(); foreach (var ptc in formProductoTerminadoDataContext.ProductosTerminadosComposiciones) { var hhrId = ptc.HistorialHuecoRecepcion.HistorialHuecoRecepcionId; // Los huecos que no se ha añadido ninguna cantidad no se añaden if (ptc.Unidades != 0 && ptc.Volumen != 0) { // Hay que asegurarse que la cantidad de materia prima escogida es como máximo la disponible en el hueco if (ptc.HistorialHuecoRecepcion.MateriaPrima.TipoMateriaPrima.MedidoEnUnidades == true) { ptc.Unidades = (ptc.Unidades > ptc.HistorialHuecoRecepcion.UnidadesRestantes) ? (ptc.HistorialHuecoRecepcion.UnidadesRestantes) : (ptc.Unidades); } else { ptc.Volumen = (ptc.Volumen > ptc.HistorialHuecoRecepcion.VolumenRestante) ? (ptc.HistorialHuecoRecepcion.UnidadesRestantes) : (ptc.Volumen); } ptc.HistorialHuecoRecepcion = null; ptc.HistorialHuecoId = hhrId; ptc.ProductoTerminado = ProductoTerminadoSeleccionado; productosTerminadosComposiciones.Add(ptc); } } context.ProductosTerminadosComposiciones.AddRange(productosTerminadosComposiciones); // Se borran todos los historiales huecos almacenajes antiguos y se añaden los nuevos context.HistorialHuecosAlmacenajes.RemoveRange(historialHuecosAlmacenajesIniciales); var historialHuecosAlmacenajes = new List <HistorialHuecoAlmacenaje>(); foreach (var hha in formProductoTerminadoDataContext.HistorialHuecosAlmacenajes) { var haId = hha.HuecoAlmacenaje.HuecoAlmacenajeId; // Los huecos que no se ha añadido ninguna cantidad no se añaden if (hha.Unidades != 0 && hha.Volumen != 0) { hha.HuecoAlmacenaje = null; hha.HuecoAlmacenajeId = haId; hha.ProductoTerminado = ProductoTerminadoSeleccionado; historialHuecosAlmacenajes.Add(hha); } } context.HistorialHuecosAlmacenajes.AddRange(historialHuecosAlmacenajes); } context.SaveChanges(); ProductosTerminadosView.Refresh(); } }
private async void AnadirProductoTerminado() { var formProductoTerminado = new FormProductoTerminado(context); if ((bool)await DialogHost.Show(formProductoTerminado, "RootDialog")) { var formProductoTerminadoDataContext = formProductoTerminado.DataContext as FormProductoTerminadoViewModel; var productoTerminado = new ProductoTerminado() { OrdenId = OrdenElaboracionSeleccionada.OrdenElaboracionId, TipoId = (formProductoTerminado.cbTiposProductosTerminados.SelectedItem as TipoProductoTerminado).TipoProductoTerminadoId, Volumen = formProductoTerminadoDataContext.Volumen, Unidades = formProductoTerminadoDataContext.Unidades, Observaciones = formProductoTerminadoDataContext.Observaciones }; if (formProductoTerminadoDataContext.FechaBaja != null) { productoTerminado.FechaBaja = new DateTime( formProductoTerminadoDataContext.FechaBaja.Value.Year, formProductoTerminadoDataContext.FechaBaja.Value.Month, formProductoTerminadoDataContext.FechaBaja.Value.Day, formProductoTerminadoDataContext.HoraBaja.Value.Hour, formProductoTerminadoDataContext.HoraBaja.Value.Minute, formProductoTerminadoDataContext.HoraBaja.Value.Second); } context.ProductosTerminados.Add(productoTerminado); var productosTerminadosComposiciones = new List <ProductoTerminadoComposicion>(); foreach (var ptc in formProductoTerminadoDataContext.ProductosTerminadosComposiciones) { var hhrId = ptc.HistorialHuecoRecepcion.HistorialHuecoRecepcionId; // Los huecos que no se ha añadido ninguna cantidad no se añaden if (ptc.Unidades != 0 && ptc.Volumen != 0) { // Hay que asegurarse que la cantidad de materia prima escogida es como máximo la disponible en el hueco if (ptc.HistorialHuecoRecepcion.MateriaPrima.TipoMateriaPrima.MedidoEnUnidades == true) { ptc.Unidades = (ptc.Unidades > ptc.HistorialHuecoRecepcion.UnidadesRestantes) ? (ptc.HistorialHuecoRecepcion.UnidadesRestantes) : (ptc.Unidades); } else { ptc.Volumen = (ptc.Volumen > ptc.HistorialHuecoRecepcion.VolumenRestante) ? (ptc.HistorialHuecoRecepcion.UnidadesRestantes) : (ptc.Volumen); } ptc.HistorialHuecoRecepcion = null; ptc.HistorialHuecoId = hhrId; ptc.ProductoTerminado = productoTerminado; productosTerminadosComposiciones.Add(ptc); } } context.ProductosTerminadosComposiciones.AddRange(productosTerminadosComposiciones); var historialHuecosAlmacenajes = new List <HistorialHuecoAlmacenaje>(); foreach (var hha in formProductoTerminadoDataContext.HistorialHuecosAlmacenajes) { var haId = hha.HuecoAlmacenaje.HuecoAlmacenajeId; // Los huecos que no se ha añadido ninguna cantidad no se añaden if (hha.Unidades != 0 && hha.Volumen != 0) { hha.HuecoAlmacenaje = null; hha.HuecoAlmacenajeId = haId; hha.ProductoTerminado = productoTerminado; historialHuecosAlmacenajes.Add(hha); } } context.HistorialHuecosAlmacenajes.AddRange(historialHuecosAlmacenajes); context.SaveChanges(); CargarProductosTerminados(); } }