geofind-contract-generator
Version:
Sistema profesional de generación de contratos de arrendamiento y envío de correos
104 lines (83 loc) • 4.91 kB
JavaScript
const ContractGenerator = require('./src/contractGenerator');
const generator = new ContractGenerator();
const clientData = {
nombre: "Ana María Rodríguez Sánchez",
edad: "35",
gmail: "ana.rodriguez@email.com",
numero_telefonico: "555-987-6543",
direccion: "Calle Secundaria 789, Colonia Centro, Guadalajara, Jalisco",
curp: "ROSA750215JTLNDR05",
// reference_number: "CTO-2024-002"
};
const propertyData = {
property_address: "Casa en residencial cerrado con vigilancia 24 horas en una zona exclusiva de la ciudad",
property_type: "Casa",
rental_period: "24 meses",
monthly_rent: "25000",
deposit_amount: "25000",
arrendador_nombre: "Carlos Eduardo Mendoza Ruiz",
clausulas: [
"1. DURACIÓN: El presente contrato tendrá una vigencia de 24 meses renovables automáticamente por periodos iguales salvo notificación por escrito de alguna de las partes con 30 días de anticipación a la fecha de terminación.",
"2. RENTA: El pago mensual deberá realizarse antes del día 5 de cada mes mediante transferencia bancaria a la cuenta especificada, considerándose días inhábiles aquellos establecidos por la ley federal del trabajo.",
"3. DEPÓSITO: El depósito en garantía será equivalente a una mensualidad de renta y será devuelto al término del contrato, previa verificación del inmueble y liquidación total de servicios pendientes.",
"4. MANTENIMIENTO: El arrendatario se obliga a mantener la propiedad en óptimas condiciones de limpieza y funcionamiento, realizando reparaciones menores y reportando inmediatamente cualquier daño estructural o falla en los sistemas.",
"5. SERVICIOS: El arrendador cubre los servicios de agua y mantenimiento de áreas comunes, mientras el arrendatario cubre luz, gas, internet, televisión por cable y demás servicios particulares del inmueble."
]
};
function verifyContractRules(clientData, propertyData) {
const rules = [];
console.log("🔍 VERIFICANDO REGLAS DEL CONTRATO:");
console.log("-".repeat(50));
if (!clientData.nombre) rules.push("❌ Falta nombre del arrendatario");
else rules.push("✅ Nombre del arrendatario: COMPLETO");
if (!propertyData.property_address) rules.push("❌ Falta dirección de la propiedad");
else rules.push("✅ Dirección de propiedad: COMPLETA");
if (!propertyData.monthly_rent) rules.push("❌ Falta renta mensual");
else rules.push("✅ Renta mensual: DEFINIDA");
if (clientData.reference_number && !clientData.reference_number.startsWith('CTO-')) {
rules.push("⚠️ Referencia no sigue formato estándar");
} else {
rules.push("✅ Formato de referencia: CORRECTO");
}
if (propertyData.clausulas && propertyData.clausulas.length > 0) {
rules.push(`✅ Cláusulas personalizadas: ${propertyData.clausulas.length} ACTIVAS`);
} else {
rules.push("✅ Cláusulas por defecto: ACTIVAS");
}
if (!clientData.gmail && !clientData.numero_telefonico) {
rules.push("⚠️ Falta información de contacto del arrendatario");
} else {
rules.push("✅ Información de contacto: COMPLETA");
}
if (propertyData.property_address && propertyData.property_address.length > 50) {
rules.push("✅ Dirección larga: ACTIVA función de salto de línea");
}
if (propertyData.clausulas && propertyData.clausulas.some(clause => clause.length > 100)) {
rules.push("✅ Cláusulas largas: ACTIVA función de texto multilínea");
}
rules.forEach(rule => console.log(` ${rule}`));
console.log("-".repeat(50));
return rules;
}
async function generateSingleContract() {
console.log("🚀 INICIANDO GENERACIÓN DE CONTRATO ÚNICO\n");
verifyContractRules(clientData, propertyData);
try {
console.log("📄 GENERANDO CONTRATO...");
const filepath = await generator.generateRentalContract(clientData, propertyData);
console.log(`\n🎉 CONTRATO GENERADO EXITOSAMENTE:`);
console.log(`📍 Ubicación: ${filepath}`);
console.log(`📊 Características activadas:`);
console.log(` • Encabezados con colores verde`);
console.log(` • Secciones con fondos diferenciados`);
console.log(` • Texto multilínea en cláusulas largas`);
console.log(` • Espaciado mejorado en firmas`);
console.log(` • Manejo de páginas múltiples`);
console.log(` • Formato profesional completo`);
} catch (error) {
console.log(`\n❌ ERROR EN LA GENERACIÓN:`);
console.log(` ${error.message}`);
}
console.log("\n🏁 PROCESO COMPLETADO");
}
generateSingleContract();