Buscar..


Introducción

En este tema, aprenderá cómo modificar los atributos de campo heredados de los atributos PXStringList o PXIntList. El enfoque demostrado se asegurará de no romper la funcionalidad del producto base Acumatica ERP y requerirá un mantenimiento mínimo, en caso de que exista, mientras se actualizan sus personalizaciones a una versión más nueva de Acumatica.

Observaciones

En todos los ejemplos anteriores, realizó cambios en las matrices _AllowedValues y _AllowedLabels . Si su tarea es modificar solo la etiqueta (valor externo) de un elemento desplegable, considere usar los diccionarios de traducción. Para obtener más información sobre los diccionarios de traducción, consulte la documentación de Acumatica ERP.

Modificación de los estados maritales

En este ejemplo, modificará la lista desplegable Estado civil que se encuentra en el formulario de Contactos (CR302000): introduzca la descripción de la imagen aquí

Para agregar nuevos elementos al sucesor de PXStringListAttribute

La mejor manera de extender los elementos desplegables codificados dentro de un atributo heredado de los atributos PXStringList o PXIntList es aumentar el tamaño de las matrices _AllowedValues y _AllowedLabels en el constructor de su atributo de campo personalizado:

[PXLocalizable(Messages.Prefix)]
public static class MaritalStatusesMessages
{
    public const string CommonLaw = "Living common law";
    public const string Separated = "Separated (not living common law)";
    public const string DivorcedNoCommonLaw = "Divorced (not living common law)";
    public const string NeverMarried = "Never Married";
}

public class MaritalStatusesCst1Attribute : MaritalStatusesAttribute
{
    public const string CommonLaw = "L";
    public const string Separated = "P";
    public const string NeverMarried = "N";

    public MaritalStatusesCst1Attribute()
    {
        Array.Resize(ref _AllowedValues, _AllowedValues.Length + 3);
        _AllowedValues[_AllowedValues.Length - 3] = CommonLaw;
        _AllowedValues[_AllowedValues.Length - 2] = Separated;
        _AllowedValues[_AllowedValues.Length - 1] = NeverMarried;
        Array.Resize(ref _AllowedLabels, _AllowedLabels.Length + 3);
        _AllowedLabels[_AllowedLabels.Length - 3] = MaritalStatusesMessages.CommonLaw;
        _AllowedLabels[_AllowedLabels.Length - 2] = MaritalStatusesMessages.Separated;
        _AllowedLabels[_AllowedLabels.Length - 1] = MaritalStatusesMessages.NeverMarried;
    }
}

En el ejemplo anterior, aumentó el tamaño de las matrices _AllowedValues y _AllowedLabels para agregar 3 elementos adicionales a la lista desplegable Estado civil . Los valores internos, almacenados en la matriz _AllowedValues , se asignarán a los campos DAC y se guardarán en la base de datos, y los valores externos de la matriz _AllowedValues representan valores internos en la interfaz de usuario.

Para probar los resultados, en la extensión Contact DAC, decora el campo MaritalStatus con el MaritalStatusesCst1Attribute :

public class ContactExt : PXCacheExtension<Contact>
{
    [PXRemoveBaseAttribute(typeof(MaritalStatusesAttribute))]
    [PXMergeAttributes(Method = MergeMethod.Append)]
    [MaritalStatusesCst1]
    public string MaritalStatus { get; set; }
}

Ahora hay 7 elementos en la lista desplegable Estado civil :

introduzca la descripción de la imagen aquí

Para eliminar elementos declarados en el sucesor de PXStringListAttribute

Para eliminar un elemento desplegable específico, que fue codificado dentro de un atributo heredado de los atributos PXStringList o PXIntList, debe reducir el tamaño de las matrices _AllowedValues y _AllowedLabels en el constructor de su atributo de campo personalizado:

public class MaritalStatusesCst2Attribute : MaritalStatusesCst1Attribute
{
    public MaritalStatusesCst2Attribute()
    {
        string[] allowedValues = new string[_AllowedValues.Length - 1];
        string[] allowedLabels = new string[_AllowedLabels.Length - 1];
        Array.Copy(_AllowedValues, 1, allowedValues, 0, _AllowedValues.Length - 1);
        Array.Copy(_AllowedLabels, 1, allowedLabels, 0, _AllowedValues.Length - 1);
        _AllowedValues = allowedValues;
        _AllowedLabels = allowedLabels;
    }
}

En el ejemplo anterior, redujo el tamaño de las matrices _AllowedValues y _AllowedLabels para eliminar un elemento individual de la lista desplegable Estado civil .

Para probar los resultados, en la extensión Contact DAC, decora el campo MaritalStatus con el MaritalStatusesCst2Attribute :

public class ContactExt : PXCacheExtension<Contact>
{
    [PXRemoveBaseAttribute(typeof(MaritalStatusesAttribute))]
    [PXMergeAttributes(Method = MergeMethod.Append)]
    [MaritalStatusesCst2]
    public string MaritalStatus { get; set; }
}

Ahora solo hay 6 elementos: 3 originales y 3 personalizados, en la lista desplegable Estado civil :

introduzca la descripción de la imagen aquí

Para reemplazar los elementos declarados en el sucesor PXStringListAttribute

Para reemplazar un elemento desplegable específico, originalmente codificado dentro de un atributo heredado de los atributos PXStringList o PXIntList, debe actualizar el valor apropiado en las matrices _AllowedValues y _AllowedLabels en el constructor de su atributo de campo personalizado:

public class MaritalStatusesCst3Attribute : MaritalStatusesCst2Attribute
{
    public const string DivorcedNoCommonLaw = "V";

    public MaritalStatusesCst3Attribute()
    {
        _AllowedValues[Array.IndexOf(_AllowedValues, Divorced)] = DivorcedNoCommonLaw;
        _AllowedLabels[Array.IndexOf(_AllowedLabels, Messages.Divorced)] = MaritalStatusesMessages.DivorcedNoCommonLaw;
    }
}

En el ejemplo anterior, reemplazó D - Artículo divorciado con V - Divorciado (no tiene derecho común) en las matrices _AllowedValues y _AllowedLabels respectivamente. Al hacerlo, reemplazamos los valores internos y externos de un elemento desplegable.

Para probar los resultados, en la extensión Contact DAC, decora el campo MaritalStatus con el MaritalStatusesCst3Attribute :

public class ContactExt : PXCacheExtension<Contact>
{
    [PXRemoveBaseAttribute(typeof(MaritalStatusesAttribute))]
    [PXMergeAttributes(Method = MergeMethod.Append)]
    [MaritalStatusesCst3]
    public string MaritalStatus { get; set; }
}

Ahora solo hay 6 elementos: 2 originales, 3 personalizados y 1 reemplazado, en la lista desplegable Estado civil :

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