Complemento de seguridad de página (PSP)

by Community Manager on ‎10-04-2017 07:27 AM

DESCRIPCIÓN GENERAL

El complemento de seguridad de página es una clase de Apex (calculadora heredada) o una secuencia de comandos JavaScript (calculadora avanzada) que los administradores pueden crear para controlar la visibilidad de nivel de campo o el modo de entrada de datos en las páginas de VisualForce gestionadas que se proporcionan con la aplicación Salesforce CPQ.

 

Estos son algunos casos de uso:

  • Puede mostrar u ocultar un campo relevante en función de una partida de presupuesto en el Editor de partidas.
    • Por ejemplo, si vende clases de capacitación y desea capturar el número de estudiantes que van a participar en una clase, el campo para el número de estudiantes solo se debe mostrar para las partidas de presupuesto correspondientes a los productos de la clase de capacitación.
  • Puede crear un campo de solo lectura o de lectura/escritura en función del contexto.
    • Por ejemplo, puede permitir a los usuarios especificar el plazo de suscripción en cada partida de presupuesto, pero tiene algunos productos que solo se pueden presupuestar para un periodo de 12 meses (las garantías son un ejemplo típico). El complemento de seguridad de página (PSP) permite convertir Plazo de suscripción en un campo de solo lectura para estos productos y además se pueden mantener los campos de lectura/escritura para los demás productos.

CONFIGURACIÓN

Para activar un PSP en su organización, vaya a Configuración | Paquetes instalados y haga clic en Configurar junto al paquete de SteelBrick CPQ. En la página de configuración del paquete, haga clic en la ficha Complementos e ingrese el nombre de la clase de Apex del PSP en el campo Complemento de seguridad de página:Screen Shot 2016-05-20 at 3.40.15 PM.png

 

 

CASO DE USO

El siguiente código proporciona un shell de PSP e incluye un ejemplo de cómo mostrar u ocultar un campo específico en el Editor de partidas de presupuesto.

global class MyPageSecurityPlugin implements SBQQ.PageSecurityPlugin2 {
    public Boolean isFieldEditable(String pageName, Schema.SObjectField field) {
        return null;
    }
    
    public Boolean isFieldEditable(String pageName, Schema.SObjectField field, SObject record) {
        return null;
    }
    
    public Boolean isFieldVisible(String pageName, Schema.SObjectField field) {
        return null;
    }
    
    public Boolean isFieldVisible(String pageName, Schema.SObjectField field, SObject record) {
        if ((pageName == 'EditLines') && (record instanceof SBQQ__QuoteLine__c)) {
            SBQQ__QuoteLine__c line = (SBQQ__QuoteLine__c)record;
            if ((line.SBQQ__Bundle__c == true) && (field != SBQQ__QuoteLine__c.SBQQ__ProductName__c)) {
                return false;
            }
        }
        return null;
    }
}