public async Task <long> RegisterOrdenSalidaDetalle(OrdenSalidaDetalleForRegister command) { OrdenSalidaDetalle dominio; string linea = ""; int cantidadTotal = 0; var detalles = _context.OrdenSalidaDetalle.Where(x => x.OrdenSalidaId == command.OrdenSalidaId); if (detalles.Count() == 0) { linea = "0001"; } else { linea = detalles.Max(x => x.Linea).ToString(); linea = (Convert.ToInt32(linea) + 1).ToString().PadLeft(4, '0'); } 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(); if (huelladetalle.Pallet) // pallet { cantidadTotal = huelladetalle.UntQty * command.Cantidad; command.Cantidad = cantidadTotal; } // else // { // cantidadTotal = huelladetalle.UntQty * command.Cantidad; // } dominio = new OrdenSalidaDetalle(); dominio.Cantidad = command.Cantidad; dominio.Completo = command.Completo; dominio.EstadoID = command.EstadoID; dominio.HuellaId = command.HuellaId; dominio.Linea = linea; dominio.Lote = command.Lote; dominio.OrdenSalidaId = command.OrdenSalidaId; dominio.ProductoId = command.ProductoId; dominio.UnidadMedidaId = command.UnidadMedidaId; using (var transaction = _context.Database.BeginTransaction()) { await _context.OrdenSalidaDetalle.AddAsync(dominio); await _context.SaveChangesAsync(); transaction.Commit(); return(dominio.Id); } }
public async Task <long> RegisterOrdenSalidaDetalle(OrdenSalidaDetalleForRegister command) { OrdenSalidaDetalle dominio; string linea = ""; //int cantidadTotal = 0; var detalles = _context.OrdenSalidaDetalle.Where(x => x.OrdenSalidaId == command.OrdenSalidaId); if (detalles.Count() == 0) { linea = "0001"; } else { linea = detalles.Max(x => x.Linea).ToString(); linea = (Convert.ToInt32(linea) + 1).ToString().PadLeft(4, '0'); } int total = 0; var inventario = _context.InventarioGeneral.Where(x => x.ProductoId == command.ProductoId).ToList(); inventario.ForEach(x => total = total + x.UntQty); if (total < command.Cantidad) { throw new ArgumentException("No existen productos sufientes en el inventario"); } total = 0; if (command.Lote != null) { var existen = inventario.Where(x => x.LotNum == command.Lote).ToList(); existen.ForEach(x => total = total + x.UntQty); if (total < command.Cantidad) { throw new ArgumentException("No existen productos sufientes en el inventario"); } } dominio = new OrdenSalidaDetalle(); dominio.Cantidad = command.Cantidad; dominio.Completo = command.Completo; dominio.EstadoId = command.EstadoID; dominio.HuellaId = command.HuellaId; dominio.Linea = linea; dominio.Lote = command.Lote; dominio.OrdenSalidaId = command.OrdenSalidaId; dominio.ProductoId = command.ProductoId; dominio.UnidadMedidaId = command.UnidadMedidaId; using (var transaction = _context.Database.BeginTransaction()) { await _context.OrdenSalidaDetalle.AddAsync(dominio); await _context.SaveChangesAsync(); transaction.Commit(); return(dominio.Id); } }
public async Task <IActionResult> Register_Detail(OrdenSalidaDetalleForRegister ordenReciboDetalleForRegisterDto) { var resp = await _repo_OrdenSalida.RegisterOrdenSalidaDetalle(ordenReciboDetalleForRegisterDto); return(Ok(resp)); }