You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

update.php 31KB

3 months ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559
  1. <?php
  2. /**
  3. * Copyright Guillaume Bourgeois (2018)
  4. *
  5. * contact@souke.fr
  6. *
  7. * Ce logiciel est un programme informatique servant à aider les producteurs
  8. * à distribuer leur production en circuits courts.
  9. *
  10. * Ce logiciel est régi par la licence CeCILL soumise au droit français et
  11. * respectant les principes de diffusion des logiciels libres. Vous pouvez
  12. * utiliser, modifier et/ou redistribuer ce programme sous les conditions
  13. * de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA
  14. * sur le site "http://www.cecill.info".
  15. *
  16. * En contrepartie de l'accessibilité au code source et des droits de copie,
  17. * de modification et de redistribution accordés par cette licence, il n'est
  18. * offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons,
  19. * seule une responsabilité restreinte pèse sur l'auteur du programme, le
  20. * titulaire des droits patrimoniaux et les concédants successifs.
  21. *
  22. * A cet égard l'attention de l'utilisateur est attirée sur les risques
  23. * associés au chargement, à l'utilisation, à la modification et/ou au
  24. * développement et à la reproduction du logiciel par l'utilisateur étant
  25. * donné sa spécificité de logiciel libre, qui peut le rendre complexe à
  26. * manipuler et qui le réserve donc à des développeurs et des professionnels
  27. * avertis possédant des connaissances informatiques approfondies. Les
  28. * utilisateurs sont donc invités à charger et tester l'adéquation du
  29. * logiciel à leurs besoins dans des conditions permettant d'assurer la
  30. * sécurité de leurs systèmes et ou de leurs données et, plus généralement,
  31. * à l'utiliser et l'exploiter dans les mêmes conditions de sécurité.
  32. *
  33. * Le fait que vous puissiez accéder à cet en-tête signifie que vous avez
  34. * pris connaissance de la licence CeCILL, et que vous en avez accepté les
  35. * termes.
  36. */
  37. use common\helpers\Dropdown;
  38. use common\helpers\GlobalParam;
  39. use domain\Config\TaxRate\TaxRate;
  40. use domain\Distribution\Distribution\DistributionModule;
  41. use domain\Distribution\Distribution\ExportManager;
  42. use domain\Document\Document\Document;
  43. use domain\Feature\Feature\Feature;
  44. use domain\Feature\Feature\FeatureModule;
  45. use domain\Producer\Producer\Producer;
  46. use domain\User\User\UserModule;
  47. use domain\User\UserGroup\UserGroupModule;
  48. use yii\helpers\ArrayHelper;
  49. use yii\helpers\Html;
  50. use yii\widgets\ActiveForm;
  51. $userModule = UserModule::getInstance();
  52. $userGroupModule = UserGroupModule::getInstance();
  53. $distributionExportManager = DistributionModule::getInstance()->getExportManager();
  54. $featureChecker = FeatureModule::getInstance()->getChecker();
  55. $userCurrent = GlobalParam::getCurrentUser();
  56. $this->setTitle('Paramètres');
  57. $this->addBreadcrumb($this->getTitle());
  58. ?>
  59. <script>
  60. var appInitValues = {
  61. isAdmin: <?= (int)$userModule->getAuthorizationChecker()->isGrantedAsAdministrator($userCurrent) ?>
  62. };
  63. </script>
  64. <div class="user-update" id="app-producer-update">
  65. <div id="nav-params">
  66. <a v-for="section in sectionsArray" v-if="!section.isAdminSection || (section.isAdminSection && isAdmin)"
  67. :class="'btn '+((currentSection == section.name) ? 'btn-primary' : 'btn-default')"
  68. @click="changeSection(section)" :href="'#'+section.name">
  69. {{ section.nameDisplay }}
  70. </a>
  71. </div>
  72. <div class="user-form">
  73. <?php $form = ActiveForm::begin([
  74. 'enableClientValidation' => false,
  75. ]); ?>
  76. <div>
  77. <div v-show="currentSection == 'general'" class="panel panel-default">
  78. <div class="panel-body">
  79. <h4>Accès</h4>
  80. <?= $form->field($model, 'active')
  81. ->dropDownList(Dropdown::noYesChoices())
  82. ->label('En ligne')
  83. ->hint('Activez cette option pour rendre votre espace visible à vos clients.'); ?>
  84. <?= $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 />"
  85. . "Ce code est à communiquer à vos clients pour qu'ils puissent ajouter votre espace à leurs favoris.<br />"
  86. . "<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.") ?>
  87. <h4>Général</h4>
  88. <?= $form->field($model, 'name') ?>
  89. <?= $form->field($model, 'type') ?>
  90. <?php /*$form->field($model, 'description')
  91. ->textarea(['rows' => 4])
  92. ->hint('Affiché sur la page d\'accueil')*/ ?>
  93. <?= $form->field($model, 'description')->widget(letyii\tinymce\Tinymce::class, [
  94. 'configs' => [
  95. 'plugins' => Yii::$app->parameterBag->get('tinyMcePlugins'),
  96. ]
  97. ])->hint('Affiché sur la page d\'accueil') ; ?>
  98. <?= $form->field($model, 'address')
  99. ->textarea(['rows' => 4]) ?>
  100. <?= $form->field($model, 'postcode') ?>
  101. <?= $form->field($model, 'city') ?>
  102. <h4>Contact</h4>
  103. <?= $form->field($model, 'contact_email') ?>
  104. <?= $form->field($model, 'website') ?>
  105. <h4>Apparence</h4>
  106. <?= $form->field($model, 'option_main_color') ?>
  107. <?= $form->field($model, 'background_color_logo') ?>
  108. <?= $form->field($model, 'logoFile')->fileInput() ?>
  109. <?php
  110. if (strlen($model->logo)) {
  111. echo '<img src="' . Yii::$app->urlManagerProducer->getHostInfo() . '/' . Yii::$app->urlManagerProducer->baseUrl . '/uploads/' . $model->logo . '" width="200px" /><br />';
  112. echo '<input type="checkbox" name="delete_logo" id="delete_logo" /> <label for="delete_logo">Supprimer le logo</label><br /><br />';
  113. }
  114. ?>
  115. <?= $form->field($model, 'photoFile')->fileInput(); ?>
  116. <?php
  117. if (strlen($model->photo)) {
  118. echo '<img src="' . Yii::$app->urlManagerProducer->getHostInfo() . '/' . Yii::$app->urlManagerProducer->baseUrl . '/uploads/' . $model->photo . '" width="400px" /><br />';
  119. echo '<input type="checkbox" name="delete_photo" id="delete_photo" /> <label for="delete_photo">Supprimer la photo</label><br /><br />';
  120. }
  121. ?>
  122. <?= $form->field($model, 'behavior_home_point_sale_day_list')
  123. ->dropDownList([
  124. Producer::BEHAVIOR_HOME_POINT_SALE_DAY_LIST_WEEK => 'Jours de la semaine',
  125. Producer::BEHAVIOR_HOME_POINT_SALE_DAY_LIST_INCOMING_DISTRIBUTIONS => 'Distributions à venir',
  126. ]); ?>
  127. <?= $form->field($model, 'option_point_sale_wording') ?>
  128. <h4>Congés</h4>
  129. <?= $form->field($model, 'option_leave_period_start')->textInput([
  130. 'class' => 'datepicker form-control'
  131. ]); ?>
  132. <?= $form->field($model, 'option_leave_period_end')->textInput([
  133. 'class' => 'datepicker form-control'
  134. ]); ?>
  135. <?= $form->field($model, 'option_leave_period_message_display')
  136. ->dropDownList(Dropdown::noYesChoices()); ?>
  137. <?= $form->field($model, 'option_leave_period_message_title')->textInput(); ?>
  138. <?= $form->field($model, 'option_leave_period_message')->textarea(); ?>
  139. <h4>Groupes utilisateurs</h4>
  140. <?= $form->field($model, 'id_user_group_default')
  141. ->dropDownList($userGroupModule->getRepository()->populateUserGroupDropdownList()); ?>
  142. </div>
  143. </div>
  144. <div v-show="currentSection == 'tableau-bord'" class="panel panel-default">
  145. <div class="panel-body">
  146. <h4>Tableau de bord administration</h4>
  147. <?= $form->field($model, 'option_dashboard_number_distributions')
  148. ->dropDownList(Dropdown::numberChoices(3, 30, false, '', 3)); ?>
  149. <?= $form->field($model, 'option_dashboard_date_start')->textInput([
  150. 'class' => 'datepicker form-control'
  151. ]); ?>
  152. <?= $form->field($model, 'option_dashboard_date_end')->textInput([
  153. 'class' => 'datepicker form-control'
  154. ]); ?>
  155. </div>
  156. </div>
  157. <div v-show="currentSection == 'prise-commande'" class="panel panel-default">
  158. <div class="panel-body">
  159. <h4>Horaires</h4>
  160. <?php
  161. $delaysArray = [
  162. 1 => '1 jour',
  163. 2 => '2 jours',
  164. 3 => '3 jours',
  165. 4 => '4 jours',
  166. 5 => '5 jours',
  167. 6 => '6 jours',
  168. 7 => '7 jours',
  169. ];
  170. $deadlinesArray = [
  171. 24 => 'Minuit',
  172. 23 => '23h',
  173. 22 => '22h',
  174. 21 => '21h',
  175. 20 => '20h',
  176. 19 => '19h',
  177. 18 => '18h',
  178. 17 => '17h',
  179. 16 => '16h',
  180. 15 => '15h',
  181. 14 => '14h',
  182. 13 => '13h',
  183. 12 => '12h',
  184. 11 => '11h',
  185. 10 => '10h',
  186. 9 => '9h',
  187. 8 => '8h',
  188. ];
  189. $daysArray = [
  190. 'monday' => 'Lundi',
  191. 'tuesday' => 'Mardi',
  192. 'wednesday' => 'Mercredi',
  193. 'thursday' => 'Jeudi',
  194. 'friday' => 'Vendredi',
  195. 'saturday' => 'Samedi',
  196. 'sunday' => 'Dimanche'
  197. ];
  198. ?>
  199. <div class="row">
  200. <div class="col-md-2">
  201. <strong>Par défaut</strong>
  202. </div>
  203. <div class="col-md-5">
  204. <?= $form->field($model, 'order_delay')
  205. ->dropDownList($delaysArray, ['prompt' => '--'])
  206. ->hint('Si <strong>1 jour</strong> est sélectionné, le client pourra commander jusqu\'à la veille de la production.<br />'
  207. . 'Si <strong>2 jours</strong> est sélectionné, le client pourra commander jusqu\'à l\'avant-veille de la production, etc.'); ?>
  208. </div>
  209. <div class="col-md-5">
  210. <?= $form->field($model, 'order_deadline')
  211. ->dropDownList($deadlinesArray, ['prompt' => '--'])
  212. ->hint('Heure limite jusqu\'à laquelle les clients peuvent commander pour satisfaire le délai de commande.<br />'
  213. . '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.'); ?>
  214. </div>
  215. </div>
  216. <?php foreach ($daysArray as $day => $labelDay): ?>
  217. <div class="row">
  218. <div class="col-md-2">
  219. <strong><?= $labelDay ?></strong>
  220. </div>
  221. <div class="col-md-5">
  222. <?= $form->field($model, 'order_delay_' . $day, [
  223. 'template' => '{input}',
  224. ])->dropDownList($delaysArray, ['prompt' => '--'])->label(''); ?>
  225. </div>
  226. <div class="col-md-5">
  227. <?= $form->field($model, 'order_deadline_' . $day, [
  228. 'template' => '{input}',
  229. ])->dropDownList($deadlinesArray, ['prompt' => '--'])->label(''); ?>
  230. </div>
  231. </div>
  232. <?php endforeach; ?>
  233. <h4>Informations</h4>
  234. <?= $form->field($model, 'order_infos')
  235. ->textarea(['rows' => 6])
  236. ->hint('Affichées au client lors de sa commande') ?>
  237. <?= $form->field($model, 'option_payment_info')
  238. ->textarea(['rows' => 6])
  239. ->hint('Affichées au client à la fin de la prise de commande') ?>
  240. <h4>Tunnel de commande</h4>
  241. <?= $form->field($model, 'option_order_entry_point')
  242. ->dropDownList([
  243. Producer::ORDER_ENTRY_POINT_DATE => 'Date',
  244. Producer::ORDER_ENTRY_POINT_POINT_SALE => 'Point de vente',
  245. ], []); ?>
  246. <?= $form->field($model, 'behavior_order_select_distribution')
  247. ->dropDownList([
  248. Producer::BEHAVIOR_ORDER_SELECT_DISTRIBUTION_CALENDAR => 'Calendrier',
  249. Producer::BEHAVIOR_ORDER_SELECT_DISTRIBUTION_LIST => 'Liste',
  250. ]); ?>
  251. <?= $form->field($model, 'option_delivery')
  252. ->dropDownList(Dropdown::noYesChoices()); ?>
  253. <?php echo $form->field($model, 'option_allow_order_guest')
  254. ->dropDownList(Dropdown::noYesChoices()); ?>
  255. <h4>Notifications</h4>
  256. <?= $form->field($model, 'option_notify_producer_order_summary')
  257. ->dropDownList(Dropdown::noYesChoices()); ?>
  258. <?= $form->field($model, 'option_email_confirm')
  259. ->dropDownList(Dropdown::noYesChoices()); ?>
  260. <?= $form->field($model, 'option_email_confirm_producer')
  261. ->dropDownList(Dropdown::noYesChoices()); ?>
  262. <h4>Divers</h4>
  263. <?php
  264. $choicesWeeksDistributionsActivatedInAdvanceArray = [null => '--'];
  265. for ($i = 1; $i < 13; $i++) {
  266. $choicesWeeksDistributionsActivatedInAdvanceArray[$i] = $i . ' semaine' . (($i > 1) ? 's' : '');
  267. }
  268. ?>
  269. <?= $form->field($model, 'option_weeks_distributions_activated_in_advance')
  270. ->dropDownList($choicesWeeksDistributionsActivatedInAdvanceArray)
  271. ->hint("Attention, les premières semaines doivent être activées manuellement."); ?>
  272. <?php
  273. // Fonctionnalité désactivée car elle crée des bugs
  274. // @TODO : à réactiver quand tous les problèmes seront résolus
  275. /*$form->field($model, 'option_order_reference_type')
  276. ->dropDownList([
  277. Producer::ORDER_REFERENCE_TYPE_NONE => '--',
  278. Producer::ORDER_REFERENCE_TYPE_YEARLY => 'Annuelle',
  279. ], []);*/ ?>
  280. <?= $form->field($model, 'option_behavior_cancel_order')
  281. ->dropDownList([
  282. Producer::BEHAVIOR_DELETE_ORDER_DELETE => 'Suppression de la commande',
  283. Producer::BEHAVIOR_DELETE_ORDER_STATUS => 'Passage de la commande en statut "annulée"',
  284. ], []); ?>
  285. </div>
  286. </div>
  287. <div v-show="currentSection == 'exports'" class="panel panel-default">
  288. <div class="panel-body">
  289. <h4>Exports affichés dans les distributions</h4>
  290. <?= $distributionExportManager->getProducerFormCheckboxes($form, $model) ?>
  291. <h4>Options exports</h4>
  292. <?= $form->field($model, 'option_csv_separator')
  293. ->dropDownList([
  294. ';' => 'Point-virgule (;)',
  295. ',' => 'Virgule (,)'
  296. ], []); ?>
  297. <?= $form->field($model, 'option_export_display_product_reference')
  298. ->dropDownList(Dropdown::noYesChoices()); ?>
  299. <?= $form->field($model, 'option_export_display_column_delivery_note')
  300. ->dropDownList(Dropdown::noYesChoices()); ?>
  301. <?= $form->field($model, 'option_csv_export_all_products')
  302. ->dropDownList(Dropdown::noYesChoices()); ?>
  303. <?= $form->field($model, 'option_csv_export_by_piece')
  304. ->dropDownList(Dropdown::noYesChoices()); ?>
  305. <?php if($featureChecker->isEnabled(Feature::ALIAS_EXPORT_SHOPPING_CART_LABELS_ADVANCED)): ?>
  306. <?= $form->field($model, 'export_shopping_cart_labels_format')
  307. ->dropDownList($distributionExportManager->getGenerator(ExportManager::SHOPPING_CART_LABELS_PDF)->populateDropdownSpecificFormats()); ?>
  308. <?= $form->field($model, 'export_shopping_cart_labels_pdf_in_cart_label_specific_format')
  309. ->dropDownList(Dropdown::noYesChoices()); ?>
  310. <?php else: ?>
  311. <?= $form->field($model, 'export_shopping_cart_labels_number_per_column')
  312. ->dropDownList(Dropdown::numberChoices(1, 20)); ?>
  313. <?php endif; ?>
  314. </div>
  315. </div>
  316. <div v-show="currentSection == 'abonnements'" class="panel panel-default">
  317. <div class="panel-body">
  318. <h4>Abonnements</h4>
  319. <?= $form->field($model, 'user_manage_subscription')
  320. ->dropDownList(Dropdown::noYesChoices()); ?>
  321. </div>
  322. </div>
  323. <div v-show="currentSection == 'communication'" class="panel panel-default">
  324. <div class="panel-body">
  325. <h4>Boutique</h4>
  326. <?= $form->field($model, 'option_newsletter_description')
  327. ->hint('Description affichée sur la page "Infolettre" de la boutique')
  328. ->textarea(); ?>
  329. <h4>Envoi d'emails</h4>
  330. <?= $form->field($model, 'option_communicate_email_default_subject')->textInput(); ?>
  331. <?= $form->field($model, 'option_communicate_email_default_message')->widget(letyii\tinymce\Tinymce::class, [
  332. 'configs' => [
  333. 'plugins' => Yii::$app->parameterBag->get('tinyMcePlugins'),
  334. ]
  335. ]); ?>
  336. </div>
  337. </div>
  338. <div v-show="currentSection == 'credit-payment'" class="panel panel-default">
  339. <div class="panel-body">
  340. <h4>Cagnotte</h4>
  341. <?= $form->field($model, 'credit')
  342. ->dropDownList(Dropdown::noYesChoices())
  343. ->label('Activer le système de cagnotte')
  344. ->hint('Le système de cagnotte permet à vos clients d\'avoir un compte prépayé sur le site <em>Souke</em>.<br />'
  345. . '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 cagnotte en ligne.<br />'
  346. . 'Ceci fait, les clients paient leur commande directement via leur cagnotte.'); ?>
  347. <?= $form->field($model, 'use_credit_checked_default')
  348. ->dropDownList(Dropdown::noYesChoices())
  349. ->hint('Utilisation optionnelle de la cagnotte.'); ?>
  350. <?= $form->field($model, 'credit_limit_reminder', [
  351. 'template' => '{label}<div class="input-group">{input}<span class="input-group-addon"><span class="glyphicon glyphicon-euro"></span></span></div>{hint}',
  352. ])
  353. ->hint("Une relance est envoyé au client dès que ce seuil est dépassé."); ?>
  354. <?= $form->field($model, 'credit_limit', [
  355. 'template' => '{label}<div class="input-group">{input}<span class="input-group-addon"><span class="glyphicon glyphicon-euro"></span></span></div>{hint}',
  356. ])->hint('Limite de cagnotte que l\'utilisateur ne pourra pas dépasser. Laisser vide pour permettre un montant de cagnotte négatif et infini.'); ?>
  357. <?= $form->field($model, 'option_check_by_default_prevent_user_credit')
  358. ->dropDownList(Dropdown::noYesChoices()); ?>
  359. <?= $form->field($model, 'option_credit_description')
  360. ->hint('Description affichée sur la page "Cagnotte" de la boutique')
  361. ->textarea(); ?>
  362. <?php if($featureChecker->isEnabled(Feature::ALIAS_ONLINE_PAYMENT)): ?>
  363. <h4>Paiement en ligne</h4>
  364. <?php if($userModule->getAuthorizationChecker()->isGrantedAsAdministrator($userCurrent)): ?>
  365. <?= $form->field($model, 'online_payment')
  366. ->dropDownList(Dropdown::noYesChoices()); ?>
  367. <?= $form->field($model, 'option_stripe_mode_test')->dropDownList(Dropdown::noYesChoices()); ?>
  368. <?php /*$form->field($model, 'option_online_payment_type')
  369. ->dropDownList([
  370. 'credit' => 'Alimentation de la cagnotte',
  371. 'order' => 'Paiement à la commande',
  372. ], []);*/ ?>
  373. <?= $form->field($model, 'option_stripe_public_key')->textInput(); ?>
  374. <?= $form->field($model, 'option_stripe_private_key')->textInput(); ?>
  375. <?= $form->field($model, 'option_stripe_endpoint_secret')->textInput(); ?>
  376. <?php endif; ?>
  377. <?= $form->field($model, 'option_online_payment_minimum_amount')
  378. ->hint('Valeur par défaut si non défini : ' . Producer::ONLINE_PAYMENT_MINIMUM_AMOUNT_DEFAULT . ' €')
  379. ->textInput(); ?>
  380. <?php endif; ?>
  381. </div>
  382. </div>
  383. <div v-show="currentSection == 'infos'" class="panel panel-default">
  384. <div class="panel-body">
  385. <h4>Informations légales</h4>
  386. <?= $form->field($model, 'mentions')
  387. ->textarea(['rows' => 15])
  388. ->hint('') ?>
  389. <?= $form->field($model, 'gcs')
  390. ->textarea(['rows' => 15])
  391. ->hint('') ?>
  392. </div>
  393. </div>
  394. <div v-show="currentSection == 'logiciels-caisse'" class="panel panel-default">
  395. <div class="panel-body">
  396. <h4>Tiller</h4>
  397. <?= $form->field($model, 'tiller')
  398. ->dropDownList(Dropdown::noYesChoices())
  399. ->label('Synchroniser avec Tiller'); ?>
  400. <?= $form->field($model, 'tiller_api_version')
  401. ->dropDownList([
  402. 'v2' => 'v2',
  403. 'v3' => 'v3'
  404. ]); ?>
  405. <h4>API V2</h4>
  406. <?= $form->field($model, 'tiller_provider_token'); ?>
  407. <?= $form->field($model, 'tiller_restaurant_token'); ?>
  408. <h4>API V3</h4>
  409. <?= $form->field($model, 'tiller_store_id'); ?>
  410. <?= $form->field($model, 'tiller_redirect_uri'); ?>
  411. <?= $form->field($model, 'tiller_client_id'); ?>
  412. <?= $form->field($model, 'tiller_client_secret'); ?>
  413. </div>
  414. </div>
  415. <div v-show="currentSection == 'facturation'" class="panel panel-default">
  416. <div class="panel-body">
  417. <h4>Facturation</h4>
  418. <?= $form->field($model, 'id_tax_rate_default')
  419. ->dropDownList(ArrayHelper::map(TaxRate::find()->all(), 'id', function ($model) {
  420. return $model->name;
  421. }))
  422. ->label('TVA à appliquer par défaut'); ?>
  423. <?= $form->field($model, 'option_tax_calculation_method')
  424. ->dropDownList(Document::$taxCalculationMethodArray); ?>
  425. <?php if($featureChecker->isEnabled(Feature::ALIAS_BRIDGE_EVOLIZ)): ?>
  426. <?= $form->field($model, 'option_export_evoliz')->dropDownList(Dropdown::noYesChoices()); ?>
  427. <?php endif; ?>
  428. <?php $hintKeywordsPrefix = "Saisissez [ANNEE] pour intégrer l'année courante"; ?>
  429. <?= $form->field($model, 'document_quotation_prefix')->hint($hintKeywordsPrefix); ?>
  430. <?= $form->field($model, 'document_quotation_first_reference'); ?>
  431. <?= $form->field($model, 'document_quotation_duration'); ?>
  432. <?= $form->field($model, 'document_invoice_prefix')->hint($hintKeywordsPrefix);; ?>
  433. <?= $form->field($model, 'document_invoice_first_reference'); ?>
  434. <?= $form->field($model, 'document_delivery_note_prefix')->hint($hintKeywordsPrefix);; ?>
  435. <?= $form->field($model, 'document_delivery_note_first_reference'); ?>
  436. <?= $form->field($model, 'option_document_default_naming')->dropDownList(Dropdown::noYesChoices()); ?>
  437. <?= $form->field($model, 'option_document_name_as_filename')->dropDownList(Dropdown::noYesChoices()); ?>
  438. <?= $form->field($model, 'delivery_note_automatic_validation')->dropDownList(Dropdown::noYesChoices()); ?>
  439. <?= $form->field($model, 'option_invoice_only_based_on_delivery_notes')->dropDownList(Dropdown::noYesChoices()); ?>
  440. <?= $form->field($model, 'option_document_width_logo')
  441. ->dropDownList(Dropdown::numberChoices(50, 250, true, 'px', 50)); ?>
  442. <?= $form->field($model, 'document_display_orders_invoice')->dropDownList(Dropdown::noYesChoices()); ?>
  443. <?= $form->field($model, 'document_display_orders_delivery_note')->dropDownList(Dropdown::noYesChoices()); ?>
  444. <?= $form->field($model, 'document_display_prices_delivery_note')->dropDownList(Dropdown::noYesChoices()); ?>
  445. <?= $form->field($model, 'document_display_product_description')->dropDownList(Dropdown::noYesChoices()); ?>
  446. <?= $form->field($model, 'option_document_price_decimals')->dropDownList([
  447. 2 => '2',
  448. 3 => '3'
  449. ]); ?>
  450. <?= $form->field($model, 'option_document_display_price_unit_reference')
  451. ->dropDownList(Dropdown::noYesChoices()); ?>
  452. <?= $form->field($model, 'document_infos_top')
  453. ->textarea(['rows' => 8])
  454. ->hint("Affichées juste en dessous de l'adresse"); ?>
  455. <?= $form->field($model, 'document_infos_bottom')
  456. ->textarea(['rows' => 8]) ?>
  457. <?= $form->field($model, 'document_image_bottomFile')->fileInput()->hint('') ?>
  458. <?php
  459. if (strlen($model->document_image_bottom)) {
  460. echo '<img src="' . Yii::$app->urlManagerProducer->getHostInfo() . '/' . Yii::$app->urlManagerProducer->baseUrl . '/uploads/' . $model->document_image_bottom . '" width="400px" /><br />';
  461. echo '<input type="checkbox" name="delete_document_image_bottom" id="delete_document_image_bottom" /> <label for="delete_document_image_bottom">Supprimer l\'image</label><br /><br />';
  462. }
  463. ?>
  464. <?= $form->field($model, 'document_infos_quotation')
  465. ->textarea(['rows' => 8]) ?>
  466. <?= $form->field($model, 'document_infos_invoice')
  467. ->textarea(['rows' => 8]) ?>
  468. <?= $form->field($model, 'document_infos_delivery_note')
  469. ->textarea(['rows' => 8]) ?>
  470. </div>
  471. </div>
  472. <div v-show="currentSection == 'software'" class="panel panel-default">
  473. <div class="panel-body">
  474. <h4>Souke</h4>
  475. <?= $form->field($model, 'option_display_message_new_opendistrib_version')
  476. ->dropDownList(Dropdown::noYesChoices()); ?>
  477. <?= $form->field($model, 'agree_contact_about_software_development')
  478. ->dropDownList(Dropdown::noYesChoices()); ?>
  479. <?php $urlAboutPage = Yii::$app->urlManagerFrontend->createAbsoluteUrl(['site/about']); ?>
  480. <?= $form->field($model, 'option_testimony')
  481. ->textarea(['rows' => 7])
  482. ->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."); ?>
  483. <?= $form->field($model, 'option_time_saved')
  484. ->dropDownList([
  485. null => '--',
  486. 0.5 => '30 minutes',
  487. 1 => '1 heure',
  488. 2 => '2 heures',
  489. 3 => '3 heures',
  490. 4 => '4 heures',
  491. 5 => '5 heures',
  492. 6 => '6 heures',
  493. 7 => '7 heures',
  494. 8 => '8 heures',
  495. ])
  496. ->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."); ?>
  497. </div>
  498. </div>
  499. <div class="form-group form-actions">
  500. <?= Html::submitButton('Mettre à jour', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
  501. </div>
  502. </div>
  503. <?php ActiveForm::end(); ?>
  504. </div>
  505. </div>