import { Entity, Column, ManyToOne, JoinColumn, OneToOne, OneToMany } from "typeorm"; import { EntityBase } from "./base/Base"; import { SalaryOrg } from "./SalaryOrg"; @Entity("salaryProfile") export class SalaryProfile extends EntityBase { @Column({ comment: "", length: 40, }) salaryOrgId: string; @Column({ nullable: true, comment: "คำนำหน้า", length: 255, default: null, }) prefix: string; @Column({ nullable: true, comment: "ชื่อ", length: 255, default: null, }) firstName: string; @Column({ nullable: true, comment: "สกุล", length: 255, default: null, }) lastName: string; @Column({ nullable: true, comment: "เลขบัตรประชาชน", length: 100, default: null, }) citizenId: string; @Column({ nullable: true, comment: "Prefix นำหน้าเลขที่ตำแหน่ง เป็น Optional (ไม่ใช่อักษรย่อของหน่วยงาน/ส่วนราชการ)", length: 100, default: null, }) posMasterNoPrefix: string; @Column({ nullable: true, comment: "เลขที่ตำแหน่ง เป็นตัวเลข", default: null, }) posMasterNo: number; @Column({ nullable: true, comment: "Suffix หลังเลขที่ตำแหน่ง เช่น ช.", length: 100, default: null, }) posMasterNoSuffix: string; @Column({ nullable: true, comment: "ชื่อย่อหน่วยงาน", length: 100, default: null, }) orgShortName: string; @Column({ nullable: true, comment: "ตำแหน่ง", length: 255, default: null, }) position: string; @Column({ nullable: true, comment: "ประเภทตำแหน่ง", length: 100, default: null, }) posType: string; @Column({ nullable: true, comment: "ระดับตำแหน่ง", length: 100, default: null, }) posLevel: string; @Column({ nullable: true, comment: "ตำแหน่งทางการบริหาร", length: 255, default: null, }) posExecutive: string; @Column({ nullable: true, type: "double", comment: "เงินเดือนฐาน", default: null, }) amount: number | null; @Column({ type: "double", comment: "เงินพิเศษ", default: 0, }) amountSpecial: number; @Column({ type: "double", comment: "จำนวนเงินที่ใช้เลื่อน", default: 0, }) amountUse: number; @Column({ type: "double", comment: "เงินเดือนหลังเลื่อน", default: 0, }) positionSalaryAmount: number; @Column({ comment: "ประเภทการเลื่อน(ขั้น) PENDING->รายชื่อคนครอง NONE->ไม่ได้เลื่อน HAFT->ครึ่งขั้น FULL->1ขั้น FULLHAFT->1.5ขั้น", length: 20, default: "PENDING", }) type: string; @Column({ comment: "สถานะ", length: 20, default: "PENDING", }) status: string; @Column({ nullable: true, comment: "id revision", length: 40, }) revisionId: string; @Column({ nullable: true, comment: "", length: 40, }) rootId: string; @Column({ nullable: true, comment: "", length: 255, default: null, }) root: string; @Column({ nullable: true, comment: "", length: 40, }) child1Id: string; @Column({ nullable: true, comment: "", length: 255, default: null, }) child1: string; @Column({ nullable: true, comment: "", length: 40, }) child2Id: string; @Column({ nullable: true, comment: "", length: 255, default: null, }) child2: string; @Column({ nullable: true, comment: "", length: 40, }) child3Id: string; @Column({ nullable: true, comment: "", length: 255, default: null, }) child3: string; @Column({ nullable: true, comment: "", length: 40, }) child4Id: string; @Column({ nullable: true, comment: "", length: 255, default: null, }) child4: string; @Column({ nullable: true, comment: "ผลการประเมินผลการปฏิบัติราชการ", default: null, }) result: string; @Column({ nullable: true, comment: "ระยะเวลาการปฏิบัติราชการในรอบครึ่งปี", default: null, }) duration: string; @Column({ nullable: true, comment: "การลงโทษทางวินัย", default: null, }) isPunish: boolean; @Column({ nullable: true, comment: "พักราชการ", default: null, }) isSuspension: boolean; @Column({ nullable: true, comment: "ขาดราชการ", default: null, }) isAbsent: boolean; @Column({ nullable: true, comment: "วันลา", default: null, }) isLeave: boolean; @Column({ nullable: true, comment: "เกษียญ", default: false, }) isRetired: boolean; @Column({ nullable: true, comment: "สำรอง", default: false, }) isReserve: boolean; @ManyToOne(() => SalaryOrg, (salaryOrg) => salaryOrg.salaryProfiles) @JoinColumn({ name: "salaryOrgId" }) salaryOrg: SalaryOrg; } export class CreateSalaryProfile { @Column("uuid") id: string; @Column() type: string; @Column() prefix: string; @Column() firstName: string; @Column() lastName: string; @Column() citizenId: string; @Column() posMasterNoPrefix: string | null; @Column() posMasterNo: number; @Column() posMasterNoSuffix: string | null; @Column() orgShortName: string | null; @Column() position: string; @Column() posType: string; @Column() posLevel: string; @Column() posExecutive: string | null; @Column() amount: number | null; @Column("uuid") rootId: string | null; @Column() root: string | null; @Column("uuid") child1Id: string | null; @Column() child1: string | null; @Column("uuid") child2Id: string | null; @Column() child2: string | null; @Column("uuid") child3Id: string | null; @Column() child3: string | null; @Column("uuid") child4Id: string | null; @Column() child4: string | null; @Column() result: string | null; @Column() duration: string | null; @Column() isPunish: boolean; @Column() isSuspension: boolean; @Column() isAbsent: boolean; @Column() isLeave: boolean; @Column() isRetired: boolean; }