fastcheck/server/check-billings.cjs
2026-04-08 13:58:46 -04:00

106 lines
2.6 KiB
JavaScript

const mongoose = require('mongoose');
const tenantBillingSchema = new mongoose.Schema({
tenantId: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Tenant',
required: true,
index: true
},
billingMonth: {
type: Number,
required: true,
min: 1,
max: 12,
index: true
},
billingYear: {
type: Number,
required: true,
min: 2020,
index: true
},
billingDate: {
type: Date,
required: true,
index: true
},
totalOperations: {
type: Number,
required: true,
default: 0
},
totalCreditsUsed: {
type: Number,
required: true,
default: 0
},
totalAmount: {
type: Number,
required: true,
default: 0
},
status: {
type: String,
required: true,
enum: ['pending', 'paid', 'overdue'],
default: 'pending',
index: true
},
operationsDetail: {
evaluations: {
count: { type: Number, default: 0 },
credits: { type: Number, default: 0 },
amount: { type: Number, default: 0 }
},
rutLookups: {
count: { type: Number, default: 0 },
credits: { type: Number, default: 0 },
amount: { type: Number, default: 0 }
},
other: {
count: { type: Number, default: 0 },
credits: { type: Number, default: 0 },
amount: { type: Number, default: 0 }
}
},
creditOperations: {
type: String,
default: '[]'
}
}, {
timestamps: true
});
const TenantBilling = mongoose.model('TenantBilling', tenantBillingSchema);
async function checkBillings() {
try {
await mongoose.connect('mongodb://localhost:27017/dux2');
console.log('Connected to MongoDB');
const billings = await TenantBilling.find({}).sort({ createdAt: -1 });
console.log('Found billings:', billings.length);
billings.forEach(billing => {
console.log('\n--- Billing Record ---');
console.log('Tenant ID:', billing.tenantId);
console.log('Period:', billing.billingMonth + '/' + billing.billingYear);
console.log('Total Operations:', billing.totalOperations);
console.log('Total Credits Used:', billing.totalCreditsUsed);
console.log('Total Amount: $' + billing.totalAmount.toFixed(2));
console.log('Status:', billing.status);
console.log('Operations Detail:');
console.log(' Evaluations:', billing.operationsDetail.evaluations);
console.log(' RUT Lookups:', billing.operationsDetail.rutLookups);
console.log(' Other:', billing.operationsDetail.other);
console.log('Created:', billing.createdAt);
});
await mongoose.disconnect();
} catch (error) {
console.error('Error:', error);
}
}
checkBillings();