import { Column, DataType, Table, Model, ForeignKey, BelongsTo, CreatedAt, UpdatedAt, HasOne, HasMany, } from 'sequelize-typescript'; import { OrderCustomerModel } from './order-customer.entity'; import { ServiceOrderModel } from './service-order.entity'; import { OrderItemModel } from './order-item.entity'; import { OrderPickUpModel } from './order-pick-up.entity'; import { DeliveryMethodEnum } from '../enums/delivery-method.enum'; import { OrderShippingAddressModel } from './order-shipping-address.entity'; import { OrderStatusEnum } from '../enums/order-status.enum'; @Table({ tableName: 'order_Order', }) export class OrderModel extends Model { @Column({ primaryKey: true, allowNull: false, type: DataType.STRING(30), }) OrderNo: string; @ForeignKey(() => OrderCustomerModel) @Column({ allowNull: false, type: DataType.STRING(30), }) CustomerId: string; @Column({ allowNull: false, type: DataType.STRING(50), }) OrderType: string; @Column({ allowNull: false, type: DataType.STRING(10), }) Platform: string; @Column({ allowNull: false, type: DataType.STRING(10), }) PlatformRefNo: string; @Column({ allowNull: false, type: DataType.DATE, }) Date: Date; @Column({ type: DataType.DECIMAL, allowNull: true, }) Amount: number; @Column({ type: DataType.CHAR, allowNull: false, }) Currency: string; @Column({ type: DataType.STRING(30), }) DeliveryMethod: DeliveryMethodEnum; @Column({ allowNull: false, type: DataType.STRING(10), }) Status: OrderStatusEnum; @Column({ type: DataType.CHAR(1), allowNull: false, defaultValue: 'N', }) AllowDepositYN: string; @Column({ type: DataType.DECIMAL, allowNull: true, }) DepositAmount: number; @Column({ type: DataType.STRING(10), }) CancellationType: string; @Column({ type: DataType.STRING(10), }) CancellationReasonCode: string; @Column({ type: DataType.STRING(10), }) CancellationById: string; @Column({ type: DataType.STRING(10), }) CancellationByName: string; @Column({ type: DataType.DATE, }) CancellationDate: Date; @Column({ type: DataType.DECIMAL(10, 2), }) DiscountPercentage: number; @Column({ allowNull: false, type: DataType.STRING(30), }) CreatedById: string; @CreatedAt CreatedAt: Date; @Column({ allowNull: false, type: DataType.STRING(30), }) UpdatedById: string; @UpdatedAt UpdatedAt: Date; @BelongsTo(() => OrderCustomerModel) Customer: OrderCustomerModel; @HasOne(() => ServiceOrderModel) ServiceOrder: ServiceOrderModel; @HasMany(() => OrderItemModel) OrderItems: OrderItemModel[]; @HasMany(() => OrderPickUpModel) OrderPickUps: OrderPickUpModel[]; @HasMany(() => OrderShippingAddressModel) OrderShippingAddresses: OrderShippingAddressModel[]; }