public LoteDetalle ConsultarLoteDetallePorId(int loteDetalleId) { var parameters = new DynamicParameters(); parameters.Add("LoteDetalleId", loteDetalleId); IEnumerable <LoteDetalle> result; LoteDetalle loteDetalle = new LoteDetalle(); using (IDbConnection db = new SqlConnection(_connectionString.Value.CoffeeConnectDB)) { result = db.Query <LoteDetalle>("uspLoteDetalleConsultaPorId", parameters, commandType: CommandType.StoredProcedure); if (result.Any()) { loteDetalle = result.First(); } } return(loteDetalle); }
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); }
public int ActualizarLote(ActualizarLoteRequestDTO request) { int affected = _ILoteRepository.Actualizar(request.LoteId, DateTime.Now, request.Usuario, request.AlmacenId, request.Cantidad, request.TotalKilosNetosPesado, request.TotalKilosBrutosPesado, request.ContratoId); if (request.NotasIngresoAlmacenId != null && request.NotasIngresoAlmacenId.Count > 0) { List <ListaIdsAccion> notasIngresoAlmacenIdEliminar = request.NotasIngresoAlmacenId.Where(a => a.Accion == "E").ToList(); if (notasIngresoAlmacenIdEliminar != null && notasIngresoAlmacenIdEliminar.Count > 0) { List <TablaIdsTipo> loteDetalleIdEliminar = new List <TablaIdsTipo>(); List <TablaIdsTipo> notasIntegresoIdActualizar = new List <TablaIdsTipo>(); foreach (ListaIdsAccion id in notasIngresoAlmacenIdEliminar) { TablaIdsTipo tablaIdsTipo = new TablaIdsTipo(); tablaIdsTipo.Id = id.Id; loteDetalleIdEliminar.Add(tablaIdsTipo); LoteDetalle loteDetalle = _ILoteRepository.ConsultarLoteDetallePorId(id.Id); if (loteDetalle != null) { TablaIdsTipo tablaNotasIntegresoIdsTipo = new TablaIdsTipo(); tablaNotasIntegresoIdsTipo.Id = loteDetalle.NotaIngresoAlmacenId; notasIntegresoIdActualizar.Add(tablaNotasIntegresoIdsTipo); } } _ILoteRepository.EliminarLoteDetalle(loteDetalleIdEliminar); _INotaIngresoAlmacenRepository.ActualizarEstadoPorIds(notasIntegresoIdActualizar, DateTime.Now, request.Usuario, NotaIngresoAlmacenEstados.Ingresado); } List <ListaIdsAccion> notasIngresoAlmacenIdNuevo = request.NotasIngresoAlmacenId.Where(a => a.Accion == "N").ToList(); if (notasIngresoAlmacenIdNuevo != null && notasIngresoAlmacenIdNuevo.Count > 0) { List <TablaIdsTipo> notasIngresoAlmacenIdConsulta = new List <TablaIdsTipo>(); foreach (ListaIdsAccion id in notasIngresoAlmacenIdNuevo) { TablaIdsTipo tablaIdsTipo = new TablaIdsTipo(); tablaIdsTipo.Id = id.Id; notasIngresoAlmacenIdConsulta.Add(tablaIdsTipo); } List <NotaIngresoAlmacen> notasIngreso = _INotaIngresoAlmacenRepository.ConsultarNotaIngresoPorIds(notasIngresoAlmacenIdConsulta).ToList(); if (notasIngreso != null && notasIngreso.Count > 0) { List <LoteDetalle> lotesDetalle = new List <LoteDetalle>(); notasIngreso.ForEach(notaingreso => { LoteDetalle item = new LoteDetalle(); item.LoteId = request.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; 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; //totalHumedadPorcentaje = totalHumedadPorcentaje + item.HumedadPorcentaje; //totalCantidad = totalCantidad + item.CantidadPesado; //unidadMedidaId = item.UnidadMedidaIdPesado; lotesDetalle.Add(item); }); /* * lote.TotalKilosNetosPesado = totalKilosNetosPesado; * lote.TotalKilosBrutosPesado = totalKilosBrutosPesado; * //lote.PromedioRendimientoPorcentaje = totalRendimientoPorcentaje / lotesDetalle.Count; * //lote.PromedioHumedadPorcentaje = totalHumedadPorcentaje / lotesDetalle.Count; * lote.UnidadMedidaId = unidadMedidaId; * //lote.PromedioTotalAnalisisSensorial = totalAnalisisSensorial / lotesDetalle.Count; * * lote.Cantidad = totalCantidad; * * loteId = _ILoteRepository.Insertar(lote); * * * * * */ _ILoteRepository.InsertarLoteDetalle(lotesDetalle); notasIngreso.ForEach(notaingreso => { _INotaIngresoAlmacenRepository.ActualizarEstado(notaingreso.NotaIngresoAlmacenId, DateTime.Now, request.Usuario, NotaIngresoAlmacenEstados.Lotizado); }); } } } return(affected); }