Модуль counterparty
Путь: app/counterparty/
Django app: app.counterparty
Назначение
Управляет справочником контрагентов — покупателей, поставщиков, перевозчиков и партнёров. Интегрируется с DaData для автозаполнения реквизитов.
Модели
CounterParty
python
class CounterParty(Model):
name = CharField() # полное наименование
short_name = CharField() # краткое
inn = CharField() # ИНН
kpp = CharField() # КПП
ogrn = CharField() # ОГРН
legal_address = TextField() # юридический адрес
actual_address = TextField() # фактический адрес
phone = CharField()
email = EmailField()
group = FK(GroupCounterParty) # группа
is_active = BooleanField()
dadata_data = JSONField() # сырые данные DaData
created_at = DateTimeField()
updated_at = DateTimeField()GroupCounterParty
Группировка контрагентов:
python
class GroupCounterParty(Model):
name = CharField()
description = TextField()
is_supplier = BooleanField()
is_buyer = BooleanField()
is_carrier = BooleanField()CounterPartyBankScore
Банковские реквизиты контрагента (несколько счетов):
python
class CounterPartyBankScore(Model):
counterparty = FK(CounterParty)
bank_name = CharField()
bik = CharField()
account_number = CharField() # расчётный счёт
correspondent_account = CharField() # корр. счёт
is_main = BooleanField() # основной счётИнтеграция с DaData
При вводе ИНН или БИК система обращается к DaData API:
python
# app/counterparty/tasks.py
@app.task
def enrich_counterparty_from_dadata(counterparty_id):
"""Обогащение данных контрагента через DaData"""
cp = CounterParty.objects.get(id=counterparty_id)
data = dadata_client.find_by_id("party", cp.inn)
cp.dadata_data = data
cp.name = data['value']
cp.legal_address = data['data']['address']['value']
cp.save()API
| Endpoint | Метод | Описание |
|---|---|---|
GET /api/v2/counterparty/ | GET | Список контрагентов |
POST /api/v2/counterparty/ | POST | Создать |
GET /api/v2/counterparty/{id}/ | GET | Детали |
PATCH /api/v2/counterparty/{id}/ | PATCH | Обновить |
GET /api/v2/dadata/ | GET | Поиск через DaData |
API для контрагентов (внешний)
GET /c-api/v1/counterparty/documents/
GET /c-api/v1/counterparty/assortiment/Используется в приложении counterparty-office (личный кабинет контрагента).
Связи
app.document— документы контрагентаapp.legal_dossier— юридическое досьеapp.bank— банковские операцииapp.contracts— договоры с контрагентом