167 lines
6.1 KiB
SQL
167 lines
6.1 KiB
SQL
-- CreateSchema
|
|
CREATE SCHEMA IF NOT EXISTS "public";
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "orders_tariff_reference" (
|
|
"id" SERIAL NOT NULL,
|
|
"uuid" TEXT NOT NULL,
|
|
"team_uuid" VARCHAR(100) NOT NULL,
|
|
"name" VARCHAR(255) NOT NULL,
|
|
"status" VARCHAR(20) NOT NULL DEFAULT 'active',
|
|
"operation_code" VARCHAR(50),
|
|
"incoterms_code" VARCHAR(20),
|
|
"transport_type_code" VARCHAR(50),
|
|
"tare_type_code" VARCHAR(50),
|
|
"source_country_code" VARCHAR(10),
|
|
"destination_country_code" VARCHAR(10),
|
|
"source_hub_uuid" VARCHAR(100),
|
|
"destination_hub_uuid" VARCHAR(100),
|
|
"min_weight_kg" DECIMAL(12,2),
|
|
"max_weight_kg" DECIMAL(12,2),
|
|
"min_volume_cbm" DECIMAL(12,3),
|
|
"max_volume_cbm" DECIMAL(12,3),
|
|
"min_distance_km" INTEGER,
|
|
"max_distance_km" INTEGER,
|
|
"amount_usd" DECIMAL(12,2) NOT NULL,
|
|
"min_price_usd" DECIMAL(12,2),
|
|
"eta_days" INTEGER,
|
|
"priority" INTEGER NOT NULL DEFAULT 100,
|
|
"currency" VARCHAR(10) NOT NULL DEFAULT 'USD',
|
|
"dmn_expression" TEXT,
|
|
"notes" TEXT,
|
|
"created_by_user_id" VARCHAR(255),
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updated_at" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "orders_tariff_reference_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "orders_quotation" (
|
|
"id" SERIAL NOT NULL,
|
|
"uuid" TEXT NOT NULL,
|
|
"team_uuid" VARCHAR(100) NOT NULL,
|
|
"created_by_user_id" VARCHAR(255),
|
|
"title" VARCHAR(255) NOT NULL DEFAULT 'Quotation',
|
|
"status" VARCHAR(30) NOT NULL DEFAULT 'draft',
|
|
"operation_code" VARCHAR(50),
|
|
"incoterms_code" VARCHAR(20),
|
|
"transport_type_code" VARCHAR(50),
|
|
"tare_type_code" VARCHAR(50),
|
|
"source_country_code" VARCHAR(10),
|
|
"source_hub_uuid" VARCHAR(100),
|
|
"source_location_uuid" VARCHAR(100),
|
|
"source_location_name" VARCHAR(255),
|
|
"source_latitude" DOUBLE PRECISION,
|
|
"source_longitude" DOUBLE PRECISION,
|
|
"destination_country_code" VARCHAR(10),
|
|
"destination_hub_uuid" VARCHAR(100),
|
|
"destination_location_uuid" VARCHAR(100),
|
|
"destination_location_name" VARCHAR(255),
|
|
"destination_latitude" DOUBLE PRECISION,
|
|
"destination_longitude" DOUBLE PRECISION,
|
|
"chargeable_weight_kg" DECIMAL(12,2),
|
|
"gross_weight_kg" DECIMAL(12,2),
|
|
"volume_cbm" DECIMAL(12,3),
|
|
"units_count" INTEGER,
|
|
"route_distance_km" INTEGER,
|
|
"selected_tariff_id" INTEGER,
|
|
"tariff_match_summary" TEXT,
|
|
"tariff_snapshot" TEXT,
|
|
"total_amount" DECIMAL(12,2) NOT NULL DEFAULT 0,
|
|
"currency" VARCHAR(10) NOT NULL DEFAULT 'USD',
|
|
"eta_days" INTEGER,
|
|
"notes" TEXT,
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updated_at" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "orders_quotation_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "orders_quotation_change" (
|
|
"id" SERIAL NOT NULL,
|
|
"uuid" TEXT NOT NULL,
|
|
"quotation_id" INTEGER NOT NULL,
|
|
"actor_user_id" VARCHAR(255),
|
|
"actor_label" VARCHAR(255),
|
|
"source" VARCHAR(50) NOT NULL,
|
|
"summary" TEXT,
|
|
"payload_json" TEXT,
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "orders_quotation_change_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "orders_order" (
|
|
"id" SERIAL NOT NULL,
|
|
"uuid" TEXT NOT NULL,
|
|
"team_uuid" VARCHAR(100) NOT NULL,
|
|
"quotation_id" INTEGER,
|
|
"created_by_user_id" VARCHAR(255),
|
|
"name" VARCHAR(255) NOT NULL,
|
|
"status" VARCHAR(30) NOT NULL DEFAULT 'draft',
|
|
"total_amount" DECIMAL(12,2) NOT NULL DEFAULT 0,
|
|
"currency" VARCHAR(10) NOT NULL DEFAULT 'USD',
|
|
"source_location_uuid" VARCHAR(100),
|
|
"source_location_name" VARCHAR(255),
|
|
"source_country_code" VARCHAR(10),
|
|
"source_latitude" DOUBLE PRECISION,
|
|
"source_longitude" DOUBLE PRECISION,
|
|
"destination_location_uuid" VARCHAR(100),
|
|
"destination_location_name" VARCHAR(255),
|
|
"destination_country_code" VARCHAR(10),
|
|
"destination_latitude" DOUBLE PRECISION,
|
|
"destination_longitude" DOUBLE PRECISION,
|
|
"eta_days" INTEGER,
|
|
"notes" TEXT,
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updated_at" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "orders_order_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "orders_tariff_reference_uuid_key" ON "orders_tariff_reference"("uuid");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "orders_tariff_reference_team_uuid_status_priority_idx" ON "orders_tariff_reference"("team_uuid", "status", "priority");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "orders_tariff_reference_team_uuid_source_country_code_desti_idx" ON "orders_tariff_reference"("team_uuid", "source_country_code", "destination_country_code");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "orders_quotation_uuid_key" ON "orders_quotation"("uuid");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "orders_quotation_team_uuid_status_created_at_idx" ON "orders_quotation"("team_uuid", "status", "created_at");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "orders_quotation_team_uuid_source_country_code_destination__idx" ON "orders_quotation"("team_uuid", "source_country_code", "destination_country_code");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "orders_quotation_change_uuid_key" ON "orders_quotation_change"("uuid");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "orders_quotation_change_quotation_id_created_at_idx" ON "orders_quotation_change"("quotation_id", "created_at");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "orders_order_uuid_key" ON "orders_order"("uuid");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "orders_order_quotation_id_key" ON "orders_order"("quotation_id");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "orders_order_team_uuid_created_at_idx" ON "orders_order"("team_uuid", "created_at");
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "orders_quotation" ADD CONSTRAINT "orders_quotation_selected_tariff_id_fkey" FOREIGN KEY ("selected_tariff_id") REFERENCES "orders_tariff_reference"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "orders_quotation_change" ADD CONSTRAINT "orders_quotation_change_quotation_id_fkey" FOREIGN KEY ("quotation_id") REFERENCES "orders_quotation"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "orders_order" ADD CONSTRAINT "orders_order_quotation_id_fkey" FOREIGN KEY ("quotation_id") REFERENCES "orders_quotation"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|