]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Merge branch 'refs/heads/develop' into feature_fomichev_erp_444_OS_autoplannogramm
authorVladimir Fomichev <vladimir.fomichev@erp-flowers.ru>
Tue, 5 Aug 2025 13:59:59 +0000 (16:59 +0300)
committerVladimir Fomichev <vladimir.fomichev@erp-flowers.ru>
Tue, 5 Aug 2025 13:59:59 +0000 (16:59 +0300)
# Conflicts:
# erp24/controllers/AutoPlannogrammaController.php
# erp24/web/js/autoplannogramma/autoplannogramma.js

1  2 
erp24/commands/CronController.php
erp24/controllers/AutoPlannogrammaController.php
erp24/services/AutoPlannogrammaService.php
erp24/views/auto-plannogramma/index.php
erp24/web/js/autoplannogramma/autoplannogramma.js

index 3aa7f65ba05ce48fff60273279ba62ef943d439f,fb5865348abd8bebcf9f510ee71c0bcbc857158f..5a9678f7f28b006d762e33e37414f2c4194e3a95
@@@ -1785,11 -1767,11 +1785,11 @@@ class CronController extends Controlle
                              'is_archive' => false,
                              'auto_forecast' => true,
                              'capacity_type' => 1,
-                             'details' => json_encode($details, JSON_UNESCAPED_UNICODE),
+                             'details' => json_encode($details, JSON_UNESCAPED_UNICODE), // TODO двойное кодирование
                              'calculate' => $quantity,
 -                            'modify' => ceil($total),
 +                            'modify' => null,
                              'total' => ceil($total)
 -                        ]);
 +                        ], false);
  
                          if (!$model->save()) {
                              $errors = implode('; ', array_map(
index 9c58b574d794dd30f9f1b948995f58a3a2f88c20,3d5007201d285f1f3734fefdcbf3a470b88f0552..0aeacf73e7e72b6b255f4a1617396a29c5312c68
@@@ -2,8 -2,8 +2,10 @@@
  
  namespace app\controllers;
  
+ use PhpOffice\PhpSpreadsheet\Spreadsheet;
+ use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
 +use DateTime;
 +use Throwable;
  use Yii;
  use yii\base\DynamicModel;
  use yii\data\ArrayDataProvider;
index 27327792663f3ff313b019109aa1d13f758df3bf,e2faf7a82b72c4190b1cd64564cd383abc3f68b3..45e0e48c895435b8fceb66fbf457d4947bdb0e39
@@@ -5,59 -5,47 +5,100 @@@ document.addEventListener("DOMContentLo
              row.style.display = "none";
          }
      });
+     $('.export-excel-btn').on('click', function (e) {
+         e.preventDefault();
+         const auto = $(this).data('auto');
+         const selectedPairs = [];
+         $('.subcategory.active .subcategory-label').each(function () {
+             const category    = $(this).data('category');
+             const subcategory = $(this).data('subcategory');
+             if (category && subcategory) {
+                 selectedPairs.push([category, subcategory]);
+             }
+         });
+         console.log(selectedPairs.length)
+         if (selectedPairs.length === 0) {
+             alert("Нет данных для выгрузки");
+             return;
+         }
+         const baseUrl = '/auto-plannogramma/export-excel';
+         const params = {
+             year: $('#year').val(),
+             week: $('#week').val(),
+             city: $('#city').val(),
+             region: $('#region').val(),
+             district: $('#district').val(),
+             store_type: $('#store-type').val(),
+             capacity_type: $('#capacity-type').val() || null,
+             bush_chef_florist: $('#bush_chef_florist').val(),
+             territorial_manager: $('#territorial-manager').val(),
+             polnogramma_type: $('#polnogramma-type').val(),
+             auto: auto,
+             categories: JSON.stringify(selectedPairs)
+         };
+         const query = Object.entries(params)
+             .filter(([_, v]) => v !== null && v !== '')
+             .map(([k, v]) => k + '=' + encodeURIComponent(v))
+             .join('&');
+         const url = baseUrl + (query ? '?' + query : '');
+         window.open(url, '_blank');
+     });
 +    let skipRegionChange = false;
 +
 +    $('#region').on('change', function () {
 +        if (skipRegionChange) return;
 +
 +        var regionId = $(this).val();
 +        var citySelect = $('#city');
 +        var districtSelect = $('#district');
 +
 +        citySelect.val(null).trigger('change');
 +        citySelect.empty().append('<option></option>');
 +
 +        districtSelect.val(null).trigger('change');
 +        districtSelect.empty().append('<option></option>');
 +
 +        if (regionId) {
 +            $.get('/auto-plannogramma/city-list?region_id=' + regionId, function (data) {
 +                $.each(data, function (id, name) {
 +                    citySelect.append('<option value="' + id + '">' + name + '</option>');
 +                });
 +            });
 +        }
 +    });
 +
 +    $('#city').on('change', function () {
 +        var cityId = $(this).val();
 +        var regionSelect = $('#region');
 +        var districtSelect = $('#district');
 +
 +        districtSelect.val(null).trigger('change');
 +        districtSelect.empty().append('<option></option>');
 +
 +        if (cityId) {
 +            skipRegionChange = true;
 +
 +            $.get('/auto-plannogramma/region-by-city?city_id=' + cityId, function (data) {
 +                if (data && data.id) {
 +                    if (regionSelect.find("option[value='" + data.id + "']").length === 0) {
 +                        regionSelect.append('<option value="' + data.id + '">' + data.name + '</option>');
 +                    }
 +                    regionSelect.val(data.id).trigger('change');
 +                }
 +                skipRegionChange = false;
 +            });
 +
 +            $.get('/auto-plannogramma/district-list?city_id=' + cityId, function (data) {
 +                $.each(data, function (id, name) {
 +                    districtSelect.append('<option value="' + id + '">' + name + '</option>');
 +                });
 +            });
 +        }
 +    });
 +
  
      document.querySelectorAll(".category").forEach(category => {
          category.addEventListener("click", function () {