Skip to content

Commit 1bd6deb

Browse files
committed
PES-3078: add pickup point place, street, city, zip
1 parent 02490a7 commit 1bd6deb

File tree

11 files changed

+183
-32
lines changed

11 files changed

+183
-32
lines changed

packetery/CHANGE_LOG.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11

22
v3.4
3+
- Updated: Packeta pick-up point selected using widget, save and display proper information about place, street, city, zip
4+
- Updated: Display proper information in Packeta Orders list and order detail
35
- Added: Information about the selected pickup point to emails for e-shop owner.
46
- Updated: Loading the widget javascript library only on the checkout page.
57
- Updated: Multiple issues form PrestaShop validator resolved.

packetery/controllers/admin/PacketeryOrderGridController.php

100644100755
Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,22 @@ public function __construct()
5151
// there has to be `id` for 'editable' to work; a.* is prepended
5252
$this->_select = '
5353
`a`.`id_order` AS `id`,
54-
`po`.`is_cod`, `po`.`name_branch`, `po`.`is_ad`, `po`.`zip`, `po`.`exported`,
54+
`po`.`is_cod`,
55+
IF (
56+
`po`.`point_place` IS NULL,
57+
`po`.`name_branch`,
58+
CASE
59+
WHEN `po`.`is_carrier` = 0 AND `po`.`is_ad` = 0
60+
THEN CONCAT(
61+
`po`.`point_place`,
62+
\' (\', `po`.`id_branch`, \')\'
63+
)
64+
ELSE `po`.`point_place`
65+
END
66+
) AS `name_branch`,
67+
`po`.`is_ad`,
68+
`po`.`zip`,
69+
`po`.`exported`,
5570
IF(`po`.`tracking_number` IS NOT NULL, `po`.`tracking_number`, \'\') AS `tracking_number`,
5671
CONCAT(LEFT(c.`firstname`, 1), \'. \', c.`lastname`) AS `customer`,
5772
IF(`a`.`valid`, 1, 0) AS `badge_success`,

packetery/libs/Order/OrderDetailsUpdater.php

100644100755
Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -246,11 +246,18 @@ public function processPickupPointChange(array &$fieldsToUpdate)
246246
return;
247247
}
248248

249-
$fieldsToUpdate = array_merge($fieldsToUpdate, [
250-
'id_branch' => (int) $pickupPoint->id,
251-
'name_branch' => $pickupPoint->name,
252-
'currency_branch' => $pickupPoint->currency,
253-
]);
249+
$fieldsToUpdate = array_merge(
250+
$fieldsToUpdate,
251+
[
252+
'id_branch' => (int) $pickupPoint->id,
253+
'name_branch' => $pickupPoint->name,
254+
'currency_branch' => $pickupPoint->currency,
255+
'point_place' => $pickupPoint->place,
256+
'point_street' => $pickupPoint->street,
257+
'point_city' => $pickupPoint->city,
258+
'point_zip' => $pickupPoint->zip,
259+
]
260+
);
254261

255262
if ($pickupPoint->pickupPointType === 'external') {
256263
$fieldsToUpdate['is_carrier'] = 1;

packetery/libs/Order/OrderRepository.php

100644100755
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,10 @@ public function getOrderWithCountry($orderId)
263263
`po`.`price_total`,
264264
`po`.`price_cod`,
265265
`po`.`age_verification_required`,
266+
`po`.`point_place`,
267+
`po`.`point_street`,
268+
`po`.`point_city`,
269+
`po`.`point_zip`,
266270
`c`.`iso_code` AS `ps_country`
267271
FROM `' . _DB_PREFIX_ . 'packetery_order` `po`
268272
JOIN `' . _DB_PREFIX_ . 'orders` `o` ON `o`.`id_order` = `po`.`id_order`

packetery/libs/Order/OrderSaver.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,10 @@ private function savePickupPointInCart()
158158
$pickupPointType = (\Tools::getIsset('pickup_point_type') ? \Tools::getValue('pickup_point_type') : 'internal');
159159
$widgetCarrierId = (\Tools::getIsset('widget_carrier_id') ? \Tools::getValue('widget_carrier_id') : null);
160160
$carrierPickupPointId = (\Tools::getIsset('carrier_pickup_point_id') ? \Tools::getValue('carrier_pickup_point_id') : null);
161+
$pointPlace = (\Tools::getIsset('point_place') ? \Tools::getValue('point_place') : null);
162+
$pointStreet = (\Tools::getIsset('point_street') ? \Tools::getValue('point_street') : null);
163+
$pointCity = (\Tools::getIsset('point_city') ? \Tools::getValue('point_city') : null);
164+
$pointZip = (\Tools::getIsset('point_zip') ? \Tools::getValue('point_zip') : null);
161165

162166
$packeteryCarrier = $this->carrierRepository->getPacketeryCarrierById((int) $prestashopCarrierId);
163167
$isCod = $packeteryCarrier['is_cod'];
@@ -183,7 +187,12 @@ private function savePickupPointInCart()
183187
'house_number' => null,
184188
'latitude' => null,
185189
'longitude' => null,
190+
'point_place' => $pointPlace !== null ? $this->orderRepository->db->escape($pointPlace) : null,
191+
'point_street' => $pointStreet !== null ? $this->orderRepository->db->escape($pointStreet) : null,
192+
'point_city' => $pointCity !== null ? $this->orderRepository->db->escape($pointCity) : null,
193+
'point_zip' => $pointZip !== null ? $this->orderRepository->db->escape($pointZip) : null,
186194
];
195+
187196
if ($pickupPointType === 'external') {
188197
$packeteryOrderFields['is_carrier'] = 1;
189198
$packeteryOrderFields['id_branch'] = (int) $widgetCarrierId;

packetery/packetery.php

100755100644
Lines changed: 38 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -746,22 +746,35 @@ public function hookDisplayCarrierExtraContent(array $params)
746746
$pickupPointType = 'internal';
747747
$carrierId = '';
748748
$carrierPickupPointId = '';
749+
$pointPlace = '';
750+
$pointStreet = '';
751+
$pointZip = '';
752+
$pointCity = '';
749753
if ($orderData) {
750754
$name_branch = $orderData['name_branch'];
751755
$currency_branch = $orderData['currency_branch'];
752756
$carrierPickupPointId = $orderData['carrier_pickup_point'];
757+
753758
if ((bool) $orderData['is_carrier'] === true) {
754759
$id_branch = $orderData['carrier_pickup_point']; // to be consistent with widget behavior
755760
$pickupPointType = 'external';
756761
$carrierId = $orderData['id_branch'];
757762
} else {
758763
$id_branch = $orderData['id_branch'];
764+
$pointPlace = ($orderData['point_place'] ?? '');
765+
$pointStreet = ($orderData['point_street'] ?? '');
766+
$pointZip = ($orderData['point_zip'] ?? '');
767+
$pointCity = ($orderData['point_city'] ?? '');
759768
}
760769
}
761770
$this->context->smarty->assign('id_branch', $id_branch);
762771
$this->context->smarty->assign('name_branch', $name_branch);
763772
$this->context->smarty->assign('currency_branch', $currency_branch);
764773
$this->context->smarty->assign('pickup_point_type', $pickupPointType);
774+
$this->context->smarty->assign('point_place', $pointPlace);
775+
$this->context->smarty->assign('point_street', $pointStreet);
776+
$this->context->smarty->assign('point_zip', $pointZip);
777+
$this->context->smarty->assign('point_city', $pointCity);
765778
$this->context->smarty->assign('packeta_carrier_id', $carrierId);
766779
$this->context->smarty->assign('carrier_pickup_point_id', $carrierPickupPointId);
767780
$this->context->smarty->assign('baseuri', Packetery\Module\Helper::getBaseUri());
@@ -958,9 +971,32 @@ public function packeteryHookDisplayAdminOrder($params)
958971

959972
$isAddressDelivery = (bool) $packeteryOrder['is_ad'];
960973
$this->context->smarty->assign('isAddressDelivery', $isAddressDelivery);
961-
$this->context->smarty->assign('pickupPointOrAddressDeliveryName', $packeteryOrder['name_branch']);
962-
$isExported = (bool) $packeteryOrder['exported'];
963974

975+
$isCarrier = (bool) $packeteryOrder['is_carrier'];
976+
977+
/** @var Packetery\Carrier\CarrierRepository $carrierRepository */
978+
$carrierRepository = $this->diContainer->get(Packetery\Carrier\CarrierRepository::class);
979+
$packeteryCarrier = $carrierRepository->getPacketeryCarrierById((int) $packeteryOrder['id_carrier']);
980+
if ((bool) $packeteryCarrier === false) {
981+
$oldCarrier = new Carrier($packeteryOrder['id_carrier']);
982+
$newCarrier = Carrier::getCarrierByReference($oldCarrier->id_reference);
983+
$packeteryCarrier = $carrierRepository->getPacketeryCarrierById($newCarrier->id);
984+
}
985+
986+
$pickupPointOrAddressDeliveryName = $packeteryCarrier['name_branch'] ?? $packeteryOrder['name_branch'];
987+
if ($isCarrier === true && $isAddressDelivery === false) {
988+
$pickupPointOrAddressDeliveryName = $packeteryCarrier['name_branch'] . '<br>' . $packeteryOrder['name_branch'];
989+
}
990+
if ($isCarrier === false && $isAddressDelivery === false) {
991+
$pickupPointOrAddressDeliveryName = $packeteryOrder['point_place'] ?? $packeteryOrder['name_branch'];
992+
$pickupPointOrAddressDeliveryName .= $packeteryOrder['point_street'] ? $packeteryOrder['point_street'] . ', ' : ' ';
993+
$pickupPointOrAddressDeliveryName .= $packeteryOrder['point_city'] ?? ' ';
994+
$pickupPointOrAddressDeliveryName .= $packeteryOrder['point_zip'] ?? '';
995+
}
996+
997+
$this->context->smarty->assign('pickupPointOrAddressDeliveryName', $pickupPointOrAddressDeliveryName);
998+
999+
$isExported = (bool) $packeteryOrder['exported'];
9641000
if ($isExported === false) {
9651001
$orderDetails = [
9661002
'length' => Tools::getValue('length') ?: $packeteryOrder['length'],
@@ -972,15 +1008,6 @@ public function packeteryHookDisplayAdminOrder($params)
9721008

9731009
$this->context->smarty->assign('isExported', $isExported);
9741010

975-
/** @var Packetery\Carrier\CarrierRepository $carrierRepository */
976-
$carrierRepository = $this->diContainer->get(Packetery\Carrier\CarrierRepository::class);
977-
$packeteryCarrier = $carrierRepository->getPacketeryCarrierById((int) $packeteryOrder['id_carrier']);
978-
if ((bool) $packeteryCarrier === false) {
979-
$oldCarrier = new Carrier($packeteryOrder['id_carrier']);
980-
$newCarrier = Carrier::getCarrierByReference($oldCarrier->id_reference);
981-
$packeteryCarrier = $carrierRepository->getPacketeryCarrierById($newCarrier->id);
982-
}
983-
9841011
/** @var Packetery\Tools\ConfigHelper $configHelper */
9851012
$configHelper = $this->diContainer->get(Packetery\Tools\ConfigHelper::class);
9861013
$apiKey = $configHelper->getApiKey();

packetery/upgrade/upgrade-3.4.0.php

100644100755
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,14 @@ function upgrade_module_3_4_0(Packetery $module): bool
4242
if (!$updateResult) {
4343
return false;
4444
}
45+
46+
Db::getInstance()->execute(
47+
'ALTER TABLE `' . _DB_PREFIX_ . 'packetery_order`
48+
ADD `point_place` varchar(70) NULL,
49+
ADD `point_street` varchar(120) NULL AFTER `point_place`,
50+
ADD `point_zip` varchar(10) NULL AFTER `point_street`,
51+
ADD `point_city` varchar(70) NULL AFTER `point_zip`'
52+
);
4553
}
4654

4755
return true;

packetery/views/js/back.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,12 @@ $(document).ready(function () {
7171
Packeta.Widget.pick(widgetOptionsData['apiKey'], function (pickupPoint) {
7272
if (pickupPoint !== null) {
7373
$('.packetery form input[name="pickup_point"]').val(JSON.stringify(pickupPoint));
74-
$('.picked-delivery-place').text(pickupPoint.name);
74+
$('.picked-delivery-place').html(
75+
pickupPoint.place + '<br>'
76+
+ pickupPoint.street + ', '
77+
+ pickupPoint.city + ' '
78+
+ pickupPoint.zip
79+
);
7580
}
7681
}, widgetOptions);
7782
});

packetery/views/js/front.js

Lines changed: 63 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,11 @@ PacketaModule.runner = {
110110
var pickupPointType = $widgetParent.find(".packeta-pickup-point-type").val();
111111
var widgetCarrierId = $widgetParent.find(".packeta-carrier-id").val();
112112
var carrierPickupPointId = $widgetParent.find(".packeta-carrier-pickup-point-id").val();
113+
var pickupPlace = $widgetParent.find(".packeta-place").val();
114+
var pickupStreet = $widgetParent.find(".packeta-street").val();
115+
var pickupCity = $widgetParent.find(".packeta-city").val();
116+
var pickupZip = $widgetParent.find(".packeta-zip").val();
117+
113118
if (branchId) {
114119
PacketaModule.ajax.savePickupPointInCart(
115120
prestashopCarrierId,
@@ -119,6 +124,10 @@ PacketaModule.runner = {
119124
widgetCarrierId,
120125
carrierPickupPointId,
121126
branchCurrency,
127+
pickupPlace,
128+
pickupStreet,
129+
pickupCity,
130+
pickupZip,
122131
PacketaModule.ui.toggleSubmit
123132
);
124133
} else {
@@ -312,16 +321,33 @@ PacketaModule.ui = {
312321
if (pickupPoint == null) {
313322
return;
314323
}
315-
316324
$widgetParent.find('.packeta-branch-id').val(pickupPoint.id);
317325
$widgetParent.find('.packeta-branch-name').val(pickupPoint.name);
318326
$widgetParent.find('.packeta-branch-currency').val(pickupPoint.currency);
319327
$widgetParent.find('.packeta-pickup-point-type').val(pickupPoint.pickupPointType);
320328
$widgetParent.find('.packeta-carrier-id').val(pickupPoint.carrierId);
321329
$widgetParent.find('.packeta-carrier-pickup-point-id').val(pickupPoint.carrierPickupPointId);
330+
$widgetParent.find('.packeta-place').val(pickupPoint.place);
331+
$widgetParent.find('.packeta-street').val(pickupPoint.street);
332+
$widgetParent.find('.packeta-city').val(pickupPoint.city);
333+
$widgetParent.find('.packeta-zip').val(pickupPoint.zip);
322334

323335
// let the customer know which branch he picked
324-
$widgetParent.find('.picked-delivery-place').html(pickupPoint.name);
336+
$widgetParent.find('.picked-delivery-place').html(
337+
pickupPoint.place
338+
+ '<br>'
339+
+ pickupPoint.street
340+
+ ', '
341+
+ pickupPoint.city
342+
+ ' '
343+
+ pickupPoint.zip
344+
);
345+
346+
if (pickupPoint.pickupPointType === 'external') {
347+
$widgetParent.find('.picked-delivery-place').html(
348+
pickupPoint.name
349+
);
350+
}
325351

326352
var prestashopCarrierId = packeteryModulesManager.getCarrierId($selectedInput);
327353

@@ -334,6 +360,10 @@ PacketaModule.ui = {
334360
pickupPoint.carrierId,
335361
pickupPoint.carrierPickupPointId,
336362
pickupPoint.currency,
363+
pickupPoint.place,
364+
pickupPoint.street,
365+
pickupPoint.city,
366+
pickupPoint.zip,
337367
function (jsonResponse) {
338368
if (jsonResponse.result === true) {
339369
PacketaModule.ui.toggleSubmit();
@@ -498,16 +528,37 @@ PacketaModule.ajax = {
498528
});
499529
},
500530

501-
savePickupPointInCart: function (prestashopCarrierId, branchId, branchName, pickupPointType, widgetCarrierId, carrierPickupPointId, branchCurrency, onSuccess) {
502-
return PacketaModule.ajax.post('savePickupPointInCart', {
503-
'prestashop_carrier_id': prestashopCarrierId,
504-
'id_branch': branchId,
505-
'name_branch': branchName,
506-
'currency_branch': branchCurrency,
507-
'pickup_point_type': pickupPointType,
508-
'widget_carrier_id': widgetCarrierId,
509-
'carrier_pickup_point_id': carrierPickupPointId
510-
}, onSuccess);
531+
savePickupPointInCart: function (
532+
prestashopCarrierId,
533+
branchId,
534+
branchName,
535+
pickupPointType,
536+
widgetCarrierId,
537+
carrierPickupPointId,
538+
branchCurrency,
539+
pointPlace,
540+
pointStreet,
541+
pointCity,
542+
pointZip,
543+
onSuccess
544+
) {
545+
return PacketaModule.ajax.post(
546+
'savePickupPointInCart',
547+
{
548+
'prestashop_carrier_id': prestashopCarrierId,
549+
'id_branch': branchId,
550+
'name_branch': branchName,
551+
'currency_branch': branchCurrency,
552+
'pickup_point_type': pickupPointType,
553+
'widget_carrier_id': widgetCarrierId,
554+
'carrier_pickup_point_id': carrierPickupPointId,
555+
'point_place': pointPlace,
556+
'point_street': pointStreet,
557+
'point_city': pointCity,
558+
'point_zip': pointZip,
559+
},
560+
onSuccess
561+
);
511562
},
512563

513564
saveAddressInCart: function (address, onSuccess) {

packetery/views/templates/front/widget.tpl

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,21 @@
1313
<button class="btn btn-sm btn-success pull-left open-packeta-widget" id="open-packeta-widget">{l s='Select pick-up point:' mod='packetery'}</button>
1414
</div>
1515
<ul id="selected-branch">
16-
<li>{l s='Selected pick-up point:' mod='packetery'}
17-
<span id="picked-delivery-place" class="picked-delivery-place">{$name_branch}</span>
16+
<li>
17+
{l s='Selected pick-up point:' mod='packetery'}
18+
<br>
19+
<span id="picked-delivery-place" class="picked-delivery-place">
20+
{if $pickup_point_type === 'external'}
21+
{$name_branch}
22+
{else}
23+
{$point_place}<br>
24+
{if $point_street}
25+
{$point_street},
26+
{/if}
27+
{$point_city}
28+
{$point_zip}
29+
{/if}
30+
</span>
1831
</li>
1932
</ul>
2033
<input type="hidden" id="packeta-branch-id" class="packeta-branch-id" name="packeta-branch-id"
@@ -29,6 +42,14 @@
2942
value="{$packeta_carrier_id}">
3043
<input type="hidden" id="packeta-carrier-pickup-point-id" class="packeta-carrier-pickup-point-id" name="packeta-carrier-pickup-point-id"
3144
value="{$carrier_pickup_point_id}">
45+
<input type="hidden" id="packeta-point-place" class="packeta-point-place" name="packeta-point-place"
46+
value="{$point_place}">
47+
<input type="hidden" id="packeta-point-street" class="packeta-point-street" name="packeta-point-street"
48+
value="{$point_street}">
49+
<input type="hidden" id="packeta-point-city" class="packeta-point-city" name="packeta-point-city"
50+
value="{$point_city}">
51+
<input type="hidden" id="packeta-point-zip" class="packeta-point-zip" name="packeta-point-zip"
52+
value="{$point_zip}">
3253
</div>
3354
</div>
3455
</div>

0 commit comments

Comments
 (0)