const sql = require('mssql');
const { handleInventoryTransfer } = require('./src/modules/centralizador/catalogTransfer');

async function runTest() {
  console.log('Iniciando prueba QA de traspaso simulado desde la Nube...');
  let pool;
  try {
    const config = {
      server: 'localhost',
      options: { instanceName: 'NATIONALSOFT', encrypt: false, trustServerCertificate: true },
      database: 'softrestaurant11',
      user: 'sa',
      password: 'National09',
      port: 1433
    };

    console.log('Conectando a SoftRestaurant directamente...');
    pool = await new sql.ConnectionPool(config).connect();
    console.log('Conexión a SoftRestaurant establecida.');

    const folioSimulado = Math.floor(Math.random() * 10000) + 50000;
    
    // Comando simulado de la nube
    const command = {
      command_type: 'inventory.transfer.execute',
      payload: {
        folio: folioSimulado,
        date: new Date().toISOString(),
        origin: '1',
        destination: '2',
        user: 'QA_NUBE',
        origin_company: '',
        destination_company: '',
        items: [
          { id: '001001', quantity: 15.5, cost: 120.00 },
          { id: '001002', quantity: 5.0, cost: 50.00 }
        ]
      }
    };

    console.log('Simulando comando con folio: ' + folioSimulado);
    const result = await handleInventoryTransfer(command, {}, { pool });
    console.log('Resultado del handler:', result);

    // Verificar en BD
    console.log('Verificando inserción en BD (traspasosalmacen)...');
    const checkCabecera = await pool.request().input('folio', sql.Numeric, folioSimulado).query('SELECT folio, almacenorigen, almacendestino FROM traspasosalmacen WHERE folio = @folio');
    console.log('Cabecera:', checkCabecera.recordset.length > 0 ? checkCabecera.recordset[0] : 'Fallo');

    console.log('Verificando inserción en BD (movtosalmacen)...');
    const checkPartidas = await pool.request().input('folio', sql.Numeric, folioSimulado).query('SELECT movto, traspaso, idconcepto, idalmacen, cantidad FROM movtosalmacen WHERE traspaso = @folio');
    console.log('Partidas:', checkPartidas.recordset);

    console.log('QA Finalizado con éxito.');
  } catch (e) {
    console.error('QA Falló:', e);
  } finally {
    if (pool) await pool.close();
    process.exit(0);
  }
}

runTest();
