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.

324 lines
15KB

  1. <?php
  2. /**
  3. * Copyright Souke (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 domain\Distribution\Distribution\DistributionModule;
  38. use domain\Distribution\Distribution\ExportManager;
  39. use domain\Feature\Feature\Feature;
  40. use domain\Feature\Feature\FeatureModule;
  41. use domain\Producer\Producer\Producer;
  42. use domain\Producer\Producer\ProducerModule;
  43. use lo\widgets\Toggle;
  44. use domain\User\User\UserModule;
  45. use yii\helpers\ArrayHelper;
  46. use yii\helpers\Html;
  47. use yii\widgets\ActiveForm;
  48. $producerModule = ProducerModule::getInstance();
  49. $userModule = UserModule::getInstance();
  50. $distributionModule = DistributionModule::getInstance();
  51. $featureChecker = FeatureModule::getInstance()->getChecker();
  52. ?>
  53. <div class="point-sale-form">
  54. <?php $form = ActiveForm::begin([
  55. 'enableClientValidation' => false
  56. ]); ?>
  57. <div class="col-md-8">
  58. <div class="panel panel-default">
  59. <div class="panel-heading">
  60. <h3 class="panel-title">
  61. <i class="fa fa-th-list"></i>
  62. Général
  63. </h3>
  64. </div>
  65. <div class="panel-body">
  66. <?= $form->field($model, 'name')->textInput(['maxlength' => 255]) ?>
  67. <?= $form->field($model, 'locality')->textInput(['maxlength' => 255]) ?>
  68. <?= $form->field($model, 'address')->textarea(['rows' => 4]) ?>
  69. <?= $form->field($model, 'minimum_order_amount')->textInput() ?>
  70. </div>
  71. </div>
  72. <div class="panel panel-default">
  73. <div class="panel-heading">
  74. <h3 class="panel-title">
  75. <span class="glyphicon glyphicon-credit-card"></span>
  76. Modes de paiement
  77. </h3>
  78. </div>
  79. <div class="panel-body">
  80. <div id="credit">
  81. <?php
  82. echo $form->field($model, 'payment_method_onsite')->widget(Toggle::class,
  83. [
  84. 'options' => [
  85. 'data-id' => $model->id,
  86. 'data-on' => 'Oui',
  87. 'data-off' => 'Non',
  88. ],
  89. ]
  90. );
  91. $addHintCredit = '';
  92. if (!$producerModule->getConfig('credit')):
  93. $addHintCredit = 'Attention, le système de cagnotte est désactivé au niveau des ' . Html::a('paramètres globaux', ['producer/update']);
  94. endif;
  95. echo '<div class="row">';
  96. echo '<div class="col-md-4">';
  97. echo $form->field($model, 'payment_method_credit')->widget(Toggle::class,
  98. [
  99. 'options' => [
  100. 'data-id' => $model->id,
  101. 'data-on' => 'Oui',
  102. 'data-off' => 'Non',
  103. ],
  104. ]
  105. )->hint($addHintCredit);
  106. echo '</div>';
  107. echo '<div class="col-md-8">';
  108. echo $form->field($model, 'credit_functioning')
  109. ->label('Fonctionnement de la cagnotte <span class="glyphicon glyphicon-info-sign" data-toggle="tooltip" data-placement="bottom" title="'.Producer::HINT_CREDIT_FUNCTIONING.'" data-html="true"></span>')
  110. ->dropDownList([
  111. Producer::CREDIT_FUNCTIONING_OPTIONAL => Producer::$creditFunctioningArray[Producer::CREDIT_FUNCTIONING_OPTIONAL],
  112. Producer::CREDIT_FUNCTIONING_MANDATORY => Producer::$creditFunctioningArray[Producer::CREDIT_FUNCTIONING_MANDATORY],
  113. Producer::CREDIT_FUNCTIONING_USER => Producer::$creditFunctioningArray[Producer::CREDIT_FUNCTIONING_USER],
  114. ]);
  115. echo '</div>';
  116. echo '</div>';
  117. if($featureChecker->isEnabled(Feature::ALIAS_ONLINE_PAYMENT)) {
  118. echo $form->field($model, 'payment_method_online')->widget(Toggle::class,
  119. [
  120. 'options' => [
  121. 'data-id' => $model->id,
  122. 'data-on' => 'Oui',
  123. 'data-off' => 'Non',
  124. ],
  125. ]
  126. );
  127. }
  128. ?>
  129. </div>
  130. </div>
  131. </div>
  132. <?php /*$form->field($model, 'product_price_percent')
  133. ->dropDownList( ProductPrice::percentValues(), [])->hint('Pourcentage appliqué aux prix de chaque produit dans ce point de vente.');*/ ?>
  134. <div class="panel panel-default">
  135. <div class="panel-heading">
  136. <h3 class="panel-title">
  137. <i class="fa fa-truck"></i>
  138. Livraison à domicile
  139. </h3>
  140. </div>
  141. <div class="panel-body">
  142. <div id="home-delivery">
  143. <?= $form->field($model, 'is_home_delivery')->widget(Toggle::class,
  144. [
  145. 'options' => [
  146. 'data-id' => $model->id,
  147. 'data-on' => 'Oui',
  148. 'data-off' => 'Non',
  149. ],
  150. ]
  151. ); ?>
  152. </div>
  153. </div>
  154. </div>
  155. <div class="panel panel-default">
  156. <div class="panel-heading">
  157. <h3 class="panel-title">
  158. <i class="fa fa-th-large"></i>
  159. Boîte à pain
  160. </h3>
  161. </div>
  162. <div class="panel-body">
  163. <div id="bread-box">
  164. <?= $form->field($model, 'is_bread_box')->widget(Toggle::class,
  165. [
  166. 'options' => [
  167. 'data-id' => $model->id,
  168. 'data-on' => 'Oui',
  169. 'data-off' => 'Non',
  170. ],
  171. ]
  172. ); ?>
  173. <?= $form->field($model, 'bread_box_code')->textInput() ?>
  174. <?= $form->field($model, 'maximum_number_orders')->textInput() ?>
  175. </div>
  176. </div>
  177. </div>
  178. </div>
  179. <div class="col-md-4">
  180. <div class="panel panel-default">
  181. <div class="panel-heading">
  182. <h3 class="panel-title">
  183. <i class="fa fa-calendar"></i>
  184. Jours de livraison
  185. </h3>
  186. </div>
  187. <div class="panel-body">
  188. <div id="days-distribution">
  189. <?php $optionsTextareaInfos = ['rows' => 2, 'placeholder' => 'Informations'] ?>
  190. <div class="day">
  191. <?= $form->field($model, 'delivery_monday')->checkbox() ?>
  192. <?= $form->field($model, 'infos_monday')->textarea($optionsTextareaInfos) ?>
  193. </div>
  194. <div class="day">
  195. <?= $form->field($model, 'delivery_tuesday')->checkbox() ?>
  196. <?= $form->field($model, 'infos_tuesday')->textarea($optionsTextareaInfos) ?>
  197. </div>
  198. <div class="day">
  199. <?= $form->field($model, 'delivery_wednesday')->checkbox() ?>
  200. <?= $form->field($model, 'infos_wednesday')->textarea($optionsTextareaInfos) ?>
  201. </div>
  202. <div class="day">
  203. <?= $form->field($model, 'delivery_thursday')->checkbox() ?>
  204. <?= $form->field($model, 'infos_thursday')->textarea($optionsTextareaInfos) ?>
  205. </div>
  206. <div class="day">
  207. <?= $form->field($model, 'delivery_friday')->checkbox() ?>
  208. <?= $form->field($model, 'infos_friday')->textarea($optionsTextareaInfos) ?>
  209. </div>
  210. <div class="day">
  211. <?= $form->field($model, 'delivery_saturday')->checkbox() ?>
  212. <?= $form->field($model, 'infos_saturday')->textarea($optionsTextareaInfos) ?>
  213. </div>
  214. <div class="day">
  215. <?= $form->field($model, 'delivery_sunday')->checkbox() ?>
  216. <?= $form->field($model, 'infos_sunday')->textarea($optionsTextareaInfos) ?>
  217. </div>
  218. </div>
  219. </div>
  220. </div>
  221. <div class="panel panel-default">
  222. <div class="panel-heading">
  223. <h3 class="panel-title">
  224. <i class="fa fa-lock"></i>
  225. Accès
  226. </h3>
  227. </div>
  228. <div class="panel-body">
  229. <?= $form->field($model, 'code')
  230. ->label('Code d\'accès')
  231. ->hint('Renseignez ce champs si vous souhaitez protéger ce point de vente par un code.')
  232. ?>
  233. <?= $form->field($model, 'restricted_access')
  234. ->checkbox()
  235. ->hint('Cochez cette case si seulement un groupe restreint d\'utilisateurs peuvent accéder à ce point de vente.<br />'
  236. . 'Dans le cas des boîtes à pain, il vous est possible de spécifier un commentaire pour chaque utilisateur sélectionné afin de lui renseigner son numéro de boîte ou son code.') ?>
  237. <div id="users">
  238. <?= Html::activeCheckboxList($model, 'users', ArrayHelper::map($users, 'user_id', function ($model_user, $defaultValue) use ($model) {
  239. $userModule = UserModule::getInstance();
  240. return Html::encode($userModule->getUsernameFromArray($model_user)) . '<br />'
  241. . Html::activeTextInput(
  242. $model,
  243. 'users_comment[' . $model_user['user_id'] . ']',
  244. [
  245. 'class' => 'form-control commentaire',
  246. 'placeholder' => 'Commentaire',
  247. 'value' => (isset($model->users_comment[$model_user['user_id']])) ? Html::encode($model->users_comment[$model_user['user_id']]) : ''
  248. ]);
  249. }), ['encode' => false, 'class' => '']) ?>
  250. </div>
  251. </div>
  252. </div>
  253. <div class="panel panel-default">
  254. <div class="panel-heading">
  255. <h3 class="panel-title">
  256. <i class="fa fa-sticky-note-o"></i>
  257. Facturation
  258. </h3>
  259. </div>
  260. <div class="panel-body">
  261. <?= $form->field($model, 'id_user', [
  262. 'template' => '{label} <a href="' . Yii::$app->urlManager->createUrl(['user/create']) . '" class="btn btn-xs btn-default">Nouvel utilisateur <span class="glyphicon glyphicon-plus"></span></a><div>{input}</div>{hint}',
  263. ])
  264. ->dropDownList($userModule->populateUserDropdownList(), ['class' => 'select2'])
  265. ->hint('Utilisateur au nom duquel les factures de ce point de vente seront éditées'); ?>
  266. </div>
  267. </div>
  268. <div class="panel panel-default">
  269. <div class="panel-heading">
  270. <h3 class="panel-title">
  271. <i class="fa fa-sticky-note-o"></i>
  272. Génération des bons de livraison
  273. </h3>
  274. </div>
  275. <div class="panel-body">
  276. <div id="delivery-note-generation">
  277. <?= $form->field($model, 'button_generate_delivery_note_point_sale')->checkbox() ?>
  278. <?= $form->field($model, 'button_generate_delivery_note_each_user')->checkbox() ?>
  279. </div>
  280. </div>
  281. </div>
  282. <?php if ($distributionModule->getExportManager()->isEnabled(ExportManager::SHOPPING_CART_LABELS_PDF)): ?>
  283. <div class="panel panel-default">
  284. <div class="panel-heading">
  285. <h3 class="panel-title">Exports</h3>
  286. </div>
  287. <div class="panel-body">
  288. <?= $form->field($model, 'exclude_export_shopping_cart_labels')->checkbox(); ?>
  289. </div>
  290. </div>
  291. <?php endif; ?>
  292. </div>
  293. <div class="clr"></div>
  294. <div class="form-group form-actions">
  295. <?= Html::a('Retour', ['point-sale/index'], ['class' => 'btn btn-default']) ?>
  296. <?= Html::submitButton($model->isNewRecord ? 'Créer' : 'Modifier', ['class' => 'btn btn-primary']) ?>
  297. </div>
  298. <?php ActiveForm::end(); ?>
  299. </div>