using Rugrid.Sdaid.Notation.Documents;
namespace Rugrid.Sdaid.Epas.Nts.Backend.Calc
{
/// <summary>
/// Классификатор ошибок валидации расчёта нормативного расхода. Единый источник кодов, условий и
/// текстов: на коды ссылается реализация расчёта (`Nts.Calc`); тексты описываются здесь, в других
/// местах не дублируются. Код ошибки — категория правила (`ValidationRuleCode`).
/// </summary>
public class DOC_NtsCalcErrors : ISdaidDocument, IHasStructuralLinks, IFolder<NtsBackendFolder>
{
public SdaidLink[] Links => new[]
{
Rel.Uses<DOC_NtsCalc>(),
Rel.Uses<DOC_CalcValidators>(),
Rel.Uses<Rugrid.Sdaid.Epas.Nts.Domain.DOC_CalculationStatus>(),
};
public static string _refName = "Классификатор ошибок расчёта";
public string Name => "Классификатор ошибок расчёта ЭНТС";
public string Description =>
@"Ошибки валидации исходных данных расчёта нормативного расхода: коды-категории, условия возникновения и тексты для пользователя.";
public string Version => "0.1";
public string Status => "draft";
public string[] Comments => new string[0];
public static string Body = $"""
## Ошибки
Код ошибки — категория правила (`ValidationRuleCode`, см. {SdaidAnchors.RefTo<DOC_CalcValidators>()}).
| Код | Секция методики | Условие | Текст |
|---|---|---|---|
| `required` | `fuel.category_by_kind` | Вид ТС не указан | Вид ТС не определён |
| `required` | `fuel.category_by_kind` | Вид ТС указан, но методика для него не определена | Методика не определена |
| `empty_collection` | `fuel.base_norm` | Список базовых норм пуст | Базовая норма не определена |
| `out_of_range` | `fuel.base_norm` | Базовая норма ≤ 0 | Базовая норма каждой отобранной модификации должна быть > 0 |
| `out_of_range` | `fuel.mileage` | Пробег передан и ≤ 0 | Переданный пробег должен быть положительным |
| `required` | `fuel.cf_operation_years` | Дата начала эксплуатации не задана | Дата начала эксплуатации не задана |
| `required` | `fuel.cf_operation_years` | Отчётная дата не задана | Отчётная дата не задана |
| `inconsistent` | `fuel.cf_operation_years` | Дата начала ≥ отчётной даты | Дата начала эксплуатации должна быть раньше отчётной даты |
| `required` | `fuel.cf_climate_region` | Надбавка по субъекту РФ не задана | Субъект РФ эксплуатации не определён — неизвестна зимняя надбавка |
| `out_of_range` | `fuel.cf_climate_region` | Предельная величина зимней надбавки < 0 | Предельная величина зимней надбавки не может быть отрицательной |
| `out_of_range` | `fuel.correction_factor_winter` | Ручная надбавка < 0 | Ручные надбавки не могут быть отрицательными |
| `out_of_range` | `fuel.correction_factor_summer` | Ручная надбавка < 0 | Ручные надбавки не могут быть отрицательными |
| `required` | `fuel.h_transport` | Вид топлива не задан или не определён | Вид топлива не задан или не определён (нужен бензин или дизельное топливо) |
| `required` | `fuel.h_trailer` | Вид топлива не задан или не определён | Вид топлива не задан или не определён (нужен бензин или дизельное топливо) |
| `out_of_range` | `fuel.g_cargo` | Грузоподъёмность < 0 | Грузоподъёмность не может быть отрицательной |
| `out_of_range` | `fuel.q_trailer` | Масса прицепа < 0 | Масса прицепа не может быть отрицательной |
| `out_of_range` | `fuel.q_trips` | Количество ездок с грузом < 0 | Количество ездок с грузом не может быть отрицательным |
| `out_of_range` | `fuel.q_equipment` | Норма на работу отопителя < 0 | Норма расхода на работу отопителя не может быть отрицательной |
| `out_of_range` | `fuel.q_equipment` | Время работы отопителя < 0 | Время работы отопителя не может быть отрицательным |
| `out_of_range` | `fuel.h_sanc` | Норма на транспортную работу < 0 | Норма расхода на транспортную работу не может быть отрицательной |
| `out_of_range` | `fuel.h_sanc` | Собственная масса прицепа < 0 | Собственная масса прицепа не может быть отрицательной |
| `out_of_range` | `fuel.h_sanc` | Грузоподъёмность < 0 | Грузоподъёмность не может быть отрицательной |
| `out_of_range` | `fuel.h_special_equipment` | Норма на час работы (летняя/зимняя) < 0 | Норма расхода топлива на работу специального оборудования не может быть отрицательной |
| `out_of_range` | `fuel.special_correction_factor_winter` | Надбавка при работе специальных автомобилей < 0 | Поправочный коэффициент при работе специальных автомобилей не может быть отрицательным |
| `out_of_range` | `fuel.special_correction_factor_summer` | Надбавка при работе специальных автомобилей < 0 | Поправочный коэффициент при работе специальных автомобилей не может быть отрицательным |
## Статусы
Результат калькулятора — в справочнике {SdaidAnchors.RefTo<Rugrid.Sdaid.Epas.Nts.Domain.DOC_CalculationStatus>()};
расчёт выполняется для всех загруженных ТС.
""";
}
}