From 862a583e3017b5a00aa0a8921cd2cb0f8261d0b1 Mon Sep 17 00:00:00 2001 From: robert Date: Mon, 14 Oct 2024 13:01:32 +0200 Subject: [PATCH] feat: refs #8077 defaulter filter --- .../client/back/methods/defaulter/filter.js | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/modules/client/back/methods/defaulter/filter.js b/modules/client/back/methods/defaulter/filter.js index 9f19dee0a..1fcfde51b 100644 --- a/modules/client/back/methods/defaulter/filter.js +++ b/modules/client/back/methods/defaulter/filter.js @@ -18,6 +18,11 @@ module.exports = Self => { arg: 'search', type: 'string', description: `If it's and integer searchs by id, otherwise it searchs by name` + }, + { + arg: 'sumAmount', + type: 'boolean', + description: `` } ], returns: { @@ -28,6 +33,7 @@ module.exports = Self => { path: `/filter`, verb: 'GET' } + }); Self.filter = async(ctx, filter, options) => { @@ -50,14 +56,7 @@ module.exports = Self => { filter = mergeFilters(ctx.args.filter, {where}); const stmts = []; - - const date = Date.vnNew(); - date.setHours(0, 0, 0, 0); - const stmt = new ParameterizedSQL( - `SELECT * - FROM ( - SELECT - DISTINCT c.id clientFk, + const fields = ctx.args.sumAmount ? 'sum(d.amount) sumAmount' : ` DISTINCT c.id clientFk, c.name clientName, c.salesPersonFk, c.businessTypeFk = 'worker' isWorker, @@ -74,7 +73,14 @@ module.exports = Self => { pm.name payMethod, r.finished IS NULL hasRecovery, dp.id departmentFk, - dp.name departmentName + dp.name departmentName`; + const date = Date.vnNew(); + date.setHours(0, 0, 0, 0); + const stmt = new ParameterizedSQL( + `SELECT * + FROM ( + SELECT + ${fields} FROM defaulter d JOIN client c ON c.id = d.clientFk JOIN country cn ON cn.id = c.countryFk @@ -101,7 +107,7 @@ module.exports = Self => { , [date]); stmt.merge(conn.makeWhere(filter.where)); - stmt.merge(`GROUP BY d.clientFk`); + !ctx.args.sumAmount && stmt.merge(`GROUP BY d.clientFk`); stmt.merge(conn.makeOrderBy(filter.order)); stmt.merge(conn.makeLimit(filter));