import { Model, DataTypes, Sequelize } from 'sequelize'; export interface FnFLineItemAttributes { id: string; fnfId: string; itemType: 'Payable' | 'Receivable' | 'Deduction' | 'Recovery'; description: string; department: string; amount: number; addedBy: string | null; } export interface FnFLineItemInstance extends Model, FnFLineItemAttributes { } export default (sequelize: Sequelize) => { const FnFLineItem = sequelize.define('FnFLineItem', { id: { type: DataTypes.UUID, defaultValue: DataTypes.UUIDV4, primaryKey: true }, fnfId: { type: DataTypes.UUID, allowNull: false, references: { model: 'fnf_settlements', key: 'id' } }, itemType: { type: DataTypes.ENUM('Payable', 'Receivable', 'Deduction', 'Recovery'), allowNull: false }, description: { type: DataTypes.STRING, allowNull: false }, department: { type: DataTypes.STRING, allowNull: false }, amount: { type: DataTypes.DECIMAL(15, 2), allowNull: false, defaultValue: 0 }, addedBy: { type: DataTypes.UUID, allowNull: true, references: { model: 'users', key: 'id' } } }, { tableName: 'fnf_line_items', timestamps: true, indexes: [ { fields: ['fnfId'] }, { fields: ['itemType'] }, { fields: ['department'] } ] }); (FnFLineItem as any).associate = (models: any) => { FnFLineItem.belongsTo(models.FnF, { foreignKey: 'fnfId', as: 'settlement' }); FnFLineItem.belongsTo(models.User, { foreignKey: 'addedBy', as: 'creator' }); }; return FnFLineItem; };