Implement sales tenant pipeline events
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
CREATE TABLE IF NOT EXISTS tenants (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
tenant_id TEXT NOT NULL UNIQUE,
|
||||
name TEXT NOT NULL,
|
||||
business_type TEXT,
|
||||
industry TEXT,
|
||||
country TEXT,
|
||||
city TEXT,
|
||||
timezone TEXT NOT NULL DEFAULT 'Asia/Almaty',
|
||||
language_preferences_json TEXT NOT NULL DEFAULT '["ru"]',
|
||||
default_currency TEXT NOT NULL DEFAULT 'KZT',
|
||||
subscription_plan TEXT,
|
||||
is_active BOOLEAN NOT NULL DEFAULT TRUE,
|
||||
created_at TEXT NOT NULL,
|
||||
updated_at TEXT NOT NULL
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS ix_tenants_tenant_id ON tenants(tenant_id);
|
||||
CREATE INDEX IF NOT EXISTS ix_tenants_is_active ON tenants(is_active);
|
||||
CREATE INDEX IF NOT EXISTS ix_tenants_country ON tenants(country);
|
||||
CREATE INDEX IF NOT EXISTS ix_tenants_city ON tenants(city);
|
||||
CREATE INDEX IF NOT EXISTS ix_tenants_default_currency ON tenants(default_currency);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS tenant_sales_settings (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
tenant_id TEXT NOT NULL UNIQUE,
|
||||
default_pipeline_id TEXT,
|
||||
default_language TEXT NOT NULL DEFAULT 'ru',
|
||||
default_currency TEXT NOT NULL DEFAULT 'KZT',
|
||||
enabled_text_channels_json TEXT NOT NULL DEFAULT '[]',
|
||||
enabled_voice_channels_json TEXT NOT NULL DEFAULT '[]',
|
||||
payment_provider_settings_json TEXT NOT NULL DEFAULT '{}',
|
||||
document_settings_json TEXT NOT NULL DEFAULT '{}',
|
||||
created_at TEXT NOT NULL,
|
||||
updated_at TEXT NOT NULL
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS ix_tenant_sales_settings_tenant_id ON tenant_sales_settings(tenant_id);
|
||||
CREATE INDEX IF NOT EXISTS ix_tenant_sales_settings_default_pipeline_id ON tenant_sales_settings(default_pipeline_id);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS tenant_integrations (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
integration_id TEXT NOT NULL UNIQUE,
|
||||
tenant_id TEXT NOT NULL,
|
||||
provider_type TEXT NOT NULL,
|
||||
provider_name TEXT NOT NULL,
|
||||
provider_account_id TEXT,
|
||||
external_identifier TEXT,
|
||||
settings_json TEXT NOT NULL DEFAULT '{}',
|
||||
is_active BOOLEAN NOT NULL DEFAULT TRUE,
|
||||
created_at TEXT NOT NULL,
|
||||
updated_at TEXT NOT NULL
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS ix_tenant_integrations_integration_id ON tenant_integrations(integration_id);
|
||||
CREATE INDEX IF NOT EXISTS ix_tenant_integrations_tenant_id ON tenant_integrations(tenant_id);
|
||||
CREATE INDEX IF NOT EXISTS ix_tenant_integrations_provider_type ON tenant_integrations(provider_type);
|
||||
CREATE INDEX IF NOT EXISTS ix_tenant_integrations_provider_name ON tenant_integrations(provider_name);
|
||||
CREATE INDEX IF NOT EXISTS ix_tenant_integrations_provider_account_id ON tenant_integrations(provider_account_id);
|
||||
CREATE INDEX IF NOT EXISTS ix_tenant_integrations_external_identifier ON tenant_integrations(external_identifier);
|
||||
CREATE INDEX IF NOT EXISTS ix_tenant_integrations_is_active ON tenant_integrations(is_active);
|
||||
CREATE INDEX IF NOT EXISTS idx_tenant_integrations_provider_account ON tenant_integrations(provider_type, provider_name, provider_account_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_tenant_integrations_external_identifier ON tenant_integrations(provider_type, provider_name, external_identifier);
|
||||
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS idx_sales_payments_tenant_external_payment_unique
|
||||
ON sales_payments(tenant_id, payment_provider, external_payment_id)
|
||||
WHERE external_payment_id IS NOT NULL;
|
||||
@@ -0,0 +1,67 @@
|
||||
CREATE TABLE IF NOT EXISTS tenants (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
tenant_id TEXT NOT NULL UNIQUE,
|
||||
name TEXT NOT NULL,
|
||||
business_type TEXT,
|
||||
industry TEXT,
|
||||
country TEXT,
|
||||
city TEXT,
|
||||
timezone TEXT NOT NULL DEFAULT 'Asia/Almaty',
|
||||
language_preferences_json TEXT NOT NULL DEFAULT '["ru"]',
|
||||
default_currency TEXT NOT NULL DEFAULT 'KZT',
|
||||
subscription_plan TEXT,
|
||||
is_active BOOLEAN NOT NULL DEFAULT 1,
|
||||
created_at TEXT NOT NULL,
|
||||
updated_at TEXT NOT NULL
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS ix_tenants_tenant_id ON tenants(tenant_id);
|
||||
CREATE INDEX IF NOT EXISTS ix_tenants_is_active ON tenants(is_active);
|
||||
CREATE INDEX IF NOT EXISTS ix_tenants_country ON tenants(country);
|
||||
CREATE INDEX IF NOT EXISTS ix_tenants_city ON tenants(city);
|
||||
CREATE INDEX IF NOT EXISTS ix_tenants_default_currency ON tenants(default_currency);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS tenant_sales_settings (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
tenant_id TEXT NOT NULL UNIQUE,
|
||||
default_pipeline_id TEXT,
|
||||
default_language TEXT NOT NULL DEFAULT 'ru',
|
||||
default_currency TEXT NOT NULL DEFAULT 'KZT',
|
||||
enabled_text_channels_json TEXT NOT NULL DEFAULT '[]',
|
||||
enabled_voice_channels_json TEXT NOT NULL DEFAULT '[]',
|
||||
payment_provider_settings_json TEXT NOT NULL DEFAULT '{}',
|
||||
document_settings_json TEXT NOT NULL DEFAULT '{}',
|
||||
created_at TEXT NOT NULL,
|
||||
updated_at TEXT NOT NULL
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS ix_tenant_sales_settings_tenant_id ON tenant_sales_settings(tenant_id);
|
||||
CREATE INDEX IF NOT EXISTS ix_tenant_sales_settings_default_pipeline_id ON tenant_sales_settings(default_pipeline_id);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS tenant_integrations (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
integration_id TEXT NOT NULL UNIQUE,
|
||||
tenant_id TEXT NOT NULL,
|
||||
provider_type TEXT NOT NULL,
|
||||
provider_name TEXT NOT NULL,
|
||||
provider_account_id TEXT,
|
||||
external_identifier TEXT,
|
||||
settings_json TEXT NOT NULL DEFAULT '{}',
|
||||
is_active BOOLEAN NOT NULL DEFAULT 1,
|
||||
created_at TEXT NOT NULL,
|
||||
updated_at TEXT NOT NULL
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS ix_tenant_integrations_integration_id ON tenant_integrations(integration_id);
|
||||
CREATE INDEX IF NOT EXISTS ix_tenant_integrations_tenant_id ON tenant_integrations(tenant_id);
|
||||
CREATE INDEX IF NOT EXISTS ix_tenant_integrations_provider_type ON tenant_integrations(provider_type);
|
||||
CREATE INDEX IF NOT EXISTS ix_tenant_integrations_provider_name ON tenant_integrations(provider_name);
|
||||
CREATE INDEX IF NOT EXISTS ix_tenant_integrations_provider_account_id ON tenant_integrations(provider_account_id);
|
||||
CREATE INDEX IF NOT EXISTS ix_tenant_integrations_external_identifier ON tenant_integrations(external_identifier);
|
||||
CREATE INDEX IF NOT EXISTS ix_tenant_integrations_is_active ON tenant_integrations(is_active);
|
||||
CREATE INDEX IF NOT EXISTS idx_tenant_integrations_provider_account ON tenant_integrations(provider_type, provider_name, provider_account_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_tenant_integrations_external_identifier ON tenant_integrations(provider_type, provider_name, external_identifier);
|
||||
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS idx_sales_payments_tenant_external_payment_unique
|
||||
ON sales_payments(tenant_id, payment_provider, external_payment_id)
|
||||
WHERE external_payment_id IS NOT NULL;
|
||||
@@ -0,0 +1,45 @@
|
||||
CREATE TABLE IF NOT EXISTS sales_pipelines (
|
||||
id SERIAL PRIMARY KEY,
|
||||
pipeline_id VARCHAR(64) NOT NULL UNIQUE,
|
||||
tenant_id VARCHAR(64) NOT NULL,
|
||||
code VARCHAR(64) NOT NULL,
|
||||
name VARCHAR(256) NOT NULL,
|
||||
description TEXT,
|
||||
is_default BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
is_active BOOLEAN NOT NULL DEFAULT TRUE,
|
||||
created_at VARCHAR(64) NOT NULL,
|
||||
updated_at VARCHAR(64) NOT NULL,
|
||||
CONSTRAINT uq_sales_pipelines_tenant_code UNIQUE (tenant_id, code)
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS ix_sales_pipelines_pipeline_id ON sales_pipelines (pipeline_id);
|
||||
CREATE INDEX IF NOT EXISTS ix_sales_pipelines_tenant_id ON sales_pipelines (tenant_id);
|
||||
CREATE INDEX IF NOT EXISTS ix_sales_pipelines_code ON sales_pipelines (code);
|
||||
CREATE INDEX IF NOT EXISTS idx_sales_pipelines_tenant_default ON sales_pipelines (tenant_id, is_default, is_active);
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS uq_sales_pipelines_one_default_per_tenant
|
||||
ON sales_pipelines (tenant_id)
|
||||
WHERE is_default IS TRUE;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS sales_pipeline_stages (
|
||||
id SERIAL PRIMARY KEY,
|
||||
stage_id VARCHAR(64) NOT NULL UNIQUE,
|
||||
tenant_id VARCHAR(64) NOT NULL,
|
||||
pipeline_id VARCHAR(64) NOT NULL,
|
||||
code VARCHAR(64) NOT NULL,
|
||||
name VARCHAR(256) NOT NULL,
|
||||
category VARCHAR(64) NOT NULL,
|
||||
sort_order INTEGER NOT NULL DEFAULT 0,
|
||||
is_terminal BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
is_system BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
is_active BOOLEAN NOT NULL DEFAULT TRUE,
|
||||
created_at VARCHAR(64) NOT NULL,
|
||||
updated_at VARCHAR(64) NOT NULL,
|
||||
CONSTRAINT uq_sales_pipeline_stages_tenant_pipeline_code UNIQUE (tenant_id, pipeline_id, code)
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS ix_sales_pipeline_stages_stage_id ON sales_pipeline_stages (stage_id);
|
||||
CREATE INDEX IF NOT EXISTS ix_sales_pipeline_stages_tenant_id ON sales_pipeline_stages (tenant_id);
|
||||
CREATE INDEX IF NOT EXISTS ix_sales_pipeline_stages_pipeline_id ON sales_pipeline_stages (pipeline_id);
|
||||
CREATE INDEX IF NOT EXISTS ix_sales_pipeline_stages_code ON sales_pipeline_stages (code);
|
||||
CREATE INDEX IF NOT EXISTS idx_sales_pipeline_stages_pipeline_order ON sales_pipeline_stages (tenant_id, pipeline_id, sort_order);
|
||||
CREATE INDEX IF NOT EXISTS idx_sales_pipeline_stages_tenant_active ON sales_pipeline_stages (tenant_id, is_active);
|
||||
@@ -0,0 +1,45 @@
|
||||
CREATE TABLE IF NOT EXISTS sales_pipelines (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
pipeline_id VARCHAR(64) NOT NULL UNIQUE,
|
||||
tenant_id VARCHAR(64) NOT NULL,
|
||||
code VARCHAR(64) NOT NULL,
|
||||
name VARCHAR(256) NOT NULL,
|
||||
description TEXT,
|
||||
is_default BOOLEAN NOT NULL DEFAULT 0,
|
||||
is_active BOOLEAN NOT NULL DEFAULT 1,
|
||||
created_at VARCHAR(64) NOT NULL,
|
||||
updated_at VARCHAR(64) NOT NULL,
|
||||
CONSTRAINT uq_sales_pipelines_tenant_code UNIQUE (tenant_id, code)
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS ix_sales_pipelines_pipeline_id ON sales_pipelines (pipeline_id);
|
||||
CREATE INDEX IF NOT EXISTS ix_sales_pipelines_tenant_id ON sales_pipelines (tenant_id);
|
||||
CREATE INDEX IF NOT EXISTS ix_sales_pipelines_code ON sales_pipelines (code);
|
||||
CREATE INDEX IF NOT EXISTS idx_sales_pipelines_tenant_default ON sales_pipelines (tenant_id, is_default, is_active);
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS uq_sales_pipelines_one_default_per_tenant
|
||||
ON sales_pipelines (tenant_id)
|
||||
WHERE is_default = 1;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS sales_pipeline_stages (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
stage_id VARCHAR(64) NOT NULL UNIQUE,
|
||||
tenant_id VARCHAR(64) NOT NULL,
|
||||
pipeline_id VARCHAR(64) NOT NULL,
|
||||
code VARCHAR(64) NOT NULL,
|
||||
name VARCHAR(256) NOT NULL,
|
||||
category VARCHAR(64) NOT NULL,
|
||||
sort_order INTEGER NOT NULL DEFAULT 0,
|
||||
is_terminal BOOLEAN NOT NULL DEFAULT 0,
|
||||
is_system BOOLEAN NOT NULL DEFAULT 0,
|
||||
is_active BOOLEAN NOT NULL DEFAULT 1,
|
||||
created_at VARCHAR(64) NOT NULL,
|
||||
updated_at VARCHAR(64) NOT NULL,
|
||||
CONSTRAINT uq_sales_pipeline_stages_tenant_pipeline_code UNIQUE (tenant_id, pipeline_id, code)
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS ix_sales_pipeline_stages_stage_id ON sales_pipeline_stages (stage_id);
|
||||
CREATE INDEX IF NOT EXISTS ix_sales_pipeline_stages_tenant_id ON sales_pipeline_stages (tenant_id);
|
||||
CREATE INDEX IF NOT EXISTS ix_sales_pipeline_stages_pipeline_id ON sales_pipeline_stages (pipeline_id);
|
||||
CREATE INDEX IF NOT EXISTS ix_sales_pipeline_stages_code ON sales_pipeline_stages (code);
|
||||
CREATE INDEX IF NOT EXISTS idx_sales_pipeline_stages_pipeline_order ON sales_pipeline_stages (tenant_id, pipeline_id, sort_order);
|
||||
CREATE INDEX IF NOT EXISTS idx_sales_pipeline_stages_tenant_active ON sales_pipeline_stages (tenant_id, is_active);
|
||||
Reference in New Issue
Block a user