First commit: Tryton client using TypeScript

This commit is contained in:
2025-10-10 10:22:11 -05:00
commit edda76cfc8
14 changed files with 3523 additions and 0 deletions

View File

@@ -0,0 +1,172 @@
/**
* Ejemplo de conexión básica con Tryton
*
* Este ejemplo demuestra cómo:
* 1. Conectarse al servidor Tryton
* 2. Obtener información del usuario y el token de sesión
* 3. Buscar terceros (party.party) y mostrar sus nombres
*
* Instrucciones de uso:
* 1. Instala las dependencias: npm install
* 2. Compila el proyecto: npm run build
* 3. Edita las variables de configuración abajo con tus datos de conexión
* 4. Ejecuta: node dist/examples/basic-connection.js
*/
import { TrytonClient } from "../client";
// ====================================================
// CONFIGURACIÓN - EDITA ESTOS VALORES CON TUS DATOS
// ====================================================
const config = {
hostname: "https://demo7.6.tryton.org", // Servidor demo con HTTPS
port: 8000, // Puerto del servidor Tryton (generalmente 8000)
database: "demo7.6", // Base de datos demo
username: "admin", // Usuario demo
password: "admin", // Contraseña demo
language: "es", // Idioma (es, en, etc.)
options: {
verbose: true, // Mostrar información detallada de conexión
timeout: 30000, // Timeout en milisegundos
},
};
// Verificar que se han completado los datos de configuración
function validateConfig() {
const requiredFields: (keyof typeof config)[] = [
"hostname",
"database",
"username",
"password",
];
const missingFields = requiredFields.filter((field) => !config[field]);
if (missingFields.length > 0) {
console.error(
"❌ Error: Faltan los siguientes campos de configuración:"
);
missingFields.forEach((field) => console.error(` - ${field}`));
console.error(
"\n💡 Edita este archivo y completa la configuración antes de ejecutar."
);
process.exit(1);
}
}
// Interfaz para los terceros (party.party)
interface Party {
id: number;
name: string;
code?: string;
active: boolean;
lang?: string;
}
async function main() {
console.log("🚀 Iniciando ejemplo de conexión con Tryton...\n");
// Validar configuración
validateConfig();
// Crear cliente
console.log("📡 Creando cliente Tryton...");
const client = new TrytonClient(config);
try {
// Conectar al servidor
console.log("🔗 Conectando al servidor...");
const connected = await client.connect();
if (!connected) {
throw new Error("No se pudo establecer la conexión");
}
console.log("✅ Conexión exitosa!\n");
// ====================================================
// INFORMACIÓN DEL USUARIO Y SESIÓN
// ====================================================
console.log("👤 INFORMACIÓN DEL USUARIO");
console.log("=".repeat(40));
// Mostrar información básica del usuario
console.log(`Usuario: ${config.username}`);
console.log(`Base de datos: ${config.database}`);
console.log(`Servidor: ${config.hostname}:${config.port}`);
// Mostrar token de sesión
const sessionToken = client.getSession();
console.log(`Token de sesión: ${sessionToken}`);
console.log("");
// ====================================================
// BÚSQUEDA DE TERCEROS
// ====================================================
console.log("🏢 LISTA DE TERCEROS");
console.log("=".repeat(40));
// Buscar todos los terceros activos (limitado a 20 para el ejemplo)
console.log("Buscando terceros...");
const partiesData = await client.searchRead<Party>(
"party.party", // Modelo de terceros
[], // Dominio: todos los terceros (sin filtros)
["id", "name", "code"], // Campos a obtener
0, // Offset
20 // Límite de resultados
// Sin parámetro order
);
if (partiesData.length === 0) {
console.log("❌ No se encontraron terceros.");
} else {
console.log(`✅ Se encontraron ${partiesData.length} terceros:\n`);
// Mostrar lista de terceros
partiesData.forEach((party, index) => {
const code = party.code ? ` (${party.code})` : "";
console.log(
`${(index + 1).toString().padStart(2)}. ${
party.name
}${code}`
);
});
}
console.log("\n🎉 ¡Ejemplo completado exitosamente!");
} catch (error) {
console.error("❌ Error durante la ejecución:");
const errorMessage =
error instanceof Error ? error.message : String(error);
console.error(errorMessage);
if (config.options.verbose && error instanceof Error && error.stack) {
console.error("\nStack trace:");
console.error(error.stack);
}
// Sugerencias de solución de problemas
console.error("\n💡 Posibles soluciones:");
console.error(" - Verifica que el servidor Tryton esté ejecutándose");
console.error(" - Confirma que los datos de conexión sean correctos");
console.error(
" - Asegúrate de que el usuario tenga permisos adecuados"
);
console.error(" - Verifica la conectividad de red al servidor");
process.exit(1);
} finally {
// Cerrar la conexión si está abierta
if (client && client.isConnected) {
console.log("\n🔌 Cerrando conexión...");
client.close();
console.log("\n✅ Conexión cerrada.");
}
}
}
// Ejecutar el ejemplo si se llama directamente
if (require.main === module) {
main().catch(console.error);
}
export { main };