Andrey Epifancev 801d9948ca synthgen: каркас, настройки, копии модулей #35 (#38)
- synthgen/config.py: Config, load_config (YAML + --set), dump_config, проверки диапазонов §3
- synthgen/rng.py: rng_for (SHA-256 → Random), stable_hash
- synthgen/__main__.py: разбор --config/--set/--out/--force, ошибка конфигурации → код 2
- synthgen/examples/default.yaml: все ключи §3 со значениями по умолчанию
- копии из synthetic-group/gen (#35): inn, xlsx, ledger, chart (+80.09, 91.09 из seed arm-core)
- тесты: config, inn, ledger; conftest с маркерами parser/slow
- .gitignore: out/
- спека: решения 15–16

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
2026-11-12 23:35:17 +04:00

80 lines
4.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""Источник: synthetic-group/gen/chart.py (#35). Используемые субсчета плана счетов (коды — из seed arm-core chart_of_accounts.csv)."""
ACCOUNTS: dict[str, str] = {
"000": "Вспомогательный счет",
"01": "Основные средства",
"02": "Амортизация основных средств",
"03": "Доходные вложения в материальные ценности",
"08": "Вложения во внеоборотные активы",
"10": "Материалы",
"19": "НДС по приобретенным ценностям",
"20": "Основное производство",
"26": "Общехозяйственные расходы",
"41": "Товары",
"43": "Готовая продукция",
"44": "Расходы на продажу",
"50": "Касса",
"51": "Расчетные счета",
"52": "Валютные счета",
"55": "Специальные счета в банках",
"58.01": "Паи и акции",
"58.03": "Предоставленные займы",
"59": "Резервы под обесценение финансовых вложений",
"60.01": "Расчеты с поставщиками и подрядчиками",
"60.02": "Расчеты по авансам выданным",
"62.01": "Расчеты с покупателями и заказчиками",
"62.02": "Расчеты по авансам полученным",
"66.01": "Краткосрочные кредиты",
"66.02": "Проценты по краткосрочным кредитам",
"66.03": "Краткосрочные займы",
"66.04": "Проценты по краткосрочным займам",
"67.03": "Долгосрочные займы",
"67.04": "Проценты по долгосрочным займам",
"68": "Расчеты по налогам и сборам",
"68.04": "Налог на прибыль",
"69": "Расчеты по социальному страхованию и обеспечению",
"70": "Расчеты с персоналом по оплате труда",
"71": "Расчеты с подотчетными лицами",
"73": "Расчеты с персоналом по прочим операциям",
"75.02": "Расчеты по выплате доходов",
"76.03": "Расчеты по причитающимся дивидендам и другим доходам",
"76.05": "Расчеты с прочими поставщиками и подрядчиками",
"76.07.1": "Арендные обязательства",
"76.07.9": "НДС по арендным обязательствам",
"76.09": "Прочие расчеты с разными дебиторами и кредиторами",
"76.АВ": "НДС по авансам и предоплатам",
"80": "Уставный капитал",
"80.09": "Прочий капитал",
"82": "Резервный капитал",
"83": "Добавочный капитал",
"84": "Нераспределенная прибыль (непокрытый убыток)",
"86": "Целевое финансирование",
"90.01": "Выручка",
"90.02": "Себестоимость продаж",
"90.03": "Налог на добавленную стоимость",
"90.04": "Акцизы",
"90.05": "Экспортные пошлины",
# 90.06 в seed отсутствует
"90.07": "Расходы на продажу",
"90.08": "Управленческие расходы",
"90.09": "Прибыль / убыток от продаж",
"91.01": "Прочие доходы",
"91.02": "Прочие расходы",
"91.09": "Сальдо прочих доходов и расходов",
"96": "Резервы предстоящих расходов",
"97": "Расходы будущих периодов",
"99": "Прибыли и убытки",
"001": "Арендованные основные средства",
"008": "Обеспечения обязательств и платежей полученные",
"009": "Обеспечения обязательств и платежей выданные",
"011": "Основные средства, сданные в аренду",
}
def is_off_balance(code: str) -> bool:
return code.isdigit() and len(code) == 3 and "001" <= code <= "011"
def parent(code: str) -> str:
return code.rsplit(".", 1)[0] if "." in code else code