123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- from django.db import models
- from django.contrib.auth import get_user_model
- from dbsynce.models.client import Client
- from dbsynce.models.provider import Provider
- from dbsynce.models.service import Service
- from dbsynce.models.servicetype import ServiceType
- from tickets.models import Ticket
- class Orders(models.Model):
- """
- Orders - таблица с заказами
- """
- service = models.ForeignKey(
- Service,
- null=True,
- on_delete=models.DO_NOTHING,
- help_text="спецификатор услуги провайдера, нужен для установления цены (id_service - уникальный идентификатор шаблона услуги, необходим для установления цены и исполнителей."
- )
- service_type = models.ForeignKey(
- ServiceType,
- null=True,
- on_delete=models.DO_NOTHING,
- help_text="тип заказа по классификатору услу"
- )
- status = models.CharField(
- max_length=150,
- help_text="текущий статус заказа из возможных на платформе"
- )
- id_metaservice = models.BigIntegerField(
- null=True,
- help_text="уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Если при синхронизации возникает конфликт (несовместимость) с другим сервисом, предлагается или форсировать изменения везде (если возможно), либо is_global выставляется как false."
- )
- title = models.CharField(
- max_length=150,
- help_text="заголовок заказа",
- default = 'Заголовок'
- )
- note = models.CharField(
- max_length=150,
- help_text="задание к заказу",
- default = 'Записи'
- )
- provider = models.ForeignKey(
- Provider,
- null=True,
- on_delete=models.DO_NOTHING,
- help_text="уникальный идентификатор поставщика услуги/аккаунта, который оказывает услугу. Если несколько провайдеров собираются мета-сервисом в цепочку, где на уровне связи с клиентом нельзя установить одно ответственное лицо, то указывается вспомогательный мета-провайдер сервиса, и это означает, что мета-сервис несет ответственность перед пользователем за сборку услуги воедино."
- )
- receiver = models.ForeignKey(
- get_user_model(),
- null=True,
- related_name="user_id",
- on_delete=models.DO_NOTHING,
- help_text="пользователь/аккаунт, который принимает оказываемые услуги"
- )
- client_id = models.ForeignKey(
- Client,
- null=True,
- on_delete=models.DO_NOTHING,
- help_text="клиент/аккаунт, который оплачивает все оказанные услуги"
- )
- time_created = models.DateTimeField(
- auto_now_add=True,
- help_text="время создания заказа"
- )
- time_placed = models.DateTimeField(
- help_text="время размещения заказа"
- )
- time_start = models.DateTimeField(
- null=True,
- help_text="время начала оказания услуги"
- )
- time_start_real = models.DateTimeField(
- null=True,
- help_text=""
- )
- time_start_predicted = models.DateTimeField(
- null=True,
- help_text=""
- )
- time_finish_predicted = models.DateTimeField(
- help_text="предварительное/расчетное время до окончания оказания услуги"
- )
- time_finish_real = models.DateTimeField(
- null=True,
- help_text="фактическое время окончания (точное установленное время)"
- )
- ticket = models.ForeignKey(
- Ticket,
- null=True,
- on_delete=models.DO_NOTHING
- )
- predicted_price = models.FloatField(
- help_text="расчетная цена с учетом тарифа поставщика услуг"
- )
- real_price = models.FloatField(
- help_text="цена с учетом тарифа поставщика услуг по факту оказания услуги"
- )
- asap = models.BooleanField(
- default=False,
- help_text="Срочный ли заказ."
- )
- is_global = models.BooleanField(
- default=False,
- help_text="доступна ли информация по заказу для хранения в глобальном сервисе/нужна синхронизация данных. Если is_global = false, то и is_visible для заказа и вглубь по цепочке для всех исполнителей и ресурсов - тоже false."
- )
- is_visible = models.BooleanField(
- default=False,
- help_text="доступна ли информация по заказу (время, место) для планирования иных цепочек. Если нет, то все действующие исполнители и ресурсы считаются занятыми на неопределенное время, пока не завершится заказ. Если да - то ресурсы могут использоваться для построения цепочек после планируемого времени завершения, с учетом места."
- )
- class Meta:
- db_table = "orders"
- verbose_name = "Заказ"
- verbose_name_plural = "Заказы"
|