Usually we can get this error for non PO vendor invoice.
To fix it you need to change one of these two number sequences:
- Internal invoice
- Internal credit note
Because if they have identical structure they will generate same numbers and that’s the real cause of this error.
Now let’s look what is happening under the hood.
Unique index of InventReportDimHistory consists of four fields:
InventTransId is always blank, because non PO invoice lines could have only non-stocked items or procurement categories.
InventDimId could be identical for multiple lines, for example “AllBlank” or any site and warehouse combination.
TransactionLogType is a document type. For invoice it is “PurchInvoice”, for packing slip – “PurchPackingSlip” and so on.
The last field is TransRefId which is based on InternalInvoiceId field from the Invoice Journal.
InternalInvoiceId is number sequence generated, so it should be unique for each posted invoice. However, AX could use two different number sequences for this field.
First one is used for invoices and second for credit notes and if this two number sequence have same structure, for example usmf-#######, you could hit this issue when you will create credit note, because at some point AX could generate number for credit note that was already used for invoice.
Please note that other number sequences can be used for some localisations like RU or MY. To get list of all possible number sequence you can look at PurchInvoiceJournalCreate.allocateNumAndVoucher() method.