ソースを参照

Merge branch 'develop'

master^2
Fab 3年前
コミット
a95cdc4102
20個のファイルの変更459行の追加180行の削除
  1. +61
    -8
      ShopBundle/Controller/Backend/AdminController.php
  2. +1
    -2
      ShopBundle/Controller/Backend/ProductFamilyController.php
  3. +5
    -0
      ShopBundle/Model/PriceTrait.php
  4. +20
    -0
      ShopBundle/Model/ProductFamily.php
  5. +5
    -3
      ShopBundle/Model/ProductPropertyTrait.php
  6. +1
    -0
      ShopBundle/Repository/ProductFamilyRepository.php
  7. +165
    -116
      ShopBundle/Resources/public/css/backend/custom.css
  8. +6
    -2
      ShopBundle/Resources/public/js/backend/script/productfamily/vuejs-product-family.js
  9. +35
    -4
      ShopBundle/Resources/public/sass/backend/custom.scss
  10. +19
    -10
      ShopBundle/Resources/views/backend/default/block/actions.html.twig
  11. +34
    -0
      ShopBundle/Resources/views/backend/default/edit-ajax.html.twig
  12. +6
    -11
      ShopBundle/Resources/views/backend/default/field/toggle.html.twig
  13. +24
    -1
      ShopBundle/Resources/views/backend/default/layout/layout-ajax.html.twig
  14. +21
    -10
      ShopBundle/Resources/views/backend/default/list.html.twig
  15. +2
    -2
      ShopBundle/Resources/views/backend/form/custom_bootstrap_4.html.twig
  16. +7
    -2
      ShopBundle/Resources/views/backend/productfamily/edit.html.twig
  17. +5
    -5
      ShopBundle/Resources/views/backend/productfamily/form.html.twig
  18. +1
    -1
      ShopBundle/Resources/views/backend/productfamily/macros.html.twig
  19. +26
    -3
      ShopBundle/Services/Price/ProductPriceUtils.php
  20. +15
    -0
      ShopBundle/Services/ProductFamilyUtils.php

+ 61
- 8
ShopBundle/Controller/Backend/AdminController.php ファイルの表示

@@ -193,9 +193,12 @@ class AdminController extends EasyAdminController
'entity_class' => $this->entity['class']
));
$this->filtersForm->handleRequest($this->request);

if ($this->filtersForm->isSubmitted() && $this->filtersForm->isValid()) {
$easyadmin = $this->request->attributes->get('easyadmin');
$view = $easyadmin['view'];
if($easyadmin['view']=='listChildren') $view = 'list';
if (($this->filtersForm->isSubmitted() && $this->filtersForm->isValid()) || $this->entity[$view]['filters']!==false) {
foreach ($listFields as $field) {
//if ($this->filtersForm->has($field['property'])->getConfig()->getOption('AdminController')) {
if ($this->filtersForm->has($field['property'])) {
switch ($field['dataType']) {
case 'option':
@@ -203,7 +206,8 @@ class AdminController extends EasyAdminController
case 'text':
case 'string':
case 'toggle':
$filter = $this->filtersForm->get($field['property'])->getData();
$filter = $this->getListFilterParam($field['property']);
//$filter = $this->filtersForm->get($field['property'])->getData();
if ($filter !== null) {

$queryBuilder->andWhere('entity.' . $field['property'] . ' LIKE :' . $field['property'] . '');
@@ -211,8 +215,8 @@ class AdminController extends EasyAdminController
}
break;
case 'association' :
$filter = $this->filtersForm->get($field['property'])->getData();
$filter = $this->getListFilterParam($field['property']);
//$filter = $this->filtersForm->get($field['property'])->getData();
if ($filter !== null) {
if ($field['type_options']['multiple']) {
$queryBuilder->andWhere(':' . $field['property'] . ' MEMBER OF entity.' . $field['property'] . '');
@@ -228,9 +232,8 @@ class AdminController extends EasyAdminController
break;
case 'datetime':
case 'date':
$dateStart = $this->filtersForm->get($field['property'])->get('dateStart')->getData();
$dateEnd = $this->filtersForm->get($field['property'])->get('dateEnd')->getData();

$dateStart = $this->getListFilterParam($field['property'], 'dateStart');
$dateEnd = $this->getListFilterParam($field['property'], 'dateEnd');

if ($dateStart) $queryBuilder->andWhere('entity.' . $field['property'] . ' >= :dateStart')->setParameter('dateStart', $dateStart);
if ($dateEnd) $queryBuilder->andWhere('entity.' . $field['property'] . ' <= :dateEnd')->setParameter('dateEnd', $dateEnd);
@@ -250,6 +253,55 @@ class AdminController extends EasyAdminController
return $queryBuilder;
}

//TODO finaliser la sauvegarde des filtres

protected function getListFilterParam($param, $extraParam = null){
$entityName = $this->entity['name'];
$sessionParam = $entityName.$param.$extraParam;
//CUSTOM
if($extraParam){
$value = $this->filtersForm->get($param)->get($extraParam)->getViewData();
}else{
$value = $this->filtersForm->get($param)->getViewData();
}

if($this->request->query->get('filterClear')){
$this->session->remove($sessionParam);
}else {
if ($value) {
$this->session->set($sessionParam, $value);
} else if ($this->session->get($sessionParam) && !$this->filtersForm->isSubmitted() && $this->filtersForm->get($param)) {
$value = $this->session->get($sessionParam);

if($extraParam){

if($this->filtersForm->get($param)->get($extraParam)->getConfig()->getOption('input')=='datetime'){

$this->filtersForm->get($param)->get($extraParam)->setData(new \DateTime($value));
}else{
$this->filtersForm->get($param)->get($extraParam)->setData($value);
}

}else {
//Champ association
if ($this->filtersForm->get($param)->getConfig()->getOption('class')) {
$valFormated = $this->em->getRepository($this->filtersForm->get($param)->getConfig()->getOption('class'))->find($value);
$this->filtersForm->get($param)->setData($valFormated);
} else {
//Champ noramux
$this->filtersForm->get($param)->setData($value);
}
}

}
}

if($value !== "")return $value;
else return null;

}



public function renderTemplate($actionName, $templatePath, array $parameters = [])
{
@@ -327,6 +379,7 @@ class AdminController extends EasyAdminController
return $this->executeDynamicMethod('render<EntityName>Template', ['list', $this->entity['templates']['list'], $parameters]);
}


protected function getListParam($param, $default =null){
$entityName = $this->entity['name'];
$sessionParam = $entityName.$param;

+ 1
- 2
ShopBundle/Controller/Backend/ProductFamilyController.php ファイルの表示

@@ -208,7 +208,6 @@ class ProductFamilyController extends AdminController

protected function editAction()
{

$this->dispatch(EasyAdminEvents::PRE_EDIT);

$id = $this->request->query->get('id');
@@ -265,7 +264,7 @@ class ProductFamilyController extends AdminController

if ($editForm->get('stayOnPage')->getData() != "false" || $this->request->get('submitAndStay') !== null) {
$refererUrl = $this->request->query->get('referer', '');
return $this->redirectToRoute('easyadmin', ['entity' => 'ProductFamily', 'action' => 'edit', 'id' => $id, 'referer' => $refererUrl]);
return $this->redirectToRoute('easyadmin', ['entity' => 'ProductFamily', 'action' => 'edit', 'id' => $id, 'referer' => $refererUrl, 'ajax' => $this->request->query->get('ajax')]);
} else {
return $this->redirectToReferrer();
}

+ 5
- 0
ShopBundle/Model/PriceTrait.php ファイルの表示

@@ -46,6 +46,11 @@ trait PriceTrait
return $this->getTaxRate() ;
}

public function getBuyingPriceInherited(): ?float
{
return $this->getBuyingPrice() ;
}

public function getBuyingPrice(): ?float
{
return $this->buyingPrice;

+ 20
- 0
ShopBundle/Model/ProductFamily.php ファイルの表示

@@ -887,4 +887,24 @@ abstract class ProductFamily extends AbstractDocumentEntity implements ProductPr

return $this;
}

public function getFieldBuyingPrice()
{
if($this->getBehaviorPrice() === self::BEHAVIOR_PRICE_BY_PIECE) {
return 'buyingPrice' ;
}
elseif($this->getBehaviorPrice() === self::BEHAVIOR_PRICE_BY_REFERENCE_UNIT) {
return 'buyingPriceByRefUnit' ;
}
}

public function getFieldPrice()
{
if($this->getBehaviorPrice() === self::BEHAVIOR_PRICE_BY_PIECE) {
return 'price' ;
}
elseif($this->getBehaviorPrice() === self::BEHAVIOR_PRICE_BY_REFERENCE_UNIT) {
return 'priceByRefUnit' ;
}
}
}

+ 5
- 3
ShopBundle/Model/ProductPropertyTrait.php ファイルの表示

@@ -40,14 +40,16 @@ trait ProductPropertyTrait
*/
protected $propertyExpirationDate;




public function getBuyingPriceByRefUnit(): ?float
{
return $this->buyingPriceByRefUnit;
}

public function getBuyingPriceByRefUnitInherited(): ?float
{
return $this->getBuyingPriceByRefUnit() ;
}

public function setBuyingPriceByRefUnit(?float $buyingPriceByRefUnit): self
{
$this->buyingPriceByRefUnit = $buyingPriceByRefUnit;

+ 1
- 0
ShopBundle/Repository/ProductFamilyRepository.php ファイルの表示

@@ -128,6 +128,7 @@ class ProductFamilyRepository extends BaseRepository implements DefaultRepositor
$query = $this->findByMerchantQuery() ;
$query = $this->joinRelations($query) ;

$query->andWhere('e.status = 1');
$query->andWhere(':section MEMBER OF e.sections')
->setParameter('section', $section) ;
$query->leftJoin('e.productCategories', 'productCategories');

+ 165
- 116
ShopBundle/Resources/public/css/backend/custom.css ファイルの表示

@@ -160,83 +160,106 @@ table.fixedHeader-floating {

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

/* line 61, ../../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.filtered {
border-top: 2px solid var(--primary);
}

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

/* line 64, ../../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);
}

/* line 65, ../../sass/backend/custom.scss */
.card-body table.lc-table-list th.sorted.filtered {
border-top: 0px;
position: relative;
}

/* line 66, ../../sass/backend/custom.scss */
.card-body table.lc-table-list th.sorted.filtered:after {
content: '';
height: 2px;
position: absolute;
left: 0;
width: 100%;
right: 0;
top: -1px;
background: linear-gradient(to right, var(--success) 0%, var(--success) 50%, var(--primary) 50%, var(--primary) 100%);
}

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

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

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

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

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

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

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

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

/* line 78, ../../sass/backend/custom.scss */
/* line 81, ../../sass/backend/custom.scss */
table th input {
width: 100%;
}

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

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

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

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

/* line 87, ../../sass/backend/custom.scss */
/* line 90, ../../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 92, ../../sass/backend/custom.scss */
/* line 95, ../../sass/backend/custom.scss */
.form-check-label {
display: block;
position: relative;
@@ -271,7 +294,7 @@ table th .select2-container--default .select2-selection--single {
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/*************************** PAGINATION *******************************/
/* line 152, ../../sass/backend/custom.scss */
/* line 155, ../../sass/backend/custom.scss */
.pagination {
justify-content: center;
}

/* line 153, ../../sass/backend/custom.scss */
/* line 156, ../../sass/backend/custom.scss */
.disabled .page-link {
color: #343a40;
}

/* line 154, ../../sass/backend/custom.scss */
/* line 157, ../../sass/backend/custom.scss */
.disabled .page-link:hover, .page-link.current:hover {
background-color: #fff;
cursor: default;
}

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

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

/* line 161, ../../sass/backend/custom.scss */
/* line 164, ../../sass/backend/custom.scss */
.lc-sortable div:last-child {
display: none;
}
@@ -523,13 +546,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 176, ../../sass/backend/custom.scss */
/* line 179, ../../sass/backend/custom.scss */
.nav-item .btn {
padding-right: 15px;
position: relative;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

/* line 233, ../../sass/backend/custom.scss */
/* line 236, ../../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 234, ../../sass/backend/custom.scss */
/* line 237, ../../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 235, ../../sass/backend/custom.scss */
/* line 238, ../../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 236, ../../sass/backend/custom.scss */
/* line 239, ../../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 237, ../../sass/backend/custom.scss */
/* line 240, ../../sass/backend/custom.scss */
.input-group.multiplyingFactor input, .input-group.multiplyingFactor .input-group-text {
font-weight: bold;
border-color: #222;
}

/* line 244, ../../sass/backend/custom.scss */
.layout-ajax #edit-productfamily-form .card-sections {
width: 100%;
position: fixed;
left: 0px;
top: 0px;
z-index: 10;
}
/* line 252, ../../sass/backend/custom.scss */
.layout-ajax #edit-productfamily-form .form {
padding-top: 50px;
}
/* line 256, ../../sass/backend/custom.scss */
.layout-ajax #edit-productfamily-form .card-footer {
display: none;
}
/* line 261, ../../sass/backend/custom.scss */
.layout-ajax #edit-productfamily-form .in-advanced-editing-table .form {
padding-top: 0px;
}
/* line 264, ../../sass/backend/custom.scss */
.layout-ajax #edit-productfamily-form .in-advanced-editing-table .card-sections,
.layout-ajax #edit-productfamily-form .in-advanced-editing-table .row-note {
display: none;
}

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

/* line 246, ../../sass/backend/custom.scss */
/* line 277, ../../sass/backend/custom.scss */
.order-product-item.redelivery {
background: rgba(18, 104, 253, 0.38) !important;
}
@@ -665,36 +714,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 251, ../../sass/backend/custom.scss */
/* line 282, ../../sass/backend/custom.scss */
.product-form-modal {
display: none;
}

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

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

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

/* line 255, ../../sass/backend/custom.scss */
/* line 286, ../../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 256, ../../sass/backend/custom.scss */
/* line 287, ../../sass/backend/custom.scss */
.products-collection-table .btn-empty-field {
position: absolute;
right: 3px;
@@ -703,14 +752,14 @@ table th .select2-container--default .select2-selection--single {
padding: 0px;
}

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

/* line 258, ../../sass/backend/custom.scss */
/* line 289, ../../sass/backend/custom.scss */
#lc-product-family-edit .products-collection-table th {
font-size: 13px;
border-left: 1px solid #dee2e6;
@@ -720,22 +769,22 @@ table th .select2-container--default .select2-selection--single {
position: relative;
}

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

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

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

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

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

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

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

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

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

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

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

/* line 271, ../../sass/backend/custom.scss */
/* line 302, ../../sass/backend/custom.scss */
.table-striped tbody .tr-sep {
border-top: 2px solid #888;
}

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

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

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

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

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

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

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

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

/* line 295, ../../sass/backend/custom.scss */
/* line 326, ../../sass/backend/custom.scss */
#dashboard .btn-statistic {
width: 120px;
height: 70px;
@@ -851,62 +900,62 @@ table.products-collection-table tr.disabled {
line-height: 1rem;
}

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

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

/* line 299, ../../sass/backend/custom.scss */
/* line 330, ../../sass/backend/custom.scss */
#dashboard #range_date_interval {
margin-bottom: 20px;
}

/* line 300, ../../sass/backend/custom.scss */
/* line 331, ../../sass/backend/custom.scss */
#dashboard #range_date_interval label {
float: left;
margin-right: 20px;
}

/* line 301, ../../sass/backend/custom.scss */
/* line 332, ../../sass/backend/custom.scss */
#dashboard #range_date_interval .form-check {
float: left;
margin-right: 10px;
}

/* line 302, ../../sass/backend/custom.scss */
/* line 333, ../../sass/backend/custom.scss */
#dashboard .table-condensed .btn, #dashboard .table-condensed .btn-sm {
white-space: nowrap;
}

/* Tickets */
/* line 308, ../../sass/backend/custom.scss */
/* line 339, ../../sass/backend/custom.scss */
#ticket-list .btn-sm {
display: block;
}

/* line 314, ../../sass/backend/custom.scss */
/* line 345, ../../sass/backend/custom.scss */
#toast-container {
width: 350px;
}

/* line 315, ../../sass/backend/custom.scss */
/* line 346, ../../sass/backend/custom.scss */
.toast {
float: right;
}

/* line 317, ../../sass/backend/custom.scss */
/* line 348, ../../sass/backend/custom.scss */
#toast-container:before:hover {
opacity: 1;
cursor: pointer;
}

/* line 321, ../../sass/backend/custom.scss */
/* line 352, ../../sass/backend/custom.scss */
#toast-close-all {
border: 0;
position: absolute;

+ 6
- 2
ShopBundle/Resources/public/js/backend/script/productfamily/vuejs-product-family.js ファイルの表示

@@ -1,6 +1,8 @@
// Reference array sent to dynamic staticRenderFns
var staticRenderFns = [];
$(window).on('load', function () {
/*var appProductFamily ;
lcInitProductFamily() ;*/

Vue.component('product-unit-price', {
mixins: [mixinUnit, mixinPrice, mixinTemplate],
@@ -331,7 +333,6 @@ $(window).on('load', function () {
watch: {}
});


appProductFamily = new Vue({
el: '#lc-product-family-edit',
mixins: [mixinReduction],
@@ -625,5 +626,8 @@ $(window).on('load', function () {
for (var key in formProductTemplate) {
appProductFamily.formProducts[key] = formProductTemplate[key];
}

});

function lcInitProductFamily() {

}

+ 35
- 4
ShopBundle/Resources/public/sass/backend/custom.scss ファイルの表示

@@ -57,10 +57,13 @@ body#pdl-body .wrapper .content-wrapper{margin-top: 0; padding-top: 57px;}
.dataTables_length, .dataTables_filter{padding: .75rem 1.25rem 0.25rem;}

table.fixedHeader-floating{margin-top: 0px !important;}
table th.sorting_asc, table th.sorting_desc{border-top:3px solid var(--success);}
.card-body table.lc-table-list th.sorted, table th.sorting_asc, table th.sorting_desc{border-top:2px solid var(--success);}
table th.sorting_asc, table th.sorting_desc{border-top:2px solid var(--success);}
.card-body table.lc-table-list th.filtered{border-top:2px solid var(--primary);}
/*.card-body table.lc-table-list th{border-top:3px solid var(--success);}*/
table th.filtered{border-top:3px solid var(--primary);}
table th.filtered{border-top:2px solid var(--primary);}
.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.sorted.filtered{border-top:0px; position: relative;}
.card-body table.lc-table-list th.sorted.filtered:after{ content: ''; height: 2px; position: absolute; left: 0; width: 100%; right: 0; top: -1px; background: linear-gradient(to right, var(--success) 0%, var(--success) 50%, var(--primary) 50%, var(--primary) 100%);}


.lc-table-list thead a{color: #212529}
@@ -236,7 +239,35 @@ table th .select2-container--default .select2-selection--single{padding:0.3rem 0
.field-price .input-group.priceByRefUnitWithTax input,.field-price .input-group.priceByRefUnitWithTax .input-group-text{font-weight: bold; border-color: #222 }
.input-group.multiplyingFactor input,.input-group.multiplyingFactor .input-group-text{font-weight: bold; border-color: #222 }


.layout-ajax {
#edit-productfamily-form {
.card-sections {
width: 100%;
position: fixed;
left: 0px;
top: 0px;
z-index: 10;
}

.form {
padding-top: 50px;
}

.card-footer {
display: none;
}

.in-advanced-editing-table {
.form {
padding-top: 0px ;
}
.card-sections,
.row-note {
display: none;
}
}
}
}

/* ORDER */


+ 19
- 10
ShopBundle/Resources/views/backend/default/block/actions.html.twig ファイルの表示

@@ -4,24 +4,33 @@
{% if action.group is defined and action.group==true %}
{% set dropdownAction = dropdownAction|merge({(loop.index0): action}) %}
{% else %}
{% set display_button = true %}

{% 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 })) %}
{% elseif 'productfamily_advanced_editing' == action.type %}
{% set action_href = path('easyadmin', request_parameters|merge({ action: action.action, id: item_id })) %}
{% if action.name == 'products' and not item.activeProducts %}
{% set display_button = false %}
{% endif %}
{% 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) }}
{% if display_button %}
{{ 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 %}
{% endif %}
{% endfor %}
{% if dropdownAction|length > 0 %}

+ 34
- 0
ShopBundle/Resources/views/backend/default/edit-ajax.html.twig ファイルの表示

@@ -0,0 +1,34 @@
{% form_theme form with easyadmin_config('design.form_theme') only %}

{% set _entity_config = easyadmin_entity(app.request.query.get('entity')) %}
{% set _entity_id = attribute(entity, _entity_config.primary_key_field_name) %}
{% trans_default_domain _entity_config.translation_domain %}

{% set _trans_parameters = { '%entity_name%': _entity_config.name|trans, '%entity_label%': _entity_config.label|trans, '%entity_id%': _entity_id } %}

{% extends '@LcShop/backend/default/layout/layout-ajax.html.twig' %}

{% block ajax %}
{% block entity_form %}
{{ form(form) }}
{% endblock entity_form %}

{% block head_stylesheets %}
{{ parent() }}
<link rel="stylesheet"
href="{{ asset('bundles/lcshop/css/backend/adminlte/plugins/jquery-ui/jquery-ui.min.css') }}">
{% endblock %}

{% 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 %}
<script src="{{ asset('bundles/lcshop/js/backend/script/default/init-edit.js') }}"></script>
{% endblock %}
{% endblock %}

+ 6
- 11
ShopBundle/Resources/views/backend/default/field/toggle.html.twig ファイルの表示

@@ -1,14 +1,9 @@
{% trans_default_domain 'EasyAdminBundle' %}

<div class="custom-control custom-switch custom-switch-on-success custom-switch-off-danger" data-propertyname="{{ field_options.property }}">
<input type="checkbox" class="custom-control-input" id="customSwitch{{ item.id }}-{{ field_options.property }}" {{ value == true ? 'checked' }}>
<label class="custom-control-label" for="customSwitch{{ item.id }}-{{ field_options.property }}">{{ field_options.label }}</label>
</div>
{#
{% block toggle %}
<div class="custom-control custom-switch custom-switch-on-success custom-switch-off-danger" data-propertyname="{{ field_options.property }}">
<input type="checkbox" class="custom-control-input" id="customSwitch{{ item.id }}-{{ field_options.property }}" {{ value == true ? 'checked' }}>
<label class="custom-control-label" for="customSwitch{{ item.id }}-{{ field_options.property }}">{% block label %}{{ field_options.label }}{% endblock %}</label>
</div>
{% endblock %}

{% if value == true %}
<span class="badge badge-success">{{ 'label.true'|trans }}</span>
{% else %}
<span class="badge badge-danger">{{ 'label.false'|trans }}</span>
{% endif %}
#}

+ 24
- 1
ShopBundle/Resources/views/backend/default/layout/layout-ajax.html.twig ファイルの表示

@@ -1,5 +1,28 @@
{% trans_default_domain "lcshop" %}

<div class="layout-ajax">
{% block ajax %}
{% block head_stylesheets %}
<link rel="stylesheet" href="{{ asset('bundles/lcshop/css/backend/adminlte/plugins/fontawesome-free/css/all.min.css') }}">
<link rel="stylesheet" href="{{ asset('bundles/lcshop/css/backend/adminlte/adminlte.css') }}">
<link rel="stylesheet" href="{{ asset('bundles/lcshop/css/backend/custom.css') }}">
{% endblock %}

{% endblock %}
{% block plugin_javascript %}
<!-- jQuery -->
<script src="{{ asset('bundles/lcshop/js/backend/plugin/jquery/jquery.min.js') }}"></script>
<!-- Bootstrap 4 -->
<script src="{{ asset('bundles/lcshop/js/backend/plugin/bootstrap/bootstrap.bundle.min.js') }}"></script>
<script src="{{ asset('bundles/lcshop/js/backend/plugin/toastr/toastr.min.js') }}"></script>
<script src="{{ asset('bundles/lcshop/js/backend/plugin/select2/select2.full.min.js') }}"></script>
<script src="{{ asset('bundles/lcshop/js/backend/plugin/bootstrap/bootstrap-switch.min.js') }}"></script>
<!-- AdminLTE App -->
<script src="{{ asset('bundles/lcshop/js/backend/plugin/adminlte.min.js') }}"></script>
<script src="{{ asset('bundles/lcshop/js/backend/script/default/utils.js') }}"></script>
{% endblock plugin_javascript %}

{% block script_javascript %}
<script src="{{ asset('bundles/lcshop/js/backend/script/default/init-common.js') }}"></script>
{% endblock script_javascript %}
{% endblock %}
</div>

+ 21
- 10
ShopBundle/Resources/views/backend/default/list.html.twig ファイルの表示

@@ -87,18 +87,17 @@
{% set _fields_visible_by_user = fields|filter((metadata, field) => easyadmin_is_granted(metadata.permission)) %}
{% set _number_of_hidden_results = 0 %}
{% set _list_item_actions = easyadmin_get_actions_for_list_item(_entity_config.name) %}
<div class="row">
<div class="row" id="{% block list_id %}{% endblock %}">
<div class="col-12">
<div class="card card-outline card-primary">
<div class="card-header">
{% block card_header %}

<h2 class="card-title text-lg ">
<div class="btn-group">
{% set itemsPerPage = [10,20,30,50,100,200] %}
{% for itemPerPage in itemsPerPage %}
<a href="{{ path('easyadmin', _request_parameters|merge({ maxResults: itemPerPage, page : "1" })) }}"
class="btn btn-sm {{ paginator.maxPerPage == itemPerPage ? 'btn-outline-secondary' : 'btn-secondary'}}">{{ itemPerPage }}</a>
class="btn btn-sm {{ paginator.maxPerPage == itemPerPage ? 'btn-outline-secondary' : 'btn-secondary' }}">{{ itemPerPage }}</a>
{% endfor %}

</div>
@@ -217,8 +216,19 @@
{% set nextSortDirection = isSortingField ? (app.request.get('sortDirection') == 'DESC' ? 'ASC' : 'DESC') : 'DESC' %}
{% set _column_label = metadata.label|trans(_trans_parameters) %}
{% set _column_icon = isSortingField ? (nextSortDirection == 'DESC' ? 'fa-arrow-up' : 'fa-arrow-down') : 'fa-sort' %}
{% set isFilteredField = false %}
{% if filters_form[field] is defined and filters_form[field].vars.value is not empty %}
{% if (metadata['dataType'] == 'datetime' or metadata['dataType'] == 'date') %}
{% if filters_form[field]['dateStart'].vars.value is not empty and filters_form[field]['dateEnd'].vars.value is not empty %}
{% set isFilteredField = true %}
{% endif %}
{% else %}
{% set isFilteredField = true %}
{% endif %}
{% endif %}

<th class="{{ isSortingField ? 'sorted' }} {{ metadata.virtual ? 'virtual' }} {{ metadata.dataType|lower }} {{ metadata.css_class }}" {{ easyadmin_config('design.rtl') ? 'dir="rtl"' }}>

<th class="{{ isSortingField ? 'sorted' }} {{ isFilteredField ? 'filtered': '' }} {{ metadata.virtual ? 'virtual' }} {{ metadata.dataType|lower }} {{ metadata.css_class }}" {{ easyadmin_config('design.rtl') ? 'dir="rtl"' }}>
{% if metadata.sortable %}
<a href="{{ path('easyadmin', _request_parameters|merge({ page: 1, sortField: metadata.property, sortDirection: nextSortDirection })) }}">
{{ _column_label|raw }} <i class="fa fa-fw {{ _column_icon }}"></i>
@@ -237,6 +247,7 @@
</tr>
{% endblock table_head %}
{% block table_filters %}
{% set fieldAreNotEmpty = false %}
{% if filters_form is defined %}
<tr class="table-filters-line">
{% if _has_batch_actions %}
@@ -245,6 +256,8 @@
<th>

{% if filters_form[field] is defined %}

{% if filters_form[field].vars.value is not null and filters_form[field].vars.value is not empty %}{% set fieldAreNotEmpty = true %}{% endif %}
{% if metadata['dataType'] == 'datetime' or metadata['dataType'] == 'date' %}
<div class="input-group input-group-sm">
<input type="text"
@@ -282,8 +295,8 @@
aria-label="{{ "action.apply"|trans({}, 'lcshop') }}">
<i class="fa fa-search"></i>
</button>
{% if filters_form.vars.submitted %}
<a href="{{ path('easyadmin', {action: app.request.get('action'), entity: _entity_config.name}) }}"
{% if filters_form.vars.submitted or fieldAreNotEmpty %}
<a href="{{ path('easyadmin', _request_parameters|merge({ 'filterClear' : 'clearAll', list_filter : null, referer : null })) }}"
class="btn btn-sm btn-warning lc-reset-filters"
data-toggle="tooltip"
title="{{ "action.reset"|trans({}, 'lcshop') }}"
@@ -314,8 +327,7 @@
{% else %}
{# the empty string concatenation is needed when the primary key is an object (e.g. an Uuid object) #}
{% set _item_id = '' ~ attribute(item, _entity_config.primary_key_field_name) %}
<tr data-id="{{ _item_id }}">

<tr id="tr-entity-id-{{ _item_id }}" data-id="{{ _item_id }}">
{% if _has_batch_actions %}
<td><input type="checkbox" class="form-batch-checkbox"
value="{{ _item_id }}"></td>
@@ -327,8 +339,7 @@


<td class="{{ isSortingField ? 'sorted' }} {{ metadata.dataType|lower }} {{ metadata.css_class }}" {{ easyadmin_config('design.rtl') ? 'dir="rtl"' }}>
{% if (field == 'title' or field== 'id') and (metadata.dataType=="string" or metadata.dataType=="integer") %}

{% if (field == 'title' or field== 'id') and (metadata.dataType=="string" or metadata.dataType=="integer") and _entity_config.name != 'ProductFamilyAdvancedEditing' %}
<a class="link-as-text"
href="{{ path('easyadmin', _request_parameters|merge({ action: 'edit', id: item.id })) }}">
{{ easyadmin_render_field_for_list_view(_entity_config.name, item, metadata) }}

+ 2
- 2
ShopBundle/Resources/views/backend/form/custom_bootstrap_4.html.twig ファイルの表示

@@ -233,12 +233,12 @@
{% set _translation_domain = easyadmin.entity.translation_domain %}
{% set _trans_parameters = { '%entity_name%': easyadmin.entity.name|trans(domain = _translation_domain), '%entity_label%': easyadmin.entity.label|trans(domain = _translation_domain) } %}

{# the 'save' action is hardcoded for the 'edit' and 'new' views #}
<button type="submit" name="save_and_leave" class="btn btn-primary action-save">
<span class="btn-label">{{ 'action.save'|trans(_trans_parameters, _translation_domain) }}</span>
</button>

{% if easyadmin.entity.name =='ProductFamily' %}
<button name="submitAndStay" value="1" type="submit" class="btn btn-success action-save">
<button name="submitAndStay" value="1" type="submit" class="btn btn-success action-save action-save-and-stay">
<span class="btn-label">{{ 'action.saveAndStay'|trans(_trans_parameters, _translation_domain) }}</span>
</button>
{% endif %}

+ 7
- 2
ShopBundle/Resources/views/backend/productfamily/edit.html.twig ファイルの表示

@@ -1,4 +1,6 @@
{% extends app.request.query.get('action') == 'edit' ? '@LcShop/backend/default/edit.html.twig' : '@LcShop/backend/default/new.html.twig' %}
{% extends app.request.query.get('action') == 'edit'
? (app.request.query.get('ajax') == 1 ? '@LcShop/backend/default/edit-ajax.html.twig' : '@LcShop/backend/default/edit.html.twig')
: '@LcShop/backend/default/new.html.twig' %}

{% block entity_form %}
{% include '@LcShop/backend/productfamily/form.html.twig' %}
@@ -20,5 +22,8 @@
{% block script_javascript %}
{{ parent() }}
{% include '@LcShop/backend/default/block/script-vuejs.html.twig' %}
<script src="{{ asset('bundles/lcshop/js/backend/script/productfamily/vuejs-product-family.js')|lc_cache }}"></script>
<script src="{{ asset('bundles/lcshop/js/backend/script/productfamily/vuejs-product-family.js') }}"></script>
<script>
lcInitProductFamily() ;
</script>
{% endblock %}

+ 5
- 5
ShopBundle/Resources/views/backend/productfamily/form.html.twig ファイルの表示

@@ -3,8 +3,8 @@
{% import '@LcShop/backend/productfamily/macros.html.twig' as product_family_macros %}

{% set formValues = form.vars.value %}
<div id="lc-product-family-edit">
<div class="card card-light">
<div id="lc-product-family-edit" class="{% if app.request.query.get('inAdvancedEditingTable') %}in-advanced-editing-table{% endif %}">
<div class="card card-light card-sections">
<div class="lc-vue-js-container card-header p-0 border-bottom-0">
<ul class="nav nav-tabs" id="nav-params">
<li class="nav-item" v-for="section in sectionsArray">
@@ -17,7 +17,6 @@
<span class="glyphicon glyphicon-triangle-bottom"></span>
<i class="fa fa-exclamation-circle invalid-form"></i>
</a>

</li>
</ul>
</div>
@@ -49,6 +48,8 @@
{% if formValues.activeProducts %}activeProducts: "{{ formValues.activeProducts }}",{% endif %}
{% if formValues.giftVoucherActive %}giftVoucherActive: "{{ formValues.giftVoucherActive }}",{% endif %}
{% if formValues.productsQuantityAsTitle %}productsQuantityAsTitle: {{ formValues.productsQuantityAsTitle }},{% endif %}
{% set current_section = app.request.query.get('currentSection') %}
{% if current_section is defined and current_section|length > 0 %}currentSection: "{{ current_section }}",{% endif %}
{% if form.sections.vars.value %}section: {{ form.sections.vars.value[0] }},{% endif %}

};
@@ -104,7 +105,7 @@
</div>
</div>
{% if entity.note|striptags !="" %}
<div class="row">
<div class="row row-note">
{{ macros.startCard(12, 'ProductFamily.note', 'light') }}
{{ entity.note|raw }}
{{ macros.endCard() }}
@@ -114,7 +115,6 @@
</div>
{{ form_widget(form.stayOnPage, {"attr": {"v-model": "stayOnPage"}}) }}


</div>
{{ form_end(form) }}


+ 1
- 1
ShopBundle/Resources/views/backend/productfamily/macros.html.twig ファイルの表示

@@ -23,7 +23,7 @@
{{ productFamily.unit.unitReference }}
{% endif %}
</strong>
</span>
</span>
<br />
{% endfor %}
{% endmacro total_order_product_family %}

+ 26
- 3
ShopBundle/Services/Price/ProductPriceUtils.php ファイルの表示

@@ -79,19 +79,42 @@ class ProductPriceUtils
public function getBuyingPrice(ProductPropertyInterface $product)
{
if ($product->getBehaviorPriceInherited() == 'by-piece') {
return $product->getBuyingPriceInherited();
return $product->getBuyingPriceInherited() ;
}
elseif ($product->getBehaviorPriceInherited() == 'by-reference-unit') {

if ($product->getQuantityInherited() > 0) {
return $product->getBuyingPriceByRefUnitInherited() * ($product->getQuantityInherited() / $product->getUnitInherited()->getCoefficient());
}else{
}
else {
return 0;
}
}
}

public function getMultiplyingFactor(ProductPropertyInterface $product){
public function getBuyingPriceWithTax(ProductPropertyInterface $product)
{
return $this->applyTax(
$this->getBuyingPrice($product),
$product->getTaxRateInherited()->getValue()
);
}

public function getBuyingPriceByRefUnit(ProductPropertyInterface $product)
{
return $product->getBuyingPriceByRefUnitInherited() ;
}

public function getBuyingPriceByRefUnitWithTax(ProductPropertyInterface $product)
{
return $this->applyTax(
$this->getBuyingPriceByRefUnit($product),
$product->getTaxRateInherited()->getValue()
);
}

public function getMultiplyingFactor(ProductPropertyInterface $product)
{
return $this->round($this->getPriceWithTax($product) / $this->getBuyingPrice($product));
}


+ 15
- 0
ShopBundle/Services/ProductFamilyUtils.php ファイルの表示

@@ -181,4 +181,19 @@ class ProductFamilyUtils
}
}

public function getMultiplyingFactor($productFamily)
{
if($productFamily->getBehaviorPrice() == ProductFamily::BEHAVIOR_PRICE_BY_PIECE) {
if($productFamily->getBuyingPrice() > 0) {
return number_format($this->priceUtils->getPriceWithTax($productFamily) / $productFamily->getBuyingPrice(), 3) ;
}
}
elseif($productFamily->getBehaviorPrice() == ProductFamily::BEHAVIOR_PRICE_BY_REFERENCE_UNIT) {
if($productFamily->getBuyingPriceByRefUnit() > 0) {
return number_format($this->priceUtils->getPriceByRefUnitWithTax($productFamily) / $productFamily->getBuyingPriceByRefUnit(), 3) ;
}
}

}

}

読み込み中…
キャンセル
保存