示例#1
0
        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);
            }
        }
示例#2
0
        /// <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);
            }
        }