/estimate-model

Модель сметы

Primary LanguageTypeScriptMIT LicenseMIT

Объектная модель сметы

Данная модель сметы является продолжением предыдущей версии, находящей в репозитории: 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 Количество товара или услуги менять нельзя.