<?php
// update_variacion.php
header('Content-Type: application/json; charset=UTF-8');
include '../includes/session_control.php';
require_once '../cotizaciones/api/_node.php';
require_once __DIR__ . '/../includes/user_activity_log.php';

// Validar que vengan los parámetros esperados
if (!isset($_POST['id'], $_POST['field'], $_POST['value'])) {
    echo json_encode(['status' => 'error', 'msg' => 'Parámetros inválidos']);
    exit;
}

$id = intval($_POST['id']);
$field = trim($_POST['field']);
$value = trim($_POST['value']);

// Lista segura de campos editables
$allowedFields = [
    'referenciaCPN',
    'referenciaProveedor',
    'txtColor',
    'idEstado',
    'idLinea',
    'idTipoMinInventario',
    'minVenta',
    'multiploVenta',
    'inventario',
    'precioListaProveedor',
    'PVP',
    'PVPReducido',
    'PVPantesImpuestos',
    'PVPreducidoantesImpuestos'
];

if (!$id || !in_array($field, $allowedFields)) {
    echo json_encode(['status' => 'error', 'msg' => 'Campo no permitido o ID inválido']);
    exit;
}

// Normalizar valores si es precio
if (in_array($field, ['precioListaProveedor', 'PVP', 'PVPReducido', 'PVPantesImpuestos', 'PVPreducidoantesImpuestos'])) {
    $value = (int) str_replace(['$', '.', ','], '', $value);
}

$token = cpn_node_token_or_fail();
$base = cpn_node_api_base();

$r = cpn_node_request('PATCH', $base . '/api/productos/variaciones/' . urlencode((string)$id), $token, [
    'field' => $field,
    'value' => $value,
]);

if (!empty($r['ok'])) {
    cpn_activity_log_event(
        'Productos',
        'productos.variacion_update_field',
        'Actualizó variación #' . $id . ' (campo: ' . $field . ')',
        'variacion',
        $id,
        ['field' => $field]
    );
    echo json_encode(['status' => 'ok']);
    exit;
}

$msg = $r['error']['message'] ?? 'No se pudo actualizar';
echo json_encode(['status' => 'error', 'msg' => $msg]);
