diff --git a/modules/travel/back/methods/travel/filter.js b/modules/travel/back/methods/travel/filter.js index 024448bfe4..586b4e5aad 100644 --- a/modules/travel/back/methods/travel/filter.js +++ b/modules/travel/back/methods/travel/filter.js @@ -10,64 +10,68 @@ module.exports = Self => { accepts: [ { arg: 'filter', - type: 'Object', + type: 'object', description: 'Filter defining where, order, offset, and limit - must be a JSON-encoded string', http: {source: 'query'} }, { arg: 'search', - type: 'String', + type: 'string', description: 'Searchs the travel by id', http: {source: 'query'} }, { arg: 'id', - type: 'Integer', + type: 'integer', description: 'The travel id', http: {source: 'query'} }, { arg: 'shippedFrom', - type: 'Date', + type: 'date', description: 'The shipped from date filter', http: {source: 'query'} }, { arg: 'shippedTo', - type: 'Date', + type: 'date', description: 'The shipped to date filter', http: {source: 'query'} }, { arg: 'landedFrom', - type: 'Date', + type: 'date', description: 'The landed from date filter', http: {source: 'query'} }, { arg: 'landedTo', - type: 'Date', + type: 'date', description: 'The landed to date filter', http: {source: 'query'} }, { arg: 'agencyFk', - type: 'Number', + type: 'number', description: 'The agencyModeFk id', http: {source: 'query'} }, { arg: 'warehouseOutFk', - type: 'Number', + type: 'number', description: 'The warehouseOutFk filter', http: {source: 'query'} }, { arg: 'warehouseInFk', - type: 'Number', + type: 'number', description: 'The warehouseInFk filter', http: {source: 'query'} }, { arg: 'totalEntries', - type: 'Number', + type: 'number', description: 'The totalEntries filter', http: {source: 'query'} }, { arg: 'ref', type: 'string', description: 'The reference' - } + }, { + arg: 'continent', + type: 'string', + description: 'The continent code' + }, ], returns: { type: ['Object'], @@ -102,6 +106,7 @@ module.exports = Self => { case 'warehouseOutFk': case 'warehouseInFk': case 'totalEntries': + case 'continent': param = `t.${param}`; return {[param]: value}; } @@ -129,11 +134,15 @@ module.exports = Self => { t.totalEntries, am.name agencyModeName, win.name warehouseInName, - wout.name warehouseOutName + wout.name warehouseOutName, + cnt.code continent FROM vn.travel t JOIN vn.agencyMode am ON am.id = t.agencyFk JOIN vn.warehouse win ON win.id = t.warehouseInFk - JOIN vn.warehouse wout ON wout.id = t.warehouseOutFk) AS t` + JOIN vn.warehouse wout ON wout.id = t.warehouseOutFk + JOIN warehouse wo ON wo.id = t.warehouseOutFk + JOIN country c ON c.id = wo.countryFk + LEFT JOIN continent cnt ON cnt.id = c.continentFk) AS t` ); stmt.merge(conn.makeSuffix(filter)); diff --git a/modules/travel/back/methods/travel/specs/filter.spec.js b/modules/travel/back/methods/travel/specs/filter.spec.js index ababe961e6..c739866a05 100644 --- a/modules/travel/back/methods/travel/specs/filter.spec.js +++ b/modules/travel/back/methods/travel/specs/filter.spec.js @@ -70,4 +70,16 @@ describe('Travel filter()', () => { expect(result.length).toEqual(1); }); + + it('should return the travel matching "continent"', async() => { + const ctx = { + args: { + continent: 'EU', + } + }; + + const result = await app.models.Travel.filter(ctx); + + expect(result.length).toEqual(5); + }); }); diff --git a/modules/travel/front/search-panel/index.html b/modules/travel/front/search-panel/index.html index 8e7f4140d2..8d4edec1ac 100644 --- a/modules/travel/front/search-panel/index.html +++ b/modules/travel/front/search-panel/index.html @@ -93,6 +93,15 @@ value-field="id"> + + + + diff --git a/modules/travel/front/summary/index.html b/modules/travel/front/summary/index.html index 90a2ea27f6..e74682fb94 100644 --- a/modules/travel/front/summary/index.html +++ b/modules/travel/front/summary/index.html @@ -22,7 +22,7 @@ @@ -37,7 +37,7 @@