Buscar..


Introducción

En este tema, explorará dos enfoques para ocultar de forma condicional las pestañas en las pantallas de ingreso de datos en Acumatica.

Propiedad VisibleExp del control PXTab en Aspx

La propiedad VisibleExp es una expresión booleana, que determina si la pestaña dada es visible (cuando la expresión lógica es VERDADERA) u oculta. Usted especifica la propiedad VisibleExp para los controles PXTab en la página Aspx:

<px:PXTabItem Text="Credit Card Processing Info" BindingContext="form" 
    VisibleExp="DataControls[&quot;chkIsCCPayment&quot;].Value = 1">

VisibleExp se compone de controles de entrada ubicados dentro del contenedor con el ID especificado en la propiedad BindingContext del control PXTab. No está permitido usar controles de entrada de más de un contenedor. El acceso a un control de entrada específico se proporciona a través del diccionario DataControls por su ID, no por el nombre de un campo DAC.

Generalmente, la propiedad VisibleExp se usa para componer expresiones booleanas bastante simples con valores de control de entrada codificados, que es poco probable que cambien con el tiempo. Por ejemplo, la siguiente expresión se usa en la pantalla Pedidos de venta (SO.30.10.00) para ocultar la pestaña Configuración de pago para pedidos del tipo de transferencia :

<px:PXTabItem Text="Payment Settings" 
    VisibleExp="DataControls[&quot;edOrderType&quot;].Value!=TR" BindingContext="form">

Para ocultar la pestaña Actividades para clientes potenciales con nuevo estado

Para ocultar la pestaña Actividades de la pantalla Leads (CR.30.10.00), configure la propiedad BindingContext para que se forme (el formulario de resumen de leads de nivel superior contiene la ID del formulario ) y defina VisibleExp para que devuelva FALSE si el estado del lead está Abierto (la lista desplegable Status tiene la ID del estado de ed ) :

<px:PXTabItem Text="Activities" LoadOnDemand="True" 
    BindingContext="form" VisibleExp="DataControls[&quot;edStatus&quot;].Value != H">

introduzca la descripción de la imagen aquí

AllowSelect Property on Data Views

A diferencia de la propiedad VisibleExp , definida en Aspx, usted manipula la propiedad AllowSelect de una vista de datos a través del código de extensión BLC o BLC. La propiedad AllowSelect permite utilizar expresiones booleanas más complejas (en comparación con la propiedad VisibleExp ) y, si es necesario, recuperar información adicional de la base de datos u otras fuentes no disponibles en una página web.

A continuación se muestran los 3 escenarios más comunes para trabajar con la propiedad AllowSelect :

  • Controlador de eventos RowSelected para entidades de nivel superior para ocultar la pestaña Aplicaciones para facturas de tipos de Venta en efectivo y Devolución de efectivo :

     public class SOInvoiceEntry : ARInvoiceEntry
     {
         ...
         protected override void ARInvoice_RowSelected(PXCache cache, PXRowSelectedEventArgs e)
         {
             ...
    
             Adjustments.AllowSelect =
                 doc.DocType != ARDocType.CashSale &&
                 doc.DocType != ARDocType.CashReturn;
         }
         ...
     }
    
  • El constructor de BLC muestra la pestaña Información de reabastecimiento de subelementos en la pantalla Detalles del almacén de artículos solo cuando están activadas las funciones de Reposición de inventario y Subtemas de inventario :

     public class INItemSiteMaint : PXGraph<INItemSiteMaint, INItemSite>
     {
         ...
         public INItemSiteMaint()
         {
             ...        
    
             bool enableSubItemReplenishment = PXAccess.FeatureInstalled<FeaturesSet.replenishment>() && PXAccess.FeatureInstalled<FeaturesSet.subItem>();
             subitemrecords.AllowSelect = enableSubItemReplenishment;
         }
         ...
     }
    
  • Controlador RowSelected para que la entidad de nivel superior oculte la pestaña Historial de depreciación, a menos que el activo actual sea depreciable y la Vista del historial de depreciación esté configurada en Lado a lado en las Preferencias de Activos fijos:

     public class AssetMaint : PXGraph<AssetMaint, FixedAsset>
     {
         ...
         protected virtual void FixedAsset_RowSelected(PXCache sender, PXRowSelectedEventArgs e)
         {
             ...
    
             AssetHistory.AllowSelect = asset.Depreciable == true && fasetup.Current.DeprHistoryView == FASetup.deprHistoryView.SideBySide;
         }
         ...
     }
    

Cada vez que se utiliza la propiedad AllowSelect para cambiar condicionalmente la visibilidad de la pestaña a través del código de extensión BLC o BLC, debe establecer la propiedad RepaintOnDemand en falso en Aspx para el contenedor PXTab correspondiente:

<px:PXTabItem Text="Depreciation History" RepaintOnDemand="false">

La propiedad RepaintOnDemand es verdadera de forma predeterminada. Esta propiedad controla la inicialización del contenedor PXTab: cuando se establece en verdadero , PXTab no se inicializará hasta que sea seleccionado por un usuario. Obviamente, necesita RepaintOnDemand configurado en falso para garantizar el comportamiento correcto del contenedor PXTab dado a pesar de que haya sido seleccionado o no.

Para ocultar la pestaña Referencia cruzada de los artículos en stock que no se pueden vender

Para ocultar la pestaña Referencia cruzada de la pantalla Artículos en inventario (IN.20.25.00) para artículos con estado Sin ventas , proceda de la siguiente manera:

  1. implementar el controlador InventoryItem_RowSelected en la extensión BLC InventoryItemMaint para establecer la propiedad AllowSelect en false para la vista de datos de itemxrefrecords si el Estado del artículo se configuró en Sin ventas :

    public class InventoryItemMaintExt : PXGraphExtension<InventoryItemMaint>
    {
        protected void InventoryItem_RowSelected(PXCache sender, PXRowSelectedEventArgs e)
        {
            InventoryItem item = (InventoryItem)e.Row;
            if (item == null) return;
    
            Base.itemxrefrecords.AllowSelect = (item.ItemStatus != InventoryItemStatus.NoSales);
        }
    }
    
  2. en el Administrador de personalización, establezca la propiedad RepaintOnDemand en false para la pestaña Referencia cruzada y publique la personalización: introduzca la descripción de la imagen aquí

Después de completar los 2 pasos bastante simples mencionados anteriormente, la pestaña Referencia cruzada no debe estar disponible para los artículos en existencia sin estado de ventas :

introduzca la descripción de la imagen aquí

Para ocultar la pestaña Atributos de los artículos en stock inactivos

Para ocultar de forma condicional la pestaña ** Atributos ** de la pantalla Artículos en stock (IN.20.25.00), proceda de la siguiente manera:

  1. implementar el controlador InventoryItem_RowSelected en la extensión BLC de InventoryItemMaint para establecer la propiedad AllowSelect en false para las vistas de datos de Answers y Category si el Estado del elemento se configuró como Inactivo . También observe la propiedad Visible establecida en falso para PXUIFieldAttribute agregado en el campo InventoryItem.ImageUrl por el controlador CacheAttached :

    public class InventoryItemMaintExt : PXGraphExtension<InventoryItemMaint>
    {
        protected void InventoryItem_RowSelected(PXCache sender, PXRowSelectedEventArgs e)
        {
            InventoryItem item = (InventoryItem)e.Row;
            if (item == null) return;
    
            bool showAttributesTab = item.ItemStatus != InventoryItemStatus.Inactive;
            Base.Answers.AllowSelect = Base.Category.AllowSelect = showAttributesTab;
            PXUIFieldAttribute.SetVisible<InventoryItem.imageUrl>(sender, item, showAttributesTab);
        }
    
        [PXMergeAttributes(Method = MergeMethod.Append)]
        [PXUIField(DisplayName = "Image")]
        protected void InventoryItem_ImageURL_CacheAttached(PXCache sender)
        { }
    }
    
  2. en el Administrador de personalización, establezca la propiedad RepaintOnDemand en false para la pestaña Atributos y publique la personalización: introduzca la descripción de la imagen aquí

Después de completar los 2 pasos anteriores, la pestaña Atributos no debe estar accesible para los artículos en inventario con estado inactivo :

introduzca la descripción de la imagen aquí



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow