CREATE TABLE IF NOT EXISTS facturacion_motivos_nota (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    tipo CHAR(1) NOT NULL COMMENT 'C = nota de credito, D = nota de debito',
    codigo VARCHAR(10) NOT NULL,
    descripcion VARCHAR(180) NOT NULL,
    estado TINYINT(1) NOT NULL DEFAULT 1,
    created_at DATETIME NOT NULL,
    updated_at DATETIME NULL,
    deleted_at DATETIME NULL,
    UNIQUE KEY uq_fact_motivos_nota (tipo, codigo),
    KEY idx_fact_motivos_nota_tipo (tipo),
    KEY idx_fact_motivos_nota_estado (estado)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT IGNORE INTO facturacion_motivos_nota
    (id, tipo, codigo, descripcion, estado, created_at)
VALUES
    (1, 'C', '01', 'Anulacion de la operacion', 1, NOW()),
    (2, 'C', '03', 'Descuento global', 1, NOW()),
    (3, 'C', '04', 'Descuento por item', 1, NOW()),
    (4, 'C', '05', 'Devolucion total', 1, NOW()),
    (5, 'C', '06', 'Devolucion por item', 1, NOW()),
    (6, 'C', '07', 'Bonificacion', 1, NOW()),
    (7, 'C', '08', 'Ajustes por diferencia de precio', 1, NOW()),
    (8, 'C', '09', 'Otros conceptos', 1, NOW()),
    (9, 'D', '01', 'Intereses por mora', 1, NOW()),
    (10, 'D', '02', 'Aumento en el valor', 1, NOW()),
    (11, 'D', '03', 'Penalidades', 1, NOW()),
    (12, 'D', '04', 'Ajustes por diferencia de precio', 1, NOW()),
    (13, 'D', '05', 'Otros conceptos', 1, NOW());

ALTER TABLE facturacion_comprobantes
    ADD COLUMN comprobante_referencia_id BIGINT UNSIGNED NULL AFTER tipo_comprobante_id,
    ADD COLUMN nota_motivo_id BIGINT UNSIGNED NULL AFTER comprobante_referencia_id,
    ADD COLUMN nota_motivo_codigo VARCHAR(10) NULL AFTER nota_motivo_id,
    ADD COLUMN nota_motivo_descripcion VARCHAR(180) NULL AFTER nota_motivo_codigo,
    ADD KEY idx_fact_comp_ref (comprobante_referencia_id),
    ADD KEY idx_fact_comp_nota_motivo (nota_motivo_id);

ALTER TABLE facturacion_comprobantes
    ADD CONSTRAINT fk_fact_comp_ref
        FOREIGN KEY (comprobante_referencia_id) REFERENCES facturacion_comprobantes(id);

ALTER TABLE facturacion_comprobantes
    ADD CONSTRAINT fk_fact_comp_nota_motivo
        FOREIGN KEY (nota_motivo_id) REFERENCES facturacion_motivos_nota(id);
