Monday, 7 November 2016

Most Popular Acumatica DAC Attributes

Hi All,

Today I want to share with you some statistics on Acumatica xRP Attributes usage across Acumatica ERP Business modules. The goal of this article is to show you a full list of attributes that you may use for customization and also give you a chance to learn some new useful attributes, that you have not seen before.

This data was collected from PX.Objects.dll of Acumatica 6 and may be different from version to version.
All attributes are sorted by the usage frequency, highlighted by value and grouped by colours:
  • Fields attributes
  • Selectors and aggregate attributes
  • Business logic
  • Others
In the brackets you can find approximate value of how many time this attribute is used. Here you can find that was used more than 5 times on all DACs.
Also some attributes (like list attributes) was hidden from the list as they do not bring a value to the reader.

After the brackets you can find brief explanation of attribute meaning. Please note that most of the attributes have been described in the context help

and Acumatica Framework reference guide as well.

Welcome under the cut for more details:
  • PXUIFieldAttribute (10050) - responsible for showing field on UI.
  • PXDefaultAttribute (8800) - responsible for providing default data and validate empty value.
  • PXDBStringAttribute (3890) - indicates database mapped string value.
  • PXDBIntAttribute (1910) - indicates database mapped int value.
  • PXDBBoolAttribute (1680) - indicates database mapped bool value.
  • PXSelectorAttribute (1430) - implements foreign key validation and provide rule how to select field from the foreign table. 
  • PXDBDecimalAttribute (1170) - indicates database mapped decimal value.
  • PXFormulaAttribute (780) - implements automatic calculation of the field(s) based on provided expression. Very useful attribute. See more here.
  • PXDBDateAttribute (730) - indicates database mapped datetime value
  • PXBoolAttribute (590) - indicates virtual datetime value.
  • IN.PXDBQuantityAttribute (570) - provides rules to calculate database mapped item quantity
  • PXStringAttribute (530) - indicates virtual string value.
  • CM.PXDBBaseCuryAttribute (480) - provides rules to calculate database mapped amount in base currency.
  • CM.PXDBCurrencyAttribute (460) - provides rules to calculate database mapped amount in document currency and automatically convert it to base currency.
  • PXDBTimestampAttribute (455) - implements a optimistic locking.
  • PXDBDefaultAttribute (520) - provides the default value that should be calculated from the database during document saving.
  • PXDBCreatedByIDAttribute (415) - provides and saves audit information.
  • PXDBLastModifiedByIDAttribute (415) - provides and saves audit information.
  • PXDBCreatedByScreenIDAttribute (410)  - provides and saves audit information.
  • PXDBLastModifiedByScreenIDAttribute (410)  - provides and saves audit information.
  • PXParentAttribute (410) - indicates the rule how child entity can select parent record. Also supports cascade deletion.
  • PXDBCreatedDateTimeAttribute (400) - provides and saves audit information.
  • PXDBLastModifiedDateTimeAttribute (395) - provides and saves audit information.
  • PXDecimalAttribute (330) - indicates virtual decimal value.
  • GL.SubAccountAttribute (315) - Aggregate attribute for GL Subaccount.
  • GL.AccountAttribute (290) - Aggregate attribute for GL Account.
  • PXIntAttribute  (269) - indicates virtual int value.
  • PXDBLongAttribute (240) - indicates database mapped int64 value.
  • PXDBShortAttribute (225) - indicates database mapped int16 value.
  • PXDBGuidAttribute (210) - indicates database mapped guid value.
  • PXNoteAttribute (200) - Aggregate attribute for working with text fields and files.
  • GL.FinPeriodIDAttribute (180) - Aggregate attribute for GL Financial Period.
  • PXRestrictorAttribute (160) - this attribute allows to change PXSelector where conditions. For more info check this article.
  • PXDBIdentityAttribute (155) - special attribute to work with identity columns on SQL server.
  • PXDBCalcedAttribute (150) - this attribute allows to have calculations on database side.
  • GL.BranchAttribute (150) - Aggregate attribute to work with GL Branch.
  • CM.CurrencyInfoAttribute (140) - Aggregate attribute that helps to define and maintain rate from document to base currency.
  • CM.PXBaseCuryAttribute (130) - provides rules to calculate virtual amount in base currency
  • IN.SiteAttribute (110) - Aggregate attribute that helps to work with IN Warehouse.
  • IN.SubItemAttribute (105) - Aggregate attribute that helps to work with IN Sub Item.
  • IN.INUnitAttribute (105) - Aggregate attribute that helps to work with IN Unit of Measure.
  • IN.InventoryAttribute (100)  - Aggregate attribute that helps to work with IN Inventory Item
  • PXDateAttribute (95) - indicates virtual datetime value.
  • PXDimensionSelectorAttribute (90) - generic aggregate attribute that defines the way how to work with different segmented keys.
  • IN.PXDBPriceCostAttribute (90) - attribute that automatically rounds price/cost amounts for database relate fields.
  • PXDBCuryAttribute (85) - Extends db decimal attribute by defaulting the precision of database field from given Currency.
  • CM.PXCuryAttribute (80) - Extends decimal attribute by defaulting the precision of virtual field from given Currency.
  • CM.PXCurrencyAttribute (80) - when attached to a field that stores amount in pair with BaseAmount field automatically. Handles conversion and rounding when one of the fields is updated. This class also includes static Util Methods for Conversion and Rounding.
  • PXStringListAttribute (78) - this attribute defines drop down collection of string-string.
  • PXQuantityAttribute (75) - provides rules to calculate virtual field with items quantity.
  • CS.LocationIDAttribute (73) - Aggregate attribute to work with CR Location.
  • PXLineNbrAttribute (73) - helps to define and maintenance auto-generated line number field for details key field.
  • GL.CashAccountAttribute (70) - Aggregate attribute to work with GL Cash Account.
  • PXTimeListAttribute (68) - helps to work with day time drop down.
  • AP.VendorAttribute (64) - Aggregate attribute to work with AP Vendor.
  • PXUnboundDefaultAttribute (61)- nice attribute that provides default value for virtual field not only on row inserting, but also on row selecting.
  • IN.StockItemAttribute (60) - Aggregate attribute to work with IN Stock Items.
  • PXUIEnabledAttribute (60) - this attribute can dynamically change enabled property of PXUIField attribute by using specified condition.
  • PXDBScalarAttribute (59) - provides sub-select functionality.
  • AR.CustomerAttribute (57) - Aggregate attribute to work with AR Customer.
  • IN.LocationAttribute (56) - Aggregate attribute to work with IN Warehouse Location.
  • PXUIRequiredAttribute (53) - this attribute can dynamically change persisting check property of PXDefault attribute by using specified condition.
  • PXIntListAttribute (52) - this attribute defines drop down collection of int-string value pair.
  • TM.PXOwnerSelectorAttribute (49) - allows show employees for specified work group.
  • PXUnboundFormulaAttribute (44) - provides a way of aggregate calculation of specified fields base on provided rule.
  • CR.PhoneValidationAttribute (41) - Allow validate field value as phone number.
  • PXDependsOnFieldsAttribute (41) - requires for virtual fields that are depend on other fields. Overrides standard select optimizations of GI, Reports and Integration Services.
  • PXDBChildIdentityAttribute (40) -  Indicates that a DAC field references an auto-generated key field from another table and ensures the DAC field's value is correct after changes are committed to the database.
  • PXSearchableAttribute (37) - should be used with NoteID to define search criteria and rules.
  • CR.PhoneTypesAttribute (34) - define the list of possible phone types.
  • PXDBLocalizableStringAttribute (31) - define fields that can be used with multiple text values depend on user locale.
  • CS.AutoNumberAttribute (29) - define the way to use numbering sequences for auto generated key field.
  • GL.TranPeriodIDAttribute (29) -  similar to FinPeriodID but defines different formating
  • PXUIVerifyAttribute (29) - automatically verifies field based on defined rule.
  • PXExtraKeyAttribute (24) - Indicates that the field implements a relationship between two tables in a projection. The use of this attribute enables update of the referenced table on update of the projection.
  • PXCheckUnique (23) - ensures that a field has distinct values in all data records in a given context.
  • PM.ProjectTaskAttribute (23) - Aggregate to work with PM Project Task
  • PXGuidAttribute (22) - indicates virtual guid value.
  • PM.ProjectDefaultAttribute (22) - defines default calculation logic for the PM Project.
  • PM.ActiveProjectTaskAttribute (22) -  Aggregate  attribute that defines way to work with all active Tasks for the given Project.
  • TM.PXCompanyTreeSelector (22) - selector attribute that allows to show tree of company.
  • PXDimensionAttribute (22) - defines way to work with dimensions of segmented key. Usually included in dimension selector.
  • EP.PXEPEmployeeSelectorAttribute (22) - Aggregate attribute to work with EP Employee.
  • PXDBLastModifiedDateTimeUtcAttribute (22) - stores last modified date-time in UTC format.
  • TM.PXSubordinateOwnerSelectorAttribute (21) - Allows show employees which are subordinated or coworkers for current logined employee.
  • AP.VendorNonEmployeeActiveAttribute (21) - this is a specialized version of the Vendor attribute displays only Active or OneTime vendors, filtering out Employees.
  • GL.FinPeriodSelectorAttribute (21) - extends FinPeriodID attribute and displays all available financial Periods.
  • SubAccountMaskAttribute (20) - set of attributes that have dimension selector with list of predefined values. Used to generate subaccounts by mask. 
  • AR.CustomerActiveAttribute (19) specific version of Customer Attribute that show only active and one-time customers.
  • PXDBLongIdentityAttribute (19) - special attribute to work with identity columns with int64 data type on SQL server.
  • PM.ProjectAttribute (19) - Aggregate attribute to work with PM Project.
  • IN.PXPriceCostAttribute (18) - attribute that automatically rounds price/cost amounts for virtual fields.
  • PXDBEmailAttribute (17) ) - Allow validate field value as email address.
  • PM.ActiveProjectForModuleAttribute (17) - Aggregate project selector that displays only Active Projects for a given Module..
  • IN.LotSerialNbrAttribute (17) - provides basic logic to show IN Lot/Serial number.
  • PXDBCreatedDateTimeUtcAttribute (17) -  stores created date-time in UTC format.
  • PM.AccountGroupAttribute (17) - Aggregate selector and dimensio attribute to work with project accounts groups.
  • GL.OpenPeriodAttribute (16) - extends FinPeriodSelector to display and accept only open periods.
  • PXDBTimeAttribute (16) - indicates database mapped time value.
  • PXDBDateAndTimeAttribute (15) - indicates database mapped date and time value.
  • CS.PXRestrictionAttribute (15) - indicates that the field being used during the update or delete operation is placed in the where clause.
  • CR.CRCurrentOwnerIDAttribute (15) - defaults field to current employee.
  • AR.SalesPersonAttribute (14) - Aggregate attribute that helps to work with AR Sales Person.
  • IN.PXDBPriceCostCalcedAttribute (14) - extends DBCalced attribute to ensure zero value in case of empty value.
  • PXShortAttribute (14) - indicates virtual Int16 value.
  • PXDBGroupMaskAttribute (14) - provides record security validation base on Acumatica Restriction Groups. You can read more here.
  • CR.CRAttributesFieldAttribute (14) - provides ability to attach custom fiends (attributes) to current DAC that is used in CR module.
  • FA.PercentDBDecimalAttribute (14) -  provides automatic rule of percent rounding.
  • EP.PXWeekSelector2Attribute (14) - allow select weeks. Shows start and end date of week, fixed diapason only.
  • IN.SiteAvailAttribute (13) - extends SiteAttribute to show only active warehouses.
  • CR.StateAttribute (13) - aggregate attribute to work with country states.
  • PXImageAttribute (13) - provides ability to show an image or icon in the grid cell.
  • AP.VendorActiveAttribute (12) - this is a specialized version of the Vendor attributethat displays only Active or OneTime vendors.
  • PXZipValidationAttribute (12) - implements validation of a value that hold a zip postal code.
  • IN.SubItemRawExtAttribute (12) - provides a selector for Inventory Sub Item as a string
  • IN.LocationAvailAttribute (12) - this is a specialized version of the IN Location attribute that displays only active locations.
  • GL.FinPeriodIDFormattingAttribute (12) - FinPeriod is stored and displayed as a string but in different formats. This Attribute handles the conversion of one format into another.
  • AR.AROpenPeriodAttribute (12) - Specialized for AR version of the OpenPeriodAttribute. Provides  a list  of the active periods in AR module.
  • IN.INLotSerialNbrAttribute (10) - provides logic to work with inventory lot/serial numbers.
  • IN.InventoryRawAttribute (10) - provides a selector for Inventory Item CD as a string
  • AP.APOpenPeriodAttribute (10) - specialized for AP version of the OpenPeriodAttribute. Provides  a list  of the active periods in AP module.
  • Common.LabelListAttribute (9) - special version of PXStringList attribute that can get list of labels/values from collection or special provider
  • PXLongAttribute (9) - indicates virtual Int64 value
  • IN.NonStockItemAttribute (9) - variation of InventoryAttribute that shows only non-stock items,
  • EP.EPProjectAttribute (9) - aggregated project attribute that adopted to EP module.
  • AP.PXDBVendorCuryAttribute (8) - database field attribute that add rounding to currency amount base on configuration rules.
  • IN.INExpireDateAttribute (8) - aggregate attribute that adds validation logic to track expiration date on inventory operations.
  • CS.TermsAttribute (8) - attribute calculates due date and discounts accordingly to credit terms.
  • PXAutomationMenuAttribute (8) fills the drop down list based on possible automation actions.
  • EP.PXSubordinateSelectorAttribute (8) - selector attribute that sllow show employees which are subordinated of coworkers for logined employee.
  • GL.ClosedPeriodAttribute (8) special type of FinPeriod selector that extends logic to displays and accepts only Closed Fin Periods. 
  • CA.PXVendorCustomerSelectorAttribute (8) - allows to select either vendors or customers depending on the value in the BatchModule field.
  • PXSequentialNoteAttribute (8) - special version of Note attribute that allows to generate a sequential guild value. May be used needed for better sorting.
  • PO.POLineInventoryItemAttribute (8) - special version of Inventory attribute tat allows to select item by alternative IDs.
  • AP.VendorRawAttribute (7) - provides a selector for vendors AcctCD as a string.
  • TM.PXSubordinateGroupSelectorAttribute (7) - allows show work groups which are subordinated or include coworkers for current logined employee.
  • PXVerifyEndDateAttribute (7) - Verifies the integrity of a date range. That is, the start date of the range must be less than or equal to the end date.
  • GL.AnyPeriodFilterableAttribute (7) - selector that extends FinPeriodSelector attribute to display any periods (active, closed, etc) and maybe filtered. 
  • CT.ContractTemplateAttribute (7) - aggregate attribute that displays all contract templates
  • EP.PXSubordinateAndWingmenSelectorAttribute (7) - special version of PXSubordinateSelector that also adds wingmans to the list
  • SM.PXTimeTagAttribute (7) - add logic to track changes of the record for synchronization. Attribute keeps the last modification date in separate table.
  • PXTimeSpanLongAttribute (7) indicates a virtual field of  int type that represents a duration in time as the number of minutes.
  • PXNoUpdateAttribute (6) - attribute cancel any UI update of this field
  • FA.FAOpenPeriodAttribute (6) - special version of OpenPeriod attribute that validates period for fixed assets module.
  • EP.EPActivityProjectDefaultAttribute (6) - specific project default attribute for EP activity.
  • GL.AccountAnyAttribute (6) - special version of account attribute that shows all records
  • PXDBSequentialGuidAttribute (6) - special version of Note attribute that allows to generate a sequential guild value. May be used needed for better sorting.
  • CR.CRCountCalculationAttribute (6) - dynamically calculates count of rows returned by given Bql command.
  • CA.DynamicValueValidationAttribute (6) - this attribute allows to provide a dynamic validation rules for the field based on provided regexp. Expression may be selected form database.
  • SO.SOLocationAvailAttribute (5) - extends LocationAvail attribute and shows the availability of Inventory Item for the given location.
  • CS.ValidatedAddressAttribute (5) - this attribute should be placed on the IsValidated field of the Address-based DAC. It clears an IsValidated flag, if the essential fields of address (Line1, Line2, City, State, Country, PostalCode) are modified.
  • PXRefNoteAttribute (5) - typically represented by the PXRefNote selector control the page. Through this control, a user can select a data records from any table.
  • CR.CustomerAndProspectAttribute (5) special version of BAccount attribute that shows only customers and prospects
  • PXDBCostScalarAttribute (5) extends DB Scalarattribute to ensure zero value in case of empty value.
  • GL.SubAccountRawAttribute (5) - provides a selector for Subaccount as a string
  • CR.ContactDisplayNameAttribute (5) - combines display name from provided fields
  • EP.EPActivityDefaultWeekAttribute (5) - calculates default value for a week control
  • PXDBWeblinkAttribute (5) - database field attribute that also validates value for a correct URL.
  • CS.PXNotificationFormatAttribute (5) - verify and correct format of notification automatically.
  • CA.UniqueBoolAttribute (5) - attribute ensures that there is only one row with "true" value of given field within scope restricted by key value.

Have a nice development!

No comments: