public object EliminarNumeroUnico(int numeroUnicoID, Sam3_Usuario usuario) { try { using (SamContext ctx = new SamContext()) { using (var ctx_tran = ctx.Database.BeginTransaction()) { using (Sam2Context ctx2 = new Sam2Context()) { using (var ctx2_tran = ctx2.Database.BeginTransaction()) { int sam2_NumeroUnicoID = (from eq in ctx.Sam3_EquivalenciaNumeroUnico where eq.Activo && eq.Sam3_NumeroUnicoID == numeroUnicoID select eq.Sam2_NumeroUnicoID).AsParallel().SingleOrDefault(); NumeroUnico NumeroUnicoSam2 = ctx2.NumeroUnico.Where(x => x.NumeroUnicoID == sam2_NumeroUnicoID).AsParallel().SingleOrDefault(); //buscamos si tiene procesos en ODTM bool tieneProcesos = (from odtm in ctx2.OrdenTrabajoMaterial where odtm.NumeroUnicoCongeladoID == NumeroUnicoSam2.NumeroUnicoID || odtm.NumeroUnicoDespachadoID == NumeroUnicoSam2.NumeroUnicoID || odtm.NumeroUnicoSugeridoID == NumeroUnicoSam2.NumeroUnicoID select odtm).Any(); bool tieneInventarioCongelado = (from nui in ctx.Sam3_NumeroUnicoInventario where nui.NumeroUnicoID == NumeroUnicoSam2.NumeroUnicoID select nui.InventarioCongelado).AsParallel().SingleOrDefault() > 0 ? true : false; bool tieneInventarioTransferenciaCorte = (from nui in ctx.Sam3_NumeroUnicoInventario where nui.NumeroUnicoID == NumeroUnicoSam2.NumeroUnicoID select nui.InventarioTransferenciaCorte).AsParallel().SingleOrDefault() > 0 ? true : false; if (!tieneProcesos && !tieneInventarioCongelado && !tieneInventarioTransferenciaCorte) { //Para eliminar el numero unico de sam 2 solo hay que ponerlo en estatus C NumeroUnicoSam2.Estatus = "C"; NumeroUnicoSam2.FechaModificacion = DateTime.Now; ctx2.SaveChanges(); Sam3_NumeroUnico numUnicoS3 = ctx.Sam3_NumeroUnico.Where(x => x.NumeroUnicoID == numeroUnicoID).AsParallel().SingleOrDefault(); numUnicoS3.Activo = false; numUnicoS3.FechaModificacion = DateTime.Now; numUnicoS3.UsuarioModificacion = usuario.UsuarioID; numUnicoS3.Sam3_NumeroUnicoInventario.Activo = false; numUnicoS3.Sam3_NumeroUnicoInventario.FechaModificacion = DateTime.Now; numUnicoS3.Sam3_NumeroUnicoInventario.UsuarioModificacion = usuario.UsuarioID; foreach (Sam3_NumeroUnicoSegmento segmento in numUnicoS3.Sam3_NumeroUnicoSegmento) { segmento.Activo = false; segmento.FechaModificacion = DateTime.Now; segmento.UsuarioModificacion = usuario.UsuarioID; } Sam3_Rel_NumeroUnico_RelFC_RelB relnu = ctx.Sam3_Rel_NumeroUnico_RelFC_RelB.Where(x => x.NumeroUnicoID == numeroUnicoID).AsParallel().SingleOrDefault(); relnu.Activo = false; relnu.FechaModificacion = DateTime.Now; relnu.UsuarioModificacion = usuario.UsuarioID; ctx.SaveChanges(); if (relnu.Rel_FolioCuantificacion_ItemCode_ID != null) { Sam3_Rel_FolioCuantificacion_ItemCode relfc = ctx.Sam3_Rel_FolioCuantificacion_ItemCode .Where(x => x.Rel_FolioCuantificacion_ItemCode_ID == relnu.Rel_FolioCuantificacion_ItemCode_ID).AsParallel().SingleOrDefault(); //if (ctx.Sam3_Rel_NumeroUnico_RelFC_RelB.Where(x => x.Rel_FolioCuantificacion_ItemCode_ID == relfc.Rel_FolioCuantificacion_ItemCode_ID // && x.Activo).Distinct().Count() <= 0) //{ relfc.TieneNumerosUnicos = false; //} ctx.SaveChanges(); } if (relnu.Rel_Bulto_ItemCode_ID != null) { Sam3_Rel_Bulto_ItemCode relbu = ctx.Sam3_Rel_Bulto_ItemCode.Where(x => x.Rel_Bulto_ItemCode_ID == relnu.Rel_Bulto_ItemCode_ID).AsParallel().SingleOrDefault(); //if (ctx.Sam3_Rel_NumeroUnico_RelFC_RelB.Where(x => x.Rel_Bulto_ItemCode_ID == relbu.Rel_Bulto_ItemCode_ID // && x.Activo).Distinct().Count() <= 0) //{ relbu.TieneNumerosUnicos = false; //} ctx.SaveChanges(); } ctx.SaveChanges(); } else { throw new Exception("No se puede Eliminar el Número Único pues tiene algun proceso capturado"); } ctx_tran.Commit(); ctx2_tran.Commit(); } } } } TransactionalInformation result = new TransactionalInformation(); result.ReturnMessage.Add("OK"); result.ReturnCode = 200; result.ReturnStatus = true; result.IsAuthenicated = true; return(result); } catch (Exception ex) { //-----------------Agregar mensaje al Log ----------------------------------------------- LoggerBd.Instance.EscribirLog(ex); //-----------------Agregar mensaje al Log ----------------------------------------------- TransactionalInformation result = new TransactionalInformation(); result.ReturnMessage.Add(ex.Message); result.ReturnCode = 500; result.ReturnStatus = false; result.IsAuthenicated = true; return(result); } }
/// <summary> /// Eliminar/Cancelar un Item Code de grid de materiales o bulto /// </summary> /// <param name="folioAvisoLlegadaID">folio de llegada</param> /// <param name="folioCuantificacionID">folio cuantificacion</param> /// <param name="BultoID">bulto id</param> /// <param name="ItemCode">item code</param> /// <param name="usuario">usuario regisstrado</param> /// <returns>estatus de exito o error</returns> public object EliminarItemCode(string folioAvisoLlegadaID, string folioCuantificacionID, string BultoID, string ItemCode, string detalleBulto, Sam3_Usuario usuario) { try { using (SamContext ctx = new SamContext()) { int itemCodeID = ItemCode != null?Convert.ToInt32(ItemCode) : 0; string strItemCode = string.IsNullOrEmpty(ItemCode) ? "" : ItemCode; if (strItemCode.Contains("Bulto")) { //Elimino de Rel Bulto Sam3_Rel_Bulto_ItemCode relBulto = ctx.Sam3_Rel_Bulto_ItemCode.Where(x => x.Rel_Bulto_ItemCode_ID.ToString() == BultoID && x.Activo).AsParallel().SingleOrDefault(); if (relBulto != null) { if (!ctx.Sam3_Rel_NumeroUnico_RelFC_RelB.Where(x => x.Rel_Bulto_ItemCode_ID == relBulto.Rel_Bulto_ItemCode_ID && x.Activo).Any()) { relBulto.Activo = false; relBulto.UsuarioModificacion = usuario.UsuarioID; relBulto.FechaModificacion = DateTime.Now; ctx.SaveChanges(); } else { throw new Exception("El ItemCode ya cuenta con Números únicos"); } } //Elimino de bulto Sam3_Bulto bulto = (from rbi in ctx.Sam3_Rel_Bulto_ItemCode join b in ctx.Sam3_Bulto on rbi.BultoID equals b.BultoID where rbi.Rel_Bulto_ItemCode_ID.ToString() == BultoID && b.FolioCuantificacionID.ToString() == folioCuantificacionID select b).AsParallel().SingleOrDefault(); //ctx.Sam3_Bulto //.Where(x => x.BultoID.ToString() == BultoID && x.FolioCuantificacionID.ToString() == folioCuantificacionID && x.Activo).AsParallel().SingleOrDefault(); bulto.Activo = false; bulto.UsuarioModificacion = usuario.UsuarioID; bulto.FechaModificacion = DateTime.Now; ctx.SaveChanges(); } else if (detalleBulto == "1") //esta en el detalle bulto { //Elimino de Rel Bulto Sam3_Rel_Bulto_ItemCode bulto = ctx.Sam3_Rel_Bulto_ItemCode .Where(x => x.Rel_Bulto_ItemCode_ID.ToString() == BultoID && x.Activo).AsParallel().SingleOrDefault(); if (!ctx.Sam3_Rel_NumeroUnico_RelFC_RelB.Where(x => x.Rel_Bulto_ItemCode_ID == bulto.Rel_Bulto_ItemCode_ID && x.Activo).Any()) { bulto.Activo = false; bulto.UsuarioModificacion = usuario.UsuarioID; bulto.FechaModificacion = DateTime.Now; ctx.SaveChanges(); } else { throw new Exception("El ItemCode ya cuenta con Números únicos"); } } else { //Elimino de Rel FolioCuantificacion_ItemCode Sam3_Rel_FolioCuantificacion_ItemCode itemCode = ctx.Sam3_Rel_FolioCuantificacion_ItemCode .Where(x => x.Rel_FolioCuantificacion_ItemCode_ID == itemCodeID && x.FolioCuantificacionID.ToString() == folioCuantificacionID) .AsParallel().SingleOrDefault(); if (!ctx.Sam3_Rel_NumeroUnico_RelFC_RelB.Where(x => x.Rel_FolioCuantificacion_ItemCode_ID == itemCode.Rel_FolioCuantificacion_ItemCode_ID && x.Activo).Any()) { itemCode.Activo = false; itemCode.UsuarioModificacion = usuario.UsuarioID; itemCode.FechaModificacion = DateTime.Now; ctx.SaveChanges(); } else { throw new Exception("El ItemCode ya cuenta con Números únicos"); } } TransactionalInformation result = new TransactionalInformation(); result.ReturnMessage.Add("OK"); result.ReturnCode = 200; result.ReturnStatus = true; result.IsAuthenicated = true; return(result); } } catch (Exception ex) { //-----------------Agregar mensaje al Log ----------------------------------------------- LoggerBd.Instance.EscribirLog(ex); //-----------------Agregar mensaje al Log ----------------------------------------------- TransactionalInformation result = new TransactionalInformation(); result.ReturnMessage.Add(ex.Message); result.ReturnCode = 500; result.ReturnStatus = false; result.IsAuthenicated = true; return(result); } }