-- LP System V2 migration 0003_m2_sales_money: M2: invitations (A6), no-deposit eligibility (A7), split payment lines (A5).
-- GENERATED by scripts/generate-migration.ts from prisma schema snapshots. Do not edit by hand.
-- Every table states ENGINE, charset and collation explicitly; nothing relies on server or database defaults.
-- Every statement can be re-run safely (IF NOT EXISTS / INSERT IGNORE) so an interrupted migration always resumes.
-- AlterTable
ALTER TABLE `Customer` ADD COLUMN IF NOT EXISTS `noDepositApprovedAt` DATETIME(3) NULL,
    ADD COLUMN IF NOT EXISTS `noDepositApprovedById` TEXT NULL,
    ADD COLUMN IF NOT EXISTS `noDepositEligibleType` VARCHAR(32) NULL,
    ADD COLUMN IF NOT EXISTS `noDepositReason` TEXT NULL;

-- CreateTable
CREATE TABLE IF NOT EXISTS `Invitation` (
    `id` VARCHAR(191) NOT NULL,
    `customerId` VARCHAR(191) NOT NULL,
    `email` VARCHAR(191) NOT NULL,
    `tokenHash` VARCHAR(64) NOT NULL,
    `status` VARCHAR(16) NOT NULL DEFAULT 'SENT',
    `expiresAt` DATETIME(3) NOT NULL,
    `lastSentAt` DATETIME(3) NOT NULL,
    `resendCount` INTEGER NOT NULL DEFAULT 0,
    `acceptedAt` DATETIME(3) NULL,
    `acceptedUserId` VARCHAR(191) NULL,
    `acceptedVia` VARCHAR(16) NULL,
    `revokedAt` DATETIME(3) NULL,
    `revokedById` VARCHAR(191) NULL,
    `createdById` VARCHAR(191) NOT NULL,
    `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
    `updatedAt` DATETIME(3) NOT NULL,

    UNIQUE INDEX `Invitation_tokenHash_key`(`tokenHash`),
    INDEX `Invitation_customerId_status_idx`(`customerId`, `status`),
    INDEX `Invitation_status_expiresAt_idx`(`status`, `expiresAt`),
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_nopad_bin;

-- CreateTable
CREATE TABLE IF NOT EXISTS `NoDepositEligibilityEvent` (
    `id` VARCHAR(191) NOT NULL,
    `customerId` VARCHAR(191) NOT NULL,
    `action` VARCHAR(16) NOT NULL,
    `eligibleType` VARCHAR(32) NULL,
    `reason` TEXT NOT NULL,
    `actorId` VARCHAR(191) NOT NULL,
    `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),

    INDEX `NoDepositEligibilityEvent_customerId_createdAt_idx`(`customerId`, `createdAt`),
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_nopad_bin;

-- CreateTable
CREATE TABLE IF NOT EXISTS `PaymentLine` (
    `id` VARCHAR(191) NOT NULL,
    `paymentId` VARCHAR(191) NOT NULL,
    `method` ENUM('CASH', 'BANK_TRANSFER', 'GCASH', 'MAYA', 'CHEQUE', 'VOUCHER', 'OTHER', 'FUND_TRANSFER', 'E_WALLET', 'QR_PAYMENT', 'DEBIT_CARD', 'CREDIT_CARD', 'APPLE_PAY') NOT NULL,
    `amount` DECIMAL(12, 2) NOT NULL,
    `referenceNumber` TEXT NULL,

    INDEX `PaymentLine_paymentId_idx`(`paymentId`),
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_nopad_bin;

-- AddForeignKey
ALTER TABLE `Invitation` ADD CONSTRAINT `Invitation_customerId_fkey` FOREIGN KEY IF NOT EXISTS (`customerId`) REFERENCES `Customer`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;

-- AddForeignKey
ALTER TABLE `NoDepositEligibilityEvent` ADD CONSTRAINT `NoDepositEligibilityEvent_customerId_fkey` FOREIGN KEY IF NOT EXISTS (`customerId`) REFERENCES `Customer`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;

-- AddForeignKey
ALTER TABLE `PaymentLine` ADD CONSTRAINT `PaymentLine_paymentId_fkey` FOREIGN KEY IF NOT EXISTS (`paymentId`) REFERENCES `Payment`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;

INSERT INTO `SystemMeta` (`key`, `value`, `updatedAt`) VALUES ('schema_version', '3', CURRENT_TIMESTAMP(3)) ON DUPLICATE KEY UPDATE `value` = '3', `updatedAt` = CURRENT_TIMESTAMP(3);
