Beispiel #1
0
        //metodo para crear una incidencia
        public static List <string> CrearIncidenciasFolios(int IdInventario, int FolioInicial, int FolioFinal, int IdIncidencia, int IdEmpleado, DateTime fechaServerExterno)
        {
            var transaccion = new Transaccion();


            //obtiene el contenedor donde se encuentra el rango de folio inicial y el folio final
            var repositorio             = new Repositorio <Tbl_InventarioContenedores>(transaccion);
            var contenedoresEncontrados = repositorio.ObtenerPorFiltro(x => x.IdInventario == IdInventario && x.FormasDisponiblesActuales > 0 && x.Activo);

            //Obtengo cada una de los contenedores encontrado y se guarda el Id del contenedor
            List <int> listaContenedoresEncontrados = new List <int>();

            foreach (Tbl_InventarioContenedores contenedor in contenedoresEncontrados)
            {
                listaContenedoresEncontrados.Add(contenedor.Id);
            }


            //se crea el repo de inventaio detalle para ir buscando por el id del contenedor
            var           repositorioDetalle       = new Repositorio <Tbl_InventarioDetalle>(transaccion);
            List <String> ListafoliosNoDisponibles = new List <string>();

            //se crean variables de Tbl_InventarioDetalle para guardar en donde se encuentran los folios buscados
            Tbl_InventarioDetalle folioInicialEncontrado = null;
            Tbl_InventarioDetalle folioFinalEncontrado   = null;

            foreach (int contenedor in listaContenedoresEncontrados)
            {
                if (folioInicialEncontrado == null)
                {
                    folioInicialEncontrado = repositorioDetalle.Obtener(x => x.IdContenedor == contenedor && x.NumFolio == FolioInicial && x.Activo == true);
                }

                if (folioFinalEncontrado == null)
                {
                    folioFinalEncontrado = repositorioDetalle.Obtener(x => x.IdContenedor == contenedor && x.NumFolio == FolioFinal && x.Activo == true);
                }
            }



            //obtiene los registros que se tienen por el id para reducir el universo de folios
            if (folioInicialEncontrado != null && folioFinalEncontrado != null)
            {
                // var repositorio3 = new Repositorio<Tbl_InventarioDetalle>(transaccion);
                //  var transaccionModificar = new Transaccion();
                // var repositorioModificarDetalle = new Repositorio<Tbl_InventarioDetalle>(transaccion);
                //se utiliza el mismo repositorio creado de Tbl_InventarioDetalle
                var foliosEntontradosEnContenedores = repositorioDetalle.ObtenerPorFiltro(x => x.IdContenedor >= folioInicialEncontrado.IdContenedor && x.IdContenedor <= folioFinalEncontrado.IdContenedor && x.Id >= folioInicialEncontrado.Id && x.Id <= folioFinalEncontrado.Id).ToList();

                //var resultadopp = foliosEntontradosEnContenedores.FirstOrDefault().Id;
                // int resultado = foliosEntontradosEnContenedores.Count();
                if (foliosEntontradosEnContenedores.Count() > 0)
                {
                    // var nuevos =foliosEntontradosEnContenedores.Where(x => x.Id >= folioInicialEncontrado.Id && x.Id <= folioFinalEncontrado.Id);
                    //
                    //Referencia para saber que contiene la lista que vera el usuario Folios Sin incidencias es por que no era null el campo IdIncidencias
                    ListafoliosNoDisponibles.Add("Folios Sin Guardar Incidencia");

                    // List<Tbl_InventarioDetalle> listafoliosEntontradosEnContenedores = foliosEntontradosEnContenedores.ToList();

                    foreach (var detalle in foliosEntontradosEnContenedores)
                    {
                        if (detalle.IdIncidencia == null)
                        {
                            //se modifica el tipo de incidencia
                            detalle.IdIncidencia = IdIncidencia;

                            //if(fechaServerExterno != null)
                            //    detalle.FechaIncidencia = DateTime.Now.Date;

                            detalle.FechaIncidencia = fechaServerExterno != null ?  fechaServerExterno.Date : DateTime.Now.Date;



                            if (IdEmpleado > 0)
                            {
                                detalle.IdEmpleado = IdEmpleado;
                            }

                            //se guarda la modificacion
                            var entidadDevuleta = repositorioDetalle.Modificar(detalle);

                            //si se guardo
                            if (entidadDevuleta != null)
                            {
                                //entonces obtenemos el contenedor donde se encuentra el registro que se modifico para restarle a sus formas disponibles
                                var contenedorRestar = repositorio.Obtener(x => x.Id == entidadDevuleta.IdContenedor);

                                //traemos el inventario donde se debe de restar tambien
                                var inventarioRepositorio = new Repositorio <Tbl_Inventario>(transaccion);
                                var inventarioRestar      = inventarioRepositorio.Obtener(x => x.Id == contenedorRestar.IdInventario);

                                //Si se inhabilito se le resta uno alas formas disponibles y se le suma 1 en las formas inhabilitadas
                                if (IdIncidencia == 1)
                                {
                                    //se modifica el contenedor con resta y suma
                                    contenedorRestar.FormasDisponiblesActuales -= 1;
                                    contenedorRestar.FormasInhabilitadas       += 1;
                                    repositorio.Modificar(contenedorRestar);

                                    //se modifica el inventario
                                    inventarioRestar.FormasDisponibles -= 1;
                                    inventarioRepositorio.Modificar(inventarioRestar);
                                }

                                //Si se inhabilito se le resta uno alas formas disponibles y se le suma 1 en las formas Asignadas
                                if (IdIncidencia == 2)
                                {
                                    //se modifica el contenedor con resta y suma
                                    contenedorRestar.FormasDisponiblesActuales -= 1;
                                    contenedorRestar.FormasAsignadas           += 1;
                                    repositorio.Modificar(contenedorRestar);

                                    //se modifica el inventario
                                    inventarioRestar.FormasDisponibles -= 1;
                                    inventarioRepositorio.Modificar(inventarioRestar);
                                }


                                //Si se AJUSTO por que un folio fue foliado correctament se le resta uno a las formas disponibles y se le suma 1
                                if (IdIncidencia == 3)
                                {
                                    //se modifica el contenedor con resta y suma
                                    contenedorRestar.FormasDisponiblesActuales -= 1;
                                    contenedorRestar.FormasFoliadas            += 1;
                                    repositorio.Modificar(contenedorRestar);

                                    //se modifica el inventario
                                    inventarioRestar.FormasDisponibles -= 1;
                                    inventarioRepositorio.Modificar(inventarioRestar);
                                }
                            }
                        }
                        else
                        {
                            ListafoliosNoDisponibles.Add(Convert.ToString(detalle.NumFolio));
                        }
                    }
                }
            }



            return(ListafoliosNoDisponibles);
        }
Beispiel #2
0
        //revisado
        #region Metodos para agregar contenedores y actualizar inventario general
        public static bool GuardarInventarioContenedores(int idInventario, string numeroOrden, int numeroContenedor, string FInicial, string FFinal, int TotalFormas, DateTime fechaExterna)
        {
            bool bandera = false;

            var transaccion = new Transaccion();

            var repositorio = new Repositorio <Tbl_Inventario>(transaccion);


            var inventarioFiltrado = repositorio.ObtenerPorFiltro(x => x.Id == idInventario && x.Activo == true);



            try
            {
                //Actualiza datos en la tabla inventario
                foreach (Tbl_Inventario inventarioObtenido in inventarioFiltrado)
                {
                    inventarioObtenido.FormasDisponibles    += TotalFormas;
                    inventarioObtenido.UltimoFolioInventario = FFinal;
                }



                //  agrega contenedores con folios para que coincida con el inventario
                Tbl_InventarioContenedores nuevoContenedor = new Tbl_InventarioContenedores();

                nuevoContenedor.IdInventario              = idInventario;
                nuevoContenedor.NumOrden                  = numeroOrden;
                nuevoContenedor.NumContenedor             = numeroContenedor;
                nuevoContenedor.FolioInicial              = FInicial;
                nuevoContenedor.FolioFinal                = FFinal;
                nuevoContenedor.FormasTotalesContenedor   = TotalFormas;
                nuevoContenedor.FormasDisponiblesActuales = TotalFormas;
                nuevoContenedor.FormasInhabilitadas       = 0;
                nuevoContenedor.FormasAsignadas           = 0;
                nuevoContenedor.FormasFoliadas            = 0;
                nuevoContenedor.FechaAlta                 = fechaExterna;
                nuevoContenedor.Activo = true;

                var repositorioContenedor = new Repositorio <Tbl_InventarioContenedores>(transaccion);

                var contenedorAgregado = repositorioContenedor.Agregar(nuevoContenedor);



                //Agrega el detalle de cada contenedor para saber cada uno de sus folios
                var repositorioDetalle = new Repositorio <Tbl_InventarioDetalle>(transaccion);

                for (int i = Convert.ToInt32(FInicial); i <= Convert.ToInt32(FFinal); i++)
                {
                    Tbl_InventarioDetalle nuevoDetalle = new Tbl_InventarioDetalle();

                    nuevoDetalle.IdContenedor = contenedorAgregado.Id;
                    nuevoDetalle.NumFolio     = i;
                    nuevoDetalle.Activo       = true;

                    repositorioDetalle.Agregar(nuevoDetalle);
                }
                // transaccion.Dispose();
                //se transacciona por si algo va mal se pueda hacer un roll over de todo
                transaccion.GuardarCambios();
                bandera = true;
            }
            catch (Exception e)
            {
                transaccion.Dispose();
                bandera = false;
            }



            return(bandera);
        }
Beispiel #3
0
        /// <summary>
        /// Valida folios para saber si estan disponibles sirve en el controlador de inventario como en el controlador de configuraciones Exepciones de formas de pago
        /// </summary>
        /// <param name="IdInventario"></param>
        /// <param name="FolioInicial"></param>
        /// <param name="FolioFinal"></param>
        /// <returns></returns>
        public static List <string> ValidarFoliosDisponibles(int IdInventario, int FolioInicial, int FolioFinal)
        {
            var transaccion = new Transaccion();



            //obtiene el contenedor donde se encuentra el rango de folio inicial y el folio final
            var        repositorio                = new Repositorio <Tbl_InventarioContenedores>(transaccion);
            var        contenedoresEncontrados    = repositorio.ObtenerPorFiltro(x => x.IdInventario == IdInventario && x.FormasDisponiblesActuales > 0 && x.Activo);
            List <int> idsContenedoresEncontrados = new List <int>();

            foreach (Tbl_InventarioContenedores contenedor in contenedoresEncontrados)
            {
                idsContenedoresEncontrados.Add(contenedor.Id);
            }

            var           repositorioDetalle        = new Repositorio <Tbl_InventarioDetalle>(transaccion);
            List <String> ListafoliosNoDisponiblesp = new List <string>();


            Tbl_InventarioDetalle folioInicialEncontrado = null;
            Tbl_InventarioDetalle folioFinalEncontrado   = null;

            foreach (int contenedor in idsContenedoresEncontrados)
            {
                if (folioInicialEncontrado == null)
                {
                    folioInicialEncontrado = repositorioDetalle.Obtener(x => x.IdContenedor == contenedor && x.NumFolio == FolioInicial && x.Activo == true);
                }

                if (folioFinalEncontrado == null)
                {
                    folioFinalEncontrado = repositorioDetalle.Obtener(x => x.IdContenedor == contenedor && x.NumFolio == FolioFinal && x.Activo == true);
                }
            }


            //obtiene los registros que se tienen por el id para reducir el universo de folios
            if (folioInicialEncontrado != null && folioFinalEncontrado != null)
            {
                var repositorio3p = new Repositorio <Tbl_InventarioDetalle>(transaccion);
                var foliosEntontradosEnContenedores = repositorio3p.ObtenerPorFiltro(x => x.IdContenedor >= folioInicialEncontrado.IdContenedor && x.IdContenedor <= folioFinalEncontrado.IdContenedor && x.Id >= folioInicialEncontrado.Id && x.Id <= folioFinalEncontrado.Id);

                //var resultadopp = foliosEntontradosEnContenedores.FirstOrDefault().Id;
                int resultado = foliosEntontradosEnContenedores.Count();
                if (foliosEntontradosEnContenedores.Count() > 0)
                {
                    // var nuevos =foliosEntontradosEnContenedores.Where(x => x.Id >= folioInicialEncontrado.Id && x.Id <= folioFinalEncontrado.Id);
                    // int resultado2 = nuevos.Count();
                    //Referencia para saber que contiene la lista que vera el usuario
                    ListafoliosNoDisponiblesp.Add("Folios No Disponibles");
                    foreach (Tbl_InventarioDetalle detalle in foliosEntontradosEnContenedores)
                    {
                        if (detalle.IdIncidencia != null)
                        {
                            ListafoliosNoDisponiblesp.Add(Convert.ToString(detalle.NumFolio));
                        }
                    }

                    return(ListafoliosNoDisponiblesp);
                }
            }


            if (ListafoliosNoDisponiblesp.Count == 0)
            {
                ListafoliosNoDisponiblesp.Add("No Existe El Folio");
                if (folioInicialEncontrado == null)
                {
                    ListafoliosNoDisponiblesp.Add(Convert.ToString(FolioInicial));
                }

                if (folioFinalEncontrado == null)
                {
                    if (!ListafoliosNoDisponiblesp.Contains(Convert.ToString(FolioFinal)))
                    {
                        ListafoliosNoDisponiblesp.Add(Convert.ToString(FolioFinal));
                    }
                }
            }



            return(ListafoliosNoDisponiblesp);
        }