-- CreateTable
CREATE TABLE `Payer` (
    `payer_id` INTEGER NOT NULL AUTO_INCREMENT,
    `payer_name` VARCHAR(100) NOT NULL,
    `payer_address` VARCHAR(255) NOT NULL,
    `payer_abn` VARCHAR(15) NULL,
    `payer_email` VARCHAR(100) NOT NULL,

    PRIMARY KEY (`payer_id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- CreateTable
CREATE TABLE `Invoice` (
    `payer_id` INTEGER NOT NULL,
    `invoice_suffix_code` INTEGER NOT NULL,
    `invoice_payer_name` VARCHAR(100) NOT NULL,
    `invoice_payer_address` VARCHAR(255) NOT NULL,
    `invoice_payer_abn` VARCHAR(15) NULL,
    `invoice_billing_period_start` DATETIME(3) NOT NULL,
    `invoice_billing_period_end` DATETIME(3) NOT NULL,
    `invoice_due_date` DATETIME(3) NOT NULL,
    `invoice_date` DATETIME(3) NOT NULL,
    `invoice_total_amount` DECIMAL(10, 2) NOT NULL,
    `invoice_note` TEXT NULL,

    PRIMARY KEY (`invoice_date`, `invoice_suffix_code`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- CreateTable
CREATE TABLE `InvoiceItem` (
    `item_id` INTEGER NOT NULL,
    `invoice_date` DATETIME(3) NOT NULL,
    `invoice_suffix_code` INTEGER NOT NULL,
    `item_description` VARCHAR(255) NOT NULL,
    `item_quantity` INTEGER NOT NULL,
    `item_unit_price` DECIMAL(10, 2) NOT NULL,
    `item_unit` VARCHAR(50) NOT NULL,
    `invoice_id` INTEGER NOT NULL,

    PRIMARY KEY (`item_id`, `invoice_date`, `invoice_suffix_code`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- AddForeignKey
ALTER TABLE `Invoice` ADD CONSTRAINT `Invoice_payer_id_fkey` FOREIGN KEY (`payer_id`) REFERENCES `Payer`(`payer_id`) ON DELETE RESTRICT ON UPDATE CASCADE;

-- AddForeignKey
ALTER TABLE `InvoiceItem` ADD CONSTRAINT `InvoiceItem_invoice_date_invoice_suffix_code_fkey` FOREIGN KEY (`invoice_date`, `invoice_suffix_code`) REFERENCES `Invoice`(`invoice_date`, `invoice_suffix_code`) ON DELETE RESTRICT ON UPDATE CASCADE;
