update entity

This commit is contained in:
fadlydev
2025-02-04 15:56:21 +07:00
parent 7875f707de
commit 99c9b85be3
5 changed files with 58 additions and 24 deletions

View File

@ -7,21 +7,9 @@ import {
DeleteDateColumn, DeleteDateColumn,
OneToMany, OneToMany,
} from 'typeorm'; } from 'typeorm';
import { Goods } from './goods';
import { RequestSubmission } from './request_submission'; import { RequestSubmission } from './request_submission';
import { ApprovalStatus } from '../enum/approvalStatus';
enum ApprovalStatus { import { DocumentStatus } from '../enum/documentStatus';
PENDING = 'PENDING',
APPROVED = 'APPROVED',
REJECTED = 'REJECTED',
}
enum RequestOrderStatus {
DRAFT = 'DRAFT',
SUBMITTED = 'SUBMITTED',
APPROVED = 'APPROVED',
REJECTED = 'REJECTED',
}
@Entity('request_orders') @Entity('request_orders')
export class RequestOrder { export class RequestOrder {
@ -46,8 +34,8 @@ export class RequestOrder {
@Column({ type: 'text', nullable: true }) @Column({ type: 'text', nullable: true })
remarks: string | null; remarks: string | null;
@Column({ type: 'enum', enum: RequestOrderStatus, nullable: false }) @Column({ type: 'enum', enum: DocumentStatus, nullable: false })
status: RequestOrderStatus; status: DocumentStatus;
@Column({ length: 2, nullable: false }) @Column({ length: 2, nullable: false })
purchasing_method: string; purchasing_method: string;
@ -82,13 +70,14 @@ export class RequestOrder {
@Column({ type: 'enum', enum: ApprovalStatus, default: ApprovalStatus.PENDING }) @Column({ type: 'enum', enum: ApprovalStatus, default: ApprovalStatus.PENDING })
ga_approval_status: ApprovalStatus; ga_approval_status: ApprovalStatus;
// Relationship with Goods // Storing goods as a JSON array, Use 'jsonb' for PostgreSQL or 'json' for MySQL
@OneToMany(() => Goods, (goods) => goods.id) @Column({ type: 'jsonb', nullable: true })
goods: Goods[]; goods: Array<{
name: string;
// Storing related goods UUIDs as an array item_code: string;
@Column('uuid', { array: true, nullable: true }) quantity: number;
goods_ids: string[]; price: number;
}>;
@OneToMany(() => RequestSubmission, (submission) => submission.request_order, { cascade: true }) @OneToMany(() => RequestSubmission, (submission) => submission.request_order, { cascade: true })
submissions: RequestSubmission[]; submissions: RequestSubmission[];

View File

@ -10,7 +10,7 @@ import {
} from 'typeorm'; } from 'typeorm';
import { SubmissionRecap } from './request_submission_recap'; import { SubmissionRecap } from './request_submission_recap';
import { RequestOrder } from './request_orders'; import { RequestOrder } from './request_orders';
import { ApprovalStatus } from '../enum/approvalStatus';
@Entity('request_submissions') @Entity('request_submissions')
export class RequestSubmission { export class RequestSubmission {
@PrimaryGeneratedColumn('uuid') @PrimaryGeneratedColumn('uuid')
@ -57,6 +57,36 @@ export class RequestSubmission {
@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; total: number;
// Supervisor Approval
@Column({ type: 'varchar', 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: 'varchar', 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;
// General Affairs (GA) Approval
@Column({ type: 'varchar', nullable: true })
approved_by_ga: string | null;
@Column({ type: 'timestamp', nullable: true })
ga_approval_date: Date | null;
@Column({ type: 'enum', enum: ApprovalStatus, default: ApprovalStatus.PENDING })
ga_approval_status: ApprovalStatus;
@CreateDateColumn() @CreateDateColumn()
created_at: Date; created_at: Date;

View File

@ -38,6 +38,9 @@ export class SubmissionRecap {
@OneToMany(() => RequestSubmission, (submission) => submission.recap, { cascade: true }) @OneToMany(() => RequestSubmission, (submission) => submission.recap, { cascade: true })
submission_ids: RequestSubmission[]; submission_ids: RequestSubmission[];
@Column({ type: 'varchar', nullable: true })
item_code: string;
@Column({ type: 'varchar', nullable: true }) @Column({ type: 'varchar', nullable: true })
created_by: string; created_by: string;

View File

@ -0,0 +1,5 @@
export enum ApprovalStatus {
PENDING = 'PENDING',
APPROVED = 'APPROVED',
REJECTED = 'REJECTED',
}

View File

@ -0,0 +1,7 @@
export enum DocumentStatus {
DRAFT = 'DRAFT',
SUBMITTED = 'SUBMITTED',
APPROVED = 'APPROVED',
REJECTED = 'REJECTED',
}