//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); }
//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); }
/// <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); }