Данная модель сметы является продолжением предыдущей версии, находящей в репозитории: https://github.com/khusamov/zevs-lite/tree/master/packages/zevs-lite-estimate-model Поэтому с этого момента считать проект zevs-lite-estimate-model устаревшим.
Модель нужна для вычисления итоговой стоимости сметы и просмотр из чего эта стоимость складывается.
Смета это таблица с расходами. Например сколько окон было заказано и по какой цене, была ли заказана доставка окон и по какой цене и тому подобное.
Каждая строка сметы это статья расходов. Это может быть простая статья расходов, например наименование товара, как товар делится (единица измерения товара) и цена за единицу товара. Это может быть услуга.
Это некий объект, у которого есть название единицы, сокращенное название (shorthand) и функция форматирования для вывода на экран. Для форматирования можно использовать Intl.NumberFormat. https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat
new MeasureUnit('Российский рубль', {
formatter: new Intl.NumberFormat('ru-RU', {style: 'currency', currency: 'RUB'}),
attributes: {
shorthand: 'Рубль'
}
})
Смета Estimate
Статья расхода CostItem
Провайдер статьи расхода CostProvider
Единица измерения MeasureUnit
Валюта CurrencyUnit
Конструктор провайдера статьи расхода ICostProviderCreator
Вид статьи расхода CostItemKind. Бывают товары и услуги.
Ограничения статьи расхода CostItemConstraint. Например DistinctCostItemConstraint Товар или услуга уникальная такой товар или услугу нельзя повторно добавлять в смету ReadonlyCountCostItemConstraint Количество товара или услуги менять нельзя.