Общая корзина не рассчитана правильно

У меня необычная проблема … в моем проекте sylius, когда я добавляю 2 товара в корзину, общее количество товаров в корзине неверно. Это всегда меньше, чем должно быть, даже если к товарам не применяются скидки или корректировки. Я не изменил оригинальную логику sylius за этим, но я изменил сущность ChannelPricing и добавил поля oldPrice и discount. Я не уверен, что это как-то связано с этим. Я попытался вернуться, чтобы увидеть, изменит ли это что-нибудь, но безуспешно.Вы можете увидеть, как это's calculating it wrong
Здесь вы можете увидеть разницу между unitPrice и Total
Это мой код для ценообразования:

 <?php

namespace AppBundle\Entity;

use Sylius\Component\Core\Model\ChannelPricing as BaseChannelPricing;class ChannelPricing extends BaseChannelPricing
{

/**
* @var int
*/
protected $oldPrice;

/**
* @var float
*/
protected $discount;

/**
* @return mixed
*/
public function getOldPrice()
{
return $this->oldPrice;
}

/**
* @param mixed $oldPrice
*/
public function setOldPrice($oldPrice)
{
$this->oldPrice = $oldPrice;
}

/**
* @return mixed
*/
public function getDiscount()
{
return $this->discount;
}

/**
* @param mixed $discount
*/
public function setDiscount($discount)
{
$this->discount = $discount;
}
}`

А также

 sylius_core:
driver: doctrine/orm
resources:
channel_pricing:
classes:
model: AppBundle\Entity\ChannelPricing

Также код для расширения формы

 <?php

namespace AppBundle\Form\Extension;

use Sylius\Bundle\CoreBundle\Form\Type\Product\ChannelPricingType;
use Symfony\Component\Form\AbstractTypeExtension;
use Sylius\Bundle\MoneyBundle\Form\Type\MoneyType;
use Sylius\Component\Core\Model\ChannelInterface;
use Symfony\Component\Form\Extension\Core\Type\PercentType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;

class ChannelPricingTypeExtension extends AbstractTypeExtension
{

/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) {
/** @var ChannelInterface $channel */
$channel = $event->getData()->getChannel();
$form = $event->getForm();

$form->remove('price')
->add('oldPrice',MoneyType::class,[
'label' => 'Stara cijena',
'currency' => $channel->getBaseCurrency()->getCode(),
])
->add('discount',PercentType::class,[
'label' => 'Popust',

])->add('price',MoneyType::class,[
'label' => 'Cijena',
'currency' => $channel->getBaseCurrency()->getCode(),
]);
})
;
}

/**
* Returns the name of the type being extended.
*
* @return string The name of the type being extended
*/
public function getExtendedType()
{
return ChannelPricingType::class;
}
}

0

Решение

Я уверен, что модификация ChannelPricing меняет все. Вы пытались увидеть, что сохраняется на канальной цене, связанной с вашим OrderItem?

0

Другие решения

Я думаю, это была ошибка из-за управления версиями … после того, как я обновил его до последней версии dev-master, он работает как положено, и я больше не могу его воспроизводить.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector