feat(OCM-99): пакет модуля для OpenCart 4.1.x - #39
Open
khalturinsky wants to merge 6 commits into
Open
Conversation
Новый пакет 4.x (архив apiship.ocmod.zip): установка через Расширения → Установщик, события вместо OCMOD-патчей ядра, карта ПВЗ в штатном чекауте OC4, вкладка ApiShip в карточке заказа, ярлыки и акты в списке заказов, поиск ПВЗ при редактировании заказа, cron-экспорт и импорт статусов. Заголовок Platform для OC4 — opencart_v4. Стенд dev/oc4: OpenCart 4.1.0.4 на PHP 8.3 в Docker, mock API ApiShip, скрипт установки модуля, юнит-тесты библиотеки (make lint / make test / make oc4-up). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CJBKXErtvktf1AARtDmQ3Z
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CJBKXErtvktf1AARtDmQ3Z
- import_orders: проверка результата fopen/flock вместо TypeError под PHP 8 - карта ПВЗ: ключ Яндекс API берётся из конфига экземпляра, глобальная функция — запасной вариант - чекаут: текст выбранного способа в fallback-ветке без html, x-tracing-id расчёта пишется в консоль (паритет с 3.x) - get_delivery_cost_original: задокументирован как публичный эндпоинт для внешних интеграций - тесты: переопределение веса места проверяется на числах, не совпадающих с расчётом; добавлены проверки габаритов и веса упаковки Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CJBKXErtvktf1AARtDmQ3Z
major: - наложенный платёж в чекауте OC4: код оплаты в сессии имеет вид cod.cod, а в настройках хранится cod — сравнение по коду расширения; после выбора оплаты вариант ApiShip пересчитывается событием checkout/payment_method.save (refresh_quote), текст в форме обновляется через get_selected - суммы для ApiShip конвертируются из базовой валюты магазина в валюту «рубль» из настроек: цены товаров, фиксированная страховка, итоги заказа при экспорте - вкладка ApiShip, кнопки ярлыков/актов и поиск ПВЗ в админке только для пользователей с правом modify на sale/order: cron-ключ не раскрывается операторам с правом чтения minor: - pickupTypes тарифа читается через tariff_pickup_types() с защитой от отсутствующего поля (5 дублей убраны) - пустой ответ lists/points и пустая карта — ошибка с текстом, а не пустая модалка - импорт статусов: сначала история заказа OpenCart, затем фиксация статуса ApiShip - карта: ожидание ymaps ограничено 15 с и прерывается при ошибке загрузки скрипта; фильтры типов и СД применяются вместе - остаток веса места отдаётся одной единице последней позиции (distribute_place_weight) - докблок apiship_calculator: индекс намеренно не используется (паритет 3.x) - общие помощники alert/файлов админки вынесены в apiship_order.js - README стенда: make lint / make test / install-module.sh (REINSTALL=1) - тесты: наложенный платёж, распределение веса, направление конвертации валют Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CJBKXErtvktf1AARtDmQ3Z
- пересчёт после выбора оплаты: если вариант ApiShip пересчитать не удалось (калькулятор недоступен, тариф исчез), способ доставки сбрасывается с ошибкой вместо оформления заказа по старой цене; в чекауте поле доставки очищается, модалка оплаты закрывается, блок подтверждения перерисовывается - адрес для пересчёта и карты берётся из сессии чекаута, если кеш последнего расчёта (10 минут) истёк - калькулятор: транспортная ошибка и не-JSON ответ больше не кешируются на 10 минут Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CJBKXErtvktf1AARtDmQ3Z
curl-помощники возвращают HTTP-код; расчёт кешируется только при коде < 400 и наличии разделов deliveryToPoint/deliveryToDoor в ответе. Ответ 401/429/5xx с JSON-телом без errors раньше залипал в сессии на 10 минут. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CJBKXErtvktf1AARtDmQ3Z
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Что сделано
Новый пакет
4.x/— модуль ApiShip для OpenCart 4.1.x с паритетом функций пакета 3.x (задача OCM-99):install.json, неймспейсы, автозагрузка черезoc_extension; архивapiship.ocmod.zipставится через Расширения → Установщик. Имя файла менять нельзя: код расширения OC4 берёт из имени архива.Platform: opencart_v4в запросах к API ApiShip.dev/oc4: OpenCart 4.1.0.4 на PHP 8.3 в Docker, MariaDB, mock-сервер API ApiShip, скрипт установки модуля через HTTP-эндпоинты админки, юнит-тесты библиотеки (make lint,make test,make oc4-up).make buildсобирает иapiship.ocmod.zip.Как проверено
make lint—php -lвсех файлов 4.x на PHP 8.3: чисто.make test— 46 юнит-тестов библиотеки (разбор кодов, адреса, расчёт мест, распределение веса, наложенный платёж, направление конвертации валют): 46/46.Принятые решения (без владельца)
apiship_orderиapiship_order_statusсохраняются.checkout/payment_method.save; код оплатыcod.codсопоставляется с кодом расширенияcodиз настроек.APISHIP_API_URLв config.php (совместимо сAPISHIP_TEST_MODиз 3.x).Открытые вопросы
🤖 Generated with Claude Code
https://claude.ai/code/session_01CJBKXErtvktf1AARtDmQ3Z