@@ -40,6 +40,7 @@ use common\helpers\Dropdown; | |||
use common\helpers\GlobalParam; | |||
use common\logic\Distribution\Distribution\Module\DistributionModule; | |||
use common\logic\User\User\Module\UserModule; | |||
use common\logic\User\UserGroup\Module\UserGroupModule; | |||
use yii\helpers\Html; | |||
use yii\widgets\ActiveForm; | |||
use common\logic\Producer\Producer\Model\Producer; | |||
@@ -50,8 +51,11 @@ use yii\helpers\ArrayHelper; | |||
\backend\assets\VuejsProducerUpdateAsset::register($this); | |||
$userModule = UserModule::getInstance(); | |||
$userCurrent = GlobalParam::getCurrentUser(); | |||
$userGroupModule = UserGroupModule::getInstance(); | |||
$distributionExportManager = DistributionModule::getInstance()->getExportManager(); | |||
$userCurrent = GlobalParam::getCurrentUser(); | |||
$this->setTitle('Paramètres'); | |||
$this->addBreadcrumb($this->getTitle()); | |||
@@ -59,7 +63,7 @@ $this->addBreadcrumb($this->getTitle()); | |||
<script> | |||
var appInitValues = { | |||
isAdmin: <?= (int) $userModule->getAuthorizationChecker()->isGrantedAsAdministrator($userCurrent) ?> | |||
isAdmin: <?= (int)$userModule->getAuthorizationChecker()->isGrantedAsAdministrator($userCurrent) ?> | |||
}; | |||
</script> | |||
@@ -67,8 +71,8 @@ $this->addBreadcrumb($this->getTitle()); | |||
<div id="nav-params"> | |||
<a v-for="section in sectionsArray" v-if="!section.isAdminSection || (section.isAdminSection && isAdmin)" | |||
:class="'btn '+((currentSection == section.name) ? 'btn-primary' : 'btn-default')" | |||
@click="changeSection(section)" :href="'#'+section.name"> | |||
:class="'btn '+((currentSection == section.name) ? 'btn-primary' : 'btn-default')" | |||
@click="changeSection(section)" :href="'#'+section.name"> | |||
{{ section.nameDisplay }} | |||
</a> | |||
</div> | |||
@@ -122,6 +126,10 @@ $this->addBreadcrumb($this->getTitle()); | |||
Producer::BEHAVIOR_HOME_POINT_SALE_DAY_LIST_INCOMING_DISTRIBUTIONS => 'Distributions à venir', | |||
]); ?> | |||
<?= $form->field($model, 'option_point_sale_wording') ?> | |||
<h4>Groupes utilisateurs</h4> | |||
<?= $form->field($model, 'id_user_group_default') | |||
->dropDownList($userGroupModule->getRepository()->populateUserGroupDropdownList()); ?> | |||
</div> | |||
</div> | |||
@@ -256,10 +264,10 @@ $this->addBreadcrumb($this->getTitle()); | |||
<h4>Divers</h4> | |||
<?php | |||
$choicesWeeksDistributionsActivatedInAdvanceArray = [null => '--']; | |||
for($i = 1; $i < 13; $i++) { | |||
$choicesWeeksDistributionsActivatedInAdvanceArray[$i] = $i.' semaine'.(($i > 1) ? 's' : ''); | |||
} | |||
$choicesWeeksDistributionsActivatedInAdvanceArray = [null => '--']; | |||
for ($i = 1; $i < 13; $i++) { | |||
$choicesWeeksDistributionsActivatedInAdvanceArray[$i] = $i . ' semaine' . (($i > 1) ? 's' : ''); | |||
} | |||
?> | |||
<?= $form->field($model, 'option_weeks_distributions_activated_in_advance') | |||
->dropDownList($choicesWeeksDistributionsActivatedInAdvanceArray) | |||
@@ -279,25 +287,25 @@ $this->addBreadcrumb($this->getTitle()); | |||
<div v-show="currentSection == 'exports'" class="panel panel-default"> | |||
<div class="panel-body"> | |||
<h4>Exports affichés dans les distributions</h4> | |||
<?= $distributionExportManager->getProducerFormCheckboxes($form, $model) ?> | |||
<h4>Options exports</h4> | |||
<?= $form->field($model, 'option_csv_separator') | |||
->dropDownList([ | |||
';' => 'Point-virgule (;)', | |||
',' => 'Virgule (,)' | |||
], []); ?> | |||
<?= $form->field($model, 'option_export_display_product_reference') | |||
->dropDownList(Dropdown::noYesChoices()); ?> | |||
<?= $form->field($model, 'option_export_display_column_delivery_note') | |||
->dropDownList(Dropdown::noYesChoices()); ?> | |||
<?= $form->field($model, 'option_csv_export_all_products') | |||
->dropDownList(Dropdown::noYesChoices()); ?> | |||
<?= $form->field($model, 'option_csv_export_by_piece') | |||
->dropDownList(Dropdown::noYesChoices()); ?> | |||
<?= $form->field($model, 'export_shopping_cart_labels_number_per_column') | |||
->dropDownList(Dropdown::numberChoices(1, 20)); ?> | |||
<h4>Exports affichés dans les distributions</h4> | |||
<?= $distributionExportManager->getProducerFormCheckboxes($form, $model) ?> | |||
<h4>Options exports</h4> | |||
<?= $form->field($model, 'option_csv_separator') | |||
->dropDownList([ | |||
';' => 'Point-virgule (;)', | |||
',' => 'Virgule (,)' | |||
], []); ?> | |||
<?= $form->field($model, 'option_export_display_product_reference') | |||
->dropDownList(Dropdown::noYesChoices()); ?> | |||
<?= $form->field($model, 'option_export_display_column_delivery_note') | |||
->dropDownList(Dropdown::noYesChoices()); ?> | |||
<?= $form->field($model, 'option_csv_export_all_products') | |||
->dropDownList(Dropdown::noYesChoices()); ?> | |||
<?= $form->field($model, 'option_csv_export_by_piece') | |||
->dropDownList(Dropdown::noYesChoices()); ?> | |||
<?= $form->field($model, 'export_shopping_cart_labels_number_per_column') | |||
->dropDownList(Dropdown::numberChoices(1, 20)); ?> | |||
</div> | |||
</div> | |||
@@ -343,7 +351,7 @@ $this->addBreadcrumb($this->getTitle()); | |||
<?= $form->field($model, 'online_payment') | |||
->dropDownList(Dropdown::noYesChoices()); ?> | |||
<?= $form->field($model, 'option_online_payment_minimum_amount') | |||
->hint('Valeur par défaut si non défini : '.Producer::ONLINE_PAYMENT_MINIMUM_AMOUNT_DEFAULT.' €') | |||
->hint('Valeur par défaut si non défini : ' . Producer::ONLINE_PAYMENT_MINIMUM_AMOUNT_DEFAULT . ' €') | |||
->textInput(); ?> | |||
<?= $form->field($model, 'option_stripe_mode_test')->dropDownList(Dropdown::noYesChoices()); ?> | |||
<?= $form->field($model, 'option_online_payment_type') | |||
@@ -435,7 +443,7 @@ $this->addBreadcrumb($this->getTitle()); | |||
<?php $urlAboutPage = Yii::$app->urlManagerFrontend->createAbsoluteUrl(['site/about']); ?> | |||
<?= $form->field($model, 'option_testimony') | |||
->textarea(['rows' => 7]) | |||
->hint("Écrivez ici votre témoignage concernant l'utilisation du logiciel. Il sera publié sur la page <a href=\"".$urlAboutPage."\" target=\"_blanck\">À propos</a> du site.") ; ?> | |||
->hint("Écrivez ici votre témoignage concernant l'utilisation du logiciel. Il sera publié sur la page <a href=\"" . $urlAboutPage . "\" target=\"_blanck\">À propos</a> du site."); ?> | |||
<?= $form->field($model, 'option_time_saved') | |||
->dropDownList([ | |||
null => '--', | |||
@@ -449,7 +457,7 @@ $this->addBreadcrumb($this->getTitle()); | |||
7 => '7 heures', | |||
8 => '8 heures', | |||
]) | |||
->hint("Sélectionnez le temps que vous estimez gagner chaque semaine en utilisant ce logiciel. Cette donnée sera utilisée sur la page <a href=\"".$urlAboutPage."\" target=\"_blanck\">À propos</a> du site.") ; ?> | |||
->hint("Sélectionnez le temps que vous estimez gagner chaque semaine en utilisant ce logiciel. Cette donnée sera utilisée sur la page <a href=\"" . $urlAboutPage . "\" target=\"_blanck\">À propos</a> du site."); ?> | |||
<?= $form->field($model, 'option_display_message_new_opendistrib_version') | |||
->dropDownList(Dropdown::noYesChoices()); ?> | |||
</div> |
@@ -40,6 +40,7 @@ namespace common\logic\Producer\Producer\Model; | |||
use common\logic\Config\TaxRate\Model\TaxRate; | |||
use common\logic\User\User\Model\User; | |||
use common\logic\User\UserGroup\Model\UserGroup; | |||
use common\logic\User\UserProducer\Model\UserProducer; | |||
use common\components\ActiveRecordCommon; | |||
use yii\web\UploadedFile; | |||
@@ -166,7 +167,8 @@ class Producer extends ActiveRecordCommon | |||
'dolibarr_product_id', | |||
'option_weeks_distributions_activated_in_advance', | |||
'option_document_width_logo', | |||
'export_shopping_cart_labels_number_per_column' | |||
'export_shopping_cart_labels_number_per_column', | |||
'id_user_group_default' | |||
], | |||
'integer' | |||
], | |||
@@ -453,6 +455,7 @@ class Producer extends ActiveRecordCommon | |||
'option_document_width_logo' => 'Largeur du logo dans les documents', | |||
'export_shopping_cart_labels_number_per_column' => "Étiquettes (PDF) : nombre d'étiquettes par colonne", | |||
'option_document_display_price_unit_reference' => "Afficher les prix au kilogramme", | |||
'id_user_group_default' => "Groupe utilisateur par défaut attribué à l'inscription", | |||
]; | |||
} | |||
@@ -486,6 +489,16 @@ class Producer extends ActiveRecordCommon | |||
$this->populateFieldObject('id_tax_rate', 'taxRate', $taxRate); | |||
} | |||
public function getUserGroupDefault() | |||
{ | |||
return $this->hasOne(UserGroup::class, ['id' => 'id_user_group_default']); | |||
} | |||
public function populateUserGroupDefault(UserGroup $userGroup) | |||
{ | |||
$this->populateFieldObject('id_user_group_default', 'userGroupDefault', $userGroup); | |||
} | |||
// --- | |||
public static function getBillingTypePopulateDropdown() |
@@ -10,19 +10,23 @@ use common\logic\Producer\Producer\Model\Producer; | |||
use common\logic\User\User\Event\UserCreateEvent; | |||
use common\logic\User\User\Model\User; | |||
use common\logic\User\User\Repository\UserRepository; | |||
use common\logic\User\UserGroup\Model\UserGroup; | |||
use common\logic\User\UserProducer\Service\UserProducerBuilder; | |||
use common\logic\User\UserUserGroup\Service\UserUserGroupBuilder; | |||
class UserBuilder extends AbstractBuilder | |||
{ | |||
protected UserRepository $userRepository; | |||
protected UserNotifier $userNotifier; | |||
protected UserProducerBuilder $userProducerBuilder; | |||
protected UserUserGroupBuilder $userUserGroupBuilder; | |||
public function loadDependencies(): void | |||
{ | |||
$this->userRepository = $this->loadService(UserRepository::class); | |||
$this->userNotifier = $this->loadService(UserNotifier::class); | |||
$this->userProducerBuilder = $this->loadService(UserProducerBuilder::class); | |||
$this->userUserGroupBuilder = $this->loadService(UserUserGroupBuilder::class); | |||
} | |||
public function instanciateUser( | |||
@@ -188,4 +192,9 @@ class UserBuilder extends AbstractBuilder | |||
$user->id_producer = $producer->id; | |||
$this->update($user); | |||
} | |||
public function addUserGroup(User $user, UserGroup $userGroup) | |||
{ | |||
$this->userUserGroupBuilder->createUserUserGroup($user, $userGroup); | |||
} | |||
} |
@@ -17,7 +17,7 @@ class UserGroupBuilder extends AbstractBuilder | |||
public function createUserGroup(): UserGroup | |||
{ | |||
$userGroup = $this->instanciateUserGroup(); | |||
$this->saveCreate($userGroup); | |||
$this->create($userGroup); | |||
return $userGroup; | |||
} |
@@ -39,6 +39,7 @@ termes. | |||
namespace common\logic\User\UserUserGroup\Model; | |||
use common\logic\PointSale\PointSale\Model\PointSale; | |||
use common\logic\User\User\Model\User; | |||
use common\logic\User\UserGroup\Model\UserGroup; | |||
use Yii; | |||
use common\components\ActiveRecordCommon ; | |||
@@ -93,4 +94,19 @@ class UserUserGroup extends ActiveRecordCommon | |||
{ | |||
return $this->hasOne(UserGroup::class, ['id' => 'id_user_group']); | |||
} | |||
public function populateUserGroup(UserGroup $userGroup): void | |||
{ | |||
$this->populateFieldObject('id_user_group', 'userGroup', $userGroup); | |||
} | |||
public function getUser() | |||
{ | |||
return $this->hasOne(User::class, ['id' => 'id_user']); | |||
} | |||
public function populateUser(User $user): void | |||
{ | |||
$this->populateFieldObject('id_user', 'user', $user); | |||
} | |||
} |
@@ -3,21 +3,25 @@ | |||
namespace common\logic\User\UserUserGroup\Service; | |||
use common\logic\AbstractBuilder; | |||
use common\logic\User\User\Model\User; | |||
use common\logic\User\UserGroup\Model\UserGroup; | |||
use common\logic\User\UserUserGroup\Model\UserUserGroup; | |||
class UserUserGroupBuilder extends AbstractBuilder | |||
{ | |||
public function instanciateUserUserGroup(): UserUserGroup | |||
public function instanciateUserUserGroup(User $user, UserGroup $userGroup): UserUserGroup | |||
{ | |||
$userUserGroup = new UserUserGroup(); | |||
$userUserGroup->populateUser($user); | |||
$userUserGroup->populateUserGroup($userGroup); | |||
return $userUserGroup; | |||
} | |||
public function createUserUserGroup(): UserUserGroup | |||
public function createUserUserGroup(User $user, UserGroup $userGroup): UserUserGroup | |||
{ | |||
$userUserGroup = $this->instanciateUserUserGroup(); | |||
$this->saveCreate($userUserGroup); | |||
$userUserGroup = $this->instanciateUserUserGroup($user, $userGroup); | |||
$this->create($userUserGroup); | |||
return $userUserGroup; | |||
} |
@@ -0,0 +1,28 @@ | |||
<?php | |||
use yii\db\Migration; | |||
use yii\db\Schema; | |||
/** | |||
* Class m231109_090026_add_column_producer_id_user_group_default | |||
*/ | |||
class m231109_090026_add_column_producer_id_user_group_default extends Migration | |||
{ | |||
/** | |||
* {@inheritdoc} | |||
*/ | |||
public function safeUp() | |||
{ | |||
$this->addColumn('producer', 'id_user_group_default', Schema::TYPE_INTEGER); | |||
$this->addForeignKey('user_group_default_fk', 'producer', 'id_user_group_default', 'user_group', 'id'); | |||
} | |||
/** | |||
* {@inheritdoc} | |||
*/ | |||
public function safeDown() | |||
{ | |||
$this->dropColumn('producer', 'id_user_group_default'); | |||
$this->dropForeignKey('user_group_default_fk', 'producer'); | |||
} | |||
} |
@@ -43,6 +43,7 @@ use common\logic\Producer\Producer\Model\Producer; | |||
use common\logic\Producer\Producer\Module\ProducerModule; | |||
use common\logic\User\User\Model\User; | |||
use common\logic\User\User\Module\UserModule; | |||
use common\logic\User\UserGroup\Module\UserGroupModule; | |||
use yii\base\Model; | |||
/** | |||
@@ -234,7 +235,8 @@ class SignupForm extends Model | |||
*/ | |||
public function signup() | |||
{ | |||
$userModule = \Yii::$app->logic->getUserModule(); | |||
$userGroupModule = UserGroupModule::getInstance(); | |||
$userModule = UserModule::getInstance(); | |||
$producerModule = \Yii::$app->logic->getProducerModule(); | |||
if ($this->validate()) { | |||
@@ -255,6 +257,12 @@ class SignupForm extends Model | |||
\Yii::$app->logic->setProducerContext($producer); | |||
if(!$this->isProducer()) { | |||
if($producer->id_user_group_default) { | |||
$userGroupDefault = $userGroupModule->getRepository()->findOneUserGroupById($producer->id_user_group_default); | |||
$userModule->getBuilder()->addUserGroup($user, $userGroupDefault); | |||
} | |||
} | |||
$producerModule->addUser($user, $producer, true, $this->newsletter); | |||
$userModule->sendEmailSignup($user, $producer); | |||