import { Column, Entity, JoinColumn, ManyToOne } from 'typeorm'; import { AbstractEntity } from '../../common/abstract.entity'; import { UseDto } from '../../decorators'; import { NumberTransformer } from '../../transformer/number-transformer'; import { EmployeeEntity } from '../employee/employee.entity'; import { MonthlyRecordDto } from './dtos/monthly-record.dto'; @Entity({ name: 'monthly_records' }) @UseDto(MonthlyRecordDto) export class MonthlyRecordEntity extends AbstractEntity { @Column({ type: 'decimal', precision: 20, scale: 6, default: 0, transformer: new NumberTransformer(), }) restDayWages!: number; @Column({ type: 'decimal', precision: 20, scale: 6, default: 0, transformer: new NumberTransformer(), }) monthlyAllowance!: number; @Column({ type: 'decimal', precision: 20, scale: 6, default: 0, transformer: new NumberTransformer(), }) advance!: number; @Column({ type: 'decimal', precision: 20, scale: 6, default: 0, transformer: new NumberTransformer(), }) cleaningFee!: number; @Column({ type: 'decimal', precision: 20, scale: 6, default: 0, transformer: new NumberTransformer(), }) epf!: number; @Column({ type: 'decimal', precision: 20, scale: 6, default: 0, transformer: new NumberTransformer(), }) eis!: number; @Column({ type: 'decimal', precision: 20, scale: 6, default: 0, transformer: new NumberTransformer(), }) socso!: number; @Column({ type: 'decimal', precision: 20, scale: 6, default: 0, transformer: new NumberTransformer(), }) levy!: number; @Column({ type: 'decimal', precision: 20, scale: 6, default: 0, transformer: new NumberTransformer(), }) deduct!: number; @Column({ type: 'decimal', precision: 20, scale: 6, default: 0, transformer: new NumberTransformer(), }) addition!: number; @Column({ type: 'timestamp' }) date!: Date; @Column({ nullable: true }) remark?: string; @ManyToOne( () => EmployeeEntity, (employeeEntity) => employeeEntity.monthlyRecord, { onUpdate: 'CASCADE', }, ) @JoinColumn({ name: 'employee_id', foreignKeyConstraintName: 'incentive_record_employee', }) employee!: EmployeeEntity; }