<?php
// envios/cruzar_envios_api.php

session_start();
require __DIR__ . '/../includes/session_control.php';
require_once __DIR__ . '/../includes/user_activity_log.php';
require __DIR__ . '/../cotizaciones/api/_node.php';

header('Content-Type: application/json');
http_response_code(200);

$token = cpn_node_token_or_fail();
$base = cpn_node_api_base();

$action = $_POST['action'] ?? '';
if ($action !== 'cruzar_envios') {
    echo json_encode(['success' => false, 'error' => 'Acción inválida']);
    exit;
}

$idGasto = intval($_POST['idGasto'] ?? 0);
$envios  = $_POST['envios'] ?? [];

if ($idGasto <= 0 || !is_array($envios) || count($envios) === 0) {
    echo json_encode(['success' => false, 'error' => 'Datos faltantes']);
    exit;
}

// Filtrar solo IDs numéricos
$enviosInt = array_filter(array_map('intval', $envios), function ($x) {
    return $x > 0;
});
if (empty($enviosInt)) {
    echo json_encode(['success' => false, 'error' => 'No hay envíos válidos']);
    exit;
}

$r = cpn_node_request('POST', $base . '/api/envios/cruce', $token, [
    'idGasto' => $idGasto,
    'envios' => array_values($enviosInt),
]);

if (!isset($r['ok']) || $r['ok'] !== true) {
    echo json_encode(['success' => false, 'error' => $r['error']['message'] ?? 'Error cruzando envíos en Node']);
    exit;
}

cpn_activity_log_event('envios', 'envios.cruce_create', 'Cruzó envíos con factura', 'gasto', $idGasto, [
    'envios' => array_values($enviosInt),
    'count' => count($enviosInt),
]);

echo json_encode(['success' => true]);
exit;
