131 lines
2.1 KiB
TypeScript
131 lines
2.1 KiB
TypeScript
import {
|
|
Entity,
|
|
PrimaryGeneratedColumn,
|
|
Column,
|
|
CreateDateColumn,
|
|
UpdateDateColumn,
|
|
DeleteDateColumn,
|
|
} from 'typeorm';
|
|
|
|
enum ApprovalStatus {
|
|
PENDING = 'PENDING',
|
|
APPROVED = 'APPROVED',
|
|
REJECTED = 'REJECTED',
|
|
}
|
|
|
|
enum RequestOrderStatus {
|
|
DRAFT = 'DRAFT',
|
|
SUBMITTED = 'SUBMITTED',
|
|
APPROVED = 'APPROVED',
|
|
REJECTED = 'REJECTED',
|
|
}
|
|
|
|
@Entity('request_orders')
|
|
export class RequestOrder {
|
|
@PrimaryGeneratedColumn('uuid')
|
|
id: string;
|
|
|
|
@Column({
|
|
nullable: false,
|
|
length: 128,
|
|
unique: true,
|
|
})
|
|
order_number: string;
|
|
|
|
@Column({
|
|
nullable: false,
|
|
})
|
|
order_date: Date;
|
|
|
|
@Column({
|
|
type: 'decimal',
|
|
precision: 10,
|
|
scale: 2,
|
|
nullable: false,
|
|
})
|
|
total_amount: number;
|
|
|
|
@Column({
|
|
type: 'varchar',
|
|
nullable: false,
|
|
})
|
|
requested_by: string;
|
|
|
|
@Column({
|
|
type: 'varchar',
|
|
nullable: false,
|
|
})
|
|
department: string;
|
|
|
|
@Column({
|
|
type: 'text',
|
|
nullable: true,
|
|
})
|
|
remarks: string | null;
|
|
|
|
@Column({
|
|
type: 'enum',
|
|
enum: RequestOrderStatus,
|
|
nullable: false,
|
|
})
|
|
status: RequestOrderStatus;
|
|
|
|
@Column({
|
|
length: 2,
|
|
nullable: false,
|
|
})
|
|
purchasing_method: string;
|
|
|
|
// Supervisor Approval
|
|
@Column({
|
|
type: 'uuid',
|
|
nullable: true,
|
|
})
|
|
approved_by_spv: string | null;
|
|
|
|
@Column({
|
|
type: 'timestamp',
|
|
nullable: true,
|
|
})
|
|
spv_approval_date: Date | null;
|
|
|
|
@Column({
|
|
type: 'enum',
|
|
enum: ApprovalStatus,
|
|
default: ApprovalStatus.PENDING,
|
|
})
|
|
spv_approval_status: ApprovalStatus;
|
|
|
|
// General Manager Approval
|
|
@Column({
|
|
type: 'uuid',
|
|
nullable: true,
|
|
})
|
|
approved_by_gm: string | null;
|
|
|
|
@Column({
|
|
type: 'timestamp',
|
|
nullable: true,
|
|
})
|
|
gm_approval_date: Date | null;
|
|
|
|
@Column({
|
|
type: 'enum',
|
|
enum: ApprovalStatus,
|
|
default: ApprovalStatus.PENDING,
|
|
})
|
|
gm_approval_status: ApprovalStatus;
|
|
|
|
@Column('uuid', { array: true, nullable: true })
|
|
goods_ids: string[];
|
|
|
|
@CreateDateColumn()
|
|
created_at: Date;
|
|
|
|
@UpdateDateColumn()
|
|
updated_at: Date;
|
|
|
|
@DeleteDateColumn({ nullable: true })
|
|
deleted_at: Date | null;
|
|
}
|