Модуль 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
| Endpoint | ViewSet |
|---|---|
/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 |
Отчёты
| Endpoint | ViewSet |
|---|---|
/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_payments | cron | Синхронизация платежей с банком |
sync_documents | signal | Синхронизация с МойСклад |
set_currency_rate_save | cron | Загрузка курсов ЦБ РФ |
set_document_in_payment_register | signal post_save | Добавление в реестр платежей |
applicable_processingorder | signal | Проведение заказа на производство |
create_qc_for_manufacture_position | signal | Создание QC задания |
create_qc_for_supply_position | signal | QC для позиции приёмки |
write_off_from_manufacture_position | signal | Списание материалов |
Полный список: Celery-задачи