-- ═══════════════════════════════════════════════════════════════════════
-- 2026-10-22_05 · Notas de crédito/débito sobre créditos fiscales externos
-- ═══════════════════════════════════════════════════════════════════════
-- Después del cambio desde Control, una devolución de algo facturado allá
-- necesita una nota que referencie un crédito fiscal que no está en el ERP.
-- Se guarda la referencia (generación, número o código, fecha y monto sin
-- IVA) en lugar de id_documento_relacionado. Esa nota no rebaja ningún saldo
-- del ERP (el crédito fiscal está en Control); la de débito sí se cobra aquí.
--
-- Respaldo previo: backups/tinsa_db_pre-nota-externa_2026-10-22.sql
-- Reversa: database/rollback/2026-10-22_05_nota_documento_externo.sql
-- ═══════════════════════════════════════════════════════════════════════

USE tinsa_db;

ALTER TABLE factura
  ADD COLUMN rel_externo_generacion TINYINT(1)   DEFAULT NULL COMMENT 'nota sobre documento externo: 1 físico, 2 electrónico' AFTER id_documento_relacionado,
  ADD COLUMN rel_externo_numero     VARCHAR(36)  DEFAULT NULL COMMENT 'código de generación (electrónico) o número (físico)' AFTER rel_externo_generacion,
  ADD COLUMN rel_externo_fecha      DATE         DEFAULT NULL AFTER rel_externo_numero,
  ADD COLUMN rel_externo_monto      DECIMAL(14,2) DEFAULT NULL COMMENT 'monto sin IVA del crédito fiscal externo' AFTER rel_externo_fecha,
  ADD CONSTRAINT chk_factura_rel_externo CHECK (rel_externo_generacion IS NULL OR rel_externo_generacion IN (1, 2));
