import { applyCors, isAllowedOrigin } from './_cors.js'; import { getBcConfig, getBCToken } from '../bc-runtime.js'; import { applyBusinessCentralCpnp, applyBusinessCentralSync } from '../bc-sync-runtime.js'; function setCors(req, res) { applyCors(req, res, 'POST, OPTIONS'); } export default async function handler(req, res) { setCors(req, res); if (req.method === 'OPTIONS') return res.status(204).end(); const origin = req.headers.origin; if (origin && !isAllowedOrigin(origin)) { return res.status(403).json({ error: 'Forbidden' }); } if (req.method !== 'POST') { return res.status(405).json({ error: 'Method not allowed' }); } const { headers, row, articleNo, cpnpNo, previewToken } = req.body || {}; try { const config = getBcConfig(); const token = await getBCToken(config); if (Array.isArray(headers) && Array.isArray(row)) { const result = await applyBusinessCentralSync(config, token, headers, row, previewToken); return res.json({ success: true, ...result }); } if (articleNo && cpnpNo !== undefined) { const result = await applyBusinessCentralCpnp(config, token, articleNo, cpnpNo, previewToken); return res.json(result); } return res.status(400).json({ error: 'Missing headers/row or articleNo/cpnpNo' }); } catch (err) { console.error('[bc-sync-apply] error:', err.message); return res.status(err.statusCode || 500).json({ success: false, error: err.message }); } }