コード例 #1
0
        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;
            }
        }
コード例 #2
0
        private void RecuperarValoresItem_ExecuteCode(object sender, EventArgs e)
        {
            itemObjetivo = workflowProperties.Item;

            try
            {
                usuariosNotificados = this.UsuariosANotificar();
                //usuariosNotificadosCC = workflowProperties.OriginatorEmail;
                asuntoNotificacion = "Abastecimiento, ítems con descuentos";
                cuerpoNotificacion = this.CuerpoCorreoNotificacion();
                mensajeHistorial   =
                    "Notificación a 'Responsables de Solicitud de OC' realizada exitosamente.";
            }
            catch (Exception ex)
            {
                #region Registro de Evento Error
                LogEventos.LogArchivo log = new LogEventos.LogArchivo("LogErrores.txt");
                log.WriteEvent("--- [FLUJO] RecuperarValoresItem_ExecuteCode flujo 'Notificar descuentos' ---");
                log.WriteException(ex);
                #endregion

                logNotificarDescuentos.EventId            = SPWorkflowHistoryEventType.WorkflowError;
                logNotificarDescuentos.HistoryOutcome     = "Error";
                logNotificarDescuentos.HistoryDescription = ex.Message;
            }
        }
コード例 #3
0
        //private string GRUPO_PROPIETARIOS = "Propietarios Abastecimiento XEROBOL";
        //private string GRUPO_APROBADORES = "Aprobadores de OC";

        /// <summary>
        /// An item is being added.
        /// </summary>
        public override void ItemAdding(SPItemEventProperties properties)
        {
            //base.ItemAdding(properties);
            try
            {
                #region Evento lista 'Envíos'
                if (properties.ListTitle == LISTA_ENVIOS)
                {
                    #region Validar ítems pedidos validos para envio
                    List <string> itemsNoValidos =
                        EjecutorOperacionesSP.RecuperarItemsPedidosNoValidosParaEnvio(properties);

                    //Validar si la urgencia del ítem pedido corresponde o no al tipo de envio definido
                    if (itemsNoValidos.Count != 0)
                    {
                        string linksItems = "";

                        foreach (string itemNoValido in itemsNoValidos)
                        {
                            linksItems += itemNoValido + "<br/>";
                        }

                        properties.Status       = SPEventReceiverStatus.CancelWithError;
                        properties.ErrorMessage =
                            string.Format("Los ítems siguientes no pueden ser asociados al " +
                                          "tipo de envío elegido:<br/>{0}<br/><br/>Vuelva a la página anterior " +
                                          "y seleccione otro tipo de envío.", linksItems);
                        properties.Cancel = true;
                    }
                    #endregion
                }
                #endregion
            }
            catch (Exception ex)
            {
                #region Registro de Evento Error
                LogEventos.LogArchivo log = new LogEventos.LogArchivo("LogErrores.txt");
                log.WriteEvent("--- [EVENTO] ItemAdding ---");
                log.WriteException(ex);
                #endregion

                properties.Status       = SPEventReceiverStatus.CancelWithError;
                properties.ErrorMessage = ex.Message;
                properties.Cancel       = true;
            }
        }
コード例 #4
0
        /// <summary>
        /// An item is being updated.
        /// </summary>
        public override void ItemUpdating(SPItemEventProperties properties)
        {
            //base.ItemUpdating(properties);
            try
            {
                #region Evento lista 'Órdenes de Compra Internas'
                if (properties.ListTitle == LISTA_OCI)
                {
                    #region Permitir edicion de la OC
                    //string creadoPor = EjecutorOperacionesSP.SubcadenaAntes(properties.ListItem["Creado por"]);

                    //if (properties.CurrentUserId != Convert.ToInt32(creadoPor) &&
                    //    !properties.Web.Groups[GRUPO_PROPIETARIOS].ContainsCurrentUser &&
                    //    !properties.Web.Groups[GRUPO_APROBADORES].ContainsCurrentUser)
                    //{
                    //    properties.Status = SPEventReceiverStatus.CancelWithError;
                    //    properties.ErrorMessage = "Solo el usuario creador (" +
                    //        EjecutorOperacionesSP.SubcadenaDespues(properties.ListItem["Creado por"]) + ") " +
                    //        "tiene permitido modificar esta orden de compra.";
                    //    properties.Cancel = true;

                    //    return;
                    //}
                    #endregion

                    #region Negar edición de 'Precio total'
                    if (properties.AfterProperties["Precio_x0020_total"] != null)
                    {
                        string precioAntes =
                            properties.ListItem["Precio_x0020_total"].ToString();
                        string precioDespues =
                            properties.AfterProperties["Precio_x0020_total"].ToString().Replace('.', ',');

                        if (precioDespues != precioAntes)
                        {
                            properties.Status       = SPEventReceiverStatus.CancelWithError;
                            properties.ErrorMessage = "El campo 'Precio total' no puede ser modificado directamente. " +
                                                      "Este campo es auto-calculado en base a los ítems pedidos asociados a esta OC.";
                            properties.Cancel = true;

                            return;
                        }
                    }
                    #endregion

                    #region Generar Codigo XBOL y actualizar descuentos
                    //TODO Cambiar

                    /*OJO tal vez se tenga que quitar. O ponerlo en la lista 'Órdenes de Compra Proveedor'
                     * EjecutorOperacionesSP.ActualizarCodigoXbolYDescuentos(properties);
                     */
                    #endregion
                }
                #endregion

                #region Evento lista 'Envíos'
                if (properties.ListTitle == LISTA_ENVIOS)
                {
                    #region Validar ítems pedidos validos para envio
                    List <string> itemsNoValidos =
                        EjecutorOperacionesSP.RecuperarItemsPedidosNoValidosParaEnvio(properties);

                    //Validar si la urgencia del ítem pedido corresponde o no al tipo de envio definido
                    if (itemsNoValidos.Count != 0)
                    {
                        string linksItems = "";

                        foreach (string itemNoValido in itemsNoValidos)
                        {
                            linksItems += itemNoValido + "<br/>";
                        }

                        properties.Status       = SPEventReceiverStatus.CancelWithError;
                        properties.ErrorMessage =
                            string.Format("Los ítems siguientes no pueden ser asociados al " +
                                          "tipo de envío elegido:<br/>{0}<br/><br/>Vuelva a la página anterior " +
                                          "y seleccione otro tipo de envío.", linksItems);
                        properties.Cancel = true;
                    }
                    #endregion
                }
                #endregion
            }
            catch (Exception ex)
            {
                #region Registro de Evento Error
                LogEventos.LogArchivo log = new LogEventos.LogArchivo("LogErrores.txt");
                log.WriteEvent("--- [EVENTO] ItemUpdating ---");
                log.WriteException(ex);
                #endregion

                properties.Status       = SPEventReceiverStatus.CancelWithError;
                properties.ErrorMessage = ex.Message;
                properties.Cancel       = true;
            }
        }
コード例 #5
0
        /// <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
            }
        }