leave
This commit is contained in:
70
src/entity/hrms/hrms_leave.ts
Normal file
70
src/entity/hrms/hrms_leave.ts
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
import {
|
||||||
|
Entity,
|
||||||
|
PrimaryGeneratedColumn,
|
||||||
|
Column,
|
||||||
|
CreateDateColumn,
|
||||||
|
UpdateDateColumn,
|
||||||
|
DeleteDateColumn,
|
||||||
|
ManyToOne,
|
||||||
|
JoinColumn,
|
||||||
|
OneToMany,
|
||||||
|
} from "typeorm";
|
||||||
|
import { Status } from "../../types/status";
|
||||||
|
import { HrmsEmployee } from "./hrms_employee";
|
||||||
|
import { HrmsLeaveType } from "./hrms_leave_type";
|
||||||
|
import { HrmsLeaveApproval } from "./hrms_leave_approval";
|
||||||
|
import { HrmsLeaveDocument } from "./hrms_leave_document";
|
||||||
|
|
||||||
|
@Entity("hrms_leaves", { schema: "hrms" })
|
||||||
|
export class HrmsLeave {
|
||||||
|
@PrimaryGeneratedColumn("uuid")
|
||||||
|
id: string;
|
||||||
|
|
||||||
|
@ManyToOne(() => HrmsEmployee, { onDelete: "RESTRICT", nullable: false })
|
||||||
|
@JoinColumn({ name: "employee_id" })
|
||||||
|
employee: HrmsEmployee;
|
||||||
|
|
||||||
|
@ManyToOne(() => HrmsLeaveType, { onDelete: "RESTRICT", nullable: false })
|
||||||
|
@JoinColumn({ name: "leave_type_id" })
|
||||||
|
leave_type: HrmsLeaveType;
|
||||||
|
|
||||||
|
@Column({ type: "date", nullable: false })
|
||||||
|
start_date: Date;
|
||||||
|
|
||||||
|
@Column({ type: "date", nullable: false })
|
||||||
|
end_date: Date;
|
||||||
|
|
||||||
|
@Column({ type: "int", nullable: false })
|
||||||
|
duration_days: number;
|
||||||
|
|
||||||
|
@Column({ length: 512, nullable: true })
|
||||||
|
reason: string;
|
||||||
|
|
||||||
|
@Column({ length: 64, nullable: false })
|
||||||
|
status: Status;
|
||||||
|
|
||||||
|
@OneToMany(() => HrmsLeaveApproval, approval => approval.leave, { cascade: true })
|
||||||
|
approvals: HrmsLeaveApproval[];
|
||||||
|
|
||||||
|
@OneToMany(() => HrmsLeaveDocument, document => document.leave, { cascade: true })
|
||||||
|
documents: HrmsLeaveDocument[];
|
||||||
|
|
||||||
|
@CreateDateColumn()
|
||||||
|
created_at: Date;
|
||||||
|
|
||||||
|
@Column({ nullable: true, length: 256 })
|
||||||
|
created_by: string;
|
||||||
|
|
||||||
|
@UpdateDateColumn({ nullable: true })
|
||||||
|
updated_at: Date;
|
||||||
|
|
||||||
|
@Column({ nullable: true, length: 256 })
|
||||||
|
updated_by: string;
|
||||||
|
|
||||||
|
@DeleteDateColumn({ nullable: true })
|
||||||
|
deleted_at: Date;
|
||||||
|
|
||||||
|
@Column({ nullable: true, length: 256 })
|
||||||
|
deleted_by: string;
|
||||||
|
}
|
||||||
|
|
||||||
64
src/entity/hrms/hrms_leave_approval.ts
Normal file
64
src/entity/hrms/hrms_leave_approval.ts
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
import {
|
||||||
|
Entity,
|
||||||
|
PrimaryGeneratedColumn,
|
||||||
|
Column,
|
||||||
|
CreateDateColumn,
|
||||||
|
UpdateDateColumn,
|
||||||
|
ManyToOne,
|
||||||
|
JoinColumn,
|
||||||
|
} from "typeorm";
|
||||||
|
import { HrmsLeave } from "./hrms_leave";
|
||||||
|
import { HrmsEmployee } from "./hrms_employee";
|
||||||
|
|
||||||
|
export enum ApprovalType {
|
||||||
|
SPV = "SPV",
|
||||||
|
HR = "HR",
|
||||||
|
}
|
||||||
|
|
||||||
|
export enum ApprovalStatus {
|
||||||
|
PENDING = "PENDING",
|
||||||
|
APPROVED = "APPROVED",
|
||||||
|
REJECTED = "REJECTED",
|
||||||
|
}
|
||||||
|
|
||||||
|
@Entity("hrms_leave_approvals", { schema: "hrms" })
|
||||||
|
export class HrmsLeaveApproval {
|
||||||
|
@PrimaryGeneratedColumn("uuid")
|
||||||
|
id: string;
|
||||||
|
|
||||||
|
@ManyToOne(() => HrmsLeave, leave => leave.approvals, { onDelete: "CASCADE", nullable: false })
|
||||||
|
@JoinColumn({ name: "leave_id" })
|
||||||
|
leave: HrmsLeave;
|
||||||
|
|
||||||
|
@Column({
|
||||||
|
type: "enum",
|
||||||
|
enum: ApprovalType,
|
||||||
|
nullable: false,
|
||||||
|
})
|
||||||
|
approval_type: ApprovalType;
|
||||||
|
|
||||||
|
@ManyToOne(() => HrmsEmployee, { onDelete: "RESTRICT", nullable: false })
|
||||||
|
@JoinColumn({ name: "approver_id" })
|
||||||
|
approver: HrmsEmployee;
|
||||||
|
|
||||||
|
@Column({
|
||||||
|
type: "enum",
|
||||||
|
enum: ApprovalStatus,
|
||||||
|
default: ApprovalStatus.PENDING,
|
||||||
|
nullable: false,
|
||||||
|
})
|
||||||
|
status: ApprovalStatus;
|
||||||
|
|
||||||
|
@Column({ type: "timestamp", nullable: true })
|
||||||
|
approved_at: Date;
|
||||||
|
|
||||||
|
@Column({ length: 512, nullable: true })
|
||||||
|
notes: string;
|
||||||
|
|
||||||
|
@CreateDateColumn()
|
||||||
|
created_at: Date;
|
||||||
|
|
||||||
|
@UpdateDateColumn({ nullable: true })
|
||||||
|
updated_at: Date;
|
||||||
|
}
|
||||||
|
|
||||||
29
src/entity/hrms/hrms_leave_document.ts
Normal file
29
src/entity/hrms/hrms_leave_document.ts
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
import {
|
||||||
|
Entity,
|
||||||
|
PrimaryGeneratedColumn,
|
||||||
|
Column,
|
||||||
|
CreateDateColumn,
|
||||||
|
ManyToOne,
|
||||||
|
JoinColumn,
|
||||||
|
} from "typeorm";
|
||||||
|
import { HrmsLeave } from "./hrms_leave";
|
||||||
|
|
||||||
|
@Entity("hrms_leave_documents", { schema: "hrms" })
|
||||||
|
export class HrmsLeaveDocument {
|
||||||
|
@PrimaryGeneratedColumn("uuid")
|
||||||
|
id: string;
|
||||||
|
|
||||||
|
@ManyToOne(() => HrmsLeave, leave => leave.documents, { onDelete: "CASCADE", nullable: false })
|
||||||
|
@JoinColumn({ name: "leave_id" })
|
||||||
|
leave: HrmsLeave;
|
||||||
|
|
||||||
|
@Column({ length: 256, nullable: false })
|
||||||
|
document_name: string;
|
||||||
|
|
||||||
|
@Column({ length: 512, nullable: false })
|
||||||
|
document_url: string;
|
||||||
|
|
||||||
|
@CreateDateColumn()
|
||||||
|
created_at: Date;
|
||||||
|
}
|
||||||
|
|
||||||
@ -11,5 +11,8 @@ export * from "../entity/hrms/hrms_training_participant";
|
|||||||
export * from "../entity/hrms/hrms_bank";
|
export * from "../entity/hrms/hrms_bank";
|
||||||
export * from "../entity/hrms/hrms_payroll";
|
export * from "../entity/hrms/hrms_payroll";
|
||||||
export * from "../entity/hrms/hrms_payroll_monthly";
|
export * from "../entity/hrms/hrms_payroll_monthly";
|
||||||
|
export * from "../entity/hrms/hrms_leave";
|
||||||
|
export * from "../entity/hrms/hrms_leave_approval";
|
||||||
|
export * from "../entity/hrms/hrms_leave_document";
|
||||||
|
|
||||||
export * from "../types/hrms";
|
export * from "../types/hrms";
|
||||||
|
|||||||
Reference in New Issue
Block a user