feat(customers): add DTOs for individual and legal customer creation

- Created CreateCustomerIndividualDto for individual customer data with fields: first_name, last_name, national_code, postal_code, is_favorite, and economic_code.
- Created CreateCustomerLegalDto for legal customer data with fields: company_name, economic_code, registration_number, and postal_code.
This commit is contained in:
2026-02-24 12:42:10 +03:30
parent c7cd7cd855
commit b949500482
27 changed files with 4116 additions and 600 deletions
@@ -0,0 +1,55 @@
/*
Warnings:
- You are about to drop the column `account_id` on the `customers` table. All the data in the column will be lost.
- You are about to drop the column `address` on the `customers` table. All the data in the column will be lost.
- You are about to drop the column `email` on the `customers` table. All the data in the column will be lost.
- You are about to drop the column `first_name` on the `customers` table. All the data in the column will be lost.
- You are about to drop the column `is_active` on the `customers` table. All the data in the column will be lost.
- You are about to drop the column `last_name` on the `customers` table. All the data in the column will be lost.
- You are about to drop the column `mobile_number` on the `customers` table. All the data in the column will be lost.
- Added the required column `type` to the `customers` table without a default value. This is not possible if the table is not empty.
*/
-- DropIndex
DROP INDEX `customers_mobile_number_key` ON `customers`;
-- AlterTable
ALTER TABLE `customers` DROP COLUMN `account_id`,
DROP COLUMN `address`,
DROP COLUMN `email`,
DROP COLUMN `first_name`,
DROP COLUMN `is_active`,
DROP COLUMN `last_name`,
DROP COLUMN `mobile_number`,
ADD COLUMN `is_favorite` BOOLEAN NULL DEFAULT false,
ADD COLUMN `type` ENUM('INDIVIDUAL', 'LEGAL') NOT NULL;
-- CreateTable
CREATE TABLE `customer_individuals` (
`customer_id` VARCHAR(191) NOT NULL,
`first_name` VARCHAR(255) NOT NULL,
`last_name` VARCHAR(255) NOT NULL,
`national_id` CHAR(10) NOT NULL,
`postal_code` CHAR(10) NOT NULL,
`economic_code` CHAR(10) NULL,
PRIMARY KEY (`customer_id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `customer_legal` (
`customer_id` VARCHAR(191) NOT NULL,
`company_name` VARCHAR(255) NOT NULL,
`economic_code` CHAR(10) NOT NULL,
`registration_number` CHAR(20) NOT NULL,
`postal_code` CHAR(10) NOT NULL,
PRIMARY KEY (`customer_id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- AddForeignKey
ALTER TABLE `customer_individuals` ADD CONSTRAINT `customer_individuals_customer_id_fkey` FOREIGN KEY (`customer_id`) REFERENCES `customers`(`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 RESTRICT ON UPDATE CASCADE;
@@ -0,0 +1,3 @@
-- AlterTable
ALTER TABLE `sales_invoice_items` ADD COLUMN `discount` DECIMAL(15, 2) NOT NULL DEFAULT 0.00,
ADD COLUMN `pricingModel` ENUM('STANDARD', 'GOLD') NOT NULL DEFAULT 'STANDARD';
@@ -0,0 +1,20 @@
/*
Warnings:
- You are about to drop the column `description` on the `sales_invoices` table. All the data in the column will be lost.
*/
-- AlterTable
ALTER TABLE `customers` MODIFY `type` ENUM('INDIVIDUAL', 'LEGAL', 'UNKNOWN') NOT NULL;
-- AlterTable
ALTER TABLE `sales_invoice_items` ADD COLUMN `notes` TEXT NULL;
-- AlterTable
ALTER TABLE `sales_invoice_payments` MODIFY `payment_method` ENUM('TERMINAL', 'CASH', 'SET_OFF', 'CARD', 'BANK', 'CHECK', 'OTHER') NOT NULL;
-- AlterTable
ALTER TABLE `sales_invoices` DROP COLUMN `description`,
ADD COLUMN `invoice_date` TIMESTAMP(0) NULL DEFAULT CURRENT_TIMESTAMP(0),
ADD COLUMN `notes` TEXT NULL,
ADD COLUMN `unknown_customer` JSON NULL;