// ══════════════════════════════════════════════
// RRB Admin — Module: pedidos-stock
// ══════════════════════════════════════════════

async function psCargar() {
  psIniciarMes();
  const el = document.getElementById('ps-lista');
  if (!el) return;
  const mesVal = document.getElementById('ps-mes')?.value || '';
  let qs = '';
  if (mesVal) {
    const [y, m] = mesVal.split('-');
    const ultimo = new Date(+y, +m, 0).getDate();
    qs = `?desde=${y}-${m}-01&hasta=${y}-${m}-${ultimo}`;
  }
  el.innerHTML = '<p style="color:var(--muted);font-size:13px">⏳ Cargando pedidos...</p>';
  try {
    const data = await api('GET', 'api/pedidos-stock.php' + qs);
    if (!data.ok) { el.innerHTML = `<p style="color:red">❌ Error: ${data.error}</p>`; return; }
    const pedidos = data.pedidos;
    const mesLbl  = document.getElementById('ps-mes')?.selectedOptions[0]?.text || '';
    if (!pedidos.length) {
      el.innerHTML = `<p style="color:var(--muted);font-size:13px">No hay pedidos de stock en ${mesLbl}.</p>`;
      return;
    }

    const tarjetas = pedidos.map(p => {
      const statusStyle = PS_STATUS_STYLE[p.statusentrega] ||
        'background:#e9ecef;color:#495057;padding:3px 10px;border-radius:12px;font-size:11px;font-weight:700';
      const fEntrega = p.fecha_entrega
        ? new Date(p.fecha_entrega + 'T00:00:00').toLocaleDateString('es-MX', {day:'2-digit',month:'short',year:'numeric'})
        : '—';
      const centroPide    = p.centro_pide    || `Centro ${p.id_centro_pide}`    || '—';
      const centroEntrega = p.centro_entrega || `Centro ${p.id_centro_entrega}` || '—';

      // Productos
      const prods = (p.productos || []);
      const prodsHtml = prods.length === 0
        ? '<span style="color:var(--muted);font-size:12px">Sin productos registrados</span>'
        : prods.map(pr => {
            const pres = pr.presentacion ? ` <span style="color:var(--muted);font-size:11px">(${pr.presentacion})</span>` : '';
            return `<span style="display:inline-flex;align-items:center;gap:4px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:6px;padding:3px 8px;font-size:12px;margin:2px">
              <b>${pr.cant}</b>&times; ${pr.nombre}${pres}
            </span>`;
          }).join('');

      return `
        <div style="border:1px solid var(--border);border-radius:10px;padding:14px 16px;margin-bottom:10px;background:var(--bg-primary)">
          <!-- Encabezado de la tarjeta -->
          <div style="display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-bottom:10px">
            <span style="font-weight:700;font-size:14px;color:var(--primary)">#${p.idtransacciones}</span>
            <span style="display:flex;align-items:center;gap:5px;font-size:13px">
              <span style="font-weight:600">${centroPide}</span>
              <span style="color:var(--muted);font-size:16px">→</span>
              <span style="font-weight:600">${centroEntrega}</span>
            </span>
            <span style="margin-left:auto;display:flex;align-items:center;gap:10px;flex-wrap:wrap">
              <span style="font-size:12px;color:var(--muted)">📦 Entrega: <b>${fEntrega}</b></span>
              <span style="${statusStyle}">${p.statusentrega || '—'}</span>
            </span>
          </div>
          <!-- Productos -->
          <div style="border-top:1px solid var(--border);padding-top:8px">
            <span style="font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;margin-right:8px">Productos:</span>
            ${prodsHtml}
          </div>
          ${p.observaciones ? `<div style="margin-top:8px;font-size:12px;color:var(--muted)"><b>Obs:</b> ${p.observaciones}</div>` : ''}
        </div>`;
    }).join('');

    el.innerHTML = `
      <div>
        ${tarjetas}
        <p style="margin-top:8px;font-size:12px;color:var(--muted)">${pedidos.length} pedido${pedidos.length !== 1 ? 's' : ''} en ${mesLbl}</p>
      </div>`;
  } catch(e) {
    el.innerHTML = `<p style="color:red">❌ Error al cargar pedidos: ${e.message}</p>`;
  }
}

// ─── Estado interno del modal de nuevo pedido ─────────────────────────────
let _psStock = [];      // stock del centro origen seleccionado
let _psDestinos = [];   // destinos permitidos para el origen
let _psCarrito = [];    // [{idprod, nombre, presentacion, cant, disponible}]

async function psNuevoPedido() {
  // Cargar centros
  const data = await api('GET', 'api/pedidos-stock-centros.php');
  if (!data.ok) { alert('Error al cargar centros: ' + data.error); return; }
  const centros = data.centros;

  const opsCentros = centros.map(c =>
    `<option value="${c.idusuarios_ci}">${c.idusuarios_ci} - ${c.nombre}</option>`
  ).join('');

  const modal = document.createElement('div');
  modal.id = 'ps-modal-nuevo';
  modal.style.cssText = 'position:fixed;inset:0;background:rgba(0,0,0,.65);z-index:700;display:flex;align-items:center;justify-content:center;padding:16px';
  modal.innerHTML = `
    <div style="background:#ffffff;color:#212529;border-radius:12px;width:100%;max-width:700px;max-height:92vh;overflow-y:auto;box-shadow:0 12px 40px rgba(0,0,0,.45)">
      <!-- Header -->
      <div style="padding:18px 24px;border-bottom:2px solid #dee2e6;display:flex;justify-content:space-between;align-items:center;background:#f8f9fa;border-radius:12px 12px 0 0">
        <h3 style="margin:0;font-size:1.1rem;color:#0d6efd;font-weight:700">🚚 Nuevo Pedido de Stock</h3>
        <button onclick="document.getElementById('ps-modal-nuevo').remove()" style="background:none;border:none;font-size:22px;cursor:pointer;color:#6c757d;line-height:1">×</button>
      </div>

      <!-- Centros -->
      <div style="padding:20px 24px;background:#ffffff">
        <div style="display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px">
          <div>
            <label style="font-size:11px;font-weight:700;color:#6c757d;display:block;margin-bottom:6px;text-transform:uppercase">Centro Origen (quien envía)</label>
            <select id="ps-origen" onchange="psCargarStock()" style="width:100%;padding:9px 12px;border:1px solid #ced4da;border-radius:6px;font-size:13px;background:#fff;color:#212529">
              <option value="">-- Seleccionar --</option>
              ${opsCentros}
            </select>
          </div>
          <div>
            <label style="font-size:11px;font-weight:700;color:#6c757d;display:block;margin-bottom:6px;text-transform:uppercase">Centro Destino (quien recibe)</label>
            <select id="ps-destino" style="width:100%;padding:9px 12px;border:1px solid #ced4da;border-radius:6px;font-size:13px;background:#fff;color:#212529">
              <option value="">-- Primero selecciona origen --</option>
            </select>
          </div>
        </div>
        <div>
          <label style="font-size:11px;font-weight:700;color:#6c757d;display:block;margin-bottom:6px;text-transform:uppercase">Observaciones (opcional)</label>
          <input id="ps-obs" type="text" placeholder="Notas del pedido..." style="width:100%;padding:9px 12px;border:1px solid #ced4da;border-radius:6px;font-size:13px;background:#fff;color:#212529;box-sizing:border-box">
        </div>
      </div>

      <!-- Stock disponible -->
      <div style="padding:0 24px 16px;background:#ffffff">
        <div style="font-size:11px;font-weight:700;color:#6c757d;margin-bottom:8px;text-transform:uppercase">Productos disponibles en el origen</div>
        <div id="ps-stock-lista" style="border:1px solid #dee2e6;border-radius:8px;min-height:60px;max-height:200px;overflow-y:auto;padding:6px;background:#f8f9fa">
          <p style="color:#6c757d;font-size:13px;text-align:center;padding:12px;margin:0">Selecciona un centro origen para ver el stock</p>
        </div>
      </div>

      <!-- Carrito -->
      <div style="padding:0 24px 20px;background:#ffffff">
        <div style="font-size:11px;font-weight:700;color:#6c757d;margin-bottom:8px;text-transform:uppercase">Productos a enviar</div>
        <div id="ps-carrito" style="border:1px solid #dee2e6;border-radius:8px;min-height:48px;padding:6px;background:#f8f9fa">
          <p style="color:#6c757d;font-size:13px;text-align:center;padding:8px;margin:0">Sin productos aún</p>
        </div>
      </div>

      <!-- Botones -->
      <div style="padding:12px 24px 20px;display:flex;justify-content:flex-end;gap:10px;background:#f8f9fa;border-top:1px solid #dee2e6;border-radius:0 0 12px 12px">
        <button onclick="document.getElementById('ps-modal-nuevo').remove()" style="padding:10px 20px;background:#fff;color:#495057;border:1px solid #ced4da;border-radius:6px;cursor:pointer;font-size:13px">Cancelar</button>
        <button onclick="psGuardarPedido()" style="padding:10px 24px;background:#0d6efd;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:13px;font-weight:700">✅ Crear Pedido</button>
      </div>
    </div>`;
  document.body.appendChild(modal);
  _psCarrito = [];
  // Auto-select si es centro logueado
  if (esCentro()) { autoSelectCentro('ps-origen'); }
}

async function psCargarStock() {
  const idOrigen = parseInt(document.getElementById('ps-origen')?.value || '0');
  const selDest  = document.getElementById('ps-destino');
  const listaEl  = document.getElementById('ps-stock-lista');
  if (!idOrigen) return;

  listaEl.innerHTML = '<p style="color:#6c757d;font-size:13px;text-align:center;padding:12px;margin:0">⏳ Cargando stock...</p>';
  selDest.innerHTML = '<option value="">Cargando destinos...</option>';

  const data = await api('GET', `api/pedidos-stock-centros.php?idcd=${idOrigen}`);
  if (!data.ok) {
    listaEl.innerHTML = `<p style="color:red;font-size:13px;padding:8px">❌ ${data.error}</p>`;
    return;
  }

  _psStock    = data.stock    || [];
  _psDestinos = data.destinos || [];

  // Poblar destinos
  if (_psDestinos.length === 0) {
    selDest.innerHTML = '<option value="">Sin destinos configurados</option>';
  } else {
    selDest.innerHTML = '<option value="">-- Seleccionar destino --</option>' +
      _psDestinos.map(d => `<option value="${d.idusuarios_ci}">${d.idusuarios_ci} - ${d.nombre}</option>`).join('');
  }

  // Mostrar stock disponible
  if (_psStock.length === 0) {
    listaEl.innerHTML = '<p style="color:#6c757d;font-size:13px;text-align:center;padding:12px;margin:0">Sin stock disponible en este centro</p>';
    return;
  }
  listaEl.innerHTML = _psStock.map(s => `
    <div style="display:flex;align-items:center;justify-content:space-between;padding:8px 10px;border-bottom:1px solid #dee2e6;font-size:13px;background:#fff;gap:8px">
      <div style="flex:1;min-width:0">
        <span style="font-weight:600;color:#212529">${s.nombreProd}</span>
        ${s.presentacion ? `<span style="color:#6c757d;font-size:11px;margin-left:6px">${s.presentacion}</span>` : ''}
        <span style="color:#6c757d;font-size:11px;margin-left:8px">Disp: <b>${s.cantidad}</b></span>
      </div>
      <div style="display:flex;align-items:center;gap:6px;flex-shrink:0">
        <input id="ps-qty-${s.idprod}" type="number" value="1" min="1" max="${s.cantidad}"
          style="width:58px;padding:4px 6px;border:1px solid #ced4da;border-radius:5px;font-size:13px;text-align:center;color:#212529;background:#fff"
          onclick="event.stopPropagation()"
          oninput="this.value=Math.min(Math.max(1,parseInt(this.value)||1),${s.cantidad})">
        <button onclick="psAgregarAlCarrito(${s.idprod})" style="padding:5px 12px;background:#0d6efd;color:#fff;border:none;border-radius:5px;cursor:pointer;font-size:12px;white-space:nowrap">➕ Agregar</button>
      </div>
    </div>`).join('');
}

function psAgregarAlCarrito(idprod) {
  const prod = _psStock.find(s => s.idprod == idprod);
  if (!prod) return;

  // Leer cantidad del input junto al botón
  const inputEl = document.getElementById(`ps-qty-${idprod}`);
  const cantInput = Math.max(1, parseInt(inputEl?.value || '1') || 1);

  const existe = _psCarrito.find(c => c.idprod == idprod);
  if (existe) {
    const nuevaCant = existe.cant + cantInput;
    if (nuevaCant > prod.cantidad) {
      alert(`Máximo disponible: ${prod.cantidad} (ya tienes ${existe.cant} en el carrito)`);
      return;
    }
    existe.cant = nuevaCant;
  } else {
    if (cantInput > prod.cantidad) {
      alert(`Máximo disponible: ${prod.cantidad}`);
      return;
    }
    _psCarrito.push({ idprod: prod.idprod, nombre: prod.nombreProd,
                      presentacion: prod.presentacion, cant: cantInput, disponible: prod.cantidad });
  }

  // Resetear el input a 1 después de agregar
  if (inputEl) inputEl.value = 1;
  psRenderCarrito();
}

function psRenderCarrito() {
  const el = document.getElementById('ps-carrito');
  if (!el) return;
  if (_psCarrito.length === 0) {
    el.innerHTML = '<p style="color:#6c757d;font-size:13px;text-align:center;padding:8px;margin:0">Sin productos aún</p>';
    return;
  }
  el.innerHTML = _psCarrito.map((c, idx) => `
    <div style="display:flex;align-items:center;gap:10px;padding:8px 10px;border-bottom:1px solid #dee2e6;font-size:13px;background:#fff">
      <div style="flex:1">
        <span style="font-weight:600;color:#212529">${c.nombre}</span>
        ${c.presentacion ? `<span style="color:#6c757d;font-size:11px;margin-left:6px">${c.presentacion}</span>` : ''}
      </div>
      <div style="display:flex;align-items:center;gap:6px">
        <button onclick="psCambiarCant(${idx},-1)" style="width:26px;height:26px;border:1px solid #ced4da;border-radius:4px;background:#f8f9fa;color:#212529;cursor:pointer;font-size:14px">-</button>
        <span style="min-width:28px;text-align:center;font-weight:700;color:#212529">${c.cant}</span>
        <button onclick="psCambiarCant(${idx},1)" style="width:26px;height:26px;border:1px solid #ced4da;border-radius:4px;background:#f8f9fa;color:#212529;cursor:pointer;font-size:14px">+</button>
        <span style="color:#6c757d;font-size:11px">/ ${c.disponible}</span>
        <button onclick="psQuitarDelCarrito(${idx})" style="margin-left:4px;background:none;border:none;color:#dc3545;cursor:pointer;font-size:16px" title="Quitar">×</button>
      </div>
    </div>`).join('');
}

function psCambiarCant(idx, delta) {
  const c = _psCarrito[idx];
  if (!c) return;
  const nuevo = c.cant + delta;
  if (nuevo < 1) { psQuitarDelCarrito(idx); return; }
  if (nuevo > c.disponible) { alert(`Máximo disponible: ${c.disponible}`); return; }
  c.cant = nuevo;
  psRenderCarrito();
}

function psQuitarDelCarrito(idx) {
  _psCarrito.splice(idx, 1);
  psRenderCarrito();
}

async function psGuardarPedido() {
  const idOrigen  = parseInt(document.getElementById('ps-origen')?.value  || '0');
  const idDestino = parseInt(document.getElementById('ps-destino')?.value || '0');
  const obs       = document.getElementById('ps-obs')?.value.trim() || '';

  if (!idOrigen)  { alert('Selecciona el centro origen');  return; }
  if (!idDestino) { alert('Selecciona el centro destino'); return; }
  if (_psCarrito.length === 0) { alert('Agrega al menos un producto'); return; }

  const btn = document.querySelector('#ps-modal-nuevo button[onclick="psGuardarPedido()"]');
  if (btn) { btn.disabled = true; btn.textContent = '⏳ Guardando...'; }

  try {
    const body = {
      id_centro_origen:  idOrigen,
      id_centro_destino: idDestino,
      productos: _psCarrito.map(c => ({ idprod: c.idprod, cant: c.cant })),
      observaciones: obs,
    };
    const data = await api('POST', 'api/pedidos-stock-crear.php', body);
    if (!data.ok) { alert('❌ Error: ' + data.error); }
    else {
      alert(`✅ ${data.mensaje}`);
      document.getElementById('ps-modal-nuevo')?.remove();
      psCargar(); // Refrescar lista
    }
  } catch(e) {
    alert('❌ Error inesperado: ' + e.message);
  } finally {
    if (btn) { btn.disabled = false; btn.textContent = '✅ Crear Pedido'; }
  }
}

// ══════════════════════════════════════════════════════════
//  NUEVA COMPRA
// ══════════════════════════════════════════════════════════

// Estado global de la compra
let _ncCentros    = [];    // centros tipo_usuario=2
let _ncCentroSel  = null;  // centro generador seleccionado
let _ncDistSel    = null;  // distribuidor seleccionado
let _ncProductos  = [];    // catálogo de productos
let _ncPromos     = [];    // catálogo de promos
let _ncCarrito    = [];    // [{id_prod, nombre, precio, puntos, cantidad, tipo}]
let _ncVouchers   = [];    // [{idv, monto, nombre_dist}]
let _ncCentrosEnt = [];    // centros de entrega
let _ncTipoNota   = 10;    // 10=venta, 11=por asignar
let _ncCdentrega  = null;  // centro de entrega seleccionado

// ─── Helpers ─────────────────────────────────────────────────────────────
function ncFmt(n) { return '$' + parseFloat(n).toLocaleString('es-MX', {minimumFractionDigits:2, maximumFractionDigits:2}); }

function ncTotalCarrito() {
  return _ncCarrito.reduce((s, i) => s + i.precio * i.cantidad, 0);
}

function ncTotalVouchers() {
  return _ncVouchers.reduce((s, v) => s + v.monto, 0);
}

// ─── Reiniciar formulario completo ─────────────────────────────────────────
function ncReiniciar() {
  // Resetear todas las variables de estado
  _ncCentroSel = null; _ncDistSel = null; _ncCarrito = [];
  _ncVouchers = []; _ncPagos = []; _ncEnvio = null;
  _ncProductos = []; _ncPromos = []; _ncCentrosEnt = [];
  _ncTipoNota = 10; _ncCdentrega = null; _ncBancos = [];
  // Mostrar el paso 1 y limpiar el form-area
  const paso1 = document.getElementById('nc-paso1');
  if (paso1) paso1.style.display = 'block';
  const formArea = document.getElementById('nc-form-area');
  if (formArea) formArea.innerHTML = '';
  const centroInfo = document.getElementById('nc-centro-info');
  if (centroInfo) centroInfo.innerHTML = '';
  // Resetear el select de centro
  const sel = document.getElementById('nc-centro');
  if (sel) sel.value = '';
  const btn = document.getElementById('nc-btn-continuar');
  if (btn) { btn.style.background = '#6c757d'; btn.style.opacity = '0.6'; btn.style.cursor = 'not-allowed'; }
  // Recargar centros
  ncInit();
}

// ─── PASO 1: Inicializar y cargar centros ─────────────────────────────────
