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

View File

@ -10,7 +10,7 @@ import {
} from 'typeorm';
import { SubmissionRecap } from './request_submission_recap';
import { RequestOrder } from './request_orders';
import { ApprovalStatus } from '../enum/approvalStatus';
@Entity('request_submissions')
export class RequestSubmission {
@PrimaryGeneratedColumn('uuid')
@ -57,6 +57,36 @@ export class RequestSubmission {
@Column({ type: 'decimal', precision: 12, scale: 2, nullable: false, default: 0.0 })
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()
created_at: Date;

View File

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