Расчёт итоговой стоимости

Здравствуйте.
Подскажите как в системе реализован автоматический расчёт итоговой стоимости товара в зависимости от количества?
Реализовано посредством написания кода или просто создана зависимая деталь "Итого" от детали "Количества"?
Нужно создать дополнительную колонку, которая будет автоматически рассчитывать бонусы, в зависимости от суммы приобретённых продуктов.
Благодарю

Нравится

19 комментариев

/**
* Обновляет значение итога.
*/
updateSummary: function() {
var summary = this.sandbox.publish("GetOrderProductSummary", null, [this.sandbox.id]);
this.set("TotalCount", summary.count);
this.set("TotalAmount", this.Ext.String.format("{0} {1}", summary.currency,
this.Terrasoft.getFormattedNumberValue(summary.amount || 0)));
this.set("SummaryLoaded", Boolean(summary.currency));
},

Это не он случайно?

Здравствуйте!

Итог рассчитывается после события сохранения записи в самом объекте "Заказ".
Для реализации Вашей задачи, создайте дробное поле "Только для чтения". Создайте бизнес процесс, который при изменении состояния счета будет рассчитывать и записывать значение в кастомное поле.

"Демьяник Алексей Олегович" написал:при изменении состояния счета

Только, наверное, при изменении суммы счёта

"Владимир Соколов" написал:
Демьяник Алексей Олегович пишет:

при изменении состояния счета

Только, наверное, при изменении суммы счёта

Зачем считать бонус, если счет не оплачен?:wink:

"Демьяник Алексей Олегович" написал:

Здравствуйте!

Итог рассчитывается после события сохранения записи в самом объекте "Заказ".
Для реализации Вашей задачи, создайте дробное поле "Только для чтения". Создайте бизнес процесс, который при изменении состояния счета будет рассчитывать и записывать значение в кастомное поле.

Здравствуйте. А нельзя реализовать данный процесс не создавая счёт? Поставить зависимость колонки "Бонус" от колонки "Итого"?

Здравствуйте!

Уточните Вашу задачу, пожалуйста.

Не совсем понятно, что Вы пытаетесь реализовать - каким образом Вы заполните поле "Итого", если счет создан не будет?

"Демьяник Алексей Олегович" написал:

Здравствуйте!

Уточните Вашу задачу, пожалуйста.

Не совсем понятно, что Вы пытаетесь реализовать - каким образом Вы заполните поле "Итого", если счет создан не будет?

В разделе "Заказы" при добавлении нового продукта в заказ. Колонка "Итого" автоматически показывает итого, в зависимости от кол-ва продуктов и их стоимости. В разделе "Продукт в заказе" будет добавлена новая колонка "Бонусы". Допустим, итог приобретённых продуктов составил 100 у.е., а бонусы составляют 1% от суммы, т.е. 1 у.е. Нужно, чтобы этот процент автоматически отображался.
Надеюсь понятно написал:biggrin:

Я не совсем понимаю почему Вы выбрали такую реализацию.

Есть объекты "Заказ" и "Продукт в заказе". Связь между этими продуктами "один ко многим", то есть один заказ может содержать несколько записей продуктов.

Если Вы хотите раздавать "плюшки" за каждый оплаченный заказ, то лучше создать колонку "Бонусы" в объекте "Заказ" и заполнять его, как 0,01*(Сумма по полю "Итого" объекта "Продукт в заказе" с фильтром Продукт в заказе.Заказ == Заказ.Id).

Если Вы добавите данное поле в объект "Продукт в заказе", то данные в этой колонке будут дублироваться.

Бизнес процесс:
Два стартовых сигнала:
0.А) После добавления записи в объект "Заказ"
0.Б) После изменения записи колонки "Итого" в объекте "Заказ"

1) Чтение данных по объекту "Продукт в заказе" в режиме "Функция" по полю "Итого" с фильтром Заказ == Id стартового сигнала
2) Изменение данных объекта "Заказ" в поле "Бонус" с фильтром Id == Id стартового сигнала
3) Конец процесса.

Я не совсем понимаю почему Вы выбрали такую реализацию.

Есть объекты "Заказ" и "Продукт в заказе". Связь между этими продуктами "один ко многим", то есть один заказ может содержать несколько записей продуктов.

Если Вы хотите раздавать "плюшки" за каждый оплаченный заказ, то лучше создать колонку "Бонусы" в объекте "Заказ".

Если Вы добавите данное поле в объект "Продукт в заказе", то данные в этой колонке будут дублироваться.

Бизнес процесс:
Два стартовых сигнала:
0.А) После добавления записи в объект "Заказ"
0.Б) После изменения записи колонки "Итого" в объекте "Заказ"

1) Чтение данных по объекту "Продукт в заказе" в режиме "Функция" по полю "Итого" с фильтром Заказ == Id стартового сигнала
2) Изменение данных объекта "Заказ" в поле "Бонус", как 0,01*(Параметр предыдущего чтения данных), с фильтром Id == Id стартового сигнала
3) Конец процесса.

"Ануфриев Дмитрий Юрьевич" написал:Нужно, чтобы этот процент автоматически отображался.

Отображения вам может не хватить. Потом понадобится аналитика. А через год изменится % для новых заказов, а для старых история должна сохраниться.
Поэтому нужно делать поле и заполнять его (легче всего в бизнес-процессе)

"Демьяник Алексей Олегович" написал:

Я не совсем понимаю почему Вы выбрали такую реализацию.

Есть объекты "Заказ" и "Продукт в заказе". Связь между этими продуктами "один ко многим", то есть один заказ может содержать несколько записей продуктов.

Если Вы хотите раздавать "плюшки" за каждый оплаченный заказ, то лучше создать колонку "Бонусы" в объекте "Заказ".

Если Вы добавите данное поле в объект "Продукт в заказе", то данные в этой колонке будут дублироваться.

Бизнес процесс:
Два стартовых сигнала:
0.А) После добавления записи в объект "Заказ"
0.Б) После изменения записи колонки "Итого" в объекте "Заказ"

1) Чтение данных по объекту "Продукт в заказе" в режиме "Функция" по полю "Итого" с фильтром Заказ == Id стартового сигнала
2) Изменение данных объекта "Заказ" в поле "Бонус", как 0,01*(Параметр предыдущего чтения данных), с фильтром Id == Id стартового сигнала
3) Конец процесса.


Посмотрите пожалуйста правильно ли создан БП?

[URL=http://hostingkartinok.com/show-image.php?id=ef6b4027874b7ea0ecce1a33a9…]
[URL=http://hostingkartinok.com/show-image.php?id=cdcd49f5b51b08f3f3c7542a36…]
[URL=http://hostingkartinok.com/show-image.php?id=80cd33c8e5ddfb82f8ab18e980…]
[URL=http://hostingkartinok.com/show-image.php?id=89532dc814cefe7d5820e49de3…]

Здравствуйте!

Неправильно! Такой процесс будет запускать сам себя!

1) В стартовом сигнале в поле "Должна быть изменена любая колонка из списка" выберите поле "Итого"
2) Чтение данных построено корректно
3) Так нельзя считать - создайте параметр бизнес процесса с типом Дробное число с двумя знаками после запятой. Перед элементом используйте элемент "Формула":

  • В "Поле установить параметр в" укажите созданный параметр бизнес процесса
  • В поле ниже укажите 0.01*[Читать данные продукта в заказе.Результат функции]

4) В элементе изменить данные выберите колонку "Бонусы", а в качестве значения укажите параметр процесса.

PS. Не уверен в "." в числе 0.01. Как вариант может быть 0,01.
PPS. 100% правильный вариант: [Читать данные продукта в заказе.Результат функции]/100

"Демьяник Алексей Олегович" написал:
3) Так нельзя считать - создайте параметр бизнес процесса с типом Дробное число с двумя знаками после запятой. Перед элементом используйте элемент "Формула":

  • В "Поле установить параметр в" укажите созданный параметр бизнес процесса
  • В поле ниже укажите 0.01*[Читать данные продукта в заказе.Результат функции]

4) В элементе изменить данные выберите колонку "Бонусы", а в качестве значения укажите параметр процесса.

PS. Не уверен в "." в числе 0.01. Как вариант может быть 0,01.
PPS. 100% правильный вариант: [Читать данные продукта в заказе.Результат функции]/100


Здравствуйте, Алексей. Понимаю, что достал, но пока не сделаю всё не отстану от вас))))
Объясните пожалуйста как добавить этот злополучный параметр бизнес-процесса?

"Ануфриев Дмитрий Юрьевич" написал:

Объясните пожалуйста как добавить этот злополучный параметр бизнес-процесса?

Здравствуйте!

Вы можете найти инструкцию здесь.

"Демьяник Алексей Олегович" написал:
Ануфриев Дмитрий Юрьевич пишет:

Объясните пожалуйста как добавить этот злополучный параметр бизнес-процесса?

Здравствуйте!

Вы можете найти инструкцию здесь.


Большое спасибо, Алексей. Настроил как вы и написали. Всё работает!

Добрый день! Подскажите пжт, а как вы будете учитывать в БП удаление строк? сигналы на добавление и изменения понятны, а вот удаление нет. У меня похожая ситуация и нужно понять как реализовать рассчет количества с возможным удалением строк.

Демьяник Алексей, подскажите пжт, как учитывать в БП удаление строк? сигналы на добавление и изменения понятны, а вот удаление нет. У меня похожая ситуация и нужно понять как реализовать рассчет количества с возможным удалением строк.

Наталья Осянина пишет:

точно так же. Поставьте сигнал на удаление данных в объекте и уберите у него признак выполнения в фоновом режиме.

А если хотите посчитать записи без учёта удаленной, то добавьте в условие суммирования "не равно Id удалённой записи"

Владимир Соколов,

спасибо) 

Показать все комментарии