Initial commit - Horux Despachos NL
This commit is contained in:
100
apps/api/scripts/set-horux-custom.ts
Normal file
100
apps/api/scripts/set-horux-custom.ts
Normal file
@@ -0,0 +1,100 @@
|
||||
/**
|
||||
* 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);
|
||||
});
|
||||
Reference in New Issue
Block a user