This functionality had been implemented in AX 4.0 and AX 2009, removed for AX 2012, and then added back in AX 2012 R2 CU6.
In the Project Hours Sales Price form, you're able to specify pricing based on a variety of criteria as seen in the image below.
Prior to the 2012 R2 CU6 release, the Project contract ID and Customer account fields, both in AX 4.0 and 2009, were not available. With the 2012 R2 CU6 release, these fields were reintroduced to the form. However, the code behind the form for selecting pricing records was not updated appropriately.
The Hours Journal and Project Timesheet forms both call a method, findHourSalesPrice, in the ProjHourSalesPrice table. When we review this method, we see a few interesting things.
- The code in the findHourSalesPrice method makes no reference to Project contract ID or Customer account. Sections in the method where we would expect to see a Project contract ID or Customer account are replaced with blank strings.
- There is PSA specific code (from 4.0/2009) that is used to determine pricing by Project contract ID and Customer account. However, this code is never called from the Hours Journal or Project Timesheet forms. The code relies on the Price group, Customer account, or Project contract ID being passed from the Hours Journal or Project Timesheet form.
- Price searching is performed differently between the findHourSalesPrice and psaFindHourSalesPrice methods and differently in the psaFindHourSalesPrice based on the valid for value provided.Method: findHourSalesPriceMethod: psaFindHourSalesPriceValid For: TableValid For: GroupValid For: AllProject ID + Worker + CategoryProject ID + WorkerProject ID + CategoryProject IDProject ID + Worker + CategoryProject ID + WorkerProject ID + CategoryProject IDProject contract IDCustomer accountCategory + WorkerWorkerCategoryWorker + CategoryWorkerCategoryWorker + CategoryWorkerCategory
Microsoft has identified this as being an issue and will address it in a future hotfix.



