update migrations and create base migration. set discount and tax to sale invoices

This commit is contained in:
2026-05-28 16:39:07 +03:30
parent cd3492d625
commit a975f9d02a
55 changed files with 2152 additions and 2278 deletions
@@ -7,6 +7,7 @@ CREATE TABLE `admin_accounts` (
`account_id` VARCHAR(191) NOT NULL,
UNIQUE INDEX `admin_accounts_account_id_key`(`account_id`),
INDEX `admin_accounts_admin_id_fkey`(`admin_id`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
@@ -275,28 +276,18 @@ CREATE TABLE `providers` (
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `consumer_devices` (
`uuid` VARCHAR(255) NOT NULL,
`app_version` VARCHAR(20) NOT NULL,
`build_number` VARCHAR(20) NOT NULL,
`platform` VARCHAR(100) NOT NULL,
`brand` VARCHAR(100) NOT NULL,
`model` VARCHAR(100) NOT NULL,
`device` VARCHAR(100) NOT NULL,
`publisher` ENUM('DIRECT', 'CAFE_BAZAR', 'MAYKET') NOT NULL,
`os_version` VARCHAR(20) NOT NULL,
`sdk_version` VARCHAR(20) NOT NULL,
`release_number` VARCHAR(20) NOT NULL,
`user_agent` VARCHAR(100) NULL,
`browser_name` VARCHAR(100) NULL,
`fcm_token` VARCHAR(100) NULL,
CREATE TABLE `consumer_account_device` (
`id` VARCHAR(191) NOT NULL,
`device_id` VARCHAR(191) NOT NULL,
`device_name` VARCHAR(191) NULL,
`created_at` TIMESTAMP(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0),
`updated_at` TIMESTAMP(0) NOT NULL,
`consumer_id` VARCHAR(191) NOT NULL,
`consumer_account_id` VARCHAR(191) NOT NULL,
UNIQUE INDEX `consumer_devices_uuid_key`(`uuid`),
INDEX `consumer_devices_consumer_id_fkey`(`consumer_id`),
PRIMARY KEY (`uuid`)
UNIQUE INDEX `consumer_account_device_device_id_key`(`device_id`),
UNIQUE INDEX `consumer_account_device_consumer_account_id_key`(`consumer_account_id`),
INDEX `consumer_account_device_consumer_account_id_idx`(`consumer_account_id`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
@@ -325,6 +316,7 @@ CREATE TABLE `consumer_accounts` (
`account_id` VARCHAR(191) NOT NULL,
UNIQUE INDEX `consumer_accounts_account_id_key`(`account_id`),
INDEX `consumer_accounts_consumer_id_fkey`(`consumer_id`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
@@ -381,6 +373,8 @@ CREATE TABLE `business_activities` (
`guild_id` VARCHAR(191) NOT NULL,
`consumer_id` VARCHAR(191) NOT NULL,
INDEX `business_activities_consumer_id_fkey`(`consumer_id`),
INDEX `business_activities_guild_id_fkey`(`guild_id`),
UNIQUE INDEX `business_activities_economic_code_consumer_id_key`(`economic_code`, `consumer_id`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
@@ -395,6 +389,7 @@ CREATE TABLE `complexes` (
`updated_at` TIMESTAMP(0) NOT NULL,
`business_activity_id` VARCHAR(191) NOT NULL,
INDEX `complexes_business_activity_id_fkey`(`business_activity_id`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
@@ -415,9 +410,23 @@ CREATE TABLE `poses` (
UNIQUE INDEX `poses_serial_number_key`(`serial_number`),
UNIQUE INDEX `poses_account_id_key`(`account_id`),
INDEX `poses_complex_id_fkey`(`complex_id`),
INDEX `poses_device_id_fkey`(`device_id`),
INDEX `poses_provider_id_fkey`(`provider_id`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `consumer_account_good_favorites` (
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`consumer_account_id` VARCHAR(191) NOT NULL,
`good_id` VARCHAR(191) NOT NULL,
INDEX `consumer_account_good_favorites_good_id_idx`(`good_id`),
INDEX `consumer_account_good_favorites_consumer_account_id_idx`(`consumer_account_id`),
PRIMARY KEY (`consumer_account_id`, `good_id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `goods` (
`id` VARCHAR(191) NOT NULL,
@@ -427,7 +436,7 @@ CREATE TABLE `goods` (
`description` TEXT NULL,
`local_sku` VARCHAR(100) NULL,
`barcode` VARCHAR(100) NULL,
`base_sale_price` DECIMAL(15, 0) NULL DEFAULT 0.00,
`base_sale_price` DECIMAL(15, 0) NULL DEFAULT 0,
`image_url` VARCHAR(255) NULL,
`created_at` TIMESTAMP(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0),
`updated_at` TIMESTAMP(0) NOT NULL,
@@ -440,6 +449,9 @@ CREATE TABLE `goods` (
UNIQUE INDEX `goods_local_sku_key`(`local_sku`),
UNIQUE INDEX `goods_barcode_key`(`barcode`),
INDEX `goods_category_id_idx`(`category_id`),
INDEX `goods_business_activity_id_fkey`(`business_activity_id`),
INDEX `goods_measure_unit_id_fkey`(`measure_unit_id`),
INDEX `goods_sku_id_fkey`(`sku_id`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
@@ -456,6 +468,8 @@ CREATE TABLE `good_categories` (
`updated_at` TIMESTAMP(0) NOT NULL,
`deleted_at` TIMESTAMP(0) NULL,
INDEX `good_categories_complex_id_fkey`(`complex_id`),
INDEX `good_categories_guild_id_fkey`(`guild_id`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
@@ -489,7 +503,6 @@ CREATE TABLE `stock_keeping_units` (
`code` VARCHAR(191) NOT NULL,
`name` VARCHAR(191) NOT NULL,
`VAT` DECIMAL(5, 2) NOT NULL,
`type` ENUM('GOLD') NOT NULL,
`is_public` BOOLEAN NOT NULL DEFAULT true,
`is_domestic` BOOLEAN NOT NULL DEFAULT false,
`guild_id` VARCHAR(191) NOT NULL,
@@ -498,6 +511,7 @@ CREATE TABLE `stock_keeping_units` (
UNIQUE INDEX `stock_keeping_units_code_key`(`code`),
INDEX `stock_keeping_units_code_idx`(`code`),
INDEX `stock_keeping_units_guild_id_fkey`(`guild_id`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
@@ -571,12 +585,18 @@ CREATE TABLE `sales_invoices` (
`customer_id` VARCHAR(191) NULL,
`consumer_account_id` VARCHAR(191) NOT NULL,
`pos_id` VARCHAR(191) NOT NULL,
`settlement_type` ENUM('CASH', 'CREDIT', 'MIXED') NOT NULL,
`discount_amount` DECIMAL(15, 2) NULL,
`tax_amount` DECIMAL(15, 2) NULL,
UNIQUE INDEX `sales_invoices_code_key`(`code`),
UNIQUE INDEX `sales_invoices_tax_id_key`(`tax_id`),
UNIQUE INDEX `sales_invoices_ref_id_key`(`ref_id`),
INDEX `sales_invoices_ref_id_idx`(`ref_id`),
INDEX `sales_invoices_tax_id_idx`(`tax_id`),
INDEX `sales_invoices_consumer_account_id_fkey`(`consumer_account_id`),
INDEX `sales_invoices_customer_id_fkey`(`customer_id`),
INDEX `sales_invoices_pos_id_fkey`(`pos_id`),
UNIQUE INDEX `sales_invoices_invoice_number_pos_id_key`(`invoice_number`, `pos_id`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
@@ -599,8 +619,12 @@ CREATE TABLE `sales_invoice_items` (
`invoice_id` VARCHAR(191) NOT NULL,
`good_id` VARCHAR(191) NOT NULL,
`service_id` VARCHAR(191) NULL,
`discount_amount` DECIMAL(15, 2) NULL,
`tax_amount` DECIMAL(15, 2) NULL,
INDEX `sales_invoice_items_invoice_id_good_id_idx`(`invoice_id`, `good_id`),
INDEX `sales_invoice_items_good_id_fkey`(`good_id`),
INDEX `sales_invoice_items_service_id_fkey`(`service_id`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
@@ -608,16 +632,19 @@ CREATE TABLE `sales_invoice_items` (
CREATE TABLE `sale_invoice_tsp_attempts` (
`id` VARCHAR(191) NOT NULL,
`attempt_no` INTEGER NOT NULL,
`status` ENUM('SUCCESS', 'FAILURE', 'NOT_SEND', 'QUEUED') NOT NULL,
`request_payload` JSON NULL,
`response_payload` JSON NULL,
`status` ENUM('NOT_SEND', 'QUEUED', 'FISCAL_QUEUED', 'SEND_FAILURE', 'SUCCESS', 'FAILURE') NOT NULL,
`message` TEXT NOT NULL,
`sent_at` TIMESTAMP(0) NULL,
`received_at` TIMESTAMP(0) NULL,
`created_at` TIMESTAMP(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0),
`invoice_id` VARCHAR(191) NOT NULL,
`provider_request_payload` JSON NOT NULL,
`raw_request_payload` JSON NOT NULL,
`error_message` TEXT NULL,
`fiscal_warnings` JSON NULL,
`provider_response` JSON NULL,
`validation_errors` JSON NULL,
UNIQUE INDEX `sale_invoice_tsp_attempts_invoice_id_key`(`invoice_id`),
INDEX `sale_invoice_tsp_attempts_status_idx`(`status`),
INDEX `sale_invoice_tsp_attempts_invoice_id_idx`(`invoice_id`),
UNIQUE INDEX `sale_invoice_tsp_attempts_invoice_id_attempt_no_key`(`invoice_id`, `attempt_no`),
@@ -666,7 +693,7 @@ CREATE TABLE `services` (
`updated_at` TIMESTAMP(0) NOT NULL,
`deleted_at` TIMESTAMP(0) NULL,
`category_id` VARCHAR(191) NULL,
`base_sale_price` DECIMAL(15, 0) NOT NULL DEFAULT 0.00,
`base_sale_price` DECIMAL(15, 0) NOT NULL DEFAULT 0,
`account_id` VARCHAR(191) NOT NULL,
`complex_id` VARCHAR(191) NOT NULL,
@@ -693,10 +720,10 @@ CREATE TABLE `service_categories` (
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- AddForeignKey
ALTER TABLE `admin_accounts` ADD CONSTRAINT `admin_accounts_admin_id_fkey` FOREIGN KEY (`admin_id`) REFERENCES `admins`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
ALTER TABLE `admin_accounts` ADD CONSTRAINT `admin_accounts_account_id_fkey` FOREIGN KEY (`account_id`) REFERENCES `accounts`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `admin_accounts` ADD CONSTRAINT `admin_accounts_account_id_fkey` FOREIGN KEY (`account_id`) REFERENCES `accounts`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `admin_accounts` ADD CONSTRAINT `admin_accounts_admin_id_fkey` FOREIGN KEY (`admin_id`) REFERENCES `admins`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `devices` ADD CONSTRAINT `devices_brand_id_fkey` FOREIGN KEY (`brand_id`) REFERENCES `device_brands`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
@@ -771,35 +798,38 @@ ALTER TABLE `provider_accounts` ADD CONSTRAINT `provider_accounts_account_id_fke
ALTER TABLE `provider_accounts` ADD CONSTRAINT `provider_accounts_provider_id_fkey` FOREIGN KEY (`provider_id`) REFERENCES `providers`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `consumer_devices` ADD CONSTRAINT `consumer_devices_consumer_id_fkey` FOREIGN KEY (`consumer_id`) REFERENCES `consumers`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `consumer_accounts` ADD CONSTRAINT `consumer_accounts_consumer_id_fkey` FOREIGN KEY (`consumer_id`) REFERENCES `consumers`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
ALTER TABLE `consumer_account_device` ADD CONSTRAINT `consumer_account_device_consumer_account_id_fkey` FOREIGN KEY (`consumer_account_id`) REFERENCES `consumer_accounts`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `consumer_accounts` ADD CONSTRAINT `consumer_accounts_account_id_fkey` FOREIGN KEY (`account_id`) REFERENCES `accounts`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `consumers_individual` ADD CONSTRAINT `consumers_individual_partner_id_fkey` FOREIGN KEY (`partner_id`) REFERENCES `partners`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
ALTER TABLE `consumer_accounts` ADD CONSTRAINT `consumer_accounts_consumer_id_fkey` FOREIGN KEY (`consumer_id`) REFERENCES `consumers`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `consumers_individual` ADD CONSTRAINT `consumers_individual_consumer_id_fkey` FOREIGN KEY (`consumer_id`) REFERENCES `consumers`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `consumers_legal` ADD CONSTRAINT `consumers_legal_partner_id_fkey` FOREIGN KEY (`partner_id`) REFERENCES `partners`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
ALTER TABLE `consumers_individual` ADD CONSTRAINT `consumers_individual_partner_id_fkey` FOREIGN KEY (`partner_id`) REFERENCES `partners`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `consumers_legal` ADD CONSTRAINT `consumers_legal_consumer_id_fkey` FOREIGN KEY (`consumer_id`) REFERENCES `consumers`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `business_activities` ADD CONSTRAINT `business_activities_guild_id_fkey` FOREIGN KEY (`guild_id`) REFERENCES `guilds`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
ALTER TABLE `consumers_legal` ADD CONSTRAINT `consumers_legal_partner_id_fkey` FOREIGN KEY (`partner_id`) REFERENCES `partners`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `business_activities` ADD CONSTRAINT `business_activities_consumer_id_fkey` FOREIGN KEY (`consumer_id`) REFERENCES `consumers`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `business_activities` ADD CONSTRAINT `business_activities_guild_id_fkey` FOREIGN KEY (`guild_id`) REFERENCES `guilds`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `complexes` ADD CONSTRAINT `complexes_business_activity_id_fkey` FOREIGN KEY (`business_activity_id`) REFERENCES `business_activities`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `poses` ADD CONSTRAINT `poses_account_id_fkey` FOREIGN KEY (`account_id`) REFERENCES `consumer_accounts`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `poses` ADD CONSTRAINT `poses_complex_id_fkey` FOREIGN KEY (`complex_id`) REFERENCES `complexes`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
@@ -810,59 +840,62 @@ ALTER TABLE `poses` ADD CONSTRAINT `poses_device_id_fkey` FOREIGN KEY (`device_i
ALTER TABLE `poses` ADD CONSTRAINT `poses_provider_id_fkey` FOREIGN KEY (`provider_id`) REFERENCES `providers`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `poses` ADD CONSTRAINT `poses_account_id_fkey` FOREIGN KEY (`account_id`) REFERENCES `consumer_accounts`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
ALTER TABLE `consumer_account_good_favorites` ADD CONSTRAINT `consumer_account_good_favorites_consumer_account_id_fkey` FOREIGN KEY (`consumer_account_id`) REFERENCES `consumer_accounts`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `goods` ADD CONSTRAINT `goods_sku_id_fkey` FOREIGN KEY (`sku_id`) REFERENCES `stock_keeping_units`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `goods` ADD CONSTRAINT `goods_measure_unit_id_fkey` FOREIGN KEY (`measure_unit_id`) REFERENCES `measure_units`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `goods` ADD CONSTRAINT `goods_category_id_fkey` FOREIGN KEY (`category_id`) REFERENCES `good_categories`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
ALTER TABLE `consumer_account_good_favorites` ADD CONSTRAINT `consumer_account_good_favorites_good_id_fkey` FOREIGN KEY (`good_id`) REFERENCES `goods`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `goods` ADD CONSTRAINT `goods_business_activity_id_fkey` FOREIGN KEY (`business_activity_id`) REFERENCES `business_activities`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `good_categories` ADD CONSTRAINT `good_categories_guild_id_fkey` FOREIGN KEY (`guild_id`) REFERENCES `guilds`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
ALTER TABLE `goods` ADD CONSTRAINT `goods_category_id_fkey` FOREIGN KEY (`category_id`) REFERENCES `good_categories`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `goods` ADD CONSTRAINT `goods_measure_unit_id_fkey` FOREIGN KEY (`measure_unit_id`) REFERENCES `measure_units`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `goods` ADD CONSTRAINT `goods_sku_id_fkey` FOREIGN KEY (`sku_id`) REFERENCES `stock_keeping_units`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `good_categories` ADD CONSTRAINT `good_categories_complex_id_fkey` FOREIGN KEY (`complex_id`) REFERENCES `complexes`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `stock_keeping_units` ADD CONSTRAINT `stock_keeping_units_guild_id_fkey` FOREIGN KEY (`guild_id`) REFERENCES `guilds`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
ALTER TABLE `good_categories` ADD CONSTRAINT `good_categories_guild_id_fkey` FOREIGN KEY (`guild_id`) REFERENCES `guilds`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `customer_individuals` ADD CONSTRAINT `customer_individuals_customer_id_fkey` FOREIGN KEY (`customer_id`) REFERENCES `customers`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `stock_keeping_units` ADD CONSTRAINT `stock_keeping_units_guild_id_fkey` FOREIGN KEY (`guild_id`) REFERENCES `guilds`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `customer_individuals` ADD CONSTRAINT `customer_individuals_business_activity_id_fkey` FOREIGN KEY (`business_activity_id`) REFERENCES `business_activities`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `customer_legal` ADD CONSTRAINT `customer_legal_customer_id_fkey` FOREIGN KEY (`customer_id`) REFERENCES `customers`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `customer_individuals` ADD CONSTRAINT `customer_individuals_customer_id_fkey` FOREIGN KEY (`customer_id`) REFERENCES `customers`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `customer_legal` ADD CONSTRAINT `customer_legal_business_activity_id_fkey` FOREIGN KEY (`business_activity_id`) REFERENCES `business_activities`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `sales_invoices` ADD CONSTRAINT `sales_invoices_ref_id_fkey` FOREIGN KEY (`ref_id`) REFERENCES `sales_invoices`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `sales_invoices` ADD CONSTRAINT `sales_invoices_customer_id_fkey` FOREIGN KEY (`customer_id`) REFERENCES `customers`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
ALTER TABLE `customer_legal` ADD CONSTRAINT `customer_legal_customer_id_fkey` FOREIGN KEY (`customer_id`) REFERENCES `customers`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `sales_invoices` ADD CONSTRAINT `sales_invoices_consumer_account_id_fkey` FOREIGN KEY (`consumer_account_id`) REFERENCES `consumer_accounts`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `sales_invoices` ADD CONSTRAINT `sales_invoices_customer_id_fkey` FOREIGN KEY (`customer_id`) REFERENCES `customers`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `sales_invoices` ADD CONSTRAINT `sales_invoices_pos_id_fkey` FOREIGN KEY (`pos_id`) REFERENCES `poses`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `sales_invoice_items` ADD CONSTRAINT `sales_invoice_items_invoice_id_fkey` FOREIGN KEY (`invoice_id`) REFERENCES `sales_invoices`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
ALTER TABLE `sales_invoices` ADD CONSTRAINT `sales_invoices_ref_id_fkey` FOREIGN KEY (`ref_id`) REFERENCES `sales_invoices`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `sales_invoice_items` ADD CONSTRAINT `sales_invoice_items_good_id_fkey` FOREIGN KEY (`good_id`) REFERENCES `goods`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `sales_invoice_items` ADD CONSTRAINT `sales_invoice_items_invoice_id_fkey` FOREIGN KEY (`invoice_id`) REFERENCES `sales_invoices`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `sales_invoice_items` ADD CONSTRAINT `sales_invoice_items_service_id_fkey` FOREIGN KEY (`service_id`) REFERENCES `services`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
@@ -877,3 +910,4 @@ ALTER TABLE `sales_invoice_payment_terminal_info` ADD CONSTRAINT `sales_invoice_
-- AddForeignKey
ALTER TABLE `services` ADD CONSTRAINT `services_category_id_fkey` FOREIGN KEY (`category_id`) REFERENCES `service_categories`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
@@ -1,8 +0,0 @@
/*
Warnings:
- You are about to drop the column `type` on the `stock_keeping_units` table. All the data in the column will be lost.
*/
-- AlterTable
ALTER TABLE `stock_keeping_units` DROP COLUMN `type`;
@@ -1,48 +0,0 @@
/*
Warnings:
- You are about to drop the column `request_payload` on the `sale_invoice_tsp_attempts` table. All the data in the column will be lost.
- You are about to drop the column `response_payload` on the `sale_invoice_tsp_attempts` table. All the data in the column will be lost.
- Added the required column `raw_request_payload` to the `sale_invoice_tsp_attempts` table without a default value. This is not possible if the table is not empty.
*/
-- DropForeignKey
ALTER TABLE `sale_invoice_tsp_attempts` DROP FOREIGN KEY `sale_invoice_tsp_attempts_invoice_id_fkey`;
-- DropIndex
DROP INDEX `sale_invoice_tsp_attempts_invoice_id_key` ON `sale_invoice_tsp_attempts`;
-- AlterTable
ALTER TABLE `sale_invoice_tsp_attempts`
ADD COLUMN `provider_request_payload` JSON NULL,
ADD COLUMN `provider_response_payload` JSON NULL,
ADD COLUMN `raw_request_payload` JSON NOT NULL;
UPDATE `sale_invoice_tsp_attempts`
SET `provider_response_payload` = `response_payload`;
UPDATE `sale_invoice_tsp_attempts`
SET `raw_request_payload` = `request_payload`;
ALTER TABLE `sale_invoice_tsp_attempts`
DROP COLUMN `response_payload`,
DROP COLUMN `request_payload`;
-- AddForeignKey
-- Check if the foreign key constraint already exists before adding it
SET @constraint_exists = (
SELECT COUNT(*)
FROM information_schema.TABLE_CONSTRAINTS
WHERE CONSTRAINT_SCHEMA = DATABASE()
AND TABLE_NAME = 'customer_legal'
AND CONSTRAINT_NAME = 'customer_legal_business_activity_id_fkey'
AND CONSTRAINT_TYPE = 'FOREIGN KEY'
);
SET @sql = IF(@constraint_exists = 0,
'ALTER TABLE `customer_legal` ADD CONSTRAINT `customer_legal_business_activity_id_fkey` FOREIGN KEY (`business_activity_id`) REFERENCES `business_activities`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;',
'SELECT "Foreign key constraint customer_legal_business_activity_id_fkey already exists" as message;'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
@@ -1,32 +0,0 @@
/*
Warnings:
- You are about to drop the `consumer_devices` table. If the table is not empty, all the data it contains will be lost.
*/
-- DropForeignKey
ALTER TABLE `consumer_devices` DROP FOREIGN KEY `consumer_devices_consumer_id_fkey`;
-- DropTable
DROP TABLE `consumer_devices`;
-- CreateTable
CREATE TABLE `consumer_account_device` (
`id` VARCHAR(191) NOT NULL,
`device_id` VARCHAR(191) NOT NULL,
`device_name` VARCHAR(191) NULL,
`created_at` TIMESTAMP(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0),
`updated_at` TIMESTAMP(0) NOT NULL,
`consumer_account_id` VARCHAR(191) NOT NULL,
UNIQUE INDEX `consumer_account_device_device_id_key`(`device_id`),
UNIQUE INDEX `consumer_account_device_consumer_account_id_key`(`consumer_account_id`),
INDEX `consumer_account_device_consumer_account_id_idx`(`consumer_account_id`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- AddForeignKey
ALTER TABLE `consumer_account_device` ADD CONSTRAINT `consumer_account_device_consumer_account_id_fkey` FOREIGN KEY (`consumer_account_id`) REFERENCES `consumer_accounts`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `sale_invoice_tsp_attempts` ADD CONSTRAINT `sale_invoice_tsp_attempts_invoice_id_fkey` FOREIGN KEY (`invoice_id`) REFERENCES `sales_invoices`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
@@ -1,16 +0,0 @@
-- CreateTable
CREATE TABLE `consumer_account_goods_favorites` (
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`consumer_account_id` VARCHAR(191) NOT NULL,
`goods_id` VARCHAR(191) NOT NULL,
INDEX `consumer_account_goods_favorites_goods_id_idx`(`goods_id`),
INDEX `consumer_account_goods_favorites_consumer_account_id_idx`(`consumer_account_id`),
PRIMARY KEY (`consumer_account_id`, `goods_id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- AddForeignKey
ALTER TABLE `consumer_account_goods_favorites` ADD CONSTRAINT `consumer_account_goods_favorites_consumer_account_id_fkey` FOREIGN KEY (`consumer_account_id`) REFERENCES `consumer_accounts`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `consumer_account_goods_favorites` ADD CONSTRAINT `consumer_account_goods_favorites_goods_id_fkey` FOREIGN KEY (`goods_id`) REFERENCES `goods`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
@@ -1,31 +0,0 @@
/*
Warnings:
- You are about to drop the `consumer_account_goods_favorites` table. If the table is not empty, all the data it contains will be lost.
*/
-- DropForeignKey
ALTER TABLE `consumer_account_goods_favorites` DROP FOREIGN KEY `consumer_account_goods_favorites_consumer_account_id_fkey`;
-- DropForeignKey
ALTER TABLE `consumer_account_goods_favorites` DROP FOREIGN KEY `consumer_account_goods_favorites_goods_id_fkey`;
-- DropTable
DROP TABLE `consumer_account_goods_favorites`;
-- CreateTable
CREATE TABLE `consumer_account_good_favorites` (
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`consumer_account_id` VARCHAR(191) NOT NULL,
`good_id` VARCHAR(191) NOT NULL,
INDEX `consumer_account_good_favorites_good_id_idx`(`good_id`),
INDEX `consumer_account_good_favorites_consumer_account_id_idx`(`consumer_account_id`),
PRIMARY KEY (`consumer_account_id`, `good_id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- AddForeignKey
ALTER TABLE `consumer_account_good_favorites` ADD CONSTRAINT `consumer_account_good_favorites_consumer_account_id_fkey` FOREIGN KEY (`consumer_account_id`) REFERENCES `consumer_accounts`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `consumer_account_good_favorites` ADD CONSTRAINT `consumer_account_good_favorites_good_id_fkey` FOREIGN KEY (`good_id`) REFERENCES `goods`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
@@ -1,10 +0,0 @@
-- Add as nullable first to support existing rows, backfill, then enforce NOT NULL
ALTER TABLE `sales_invoices`
ADD COLUMN `settlement_type` ENUM('CASH', 'CREDIT', 'MIXED') NULL;
UPDATE `sales_invoices`
SET `settlement_type` = 'CASH'
WHERE `settlement_type` IS NULL;
ALTER TABLE `sales_invoices`
MODIFY `settlement_type` ENUM('CASH', 'CREDIT', 'MIXED') NOT NULL;
@@ -1,26 +0,0 @@
-- 1. Add the new columns
ALTER TABLE `sale_invoice_tsp_attempts`
ADD COLUMN `error_message` TEXT NULL,
ADD COLUMN `fiscal_warnings` JSON NULL,
ADD COLUMN `provider_response` JSON NULL,
ADD COLUMN `validation_errors` JSON NULL;
-- 2. Copy data from the old column to the new JSON column
-- Note: We use a check to ensure we don't try to move invalid data
UPDATE `sale_invoice_tsp_attempts`
SET `provider_response` = CAST(`provider_response_payload` AS JSON)
WHERE `provider_response_payload` IS NOT NULL AND JSON_VALID(`provider_response_payload`);
-- 3. SANITIZE 'provider_request_payload' before converting to JSON
-- This replaces empty strings or invalid JSON with a default empty object '{}'
UPDATE `sale_invoice_tsp_attempts`
SET `provider_request_payload` = '{}'
WHERE `provider_request_payload` IS NULL
OR `provider_request_payload` = ''
OR JSON_VALID(`provider_request_payload`) = 0;
-- 4. Perform the final modifications and drop the old column
ALTER TABLE `sale_invoice_tsp_attempts`
DROP COLUMN `provider_response_payload`,
MODIFY `status` ENUM('NOT_SEND', 'QUEUED', 'FISCAL_QUEUED', 'SEND_FAILURE', 'SUCCESS', 'FAILURE') NOT NULL,
MODIFY `provider_request_payload` JSON NOT NULL;