Exemplo n.º 1
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);
        }
        public int RegistrarNotaSalidaAlmacen(RegistrarNotaSalidaAlmacenRequestDTO request)
        {
            NotaSalidaAlmacen notaSalidaAlmacen = new NotaSalidaAlmacen();
            List <NotaSalidaAlmacenDetalle> lstnotaSalidaAlmacen = new List <NotaSalidaAlmacenDetalle>();
            int affected = 0;

            List <TablaIdsTipo> loteIdActualizar = new List <TablaIdsTipo>();

            notaSalidaAlmacen.EmpresaId                = request.EmpresaId;
            notaSalidaAlmacen.AlmacenId                = request.AlmacenId;
            notaSalidaAlmacen.Numero                   = _ICorrelativoRepository.Obtener(request.EmpresaId, Documentos.NotaSalidaAlmacen);
            notaSalidaAlmacen.MotivoTrasladoId         = request.MotivoTrasladoId;
            notaSalidaAlmacen.MotivoTrasladoReferencia = request.MotivoTrasladoReferencia;
            notaSalidaAlmacen.EmpresaIdDestino         = request.EmpresaIdDestino;
            notaSalidaAlmacen.EmpresaTransporteId      = request.EmpresaTransporteId;
            notaSalidaAlmacen.TransporteId             = request.TransporteId;
            notaSalidaAlmacen.NumeroConstanciaMTC      = request.NumeroConstanciaMTC;
            notaSalidaAlmacen.MarcaTractorId           = request.MarcaTractorId;
            notaSalidaAlmacen.PlacaTractor             = request.PlacaTractor;
            notaSalidaAlmacen.MarcaCarretaId           = request.MarcaCarretaId;
            notaSalidaAlmacen.PlacaCarreta             = request.PlacaCarreta;
            notaSalidaAlmacen.Conductor                = request.Conductor;
            notaSalidaAlmacen.Licencia                 = request.Licencia;
            notaSalidaAlmacen.Observacion              = request.Observacion;
            notaSalidaAlmacen.CantidadLotes            = request.CantidadLotes;
            //notaSalidaAlmacen.PromedioPorcentajeRendimiento = request.PromedioPorcentajeRendimiento;
            notaSalidaAlmacen.CantidadTotal   = request.CantidadTotal;
            notaSalidaAlmacen.PesoKilosBrutos = request.PesoKilosBrutos;


            notaSalidaAlmacen.EstadoId        = NotaSalidaAlmacenEstados.Ingresado;
            notaSalidaAlmacen.FechaRegistro   = DateTime.Now;
            notaSalidaAlmacen.UsuarioRegistro = request.UsuarioNotaSalidaAlmacen;

            notaSalidaAlmacen.NotaSalidaAlmacenId = _INotaSalidaAlmacenRepository.Insertar(notaSalidaAlmacen);

            if (notaSalidaAlmacen.NotaSalidaAlmacenId != 0)
            {
                request.ListNotaSalidaAlmacenDetalle.ForEach(x =>
                {
                    NotaSalidaAlmacenDetalle obj = new NotaSalidaAlmacenDetalle();
                    obj.LoteId = x.LoteId;
                    obj.NotaSalidaAlmacenId = notaSalidaAlmacen.NotaSalidaAlmacenId;

                    lstnotaSalidaAlmacen.Add(obj);


                    TablaIdsTipo tablaLoteIdsTipo = new TablaIdsTipo();
                    tablaLoteIdsTipo.Id           = x.LoteId;
                    loteIdActualizar.Add(tablaLoteIdsTipo);
                });

                affected = _INotaSalidaAlmacenRepository.ActualizarNotaSalidaAlmacenDetalle(lstnotaSalidaAlmacen, notaSalidaAlmacen.NotaSalidaAlmacenId);


                _LoteRepository.ActualizarEstadoPorIds(loteIdActualizar, DateTime.Now, request.UsuarioNotaSalidaAlmacen, LoteEstados.GeneradoNotaSalida);
            }


            #region Guia Remision
            int guiaRemisionAlmacenId;
            //GuiaRemisionAlmacen guiaRemisionAlmacen = new GuiaRemisionAlmacen();

            GuiaRemisionAlmacen guiaRemisionAlmacen = _Mapper.Map <GuiaRemisionAlmacen>(notaSalidaAlmacen);
            guiaRemisionAlmacen.Numero = _ICorrelativoRepository.Obtener(request.EmpresaId, Documentos.GuiaRemisionAlmacen);


            #region Comentado Guia de Remision

            string tipoProduccionId    = String.Empty;
            string tipoCertificacionId = String.Empty;

            List <ConsultaNotaSalidaAlmacenLotesDetallePorIdBE> NotaSalidaDetalle = _INotaSalidaAlmacenRepository.ConsultarNotaSalidaAlmacenLotesDetallePorIdBE(notaSalidaAlmacen.NotaSalidaAlmacenId).ToList();


            if (NotaSalidaDetalle.Count > 0)
            {
                tipoProduccionId    = NotaSalidaDetalle[0].TipoProduccionId;
                tipoCertificacionId = NotaSalidaDetalle[0].TipoCertificacionId;
            }

            guiaRemisionAlmacen.TipoProduccionId    = tipoProduccionId;
            guiaRemisionAlmacen.TipoCertificacionId = tipoCertificacionId;

            guiaRemisionAlmacenId = _IGuiaRemisionAlmacenRepository.Insertar(guiaRemisionAlmacen);

            if (guiaRemisionAlmacenId != 0)
            {
                List <GuiaRemisionAlmacenDetalleTipo> listaDetalle = new List <GuiaRemisionAlmacenDetalleTipo>();
                if (NotaSalidaDetalle.Any())
                {
                    NotaSalidaDetalle.ForEach(x =>
                    {
                        GuiaRemisionAlmacenDetalleTipo item = _Mapper.Map <GuiaRemisionAlmacenDetalleTipo>(x);
                        item.GuiaRemisionAlmacenId          = guiaRemisionAlmacenId;
                        item.FechaLote             = x.FechaRegistro;
                        item.UnidadMedidaIdPesado  = x.UnidadMedidaId;
                        item.ProductoId            = x.ProductoId;
                        item.SubProductoId         = x.SubProductoId;
                        item.NumeroLote            = x.NumeroLote;
                        item.CantidadPesado        = x.Cantidad;
                        item.KilosNetosPesado      = x.TotalKilosNetosPesado;
                        item.KilosBrutosPesado     = x.TotalKilosBrutosPesado;
                        item.RendimientoPorcentaje = x.RendimientoPorcentaje;
                        item.HumedadPorcentaje     = x.HumedadPorcentajeAnalisisFisico;
                        item.TipoProduccionId      = x.TipoProduccionId;
                        item.TipoCertificacionId   = x.TipoCertificacionId;
                        listaDetalle.Add(item);
                    });

                    _IGuiaRemisionAlmacenRepository.ActualizarGuiaRemisionAlmacenDetalle(listaDetalle);
                }
            }

            #endregion Comentado Guia de Remision


            #endregion

            return(affected);
        }
Exemplo n.º 3
0
        public int ActualizarNotaSalidaAlmacenPlanta(RegistrarNotaSalidaAlmacenPlantaRequestDTO request)
        {
            NotaSalidaAlmacenPlanta notaSalidaAlmacen = new NotaSalidaAlmacenPlanta();
            List <NotaSalidaAlmacenPlantaDetalle> lstnotaSalidaAlmacen = new List <NotaSalidaAlmacenPlantaDetalle>();
            int affected = 0;
            List <TablaIdsTipo> notaIngresoIdActualizar = new List <TablaIdsTipo>();


            notaSalidaAlmacen.NotaSalidaAlmacenPlantaId = request.NotaSalidaAlmacenPlantaId;
            notaSalidaAlmacen.EmpresaId              = request.EmpresaId;
            notaSalidaAlmacen.AlmacenId              = request.AlmacenId;
            notaSalidaAlmacen.Numero                 = request.Numero;
            notaSalidaAlmacen.MotivoSalidaId         = request.MotivoSalidaId;
            notaSalidaAlmacen.MotivoSalidaReferencia = request.MotivoSalidaReferencia;
            notaSalidaAlmacen.EmpresaIdDestino       = request.EmpresaIdDestino;
            notaSalidaAlmacen.EmpresaTransporteId    = request.EmpresaTransporteId;
            notaSalidaAlmacen.TransporteId           = request.TransporteId;
            notaSalidaAlmacen.NumeroConstanciaMTC    = request.NumeroConstanciaMTC;
            notaSalidaAlmacen.MarcaTractorId         = request.MarcaTractorId;
            notaSalidaAlmacen.PlacaTractor           = request.PlacaTractor;
            notaSalidaAlmacen.MarcaCarretaId         = request.MarcaCarretaId;
            notaSalidaAlmacen.PlacaCarreta           = request.PlacaCarreta;
            notaSalidaAlmacen.Conductor              = request.Conductor;
            notaSalidaAlmacen.Licencia               = request.Licencia;
            notaSalidaAlmacen.Observacion            = request.Observacion;

            //notaSalidaAlmacen.PromedioPorcentajeRendimiento = request.PromedioPorcentajeRendimiento;
            notaSalidaAlmacen.CantidadTotal   = request.CantidadTotal;
            notaSalidaAlmacen.PesoKilosBrutos = request.PesoKilosBrutos;
            notaSalidaAlmacen.PesoKilosNetos  = request.PesoKilosNetos;
            notaSalidaAlmacen.Tara            = request.Tara;

            //notaSalidaAlmacen.EstadoId = request.EstadoId;
            notaSalidaAlmacen.FechaUltimaActualizacion   = DateTime.Now;
            notaSalidaAlmacen.UsuarioUltimaActualizacion = request.UsuarioNotaSalidaAlmacenPlanta;


            affected = _INotaSalidaAlmacenPlantaRepository.Actualizar(notaSalidaAlmacen);


            if (notaSalidaAlmacen.NotaSalidaAlmacenPlantaId != 0)
            {
                request.ListNotaSalidaAlmacenPlantaDetalle.ForEach(x =>
                {
                    NotaSalidaAlmacenPlantaDetalle obj = new NotaSalidaAlmacenPlantaDetalle();
                    obj.NotaIngresoAlmacenPlantaId     = x.NotaIngresoAlmacenPlantaId;
                    obj.NotaSalidaAlmacenPlantaId      = notaSalidaAlmacen.NotaSalidaAlmacenPlantaId;

                    lstnotaSalidaAlmacen.Add(obj);


                    TablaIdsTipo tablaLoteIdsTipo = new TablaIdsTipo();
                    tablaLoteIdsTipo.Id           = x.NotaIngresoAlmacenPlantaId;
                    notaIngresoIdActualizar.Add(tablaLoteIdsTipo);
                });

                affected = _INotaSalidaAlmacenPlantaRepository.ActualizarNotaSalidaAlmacenPlantaDetalle(lstnotaSalidaAlmacen, notaSalidaAlmacen.NotaSalidaAlmacenPlantaId);


                _NotaIngresoAlmacenPlantaRepository.ActualizarEstadoPorIds(notaIngresoIdActualizar, DateTime.Now, request.UsuarioNotaSalidaAlmacenPlanta, NotaIngresoAlmacenPlantaEstados.GeneradoNotaSalida);
            }


            #region Guia Remision

            int guiaRemisionAlmacenId;
            //GuiaRemisionAlmacen guiaRemisionAlmacen = new GuiaRemisionAlmacen();

            GuiaRemisionAlmacenPlanta         guiaRemisionAlmacen = _Mapper.Map <GuiaRemisionAlmacenPlanta>(notaSalidaAlmacen);
            ConsultaGuiaRemisionAlmacenPlanta guiaRemisionPivot   = _IGuiaRemisionAlmacenPlantaRepository.ConsultaGuiaRemisionAlmacenPlantaPorNotaSalidaAlmacenPlantaId(notaSalidaAlmacen.NotaSalidaAlmacenPlantaId);



            string tipoProduccionId    = String.Empty;
            string tipoCertificacionId = String.Empty;

            List <ConsultaNotaSalidaAlmacenPlantaDetallePorIdBE> NotaSalidaDetalle = _INotaSalidaAlmacenPlantaRepository.ConsultarNotaSalidaAlmacenPlantaDetallePorIdBE(notaSalidaAlmacen.NotaSalidaAlmacenPlantaId).ToList();


            if (NotaSalidaDetalle.Count > 0)
            {
                tipoProduccionId    = NotaSalidaDetalle[0].TipoProduccionId;
                tipoCertificacionId = NotaSalidaDetalle[0].CertificacionId;
            }

            guiaRemisionAlmacen.TipoProduccionId    = tipoProduccionId;
            guiaRemisionAlmacen.TipoCertificacionId = tipoCertificacionId;

            if (guiaRemisionPivot == null)
            {
                guiaRemisionAlmacen.Numero = _ICorrelativoRepository.Obtener(request.EmpresaId, Documentos.GuiaRemisionAlmacenPlanta);

                guiaRemisionAlmacen.FechaRegistro   = DateTime.Now;
                guiaRemisionAlmacen.UsuarioRegistro = request.UsuarioNotaSalidaAlmacenPlanta;
                guiaRemisionAlmacen.EstadoId        = GuiaRemisionAlmacenPlantaEstados.Ingresado;
                guiaRemisionAlmacenId = _IGuiaRemisionAlmacenPlantaRepository.Insertar(guiaRemisionAlmacen);
            }
            else
            {
                guiaRemisionAlmacen.FechaUltimaActualizacion   = DateTime.Now;
                guiaRemisionAlmacen.UsuarioUltimaActualizacion = request.UsuarioNotaSalidaAlmacenPlanta;

                _IGuiaRemisionAlmacenPlantaRepository.Actualizar(guiaRemisionAlmacen);

                guiaRemisionAlmacenId = guiaRemisionPivot.GuiaRemisionAlmacenPlantaId;
            }


            if (guiaRemisionAlmacenId != 0)
            {
                List <GuiaRemisionAlmacenPlantaDetalleTipo> listaDetalle = new List <GuiaRemisionAlmacenPlantaDetalleTipo>();
                if (NotaSalidaDetalle.Any())
                {
                    NotaSalidaDetalle.ForEach(x =>
                    {
                        GuiaRemisionAlmacenPlantaDetalleTipo item = _Mapper.Map <GuiaRemisionAlmacenPlantaDetalleTipo>(x);
                        item.GuiaRemisionAlmacenPlantaId          = guiaRemisionAlmacenId;
                        item.NotaIngresoAlmacenPlantaId           = x.NotaIngresoAlmacenPlantaId;
                        item.NumeroNotaIngresoAlmacenPlanta       = x.NumeroNotaIngresoAlmacenPlanta;
                        item.ProductoId           = x.ProductoId;
                        item.SubProductoId        = x.SubProductoId;
                        item.UnidadMedidaIdPesado = x.UnidadMedidaIdPesado;
                        item.CalidadId            = x.CalidadId;
                        item.GradoId           = x.GradoId;
                        item.CantidadPesado    = x.CantidadPesado;
                        item.CantidadDefectos  = x.CantidadDefectos;
                        item.KilosNetosPesado  = x.KilosNetosPesado;
                        item.KilosBrutosPesado = x.KilosBrutosPesado;
                        item.TaraPesado        = x.TaraPesado;
                        listaDetalle.Add(item);
                    });

                    _IGuiaRemisionAlmacenPlantaRepository.ActualizarGuiaRemisionAlmacenPlantaDetalle(listaDetalle);
                }
            }



            #endregion

            return(affected);
        }