<?php
header('Content-Type: application/json');

if (session_status() !== PHP_SESSION_ACTIVE) {
  session_start();
}

require_once __DIR__ . '/../includes/session_control.php';
require_once __DIR__ . '/../cotizaciones/api/_node.php';

$token = cpn_node_token_or_fail();
$base = cpn_node_api_base();

$action = $_REQUEST['action'] ?? '';

// Nota: este endpoint mantiene el contrato usado por pedido.php:
// - action=list   => devuelve ARRAY de deducciones
// - action=listsel => devuelve { lista: [...] }
// - add/delete     => devuelve { success: true/false }

switch ($action) {
  case 'list': {
      $idPedido = intval($_REQUEST['idPedido'] ?? 0);
      if ($idPedido <= 0) {
        echo json_encode([]);
        exit;
      }

      $r = cpn_node_request('GET', $base . '/api/ordenes/pedidos/' . urlencode((string)$idPedido) . '/deducciones', $token, null);
      if (!isset($r['ok']) || $r['ok'] !== true) {
        echo json_encode([]);
        exit;
      }

      echo json_encode($r['data'] ?? []);
      exit;
    }

  case 'listsel': {
      $r = cpn_node_request('GET', $base . '/api/ordenes/deducciones/meta', $token, null);
      if (!isset($r['ok']) || $r['ok'] !== true) {
        echo json_encode(['lista' => []]);
        exit;
      }

      echo json_encode(['lista' => $r['data']['lista'] ?? []]);
      exit;
    }

  case 'add': {
      $idPedido = intval($_POST['idPedido'] ?? 0);
      $idDeduccion = intval($_POST['idDeduccion'] ?? 0);
      $porcentajeDeduccion = floatval($_POST['porcentajeDeduccion'] ?? 0);
      $valorDeduccion = floatval($_POST['valorDeduccion'] ?? 0);

      if ($idPedido <= 0 || $idDeduccion <= 0) {
        echo json_encode(['success' => false, 'error' => 'Datos inválidos']);
        exit;
      }

      $r = cpn_node_request('POST', $base . '/api/ordenes/pedidos/' . urlencode((string)$idPedido) . '/deducciones', $token, [
        'idDeduccion' => $idDeduccion,
        'porcentajeDeduccion' => $porcentajeDeduccion,
        'valorDeduccion' => $valorDeduccion,
      ]);

      if (!isset($r['ok']) || $r['ok'] !== true) {
        $msg = $r['error']['message'] ?? 'No se pudo agregar.';
        echo json_encode(['success' => false, 'error' => $msg]);
        exit;
      }

      echo json_encode(['success' => true]);
      exit;
    }

  case 'delete': {
      $idRegistro = intval($_POST['idRegistro'] ?? 0);
      if ($idRegistro <= 0) {
        echo json_encode(['success' => false, 'error' => 'ID inválido']);
        exit;
      }

      $r = cpn_node_request('DELETE', $base . '/api/ordenes/deducciones/' . urlencode((string)$idRegistro), $token, null);
      if (!isset($r['ok']) || $r['ok'] !== true) {
        $msg = $r['error']['message'] ?? 'No se pudo eliminar.';
        echo json_encode(['success' => false, 'error' => $msg]);
        exit;
      }

      echo json_encode(['success' => true]);
      exit;
    }

  default:
    echo json_encode(['success' => false, 'error' => 'Acción no válida']);
    exit;
}
