Vue.component('warehouse-e-shop', {
//language=Vue
template: `
{{ row.calculatedSellPrice.toFixed(2) }} €
{{ getArticlePrice(row).toFixed(2) }} €
`, data() {
return {
window: window, itemAmounts: {}, shoppingCart: [], createOrderDialog: false, createOrderDialogData: {
deliveryMode: 'singleAddress',
extRef: '',
deliveryAddressName: '',
deliveryAddressMail: '',
deliveryAddressPhone: '',
deliveryAddressLine: '',
deliveryAddressPLZ: '',
deliveryAddressCity: '',
},
userAddressId: window['TT_CONFIG']['userAddressId'] || null, // Get user's address ID from PHP
}
},
methods: {
getArticlePrice(row) {
const cheapestSellPrice = JSON.parse(row.cheapestSellPrice);
let priceTitle = '';
if (this.userAddressId === 209) {
priceTitle = 'Energie Steiermark';
} else if (this.userAddressId === 9633) {
priceTitle = 'SBIDI';
} else {
// Default or error handling if addressId is not recognized
return 0;
}
const foundPrice = Array.isArray(cheapestSellPrice)
? cheapestSellPrice.find(price => price.title === priceTitle)
: Object.values(cheapestSellPrice).find(price => price.title === priceTitle);
return foundPrice ? foundPrice.price : 0;
},
async openOrderDialog() {
this.createOrderDialog = true;
},
async submitOrder() {
const response = await axios.post(`${window['TT_CONFIG']['BASE_PATH']}/WarehouseEShopOrder/createOrder`, {
shoppingCart: this.shoppingCart,
deliveryMode: this.createOrderDialogData.deliveryMode,
extRef: this.createOrderDialogData.extRef?.trim(),
deliveryAddressName: this.createOrderDialogData.deliveryAddressName?.trim(),
deliveryAddressMail: this.createOrderDialogData.deliveryAddressMail?.trim(),
deliveryAddressPhone: this.createOrderDialogData.deliveryAddressPhone?.trim(),
deliveryAddressAdditional: this.createOrderDialogData.deliveryAddressAdditional?.trim(),
deliveryAddressLine: this.createOrderDialogData.deliveryAddressLine?.trim(),
deliveryAddressPLZ: this.createOrderDialogData.deliveryAddressPLZ?.trim(),
deliveryAddressCity: this.createOrderDialogData.deliveryAddressCity?.trim(),
});
if (response.data.success) {
this.window.notify('success', response.data.message || 'Erfolgreich gespeichert');
this.shoppingCart = [];
this.itemAmounts = {}; // Clear item amounts after successful order
this.createOrderDialogData = {
deliveryMode: 'singleAddress',
extRef: '',
deliveryAddressName: '',
deliveryAddressMail: '',
deliveryAddressPhone: '',
deliveryAddressAdditional: '',
deliveryAddressLine: '',
deliveryAddressPLZ: '',
deliveryAddressCity: '',
}
this.createOrderDialog = false;
} else {
this.window.notify('error',
response.data.errors ? Object.values(response.data.errors).join('
') : response.data.message ||
'Ein Fehler ist aufgetreten');
}
},
addToCart(row, type) {
row = JSON.parse(JSON.stringify(row));
row.id = `${type}-${row.id}`;
if (!this.itemAmounts[row.id] || this.itemAmounts[row.id] === 0) {
window.notify('error', 'Bitte geben Sie eine Menge ein.');
return;
}
console.log(this.shoppingCart, row)
// Check if Article is already in the shopping cart
if (this.shoppingCart.some(item => item.itemId === row.id)) {
window.notify('warning', `${row.title} ist bereits im Warenkorb.`);
return;
}
this.shoppingCart.push({itemId: row.id, title: row.title, amount: this.itemAmounts[row.id]});
window.notify('success', `${this.itemAmounts[row.id]}x ${row.title} wurde dem Warenkorb hinzugefügt.`);
}
},
})