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

async function runTest() {
  console.log('Iniciando prueba QA de traspaso simulado desde la Nube...');
  try {
    const pool = await getPool();
    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: 'ALM01',
        destination: 'ALM02',
        user: 'QA_NUBE',
        origin_company: '',
        destination_company: '',
        items: [
          { id: 'INS001', quantity: 15.5, cost: 120.00 },
          { id: 'INS002', 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 {
    process.exit(0);
  }
}

runTest();
