@@ -0,0 +1,94 @@ | |||
<?php | |||
/** | |||
* Copyright Souke (2018) | |||
* | |||
* contact@souke.fr | |||
* | |||
* Ce logiciel est un programme informatique servant à aider les producteurs | |||
* à distribuer leur production en circuits courts. | |||
* | |||
* Ce logiciel est régi par la licence CeCILL soumise au droit français et | |||
* respectant les principes de diffusion des logiciels libres. Vous pouvez | |||
* utiliser, modifier et/ou redistribuer ce programme sous les conditions | |||
* de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA | |||
* sur le site "http://www.cecill.info". | |||
* | |||
* En contrepartie de l'accessibilité au code source et des droits de copie, | |||
* de modification et de redistribution accordés par cette licence, il n'est | |||
* offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons, | |||
* seule une responsabilité restreinte pèse sur l'auteur du programme, le | |||
* titulaire des droits patrimoniaux et les concédants successifs. | |||
* | |||
* A cet égard l'attention de l'utilisateur est attirée sur les risques | |||
* associés au chargement, à l'utilisation, à la modification et/ou au | |||
* développement et à la reproduction du logiciel par l'utilisateur étant | |||
* donné sa spécificité de logiciel libre, qui peut le rendre complexe à | |||
* manipuler et qui le réserve donc à des développeurs et des professionnels | |||
* avertis possédant des connaissances informatiques approfondies. Les | |||
* utilisateurs sont donc invités à charger et tester l'adéquation du | |||
* logiciel à leurs besoins dans des conditions permettant d'assurer la | |||
* sécurité de leurs systèmes et ou de leurs données et, plus généralement, | |||
* à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. | |||
* | |||
* Le fait que vous puissiez accéder à cet en-tête signifie que vous avez | |||
* pris connaissance de la licence CeCILL, et que vous en avez accepté les | |||
* termes. | |||
*/ | |||
namespace backend\controllers; | |||
use backend\controllers\BackendController; | |||
use backend\models\AccessUserProducerForm; | |||
use domain\Feature\Feature\Feature; | |||
use domain\User\User\UserSearch; | |||
use yii\filters\AccessControl; | |||
/** | |||
* UserController implements the CRUD actions for User model. | |||
*/ | |||
class SharedPointSaleController extends BackendController | |||
{ | |||
public function behaviors() | |||
{ | |||
return [ | |||
'access' => [ | |||
'class' => AccessControl::class, | |||
'rules' => [ | |||
[ | |||
'allow' => true, | |||
'roles' => ['@'], | |||
'matchCallback' => function ($rule, $action) { | |||
$authorizationChecker = $this->getUserModule()->getAuthorizationChecker(); | |||
$featureChecker = $this->getFeatureModule()->getChecker(); | |||
return $authorizationChecker->isGrantedAsProducer($this->getUserCurrent()) | |||
&& $featureChecker->isEnabled(Feature::ALIAS_SHARED_POINT_SALE); | |||
} | |||
] | |||
], | |||
], | |||
]; | |||
} | |||
public function actionIndex() | |||
{ | |||
return $this->render('index'); | |||
} | |||
public function actionCreate() | |||
{ | |||
$sharedPointSale = $this->getSharedPointSaleModule()->getBuilder()->instanciateSharedPointSale(); | |||
if($sharedPointSale->load(\Yii::$app->request->post()) && $sharedPointSale->save()) { | |||
$this->setFlash('success', "La demande de partage a bien été créée"); | |||
return $this->redirect(['index']); | |||
} | |||
return $this->render('create', [ | |||
'sharedPointSale' => $sharedPointSale | |||
]); | |||
} | |||
} |
@@ -202,7 +202,17 @@ $isUserCurrentGrantedAsProducer = $userModule->getAuthorizationChecker()->isGran | |||
['label' => 'Import prix', 'icon' => 'upload', 'url' => ['/product/price-import'], 'visible' => $isUserCurrentGrantedAsProducer && $featureChecker->isEnabled(Feature::ALIAS_PRODUCT_PRICE_IMPORT)], | |||
] | |||
], | |||
['label' => 'Points de vente', 'icon' => 'map-marker', 'url' => ['/point-sale/index'], 'visible' => $isUserCurrentGrantedAsProducer, 'active' => Yii::$app->controller->id == 'point-sale'], | |||
[ | |||
'label' => 'Points de vente', | |||
'icon' => 'map-marker', | |||
'url' => ['/point-sale/index'], | |||
'visible' => $isUserCurrentGrantedAsProducer, | |||
'active' => Yii::$app->controller->id == 'point-sale' || Yii::$app->controller->id == 'shared-point-sale', | |||
'items' => [ | |||
['label' => 'Liste', 'icon' => 'th-list', 'url' => ['/point-sale/index'], 'visible' => $isUserCurrentGrantedAsProducer], | |||
['label' => 'Partagés', 'icon' => 'share-alt', 'url' => ['/shared-point-sale/index'], 'visible' => $isUserCurrentGrantedAsProducer && $featureChecker->isEnabled(Feature::ALIAS_SHARED_POINT_SALE)], | |||
] | |||
], | |||
[ | |||
'label' => 'Utilisateurs', | |||
'icon' => 'users', |
@@ -0,0 +1,80 @@ | |||
<?php | |||
/** | |||
Copyright Souke (2018) | |||
contact@souke.fr | |||
Ce logiciel est un programme informatique servant à aider les producteurs | |||
à distribuer leur production en circuits courts. | |||
Ce logiciel est régi par la licence CeCILL soumise au droit français et | |||
respectant les principes de diffusion des logiciels libres. Vous pouvez | |||
utiliser, modifier et/ou redistribuer ce programme sous les conditions | |||
de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA | |||
sur le site "http://www.cecill.info". | |||
En contrepartie de l'accessibilité au code source et des droits de copie, | |||
de modification et de redistribution accordés par cette licence, il n'est | |||
offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons, | |||
seule une responsabilité restreinte pèse sur l'auteur du programme, le | |||
titulaire des droits patrimoniaux et les concédants successifs. | |||
A cet égard l'attention de l'utilisateur est attirée sur les risques | |||
associés au chargement, à l'utilisation, à la modification et/ou au | |||
développement et à la reproduction du logiciel par l'utilisateur étant | |||
donné sa spécificité de logiciel libre, qui peut le rendre complexe à | |||
manipuler et qui le réserve donc à des développeurs et des professionnels | |||
avertis possédant des connaissances informatiques approfondies. Les | |||
utilisateurs sont donc invités à charger et tester l'adéquation du | |||
logiciel à leurs besoins dans des conditions permettant d'assurer la | |||
sécurité de leurs systèmes et ou de leurs données et, plus généralement, | |||
à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. | |||
Le fait que vous puissiez accéder à cet en-tête signifie que vous avez | |||
pris connaissance de la licence CeCILL, et que vous en avez accepté les | |||
termes. | |||
*/ | |||
use domain\PointSale\PointSale\PointSaleRepository; | |||
use yii\helpers\Html; | |||
use yii\widgets\ActiveForm; | |||
$pointSaleModule = $this->getPointSaleModule(); | |||
$producerModule = $this->getProducerModule(); | |||
$this->setTitle('Ajouter un point de vente') ; | |||
$this->addBreadcrumb(['label' => 'Points de vente', 'url' => ['index']]) ; | |||
$this->addBreadcrumb('Ajouter') ; | |||
?> | |||
<div class="shared-point-sale-create"> | |||
<?php $form = ActiveForm::begin([ | |||
'enableClientValidation' => false | |||
]); ?> | |||
<div class="panel panel-default"> | |||
<div class="panel-heading"> | |||
<h3 class="panel-title"> | |||
<i class="fa fa-th-list"></i> | |||
Général | |||
</h3> | |||
</div> | |||
<div class="panel-body"> | |||
<?= $form->field($sharedPointSale, 'id_point_sale') | |||
->dropDownList($pointSaleModule->getRepository()->populatePointSaleDropdownList()); ?> | |||
<?php $producerPopulateDropdownArray = $producerModule->getRepository()->populateProducerDropdown(); ?> | |||
<?= $form->field($sharedPointSale, 'id_producer_with_sharing') | |||
->dropDownList($producerPopulateDropdownArray['data'], ['prompt' => '--','encode' => false,'options' => $producerPopulateDropdownArray['options']]);?> | |||
</div> | |||
</div> | |||
<div class="form-group form-actions"> | |||
<?= Html::a('Retour', ['index'], ['class' => 'btn btn-default']) ?> | |||
<?= Html::submitButton($sharedPointSale->isNewRecord ? 'Créer' : 'Modifier', ['class' => 'btn btn-primary', 'name' => 'save']) ?> | |||
</div> | |||
<?php ActiveForm::end(); ?> | |||
</div> |
@@ -0,0 +1,60 @@ | |||
<?php | |||
/** | |||
* Copyright Souke (2018) | |||
* | |||
* contact@souke.fr | |||
* | |||
* Ce logiciel est un programme informatique servant à aider les producteurs | |||
* à distribuer leur production en circuits courts. | |||
* | |||
* Ce logiciel est régi par la licence CeCILL soumise au droit français et | |||
* respectant les principes de diffusion des logiciels libres. Vous pouvez | |||
* utiliser, modifier et/ou redistribuer ce programme sous les conditions | |||
* de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA | |||
* sur le site "http://www.cecill.info". | |||
* | |||
* En contrepartie de l'accessibilité au code source et des droits de copie, | |||
* de modification et de redistribution accordés par cette licence, il n'est | |||
* offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons, | |||
* seule une responsabilité restreinte pèse sur l'auteur du programme, le | |||
* titulaire des droits patrimoniaux et les concédants successifs. | |||
* | |||
* A cet égard l'attention de l'utilisateur est attirée sur les risques | |||
* associés au chargement, à l'utilisation, à la modification et/ou au | |||
* développement et à la reproduction du logiciel par l'utilisateur étant | |||
* donné sa spécificité de logiciel libre, qui peut le rendre complexe à | |||
* manipuler et qui le réserve donc à des développeurs et des professionnels | |||
* avertis possédant des connaissances informatiques approfondies. Les | |||
* utilisateurs sont donc invités à charger et tester l'adéquation du | |||
* logiciel à leurs besoins dans des conditions permettant d'assurer la | |||
* sécurité de leurs systèmes et ou de leurs données et, plus généralement, | |||
* à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. | |||
* | |||
* Le fait que vous puissiez accéder à cet en-tête signifie que vous avez | |||
* pris connaissance de la licence CeCILL, et que vous en avez accepté les | |||
* termes. | |||
*/ | |||
use domain\PointSale\UserPointSale\UserPointSale; | |||
use domain\Producer\Producer\Producer; | |||
use yii\grid\GridView; | |||
use yii\helpers\Html; | |||
$pointSaleModule = $this->getPointSaleModule(); | |||
$this->setTitle('Points de vente partagés'); | |||
$this->addBreadcrumb($this->getTitle()); | |||
$this->addButton( | |||
[ | |||
'label' => 'Partager un point de vente <span class="glyphicon glyphicon-plus"></span>', | |||
'url' => 'shared-point-sale/create', | |||
'class' => 'btn btn-primary' | |||
] | |||
); | |||
?> | |||
<div class="shared-point-sale-index"> | |||
</div> |
@@ -0,0 +1,38 @@ | |||
<?php | |||
use yii\db\Migration; | |||
use yii\db\Schema; | |||
/** | |||
* Class m240603_131331_create_table_shared_point_sale | |||
*/ | |||
class m240603_131331_create_table_shared_point_sale extends Migration | |||
{ | |||
/** | |||
* {@inheritdoc} | |||
*/ | |||
public function safeUp() | |||
{ | |||
$this->createTable('shared_point_sale', [ | |||
'id' => 'pk', | |||
'id_point_sale' => Schema::TYPE_INTEGER, | |||
'id_producer_with_sharing' => Schema::TYPE_INTEGER, | |||
'id_point_sale_with_sharing' => Schema::TYPE_INTEGER, | |||
'status' => Schema::TYPE_INTEGER, | |||
]); | |||
$this->addForeignKey('fk_id_point_sale', 'shared_point_sale', 'id_point_sale', 'point_sale', 'id'); | |||
$this->addForeignKey('fk_id_producer', 'shared_point_sale', 'id_producer_with_sharing', 'producer', 'id'); | |||
$this->addForeignKey('fk_id_point_sale_with_sharing', 'shared_point_sale', 'id_point_sale_with_sharing', 'point_sale', 'id'); | |||
} | |||
/** | |||
* {@inheritdoc} | |||
*/ | |||
public function safeDown() | |||
{ | |||
$this->dropTable('shared_point_sale'); | |||
$this->dropForeignKey('fk_id_point_sale', 'shared_point_sale'); | |||
$this->dropForeignKey('fk_id_producer', 'shared_point_sale'); | |||
$this->dropForeignKey('fk_id_point_sale_with_sharing', 'shared_point_sale'); | |||
} | |||
} |
@@ -50,6 +50,7 @@ class Feature extends ActiveRecordCommon | |||
const ALIAS_EXPORT_SHOPPING_CART_LABELS_ADVANCED = 'export_shopping_cart_labels_advanced'; | |||
const ALIAS_SETTINGS = 'settings'; | |||
const ALIAS_SHOP_SUPPORT = 'shop_support'; | |||
const ALIAS_SHARED_POINT_SALE = 'shared_point_sale'; | |||
/** | |||
* @inheritdoc |
@@ -19,7 +19,8 @@ class FeatureDefinition extends AbstractDefinition | |||
Feature::ALIAS_ONLINE_PAYMENT => 'Paiement en ligne', | |||
Feature::ALIAS_EXPORT_SHOPPING_CART_LABELS_ADVANCED => "Génération d'étiquettes avec un format spécifique", | |||
Feature::ALIAS_SETTINGS => 'Système de paramètres', | |||
Feature::ALIAS_SHOP_SUPPORT => 'Support boutique' | |||
Feature::ALIAS_SHOP_SUPPORT => 'Support boutique', | |||
Feature::ALIAS_SHARED_POINT_SALE => 'Points de vente partagés', | |||
]; | |||
} | |||
} |
@@ -9,12 +9,18 @@ use domain\Producer\Producer\Producer; | |||
class SharedPointSaleBuilder extends AbstractBuilder | |||
{ | |||
public function instanciateSharedPointSale(PointSale $pointSale, Producer $producerWithSharing): SharedPointSale | |||
public function instanciateSharedPointSale(PointSale $pointSale = null, Producer $producerWithSharing = null): SharedPointSale | |||
{ | |||
$sharedPointSale = new SharedPointSale(); | |||
$sharedPointSale->setPointSale($pointSale); | |||
$sharedPointSale->setProducerWithSharing($producerWithSharing); | |||
if($pointSale) { | |||
$sharedPointSale->setPointSale($pointSale); | |||
} | |||
if($producerWithSharing) { | |||
$sharedPointSale->setProducerWithSharing($producerWithSharing); | |||
} | |||
$sharedPointSale->setStatus(StatusInterface::STATUS_ONLINE); | |||
return $sharedPointSale; |
@@ -15,9 +15,10 @@ class SharedPointSaleManager extends AbstractManager | |||
$this->sharedPointSaleBuilder = $this->loadService(SharedPointSaleBuilder::class); | |||
} | |||
public function createSharedPointSale(PointSale $pointSale, Producer $producerWithSharing) | |||
public function createSharedPointSale(PointSale $pointSale, Producer $producerWithSharing): SharedPointSale | |||
{ | |||
$sharedPointSale = $this->sharedPointSaleBuilder->instanciateSharedPointSale($pointSale, $producerWithSharing); | |||
$this->sharedPointSaleBuilder->create($sharedPointSale); | |||
return $sharedPointSale; | |||
} | |||
} |