const IntegrationBudgets = sequelize.define('integrationBudgets', {
partnerComment: { type: DataTypes.STRING, },
refusalComment: { type: DataTypes.STRING, },
state: { type: DataTypes.ENUM(['initializing', 'waiting', 'accepted', 'refused']),},
createdAt: { type: DataTypes.DATE, },
updatedAt: { type: DataTypes.DATE, },
}, {
tableName: 'integration_budgets',
underscored: true,
schema: process.env.DATABASE_SCHEMA,
});
IntegrationBudgets.associate = (models) => {
IntegrationBudgets.belongsTo(models.places, {
foreignKey: {
name: 'placeIdKey',
field: 'place_id',
},
as: 'place',
});
IntegrationBudgets.belongsTo(models.integrations, {
foreignKey: {
name: 'placeIdKey',
field: 'place_id',
},
as: 'integration',
});
IntegrationBudgets.hasMany(models.integrationBudgetEntries, {
foreignKey: {
name: 'integrationBudgetIdKey',
field: 'integration_budget_id',
},
as: 'integrationBudgetIntegrationBudgetEntries',
});
};
const IntegrationBudgetEntries = sequelize.define('integrationBudgetEntries', {
displayName: { type: DataTypes.STRING, },
amount: { type: DataTypes.INTEGER, },
createdAt: { type: DataTypes.DATE, },
updatedAt: { type: DataTypes.DATE, },
}, {
tableName: 'integration_budget_entries',
underscored: true,
schema: process.env.DATABASE_SCHEMA,
});
IntegrationBudgetEntries.associate = (models) => {
IntegrationBudgetEntries.belongsTo(models.repartitionKeys, {
foreignKey: {
name: 'repartitionKeyIdKey',
field: 'repartition_key_id',
},
as: 'repartitionKey',
});
IntegrationBudgetEntries.belongsTo(models.integrationBudgets, {
foreignKey: {
name: 'integrationBudgetIdKey',
field: 'integration_budget_id',
},
as: 'integrationBudget',
});
};
return IntegrationBudgetEntries;
};
The /forest/integration-budget-entries.js file is untouched.
The /forest/integration-budgets.js is as following, 2 smart actions :
collection('integrationBudgets', {
actions: [{
name: 'Demander validation budget',
type: 'single',
}, {
name: 'Ajouter ligne budget',
type: 'single',
fields: [{
field: 'Clef de repartition',
type: 'Enum',
enums: []
}, {
field: 'Libelle',
type: 'String',
}, {
field: 'Montant',
type: 'Number'
}],
hooks: {
load: ({ fields, record }) => models.repartitionKeys.findAll({
where: { place_id: record.place.id }
}).then(repartitionKeys => {
fields['Clef de repartition'].enums = repartitionKeys.map(repartitionKey => `${repartitionKey.letter} - ${repartitionKey.displayName} - ${repartitionKey.feesTotal}`);
return fields;
})
}
}],
fields: [],
segments: [],
});