The rules are as follows: if there is an alternate PN, the link to the alternate will show up in the alternate field and the link to the primary will show up in the primary field. If there is no alternate PN, the link to the primary part shows up both in the primary and the alternate fields.
Say sales detail has primary part 'A' that has no alternate. link to 'A' would be in both the primary and thet alternate fields. In that case, the report shows (correctly) part 'A' both as the primary and the alternate.
If part 'A' had alternate 'B', the link in the primary field is to 'A' and the link in the alternate field is to 'B'. The report should show part 'A' as the primary, part 'B' as the alternate, but it shows part 'B' as both.
My sales detail table is linked once to the parts table (via the primary key) and also to parts_1 (an alias) via the alternate key. Both links are left outer joins, which are required for something else. I don't think this is affecting anything (I tried with inner joins as well).