|
|
|
|
@@ -0,0 +1,634 @@
|
|
|
|
|
-- CreateEnum
|
|
|
|
|
CREATE TYPE "Plan" AS ENUM ('starter', 'business', 'business_ia', 'custom', 'enterprise');
|
|
|
|
|
|
|
|
|
|
-- CreateEnum
|
|
|
|
|
CREATE TYPE "PlatformRole" AS ENUM ('platform_admin', 'platform_ti', 'platform_support', 'platform_sales', 'platform_finance');
|
|
|
|
|
|
|
|
|
|
-- CreateEnum
|
|
|
|
|
CREATE TYPE "SatSyncType" AS ENUM ('initial', 'daily', 'incremental');
|
|
|
|
|
|
|
|
|
|
-- CreateEnum
|
|
|
|
|
CREATE TYPE "SatSyncStatus" AS ENUM ('pending', 'running', 'completed', 'failed');
|
|
|
|
|
|
|
|
|
|
-- CreateEnum
|
|
|
|
|
CREATE TYPE "CfdiSyncType" AS ENUM ('emitidos', 'recibidos');
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "tenants" (
|
|
|
|
|
"id" TEXT NOT NULL,
|
|
|
|
|
"nombre" TEXT NOT NULL,
|
|
|
|
|
"rfc" TEXT NOT NULL,
|
|
|
|
|
"plan" "Plan" NOT NULL DEFAULT 'starter',
|
|
|
|
|
"database_name" TEXT NOT NULL,
|
|
|
|
|
"cfdi_limit" INTEGER NOT NULL DEFAULT 100,
|
|
|
|
|
"users_limit" INTEGER NOT NULL DEFAULT 1,
|
|
|
|
|
"active" BOOLEAN NOT NULL DEFAULT true,
|
|
|
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
"expires_at" TIMESTAMP(3),
|
|
|
|
|
"trial_ends_at" TIMESTAMP(3),
|
|
|
|
|
"facturapi_org_id" TEXT,
|
|
|
|
|
"codigo_postal" VARCHAR(5),
|
|
|
|
|
"calle" VARCHAR(255),
|
|
|
|
|
"num_exterior" VARCHAR(20),
|
|
|
|
|
"num_interior" VARCHAR(20),
|
|
|
|
|
"colonia" VARCHAR(255),
|
|
|
|
|
"ciudad" VARCHAR(100),
|
|
|
|
|
"municipio" VARCHAR(100),
|
|
|
|
|
"estado" VARCHAR(100),
|
|
|
|
|
"telefono" VARCHAR(20),
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "tenants_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "users" (
|
|
|
|
|
"id" TEXT NOT NULL,
|
|
|
|
|
"email" TEXT NOT NULL,
|
|
|
|
|
"password_hash" TEXT NOT NULL,
|
|
|
|
|
"nombre" TEXT NOT NULL,
|
|
|
|
|
"active" BOOLEAN NOT NULL DEFAULT true,
|
|
|
|
|
"last_login" TIMESTAMP(3),
|
|
|
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
"token_version" INTEGER NOT NULL DEFAULT 0,
|
|
|
|
|
"last_tenant_id" TEXT,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "users_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "tenant_memberships" (
|
|
|
|
|
"id" SERIAL NOT NULL,
|
|
|
|
|
"user_id" TEXT NOT NULL,
|
|
|
|
|
"tenant_id" TEXT NOT NULL,
|
|
|
|
|
"rol_id" INTEGER NOT NULL,
|
|
|
|
|
"is_owner" BOOLEAN NOT NULL DEFAULT false,
|
|
|
|
|
"active" BOOLEAN NOT NULL DEFAULT true,
|
|
|
|
|
"joined_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "tenant_memberships_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "roles" (
|
|
|
|
|
"id" SERIAL NOT NULL,
|
|
|
|
|
"nombre" VARCHAR(20) NOT NULL,
|
|
|
|
|
"descripcion" TEXT,
|
|
|
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "roles_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "refresh_tokens" (
|
|
|
|
|
"id" TEXT NOT NULL,
|
|
|
|
|
"user_id" TEXT NOT NULL,
|
|
|
|
|
"token" TEXT NOT NULL,
|
|
|
|
|
"expires_at" TIMESTAMP(3) NOT NULL,
|
|
|
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "refresh_tokens_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "password_reset_tokens" (
|
|
|
|
|
"id" TEXT NOT NULL,
|
|
|
|
|
"user_id" TEXT NOT NULL,
|
|
|
|
|
"token" TEXT NOT NULL,
|
|
|
|
|
"expires_at" TIMESTAMP(3) NOT NULL,
|
|
|
|
|
"used_at" TIMESTAMP(3),
|
|
|
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "password_reset_tokens_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "regimenes" (
|
|
|
|
|
"id" SERIAL NOT NULL,
|
|
|
|
|
"clave" VARCHAR(3) NOT NULL,
|
|
|
|
|
"descripcion" TEXT NOT NULL,
|
|
|
|
|
"tipo_persona" VARCHAR(20) NOT NULL,
|
|
|
|
|
"activo" BOOLEAN NOT NULL DEFAULT true,
|
|
|
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "regimenes_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "tenant_regimenes_ignorados" (
|
|
|
|
|
"id" SERIAL NOT NULL,
|
|
|
|
|
"tenant_id" TEXT NOT NULL,
|
|
|
|
|
"regimen_id" INTEGER NOT NULL,
|
|
|
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "tenant_regimenes_ignorados_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "tenant_regimenes_activos" (
|
|
|
|
|
"id" SERIAL NOT NULL,
|
|
|
|
|
"tenant_id" TEXT NOT NULL,
|
|
|
|
|
"regimen_id" INTEGER NOT NULL,
|
|
|
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "tenant_regimenes_activos_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "eventos_fiscales_catalogo" (
|
|
|
|
|
"id" SERIAL NOT NULL,
|
|
|
|
|
"titulo" TEXT NOT NULL,
|
|
|
|
|
"descripcion" TEXT,
|
|
|
|
|
"tipo" VARCHAR(20) NOT NULL,
|
|
|
|
|
"dia_base" INTEGER NOT NULL,
|
|
|
|
|
"mes_relativo" INTEGER NOT NULL DEFAULT 1,
|
|
|
|
|
"mes_fijo" INTEGER,
|
|
|
|
|
"recurrencia" VARCHAR(20) NOT NULL DEFAULT 'mensual',
|
|
|
|
|
"usa_extension_rfc" BOOLEAN NOT NULL DEFAULT false,
|
|
|
|
|
"regimenes" TEXT NOT NULL DEFAULT 'todos',
|
|
|
|
|
"condicion" VARCHAR(50),
|
|
|
|
|
"activo" BOOLEAN NOT NULL DEFAULT true,
|
|
|
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "eventos_fiscales_catalogo_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "lista_negra" (
|
|
|
|
|
"id" SERIAL NOT NULL,
|
|
|
|
|
"rfc" VARCHAR(13) NOT NULL,
|
|
|
|
|
"nombre" TEXT NOT NULL,
|
|
|
|
|
"situacion" VARCHAR(30) NOT NULL,
|
|
|
|
|
"updated_at" TIMESTAMP(3) NOT NULL,
|
|
|
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "lista_negra_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "dias_inhabiles" (
|
|
|
|
|
"id" SERIAL NOT NULL,
|
|
|
|
|
"fecha" DATE NOT NULL,
|
|
|
|
|
"nombre" TEXT NOT NULL,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "dias_inhabiles_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "isr_resico_tasas" (
|
|
|
|
|
"id" SERIAL NOT NULL,
|
|
|
|
|
"anio" INTEGER NOT NULL,
|
|
|
|
|
"monto_maximo" DECIMAL(18,2) NOT NULL,
|
|
|
|
|
"porcentaje" DECIMAL(5,2) NOT NULL,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "isr_resico_tasas_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "isr_tarifas" (
|
|
|
|
|
"id" SERIAL NOT NULL,
|
|
|
|
|
"anio" INTEGER NOT NULL,
|
|
|
|
|
"limite_inferior" DECIMAL(18,2) NOT NULL,
|
|
|
|
|
"limite_superior" DECIMAL(18,2),
|
|
|
|
|
"cuota_fija" DECIMAL(18,2) NOT NULL,
|
|
|
|
|
"porcentaje_excedente" DECIMAL(5,2) NOT NULL,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "isr_tarifas_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "coeficiente_utilidad" (
|
|
|
|
|
"id" SERIAL NOT NULL,
|
|
|
|
|
"tenant_id" TEXT NOT NULL,
|
|
|
|
|
"anio" INTEGER NOT NULL,
|
|
|
|
|
"coeficiente" DECIMAL(10,4) NOT NULL,
|
|
|
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "coeficiente_utilidad_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "fiel_credentials" (
|
|
|
|
|
"id" TEXT NOT NULL,
|
|
|
|
|
"tenant_id" TEXT NOT NULL,
|
|
|
|
|
"rfc" VARCHAR(13) NOT NULL,
|
|
|
|
|
"cer_data" BYTEA NOT NULL,
|
|
|
|
|
"key_data" BYTEA NOT NULL,
|
|
|
|
|
"key_password_encrypted" BYTEA NOT NULL,
|
|
|
|
|
"cer_iv" BYTEA NOT NULL,
|
|
|
|
|
"cer_tag" BYTEA NOT NULL,
|
|
|
|
|
"key_iv" BYTEA NOT NULL,
|
|
|
|
|
"key_tag" BYTEA NOT NULL,
|
|
|
|
|
"password_iv" BYTEA NOT NULL,
|
|
|
|
|
"password_tag" BYTEA NOT NULL,
|
|
|
|
|
"serial_number" VARCHAR(50),
|
|
|
|
|
"valid_from" TIMESTAMP(3) NOT NULL,
|
|
|
|
|
"valid_until" TIMESTAMP(3) NOT NULL,
|
|
|
|
|
"is_active" BOOLEAN NOT NULL DEFAULT true,
|
|
|
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
"updated_at" TIMESTAMP(3) NOT NULL,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "fiel_credentials_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "subscriptions" (
|
|
|
|
|
"id" TEXT NOT NULL,
|
|
|
|
|
"tenant_id" TEXT NOT NULL,
|
|
|
|
|
"plan" "Plan" NOT NULL,
|
|
|
|
|
"mp_preapproval_id" TEXT,
|
|
|
|
|
"status" TEXT NOT NULL DEFAULT 'pending',
|
|
|
|
|
"amount" DECIMAL(10,2) NOT NULL,
|
|
|
|
|
"frequency" TEXT NOT NULL DEFAULT 'monthly',
|
|
|
|
|
"current_period_start" TIMESTAMP(3),
|
|
|
|
|
"current_period_end" TIMESTAMP(3),
|
|
|
|
|
"pending_plan" "Plan",
|
|
|
|
|
"pending_frequency" TEXT,
|
|
|
|
|
"pending_effective_at" TIMESTAMP(3),
|
|
|
|
|
"upgrade_preference_id" TEXT,
|
|
|
|
|
"upgrade_target_plan" "Plan",
|
|
|
|
|
"upgrade_target_amount" DECIMAL(10,2),
|
|
|
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
"updated_at" TIMESTAMP(3) NOT NULL,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "subscriptions_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "user_platform_roles" (
|
|
|
|
|
"id" SERIAL NOT NULL,
|
|
|
|
|
"user_id" TEXT NOT NULL,
|
|
|
|
|
"role" "PlatformRole" NOT NULL,
|
|
|
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
"created_by" TEXT,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "user_platform_roles_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "audit_log" (
|
|
|
|
|
"id" TEXT NOT NULL,
|
|
|
|
|
"user_id" TEXT,
|
|
|
|
|
"tenant_id" TEXT,
|
|
|
|
|
"action" VARCHAR(64) NOT NULL,
|
|
|
|
|
"entity_type" VARCHAR(32),
|
|
|
|
|
"entity_id" TEXT,
|
|
|
|
|
"metadata" JSONB,
|
|
|
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "audit_log_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "trial_usages" (
|
|
|
|
|
"id" SERIAL NOT NULL,
|
|
|
|
|
"rfc" VARCHAR(13) NOT NULL,
|
|
|
|
|
"tenant_id" TEXT,
|
|
|
|
|
"started_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "trial_usages_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "plan_prices" (
|
|
|
|
|
"id" SERIAL NOT NULL,
|
|
|
|
|
"plan" "Plan" NOT NULL,
|
|
|
|
|
"frequency" TEXT NOT NULL,
|
|
|
|
|
"amount" DECIMAL(10,2) NOT NULL,
|
|
|
|
|
"updated_at" TIMESTAMP(3) NOT NULL,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "plan_prices_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "payments" (
|
|
|
|
|
"id" TEXT NOT NULL,
|
|
|
|
|
"tenant_id" TEXT NOT NULL,
|
|
|
|
|
"subscription_id" TEXT,
|
|
|
|
|
"mp_payment_id" TEXT,
|
|
|
|
|
"amount" DECIMAL(10,2) NOT NULL,
|
|
|
|
|
"status" TEXT NOT NULL DEFAULT 'pending',
|
|
|
|
|
"payment_method" TEXT,
|
|
|
|
|
"paid_at" TIMESTAMP(3),
|
|
|
|
|
"facturapi_invoice_id" TEXT,
|
|
|
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "payments_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "sat_sync_jobs" (
|
|
|
|
|
"id" TEXT NOT NULL,
|
|
|
|
|
"tenant_id" TEXT NOT NULL,
|
|
|
|
|
"type" "SatSyncType" NOT NULL,
|
|
|
|
|
"status" "SatSyncStatus" NOT NULL DEFAULT 'pending',
|
|
|
|
|
"date_from" DATE NOT NULL,
|
|
|
|
|
"date_to" DATE NOT NULL,
|
|
|
|
|
"cfdi_type" "CfdiSyncType",
|
|
|
|
|
"sat_request_id" VARCHAR(50),
|
|
|
|
|
"sat_package_ids" TEXT[],
|
|
|
|
|
"cfdis_found" INTEGER NOT NULL DEFAULT 0,
|
|
|
|
|
"cfdis_downloaded" INTEGER NOT NULL DEFAULT 0,
|
|
|
|
|
"cfdis_inserted" INTEGER NOT NULL DEFAULT 0,
|
|
|
|
|
"cfdis_updated" INTEGER NOT NULL DEFAULT 0,
|
|
|
|
|
"progress_percent" INTEGER NOT NULL DEFAULT 0,
|
|
|
|
|
"error_message" TEXT,
|
|
|
|
|
"started_at" TIMESTAMP(3),
|
|
|
|
|
"completed_at" TIMESTAMP(3),
|
|
|
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
"retry_count" INTEGER NOT NULL DEFAULT 0,
|
|
|
|
|
"next_retry_at" TIMESTAMP(3),
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "sat_sync_jobs_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "cat_forma_pago" (
|
|
|
|
|
"id" SERIAL NOT NULL,
|
|
|
|
|
"clave" VARCHAR(2) NOT NULL,
|
|
|
|
|
"descripcion" TEXT NOT NULL,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "cat_forma_pago_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "cat_metodo_pago" (
|
|
|
|
|
"id" SERIAL NOT NULL,
|
|
|
|
|
"clave" VARCHAR(3) NOT NULL,
|
|
|
|
|
"descripcion" TEXT NOT NULL,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "cat_metodo_pago_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "cat_uso_cfdi" (
|
|
|
|
|
"id" SERIAL NOT NULL,
|
|
|
|
|
"clave" VARCHAR(4) NOT NULL,
|
|
|
|
|
"descripcion" TEXT NOT NULL,
|
|
|
|
|
"persona_fisica" BOOLEAN NOT NULL DEFAULT true,
|
|
|
|
|
"persona_moral" BOOLEAN NOT NULL DEFAULT true,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "cat_uso_cfdi_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "cat_moneda" (
|
|
|
|
|
"id" SERIAL NOT NULL,
|
|
|
|
|
"clave" VARCHAR(3) NOT NULL,
|
|
|
|
|
"descripcion" TEXT NOT NULL,
|
|
|
|
|
"decimales" INTEGER NOT NULL DEFAULT 2,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "cat_moneda_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "cat_clave_unidad" (
|
|
|
|
|
"id" SERIAL NOT NULL,
|
|
|
|
|
"clave" VARCHAR(10) NOT NULL,
|
|
|
|
|
"descripcion" TEXT NOT NULL,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "cat_clave_unidad_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "cat_clave_prod_serv" (
|
|
|
|
|
"id" SERIAL NOT NULL,
|
|
|
|
|
"clave" VARCHAR(8) NOT NULL,
|
|
|
|
|
"descripcion" TEXT NOT NULL,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "cat_clave_prod_serv_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "cat_objeto_imp" (
|
|
|
|
|
"id" SERIAL NOT NULL,
|
|
|
|
|
"clave" VARCHAR(2) NOT NULL,
|
|
|
|
|
"descripcion" TEXT NOT NULL,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "cat_objeto_imp_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "cat_tipo_relacion" (
|
|
|
|
|
"id" SERIAL NOT NULL,
|
|
|
|
|
"clave" VARCHAR(2) NOT NULL,
|
|
|
|
|
"descripcion" TEXT NOT NULL,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "cat_tipo_relacion_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "cat_exportacion" (
|
|
|
|
|
"id" SERIAL NOT NULL,
|
|
|
|
|
"clave" VARCHAR(2) NOT NULL,
|
|
|
|
|
"descripcion" TEXT NOT NULL,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "cat_exportacion_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateTable
|
|
|
|
|
CREATE TABLE "timbre_suscripciones" (
|
|
|
|
|
"id" SERIAL NOT NULL,
|
|
|
|
|
"tenant_id" TEXT NOT NULL,
|
|
|
|
|
"tipo" VARCHAR(10) NOT NULL,
|
|
|
|
|
"timbres_limite" INTEGER NOT NULL,
|
|
|
|
|
"timbres_usados" INTEGER NOT NULL DEFAULT 0,
|
|
|
|
|
"periodo_inicio" DATE NOT NULL,
|
|
|
|
|
"periodo_fin" DATE NOT NULL,
|
|
|
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
|
"updated_at" TIMESTAMP(3) NOT NULL,
|
|
|
|
|
|
|
|
|
|
CONSTRAINT "timbre_suscripciones_pkey" PRIMARY KEY ("id")
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "tenants_rfc_key" ON "tenants"("rfc");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "tenants_database_name_key" ON "tenants"("database_name");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "users_email_key" ON "users"("email");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "tenant_memberships_user_id_active_idx" ON "tenant_memberships"("user_id", "active");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "tenant_memberships_tenant_id_active_idx" ON "tenant_memberships"("tenant_id", "active");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "tenant_memberships_user_id_tenant_id_key" ON "tenant_memberships"("user_id", "tenant_id");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "roles_nombre_key" ON "roles"("nombre");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "refresh_tokens_token_key" ON "refresh_tokens"("token");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "password_reset_tokens_token_key" ON "password_reset_tokens"("token");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "password_reset_tokens_user_id_idx" ON "password_reset_tokens"("user_id");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "password_reset_tokens_expires_at_idx" ON "password_reset_tokens"("expires_at");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "regimenes_clave_key" ON "regimenes"("clave");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "tenant_regimenes_ignorados_tenant_id_regimen_id_key" ON "tenant_regimenes_ignorados"("tenant_id", "regimen_id");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "tenant_regimenes_activos_tenant_id_regimen_id_key" ON "tenant_regimenes_activos"("tenant_id", "regimen_id");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "lista_negra_rfc_key" ON "lista_negra"("rfc");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "lista_negra_rfc_idx" ON "lista_negra"("rfc");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "dias_inhabiles_fecha_key" ON "dias_inhabiles"("fecha");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "isr_resico_tasas_anio_monto_maximo_key" ON "isr_resico_tasas"("anio", "monto_maximo");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "isr_tarifas_anio_limite_inferior_key" ON "isr_tarifas"("anio", "limite_inferior");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "coeficiente_utilidad_tenant_id_anio_key" ON "coeficiente_utilidad"("tenant_id", "anio");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "fiel_credentials_tenant_id_key" ON "fiel_credentials"("tenant_id");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "subscriptions_tenant_id_idx" ON "subscriptions"("tenant_id");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "subscriptions_status_idx" ON "subscriptions"("status");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "subscriptions_pending_effective_at_idx" ON "subscriptions"("pending_effective_at");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "user_platform_roles_role_idx" ON "user_platform_roles"("role");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "user_platform_roles_user_id_role_key" ON "user_platform_roles"("user_id", "role");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "audit_log_user_id_created_at_idx" ON "audit_log"("user_id", "created_at");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "audit_log_tenant_id_created_at_idx" ON "audit_log"("tenant_id", "created_at");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "audit_log_action_created_at_idx" ON "audit_log"("action", "created_at");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "audit_log_entity_type_entity_id_idx" ON "audit_log"("entity_type", "entity_id");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "trial_usages_rfc_key" ON "trial_usages"("rfc");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "plan_prices_plan_frequency_key" ON "plan_prices"("plan", "frequency");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "payments_tenant_id_idx" ON "payments"("tenant_id");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "payments_subscription_id_idx" ON "payments"("subscription_id");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "sat_sync_jobs_tenant_id_idx" ON "sat_sync_jobs"("tenant_id");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "sat_sync_jobs_status_idx" ON "sat_sync_jobs"("status");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "sat_sync_jobs_status_next_retry_at_idx" ON "sat_sync_jobs"("status", "next_retry_at");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "cat_forma_pago_clave_key" ON "cat_forma_pago"("clave");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "cat_metodo_pago_clave_key" ON "cat_metodo_pago"("clave");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "cat_uso_cfdi_clave_key" ON "cat_uso_cfdi"("clave");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "cat_moneda_clave_key" ON "cat_moneda"("clave");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "cat_clave_unidad_clave_key" ON "cat_clave_unidad"("clave");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "cat_clave_prod_serv_clave_key" ON "cat_clave_prod_serv"("clave");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE INDEX "cat_clave_prod_serv_descripcion_idx" ON "cat_clave_prod_serv"("descripcion");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "cat_objeto_imp_clave_key" ON "cat_objeto_imp"("clave");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "cat_tipo_relacion_clave_key" ON "cat_tipo_relacion"("clave");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "cat_exportacion_clave_key" ON "cat_exportacion"("clave");
|
|
|
|
|
|
|
|
|
|
-- CreateIndex
|
|
|
|
|
CREATE UNIQUE INDEX "timbre_suscripciones_tenant_id_key" ON "timbre_suscripciones"("tenant_id");
|
|
|
|
|
|
|
|
|
|
-- AddForeignKey
|
|
|
|
|
ALTER TABLE "tenant_memberships" ADD CONSTRAINT "tenant_memberships_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
|
|
|
|
|
|
-- AddForeignKey
|
|
|
|
|
ALTER TABLE "tenant_memberships" ADD CONSTRAINT "tenant_memberships_tenant_id_fkey" FOREIGN KEY ("tenant_id") REFERENCES "tenants"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
|
|
|
|
|
|
-- AddForeignKey
|
|
|
|
|
ALTER TABLE "tenant_memberships" ADD CONSTRAINT "tenant_memberships_rol_id_fkey" FOREIGN KEY ("rol_id") REFERENCES "roles"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
|
|
|
|
|
|
-- AddForeignKey
|
|
|
|
|
ALTER TABLE "password_reset_tokens" ADD CONSTRAINT "password_reset_tokens_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
|
|
|
|
|
|
-- AddForeignKey
|
|
|
|
|
ALTER TABLE "tenant_regimenes_ignorados" ADD CONSTRAINT "tenant_regimenes_ignorados_tenant_id_fkey" FOREIGN KEY ("tenant_id") REFERENCES "tenants"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
|
|
|
|
|
|
-- AddForeignKey
|
|
|
|
|
ALTER TABLE "tenant_regimenes_ignorados" ADD CONSTRAINT "tenant_regimenes_ignorados_regimen_id_fkey" FOREIGN KEY ("regimen_id") REFERENCES "regimenes"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
|
|
|
|
|
|
-- AddForeignKey
|
|
|
|
|
ALTER TABLE "tenant_regimenes_activos" ADD CONSTRAINT "tenant_regimenes_activos_tenant_id_fkey" FOREIGN KEY ("tenant_id") REFERENCES "tenants"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
|
|
|
|
|
|
-- AddForeignKey
|
|
|
|
|
ALTER TABLE "tenant_regimenes_activos" ADD CONSTRAINT "tenant_regimenes_activos_regimen_id_fkey" FOREIGN KEY ("regimen_id") REFERENCES "regimenes"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
|
|
|
|
|
|
-- AddForeignKey
|
|
|
|
|
ALTER TABLE "coeficiente_utilidad" ADD CONSTRAINT "coeficiente_utilidad_tenant_id_fkey" FOREIGN KEY ("tenant_id") REFERENCES "tenants"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
|
|
|
|
|
|
-- AddForeignKey
|
|
|
|
|
ALTER TABLE "fiel_credentials" ADD CONSTRAINT "fiel_credentials_tenant_id_fkey" FOREIGN KEY ("tenant_id") REFERENCES "tenants"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
|
|
|
|
|
|
-- AddForeignKey
|
|
|
|
|
ALTER TABLE "subscriptions" ADD CONSTRAINT "subscriptions_tenant_id_fkey" FOREIGN KEY ("tenant_id") REFERENCES "tenants"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
|
|
|
|
|
|
-- AddForeignKey
|
|
|
|
|
ALTER TABLE "user_platform_roles" ADD CONSTRAINT "user_platform_roles_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
|
|
|
|
|
|
-- AddForeignKey
|
|
|
|
|
ALTER TABLE "payments" ADD CONSTRAINT "payments_tenant_id_fkey" FOREIGN KEY ("tenant_id") REFERENCES "tenants"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
|
|
|
|
|
|
-- AddForeignKey
|
|
|
|
|
ALTER TABLE "payments" ADD CONSTRAINT "payments_subscription_id_fkey" FOREIGN KEY ("subscription_id") REFERENCES "subscriptions"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
|
|
|
|
|
|
-- AddForeignKey
|
|
|
|
|
ALTER TABLE "sat_sync_jobs" ADD CONSTRAINT "sat_sync_jobs_tenant_id_fkey" FOREIGN KEY ("tenant_id") REFERENCES "tenants"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
|
|
|
|
|
|
-- AddForeignKey
|
|
|
|
|
ALTER TABLE "timbre_suscripciones" ADD CONSTRAINT "timbre_suscripciones_tenant_id_fkey" FOREIGN KEY ("tenant_id") REFERENCES "tenants"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
|
|