Skip to content

Developer notes

  • Shipping services: Tygh\Shippings\Services\KvEpp<Carrier> (modules kv_epp_packeta, kv_epp_mondial_relay, kv_epp_inpost, kv_epp_dhl, kv_epp_gls, kv_epp_omniva). On 4.21+ they extend Shipping\PickupService (core IPickupPointsService); on 4.17-4.20 Shipping\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 to carrier, 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.

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).

  • 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 only select_pickup_point is resolved by a carrier lookup when the order is placed.
  • fn_get_order_info() adds kv_epp_points and shipping[i].kv_epp_point.
  • Storefront (AJAX): kv_eu_pickup_points.search (shipping_id, q or zip/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.

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.