Developer notes
Structure
Section titled “Structure”- Shipping services:
Tygh\Shippings\Services\KvEpp<Carrier>(moduleskv_epp_packeta,kv_epp_mondial_relay,kv_epp_inpost,kv_epp_dhl,kv_epp_gls,kv_epp_omniva). On 4.21+ they extendShipping\PickupService(coreIPickupPointsService); on 4.17-4.20Shipping\BaseService. The service returns cost 0 and hides the method for other countries, too heavy parcels or missing credentials; CS-Cart adds the method’s shipping charges. - Drivers:
Tygh\Addons\KvEuPickupPoints\Carriers\*normalize points tocarrier, id, name, type (locker|shop|post_office), street, zip, city, country, lat, lng, hours, note, distance. - Storage:
?:kv_epp_order_points(points on orders),?:kv_epp_points+?:kv_epp_feeds(Omniva locations),?:kv_epp_cache(InPost and Mondial Relay searches; the key includes the account). DHL is never stored.
Hooks used
Section titled “Hooks used”get_order_info, place_order, place_suborders, form_cart, delete_order, allow_place_order_post (Storefront API orders), template_document_order_context_init (documents). Template hooks: checkout:shipping_method (card), orders:totals_shipping (storefront order), orders:customer_shot_info (admin order).
Cart and order data
Section titled “Cart and order data”- The selection lives in
$cart['kv_epp'][<group_key>][<shipping_id>]; the 4.21 core key$cart['select_pickup_point'][<group_key>][<shipping_id>]holds the point ID. A Storefront API cart that sends onlyselect_pickup_pointis resolved by a carrier lookup when the order is placed. fn_get_order_info()addskv_epp_pointsandshipping[i].kv_epp_point.
Endpoints
Section titled “Endpoints”- Storefront (AJAX):
kv_eu_pickup_points.search(shipping_id,qorzip/city,lat/lng,country,type),kv_eu_pickup_points.select(POST). - Admin:
kv_eu_pickup_points.manage,.test,.search,.update_point,.refresh_feed,.flush_cache.
Testing without carrier accounts
Section titled “Testing without carrier accounts”Define KV_EPP_MOCK_BASE in local_conf.php (for example http://127.0.0.1:28993) to send every carrier call and widget script to a local test server, with the carrier code as the first path segment (/inpost/points, /omniva/locations.json, /dhl/find-by-address, /mondial_relay, /packeta/v6/www/js/library.js, /gls/widget/gls-dpm.js). Never set it on a live store.