update
This commit is contained in:
@ -1,50 +0,0 @@
|
|||||||
import {
|
|
||||||
Entity,
|
|
||||||
PrimaryGeneratedColumn,
|
|
||||||
Column,
|
|
||||||
CreateDateColumn,
|
|
||||||
UpdateDateColumn,
|
|
||||||
DeleteDateColumn,
|
|
||||||
OneToMany,
|
|
||||||
} from 'typeorm';
|
|
||||||
|
|
||||||
import { Goods } from './goods';
|
|
||||||
|
|
||||||
@Entity('asset_category')
|
|
||||||
export class AssetCategory {
|
|
||||||
@PrimaryGeneratedColumn('uuid')
|
|
||||||
id: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: true,
|
|
||||||
length: 128,
|
|
||||||
})
|
|
||||||
name: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: true,
|
|
||||||
length: 255,
|
|
||||||
})
|
|
||||||
description: string;
|
|
||||||
|
|
||||||
@OneToMany(() => Goods, (goods) => goods.category)
|
|
||||||
goods: Goods[];
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
default: true,
|
|
||||||
})
|
|
||||||
is_active: boolean;
|
|
||||||
|
|
||||||
@Column()
|
|
||||||
@CreateDateColumn()
|
|
||||||
created_at: Date;
|
|
||||||
|
|
||||||
@Column({ nullable: true })
|
|
||||||
@UpdateDateColumn()
|
|
||||||
updated_at: Date;
|
|
||||||
|
|
||||||
@Column({ nullable: true })
|
|
||||||
@DeleteDateColumn()
|
|
||||||
deleted_at: Date;
|
|
||||||
}
|
|
||||||
@ -1,51 +0,0 @@
|
|||||||
import {
|
|
||||||
Entity,
|
|
||||||
PrimaryGeneratedColumn,
|
|
||||||
Column,
|
|
||||||
CreateDateColumn,
|
|
||||||
UpdateDateColumn,
|
|
||||||
DeleteDateColumn,
|
|
||||||
} from 'typeorm';
|
|
||||||
|
|
||||||
@Entity('asset_classification')
|
|
||||||
export class AssetClassification {
|
|
||||||
@PrimaryGeneratedColumn('uuid')
|
|
||||||
id: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
length: 128,
|
|
||||||
})
|
|
||||||
name: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: true,
|
|
||||||
length: 255,
|
|
||||||
})
|
|
||||||
description: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
unique: true,
|
|
||||||
length: 64,
|
|
||||||
})
|
|
||||||
code_id: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: true,
|
|
||||||
length: 128,
|
|
||||||
})
|
|
||||||
updated_by: string;
|
|
||||||
|
|
||||||
@Column()
|
|
||||||
@CreateDateColumn()
|
|
||||||
created_at: Date;
|
|
||||||
|
|
||||||
@Column({ nullable: true })
|
|
||||||
@UpdateDateColumn()
|
|
||||||
updated_at: Date;
|
|
||||||
|
|
||||||
@Column({ nullable: true })
|
|
||||||
@DeleteDateColumn()
|
|
||||||
deleted_at: Date;
|
|
||||||
}
|
|
||||||
@ -1,73 +0,0 @@
|
|||||||
import {
|
|
||||||
Entity,
|
|
||||||
PrimaryGeneratedColumn,
|
|
||||||
Column,
|
|
||||||
CreateDateColumn,
|
|
||||||
UpdateDateColumn,
|
|
||||||
DeleteDateColumn,
|
|
||||||
Index,
|
|
||||||
ManyToOne,
|
|
||||||
JoinColumn,
|
|
||||||
} from 'typeorm';
|
|
||||||
import { FixedAssetClassification } from './fixed_assets_classification';
|
|
||||||
|
|
||||||
@Entity('asset_depreciation')
|
|
||||||
export class AssetDepreciation {
|
|
||||||
@PrimaryGeneratedColumn('uuid')
|
|
||||||
id: string;
|
|
||||||
|
|
||||||
@ManyToOne(() => FixedAssetClassification, (asset) => asset.id, { nullable: false })
|
|
||||||
@JoinColumn({ name: 'asset_id' })
|
|
||||||
asset: FixedAssetClassification;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
type: 'uuid',
|
|
||||||
})
|
|
||||||
asset_id: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
type: 'date',
|
|
||||||
})
|
|
||||||
depreciation_date: Date;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
type: 'decimal',
|
|
||||||
precision: 12,
|
|
||||||
scale: 2,
|
|
||||||
})
|
|
||||||
depreciation_amount: number;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: true,
|
|
||||||
type: 'text',
|
|
||||||
})
|
|
||||||
remarks: string;
|
|
||||||
|
|
||||||
@Index()
|
|
||||||
@Column({
|
|
||||||
nullable: true,
|
|
||||||
type: 'uuid',
|
|
||||||
})
|
|
||||||
created_by: string;
|
|
||||||
|
|
||||||
@Index()
|
|
||||||
@Column({
|
|
||||||
nullable: true,
|
|
||||||
type: 'uuid',
|
|
||||||
})
|
|
||||||
updated_by: string;
|
|
||||||
@Column()
|
|
||||||
@CreateDateColumn()
|
|
||||||
created_at: Date;
|
|
||||||
|
|
||||||
@Column({ nullable: true })
|
|
||||||
@UpdateDateColumn()
|
|
||||||
updated_at: Date;
|
|
||||||
|
|
||||||
@Column({ nullable: true })
|
|
||||||
@DeleteDateColumn()
|
|
||||||
deleted_at: Date;
|
|
||||||
}
|
|
||||||
37
src/entity/asset_fixed_classification.ts
Normal file
37
src/entity/asset_fixed_classification.ts
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, DeleteDateColumn } from "typeorm"
|
||||||
|
|
||||||
|
@Entity("asset_fixed_classifications")
|
||||||
|
export class AssetFixedClassification {
|
||||||
|
@PrimaryGeneratedColumn("uuid")
|
||||||
|
id: string
|
||||||
|
|
||||||
|
@Column({ type: "varchar", length: 50, unique: true })
|
||||||
|
code: string
|
||||||
|
|
||||||
|
@Column({ type: "varchar", length: 255 })
|
||||||
|
name: string
|
||||||
|
|
||||||
|
@Column({ type: "text", nullable: true })
|
||||||
|
description: string
|
||||||
|
|
||||||
|
@Column()
|
||||||
|
@CreateDateColumn()
|
||||||
|
created_at: Date
|
||||||
|
|
||||||
|
@Column({ nullable: true })
|
||||||
|
@UpdateDateColumn()
|
||||||
|
updated_at: Date;
|
||||||
|
|
||||||
|
@Column({ nullable: true })
|
||||||
|
@DeleteDateColumn()
|
||||||
|
deleted_at: Date;
|
||||||
|
|
||||||
|
@Column({ type: "varchar", length: 100, nullable: true })
|
||||||
|
created_by: string
|
||||||
|
|
||||||
|
@Column({ type: "varchar", length: 100, nullable: true })
|
||||||
|
updated_by: string
|
||||||
|
|
||||||
|
@Column({ type: "varchar", length: 100, nullable: true })
|
||||||
|
deleted_by: string
|
||||||
|
}
|
||||||
42
src/entity/asset_fixed_type.ts
Normal file
42
src/entity/asset_fixed_type.ts
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, DeleteDateColumn, ManyToOne, JoinTable } from "typeorm"
|
||||||
|
import { AssetFixedClassification } from "./asset_fixed_classification"
|
||||||
|
|
||||||
|
@Entity("asset_fixed_types")
|
||||||
|
export class AssetFixedType {
|
||||||
|
@PrimaryGeneratedColumn("uuid")
|
||||||
|
id: string
|
||||||
|
|
||||||
|
@ManyToOne(() => AssetFixedClassification, { onDelete: "CASCADE" })
|
||||||
|
@JoinTable()
|
||||||
|
fixed_classification: AssetFixedClassification
|
||||||
|
|
||||||
|
@Column({ type: "varchar", length: 50, unique: true })
|
||||||
|
code: string
|
||||||
|
|
||||||
|
@Column({ type: "varchar", length: 255 })
|
||||||
|
name: string
|
||||||
|
|
||||||
|
@Column({ type: "text", nullable: true })
|
||||||
|
description: string
|
||||||
|
|
||||||
|
@Column()
|
||||||
|
@CreateDateColumn()
|
||||||
|
created_at: Date
|
||||||
|
|
||||||
|
@Column({ type: "varchar", length: 100, nullable: true })
|
||||||
|
created_by: string
|
||||||
|
|
||||||
|
@Column({ nullable: true })
|
||||||
|
@UpdateDateColumn()
|
||||||
|
updated_at: Date;
|
||||||
|
|
||||||
|
@Column({ type: "varchar", length: 100, nullable: true })
|
||||||
|
updated_by: string
|
||||||
|
|
||||||
|
@Column({ nullable: true })
|
||||||
|
@DeleteDateColumn()
|
||||||
|
deleted_at: Date;
|
||||||
|
|
||||||
|
@Column({ type: "varchar", length: 100, nullable: true })
|
||||||
|
deleted_by: string
|
||||||
|
}
|
||||||
56
src/entity/asset_good.ts
Normal file
56
src/entity/asset_good.ts
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, DeleteDateColumn, ManyToOne, JoinColumn, JoinTable } from "typeorm"
|
||||||
|
import { AssetGoodCategory } from "./asset_good_category"
|
||||||
|
import { AssetFixedType } from "./asset_fixed_type"
|
||||||
|
|
||||||
|
@Entity("asset_goods")
|
||||||
|
export class AssetGood {
|
||||||
|
@PrimaryGeneratedColumn("uuid")
|
||||||
|
id: string
|
||||||
|
|
||||||
|
@ManyToOne(() => AssetGoodCategory, { onDelete: "CASCADE" })
|
||||||
|
@JoinTable()
|
||||||
|
good_category: AssetGoodCategory
|
||||||
|
|
||||||
|
@ManyToOne(() => AssetFixedType, { onDelete: "CASCADE" })
|
||||||
|
@JoinTable()
|
||||||
|
fixed_type: AssetFixedType
|
||||||
|
|
||||||
|
@Column({ type: "varchar", length: 50, unique: true })
|
||||||
|
code: string
|
||||||
|
|
||||||
|
@Column({ type: "varchar", length: 255 })
|
||||||
|
name: string
|
||||||
|
|
||||||
|
@Column({ type: "text", nullable: true })
|
||||||
|
description: string
|
||||||
|
|
||||||
|
@Column({ type: "smallint" })
|
||||||
|
price: number
|
||||||
|
|
||||||
|
@Column({ type: "varchar", length: 50 })
|
||||||
|
unit: string
|
||||||
|
|
||||||
|
@Column({ type: "varchar", length: 50, default: "active" })
|
||||||
|
status: string
|
||||||
|
|
||||||
|
@Column()
|
||||||
|
@CreateDateColumn()
|
||||||
|
created_at: Date
|
||||||
|
|
||||||
|
@Column({ type: "varchar", length: 100, nullable: true })
|
||||||
|
created_by: string
|
||||||
|
|
||||||
|
@Column({ nullable: true })
|
||||||
|
@UpdateDateColumn()
|
||||||
|
updated_at: Date;
|
||||||
|
|
||||||
|
@Column({ type: "varchar", length: 100, nullable: true })
|
||||||
|
updated_by: string
|
||||||
|
|
||||||
|
@Column({ nullable: true })
|
||||||
|
@DeleteDateColumn()
|
||||||
|
deleted_at: Date;
|
||||||
|
|
||||||
|
@Column({ type: "varchar", length: 100, nullable: true })
|
||||||
|
deleted_by: string
|
||||||
|
}
|
||||||
37
src/entity/asset_good_category.ts
Normal file
37
src/entity/asset_good_category.ts
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, DeleteDateColumn } from "typeorm"
|
||||||
|
|
||||||
|
@Entity("asset_good_categories")
|
||||||
|
export class AssetGoodCategory {
|
||||||
|
@PrimaryGeneratedColumn("uuid")
|
||||||
|
id: string
|
||||||
|
|
||||||
|
@Column({ type: "varchar", length: 255 })
|
||||||
|
name: string
|
||||||
|
|
||||||
|
@Column({ type: "text", nullable: true })
|
||||||
|
description: string
|
||||||
|
|
||||||
|
@Column({ type: "varchar", length: 50, nullable: true })
|
||||||
|
status: string
|
||||||
|
|
||||||
|
@Column()
|
||||||
|
@CreateDateColumn()
|
||||||
|
created_at: Date
|
||||||
|
|
||||||
|
@Column({ type: "varchar", length: 100, nullable: true })
|
||||||
|
created_by: string
|
||||||
|
|
||||||
|
@Column({ nullable: true })
|
||||||
|
@UpdateDateColumn()
|
||||||
|
updated_at: Date;
|
||||||
|
|
||||||
|
@Column({ type: "varchar", length: 100, nullable: true })
|
||||||
|
updated_by: string
|
||||||
|
|
||||||
|
@Column({ nullable: true })
|
||||||
|
@DeleteDateColumn()
|
||||||
|
deleted_at: Date;
|
||||||
|
|
||||||
|
@Column({ type: "varchar", length: 100, nullable: true })
|
||||||
|
deleted_by: string
|
||||||
|
}
|
||||||
@ -1,96 +0,0 @@
|
|||||||
import {
|
|
||||||
Entity,
|
|
||||||
PrimaryGeneratedColumn,
|
|
||||||
Column,
|
|
||||||
CreateDateColumn,
|
|
||||||
UpdateDateColumn,
|
|
||||||
DeleteDateColumn,
|
|
||||||
} from 'typeorm';
|
|
||||||
|
|
||||||
export enum PaymentStatus {
|
|
||||||
PAID = 'PAID',
|
|
||||||
UNPAID = 'UNPAID',
|
|
||||||
PARTIALLY_PAID = 'PARTIALLY_PAID',
|
|
||||||
}
|
|
||||||
|
|
||||||
export enum InvoiceStatus {
|
|
||||||
ISSUED = 'ISSUED',
|
|
||||||
PENDING = 'PENDING',
|
|
||||||
CANCELED = 'CANCELED',
|
|
||||||
SETTLED = 'SETTLED',
|
|
||||||
}
|
|
||||||
|
|
||||||
export enum PaymentMethod {
|
|
||||||
BANK_TRANSFER = 'BANK_TRANSFER',
|
|
||||||
CREDIT_CARD = 'CREDIT_CARD',
|
|
||||||
PAYPAL = 'PAYPAL',
|
|
||||||
}
|
|
||||||
|
|
||||||
@Entity('invoices')
|
|
||||||
export class Invoice {
|
|
||||||
@PrimaryGeneratedColumn('uuid')
|
|
||||||
id: string;
|
|
||||||
|
|
||||||
@Column({ nullable: false, length: 128 })
|
|
||||||
invoice_number: string;
|
|
||||||
|
|
||||||
@Column({ nullable: false, type: 'date' })
|
|
||||||
invoice_date: Date;
|
|
||||||
|
|
||||||
@Column({ nullable: false, type: 'date' })
|
|
||||||
due_date: Date;
|
|
||||||
|
|
||||||
@Column({ nullable: false, type: 'uuid' })
|
|
||||||
supplier_id: string;
|
|
||||||
|
|
||||||
@Column({ nullable: false, type: 'uuid' })
|
|
||||||
request_order_id: string;
|
|
||||||
|
|
||||||
@Column({ nullable: false, type: 'decimal', precision: 12, scale: 2 })
|
|
||||||
total_amount: number;
|
|
||||||
|
|
||||||
@Column({ nullable: false, type: 'decimal', precision: 12, scale: 2 })
|
|
||||||
tax_amount: number;
|
|
||||||
|
|
||||||
@Column({ nullable: false, length: 3 })
|
|
||||||
currency: string;
|
|
||||||
|
|
||||||
@Column({ nullable: true, type: 'decimal', precision: 12, scale: 2 })
|
|
||||||
discount: number;
|
|
||||||
|
|
||||||
@Column({ nullable: false, type: 'decimal', precision: 12, scale: 2 })
|
|
||||||
net_amount: number;
|
|
||||||
|
|
||||||
@Column({ nullable: true, type: 'text' })
|
|
||||||
payment_terms: string;
|
|
||||||
|
|
||||||
@Column({ nullable: true, type: 'enum', enum: PaymentMethod })
|
|
||||||
payment_method: PaymentMethod;
|
|
||||||
|
|
||||||
@Column({ nullable: false, type: 'uuid' })
|
|
||||||
issued_by: string;
|
|
||||||
|
|
||||||
@Column({ nullable: true, type: 'text' })
|
|
||||||
remarks: string;
|
|
||||||
|
|
||||||
@Column({ nullable: false, type: 'enum', enum: PaymentStatus })
|
|
||||||
payment_status: PaymentStatus;
|
|
||||||
|
|
||||||
@Column({ nullable: false, type: 'enum', enum: InvoiceStatus })
|
|
||||||
invoice_status: InvoiceStatus;
|
|
||||||
|
|
||||||
@Column({ nullable: true, type: 'text' })
|
|
||||||
invoice_evidence: string;
|
|
||||||
|
|
||||||
@Column()
|
|
||||||
@CreateDateColumn()
|
|
||||||
created_at: Date;
|
|
||||||
|
|
||||||
@Column({ nullable: true })
|
|
||||||
@UpdateDateColumn()
|
|
||||||
updated_at: Date;
|
|
||||||
|
|
||||||
@Column({ nullable: true })
|
|
||||||
@DeleteDateColumn()
|
|
||||||
deleted_at: Date;
|
|
||||||
}
|
|
||||||
@ -1,90 +0,0 @@
|
|||||||
import {
|
|
||||||
Entity,
|
|
||||||
PrimaryGeneratedColumn,
|
|
||||||
Column,
|
|
||||||
CreateDateColumn,
|
|
||||||
UpdateDateColumn,
|
|
||||||
DeleteDateColumn,
|
|
||||||
OneToMany,
|
|
||||||
} from 'typeorm';
|
|
||||||
|
|
||||||
import { AssetRealization } from './asset_realizations';
|
|
||||||
|
|
||||||
@Entity('asset_realization_recaps')
|
|
||||||
export class AssetRealizationRecap {
|
|
||||||
@PrimaryGeneratedColumn('uuid')
|
|
||||||
id: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
length: 128,
|
|
||||||
})
|
|
||||||
recap_number: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
type: 'date',
|
|
||||||
})
|
|
||||||
recap_date: Date;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
type: 'int',
|
|
||||||
})
|
|
||||||
total_assets: number;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
type: 'decimal',
|
|
||||||
precision: 14,
|
|
||||||
scale: 2,
|
|
||||||
})
|
|
||||||
total_value: number;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
type: 'uuid',
|
|
||||||
})
|
|
||||||
created_by: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
type: 'uuid',
|
|
||||||
})
|
|
||||||
journal_id: string;
|
|
||||||
|
|
||||||
@OneToMany(() => AssetRealization, (realization) => realization.id)
|
|
||||||
assetRealizations: AssetRealization[];
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: true,
|
|
||||||
type: 'float',
|
|
||||||
})
|
|
||||||
total_quantity_discrepancy: number;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: true,
|
|
||||||
type: 'decimal',
|
|
||||||
precision: 14,
|
|
||||||
scale: 2,
|
|
||||||
})
|
|
||||||
total_payment_discrepancy: number;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: true,
|
|
||||||
type: 'text',
|
|
||||||
})
|
|
||||||
remarks: string;
|
|
||||||
|
|
||||||
@Column()
|
|
||||||
@CreateDateColumn()
|
|
||||||
created_at: Date;
|
|
||||||
|
|
||||||
@Column({ nullable: true })
|
|
||||||
@UpdateDateColumn()
|
|
||||||
updated_at: Date;
|
|
||||||
|
|
||||||
@Column({ nullable: true })
|
|
||||||
@DeleteDateColumn()
|
|
||||||
deleted_at: Date;
|
|
||||||
}
|
|
||||||
@ -1,160 +0,0 @@
|
|||||||
import {
|
|
||||||
Entity,
|
|
||||||
PrimaryGeneratedColumn,
|
|
||||||
Column,
|
|
||||||
CreateDateColumn,
|
|
||||||
UpdateDateColumn,
|
|
||||||
DeleteDateColumn
|
|
||||||
} from 'typeorm';
|
|
||||||
|
|
||||||
enum ApprovalStatus {
|
|
||||||
PENDING = 'PENDING',
|
|
||||||
APPROVED = 'APPROVED',
|
|
||||||
REJECTED = 'REJECTED',
|
|
||||||
}
|
|
||||||
|
|
||||||
@Entity('asset_realizations')
|
|
||||||
export class AssetRealization {
|
|
||||||
@PrimaryGeneratedColumn('uuid')
|
|
||||||
id: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
length: 128,
|
|
||||||
})
|
|
||||||
realization_number: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
type: 'date',
|
|
||||||
})
|
|
||||||
realization_date: Date;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
type: 'uuid',
|
|
||||||
})
|
|
||||||
goods_id: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
type: 'uuid',
|
|
||||||
})
|
|
||||||
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',
|
|
||||||
})
|
|
||||||
realized_by: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: true,
|
|
||||||
type: 'text',
|
|
||||||
})
|
|
||||||
remarks: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
length: 64,
|
|
||||||
})
|
|
||||||
status: string;
|
|
||||||
|
|
||||||
// Discrepancies
|
|
||||||
@Column({
|
|
||||||
nullable: true,
|
|
||||||
type: 'float',
|
|
||||||
})
|
|
||||||
quantity_discrepancy: number;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: true,
|
|
||||||
type: 'float',
|
|
||||||
})
|
|
||||||
payment_discrepancy: number;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: true,
|
|
||||||
type: 'text',
|
|
||||||
})
|
|
||||||
discrepancy_remarks: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: true,
|
|
||||||
type: 'text',
|
|
||||||
})
|
|
||||||
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;
|
|
||||||
|
|
||||||
@Column({ nullable: true })
|
|
||||||
@UpdateDateColumn()
|
|
||||||
updated_at: Date;
|
|
||||||
|
|
||||||
@Column({ nullable: true })
|
|
||||||
@DeleteDateColumn()
|
|
||||||
deleted_at: Date;
|
|
||||||
}
|
|
||||||
106
src/entity/asset_request_order.ts
Normal file
106
src/entity/asset_request_order.ts
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
import {
|
||||||
|
Entity,
|
||||||
|
PrimaryGeneratedColumn,
|
||||||
|
Column,
|
||||||
|
CreateDateColumn,
|
||||||
|
UpdateDateColumn,
|
||||||
|
DeleteDateColumn,
|
||||||
|
ManyToOne,
|
||||||
|
JoinColumn,
|
||||||
|
JoinTable
|
||||||
|
} from 'typeorm';
|
||||||
|
import { AssetRequestOrderCategory } from './asset_request_order_category';
|
||||||
|
|
||||||
|
@Entity('asset_request_orders')
|
||||||
|
export class AssetRequestOrder {
|
||||||
|
@PrimaryGeneratedColumn('uuid')
|
||||||
|
id: string;
|
||||||
|
|
||||||
|
@ManyToOne(() => AssetRequestOrderCategory, { onDelete: 'CASCADE' })
|
||||||
|
@JoinTable()
|
||||||
|
request_order_category: AssetRequestOrderCategory;
|
||||||
|
|
||||||
|
@Column({ type: 'uuid' })
|
||||||
|
department_id: string;
|
||||||
|
|
||||||
|
@Column({ type: 'varchar', length: 255 })
|
||||||
|
department_name: string;
|
||||||
|
|
||||||
|
@Column({ type: 'varchar', length: 50, unique: true })
|
||||||
|
code: string;
|
||||||
|
|
||||||
|
@Column({ type: 'varchar', length: 50 })
|
||||||
|
type: string;
|
||||||
|
|
||||||
|
@CreateDateColumn()
|
||||||
|
request_at: Date;
|
||||||
|
|
||||||
|
@Column({ type: 'text', nullable: true })
|
||||||
|
description: string;
|
||||||
|
|
||||||
|
@Column({ type: 'int2' })
|
||||||
|
quantity: number;
|
||||||
|
|
||||||
|
@Column({ type: 'float8' })
|
||||||
|
total: number;
|
||||||
|
|
||||||
|
@Column({ type: 'varchar', length: 50, default: 'pending' })
|
||||||
|
status: string;
|
||||||
|
|
||||||
|
@Column({ type: 'boolean', nullable: true })
|
||||||
|
is_spv_approved: boolean;
|
||||||
|
|
||||||
|
@Column({ type: 'varchar', length: 100, nullable: true })
|
||||||
|
spv_approved_by: string;
|
||||||
|
|
||||||
|
@Column({ nullable: true })
|
||||||
|
spv_approved_at: Date;
|
||||||
|
|
||||||
|
@Column({ type: 'text', nullable: true })
|
||||||
|
spv_approved_note: string;
|
||||||
|
|
||||||
|
@Column({ type: 'boolean', nullable: true })
|
||||||
|
is_ga_approved: boolean;
|
||||||
|
|
||||||
|
@Column({ type: 'varchar', length: 100, nullable: true })
|
||||||
|
ga_approved_by: string;
|
||||||
|
|
||||||
|
@Column({ nullable: true })
|
||||||
|
ga_approved_at: Date;
|
||||||
|
|
||||||
|
@Column({ type: 'text', nullable: true })
|
||||||
|
ga_approved_note: string;
|
||||||
|
|
||||||
|
@Column({ type: 'boolean', nullable: true })
|
||||||
|
is_gm_approved: boolean;
|
||||||
|
|
||||||
|
@Column({ type: 'varchar', length: 100, nullable: true })
|
||||||
|
gm_approved_by: string;
|
||||||
|
|
||||||
|
@Column({ nullable: true })
|
||||||
|
gm_approved_at: Date;
|
||||||
|
|
||||||
|
@Column({ type: 'text', nullable: true })
|
||||||
|
gm_approved_note: string;
|
||||||
|
|
||||||
|
@Column()
|
||||||
|
@CreateDateColumn()
|
||||||
|
created_at: Date;
|
||||||
|
|
||||||
|
@Column({ type: 'varchar', length: 100, nullable: true })
|
||||||
|
created_by: string;
|
||||||
|
|
||||||
|
@Column({ nullable: true })
|
||||||
|
@UpdateDateColumn()
|
||||||
|
updated_at: Date;;
|
||||||
|
|
||||||
|
@Column({ type: 'varchar', length: 100, nullable: true })
|
||||||
|
updated_by: string;
|
||||||
|
|
||||||
|
@Column({ nullable: true })
|
||||||
|
@DeleteDateColumn()
|
||||||
|
deleted_at: Date;;
|
||||||
|
|
||||||
|
@Column({ type: 'varchar', length: 100, nullable: true })
|
||||||
|
deleted_by: string;
|
||||||
|
}
|
||||||
37
src/entity/asset_request_order_category.ts
Normal file
37
src/entity/asset_request_order_category.ts
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, DeleteDateColumn } from "typeorm"
|
||||||
|
|
||||||
|
@Entity("asset_request_order_categories")
|
||||||
|
export class AssetRequestOrderCategory {
|
||||||
|
@PrimaryGeneratedColumn("uuid")
|
||||||
|
id: string
|
||||||
|
|
||||||
|
@Column({ type: "varchar", length: 50, unique: true })
|
||||||
|
code: string
|
||||||
|
|
||||||
|
@Column({ type: "varchar", length: 255 })
|
||||||
|
name: string
|
||||||
|
|
||||||
|
@Column({ type: "varchar", length: 50, nullable: true })
|
||||||
|
status: string
|
||||||
|
|
||||||
|
@Column()
|
||||||
|
@CreateDateColumn()
|
||||||
|
created_at: Date
|
||||||
|
|
||||||
|
@Column({ type: "varchar", length: 100, nullable: true })
|
||||||
|
created_by: string
|
||||||
|
|
||||||
|
@Column({ nullable: true })
|
||||||
|
@UpdateDateColumn()
|
||||||
|
updated_at: Date;
|
||||||
|
|
||||||
|
@Column({ type: "varchar", length: 100, nullable: true })
|
||||||
|
updated_by: string
|
||||||
|
|
||||||
|
@Column({ nullable: true })
|
||||||
|
@DeleteDateColumn()
|
||||||
|
deleted_at: Date;
|
||||||
|
|
||||||
|
@Column({ type: "varchar", length: 100, nullable: true })
|
||||||
|
deleted_by: string
|
||||||
|
}
|
||||||
42
src/entity/asset_request_order_good.ts
Normal file
42
src/entity/asset_request_order_good.ts
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
import {
|
||||||
|
Entity,
|
||||||
|
PrimaryGeneratedColumn,
|
||||||
|
Column,
|
||||||
|
ManyToOne,
|
||||||
|
JoinColumn,
|
||||||
|
JoinTable
|
||||||
|
} from 'typeorm';
|
||||||
|
import { AssetRequestOrder } from './asset_request_order';
|
||||||
|
import { AssetGood } from './asset_good';
|
||||||
|
|
||||||
|
@Entity('asset_request_order_goods')
|
||||||
|
export class AssetRequestOrderGood {
|
||||||
|
@PrimaryGeneratedColumn('uuid')
|
||||||
|
id: string;
|
||||||
|
|
||||||
|
@ManyToOne(() => AssetRequestOrder, { onDelete: 'CASCADE' })
|
||||||
|
@JoinTable()
|
||||||
|
request_order: AssetRequestOrder;
|
||||||
|
|
||||||
|
@ManyToOne(() => AssetGood, { onDelete: 'CASCADE' })
|
||||||
|
@JoinTable()
|
||||||
|
goods: AssetGood;
|
||||||
|
|
||||||
|
@Column({ type: 'varchar', length: 255 })
|
||||||
|
goods_name: string;
|
||||||
|
|
||||||
|
@Column({ type: 'int' })
|
||||||
|
quantity: number;
|
||||||
|
|
||||||
|
@Column({ type: 'varchar', length: 50 })
|
||||||
|
unit: string;
|
||||||
|
|
||||||
|
@Column({ type: 'float8' })
|
||||||
|
price: number;
|
||||||
|
|
||||||
|
@Column({ type: 'float8' })
|
||||||
|
total: number;
|
||||||
|
|
||||||
|
@Column({ type: 'text', nullable: true })
|
||||||
|
description: string;
|
||||||
|
}
|
||||||
56
src/entity/asset_supplier.ts
Normal file
56
src/entity/asset_supplier.ts
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
import {
|
||||||
|
Entity,
|
||||||
|
PrimaryGeneratedColumn,
|
||||||
|
Column,
|
||||||
|
CreateDateColumn,
|
||||||
|
UpdateDateColumn,
|
||||||
|
DeleteDateColumn
|
||||||
|
} from 'typeorm';
|
||||||
|
|
||||||
|
@Entity('asset_suppliers')
|
||||||
|
export class AssetSupplier {
|
||||||
|
@PrimaryGeneratedColumn('uuid')
|
||||||
|
id: string;
|
||||||
|
|
||||||
|
@Column({ length: 256, nullable: true })
|
||||||
|
code: string;
|
||||||
|
|
||||||
|
@Column({ length: 256, nullable: true })
|
||||||
|
name: string;
|
||||||
|
|
||||||
|
@Column({ length: 256, nullable: true })
|
||||||
|
type: string;
|
||||||
|
|
||||||
|
@Column({ length: 512, nullable: true })
|
||||||
|
address: string;
|
||||||
|
|
||||||
|
@Column({ length: 256, nullable: true })
|
||||||
|
pic_name: string;
|
||||||
|
|
||||||
|
@Column({ length: 64, nullable: true })
|
||||||
|
pic_phone: string;
|
||||||
|
|
||||||
|
@Column({ length: 256, nullable: true })
|
||||||
|
pic_email: string;
|
||||||
|
|
||||||
|
@Column({ length: 64, nullable: false })
|
||||||
|
status: string;
|
||||||
|
|
||||||
|
@CreateDateColumn()
|
||||||
|
created_at: Date;
|
||||||
|
|
||||||
|
@Column({ length: 256, nullable: true })
|
||||||
|
created_by: string;
|
||||||
|
|
||||||
|
@UpdateDateColumn()
|
||||||
|
updated_at: Date;
|
||||||
|
|
||||||
|
@Column({ length: 256, nullable: true })
|
||||||
|
updated_by: string;
|
||||||
|
|
||||||
|
@DeleteDateColumn()
|
||||||
|
deleted_at: Date;
|
||||||
|
|
||||||
|
@Column({ length: 256, nullable: true })
|
||||||
|
deleted_by: string;
|
||||||
|
}
|
||||||
@ -1,56 +0,0 @@
|
|||||||
import {
|
|
||||||
Entity,
|
|
||||||
PrimaryGeneratedColumn,
|
|
||||||
Column,
|
|
||||||
CreateDateColumn,
|
|
||||||
UpdateDateColumn,
|
|
||||||
DeleteDateColumn,
|
|
||||||
} from 'typeorm';
|
|
||||||
|
|
||||||
@Entity('assets')
|
|
||||||
export class Asset {
|
|
||||||
@PrimaryGeneratedColumn('uuid')
|
|
||||||
id: string;
|
|
||||||
|
|
||||||
@Column({ type: 'varchar', length: 255 })
|
|
||||||
name: string;
|
|
||||||
|
|
||||||
@Column({ type: 'varchar', length: 100, unique: true })
|
|
||||||
asset_code: string;
|
|
||||||
|
|
||||||
@Column({ type: 'decimal', precision: 10, scale: 2 })
|
|
||||||
cost: number;
|
|
||||||
|
|
||||||
@Column({ type: 'int' })
|
|
||||||
quantity: number;
|
|
||||||
|
|
||||||
@Column({ type: 'varchar', length: 255, nullable: true })
|
|
||||||
location: string;
|
|
||||||
|
|
||||||
@Column({ type: 'enum', enum: ['Active', 'In Maintenance', 'Retired'], default: 'Active' })
|
|
||||||
status: 'Active' | 'In Maintenance' | 'Retired';
|
|
||||||
|
|
||||||
@Column({ type: 'varchar', length: 255, nullable: true })
|
|
||||||
condition: string;
|
|
||||||
|
|
||||||
@Column({ type: 'timestamp', nullable: true })
|
|
||||||
acquisition_date: Date;
|
|
||||||
|
|
||||||
@Column({ type: 'timestamp', nullable: true })
|
|
||||||
last_maintenance_date: Date;
|
|
||||||
|
|
||||||
@Column({ type: 'timestamp', nullable: true })
|
|
||||||
next_scheduled_maintenance: Date;
|
|
||||||
|
|
||||||
@Column({ type: 'text', nullable: true })
|
|
||||||
remarks: string;
|
|
||||||
|
|
||||||
@CreateDateColumn({ type: 'timestamp' })
|
|
||||||
created_at: Date;
|
|
||||||
|
|
||||||
@UpdateDateColumn({ type: 'timestamp' })
|
|
||||||
updated_at: Date;
|
|
||||||
|
|
||||||
@DeleteDateColumn({ type: 'timestamp' })
|
|
||||||
deleted_at: Date;
|
|
||||||
}
|
|
||||||
@ -1,44 +0,0 @@
|
|||||||
import {
|
|
||||||
Entity,
|
|
||||||
PrimaryGeneratedColumn,
|
|
||||||
Column,
|
|
||||||
CreateDateColumn,
|
|
||||||
UpdateDateColumn,
|
|
||||||
DeleteDateColumn,
|
|
||||||
} from 'typeorm';
|
|
||||||
|
|
||||||
@Entity('departments')
|
|
||||||
export class Department {
|
|
||||||
@PrimaryGeneratedColumn('uuid')
|
|
||||||
id: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
length: 128,
|
|
||||||
})
|
|
||||||
name: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: true,
|
|
||||||
length: 255,
|
|
||||||
})
|
|
||||||
description: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: true,
|
|
||||||
length: 64,
|
|
||||||
})
|
|
||||||
code: string;
|
|
||||||
|
|
||||||
@Column()
|
|
||||||
@CreateDateColumn()
|
|
||||||
created_at: Date;
|
|
||||||
|
|
||||||
@Column({ nullable: true })
|
|
||||||
@UpdateDateColumn()
|
|
||||||
updated_at: Date;
|
|
||||||
|
|
||||||
@Column({ nullable: true })
|
|
||||||
@DeleteDateColumn()
|
|
||||||
deleted_at: Date;
|
|
||||||
}
|
|
||||||
@ -1,103 +0,0 @@
|
|||||||
import {
|
|
||||||
Entity,
|
|
||||||
PrimaryGeneratedColumn,
|
|
||||||
Column,
|
|
||||||
CreateDateColumn,
|
|
||||||
UpdateDateColumn,
|
|
||||||
DeleteDateColumn,
|
|
||||||
Index,
|
|
||||||
ManyToOne,
|
|
||||||
JoinColumn,
|
|
||||||
} from 'typeorm';
|
|
||||||
|
|
||||||
import { Status } from '../types/status';
|
|
||||||
import { User } from './users';
|
|
||||||
|
|
||||||
@Entity('employees')
|
|
||||||
export class Employee {
|
|
||||||
@PrimaryGeneratedColumn('uuid')
|
|
||||||
id: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
length: 64,
|
|
||||||
})
|
|
||||||
first_name: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
length: 64,
|
|
||||||
})
|
|
||||||
last_name: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
unique: true,
|
|
||||||
length: 128,
|
|
||||||
})
|
|
||||||
email: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: true,
|
|
||||||
length: 15,
|
|
||||||
})
|
|
||||||
phone_number: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
length: 128,
|
|
||||||
})
|
|
||||||
position: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: true,
|
|
||||||
type: 'uuid',
|
|
||||||
})
|
|
||||||
branch_id: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
type: 'date',
|
|
||||||
})
|
|
||||||
hired_date: Date;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
length: 64,
|
|
||||||
})
|
|
||||||
status: Status;
|
|
||||||
|
|
||||||
@ManyToOne(() => User, { nullable: true })
|
|
||||||
@JoinColumn({ name: 'created_by' })
|
|
||||||
createdBy: User;
|
|
||||||
|
|
||||||
@Index()
|
|
||||||
@Column({
|
|
||||||
nullable: true,
|
|
||||||
type: 'uuid',
|
|
||||||
})
|
|
||||||
created_by: string;
|
|
||||||
|
|
||||||
@ManyToOne(() => User, { nullable: true })
|
|
||||||
@JoinColumn({ name: 'updated_by' })
|
|
||||||
updatedBy: User;
|
|
||||||
|
|
||||||
@Index()
|
|
||||||
@Column({
|
|
||||||
nullable: true,
|
|
||||||
type: 'uuid',
|
|
||||||
})
|
|
||||||
updated_by: string;
|
|
||||||
|
|
||||||
@Column()
|
|
||||||
@CreateDateColumn()
|
|
||||||
created_at: Date;
|
|
||||||
|
|
||||||
@Column({ nullable: true })
|
|
||||||
@UpdateDateColumn()
|
|
||||||
updated_at: Date;
|
|
||||||
|
|
||||||
@Column({ nullable: true })
|
|
||||||
@DeleteDateColumn()
|
|
||||||
deleted_at: Date;
|
|
||||||
}
|
|
||||||
@ -1,33 +0,0 @@
|
|||||||
import {
|
|
||||||
Entity,
|
|
||||||
PrimaryGeneratedColumn,
|
|
||||||
Column,
|
|
||||||
CreateDateColumn,
|
|
||||||
UpdateDateColumn,
|
|
||||||
OneToMany,
|
|
||||||
} from 'typeorm';
|
|
||||||
|
|
||||||
import { PaymentApproval } from './payment_approval';
|
|
||||||
|
|
||||||
@Entity('finance_memos')
|
|
||||||
export class FinanceMemo {
|
|
||||||
@PrimaryGeneratedColumn('uuid')
|
|
||||||
id: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
type: 'text',
|
|
||||||
})
|
|
||||||
memo_content: string;
|
|
||||||
|
|
||||||
@OneToMany(() => PaymentApproval, (paymentApproval) => paymentApproval.financeMemo)
|
|
||||||
paymentApprovals: PaymentApproval[];
|
|
||||||
|
|
||||||
@Column()
|
|
||||||
@CreateDateColumn()
|
|
||||||
created_at: Date;
|
|
||||||
|
|
||||||
@Column({ nullable: true })
|
|
||||||
@UpdateDateColumn()
|
|
||||||
updated_at: Date;
|
|
||||||
}
|
|
||||||
@ -1,102 +0,0 @@
|
|||||||
import {
|
|
||||||
Entity,
|
|
||||||
PrimaryGeneratedColumn,
|
|
||||||
Column,
|
|
||||||
CreateDateColumn,
|
|
||||||
UpdateDateColumn,
|
|
||||||
DeleteDateColumn,
|
|
||||||
Index,
|
|
||||||
} from 'typeorm';
|
|
||||||
|
|
||||||
import { Status } from '../types/status';
|
|
||||||
|
|
||||||
@Entity('fixed_assets')
|
|
||||||
export class FixedAssetClassification {
|
|
||||||
@PrimaryGeneratedColumn('uuid')
|
|
||||||
id: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
length: 128,
|
|
||||||
})
|
|
||||||
name: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: true,
|
|
||||||
length: 255,
|
|
||||||
})
|
|
||||||
description: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
length: 64,
|
|
||||||
unique: true,
|
|
||||||
})
|
|
||||||
asset_code: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
type: 'decimal',
|
|
||||||
precision: 12,
|
|
||||||
scale: 2,
|
|
||||||
})
|
|
||||||
acquisition_cost: number;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: true,
|
|
||||||
type: 'date',
|
|
||||||
})
|
|
||||||
acquisition_date: Date;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: true,
|
|
||||||
type: 'date',
|
|
||||||
})
|
|
||||||
depreciation_start_date: Date;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: true,
|
|
||||||
type: 'decimal',
|
|
||||||
precision: 5,
|
|
||||||
scale: 2,
|
|
||||||
})
|
|
||||||
depreciation_rate: number;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: true,
|
|
||||||
type: 'uuid',
|
|
||||||
})
|
|
||||||
category_id: string;
|
|
||||||
|
|
||||||
@Index()
|
|
||||||
@Column({
|
|
||||||
nullable: true,
|
|
||||||
type: 'uuid',
|
|
||||||
})
|
|
||||||
created_by: string;
|
|
||||||
|
|
||||||
@Index()
|
|
||||||
@Column({
|
|
||||||
nullable: true,
|
|
||||||
type: 'uuid',
|
|
||||||
})
|
|
||||||
updated_by: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
length: 64,
|
|
||||||
})
|
|
||||||
status: Status;
|
|
||||||
|
|
||||||
@Column()
|
|
||||||
@CreateDateColumn()
|
|
||||||
created_at: Date;
|
|
||||||
|
|
||||||
@Column({ nullable: true })
|
|
||||||
@UpdateDateColumn()
|
|
||||||
updated_at: Date;
|
|
||||||
|
|
||||||
@Column({ nullable: true })
|
|
||||||
@DeleteDateColumn()
|
|
||||||
deleted_at: Date;
|
|
||||||
}
|
|
||||||
@ -1,100 +0,0 @@
|
|||||||
import {
|
|
||||||
Entity,
|
|
||||||
PrimaryGeneratedColumn,
|
|
||||||
Column,
|
|
||||||
CreateDateColumn,
|
|
||||||
UpdateDateColumn,
|
|
||||||
DeleteDateColumn,
|
|
||||||
Index,
|
|
||||||
ManyToOne,
|
|
||||||
JoinColumn,
|
|
||||||
} from 'typeorm';
|
|
||||||
|
|
||||||
import { AssetCategory } from './asset_category';
|
|
||||||
import { Supplier } from './supplier';
|
|
||||||
@Entity('goods')
|
|
||||||
export class Goods {
|
|
||||||
@PrimaryGeneratedColumn('uuid')
|
|
||||||
id: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
type: 'varchar',
|
|
||||||
nullable: false,
|
|
||||||
length: 128,
|
|
||||||
})
|
|
||||||
name: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
type: 'varchar',
|
|
||||||
nullable: true,
|
|
||||||
length: 255,
|
|
||||||
})
|
|
||||||
description: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
type: 'varchar',
|
|
||||||
nullable: false,
|
|
||||||
length: 64,
|
|
||||||
unique: true,
|
|
||||||
})
|
|
||||||
item_code: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
type: 'decimal',
|
|
||||||
precision: 10,
|
|
||||||
scale: 2,
|
|
||||||
})
|
|
||||||
price: number;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
type: 'int',
|
|
||||||
})
|
|
||||||
quantity: number;
|
|
||||||
|
|
||||||
@Index()
|
|
||||||
@Column({
|
|
||||||
type: 'varchar',
|
|
||||||
nullable: false,
|
|
||||||
})
|
|
||||||
created_by: string;
|
|
||||||
|
|
||||||
@Index()
|
|
||||||
@Column({
|
|
||||||
type: 'varchar',
|
|
||||||
nullable: false,
|
|
||||||
})
|
|
||||||
updated_by: string;
|
|
||||||
|
|
||||||
@ManyToOne(() => AssetCategory, (category) => category.goods, {
|
|
||||||
nullable: true,
|
|
||||||
onDelete: 'SET NULL',
|
|
||||||
})
|
|
||||||
@Index()
|
|
||||||
@JoinColumn({ name: 'category_id' })
|
|
||||||
category: AssetCategory;
|
|
||||||
|
|
||||||
@ManyToOne(() => Supplier, (supplier) => supplier.goods, {
|
|
||||||
nullable: true,
|
|
||||||
onDelete: 'SET NULL',
|
|
||||||
})
|
|
||||||
@Index()
|
|
||||||
@JoinColumn({ name: 'supplier_id' })
|
|
||||||
supplier: Supplier;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
default: true,
|
|
||||||
})
|
|
||||||
is_active: boolean;
|
|
||||||
|
|
||||||
@CreateDateColumn()
|
|
||||||
created_at: Date;
|
|
||||||
|
|
||||||
@UpdateDateColumn()
|
|
||||||
updated_at: Date;
|
|
||||||
|
|
||||||
@DeleteDateColumn()
|
|
||||||
deleted_at: Date;
|
|
||||||
}
|
|
||||||
@ -1,57 +0,0 @@
|
|||||||
import {
|
|
||||||
Entity,
|
|
||||||
PrimaryGeneratedColumn,
|
|
||||||
Column,
|
|
||||||
CreateDateColumn,
|
|
||||||
UpdateDateColumn
|
|
||||||
} from 'typeorm';
|
|
||||||
|
|
||||||
@Entity('goods_handover')
|
|
||||||
export class GoodsHandover {
|
|
||||||
@PrimaryGeneratedColumn('uuid')
|
|
||||||
id: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
type: 'uuid',
|
|
||||||
})
|
|
||||||
request_order_id: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
type: 'date',
|
|
||||||
})
|
|
||||||
handover_date: Date;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
type: 'uuid',
|
|
||||||
})
|
|
||||||
goods_id: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
type: 'uuid',
|
|
||||||
})
|
|
||||||
handed_over_by: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
type: 'uuid',
|
|
||||||
})
|
|
||||||
received_by: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: true,
|
|
||||||
type: 'text',
|
|
||||||
})
|
|
||||||
remarks: string;
|
|
||||||
|
|
||||||
@Column()
|
|
||||||
@CreateDateColumn()
|
|
||||||
created_at: Date;
|
|
||||||
|
|
||||||
@Column({ nullable: true })
|
|
||||||
@UpdateDateColumn()
|
|
||||||
updated_at: Date;
|
|
||||||
}
|
|
||||||
@ -1,104 +0,0 @@
|
|||||||
import {
|
|
||||||
Entity,
|
|
||||||
PrimaryGeneratedColumn,
|
|
||||||
Column,
|
|
||||||
CreateDateColumn,
|
|
||||||
UpdateDateColumn,
|
|
||||||
DeleteDateColumn
|
|
||||||
} from 'typeorm';
|
|
||||||
|
|
||||||
export enum GoodsReceiptStatus {
|
|
||||||
PENDING = 'PENDING',
|
|
||||||
RECEIVED = 'RECEIVED',
|
|
||||||
REJECTED = 'REJECTED',
|
|
||||||
}
|
|
||||||
|
|
||||||
@Entity('goods_receipts')
|
|
||||||
export class GoodsReceipt {
|
|
||||||
@PrimaryGeneratedColumn('uuid')
|
|
||||||
id: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
length: 128,
|
|
||||||
})
|
|
||||||
receipt_number: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
type: 'date',
|
|
||||||
})
|
|
||||||
receipt_date: Date;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: true,
|
|
||||||
type: 'uuid',
|
|
||||||
})
|
|
||||||
request_order_id: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
type: 'uuid',
|
|
||||||
})
|
|
||||||
department_id: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: true,
|
|
||||||
type: 'varchar',
|
|
||||||
})
|
|
||||||
requested_by: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: true,
|
|
||||||
type: 'decimal',
|
|
||||||
precision: 15,
|
|
||||||
scale: 2,
|
|
||||||
})
|
|
||||||
nominal: number;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
type: 'int',
|
|
||||||
})
|
|
||||||
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()
|
|
||||||
created_at: Date;
|
|
||||||
|
|
||||||
@Column({ nullable: true })
|
|
||||||
@UpdateDateColumn()
|
|
||||||
updated_at: Date;
|
|
||||||
|
|
||||||
@Column({ nullable: true })
|
|
||||||
@DeleteDateColumn()
|
|
||||||
deleted_at: Date;
|
|
||||||
}
|
|
||||||
@ -1,56 +0,0 @@
|
|||||||
|
|
||||||
import {
|
|
||||||
Entity,
|
|
||||||
PrimaryGeneratedColumn,
|
|
||||||
Column,
|
|
||||||
CreateDateColumn,
|
|
||||||
UpdateDateColumn,
|
|
||||||
ManyToOne,
|
|
||||||
JoinColumn,
|
|
||||||
} from 'typeorm';
|
|
||||||
|
|
||||||
import { PaymentApproval } from './payment_approval';
|
|
||||||
|
|
||||||
@Entity('journal_entries')
|
|
||||||
export class AssetJournalEntry {
|
|
||||||
@PrimaryGeneratedColumn('uuid')
|
|
||||||
id: string;
|
|
||||||
|
|
||||||
@ManyToOne(() => PaymentApproval, (paymentApproval) => paymentApproval.journalEntries, { nullable: false })
|
|
||||||
@JoinColumn({ name: 'payment_approval_id' })
|
|
||||||
paymentApproval: PaymentApproval;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
type: 'uuid',
|
|
||||||
})
|
|
||||||
payment_approval_id: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
type: 'decimal',
|
|
||||||
precision: 12,
|
|
||||||
scale: 2,
|
|
||||||
})
|
|
||||||
amount: number;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
length: 128,
|
|
||||||
})
|
|
||||||
account_code: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
length: 128,
|
|
||||||
})
|
|
||||||
description: string;
|
|
||||||
|
|
||||||
@Column()
|
|
||||||
@CreateDateColumn()
|
|
||||||
created_at: Date;
|
|
||||||
|
|
||||||
@Column({ nullable: true })
|
|
||||||
@UpdateDateColumn()
|
|
||||||
updated_at: Date;
|
|
||||||
}
|
|
||||||
@ -1,86 +0,0 @@
|
|||||||
import {
|
|
||||||
Entity,
|
|
||||||
PrimaryGeneratedColumn,
|
|
||||||
Column,
|
|
||||||
CreateDateColumn,
|
|
||||||
UpdateDateColumn,
|
|
||||||
ManyToOne,
|
|
||||||
OneToMany,
|
|
||||||
JoinColumn,
|
|
||||||
} from 'typeorm';
|
|
||||||
|
|
||||||
import { RequestOrder } from './request_orders';
|
|
||||||
import { AssetJournalEntry } from './journal_entries';
|
|
||||||
import { FinanceMemo } from './finance_memo';
|
|
||||||
|
|
||||||
export enum ApprovalStatus {
|
|
||||||
PENDING = 'PENDING',
|
|
||||||
APPROVED = 'APPROVED',
|
|
||||||
REJECTED = 'REJECTED',
|
|
||||||
}
|
|
||||||
|
|
||||||
@Entity('payment_approvals')
|
|
||||||
export class PaymentApproval {
|
|
||||||
@PrimaryGeneratedColumn('uuid')
|
|
||||||
id: string;
|
|
||||||
|
|
||||||
@ManyToOne(() => RequestOrder, (requestOrder) => requestOrder.id, { nullable: false })
|
|
||||||
@JoinColumn({ name: 'request_order_id' })
|
|
||||||
requestOrder: RequestOrder;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
type: 'uuid',
|
|
||||||
})
|
|
||||||
request_order_id: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
type: 'decimal',
|
|
||||||
precision: 12,
|
|
||||||
scale: 2,
|
|
||||||
})
|
|
||||||
approved_amount: number;
|
|
||||||
|
|
||||||
// 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[];
|
|
||||||
|
|
||||||
@ManyToOne(() => FinanceMemo, (finance) => finance.paymentApprovals)
|
|
||||||
@JoinColumn({ name: 'finance_memo_id' })
|
|
||||||
financeMemo: FinanceMemo;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: true,
|
|
||||||
type: 'uuid',
|
|
||||||
})
|
|
||||||
finance_memo_id: string;
|
|
||||||
|
|
||||||
@Column()
|
|
||||||
@CreateDateColumn()
|
|
||||||
created_at: Date;
|
|
||||||
|
|
||||||
@Column({ nullable: true })
|
|
||||||
@UpdateDateColumn()
|
|
||||||
updated_at: Date;
|
|
||||||
}
|
|
||||||
@ -1,106 +0,0 @@
|
|||||||
import {
|
|
||||||
Entity,
|
|
||||||
PrimaryGeneratedColumn,
|
|
||||||
Column,
|
|
||||||
CreateDateColumn,
|
|
||||||
UpdateDateColumn,
|
|
||||||
DeleteDateColumn,
|
|
||||||
OneToMany,
|
|
||||||
} from 'typeorm';
|
|
||||||
import { RequestSubmission } from './request_submission';
|
|
||||||
import { ApprovalStatus } from '../enum/approvalStatus';
|
|
||||||
import { DocumentStatus } from '../enum/documentStatus';
|
|
||||||
|
|
||||||
@Entity('request_orders')
|
|
||||||
export class RequestOrder {
|
|
||||||
@PrimaryGeneratedColumn('uuid')
|
|
||||||
id: string;
|
|
||||||
|
|
||||||
@Column({ nullable: false, length: 128, unique: true })
|
|
||||||
order_number: string;
|
|
||||||
|
|
||||||
@Column({ type: 'timestamp', nullable: false })
|
|
||||||
order_date: Date;
|
|
||||||
|
|
||||||
@Column({ type: 'decimal', precision: 10, scale: 2, nullable: true })
|
|
||||||
total_amount: number;
|
|
||||||
|
|
||||||
@Column({ type: 'varchar', nullable: false })
|
|
||||||
requested_by: string;
|
|
||||||
|
|
||||||
@Column({ type: 'varchar', nullable: false })
|
|
||||||
department: string;
|
|
||||||
|
|
||||||
@Column({ type: 'text', nullable: true })
|
|
||||||
remarks: string | null;
|
|
||||||
|
|
||||||
@Column({ type: 'enum', enum: DocumentStatus, nullable: false })
|
|
||||||
status: DocumentStatus;
|
|
||||||
|
|
||||||
@Column({ length: 2, nullable: false })
|
|
||||||
purchasing_method: string;
|
|
||||||
|
|
||||||
// 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;
|
|
||||||
|
|
||||||
@Column({ type: 'text', nullable: true })
|
|
||||||
spv_approval_remarks: string | null;
|
|
||||||
|
|
||||||
// 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;
|
|
||||||
|
|
||||||
@Column({ type: 'text', nullable: true })
|
|
||||||
gm_approval_remarks: string | null;
|
|
||||||
|
|
||||||
// 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;
|
|
||||||
|
|
||||||
@Column({ type: 'text', nullable: true })
|
|
||||||
ga_approval_remarks: string | null;
|
|
||||||
|
|
||||||
@Column({ type: 'varchar', nullable: true })
|
|
||||||
category: string | null;
|
|
||||||
|
|
||||||
// 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;
|
|
||||||
supplier: string;
|
|
||||||
}>;
|
|
||||||
|
|
||||||
@OneToMany(() => RequestSubmission, (submission) => submission.request_order, { cascade: true })
|
|
||||||
submissions: RequestSubmission[];
|
|
||||||
|
|
||||||
@CreateDateColumn()
|
|
||||||
created_at: Date;
|
|
||||||
|
|
||||||
@UpdateDateColumn()
|
|
||||||
updated_at: Date;
|
|
||||||
|
|
||||||
@DeleteDateColumn({ nullable: true })
|
|
||||||
deleted_at: Date | null;
|
|
||||||
}
|
|
||||||
@ -1,80 +0,0 @@
|
|||||||
import {
|
|
||||||
Entity,
|
|
||||||
PrimaryGeneratedColumn,
|
|
||||||
Column,
|
|
||||||
CreateDateColumn,
|
|
||||||
UpdateDateColumn,
|
|
||||||
DeleteDateColumn,
|
|
||||||
ManyToOne,
|
|
||||||
JoinColumn
|
|
||||||
} 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')
|
|
||||||
id: string;
|
|
||||||
|
|
||||||
|
|
||||||
@ManyToOne(() => SubmissionRecap, (recap) => recap.submission_ids, { 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;
|
|
||||||
|
|
||||||
@Column({ type: 'varchar', nullable: true })
|
|
||||||
requested_by: string;
|
|
||||||
|
|
||||||
@Column({ type: 'varchar', nullable: false })
|
|
||||||
department: string;
|
|
||||||
|
|
||||||
@Column({ type: 'varchar', nullable: false, unique: true })
|
|
||||||
code_id: string;
|
|
||||||
|
|
||||||
@Column({ type: 'date', nullable: false })
|
|
||||||
submission_date: Date;
|
|
||||||
|
|
||||||
@Column({ type: 'text', nullable: true })
|
|
||||||
remarks: string;
|
|
||||||
|
|
||||||
@Column({ length: 64, nullable: false })
|
|
||||||
status: string;
|
|
||||||
|
|
||||||
@Column({ type: 'varchar', nullable: true })
|
|
||||||
created_by: string;
|
|
||||||
|
|
||||||
@Column({ type: 'varchar', nullable: true })
|
|
||||||
updated_by: string;
|
|
||||||
|
|
||||||
@Column({ type: 'int', nullable: false, default: 0 })
|
|
||||||
quantity: number;
|
|
||||||
|
|
||||||
@Column({ type: 'decimal', precision: 12, scale: 2, nullable: false, default: 0.0 })
|
|
||||||
amount: number;
|
|
||||||
|
|
||||||
// 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;
|
|
||||||
|
|
||||||
@Column({ type: 'text', nullable: true })
|
|
||||||
gm_approval_remarks: string | null;
|
|
||||||
|
|
||||||
@CreateDateColumn()
|
|
||||||
created_at: Date;
|
|
||||||
|
|
||||||
@UpdateDateColumn()
|
|
||||||
updated_at: Date;
|
|
||||||
|
|
||||||
@DeleteDateColumn({ nullable: true })
|
|
||||||
deleted_at: Date;
|
|
||||||
}
|
|
||||||
@ -1,55 +0,0 @@
|
|||||||
import {
|
|
||||||
Entity,
|
|
||||||
PrimaryGeneratedColumn,
|
|
||||||
Column,
|
|
||||||
CreateDateColumn,
|
|
||||||
UpdateDateColumn,
|
|
||||||
DeleteDateColumn,
|
|
||||||
OneToMany
|
|
||||||
} from 'typeorm';
|
|
||||||
import { RequestSubmission } from './request_submission';
|
|
||||||
|
|
||||||
@Entity('submission_recap')
|
|
||||||
export class SubmissionRecap {
|
|
||||||
@PrimaryGeneratedColumn('uuid')
|
|
||||||
id: string;
|
|
||||||
|
|
||||||
@Column({ type: 'date', nullable: false })
|
|
||||||
recap_date: Date;
|
|
||||||
|
|
||||||
@Column({ type: 'int', nullable: false })
|
|
||||||
total_requests: number;
|
|
||||||
|
|
||||||
@Column({ type: 'int', nullable: false })
|
|
||||||
total_approved: number;
|
|
||||||
|
|
||||||
@Column({ type: 'int', nullable: false })
|
|
||||||
total_rejected: number;
|
|
||||||
|
|
||||||
@Column({ type: 'int', nullable: false })
|
|
||||||
total_pending: number;
|
|
||||||
|
|
||||||
@Column({ type: 'decimal', precision: 12, scale: 2, nullable: false })
|
|
||||||
total_budget: number;
|
|
||||||
|
|
||||||
@Column({ type: 'text', nullable: true })
|
|
||||||
remarks: string;
|
|
||||||
|
|
||||||
@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;
|
|
||||||
|
|
||||||
@CreateDateColumn()
|
|
||||||
created_at: Date;
|
|
||||||
|
|
||||||
@UpdateDateColumn()
|
|
||||||
updated_at: Date;
|
|
||||||
|
|
||||||
@DeleteDateColumn({ nullable: true })
|
|
||||||
deleted_at: Date;
|
|
||||||
}
|
|
||||||
@ -1,81 +0,0 @@
|
|||||||
import {
|
|
||||||
Entity,
|
|
||||||
OneToMany,
|
|
||||||
PrimaryGeneratedColumn,
|
|
||||||
Column,
|
|
||||||
CreateDateColumn,
|
|
||||||
UpdateDateColumn,
|
|
||||||
DeleteDateColumn,
|
|
||||||
} from 'typeorm';
|
|
||||||
|
|
||||||
import { Goods } from './goods';
|
|
||||||
|
|
||||||
@Entity('suppliers')
|
|
||||||
export class Supplier {
|
|
||||||
@PrimaryGeneratedColumn('uuid')
|
|
||||||
id: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
length: 128,
|
|
||||||
})
|
|
||||||
name: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: true,
|
|
||||||
length: 128,
|
|
||||||
})
|
|
||||||
contact_person: string;
|
|
||||||
|
|
||||||
@OneToMany(() => Goods, (goods) => goods.supplier)
|
|
||||||
goods: Goods[];
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: true,
|
|
||||||
length: 128,
|
|
||||||
})
|
|
||||||
email: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: true,
|
|
||||||
length: 15,
|
|
||||||
})
|
|
||||||
phone: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: true,
|
|
||||||
length: 255,
|
|
||||||
})
|
|
||||||
address: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
length: 64,
|
|
||||||
unique: true,
|
|
||||||
})
|
|
||||||
code_id: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
length: 64,
|
|
||||||
})
|
|
||||||
type: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
nullable: false,
|
|
||||||
default: true,
|
|
||||||
})
|
|
||||||
is_active: boolean;
|
|
||||||
|
|
||||||
@Column()
|
|
||||||
@CreateDateColumn()
|
|
||||||
created_at: Date;
|
|
||||||
|
|
||||||
@Column({ nullable: true })
|
|
||||||
@UpdateDateColumn()
|
|
||||||
updated_at: Date;
|
|
||||||
|
|
||||||
@Column({ nullable: true })
|
|
||||||
@DeleteDateColumn()
|
|
||||||
deleted_at: Date;
|
|
||||||
}
|
|
||||||
58
src/index.ts
58
src/index.ts
@ -37,9 +37,6 @@ import { CategoryType } from "./types/category";
|
|||||||
import { Summarize } from "./entity/summarizes";
|
import { Summarize } from "./entity/summarizes";
|
||||||
import { SummarizeLog } from "./entity/summarize_log";
|
import { SummarizeLog } from "./entity/summarize_log";
|
||||||
import { SummarizeLogStatus, SummarizeType } from "./types/summarize";
|
import { SummarizeLogStatus, SummarizeType } from "./types/summarize";
|
||||||
import { Goods } from "./entity/goods";
|
|
||||||
import { Supplier } from "./entity/supplier";
|
|
||||||
import { AssetCategory } from "./entity/asset_category";
|
|
||||||
import { TelegramBody, TelegramResponseSend } from "./types/telegram";
|
import { TelegramBody, TelegramResponseSend } from "./types/telegram";
|
||||||
import { Ledger } from "./entity/ledgers";
|
import { Ledger } from "./entity/ledgers";
|
||||||
import { CreditCompany } from "./entity/credit_companies";
|
import { CreditCompany } from "./entity/credit_companies";
|
||||||
@ -52,23 +49,6 @@ import { CreditCompanyUser } from "./entity/credit_company_users";
|
|||||||
import { CreditCompanyUserRefreshToken } from "./entity/credit_company_user_refresh_token";
|
import { CreditCompanyUserRefreshToken } from "./entity/credit_company_user_refresh_token";
|
||||||
import { CreditApplicationChat } from "./entity/credit_application_chats";
|
import { CreditApplicationChat } from "./entity/credit_application_chats";
|
||||||
import { Application } from "./entity/application";
|
import { Application } from "./entity/application";
|
||||||
import { AssetClassification } from "./entity/asset_classification";
|
|
||||||
import { FixedAssetClassification } from "./entity/fixed_assets_classification";
|
|
||||||
import { Employee } from "./entity/employee";
|
|
||||||
import { Department } from "./entity/department";
|
|
||||||
import { AssetDepreciation } from "./entity/asset_depreciation";
|
|
||||||
import { RequestOrder } from "./entity/request_orders";
|
|
||||||
import { RequestSubmission } from "./entity/request_submission";
|
|
||||||
import { SubmissionRecap } from "./entity/request_submission_recap";
|
|
||||||
import { AssetRealization } from "./entity/asset_realizations";
|
|
||||||
import { AssetRealizationRecap } from "./entity/asset_realization_recaps";
|
|
||||||
import { GoodsReceipt } from "./entity/goods_receipt";
|
|
||||||
import { Invoice } from "./entity/asset_invoice";
|
|
||||||
import { Asset } from "./entity/assets";
|
|
||||||
import { GoodsHandover } from "./entity/goods_handover";
|
|
||||||
import { AssetJournalEntry } from "./entity/journal_entries";
|
|
||||||
import { PaymentApproval } from "./entity/payment_approval";
|
|
||||||
import { FinanceMemo } from "./entity/finance_memo";
|
|
||||||
import { TellerMutation } from "./entity/teller_mutation";
|
import { TellerMutation } from "./entity/teller_mutation";
|
||||||
import { LogHikvision } from "./entity/log_hikvision";
|
import { LogHikvision } from "./entity/log_hikvision";
|
||||||
import { CreditConfigs } from "./entity/credit_config";
|
import { CreditConfigs } from "./entity/credit_config";
|
||||||
@ -77,6 +57,14 @@ import { BrivaCompanyUser } from "./entity/briva_company_users"
|
|||||||
import { BrivaCompanyUserRefreshToken } from "./entity/briva_company_user_refresh_token"
|
import { BrivaCompanyUserRefreshToken } from "./entity/briva_company_user_refresh_token"
|
||||||
import { BrivaAccount } from './entity/briva_accounts'
|
import { BrivaAccount } from './entity/briva_accounts'
|
||||||
import { BrivaTransaction } from './entity/briva_transactions'
|
import { BrivaTransaction } from './entity/briva_transactions'
|
||||||
|
import { AssetSupplier } from './entity/asset_supplier'
|
||||||
|
import { AssetFixedClassification } from './entity/asset_fixed_classification'
|
||||||
|
import { AssetFixedType } from './entity/asset_fixed_type'
|
||||||
|
import { AssetGoodCategory } from './entity/asset_good_category'
|
||||||
|
import { AssetGood } from './entity/asset_good'
|
||||||
|
import { AssetRequestOrderCategory } from './entity/asset_request_order_category'
|
||||||
|
import { AssetRequestOrder } from './entity/asset_request_order'
|
||||||
|
import { AssetRequestOrderGood } from './entity/asset_request_order_good'
|
||||||
|
|
||||||
export {
|
export {
|
||||||
User, //
|
User, //
|
||||||
@ -125,26 +113,6 @@ export {
|
|||||||
SummarizeLog,
|
SummarizeLog,
|
||||||
SummarizeLogStatus,
|
SummarizeLogStatus,
|
||||||
SummarizeType,
|
SummarizeType,
|
||||||
Goods,
|
|
||||||
Supplier,
|
|
||||||
Asset,
|
|
||||||
AssetCategory,
|
|
||||||
AssetClassification,
|
|
||||||
FixedAssetClassification,
|
|
||||||
AssetDepreciation,
|
|
||||||
Employee,
|
|
||||||
Invoice,
|
|
||||||
GoodsHandover,
|
|
||||||
AssetJournalEntry,
|
|
||||||
PaymentApproval,
|
|
||||||
FinanceMemo,
|
|
||||||
Department,
|
|
||||||
GoodsReceipt,
|
|
||||||
RequestSubmission,
|
|
||||||
SubmissionRecap,
|
|
||||||
RequestOrder,
|
|
||||||
AssetRealization,
|
|
||||||
AssetRealizationRecap,
|
|
||||||
Ledger,
|
Ledger,
|
||||||
CreditCompany,
|
CreditCompany,
|
||||||
CreditDebtor,
|
CreditDebtor,
|
||||||
@ -164,5 +132,13 @@ export {
|
|||||||
BrivaCompanyUser,
|
BrivaCompanyUser,
|
||||||
BrivaCompanyUserRefreshToken,
|
BrivaCompanyUserRefreshToken,
|
||||||
BrivaAccount,
|
BrivaAccount,
|
||||||
BrivaTransaction
|
BrivaTransaction,
|
||||||
|
AssetSupplier,
|
||||||
|
AssetFixedClassification,
|
||||||
|
AssetFixedType,
|
||||||
|
AssetGoodCategory,
|
||||||
|
AssetGood,
|
||||||
|
AssetRequestOrderCategory,
|
||||||
|
AssetRequestOrder,
|
||||||
|
AssetRequestOrderGood
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user