if (!$user instanceof UserInterface) return $user; | if (!$user instanceof UserInterface) return $user; | ||||
else { | else { | ||||
//TODO Utiliser getCartByUserOrCreateIt ds OrderUtils | |||||
$orderShopUser = $this->em->getRepository(OrderShopInterface::class)->findCartCurrent(['user' => $user]); | $orderShopUser = $this->em->getRepository(OrderShopInterface::class)->findCartCurrent(['user' => $user]); | ||||
if ($orderShopUser) { | if ($orderShopUser) { | ||||
$this->utils->addFlash('info', 'error.order.otherOrderAlreadyExist'); | $this->utils->addFlash('info', 'error.order.otherOrderAlreadyExist'); |
<?php | |||||
namespace Lc\ShopBundle\Form\Backend\Common; | |||||
use Doctrine\ORM\EntityManagerInterface; | |||||
use Doctrine\ORM\EntityRepository; | |||||
use Lc\ShopBundle\Context\MerchantUtilsInterface; | |||||
use Lc\ShopBundle\Context\ProductInterface; | |||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType; | |||||
use Symfony\Component\Form\AbstractType; | |||||
use Symfony\Component\Form\FormBuilderInterface; | |||||
use Symfony\Component\Form\FormEvent; | |||||
use Symfony\Component\Form\FormEvents; | |||||
use Symfony\Component\OptionsResolver\OptionsResolver; | |||||
class ProductType extends AbstractType | |||||
{ | |||||
protected $em; | |||||
protected $merchantUtils; | |||||
public function __construct(EntityManagerInterface $entityManager, MerchantUtilsInterface $merchantUtils) | |||||
{ | |||||
$this->em = $entityManager; | |||||
$this->merchantUtils = $merchantUtils; | |||||
} | |||||
public function buildForm(FormBuilderInterface $builder, array $options) | |||||
{ | |||||
$productClass = $this->em->getClassMetadata(ProductInterface::class); | |||||
$currentMerchant = $this->merchantUtils->getMerchantUser(); | |||||
$builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) use ($productClass, $options, $currentMerchant) { | |||||
$builder = $event->getForm()->getParent(); | |||||
$builder->add('product', EntityType::class, array_merge($options,[ | |||||
'class' => $productClass->name, | |||||
'query_builder' => function (EntityRepository $er) use ($currentMerchant) { | |||||
return $er->createQueryBuilder('p') | |||||
->join('p.productFamily', 'pFamily') | |||||
->where('pFamily.merchant = :currentMerchant') | |||||
->andWhere('pFamily.status = 1') | |||||
->setParameter('currentMerchant', $currentMerchant); | |||||
}, | |||||
'choice_label' => function ($product) { | |||||
return $product->getProductFamily()->getTitle() . ' - ' . $product->getTitle(); | |||||
} | |||||
])); | |||||
}); | |||||
} | |||||
public function configureOptions(OptionsResolver $resolver) | |||||
{ | |||||
$resolver->setDefaults([ | |||||
'translation_domain' => 'lcshop', | |||||
]); | |||||
} | |||||
} |
<?php | |||||
namespace Lc\ShopBundle\Form\Backend\Common; | |||||
use Doctrine\ORM\EntityManagerInterface; | |||||
use Doctrine\ORM\EntityRepository; | |||||
use Lc\ShopBundle\Context\ReductionCatalogInterface; | |||||
use Lc\ShopBundle\Context\UserInterface; | |||||
use Lc\ShopBundle\Repository\GroupUserRepository; | |||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType; | |||||
use Symfony\Component\Form\AbstractType; | |||||
use Symfony\Component\Form\Extension\Core\Type\CheckboxType; | |||||
use Symfony\Component\Form\FormBuilderInterface; | |||||
use Symfony\Component\Form\FormEvent; | |||||
use Symfony\Component\Form\FormEvents; | |||||
use Symfony\Component\OptionsResolver\OptionsResolver; | |||||
class UserType extends AbstractType | |||||
{ | |||||
protected $em; | |||||
public function __construct(EntityManagerInterface $entityManager) | |||||
{ | |||||
$this->em = $entityManager; | |||||
} | |||||
public function buildForm(FormBuilderInterface $builder, array $options) | |||||
{ | |||||
$userClass = $this->em->getClassMetadata(UserInterface::class); | |||||
$builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) use ($userClass, $options) { | |||||
$builder = $event->getForm()->getParent(); | |||||
$builder->add('user', EntityType::class, array_merge($options,[ | |||||
'class' => $userClass->name, | |||||
'query_builder'=> function (EntityRepository $er) { | |||||
$query = $er->findByMerchantQuery(); | |||||
return $query; | |||||
}, | |||||
'expanded' => false, | |||||
'translation_domain'=>'lcshop', | |||||
])); | |||||
}); | |||||
} | |||||
public function configureOptions(OptionsResolver $resolver) | |||||
{ | |||||
$resolver->setDefaults([ | |||||
'translation_domain' => 'lcshop', | |||||
]); | |||||
} | |||||
} |
conditions: Conditions d'applications | conditions: Conditions d'applications | ||||
actions: Actions | actions: Actions | ||||
OrderShop: | OrderShop: | ||||
redelivery: Relivraison | |||||
resume: Résumé de commande | resume: Résumé de commande | ||||
addProduct: Ajout de produit à la commande | addProduct: Ajout de produit à la commande | ||||
orderPayment: Ajouter un règlement | orderPayment: Ajouter un règlement | ||||
typeOptions: | typeOptions: | ||||
individual: Particulier | individual: Particulier | ||||
legal-person: Professionnel | legal-person: Professionnel | ||||
OrderProductRedelivery: | |||||
quantityOrder: Quantité commandé | |||||
quantityProduct: Quantité (en rapport à l'unité) | |||||
unit: Unité | |||||
OrderShop: | OrderShop: | ||||
save: Sauvegarder | save: Sauvegarder | ||||
reference: Référence | reference: Référence | ||||
quantityOrder: Quantité commandé | quantityOrder: Quantité commandé | ||||
quantityProduct: Quantité (en rapport à l'unité) | quantityProduct: Quantité (en rapport à l'unité) | ||||
unit: Unité | unit: Unité | ||||
redeliverySupplier: Erreur producteur | |||||
redeliverySupplierOrder: A recommander au producteur | |||||
redeliverySupplierShort: Erreur producteur | |||||
redeliverySupplier: Erreur producteur (Aura un prix à 0€ dans le prohain bon de commande producteur - vous devez cocher à recommander) | |||||
redeliverySupplierOrderShort: À recommander au producteur | |||||
redeliverySupplierOrder: À recommander au producteur (Sera affiché dans le prohain bon de commande producteur) | |||||
deliveryType: Type de livraison | deliveryType: Type de livraison | ||||
deliveryTypeOptions: | deliveryTypeOptions: | ||||
point-sale: En ambassade | point-sale: En ambassade |
namespace Lc\ShopBundle\Services\Order; | namespace Lc\ShopBundle\Services\Order; | ||||
use Lc\ShopBundle\Context\OrderShopInterface; | |||||
use Lc\ShopBundle\Model\OrderStatus; | use Lc\ShopBundle\Model\OrderStatus; | ||||
trait OrderUtilsCartTrait | trait OrderUtilsCartTrait | ||||
{ | { | ||||
public function getCartByUserOrCreateIt($user){ | |||||
$newOrderShop= $this->em->getRepository(OrderShopInterface::class)->findCartCurrent(['user' => $user]); | |||||
if ($newOrderShop === null) { | |||||
$newOrderShop = $this->createOrderShop(array( | |||||
'user' => $user, | |||||
'merchant' => $this->merchantUtils->getMerchantUser() | |||||
)); | |||||
} | |||||
return $newOrderShop; | |||||
} | |||||
public function getCartCurrent() | public function getCartCurrent() | ||||
{ | { | ||||
$paramsSearchOrderShop = []; | $paramsSearchOrderShop = []; |