Взвешивание стоимости конверсии на основе категорий товаров - PullRequest
0 голосов
/ 17 июня 2019

В вашем распоряжении 3 элемента;

  1. Массив с продуктами в корзине (с указанием их количества, цены, "product_category" и "product_parent_category")

  2. Таблицас категориями и соответствующими весовыми коэффициентами (в том же сценарии, что и на шаге 3)

  3. Функция javascript, которая выводит общую сумму количества продукта цена весовой коэффициент для каждого продукта.

-> цена и количество просты, но для весового коэффициента у нас есть иерархия:

  1. Всегда сначала пытайтесь найти соответствие по категории товаров
  2. Если product_category не производит число: попробуйте сопоставить с product_parent_category
  3. Если ни у одной категории нет совпадения - используйте значение 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', но есть вероятность, что это значение может быть пустым,поэтому мы должны использовать приведенный ниже набор правил:

  1. всегда сначала пытаться найти соответствие по "product_category"

  2. , если product_category не производит число:попробуйте сопоставить в product_parent_category

  3. , если ни одна из категорий не соответствует - используйте значение 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

Если кто-то может указатьмне в правильном направлении, чтобы решить это, это было бы здорово!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...