<?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 | |||||
]); | |||||
} | |||||
} |
['label' => 'Import prix', 'icon' => 'upload', 'url' => ['/product/price-import'], 'visible' => $isUserCurrentGrantedAsProducer && $featureChecker->isEnabled(Feature::ALIAS_PRODUCT_PRICE_IMPORT)], | ['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', | 'label' => 'Utilisateurs', | ||||
'icon' => 'users', | 'icon' => 'users', |
<?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> |
<?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> |
<?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'); | |||||
} | |||||
} |
const ALIAS_EXPORT_SHOPPING_CART_LABELS_ADVANCED = 'export_shopping_cart_labels_advanced'; | const ALIAS_EXPORT_SHOPPING_CART_LABELS_ADVANCED = 'export_shopping_cart_labels_advanced'; | ||||
const ALIAS_SETTINGS = 'settings'; | const ALIAS_SETTINGS = 'settings'; | ||||
const ALIAS_SHOP_SUPPORT = 'shop_support'; | const ALIAS_SHOP_SUPPORT = 'shop_support'; | ||||
const ALIAS_SHARED_POINT_SALE = 'shared_point_sale'; | |||||
/** | /** | ||||
* @inheritdoc | * @inheritdoc |
Feature::ALIAS_ONLINE_PAYMENT => 'Paiement en ligne', | 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_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_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', | |||||
]; | ]; | ||||
} | } | ||||
} | } |
class SharedPointSaleBuilder extends AbstractBuilder | 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 = new SharedPointSale(); | ||||
$sharedPointSale->setPointSale($pointSale); | |||||
$sharedPointSale->setProducerWithSharing($producerWithSharing); | |||||
if($pointSale) { | |||||
$sharedPointSale->setPointSale($pointSale); | |||||
} | |||||
if($producerWithSharing) { | |||||
$sharedPointSale->setProducerWithSharing($producerWithSharing); | |||||
} | |||||
$sharedPointSale->setStatus(StatusInterface::STATUS_ONLINE); | $sharedPointSale->setStatus(StatusInterface::STATUS_ONLINE); | ||||
return $sharedPointSale; | return $sharedPointSale; |
$this->sharedPointSaleBuilder = $this->loadService(SharedPointSaleBuilder::class); | $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); | $sharedPointSale = $this->sharedPointSaleBuilder->instanciateSharedPointSale($pointSale, $producerWithSharing); | ||||
$this->sharedPointSaleBuilder->create($sharedPointSale); | $this->sharedPointSaleBuilder->create($sharedPointSale); | ||||
return $sharedPointSale; | |||||
} | } | ||||
} | } |