update relation submission and request order
This commit is contained in:
@ -5,7 +5,10 @@ import {
|
|||||||
CreateDateColumn,
|
CreateDateColumn,
|
||||||
UpdateDateColumn,
|
UpdateDateColumn,
|
||||||
DeleteDateColumn,
|
DeleteDateColumn,
|
||||||
|
OneToMany,
|
||||||
} from 'typeorm';
|
} from 'typeorm';
|
||||||
|
import { Goods } from './goods';
|
||||||
|
import { RequestSubmission } from './request_submission';
|
||||||
|
|
||||||
enum ApprovalStatus {
|
enum ApprovalStatus {
|
||||||
PENDING = 'PENDING',
|
PENDING = 'PENDING',
|
||||||
@ -25,100 +28,62 @@ export class RequestOrder {
|
|||||||
@PrimaryGeneratedColumn('uuid')
|
@PrimaryGeneratedColumn('uuid')
|
||||||
id: string;
|
id: string;
|
||||||
|
|
||||||
@Column({
|
@Column({ nullable: false, length: 128, unique: true })
|
||||||
nullable: false,
|
|
||||||
length: 128,
|
|
||||||
unique: true,
|
|
||||||
})
|
|
||||||
order_number: string;
|
order_number: string;
|
||||||
|
|
||||||
@Column({
|
@Column({ type: 'timestamp', nullable: false }) // Ensuring timestamp type for date storage
|
||||||
nullable: false,
|
|
||||||
})
|
|
||||||
order_date: Date;
|
order_date: Date;
|
||||||
|
|
||||||
@Column({
|
@Column({ type: 'decimal', precision: 10, scale: 2, nullable: false })
|
||||||
type: 'decimal',
|
|
||||||
precision: 10,
|
|
||||||
scale: 2,
|
|
||||||
nullable: false,
|
|
||||||
})
|
|
||||||
total_amount: number;
|
total_amount: number;
|
||||||
|
|
||||||
@Column({
|
@Column({ type: 'varchar', nullable: false })
|
||||||
type: 'varchar',
|
|
||||||
nullable: false,
|
|
||||||
})
|
|
||||||
requested_by: string;
|
requested_by: string;
|
||||||
|
|
||||||
@Column({
|
@Column({ type: 'varchar', nullable: false })
|
||||||
type: 'varchar',
|
|
||||||
nullable: false,
|
|
||||||
})
|
|
||||||
department: string;
|
department: string;
|
||||||
|
|
||||||
@Column({
|
@Column({ type: 'text', nullable: true })
|
||||||
type: 'text',
|
|
||||||
nullable: true,
|
|
||||||
})
|
|
||||||
remarks: string | null;
|
remarks: string | null;
|
||||||
|
|
||||||
@Column({
|
@Column({ type: 'enum', enum: RequestOrderStatus, nullable: false })
|
||||||
type: 'enum',
|
|
||||||
enum: RequestOrderStatus,
|
|
||||||
nullable: false,
|
|
||||||
})
|
|
||||||
status: RequestOrderStatus;
|
status: RequestOrderStatus;
|
||||||
|
|
||||||
@Column({
|
@Column({ length: 2, nullable: false })
|
||||||
length: 2,
|
|
||||||
nullable: false,
|
|
||||||
})
|
|
||||||
purchasing_method: string;
|
purchasing_method: string;
|
||||||
|
|
||||||
// Supervisor Approval
|
// Supervisor Approval
|
||||||
@Column({
|
@Column({ type: 'uuid', nullable: true })
|
||||||
type: 'uuid',
|
|
||||||
nullable: true,
|
|
||||||
})
|
|
||||||
approved_by_spv: string | null;
|
approved_by_spv: string | null;
|
||||||
|
|
||||||
@Column({
|
@Column({ type: 'timestamp', nullable: true })
|
||||||
type: 'timestamp',
|
|
||||||
nullable: true,
|
|
||||||
})
|
|
||||||
spv_approval_date: Date | null;
|
spv_approval_date: Date | null;
|
||||||
|
|
||||||
@Column({
|
@Column({ type: 'enum', enum: ApprovalStatus, default: ApprovalStatus.PENDING })
|
||||||
type: 'enum',
|
|
||||||
enum: ApprovalStatus,
|
|
||||||
default: ApprovalStatus.PENDING,
|
|
||||||
})
|
|
||||||
spv_approval_status: ApprovalStatus;
|
spv_approval_status: ApprovalStatus;
|
||||||
|
|
||||||
// General Manager Approval
|
// General Manager Approval
|
||||||
@Column({
|
@Column({ type: 'uuid', nullable: true })
|
||||||
type: 'uuid',
|
|
||||||
nullable: true,
|
|
||||||
})
|
|
||||||
approved_by_gm: string | null;
|
approved_by_gm: string | null;
|
||||||
|
|
||||||
@Column({
|
@Column({ type: 'timestamp', nullable: true })
|
||||||
type: 'timestamp',
|
|
||||||
nullable: true,
|
|
||||||
})
|
|
||||||
gm_approval_date: Date | null;
|
gm_approval_date: Date | null;
|
||||||
|
|
||||||
@Column({
|
@Column({ type: 'enum', enum: ApprovalStatus, default: ApprovalStatus.PENDING })
|
||||||
type: 'enum',
|
|
||||||
enum: ApprovalStatus,
|
|
||||||
default: ApprovalStatus.PENDING,
|
|
||||||
})
|
|
||||||
gm_approval_status: ApprovalStatus;
|
gm_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 })
|
@Column('uuid', { array: true, nullable: true })
|
||||||
goods_ids: string[];
|
goods_ids: string[];
|
||||||
|
|
||||||
|
@OneToMany(() => RequestSubmission, (submission) => submission.request_order, { cascade: true })
|
||||||
|
submissions: RequestSubmission[];
|
||||||
|
|
||||||
|
|
||||||
@CreateDateColumn()
|
@CreateDateColumn()
|
||||||
created_at: Date;
|
created_at: Date;
|
||||||
|
|
||||||
|
|||||||
@ -8,29 +8,24 @@ import {
|
|||||||
ManyToOne,
|
ManyToOne,
|
||||||
JoinColumn
|
JoinColumn
|
||||||
} from 'typeorm';
|
} from 'typeorm';
|
||||||
|
import { SubmissionRecap } from './request_submission_recap';
|
||||||
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')
|
@Entity('request_submissions')
|
||||||
export class RequestSubmission {
|
export class RequestSubmission {
|
||||||
@PrimaryGeneratedColumn('uuid')
|
@PrimaryGeneratedColumn('uuid')
|
||||||
id: string;
|
id: string;
|
||||||
|
|
||||||
@ManyToOne(() => RequestOrder, { nullable: false })
|
|
||||||
@JoinColumn({ name: 'request_order_id' })
|
@ManyToOne(() => SubmissionRecap, (recap) => recap.submissions, { nullable: true, onDelete: "SET NULL" })
|
||||||
|
@JoinColumn({ name: 'submission_recap_id' })
|
||||||
|
recap: SubmissionRecap;
|
||||||
|
|
||||||
|
|
||||||
|
@ManyToOne(() => RequestOrder, (order) => order.submissions, { nullable: false, onDelete: "CASCADE" })
|
||||||
|
@JoinColumn({ name: 'request_order_id' })
|
||||||
request_order: RequestOrder;
|
request_order: RequestOrder;
|
||||||
|
|
||||||
|
|
||||||
@Column({ type: 'varchar', nullable: false, unique: true })
|
@Column({ type: 'varchar', nullable: false, unique: true })
|
||||||
code_id: string;
|
code_id: string;
|
||||||
@ -39,29 +34,19 @@ export class RequestSubmission {
|
|||||||
submission_date: Date;
|
submission_date: Date;
|
||||||
|
|
||||||
@Column({ type: 'text', nullable: true })
|
@Column({ type: 'text', nullable: true })
|
||||||
remarks: string | null;
|
remarks: string;
|
||||||
|
|
||||||
@Column({ type: 'varchar', nullable: true })
|
@Column({ type: 'varchar', nullable: true })
|
||||||
department: string | null;
|
department: string;
|
||||||
|
|
||||||
@Column({ type: 'enum', enum: SubmissionStatus, nullable: false, default: SubmissionStatus.DRAFT })
|
@Column({ length: 64, nullable: false })
|
||||||
status: SubmissionStatus;
|
status: string;
|
||||||
|
|
||||||
// General Manager Approval
|
@Column({ type: 'varchar', nullable: true })
|
||||||
@Column({ type: 'uuid', nullable: true })
|
|
||||||
approved_by_gm: string | null;
|
|
||||||
|
|
||||||
@Column({ type: 'timestamptz', nullable: true })
|
|
||||||
gm_approval_date: Date | null;
|
|
||||||
|
|
||||||
@Column({ type: 'enum', enum: ApprovalStatus, default: ApprovalStatus.PENDING })
|
|
||||||
gm_approval_status: ApprovalStatus;
|
|
||||||
|
|
||||||
@Column({ type: 'varchar', nullable: false })
|
|
||||||
created_by: string;
|
created_by: string;
|
||||||
|
|
||||||
@Column({ type: 'varchar', nullable: true })
|
@Column({ type: 'varchar', nullable: true })
|
||||||
updated_by: string | null;
|
updated_by: string;
|
||||||
|
|
||||||
@Column({ type: 'int', nullable: false, default: 0 })
|
@Column({ type: 'int', nullable: false, default: 0 })
|
||||||
quantity: number;
|
quantity: number;
|
||||||
@ -79,5 +64,5 @@ export class RequestSubmission {
|
|||||||
updated_at: Date;
|
updated_at: Date;
|
||||||
|
|
||||||
@DeleteDateColumn({ nullable: true })
|
@DeleteDateColumn({ nullable: true })
|
||||||
deleted_at: Date | null;
|
deleted_at: Date;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,79 +5,48 @@ import {
|
|||||||
CreateDateColumn,
|
CreateDateColumn,
|
||||||
UpdateDateColumn,
|
UpdateDateColumn,
|
||||||
DeleteDateColumn,
|
DeleteDateColumn,
|
||||||
|
OneToMany
|
||||||
} from 'typeorm';
|
} from 'typeorm';
|
||||||
|
import { RequestSubmission } from './request_submission';
|
||||||
|
|
||||||
@Entity('submission_recap')
|
@Entity('submission_recap')
|
||||||
export class SubmissionRecap {
|
export class SubmissionRecap {
|
||||||
@PrimaryGeneratedColumn('uuid')
|
@PrimaryGeneratedColumn('uuid')
|
||||||
id: string;
|
id: string;
|
||||||
|
|
||||||
@Column({
|
@Column({ type: 'date', nullable: false })
|
||||||
nullable: false,
|
|
||||||
type: 'date',
|
|
||||||
})
|
|
||||||
recap_date: Date;
|
recap_date: Date;
|
||||||
|
|
||||||
@Column({
|
@Column({ type: 'int', nullable: false })
|
||||||
nullable: false,
|
|
||||||
type: 'int',
|
|
||||||
})
|
|
||||||
total_requests: number;
|
total_requests: number;
|
||||||
|
|
||||||
@Column({
|
@Column({ type: 'int', nullable: false })
|
||||||
nullable: false,
|
|
||||||
type: 'int',
|
|
||||||
})
|
|
||||||
total_approved: number;
|
total_approved: number;
|
||||||
|
|
||||||
@Column({
|
@Column({ type: 'int', nullable: false })
|
||||||
nullable: false,
|
|
||||||
type: 'int',
|
|
||||||
})
|
|
||||||
total_rejected: number;
|
total_rejected: number;
|
||||||
|
|
||||||
@Column({
|
@Column({ type: 'int', nullable: false })
|
||||||
nullable: false,
|
|
||||||
type: 'int',
|
|
||||||
})
|
|
||||||
total_pending: number;
|
total_pending: number;
|
||||||
|
|
||||||
@Column({
|
@Column({ type: 'decimal', precision: 12, scale: 2, nullable: false })
|
||||||
nullable: false,
|
|
||||||
type: 'decimal',
|
|
||||||
precision: 12,
|
|
||||||
scale: 2,
|
|
||||||
})
|
|
||||||
total_budget: number;
|
total_budget: number;
|
||||||
|
|
||||||
@Column({
|
@Column({ type: 'text', nullable: true })
|
||||||
nullable: true,
|
|
||||||
type: 'text',
|
|
||||||
})
|
|
||||||
remarks: string;
|
remarks: string;
|
||||||
|
|
||||||
// Store multiple submissions IDs
|
@OneToMany(() => RequestSubmission, (submission) => submission.recap, { cascade: true })
|
||||||
@Column('uuid', { array: true, nullable: true })
|
submissions: RequestSubmission[];
|
||||||
submissions_ids: string[];
|
|
||||||
|
@Column({ type: 'varchar', nullable: true })
|
||||||
@Column({
|
|
||||||
nullable: true,
|
|
||||||
type: 'varchar',
|
|
||||||
})
|
|
||||||
journal_id: string;
|
|
||||||
|
|
||||||
@Column({ nullable: true })
|
|
||||||
created_by: string;
|
created_by: string;
|
||||||
|
|
||||||
@Column()
|
|
||||||
@CreateDateColumn()
|
@CreateDateColumn()
|
||||||
created_at: Date;
|
created_at: Date;
|
||||||
|
|
||||||
@Column({ nullable: true })
|
|
||||||
@UpdateDateColumn()
|
@UpdateDateColumn()
|
||||||
updated_at: Date;
|
updated_at: Date;
|
||||||
|
|
||||||
@Column({ nullable: true })
|
@DeleteDateColumn({ nullable: true })
|
||||||
@DeleteDateColumn()
|
|
||||||
deleted_at: Date;
|
deleted_at: Date;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user