import { BaseEntity } from '@edr/api-common'; import { Freight } from '@edr/types'; import { Column, Entity, Index, JoinColumn, ManyToOne, OneToMany } from 'typeorm'; import { SurchargeType } from './surcharge-type.entity'; import { WeightLimitRule } from './weight-limit-rule.entity'; @Entity({ schema: 'freight', name: 'surcharges' }) @Index(['surchargeTypeId']) @Index(['isActive']) export class Surcharge extends BaseEntity { @Column({ name: 'surcharge_type_id', type: 'uuid' }) surchargeTypeId!: string; @ManyToOne(() => SurchargeType, (st) => st.surcharges) @JoinColumn({ name: 'surcharge_type_id' }) surchargeType!: SurchargeType; @Column({ name: 'fee_name', type: 'varchar', length: 255 }) feeName!: string; @Column({ name: 'trigger_description', type: 'text', nullable: true }) triggerDescription?: string | null; @Column({ name: 'calculation_method', type: 'enum', enum: Freight.CalculationMethod, default: Freight.CalculationMethod.PER_TON, }) calculationMethod!: Freight.CalculationMethod; @Column({ name: 'rate', type: 'numeric', precision: 10, scale: 2 }) rate!: number; @Column({ name: 'currency', type: 'char', length: 3, default: 'USD' }) currency!: string; @Column({ name: 'apply_to_rail', type: 'boolean', default: false }) applyToRail!: boolean; @Column({ name: 'apply_to_first_mile', type: 'boolean', default: false }) applyToFirstMile!: boolean; @Column({ name: 'apply_to_last_mile', type: 'boolean', default: false }) applyToLastMile!: boolean; @Column({ name: 'is_active', type: 'boolean', default: true }) isActive!: boolean; @OneToMany(() => WeightLimitRule, (rule) => rule.surcharge) weightLimitRules?: WeightLimitRule[]; }