diff --git a/docs/calculations.md b/docs/calculations.md index c6a019d..7cc383a 100644 --- a/docs/calculations.md +++ b/docs/calculations.md @@ -80,13 +80,13 @@ Каждый добавленный артист может получать: - **Зарплату артиста (Z)** — если отмечена роль «Артист». Выплачивается каждому артисту полностью. -- **Роялти постановщика (Rop)** — если отмечена роль «Постановщик». Выплачивается полностью каждому назначенному постановщику. -- **Роялти техника (Rot)** — если отмечена роль «Техник». Выплачивается полностью каждому назначенному технику. -- **Роялти комиссионера (Rok)** — если отмечена роль «Комиссионер». Выплачивается полностью каждому назначенному комиссионеру. +- **Роялти постановщика (Rop)** — если отмечена роль «Постановщик». Суммарный Rop (5% от Base) делится поровну между всеми назначенными постановщиками. +- **Роялти техника (Rot)** — если отмечена роль «Техник». Суммарный Rot (5% от Base) делится поровну между всеми назначенными техниками. +- **Роялти комиссионера (Rok)** — если отмечена роль «Комиссионер». Суммарный Rok (10% от Base) делится поровну между всеми назначенными комиссионерами. -**Важно:** роялти не делятся между людьми. Если два человека выполняют роль постановщика — каждый получает полный Rop. +**Важно:** роялти делятся между людьми с одинаковой ролью. Если два человека выполняют роль постановщика — каждый получает `Rop / 2`. -**Выплата = Z (если артист) + Rop (если постановщик) + Rot (если техник) + Rok (если комиссионер)** +**Выплата = Z (если артист) + Rop / N_постановщиков + Rot / N_техников + Rok / N_комиссионеров** ## Пример diff --git a/js/app.js b/js/app.js index 1a97621..6390d7c 100644 --- a/js/app.js +++ b/js/app.js @@ -258,10 +258,10 @@ const artist = artists[idx]; let payout = 0; if (artist.roles.artist) payout += z; - // Royalties go in full to each assigned person (not split) - if (artist.roles.director) payout += rop; - if (artist.roles.technician) payout += rot; - if (artist.roles.commissioner) payout += rok; + // Royalties are split equally among all people with the same role + if (artist.roles.director && counts.director > 0) payout += rop / counts.director; + if (artist.roles.technician && counts.technician > 0) payout += rot / counts.technician; + if (artist.roles.commissioner && counts.commissioner > 0) payout += rok / counts.commissioner; const cell = row.querySelector('.payout-cell'); if (cell) cell.textContent = round(payout).toFixed(2); }); @@ -290,9 +290,9 @@ artists.forEach((artist, idx) => { let payout = 0; if (artist.roles.artist) payout += z; - if (artist.roles.director) payout += rop; - if (artist.roles.technician) payout += rot; - if (artist.roles.commissioner) payout += rok; + if (artist.roles.director && counts.director > 0) payout += rop / counts.director; + if (artist.roles.technician && counts.technician > 0) payout += rot / counts.technician; + if (artist.roles.commissioner && counts.commissioner > 0) payout += rok / counts.commissioner; const tr = document.createElement('tr'); tr.className = 'table-row';