{
  "schemaVersion": 1,
  "id": "P44-C06",
  "title": "Оптовая выгрузка: валюты и курс именно на дату операции",
  "author": {
    "id": "P44",
    "name": "Анастасия Ковалева"
  },
  "specialty": "Управленческие отчеты из разрозненных данных",
  "projectStatus": "concept",
  "source": {
    "document": "catalogue_60_personas.md",
    "briefId": "P44-C06",
    "title": "Оптовая компания",
    "kind": "editorial_concept",
    "data": "synthetic"
  },
  "context": "В журнале есть RUB, EUR, корректировка прежней операции и строка без курса. Подстановка среднего курса скрыла бы пропуск и изменила итог.",
  "decision": "Я присоединяю курс по паре валюта+дата. Для корректировки сохраняется собственная дата события и ссылка на прежний документ. Неполная строка видна в отчете, но не попадает в рублевую сумму.",
  "constraint": "Курсы 90 и 92 ₽ за EUR — явно заданные расчетные допущения, не рыночные котировки.",
  "steps": [
    "Сохранить валюту и дату каждого исходного движения.",
    "Присоединить только явно заданный курс на эту дату.",
    "Проверить корректировку и включение пропущенной строки после добавления курса."
  ],
  "inspection": [
    "Рублевый итог 331800 не включает 300EUR без курса — проверено.",
    "Корректировка использует свою дату и сохраняет OP2 — проверено.",
    "Добавление явного курса 93 включает недостающую строку — проверено."
  ],
  "sample": {
    "headers": [
      "Операция",
      "Дата",
      "Валюта",
      "Исходная сумма",
      "Курс",
      "Сумма RUB",
      "Корректирует",
      "Статус"
    ],
    "rows": [
      [
        "OP1",
        "2026-10-01",
        "RUB",
        "100000",
        "1",
        "100000",
        "",
        "Рассчитано"
      ],
      [
        "OP2",
        "2026-10-01",
        "EUR",
        "2000",
        "90",
        "180000",
        "",
        "Рассчитано"
      ],
      [
        "OP3",
        "2026-10-02",
        "EUR",
        "500",
        "92",
        "46000",
        "",
        "Рассчитано"
      ],
      [
        "ADJ1",
        "2026-10-02",
        "EUR",
        "-100",
        "92",
        "-9200",
        "OP2",
        "Рассчитано"
      ],
      [
        "OP4",
        "2026-10-03",
        "EUR",
        "300",
        "",
        "",
        "",
        "Нет курса"
      ],
      [
        "OP5",
        "2026-10-02",
        "RUB",
        "15000",
        "1",
        "15000",
        "",
        "Рассчитано"
      ]
    ]
  },
  "sampleNote": "Авторский контрольный набор; не клиентские документы и не результаты внешней модели.",
  "caseStudy": {
    "role": "Аналитик управленческого учёта",
    "contribution": "Я реализовала пересчёт валют по дате операции и учёт отдельных корректировок со ссылкой на основание.",
    "objective": "Каждое движение сохраняет исходную валюту, дату и использованный расчетный курс.",
    "problem": "В журнале есть RUB, EUR, корректировка прежней операции и строка без курса. Подстановка среднего курса скрыла бы пропуск и изменила итог.",
    "result": "При исходных курсах рассчитано 331800 ₽; 300 EUR за 3 октября остаются вне рублевого итога. После явного добавления курса 93 эта строка дает 27900 ₽ и итог 359700 ₽. Корректировка OP2 на −100 EUR рассчитана по своей дате.",
    "deliverables": [
      "index.html",
      "source.json",
      "source.csv",
      "result.json",
      "result.csv",
      "engine.js",
      "checks.json",
      "style.css"
    ],
    "blocks": [
      {
        "type": "text",
        "title": "Корректировка сохраняет своё основание",
        "text": "Для 1 и 2 октября заданы разные курсы евро — 90 и 92. Операция без курса остаётся в исходной валюте и попадает на сверку. Отрицательная корректировка допустима как отдельная запись, связанная с исходной операцией: запрет любого минуса сделал бы исправление учёта невозможным."
      }
    ]
  },
  "deliverable": {
    "type": "analysis",
    "entry": "/catalogue/deliverables/p44-c06/index.html",
    "label": "Открыть работающий материал",
    "files": [
      {
        "path": "/catalogue/deliverables/p44-c06/index.html",
        "name": "index.html",
        "mimeType": "text/html"
      },
      {
        "path": "/catalogue/deliverables/p44-c06/source.json",
        "name": "source.json",
        "mimeType": "application/json"
      },
      {
        "path": "/catalogue/deliverables/p44-c06/source.csv",
        "name": "source.csv",
        "mimeType": "text/csv"
      },
      {
        "path": "/catalogue/deliverables/p44-c06/result.json",
        "name": "result.json",
        "mimeType": "application/json"
      },
      {
        "path": "/catalogue/deliverables/p44-c06/result.csv",
        "name": "result.csv",
        "mimeType": "text/csv"
      },
      {
        "path": "/catalogue/deliverables/p44-c06/engine.js",
        "name": "engine.js",
        "mimeType": "text/javascript"
      },
      {
        "path": "/catalogue/deliverables/p44-c06/verify.cjs",
        "name": "verify.cjs",
        "mimeType": "text/javascript"
      },
      {
        "path": "/catalogue/deliverables/p44-c06/checks.json",
        "name": "checks.json",
        "mimeType": "application/json"
      },
      {
        "path": "/catalogue/deliverables/p44-c06/style.css",
        "name": "style.css",
        "mimeType": "text/css"
      }
    ],
    "summary": "При исходных курсах рассчитано 331800 ₽; 300 EUR за 3 октября остаются вне рублевого итога. После явного добавления курса 93 эта строка дает 27900 ₽ и итог 359700 ₽. Корректировка OP2 на −100 EUR рассчитана по своей дате."
  },
  "takeaway": "При исходных курсах рассчитано 331800 ₽; 300 EUR за 3 октября остаются вне рублевого итога. После явного добавления курса 93 эта строка дает 27900 ₽ и итог 359700 ₽. Корректировка OP2 на −100 EUR рассчитана по своей дате.",
  "capabilities": [
    "completed_analysis"
  ],
  "externalConnections": []
}
