Start here. This is the direct spoken answer to practice first.
Why this question matters
The open-closed principle is about making common extensions local and safe. It does not mean existing code can never be edited or that every conditional needs an interface.
I would look for one stable axis of behavior that changes independently. If several pricing policies implement the same decision with different rules, a strategy interface can make each policy explicit and let a selector choose one. I would not combine country, customer type, and promotion into arbitrary classes if those dimensions interact; first I would model the actual business rule and its precedence.