private void RecuperarInformacion_ExecuteCode(object sender, EventArgs e)
        {
            itemOC = workflowProperties.Item;

            try
            {
                autonomina = this.VerificarAutonomia();

                if (autonomina)
                {
                    #region Aprobar automaticamente el item
                    SPModerationInformation estadoAprobacion = itemOC.ModerationInformation;
                    estadoAprobacion.Status = SPModerationStatusType.Approved;

                    using (DisabledItemEventsScope scope = new DisabledItemEventsScope())
                    {//Para evitar que ejecute una y otra vez el Evento ItemUpdating sobre este item
                        itemOC.SystemUpdate();
                    }
                    #endregion

                    #region Actualizar bitacora
                    //EjecutorOperacionesSP.ActualizarBitacoraAprobacion(itemOC);
                    #endregion

                    #region Notificacion por correo
                    asuntoNotificacion  = "Abastecimiento, orden de compra aprobada";
                    cuerpoNotificacion  = this.CuerpoCorreoNotificacion();
                    usuariosNotificados = this.UsuariosANotificar();
                    usuariosCopiados    = this.UsuariosACopiar();
                    mensajeHistorial    = "Notificación por aprobación automática realizada exitosamente.";
                    #endregion

                    #region Iniciar el flujo 'Notificar Descuentos'
                    EjecutorOperacionesSP.IniciarFlujoNotificarDescuentos(itemOC);
                    #endregion
                }
                else
                {
                    #region Notificacion por correo
                    asuntoNotificacion  = "Abastecimiento, solictud de aprobación";
                    cuerpoNotificacion  = this.CuerpoCorreoSolicitud();
                    usuariosNotificados = this.UsuariosANotificar();
                    //usuariosCopiados = this.UsuariosACopiar();
                    mensajeHistorial = "Notificación a 'Aprobadores de OC' realizada exitosamente.";
                    #endregion
                }
            }
            catch (Exception ex)
            {
                #region Registro de Evento Error
                LogEventos.LogArchivo log = new LogEventos.LogArchivo("LogErrores.txt");
                log.WriteEvent("--- [FLUJO] RecuperarInformacion_ExecuteCode flujo 'Notificar aprobación' ---");
                log.WriteException(ex);
                #endregion

                logNotificarAprobacion.EventId            = SPWorkflowHistoryEventType.WorkflowError;
                logNotificarAprobacion.HistoryOutcome     = "Error";
                logNotificarAprobacion.HistoryDescription = ex.Message;
            }
        }
        /// <summary>
        /// An item was updated.
        /// </summary>
        public override void ItemUpdated(SPItemEventProperties properties)
        {
            //base.ItemUpdated(properties);
            try
            {
                #region Eventos de lista 'Ítems Pedidos'
                if (properties.ListTitle == LISTA_ITEMS_PEDIDOS)
                {
                    EjecutorOperacionesSP.ActualizarCamposOcultos(properties.ListItem);
                    EjecutorOperacionesSP.DeseleccionarItemAsociadoDeFacturas(properties);
                    EjecutorOperacionesSP.DeseleccionarItemOrdenadoDeOCPs(properties);
                    EjecutorOperacionesSP.ActualizarCamposDePreciosTotales(properties);

                    /*try { EjecutorOperacionesSP.ActualizarBitacoraEstados(properties); }
                     * catch { }*/
                }
                #endregion

                #region Eventos de lista 'Órdenes de Compra Internas'
                if (properties.ListTitle == LISTA_OCI)
                {
                    EjecutorOperacionesSP.AprobarAutomaticamente(properties.ListItem);
                    EjecutorOperacionesSP.IniciarFlujoNotificarDescuentos(properties.ListItem);

                    /*try { EjecutorOperacionesSP.ActualizarBitacoraAprobacion(properties.ListItem); }
                     * catch { }*/
                }
                #endregion

                #region Eventos de lista 'Envíos'
                if (properties.ListTitle == LISTA_ENVIOS)
                {
                    EjecutorOperacionesSP.SincronizarAlmacenesAsociadosDeEnvio(properties);
                    EjecutorOperacionesSP.SincronizarFechaPrevistaLlegada(properties);
                    EjecutorOperacionesSP.CambiarCampoParaFiltro_Asignado_Env(properties);
                }
                #endregion

                #region Eventos de lista 'Facturas'
                if (properties.ListTitle == LISTA_FACTURAS)
                {
                    EjecutorOperacionesSP.SincronizarItemsAsociadosDeFactura(properties);
                    EjecutorOperacionesSP.DeseleccionarFacturaDeAlmacenes(properties);
                    EjecutorOperacionesSP.CalcularCampoTotalFactura(properties.ListItem);
                    EjecutorOperacionesSP.CambiarCampoParaFiltro_Asignado_Fac(properties);
                }
                #endregion

                #region Eventos de lista 'Almacén'
                if (properties.ListTitle == LISTA_ALMACEN)
                {
                    EjecutorOperacionesSP.SincronizarFacturasAsociadasDeAlmacen(properties);
                    EjecutorOperacionesSP.DeseleccionarAlmacenDeEnvios(properties);
                    EjecutorOperacionesSP.CalcularCampoTotalFacturas(properties.ListItem);
                    EjecutorOperacionesSP.CambiarCampoParaFiltro_Asignada_Alm(properties);
                }
                #endregion

                #region Eventos de Órdenes de Compra Proveedor
                if (properties.ListTitle == LISTA_OCP)
                {
                    EjecutorOperacionesSP.SincronizarItemsAsociadosDeOCP(properties);
                    EjecutorOperacionesSP.CambiarCampoParaFiltro_Asignado_OCP(properties);
                }
                #endregion

                #region Eventos de lista Documentos Legales
                if (properties.ListTitle == LISTA_DOCUMENTOS_LEGALES)
                {
                    EjecutorOperacionesSP.CambiarCampoParaFiltro_Asociada_DL(properties);
                }
                #endregion
            }
            catch (Exception ex)
            {
                #region Registro de Evento Error
                LogEventos.LogArchivo log = new LogEventos.LogArchivo("LogErrores.txt");
                log.WriteEvent("--- [EVENTO] ItemUpdated ---");
                log.WriteException(ex);
                #endregion
            }
        }