public IActionResult Generar([FromBody] GenerarLoteRequestDTO request) { Guid guid = Guid.NewGuid(); _log.RegistrarEvento($"{guid.ToString()}{Environment.NewLine}{Newtonsoft.Json.JsonConvert.SerializeObject(request)}"); GenerarLoteResponseDTO response = new GenerarLoteResponseDTO(); try { response.Result.Data = _loteService.GenerarLote(request); response.Result.Success = true; } catch (ResultException ex) { response.Result = new Result() { Success = true, ErrCode = ex.Result.ErrCode, Message = ex.Result.Message }; } catch (Exception ex) { response.Result = new Result() { Success = false, Message = "Ocurrio un problema en el servicio, intentelo nuevamente." }; _log.RegistrarEvento(ex, guid.ToString()); } _log.RegistrarEvento($"{guid.ToString()}{Environment.NewLine}{Newtonsoft.Json.JsonConvert.SerializeObject(response)}"); return(Ok(response)); }
public int GenerarLote(GenerarLoteRequestDTO request) { Lote lote = new Lote(); lote.EmpresaId = request.EmpresaId; lote.Numero = _ICorrelativoRepository.Obtener(request.EmpresaId, Documentos.Lote); lote.EstadoId = LoteEstados.Ingresado; lote.AlmacenId = request.AlmacenId; lote.FechaRegistro = DateTime.Now; lote.UsuarioRegistro = request.Usuario; lote.ProductoId = request.ProductoId; lote.SubProductoId = request.SubProductoId; lote.TipoCertificacionId = request.TipoCertificacionId; int loteId = 0; decimal totalKilosNetosPesado = 0; decimal totalKilosNetosDescontar = 0; decimal totalKilosNetosPagar = 0; decimal totalKilosBrutosPesado = 0; decimal totalCantidad = 0; string unidadMedidaId = String.Empty; decimal totalRendimientoPorcentaje = 0; decimal totalAnalisisSensorial = 0; decimal totalHumedadPorcentaje = 0; string tipoProduccionId = String.Empty; List <NotaIngresoAlmacen> notasIngreso = _INotaIngresoAlmacenRepository.ConsultarNotaIngresoPorIds(request.NotasIngresoAlmacenId).ToList(); if (notasIngreso != null) { List <LoteDetalle> lotesDetalle = new List <LoteDetalle>(); notasIngreso.ForEach(notaingreso => { LoteDetalle item = new LoteDetalle(); item.LoteId = loteId; item.NotaIngresoAlmacenId = notaingreso.NotaIngresoAlmacenId; item.Numero = notaingreso.Numero; item.TipoProvedorId = notaingreso.TipoProvedorId; item.SocioId = notaingreso.SocioId; item.TerceroId = notaingreso.TerceroId; item.IntermediarioId = notaingreso.IntermediarioId; item.ProductoId = notaingreso.ProductoId; item.SubProductoId = notaingreso.SubProductoId; item.UnidadMedidaIdPesado = notaingreso.UnidadMedidaIdPesado; item.CantidadPesado = notaingreso.CantidadPesado; item.KilosNetosPesado = notaingreso.KilosNetosPesado; item.KilosBrutosPesado = notaingreso.KilosBrutosPesado; item.RendimientoPorcentaje = notaingreso.RendimientoPorcentaje; item.HumedadPorcentaje = notaingreso.HumedadPorcentajeAnalisisFisico; if (notaingreso.TotalAnalisisSensorial != null) { item.TotalAnalisisSensorial = notaingreso.TotalAnalisisSensorial.Value; } item.NotaIngresoAlmacenId = notaingreso.NotaIngresoAlmacenId; totalKilosNetosPesado = totalKilosNetosPesado + item.KilosNetosPesado; totalKilosBrutosPesado = totalKilosBrutosPesado + item.KilosBrutosPesado; totalRendimientoPorcentaje = totalRendimientoPorcentaje + item.RendimientoPorcentaje.Value; totalAnalisisSensorial = totalAnalisisSensorial + item.TotalAnalisisSensorial; totalKilosNetosPagar = totalKilosNetosPagar + (notaingreso.KilosNetosPagar.HasValue ? notaingreso.KilosNetosPagar.Value : 0); totalKilosNetosDescontar = totalKilosNetosDescontar + (notaingreso.KilosNetosDescontar.HasValue ? notaingreso.KilosNetosDescontar.Value : 0); totalHumedadPorcentaje = totalHumedadPorcentaje + item.HumedadPorcentaje; totalCantidad = totalCantidad + item.CantidadPesado; unidadMedidaId = item.UnidadMedidaIdPesado; tipoProduccionId = notaingreso.TipoProduccionId; lotesDetalle.Add(item); }); lote.TotalKilosNetosPesado = totalKilosNetosPesado; lote.TotalKilosBrutosPesado = totalKilosBrutosPesado; lote.TotalKilosNetosPagar = totalKilosNetosPagar; lote.TotalKilosNetosDescontar = totalKilosNetosDescontar; //lote.PromedioRendimientoPorcentaje = totalRendimientoPorcentaje / lotesDetalle.Count; //lote.PromedioHumedadPorcentaje = totalHumedadPorcentaje / lotesDetalle.Count; lote.UnidadMedidaId = unidadMedidaId; lote.TipoProduccionId = tipoProduccionId; //lote.PromedioTotalAnalisisSensorial = totalAnalisisSensorial / lotesDetalle.Count; lote.Cantidad = totalCantidad; loteId = _ILoteRepository.Insertar(lote); lotesDetalle.ForEach(loteDetalle => { loteDetalle.LoteId = loteId; }); int affected = _ILoteRepository.InsertarLoteDetalle(lotesDetalle); notasIngreso.ForEach(notaingreso => { _INotaIngresoAlmacenRepository.ActualizarEstado(notaingreso.NotaIngresoAlmacenId, DateTime.Now, request.Usuario, NotaIngresoAlmacenEstados.Lotizado); }); } return(loteId); }