orders.py 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. from django.db import models
  2. from SharixAdmin.models import SharixUser
  3. from dbsynce.models.client import Client
  4. from dbsynce.models.provider import Provider
  5. from dbsynce.models.service import Service
  6. from dbsynce.models.servicetype import ServiceType
  7. from tickets.models import Task
  8. class Orders(models.Model):
  9. """
  10. Orders - таблица с заказами
  11. """
  12. service = models.ForeignKey(Service, null=True, on_delete=models.DO_NOTHING, help_text="спецификатор услуги провайдера, нужен для установления цены (id_service - уникальный идентификатор шаблона услуги, необходим для установления цены и исполнителей.")
  13. service_type = models.ForeignKey(ServiceType, null=True, on_delete=models.DO_NOTHING, help_text="тип заказа по классификатору услу")
  14. state = models.CharField(max_length=150, help_text="текущий статус заказа из возможных на платформе")
  15. id_metaservice = models.BigIntegerField(null=True, help_text="уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Если при синхронизации возникает конфликт (несовместимость) с другим сервисом, предлагается или форсировать изменения везде (если возможно), либо is_global выставляется как false.")
  16. provider = models.ForeignKey(Provider, null=True, on_delete=models.DO_NOTHING, help_text="уникальный идентификатор поставщика услуги/аккаунта, который оказывает услугу. Если несколько провайдеров собираются мета-сервисом в цепочку, где на уровне связи с клиентом нельзя установить одно ответственное лицо, то указывается вспомогательный мета-провайдер сервиса, и это означает, что мета-сервис несет ответственность перед пользователем за сборку услуги воедино.")
  17. receiver = models.ForeignKey(SharixUser, null=True, related_name="user_id", on_delete=models.DO_NOTHING, help_text="пользователь/аккаунт, который принимает оказываемые услуги")
  18. client_id = models.ForeignKey(Client, null=True, on_delete=models.DO_NOTHING, help_text="клиент/аккаунт, который оплачивает все оказанные услуги")
  19. time_created = models.DateTimeField(auto_now_add=True, help_text="время создания заказа")
  20. time_placed = models.DateTimeField(help_text="время размещения заказа")
  21. time_start = models.DateTimeField(null=True, help_text="время начала оказания услуги")
  22. time_start_real = models.DateTimeField(null=True, help_text="")
  23. time_start_predicted = models.DateTimeField(null=True, help_text="")
  24. time_finish_predicted = models.DateTimeField(help_text="предварительное/расчетное время до окончания оказания услуги")
  25. time_finish_real = models.DateTimeField(null=True, help_text="фактическое время окончания (точное установленное время)")
  26. ticket = models.ForeignKey(Task, null=True, on_delete=models.DO_NOTHING)
  27. predicted_price = models.FloatField(help_text="расчетная цена с учетом тарифа поставщика услуг")
  28. real_price = models.FloatField(help_text="цена с учетом тарифа поставщика услуг по факту оказания услуги")
  29. is_global = models.BooleanField(default=False, help_text="доступна ли информация по заказу для хранения в глобальном сервисе/нужна синхронизация данных. Если is_global = false, то и is_visible для заказа и вглубь по цепочке для всех исполнителей и ресурсов - тоже false.")
  30. is_visible = models.BooleanField(default=False, help_text="доступна ли информация по заказу (время, место) для планирования иных цепочек. Если нет, то все действующие исполнители и ресурсы считаются занятыми на неопределенное время, пока не завершится заказ. Если да - то ресурсы могут использоваться для построения цепочек после планируемого времени завершения, с учетом места.")
  31. class Meta:
  32. db_table = "orders"
  33. verbose_name = "Заказ"
  34. verbose_name_plural = "Заказы"