Acumatica供应商ID细分关键字与BIZZACCOUNT细分受众群长度不同

时间:2018-04-25 03:48:43

标签: acumatica

我想知道是否可以使用比BiZAccounts更少的字符数设置供应商ID段密钥。 例如,我创建了分支密钥,如USBRANCH1,但现在我想创建像V001这样的供应商ID,但是不能让用户输入超过4个字符? 我不确定为什么BIZaccount在细分键方面与供应商,客户和员工联系在一起,因为这会降低灵活性并改变密钥长度和类型

由于

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作来实现此目的:
1.创建您自己的分段密钥,如下所示:

enter image description here

  1. 为供应商的DAC创建缓存扩展,以更改从VENDOR继承到您BIZACCT的默认MYVENDOR分段密钥,如下所示:

    using PX.Data;
    using PX.Data.EP;
    using PX.Objects.AP;
    using PX.Objects.CR;
    using PX.Objects.GL;
    using System;
    namespace ClassLibrary1.DAC
    {
        public class VendorExt:PXCacheExtension<Vendor>
        {
            [MyVendorRaw(IsKey = true)]
            [PXDefault]
            [PXFieldDescription]
            public virtual string AcctCD { get; set; }
        }
    
        [PXDBString(30, IsUnicode = true, InputMask = "")]
        [PXUIField(DisplayName = "Vendor", Visibility = PXUIVisibility.Visible)]
        public sealed class MyVendorRawAttribute : AcctSubAttribute
        {
            public MyVendorRawAttribute() : this(null)
            {
            }
    
            public MyVendorRawAttribute(Type where)
            {
                Type type = BqlCommand.Compose(new Type[]
                {
                    typeof(Search2<, , >),
                    typeof(Vendor.acctCD),
                    typeof(LeftJoin<Contact, On<Contact.bAccountID, Equal<Vendor.bAccountID>, And<Contact.contactID, Equal<Vendor.defContactID>>>, LeftJoin<Address, On<Address.bAccountID, Equal<Vendor.bAccountID>, And<Address.addressID, Equal<Vendor.defAddressID>>>>>),
                    (where == null) ? typeof(Where<Match<Current<AccessInfo.userName>>>) : BqlCommand.Compose(new Type[]
                    {
                        typeof(Where2<, >),
                        typeof(Where<Match<Current<AccessInfo.userName>>>),
                        typeof(And<>),
                        where
                    })
                });
                PXDimensionSelectorAttribute pxdimensionSelectorAttribute;
                this._Attributes.Add(pxdimensionSelectorAttribute = new PXDimensionSelectorAttribute("MYVENDOR", type, typeof(Vendor.acctCD), new Type[]
                {
                    typeof(Vendor.acctCD),
                    typeof(Vendor.acctName),
                    typeof(Vendor.vendorClassID),
                    typeof(Vendor.status),
                    typeof(Contact.phone1),
                    typeof(Address.city),
                    typeof(Address.countryID)
                }));
                pxdimensionSelectorAttribute.DescriptionField = typeof(Vendor.acctName);
                this._SelAttrIndex = this._Attributes.Count - 1;
                this.Filterable = true;
                ((PXDimensionSelectorAttribute)this._Attributes[this._SelAttrIndex]).CacheGlobal = true;
            }
    
            public const string DimensionName = "MYVENDOR";
        }
    }
    
  2. Vendor CD将使用 4 长度。但正如您在下面的屏幕截图中看到的那样,现有记录会出现一些问题。因此,我建议您仅在系统没有现有供应商的情况下执行此操作。 在这样做之后,我假设您检查所有使用供应商正确工作的页面。

    enter image description here