1
0

orders.py 5.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. from django.db import models
  2. from django.contrib.auth import get_user_model
  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 Ticket
  8. class Orders(models.Model):
  9. """
  10. Orders - таблица с заказами
  11. """
  12. # DATA
  13. status = models.CharField(max_length=150, help_text="текущий статус заказа из возможных на платформе")
  14. title = models.CharField(max_length=150, help_text="заголовок заказа",default = 'Заголовок')
  15. note = models.CharField(max_length=150, help_text="задание к заказу",default = 'Записи')
  16. time_created = models.DateTimeField(auto_now_add=True, help_text="время создания заказа")
  17. time_placed = models.DateTimeField(help_text="время размещения заказа")
  18. time_start = models.DateTimeField(null=True, help_text="время начала оказания услуги")
  19. time_start_real = models.DateTimeField(null=True, help_text="")
  20. time_start_predicted = models.DateTimeField(null=True, help_text="")
  21. time_finish_real = models.DateTimeField(null=True, help_text="фактическое время окончания (точное установленное время)")
  22. time_finish_predicted = models.DateTimeField(help_text="предварительное/расчетное время до окончания оказания услуги")
  23. predicted_price = models.FloatField(help_text="расчетная цена с учетом тарифа поставщика услуг")
  24. real_price = models.FloatField(help_text="цена с учетом тарифа поставщика услуг по факту оказания услуги")
  25. asap = models.BooleanField(default=False,help_text="Срочный ли заказ.")
  26. # OTHER
  27. is_global = models.BooleanField(default=False, help_text="доступна ли информация по заказу для хранения в глобальном сервисе/нужна синхронизация данных. Если is_global = false, то и is_visible для заказа и вглубь по цепочке для всех исполнителей и ресурсов - тоже false.")
  28. is_visible = models.BooleanField(default=False, help_text="доступна ли информация по заказу (время, место) для планирования иных цепочек. Если нет, то все действующие исполнители и ресурсы считаются занятыми на неопределенное время, пока не завершится заказ. Если да - то ресурсы могут использоваться для построения цепочек после планируемого времени завершения, с учетом места.")
  29. # FK
  30. id_metaservice = models.BigIntegerField(null=True, help_text="уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Если при синхронизации возникает конфликт (несовместимость) с другим сервисом, предлагается или форсировать изменения везде (если возможно), либо is_global выставляется как false.")
  31. service = models.ForeignKey(Service, null=True, on_delete=models.DO_NOTHING, help_text="спецификатор услуги провайдера, нужен для установления цены (id_service - уникальный идентификатор шаблона услуги, необходим для установления цены и исполнителей.")
  32. service_type = models.ForeignKey(ServiceType, null=True, on_delete=models.DO_NOTHING, help_text="тип заказа по классификатору услу")
  33. provider = models.ForeignKey(Provider, null=True, on_delete=models.DO_NOTHING, help_text="уникальный идентификатор поставщика услуги/аккаунта, который оказывает услугу. Если несколько провайдеров собираются мета-сервисом в цепочку, где на уровне связи с клиентом нельзя установить одно ответственное лицо, то указывается вспомогательный мета-провайдер сервиса, и это означает, что мета-сервис несет ответственность перед пользователем за сборку услуги воедино.")
  34. receiver = models.ForeignKey(get_user_model(), null=True, related_name="user_id", on_delete=models.DO_NOTHING, help_text="пользователь/аккаунт, который принимает оказываемые услуги")
  35. client_id = models.ForeignKey(Client, null=True, on_delete=models.DO_NOTHING, help_text="клиент/аккаунт, который оплачивает все оказанные услуги")
  36. ticket = models.ForeignKey(Ticket, null=True, on_delete=models.DO_NOTHING)
  37. class Meta:
  38. db_table = "orders"
  39. verbose_name = "Заказ"
  40. verbose_name_plural = "Заказы"