В вашей формуле если вес меньше 5, то всегда будет 'cost'*1.2 , если вес больше или равен 5 то всегда будет 'cost'. Используйте сравнение '<' (меньше) или начинайте сначала с больших весов (1000, 500, 200 и тд)
Обнаружен возможно баг. У свойств товара, в случае когда поля не имеют значений (поля для ввода значений), выглядит это так.
У вас почему то неверно в базе данных создались поля $p_diameter_naruzh и $p_dlina. Удалите их в управлении полями товара и создайте снова. Желательно немного с другими именами.