Browse Source

correctifs / duplications entity

feature/export_comptable
Fab 4 years ago
parent
commit
1c36f2e1f4
17 changed files with 396 additions and 156 deletions
  1. +64
    -10
      ShopBundle/Controller/Backend/AdminController.php
  2. +29
    -4
      ShopBundle/Controller/Backend/ProductFamilyController.php
  3. +11
    -0
      ShopBundle/Repository/BaseRepository.php
  4. +0
    -5
      ShopBundle/Resources/config/easy_admin/base.yaml
  5. +126
    -115
      ShopBundle/Resources/public/css/backend/custom.css
  6. +1
    -0
      ShopBundle/Resources/public/js/backend/plugin/autocomplete/bootstrap-autocomplete.min.js
  7. +33
    -2
      ShopBundle/Resources/public/js/backend/script/default/init-list.js
  8. +4
    -1
      ShopBundle/Resources/public/sass/backend/custom.scss
  9. +2
    -0
      ShopBundle/Resources/translations/lcshop.fr.yaml
  10. +0
    -6
      ShopBundle/Resources/views/backend/default/action.html.twig
  11. +13
    -0
      ShopBundle/Resources/views/backend/default/block/action.html.twig
  12. +58
    -0
      ShopBundle/Resources/views/backend/default/block/actions.html.twig
  13. +22
    -6
      ShopBundle/Resources/views/backend/default/list-fields/field_product_family_available_quantity.html.twig
  14. +15
    -6
      ShopBundle/Resources/views/backend/default/list.html.twig
  15. +4
    -0
      ShopBundle/Resources/views/backend/default/new.html.twig
  16. +7
    -1
      ShopBundle/Resources/views/backend/productfamily/macros.html.twig
  17. +7
    -0
      ShopBundle/Resources/views/backend/productfamily/panel_stock.html.twig

+ 64
- 10
ShopBundle/Controller/Backend/AdminController.php View File

@@ -24,6 +24,7 @@ use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Security\Core\Security;
use Symfony\Contracts\Translation\TranslatorInterface;
@@ -68,20 +69,40 @@ class AdminController extends EasyAdminController
}


public function autocompleteAction()
{

$entityName = $this->request->query->get('entity');
$valueSearched = $this->request->query->get('q');
$field = $this->request->query->get('field');

$class = $this->entity['class'];
$repo = $this->em->getRepository($class);

$values = $repo->findByTerm($field, $valueSearched);

$response = array();
foreach ($values as $value) {
$response[] = $value[$field];
}
return new JsonResponse($response);

}

/**
* Réécriture de show action pr rediriger vers l'édition
*/
/* public function showAction()
{
$id = $this->request->query->get('id');
$entity = $this->request->query->get('entity');
public function showAction()
{
$id = $this->request->query->get('id');
$entity = $this->request->query->get('entity');

return $this->redirectToRoute('easyadmin', [
'action' => 'edit',
'entity' => $entity,
'id' => $id
]);
}*/
return $this->redirectToRoute('easyadmin', [
'action' => 'edit',
'entity' => $entity,
'id' => $id
]);
}


/**
@@ -532,5 +553,38 @@ class AdminController extends EasyAdminController

return $this->executeDynamicMethod('render<EntityName>Template', ['edit', $this->entity['templates']['edit'], $parameters]);
}

public function createNewEntity(){
$idDuplicate = $this->request->query->get('duplicate', null);
if($idDuplicate){
$easyadmin = $this->request->attributes->get('easyadmin');
$entity= $this->em->getRepository($easyadmin['entity']['class'])->find($idDuplicate);

$newProductFamily = clone $entity ;
$this->em->persist($newProductFamily) ;
$this->em->flush() ;
}else{
$entityFullyQualifiedClassName = $this->entity['class'];

return new $entityFullyQualifiedClassName();
}

}

public function duplicateAction(){
$id = $this->request->query->get('id');
$refererUrl = $this->request->query->get('referer', '');

$easyadmin = $this->request->attributes->get('easyadmin');

$entity= $this->em->getRepository($easyadmin['entity']['class'])->find($id);

$newProductFamily = clone $entity ;

$this->em->persist($newProductFamily) ;
$this->em->flush() ;

return $this->redirectToRoute('easyadmin', ['entity' => $easyadmin['entity']['name'], 'action' => 'edit', 'id' =>$newProductFamily->getId(), 'referer' =>$refererUrl ]) ;
}
}


+ 29
- 4
ShopBundle/Controller/Backend/ProductFamilyController.php View File

@@ -213,7 +213,7 @@ class ProductFamilyController extends AdminController
}
}

protected function processProducts($entity)
protected function processProducts($entity, $clone =false)
{
//si il existe un et un seul produit pour ce product family n'ajoute rien supprime rien
if (count($entity->getProducts()) == 0) {
@@ -223,9 +223,16 @@ class ProductFamilyController extends AdminController
$entity->addProduct($product);
} else {
foreach ($entity->getProducts() as $i => $product) {
$product->setProductFamily($entity);
$this->em->persist($product);
$entity->addProduct($product);
if($clone){
$newProduct = clone $product;
$newProduct->setProductFamily($entity);
$this->em->persist($newProduct);
$entity->addProduct($newProduct);
}else {
$product->setProductFamily($entity);
$this->em->persist($product);
$entity->addProduct($product);
}
}
}

@@ -382,6 +389,24 @@ class ProductFamilyController extends AdminController
return $this->executeDynamicMethod('render<EntityName>Template', ['new', $this->entity['templates']['new'], $parameters]);
}

public function duplicateAction(){
$id = $this->request->query->get('id');
$refererUrl = $this->request->query->get('referer', '');

$easyadmin = $this->request->attributes->get('easyadmin');

$entity= $this->em->getRepository($easyadmin['entity']['class'])->find($id);

$newProductFamily = clone $entity ;
if($easyadmin['entity']['name'] == "ProductFamily"){
$this->processProducts($newProductFamily, true);
}
$this->em->persist($newProductFamily) ;
$this->em->flush() ;

return $this->redirectToRoute('easyadmin', ['entity' => $easyadmin['entity']['name'], 'action' => 'edit', 'id' =>$newProductFamily->getId(), 'referer' =>$refererUrl ]) ;
}


public function getTotalProductOrdered($entity){
$orderShopRepo = $this->em->getRepository(OrderShopInterface::class);

+ 11
- 0
ShopBundle/Repository/BaseRepository.php View File

@@ -25,6 +25,17 @@ class BaseRepository extends EntityRepository implements ServiceEntityRepository
}


public function findByTerm($field, $term, $limit=10){
$qb = $this->findByMerchantQuery();
$qb->select('e.'.$field);
$qb->andWhere(
$qb->expr()->like('e.'.$field, ':term'));
$qb->setParameter('term', '%'.$term.'%');
$qb->setMaxResults($limit);

return $qb->getQuery()->getResult();

}
public function findByMerchantQuery() :QueryBuilder
{
return $this->createQueryBuilder('e')

+ 0
- 5
ShopBundle/Resources/config/easy_admin/base.yaml View File

@@ -19,11 +19,6 @@ easy_admin:
form_theme:
- '@LcShop/backend/form/custom_bootstrap_4.html.twig'
- '@LcShop/backend/form/ckeditor_widget.html.twig'
list:
max_results: 30
actions:
- { name: 'edit', icon: 'pencil'}
- { name: 'delete', icon: 'trash'}
formats:
date: 'd/m/Y'
time: 'h:i A e'

+ 126
- 115
ShopBundle/Resources/public/css/backend/custom.css View File

@@ -57,149 +57,160 @@ body {
margin-bottom: 0px;
}

/* line 32, ../../sass/backend/custom.scss */
a.link-as-text {
color: #333;
}

/***************************************** ADMIN SIDEBAR ***************************************/
/* line 34, ../../sass/backend/custom.scss */
/* line 36, ../../sass/backend/custom.scss */
.main-sidebar p {
font-size: 0.8rem;
}

/* line 35, ../../sass/backend/custom.scss */
/* line 37, ../../sass/backend/custom.scss */
.main-sidebar .sidebar {
padding-left: 0px;
padding-right: 0px;
margin-top: 57px;
}

/* line 36, ../../sass/backend/custom.scss */
/* line 38, ../../sass/backend/custom.scss */
.main-sidebar .nav-link {
padding: .4rem .5rem .4rem .7rem;
}

/* line 41, ../../sass/backend/custom.scss */
/* line 43, ../../sass/backend/custom.scss */
#lc-flash-messages {
display: none;
}

/* line 43, ../../sass/backend/custom.scss */
/* line 45, ../../sass/backend/custom.scss */
.main-sidebar .logo-long {
padding: 8px 0;
text-align: center;
}

/* line 44, ../../sass/backend/custom.scss */
/* line 46, ../../sass/backend/custom.scss */
.main-sidebar .logo-long img {
height: 40px;
display: inline-block;
}

/* line 45, ../../sass/backend/custom.scss */
/* line 47, ../../sass/backend/custom.scss */
.sidebar-collapse .main-sidebar .logo-long span {
display: none;
}

/* line 46, ../../sass/backend/custom.scss */
/* line 48, ../../sass/backend/custom.scss */
.sidebar-collapse .main-sidebar:hover .logo-long span {
display: inline-block;
}

/* line 48, ../../sass/backend/custom.scss */
/* line 50, ../../sass/backend/custom.scss */
.table.datatable-simple .highlight {
background: var(--teal);
}

/* line 49, ../../sass/backend/custom.scss */
/* line 51, ../../sass/backend/custom.scss */
.datatable-field-search.small {
width: 50px;
}

/* line 51, ../../sass/backend/custom.scss */
/* line 53, ../../sass/backend/custom.scss */
.dataTables_length, .dataTables_filter {
padding: .75rem 1.25rem 0.25rem;
}

/* line 53, ../../sass/backend/custom.scss */
/* line 55, ../../sass/backend/custom.scss */
table.fixedHeader-floating {
margin-top: 0px !important;
}

/* line 54, ../../sass/backend/custom.scss */
/* line 56, ../../sass/backend/custom.scss */
table th.sorting_asc, table th.sorting_desc {
border-top: 3px solid var(--success);
}

/* line 55, ../../sass/backend/custom.scss */
/* line 57, ../../sass/backend/custom.scss */
.card-body table.lc-table-list th.sorted, table th.sorting_asc, table th.sorting_desc {
border-top: 2px solid var(--success);
}

/*.card-body table.lc-table-list th{border-top:3px solid var(--success);}*/
/* line 57, ../../sass/backend/custom.scss */
/* line 59, ../../sass/backend/custom.scss */
table th.filtered {
border-top: 3px solid var(--primary);
}

/* line 60, ../../sass/backend/custom.scss */
/* line 62, ../../sass/backend/custom.scss */
.lc-table-list thead a {
color: #212529;
}

/* line 61, ../../sass/backend/custom.scss */
/* line 63, ../../sass/backend/custom.scss */
.table-filters-line th {
font-weight: 400;
position: relative;
}

/* line 62, ../../sass/backend/custom.scss */
/* line 64, ../../sass/backend/custom.scss */
.table-filters-line th input {
width: 350px;
}

/* line 65, ../../sass/backend/custom.scss */
#list_filter_id {
width: 60px;
}

/* line 63, ../../sass/backend/custom.scss */
/* line 66, ../../sass/backend/custom.scss */
.lc-table-list .date-range {
width: 130px;
}

/* line 65, ../../sass/backend/custom.scss */
/* line 68, ../../sass/backend/custom.scss */
th.actions, td.actions {
white-space: nowrap;
text-align: right;
}

/* line 67, ../../sass/backend/custom.scss */
/* line 70, ../../sass/backend/custom.scss */
.table td, .table th {
padding: 0.35rem;
}

/* line 68, ../../sass/backend/custom.scss */
/* line 71, ../../sass/backend/custom.scss */
.delivery-field .form-group {
display: inline-block;
margin-bottom: 0px;
margin-right: 15px;
}

/* line 69, ../../sass/backend/custom.scss */
/* line 72, ../../sass/backend/custom.scss */
.delivery-field .form-group .form-control {
width: 150px;
}

/* line 71, ../../sass/backend/custom.scss */
/* line 74, ../../sass/backend/custom.scss */
table th input {
width: auto;
}

/* line 72, ../../sass/backend/custom.scss */
/* line 75, ../../sass/backend/custom.scss */
table th .select2-container--default .select2-selection--single {
padding: 0.3rem 0.4rem;
}

/************************ LOGIN PAGE *********************/
/* line 75, ../../sass/backend/custom.scss */
/* line 78, ../../sass/backend/custom.scss */
.login-logo {
display: block;
margin: auto;
}

/************************ form error *********************/
/* line 78, ../../sass/backend/custom.scss */
/* line 81, ../../sass/backend/custom.scss */
.form-sent .form-control:invalid {
border-color: #dc3545;
padding-right: 2.25rem;
@@ -209,19 +220,19 @@ table th .select2-container--default .select2-selection--single {
background-size: calc(.75em + .375rem) calc(.75em + .375rem);
}

/* line 79, ../../sass/backend/custom.scss */
/* line 82, ../../sass/backend/custom.scss */
.form-sent select.form-control:invalid + .select2 .select2-selection {
border-color: #dc3545;
}

/* line 80, ../../sass/backend/custom.scss */
/* line 83, ../../sass/backend/custom.scss */
.form-sent select.form-control:invalid + .select2 .select2-selection b {
border-color: #dc3545 transparent transparent transparent;
}

/*CUSTOM Checkbox
/* Customize the label (the container) */
/* line 85, ../../sass/backend/custom.scss */
/* line 88, ../../sass/backend/custom.scss */
.form-check-label {
display: block;
position: relative;
@@ -234,7 +245,7 @@ table th .select2-container--default .select2-selection--single {
}

/* Hide the browser's default checkbox */
/* line 87, ../../sass/backend/custom.scss */
/* line 90, ../../sass/backend/custom.scss */
.form-check-label input {
position: absolute;
opacity: 0;
@@ -244,22 +255,22 @@ table th .select2-container--default .select2-selection--single {
}

/* Create a custom checkbox */
/* line 90, ../../sass/backend/custom.scss */
/* line 93, ../../sass/backend/custom.scss */
.form-check {
padding-left: 0px;
}

/* line 92, ../../sass/backend/custom.scss */
/* line 95, ../../sass/backend/custom.scss */
.form-sent .form-check-label input:invalid ~ .checkmark {
border-color: #dc3545;
}

/* line 93, ../../sass/backend/custom.scss */
/* line 96, ../../sass/backend/custom.scss */
.form-check-label input:disabled ~ .checkmark {
display: none;
}

/* line 94, ../../sass/backend/custom.scss */
/* line 97, ../../sass/backend/custom.scss */
.form-check-label input ~ .checkmark {
position: absolute;
top: 0;
@@ -270,36 +281,36 @@ table th .select2-container--default .select2-selection--single {
border: 1px solid var(--primary);
}

/* line 95, ../../sass/backend/custom.scss */
/* line 98, ../../sass/backend/custom.scss */
.form-check-label.big input ~ .checkmark {
height: 21px;
width: 21px;
}

/* line 96, ../../sass/backend/custom.scss */
/* line 99, ../../sass/backend/custom.scss */
.form-check-label input[type="checkbox"] ~ .checkmark {
top: 2px;
}

/* line 97, ../../sass/backend/custom.scss */
/* line 100, ../../sass/backend/custom.scss */
.form-check-label input[type="radio"] ~ .checkmark {
top: 3px;
border-radius: 50%;
}

/* line 98, ../../sass/backend/custom.scss */
/* line 101, ../../sass/backend/custom.scss */
.form-check-label:hover input ~ .checkmark {
background-color: #ccc;
}

/* When the checkbox is checked, add a blue background */
/* line 100, ../../sass/backend/custom.scss */
/* line 103, ../../sass/backend/custom.scss */
.form-check-label input:checked ~ .checkmark {
background-color: var(--primary);
}

/* Create the checkmark/indicator (hidden when not checked) */
/* line 102, ../../sass/backend/custom.scss */
/* line 105, ../../sass/backend/custom.scss */
.form-check-label .checkmark:after {
content: "";
position: absolute;
@@ -307,13 +318,13 @@ table th .select2-container--default .select2-selection--single {
}

/* Show the checkmark when checked */
/* line 104, ../../sass/backend/custom.scss */
/* line 107, ../../sass/backend/custom.scss */
.form-check-label input:checked ~ .checkmark:after {
display: block;
}

/* Style the checkmark/indicator */
/* line 106, ../../sass/backend/custom.scss */
/* line 109, ../../sass/backend/custom.scss */
.form-check-label .checkmark:after {
left: 7px;
top: 3px;
@@ -326,7 +337,7 @@ table th .select2-container--default .select2-selection--single {
transform: rotate(45deg);
}

/* line 107, ../../sass/backend/custom.scss */
/* line 110, ../../sass/backend/custom.scss */
.form-check-label input[type="checkbox"] ~ .checkmark:after {
left: 6px;
top: 2px;
@@ -339,7 +350,7 @@ table th .select2-container--default .select2-selection--single {
transform: rotate(45deg);
}

/* line 108, ../../sass/backend/custom.scss */
/* line 111, ../../sass/backend/custom.scss */
.form-check-label input[type="radio"] ~ .checkmark:after {
top: 4px;
left: 4px;
@@ -349,7 +360,7 @@ table th .select2-container--default .select2-selection--single {
background: white;
}

/* line 110, ../../sass/backend/custom.scss */
/* line 113, ../../sass/backend/custom.scss */
.form-check-label.big input[type="checkbox"] ~ .checkmark:after {
left: 7px;
top: 3px;
@@ -358,101 +369,101 @@ table th .select2-container--default .select2-selection--single {
}

/* Create a custom radio button */
/* line 114, ../../sass/backend/custom.scss */
/* line 117, ../../sass/backend/custom.scss */
.product-categories .parent .form-group.field-checkbox .form-check-label {
padding-left: 0px;
font-style: italic;
}

/* line 115, ../../sass/backend/custom.scss */
/* line 118, ../../sass/backend/custom.scss */
.product-categories .children .form-group.field-checkbox {
margin-left: 20px;
}

/* line 116, ../../sass/backend/custom.scss */
/* line 119, ../../sass/backend/custom.scss */
.product-categories .form-group {
margin-bottom: 0.15rem;
}

/* line 117, ../../sass/backend/custom.scss */
/* line 120, ../../sass/backend/custom.scss */
.lc-deleted-field {
display: none;
}

/* line 118, ../../sass/backend/custom.scss */
/* line 121, ../../sass/backend/custom.scss */
.lc-offline-field {
opacity: 0.5;
}

/* line 119, ../../sass/backend/custom.scss */
/* line 122, ../../sass/backend/custom.scss */
.lc-offline-field label::after {
content: ' [hors ligne]';
}

/* Général */
/* line 125, ../../sass/backend/custom.scss */
/* line 128, ../../sass/backend/custom.scss */
.btn.action-save {
float: right;
margin-left: 10px;
}

/* line 126, ../../sass/backend/custom.scss */
/* line 129, ../../sass/backend/custom.scss */
.button-action a.float-right {
margin-left: 10px;
}

/* line 128, ../../sass/backend/custom.scss */
/* line 131, ../../sass/backend/custom.scss */
.input-group-text {
padding: 0.25rem 0.75rem;
}

/* line 132, ../../sass/backend/custom.scss */
/* line 135, ../../sass/backend/custom.scss */
.col-form-label {
font-weight: bold;
}

/* line 134, ../../sass/backend/custom.scss */
/* line 137, ../../sass/backend/custom.scss */
#toast-container.toast-top-right {
top: 60px;
}

/* SIDEBAR */
/* line 137, ../../sass/backend/custom.scss */
/* line 140, ../../sass/backend/custom.scss */
.main-header.navbar {
padding: 0;
min-height: 57px;
}

/* line 138, ../../sass/backend/custom.scss */
/* line 141, ../../sass/backend/custom.scss */
.lc-navbar li {
border-left: 1px solid #e0e0e0;
padding: 0.5rem 1.5rem;
}

/* line 139, ../../sass/backend/custom.scss */
/* line 142, ../../sass/backend/custom.scss */
.lc-navbar li label {
margin-bottom: 0;
vertical-align: middle;
font-weight: normal !important;
}

/* line 141, ../../sass/backend/custom.scss */
/* line 144, ../../sass/backend/custom.scss */
#switch-merchant {
min-width: 170px;
}

/* Sortable */
/* line 147, ../../sass/backend/custom.scss */
/* line 150, ../../sass/backend/custom.scss */
.ui-sortable-helper {
display: table;
}

/* line 148, ../../sass/backend/custom.scss */
/* line 151, ../../sass/backend/custom.scss */
.ui-state-highlight {
background: #eee;
}

/* line 149, ../../sass/backend/custom.scss */
/* line 152, ../../sass/backend/custom.scss */
.lc-sortable div:last-child {
display: none;
}
@@ -469,13 +480,13 @@ table th .select2-container--default .select2-selection--single {
.lc-ckfinder-wrap .lc-ckfinder-button{width: 100%; bottom: 0px; left: 0; position: absolute;}
*/
/* VUES JS */
/* line 164, ../../sass/backend/custom.scss */
/* line 167, ../../sass/backend/custom.scss */
.nav-item .btn {
padding-right: 15px;
position: relative;
}

/* line 165, ../../sass/backend/custom.scss */
/* line 168, ../../sass/backend/custom.scss */
.nav-item .btn .invalid-form {
display: none;
position: absolute;
@@ -487,67 +498,67 @@ table th .select2-container--default .select2-selection--single {
font-size: 1.2rem;
}

/* line 166, ../../sass/backend/custom.scss */
/* line 169, ../../sass/backend/custom.scss */
.nav-item.has-invalid .btn .invalid-form {
display: inline-block;
z-index: 2;
}

/* ProductFamily */
/* line 171, ../../sass/backend/custom.scss */
/* line 174, ../../sass/backend/custom.scss */
.field-unit-quantity {
border-bottom: 2px dotted #eee;
padding-bottom: 10px;
margin-bottom: 20px;
}

/* line 172, ../../sass/backend/custom.scss */
/* line 175, ../../sass/backend/custom.scss */
.field-reduction-apply {
border-top: 2px dotted #eee;
padding-top: 10px;
margin-top: 20px;
}

/* line 174, ../../sass/backend/custom.scss */
/* line 177, ../../sass/backend/custom.scss */
.new-productfamily #nav-params,
.edit-productfamily #nav-params {
margin-bottom: 30px;
}

/* line 179, ../../sass/backend/custom.scss */
/* line 182, ../../sass/backend/custom.scss */
.new-productfamily #nav-params .btn,
.edit-productfamily #nav-params .btn {
margin-left: 20px;
}

/* line 184, ../../sass/backend/custom.scss */
/* line 187, ../../sass/backend/custom.scss */
.new-productfamily #product-categories .row,
.edit-productfamily #product-categories .row {
padding: 10px;
}

/* line 189, ../../sass/backend/custom.scss */
/* line 192, ../../sass/backend/custom.scss */
.new-productfamily #product-categories .form-group,
.edit-productfamily #product-categories .form-group {
width: 100%;
padding: 4px;
}

/* line 195, ../../sass/backend/custom.scss */
/* line 198, ../../sass/backend/custom.scss */
.new-productfamily #product-categories .children,
.edit-productfamily #product-categories .children {
margin-left: 20px;
width: 100%;
}

/* line 201, ../../sass/backend/custom.scss */
/* line 204, ../../sass/backend/custom.scss */
.new-productfamily ul.products,
.edit-productfamily ul.products {
padding: 0px;
list-style-type: none;
}

/* line 207, ../../sass/backend/custom.scss */
/* line 210, ../../sass/backend/custom.scss */
.new-productfamily ul.products li.product,
.edit-productfamily ul.products li.product {
padding: 0px;
@@ -555,55 +566,55 @@ table th .select2-container--default .select2-selection--single {
position: relative;
}

/* line 214, ../../sass/backend/custom.scss */
/* line 217, ../../sass/backend/custom.scss */
.new-productfamily ul.products li.add,
.edit-productfamily ul.products li.add {
text-align: right;
}

/* line 219, ../../sass/backend/custom.scss */
/* line 222, ../../sass/backend/custom.scss */
.autoresize textarea {
height: auto;
min-height: 38px;
}

/* line 221, ../../sass/backend/custom.scss */
/* line 224, ../../sass/backend/custom.scss */
.field-price .input-group.buyingPrice input, .field-price .input-group.buyingPrice .input-group-text {
font-weight: bold;
border-color: #222;
}

/* line 222, ../../sass/backend/custom.scss */
/* line 225, ../../sass/backend/custom.scss */
.field-price .input-group.buyingPriceByRefUnit input, .field-price .input-group.buyingPriceByRefUnit .input-group-text {
font-weight: bold;
border-color: #222;
}

/* line 223, ../../sass/backend/custom.scss */
/* line 226, ../../sass/backend/custom.scss */
.field-price .input-group.priceWithTax input, .field-price .input-group.priceWithTax .input-group-text {
font-weight: bold;
border-color: #222;
}

/* line 224, ../../sass/backend/custom.scss */
/* line 227, ../../sass/backend/custom.scss */
.field-price .input-group.priceByRefUnitWithTax input, .field-price .input-group.priceByRefUnitWithTax .input-group-text {
font-weight: bold;
border-color: #222;
}

/* line 225, ../../sass/backend/custom.scss */
/* line 228, ../../sass/backend/custom.scss */
.input-group.multiplyingFactor input, .input-group.multiplyingFactor .input-group-text {
font-weight: bold;
border-color: #222;
}

/* ORDER */
/* line 231, ../../sass/backend/custom.scss */
/* line 234, ../../sass/backend/custom.scss */
.table-order-summary {
width: 100%;
}

/* line 234, ../../sass/backend/custom.scss */
/* line 237, ../../sass/backend/custom.scss */
.order-product-item.redelivery {
background: rgba(18, 104, 253, 0.38) !important;
}
@@ -611,36 +622,36 @@ table th .select2-container--default .select2-selection--single {
/*.select2-container--bootstrap .select2-selection{max-width: none;}*/
/*.order-product-item{margin: 15px 0; padding: 0;}*/
/* Product */
/* line 239, ../../sass/backend/custom.scss */
/* line 242, ../../sass/backend/custom.scss */
.product-form-modal {
display: none;
}

/* line 240, ../../sass/backend/custom.scss */
/* line 243, ../../sass/backend/custom.scss */
.product-form.modal .form-check-label {
font-style: italic;
color: #666;
text-align: left;
}

/* line 241, ../../sass/backend/custom.scss */
/* line 244, ../../sass/backend/custom.scss */
.products-collection-table .inherited {
color: #888;
font-style: italic;
font-weight: initial;
}

/* line 242, ../../sass/backend/custom.scss */
/* line 245, ../../sass/backend/custom.scss */
.products-collection-table td {
position: relative;
}

/* line 243, ../../sass/backend/custom.scss */
/* line 246, ../../sass/backend/custom.scss */
.card-body.p-0 .products-collection-table tbody > tr > td:first-of-type, .card-body.p-0 .products-collection-table tbody > tr > th:first-of-type, .card-body.p-0 .products-collection-table thead > tr > td:first-of-type, .card-body.p-0 .products-collection-table thead > tr > th:first-of-type {
padding-left: 0.35rem;
}

/* line 244, ../../sass/backend/custom.scss */
/* line 247, ../../sass/backend/custom.scss */
.products-collection-table .btn-empty-field {
position: absolute;
right: 3px;
@@ -649,14 +660,14 @@ table th .select2-container--default .select2-selection--single {
padding: 0px;
}

/* line 245, ../../sass/backend/custom.scss */
/* line 248, ../../sass/backend/custom.scss */
#lc-product-family-edit .products-collection-table {
table-layout: fixed;
/* background-clip: padding-box;*/
border-collapse: collapse;
}

/* line 246, ../../sass/backend/custom.scss */
/* line 249, ../../sass/backend/custom.scss */
#lc-product-family-edit .products-collection-table th {
font-size: 13px;
border-left: 1px solid #dee2e6;
@@ -665,22 +676,22 @@ table th .select2-container--default .select2-selection--single {
border-bottom: 2px solid #dee2e6;
}

/* line 247, ../../sass/backend/custom.scss */
/* line 250, ../../sass/backend/custom.scss */
#lc-product-family-edit .products-collection-table tfoot th {
border-top: 2px solid #dee2e6;
}

/* line 248, ../../sass/backend/custom.scss */
/* line 251, ../../sass/backend/custom.scss */
#lc-product-family-edit .products-collection-table th span {
white-space: initial;
}

/* line 249, ../../sass/backend/custom.scss */
/* line 252, ../../sass/backend/custom.scss */
#lc-product-family-edit .products-collection-table th:last-child {
border-right: 1px solid #dee2e6;
}

/* line 250, ../../sass/backend/custom.scss */
/* line 253, ../../sass/backend/custom.scss */
#lc-product-family-edit .products-collection-table td {
border-left: 1px solid #dee2e6;
text-align: center;
@@ -688,26 +699,26 @@ table th .select2-container--default .select2-selection--single {
border-bottom: 1px solid #dee2e6;
}

/* line 251, ../../sass/backend/custom.scss */
/* line 254, ../../sass/backend/custom.scss */
#lc-product-family-edit .products-collection-table td:last-child {
border-right: 1px solid #dee2e6;
white-space: nowrap;
}

/* line 252, ../../sass/backend/custom.scss */
/* line 255, ../../sass/backend/custom.scss */
#lc-product-family-edit .btn-add-product {
margin: 20px 0;
float: right;
}

/* line 253, ../../sass/backend/custom.scss */
/* line 256, ../../sass/backend/custom.scss */
#lc-product-family-edit .inherited {
color: #888;
font-style: italic;
font-weight: initial;
}

/* line 254, ../../sass/backend/custom.scss */
/* line 257, ../../sass/backend/custom.scss */
#lc-product-family-edit .products-collection-table td .value {
min-width: 80%;
margin: auto;
@@ -715,73 +726,73 @@ table th .select2-container--default .select2-selection--single {
cursor: pointer;
}

/* line 255, ../../sass/backend/custom.scss */
/* line 258, ../../sass/backend/custom.scss */
#lc-product-family-edit .products-collection-table td .modal {
text-align: left;
}

/* line 256, ../../sass/backend/custom.scss */
/* line 259, ../../sass/backend/custom.scss */
table.products-collection-table th.main-info, td.buyingPrice, td.multiplyingFactor, td.priceWithTax {
background: #eeeeee;
background-clip: padding-box;
}

/* line 258, ../../sass/backend/custom.scss */
/* line 261, ../../sass/backend/custom.scss */
table.products-collection-table tr.disabled {
opacity: 0.5;
}

/* DeliveryZone */
/* line 263, ../../sass/backend/custom.scss */
/* line 266, ../../sass/backend/custom.scss */
#autocomplete-cities {
position: relative;
}

/* line 267, ../../sass/backend/custom.scss */
/* line 270, ../../sass/backend/custom.scss */
#autocomplete-cities .ui-autocomplete {
left: 30%;
top: 41px;
margin-left: 18px;
}

/* line 273, ../../sass/backend/custom.scss */
/* line 276, ../../sass/backend/custom.scss */
.head-reminders {
margin-top: 15px;
}

/* TABLEAU DE BORD */
/* line 276, ../../sass/backend/custom.scss */
/* line 279, ../../sass/backend/custom.scss */
.todo-list > li {
position: relative;
}

/* line 277, ../../sass/backend/custom.scss */
/* line 280, ../../sass/backend/custom.scss */
.todo-list > li .text {
margin-left: 30px;
}

/* line 278, ../../sass/backend/custom.scss */
/* line 281, ../../sass/backend/custom.scss */
.todo-list > li .tools {
position: absolute;
top: 4px;
right: 15px;
}

/* line 280, ../../sass/backend/custom.scss */
/* line 283, ../../sass/backend/custom.scss */
#addTicketMessageForm {
margin-top: 30px;
border-top: 2px dotted #eee;
padding-top: 30px;
}

/* line 282, ../../sass/backend/custom.scss */
/* line 285, ../../sass/backend/custom.scss */
#dashboard .list-btn-statistic {
display: flex;
flex-wrap: wrap;
justify-content: center;
}

/* line 283, ../../sass/backend/custom.scss */
/* line 286, ../../sass/backend/custom.scss */
#dashboard .btn-statistic {
width: 120px;
height: 70px;
@@ -790,13 +801,13 @@ table.products-collection-table tr.disabled {
line-height: 1rem;
}

/* line 284, ../../sass/backend/custom.scss */
/* line 287, ../../sass/backend/custom.scss */
#dashboard .btn-statistic small {
margin-bottom: 10px;
display: block;
}

/* line 285, ../../sass/backend/custom.scss */
/* line 288, ../../sass/backend/custom.scss */
#dashboard .btn-statistic .value {
display: block;
}

+ 1
- 0
ShopBundle/Resources/public/js/backend/plugin/autocomplete/bootstrap-autocomplete.min.js
File diff suppressed because it is too large
View File


+ 33
- 2
ShopBundle/Resources/public/js/backend/script/default/init-list.js View File

@@ -2,11 +2,15 @@ jQuery(document).ready(function () {
initDeleteAction();

initResetFilters();

initAutocompleteField();

initDropdown();
});

function initDeleteAction() {

$('.action-delete').each(function (){
$('.action-delete').each(function () {
$(this).on('click', function (e) {
e.preventDefault();
const id = $(this).parents('tr').first().data('id');
@@ -24,9 +28,36 @@ function initDeleteAction() {


function initResetFilters() {
$('.lc-reset-filters').on('click',function () {
$('.lc-reset-filters').on('click', function () {
$(this).parents('form').find('.form-control').val('').trigger('change');

})

}

function initAutocompleteField() {


var autocompleteFields = $('[data-lc-autocomplete-url]');

autocompleteFields.each(function () {
var $this = $(this),
url = $this.data('lc-autocomplete-url');

$this.autoComplete({
noResultsText: 'Aucun résultat n\'a été trouvé.',
resolverSettings: {
url: url
}
});
});
}


function initDropdown(){
$('.dropdown-toggle').hover(function() {
$(this).find('.dropdown-menu').stop(true, true).delay(50).fadeIn();
}, function() {
$(this).find('.dropdown-menu').stop(true, true).delay(50).fadeOut();
});
}

+ 4
- 1
ShopBundle/Resources/public/sass/backend/custom.scss View File

@@ -29,6 +29,8 @@ body{font-size: 0.9rem;}

.card-tools h5{margin-bottom: 0px;}

a.link-as-text{color:#333;}


/***************************************** ADMIN SIDEBAR ***************************************/
.main-sidebar p{font-size: 0.8rem;}
@@ -58,7 +60,8 @@ table th.filtered{border-top:3px solid var(--primary);}


.lc-table-list thead a{color: #212529}
.table-filters-line th {font-weight: 400;}
.table-filters-line th {font-weight: 400; position: relative;}
.table-filters-line th input{width: 350px;}
#list_filter_id{width: 60px;}
.lc-table-list .date-range{width: 130px;}


+ 2
- 0
ShopBundle/Resources/translations/lcshop.fr.yaml View File

@@ -11,6 +11,8 @@ list:
edit: Éditer
delete: Supprimer
send: Envoyer
duplicate: Dupliquer
duplicateOtherHub: Dupliquer sur un autre hub

group:
main: Général

+ 0
- 6
ShopBundle/Resources/views/backend/default/action.html.twig View File

@@ -1,6 +0,0 @@

<a class="btn {{ is_dropdown|default(false) ? 'dropdown-item' }} {{ action.css_class|default('btn-default') }}" data-toggle="tooltip"
title="{{ action.label|trans(arguments = trans_parameters|merge({ '%entity_id%': item_id }), domain = translation_domain) }}"
href="{{ action_href }}" target="{{ action.target }}">
{%- if action.icon %}<i class="fa fa-fw fa-{{ action.icon }}"></i> {% endif -%}
</a>

+ 13
- 0
ShopBundle/Resources/views/backend/default/block/action.html.twig View File

@@ -0,0 +1,13 @@

{% if is_dropdown %}
<a class="btn dropdown-item {{ action.css_class|default('btn-default') }}" href="{{ action_href }}" target="{{ action.target }}">
{%- if action.icon %}<i class="fa fa-fw fa-{{ action.icon }}"></i> {% endif -%}
{{ action.label|trans(arguments = trans_parameters|merge({ '%entity_id%': item_id }), domain = translation_domain) }}
</a>
{% else %}
<a class="btn {{ is_dropdown|default(false) ? 'dropdown-item' }} {{ action.css_class|default('btn-default') }}" data-toggle="tooltip"
title="{{ action.label|trans(arguments = trans_parameters|merge({ '%entity_id%': item_id }), domain = translation_domain) }}"
href="{{ action_href }}" target="{{ action.target }}">
{%- if action.icon %}<i class="fa fa-fw fa-{{ action.icon }}"></i> {% endif -%}
</a>
{% endif %}

+ 58
- 0
ShopBundle/Resources/views/backend/default/block/actions.html.twig View File

@@ -0,0 +1,58 @@
{% set dropdownAction ={} %}
{% for action in actions %}


{% if action.group is defined and action.group==true %}
{% set dropdownAction = dropdownAction|merge({(loop.index0): action}) %}
{% else %}
{% if 'list' == action.name %}
{% set action_href = request_parameters.referer|default('') ? request_parameters.referer|easyadmin_urldecode : path('easyadmin', request_parameters|merge({ action: 'list' })) %}
{% elseif 'method' == action.type %}
{% set action_href = path('easyadmin', request_parameters|merge({ action: action.name, id: item_id })) %}
{% elseif 'route' == action.type %}
{% set action_href = path(action.name, request_parameters|merge({ action: action.name, id: item_id })) %}
{% endif %}

{{ include(action.template, {
action: action,
action_href: action_href,
is_dropdown: is_dropdown|default(false),
item: item,
item_id: item_id,
request_parameters: request_parameters,
translation_domain: translation_domain,
trans_parameters: trans_parameters,
}, with_context = false) }}
{% endif %}
{% endfor %}
{% if dropdownAction|length > 0 %}
<div class="btn-group">
<button type="button" class="btn btn-sm btn-secondary dropdown-toggle dropdown-icon" aria-expanded="false">
<span class="sr-only">Toggle Dropdown</span>
<div class="dropdown-menu dropdown-menu-right" role="menu">
{% for action in dropdownAction %}

{% if 'list' == action.name %}
{% set action_href = request_parameters.referer|default('') ? request_parameters.referer|easyadmin_urldecode : path('easyadmin', request_parameters|merge({ action: 'list' })) %}
{% elseif 'method' == action.type %}
{% set action_href = path('easyadmin', request_parameters|merge({ action: action.name, id: item_id })) %}
{% elseif 'route' == action.type %}
{% set action_href = path(action.name, request_parameters|merge({ action: action.name, id: item_id })) %}
{% endif %}

{{ include(action.template, {
action: action,
action_href: action_href,
is_dropdown: true,
item: item,
item_id: item_id,
request_parameters: request_parameters,
translation_domain: translation_domain,
trans_parameters: trans_parameters,
}, with_context = false) }}
{% endfor %}
</div>
</button>
</div>

{% endif %}

+ 22
- 6
ShopBundle/Resources/views/backend/default/list-fields/field_product_family_available_quantity.html.twig View File

@@ -2,34 +2,50 @@
{% if item.getBehaviorCountStock() == constant("Lc\\ShopBundle\\Model\\ProductFamily::BEHAVIOR_COUNT_STOCK_BY_MEASURE") %}
{% if value_is_set %}
{{ _self.badge_stock_start(value) }}
{{ _self.badge_stock_renewable(item.behaviorStockWeek) }}
{{ value }} {{ item.getUnit().getUnit() }}
{{ _self.badge_stock_end() }}
{% else %}
{{ _self.no_stock() }}
{{ _self.no_stock(item.behaviorStockWeek) }}
{% endif %}
{% elseif item.getBehaviorCountStock() == constant("Lc\\ShopBundle\\Model\\ProductFamily::BEHAVIOR_COUNT_STOCK_BY_PRODUCT_FAMILY") %}
{% if value_is_set %}
{{ _self.badge_stock_start(value) }}
{{ _self.badge_stock_renewable(item.behaviorStockWeek) }}
{{ value }} pièce{% if value > 1 %}s{% endif %}
{{ _self.badge_stock_end() }}
{% else %}
{{ _self.no_stock() }}
{{ _self.no_stock(item.behaviorStockWeek) }}
{% endif %}
{% elseif item.getBehaviorCountStock() == constant("Lc\\ShopBundle\\Model\\ProductFamily::BEHAVIOR_COUNT_STOCK_BY_PRODUCT") %}
{% set available_quantity_products = item.getAvailableQuantityInherited() %}
{% if available_quantity_products > 0 %}
{{ _self.badge_stock_start(available_quantity_products) }}
{{ _self.badge_stock_renewable(item.behaviorStockWeek) }}
{{ available_quantity_products }} pièce{% if available_quantity_products > 1 %}s{% endif %} (déclinaisons)
{{ _self.badge_stock_end() }}
{% else %}
{{ _self.no_stock() }}
{{ _self.no_stock(item.behaviorStockWeek) }}
{% endif %}
{% elseif item.getBehaviorCountStock() == constant("Lc\\ShopBundle\\Model\\ProductFamily::BEHAVIOR_COUNT_STOCK_UNLIMITED") %}
<span class="badge badge-success">Illimité</span>
{% endif %}

{% macro no_stock() %}
<span class="badge badge-danger">Pas de stock</span>
{% macro no_stock(behaviorStockWeek) %}
<span class="badge badge-danger">
{{ _self.badge_stock_renewable(behaviorStockWeek) }}
Pas de stock
</span>
{% endmacro %}

{% macro badge_stock_renewable(behaviorStockWeek) %}
{% if behaviorStockWeek == constant('Lc\\ShopBundle\\Model\\ProductFamily::BEHAVIOR_STOCK_WEEK_RENEWABLE') %}
R
{% elseif behaviorStockWeek == constant('Lc\\ShopBundle\\Model\\ProductFamily::BEHAVIOR_STOCK_WEEK_RENEWABLE_VALIDATION') %}
RV
{% elseif behaviorStockWeek == constant('Lc\\ShopBundle\\Model\\ProductFamily::BEHAVIOR_STOCK_WEEK_NON_RENEWABLE') %}
NR
{% endif %}
{% endmacro %}

{% macro badge_stock_start(value) %}
@@ -41,6 +57,6 @@
<span class="badge {{ badge_class }}">
{% endmacro %}

{% macro badge_stock_end() %}
{% macro badge_stock_end() %}
</span>
{% endmacro %}

+ 15
- 6
ShopBundle/Resources/views/backend/default/list.html.twig View File

@@ -199,7 +199,11 @@
</div>
{% else %}
<div class="form-widget input-group-sm">
{{ form_widget(filters_form[field]) }}
{{ form_widget(filters_form[field], {'attr': {'autocomplete': 'off', 'data-lc-autocomplete-url' : path('easyadmin', {
action: 'autocomplete',
field: field,
entity: _entity_config.name,
})|raw }}) }}
</div>
{% endif %}

@@ -253,8 +257,15 @@
{% set isSortingField = metadata.property == app.request.get('sortField') %}
{% set _column_label = (metadata.label ?: field|humanize)|trans(_trans_parameters) %}


<td class="{{ isSortingField ? 'sorted' }} {{ metadata.dataType|lower }} {{ metadata.css_class }}" {{ easyadmin_config('design.rtl') ? 'dir="rtl"' }}>
{{ easyadmin_render_field_for_list_view(_entity_config.name, item, metadata) }}
{% if (field == 'title' or field== 'id') and (metadata.dataType=="string" or metadata.dataType=="integer") %}
<a class="link-as-text" href="{{ path('easyadmin', {'action':'edit', 'entity':_entity_config.name, 'id': item.id}) }}">
{{ easyadmin_render_field_for_list_view(_entity_config.name, item, metadata) }}
</a>
{% else %}
{{ easyadmin_render_field_for_list_view(_entity_config.name, item, metadata) }}
{% endif %}
</td>
{% endfor %}

@@ -262,9 +273,7 @@
{% set _column_label = 'list.row_actions'|trans(_trans_parameters, 'EasyAdminBundle') %}
<td class="actions">
{% block item_actions %}
{% set _actions_template = _entity_config.list.collapse_actions
? '@EasyAdmin/default/includes/_actions_dropdown.html.twig'
: '@EasyAdmin/default/includes/_actions.html.twig' %}
{% set _actions_template = '@LcShop/backend/default/block/actions.html.twig' %}
{{ include(_actions_template, {
actions: _list_item_actions,
entity_config: _entity_config,
@@ -353,6 +362,7 @@
<script src="{{ asset('bundles/lcshop/js/backend/plugin/daterange/moment.min.js') }}"></script>
<script src="{{ asset('bundles/lcshop/js/backend/plugin/daterange/daterangepicker.js') }}"></script>
<script src="{{ asset('bundles/lcshop/js/backend/plugin/datatables/jquery.highlight.js') }}"></script>
<script src="{{ asset('bundles/lcshop/js/backend/plugin/autocomplete/bootstrap-autocomplete.min.js') }}"></script>
{#<script src="{{ asset('bundles/lcshop/js/backend/plugin/datatables/responsive.bootstrap4.min.js') }}"></script>#}
{% endblock %}

@@ -363,7 +373,6 @@

<script type="text/javascript">
$(document).ready(function(){
log('ncihe');
const toggles = document.querySelectorAll('.custom-switch input[type="checkbox"]');
for (i = 0; i < toggles.length; i++) {
toggles[i].addEventListener('change', function () {

+ 4
- 0
ShopBundle/Resources/views/backend/default/new.html.twig View File

@@ -32,6 +32,10 @@
{% block plugin_javascript %}
{{ parent() }}
<script src="{{ asset('bundles/lcshop/js/backend/plugin/jquery-ui/jquery-ui.min.js') }}"></script>
<script type="text/javascript">
var CKEDITOR_BASEPATH = "{{ ckeditor_base_path("/bundles/fosckeditor/") }}";
</script>
<script type="text/javascript" src="{{ asset('bundles/fosckeditor/ckeditor.js') }}"></script>
{% endblock %}

{% block script_javascript %}

+ 7
- 1
ShopBundle/Resources/views/backend/productfamily/macros.html.twig View File

@@ -42,7 +42,13 @@
{% macro product_row(product, totalProductOrdered) %}

<tr class="lc-draggable">
<td>{% verbatim %}{{keyForm}}{% endverbatim %}<i class="fa fa-fw fa-sort"></i></td>
<td>
{% if product.vars.value is not null %}
#{{ product.vars.value.id }}
{% else %}
#new
{% endif %} <br/>
{% verbatim %}{{keyForm}}{% endverbatim %}<i class="fa fa-fw fa-sort"></i></td>
{{ _self.product_field(4, product.title, 'title') }}
{{ _self.product_field(2, product.quantity, 'quantity') }}
{{ _self.product_field(2, product.unit, 'unit', 'unitWording') }}

+ 7
- 0
ShopBundle/Resources/views/backend/productfamily/panel_stock.html.twig View File

@@ -24,7 +24,14 @@

{{ form_label(form.behaviorStockWeek) }}
{% for field in form.behaviorStockWeek %}
{% if field.vars.value == constant('Lc\\ShopBundle\\Model\\ProductFamily::BEHAVIOR_STOCK_WEEK_RENEWABLE') or field.vars.value == constant('Lc\\ShopBundle\\Model\\ProductFamily::BEHAVIOR_STOCK_WEEK_RENEWABLE_VALIDATION') %}
<div v-if="behaviorCountStock != '{{ constant('Lc\\ShopBundle\\Model\\ProductFamily::BEHAVIOR_COUNT_STOCK_UNLIMITED')}}'">
{{ form_widget(field, {"attr" : {"v-model" : 'behaviorStockWeek'}}) }}
</div>
{% else %}
{{ form_widget(field, {"attr" : {"v-model" : 'behaviorStockWeek'}}) }}
{% endif %}

{% endfor %}
</div>
<div class="col">

Loading…
Cancel
Save