update
This commit is contained in:
@ -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;
|
||||
|
||||
@ -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[];
|
||||
|
||||
|
||||
@ -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,47 @@ export class AssetRealization {
|
||||
})
|
||||
discrepancy_images: string;
|
||||
|
||||
// Excess and Insufficient Quantity & Nominal
|
||||
@Column({
|
||||
nullable: true,
|
||||
type: 'float',
|
||||
})
|
||||
excess_quantity: number;
|
||||
@Column({
|
||||
nullable: true,
|
||||
type: 'float',
|
||||
})
|
||||
insufficient_quantity: number;
|
||||
|
||||
@Column({
|
||||
nullable: true,
|
||||
type: 'float',
|
||||
})
|
||||
excess_nominal: number;
|
||||
@Column({
|
||||
nullable: true,
|
||||
type: 'float',
|
||||
})
|
||||
insufficient_nominal: number;
|
||||
|
||||
@Column({
|
||||
nullable: true,
|
||||
type: 'text',
|
||||
})
|
||||
insufficient_quantity_images: string;
|
||||
|
||||
@Column({
|
||||
nullable: true,
|
||||
type: 'text',
|
||||
})
|
||||
excess_quantity_images: string;
|
||||
|
||||
@Column({
|
||||
type: 'varchar',
|
||||
nullable: false,
|
||||
})
|
||||
requested_by: string;
|
||||
|
||||
@Column()
|
||||
@CreateDateColumn()
|
||||
created_at: Date;
|
||||
|
||||
@ -4,13 +4,14 @@ import {
|
||||
Column,
|
||||
CreateDateColumn,
|
||||
UpdateDateColumn,
|
||||
DeleteDateColumn,
|
||||
ManyToOne,
|
||||
JoinColumn,
|
||||
Index,
|
||||
DeleteDateColumn
|
||||
} from 'typeorm';
|
||||
|
||||
import { RequestOrder } from './request_orders';
|
||||
export enum GoodsReceiptStatus {
|
||||
PENDING = 'PENDING',
|
||||
RECEIVED = 'RECEIVED',
|
||||
REJECTED = 'REJECTED',
|
||||
}
|
||||
|
||||
@Entity('goods_receipts')
|
||||
export class GoodsReceipt {
|
||||
@ -29,10 +30,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',
|
||||
@ -47,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()
|
||||
|
||||
@ -42,19 +42,26 @@ export class PaymentApproval {
|
||||
})
|
||||
approved_amount: number;
|
||||
|
||||
@Column({
|
||||
nullable: false,
|
||||
type: 'enum',
|
||||
enum: ApprovalStatus,
|
||||
default: ApprovalStatus.PENDING,
|
||||
})
|
||||
finance_approval_status: ApprovalStatus;
|
||||
// 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: true,
|
||||
type: 'uuid',
|
||||
})
|
||||
approved_by: string;
|
||||
|
||||
@OneToMany(() => AssetJournalEntry, (journalEntry) => journalEntry.paymentApproval)
|
||||
journalEntries: AssetJournalEntry[];
|
||||
|
||||
@ -33,7 +33,6 @@ export class RequestOrder {
|
||||
order_number: string;
|
||||
|
||||
@Column({
|
||||
type: 'date',
|
||||
nullable: false,
|
||||
})
|
||||
order_date: Date;
|
||||
@ -52,6 +51,12 @@ export class RequestOrder {
|
||||
})
|
||||
requested_by: string;
|
||||
|
||||
@Column({
|
||||
type: 'varchar',
|
||||
nullable: false,
|
||||
})
|
||||
department: string;
|
||||
|
||||
@Column({
|
||||
type: 'text',
|
||||
nullable: true,
|
||||
@ -111,7 +116,6 @@ export class RequestOrder {
|
||||
})
|
||||
gm_approval_status: ApprovalStatus;
|
||||
|
||||
// Store multiple goods IDs
|
||||
@Column('uuid', { array: true, nullable: true })
|
||||
goods_ids: string[];
|
||||
|
||||
|
||||
@ -5,62 +5,79 @@ import {
|
||||
CreateDateColumn,
|
||||
UpdateDateColumn,
|
||||
DeleteDateColumn,
|
||||
Index,
|
||||
ManyToOne,
|
||||
JoinColumn,
|
||||
JoinColumn
|
||||
} from 'typeorm';
|
||||
|
||||
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, (order) => order.id, { nullable: false })
|
||||
@ManyToOne(() => RequestOrder, { nullable: false })
|
||||
@JoinColumn({ name: 'request_order_id' })
|
||||
requestOrder: RequestOrder;
|
||||
request_order: RequestOrder;
|
||||
|
||||
@Column({
|
||||
nullable: false,
|
||||
type: 'uuid',
|
||||
})
|
||||
request_order_id: string;
|
||||
|
||||
@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: false,
|
||||
length: 64,
|
||||
})
|
||||
status: string;
|
||||
@Column({ type: 'varchar', nullable: true })
|
||||
department: string | null;
|
||||
|
||||
@Column({ type: 'enum', enum: SubmissionStatus, nullable: false, default: SubmissionStatus.DRAFT })
|
||||
status: SubmissionStatus;
|
||||
|
||||
// General Manager Approval
|
||||
@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;
|
||||
|
||||
@Column({ type: 'varchar', nullable: true })
|
||||
updated_by: string | null;
|
||||
|
||||
@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;
|
||||
|
||||
@Column()
|
||||
@CreateDateColumn()
|
||||
created_at: Date;
|
||||
|
||||
@Column({ nullable: true })
|
||||
@UpdateDateColumn()
|
||||
updated_at: Date;
|
||||
|
||||
@Column({ nullable: true })
|
||||
@DeleteDateColumn()
|
||||
deleted_at: Date;
|
||||
@DeleteDateColumn({ nullable: true })
|
||||
deleted_at: Date | null;
|
||||
}
|
||||
|
||||
@ -56,6 +56,19 @@ export class SubmissionRecap {
|
||||
})
|
||||
remarks: string;
|
||||
|
||||
// Store multiple submissions IDs
|
||||
@Column('uuid', { array: true, nullable: true })
|
||||
submissions_ids: string[];
|
||||
|
||||
@Column({
|
||||
nullable: true,
|
||||
type: 'varchar',
|
||||
})
|
||||
journal_id: string;
|
||||
|
||||
@Column({ nullable: true })
|
||||
created_by: string;
|
||||
|
||||
@Column()
|
||||
@CreateDateColumn()
|
||||
created_at: Date;
|
||||
|
||||
Reference in New Issue
Block a user