3973-monitor-client_dateFilter_Master #965
|
@ -1,5 +1,5 @@
|
||||||
module.exports = Self => {
|
module.exports = Self => {
|
||||||
Self.remoteMethodCtx('setSaleQuantity', {
|
Self.remoteMethod('setSaleQuantity', {
|
||||||
description: 'Update sale quantity',
|
description: 'Update sale quantity',
|
||||||
accessType: 'WRITE',
|
accessType: 'WRITE',
|
||||||
accepts: [{
|
accepts: [{
|
||||||
|
@ -24,11 +24,13 @@ module.exports = Self => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Self.setSaleQuantity = async ctx => {
|
Self.setSaleQuantity = async(saleId, quantity) => {
|
||||||
const args = ctx.args;
|
|
||||||
const models = Self.app.models;
|
const models = Self.app.models;
|
||||||
|
|
||||||
const sale = await models.Sale.findById(args.saleId,);
|
const sale = await models.Sale.findById(saleId);
|
||||||
return await sale.updateAttribute('quantity', args.quantity);
|
return await sale.updateAttributes({
|
||||||
|
originalQuantity: sale.quantity,
|
||||||
|
quantity: quantity
|
||||||
|
});
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -5,19 +5,12 @@ describe('setSaleQuantity()', () => {
|
||||||
const saleId = 30;
|
const saleId = 30;
|
||||||
const newQuantity = 10;
|
const newQuantity = 10;
|
||||||
|
|
||||||
const ctx = {
|
|
||||||
args: {
|
|
||||||
saleId: saleId,
|
|
||||||
quantity: newQuantity
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const originalSale = await models.Sale.findById(saleId);
|
const originalSale = await models.Sale.findById(saleId);
|
||||||
|
|
||||||
await models.Collection.setSaleQuantity(ctx);
|
await models.Collection.setSaleQuantity(saleId, newQuantity);
|
||||||
const updateSale = await models.Sale.findById(saleId);
|
const updateSale = await models.Sale.findById(saleId);
|
||||||
|
|
||||||
expect(updateSale.quantity).toBeLessThan(originalSale.quantity);
|
expect(updateSale.originalQuantity).toEqual(originalSale.quantity);
|
||||||
expect(updateSale.quantity).toEqual(newQuantity);
|
expect(updateSale.quantity).toEqual(newQuantity);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -1640,51 +1640,59 @@ INSERT INTO `hedera`.`orderRowComponent`(`rowFk`, `componentFk`, `price`)
|
||||||
|
|
||||||
INSERT INTO `hedera`.`visit`(`id`, `firstAgentFk`)
|
INSERT INTO `hedera`.`visit`(`id`, `firstAgentFk`)
|
||||||
VALUES
|
VALUES
|
||||||
(1, NULL),
|
(1, NULL),
|
||||||
(2, NULL),
|
(2, NULL),
|
||||||
(3, NULL),
|
(3, NULL),
|
||||||
(4, NULL),
|
(4, NULL),
|
||||||
(5, NULL),
|
(5, NULL),
|
||||||
(6, NULL),
|
(6, NULL),
|
||||||
(7, NULL),
|
(7, NULL),
|
||||||
(8, NULL),
|
(8, NULL),
|
||||||
(9, NULL);
|
(9, NULL),
|
||||||
|
(10, NULL),
|
||||||
|
(11, NULL);
|
||||||
|
|
||||||
INSERT INTO `hedera`.`visitAgent`(`id`, `visitFk`)
|
INSERT INTO `hedera`.`visitAgent`(`id`, `visitFk`)
|
||||||
VALUES
|
VALUES
|
||||||
(1, 1),
|
(1, 1),
|
||||||
(2, 2),
|
(2, 2),
|
||||||
(3, 3),
|
(3, 3),
|
||||||
(4, 4),
|
(4, 4),
|
||||||
(5, 5),
|
(5, 5),
|
||||||
(6, 6),
|
(6, 6),
|
||||||
(7, 7),
|
(7, 7),
|
||||||
(8, 8),
|
(8, 8),
|
||||||
(9, 9);
|
(9, 9),
|
||||||
|
(10, 10),
|
||||||
|
(11, 11);
|
||||||
|
|
||||||
INSERT INTO `hedera`.`visitAccess`(`id`, `agentFk`, `stamp`)
|
INSERT INTO `hedera`.`visitAccess`(`id`, `agentFk`, `stamp`)
|
||||||
VALUES
|
VALUES
|
||||||
(1, 1, CURDATE()),
|
(1, 1, CURDATE()),
|
||||||
(2, 2, CURDATE()),
|
(2, 2, CURDATE()),
|
||||||
(3, 3, CURDATE()),
|
(3, 3, CURDATE()),
|
||||||
(4, 4, CURDATE()),
|
(4, 4, CURDATE()),
|
||||||
(5, 5, CURDATE()),
|
(5, 5, CURDATE()),
|
||||||
(6, 6, CURDATE()),
|
(6, 6, CURDATE()),
|
||||||
(7, 7, CURDATE()),
|
(7, 7, CURDATE()),
|
||||||
(8, 8, CURDATE()),
|
(8, 8, CURDATE()),
|
||||||
(9, 9, CURDATE());
|
(9, 9, CURDATE()),
|
||||||
|
(10, 10, CURDATE()),
|
||||||
|
(11, 11, CURDATE());
|
||||||
|
|
||||||
INSERT INTO `hedera`.`visitUser`(`id`, `accessFk`, `userFk`, `stamp`)
|
INSERT INTO `hedera`.`visitUser`(`id`, `accessFk`, `userFk`, `stamp`)
|
||||||
VALUES
|
VALUES
|
||||||
(1, 1, 1101, CURDATE()),
|
(1, 1, 1101, CURDATE()),
|
||||||
(2, 2, 1101, CURDATE()),
|
(2, 2, 1101, CURDATE()),
|
||||||
(3, 3, 1101, CURDATE()),
|
(3, 3, 1101, CURDATE()),
|
||||||
(4, 4, 1102, CURDATE()),
|
(4, 4, 1102, CURDATE()),
|
||||||
(5, 5, 1102, CURDATE()),
|
(5, 5, 1102, CURDATE()),
|
||||||
(6, 6, 1102, CURDATE()),
|
(6, 6, 1102, CURDATE()),
|
||||||
(7, 7, 1103, CURDATE()),
|
(7, 7, 1103, CURDATE()),
|
||||||
(8, 8, 1103, CURDATE()),
|
(8, 8, 1103, CURDATE()),
|
||||||
(9, 9, 1103, CURDATE());
|
(9, 9, 1103, CURDATE()),
|
||||||
|
(10, 10, 1102, DATE_SUB(CURDATE(), INTERVAL 1 DAY)),
|
||||||
|
(11, 11, 1103, DATE_SUB(CURDATE(), INTERVAL 1 DAY));
|
||||||
|
|
||||||
INSERT INTO `hedera`.`userSession`(`created`, `lastUpdate`, `ssid`, `data`, `userVisitFk`)
|
INSERT INTO `hedera`.`userSession`(`created`, `lastUpdate`, `ssid`, `data`, `userVisitFk`)
|
||||||
VALUES
|
VALUES
|
||||||
|
|
|
@ -43,11 +43,9 @@ module.exports = Self => {
|
||||||
TIME(v.stamp) AS hour,
|
TIME(v.stamp) AS hour,
|
||||||
DATE(v.stamp) AS dated,
|
DATE(v.stamp) AS dated,
|
||||||
wtc.workerFk
|
wtc.workerFk
|
||||||
FROM hedera.userSession s
|
FROM hedera.visitUser v
|
||||||
JOIN hedera.visitUser v ON v.id = s.userVisitFk
|
|
||||||
JOIN client c ON c.id = v.userFk
|
JOIN client c ON c.id = v.userFk
|
||||||
LEFT JOIN account.user u ON c.salesPersonFk = u.id
|
JOIN account.user u ON c.salesPersonFk = u.id
|
||||||
LEFT JOIN worker w ON c.salesPersonFk = w.id
|
|
||||||
LEFT JOIN sharingCart sc ON sc.workerFk = c.salesPersonFk
|
LEFT JOIN sharingCart sc ON sc.workerFk = c.salesPersonFk
|
||||||
AND CURDATE() BETWEEN sc.started AND sc.ended
|
AND CURDATE() BETWEEN sc.started AND sc.ended
|
||||||
LEFT JOIN workerTeamCollegues wtc
|
LEFT JOIN workerTeamCollegues wtc
|
||||||
|
@ -58,7 +56,9 @@ module.exports = Self => {
|
||||||
const where = filter.where;
|
const where = filter.where;
|
||||||
where['wtc.workerFk'] = userId;
|
where['wtc.workerFk'] = userId;
|
||||||
|
|
||||||
stmt.merge(conn.makeSuffix(filter));
|
stmt.merge(conn.makeWhere(filter.where));
|
||||||
|
stmt.merge(`GROUP BY clientFk, v.stamp`);
|
||||||
|
stmt.merge(conn.makePagination(filter));
|
||||||
|
|
||||||
return conn.executeStmt(stmt, myOptions);
|
return conn.executeStmt(stmt, myOptions);
|
||||||
};
|
};
|
||||||
|
|
|
@ -6,12 +6,49 @@ describe('SalesMonitor clientsFilter()', () => {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const options = {transaction: tx};
|
const options = {transaction: tx};
|
||||||
|
|
||||||
const ctx = {req: {accessToken: {userId: 18}}, args: {}};
|
const ctx = {req: {accessToken: {userId: 18}}, args: {}};
|
||||||
const filter = {order: 'dated DESC'};
|
|
||||||
|
const from = new Date();
|
||||||
|
const to = new Date();
|
||||||
|
from.setHours(0, 0, 0, 0);
|
||||||
|
to.setHours(23, 59, 59, 59);
|
||||||
|
|
||||||
|
const filter = {
|
||||||
|
where: {
|
||||||
|
'v.stamp': {between: [from, to]}
|
||||||
|
}
|
||||||
|
};
|
||||||
const result = await models.SalesMonitor.clientsFilter(ctx, filter, options);
|
const result = await models.SalesMonitor.clientsFilter(ctx, filter, options);
|
||||||
|
|
||||||
expect(result.length).toEqual(9);
|
expect(result.length).toEqual(3);
|
||||||
|
|
||||||
|
await tx.rollback();
|
||||||
|
} catch (e) {
|
||||||
|
await tx.rollback();
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should return the clients web activity filtered', async() => {
|
||||||
|
const tx = await models.SalesMonitor.beginTransaction({});
|
||||||
|
|
||||||
|
try {
|
||||||
|
const options = {transaction: tx};
|
||||||
|
const ctx = {req: {accessToken: {userId: 18}}, args: {}};
|
||||||
|
const yesterday = new Date();
|
||||||
|
yesterday.setDate(yesterday.getDate() - 1);
|
||||||
|
const today = new Date();
|
||||||
|
yesterday.setHours(0, 0, 0, 0);
|
||||||
|
today.setHours(23, 59, 59, 59);
|
||||||
|
|
||||||
|
const filter = {
|
||||||
|
where: {
|
||||||
|
'v.stamp': {between: [yesterday, today]}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const result = await models.SalesMonitor.clientsFilter(ctx, filter, options);
|
||||||
|
|
||||||
|
expect(result.length).toEqual(5);
|
||||||
|
|
||||||
await tx.rollback();
|
await tx.rollback();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
"properties": {
|
"properties": {
|
||||||
"id": {
|
"id": {
|
||||||
"id": true,
|
"id": true,
|
||||||
"type": "Number",
|
"type": "number",
|
||||||
"description": "Identifier"
|
"description": "Identifier"
|
||||||
},
|
},
|
||||||
"concept": {
|
"concept": {
|
||||||
|
@ -22,22 +22,25 @@
|
||||||
"required": true
|
"required": true
|
||||||
},
|
},
|
||||||
"quantity": {
|
"quantity": {
|
||||||
"type": "Number"
|
"type": "number"
|
||||||
},
|
},
|
||||||
"price": {
|
"price": {
|
||||||
"type": "Number"
|
"type": "number"
|
||||||
},
|
},
|
||||||
"discount": {
|
"discount": {
|
||||||
"type": "Number"
|
"type": "number"
|
||||||
},
|
},
|
||||||
"reserved": {
|
"reserved": {
|
||||||
"type": "boolean"
|
"type": "boolean"
|
||||||
},
|
},
|
||||||
"isPicked": {
|
"isPicked": {
|
||||||
"type": "Number"
|
"type": "number"
|
||||||
},
|
},
|
||||||
"created": {
|
"created": {
|
||||||
"type": "date"
|
"type": "date"
|
||||||
|
},
|
||||||
|
"originalQuantity":{
|
||||||
|
"type": "number"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"relations": {
|
"relations": {
|
||||||
|
|
|
@ -135,7 +135,8 @@ module.exports = Self => {
|
||||||
function formatDate(date) {
|
function formatDate(date) {
|
||||||
let day = date.getDate();
|
let day = date.getDate();
|
||||||
if (day < 10) day = `0${day}`;
|
if (day < 10) day = `0${day}`;
|
||||||
let month = date.getMonth();
|
|
||||||
|
let month = date.getMonth() + 1;
|
||||||
if (month < 10) month = `0${month}`;
|
if (month < 10) month = `0${month}`;
|
||||||
let year = date.getFullYear();
|
let year = date.getFullYear();
|
||||||
|
|
||||||
|
|
|
@ -87,7 +87,7 @@ module.exports = Self => {
|
||||||
function formatDate(date) {
|
function formatDate(date) {
|
||||||
let day = date.getDate();
|
let day = date.getDate();
|
||||||
if (day < 10) day = `0${day}`;
|
if (day < 10) day = `0${day}`;
|
||||||
let month = date.getMonth();
|
let month = date.getMonth() + 1;
|
||||||
if (month < 10) month = `0${month}`;
|
if (month < 10) month = `0${month}`;
|
||||||
let year = date.getFullYear();
|
let year = date.getFullYear();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue