use Doctrine\ORM\EntityManagerInterface; | use Doctrine\ORM\EntityManagerInterface; | ||||
use Lc\CaracoleBundle\Container\Merchant\MerchantContainer; | use Lc\CaracoleBundle\Container\Merchant\MerchantContainer; | ||||
use Lc\CaracoleBundle\Controller\AbstractController; | use Lc\CaracoleBundle\Controller\AbstractController; | ||||
use Lc\CaracoleBundle\Definition\ActionDefinition; | |||||
use Lc\CaracoleBundle\Definition\MerchantSettingDefinition; | use Lc\CaracoleBundle\Definition\MerchantSettingDefinition; | ||||
use Lc\CaracoleBundle\Form\Merchant\SwitchMerchantFormType; | use Lc\CaracoleBundle\Form\Merchant\SwitchMerchantFormType; | ||||
use Symfony\Component\HttpFoundation\Request; | use Symfony\Component\HttpFoundation\Request; | ||||
if ($merchant) { | if ($merchant) { | ||||
$user = $security->getUser(); | $user = $security->getUser(); | ||||
if($user) { | |||||
if ($user) { | |||||
$user->setFavoriteMerchant($merchant); | $user->setFavoriteMerchant($merchant); | ||||
$entityManager->update($user); | $entityManager->update($user); | ||||
$entityManager->flush(); | $entityManager->flush(); | ||||
} | } | ||||
// @TODO : à fignoler, hein gamin ? | |||||
$url = $this->getSettingSolver()->getSettingValue( | |||||
$merchant, | |||||
MerchantSettingDefinition::SETTING_URL | |||||
) . 'admin'; | |||||
if ($url) { | |||||
return $this->redirect($url); | |||||
} | |||||
$this->addFlashTranslator('success', ActionDefinition::SWITCH_FAVORITE_MERCHANT, 'Merchant', ['%merchant%' => $merchant->getTitle()]); | |||||
} | } | ||||
} else { | |||||
$this->addFlashTranslator('error', ActionDefinition::SWITCH_FAVORITE_MERCHANT, 'Merchant'); | |||||
} | } | ||||
return $this->redirect($request->headers->get('referer')); | |||||
} | } | ||||
} | } |
use Doctrine\ORM\EntityManagerInterface; | use Doctrine\ORM\EntityManagerInterface; | ||||
use Lc\CaracoleBundle\Container\Merchant\MerchantContainer; | use Lc\CaracoleBundle\Container\Merchant\MerchantContainer; | ||||
use Lc\CaracoleBundle\Controller\AbstractController; | use Lc\CaracoleBundle\Controller\AbstractController; | ||||
use Lc\CaracoleBundle\Definition\ActionDefinition; | |||||
use Lc\CaracoleBundle\Definition\MerchantSettingDefinition; | use Lc\CaracoleBundle\Definition\MerchantSettingDefinition; | ||||
use Lc\CaracoleBundle\Form\Merchant\SwitchMerchantFormType; | use Lc\CaracoleBundle\Form\Merchant\SwitchMerchantFormType; | ||||
use Symfony\Component\HttpFoundation\Request; | use Symfony\Component\HttpFoundation\Request; | ||||
$entityManager->flush(); | $entityManager->flush(); | ||||
} | } | ||||
// @TODO : à fignoler, hein gamin ? | |||||
$url = $this->getSettingSolver()->getSettingValue( | |||||
$merchant, | |||||
MerchantSettingDefinition::SETTING_URL | |||||
) . 'admin'; | |||||
if ($url) { | |||||
return $this->redirect($url); | |||||
} | |||||
$this->addFlashTranslator('success', ActionDefinition::SWITCH_FAVORITE_MERCHANT, 'Merchant', ['%merchant%' => $merchant->getTitle()]); | |||||
} | } | ||||
} else { | |||||
$this->addFlashTranslator('error', ActionDefinition::SWITCH_FAVORITE_MERCHANT, 'Merchant'); | |||||
} | } | ||||
return $this->redirect($request->headers->get('referer')); | |||||
} | } | ||||
} | } |
use Lc\CaracoleBundle\Container\Merchant\MerchantContainer; | use Lc\CaracoleBundle\Container\Merchant\MerchantContainer; | ||||
use Lc\CaracoleBundle\Controller\AbstractController; | use Lc\CaracoleBundle\Controller\AbstractController; | ||||
use Lc\CaracoleBundle\Definition\ActionDefinition; | |||||
use Lc\CaracoleBundle\Definition\MerchantSettingDefinition; | use Lc\CaracoleBundle\Definition\MerchantSettingDefinition; | ||||
use Lc\CaracoleBundle\Form\Merchant\SwitchMerchantFormType; | use Lc\CaracoleBundle\Form\Merchant\SwitchMerchantFormType; | ||||
use Symfony\Component\HttpFoundation\Request; | use Symfony\Component\HttpFoundation\Request; | ||||
*/ | */ | ||||
public function switchMerchant(Request $request) | public function switchMerchant(Request $request) | ||||
{ | { | ||||
$form = $this->createForm(SwitchMerchantFormType::class); | |||||
$form = $this->createForm( | |||||
SwitchMerchantFormType::class, | |||||
null, | |||||
array('csrf_protection' => false) | |||||
); | |||||
$form->handleRequest($request); | $form->handleRequest($request); | ||||
if ($form->isSubmitted() && $form->isValid()) { | if ($form->isSubmitted() && $form->isValid()) { | ||||
if ($merchant) { | if ($merchant) { | ||||
$url = $this->getSettingValue( | $url = $this->getSettingValue( | ||||
$merchant, | |||||
MerchantSettingDefinition::SETTING_URL | |||||
$merchant, | |||||
MerchantSettingDefinition::SETTING_URL | |||||
); | ); | ||||
if ($context == 'admin') { | if ($context == 'admin') { | ||||
$url .= 'admin'; | $url .= 'admin'; | ||||
} | } | ||||
if ($url) { | |||||
return $this->redirect($url); | |||||
} | |||||
} | } | ||||
} | } | ||||
if ($url) { | |||||
return $this->redirect($url); | |||||
} else { | |||||
$this->addFlashTranslator('error', ActionDefinition::SWITCH_MERCHANT, 'Merchant'); | |||||
return $this->redirect($request->headers->get('referer')); | |||||
} | |||||
} | } | ||||
} | } |
public const DUPLICATE_TO_OTHER_MERCHANT = 'duplicateToOtherMerchant'; | public const DUPLICATE_TO_OTHER_MERCHANT = 'duplicateToOtherMerchant'; | ||||
public const DUPLICATE_TO_OTHER_SECTION = 'duplicateToOtherSection'; | public const DUPLICATE_TO_OTHER_SECTION = 'duplicateToOtherSection'; | ||||
public const EDIT_ADDRESS_USER = 'editAddressUser'; | public const EDIT_ADDRESS_USER = 'editAddressUser'; | ||||
public const SWITCH_MERCHANT = 'switchMerchant'; | |||||
public const SWITCH_FAVORITE_MERCHANT = 'switchFavoriteMerchant'; | |||||
} | } |
$this->leftJoin('.productCategories', 'productCategories'); | $this->leftJoin('.productCategories', 'productCategories'); | ||||
if ($addSelect) { | if ($addSelect) { | ||||
$this->addSelect('productCategories'); | |||||
//Commenté sinon doctrine n'hydrate pas correctement les catégories liés au ProductFamily (exemple : un seul sur trois) | |||||
//$this->addSelect('productCategories'); | |||||
} | } | ||||
return $this; | return $this; | ||||
} | } |
} | } | ||||
public function getByParentCategory( | public function getByParentCategory( | ||||
ProductCategoryInterface $parentCategory, | |||||
$user = null, | |||||
$query = null | |||||
) { | |||||
ProductCategoryInterface $parentCategory, | |||||
$user = null, | |||||
$query = null | |||||
) | |||||
{ | |||||
$productFamiliesArray = []; | $productFamiliesArray = []; | ||||
foreach ($parentCategory->getChildrens() as $i => $category) { | foreach ($parentCategory->getChildrens() as $i => $category) { | ||||
// getProductFamiliesByCategory | // getProductFamiliesByCategory | ||||
public function getByCategory( | public function getByCategory( | ||||
ProductCategoryInterface $productCategory, | |||||
$query = null | |||||
) { | |||||
ProductCategoryInterface $productCategory, | |||||
$query = null | |||||
) | |||||
{ | |||||
$query = $this->createDefaultQuery($query); | $query = $this->createDefaultQuery($query); | ||||
$query | $query | ||||
->filterIsOnline() | |||||
->filterByProductCategory($productCategory); | |||||
->filterIsOnline() | |||||
->filterByProductCategory($productCategory); | |||||
return $query->find(); | return $query->find(); | ||||
} | } | ||||
public function getByCategoryOnlineAndOffline( | public function getByCategoryOnlineAndOffline( | ||||
ProductCategoryInterface $productCategory, | ProductCategoryInterface $productCategory, | ||||
$query = null | $query = null | ||||
) { | |||||
) | |||||
{ | |||||
$query = $this->createDefaultQuery($query); | $query = $this->createDefaultQuery($query); | ||||
$query | $query | ||||
$query = $this->createDefaultQuery($query); | $query = $this->createDefaultQuery($query); | ||||
$query | $query | ||||
->filterByPropertyNoveltyExpirationDate() | |||||
->filterIsOnline(); | |||||
->filterByPropertyNoveltyExpirationDate() | |||||
->filterIsOnline(); | |||||
$results = $query->find(); | $results = $query->find(); | ||||
$query = $this->createDefaultQuery($query); | $query = $this->createDefaultQuery($query); | ||||
$query | $query | ||||
->filterIsOrganicLabel() | |||||
->filterIsOnline(); | |||||
->filterIsOrganicLabel() | |||||
->filterIsOnline(); | |||||
$results = $query->find(); | $results = $query->find(); | ||||
{ | { | ||||
if ($user) { | if ($user) { | ||||
return $this->getWithReductions( | return $this->getWithReductions( | ||||
$user->getFavoriteProductFamilies(), | |||||
$user, | |||||
false, | |||||
$organizeByParentCategory | |||||
$user->getFavoriteProductFamilies(), | |||||
$user, | |||||
false, | |||||
$organizeByParentCategory | |||||
); | ); | ||||
} | } | ||||
// findByTerms | // findByTerms | ||||
public function getByTerms( | public function getByTerms( | ||||
$terms, | |||||
$maxResults = false, | |||||
$organizeByParentCategory = false, | |||||
$user = null, | |||||
$query = null | |||||
) { | |||||
$terms, | |||||
$maxResults = false, | |||||
$organizeByParentCategory = false, | |||||
$user = null, | |||||
$query = null | |||||
) | |||||
{ | |||||
$query = $this->createDefaultQuery($query); | $query = $this->createDefaultQuery($query); | ||||
$query->filterIsOnline(); | $query->filterIsOnline(); | ||||
} | } | ||||
public function getBestReductionCatalog( | public function getBestReductionCatalog( | ||||
ProductFamilyInterface $productFamily, | |||||
ReductionCatalogInterface $reductionCatalog1, | |||||
ReductionCatalogInterface $reductionCatalog2 | |||||
) { | |||||
$price1 = $this->priceSolver->applyReductionCatalog( | |||||
$productFamily, | |||||
$this->priceSolver->getPrice($productFamily), | |||||
$this->priceSolver->getPriceWithTax($productFamily), | |||||
1, | |||||
$reductionCatalog1 | |||||
ProductFamilyInterface $productFamily, | |||||
ReductionCatalogInterface $reductionCatalog1, | |||||
ReductionCatalogInterface $reductionCatalog2 | |||||
) | |||||
{ | |||||
$price1 = $this->priceSolver->getPriceWithTaxByReduction( | |||||
$productFamily, | |||||
$reductionCatalog1 | |||||
); | ); | ||||
$price2 = $this->priceSolver->applyReductionCatalog( | |||||
$productFamily, | |||||
$this->priceSolver->getPrice($productFamily), | |||||
$this->priceSolver->getPriceWithTax($productFamily), | |||||
1, | |||||
$reductionCatalog2 | |||||
$price2 = $this->priceSolver->getPriceWithTaxByReduction( | |||||
$productFamily, | |||||
$reductionCatalog2 | |||||
); | ); | ||||
if ($price1 > $price2) { | if ($price1 > $price2) { | ||||
return $reductionCatalog2; | return $reductionCatalog2; | ||||
} else { | } else { | ||||
// setReductionForProductFamilies | // setReductionForProductFamilies | ||||
public function getWithReductions( | public function getWithReductions( | ||||
$productFamilies, | |||||
UserInterface $user = null, | |||||
$organizeByCategory = false, | |||||
$organizeByParentCategory = false, | |||||
$onlyOnDiscount = false | |||||
) { | |||||
$productFamilies, | |||||
UserInterface $user = null, | |||||
$organizeByCategory = false, | |||||
$organizeByParentCategory = false, | |||||
$onlyOnDiscount = false | |||||
) | |||||
{ | |||||
$conditions = [ | $conditions = [ | ||||
'ids' => [], | |||||
'categories' => [], | |||||
'productFamiliesIds' => [], | |||||
'categories' => [], | |||||
'productFamilies' => [], | |||||
]; | ]; | ||||
foreach ($productFamilies as $productFamily) { | foreach ($productFamilies as $productFamily) { | ||||
$conditions['ids'][] = $productFamily->getId(); | |||||
$conditions['productFamiliesIds'][] = $productFamily->getId(); | |||||
$conditions['productFamilies'][] = $productFamily; | |||||
$conditions['categories'] = array_merge( | $conditions['categories'] = array_merge( | ||||
$conditions['categories'], | |||||
$productFamily->getProductCategories()->toArray() | |||||
$conditions['categories'], | |||||
$productFamily->getProductCategories()->toArray() | |||||
); | ); | ||||
} | } | ||||
if ($productFamilies) { | if ($productFamilies) { | ||||
$reductionCatalogs = $this->reductionCatalogStore->getByProductFamiliesConditions( | $reductionCatalogs = $this->reductionCatalogStore->getByProductFamiliesConditions( | ||||
$conditions, | |||||
$user | |||||
$conditions, | |||||
$user | |||||
); | ); | ||||
} | } | ||||
$conditionProductFamilies = $conditionProductFamily = $conditionProductCategory = false; | $conditionProductFamilies = $conditionProductFamily = $conditionProductCategory = false; | ||||
if ($reductionCatalog->getProductFamilies()->contains( | if ($reductionCatalog->getProductFamilies()->contains( | ||||
$productFamily | |||||
) || $reductionCatalog->getProductFamilies()->isEmpty()) { | |||||
$productFamily | |||||
) || $reductionCatalog->getProductFamilies()->isEmpty()) { | |||||
$conditionProductFamilies = true; | $conditionProductFamilies = true; | ||||
} | } | ||||
if ($reductionCatalog->getProductFamily() == $productFamily || $reductionCatalog->getProductFamily( | |||||
) === null) { | |||||
if ($reductionCatalog->getProductFamily() == $productFamily || $reductionCatalog->getProductFamily() === null) { | |||||
$conditionProductFamily = true; | $conditionProductFamily = true; | ||||
} | } | ||||
foreach ($productFamily->getProductCategories() as $productCategory) { | foreach ($productFamily->getProductCategories() as $productCategory) { | ||||
if ($reductionCatalog->getProductCategories()->contains( | if ($reductionCatalog->getProductCategories()->contains( | ||||
$productCategory | |||||
) || $reductionCatalog->getProductCategories()->isEmpty()) { | |||||
$productCategory | |||||
) || $reductionCatalog->getProductCategories()->isEmpty()) { | |||||
$conditionProductCategory = true; | $conditionProductCategory = true; | ||||
} | } | ||||
} | } | ||||
if ($conditionProductFamilies && $conditionProductFamily && $conditionProductCategory) { | if ($conditionProductFamilies && $conditionProductFamily && $conditionProductCategory) { | ||||
if ($productFamily->getReductionCatalog()) { | if ($productFamily->getReductionCatalog()) { | ||||
$productFamily->setReductionCatalog( | $productFamily->setReductionCatalog( | ||||
$this->getBestReductionCatalog( | |||||
$productFamily, | |||||
$reductionCatalog, | |||||
$productFamily->getReductionCatalog() | |||||
) | |||||
$this->getBestReductionCatalog( | |||||
$productFamily, | |||||
$reductionCatalog, | |||||
$productFamily->getReductionCatalog() | |||||
) | |||||
); | ); | ||||
} else { | } else { | ||||
$productFamily->setReductionCatalog($reductionCatalog); | $productFamily->setReductionCatalog($reductionCatalog); | ||||
if ($this->productCategorySolver->isDisplay($parentCategory, $user)) { | if ($this->productCategorySolver->isDisplay($parentCategory, $user)) { | ||||
if (!isset($productFamiliesToReturn[$parentCategory->getId()])) { | if (!isset($productFamiliesToReturn[$parentCategory->getId()])) { | ||||
$productFamiliesToReturn[$parentCategory->getId()] = [ | $productFamiliesToReturn[$parentCategory->getId()] = [ | ||||
'category' => $parentCategory, | |||||
'products' => [] | |||||
'category' => $parentCategory, | |||||
'products' => [] | |||||
]; | ]; | ||||
} | } | ||||
$productFamiliesToReturn[$parentCategory->getId()]['products'][] = $productFamily; | $productFamiliesToReturn[$parentCategory->getId()]['products'][] = $productFamily; |
namespace Lc\CaracoleBundle\Repository\Reduction; | namespace Lc\CaracoleBundle\Repository\Reduction; | ||||
use Doctrine\Common\Collections\ArrayCollection; | |||||
use Knp\Component\Pager\PaginatorInterface; | use Knp\Component\Pager\PaginatorInterface; | ||||
use Lc\CaracoleBundle\Model\Product\ProductFamilyInterface; | use Lc\CaracoleBundle\Model\Product\ProductFamilyInterface; | ||||
use Lc\CaracoleBundle\Repository\MerchantRepositoryQueryTrait; | use Lc\CaracoleBundle\Repository\MerchantRepositoryQueryTrait; | ||||
$this->isJoinUsers = true; | $this->isJoinUsers = true; | ||||
return $this | return $this | ||||
->leftJoin('.users', 'pf_users') | |||||
->addSelect('pf_users') ; | |||||
->leftJoin('.users', 'pf_users') | |||||
->addSelect('pf_users'); | |||||
} | } | ||||
return $this; | return $this; | ||||
} | } | ||||
$this->isJoinGroupUsers = true; | $this->isJoinGroupUsers = true; | ||||
return $this | return $this | ||||
->leftJoin('.groupUsers', 'groupUsers') | |||||
->addSelect('groupUsers') ; | |||||
->leftJoin('.groupUsers', 'groupUsers') | |||||
->addSelect('groupUsers'); | |||||
} | } | ||||
return $this; | return $this; | ||||
} | } | ||||
$this->isJoinProductFamilies = true; | $this->isJoinProductFamilies = true; | ||||
return $this | return $this | ||||
->leftJoin('.productFamilies', 'productFamilies') | |||||
->addSelect('productFamilies') ; | |||||
->leftJoin('.productFamilies', 'productFamilies') | |||||
->addSelect('productFamilies'); | |||||
} | } | ||||
return $this; | return $this; | ||||
} | } | ||||
$this->isJoinProductFamily = true; | $this->isJoinProductFamily = true; | ||||
return $this | return $this | ||||
->leftJoin('.productFamily', 'productFamily') | |||||
->addSelect('productFamily') ; | |||||
->leftJoin('.productFamily', 'productFamily') | |||||
->addSelect('productFamily'); | |||||
} | } | ||||
return $this; | return $this; | ||||
$this->isJoinProductCategories = true; | $this->isJoinProductCategories = true; | ||||
return $this | return $this | ||||
->leftJoin('.productCategories', 'productCategories') | |||||
->addSelect('productCategories') ; | |||||
->leftJoin('.productCategories', 'productCategories') | |||||
->addSelect('productCategories'); | |||||
} | } | ||||
return $this; | return $this; | ||||
public function filterProductFamily(ProductFamilyInterface $productFamily) | public function filterProductFamily(ProductFamilyInterface $productFamily) | ||||
{ | { | ||||
return $this | return $this | ||||
->andWhere('.productFamily = :productFamily') | |||||
->setParameter(':productFamily', $productFamily); | |||||
->andWhere('.productFamily = :productFamily') | |||||
->setParameter(':productFamily', $productFamily); | |||||
} | } | ||||
public function filterConditionDate() | public function filterConditionDate() | ||||
{ | { | ||||
return $this | return $this | ||||
->andWhere('.permanent = 1 OR ( .dateStart <= :now AND .dateEnd >= :now)') | |||||
->setParameter(':now', new \DateTime()); | |||||
->andWhere('.permanent = 1 OR ( .dateStart <= :now AND .dateEnd >= :now)') | |||||
->setParameter(':now', new \DateTime()); | |||||
} | } | ||||
public function filterConditionUser(UserInterface $user = null) | public function filterConditionUser(UserInterface $user = null) | ||||
if ($user) { | if ($user) { | ||||
return $this | return $this | ||||
->andWhere(':user MEMBER OF .users OR .users is empty') | |||||
->setParameter('user', $user); | |||||
->andWhere(':user MEMBER OF .users OR .users is empty') | |||||
->setParameter('user', $user); | |||||
} else { | } else { | ||||
return $this | return $this | ||||
->andWhere('.users is empty'); | |||||
->andWhere('.users is empty'); | |||||
} | } | ||||
} | } | ||||
if ($user) { | if ($user) { | ||||
return $this | return $this | ||||
->andWhere(':groupUser MEMBER OF .groupUsers OR .groupUsers is empty') | |||||
->setParameter('groupUser', $user->getGroupUsers()); | |||||
->andWhere(':groupUser MEMBER OF .groupUsers OR .groupUsers is empty') | |||||
->setParameter('groupUser', $user->getGroupUsers()); | |||||
} else { | } else { | ||||
return $this | return $this | ||||
->andWhere('.groupUsers is empty'); | |||||
->andWhere('.groupUsers is empty'); | |||||
} | } | ||||
} | } | ||||
public function filterConditionProductFamilies(array $productFamilies) | |||||
public function filterConditionProductFamilies(array $productFamiliesIds, array $productFamilies) | |||||
{ | { | ||||
$this->joinProductFamilies(); | $this->joinProductFamilies(); | ||||
$this->joinProductFamily(); | |||||
return $this | return $this | ||||
->andWhere(':productFamilies MEMBER OF .productFamilies OR .productFamilies is empty') | |||||
->setParameter('productFamilies', $productFamilies); | |||||
->andWhere(':productFamiliesIds MEMBER OF .productFamilies OR .productFamilies is empty') | |||||
->andWhere('.productFamily IN (:productFamilies) OR .productFamily is null') | |||||
->setParameter('productFamiliesIds', $productFamiliesIds) | |||||
->setParameter('productFamilies', $productFamilies); | |||||
} | } | ||||
public function filterConditionProductFamily(ProductFamilyInterface $productFamily) | public function filterConditionProductFamily(ProductFamilyInterface $productFamily) | ||||
$this->joinProductFamily(); | $this->joinProductFamily(); | ||||
return $this | return $this | ||||
->andWhere(':productFamily MEMBER OF .productFamily OR .productFamily is empty') | |||||
->setParameter('productFamily', $productFamily); | |||||
->andWhere(':productFamily MEMBER OF .productFamily OR .productFamily is empty') | |||||
->setParameter('productFamily', $productFamily); | |||||
} | } | ||||
public function filterConditionProductCategories(array $productCategories) | public function filterConditionProductCategories(array $productCategories) | ||||
$this->joinProductCategories(); | $this->joinProductCategories(); | ||||
return $this | return $this | ||||
->andWhere(':productCategory MEMBER OF .productCategories OR .productCategories is empty') | |||||
->setParameter('productCategory', $productCategories); | |||||
->andWhere(':productCategory MEMBER OF .productCategories OR .productCategories is empty') | |||||
->setParameter('productCategory', $productCategories); | |||||
} | } | ||||
Merchant: | Merchant: | ||||
label: Marchand | label: Marchand | ||||
label_plurial: Marchands | label_plurial: Marchands | ||||
flashes: | |||||
error: | |||||
switchMerchant: Une erreur est survenue lors du changement de marchand, veuillez réessayer. | |||||
switchFavoriteMerchant: Une erreur est survenue lors de la sauvegarde de votre marchand favoris. | |||||
success: | |||||
switchFavoriteMerchant: "%merchant% est maintenant votre marchand favoris." | |||||
Section: | Section: | ||||
label: Section | label: Section | ||||
label_plurial: Sections | label_plurial: Sections |
<ul class="navbar-nav ml-auto right"> | <ul class="navbar-nav ml-auto right"> | ||||
<li class="nav-item nav-switch-merchant"> | <li class="nav-item nav-switch-merchant"> | ||||
<i class="fa fa-store"></i> | <i class="fa fa-store"></i> | ||||
{% set form_switch_merchant = carac_form_switch_merchant('admin') %} | |||||
{% set form_switch_merchant = carac_form_switch_merchant('admin', 'carac_merchant_switch', false) %} | |||||
{% form_theme form_switch_merchant '@LcSov/adminlte/crud/form_theme.html.twig' %} | {% form_theme form_switch_merchant '@LcSov/adminlte/crud/form_theme.html.twig' %} | ||||
{{ form_start(form_switch_merchant) }} | {{ form_start(form_switch_merchant) }} | ||||
{{ form(form_switch_merchant) }} | {{ form(form_switch_merchant) }} |
use Lc\CaracoleBundle\Doctrine\Extension\ProductPropertyInterface; | use Lc\CaracoleBundle\Doctrine\Extension\ProductPropertyInterface; | ||||
use Lc\CaracoleBundle\Model\Product\ProductFamilyInterface; | use Lc\CaracoleBundle\Model\Product\ProductFamilyInterface; | ||||
use Lc\CaracoleBundle\Model\Product\ProductInterface; | use Lc\CaracoleBundle\Model\Product\ProductInterface; | ||||
use Lc\CaracoleBundle\Model\Reduction\ReductionCatalogInterface; | |||||
use Lc\CaracoleBundle\Solver\Product\ProductFamilySolver; | use Lc\CaracoleBundle\Solver\Product\ProductFamilySolver; | ||||
use Lc\CaracoleBundle\Solver\Product\ProductSolver; | use Lc\CaracoleBundle\Solver\Product\ProductSolver; | ||||
); | ); | ||||
} | } | ||||
//Bridge pour applyReductionCatalog qui ne peut pas être appeler à cause du call | |||||
public function getPriceWithTaxByReduction(ProductPropertyInterface $product, ReductionCatalogInterface $reductionCatalog) | |||||
{ | |||||
return $this->applyReductionCatalog( | |||||
$product, | |||||
$this->getPrice($product), | |||||
$this->getPriceWithTax($product), | |||||
1, | |||||
$reductionCatalog | |||||
); | |||||
} | |||||
public function getPriceByRefUnitWithTaxAndReduction(ProductPropertyInterface $product) | public function getPriceByRefUnitWithTaxAndReduction(ProductPropertyInterface $product) | ||||
{ | { | ||||
return ($this->getPriceByRefUnitWithTax($product) * $this->getPriceWithTaxAndReduction($product)) | return ($this->getPriceByRefUnitWithTax($product) * $this->getPriceWithTaxAndReduction($product)) |
namespace Lc\CaracoleBundle\Twig; | namespace Lc\CaracoleBundle\Twig; | ||||
use Lc\CaracoleBundle\Form\Merchant\SwitchMerchantButtonAdminFormType; | |||||
use Lc\CaracoleBundle\Form\Merchant\SwitchMerchantFormType; | use Lc\CaracoleBundle\Form\Merchant\SwitchMerchantFormType; | ||||
use Lc\CaracoleBundle\Form\Section\SwitchSectionFormType; | use Lc\CaracoleBundle\Form\Section\SwitchSectionFormType; | ||||
use Lc\CaracoleBundle\Repository\Merchant\MerchantRepositoryQuery; | |||||
use Lc\CaracoleBundle\Repository\Section\SectionRepository; | |||||
use Lc\CaracoleBundle\Repository\Section\SectionRepositoryInterface; | |||||
use Symfony\Component\Form\FormFactoryInterface; | use Symfony\Component\Form\FormFactoryInterface; | ||||
use Symfony\Component\Routing\Generator\UrlGeneratorInterface; | use Symfony\Component\Routing\Generator\UrlGeneratorInterface; | ||||
use Twig\Extension\AbstractExtension; | use Twig\Extension\AbstractExtension; | ||||
); | ); | ||||
} | } | ||||
public function getFormSwitchMerchant($context = 'front', $actionRoute = 'carac_merchant_switch') | |||||
public function getFormSwitchMerchant($context = 'front', $actionRoute = 'carac_merchant_switch', $csrfProtection = true) | |||||
{ | { | ||||
$form = $this->formFactory->create( | $form = $this->formFactory->create( | ||||
SwitchMerchantFormType::class, | SwitchMerchantFormType::class, | ||||
[ | [ | ||||
'action' => $this->urlGenerator->generate($actionRoute), | 'action' => $this->urlGenerator->generate($actionRoute), | ||||
'attr' => ['class' => 'switch-merchant'], | 'attr' => ['class' => 'switch-merchant'], | ||||
'csrf_protection' => $csrfProtection, | |||||
'context' => $context | 'context' => $context | ||||
] | ] | ||||
); | ); |