В вашем распоряжении 3 элемента;
Массив с продуктами в корзине (с указанием их количества, цены, "product_category" и "product_parent_category")
Таблицас категориями и соответствующими весовыми коэффициентами (в том же сценарии, что и на шаге 3)
Функция javascript, которая выводит общую сумму количества продукта цена весовой коэффициент для каждого продукта.
-> цена и количество просты, но для весового коэффициента у нас есть иерархия:
- Всегда сначала пытайтесь найти соответствие по категории товаров
- Если product_category не производит число: попробуйте сопоставить с product_parent_category
- Если ни у одной категории нет совпадения - используйте значение 0,44 (среднее)
Ниже я даю транзакцию Productscts иjavascript, который я придумал до сих пор;
'transactionProducts': [{
'sku': 'DD44',
'name': 'T-Shirt',
'product_category': 'Apparel1',
'price': 10,
'quantity': 2
},{
'sku': 'AA1243544',
'name': 'Socks',
'product_category': 'Apparel2',
'product_parent_category': 'Apparel2',
'price': 11,
'quantity': 3
},{
'sku': 'AA1243544',
'name': 'Socks',
'product_category': 'Apparel3',
'product_parent_category': 'Apparel3',
'price': 12,
'quantity': 4
},{
'sku': 'AA1243544',
'name': 'Socks',
'product_category': 'TESTTESTwrongcategory',
'product_parent_category': 'Apparel4',
'price': 2,
'quantity': 1
}];
</script>
Это то, что я получил до сих пор.все работает нормально, за исключением операторов if
function(){
var lookupTable = {
'Apparel1': function() {
return 0.5;
},
'Apparel2': function() {
return 0.4;
},
'Apparel3': function() {
return 0.25;
},
'Apparel4': function() {
return 2;
}};
var sum = 0;
for (var i = 0; i < {{VAR - transactionProducts}}.length; i++){
var weging = {{VAR - transactionProducts}}[i]['product_category'];
if (typeof weging !== 'string') {
weging = {{VAR - transactionProducts}}[i]['product_category'];
} else if(typeof weging === 'string') {
weging = {{VAR - transactionProducts}}[i]['product_parent_category'];
} else {
weging = 0.44
};
sum += {{VAR - transactionProducts}}[i]['quantity']*{{VAR - transactionProducts}}[i]['price']*
lookupTable[weging]()
};
return sum;
}
, если я пропущу оператор, у меня есть рабочий скрипт, но только для раздела 'product_category', но есть вероятность, что это значение может быть пустым,поэтому мы должны использовать приведенный ниже набор правил:
всегда сначала пытаться найти соответствие по "product_category"
, если product_category не производит число:попробуйте сопоставить в product_parent_category
- , если ни одна из категорий не соответствует - используйте значение 0,44 (среднее)
РЕШЕНИЕ
The script loops a total of 4 times:
product1: 2*10*0.5=weigfactor for Apparel1 on "product_category" level
product2: 3*11*0.4=weigfactor for Apparel2 on "product_category" level
product3: 4*12*0.25=weigfactor for Apparel3 on "product_category" level
product4: 1*2*2=weigfactor for Apparel4 on "product_parent_category" level
The sum of these all=39.2. I still get 'undefined' as solution
Если кто-то может указатьмне в правильном направлении, чтобы решить это, это было бы здорово!