Files
we_pro_dock/BACKEND/CONTRACTS.md
2024-05-14 11:39:33 +03:00

111 lines
8.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## Модели
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`: Удаляет указанный платеж по указанному договору.