# Как работают расчёты в Mardis Calc

## Общая формула

```
S = Pz + Tz + (Lz * Nl) + Rom + Rop + Rot + Rok + (Na * Z)
```

## Переменные

| Переменная | Описание |
|-----------|----------|
| S | Общая сумма за шоу |
| Pz | Стоимость пиротехники |
| Tz | Стоимость титана |
| Lz | Стоимость одного литра керосина |
| Nl | Количество литров керосина |
| Rom | Роялти организации (10%) |
| Rop | Роялти постановщика (5%) |
| Rot | Роялти техника (5%) |
| Rok | Роялти комиссионера (10%) |
| Na | Количество артистов |
| Z | Зарплата одного артиста |

## База для роялти

Роялти считаются **не от общей суммы**, а от чистой суммы после вычета материальных расходов:

```
Материальные расходы = Pz + Tz + (Lz * Nl)
Base = S - Материальные расходы
```

```
Rom = Base * 10%
Rop = Base * 5%
Rot = Base * 5%
Rok = Base * 10%
```

Rom — это фиксированный расход в бюджет команды, а не выплата конкретному человеку. Он не назначается артистам.

## Соотношение между S, Na и Z

Из формулы можно вывести ключевое соотношение:

```
S = Материальные расходы + Всего роялти + Зарплаты артистов
S = Материалы + 30% * Base + Na * Z
S = Материалы + 30% * (S - Материалы) + Na * Z
0.70 * S = 0.70 * Материалы + Na * Z
S = Материалы + (Na * Z) / 0.70
```

## Автоматический расчёт

Калькулятор позволяет оставить **ровно одно** поле пустым — оно будет вычислено автоматически.

### Как вычисляется каждая переменная

- **S** (общая сумма): `S = Материалы + (Na * Z) / 0.70`
- **Z** (зарплата артиста): `Z = 0.70 * (S - Материалы) / Na`
- **Pz** (пиротехника): `Pz = S - Тз - (Lz * Nl) - (Na * Z) / 0.70`
- **Tz** (титан): `Tz = S - Pz - (Lz * Nl) - (Na * Z) / 0.70`
- **Lz** (цена керосина): `Lz = (S - Pz - Tz - (Na * Z) / 0.70) / Nl`
- **Nl** (литры керосина): `Nl = (S - Pz - Tz - (Na * Z) / 0.70) / Lz`

### Правило пересчёта при изменении состава

Если вы изменяете количество артистов (добавляете или удаляете), калькулятор проверяет, какое поле было вычислено автоматически:

- Если **Z** было авто-вычислено, а **S** введено вручную → пересчитывается **Z** под новое количество артистов
- Если **S** было авто-вычислено, а **Z** введено вручную → пересчитывается **S**
- Если оба поля введены вручную → показывается предупреждение, что сумма может не сходиться

Чтобы сбросить авто-вычисление для поля, просто введите в него значение вручную.

## Выплаты артистам

Каждый добавленный артист может получать:

- **Зарплату артиста (Z)** — если отмечена роль «Артист». Выплачивается каждому артисту полностью.
- **Роялти постановщика (Rop)** — если отмечена роль «Постановщик». Суммарный Rop (5% от Base) делится поровну между всеми назначенными постановщиками.
- **Роялти техника (Rot)** — если отмечена роль «Техник». Суммарный Rot (5% от Base) делится поровну между всеми назначенными техниками.
- **Роялти комиссионера (Rok)** — если отмечена роль «Комиссионер». Суммарный Rok (10% от Base) делится поровну между всеми назначенными комиссионерами.

**Важно:** роялти делятся между людьми с одинаковой ролью. Если два человека выполняют роль постановщика — каждый получает `Rop / 2`.

**Выплата = Z (если артист) + Rop / N_постановщиков + Rot / N_техников + Rok / N_комиссионеров**

## Пример

Дано:
- Pz = 1000, Tz = 500, Lz = 50, Nl = 20
- Na = 5 артистов
- Z = ?
- S = 25000

Расчёт:
```
Материалы = 1000 + 500 + 50*20 = 2500
Base = 25000 - 2500 = 22500
Rom = 2250, Rop = 1125, Rot = 1125, Rok = 2250
Z = 0.70 * (25000 - 2500) / 5 = 3150
```

Проверка:
```
S = 2500 + 5625 + 5*3150 = 2500 + 5625 + 15750 = 23875
```

Стоп, это не 25000. Давайте пересчитаем через правильную формулу:

```
S = Материалы + (Na * Z) / 0.70
25000 = 2500 + (5 * Z) / 0.70
22500 = (5 * Z) / 0.70
Z = 22500 * 0.70 / 5 = 3150
```

Всего роялти = Rom + Rop + Rot + Rok = 2250 + 1125 + 1125 + 2250 = 6750 (30% от Base = 30% от 22500 = 6750)

Зарплаты = 5 * 3150 = 15750
Итого: 2500 (материалы) + 6750 (роялти) + 15750 (зарплаты) = 25000

Правильно!

## Округление

Все значения округляются до 2 знаков после запятой (копеек).
