Я создаю пользовательскую 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;
}