CartItem to OrderItem ListPrice mapping
Key Takeaway
By default, OrderItem.ListPrice gets its value from CartItem.SalesPrice, not CartItem.ListPrice. Enabling the "SalesPriceToListPriceMap" org permission makes it come from CartItem.ListPrice.
When a B2B Commerce checkout turns a cart into an order, the price values on each CartItem are copied to the matching OrderItem. The default mapping can make an order look like it has the wrong list price, so you need to know which cart field fills OrderItem.ListPrice when you troubleshoot.
Which cart price the order uses
CartItem has two separate price fields, ListPrice and SalesPrice. Only one of them feeds OrderItem.ListPrice when the cart becomes an order.
By default, CartItem.SalesPrice maps to OrderItem.ListPrice. The cart's own ListPrice value is not carried into that field. A discounted line therefore shows the discounted price as the order's list price, even when CartItem.ListPrice holds the catalog price.
The default mapping is expected behavior, not a defect.