Skip to content

Модуль document

Путь: app/document/
Django app: app.document

Назначение

Центральный модуль системы. Управляет всеми документами: закупки, продажи, производство, склад, финансы. Построен на дереве MPTT для иерархии связанных документов.

Ключевые модели

Documents

Основная модель документа (MPTT-дерево):

python
class Documents(MPTTModel):
    type_doc = FK(TypeDocPos)          # тип документа
    counterparty = FK(CounterParty)    # контрагент
    organization = FK(Organization)    # наша организация
    warehouse = FK(Warehouse)          # склад
    date = DateField()
    status = CharField(choices=STATUS)
    sum_without_nds = DecimalField()
    sum_with_nds = DecimalField()
    comment = TextField()
    parent = TreeForeignKey('self')    # родительский документ (MPTT)
    # + 30 других полей

TypeDocPos

Справочник типов документов:

python
class TypeDocPos(Model):
    name = CharField()
    code = CharField()   # внутренний код типа
    is_income = BooleanField()   # приходный?
    is_outcome = BooleanField()  # расходный?

Positions

Позиции документа (строки):

python
class Positions(Model):
    document = FK(Documents)
    assortiment = FK(Assortiment)
    quantity = DecimalField()
    price = DecimalField()
    nds_rate = DecimalField()
    sum_with_nds = DecimalField()
    note = TextField()

Другие модели

МодельНазначение
ManufacturePositionsПозиции производственных заданий
ProcurementPlanPositionsПозиции плана закупок
QualityControlCheckЗадания на контроль качества
QualityControlDefectДефекты, обнаруженные при QC
ShippingCardТранспортные карточки (ТМС)
InventoryPositionПозиции инвентаризации
PaymentRegisterPositionПозиции реестра платежей
ProductionStageCompletionЗавершение этапа производства
DefectsInProductionБрак в производстве
MaterialsМатериалы для производства
FilesВложенные файлы документов
AssortimentАссортимент (товары и материалы)
OrganizationНаши юридические организации

Сервисный слой

app/document/service/

ФайлОписание
document_price_recalculation.pyПересчёт цен при изменении курсов валют
procurement_plan_analysis.pyАнализ плана закупок, расчёт потребности
assortiment/Сервисы работы с ассортиментом
related_document/creator.pyСоздание связанных документов (цепочки)

app/document/services/

ФайлОписание
pdf_invoice_service.pyОбработка PDF счетов через микросервис

API

EndpointViewSet
/api/v2/documents/DocumentViewSet
/api/v2/positions/PositionDocViewSet
/api/v2/assortiment/AssortimentViewSet
/api/v2/manufacture-positions/ManufacturePositionsViewSet
/api/v2/quality-control/QualityControlCheckViewSet
/api/v2/files/FilesViewSet

Отчёты

EndpointViewSet
/api/v2/reports/documents/DocumentReportViewSet
/api/v2/reports/sales/SalesReportsViewSet
/api/v2/reports/purchases/PurchaseReportsViewSet
/api/v2/reports/production/ProductionReportsViewSet
/api/v2/reports/procurement-plan/ProcurementPlanReportsViewSet

Celery-задачи

ЗадачаТриггерОписание
sync_paymentscronСинхронизация платежей с банком
sync_documentssignalСинхронизация с МойСклад
set_currency_rate_savecronЗагрузка курсов ЦБ РФ
set_document_in_payment_registersignal post_saveДобавление в реестр платежей
applicable_processingordersignalПроведение заказа на производство
create_qc_for_manufacture_positionsignalСоздание QC задания
create_qc_for_supply_positionsignalQC для позиции приёмки
write_off_from_manufacture_positionsignalСписание материалов

Полный список: Celery-задачи

ADR