diff --git a/modules/client/back/models/client-sample.js b/modules/client/back/models/client-sample.js index a6509efb25..b36d27f844 100644 --- a/modules/client/back/models/client-sample.js +++ b/modules/client/back/models/client-sample.js @@ -7,16 +7,44 @@ module.exports = Self => { Self.observe('before save', async function(ctx) { let models = Self.app.models; - let data = ctx.instance; + let changes = ctx.data || ctx.instance; - let sample = await models.Sample.findById(data.typeFk); + let sample = await models.Sample.findById(changes.typeFk); - if (sample.hasCompany && !data.companyFk) + if (sample.hasCompany && !changes.companyFk) throw new UserError('Choose a company'); + // Renew mandate + if (sample.code === 'sepa-core') { + let mandateType = await models.MandateType.findOne({ + where: {name: 'CORE'} + }); + + let oldMandate = await models.Mandate.findOne({ + where: { + clientFk: changes.clientFk, + companyFk: changes.companyFk, + mandateTypeFk: mandateType.id, + finished: null + } + }); + + // Disable old mandate + if (oldMandate) + oldMandate.updateAttribute('finished', new Date()); + + // Create a new mandate + await models.Mandate.create({ + clientFk: changes.clientFk, + companyFk: changes.companyFk, + mandateTypeFk: mandateType.id + }); + } + + // Apply workerFk let filter = {where: {userFk: ctx.options.accessToken.userId}}; let worker = await Self.app.models.Worker.findOne(filter); - data.workerFk = worker.id; + changes.workerFk = worker.id; }); }; diff --git a/modules/ticket/back/methods/ticket/filter.js b/modules/ticket/back/methods/ticket/filter.js index 557c75d9ee..f05101d755 100644 --- a/modules/ticket/back/methods/ticket/filter.js +++ b/modules/ticket/back/methods/ticket/filter.js @@ -99,11 +99,13 @@ module.exports = Self => { let teamIds = []; - if (worker.collegues().length) { + if (worker.collegues().length && ctx.args.myTeam) { worker.collegues().forEach(collegue => { teamIds.push(collegue.collegueFk); }); - } else { + } + + if (ctx.args.mine || (worker.collegues().length === 0 && ctx.args.myTeam)) { worker = await Self.app.models.Worker.findOne({ fields: ['id'], where: {userFk: ctx.req.accessToken.userId} diff --git a/modules/ticket/front/index/index.html b/modules/ticket/front/index/index.html index 42d5ad3fef..700fd9e87b 100644 --- a/modules/ticket/front/index/index.html +++ b/modules/ticket/front/index/index.html @@ -3,7 +3,7 @@ url="/ticket/api/Tickets/filter" limit="20" data="tickets" - order="shipped DESC, clientFk" + order="shipped ASC, clientFk" auto-load="false">