Я все еще верю, что правила ценообразования - это путь.
Очевидно, что вы не можете установить условие для каждого состояния, так как это приведет к хаосу. Я бы предложил создать новую таблицу с двумя столбцами: State и Discount. Заполните таблицу данными, необходимыми для вашего проекта.
Установите новое правило ценообразования (Магазин -> Конфигурация -> Правила ценообразования на продукт -> Список -> Добавить). Пропустить часть условий. В части Actions извлеките данные о состоянии пользователя и сделайте их доступными в качестве переменной. Затем добавьте действие PHP, чтобы запросить у таблицы соответствующую скидку. Используйте третье действие, чтобы установить цену для полученной скидки или, если результаты не были возвращены, к исходному значению.
Хорошей практикой может быть объединение этой логики в модуле аккуратности со следующим:
- Пользовательский интерфейс для управления таблицей скидок.
- Действие правил для запроса таблицы для данного состояния.
- Условие для проверки наличия скидки для данного государства.
(Вы можете затем использовать пункт № 3 выше в условиях правила ценообразования, чтобы изменить цену, только если найдена скидка.)
Надеюсь, это поможет. Удачи!