Skip to main content
Question

Why projects are not showing up in the Expense Claim

  • September 17, 2026
  • 1 reply
  • 18 views

marcorojas82
Freshman I

Normally, the projects are visible in version 24r2; however, after upgrading to version 26r1 and running some tests, we were surprised to find that the projects no longer appear (they do not show up in the filter). Could this be due to a specific configuration required to view them on the expense request screen?
I also notice there was a change in the DAC; could that be related? I have attached the code.
If you are aware of any relevant configuration settings, I would appreciate the information.

 

version 24r2

#region ContractID 
public abstract class contractID : PX.Data.BQL.BqlInt.Field<contractID> { }
[PXDBInt]
[PXUIField(DisplayName = "Project/Contract")]
[PXDimensionSelector(ContractAttribute.DimensionName,
                    typeof(Search2<Contract.contractID,
                                   LeftJoin<EPEmployeeContract,
                                            On<EPEmployeeContract.contractID, Equal<Contract.contractID>,
                                            And<EPEmployeeContract.employeeID, Equal<Current2<employeeID>>>>>,
                                   Where<Contract.isActive, Equal<True>,
                                         And<Contract.isCompleted, Equal<False>,
                                         And<Where<Contract.nonProject, Equal<True>,
                                                   Or2<Where<Contract.baseType, Equal<CTPRType.contract>,
                                                   And<FeatureInstalled<FeaturesSet.contractManagement>>>,
                                                   Or<Contract.baseType, Equal<CTPRType.project>,
                                                   And2<Where<Contract.visibleInEA, Equal<True>>,
                                                   And2<FeatureInstalled<FeaturesSet.projectModule>,
                                                   And2<Match<Current<AccessInfo.userName>>,
                                                   And<Where<Contract.restrictToEmployeeList, Equal<False>,
                                                   Or<EPEmployeeContract.employeeID, IsNotNull>>>>>>>>>>>>,                           
                                                   OrderBy<Desc<Contract.contractCD>>>),
                     typeof(Contract.contractCD),
                     typeof(Contract.contractCD),
                     typeof(Contract.description),
                     typeof(Contract.customerID),
                     typeof(Contract.status),
                     Filterable = true,
                     ValidComboRequired = true,
                     CacheGlobal = true,
                     DescriptionField = typeof(Contract.description))]
[ProjectDefault(BatchModule.EA, AccountType = typeof(expenseAccountID))]
public virtual int? ContractID{    get;    set;}
#endregion

 

version 26r1

#region ContractID 
public abstract class contractID : PX.Data.BQL.BqlInt.Field<contractID> { }
[PXDBInt]
[PXUIField(DisplayName = "Project/Contract")]
[PXDimensionSelector(ContractAttribute.DimensionName,
                    typeof(Search2<Contract.contractID,
                                   LeftJoin<EPEmployeeContract,
                                            On<EPEmployeeContract.contractID, Equal<Contract.contractID>,
                                            And<EPEmployeeContract.employeeID, Equal<Current2<employeeID>>>>>,
                                   Where<Contract.isActive, Equal<True>,
                                         And<Contract.isCompleted, Equal<False>,
                                         And<Where<Contract.nonProject, Equal<True>,
                                                   Or2<Where<Contract.baseType, Equal<CTPRType.contract>,
                                                   And<FeatureInstalled<FeaturesSet.contractManagement>>>,
                                                   Or<Contract.baseType, Equal<CTPRType.project>,
                                                   And2<Where<Contract.visibleInEA, Equal<True>>,
                                                   And2<FeatureInstalled<FeaturesSet.projectAccounting>,
                                                   And2<Match<Current<AccessInfo.userName>>,
                                                   And<Where<Contract.restrictToEmployeeList, Equal<False>,
                                                   Or<EPEmployeeContract.employeeID, IsNotNull>>>>>>>>>>>>,
                                   OrderBy<Desc<Contract.contractCD>>>),
                     typeof(Contract.contractCD),
                     typeof(Contract.contractCD),
                     typeof(Contract.description),
                     typeof(Contract.customerID),
                     typeof(Contract.status),
                     typeof(Contract.defaultBranchID),
                     Filterable = true,
                     ValidComboRequired = true,
                     CacheGlobal = true,
                     DescriptionField = typeof(Contract.description),
                     DescriptionDisplayName = PM.Messages.ProjectContractDescription)]
[ProjectDefault(BatchModule.EA, AccountType = typeof(expenseAccountID))]
public virtual int? ContractID{    get;    set;}
#endregion

 

1 reply

Steve Milner
Varsity III
Forum|alt.badge.img+2
  • Varsity III
  • September 17, 2026

@marcorojas82 The DAC change isn't it. In 2026 R1 projectModule is flagged obsolete ("ProjectModule setting was moved to ProjectAccounting"), hidden on Enable/Disable Features, and synced to its parent. Every feature check in the product moved to projectAccounting in that same sweep. If it were actually off you'd be missing a lot more than this selector.

What you're seeing is the project branch of the filter returning nothing, so only the non-project code survives. That branch wants the project Active, not Completed, Expenses checked here, and either Restrict Employees cleared or the claiming employee on the project's Employees tab. Restriction groups apply too, matched against the signed-in user rather than the employee.

One read-only query tells you which one you're hitting:

SELECT ContractCD, Status, IsActive, IsCompleted, VisibleInEA, RestrictToEmployeeListFROM ContractWHERE CompanyID = <your tenant> AND BaseType = 'P' AND NonProject = 0

VisibleInEA = 0 is the usual culprit, and it's what closed this thread. If the projects you tested with were created after the upgrade, that box defaults from Projects Preferences, so check there too.