This commit is contained in:
natib21
2026-07-06 12:23:25 +00:00
parent 6b0db45be2
commit fb4ffa5d67
7 changed files with 75 additions and 1 deletions

View File

@@ -0,0 +1,25 @@
import { MigrationInterface, QueryRunner } from "typeorm";
/**
* Per-km haulage rate on a vehicle (mainly trucks) plus the currency it's
* quoted in (ETB | USD, default ETB).
*/
export class AddVehiclePricePerKm1990000000000 implements MigrationInterface {
name = "AddVehiclePricePerKm1990000000000";
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`
ALTER TABLE freight.vehicles
ADD COLUMN IF NOT EXISTS price_per_km numeric(14,2),
ADD COLUMN IF NOT EXISTS currency varchar(8) NOT NULL DEFAULT 'ETB'
`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`
ALTER TABLE freight.vehicles
DROP COLUMN IF EXISTS price_per_km,
DROP COLUMN IF EXISTS currency
`);
}
}

View File

@@ -65,4 +65,12 @@ export class CreateVehicleDto {
@IsOptional()
@IsUUID()
locationId?: string;
@IsOptional()
@IsNumber()
pricePerKm?: number;
@IsOptional()
@IsString()
currency?: string;
}

View File

@@ -89,6 +89,14 @@ export class Vehicle extends BaseEntity {
@Column({ name: 'location_id', type: 'uuid', nullable: true })
locationId?: string;
// --- Haulage pricing ---
@Column({ name: 'price_per_km', type: 'numeric', precision: 14, scale: 2, nullable: true })
pricePerKm?: number;
/** Currency for pricePerKm: ETB | USD */
@Column({ name: 'currency', type: 'varchar', length: 8, default: 'ETB' })
currency?: string;
// --- Compliance / expiry tracking ---
@Column({ name: 'vin', type: 'varchar', nullable: true })
vin?: string;