-- La condicion electronica pertenece a la serie, no al tipo de comprobante.
-- es_electronico: 0=No electronico, 1=Electronico.

SET @tipo_es_electronico_exists := (
    SELECT COUNT(*) FROM information_schema.columns
    WHERE table_schema = DATABASE()
      AND table_name = 'facturacion_tipo_comprobante'
      AND column_name = 'es_electronico'
);
SET @sql_drop_tipo_es_electronico := IF(
    @tipo_es_electronico_exists > 0,
    'ALTER TABLE facturacion_tipo_comprobante DROP COLUMN es_electronico',
    'SELECT 1'
);
PREPARE stmt_drop_tipo_es_electronico FROM @sql_drop_tipo_es_electronico;
EXECUTE stmt_drop_tipo_es_electronico;
DEALLOCATE PREPARE stmt_drop_tipo_es_electronico;

SET @tipo_es_tributario_exists := (
    SELECT COUNT(*) FROM information_schema.columns
    WHERE table_schema = DATABASE()
      AND table_name = 'facturacion_tipo_comprobante'
      AND column_name = 'es_tributario'
);
SET @sql_drop_tipo_es_tributario := IF(
    @tipo_es_tributario_exists > 0,
    'ALTER TABLE facturacion_tipo_comprobante DROP COLUMN es_tributario',
    'SELECT 1'
);
PREPARE stmt_drop_tipo_es_tributario FROM @sql_drop_tipo_es_tributario;
EXECUTE stmt_drop_tipo_es_tributario;
DEALLOCATE PREPARE stmt_drop_tipo_es_tributario;

SET @serie_modalidad_exists := (
    SELECT COUNT(*) FROM information_schema.columns
    WHERE table_schema = DATABASE()
      AND table_name = 'facturacion_series'
      AND column_name = 'modalidad_emision'
);
SET @sql_drop_serie_modalidad := IF(
    @serie_modalidad_exists > 0,
    'ALTER TABLE facturacion_series DROP COLUMN modalidad_emision',
    'SELECT 1'
);
PREPARE stmt_drop_serie_modalidad FROM @sql_drop_serie_modalidad;
EXECUTE stmt_drop_serie_modalidad;
DEALLOCATE PREPARE stmt_drop_serie_modalidad;

SET @serie_es_electronico_exists := (
    SELECT COUNT(*) FROM information_schema.columns
    WHERE table_schema = DATABASE()
      AND table_name = 'facturacion_series'
      AND column_name = 'es_electronico'
);
SET @sql_serie_es_electronico := IF(
    @serie_es_electronico_exists = 0,
    'ALTER TABLE facturacion_series ADD COLUMN es_electronico TINYINT(1) NOT NULL DEFAULT 1 COMMENT ''0=No electronico, 1=Electronico'' AFTER serie',
    'SELECT 1'
);
PREPARE stmt_serie_es_electronico FROM @sql_serie_es_electronico;
EXECUTE stmt_serie_es_electronico;
DEALLOCATE PREPARE stmt_serie_es_electronico;

SET @comprobante_modalidad_exists := (
    SELECT COUNT(*) FROM information_schema.columns
    WHERE table_schema = DATABASE()
      AND table_name = 'facturacion_comprobantes'
      AND column_name = 'modalidad_emision'
);
SET @sql_drop_comprobante_modalidad := IF(
    @comprobante_modalidad_exists > 0,
    'ALTER TABLE facturacion_comprobantes DROP COLUMN modalidad_emision',
    'SELECT 1'
);
PREPARE stmt_drop_comprobante_modalidad FROM @sql_drop_comprobante_modalidad;
EXECUTE stmt_drop_comprobante_modalidad;
DEALLOCATE PREPARE stmt_drop_comprobante_modalidad;

INSERT INTO facturacion_tipo_comprobante
    (codigo, descripcion, afecta_igv, estado, created_at)
VALUES
    ('00', 'Documento interno', 0, 1, NOW())
ON DUPLICATE KEY UPDATE
    descripcion = VALUES(descripcion),
    estado = 1,
    deleted_at = NULL;

UPDATE facturacion_series fs
INNER JOIN facturacion_tipo_comprobante tc ON tc.id = fs.tipo_comprobante_id
SET fs.es_electronico = 0
WHERE tc.codigo = '00';
