// doks-integration.jsx — інтеграція з Робочим простором «Докс» (зовнішня платформа).
// На бекенді doksPull() замінюється реальним API-викликом; сигнатура (Promise з тими ж
// полями) лишається. Тут — мок-реєстр проєктів, де команда склала Завдання й кошторис.
//
// КОНТРАКТ ОБМІНУ (ERP ⇄ Докс):
//   ключ зв'язку — doksKey (код проєкту в Докс, напр. «О-1»).
//   Докс → ERP (читання): Завдання на проєктування (Дод. 1), кошторис із розбивкою
//     (обстеження / проектні / експертиза АБО авт. нагляд) → Дод. 4, договірна ціна
//     (без ПДВ) → сума договору + план фінансування (графік) → Дод. 2.
//   ERP → Докс (опц., бекенд): № і дата договору, замовник, статус підписання.

const DOKS_REGISTRY = {
  // Приклад ФОП — їдальня О-1 (з реального кошторису)
  "О-1": {
    projectName: "Капітальний ремонт їдальні О-1 (в/ч 3014)",
    objName: "Капітальний ремонт їдальні солдатської № 101300012 за генпланом літера «О-1» військової частини 3014 Національної гвардії України (м. Одеса)",
    objAddr: "м. Одеса, вул. Люстдорфська дорога, 7",
    edessb: "—", gip: "Олег МАРТИНЮК", consequenceClass: "СС1", stage: "Робочий проєкт (РП)",
    taskReady: true, kind: "project", vatBase: false,
    kosht: [
      { name: "Проєктні роботи", form: "3-П", sum: 88975.08 },
      { name: "Реєстрація проєктної документації в ЄДЕССБ", form: "3-П", sum: 3954.45 },
      { name: "Експертиза проєктної документації", form: "2-П", sum: 24134.32, vatIncluded: true },
    ],
    total: 117063.85,
  },
  // Приклад ТОВ — проєктні роботи (платник ПДВ)
  "УКП-2025-47": {
    projectName: "ЖК «Подільський» — робочий проєкт",
    objName: "Будівництво житлового комплексу «Подільський»",
    objAddr: "м. Київ, Подільський р-н",
    edessb: "IU012345678901", gip: "Олена КРАВЧЕНКО", consequenceClass: "СС2", stage: "Робочий проєкт (РП)",
    taskReady: true, kind: "project", vatBase: true,
    kosht: [
      { name: "Технічне обстеження", form: "3-П", sum: 320000 },
      { name: "Проєктні роботи", form: "3-П", sum: 6800000 },
      { name: "Реєстрація в ЄДЕССБ", form: "3-П", sum: 180000 },
      { name: "Експертиза проєктної документації", form: "2-П", sum: 1100000 },
    ],
    total: 8400000,   // без ПДВ
  },
  // Приклад авторського нагляду
  "АН-89": {
    projectName: "Авторський нагляд — Мін'юст СС2",
    objName: "Реконструкція адмінбудівлі Міністерства юстиції",
    objAddr: "м. Київ, вул. Архітектора Городецького 13",
    edessb: "IU009988776655", gip: "Олена КРАВЧЕНКО", consequenceClass: "СС2", stage: "Авторський нагляд",
    taskReady: true, kind: "supervision", vatBase: true,
    kosht: [
      { name: "Авторський нагляд (виїзди за графіком)", form: "3-П", sum: 800000 },
    ],
    total: 800000,
  },
};
window.DOKS_REGISTRY = DOKS_REGISTRY;

// Запит до Докс (мок). Повертає Promise. На бекенді — реальний виклик API Докс.
window.doksPull = function (keyRaw) {
  const key = String(keyRaw || "").trim();
  return new Promise((resolve) => {
    setTimeout(() => {
      const rec = DOKS_REGISTRY[key];
      if (!rec) { resolve({ found: false, error: "Проєкт із таким кодом не знайдено в Робочому просторі (Докс).", key }); return; }
      // план фінансування за замовчуванням: аванс 30 / проєкт 50 / завершення 20 від суми без ПДВ
      const total = rec.total;
      const startISO = window.SYS_DATE || "2026-05-29";
      const schedule = window.buildSchedule(rec.kind === "supervision" ? "std" : "stages4", total, startISO);
      resolve({
        found: true, key, source: "Робочий простір «Докс» (демо)", syncedAt: window.SYS_DATE || "2026-05-29",
        projectName: rec.projectName, objName: rec.objName, objAddr: rec.objAddr,
        edessb: rec.edessb, gip: rec.gip, consequenceClass: rec.consequenceClass, stage: rec.stage,
        kind: rec.kind, vatBase: rec.vatBase, taskReady: rec.taskReady,
        kosht: rec.kosht.map(k => ({ ...k })), total, schedule,
      });
    }, 700);
  });
};

// Зведення кошторису для Дод. 4 (підсумок без ПДВ)
window.doksKoshtTotal = function (kosht) {
  return (kosht || []).reduce((s, k) => s + (k.sum || 0), 0);
};
