This commit is contained in:
2026-03-31 22:07:39 +02:00
parent 6547bcff1e
commit aaaabef4eb
279 changed files with 34614 additions and 2 deletions

View File

@@ -4964,6 +4964,8 @@ class OnePageCheckoutPS extends OnePageCheckoutPSCore
}
}
$this->validateDpdPickupPointSelection();
return array(
'hasError' => !empty($this->errors),
'errors' => $this->errors,
@@ -5063,6 +5065,8 @@ class OnePageCheckoutPS extends OnePageCheckoutPSCore
}
}
$this->validateDpdPickupPointSelection();
return array(
'hasError' => !empty($this->errors),
'hasWarning' => !empty($this->warnings),
@@ -5075,6 +5079,68 @@ class OnePageCheckoutPS extends OnePageCheckoutPSCore
}
}
private function validateDpdPickupPointSelection()
{
if (!Validate::isLoadedObject($this->context->cart) || !(int) $this->context->cart->id) {
return true;
}
if ((int) $this->context->cart->id_carrier <= 0) {
return true;
}
$carrier = new Carrier((int) $this->context->cart->id_carrier);
if (!Validate::isLoadedObject($carrier)) {
return true;
}
$id_shop = (int) $this->context->cart->id_shop;
$id_shop_group = Shop::getContextShopGroupID(true);
if (!empty($id_shop)) {
$shop = new Shop($id_shop);
if (Validate::isLoadedObject($shop)) {
$id_shop_group = (int) $shop->id_shop_group;
}
} else {
$id_shop = Shop::getContextShopID(true);
}
$dpd_pickup_references = array(
(int) Configuration::get('DPDPOLAND_PUDO_ID', null, $id_shop_group, $id_shop),
(int) Configuration::get('DPDPOLAND_PUDO_COD_ID', null, $id_shop_group, $id_shop),
(int) Configuration::get('CARRIER_SWIPBOX_ID', null, $id_shop_group, $id_shop),
);
$is_dpd_pickup_carrier = false;
foreach ($dpd_pickup_references as $reference) {
if ($reference > 0 && (int) $carrier->id_reference === $reference) {
$is_dpd_pickup_carrier = true;
break;
}
}
if (!$is_dpd_pickup_carrier) {
return true;
}
$pudo_code = Db::getInstance()->getValue('
SELECT `pudo_code`
FROM `' . _DB_PREFIX_ . 'dpdpoland_pudo_cart`
WHERE `id_cart` = ' . (int) $this->context->cart->id
);
if (trim((string) $pudo_code) !== '') {
return true;
}
$error = $this->l('Wybierz punkt DPD Pickup przed złożeniem zamówienia.');
if (!in_array($error, $this->errors)) {
$this->errors[] = $error;
}
return false;
}
public function deleteEmptyAddressesOPC()
{
$query = 'DELETE FROM '._DB_PREFIX_.'address WHERE id_customer = '.(int)$this->config_vars['OPC_ID_CUSTOMER'];
@@ -5422,4 +5488,4 @@ class OnePageCheckoutPS extends OnePageCheckoutPSCore
$this->smarty->assign($params);
echo $this->smarty->fetch(_PS_MODULE_DIR_.$this->name.'/views/templates/front/'.$tpl);
}
}
}

View File

@@ -3491,6 +3491,32 @@ var Review = {
}
}
var $selectedDeliveryOption = AppOPC.$opc_step_two.find(
".delivery_option.selected"
)
var hasDpdPickupWidget =
$selectedDeliveryOption.find(
".dpdpoland-pudo-container, .dpdpoland-pudo-cod-container, .dpdpoland-swipbox-container"
).length > 0
if (hasDpdPickupWidget) {
var hasSelectedDpdPoint =
$selectedDeliveryOption.find(
".dpdpoland-pudo-selected-point:visible, .dpdpoland-pudo-cod-selected-point:visible, .dpdpoland-swipbox-selected-point:visible"
).length > 0
if (!hasSelectedDpdPoint) {
alert(OnePageCheckoutPS.Msg.need_select_pickup_point)
$selectedDeliveryOption
.find(
".dpdpoland-pudo-open-map-btn:visible, .dpdpoland-pudo-cod-open-map-btn:visible, .dpdpoland-swipbox-open-map-btn:visible, .dpdpoland-pudo-change-map-btn:visible, .dpdpoland-pudo-cod-change-map-btn:visible, .dpdpoland-swipbox-change-map-btn:visible"
)
.first()
.trigger("click")
return false
}
}
$("div#onepagecheckoutps #btn_place_order").attr("disabled", "true")
//return fields if the validation is ok