Restricting Tax Liability on Customers, Quotes, and Orders - BPM & Field Security Troubles

Our A/R department is getting a lot of work created fixing sales tax when sales folks enter a non-taxable liability and it ships out, before the tax exemption cert is entered, so I’ve been asked to restrict the Tax Liability field to A/R and Sales Managers.

First, I thought Field Security would be the way, but BPM’s let us get an exception pop-up to notify the user that they are blocked.

I created In-Trans Data Directives on Customer, QuoteHed, QuoteDtl, OrderHed, OrderRel, and ShipTo tables. Then added a condition to ignore it on when a customer or shipto is changed…


Then I found a loophole where someone can set the Tax Liability before saving the record, and the the ‘TaxRegionCode has been changed from any to another’ doesn’t fire, bypassing the BPM.

Why doesn’t the ‘any to another’ catch the null on the new record changing to ‘NTS’?

So… then I added Field Security to all 6 tables changing the default to ReadOnly, and giving Full to the AR and Sales Managers.

This closed that loophole, but now when a normal user changes a customer or shipto on the quote/order, the tax liability doesn’t change. It’s stuck on the old one. Argh!

Ideas or best practices on what I could do differently?

I had similar issues trying to put security on Tax Liability. What I ended up doing is adding a UD checkbox on QuoteHed/OrderHed called “OverrideTaxLiability_c”. A BPM secures toggling of the checkbox, only allowing it if a user belongs to a particular group.

Then, a Row Rule in Quote/Order customization makes the Tax Liability dropdown read only, unless the OverrideTaxLiability checkbox is true.

You can modify the BPM to check Tax Liability against Customer/Ship-to Tax Liability to plug the loophole. I do that for Credit Terms change.

@Arul - Thanks. How did you plug the loophole this way? Are you using Method Directives or Data Directives?

@Tom - Thank you. If I can avoid a new UD field, it’d be nice (we only add them during weekend maintenance off-hours).

I used Method Directive.

Arul, can you share the condition(s)?

Sorry, I have added in Data-Directive only. Condition is: There is at least one Added Record in ttOrderHed and then compare ttOrderHed.TaxRegionCode with Customer.TaxRegionCode. If both are different, then you can display the error message.