adding department, request oder, request submission, and submission recap entity

This commit is contained in:
fadlydev
2025-01-09 12:27:50 +07:00
parent 37f9b6fb3c
commit 7ab5e04eff
5 changed files with 297 additions and 1 deletions

44
src/entity/department.ts Normal file
View File

@ -0,0 +1,44 @@
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;
}

View File

@ -0,0 +1,103 @@
import {
Entity,
PrimaryGeneratedColumn,
Column,
CreateDateColumn,
UpdateDateColumn,
DeleteDateColumn,
Index,
ManyToOne,
JoinColumn,
OneToMany,
} from 'typeorm';
import { User } from './users';
import { Supplier } from './supplier';
import { Goods } from './goods';
export enum PurchasingMethod {
PO = 'PO', // Purchase Order
DP = 'DP', // Direct Purchase
}
@Entity('request_orders')
export class RequestOrder {
@PrimaryGeneratedColumn('uuid')
id: string;
@Column({
nullable: false,
length: 128,
})
order_number: string;
@Column({
nullable: false,
type: 'date',
})
order_date: Date;
@Column({
nullable: false,
type: 'decimal',
precision: 12,
scale: 2,
})
total_amount: number;
@ManyToOne(() => Supplier, (supplier) => supplier.id, { nullable: false })
@JoinColumn({ name: 'supplier_id' })
supplier: Supplier;
@Column({
nullable: false,
type: 'uuid',
})
supplier_id: string;
@ManyToOne(() => User, (user) => user.id, { nullable: false })
@JoinColumn({ name: 'requested_by' })
requestedBy: User;
@Index()
@Column({
nullable: false,
type: 'uuid',
})
requested_by: string;
@OneToMany(() => Goods, (goods) => goods.id, { nullable: false })
@JoinColumn({ name: 'goods_ids' })
goods: Goods[];
@Column({
nullable: true,
type: 'text',
})
remarks: string;
@Column({
nullable: false,
length: 64,
})
status: string;
@Column({
nullable: false,
type: 'enum',
enum: PurchasingMethod,
})
purchasing_method: PurchasingMethod;
@Column()
@CreateDateColumn()
created_at: Date;
@Column({ nullable: true })
@UpdateDateColumn()
updated_at: Date;
@Column({ nullable: true })
@DeleteDateColumn()
deleted_at: Date;
}

View File

@ -0,0 +1,71 @@
import {
Entity,
PrimaryGeneratedColumn,
Column,
CreateDateColumn,
UpdateDateColumn,
DeleteDateColumn,
Index,
ManyToOne,
JoinColumn,
} from 'typeorm';
import { User } from './users';
import { RequestOrder } from './request_orders';
@Entity('request_submissions')
export class RequestSubmission {
@PrimaryGeneratedColumn('uuid')
id: string;
@ManyToOne(() => RequestOrder, (order) => order.id, { nullable: false })
@JoinColumn({ name: 'request_order_id' })
requestOrder: RequestOrder;
@Column({
nullable: false,
type: 'uuid',
})
request_order_id: string;
@ManyToOne(() => User, (user) => user.id, { nullable: false })
@JoinColumn({ name: 'submitted_by' })
submittedBy: User;
@Index()
@Column({
nullable: false,
type: 'uuid',
})
submitted_by: string;
@Column({
nullable: false,
type: 'date',
})
submission_date: Date;
@Column({
nullable: true,
type: 'text',
})
remarks: string;
@Column({
nullable: false,
length: 64,
})
status: string;
@Column()
@CreateDateColumn()
created_at: Date;
@Column({ nullable: true })
@UpdateDateColumn()
updated_at: Date;
@Column({ nullable: true })
@DeleteDateColumn()
deleted_at: Date;
}

View File

@ -0,0 +1,70 @@
import {
Entity,
PrimaryGeneratedColumn,
Column,
CreateDateColumn,
UpdateDateColumn,
DeleteDateColumn,
} from 'typeorm';
@Entity('request_recapitulations')
export class RequestRecapitulation {
@PrimaryGeneratedColumn('uuid')
id: string;
@Column({
nullable: false,
type: 'date',
})
recap_date: Date;
@Column({
nullable: false,
type: 'int',
})
total_requests: number;
@Column({
nullable: false,
type: 'int',
})
total_approved: number;
@Column({
nullable: false,
type: 'int',
})
total_rejected: number;
@Column({
nullable: false,
type: 'int',
})
total_pending: number;
@Column({
nullable: false,
type: 'decimal',
precision: 12,
scale: 2,
})
total_budget: 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;
}

View File

@ -50,7 +50,11 @@ 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 { RequestRecapitulation } from "./entity/request_submission_recap";
export {
User, //
UserRole,
@ -101,6 +105,10 @@ export {
FixedAssetClassification,
AssetDepreciation,
Employee,
Department,
RequestSubmission,
RequestRecapitulation,
RequestOrder,
Ledger,
CreditCompany,
CreditDebtor,
@ -108,5 +116,5 @@ export {
CreditApplication,
CreditApplicationStatus,
CreditApplicationForm,
Application
Application,
};