Customer invoice line amount measure multiple records

The current release of AX 2012 R3  has a scenario where the Sales cube measure ‘ Customer invoice line amount – account currency’ displays the incorrect amount.  Compare this to the Sales cube measure ‘Customer invoice amount – accounting currency’ and where the balance should be the same they are different.

The issue is in the relationships between the CustInvoiceTrans and CustInvoiceJour, it is possible that there is no unique relationship between these tables if the same invoice number is used when posting journals.


Take this scenario

1. User posts a customer payment with the incorrect amount using invoice number ’02’

2. User reverses payment and uses the same invoice number ’02’

3. User enters the correct amount and uses the same invoice number ’02’

When opening the AOT View CustInvoiceTransExpanded in AX you can see the multiple records.


This View is used in the SalesCube and therefore the incorrect balance is displayed.

I have not been able to solve this as there is no unique join that can be used but as a work around when creating your own reports is to use a different measure in the Sales cube ‘Customer invoice amount – accounting currency’ this gives the correct balance.


I’ll update this post if Microsoft offer a solution.

Production Route Card SSRS report

In the Production model is a report to print the Route card, when selected from the Reports area there is no problem but when selected from the Production order it fails.  It fails because the report controller is not looking for the Production order origin.

To replicate the bug select a production order and on the ribbon bar in the Process area select Release.  This opens another dialog with 3 print options Print job card, Print route job and Print route card.  Select the Route card option and click OK.


Release dialog

In the ProdRouteCardController class the setRange method is a missing block of code in the case statement.

Add the following

//Start Microsoft bug in AX 2012 R3 and below.  Code to be removed when hotfix provided

case tablenum(ProdParmRelease):

prodParmRelease  = this.parmArgs().record();

prodId          = prodParmRelease.ProdId;




Customer reconciliation report AX 2012

When is a report not a report?  When you get a data definition language error with truncation issues of course.

When populating a reporting temp table the EDT’s must be the same, the original transaction table EDT must have the same properties as the temporary table EDT’s.  This is fairly obvious but in the Customer reconciliation report this fails because of a mismatch.

The reporting temporary table is CustLedgerReconciliationReportTmp and the Name EDT is 60 char, the Name is coming from the DirPartyTable which is 100 Char.  99% percent of the time it works, but as soon as the customer name is longer than 60 Char it fails with a truncation error.

Solution is easy and know you know the issue I’m sure you can fix it!

Path to run the report is General Ledger > Reports > Reconciliation > Customer > Customer.