96 lines
2.7 KiB
TypeScript
96 lines
2.7 KiB
TypeScript
import mongoose, { Schema, Document, Model } from 'mongoose';
|
|
|
|
export interface IFactorPaquetes {
|
|
sobre: number;
|
|
mediano: number;
|
|
grande: number;
|
|
}
|
|
|
|
export interface ITarifasConfig extends Document {
|
|
version: string;
|
|
tarifaPasajeroFija: number; // Tarifa fija en COP por puesto Cali <-> Buenaventura
|
|
precioBasePaquete: number; // Costo base inicial para mensajería
|
|
precioKmPaquete: number; // Costo por kilómetro recorrido
|
|
factorPaquetes: IFactorPaquetes; // Multiplicador según volumen: sobre (1.0), mediano (1.5), grande (2.0)
|
|
seguroBasePaquete: number; // Seguro obligatorio por encomienda
|
|
porcentajeComisionAdmin: number; // Porcentaje que retiene la plataforma (ej. 15 = 15%)
|
|
costoPenalidadCancelacion: number; // Cargo impuesto al usuario si cancela en estado ACTIVE
|
|
radioMaxPoolingMetros: number; // Distancia máxima en metros para agrupar pasajeros en Cali ($near / $geoWithin)
|
|
numeroAtencionWhatsApp: string; // Número de WhatsApp oficial para atención, soporte y mensajes
|
|
nombreSoporte: string; // Nombre del canal de soporte oficial
|
|
estaActiva: boolean;
|
|
createdAt: Date;
|
|
updatedAt: Date;
|
|
}
|
|
|
|
const TarifasConfigSchema = new Schema<ITarifasConfig>(
|
|
{
|
|
version: {
|
|
type: String,
|
|
required: true,
|
|
unique: true,
|
|
default: 'v1.0',
|
|
},
|
|
tarifaPasajeroFija: {
|
|
type: Number,
|
|
required: true,
|
|
default: 35000, // $35.000 COP tarifa base habitual
|
|
},
|
|
precioBasePaquete: {
|
|
type: Number,
|
|
required: true,
|
|
default: 12000,
|
|
},
|
|
precioKmPaquete: {
|
|
type: Number,
|
|
required: true,
|
|
default: 750, // $750 COP por km
|
|
},
|
|
factorPaquetes: {
|
|
sobre: { type: Number, default: 1.0 },
|
|
mediano: { type: Number, default: 1.5 },
|
|
grande: { type: Number, default: 2.0 },
|
|
},
|
|
seguroBasePaquete: {
|
|
type: Number,
|
|
default: 5000,
|
|
},
|
|
porcentajeComisionAdmin: {
|
|
type: Number,
|
|
required: true,
|
|
default: 15, // 15%
|
|
min: 0,
|
|
max: 100,
|
|
},
|
|
costoPenalidadCancelacion: {
|
|
type: Number,
|
|
required: true,
|
|
default: 15000, // $15.000 COP penalidad por cancelación tardía
|
|
},
|
|
radioMaxPoolingMetros: {
|
|
type: Number,
|
|
default: 4000, // 4 km a la redonda para pooling
|
|
},
|
|
numeroAtencionWhatsApp: {
|
|
type: String,
|
|
default: '573167455877',
|
|
trim: true,
|
|
},
|
|
nombreSoporte: {
|
|
type: String,
|
|
default: 'Atención Pacifictrans Go',
|
|
trim: true,
|
|
},
|
|
estaActiva: {
|
|
type: Boolean,
|
|
default: true,
|
|
},
|
|
},
|
|
{
|
|
timestamps: true,
|
|
}
|
|
);
|
|
|
|
export const TarifasConfig: Model<ITarifasConfig> =
|
|
mongoose.models.TarifasConfig || mongoose.model<ITarifasConfig>('TarifasConfig', TarifasConfigSchema);
|