public async Task <InventarioGeneral> ActualizarInventario(InventarioForEdit command) { InventarioGeneral dominio = null; AjusteInventario dominio_ajuste = new AjusteInventario(); InvLod dominio_invlod = null; DateTime Fecha_out; dominio = _context.InventarioGeneral.SingleOrDefaultAsync(x => x.Id == command.Id).Result; dominio_invlod = _context.InvLod.SingleOrDefaultAsync(x => x.Id == dominio.LodId).Result; #region validar Fechas if (command.FechaExpire == "" || command.FechaExpire == null) { dominio.FechaExpire = null; } else if (!DateTime.TryParse(command.FechaExpire, out Fecha_out)) { throw new ArgumentException("Fecha de Expiración incorrecta"); } else { dominio.FechaExpire = Convert.ToDateTime(command.FechaExpire); } #endregion dominio_ajuste.Almacenado = dominio.Almacenado; dominio_ajuste.ClienteId = dominio.ClienteId; dominio_ajuste.EstadoId = command.EstadoId; if (command.FechaExpire != null) { dominio_ajuste.FechaExpire = Convert.ToDateTime(command.FechaExpire); } dominio_ajuste.FechaHoraAjuste = DateTime.Now; dominio_ajuste.FechaIngreso = dominio.FechaRegistro; if (command.FechaManufactura != null) { dominio_ajuste.FechaManufactura = Convert.ToDateTime(command.FechaManufactura); } dominio_ajuste.HuellaId = dominio.HuellaId; dominio_ajuste.InventarioId = dominio.Id; dominio_ajuste.LineaId = dominio.LineaId; dominio_ajuste.LodNum = dominio_invlod.LodNum; dominio_ajuste.LotNum = command.LotNum; dominio_ajuste.OrdenReciboId = dominio.OrdenReciboId; dominio_ajuste.ProductoId = dominio.ProductoId; dominio_ajuste.UbicacionId = dominio_invlod.UbicacionId; dominio_ajuste.UntQty = command.UntQty; dominio_ajuste.UsuarioRegistroId = command.UsuarioActualizar; dominio.LotNum = command.LotNum; dominio.UntQty = command.UntQty; if (command.FechaExpire != null) { dominio.FechaExpire = Convert.ToDateTime(command.FechaExpire); } if (command.FechaManufactura != null) { dominio.FechaManufactura = Convert.ToDateTime(command.FechaManufactura); } dominio.EstadoId = command.EstadoId; using (var transaction = _context.Database.BeginTransaction()) { try { await _context.AddAsync <AjusteInventario>(dominio_ajuste); await _context.SaveChangesAsync(); transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); throw ex; } return(dominio); } }
public async Task <long> identifyDetail(OrdenReciboDetalleForIdentifyDto command) { InventarioGeneral dominio = null; //Agrupación... InvLod invLod = null; DateTime Fecha_out; var huelladetalle = await _context.HuellaDetalle.SingleOrDefaultAsync(x => x.HuellaId == command.HuellaId && x.UnidadMedidaId == command.UnidadMedidaId); var huelladetalle_aux = await _context.HuellaDetalle.Where(x => x.HuellaId == command.HuellaId).ToListAsync(); int interacciones = 0; int cantidadTotal = 0; if (huelladetalle.Pallet) // pallet { cantidadTotal = huelladetalle.UntQty * command.CantidadRecibida; interacciones = cantidadTotal / huelladetalle.UntQty; command.CantidadRecibida = huelladetalle.UntQty; } else { cantidadTotal = huelladetalle.UntQty * command.CantidadRecibida; interacciones = 1; } var linea = await _context.OrdenesReciboDetalle.SingleOrDefaultAsync(x => x.Id == command.Id); var cab = await _context.OrdenesRecibo.SingleOrDefaultAsync(x => x.Id == linea.OrdenReciboId); var ubicacion = await _context.Ubicacion.Where(x => x.Id == cab.UbicacionId).SingleAsync(); if (linea.CantidadRecibida == null) { linea.CantidadRecibida = 0; } using (var transaction = _context.Database.BeginTransaction()) { try { for (int i = 0; i < interacciones; i++) { invLod = new InvLod(); invLod.FechaHoraRegistro = DateTime.Now; invLod.LodNum = ""; //En el origen, Stage de entrada. invLod.UbicacionId = cab.UbicacionId; await _context.AddAsync <InvLod>(invLod); await _context.SaveChangesAsync(); // Secuencia de LPN invLod.LodNum = 'E' + (invLod.Id).ToString().PadLeft(8, '0'); dominio = new InventarioGeneral(); //Vinculo INVLOD dominio.LodId = invLod.Id; dominio.FechaRegistro = DateTime.Now; dominio.HuellaId = huelladetalle_aux.Where(x => x.Cas == true).SingleOrDefault().Id; //command.HuellaId; dominio.LotNum = command.Lote; dominio.ProductoId = linea.ProductoId; dominio.UsuarioIngreso = 1; dominio.LineaId = linea.Id; dominio.OrdenReciboId = linea.OrdenReciboId; dominio.EstadoId = command.EstadoID; dominio.UntCas = huelladetalle_aux.Where(x => x.Cas == true).SingleOrDefault().UntQty; linea.EstadoID = command.EstadoID; dominio.ClienteId = cab.PropietarioId; linea.Lote = command.Lote; #region validar Fechas if (command.FechaExpire == "" || command.FechaExpire == null) { dominio.FechaExpire = null; } else if (!DateTime.TryParse(command.FechaExpire, out Fecha_out)) { throw new ArgumentException("Fecha de Expiración incorrecta"); } else { dominio.FechaExpire = Convert.ToDateTime(command.FechaExpire); } if (command.FechaManufactura == "" || command.FechaManufactura == null) { dominio.FechaManufactura = null; } else if (!DateTime.TryParse(command.FechaExpire, out Fecha_out)) { throw new ArgumentException("Fecha de Expiración incorrecta"); } else { dominio.FechaManufactura = Convert.ToDateTime(command.FechaManufactura); } #endregion linea.CantidadRecibida = linea.CantidadRecibida + command.CantidadRecibida; if (linea.Cantidad < linea.CantidadRecibida) { throw new ArgumentException("err010"); } else if (linea.Cantidad == linea.CantidadRecibida) { linea.Completo = true; } dominio.UntQty = command.CantidadRecibida; await _context.AddAsync <InventarioGeneral>(dominio); } cab.EstadoId = (Int16)Constantes.EstadoOrdenIngreso.Recibiendo; ubicacion.EstadoId = 10; // Libre await _context.SaveChangesAsync(); transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); throw ex; } finally { transaction.Dispose(); } } return(interacciones); }
public async Task <long> MergeInventario(MergeInventarioRegister mergeInventarioRegister) { string[] prm = mergeInventarioRegister.ids.Split(','); InventarioGeneral dominio = new InventarioGeneral(); InvLod invLod = null; int total = 0; List <AjusteInventario> ajustes = new List <AjusteInventario>(); AjusteInventario ajuste = null; var aux = _context.InventarioGeneral.Where(x => x.Id == Convert.ToInt64(prm[1])).SingleOrDefault(); var lod = _context.InvLod.Where(x => x.Id == aux.LodId).SingleOrDefault(); //dominio.UntQty = total; using (var transaction = _context.Database.BeginTransaction()) { try { invLod = new InvLod(); invLod.FechaHoraRegistro = DateTime.Now; invLod.LodNum = ""; invLod.UbicacionId = lod.UbicacionId; await _context.AddAsync <InvLod>(invLod); await _context.SaveChangesAsync(); // Secuencia de LPN invLod.LodNum = 'E' + (invLod.Id).ToString().PadLeft(8, '0'); foreach (var item in prm) { var inventarios = _context.InventarioGeneral.Where(x => x.LodId == Convert.ToInt64(item)).ToList(); foreach (var item2 in inventarios) { //Vinculo INVLOD item2.LodId = invLod.Id; _context.SaveChanges(); } } // foreach (var item in prm) // { // var inventarios = _context.InventarioGeneral.Where(x=>x.LodId == Convert.ToInt64(item)).ToList(); // foreach (var objInventario in inventarios) // { // ajuste = new AjusteInventario(); // ajuste.EstadoId = (int) Constantes.EstadoInventario.Eliminado; // ajuste.FechaExpire= objInventario.FechaExpire; // ajuste.FechaHoraAjuste = DateTime.Now; // ajuste.FechaIngreso = objInventario.FechaRegistro; // ajuste.FechaManufactura = objInventario.FechaManufactura; // ajuste.LotNum = invLod.LodNum ; // ajuste.UntQty = objInventario.UntQty; // ajuste.ProductoId = objInventario.ProductoId; // ajuste.InventarioId = objInventario.Id; // ajuste.ClienteId = objInventario.ClienteId; // ajuste.LineaId = objInventario.LineaId; // ajuste.OrdenReciboId = objInventario.OrdenReciboId; // ajuste.Almacenado = objInventario.Almacenado; // ajuste.HuellaId = objInventario.HuellaId; // ajuste.UsuarioRegistroId = 1; // ajustes.Add(ajuste); // } // } //agregar a ajustes await _context.AddRangeAsync(ajustes); await _context.SaveChangesAsync(); transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); throw ex; } return(dominio.Id); } }