import { Entity, Column, OneToMany, JoinColumn, ManyToOne, Double } from "typeorm"; import { EntityBase } from "./base/Base"; import { Profile } from "./Profile"; import { ProfileEmployee } from "./ProfileEmployee"; import { ProfileSalaryHistory } from "./ProfileSalaryHistory"; import { Command } from "./Command"; import { ProfileSalaryTemp } from "./ProfileSalaryTemp"; @Entity("profileSalary") export class ProfileSalary extends EntityBase { @Column({ nullable: true, length: 40, comment: "คีย์นอก(FK)ของตาราง profile", type: "uuid", default: null, }) profileId: string; @Column({ nullable: true, length: 40, comment: "คีย์นอก(FK)ของตาราง ProfileEmployee", default: null, }) profileEmployeeId: string; @Column({ nullable: true, comment: "เรียงลำดับใหมาตามการนำเข้า", default: null, }) order: number; @Column({ nullable: true, comment: "เลขที่คำสั่ง", default: null, }) commandNo: string; @Column({ nullable: true, comment: "ปีที่ออกคำสั่ง", default: null, }) commandYear: number; @Column({ comment: "คำสั่งวันที่", type: "datetime", nullable: true, }) commandDateSign: Date; @Column({ comment: "คำสั่งมีผลวันที่", type: "datetime", nullable: true, }) commandDateAffect: Date; @Column({ nullable: true, comment: "รหัสประเภทของคำสั่ง", default: null, }) commandCode: string; @Column({ nullable: true, comment: "ชื่อประเภทคำสั่ง", default: null, }) commandName: string; @Column({ nullable: true, length: 40, comment: "ตัวย่อเลขที่ตำแหน่ง", default: null, }) posNoAbb: string; @Column({ nullable: true, length: 40, comment: "เลขที่ตำแหน่ง", default: null, }) posNo: string; @Column({ nullable: true, length: 255, comment: "ตำแหน่ง", default: null, }) positionName: string; @Column({ nullable: true, length: 255, comment: "ประเภทตำแหน่ง", default: null, }) positionType: string; @Column({ nullable: true, length: 255, comment: "ระดับตำแหน่ง", default: null, }) positionLevel: string; @Column({ nullable: true, comment: "ระดับของเก่าที่ยังไม่เทียบเท่าแบบแท่ง", default: null, }) positionCee: string; @Column({ nullable: true, comment: "root name", default: null, }) orgRoot: string; @Column({ nullable: true, comment: "child1 name", default: null, }) orgChild1: string; @Column({ nullable: true, comment: "child2 name", default: null, }) orgChild2: string; @Column({ nullable: true, comment: "child3 name", default: null, }) orgChild3: string; @Column({ nullable: true, comment: "child4 name", default: null, }) orgChild4: string; @Column({ nullable: true, length: 255, comment: "ตำแหน่งทางการบริหาร", default: null, }) positionExecutive: string; @Column({ comment: "เงินเดือนฐาน", default: 0, nullable: true, type: "double", }) amount: Double; @Column({ comment: "เงินพิเศษ", default: 0, nullable: true, type: "double", }) amountSpecial: Double; @Column({ comment: "เงินประจำตำแหน่ง", default: 0, nullable: true, type: "double", }) positionSalaryAmount: Double; @Column({ comment: "เงินค่าตอบแทนรายเดือน", default: 0, nullable: true, type: "double", }) mouthSalaryAmount: Double; @Column({ nullable: true, type: "text", comment: "หมายเหตุ", default: null, }) remark: string; @Column({ nullable: true, comment: "refId", default: null, }) refId: string; @Column({ comment: "วันที่", type: "datetime", nullable: true, }) dateGovernment: Date; @Column({ nullable: true, comment: "เข้ารับราชการ", default: null, }) isGovernment: boolean; @Column({ comment: "ข้อมูลจาก Entry", default: false, }) isEntry: boolean; @Column({ nullable: true, length: 255, comment: "ด้านของตำแหน่ง", default: null, }) positionPathSide: string; @Column({ nullable: true, length: 255, comment: "ตำแหน่งในสายงาน", default: null, }) positionLine: string; @Column({ nullable: true, length: 40, comment: "คีย์นอก(FK)ของตาราง command", default: null, }) commandId: string; @Column({ nullable: true, length: 255, comment: "หน่วยงานที่ออกคำสั่ง", default: null, }) posNumCodeSit: string; @Column({ nullable: true, length: 255, comment: "หน่วยงานที่ออกคำสั่ง(ตัวย่อ)", default: null, }) posNumCodeSitAbb: string; @Column({ nullable: true, length: 255, comment: "ด้านทางการบริหาร", default: null, }) positionExecutiveField: string; @Column({ nullable: true, length: 255, comment: "ด้าน/สาขา", default: null, }) positionArea: string; @ManyToOne(() => Command, (command) => command.profileSalarys) @JoinColumn({ name: "commandId" }) command: Command; @OneToMany(() => ProfileSalaryHistory, (profileSalaryHistory) => profileSalaryHistory.histories) profileSalaryHistories: ProfileSalaryHistory[]; @OneToMany(() => ProfileSalaryTemp, (profileSalaryTemp) => profileSalaryTemp.profileSalary) profileSalaryTemps: ProfileSalaryTemp[]; @ManyToOne(() => Profile, (profile) => profile.profileSalary) @JoinColumn({ name: "profileId" }) profile: Profile; @ManyToOne(() => ProfileEmployee, (profileEmployee) => profileEmployee.profileSalary) @JoinColumn({ name: "profileEmployeeId" }) profileEmployee: ProfileEmployee; } export class CreateProfileSalary { profileId: string | null; commandCode?: string | null; commandNo?: string | null; commandYear?: number | null; commandDateAffect?: Date | null; commandDateSign?: Date | null; posNoAbb: string | null; posNo: string | null; positionName: string | null; positionType: string | null; positionLevel: string | null; positionLine?: string | null; positionPathSide?: string | null; positionExecutive?: string | null; positionExecutiveField?: string | null; positionArea?: string | null; amount?: Double | null; amountSpecial?: Double | null; positionSalaryAmount?: Double | null; mouthSalaryAmount?: Double | null; orgRoot?: string | null; orgChild1?: string | null; orgChild2?: string | null; orgChild3?: string | null; orgChild4?: string | null; remark: string | null; commandId?: string | null; isGovernment?: boolean | null; positionCee?: string | null; commandName?: string | null; posNumCodeSit?: string | null; posNumCodeSitAbb?: string | null; } export class CreateProfileSalaryEmployee { profileEmployeeId: string | null; commandCode?: string | null; commandNo?: string | null; commandYear?: number | null; commandDateAffect?: Date | null; commandDateSign?: Date | null; posNoAbb: string | null; posNo: string | null; positionName: string | null; positionType: string | null; positionLevel: string | null; positionLine?: string | null; positionPathSide?: string | null; positionExecutive?: string | null; positionExecutiveField?: string | null; positionArea?: string | null; amount?: Double | null; amountSpecial?: Double | null; positionSalaryAmount?: Double | null; mouthSalaryAmount?: Double | null; orgRoot?: string | null; orgChild1?: string | null; orgChild2?: string | null; orgChild3?: string | null; orgChild4?: string | null; remark: string | null; commandId?: string | null; isGovernment?: boolean | null; positionCee?: string | null; commandName?: string | null; posNumCodeSit?: string | null; posNumCodeSitAbb?: string | null; salaryLevel?: number | null; group?: number | null; } export class UpdateProfileSalaryEmployee { commandCode?: string | null; commandNo?: string | null; commandYear?: number | null; commandDateAffect?: Date | null; commandDateSign?: Date | null; posNoAbb: string | null; posNo: string | null; positionName: string | null; positionType: string | null; positionLevel: string | null; positionLine?: string | null; positionPathSide?: string | null; positionExecutive?: string | null; positionExecutiveField?: string | null; positionArea?: string | null; amount?: Double | null; amountSpecial?: Double | null; positionSalaryAmount?: Double | null; mouthSalaryAmount?: Double | null; orgRoot?: string | null; orgChild1?: string | null; orgChild2?: string | null; orgChild3?: string | null; orgChild4?: string | null; remark: string | null; commandId?: string | null; isGovernment?: boolean | null; positionCee?: string | null; commandName?: string | null; posNumCodeSit?: string | null; posNumCodeSitAbb?: string | null; salaryLevel?: number | null; group?: number | null; } export type UpdateProfileSalary = { commandCode?: string | null; commandNo?: string | null; commandYear?: number | null; commandDateAffect?: Date | null; commandDateSign?: Date | null; posNoAbb: string | null; posNo: string | null; positionName: string | null; positionType: string | null; positionLevel: string | null; positionLine?: string | null; positionPathSide?: string | null; positionExecutive?: string | null; positionExecutiveField?: string | null; positionArea?: string | null; amount?: Double | null; amountSpecial?: Double | null; positionSalaryAmount?: Double | null; mouthSalaryAmount?: Double | null; orgRoot?: string | null; orgChild1?: string | null; orgChild2?: string | null; orgChild3?: string | null; orgChild4?: string | null; remark: string | null; commandId?: string | null; isGovernment?: boolean | null; positionCee?: string | null; commandName?: string | null; posNumCodeSit?: string | null; posNumCodeSitAbb?: string | null; };