Editable discount or rate from default Pricing Rule on Sales Order, and keeping the original and new rate for Sales Margin Performance report

I’m reviewing the behaviour of Pricing Rules on Sales Order for a Distribution company.
The salesperson is given a max discount limit (say 30%) and standard discount (as in pricelist, say 20%) that can be followed or not depends on how he/she negotiates with the customer.

When creating Sales Order Item, depends on the order volume, customer, territory, and negotiation with the customer, salesperson can apply the same pricelist discount (20%), or lower (15%), or higher (25%), as long as it doesn’t go beyond the item’s Max Discount (30%). For this case, first, salesperson should be able to edit the default/calculated rate or discount percentage. Probably a customization?

I would avoid Ignore Pricing Rule option because checking on the data, it looses the link to the original pricelist to have the standard discount or calculated rate. (tabSales Order Item.pricing_rules).

Second, I should be able to keep the original item rate, pricelist item rate, and sales order item rate. The reason because I want to produce Sales Margin Performance report, comparing the base rate/amount, standard price list rate/amount, and the actual sales order rate/amount. Probably a customization?

Salesperson’s performance is good if he/she can provide lower discount percentage than the standard pricelist (20% - 15% = 5%). This “discount profit” later then to be extracted and saved in a special account (for further marketing activities). A positive journal entry. On contrary, if the discount rate is higher than the standard pricelist discount due to circumstances, this will trigger a higher approval of Sales Order. A negative journal entry. Let’s keep this customization aside for a while.

Now before going for customization, I’m reviewing BASE_* columns in tabSales Order Item. What is the actual purpose of these columns? Because when I tested for some standard cases (following or ignoring the pricing rule), the values are mostly the same as the counterparts (e.g. base_pricelist_rate vs pricelist_rate, base_rate vs rate, base_amount vs amount). If not used anywhere (report, subsequence flow), I thought I could use these columns for the requirement above rather than creating new custom columns?

Any opinion or suggestion?

anyone?

anyone?