|
@@ -4,6 +4,27 @@ from SharixAdmin.models import SharixUser
|
|
|
# Create your models here.
|
|
|
|
|
|
|
|
|
+class Company(models.Model):
|
|
|
+ legal_name = models.CharField(max_length=150, help_text="настоящее имя юридического лица")
|
|
|
+ repr_id = models.ForeignKey(SharixUser, on_delete=models.DO_NOTHING, help_text="уникальный идентификатор представителя компании. Это обязательно пользователь-провайдер определенного типа. То есть нельзя назначить ответственного, который не может быть ответственным.")
|
|
|
+ inn = models.CharField(max_length=10, unique=True, help_text="ИНН компании")
|
|
|
+ kpp = models.CharField(max_length=9, help_text="КПП компании")
|
|
|
+ ogrn = models.CharField(max_length=13, help_text="ОГРН компании")
|
|
|
+ bank_name = models.CharField(max_length=150, help_text="Название банка с расчетным счетом")
|
|
|
+ bik = models.CharField(max_length=9, help_text="БИК компании")
|
|
|
+ ks = models.CharField(max_length=50, help_text="Корреспондентский счёт (счёт, открываемый банковской организацией в подразделении самого банка)")
|
|
|
+ rs = models.CharField(max_length=50, help_text="Расчетный счет")
|
|
|
+ address = models.CharField(max_length=150, help_text="Юридический адрес")
|
|
|
+ requirements = models.CharField(max_length=150, help_text="код необходимого для того, чтобы ресурс мог стать активным")
|
|
|
+ status = models.CharField(max_length=150, help_text="статус обработки заявки в системе заявок")
|
|
|
+ ticket_status = models.ForeignKey(Task, on_delete=models.DO_NOTHING, help_text="id последнего актуального тикета, касающийся статуса. Если он меняет статус на закрытый - вызывается проверка, которая смотрит, нет ли другого открытого по пользователю.")
|
|
|
+ id_metaservice = models.BigIntegerField(null=True, help_text="уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Если при синхронизации возникает конфликт (несовместимость) с другим сервисом, предлагается или форсировать изменения везде (если возможно), либо is_global выставляется как false.")
|
|
|
+ is_global = models.CharField(max_length=1, help_text="доступны ли документы для хранения в глобальном сервисе/нужна синхронизация")
|
|
|
+ is_visible = models.CharField(max_length=1, help_text="доступна ли информация о наличии документов для планирования в цепочке с другими услугами в глобальном сервисе")
|
|
|
+
|
|
|
+ class Meta:
|
|
|
+ db_table = "company"
|
|
|
+
|
|
|
class Permissions(models.Model):
|
|
|
"""
|
|
|
Разрешения - (проверки/экзамены).
|
|
@@ -53,7 +74,7 @@ class Provider(models.Model):
|
|
|
"""
|
|
|
|
|
|
type = models.CharField(max_length=150, help_text="тип поставщика (партнер/ответственное лицо/поставщик услуг). Смысл такой - провайдер это статус пользователя, который, в зависимости от применения, может нести разный смысл и подразумевает под собой какой-то тип действия. Обычные исполнители - это провайдеры услуг (код 3). Ответственные за какое-то имущество, которые сдают его в аренду - это тоже провайдеры (код 2). Ответственные за набор услуг перед метасервисом (фактически - назначенные админы) - это провайдеры-партнеры (код 1)")
|
|
|
- #company_id = models.ForeignKey("Company", on_delete=models.DO_NOTHING, null=True, help_text="уникальный идентификатор компании, от лица которой выступает провайдер. Смысл такой - ответственны могут быть только одушевленные лица, компании - не одушевленные. Все услуги предоставляются через компании-партнеры, самозанятые или ИП являются единицами таких компаний.")
|
|
|
+ company_id = models.ForeignKey(Company, on_delete=models.DO_NOTHING, null=True, help_text="уникальный идентификатор компании, от лица которой выступает провайдер. Смысл такой - ответственны могут быть только одушевленные лица, компании - не одушевленные. Все услуги предоставляются через компании-партнеры, самозанятые или ИП являются единицами таких компаний.")
|
|
|
user_id = models.ForeignKey(SharixUser, on_delete=models.DO_NOTHING, null=True, help_text="уникальный идентификатор конкретного пользователя системы (meta-user), который будет оказывать услугу. Один пользователь может быть провайдером нескольких услуг. Статус провайдера означает, что с данным пользователем может быть установлена связь, как с исполнителем.")
|
|
|
id_metaservice = models.BigIntegerField(null=True, help_text="уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Один и тот же провайдер может быть для нескольких мета-сервисов, соответственно если происходят изменения в одном, то либо форсируется изменение во всех (если возможно), либо снимается is_global. Соответственно при изменении is_global в true должно происходить согласование с остальными копиями в других сервисах. Нужен в том числе для того, чтобы выяснять, в каких еще сервисах есть этот провайдер.")
|
|
|
requirements = models.CharField(max_length=300, help_text="требования для того, чтобы можно было предоставлять услуги любые в этом метасервисе в целом (самые строгие)")
|
|
@@ -67,6 +88,50 @@ class Provider(models.Model):
|
|
|
class Meta:
|
|
|
db_table = "provider"
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+class Resource(models.Model):
|
|
|
+ """
|
|
|
+ Resource/Список ресурсов – автомобили/дома/объекты сервиса
|
|
|
+ """
|
|
|
+ type_id = models.CharField(max_length=10, help_text="идентификатор ресурса")
|
|
|
+ user_id = models.ForeignKey(SharixUser, on_delete=models.DO_NOTHING, help_text="уникальный идентификатор ответственного")
|
|
|
+ requirements = models.CharField(max_length=150, help_text="код необходимого для того, чтобы ресурс мог стать активным")
|
|
|
+ status = models.CharField(max_length=150, help_text="статус обработки заявки в системе заявок")
|
|
|
+ ticket_status = models.ForeignKey(Task, on_delete=models.DO_NOTHING, help_text="id последнего актуального тикета, касающийся статуса. Если он меняет статус на закрытый - вызывается проверка, которая смотрит, нет ли другого открытого по пользователю.")
|
|
|
+ id_metaservice = models.BigIntegerField(null=True, help_text="уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Если при синхронизации возникает конфликт (несовместимость) с другим сервисом, предлагается или форсировать изменения везде (если возможно), либо is_global выставляется как false.")
|
|
|
+ is_global = models.CharField(max_length=1, help_text="доступны ли документы для хранения в глобальном сервисе/нужна синхронизация")
|
|
|
+ is_visible = models.CharField(max_length=1, help_text="доступна ли информация о наличии документов для планирования в цепочке с другими услугами в глобальном сервисе")
|
|
|
+
|
|
|
+ class Meta:
|
|
|
+ db_table = "resource"
|
|
|
+
|
|
|
+class Service(models.Model):
|
|
|
+ """
|
|
|
+ service - спецификация услуги каждого конкретного поставщика
|
|
|
+ (например, в рамках сервиса многие могут предоставлять услуги перевозки,
|
|
|
+ но конкретный шаблон с конкретным тарифом относится к отдельному перевозчику)
|
|
|
+ """
|
|
|
+
|
|
|
+ servicetype_id = models.ForeignKey(ServiceType, on_delete=models.DO_NOTHING, help_text="тип оказываемой услуги по классификатору услуг сервиса")
|
|
|
+ id_provider = models.ForeignKey(Provider,on_delete=models.DO_NOTHING, help_text="идентификатор поставщика услуг")
|
|
|
+ resource_id = models.ForeignKey(Resource, on_delete=models.DO_NOTHING, null=True ,help_text="ответственный за ресурс(не всегда)")
|
|
|
+ requirements = models.CharField(max_length=150, help_text="код необходимого для того, чтобы ресурс мог стать активным")
|
|
|
+ id_metaservice = models.BigIntegerField(null=True, help_text="уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Если при синхронизации возникает конфликт (несовместимость) с другим сервисом, предлагается или форсировать изменения везде (если возможно), либо is_global выставляется как false.")
|
|
|
+ price_alg = models.CharField(max_length=100, help_text="шаблон алгоритма расчета цены для оказываемой услуги")
|
|
|
+ price_km = models.DecimalField(max_digits=9, decimal_places=2, help_text="значение параметра стоимости 1км данного поставщика для данного шаблона услуги")
|
|
|
+ price_min = models.DecimalField(max_digits=9, decimal_places=2, help_text="значение параметра стоимости 1мин данного поставщика для данного шаблона услуги")
|
|
|
+ price_amount = models.DecimalField(max_digits=9, decimal_places=2, help_text="значение параметра стоимости 1 услуги данного поставщика для данного шаблона услуги")
|
|
|
+ service_status = models.CharField(max_length=150, help_text="статус спецификации типа услуги")
|
|
|
+ status = models.CharField(max_length=150, help_text="статус обработки заявки в системе заявок")
|
|
|
+ ticket_status = models.ForeignKey(Task, on_delete=models.DO_NOTHING, help_text="id последнего актуального тикета, касающийся статуса. Если он меняет статус на закрытый - вызывается проверка, которая смотрит, нет ли другого открытого по пользователю.")
|
|
|
+ is_global = models.CharField(max_length=1, help_text="доступны ли документы для хранения в глобальном сервисе/нужна синхронизация")
|
|
|
+ is_visible = models.CharField(max_length=1, help_text="доступна ли информация о наличии документов для планирования в цепочке с другими услугами в глобальном сервисе")
|
|
|
+
|
|
|
+ class Meta:
|
|
|
+ db_table = "service"
|
|
|
+
|
|
|
+
|
|
|
class Documents(models.Model):
|
|
|
"""
|
|
|
Documents - это одна таблица со всеми документами.
|
|
@@ -85,14 +150,16 @@ class Documents(models.Model):
|
|
|
datalink = models.TextField(blank=True, help_text="адрес фактического размещения на физическом носителе, если информация настолько велика, что не может храниться внутри БД.")
|
|
|
doc_type = models.CharField(max_length=150, help_text="тип документа (паспорт/паспорт 1 страница и т д) в соответствии с классификатором типов документов (см описание в Requirements)")
|
|
|
user_id = models.ForeignKey(SharixUser, related_name="user_id_doc", on_delete=models.DO_NOTHING, help_text="уникальный идентификатор пользователя (конкретного клиентского аккаунта) являющегося владельцем данного документа")
|
|
|
- #company_id = models.ForeignKey("Company", on_delete=models.DO_NOTHING, null=True, help_text="идентификатор компании, к которой относится документ, если таковая есть (может не быть)")
|
|
|
+ company_id = models.ForeignKey(Company, on_delete=models.DO_NOTHING, null=True, help_text="идентификатор компании, к которой относится документ, если таковая есть (может не быть)")
|
|
|
is_global = models.CharField(max_length=1, help_text="доступны ли документы для хранения в глобальном сервисе/нужна синхронизация")
|
|
|
is_visible = models.CharField(max_length=1, help_text="доступна ли информация о наличии документов для планирования в цепочке с другими услугами в глобальном сервисе")
|
|
|
checked_by = models.ForeignKey(SharixUser, related_name="checked_by_doc", on_delete=models.DO_NOTHING, null=True, help_text="userid проверившего")
|
|
|
|
|
|
+
|
|
|
class Meta:
|
|
|
db_table = "documents"
|
|
|
|
|
|
+
|
|
|
class Client(models.Model):
|
|
|
"""
|
|
|
Client - это таблица с клиентами
|
|
@@ -115,7 +182,7 @@ class Orders(models.Model):
|
|
|
Orders - таблица с заказами
|
|
|
"""
|
|
|
|
|
|
- #service = models.ForeignKey("Service", on_delete=models.DO_NOTHING)
|
|
|
+ service = models.ForeignKey(Service, on_delete=models.DO_NOTHING)
|
|
|
service_type = models.ForeignKey(ServiceType, on_delete=models.DO_NOTHING)
|
|
|
state = models.CharField(max_length=150)
|
|
|
id_metaservice = models.BigIntegerField(null=True, help_text="уникальный идентификатор мета-сервиса, необходимый для синхронизации данных. Если при синхронизации возникает конфликт (несовместимость) с другим сервисом, предлагается или форсировать изменения везде (если возможно), либо is_global выставляется как false.")
|
|
@@ -127,7 +194,6 @@ class Orders(models.Model):
|
|
|
time_start = models.DateTimeField(help_text="")
|
|
|
time_finish_predicted = models.DateTimeField(help_text="")
|
|
|
time_finish_real = models.DateTimeField(null=True, help_text="")
|
|
|
- # SHOULDN'T IT BE A FOREIGN KEY???
|
|
|
ticket = models.IntegerField()
|
|
|
predicted_price = models.FloatField()
|
|
|
real_price = models.FloatField()
|
|
@@ -156,4 +222,5 @@ class Relationship(models.Model):
|
|
|
is_visible = models.CharField(max_length=1, help_text="")
|
|
|
|
|
|
class Meta:
|
|
|
- db_table = "relationship"
|
|
|
+ db_table = "relationship"
|
|
|
+
|