106 lines
2.6 KiB
JavaScript
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(); |