<?php
// ventas_pagos_api.php
header('Content-Type: application/json');
if (session_status() !== PHP_SESSION_ACTIVE) {
  session_start();
}
require __DIR__ . '/../includes/session_control.php';
require_once __DIR__ . '/../cotizaciones/api/_node.php';

$action  = $_REQUEST['action'] ?? '';
$idVenta = isset($_REQUEST['idVenta']) ? (int)$_REQUEST['idVenta'] : 0;

$token = cpn_node_token_or_fail();
$base = cpn_node_api_base();

if ($action === 'list') {
  if (!$idVenta) {
    echo json_encode([]);
    exit;
  }
  $url = $base . '/api/ventas/ordenes/' . urlencode((string)$idVenta) . '/pagos';
  $r = cpn_node_request('GET', $url, $token);
  if (!isset($r['ok']) || $r['ok'] !== true) {
    http_response_code($r['_http'] ?? 500);
    echo json_encode([]);
    exit;
  }
  $data = $r['data'] ?? [];
  if (!is_array($data)) $data = [];
  echo json_encode($data);
  exit;
}

if ($action === 'listsel') {
  $url = $base . '/api/ventas/pagos/meta';
  $r = cpn_node_request('GET', $url, $token);
  if (!isset($r['ok']) || $r['ok'] !== true) {
    http_response_code($r['_http'] ?? 500);
    echo json_encode(['tipos' => [], 'medios' => []]);
    exit;
  }
  $meta = $r['data'] ?? [];
  echo json_encode([
    'tipos' => $meta['tipos'] ?? [],
    'medios' => $meta['medios'] ?? [],
  ]);
  exit;
}

if ($action === 'add') {
  if (!$idVenta) {
    http_response_code(400);
    echo json_encode(['success' => false]);
    exit;
  }
  $url = $base . '/api/ventas/ordenes/' . urlencode((string)$idVenta) . '/pagos';
  $payload = [
    'fecha' => $_POST['fecha'] ?? null,
    'idTipo' => $_POST['idTipo'] ?? null,
    'idMedio' => $_POST['idMedio'] ?? null,
    'refPago' => $_POST['refPago'] ?? null,
    'valorPago' => $_POST['valorPago'] ?? 0,
  ];
  $r = cpn_node_request('POST', $url, $token, $payload);
  if (!isset($r['ok']) || $r['ok'] !== true) {
    http_response_code($r['_http'] ?? 500);
    echo json_encode(['success' => false, 'error' => ($r['error']['message'] ?? 'Error')]);
    exit;
  }
  echo json_encode(['success' => true]);
  exit;
}

if ($action === 'delete') {
  $id = isset($_POST['idRegistro']) ? (int)$_POST['idRegistro'] : 0;
  if (!$id) {
    http_response_code(400);
    echo json_encode(['success' => false]);
    exit;
  }
  $url = $base . '/api/ventas/pagos/' . urlencode((string)$id);
  $r = cpn_node_request('DELETE', $url, $token);
  if (!isset($r['ok']) || $r['ok'] !== true) {
    http_response_code($r['_http'] ?? 500);
    echo json_encode(['success' => false, 'error' => ($r['error']['message'] ?? 'Error')]);
    exit;
  }
  echo json_encode(['success' => true]);
  exit;
}

echo json_encode(['error' => 'Acción inválida']);
