#4613 eliminar uso de portfolio #1178
|
@ -2564,10 +2564,10 @@ UPDATE `vn`.`route`
|
|||
UPDATE `vn`.`route`
|
||||
SET `invoiceInFk`=2
|
||||
WHERE `id`=2;
|
||||
INSERT INTO `bs`.`salesPerson` (`workerFk`, `year`, `month`, `portfolioWeight`)
|
||||
INSERT INTO `bs`.`salesPerson` (`workerFk`, `year`, `month`)
|
||||
VALUES
|
||||
(18, YEAR(util.VN_CURDATE()), MONTH(util.VN_CURDATE()), 807.23),
|
||||
(19, YEAR(util.VN_CURDATE()), MONTH(util.VN_CURDATE()), 34.40);
|
||||
(18, YEAR(util.VN_CURDATE()), MONTH(util.VN_CURDATE())),
|
||||
(19, YEAR(util.VN_CURDATE()), MONTH(util.VN_CURDATE()));
|
||||
|
||||
INSERT INTO `bs`.`sale` (`saleFk`, `amount`, `dated`, `typeFk`, `clientFk`)
|
||||
VALUES
|
||||
|
|
|
@ -81044,4 +81044,3 @@ USE `vncontrol`;
|
|||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2022-09-16 10:44:31
|
||||
|
||||
|
|
|
@ -1,75 +0,0 @@
|
|||
const models = require('vn-loopback/server/server').models;
|
||||
const LoopBackContext = require('loopback-context');
|
||||
|
||||
describe('Client updatePortfolio', () => {
|
||||
const activeCtx = {
|
||||
accessToken: {userId: 9},
|
||||
http: {
|
||||
req: {
|
||||
headers: {origin: 'http://localhost'},
|
||||
[`__`]: value => {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
beforeAll(() => {
|
||||
spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({
|
||||
active: activeCtx
|
||||
});
|
||||
});
|
||||
|
||||
it('should update the portfolioWeight when the salesPerson of a client changes', async() => {
|
||||
const clientId = 1108;
|
||||
const salesPersonId = 18;
|
||||
|
||||
const tx = await models.Client.beginTransaction({});
|
||||
|
||||
try {
|
||||
const options = {transaction: tx};
|
||||
const expectedResult = 841.63;
|
||||
|
||||
const client = await models.Client.findById(clientId, null, options);
|
||||
await client.updateAttribute('salesPersonFk', salesPersonId, options);
|
||||
|
||||
await models.Client.updatePortfolio(options);
|
||||
|
||||
const portfolioQuery = `SELECT portfolioWeight FROM bs.salesPerson WHERE workerFk = ${salesPersonId}; `;
|
||||
const [salesPerson] = await models.Client.rawSql(portfolioQuery, null, options);
|
||||
|
||||
expect(salesPerson.portfolioWeight).toEqual(expectedResult);
|
||||
|
||||
await tx.rollback();
|
||||
} catch (e) {
|
||||
await tx.rollback();
|
||||
throw e;
|
||||
}
|
||||
});
|
||||
|
||||
it('should keep the same portfolioWeight when a salesperson is unassigned of a client', async() => {
|
||||
const clientId = 1107;
|
||||
const salesPersonId = 19;
|
||||
const tx = await models.Client.beginTransaction({});
|
||||
|
||||
try {
|
||||
const options = {transaction: tx};
|
||||
const expectedResult = 34.40;
|
||||
|
||||
const client = await models.Client.findById(clientId, null, options);
|
||||
await client.updateAttribute('salesPersonFk', null, options);
|
||||
|
||||
await models.Client.updatePortfolio();
|
||||
|
||||
const portfolioQuery = `SELECT portfolioWeight FROM bs.salesPerson WHERE workerFk = ${salesPersonId}; `;
|
||||
const [salesPerson] = await models.Client.rawSql(portfolioQuery);
|
||||
|
||||
expect(salesPerson.portfolioWeight).toEqual(expectedResult);
|
||||
|
||||
await tx.rollback();
|
||||
} catch (e) {
|
||||
await tx.rollback();
|
||||
throw e;
|
||||
}
|
||||
});
|
||||
});
|
|
@ -1,25 +0,0 @@
|
|||
module.exports = function(Self) {
|
||||
Self.remoteMethodCtx('updatePortfolio', {
|
||||
description: 'Update salesPeson potfolio weight',
|
||||
accessType: 'READ',
|
||||
accepts: [],
|
||||
returns: {
|
||||
type: 'Object',
|
||||
root: true
|
||||
},
|
||||
http: {
|
||||
path: `/updatePortfolio`,
|
||||
verb: 'GET'
|
||||
}
|
||||
});
|
||||
|
||||
Self.updatePortfolio = async options => {
|
||||
const myOptions = {};
|
||||
|
||||
if (typeof options == 'object')
|
||||
Object.assign(myOptions, options);
|
||||
|
||||
query = `CALL bs.salesPerson_updatePortfolio()`;
|
||||
return Self.rawSql(query, null, myOptions);
|
||||
};
|
||||
};
|
|
@ -22,7 +22,6 @@ module.exports = Self => {
|
|||
require('../methods/client/summary')(Self);
|
||||
require('../methods/client/updateAddress')(Self);
|
||||
require('../methods/client/updateFiscalData')(Self);
|
||||
require('../methods/client/updatePortfolio')(Self);
|
||||
require('../methods/client/updateUser')(Self);
|
||||
require('../methods/client/uploadFile')(Self);
|
||||
require('../methods/client/campaignMetricsPdf')(Self);
|
||||
|
|
|
@ -10,8 +10,6 @@ export default class Controller extends Section {
|
|||
|
||||
onSubmit() {
|
||||
return this.$.watcher.submit().then(() => {
|
||||
const query = `Clients/updatePortfolio`;
|
||||
this.$http.get(query);
|
||||
this.$http.get(`Clients/${this.$params.id}/checkDuplicatedData`);
|
||||
});
|
||||
}
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
"jsdom": "^16.7.0",
|
||||
"jszip": "^3.10.0",
|
||||
"ldapjs": "^2.2.0",
|
||||
"loopback": "^3.26.0",
|
||||
"loopback": "^3.28.0",
|
||||
"loopback-boot": "3.3.1",
|
||||
"loopback-component-explorer": "^6.5.0",
|
||||
"loopback-component-storage": "3.6.1",
|
||||
|
@ -4878,13 +4878,20 @@
|
|||
"license": "MIT"
|
||||
},
|
||||
"node_modules/caniuse-lite": {
|
||||
"version": "1.0.30001299",
|
||||
"version": "1.0.30001434",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001434.tgz",
|
||||
"integrity": "sha512-aOBHrLmTQw//WFa2rcF1If9fa3ypkC1wzqqiKHgfdrXTWcU8C4gKVZT77eQAPWN1APys3+uQ0Df07rKauXGEYA==",
|
||||
"dev": true,
|
||||
"license": "CC-BY-4.0",
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/browserslist"
|
||||
}
|
||||
"funding": [
|
||||
{
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/browserslist"
|
||||
},
|
||||
{
|
||||
"type": "tidelift",
|
||||
"url": "https://tidelift.com/funding/github/npm/caniuse-lite"
|
||||
}
|
||||
]
|
||||
},
|
||||
"node_modules/canonical-json": {
|
||||
"version": "0.0.4",
|
||||
|
@ -12881,6 +12888,66 @@
|
|||
"xmlcreate": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/jsbarcode": {
|
||||
"version": "3.11.5",
|
||||
"resolved": "https://registry.npmjs.org/jsbarcode/-/jsbarcode-3.11.5.tgz",
|
||||
"integrity": "sha512-zv3KsH51zD00I/LrFzFSM6dst7rDn0vIMzaiZFL7qusTjPZiPtxg3zxetp0RR7obmjTw4f6NyGgbdkBCgZUIrA==",
|
||||
"bin": {
|
||||
"auto.js": "bin/barcodes/CODE128/auto.js",
|
||||
"Barcode.js": "bin/barcodes/Barcode.js",
|
||||
"barcodes": "bin/barcodes",
|
||||
"canvas.js": "bin/renderers/canvas.js",
|
||||
"checksums.js": "bin/barcodes/MSI/checksums.js",
|
||||
"codabar": "bin/barcodes/codabar",
|
||||
"CODE128": "bin/barcodes/CODE128",
|
||||
"CODE128_AUTO.js": "bin/barcodes/CODE128/CODE128_AUTO.js",
|
||||
"CODE128.js": "bin/barcodes/CODE128/CODE128.js",
|
||||
"CODE128A.js": "bin/barcodes/CODE128/CODE128A.js",
|
||||
"CODE128B.js": "bin/barcodes/CODE128/CODE128B.js",
|
||||
"CODE128C.js": "bin/barcodes/CODE128/CODE128C.js",
|
||||
"CODE39": "bin/barcodes/CODE39",
|
||||
"constants.js": "bin/barcodes/ITF/constants.js",
|
||||
"defaults.js": "bin/options/defaults.js",
|
||||
"EAN_UPC": "bin/barcodes/EAN_UPC",
|
||||
"EAN.js": "bin/barcodes/EAN_UPC/EAN.js",
|
||||
"EAN13.js": "bin/barcodes/EAN_UPC/EAN13.js",
|
||||
"EAN2.js": "bin/barcodes/EAN_UPC/EAN2.js",
|
||||
"EAN5.js": "bin/barcodes/EAN_UPC/EAN5.js",
|
||||
"EAN8.js": "bin/barcodes/EAN_UPC/EAN8.js",
|
||||
"encoder.js": "bin/barcodes/EAN_UPC/encoder.js",
|
||||
"ErrorHandler.js": "bin/exceptions/ErrorHandler.js",
|
||||
"exceptions": "bin/exceptions",
|
||||
"exceptions.js": "bin/exceptions/exceptions.js",
|
||||
"fixOptions.js": "bin/help/fixOptions.js",
|
||||
"GenericBarcode": "bin/barcodes/GenericBarcode",
|
||||
"getOptionsFromElement.js": "bin/help/getOptionsFromElement.js",
|
||||
"getRenderProperties.js": "bin/help/getRenderProperties.js",
|
||||
"help": "bin/help",
|
||||
"index.js": "bin/renderers/index.js",
|
||||
"index.tmp.js": "bin/barcodes/index.tmp.js",
|
||||
"ITF": "bin/barcodes/ITF",
|
||||
"ITF.js": "bin/barcodes/ITF/ITF.js",
|
||||
"ITF14.js": "bin/barcodes/ITF/ITF14.js",
|
||||
"JsBarcode.js": "bin/JsBarcode.js",
|
||||
"linearizeEncodings.js": "bin/help/linearizeEncodings.js",
|
||||
"merge.js": "bin/help/merge.js",
|
||||
"MSI": "bin/barcodes/MSI",
|
||||
"MSI.js": "bin/barcodes/MSI/MSI.js",
|
||||
"MSI10.js": "bin/barcodes/MSI/MSI10.js",
|
||||
"MSI1010.js": "bin/barcodes/MSI/MSI1010.js",
|
||||
"MSI11.js": "bin/barcodes/MSI/MSI11.js",
|
||||
"MSI1110.js": "bin/barcodes/MSI/MSI1110.js",
|
||||
"object.js": "bin/renderers/object.js",
|
||||
"options": "bin/options",
|
||||
"optionsFromStrings.js": "bin/help/optionsFromStrings.js",
|
||||
"pharmacode": "bin/barcodes/pharmacode",
|
||||
"renderers": "bin/renderers",
|
||||
"shared.js": "bin/renderers/shared.js",
|
||||
"svg.js": "bin/renderers/svg.js",
|
||||
"UPC.js": "bin/barcodes/EAN_UPC/UPC.js",
|
||||
"UPCE.js": "bin/barcodes/EAN_UPC/UPCE.js"
|
||||
}
|
||||
},
|
||||
"node_modules/jsbn": {
|
||||
"version": "0.1.1",
|
||||
"license": "MIT"
|
||||
|
@ -23759,6 +23826,14 @@
|
|||
"version": "1.0.2",
|
||||
"license": "Apache-2.0"
|
||||
},
|
||||
"node_modules/xmldom": {
|
||||
"version": "0.6.0",
|
||||
"resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.6.0.tgz",
|
||||
"integrity": "sha512-iAcin401y58LckRZ0TkI4k0VSM1Qg0KGSc3i8rU+xrxe19A/BN1zHyVSJY7uoutVlaTSzYyk/v5AmkewAP7jtg==",
|
||||
"engines": {
|
||||
"node": ">=10.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/xtend": {
|
||||
"version": "4.0.2",
|
||||
"license": "MIT",
|
||||
|
@ -23938,6 +24013,7 @@
|
|||
"fs-extra": "^7.0.1",
|
||||
"intl": "^1.2.5",
|
||||
"js-yaml": "^3.13.1",
|
||||
"jsbarcode": "^3.11.5",
|
||||
"jsonexport": "^3.2.0",
|
||||
"juice": "^5.2.0",
|
||||
"log4js": "^6.7.0",
|
||||
|
@ -23948,7 +24024,8 @@
|
|||
"strftime": "^0.10.0",
|
||||
"vue": "^2.6.10",
|
||||
"vue-i18n": "^8.15.0",
|
||||
"vue-server-renderer": "^2.6.10"
|
||||
"vue-server-renderer": "^2.6.10",
|
||||
"xmldom": "^0.6.0"
|
||||
}
|
||||
},
|
||||
"print/node_modules/fs-extra": {
|
||||
|
@ -28107,7 +28184,9 @@
|
|||
"version": "1.0.0"
|
||||
},
|
||||
"caniuse-lite": {
|
||||
"version": "1.0.30001299",
|
||||
"version": "1.0.30001434",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001434.tgz",
|
||||
"integrity": "sha512-aOBHrLmTQw//WFa2rcF1If9fa3ypkC1wzqqiKHgfdrXTWcU8C4gKVZT77eQAPWN1APys3+uQ0Df07rKauXGEYA==",
|
||||
"dev": true
|
||||
},
|
||||
"canonical-json": {
|
||||
|
@ -39828,6 +39907,11 @@
|
|||
"xmlcreate": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"jsbarcode": {
|
||||
"version": "3.11.5",
|
||||
"resolved": "https://registry.npmjs.org/jsbarcode/-/jsbarcode-3.11.5.tgz",
|
||||
"integrity": "sha512-zv3KsH51zD00I/LrFzFSM6dst7rDn0vIMzaiZFL7qusTjPZiPtxg3zxetp0RR7obmjTw4f6NyGgbdkBCgZUIrA=="
|
||||
},
|
||||
"jsbn": {
|
||||
"version": "0.1.1"
|
||||
},
|
||||
|
@ -57805,6 +57889,7 @@
|
|||
"fs-extra": "^7.0.1",
|
||||
"intl": "^1.2.5",
|
||||
"js-yaml": "^3.13.1",
|
||||
"jsbarcode": "^3.11.5",
|
||||
"jsonexport": "^3.2.0",
|
||||
"juice": "^5.2.0",
|
||||
"log4js": "^6.7.0",
|
||||
|
@ -57815,7 +57900,8 @@
|
|||
"strftime": "^0.10.0",
|
||||
"vue": "^2.6.10",
|
||||
"vue-i18n": "^8.15.0",
|
||||
"vue-server-renderer": "^2.6.10"
|
||||
"vue-server-renderer": "^2.6.10",
|
||||
"xmldom": "^0.6.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"fs-extra": {
|
||||
|
@ -59678,6 +59764,11 @@
|
|||
"resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-1.0.2.tgz",
|
||||
"integrity": "sha512-Mbe56Dvj00onbnSo9J0qj/XlY5bfN9KidsOnpd5tRCsR3ekB3hyyNU9fGrTdqNT5ZNvv4BsA2TcQlignsZyVcw=="
|
||||
},
|
||||
"xmldom": {
|
||||
"version": "0.6.0",
|
||||
"resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.6.0.tgz",
|
||||
"integrity": "sha512-iAcin401y58LckRZ0TkI4k0VSM1Qg0KGSc3i8rU+xrxe19A/BN1zHyVSJY7uoutVlaTSzYyk/v5AmkewAP7jtg=="
|
||||
},
|
||||
"xtend": {
|
||||
<<<<<<< HEAD
|
||||
"version": "1.0.3",
|
||||
|
|
Loading…
Reference in New Issue