/** * Configura la suscripción del tenant Horux 360 (HTS240708LJA) como Plan Custom: * - amount: $10 * - currentPeriodEnd: hoy + 300 días * - status: authorized * * Idempotente — actualiza la suscripción existente o crea una nueva si no hay. * Resetea `lastReminderDay`/`lastReminderSentAt` para que el cron de avisos * arranque limpio respecto al nuevo período. */ import { prisma } from '../src/config/database.js'; async function main() { const RFC = 'HTS240708LJA'; const AMOUNT = 10; const DAYS_AHEAD = 7; const tenant = await prisma.tenant.findUnique({ where: { rfc: RFC } }); if (!tenant) { console.error(`Tenant ${RFC} no encontrado.`); process.exit(1); } const now = new Date(); const periodEnd = new Date(now.getTime() + DAYS_AHEAD * 24 * 60 * 60 * 1000); const existing = await prisma.subscription.findFirst({ where: { tenantId: tenant.id }, orderBy: { createdAt: 'desc' }, }); console.log('Tenant:', { id: tenant.id, nombre: tenant.nombre, plan: tenant.plan }); console.log('Subscription previa:', existing ? { id: existing.id, plan: existing.plan, status: existing.status, amount: existing.amount.toString(), currentPeriodEnd: existing.currentPeriodEnd, } : null); let sub; if (existing) { sub = await prisma.subscription.update({ where: { id: existing.id }, data: { plan: 'custom', amount: AMOUNT, status: 'authorized', currentPeriodStart: now, currentPeriodEnd: periodEnd, // Limpiar pending/upgrade residuales del estado anterior. pendingPlan: null, pendingFrequency: null, pendingEffectiveAt: null, upgradePreferenceId: null, upgradeTargetPlan: null, upgradeTargetAmount: null, // Reset del tracker de avisos — período nuevo, ningún bucket notificado. lastReminderDay: null, lastReminderSentAt: null, }, }); } else { sub = await prisma.subscription.create({ data: { tenantId: tenant.id, plan: 'custom', amount: AMOUNT, status: 'authorized', frequency: 'monthly', currentPeriodStart: now, currentPeriodEnd: periodEnd, }, }); } // El tenant también tiene un campo `plan` propio — alinearlo con la sub. if (tenant.plan !== 'custom') { await prisma.tenant.update({ where: { id: tenant.id }, data: { plan: 'custom' } }); console.log(`Tenant.plan actualizado: ${tenant.plan} → custom`); } console.log('Subscription final:', { id: sub.id, plan: sub.plan, status: sub.status, amount: sub.amount.toString(), currentPeriodStart: sub.currentPeriodStart, currentPeriodEnd: sub.currentPeriodEnd, }); console.log(`\n✓ Plan Custom activo. Próximo cobro: ${periodEnd.toLocaleDateString('es-MX', { dateStyle: 'long' })} ($${AMOUNT})`); await prisma.$disconnect(); } main().catch(err => { console.error(err); process.exit(1); });