|
@@ -8,6 +8,8 @@ from dbsynce.models.service import Service
|
|
|
from dbsynce.models.servicetype import ServiceType
|
|
|
from tickets.models import Ticket
|
|
|
|
|
|
+from dbsynce.docs.database.orders import Orders as HelpTexts
|
|
|
+
|
|
|
|
|
|
class Orders(models.Model):
|
|
|
"""
|
|
@@ -21,116 +23,117 @@ class Orders(models.Model):
|
|
|
# ID METASERVICE
|
|
|
id_metaservice = models.PositiveIntegerField(
|
|
|
null=True,
|
|
|
- help_text="уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Если при синхронизации возникает конфликт (несовместимость) с другим сервисом, предлагается или форсировать изменения везде (если возможно), либо is_global выставляется как false."
|
|
|
+ help_text=HelpTexts.id_metaservice
|
|
|
)
|
|
|
|
|
|
# DATA
|
|
|
status = models.CharField(
|
|
|
max_length=150,
|
|
|
- help_text="текущий статус заказа из возможных на платформе"
|
|
|
+ help_text=HelpTexts.status
|
|
|
)
|
|
|
title = models.CharField(
|
|
|
max_length=150,
|
|
|
- help_text="заголовок заказа",
|
|
|
+ help_text=HelpTexts.title,
|
|
|
default='Заголовок'
|
|
|
)
|
|
|
note = models.CharField(
|
|
|
max_length=150,
|
|
|
- help_text="задание к заказу",
|
|
|
+ help_text=HelpTexts.note,
|
|
|
default='Записи'
|
|
|
)
|
|
|
time_created = models.DateTimeField(
|
|
|
auto_now_add=True,
|
|
|
- help_text="время создания заказа"
|
|
|
+ help_text=HelpTexts.time_created
|
|
|
)
|
|
|
time_placed = models.DateTimeField(
|
|
|
- help_text="время размещения заказа"
|
|
|
+ help_text=HelpTexts.time_placed
|
|
|
)
|
|
|
time_start = models.DateTimeField(
|
|
|
null=True,
|
|
|
- help_text="время начала оказания услуги"
|
|
|
+ help_text=HelpTexts.time_start
|
|
|
)
|
|
|
time_start_real = models.DateTimeField(
|
|
|
null=True,
|
|
|
- help_text=""
|
|
|
+ help_text=HelpTexts.time_start_real
|
|
|
)
|
|
|
time_start_predicted = models.DateTimeField(
|
|
|
null=True,
|
|
|
- help_text=""
|
|
|
+ help_text=HelpTexts.time_start_predicted
|
|
|
)
|
|
|
time_finish_real = models.DateTimeField(
|
|
|
null=True,
|
|
|
- help_text="фактическое время окончания (точное установленное время)"
|
|
|
+ help_text=HelpTexts.time_finish_real
|
|
|
)
|
|
|
time_finish_predicted = models.DateTimeField(
|
|
|
- help_text="предварительное/расчетное время до окончания оказания услуги"
|
|
|
+ help_text=HelpTexts.time_finish_predicted
|
|
|
)
|
|
|
real_price = models.FloatField(
|
|
|
- help_text="цена с учетом тарифа поставщика услуг по факту оказания услуги"
|
|
|
+ help_text=HelpTexts.real_price
|
|
|
)
|
|
|
predicted_price = models.FloatField(
|
|
|
- help_text="расчетная цена с учетом тарифа поставщика услуг"
|
|
|
+ help_text=HelpTexts.predicted_price
|
|
|
)
|
|
|
# NOTE: Возможно в будующем можнос сделать символом
|
|
|
asap = models.BooleanField(
|
|
|
default=False,
|
|
|
- help_text="Срочный ли заказ"
|
|
|
+ help_text=HelpTexts.asap
|
|
|
)
|
|
|
|
|
|
# OTHER
|
|
|
is_global = models.CharField(
|
|
|
max_length=1,
|
|
|
default="f",
|
|
|
- help_text="доступна ли информация по заказу для хранения в глобальном сервисе/нужна синхронизация данных. Если is_global = false, то и is_visible для заказа и вглубь по цепочке для всех исполнителей и ресурсов - тоже false."
|
|
|
+ help_text=HelpTexts.is_global
|
|
|
)
|
|
|
is_visible = models.CharField(
|
|
|
max_length=1,
|
|
|
default="f",
|
|
|
- help_text="доступна ли информация по заказу (время, место) для планирования иных цепочек. Если нет, то все действующие исполнители и ресурсы считаются занятыми на неопределенное время, пока не завершится заказ. Если да - то ресурсы могут использоваться для построения цепочек после планируемого времени завершения, с учетом места."
|
|
|
+ help_text=HelpTexts.is_visible
|
|
|
)
|
|
|
|
|
|
# FK
|
|
|
ticket = models.ForeignKey(
|
|
|
Ticket,
|
|
|
null=True,
|
|
|
- on_delete=models.DO_NOTHING
|
|
|
+ on_delete=models.DO_NOTHING,
|
|
|
+ help_text=HelpTexts.ticket
|
|
|
)
|
|
|
service = models.ForeignKey(
|
|
|
Service,
|
|
|
null=True,
|
|
|
on_delete=models.DO_NOTHING,
|
|
|
- help_text="спецификатор услуги провайдера, нужен для установления цены (id_service - уникальный идентификатор шаблона услуги, необходим для установления цены и исполнителей."
|
|
|
+ help_text=HelpTexts.service
|
|
|
)
|
|
|
service_type = models.ForeignKey(
|
|
|
ServiceType,
|
|
|
null=True,
|
|
|
on_delete=models.DO_NOTHING,
|
|
|
- help_text="тип заказа по классификатору услу"
|
|
|
+ help_text=HelpTexts.service_type
|
|
|
)
|
|
|
client = models.ForeignKey(
|
|
|
Client,
|
|
|
null=True,
|
|
|
on_delete=models.DO_NOTHING,
|
|
|
- help_text="клиент/аккаунт, который оплачивает все оказанные услуги"
|
|
|
+ help_text=HelpTexts.client
|
|
|
)
|
|
|
provider = models.ForeignKey(
|
|
|
Provider,
|
|
|
null=True,
|
|
|
on_delete=models.DO_NOTHING,
|
|
|
- help_text="уникальный идентификатор поставщика услуги/аккаунта, который оказывает услугу. Если несколько провайдеров собираются мета-сервисом в цепочку, где на уровне связи с клиентом нельзя установить одно ответственное лицо, то указывается вспомогательный мета-провайдер сервиса, и это означает, что мета-сервис несет ответственность перед пользователем за сборку услуги воедино."
|
|
|
+ help_text=HelpTexts.provider
|
|
|
)
|
|
|
receiver = models.ForeignKey(
|
|
|
get_user_model(),
|
|
|
null=True,
|
|
|
related_name="user_id",
|
|
|
on_delete=models.DO_NOTHING,
|
|
|
- help_text="пользователь/аккаунт, который принимает оказываемые услуги"
|
|
|
+ help_text=HelpTexts.receiver
|
|
|
)
|
|
|
company = models.ForeignKey(
|
|
|
Company,
|
|
|
on_delete=models.DO_NOTHING,
|
|
|
null=True,
|
|
|
- help_text="Идентификатор компании, к которой относится документ, если таковая есть (может не быть)"
|
|
|
+ help_text=HelpTexts.company
|
|
|
)
|
|
|
|
|
|
class Meta:
|