7336_devToTest #2414
|
@ -5,7 +5,9 @@ All notable changes to this project will be documented in this file.
|
||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
## [24.18.01] - 2024-05-02
|
## [24.20.01] - 2024-05-14
|
||||||
|
|
||||||
|
## [24.18.01] - 2024-05-07
|
||||||
|
|
||||||
## [24.16.01] - 2024-04-18
|
## [24.16.01] - 2024-04-18
|
||||||
|
|
||||||
|
|
|
@ -12,8 +12,8 @@ module.exports = Self => {
|
||||||
http: {
|
http: {
|
||||||
path: `/renewToken`,
|
path: `/renewToken`,
|
||||||
verb: 'POST'
|
verb: 'POST'
|
||||||
}
|
},
|
||||||
});
|
accessScopes: ['DEFAULT', 'read:multimedia']});
|
||||||
|
|
||||||
Self.renewToken = async function(ctx) {
|
Self.renewToken = async function(ctx) {
|
||||||
const {accessToken: token} = ctx.req;
|
const {accessToken: token} = ctx.req;
|
||||||
|
|
|
@ -2617,7 +2617,7 @@ INSERT INTO `vn`.`invoiceInIntrastat` (`invoiceInFk`, `net`, `intrastatFk`, `amo
|
||||||
|
|
||||||
UPDATE `vn`.`invoiceIn`
|
UPDATE `vn`.`invoiceIn`
|
||||||
SET isBooked = TRUE
|
SET isBooked = TRUE
|
||||||
WHERE id IN (2, 5, 7, 8, 9, 10);
|
WHERE id IN (5, 7, 8, 9, 10);
|
||||||
|
|
||||||
DELIMITER $$
|
DELIMITER $$
|
||||||
CREATE PROCEDURE `tmp`.`ticket_recalc`()
|
CREATE PROCEDURE `tmp`.`ticket_recalc`()
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
|
||||||
|
CREATE OR REPLACE TABLE `vn`.`farmingDeliveryNote` (
|
||||||
|
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||||
|
`farmingFk` int(10) unsigned NOT NULL,
|
||||||
|
`deliveryNoteFk` int(11) NOT NULL,
|
||||||
|
`amount` decimal(10,2) DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `farmingDeliveryNoteFk_FK` (`deliveryNoteFk`),
|
||||||
|
KEY `farmingDeliveryNoteFk_FK_1` (`farmingFk`),
|
||||||
|
CONSTRAINT `farmingDeliveryNoteFk_FK` FOREIGN KEY (`deliveryNoteFk`) REFERENCES `deliveryNote` (`id`),
|
||||||
|
CONSTRAINT `farmingDeliveryNoteFk_FK_1` FOREIGN KEY (`farmingFk`) REFERENCES `farming` (`id`)
|
||||||
|
);
|
|
@ -76,6 +76,6 @@ describe('Entry basic data path', () => {
|
||||||
expect(confirmed).toBe('checked');
|
expect(confirmed).toBe('checked');
|
||||||
expect(inventory).toBe('checked');
|
expect(inventory).toBe('checked');
|
||||||
expect(raid).toBe('checked');
|
expect(raid).toBe('checked');
|
||||||
expect(booked).toBe('checked');
|
expect(booked).toBe('unchecked');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import ngModule from '../module';
|
import ngModule from '../module';
|
||||||
|
const TOKEN_MULTIMEDIA = 'vnTokenMultimedia';
|
||||||
|
const TOKEN = 'vnToken';
|
||||||
/**
|
/**
|
||||||
* Saves and loads the token for the current logged in user.
|
* Saves and loads the token for the current logged in user.
|
||||||
*
|
*
|
||||||
|
@ -58,8 +59,8 @@ export default class Token {
|
||||||
}
|
}
|
||||||
|
|
||||||
getStorage(storage) {
|
getStorage(storage) {
|
||||||
this.token = storage.getItem('vnToken');
|
this.token = storage.getItem(TOKEN);
|
||||||
this.tokenMultimedia = storage.getItem('vnTokenMultimedia');
|
this.tokenMultimedia = storage.getItem(TOKEN_MULTIMEDIA);
|
||||||
if (!this.token) return;
|
if (!this.token) return;
|
||||||
const created = storage.getItem('vnTokenCreated');
|
const created = storage.getItem('vnTokenCreated');
|
||||||
this.created = created && new Date(created);
|
this.created = created && new Date(created);
|
||||||
|
@ -67,15 +68,15 @@ export default class Token {
|
||||||
}
|
}
|
||||||
|
|
||||||
setStorage(storage, token, tokenMultimedia, created, ttl) {
|
setStorage(storage, token, tokenMultimedia, created, ttl) {
|
||||||
storage.setItem('vnTokenMultimedia', tokenMultimedia);
|
storage.setItem(TOKEN_MULTIMEDIA, tokenMultimedia);
|
||||||
storage.setItem('vnToken', token);
|
storage.setItem(TOKEN, token);
|
||||||
storage.setItem('vnTokenCreated', created.toJSON());
|
storage.setItem('vnTokenCreated', created.toJSON());
|
||||||
storage.setItem('vnTokenTtl', ttl);
|
storage.setItem('vnTokenTtl', ttl);
|
||||||
}
|
}
|
||||||
|
|
||||||
removeStorage(storage) {
|
removeStorage(storage) {
|
||||||
storage.removeItem('vnToken');
|
storage.removeItem(TOKEN);
|
||||||
storage.removeItem('vnTokenMultimedia');
|
storage.removeItem(TOKEN_MULTIMEDIA);
|
||||||
storage.removeItem('vnTokenCreated');
|
storage.removeItem('vnTokenCreated');
|
||||||
storage.removeItem('vnTokenTtl');
|
storage.removeItem('vnTokenTtl');
|
||||||
}
|
}
|
||||||
|
@ -96,9 +97,9 @@ export default class Token {
|
||||||
this.checking = true;
|
this.checking = true;
|
||||||
const renewPeriod = Math.min(this.ttl, this.renewPeriod) * 1000;
|
const renewPeriod = Math.min(this.ttl, this.renewPeriod) * 1000;
|
||||||
const maxDate = this.created.getTime() + renewPeriod;
|
const maxDate = this.created.getTime() + renewPeriod;
|
||||||
const now = new Date();
|
const now = new Date().getTime();
|
||||||
|
|
||||||
if (now.getTime() <= maxDate) {
|
if (now <= maxDate) {
|
||||||
this.checking = false;
|
this.checking = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -106,7 +107,17 @@ export default class Token {
|
||||||
this.$http.post('VnUsers/renewToken')
|
this.$http.post('VnUsers/renewToken')
|
||||||
.then(res => {
|
.then(res => {
|
||||||
const token = res.data;
|
const token = res.data;
|
||||||
this.set(token.id, now, token.ttl, this.remember);
|
const tokenMultimedia =
|
||||||
|
localStorage.getItem(TOKEN_MULTIMEDIA)
|
||||||
|
?? sessionStorage.getItem(TOKEN_MULTIMEDIA);
|
||||||
|
|
||||||
|
return this.$http.post('VnUsers/renewToken', null, {
|
||||||
|
headers: {Authorization: tokenMultimedia}
|
||||||
|
})
|
||||||
|
.then(({data}) => {
|
||||||
|
const tokenMultimedia = data;
|
||||||
|
this.set(token.id, tokenMultimedia.id, new Date(), token.ttl, this.remember);
|
||||||
|
});
|
||||||
})
|
})
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
this.checking = false;
|
this.checking = false;
|
||||||
|
@ -119,4 +130,4 @@ export default class Token {
|
||||||
}
|
}
|
||||||
Token.$inject = ['vnInterceptor', '$http', '$rootScope'];
|
Token.$inject = ['vnInterceptor', '$http', '$rootScope'];
|
||||||
|
|
||||||
ngModule.service('vnToken', Token);
|
ngModule.service(TOKEN, Token);
|
||||||
|
|
|
@ -158,7 +158,7 @@ describe('InvoiceIn filter()', () => {
|
||||||
|
|
||||||
const result = await models.InvoiceIn.filter(ctx, {}, options);
|
const result = await models.InvoiceIn.filter(ctx, {}, options);
|
||||||
|
|
||||||
expect(result.length).toEqual(4);
|
expect(result.length).toEqual(5);
|
||||||
|
|
||||||
await tx.rollback();
|
await tx.rollback();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
@ -180,7 +180,7 @@ describe('InvoiceIn filter()', () => {
|
||||||
|
|
||||||
const result = await models.InvoiceIn.filter(ctx, {}, options);
|
const result = await models.InvoiceIn.filter(ctx, {}, options);
|
||||||
|
|
||||||
expect(result.length).toEqual(6);
|
expect(result.length).toEqual(5);
|
||||||
expect(result[0].isBooked).toBeTruthy();
|
expect(result[0].isBooked).toBeTruthy();
|
||||||
|
|
||||||
await tx.rollback();
|
await tx.rollback();
|
||||||
|
|
|
@ -33,54 +33,54 @@ module.exports = Self => {
|
||||||
|
|
||||||
const stmt = new ParameterizedSQL(
|
const stmt = new ParameterizedSQL(
|
||||||
`SELECT
|
`SELECT
|
||||||
t.id,
|
t.id,
|
||||||
t.packages,
|
t.packages,
|
||||||
t.warehouseFk,
|
t.warehouseFk,
|
||||||
t.nickname,
|
t.nickname,
|
||||||
t.clientFk,
|
t.clientFk,
|
||||||
t.priority,
|
t.priority,
|
||||||
t.addressFk,
|
t.addressFk,
|
||||||
st.code ticketStateCode,
|
st.code ticketStateCode,
|
||||||
st.name ticketStateName,
|
st.name ticketStateName,
|
||||||
wh.name warehouseName,
|
wh.name warehouseName,
|
||||||
tob.description observationDelivery,
|
tob.description observationDelivery,
|
||||||
tob2.description observationDropOff,
|
tob2.description observationDropOff,
|
||||||
tob2.id,
|
tob2.id observationId,
|
||||||
a.street,
|
a.street,
|
||||||
a.postalCode,
|
a.postalCode,
|
||||||
a.city,
|
a.city,
|
||||||
am.name agencyModeName,
|
am.name agencyModeName,
|
||||||
u.nickname userNickname,
|
u.nickname userNickname,
|
||||||
vn.ticketTotalVolume(t.id) volume,
|
vn.ticketTotalVolume(t.id) volume,
|
||||||
GROUP_CONCAT(DISTINCT i.itemPackingTypeFk ORDER BY i.itemPackingTypeFk) ipt,
|
GROUP_CONCAT(DISTINCT i.itemPackingTypeFk ORDER BY i.itemPackingTypeFk) ipt,
|
||||||
c.phone clientPhone,
|
c.phone clientPhone,
|
||||||
c.mobile clientMobile,
|
c.mobile clientMobile,
|
||||||
a.phone addressPhone,
|
a.phone addressPhone,
|
||||||
a.mobile addressMobile,
|
a.mobile addressMobile,
|
||||||
a.longitude,
|
a.longitude,
|
||||||
a.latitude,
|
a.latitude,
|
||||||
wm.mediaValue salePersonPhone,
|
wm.mediaValue salePersonPhone,
|
||||||
t.cmrFk,
|
t.cmrFk,
|
||||||
t.isSigned signed
|
t.isSigned signed
|
||||||
FROM vn.route r
|
FROM vn.route r
|
||||||
JOIN ticket t ON t.routeFk = r.id
|
JOIN ticket t ON t.routeFk = r.id
|
||||||
JOIN client c ON t.clientFk = c.id
|
JOIN client c ON t.clientFk = c.id
|
||||||
LEFT JOIN vn.sale s ON s.ticketFk = t.id
|
LEFT JOIN vn.sale s ON s.ticketFk = t.id
|
||||||
LEFT JOIN vn.item i ON i.id = s.itemFk
|
LEFT JOIN vn.item i ON i.id = s.itemFk
|
||||||
LEFT JOIN ticketState ts ON ts.ticketFk = t.id
|
LEFT JOIN ticketState ts ON ts.ticketFk = t.id
|
||||||
LEFT JOIN state st ON st.id = ts.stateFk
|
LEFT JOIN state st ON st.id = ts.stateFk
|
||||||
LEFT JOIN warehouse wh ON wh.id = t.warehouseFk
|
LEFT JOIN warehouse wh ON wh.id = t.warehouseFk
|
||||||
LEFT JOIN observationType ot ON ot.code = 'delivery'
|
LEFT JOIN observationType ot ON ot.code = 'delivery'
|
||||||
LEFT JOIN ticketObservation tob ON tob.ticketFk = t.id
|
LEFT JOIN ticketObservation tob ON tob.ticketFk = t.id
|
||||||
AND tob.observationTypeFk = ot.id
|
AND tob.observationTypeFk = ot.id
|
||||||
LEFT JOIN observationType ot2 ON ot2.code = 'dropOff'
|
LEFT JOIN observationType ot2 ON ot2.code = 'dropOff'
|
||||||
LEFT JOIN ticketObservation tob2 ON tob2.ticketFk = t.id
|
LEFT JOIN ticketObservation tob2 ON tob2.ticketFk = t.id
|
||||||
AND tob2.observationTypeFk = ot2.id
|
AND tob2.observationTypeFk = ot2.id
|
||||||
LEFT JOIN address a ON a.id = t.addressFk
|
LEFT JOIN address a ON a.id = t.addressFk
|
||||||
LEFT JOIN agencyMode am ON am.id = t.agencyModeFk
|
LEFT JOIN agencyMode am ON am.id = t.agencyModeFk
|
||||||
LEFT JOIN account.user u ON u.id = r.workerFk
|
LEFT JOIN account.user u ON u.id = r.workerFk
|
||||||
LEFT JOIN vehicle v ON v.id = r.vehicleFk
|
LEFT JOIN vehicle v ON v.id = r.vehicleFk
|
||||||
LEFT JOIN workerMedia wm ON wm.workerFk = c.salesPersonFk`
|
LEFT JOIN workerMedia wm ON wm.workerFk = c.salesPersonFk`
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!filter.where) filter.where = {};
|
if (!filter.where) filter.where = {};
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "salix-back",
|
"name": "salix-back",
|
||||||
"version": "24.18.0",
|
"version": "24.20.0",
|
||||||
"author": "Verdnatura Levante SL",
|
"author": "Verdnatura Levante SL",
|
||||||
"description": "Salix backend",
|
"description": "Salix backend",
|
||||||
"license": "GPL-3.0",
|
"license": "GPL-3.0",
|
||||||
|
|
Loading…
Reference in New Issue