Как добавить сумму заказов поставщика
Re: Как добавить сумму заказов поставщика
Я так и не понял, почему этот функционал не работает?
-
- Сообщения: 388
- Зарегистрирован: 01 мар 2019, 08:57
- Имя: Эльдар Имамвердиев
- Откуда: Россия, Санкт-Петербург
Re: Как добавить сумму заказов поставщика
С выходом обновления 2.7 это стало возможным.
На тестовой базе сделал вот такую структуру:
Поля для Поставщиков Настройки поля Сумма заказов поставщика
Поля для Заказов Настройки поля Стоимость заказа
Поля для Списка товаров Действие автоматизации *** Не забудьте указать группы пользователей, для которых будет доступно данное действие!!!!
Обратите внимание флаг "Выполнять динамически" для сущностей Поставщики и Заказы.
Как это работает:
1. При добавлении нового товара в заказ выполняется действие автоматизации, которое обновляет запись Заказа (через обновление служебного поля).
2. Сумма заказов поставщика обновляется динамически при открытии списка поставщиков или записи самого поставщика.
Почему не работало раньше?
1. Поле MySQL-запрос не умеет работать с динамическими полями (MySQL-функция, MySQL-запрос с установленным флагом "Выполнять динамически" и т.д.). На то он и запрос - запрос в Базу данных, где уже должны храниться некоторые значения, которые необходимо извлечь (и посчитать, например). Отчасти поэтому была ошибка.
2. Функция дополнения SUM() отлично суммирует поля записей дочерней сущности (Список товаров) - и там это работает. Но если надо просуммировать по сущности, связанной не структурой, а через поле типа "Сущность", то эта функция уже не будет действовать. Что бы она (функция) заработала по отношению к Поставщикам, необходим механизм некоторой фильтрации записей Заказов (а именно фильтр по текущему Поставщику), для которых эта функция будет выполняться. Да, у функций есть фильтры, но они, если так можно выразиться, статичные и под функционал ветки не подходят.
3. Если такую структуру сделать в версии 2.6 (там нельзя настроить действия автоматизации при создании записи), то запись Заказа надо обновлять вручную при каждом изменении списка товаров этого самого Заказа. Это крайне неправильно, т.к. сильно зависит от человеческого фактора (добавил товар, забыл обновить Заказ).
На сколько это верное решение конкретно в Вашем случае - судить Вам. Подозреваю, что если база поставщиков будет сильно большая, то страница со списком поставщиков может открывать сильно дольше.
Такая же ситуация может возникнуть при добавлении товаров с список заказов - каждое добавление товара будет обновлять поле Сумма заказа - а это тоже запрос в базу и обновление этого поля тоже может вызывать задержки.
Конкретно Ваш случай расставит точки над i.
Возможно есть более изящное решение, но я к нему не пришел.
На тестовой базе сделал вот такую структуру:
Поля для Поставщиков Настройки поля Сумма заказов поставщика
Поля для Заказов Настройки поля Стоимость заказа
Поля для Списка товаров Действие автоматизации *** Не забудьте указать группы пользователей, для которых будет доступно данное действие!!!!
Обратите внимание флаг "Выполнять динамически" для сущностей Поставщики и Заказы.
Как это работает:
1. При добавлении нового товара в заказ выполняется действие автоматизации, которое обновляет запись Заказа (через обновление служебного поля).
2. Сумма заказов поставщика обновляется динамически при открытии списка поставщиков или записи самого поставщика.
Почему не работало раньше?
1. Поле MySQL-запрос не умеет работать с динамическими полями (MySQL-функция, MySQL-запрос с установленным флагом "Выполнять динамически" и т.д.). На то он и запрос - запрос в Базу данных, где уже должны храниться некоторые значения, которые необходимо извлечь (и посчитать, например). Отчасти поэтому была ошибка.
2. Функция дополнения SUM() отлично суммирует поля записей дочерней сущности (Список товаров) - и там это работает. Но если надо просуммировать по сущности, связанной не структурой, а через поле типа "Сущность", то эта функция уже не будет действовать. Что бы она (функция) заработала по отношению к Поставщикам, необходим механизм некоторой фильтрации записей Заказов (а именно фильтр по текущему Поставщику), для которых эта функция будет выполняться. Да, у функций есть фильтры, но они, если так можно выразиться, статичные и под функционал ветки не подходят.
3. Если такую структуру сделать в версии 2.6 (там нельзя настроить действия автоматизации при создании записи), то запись Заказа надо обновлять вручную при каждом изменении списка товаров этого самого Заказа. Это крайне неправильно, т.к. сильно зависит от человеческого фактора (добавил товар, забыл обновить Заказ).
На сколько это верное решение конкретно в Вашем случае - судить Вам. Подозреваю, что если база поставщиков будет сильно большая, то страница со списком поставщиков может открывать сильно дольше.
Такая же ситуация может возникнуть при добавлении товаров с список заказов - каждое добавление товара будет обновлять поле Сумма заказа - а это тоже запрос в базу и обновление этого поля тоже может вызывать задержки.
Конкретно Ваш случай расставит точки над i.
Возможно есть более изящное решение, но я к нему не пришел.
-
- Сообщения: 388
- Зарегистрирован: 01 мар 2019, 08:57
- Имя: Эльдар Имамвердиев
- Откуда: Россия, Санкт-Петербург
Re: Как добавить сумму заказов поставщика
в данном примере все хорошо... только есть одно небольшое НО... удалении записи с нижней полки - верхние не меняются. остаются прежними.. до этого момента все было идеально))
-
- Сообщения: 388
- Зарегистрирован: 01 мар 2019, 08:57
- Имя: Эльдар Имамвердиев
- Откуда: Россия, Санкт-Петербург
Re: Как добавить сумму заказов поставщика
НАШЕЛ РЕШЕНИЕ. Сделал еще одну автоматизацию в верхний уровень.. назвал Изменить , действия те же. обновляется как надо!!imamverdiyeveldar писал(а): ↑08 июн 2020, 15:15 в данном примере все хорошо... только есть одно небольшое НО... удалении записи с нижней полки - верхние не меняются. остаются прежними.. до этого момента все было идеально))
Re: Как добавить сумму заказов поставщика
Да, про удаление я не подумал...
Если такое имеет место быть, то только с помощью подобной кнопки. Тогда надо не забывать про все тот же человеческий фактор.
Если удаление товара из списка было последним действием пользователя, то нажатие кнопки "Обновить" обязательно.
Если после удаления добавить еще один товар, то сумма заказа обновится автоматически.
))) Через костыли можно и это обойти. Есть идейка )
Если такое имеет место быть, то только с помощью подобной кнопки. Тогда надо не забывать про все тот же человеческий фактор.
Если удаление товара из списка было последним действием пользователя, то нажатие кнопки "Обновить" обязательно.
Если после удаления добавить еще один товар, то сумма заказа обновится автоматически.
))) Через костыли можно и это обойти. Есть идейка )
Re: Как добавить сумму заказов поставщика
Нет, не получится.
Не хватает использования действий автоматизации для автостатуса. Когда-то уже поднимался подобный вопрос.
Сейчас через автостатус можно сообщать пользователю что необходимо обновить запись Заказа.
Re: Как добавить сумму заказов поставщика
Что-то мне подсказывает, что этот огород некорректен, и должно быть более логичное решение данной элементарной проблеме, просто не хватает компетенции.
-
- Сообщения: 388
- Зарегистрирован: 01 мар 2019, 08:57
- Имя: Эльдар Имамвердиев
- Откуда: Россия, Санкт-Петербург
Re: Как добавить сумму заказов поставщика
Пока косяков не наблюдаю. Радует глаз даже. Все что нужно было сработало. Завтра буду тестировать нагрузку. Создам 200 - 300 записей. И отпишусь.
Re: Как добавить сумму заказов поставщика
Вот-вот я имею ввиду нагрузку и человеческий фактор.