From e1f61cf31d583bec03fb157f8978899532a3272b Mon Sep 17 00:00:00 2001 From: Narul Hidayah Date: Thu, 1 Jan 2026 22:13:40 +0700 Subject: [PATCH] payroll, users --- src/entity/hrms/hrms_bank.ts | 57 ++++++++++++++++++++++++++++ src/entity/hrms/hrms_payroll.ts | 67 +++++++++++++++++++++++++++++++++ src/entity/users.ts | 2 +- src/schema/hrms.ts | 2 + 4 files changed, 127 insertions(+), 1 deletion(-) create mode 100644 src/entity/hrms/hrms_bank.ts create mode 100644 src/entity/hrms/hrms_payroll.ts diff --git a/src/entity/hrms/hrms_bank.ts b/src/entity/hrms/hrms_bank.ts new file mode 100644 index 0000000..0749696 --- /dev/null +++ b/src/entity/hrms/hrms_bank.ts @@ -0,0 +1,57 @@ +import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, DeleteDateColumn } from "typeorm"; +import { Status } from "../../types/status"; + +@Entity("hrms_banks", { schema: "hrms" }) +export class HrmsBank { + @PrimaryGeneratedColumn('uuid') + id: string; + + @Column({ + nullable: false, + unique: false, + length: 64 + }) + code: string; + + @Column({ + nullable: false, + unique: false, + length: 128 + }) + name: string; + + @Column({ + nullable: true, + unique: false, + length: 256 + }) + description: string; + + @Column({ + nullable: false, + length: 64 + }) + status: Status; + + @Column() + @CreateDateColumn() + created_at: Date; + + @Column({ nullable: true, length: 256 }) + created_by: string; + + @Column({ nullable: true }) + @UpdateDateColumn() + updated_at: Date; + + @Column({ nullable: true, length: 256 }) + updated_by: string; + + @Column({ nullable: true }) + @DeleteDateColumn() + deleted_at: Date; + + @Column({ nullable: true, length: 256 }) + deleted_by: string; +} + diff --git a/src/entity/hrms/hrms_payroll.ts b/src/entity/hrms/hrms_payroll.ts new file mode 100644 index 0000000..666f820 --- /dev/null +++ b/src/entity/hrms/hrms_payroll.ts @@ -0,0 +1,67 @@ +import { + Entity, + PrimaryGeneratedColumn, + Column, + CreateDateColumn, + UpdateDateColumn, + DeleteDateColumn, + ManyToOne, + JoinColumn, +} from "typeorm"; +import { Status } from "../../types/status"; +import { HrmsEmployee } from "./hrms_employee"; +import { HrmsBank } from "./hrms_bank"; + +@Entity("hrms_payroll", { schema: "hrms" }) +export class HrmsPayroll { + @PrimaryGeneratedColumn("uuid") + id: string; + + @ManyToOne(() => HrmsEmployee, { onDelete: "RESTRICT", nullable: false }) + @JoinColumn({ name: "employee_id" }) + employee: HrmsEmployee; + + @ManyToOne(() => HrmsBank, { onDelete: "RESTRICT", nullable: false }) + @JoinColumn({ name: "bank_id" }) + bank: HrmsBank; + + @Column({ length: 128, nullable: false }) + account_number: string; + + @Column({ length: 128, nullable: false }) + account_name: string; + + @Column({ type: "decimal", precision: 15, scale: 2, nullable: false }) + basic_salary: number; + + @Column({ type: "decimal", precision: 15, scale: 2, nullable: false, default: 0 }) + subsidy: number; + + @Column({ type: "decimal", precision: 5, scale: 2, nullable: false, default: 4.0 }) + niss_percentage: number; + + @Column({ type: "decimal", precision: 5, scale: 2, nullable: false, default: 10.0 }) + tax_percentage: number; + + @Column({ length: 64 }) + status: Status; + + @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; +} + diff --git a/src/entity/users.ts b/src/entity/users.ts index 6d56105..9f3a112 100644 --- a/src/entity/users.ts +++ b/src/entity/users.ts @@ -21,7 +21,7 @@ export class User { unique: false, length: 64 }) - nik: string; + employee_id: string; @Column({ nullable: false, diff --git a/src/schema/hrms.ts b/src/schema/hrms.ts index 8ad426f..c8437d1 100644 --- a/src/schema/hrms.ts +++ b/src/schema/hrms.ts @@ -10,5 +10,7 @@ export * from "../entity/hrms/hrms_faculty"; export * from "../entity/hrms/hrms_study"; export * from "../entity/hrms/hrms_training"; export * from "../entity/hrms/hrms_training_participant"; +export * from "../entity/hrms/hrms_bank"; +export * from "../entity/hrms/hrms_payroll"; export * from "../types/hrms";