Skip to content

fix(customer): unify address hash generation between manager and storefront (#876) - #966

Open
Ibochkarev wants to merge 1 commit into
modx-pro:betafrom
Ibochkarev:fix/issue-876-address-hash
Open

Ibochkarev wants to merge 1 commit into
modx-pro:betafrom
Ibochkarev:fix/issue-876-address-hash

Conversation

@Ibochkarev

Copy link
Copy Markdown
Member

Описание

Унифицирована генерация hash адресов покупателя между менеджерским API и витриной.

  • CustomerAddressesController::generateAddressHash() теперь использует те же 4 поля (city, street, building, room), что и CustomerAddressManager::generateHash()
  • update() теперь объединяет данные текущей записи с входящими данными перед пересчётом hash, чтобы частичные обновления (например, только active) не затирали hash пустыми значениями
  • Исправлена дедупликация: адрес, созданный в админке, теперь корректно определяется при оформлении заказа на витрине

Тип изменений

  • Исправление бага (non-breaking change)

Связанные Issues

Closes #876

Как это было протестировано?

Локальный CI-гейт (без полной установки MODX/MySQL), PHP lint из .github/workflows/ci.yml:

cd core/components/minishop3
composer install
composer ci:php
  • Ручное тестирование
  • Автоматические тесты (composer ci:php / composer test, GitHub Actions CI)
  • Тестирование на разных версиях PHP/MODX

Конфигурация тестирования:

  • MiniShop3: latest beta branch
  • MODX: 3.x
  • PHP: 8.2+

Чеклист

  • Код соответствует стилю проекта
  • Добавлены/обновлены комментарии в сложных местах
  • Изменения не ломают существующую функциональность
  • Лексиконы добавлены на двух языках (ru/en) — не требуется
  • PHPStan проходит без новых ошибок
  • ESLint проходит без ошибок — не применимо
  • Обновлён CHANGELOG.md — не требуется для багфиксов

Дополнительные заметки

Существующие адреса с «неправильным» hash (рассчитанным по 7 полям) не будут автоматически пересчитаны. Для коррекции потребуется вручную обновить адрес через менеджерский API (хотя бы частичное обновление, например смена active).

…efront (modx-pro#876)

- Manager controller now uses same 4 fields (city, street, building, room)
  as CustomerAddressManager::generateHash() for hash calculation
- update() merges existing address data with incoming data before hash
  recalculation to prevent hash corruption on partial updates
- Fixes duplicate address creation when manager and storefront use
  different hash algorithms
@Ibochkarev
Ibochkarev requested a review from biz87 October 31, 2026 04:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] Админка считает hash адреса покупателя по другим полям, чем витрина

1 participant