]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
[ERP-381] dicts
authorAlexander Smirnov <fredeom@mail.ru>
Fri, 28 Mar 2025 13:39:42 +0000 (16:39 +0300)
committerAlexander Smirnov <fredeom@mail.ru>
Fri, 28 Mar 2025 13:39:42 +0000 (16:39 +0300)
erp24/controllers/BouquetController.php
erp24/records/BouquetComposition.php
erp24/views/bouquet/_product_edit.php
erp24/views/bouquet/_product_list.php
erp24/views/bouquet/index.php
erp24/views/bouquet/update.php

index fb8b94cfc397fa49c57f8daa6779c6c86cf86010..1d73c585c030198fbf27d79cdd493667f6941aa3 100644 (file)
@@ -150,16 +150,17 @@ class BouquetController extends Controller
         $data = json_decode(Yii::$app->request->getRawBody(), true);
         $model = BouquetComposition::findOne($data['bouquetId']);
 
+        $cost = [];
+        $markup = [];
+        foreach (BouquetComposition::getRegions() as $region_id) {
+            $cost[$region_id] = round($model->getBouquetCost($region_id, $data, true));
+            $markup[$region_id] = round($model->getBouquetCostMarkup($region_id, $data, true), 2);
+        }
+
         return [
             'selfcost' => round($model->getSelfCost($data), 2),
-            'cost' => [
-                52 => round($model->getBouquetCost(52, $data, true)),
-                77 => round($model->getBouquetCost(77, $data, true)),
-            ],
-            'markup' => [
-                52 => round($model->getBouquetCostMarkup(52, $data, true), 2),
-                77 => round($model->getBouquetCostMarkup(77, $data, true), 2),
-            ]
+            'cost' => $cost,
+            'markup' => $markup,
         ];
     }
 
index f99890eb224b691bb48d063cfb5c56fe43fbebd5..34f367af8c7246f88c4fcba3acb0d9139b122329 100644 (file)
@@ -39,6 +39,17 @@ use yii_app\services\FileService;
  */
 class BouquetComposition extends ActiveRecord
 {
+    const REGION_NN = 52;
+    const REGIONO_MSK = 77;
+    const PROCENT_30 = 0.3;
+
+    public static function getRegions() {
+        return [
+            self::REGION_NN,
+            self::REGIONO_MSK
+        ];
+    }
+
     public const PHOTO_TYPE = 'image';
     public const VIDEO_TYPE = 'video';
     public const PHOTO_BOUQUET = 'bouquet/photo_bouquet';
index cb80d5589837bf20e6b6784f7ce58f1e11761523..7bb4460d77df1cff18357ad1bdeb52b60677e1b8 100644 (file)
@@ -28,9 +28,9 @@ $this->registerCSS('.cost-value {max-width: 75px}');
             </div>
             <strong style="display: inline-block; font-size: 1.1rem;" class="mb-2">Нижегородская обл.</strong><br>
             <p class="mb-1"><strong>Себестоимость:</strong> <span class="selfcost-value"><?= round($selfCost ?? 0) ?></span> ₽</p>
-            <p class="mb-1"><strong>Наценка:</strong> +30% / +<span class="markup-value"><?= round(0.3 * ($selfCost ?? 0)) ?></span>₽</p>
-            <p class="mb-0"><strong>Цена:</strong> <input type="number" name="cost-value[52]" class="cost-value region52" value="<?= round($cost[52]) ?>"
-                                                          min="<?= round(1.3 * ($selfCost ?? 0)) ?>" step="1" />₽. +<span class="markup-cost-value region52"><?= round($markUp[52], 2) ?></span>%</p>
+            <p class="mb-1"><strong>Наценка:</strong> +30% / +<span class="markup-value"><?= round(BouquetComposition::PROCENT_30 * ($selfCost ?? 0)) ?></span>₽</p>
+            <p class="mb-0"><strong>Цена:</strong> <input type="number" name="cost-value[52]" class="cost-value region52" value="<?= round($cost[BouquetComposition::REGION_NN]) ?>"
+                                                          min="<?= round((1 + BouquetComposition::PROCENT_30) * ($selfCost ?? 0)) ?>" step="1" />₽. +<span class="markup-cost-value region52"><?= round($markUp[BouquetComposition::REGION_NN], 2) ?></span>%</p>
         </div>
     </div>
 
@@ -44,9 +44,9 @@ $this->registerCSS('.cost-value {max-width: 75px}');
             </div>
             <strong style="display: inline-block; font-size: 1.1rem;" class="mb-2">Московская обл.</strong><br>
             <p class="mb-1"><strong>Себестоимость:</strong> <span class="selfcost-value"><?= round($selfCost ?? 0) ?></span> ₽</p>
-            <p class="mb-1"><strong>Наценка:</strong> +30% / +<span class="markup-value"><?= round(0.3 * ($selfCost ?? 0)) ?></span>₽</p>
-            <p class="mb-0"><strong>Цена:</strong> <input type="number" name="cost-value[77]" class="cost-value region77" value="<?= round($cost[77]) ?>"
-                                                          min="<?= round(1.3 * ($selfCost ?? 0)) ?>" step="1" />₽. +<span class="markup-cost-value region77"><?= round($markUp[77], 2) ?></span>%</p>
+            <p class="mb-1"><strong>Наценка:</strong> +30% / +<span class="markup-value"><?= round(BouquetComposition::PROCENT_30 * ($selfCost ?? 0)) ?></span>₽</p>
+            <p class="mb-0"><strong>Цена:</strong> <input type="number" name="cost-value[77]" class="cost-value region77" value="<?= round($cost[BouquetComposition::REGIONO_MSK]) ?>"
+                                                          min="<?= round((1 + BouquetComposition::PROCENT_30) * ($selfCost ?? 0)) ?>" step="1" />₽. +<span class="markup-cost-value region77"><?= round($markUp[BouquetComposition::REGIONO_MSK], 2) ?></span>%</p>
         </div>
     </div>
 
index 8dde69c42bc8be66bcd02e5c197cc75eaf71e63e..8d8986385239503aef36ddeac716547808bea008 100644 (file)
@@ -32,8 +32,8 @@
         <strong>Нижегородская обл.</strong>
         <div class='self-cost pt-3' style='display: flex; gap: 10px;'>
             Себестоимость: <?= round($model->getSelfCost()) ?>₽<br>
-            Наценка: +30% / +<?= round(0.3 * $model->getSelfCost()) ?>₽<br>
-            Цена: <?= round($model->getBouquetCost(52)) ?>₽. +<?= round($model->getBouquetCostMarkup(52), 2) ?>%<br>
+            Наценка: +30% / +<?= round(BouquetComposition::PROCENT_30 * $model->getSelfCost()) ?>₽<br>
+            Цена: <?= round($model->getBouquetCost(BouquetComposition::REGION_NN)) ?>₽. +<?= round($model->getBouquetCostMarkup(BouquetComposition::REGION_NN), 2) ?>%<br>
         </div>
     </div>
 </div>
@@ -43,8 +43,8 @@
         <strong>Московская обл.</strong>
         <div class='self-cost pt-3' style='display: flex; gap: 10px;'>
             Себестоимость: <?= round($model->getSelfCost()) ?>₽<br>
-            Наценка: +30% / +<?= round(0.3 * $model->getSelfCost()) ?>₽<br>
-            Цена: <?= round($model->getBouquetCost(77)) ?>₽. +<?= round($model->getBouquetCostMarkup(77), 2) ?>%<br>
+            Наценка: +30% / +<?= round(BouquetComposition::PROCENT_30 * $model->getSelfCost()) ?>₽<br>
+            Цена: <?= round($model->getBouquetCost(BouquetComposition::REGIONO_MSK)) ?>₽. +<?= round($model->getBouquetCostMarkup(BouquetComposition::REGIONO_MSK), 2) ?>%<br>
         </div>
     </div>
     <div class="col-md-4">
index 69afdbcb48c770cb6617df938c91bb0181a1927c..1a5ee900d5ee166bf1b1c4d2df7041f39628c417 100644 (file)
@@ -113,16 +113,16 @@ $this->title = 'Содержание матрицы';
                                     <div><strong>Нижегородская обл.</strong></div>
                                     <div>
                                     Себестоимость: " . round($model->getSelfCost()) . "₽<br>
-                                    Наценка: +30% / +" . round(0.3 * $model->getSelfCost()) . "₽<br>
-                                    Цена: " . round($model->getBouquetCost(52)) . "₽. +" . round($model->getBouquetCostMarkup(52), 2) . "%<br>
+                                    Наценка: +30% / +" . round(BouquetComposition::PROCENT_30 * $model->getSelfCost()) . "₽<br>
+                                    Цена: " . round($model->getBouquetCost(BouquetComposition::REGION_NN)) . "₽. +" . round($model->getBouquetCostMarkup(BouquetComposition::REGION_NN), 2) . "%<br>
                                     </div>
                                 </div>
                                 <div class='self-cost pt-3'>
                                     <div><strong>Московская обл.</strong></div>
                                     <div>
                                     Себестоимость: " . round($model->getSelfCost()) . "₽<br>
-                                    Наценка: +30% / +" . round(0.3 * $model->getSelfCost()) . "₽<br>
-                                    Цена: " . round($model->getBouquetCost(77)) . "₽. +" . round($model->getBouquetCostMarkup(77), 2) . "%<br>
+                                    Наценка: +30% / +" . round(BouquetComposition::PROCENT_30 * $model->getSelfCost()) . "₽<br>
+                                    Цена: " . round($model->getBouquetCost(BouquetComposition::REGIONO_MSK)) . "₽. +" . round($model->getBouquetCostMarkup(BouquetComposition::REGIONO_MSK), 2) . "%<br>
                                     </div>
                                 </div>
                             </div>
index 4e721ed0e1aa5d6f5d3a2306e5c5c1ce980b9e2a..a185d669943bebb823638c2d89157f034529a054 100644 (file)
@@ -5,6 +5,7 @@ use yii\helpers\ArrayHelper;
 use yii\helpers\Html;
 use yii\helpers\Url;
 use yii\widgets\ActiveForm;
+use yii_app\records\BouquetComposition;
 use yii_app\records\Products1c;
 use yii_app\records\Products1cNomenclature;
 
@@ -55,14 +56,22 @@ $this->registerJsFile('/js/bouquet/bouquet.js', ['position' => \yii\web\View::PO
         <div class="col-md-8">
             <?php $form = ActiveForm::begin(['id' => 'dual-list-form']); ?>
             <div class="row mb-5"></div>
+            <?php
+            $cost = [];
+            $markup = [];
+            foreach (BouquetComposition::getRegions() as $region_id) {
+                $cost[$region_id] = $model->getBouquetCost($region_id);
+                $markup[$region_id] = $model->getBouquetCostMarkup($region_id);
+            }
+            ?>
             <?= $this->render('_product_edit', [
                 'availableItems' => $availableItems,
                 'selectedItems' => $selectedItems,
                 'isCreate' => false,
                 'listContainerSize' => [],
                 'selfCost' => $model->getSelfCost(),
-                'cost' => [ 52 => $model->getBouquetCost(52), 77 => $model->getBouquetCost(77)],
-                'markUp' => [ 52 => $model->getBouquetCostMarkup(52), 77 => $model->getBouquetCostMarkup(77)],
+                'cost' => $cost,
+                'markUp' => $markup,
             ]); ?>
             <?php ActiveForm::end(); ?>
         </div>
\ No newline at end of file