ALTER TABLE fe_documentos
    ADD COLUMN IF NOT EXISTS webhook_url VARCHAR(500) NULL,
    ADD COLUMN IF NOT EXISTS webhook_token VARCHAR(255) NULL,
    ADD COLUMN IF NOT EXISTS app_webhook_entregado_en DATETIME NULL,
    ADD COLUMN IF NOT EXISTS app_webhook_intentos SMALLINT UNSIGNED NOT NULL DEFAULT 0,
    ADD COLUMN IF NOT EXISTS app_webhook_error TEXT NULL;

ALTER TABLE fe_mensajes_receptor
    ADD COLUMN IF NOT EXISTS webhook_url VARCHAR(500) NULL,
    ADD COLUMN IF NOT EXISTS webhook_token VARCHAR(255) NULL,
    ADD COLUMN IF NOT EXISTS app_webhook_entregado_en DATETIME NULL,
    ADD COLUMN IF NOT EXISTS app_webhook_intentos SMALLINT UNSIGNED NOT NULL DEFAULT 0,
    ADD COLUMN IF NOT EXISTS app_webhook_error TEXT NULL;

UPDATE fe_documentos d
INNER JOIN pedidos p ON p.fe_clave = d.clave
SET d.webhook_url = COALESCE(NULLIF(d.webhook_url, ''), JSON_UNQUOTE(JSON_EXTRACT(p.fe_payload_json, '$.webhook_url'))),
    d.webhook_token = COALESCE(NULLIF(d.webhook_token, ''), JSON_UNQUOTE(JSON_EXTRACT(p.fe_payload_json, '$.webhook_token')))
WHERE d.clave IS NOT NULL
  AND d.clave <> ''
  AND p.fe_payload_json IS NOT NULL
  AND JSON_VALID(p.fe_payload_json) = 1
  AND (d.webhook_url IS NULL OR d.webhook_url = '' OR d.webhook_token IS NULL OR d.webhook_token = '');
