diff --git a/db/changes/233201/00-ticketAcl.sql b/db/changes/233201/00-ticketAcl.sql
new file mode 100644
index 000000000..0bad0f781
--- /dev/null
+++ b/db/changes/233201/00-ticketAcl.sql
@@ -0,0 +1,3 @@
+INSERT INTO `salix`.`ACL` (`model`,`property`,`accessType`,`permission`,`principalId`)
+ VALUES
+ ('Ticket','volume','READ','ALLOW','employee');
diff --git a/modules/ticket/back/methods/ticket/specs/volume.spec.js b/modules/ticket/back/methods/ticket/specs/volume.spec.js
new file mode 100644
index 000000000..4787cdf0d
--- /dev/null
+++ b/modules/ticket/back/methods/ticket/specs/volume.spec.js
@@ -0,0 +1,11 @@
+const models = require('vn-loopback/server/server').models;
+
+fdescribe('ticket volume()', () => {
+ it('should return the tickets matching the filter', async() => {
+ const ticketId = 1;
+ const filter = {order: ['concept']};
+ const result = await models.Ticket.volume(ticketId, filter);
+
+ expect(result.length).toBe(4);
+ });
+});
diff --git a/modules/ticket/back/methods/ticket/volume.js b/modules/ticket/back/methods/ticket/volume.js
new file mode 100644
index 000000000..0881edbee
--- /dev/null
+++ b/modules/ticket/back/methods/ticket/volume.js
@@ -0,0 +1,63 @@
+const ParameterizedSQL = require('loopback-connector').ParameterizedSQL;
+
+module.exports = Self => {
+ Self.remoteMethod('volume', {
+ description: 'Return the volume of a ticket',
+ accessType: 'READ',
+ accepts: [
+ {
+ arg: 'id',
+ type: 'number',
+ required: true,
+ description: 'The ticket id',
+ http: {source: 'path'}
+ },
+ {
+ arg: 'filter',
+ type: 'object'
+ }],
+ returns: {
+ type: 'object',
+ root: true
+ },
+ http: {
+ path: '/:id/volume',
+ verb: 'GET'
+ }
+ });
+
+ Self.volume = async(id, filter) => {
+ const conn = Self.dataSource.connector;
+
+ const stmt = new ParameterizedSQL(
+ `SELECT
+ s.id,
+ s.itemFk,
+ s.quantity,
+ i.name,
+ i.subName,
+ i.itemPackingTypeFk,
+ i.value5,
+ i.value6,
+ i.value7,
+ i.value8,
+ i.value9,
+ i.value10
+ FROM vn.sale s
+ JOIN vn.item i ON i.id = s.itemFk
+ WHERE s.ticketFk = ?`
+ , [id]
+ );
+
+ stmt.merge(conn.makeSuffix(filter));
+
+ const result = await conn.executeStmt(stmt);
+
+ const outputArray = result.map(({name, subName, itemPackingTypeFk, ...rest}) => ({
+ ...rest,
+ item: {name, subName, itemPackingTypeFk},
+ }));
+
+ return outputArray;
+ };
+};
diff --git a/modules/ticket/back/models/ticket-methods.js b/modules/ticket/back/models/ticket-methods.js
index c37337253..3d527d53b 100644
--- a/modules/ticket/back/models/ticket-methods.js
+++ b/modules/ticket/back/models/ticket-methods.js
@@ -42,4 +42,5 @@ module.exports = function(Self) {
require('../methods/ticket/expeditionPalletLabel')(Self);
require('../methods/ticket/saveSign')(Self);
require('../methods/ticket/invoiceTickets')(Self);
+ require('../methods/ticket/volume')(Self);
};
diff --git a/modules/ticket/front/volume/index.html b/modules/ticket/front/volume/index.html
index ff0a86772..e7d43ae3e 100644
--- a/modules/ticket/front/volume/index.html
+++ b/modules/ticket/front/volume/index.html
@@ -1,10 +1,9 @@
diff --git a/modules/ticket/front/volume/index.js b/modules/ticket/front/volume/index.js
index 7acecf570..48e374224 100644
--- a/modules/ticket/front/volume/index.js
+++ b/modules/ticket/front/volume/index.js
@@ -4,12 +4,6 @@ import Section from 'salix/components/section';
class Controller extends Section {
constructor($element, $) {
super($element, $);
- this.filter = {
- include: {
- relation: 'item'
- },
- order: 'concept'
- };
this.ticketVolumes = [];
}
@@ -25,8 +19,7 @@ class Controller extends Section {
}
applyVolumes() {
- const ticket = this.sales[0].ticketFk;
- this.$http.get(`Tickets/${ticket}/getVolume`).then(res => {
+ this.$http.get(`Tickets/${this.$params.id}/getVolume`).then(res => {
const saleVolume = res.data.saleVolume;
const volumes = new Map();