Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
64 lines
2.5 KiB
SQL
64 lines
2.5 KiB
SQL
-- CreateEnum
|
|
CREATE TYPE "PartnerDeal" AS ENUM ('PROFIT_SHARE', 'COMMISSION');
|
|
|
|
-- DropForeignKey
|
|
ALTER TABLE "WebRequest" DROP CONSTRAINT "WebRequest_districtId_fkey";
|
|
|
|
-- AlterTable
|
|
ALTER TABLE "Agency" ADD COLUMN "giftMonths" INTEGER NOT NULL DEFAULT 1,
|
|
ADD COLUMN "giftPlan" "SubscriptionPlan" DEFAULT 'BAREV_PLUS';
|
|
|
|
-- AlterTable
|
|
ALTER TABLE "Provider" ADD COLUMN "maxHoursPerDay" INTEGER,
|
|
ADD COLUMN "maxOrdersPerDay" INTEGER;
|
|
|
|
-- AlterTable
|
|
ALTER TABLE "ProviderCompany" ADD COLUMN "autoAssign" BOOLEAN NOT NULL DEFAULT false,
|
|
ADD COLUMN "commissionPct" INTEGER NOT NULL DEFAULT 30,
|
|
ADD COLUMN "deal" "PartnerDeal" NOT NULL DEFAULT 'COMMISSION',
|
|
ADD COLUMN "fotPct" INTEGER,
|
|
ADD COLUMN "note" TEXT,
|
|
ADD COLUMN "profitSharePct" INTEGER NOT NULL DEFAULT 50,
|
|
ADD COLUMN "taxPct" INTEGER,
|
|
ADD COLUMN "travelGapMinutes" INTEGER NOT NULL DEFAULT 60;
|
|
|
|
-- AlterTable
|
|
ALTER TABLE "WebRequest" ALTER COLUMN "preferredAt" DROP NOT NULL,
|
|
ALTER COLUMN "districtId" DROP NOT NULL,
|
|
ALTER COLUMN "addressText" DROP NOT NULL;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "PartnerEarning" (
|
|
"id" TEXT NOT NULL,
|
|
"companyId" TEXT NOT NULL,
|
|
"orderId" TEXT NOT NULL,
|
|
"deal" "PartnerDeal" NOT NULL,
|
|
"paid" INTEGER NOT NULL,
|
|
"fot" INTEGER NOT NULL DEFAULT 0,
|
|
"tax" INTEGER NOT NULL DEFAULT 0,
|
|
"pct" INTEGER NOT NULL,
|
|
"amount" INTEGER NOT NULL,
|
|
"period" TEXT NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "PartnerEarning_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "PartnerEarning_orderId_key" ON "PartnerEarning"("orderId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "PartnerEarning_companyId_period_idx" ON "PartnerEarning"("companyId", "period");
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "PartnerEarning" ADD CONSTRAINT "PartnerEarning_companyId_fkey" FOREIGN KEY ("companyId") REFERENCES "ProviderCompany"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "PartnerEarning" ADD CONSTRAINT "PartnerEarning_orderId_fkey" FOREIGN KEY ("orderId") REFERENCES "Order"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "WebRequest" ADD CONSTRAINT "WebRequest_districtId_fkey" FOREIGN KEY ("districtId") REFERENCES "District"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- Действующие компании: их ставка «% компании от заказа» превращается в нашу комиссию
|
|
UPDATE "ProviderCompany" SET "commissionPct" = GREATEST(0, LEAST(100, 100 - "rateValue")) WHERE "rateType" = 'PERCENT';
|