import {
  BelongsTo,
  Column,
  DataType,
  ForeignKey,
  Model,
  Table,
} from 'sequelize-typescript';
import { ProductVariantModel } from './product-variant.entity';

@Table({
  tableName: 'product_VariantWithInventory',
  timestamps: false,
  createdAt: false,
  updatedAt: false,
})
export class ProductVariantWithInventoryModel extends Model {
  @ForeignKey(() => ProductVariantModel)
  @Column({
    type: DataType.STRING,
    allowNull: false,
    primaryKey: true,
  })
  VariantId: string;

  @Column({ type: DataType.DECIMAL(10, 2) })
  TotalUnitsAvailable: number;

  @Column({ type: DataType.DECIMAL(10, 2) })
  TotalUnitsInCurrentOrder: number;

  @Column({ type: DataType.DECIMAL(10, 2) })
  TotalUnitsSold: number;

  @Column({ type: DataType.DECIMAL(10, 2) })
  TotalUnitsReserved: number;

  @Column({ type: DataType.DECIMAL(10, 2) })
  TotalUnitsInTransit: number;

  @Column({ type: DataType.DECIMAL(10, 2) })
  TotalUnitsOnConsignment: number;

  @Column({ type: DataType.DECIMAL(10, 2) })
  TotalUnitsBackOrdered: number;

  @Column({ type: DataType.DECIMAL(10, 2) })
  TotalUnitsPreOrdered: number;

  @Column({ type: DataType.DECIMAL(10, 2) })
  StockLowAlertLevel: number;

  @Column({ type: DataType.DECIMAL(10, 2) })
  StockReorderLevel: number;

  @Column({ type: DataType.DECIMAL(10, 2) })
  BufferStockLevel: number;

  @BelongsTo(() => ProductVariantModel)
  ProductVariant: ProductVariantModel;
}
