
Время доставки в интернет-магазине wix
Позвольте клиентам выбрать время доставки в процессе оформления заказа.

Описание
В этом примере мы даем покупателям магазина возможность выбирать предпочтительный временной интервал доставки. Когда покупатель переходит на страницу корзины, он может выбрать дату доставки и предварительно определенный интервал времени доставки. Выходные дни, указанные даты, например праздники, и временные интервалы, в которые достигается максимальное количество доставок, блокируются.
Пример кода
cart.jsw
import wixStores from 'wix-stores-backend';
export function getCurrentCart() {
return wixStores.getCurrentCart();
}
Страница Корзина
import wixWindow from 'wix-window';
import wixData from 'wix-data';
import { getCurrentCart } from 'backend/cart.jsw'
$w.onReady(function () {
$w('#updateTimeButton').hide();
getCurrentCart()
.then((response) => {
const cartId = response._id;
if (response.lineItems.length > 0) {
$w('#updateTimeButton').show();
findDelivery(cartId).then(() => {
displayLightbox(cartId);
});
}
$w('#updateTimeButton').onClick((event) => {
updateDeliveryTime(cartId);
});
});
});
async function findDelivery(cartId) {
wixData.query('deliveries')
.eq('cartId', cartId)
.find()
.then((results) => {
if (results.items.length > 0) {
displayDeliveryTime(results.items[0]);
} else {
$w('#deliveryDate').text = 'Delivery day';
$w('#deliveryTime').text = 'Delivery time';
}
})
.catch((err) => {
console.error(err);
});
}
function updateDeliveryTime(cartId) {
displayLightbox(cartId);
}
function displayDeliveryTime(data) {
$w('#deliveryDate').text = data.deliveryDate.toDateString();
$w('#deliveryTime').text = data.deliveryTime;
}
function displayLightbox(cartId) {
wixWindow.openLightbox('delivery details', {
cartId: cartId
})
.then((result) => {
displayDeliveryTime(result);
});
}
events.js
import wixData from 'wix-data';
const CONSTANTS = {
PICKUP_TITLE: 'Pickup from store',
PICKUP_TIME: '00:00'
}
function setOrderNumber(cartId, orderNumber) {
wixData.query('deliveries')
.eq('cartId', cartId)
.find()
.then((results) => {
if (results.items.length > 0) {
const item = results.items[0];
deliveryUpdate(cartId, orderNumber, item);
setDeliverySlot(item.date, item.deliveryTime);
} else {
console.log('Cart ID ' + cartId + ' not found');
}
})
.catch((err) => {
console.error('deliveryUpdate error', err);
});
}
function deliveryUpdate(cartId, orderNumber, itemToUpdate) {
wixData.get('deliveries', itemToUpdate._id)
.then((item) => {
item.orderNumber = orderNumber + '';
wixData.update('deliveries', item);
})
.catch((err) => {
console.error('deliveryUpdate error', err);