Модуль bank
Путь: app/bank/
Django app: app.bank
Назначение
Управляет банковскими счетами компании, загрузкой выписок и финансовыми операциями. Автоматически загружает курсы валют с сайта ЦБ РФ.
Ключевые модели
BankAccount
python
class BankAccount(Model):
organization = FK(Organization)
bank_name = CharField()
bik = CharField()
account_number = CharField()
currency = FK(Currency)
is_main = BooleanField()
is_active = BooleanField()BankOperation
python
class BankOperation(Model):
account = FK(BankAccount)
counterparty = FK(CounterParty)
operation_type = CharField(choices=[
('income', 'Поступление'),
('outcome', 'Списание'),
('transfer', 'Перевод'),
])
amount = DecimalField()
currency = FK(Currency)
date = DateField()
document_number = CharField() # номер платёжного поручения
purpose = TextField() # назначение платежа
document = FK(Documents, null=True) # связанный документCurrency
python
class Currency(Model):
code = CharField() # RUB, USD, EUR
name = CharField()
symbol = CharField()
class CurrencyRate(Model):
currency = FK(Currency)
date = DateField()
rate = DecimalField() # курс к рублю
source = CharField() # "cbr"Курсы валют ЦБ РФ
Курсы обновляются ежедневно автоматически через endpoint /api/v2/currency/:
python
# Источник данных
CBR_URL = "https://www.cbr-xml-daily.ru/daily_json.js"
# Celery-задача (запускается каждый день в 10:00 МСК)
@app.task
def update_currency_rates():
rates = requests.get(CBR_URL).json()
for code, data in rates['Valute'].items():
CurrencyRate.objects.update_or_create(
currency__code=code,
date=today,
defaults={'rate': data['Value']}
)API
| Endpoint | Описание |
|---|---|
GET /api/v2/bank/accounts/ | Банковские счета |
GET /api/v2/bank/operations/ | Банковские операции |
POST /api/v2/bank/import/ | Загрузить банковскую выписку |
GET /api/v2/currency/ | Курсы валют |
GET /api/v2/currency/{date}/ | Курс на конкретную дату |
Сервисный слой
app/bank/service/:
- Парсинг банковских выписок (форматы 1С, CSV, MT940)
- Автоматическое сопоставление операций с документами
- Расчёт остатков по счетам
Связи
app.document— связанные документы к операциямapp.counterparty— плательщики и получателиapp.finance— ДДС и финансовые отчёты