All files / src/domains/finance/schemas allocations.schema.ts

0% Statements 0/12
0% Branches 0/14
100% Functions 0/0
0% Lines 0/10

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39                                                                             
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { Document, Schema as MongooseSchema } from 'mongoose';
 
@Schema({ collection: 'allocation_rules', timestamps: true })
export class AllocationRule extends Document {
  @Prop({ type: MongooseSchema.Types.ObjectId, required: true, index: true })
  tenantId!: MongooseSchema.Types.ObjectId;
 
  @Prop({ required: true })
  ruleName!: string;
 
  @Prop({ type: MongooseSchema.Types.ObjectId, required: true })
  sourceAccountId!: MongooseSchema.Types.ObjectId;
 
  @Prop({ required: true, enum: ['percentage', 'headcount', 'revenue', 'custom'], default: 'percentage' })
  allocationBasis!: string;
 
  @Prop({
    type: [
      {
        targetAccountId: { type: MongooseSchema.Types.ObjectId, required: true },
        ratioDecimal: { type: Number, required: true }, // e.g. 0.35 for 35%
        dimensions: { type: MongooseSchema.Types.Map, of: String, default: {} }
      }
    ],
    required: true
  })
  distributions!: Array<{
    targetAccountId: MongooseSchema.Types.ObjectId;
    ratioDecimal: number;
    dimensions: Map<string, string>;
  }>;
 
  @Prop({ default: true })
  isActive!: boolean;
}
 
export const AllocationRuleSchema = SchemaFactory.createForClass(AllocationRule);