Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }