This commit is contained in:
2024-05-14 11:39:33 +03:00
commit 2762ac794a
26 changed files with 1506 additions and 0 deletions

111
BACKEND/CONTRACTS.md Normal file
View File

@@ -0,0 +1,111 @@
## Модели
1. **Contract:**
- **`contract_type`** (CharField): выбор типа договора (аренда, продажа).
- **`number`** (CharField): уникальный номер договора.
- **`start_date`** (DateField): дата начала договора.
- **`end_date`** (DateField): дата окончания договора (может быть пустой).
- **`esignature`** (BooleanField): указывает на наличие ЭЦП в договоре.
- **`edo`** (BooleanField): указывает на наличие ЭДО в договоре.
- **`tenant`** (ForeignKey): связь с моделью арендатора.
- **`goods`** (ManyToManyField): связь с имуществом, связанным с договором.
- **`related_objects`** (ManyToManyField): связь с объектами, связанными с договором.
- **`contract_file`** (ManyToManyField): связь с файлами/сканами договора.
- **`contract_photo_pp`** (ManyToManyField): связь с фотографиями при приеме-передаче недвижимости.
2. **Payment:**
- **`payment_frequency`** (CharField): частота платежей (разовый, ежемесячно и т.д.).
- **`payment_method`** (CharField): метод оплаты (постоплата, предоплата).
- **`payment_type`** (CharField): тип оплаты (наличные, безналичные).
- **`rent_cost`** (DecimalField): стоимость аренды.
- **`rent_rate`** (DecimalField): арендная ставка.
- **`compensation`** (CharField): информация о компенсации.
- `**security_deposit**` (DecimalField): залог.
- `**payment_duration**` (DateField): дата окончания оплаты.
- **`is_paid`** (BooleanField): указывает на оплаченность платежа.
- **`contract`** (ForeignKey): связь с моделью договора.
## Сериализатор
1. **ContractSerializer:**
- `id`: Идентификатор договора.
- `contractContractType`: Тип договора.
- `contractnumber`: Номер договора.
- `contractStartDate`: Дата начала договора.
- `contractEndDate`: Дата окончания договора.
- `contractEsignature`: Наличие ЭЦП в договоре.
- `contractEdo`: Наличие ЭДО в договоре.
- `tenant`: Внешний ключ на модель арендатора.
- `goods`: Множественный внешний ключ на модель имущества.
- `related_objects`: Множественный внешний ключ на модель объектов.
- `contractFile`: Файл договора.
- `contractPhotoPp`: Фотография при приеме-передаче недвижимости.
- `author`: Информация об авторе (использует `AuthorSerializer`).
- `createdAt`: Дата создания.
- `updatedAt`: Дата обновления.
2. **PaymentSerializer:**
- `id`: Идентификатор платежа.
- `contract`: Внешний ключ на модель договора.
- `paymentFrequency`: Частота платежей.
- `paymentMethod`: Метод оплаты.
- `paymentType`: Тип оплаты.
- `paymentRentCost`: Стоимость аренды.
- `paymentRentRate`: Арендная ставка.
- `paymentCompensation`: Компенсация.
- `paymentSecurityDeposit`: Залог.
- `paymentPaymentDuration`: Дата окончания оплаты.
- `paymentIsPaid`: Оплачено ли.
- `author`: Информация об авторе (использует `AuthorSerializer`).
- `createdAt`: Дата создания.
- `updatedAt`: Дата обновления.
## Маршрутизатор
1. **URL для списка и деталей договоров:**
- `''`: Этот URL указывает на корневой URL вашего приложения.
- Включает все URL из `router`, который зарегистрирован для представления `ContractViewSet`.
2. **URL для списка платежей по договору и создания нового платежа:**
- `contracts/<int:id>/payments`: Этот URL позволяет получить список платежей для определенного договора с идентификатором `id`. Он связан с представлением `PaymentContractViewSet`.
3. **URL для удаления платежа по договору:**
- `contracts/<int:contract_id>/payments/<int:payment_id>/`: Этот URL используется для удаления конкретного платежа для договора с идентификатором `contract_id` и идентификатором платежа `payment_id`. Он связан с представлением `DeletePaymentContractView`.
## Контроллер
1. **ContractViewSet**:
- `queryset`: Получает все объекты договоров (`Contract`).
- `serializer_class`: Использует `ContractSerializer` для сериализации и десериализации данных.
- `permission_classes`: Позволяет доступ только аутентифицированным пользователям.
- `lookup_field`: Указывает поле, используемое для поиска объектов (в данном случае, идентификатор).
- `http_method_names`: Определяет доступные методы HTTP.
- **Методы**:
- `list`: Получает список договоров.
- `create`: Создает новый договор.
- `retrieve`: Получает детали конкретного договора.
- `update`: Обновляет данные договора.
- `destroy`: Удаляет договор.
2. **PaymentViewSet**:
- `queryset`: Получает все объекты платежей (`Payment`).
- `serializer_class`: Использует `PaymentSerializer` для сериализации и десериализации данных.
- `permission_classes`: Позволяет доступ только аутентифицированным пользователям.
- `lookup_field`: Указывает поле, используемое для поиска объектов (в данном случае, идентификатор).
- `http_method_names`: Определяет доступные методы HTTP.
- **Методы**:
- `list`: Получает список платежей.
- `create`: Создает новый платеж.
- `retrieve`: Получает детали конкретного платежа.
- `update`: Обновляет данные платежа.
- `destroy`: Удаляет платеж.
3. **PaymentContractViewSet**:
- Представление для списка и создания платежей по договору.
- `queryset`: Получает все объекты платежей (`Payment`).
- `serializer_class`: Использует `PaymentSerializer` для сериализации и десериализации данных.
- `permission_classes`: Позволяет доступ только аутентифицированным пользователям.
- **Методы**:
- `list`: Получает список платежей по конкретному договору.
- `post`: Создает новый платеж для указанного договора.
4. **DeletePaymentContractView**:
- Представление для удаления платежа по договору.
- `destroy`: Удаляет указанный платеж по указанному договору.