|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493 |
- <?php
-
- /**
- * Copyright La boîte à pain (2018)
- *
- * contact@opendistrib.net
- *
- * 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 yii\helpers\Html;
- use yii\widgets\ActiveForm;
- use common\logic\Producer\Producer\Model\Producer;
- use common\logic\Config\TaxRate\Model\TaxRate;
- use common\logic\Document\Document\Model\Document;
- use yii\helpers\ArrayHelper;
-
- $userManager = $this->getUserManager();
-
- \backend\assets\VuejsProducerUpdateAsset::register($this);
- $this->setTitle('Paramètres');
- $this->addBreadcrumb($this->getTitle());
-
- ?>
-
- <script>
- var appInitValues = {
- isAdmin: <?= (int) $userManager->isCurrentAdmin() ?>
- };
- </script>
-
- <div class="user-update" id="app-producer-update">
-
- <div id="nav-params">
- <button v-for="section in sectionsArray" v-if="!section.isAdminSection || (section.isAdminSection && isAdmin)"
- :class="'btn '+((currentSection == section.name) ? 'btn-primary' : 'btn-default')"
- @click="changeSection(section)">
- {{ section.nameDisplay }}
- <span class="glyphicon glyphicon-triangle-bottom"></span>
- </button>
- </div>
-
- <div class="user-form">
- <?php $form = ActiveForm::begin([
- 'enableClientValidation' => false,
- ]); ?>
- <div>
- <div v-show="currentSection == 'general'" class="panel panel-default">
- <div class="panel-body">
- <h4>Logiciel</h4>
- <?= $form->field($model, 'option_display_message_new_opendistrib_version')
- ->dropDownList([
- 1 => 'Oui',
- 0 => 'Non'
- ], []); ?>
-
- <h4>Accès</h4>
- <?= $form->field($model, 'active')
- ->dropDownList([
- 0 => 'Non',
- 1 => 'Oui'
- ], [])
- ->label('En ligne')
- ->hint('Activez cette option pour rendre votre espace visible à vos clients.'); ?>
- <?= $form->field($model, 'code')->hint("Saisissez ce champs si vous souhaitez protéger l'accès à votre espace par un code, sinon laissez-le vide.<br />"
- . "Ce code est à communiquer à vos clients pour qu'ils puissent ajouter votre espace à leurs favoris.<br />"
- . "<a href=\"" . Yii::$app->urlManager->createUrl(['communicate/index']) . "\">Cliquez ici</a> pour télécharger un mode d'emploi comprenant ce code à distribuer à vos clients.") ?>
-
- <h4>Général</h4>
- <?= $form->field($model, 'name') ?>
- <?= $form->field($model, 'type') ?>
- <?= $form->field($model, 'description')
- ->textarea(['rows' => 4])
- ->hint('Affiché sur la page d\'accueil') ?>
- <?= $form->field($model, 'address')
- ->textarea(['rows' => 4]) ?>
- <?= $form->field($model, 'postcode') ?>
- <?= $form->field($model, 'city') ?>
-
- <h4>Apparence</h4>
- <?= $form->field($model, 'background_color_logo') ?>
- <?= $form->field($model, 'logo')->fileInput() ?>
- <?php
- if (strlen($model->logo)) {
- echo '<img src="' . Yii::$app->urlManagerProducer->getHostInfo() . '/' . Yii::$app->urlManagerProducer->baseUrl . '/uploads/' . $model->logo . '" width="200px" /><br />';
- echo '<input type="checkbox" name="delete_logo" id="delete_logo" /> <label for="delete_logo">Supprimer le logo</label><br /><br />';
- }
- ?>
- <?= $form->field($model, 'photo')->fileInput()->hint('Format idéal : 900 x 150 px') ?>
- <?php
- if (strlen($model->photo)) {
- echo '<img src="' . Yii::$app->urlManagerProducer->getHostInfo() . '/' . Yii::$app->urlManagerProducer->baseUrl . '/uploads/' . $model->photo . '" width="400px" /><br />';
- echo '<input type="checkbox" name="delete_photo" id="delete_photo" /> <label for="delete_photo">Supprimer la photo</label><br /><br />';
- }
- ?>
- <?= $form->field($model, 'behavior_home_point_sale_day_list')
- ->dropDownList([
- Producer::BEHAVIOR_HOME_POINT_SALE_DAY_LIST_WEEK => 'Jours de la semaine',
- Producer::BEHAVIOR_HOME_POINT_SALE_DAY_LIST_INCOMING_DISTRIBUTIONS => 'Distributions à venir',
- ]); ?>
- </div>
- </div>
-
- <div v-show="currentSection == 'tableau-bord'" class="panel panel-default">
- <div class="panel-body">
- <h4>Tableau de bord administration</h4>
- <?= $form->field($model, 'option_dashboard_number_distributions')
- ->dropDownList([
- 3 => '3',
- 6 => '6',
- 9 => '9',
- 12 => '12',
- 15 => '15',
- 18 => '18',
- 21 => '21',
- 24 => '24',
- 27 => '27',
- 30 => '30',
- ], []); ?>
-
- <?= $form->field($model, 'option_dashboard_date_start')->textInput([
- 'class' => 'datepicker form-control'
- ]); ?>
- <?= $form->field($model, 'option_dashboard_date_end')->textInput([
- 'class' => 'datepicker form-control'
- ]); ?>
- </div>
- </div>
-
- <div v-show="currentSection == 'prise-commande'" class="panel panel-default">
- <div class="panel-body">
- <h4>Horaires</h4>
- <?php
- $delaysArray = [
- 1 => '1 jour',
- 2 => '2 jours',
- 3 => '3 jours',
- 4 => '4 jours',
- 5 => '5 jours',
- 6 => '6 jours',
- 7 => '7 jours',
- ];
-
- $deadlinesArray = [
- 24 => 'Minuit',
- 23 => '23h',
- 22 => '22h',
- 21 => '21h',
- 20 => '20h',
- 19 => '19h',
- 18 => '18h',
- 17 => '17h',
- 16 => '16h',
- 15 => '15h',
- 14 => '14h',
- 13 => '13h',
- 12 => '12h',
- 11 => '11h',
- 10 => '10h',
- 9 => '9h',
- 8 => '8h',
- ];
-
- $daysArray = [
- 'monday' => 'Lundi',
- 'tuesday' => 'Mardi',
- 'wednesday' => 'Mercredi',
- 'thursday' => 'Jeudi',
- 'friday' => 'Vendredi',
- 'saturday' => 'Samedi',
- 'sunday' => 'Dimanche'
- ];
- ?>
-
- <div class="row">
- <div class="col-md-2">
- <strong>Par défaut</strong>
- </div>
- <div class="col-md-5">
- <?= $form->field($model, 'order_delay')
- ->dropDownList($delaysArray, ['prompt' => '--'])
- ->hint('Si <strong>1 jour</strong> est sélectionné, le client pourra commander jusqu\'à la veille de la production.<br />'
- . 'Si <strong>2 jours</strong> est sélectionné, le client pourra commander jusqu\'à l\'avant-veille de la production, etc.'); ?>
- </div>
- <div class="col-md-5">
- <?= $form->field($model, 'order_deadline')
- ->dropDownList($deadlinesArray, ['prompt' => '--'])
- ->hint('Heure limite jusqu\'à laquelle les clients peuvent commander pour satisfaire le délai de commande.<br />'
- . 'Par exemple, si <strong>2 jours</strong> est sélectionné dans le délai de commande, le client devra commander l\'avant-veille de la production avant l\'heure précisée ici.'); ?>
- </div>
- </div>
- <?php foreach ($daysArray as $day => $labelDay): ?>
- <div class="row">
- <div class="col-md-2">
- <strong><?= $labelDay ?></strong>
- </div>
- <div class="col-md-5">
- <?= $form->field($model, 'order_delay_' . $day, [
- 'template' => '{input}',
- ])->dropDownList($delaysArray, ['prompt' => '--'])->label(''); ?>
- </div>
- <div class="col-md-5">
- <?= $form->field($model, 'order_deadline_' . $day, [
- 'template' => '{input}',
- ])->dropDownList($deadlinesArray, ['prompt' => '--'])->label(''); ?>
- </div>
- </div>
- <?php endforeach; ?>
-
- <h4>Informations</h4>
- <?= $form->field($model, 'order_infos')
- ->textarea(['rows' => 6])
- ->hint('Affichées au client lors de sa commande') ?>
-
- <?= $form->field($model, 'option_payment_info')
- ->textarea(['rows' => 6])
- ->hint('Affichées au client à la fin de la prise de commande') ?>
-
-
- <h4>Tunnel de commande</h4>
- <?= $form->field($model, 'option_order_entry_point')
- ->dropDownList([
- Producer::ORDER_ENTRY_POINT_DATE => 'Date',
- Producer::ORDER_ENTRY_POINT_POINT_SALE => 'Point de vente',
- ], []); ?>
- <?= $form->field($model, 'behavior_order_select_distribution')
- ->dropDownList([
- Producer::BEHAVIOR_ORDER_SELECT_DISTRIBUTION_CALENDAR => 'Calendrier',
- Producer::BEHAVIOR_ORDER_SELECT_DISTRIBUTION_LIST => 'Liste',
- ]); ?>
- <?= $form->field($model, 'option_delivery')
- ->dropDownList([
- 0 => 'Non',
- 1 => 'Oui'
- ], []); ?>
- <?php echo $form->field($model, 'option_allow_order_guest')
- ->dropDownList([
- 0 => 'Non',
- 1 => 'Oui'
- ], []); ?>
-
-
- <h4>Notifications</h4>
- <?= $form->field($model, 'option_notify_producer_order_summary')
- ->dropDownList([
- 0 => 'Non',
- 1 => 'Oui',
- ], []); ?>
- <?= $form->field($model, 'option_email_confirm')
- ->dropDownList([
- 0 => 'Non',
- 1 => 'Oui'
- ], []); ?>
- <?= $form->field($model, 'option_email_confirm_producer')
- ->dropDownList([
- 0 => 'Non',
- 1 => 'Oui'
- ], []); ?>
-
-
- <h4>Exports</h4>
- <?= $form->field($model, 'option_csv_separator')
- ->dropDownList([
- ';' => 'Point-virgule (;)',
- ',' => 'Virgule (,)'
- ], []); ?>
- <?= $form->field($model, 'option_csv_export_all_products')
- ->dropDownList([
- 0 => 'Non',
- 1 => 'Oui'
- ], []); ?>
- <?= $form->field($model, 'option_csv_export_by_piece')
- ->dropDownList([
- 0 => 'Non',
- 1 => 'Oui'
- ], []); ?>
- <?= $form->field($model, 'option_display_export_grid')
- ->dropDownList([
- 0 => 'Non',
- 1 => 'Oui'
- ], []); ?>
- <?= $form->field($model, 'option_export_display_product_reference')
- ->dropDownList([
- 0 => 'Non',
- 1 => 'Oui'
- ], []); ?>
-
- <h4>Divers</h4>
- <?= $form->field($model, 'option_order_reference_type')
- ->dropDownList([
- Producer::ORDER_REFERENCE_TYPE_NONE => '--',
- Producer::ORDER_REFERENCE_TYPE_YEARLY => 'Annuelle',
- ], []); ?>
- <?= $form->field($model, 'option_behavior_cancel_order')
- ->dropDownList([
- Producer::BEHAVIOR_DELETE_ORDER_DELETE => 'Suppression de la commande',
- Producer::BEHAVIOR_DELETE_ORDER_STATUS => 'Passage de la commande en statut "supprimé"',
- ], []); ?>
- </div>
- </div>
-
-
- <div v-show="currentSection == 'abonnements'" class="panel panel-default">
- <div class="panel-body">
- <h4>Abonnements</h4>
- <?= $form->field($model, 'user_manage_subscription')
- ->dropDownList([
- 0 => 'Non',
- 1 => 'Oui',
- ], []); ?>
- </div>
- </div>
-
- <div v-show="currentSection == 'credit-payment'" class="panel panel-default">
- <div class="panel-body">
- <h4>Crédit</h4>
- <?= $form->field($model, 'credit')
- ->dropDownList([
- 0 => 'Non',
- 1 => 'Oui',
- ], [])
- ->label('Activer le système de Crédit')
- ->hint('Le système de Crédit permet à vos clients d\'avoir un compte prépayé sur le site <em>distrib</em>.<br />'
- . 'Ils créditent leur compte en vous donnant la somme de leur choix et c\'est ensuite à vous de ' . Html::a('mettre à jour', ['user/index']) . ' leur Crédit en ligne.<br />'
- . 'Ceci fait, les clients paient leur commande directement via leur Crédit.'); ?>
-
- <?= $form->field($model, 'credit_functioning')
- ->dropDownList([
- Producer::CREDIT_FUNCTIONING_OPTIONAL => Producer::$creditFunctioningArray[Producer::CREDIT_FUNCTIONING_OPTIONAL],
- Producer::CREDIT_FUNCTIONING_MANDATORY => Producer::$creditFunctioningArray[Producer::CREDIT_FUNCTIONING_MANDATORY],
- Producer::CREDIT_FUNCTIONING_USER => Producer::$creditFunctioningArray[Producer::CREDIT_FUNCTIONING_USER],
- ], [])->hint(Producer::HINT_CREDIT_FUNCTIONING); ?>
-
- <?= $form->field($model, 'use_credit_checked_default')
- ->dropDownList([
- 0 => 'Non',
- 1 => 'Oui',
- ], [])->hint('Utilisation optionnelle du Crédit.'); ?>
-
- <?= $form->field($model, 'credit_limit_reminder', [
- 'template' => '{label}<div class="input-group">{input}<span class="input-group-addon"><span class="glyphicon glyphicon-euro"></span></span></div>{hint}',
- ])
- ->hint("Une relance est envoyé au client dès que ce seuil est dépassé."); ?>
-
-
-
- <?= $form->field($model, 'credit_limit', [
- 'template' => '{label}<div class="input-group">{input}<span class="input-group-addon"><span class="glyphicon glyphicon-euro"></span></span></div>{hint}',
- ])->hint('Limite de crédit que l\'utilisateur ne pourra pas dépasser. Laisser vide pour permettre un crédit négatif et infini.'); ?>
-
- <h4>Paiement en ligne</h4>
-
- <?= $form->field($model, 'online_payment')
- ->dropDownList([
- 0 => 'Non',
- 1 => 'Oui',
- ], []); ?>
- <?= $form->field($model, 'option_online_payment_minimum_amount')
- ->hint('Valeur par défaut si non défini : '.Producer::ONLINE_PAYMENT_MINIMUM_AMOUNT_DEFAULT.' €')
- ->textInput(); ?>
- <?= $form->field($model, 'option_stripe_mode_test')->dropDownList([
- 0 => 'Non',
- 1 => 'Oui'
- ], []); ?>
-
- <?= $form->field($model, 'option_online_payment_type')
- ->dropDownList([
- 'credit' => 'Alimentation du crédit',
- 'order' => 'Paiement à la commande',
- ], []); ?>
-
- <?= $form->field($model, 'option_stripe_public_key')->textInput(); ?>
- <?= $form->field($model, 'option_stripe_private_key')->textInput(); ?>
- <?= $form->field($model, 'option_stripe_endpoint_secret')->textInput(); ?>
- </div>
- </div>
-
- <div v-show="currentSection == 'infos'" class="panel panel-default">
- <div class="panel-body">
- <h4>Informations légales</h4>
- <?= $form->field($model, 'mentions')
- ->textarea(['rows' => 15])
- ->hint('') ?>
- <?= $form->field($model, 'gcs')
- ->textarea(['rows' => 15])
- ->hint('') ?>
- </div>
- </div>
-
- <div v-show="currentSection == 'logiciels-caisse'" class="panel panel-default">
- <div class="panel-body">
- <h4>Tiller</h4>
- <?= $form->field($model, 'tiller')
- ->dropDownList([
- 0 => 'Non',
- 1 => 'Oui'
- ], [])
- ->label('Synchroniser avec Tiller'); ?>
- <?= $form->field($model, 'tiller_provider_token'); ?>
- <?= $form->field($model, 'tiller_restaurant_token'); ?>
- </div>
- </div>
-
- <div v-show="currentSection == 'facturation'" class="panel panel-default">
- <div class="panel-body">
- <h4>Facturation</h4>
- <?= $form->field($model, 'id_tax_rate_default')
- ->dropDownList(ArrayHelper::map(TaxRate::find()->all(), 'id', function ($model) {
- return $model->name;
- }))
- ->label('TVA à appliquer par défaut'); ?>
- <?= $form->field($model, 'option_tax_calculation_method')
- ->dropDownList(Document::$taxCalculationMethodArray); ?>
- <?= $form->field($model, 'option_export_evoliz')->dropDownList([
- 0 => 'Non',
- 1 => 'Oui'
- ]); ?>
- <?= $form->field($model, 'document_quotation_prefix'); ?>
- <?= $form->field($model, 'document_quotation_first_reference'); ?>
- <?= $form->field($model, 'document_quotation_duration'); ?>
- <?= $form->field($model, 'document_invoice_prefix'); ?>
- <?= $form->field($model, 'document_invoice_first_reference'); ?>
- <?= $form->field($model, 'document_delivery_note_prefix'); ?>
- <?= $form->field($model, 'document_delivery_note_first_reference'); ?>
- <?= $form->field($model, 'document_display_orders_invoice')->dropDownList([
- 0 => 'Non',
- 1 => 'Oui'
- ]); ?>
- <?= $form->field($model, 'document_display_orders_delivery_note')->dropDownList([
- 0 => 'Non',
- 1 => 'Oui'
- ]); ?>
- <?= $form->field($model, 'document_display_prices_delivery_note')->dropDownList([
- 0 => 'Non',
- 1 => 'Oui'
- ]); ?>
- <?= $form->field($model, 'document_display_product_description')->dropDownList([
- 0 => 'Non',
- 1 => 'Oui'
- ]); ?>
- <?= $form->field($model, 'option_document_price_decimals')->dropDownList([
- 2 => '2',
- 3 => '3'
- ]); ?>
- <?= $form->field($model, 'document_infos_bottom')
- ->textarea(['rows' => 15]) ?>
- <?= $form->field($model, 'document_infos_quotation')
- ->textarea(['rows' => 15]) ?>
- <?= $form->field($model, 'document_infos_invoice')
- ->textarea(['rows' => 15]) ?>
- <?= $form->field($model, 'document_infos_delivery_note')
- ->textarea(['rows' => 15]) ?>
- </div>
- </div>
- <div class="form-group">
- <?= Html::submitButton('Mettre à jour', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
- </div>
- </div>
- <?php ActiveForm::end(); ?>
- </div>
- </div>
-
-
-
-
|