diff --git a/src/entity/request_orders.ts b/src/entity/request_orders.ts index eb00686..8f1103e 100644 --- a/src/entity/request_orders.ts +++ b/src/entity/request_orders.ts @@ -116,7 +116,6 @@ export class RequestOrder { }) gm_approval_status: ApprovalStatus; - // Store multiple goods IDs @Column('uuid', { array: true, nullable: true }) goods_ids: string[]; diff --git a/src/entity/request_submission.ts b/src/entity/request_submission.ts index 7357608..2985194 100644 --- a/src/entity/request_submission.ts +++ b/src/entity/request_submission.ts @@ -8,113 +8,68 @@ import { ManyToOne, JoinColumn } from 'typeorm'; +import { RequestOrder } from './request_orders'; -import { RequestOrder - - } from './request_orders'; enum ApprovalStatus { PENDING = 'PENDING', APPROVED = 'APPROVED', REJECTED = 'REJECTED', } +enum SubmissionStatus { + DRAFT = 'DRAFT', + SUBMITTED = 'SUBMITTED', + APPROVED = 'APPROVED', + REJECTED = 'REJECTED', +} + @Entity('request_submissions') export class RequestSubmission { @PrimaryGeneratedColumn('uuid') id: string; - @ManyToOne(() => RequestOrder, { nullable: true }) + + @ManyToOne(() => RequestOrder, { nullable: false }) @JoinColumn({ name: 'request_order_id' }) request_order: RequestOrder; - @Column({ - nullable: false, - type: 'varchar', - unique: true, - }) + + @Column({ type: 'varchar', nullable: false, unique: true }) code_id: string; - @Column({ - nullable: false, - type: 'date', - }) + @Column({ type: 'date', nullable: false }) submission_date: Date; - @Column({ - nullable: true, - type: 'text', - }) - remarks: string; + @Column({ type: 'text', nullable: true }) + remarks: string | null; - @Column({ - nullable: true, - type: 'varchar', - }) - department: string; + @Column({ type: 'varchar', nullable: true }) + department: string | null; - @Column({ - nullable: false, - length: 64, - }) - status: string; + @Column({ type: 'enum', enum: SubmissionStatus, nullable: false, default: SubmissionStatus.DRAFT }) + status: SubmissionStatus; // General Manager Approval - @Column({ - type: 'uuid', - nullable: true, - }) + @Column({ type: 'uuid', nullable: true }) approved_by_gm: string | null; - @Column({ - type: 'timestamp', - nullable: true, - }) + @Column({ type: 'timestamptz', nullable: true }) gm_approval_date: Date | null; - @Column({ - type: 'enum', - enum: ApprovalStatus, - default: ApprovalStatus.PENDING, - }) + @Column({ type: 'enum', enum: ApprovalStatus, default: ApprovalStatus.PENDING }) gm_approval_status: ApprovalStatus; - // Store multiple - @Column('uuid', { array: true, nullable: true }) - request_order_ids: string[]; - - @Column({ - nullable: false, - type: 'varchar', - }) + @Column({ type: 'varchar', nullable: false }) created_by: string; - @Column({ - nullable: true, - type: 'varchar', - }) - updated_by: string; + @Column({ type: 'varchar', nullable: true }) + updated_by: string | null; - @Column({ - type: 'int', - nullable: false, - default: 0, - }) + @Column({ type: 'int', nullable: false, default: 0 }) quantity: number; - @Column({ - type: 'decimal', - precision: 12, - scale: 2, - nullable: false, - default: 0.0, - }) + @Column({ type: 'decimal', precision: 12, scale: 2, nullable: false, default: 0.0 }) amount: number; - @Column({ - type: 'decimal', - precision: 12, - scale: 2, - nullable: false, - default: 0.0, - }) + @Column({ type: 'decimal', precision: 12, scale: 2, nullable: false, default: 0.0 }) total: number; @CreateDateColumn() @@ -123,6 +78,6 @@ export class RequestSubmission { @UpdateDateColumn() updated_at: Date; - @DeleteDateColumn() - deleted_at: Date; + @DeleteDateColumn({ nullable: true }) + deleted_at: Date | null; }