<?php
// envios/agregar_envio.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 !== 'add_envio') {
    echo json_encode(['success' => false, 'error' => 'Acción inválida']);
    exit;
}

// Obtener y sanitizar campos
$fecha            = $_POST['fecha']               ?? '';
$idEmpresa        = intval($_POST['idEmpresa']    ?? 0);
$idFormaEntrega   = intval($_POST['idFormaEntrega'] ?? 0);
$idProveedorEnvio = intval($_POST['idProveedorEnvio'] ?? 0);
$idTransportadora = intval($_POST['idTransportadora'] ?? 0) ?: null;
$descripcion      = trim($_POST['descripcion']    ?? '');
$guiaSeguimiento  = trim($_POST['guiaSeguimiento'] ?? '');
$precioEnvio      = floatval(str_replace(['.', ' '], ['', ''], $_POST['precioEnvio'] ?? '0'));
$observaciones    = trim($_POST['observaciones']  ?? '');
$largo_paquete    = isset($_POST['largo_paquete'])   && $_POST['largo_paquete'] !== ''
    ? floatval($_POST['largo_paquete']) : null;
$alto_paquete     = isset($_POST['alto_paquete'])    && $_POST['alto_paquete'] !== ''
    ? floatval($_POST['alto_paquete']) : null;
$ancho_paquete    = isset($_POST['ancho_paquete'])    && $_POST['ancho_paquete'] !== ''
    ? floatval($_POST['ancho_paquete']) : null;
$peso_kg          = isset($_POST['peso_kg'])          && $_POST['peso_kg'] !== ''
    ? floatval($_POST['peso_kg']) : null;
$noCajas          = isset($_POST['noCajas'])     && $_POST['noCajas'] !== ''
    ? intval($_POST['noCajas']) : null;

// Validar campos obligatorios
if (empty($fecha) || $idEmpresa <= 0 || $idFormaEntrega <= 0 || $idProveedorEnvio <= 0) {
    echo json_encode(['success' => false, 'error' => 'Faltan campos obligatorios']);
    exit;
}

$payload = [
    'fecha' => $fecha,
    'idEmpresa' => $idEmpresa,
    'idFormaEntrega' => $idFormaEntrega,
    'idProveedorEnvio' => $idProveedorEnvio,
    'idTransportadora' => $idTransportadora,
    'descripcion' => $descripcion,
    'guiaSeguimiento' => $guiaSeguimiento,
    'precioEnvio' => $precioEnvio,
    'observaciones' => $observaciones,
    'largo_paquete' => $largo_paquete,
    'alto_paquete' => $alto_paquete,
    'ancho_paquete' => $ancho_paquete,
    'peso_kg' => $peso_kg,
    'noCajas' => $noCajas,
];

$r = cpn_node_request('POST', $base . '/api/envios', $token, $payload);
if (!isset($r['ok']) || $r['ok'] !== true) {
    echo json_encode(['success' => false, 'error' => $r['error']['message'] ?? 'Error creando envío en Node']);
    exit;
}

cpn_activity_log_event('envios', 'envios.envio_add', 'Creó envío', 'envio', $r['data']['id'] ?? null, [
    'idEmpresa' => $idEmpresa,
    'idFormaEntrega' => $idFormaEntrega,
    'idProveedorEnvio' => $idProveedorEnvio,
    'idTransportadora' => $idTransportadora,
    'precioEnvio' => $precioEnvio,
]);

echo json_encode(['success' => true]);
exit;
