const { DataTypes } = require('sequelize');

module.exports = (sequelize) => {
    const TicketItem = sequelize.define('TicketItem', {
        id: {
            type: DataTypes.INTEGER,
            primaryKey: true,
            autoIncrement: true
        },
        ticket_id: {
            type: DataTypes.INTEGER,
            allowNull: false,
            references: {
                model: 'tickets',
                key: 'id'
            },
            comment: 'ID du ticket'
        },
        commande_item_id: {
            type: DataTypes.INTEGER,
            allowNull: true,
            comment: 'ID de l\'item de commande (si applicable)'
        },
        nom_item: {
            type: DataTypes.STRING(100),
            allowNull: false,
            comment: 'Nom de l\'item'
        },
        description: {
            type: DataTypes.TEXT,
            allowNull: true,
            comment: 'Description de l\'item'
        },
        quantite: {
            type: DataTypes.INTEGER,
            allowNull: false,
            defaultValue: 1,
            comment: 'Quantité'
        },
        prix_unitaire_ht: {
            type: DataTypes.DECIMAL(10, 2),
            allowNull: false,
            comment: 'Prix unitaire HT'
        },
        prix_unitaire_ttc: {
            type: DataTypes.DECIMAL(10, 2),
            allowNull: false,
            comment: 'Prix unitaire TTC'
        },
        montant_ht: {
            type: DataTypes.DECIMAL(10, 2),
            allowNull: false,
            comment: 'Montant total HT pour cet item'
        },
        montant_tva: {
            type: DataTypes.DECIMAL(10, 2),
            allowNull: false,
            comment: 'Montant de la TVA pour cet item'
        },
        montant_ttc: {
            type: DataTypes.DECIMAL(10, 2),
            allowNull: false,
            comment: 'Montant total TTC pour cet item'
        },
        taux_tva: {
            type: DataTypes.DECIMAL(5, 2),
            allowNull: false,
            defaultValue: 20.00,
            comment: 'Taux de TVA appliqué'
        },
        remise_unitaire: {
            type: DataTypes.DECIMAL(10, 2),
            allowNull: false,
            defaultValue: 0.00,
            comment: 'Remise par unité'
        }
    }, {
        tableName: 'ticket_items',
        timestamps: true,
        createdAt: 'cree_le',
        updatedAt: 'modifie_le'
    });

    return TicketItem;
};
