From 801499089b7ad803ee1094ff9d8cee9bf2a39224 Mon Sep 17 00:00:00 2001 From: fadlydev Date: Thu, 30 Jan 2025 08:28:05 +0700 Subject: [PATCH 01/12] update recap request submission --- src/entity/request_submission.ts | 26 +++++++++++++++++++++++++- src/entity/request_submission_recap.ts | 7 +++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/entity/request_submission.ts b/src/entity/request_submission.ts index 538e6cd..a7b2f3a 100644 --- a/src/entity/request_submission.ts +++ b/src/entity/request_submission.ts @@ -17,7 +17,7 @@ export class RequestSubmission { @PrimaryGeneratedColumn('uuid') id: string; - @ManyToOne(() => RequestOrder, (order) => order.id, { nullable: false }) + @ManyToOne(() => RequestOrder, (order) => order.id, { nullable: true }) @JoinColumn({ name: 'request_order_id' }) requestOrder: RequestOrder; @@ -52,6 +52,30 @@ export class RequestSubmission { }) status: string; + @Column({ + nullable: true, + length: 64, + }) + finance_approval: string; + + @Column({ + nullable: true, + type: 'date', + }) + approval_date: Date; + + @Column({ + nullable: false, + type: 'varchar', + }) + created_by: string; + + @Column({ + nullable: true, + type: 'varchar', + }) + updated_by: string; + @Column() @CreateDateColumn() created_at: Date; diff --git a/src/entity/request_submission_recap.ts b/src/entity/request_submission_recap.ts index a079039..8fbcdcc 100644 --- a/src/entity/request_submission_recap.ts +++ b/src/entity/request_submission_recap.ts @@ -56,6 +56,13 @@ export class SubmissionRecap { }) remarks: string; + // Store multiple submissions IDs + @Column('uuid', { array: true, nullable: true }) + submissions_ids: string[]; + + @Column({ nullable: true }) + created_by: string; + @Column() @CreateDateColumn() created_at: Date; From 74a204b677fd9479ab33a5fa6da9e081f11e9bfb Mon Sep 17 00:00:00 2001 From: fadlydev Date: Thu, 30 Jan 2025 13:30:33 +0700 Subject: [PATCH 02/12] replace finance_approval with gm_approval --- src/entity/request_submission.ts | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/entity/request_submission.ts b/src/entity/request_submission.ts index a7b2f3a..eacefe9 100644 --- a/src/entity/request_submission.ts +++ b/src/entity/request_submission.ts @@ -12,6 +12,12 @@ import { import { RequestOrder } from './request_orders'; +enum ApprovalStatus { + PENDING = 'PENDING', + APPROVED = 'APPROVED', + REJECTED = 'REJECTED', +} + @Entity('request_submissions') export class RequestSubmission { @PrimaryGeneratedColumn('uuid') @@ -52,17 +58,25 @@ export class RequestSubmission { }) status: string; + // General Manager Approval @Column({ + type: 'uuid', nullable: true, - length: 64, }) - finance_approval: string; + approved_by_gm: string | null; @Column({ + type: 'timestamp', nullable: true, - type: 'date', }) - approval_date: Date; + gm_approval_date: Date | null; + + @Column({ + type: 'enum', + enum: ApprovalStatus, + default: ApprovalStatus.PENDING, + }) + gm_approval_status: ApprovalStatus; @Column({ nullable: false, From f0894132f4b499029bb68fba35d0af8c8862f008 Mon Sep 17 00:00:00 2001 From: fadlydev Date: Thu, 30 Jan 2025 13:35:27 +0700 Subject: [PATCH 03/12] remove relation from good receipt --- src/entity/goods_receipt.ts | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/src/entity/goods_receipt.ts b/src/entity/goods_receipt.ts index e2782c7..55af194 100644 --- a/src/entity/goods_receipt.ts +++ b/src/entity/goods_receipt.ts @@ -4,14 +4,9 @@ import { Column, CreateDateColumn, UpdateDateColumn, - DeleteDateColumn, - ManyToOne, - JoinColumn, - Index, + DeleteDateColumn } from 'typeorm'; -import { RequestOrder } from './request_orders'; - @Entity('goods_receipts') export class GoodsReceipt { @PrimaryGeneratedColumn('uuid') @@ -29,10 +24,6 @@ export class GoodsReceipt { }) receipt_date: Date; - @ManyToOne(() => RequestOrder, (requestOrder) => requestOrder.id, { nullable: true }) - @JoinColumn({ name: 'request_order_id' }) - requestOrder: RequestOrder; - @Column({ nullable: true, type: 'uuid', From a7c7e9851791a1eadbbc3846539fad7ac38b7f14 Mon Sep 17 00:00:00 2001 From: fadlydev Date: Thu, 30 Jan 2025 14:57:22 +0700 Subject: [PATCH 04/12] add department to RO --- src/entity/request_orders.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/entity/request_orders.ts b/src/entity/request_orders.ts index e0c1ea4..78e2a6a 100644 --- a/src/entity/request_orders.ts +++ b/src/entity/request_orders.ts @@ -52,6 +52,12 @@ export class RequestOrder { }) requested_by: string; + @Column({ + type: 'varchar', + nullable: false, + }) + department: string; + @Column({ type: 'text', nullable: true, From 148a3fb3f82615b56323fbca18cdd15f71129b59 Mon Sep 17 00:00:00 2001 From: fadlydev Date: Thu, 30 Jan 2025 14:57:43 +0700 Subject: [PATCH 05/12] add jurnal ID to submission --- src/entity/request_submission_recap.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/entity/request_submission_recap.ts b/src/entity/request_submission_recap.ts index 8fbcdcc..d079730 100644 --- a/src/entity/request_submission_recap.ts +++ b/src/entity/request_submission_recap.ts @@ -60,6 +60,12 @@ export class SubmissionRecap { @Column('uuid', { array: true, nullable: true }) submissions_ids: string[]; + @Column({ + nullable: true, + type: 'varchar', + }) + journal_id: string; + @Column({ nullable: true }) created_by: string; From 87c11a3416a3a83875be15b6b52e23fa005fb3f1 Mon Sep 17 00:00:00 2001 From: fadlydev Date: Thu, 30 Jan 2025 18:24:17 +0700 Subject: [PATCH 06/12] add requested, quantity discrepancy, and status enum --- src/entity/goods_receipt.ts | 50 ++++++++++++++++++++++++++++++++++--- 1 file changed, 46 insertions(+), 4 deletions(-) diff --git a/src/entity/goods_receipt.ts b/src/entity/goods_receipt.ts index 55af194..cdba296 100644 --- a/src/entity/goods_receipt.ts +++ b/src/entity/goods_receipt.ts @@ -7,6 +7,12 @@ import { DeleteDateColumn } from 'typeorm'; +export enum GoodsReceiptStatus { + PENDING = 'PENDING', + RECEIVED = 'RECEIVED', + REJECTED = 'REJECTED', +} + @Entity('goods_receipts') export class GoodsReceipt { @PrimaryGeneratedColumn('uuid') @@ -38,15 +44,51 @@ export class GoodsReceipt { @Column({ nullable: true, - type: 'text', + type: 'varchar', }) - remarks: string; + requested_by: string; + + @Column({ + nullable: true, + type: 'decimal', + precision: 15, + scale: 2, + }) + nominal: number; @Column({ nullable: false, - length: 64, + type: 'int', }) - status: string; + requested_quantity: number; + + @Column({ + nullable: false, + type: 'int', + default: 0, + }) + quantity_received: number; + + @Column({ + nullable: false, + type: 'int', + default: 0, + }) + quantity_remaining: number; + + @Column({ + nullable: false, + type: 'boolean', + default: false, + }) + finalized: boolean; + + @Column({ + type: 'enum', + enum: GoodsReceiptStatus, + default: GoodsReceiptStatus.PENDING, + }) + status: GoodsReceiptStatus; @Column() @CreateDateColumn() From aac8d290f09ae8a062f24c0bec5498532fba8891 Mon Sep 17 00:00:00 2001 From: fadlydev Date: Thu, 30 Jan 2025 18:41:27 +0700 Subject: [PATCH 07/12] update realization fields --- src/entity/asset_realizations.ts | 71 ++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/src/entity/asset_realizations.ts b/src/entity/asset_realizations.ts index 03d3710..82906c9 100644 --- a/src/entity/asset_realizations.ts +++ b/src/entity/asset_realizations.ts @@ -7,6 +7,12 @@ import { DeleteDateColumn } from 'typeorm'; +enum ApprovalStatus { + PENDING = 'PENDING', + APPROVED = 'APPROVED', + REJECTED = 'REJECTED', +} + @Entity('asset_realizations') export class AssetRealization { @PrimaryGeneratedColumn('uuid') @@ -36,6 +42,26 @@ export class AssetRealization { }) department_id: string; + // 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({ nullable: false, type: 'uuid', @@ -54,6 +80,7 @@ export class AssetRealization { }) status: string; + // Discrepancies @Column({ nullable: true, type: 'float', @@ -78,6 +105,50 @@ export class AssetRealization { }) discrepancy_images: string; + // Excess and Insufficient Quantity & Nominal + @Column({ + nullable: true, + type: 'float', + }) + excess_quantity: number; // Stores the extra quantity received + + @Column({ + nullable: true, + type: 'float', + }) + insufficient_quantity: number; // Stores the missing quantity + + @Column({ + nullable: true, + type: 'float', + }) + excess_nominal: number; // Stores the monetary value of excess quantity + + @Column({ + nullable: true, + type: 'float', + }) + insufficient_nominal: number; // Stores the monetary value of insufficient quantity + + // Image Evidence for Excess and Insufficient Quantity + @Column({ + nullable: true, + type: 'text', + }) + insufficient_quantity_images: string; // Stores URLs for insufficient quantity evidence + + @Column({ + nullable: true, + type: 'text', + }) + excess_quantity_images: string; // Stores URLs for excess quantity evidence + + @Column({ + type: 'varchar', + nullable: false, + }) + requested_by: string; + @Column() @CreateDateColumn() created_at: Date; From 28e2d701c59175dd86321604166c74d84cd5fb14 Mon Sep 17 00:00:00 2001 From: fadlydev Date: Fri, 31 Jan 2025 02:59:22 +0700 Subject: [PATCH 08/12] adjust the fields realizations --- src/entity/asset_realizations.ts | 33 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/src/entity/asset_realizations.ts b/src/entity/asset_realizations.ts index 82906c9..baa5ad3 100644 --- a/src/entity/asset_realizations.ts +++ b/src/entity/asset_realizations.ts @@ -110,38 +110,35 @@ export class AssetRealization { nullable: true, type: 'float', }) - excess_quantity: number; // Stores the extra quantity received + excess_quantity: number; + @Column({ + nullable: true, + type: 'float', + }) + insufficient_quantity: number; @Column({ nullable: true, type: 'float', }) - insufficient_quantity: number; // Stores the missing quantity - + excess_nominal: number; @Column({ nullable: true, type: 'float', }) - excess_nominal: number; // Stores the monetary value of excess quantity - - @Column({ - nullable: true, - type: 'float', - }) - insufficient_nominal: number; // Stores the monetary value of insufficient quantity - - // Image Evidence for Excess and Insufficient Quantity - @Column({ - nullable: true, - type: 'text', - }) - insufficient_quantity_images: string; // Stores URLs for insufficient quantity evidence + insufficient_nominal: number; @Column({ nullable: true, type: 'text', }) - excess_quantity_images: string; // Stores URLs for excess quantity evidence + insufficient_quantity_images: string; + + @Column({ + nullable: true, + type: 'text', + }) + excess_quantity_images: string; @Column({ type: 'varchar', From 68ea1a1fa8cb1ecb5f131ed239a28e96679b84b8 Mon Sep 17 00:00:00 2001 From: fadlydev Date: Fri, 31 Jan 2025 03:12:00 +0700 Subject: [PATCH 09/12] update fields invoice, payment approval, realization recap --- src/entity/asset_invoice.ts | 102 +++++-------------------- src/entity/asset_realization_recaps.ts | 19 ++--- src/entity/payment_approval.ts | 33 ++++---- 3 files changed, 45 insertions(+), 109 deletions(-) diff --git a/src/entity/asset_invoice.ts b/src/entity/asset_invoice.ts index d49134f..6f63e72 100644 --- a/src/entity/asset_invoice.ts +++ b/src/entity/asset_invoice.ts @@ -5,12 +5,8 @@ import { CreateDateColumn, UpdateDateColumn, DeleteDateColumn, - ManyToOne, - JoinColumn, } from 'typeorm'; -import { RequestOrder } from './request_orders'; - export enum PaymentStatus { PAID = 'PAID', UNPAID = 'UNPAID', @@ -35,117 +31,57 @@ export class Invoice { @PrimaryGeneratedColumn('uuid') id: string; - @Column({ - nullable: false, - length: 128, - }) + @Column({ nullable: false, length: 128 }) invoice_number: string; - @Column({ - nullable: false, - type: 'date', - }) + @Column({ nullable: false, type: 'date' }) invoice_date: Date; - @Column({ - nullable: false, - type: 'date', - }) + @Column({ nullable: false, type: 'date' }) due_date: Date; - @Column({ - nullable: false, - type: 'uuid', - }) + @Column({ nullable: false, type: 'uuid' }) supplier_id: string; - @ManyToOne(() => RequestOrder, (requestOrder) => requestOrder.id, { nullable: false }) - @JoinColumn({ name: 'request_order_id' }) - requestOrder: RequestOrder; - - @Column({ - nullable: false, - type: 'uuid', - }) + @Column({ nullable: false, type: 'uuid' }) request_order_id: string; - @Column({ - nullable: false, - type: 'decimal', - precision: 12, - scale: 2, - }) + @Column({ nullable: false, type: 'decimal', precision: 12, scale: 2 }) total_amount: number; - @Column({ - nullable: false, - type: 'decimal', - precision: 12, - scale: 2, - }) + @Column({ nullable: false, type: 'decimal', precision: 12, scale: 2 }) tax_amount: number; - @Column({ - nullable: false, - length: 3, - }) + @Column({ nullable: false, length: 3 }) currency: string; - @Column({ - nullable: true, - type: 'decimal', - precision: 12, - scale: 2, - }) + @Column({ nullable: true, type: 'decimal', precision: 12, scale: 2 }) discount: number; - @Column({ - nullable: false, - type: 'decimal', - precision: 12, - scale: 2, - }) + @Column({ nullable: false, type: 'decimal', precision: 12, scale: 2 }) net_amount: number; - @Column({ - nullable: true, - type: 'text', - }) + @Column({ nullable: true, type: 'text' }) payment_terms: string; - @Column({ - nullable: true, - type: 'enum', - enum: PaymentMethod, - }) + @Column({ nullable: true, type: 'enum', enum: PaymentMethod }) payment_method: PaymentMethod; - @Column({ - nullable: false, - type: 'uuid', - }) + @Column({ nullable: false, type: 'uuid' }) issued_by: string; - @Column({ - nullable: true, - type: 'text', - }) + @Column({ nullable: true, type: 'text' }) remarks: string; - @Column({ - nullable: false, - type: 'enum', - enum: PaymentStatus, - }) + @Column({ nullable: false, type: 'enum', enum: PaymentStatus }) payment_status: PaymentStatus; - @Column({ - nullable: false, - type: 'enum', - enum: InvoiceStatus, - }) + @Column({ nullable: false, type: 'enum', enum: InvoiceStatus }) invoice_status: InvoiceStatus; + @Column({ nullable: true, type: 'text' }) + invoice_evidence: string; + @Column() @CreateDateColumn() created_at: Date; diff --git a/src/entity/asset_realization_recaps.ts b/src/entity/asset_realization_recaps.ts index 384ca4e..b865db2 100644 --- a/src/entity/asset_realization_recaps.ts +++ b/src/entity/asset_realization_recaps.ts @@ -5,12 +5,9 @@ import { CreateDateColumn, UpdateDateColumn, DeleteDateColumn, - ManyToOne, - JoinColumn, OneToMany, } from 'typeorm'; -import { Department } from './department'; import { AssetRealization } from './asset_realizations'; @Entity('asset_realization_recaps') @@ -44,22 +41,18 @@ export class AssetRealizationRecap { }) total_value: number; - @ManyToOne(() => Department, (department) => department.id, { nullable: false }) - @JoinColumn({ name: 'department_id' }) - department: Department; - - @Column({ - nullable: false, - type: 'uuid', - }) - department_id: string; - @Column({ nullable: false, type: 'uuid', }) created_by: string; + @Column({ + nullable: false, + type: 'uuid', + }) + journal_id: string; + @OneToMany(() => AssetRealization, (realization) => realization.id) assetRealizations: AssetRealization[]; diff --git a/src/entity/payment_approval.ts b/src/entity/payment_approval.ts index dfbeab2..f67bd21 100644 --- a/src/entity/payment_approval.ts +++ b/src/entity/payment_approval.ts @@ -42,19 +42,26 @@ export class PaymentApproval { }) approved_amount: number; - @Column({ - nullable: false, - type: 'enum', - enum: ApprovalStatus, - default: ApprovalStatus.PENDING, - }) - finance_approval_status: ApprovalStatus; - - @Column({ - nullable: true, - type: 'uuid', - }) - approved_by: string; + // 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; + @OneToMany(() => AssetJournalEntry, (journalEntry) => journalEntry.paymentApproval) journalEntries: AssetJournalEntry[]; From c0ebf8810190f921079086e69fd24c78e6f2195a Mon Sep 17 00:00:00 2001 From: fadlydev Date: Fri, 31 Jan 2025 15:57:47 +0700 Subject: [PATCH 10/12] update request submission --- src/entity/request_submission.ts | 48 ++++++++++++++++++++++---------- 1 file changed, 34 insertions(+), 14 deletions(-) diff --git a/src/entity/request_submission.ts b/src/entity/request_submission.ts index eacefe9..6eadb1e 100644 --- a/src/entity/request_submission.ts +++ b/src/entity/request_submission.ts @@ -5,13 +5,8 @@ import { CreateDateColumn, UpdateDateColumn, DeleteDateColumn, - Index, - ManyToOne, - JoinColumn, } from 'typeorm'; -import { RequestOrder } from './request_orders'; - enum ApprovalStatus { PENDING = 'PENDING', APPROVED = 'APPROVED', @@ -23,15 +18,12 @@ export class RequestSubmission { @PrimaryGeneratedColumn('uuid') id: string; - @ManyToOne(() => RequestOrder, (order) => order.id, { nullable: true }) - @JoinColumn({ name: 'request_order_id' }) - requestOrder: RequestOrder; - @Column({ - nullable: false, type: 'uuid', + array: true, + nullable: false, }) - request_order_id: string; + request_order_id: string[]; @Column({ nullable: false, @@ -52,6 +44,12 @@ export class RequestSubmission { }) remarks: string; + @Column({ + nullable: true, + type: 'varchar', + }) + department: string; + @Column({ nullable: false, length: 64, @@ -90,15 +88,37 @@ export class RequestSubmission { }) updated_by: string; - @Column() + @Column({ + type: 'int', + nullable: false, + default: 0, + }) + quantity: number; + + @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, + }) + total: number; + @CreateDateColumn() created_at: Date; - @Column({ nullable: true }) @UpdateDateColumn() updated_at: Date; - @Column({ nullable: true }) @DeleteDateColumn() deleted_at: Date; } From 68fc37f713568170a518c966c10e5b72835e32e8 Mon Sep 17 00:00:00 2001 From: fadlydev Date: Sat, 1 Feb 2025 11:43:43 +0700 Subject: [PATCH 11/12] update relation request submission --- src/entity/request_orders.ts | 1 - src/entity/request_submission.ts | 20 ++++++++++++-------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/entity/request_orders.ts b/src/entity/request_orders.ts index 78e2a6a..eb00686 100644 --- a/src/entity/request_orders.ts +++ b/src/entity/request_orders.ts @@ -33,7 +33,6 @@ export class RequestOrder { order_number: string; @Column({ - type: 'date', nullable: false, }) order_date: Date; diff --git a/src/entity/request_submission.ts b/src/entity/request_submission.ts index 6eadb1e..7357608 100644 --- a/src/entity/request_submission.ts +++ b/src/entity/request_submission.ts @@ -5,8 +5,13 @@ import { CreateDateColumn, UpdateDateColumn, DeleteDateColumn, + ManyToOne, + JoinColumn } from 'typeorm'; +import { RequestOrder + + } from './request_orders'; enum ApprovalStatus { PENDING = 'PENDING', APPROVED = 'APPROVED', @@ -17,14 +22,9 @@ enum ApprovalStatus { export class RequestSubmission { @PrimaryGeneratedColumn('uuid') id: string; - - @Column({ - type: 'uuid', - array: true, - nullable: false, - }) - request_order_id: string[]; - + @ManyToOne(() => RequestOrder, { nullable: true }) + @JoinColumn({ name: 'request_order_id' }) + request_order: RequestOrder; @Column({ nullable: false, type: 'varchar', @@ -76,6 +76,10 @@ export class RequestSubmission { }) gm_approval_status: ApprovalStatus; + // Store multiple + @Column('uuid', { array: true, nullable: true }) + request_order_ids: string[]; + @Column({ nullable: false, type: 'varchar', From 689fc17e7e0602c01657327cf2794a7d75454a75 Mon Sep 17 00:00:00 2001 From: fadlydev Date: Sun, 2 Feb 2025 10:19:51 +0700 Subject: [PATCH 12/12] update entity relation --- src/entity/request_orders.ts | 1 - src/entity/request_submission.ts | 105 +++++++++---------------------- 2 files changed, 30 insertions(+), 76 deletions(-) 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; }