2025-05-13 13:40:18 +00:00
|
|
|
|
CREATE TABLE IF NOT EXISTS BitrixTokens (
|
|
|
|
|
AccountID VARCHAR(30) PRIMARY KEY, -- связь с users AccountID неявная посредством join
|
|
|
|
|
RefreshToken TEXT NOT NULL ,
|
|
|
|
|
AccessToken TEXT NOT NULL ,
|
|
|
|
|
AuthCode TEXT NOT NULL , -- код авторизации который получаем при вебхук
|
|
|
|
|
Expiration TIMESTAMP NOT NULL, -- время истечения токенов
|
|
|
|
|
CreatedAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
DO $$
|
|
|
|
|
BEGIN
|
|
|
|
|
IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'FieldsType') THEN
|
|
|
|
|
CREATE TYPE FieldsType AS ENUM (
|
|
|
|
|
'CRM_LEAD',
|
|
|
|
|
'CRM_COMPANY',
|
|
|
|
|
'CRM_CONTACT',
|
|
|
|
|
'CRM_DEAL',
|
|
|
|
|
'CRM_INVOICE',
|
|
|
|
|
'CRM_SMART_INVOICE',
|
|
|
|
|
'CRM_QUOTE',
|
|
|
|
|
'CRM_REQUISITE'
|
|
|
|
|
);
|
|
|
|
|
END IF;
|
|
|
|
|
END $$;
|
|
|
|
|
|
|
|
|
|
DO $$
|
|
|
|
|
BEGIN
|
|
|
|
|
IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'CustomFieldsType') THEN
|
|
|
|
|
CREATE TYPE CustomFieldsType AS ENUM (
|
|
|
|
|
'string',
|
|
|
|
|
'integer',
|
|
|
|
|
'double',
|
|
|
|
|
'boolean',
|
|
|
|
|
'datetime',
|
|
|
|
|
'enumeration',
|
|
|
|
|
'iblock_section',
|
|
|
|
|
'iblock_element',
|
|
|
|
|
'employee',
|
|
|
|
|
'crm_status',
|
|
|
|
|
'crm',
|
|
|
|
|
'address',
|
|
|
|
|
'money',
|
|
|
|
|
'url',
|
|
|
|
|
'file',
|
|
|
|
|
'crm_pena_tag'
|
|
|
|
|
);
|
|
|
|
|
END IF;
|
|
|
|
|
END $$;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS BitrixFields (
|
|
|
|
|
ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY,
|
|
|
|
|
BitrixID VARCHAR(255) NOT NULL, -- Айдишник field в битриксе
|
|
|
|
|
AccountID VARCHAR(255) NOT NULL,-- ID портала битрикса
|
|
|
|
|
EntityID FieldsType NOT NULL,-- тип поля
|
|
|
|
|
FieldName VARCHAR(255) NOT NULL,-- имя поля
|
|
|
|
|
EditFromLabel VARCHAR(255) NOT NULL,-- заголовок вопроса
|
|
|
|
|
FieldType CustomFieldsType NOT NULL, -- тип поля
|
|
|
|
|
Deleted BOOLEAN NOT NULL DEFAULT FALSE,
|
|
|
|
|
CreatedAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS BitrixAccountUsers (
|
|
|
|
|
ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY,
|
|
|
|
|
AccountID VARCHAR(255) NOT NULL, -- ID портала битрикса
|
|
|
|
|
BitrixIDUserID VARCHAR(255) NOT NULL, -- ID пользователя в битриксе
|
|
|
|
|
Name VARCHAR(255) NOT NULL default '', -- Имя
|
|
|
|
|
LastName VARCHAR(255) NOT NULL default '',-- Фамилия
|
|
|
|
|
SecondName VARCHAR(255) NOT NULL default '', -- Отчество
|
|
|
|
|
Title VARCHAR(255) NOT NULL default '',
|
|
|
|
|
Email VARCHAR(255) NOT NULL default '', -- Почта
|
|
|
|
|
UFDepartment INT[], -- Массив департаментов
|
|
|
|
|
WorkPosition VARCHAR(255) NOT NULL default '', -- Должность
|
|
|
|
|
Deleted BOOLEAN NOT NULL DEFAULT FALSE,
|
|
|
|
|
CreatedAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS BitrixAccounts (
|
|
|
|
|
ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY,
|
|
|
|
|
AccountID VARCHAR(30) NOT NULL, -- ID аккаунта у нас
|
|
|
|
|
BitrixID VARCHAR(255) NOT NULL, -- ID портала битрикса
|
|
|
|
|
Deleted BOOLEAN NOT NULL DEFAULT FALSE,
|
|
|
|
|
CreatedAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
Subdomain VARCHAR(50) NOT NULL -- поддомен
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS PipelineBitrix (
|
|
|
|
|
ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY,
|
|
|
|
|
BitrixID INT NOT NULL, -- Айдишник воронки в битриксе
|
|
|
|
|
AccountID VARCHAR(255) NOT NULL, -- ID портала битрикса
|
|
|
|
|
Name VARCHAR(255) NOT NULL, -- Название воронки
|
|
|
|
|
EntityTypeId INT NOT NULL, -- Тип по номерам
|
|
|
|
|
Deleted BOOLEAN NOT NULL DEFAULT FALSE,
|
|
|
|
|
CreatedAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
CONSTRAINT validEntityType CHECK (EntityTypeId IN (1, 2, 3, 4, 5, 7, 8, 31))
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS StepBitrix (
|
|
|
|
|
ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY,
|
|
|
|
|
AccountID VARCHAR(255) NOT NULL, -- ID портала битрикса
|
|
|
|
|
BitrixID VARCHAR(255) NOT NULL, -- Айдишник состояния в битриксе
|
|
|
|
|
EntityID VARCHAR(255) NOT NULL, -- Тип сущности
|
|
|
|
|
StatusID VARCHAR(255) NOT NULL, -- Текстовый формат ID статуса
|
|
|
|
|
Name VARCHAR(255) NOT NULL default '', -- Название
|
|
|
|
|
NameInit VARCHAR(255) NOT NULL default '', -- возможно это изначальное название
|
|
|
|
|
Color VARCHAR(50) NOT NULL default '', -- Цвет
|
|
|
|
|
PipelineID INT NOT NULL, -- ID воронки
|
|
|
|
|
Deleted BOOLEAN NOT NULL DEFAULT FALSE,
|
|
|
|
|
CreatedAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS BitrixRule (
|
|
|
|
|
ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY,
|
|
|
|
|
AccountID VARCHAR(255) NOT NULL, -- ID портала битрикса
|
|
|
|
|
QuizID INT NOT NULL, -- ID квиза на которое вешается правило
|
|
|
|
|
PerformerID VARCHAR(255) NOT NULL, -- ID пользователя в битриксе который ответсвенный
|
|
|
|
|
PipelineID INT NOT NULL, -- ID воронки
|
|
|
|
|
TypeID VARCHAR(255) NOT NULL, -- шаг сделки только с "ENTITY_ID":"DEAL_TYPE","STATUS_ID":"SALE"
|
|
|
|
|
StageID VARCHAR(255) NOT NULL, -- стадия сделки, шаг "ENTITY_ID":"DEAL_STAGE","STATUS_ID":"NEW"
|
|
|
|
|
SourceID VARCHAR(255) NOT NULL, -- тип источника, шаг "ENTITY_ID":"SOURCE","STATUS_ID":"CALL"
|
|
|
|
|
StatusID VARCHAR(255) NOT NULL, -- тип источника, шаг "ENTITY_ID":"STATUS","STATUS_ID":"IN_PROCESS"
|
|
|
|
|
FieldsRule JSONB NOT NULL DEFAULT '{}', -- вложенная структура
|
|
|
|
|
TagsToAdd JSONB NOT NULL DEFAULT '{}', -- структура тегов которые надо дбавлять
|
|
|
|
|
Deleted BOOLEAN NOT NULL DEFAULT FALSE,
|
|
|
|
|
CreatedAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
|
|
|
|
LeadFlag BOOLEAN NOT NULL DEFAULT FALSE -- если true то делаем лид а не сделку
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS bitrixCRMStatuses (
|
|
|
|
|
ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY,
|
|
|
|
|
AccountID VARCHAR(255) NOT NULL, -- ID портала битрикса
|
|
|
|
|
DealID INT NOT NULL, -- id сделки или лида в которую добавлялось
|
|
|
|
|
AnswerID BIGINT NOT NULL REFERENCES answer(id), -- id true result который вызвал действие
|
|
|
|
|
Status TEXT NOT NULL DEFAULT '', -- запись о ошибке, либо успехе
|
|
|
|
|
CreatedAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS bitrixContact (
|
|
|
|
|
ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY,
|
|
|
|
|
AccountID VARCHAR(255) NOT NULL, -- ID "компании" в амо
|
|
|
|
|
BitrixID INT NOT NULL, -- ID контакта в амо
|
|
|
|
|
Field text NOT NULL DEFAULT '' -- значение чего то email? phone? etc
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
CREATE UNIQUE INDEX idx_unique_pipeline_bitrix ON PipelineBitrix (BitrixID, AccountID) WHERE Deleted = false;
|
|
|
|
|
CREATE UNIQUE INDEX idx_unique_step_bitrix ON StepBitrix (BitrixID, AccountID) WHERE Deleted = false;
|
|
|
|
|
CREATE UNIQUE INDEX idx_unique_field_bitrix ON BitrixFields (BitrixID, AccountID, EntityID);
|
|
|
|
|
ALTER TABLE answer ADD COLUMN version integer NOT NULL default 0;
|