Sales Module (SAAS-018): - Entities: PipelineStage, Lead, Opportunity, Activity - Services: LeadsService, OpportunitiesService, ActivitiesService, PipelineService, SalesDashboardService - Controllers: 25 endpoints for leads, opportunities, activities, pipeline, dashboard - DTOs: Complete CRUD and query DTOs - Integration with DDL functions: convert_lead_to_opportunity, update_opportunity_stage, calculate_lead_score Commissions Module (SAAS-020): - Entities: CommissionScheme, CommissionAssignment, CommissionPeriod, CommissionEntry - Services: SchemesService, AssignmentsService, EntriesService, PeriodsService, CommissionsDashboardService - Controllers: 25 endpoints for schemes, assignments, entries, periods, dashboard - DTOs: Complete CRUD and query DTOs - Integration with DDL functions: calculate_commission, close_period, get_user_earnings Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
47 lines
1.2 KiB
TypeScript
47 lines
1.2 KiB
TypeScript
import {
|
|
Entity,
|
|
PrimaryGeneratedColumn,
|
|
Column,
|
|
CreateDateColumn,
|
|
ManyToOne,
|
|
JoinColumn,
|
|
} from 'typeorm';
|
|
import { CommissionSchemeEntity } from './commission-scheme.entity';
|
|
|
|
@Entity({ schema: 'commissions', name: 'assignments' })
|
|
export class CommissionAssignmentEntity {
|
|
@PrimaryGeneratedColumn('uuid')
|
|
id: string;
|
|
|
|
@Column({ name: 'tenant_id', type: 'uuid' })
|
|
tenantId: string;
|
|
|
|
@Column({ name: 'user_id', type: 'uuid' })
|
|
userId: string;
|
|
|
|
@Column({ name: 'scheme_id', type: 'uuid' })
|
|
schemeId: string;
|
|
|
|
@Column({ name: 'starts_at', type: 'timestamptz', default: () => 'NOW()' })
|
|
startsAt: Date;
|
|
|
|
@Column({ name: 'ends_at', type: 'timestamptz', nullable: true })
|
|
endsAt: Date;
|
|
|
|
@Column({ name: 'custom_rate', type: 'decimal', precision: 5, scale: 2, nullable: true })
|
|
customRate: number;
|
|
|
|
@Column({ name: 'is_active', default: true })
|
|
isActive: boolean;
|
|
|
|
@CreateDateColumn({ name: 'created_at', type: 'timestamptz' })
|
|
createdAt: Date;
|
|
|
|
@Column({ name: 'created_by', type: 'uuid', nullable: true })
|
|
createdBy: string;
|
|
|
|
@ManyToOne(() => CommissionSchemeEntity, (scheme) => scheme.assignments)
|
|
@JoinColumn({ name: 'scheme_id' })
|
|
scheme: CommissionSchemeEntity;
|
|
}
|