Я пытаюсь создать полностью настраиваемую страницу продукта, а затем добавить продукт в корзину. Однако я изо всех сил пытаюсь установить временную цену для этой тележки / сеанса для пользователя.
Я посмотрел на корзину и, похоже, не нашел там решения, я посмотрел на продукт и попытался установить новый продукт, а затем установить цену, однако, как только он добавлен в корзину, он возвращается в цена по умолчанию. Я читал о SpecificPrice, но нигде не могу найти его варианта использования и, похоже, не могу заставить его работать.
Единственное, о чем я могу думать сейчас, - это каждый раз создавать новый продукт для настраиваемых продуктов, а затем удалять его после того, как он был куплен или через X промежуток времени, однако мне просто не нравится идея этого, поскольку я думаю, что это не будет хорошо масштабироваться и может вызвать беспорядок в панели администратора.
Я был бы рад любой помощи, которую вы могли бы мне оказать, если бы вы могли указать мне правильное направление, это было бы здорово! Спасибо!
Редактировать:
Проведя еще несколько исследований, я обнаружил, что могу делать это по ценовым правилам и конкретной цене. Я использовал следующий код.
$product_id = 1;
$product = new Product($product_id);
$cart = $this->context->cart;
$cart->updateQty(1, $product_id, $product->getDefaultAttribute($product->id));
$specific_price_rule = new SpecificPriceRule();
$specific_price_rule->name = time();
$specific_price_rule->id_shop = (int)$context->shop->id;
$specific_price_rule->id_currency = 0;
$specific_price_rule->id_country = 0;
$specific_price_rule->id_group = 0;
$specific_price_rule->from_quantity = 1;
$specific_price_rule->price = 1;
$specific_price_rule->reduction = 0;
$specific_price_rule->reduction_tax = 0;
$specific_price_rule->reduction_type = 'amount';
$specific_price_rule->from = date("Y-m-d H:i:s");
$specific_price_rule->to = date("Y-m-d").' 23:59:59';
$specific_price_rule->add();
$specific_price = new SpecificPrice();
$specific_price->id_product = (int)$product_id; // choosen product id
$specific_price->id_product_attribute = $product->getDefaultAttribute($product->id);
$specific_price->id_cart = (int)$cart->id;
$specific_price->id_shop = (int)$context->shop->id;
$specific_price->id_currency = 0;
$specific_price->id_country = 0;
$specific_price->id_group = 0;
$specific_price->id_customer = 0;
$specific_price->from_quantity = 1;
$specific_price->price = 1;
$specific_price->reduction_type = 'amount';
$specific_price->reduction_tax = 1;
$specific_price->reduction = 0;
$specific_price->from = date("Y-m-d H:i:s");
$specific_price->to = date("Y-m-d").' 23:59:59'; // or set date x days from now
$specific_price->id_specific_price_rule = $specific_price_rule->id;
$specific_price->add();
Однако при этом в таблицу добавляется конкретная цена. Так что я, по сути, буду устанавливать новую цену для каждого покупателя, которого я получу. Думаю, я мог бы настроить его так, чтобы он очищался через X времени или после заказа, но это не кажется правильным ...
Также вторая проблема, с которой я столкнулся с этим методом, заключается в том, что он медленный. Когда я добавляю продукт в корзину, если я иду прямо в корзину, он показывает начальную цену, затем, когда я снова обновляюсь, она переходит к конкретной цене ...
Все, что мне действительно нужно сделать, это иметь возможность изменить цену при добавлении в корзину, а затем подтвердить заказ и оставить все как есть. Любой совет?