Compare commits
23 Commits
185cc4f17f
...
c9294680a5
Author | SHA1 | Date |
---|---|---|
Juanjo Breso | c9294680a5 | |
Jorge Penadés | 9bd8c21660 | |
Jorge Penadés | 76b4f8f46f | |
Guillermo Bonet | bf6d068830 | |
Jorge Penadés | 579f2abe5b | |
Jorge Penadés | db2919b482 | |
Jorge Penadés | d7fb31ee60 | |
Josep Domingo | 51b336d9f7 | |
Josep Domingo | 68034fc404 | |
Juan Ferrer | 4f9b46346f | |
Guillermo Bonet | bbb3f3807a | |
Guillermo Bonet | b449da28ef | |
Jorge Penadés | 995e249495 | |
Guillermo Bonet | 744171dd4c | |
Jorge Penadés | c8e13fa858 | |
Jorge Penadés | 6116ada156 | |
Guillermo Bonet | 41db1c924f | |
Guillermo Bonet | e08fb3d229 | |
Josep Domingo | 4feae72ee3 | |
Josep Domingo | 3b35e4dae8 | |
Josep Domingo | 5b137ad825 | |
Josep Domingo | a897a05e8b | |
Jorge Penadés | 534b5bb05a |
|
@ -17,7 +17,8 @@ const opts = getopts(process.argv.slice(2), {
|
||||||
|
|
||||||
let server;
|
let server;
|
||||||
const PARALLEL = false;
|
const PARALLEL = false;
|
||||||
const TIMEOUT = 900000;
|
const SETUP_TIMEOUT = 15 * 60 * 1000;
|
||||||
|
const SPEC_TIMEOUT = 30 * 1000;
|
||||||
|
|
||||||
process.on('exit', teardown);
|
process.on('exit', teardown);
|
||||||
process.on('uncaughtException', onError);
|
process.on('uncaughtException', onError);
|
||||||
|
@ -74,9 +75,9 @@ async function test() {
|
||||||
let runner;
|
let runner;
|
||||||
const config = {
|
const config = {
|
||||||
globalSetup: setup,
|
globalSetup: setup,
|
||||||
globalSetupTimeout: TIMEOUT,
|
globalSetupTimeout: SETUP_TIMEOUT,
|
||||||
globalTeardown: teardown,
|
globalTeardown: teardown,
|
||||||
globalTeardownTimeout: TIMEOUT,
|
globalTeardownTimeout: SETUP_TIMEOUT,
|
||||||
spec_dir: '.',
|
spec_dir: '.',
|
||||||
spec_files: [
|
spec_files: [
|
||||||
'back/**/*[sS]pec.js',
|
'back/**/*[sS]pec.js',
|
||||||
|
@ -111,7 +112,7 @@ async function test() {
|
||||||
runner.addReporter(new JunitReporter.JUnitXmlReporter());
|
runner.addReporter(new JunitReporter.JUnitXmlReporter());
|
||||||
}
|
}
|
||||||
if (opts.ci)
|
if (opts.ci)
|
||||||
runner.jasmine.DEFAULT_TIMEOUT_INTERVAL = TIMEOUT;
|
runner.jasmine.DEFAULT_TIMEOUT_INTERVAL = SPEC_TIMEOUT;
|
||||||
|
|
||||||
// runner.loadConfigFile('back/jasmine.json');
|
// runner.loadConfigFile('back/jasmine.json');
|
||||||
runner.loadConfig(config);
|
runner.loadConfig(config);
|
||||||
|
|
|
@ -8,16 +8,10 @@ BEGIN
|
||||||
END;
|
END;
|
||||||
|
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO vn.clientCredit(clientFk, amount)
|
|
||||||
SELECT c.id, 0
|
|
||||||
FROM vn.`client` c
|
|
||||||
JOIN vn.payMethod pm ON pm.id = c.payMethodFk
|
|
||||||
WHERE c.credit <> 0 AND pm.`code` = 'card';
|
|
||||||
|
|
||||||
UPDATE vn.`client` c
|
UPDATE vn.`client` c
|
||||||
JOIN vn.payMethod pm ON pm.id = c.payMethodFk
|
JOIN vn.payMethod pm ON pm.id = c.payMethodFk
|
||||||
SET credit = 0
|
SET credit = 0
|
||||||
WHERE pm.`code` = 'card';
|
WHERE pm.`code` = 'card';
|
||||||
|
|
||||||
DROP TEMPORARY TABLE IF EXISTS clientes_credit;
|
DROP TEMPORARY TABLE IF EXISTS clientes_credit;
|
||||||
CREATE TEMPORARY TABLE clientes_credit
|
CREATE TEMPORARY TABLE clientes_credit
|
||||||
|
@ -44,10 +38,6 @@ BEGIN
|
||||||
UPDATE Clientes
|
UPDATE Clientes
|
||||||
JOIN clientes_credit USING(Id_Cliente)
|
JOIN clientes_credit USING(Id_Cliente)
|
||||||
SET Clientes.Credito = newCredit;
|
SET Clientes.Credito = newCredit;
|
||||||
|
|
||||||
INSERT INTO credit(Id_Cliente, amount, Id_Trabajador)
|
|
||||||
SELECT Id_Cliente, newCredit, NULL
|
|
||||||
FROM clientes_credit;
|
|
||||||
|
|
||||||
DROP TEMPORARY TABLE clientes_credit;
|
DROP TEMPORARY TABLE clientes_credit;
|
||||||
COMMIT;
|
COMMIT;
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
CREATE OR REPLACE DEFINER=`root`@`localhost`
|
||||||
|
SQL SECURITY DEFINER
|
||||||
|
VIEW `vn2008`.`credit`
|
||||||
|
AS SELECT `c`.`id` AS `id`,
|
||||||
|
`c`.`clientFk` AS `Id_Cliente`,
|
||||||
|
`c`.`workerFk` AS `Id_Trabajador`,
|
||||||
|
`c`.`amount` AS `amount`,
|
||||||
|
`c`.`created` AS `odbc_date`
|
||||||
|
FROM `vn`.`clientCredit` `c`
|
|
@ -0,0 +1,6 @@
|
||||||
|
CREATE OR REPLACE DEFINER=`root`@`localhost`
|
||||||
|
SQL SECURITY DEFINER
|
||||||
|
VIEW `vn2008`.`credit`AS
|
||||||
|
SELECT 1;
|
||||||
|
|
||||||
|
GRANT SELECT ON TABLE vn2008.credit TO financialBoss;
|
|
@ -0,0 +1 @@
|
||||||
|
DROP TABLE vn.timeControlDevice;
|
|
@ -339,8 +339,9 @@
|
||||||
"No tickets to invoice": "No hay tickets para facturar",
|
"No tickets to invoice": "No hay tickets para facturar",
|
||||||
"This ticket already has a cmr saved": "Este ticket ya tiene un cmr guardado",
|
"This ticket already has a cmr saved": "Este ticket ya tiene un cmr guardado",
|
||||||
"Name should be uppercase": "El nombre debe ir en mayúscula",
|
"Name should be uppercase": "El nombre debe ir en mayúscula",
|
||||||
"Bank entity must be specified": "La entidad bancaria es obligatoria",
|
"Bank entity must be specified": "La entidad bancaria es obligatoria",
|
||||||
"An email is necessary": "Es necesario un email",
|
"An email is necessary": "Es necesario un email",
|
||||||
"You cannot update these fields": "No puedes actualizar estos campos",
|
"You cannot update these fields": "No puedes actualizar estos campos",
|
||||||
"CountryFK cannot be empty": "El país no puede estar vacío"
|
"CountryFK cannot be empty": "El país no puede estar vacío",
|
||||||
|
"Cmr file does not exist": "El archivo del cmr no existe"
|
||||||
}
|
}
|
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
const ParameterizedSQL = require('loopback-connector').ParameterizedSQL;
|
const {ParameterizedSQL} = require('loopback-connector');
|
||||||
|
|
||||||
module.exports = Self => {
|
module.exports = Self => {
|
||||||
Self.remoteMethod('getTickets', {
|
Self.remoteMethod('getTickets', {
|
||||||
|
@ -83,13 +83,15 @@ module.exports = Self => {
|
||||||
|
|
||||||
const where = filter.where;
|
const where = filter.where;
|
||||||
where['r.id'] = filter.id;
|
where['r.id'] = filter.id;
|
||||||
|
where.and = [{or: [
|
||||||
|
{'t.packages': {gt: 0}},
|
||||||
|
{and: [{'ot.code': 'delivery'}, {'tob.observationTypeFk': {neq: null}}]}
|
||||||
|
]}];
|
||||||
|
|
||||||
stmt.merge(conn.makeWhere(filter.where));
|
stmt.merge(conn.makeWhere(filter.where));
|
||||||
stmt.merge(conn.makeGroupBy('t.id'));
|
stmt.merge(conn.makeGroupBy('t.id'));
|
||||||
stmt.merge(conn.makeOrderBy(filter.order));
|
stmt.merge(conn.makeOrderBy(filter.order));
|
||||||
|
|
||||||
const tickets = await conn.executeStmt(stmt, myOptions);
|
return conn.executeStmt(stmt, myOptions);
|
||||||
|
|
||||||
return tickets;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -34,8 +34,7 @@ module.exports = Self => {
|
||||||
const myOptions = {userId: ctx.req.accessToken.userId};
|
const myOptions = {userId: ctx.req.accessToken.userId};
|
||||||
let tx;
|
let tx;
|
||||||
let ticket;
|
let ticket;
|
||||||
let dms;
|
let externalTickets = [];
|
||||||
let gestDocCreated;
|
|
||||||
|
|
||||||
if (typeof options == 'object')
|
if (typeof options == 'object')
|
||||||
Object.assign(myOptions, options);
|
Object.assign(myOptions, options);
|
||||||
|
@ -86,12 +85,11 @@ module.exports = Self => {
|
||||||
contentType: 'image/png',
|
contentType: 'image/png',
|
||||||
hasFile: true
|
hasFile: true
|
||||||
};
|
};
|
||||||
dms = await models.Dms.uploadFile(ctxUploadFile, myOptions);
|
const dms = await models.Dms.uploadFile(ctxUploadFile, myOptions);
|
||||||
gestDocCreated = true;
|
await models.TicketDms.create({ticketFk: ticket.id, dmsFk: dms[0].id}, myOptions);
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
let externalTickets = [];
|
|
||||||
for (const ticketId of tickets) {
|
for (const ticketId of tickets) {
|
||||||
ticket = await models.Ticket.findById(ticketId, {
|
ticket = await models.Ticket.findById(ticketId, {
|
||||||
include: [{
|
include: [{
|
||||||
|
@ -137,9 +135,8 @@ module.exports = Self => {
|
||||||
throw new UserError('Ticket is already signed');
|
throw new UserError('Ticket is already signed');
|
||||||
|
|
||||||
if (location) await setLocation(ticketId);
|
if (location) await setLocation(ticketId);
|
||||||
if (!await hasSignDms(ticketId) && !gestDocCreated)
|
if (!await hasSignDms(ticketId))
|
||||||
await createGestDoc(ticketId);
|
await createGestDoc(ticketId);
|
||||||
await models.TicketDms.create({ticketFk: ticketId, dmsFk: dms[0].id}, myOptions);
|
|
||||||
await ticket.updateAttribute('isSigned', true, myOptions);
|
await ticket.updateAttribute('isSigned', true, myOptions);
|
||||||
|
|
||||||
const deliveryState = await models.State.findOne({
|
const deliveryState = await models.State.findOne({
|
||||||
|
@ -157,11 +154,10 @@ module.exports = Self => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (tx) await tx.commit();
|
if (tx) await tx.commit();
|
||||||
await models.Route.cmrEmail(ctx, externalTickets);
|
|
||||||
return;
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
if (tx) await tx.rollback();
|
if (tx) await tx.rollback();
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
|
await models.Route.cmrEmail(ctx, externalTickets);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue