Рассчитанный серверный скрипт - сумма рассчитанного продукта - PullRequest
0 голосов
/ 02 июля 2019

Я создаю пользовательскую CRM в Google AppMaker и учусь использовать рассчитанные модели со сценарием на стороне сервера для создания отчетов. В этом случае я пытаюсь рассчитать общий ежемесячный доход от клиента на основе продукта расчета, сделанного для каждой из их многочисленных записей контракта. Я хотел бы сохранить все это рассчитано на стороне сервера, но я открыт для рекомендаций в противном случае.

Каждый контракт включает три ключевых элемента: базовая стоимость, количество дополнительных лицензий и плата за каждую дополнительную лицензию. Общий ежемесячный доход от каждого контракта составляет:

базовая стоимость + (дополнительные лицензии * лицензионный сбор)

Я выяснил, как сгенерировать расчетную модель, которая компилирует это для каждого контракта, который соответствует определенному клиенту по ключу («клиент»).

Хотя я уже немного над головой и не могу понять, как сгенерировать сумму для каждого контракта.

Данные контракта размещены в «контракте». Расчетная модель - «выручка».

База, плата и данные о лицензиях содержатся в «контракте». «Выручка» извлекает эти данные и вычисляет итоговую сумму для записи. Я справился со всем этим успешно.

Что мне нужно, так это общая сумма (480), как показано здесь:

key | base | fee | licenses | total
   1    100   20       3       160
   2    100   20       5       200
   3    100   20       1       120
SUM TOTAL                      480

Генерирует отчет о базе, плате, лицензиях и сумме для каждой записи контракта, связанной с конкретным клиентом.

function getSiteMRR(query) {
    var mrrs = [];
  var allcontracts = app.models.contract.newQuery();
  allcontracts.filters.client.id._equals = query.parameters.current;
  var allcontracts2 = allcontracts.run();
  var records = {};
  for (var i = 0; i < allcontracts2.length; i++) {
    var record = allcontracts2[i];
    var mrr = app.models.revenues.newRecord();
    mrr.base = record.base_cost;
    mrr.fee = record.license_fee;
    mrr.licenses = record.additional_licenses;
    mrr.total = record.base_cost + (record.license_fee * record.additional_licenses);
    mrrs.push(mrr);
  }
  return mrrs;
}
...