Skip to content

Модуль 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 — договоры с контрагентом

ADR