// projects-data.jsx — ПРОЄКТНА ДІЯЛЬНІСТЬ (грантові/донорські проєкти ГО)
// ───────────────────────────────────────────────────────────────────────────
// Окрема колекція window.DATA.PROJECTS. Це НЕ об'єкти проєктування і НЕ договори
// підряду — це робота в межах проєкту громадської організації (ГО), що живе рівно
// стільки, скільки сам проєкт: коли проєкт закривається → статус «Закрито» → архів.
//
// Виконавець: ФОП Підкапка М.І. (єдиний податок 5% + 1% ВЗ) АБО ТОВ «Укрбудпроєкт».
// Дохід ФОП-проєктів автоматично підтягується в «Єдиний податок (ФОП)» (5%+1%).
//
// Кожен проєкт самодостатній: партнер-ГО, донор, період, сума/графік оплат,
// деліверабли, громади, документи, задачі. Контракт показується також у «Договори».
// ───────────────────────────────────────────────────────────────────────────

// ── ДОНОРИ (джерела фінансування грантів) ──────────────────────────────────
const DONORS = [
  {
    id: "dn-pin", name: "People in Need", nameUk: "«Людина в біді» (PIN)",
    country: "Чехія", kind: "Міжнародна гуманітарна організація",
    note: "Чеська гуманітарна організація. Фінансує програми відновлення та підготовки громад України.",
  },
];

// ── ПАРТНЕРИ-ГО (з ким співпрацюємо в межах проєкту) ───────────────────────
const NGO_PARTNERS = [
  {
    id: "ngo-eco", name: "ГО «Екоклуб»", short: "Екоклуб",
    edrpou: "25319429", city: "Рівне",
    focus: "Енергоефективність, відновлювана енергетика, екологія громад",
    contact: { name: "Андрій Мартинюк", role: "Виконавчий директор", phone: "+380 362 62 03 24", email: "office@ecoclubrivne.org" },
    note: "Громадська організація — партнер у грантових проєктах з енергоефективності закладів громад.",
    // Реквізити для друкованих актів (з договору PIN-20-08-2025)
    requisites: {
      fullName: "Громадська організація «ЕКОКЛУБ»",
      address: "33024, Рівненська обл., м. Рівне, вул. Соборна, буд. 259, кв. 84",
      addressFact: "33014, м. Рівне, вул. С. Бандери, 41, офіс 92",
      edrpou: "25319429",
      iban: "UA533510050000026002638167000",
      bank: "АТ «Укрсиббанк» у м. Рівне",
      email: "office@ecoclubrivne.org",
      director: "Мартинюк Андрій Миколайович",
      directorShort: "А.М. Мартинюк",
      directorRole: "Виконавчий директор",
      basis: "Статуту",
    },
  },
];

// ── 14 громад першого проєкту (Дніпропетровська + Сумська обл.) ────────────
const ECO1_COMMUNITIES = [
  { name: "Криворізька МТГ",     region: "Дніпропетровська обл.", facility: "ЗОШ № 8" },
  { name: "Кам'янська МТГ",      region: "Дніпропетровська обл.", facility: "Ліцей № 3" },
  { name: "Павлоградська МТГ",   region: "Дніпропетровська обл.", facility: "Дитсадок «Сонечко»" },
  { name: "Синельниківська МТГ", region: "Дніпропетровська обл.", facility: "Амбулаторія ЗПСМ" },
  { name: "Покровська МТГ",      region: "Дніпропетровська обл.", facility: "Гімназія № 1" },
  { name: "Васильківська СТГ",   region: "Дніпропетровська обл.", facility: "Будинок культури" },
  { name: "Софіївська СТГ",      region: "Дніпропетровська обл.", facility: "ЗОШ № 2" },
  { name: "Петриківська СТГ",    region: "Дніпропетровська обл.", facility: "Дитсадок «Калинка»" },
  { name: "Конотопська МТГ",     region: "Сумська обл.",          facility: "Ліцей № 11" },
  { name: "Шосткинська МТГ",     region: "Сумська обл.",          facility: "Амбулаторія № 2" },
  { name: "Глухівська МТГ",      region: "Сумська обл.",          facility: "ЗОШ № 6" },
  { name: "Охтирська МТГ",       region: "Сумська обл.",          facility: "Дитсадок «Веснянка»" },
  { name: "Лебединська МТГ",     region: "Сумська обл.",          facility: "Гімназія № 4" },
  { name: "Тростянецька МТГ",    region: "Сумська обл.",          facility: "Будинок культури" },
];

const ECO2_COMMUNITIES = [
  { name: "Криворізька МТГ",     region: "Дніпропетровська обл.", facility: "ЗОШ № 8 (заміна вікон)" },
  { name: "Кам'янська МТГ",      region: "Дніпропетровська обл.", facility: "Ліцей № 3 (дах)" },
  { name: "Павлоградська МТГ",   region: "Дніпропетровська обл.", facility: "Дитсадок «Сонечко» (ІТП)" },
  { name: "Покровська МТГ",      region: "Дніпропетровська обл.", facility: "Гімназія № 1 (фасад)" },
  { name: "Софіївська СТГ",      region: "Дніпропетровська обл.", facility: "ЗОШ № 2 (котельня)" },
  { name: "Синельниківська МТГ", region: "Дніпропетровська обл.", facility: "Амбулаторія (вентиляція)" },
];

// ── ПРОЄКТИ ────────────────────────────────────────────────────────────────
const PROJECTS = [
  {
    id: "prj-eco1",
    code: "ПД-2024-01",
    name: "Підготовка громад до опалювального сезону",
    number: "ЕК-07/2024",
    partner: "ngo-eco",
    donor: "dn-pin",
    execEntity: "fop",
    role: "Розробка проєктно-кошторисної документації (ПКД) на енергоефективні заходи в закладах громад",
    scope: "14 громад Дніпропетровської та Сумської областей",
    start: "2024-08-01",
    end: "2025-03-31",
    status: "closed",
    closedDate: "2025-04-04",
    closeNote: "Усі деліверабли передано, фінальний звіт PIN затверджено, акти підписано. Проєкт донора завершено — контракт закрито.",
    manager: "ok",
    team: ["ok", "tm", "vs"],
    communities: ECO1_COMMUNITIES,
    deliverables: [
      { id: "e1d1", title: "Інсепшн-звіт і методологія обстежень", due: "2024-08-30", status: "done" },
      { id: "e1d2", title: "Енергетичні обстеження закладів у 14 громадах", due: "2024-10-31", status: "done" },
      { id: "e1d3", title: "Розробка ПКД (проєктно-кошторисна документація)", due: "2024-12-20", status: "done" },
      { id: "e1d4", title: "Експертиза кошторисної частини", due: "2025-01-31", status: "done" },
      { id: "e1d5", title: "Передача документації громадам", due: "2025-02-28", status: "done" },
      { id: "e1d6", title: "Фінальний наративний і фінансовий звіт PIN", due: "2025-03-31", status: "done" },
    ],
    docs: [
      { name: "Договір про надання послуг ЕК-07/2024", type: "contract", date: "2024-07-20" },
      { name: "Технічне завдання (ТЗ)", type: "tz", date: "2024-07-22" },
      { name: "Проміжний звіт (обстеження + ПКД)", type: "report", date: "2024-12-20" },
      { name: "Фінальний звіт PIN", type: "report", date: "2025-03-31" },
      { name: "Акт наданих послуг № 3", type: "act", date: "2025-03-31" },
    ],
    contract: {
      number: "ЕК-07/2024", date: "2024-07-20", total: 504000,
      parties: { ourRole: "executor", counterRole: "customer", subject: "services" },
      schedule: [
        { stage: "Аванс при підписанні", pct: 30, amount: 151200, dueDate: "2024-08-05", paidDate: "2024-08-07", invoice: "pi-eco1-01", billing: "advance" },
        { stage: "Проміжний транш — обстеження + ПКД", pct: 40, amount: 201600, dueDate: "2024-12-25", paidDate: "2024-12-27", invoice: "pi-eco1-02", billing: "work" },
        { stage: "Фінальний — передача + звіт донору", pct: 30, amount: 151200, dueDate: "2025-03-31", paidDate: "2025-04-03", invoice: "pi-eco1-03", billing: "work" },
      ],
    },
    tasks: [
      { id: "pe1-1", title: "Узгодити методологію обстежень з PIN", proj: "prj-eco1", assignee: "ok", section: "Звіт", est: "—", status: "done" },
      { id: "pe1-2", title: "Енергообстеження закладів (14 громад)", proj: "prj-eco1", assignee: "vs", section: "Обстеження", est: "—", status: "done" },
      { id: "pe1-3", title: "Розробка ПКД по громадах", proj: "prj-eco1", assignee: "tm", section: "ПКД", est: "—", status: "done" },
      { id: "pe1-4", title: "Експертиза кошторисів", proj: "prj-eco1", assignee: "ok", section: "Кошторис", est: "—", status: "done" },
      { id: "pe1-5", title: "Фінальний звіт донору", proj: "prj-eco1", assignee: "ok", section: "Звіт", est: "—", status: "done" },
    ],
  },

  {
    id: "prj-eco2",
    code: "ПД-2025-02",
    name: "Супровід громад у підготовці ПКД (PIN)",
    number: "PIN-20-08-2025",
    partner: "ngo-eco",
    donor: "dn-pin",
    execEntity: "fop",
    role: "Технічний супровід громад: експертиза, кошториси, ЄДЕССБ, комунікація з підрядниками та проєктувальниками",
    scope: "Громади Дніпропетровської та Сумської областей",
    start: "2025-08-20",
    end: "2026-06-30",
    status: "active",
    manager: "ok",
    team: ["ok", "tm", "vs"],
    communities: ECO2_COMMUNITIES,
    // Параметри для друку акта за шаблоном донора (PIN)
    actSeed: { no: "3", date: "2026-03-30", place: "Рівне", amount: 12466.20, contractNo: "PIN-20-08-2025", contractDate: "2025-08-20" },
    deliverables: [
      { id: "e2d1", title: "Інсепшн-зустріч і план робіт", due: "2025-09-15", status: "done" },
      { id: "e2d2", title: "Супровід експертизи СЕС (Саксаганська ТГ)", due: "2026-03-23", status: "done" },
      { id: "e2d3", title: "Реєстрація ЄДЕССБ / містобудівних умов", due: "2026-04-30", status: "in_progress" },
      { id: "e2d4", title: "Оцінка кошторисів (Кривий Ріг, Тростянець)", due: "2026-05-31", status: "in_progress" },
      { id: "e2d5", title: "Фіналізація документів для експертизи", due: "2026-06-30", status: "todo" },
    ],
    docs: [
      { name: "Договір PIN-20-08-2025", type: "contract", date: "2025-08-20" },
      { name: "Технічне завдання (ТЗ)", type: "tz", date: "2025-08-22" },
      { name: "Акт наданих послуг № 3 + Описовий звіт", type: "act", date: "2026-03-30" },
    ],
    contract: {
      number: "PIN-20-08-2025", date: "2025-08-20", total: 360000,
      parties: { ourRole: "executor", counterRole: "customer", subject: "services" },
      schedule: [
        { stage: "Акт № 1 — послуги грудень 2025", pct: 30, amount: 108000, dueDate: "2026-01-10", paidDate: "2026-01-14", invoice: "pi-eco2-01", billing: "work" },
        { stage: "Акт № 3 — послуги березень 2026", pct: 12, amount: 12466.20, dueDate: "2026-04-05", paidDate: "2026-04-08", billing: "work" },
        { stage: "Наступні акти — за графіком послуг", pct: 58, amount: 239533.80, dueDate: "2026-06-30", billing: "work" },
      ],
    },
    // Послуги акта формуються з виконаних задач (коментар = рядок акта, нотатка = опис, + скріншот)
    tasks: [
      { id: "pe2-s1", title: "Комунікація з експертизою та ФОП Лаврінов (Саксаганська ТГ)", proj: "prj-eco2", assignee: "ok", section: "Послуга", actDate: "2026-03-02", status: "done", note: "Скріншот листування з ФОП Лаврінов щодо проходження експертизи." },
      { id: "pe2-s2", title: "Зауваження до кошторису Саївська СЕС (Саксаганська ТГ)", proj: "prj-eco2", assignee: "ok", section: "Послуга", actDate: "2026-03-02", status: "done", note: "Перелік зауважень до кошторису Саївська СЕС." },
      { id: "pe2-s3", title: "Вступна зустріч Тростянецька ТГ", proj: "prj-eco2", assignee: "ok", section: "Послуга", actDate: "2026-03-03", status: "done", note: "Скріншот зустрічі." },
      { id: "pe2-s4", title: "Зустріч з Тростянецькою ТГ і Підрядником (погодження технічних рішень)", proj: "prj-eco2", assignee: "ok", section: "Послуга", actDate: "2026-03-09", status: "done", note: "Погодження технічних рішень; 40 хвилин." },
      { id: "pe2-s5", title: "Щотижнева зустріч з Екоклубом", proj: "prj-eco2", assignee: "ok", section: "Послуга", actDate: "2026-03-10", status: "done", note: "Скріншот зустрічі." },
      { id: "pe2-s6", title: "Виправлення зауважень експертизи по СЕС водозабір Саксаганська ТГ", proj: "prj-eco2", assignee: "ok", section: "Послуга", actDate: "2026-03-15", status: "done", note: "Переписка щодо зауважень по експертизі." },
      { id: "pe2-s7", title: "Комунікація з СКП «Аква», архітектором, ДРРП та Держгеонадрами (реєстрація свердловини та містобудів)", proj: "prj-eco2", assignee: "ok", section: "Послуга", actDate: "2026-03-17", status: "done", note: "Скріншот переписки з бухгалтером СКП «Аква»." },
      { id: "pe2-s8", title: "Супровід Солонянської ТГ щодо роботи в ЄДЕССБ", proj: "prj-eco2", assignee: "ok", section: "Послуга", actDate: "2026-03-18", status: "done", note: "Скріншот з ЄДЕССБ." },
      { id: "pe2-s9", title: "Проходження експертизи СЕС водозабір Саксагань", proj: "prj-eco2", assignee: "ok", section: "Послуга", actDate: "2026-03-23", status: "done", note: "Скріншоти переписки з ФОП Лаврінов (18.03–23.03)." },
      { id: "pe2-s10", title: "Супровід СКП «Аква» в реєстрації Завдання на проєктування", proj: "prj-eco2", assignee: "ok", section: "Послуга", actDate: "2026-03-24", status: "done", note: "Скріншот листа з Завданням на проєктування." },
      { id: "pe2-s11", title: "Оцінка кошторису Кривий Ріг", proj: "prj-eco2", assignee: "ok", section: "Послуга", actDate: "2026-03-25", status: "done", note: "Опрацювання кошторису." },
      { id: "pe2-s12", title: "Фіналізація документів для підписання на експертизу", proj: "prj-eco2", assignee: "ok", section: "Послуга", actDate: "2026-03-27", status: "done", note: "Фіналізація роботи з замовниками щодо підписання документів." },
      { id: "pe2-a1", title: "Розробка ПКД: пілотний заклад (квітень)", proj: "prj-eco2", assignee: "tm", section: "ПКД", day: "29", est: "6 год", status: "live" },
      { id: "pe2-a2", title: "Підготувати акт № 4 за квітень", proj: "prj-eco2", assignee: "ok", section: "Договір", est: "1 год", status: "todo" },
    ],
  },
];

// ── Реєстри + хелпери ──────────────────────────────────────────────────────
// Збагачуємо контракт проєкту плоскими полями (для друкованих форм рахунку/акта).
PROJECTS.forEach(p => {
  if (p.contract) {
    p.contract.execEntity = p.execEntity;
    p.contract.projectName = p.name;
    p.contract.projectCode = p.code;
    p.contract.partnerId = p.partner;
  }
});
// Демо-приклади (Екоклуб/PIN) НЕ вантажимо — у LIVE дані з бекенду (порожньо, поки не введуть реальні).
window.DATA.DONORS = [];
window.DATA.NGO_PARTNERS = [];
window.DATA.PROJECTS = [];

window.getDonor = (id) => DONORS.find(d => d.id === id);
window.getNgoPartner = (id) => NGO_PARTNERS.find(n => n.id === id);
window.getGoProject = (id) => PROJECTS.find(p => p.id === id);

window.PROJECT_STATUS = {
  active:   { label: "Активний", tone: "live" },
  closed:   { label: "Закрито",  tone: "neutral" },
  archived: { label: "Архів",    tone: "neutral" },
};

window.DELIVERABLE_STATUS = {
  done:        { label: "Готово",   tone: "live" },
  in_progress: { label: "У роботі", tone: "blue" },
  todo:        { label: "Заплановано", tone: "neutral" },
};

// Зведення по проєкту: оплачено / усього + готовність деліверабли
window.projectSummary = function (p) {
  const sched = (p.contract && p.contract.schedule) || [];
  const total = (p.contract && p.contract.total) || 0;
  const paid = sched.filter(s => s.paidDate).reduce((a, s) => a + (s.amount || 0), 0);
  const dlv = p.deliverables || [];
  const dlvDone = dlv.filter(d => d.status === "done").length;
  return {
    total, paid,
    paidPct: total ? Math.round(paid / total * 100) : 0,
    dlvTotal: dlv.length, dlvDone,
    dlvPct: dlv.length ? Math.round(dlvDone / dlv.length * 100) : 0,
  };
};
