#7108 - exchange-rate #2295
|
@ -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/),
|
||||
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,7 +24,7 @@ node {
|
|||
FROM_GIT = env.JOB_NAME.startsWith('gitea/')
|
||||
RUN_TESTS = !PROTECTED_BRANCH && FROM_GIT
|
||||
RUN_BUILD = PROTECTED_BRANCH && FROM_GIT
|
||||
env.DEBUG = 'strong-remoting:shared-method'
|
||||
// env.DEBUG = 'strong-remoting:shared-method'
|
||||
// https://www.jenkins.io/doc/book/pipeline/jenkinsfile/#using-environment-variables
|
||||
echo "NODE_NAME: ${env.NODE_NAME}"
|
||||
echo "WORKSPACE: ${env.WORKSPACE}"
|
||||
|
|
|
@ -30,7 +30,7 @@ module.exports = Self => {
|
|||
path: `/:id/downloadFile`,
|
||||
verb: 'GET'
|
||||
},
|
||||
accessScopes: ['read:multimedia']
|
||||
accessScopes: ['DEFAULT', 'read:multimedia']
|
||||
});
|
||||
|
||||
Self.downloadFile = async function(ctx, id) {
|
||||
|
|
|
@ -43,7 +43,7 @@ module.exports = Self => {
|
|||
path: `/:id/download`,
|
||||
verb: 'GET'
|
||||
},
|
||||
accessScopes: ['read:multimedia']
|
||||
accessScopes: ['DEFAULT', 'read:multimedia']
|
||||
});
|
||||
|
||||
Self.download = async function(id, fileCabinet, filter) {
|
||||
|
|
|
@ -48,7 +48,7 @@ module.exports = Self => {
|
|||
path: `/:collection/:size/:id/download`,
|
||||
verb: 'GET'
|
||||
},
|
||||
accessScopes: ['read:multimedia']
|
||||
accessScopes: ['DEFAULT', 'read:multimedia']
|
||||
});
|
||||
|
||||
Self.download = async function(ctx, collection, size, id) {
|
||||
|
|
|
@ -12,8 +12,8 @@ module.exports = Self => {
|
|||
http: {
|
||||
path: `/renewToken`,
|
||||
verb: 'POST'
|
||||
}
|
||||
});
|
||||
},
|
||||
accessScopes: ['DEFAULT', 'read:multimedia']});
|
||||
|
||||
Self.renewToken = async function(ctx) {
|
||||
const {accessToken: token} = ctx.req;
|
||||
|
|
|
@ -28,6 +28,9 @@ describe('Renew Token', () => {
|
|||
});
|
||||
|
||||
it('should renew token', async() => {
|
||||
const {courtesyTime} = await models.AccessTokenConfig.findOne({
|
||||
fields: ['courtesyTime']
|
||||
});
|
||||
const mockDate = new Date(startingTime + 26600000);
|
||||
jasmine.clock().mockDate(mockDate);
|
||||
const {id} = await models.VnUser.renewToken(ctx);
|
||||
|
@ -35,7 +38,7 @@ describe('Renew Token', () => {
|
|||
expect(id).not.toEqual(ctx.req.accessToken.id);
|
||||
|
||||
await models.VnUser.logout(ctx.req.accessToken.id);
|
||||
jasmine.clock().tick(70 * 1000);
|
||||
jasmine.clock().tick((courtesyTime + 10) * 1000);
|
||||
let tokenNotExists;
|
||||
try {
|
||||
tokenNotExists = await models.AccessToken.findById(ctx.req.accessToken.id);
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
# EditorConfig helps developers define and maintain consistent
|
||||
# coding styles between different editors and IDEs
|
||||
# http://editorconfig.org
|
||||
|
||||
root = true
|
||||
|
||||
[*]
|
||||
indent_style = tab
|
||||
indent_size = 4
|
||||
end_of_line = lf
|
||||
charset = utf-8
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
|
@ -528,7 +528,8 @@ INSERT INTO `vn`.`observationType`(`id`,`description`, `code`)
|
|||
(4, 'SalesPerson', 'salesPerson'),
|
||||
(5, 'Administrative', 'administrative'),
|
||||
(6, 'Weight', 'weight'),
|
||||
(7, 'InvoiceOut', 'invoiceOut');
|
||||
(7, 'InvoiceOut', 'invoiceOut'),
|
||||
(8, 'DropOff', 'dropOff');
|
||||
|
||||
INSERT INTO `vn`.`addressObservation`(`id`,`addressFk`,`observationTypeFk`,`description`)
|
||||
VALUES
|
||||
|
@ -2617,15 +2618,31 @@ INSERT INTO `vn`.`invoiceInIntrastat` (`invoiceInFk`, `net`, `intrastatFk`, `amo
|
|||
|
||||
UPDATE `vn`.`invoiceIn`
|
||||
SET isBooked = TRUE
|
||||
WHERE id IN (2, 5, 7, 8, 9, 10);
|
||||
WHERE id IN (5, 7, 8, 9, 10);
|
||||
|
||||
INSERT INTO `vn`.`ticketRecalc`(`ticketFk`)
|
||||
SELECT t.id
|
||||
FROM vn.ticket t
|
||||
LEFT JOIN vn.ticketRecalc tr ON tr.ticketFk = t.id
|
||||
WHERE tr.ticketFk IS NULL;
|
||||
DELIMITER $$
|
||||
CREATE PROCEDURE `tmp`.`ticket_recalc`()
|
||||
BEGIN
|
||||
DECLARE vDone BOOL;
|
||||
DECLARE vTicketFk INT;
|
||||
|
||||
CALL `vn`.`ticket_doRecalc`();
|
||||
DECLARE cTickets CURSOR FOR SELECT id FROM vn.ticket;
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND
|
||||
SET vDone = TRUE;
|
||||
|
||||
OPEN cTickets;
|
||||
myLoop: LOOP
|
||||
SET vDone = FALSE;
|
||||
FETCH cTickets INTO vTicketFk;
|
||||
IF vDone THEN LEAVE myLoop; END IF;
|
||||
CALL vn.ticket_recalc(vTicketFk, NULL);
|
||||
END LOOP;
|
||||
CLOSE cTickets;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
||||
CALL tmp.ticket_recalc;
|
||||
DROP PROCEDURE tmp.ticket_recalc;
|
||||
|
||||
UPDATE `vn`.`ticket`
|
||||
SET refFk = 'T1111111'
|
||||
|
|
|
@ -92,12 +92,12 @@ BEGIN
|
|||
UPDATE bi.Greuge_Evolution ge
|
||||
JOIN (
|
||||
SELECT cs.Id_Cliente, sum(Valor * Cantidad) as Importe
|
||||
FROM vn2008.Tickets t
|
||||
JOIN vn2008.Consignatarios cs on cs.Id_Consigna = t.Id_Consigna
|
||||
JOIN vn2008.Movimientos m on m.Id_Ticket = t.Id_Ticket
|
||||
FROM vn.ticket t
|
||||
JOIN vn2008.Consignatarios cs on cs.Id_Consigna = t.addressFk
|
||||
JOIN vn2008.Movimientos m on m.Id_Ticket = t.id
|
||||
JOIN vn2008.Movimientos_componentes mc on mc.Id_Movimiento = m.Id_Movimiento
|
||||
WHERE t.Fecha >= datFEC
|
||||
AND t.Fecha < datFEC_TOMORROW
|
||||
WHERE t.shipped >= datFEC
|
||||
AND t.shipped < datFEC_TOMORROW
|
||||
AND mc.Id_Componente = 17 -- Recobro
|
||||
GROUP BY cs.Id_Cliente
|
||||
) sub using(Id_Cliente)
|
||||
|
|
|
@ -42,12 +42,12 @@ BEGIN
|
|||
LEFT JOIN vn2008.Trabajadores tr2 ON tr2.Id_Trabajador = tp.Id_Trabajador
|
||||
JOIN vn2008.time tm ON tm.date = bt.fecha
|
||||
JOIN vn2008.Movimientos m ON m.Id_Movimiento = bt.Id_Movimiento
|
||||
LEFT JOIN vn2008.Tickets t ON t.Id_Ticket = m.Id_Ticket
|
||||
JOIN vn2008.Agencias a ON a.Id_Agencia = t.Id_Agencia
|
||||
LEFT JOIN vn.ticket t ON t.id = m.Id_Ticket
|
||||
JOIN vn2008.Agencias a ON a.Id_Agencia = t.agencyModeFk
|
||||
LEFT JOIN vn.deliveryMethod dm ON dm.id = a.Vista
|
||||
LEFT JOIN vn2008.Consignatarios cs ON cs.Id_Consigna = t.Id_Consigna
|
||||
LEFT JOIN vn2008.Consignatarios cs ON cs.Id_Consigna = t.addressFk
|
||||
LEFT JOIN vn2008.province p ON p.province_id = cs.province_id
|
||||
LEFT JOIN vn.warehouse w ON w.id = t.warehouse_id
|
||||
LEFT JOIN vn.warehouse w ON w.id = t.warehouseFk
|
||||
WHERE bt.fecha >= vLastMonth AND r.mercancia;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
|
|
@ -59,18 +59,18 @@ BEGIN
|
|||
DROP TEMPORARY TABLE IF EXISTS tmp.ticket_list;
|
||||
CREATE TEMPORARY TABLE tmp.ticket_list
|
||||
(PRIMARY KEY (Id_Ticket))
|
||||
SELECT DISTINCT t.Id_Ticket
|
||||
SELECT DISTINCT t.id Id_Ticket
|
||||
FROM vn2008.Movimientos_componentes mc
|
||||
JOIN vn2008.Movimientos m ON mc.Id_Movimiento = m.Id_Movimiento
|
||||
JOIN vn2008.Tickets t ON t.Id_Ticket = m.Id_Ticket
|
||||
JOIN vn2008.Tickets_state ts ON ts.Id_Ticket = t.Id_Ticket
|
||||
JOIN vn.ticketTracking tt ON tt.id = ts.inter_id
|
||||
JOIN vn2008.state s ON s.id = tt.stateFk
|
||||
JOIN vn.ticket t ON t.id = m.Id_Ticket
|
||||
JOIN vn.ticketLastState ts ON ts.ticketFk = t.id
|
||||
JOIN vn.ticketTracking tt ON tt.id = ts.ticketTrackingFk
|
||||
JOIN vn.state s ON s.id = tt.stateFk
|
||||
WHERE mc.Id_Componente = 17
|
||||
AND mc.greuge = 0
|
||||
AND t.Fecha >= '2016-10-01'
|
||||
AND t.Fecha < util.VN_CURDATE()
|
||||
AND s.alert_level >= 3;
|
||||
AND t.shipped >= '2016-10-01'
|
||||
AND t.shipped < util.VN_CURDATE()
|
||||
AND s.alertLevel >= 3;
|
||||
|
||||
DELETE g.*
|
||||
FROM vn.greuge g
|
||||
|
@ -79,18 +79,18 @@ BEGIN
|
|||
|
||||
INSERT INTO vn.greuge(clientFk, description, amount,shipped,
|
||||
greugeTypeFk, ticketFk)
|
||||
SELECT Id_Cliente
|
||||
SELECT t.clientFk
|
||||
,concat('recobro ', m.Id_Ticket), - round(SUM(mc.Valor*Cantidad),2)
|
||||
AS dif
|
||||
,date(t.Fecha)
|
||||
,date(t.shipped)
|
||||
, 2
|
||||
,tt.Id_Ticket
|
||||
FROM vn2008.Movimientos m
|
||||
JOIN vn2008.Tickets t ON t.Id_Ticket = m.Id_Ticket
|
||||
JOIN tmp.ticket_list tt ON tt.Id_Ticket = t.Id_Ticket
|
||||
JOIN vn.ticket t ON t.id = m.Id_Ticket
|
||||
JOIN tmp.ticket_list tt ON tt.Id_Ticket = t.id
|
||||
JOIN vn2008.Movimientos_componentes mc
|
||||
ON mc.Id_Movimiento = m.Id_Movimiento AND mc.Id_Componente = 17
|
||||
GROUP BY t.Id_Ticket
|
||||
GROUP BY t.id
|
||||
HAVING ABS(dif) > 1;
|
||||
|
||||
UPDATE vn2008.Movimientos_componentes mc
|
||||
|
|
|
@ -15,17 +15,17 @@ BEGIN
|
|||
IF lastCOMP < vMaxPeriod - 3 AND vMaxWeek > 3 THEN
|
||||
|
||||
REPLACE vn2008.Comparativa(Periodo, Id_Article, warehouse_id, Cantidad,price)
|
||||
SELECT tm.period as Periodo, m.Id_Article, t.warehouse_id, sum(m.Cantidad), sum(v.importe)
|
||||
SELECT tm.period as Periodo, m.Id_Article, t.warehouseFk, sum(m.Cantidad), sum(v.importe)
|
||||
FROM bs.ventas v
|
||||
JOIN vn2008.time tm ON tm.date = v.fecha
|
||||
JOIN vn2008.Movimientos m ON m.Id_Movimiento = v.Id_Movimiento
|
||||
JOIN vn2008.Tipos tp ON tp.tipo_id = v.tipo_id
|
||||
JOIN vn2008.reinos r ON r.id = tp.reino_id
|
||||
JOIN vn2008.Tickets t ON t.Id_Ticket = m.Id_Ticket
|
||||
JOIN vn.ticket t ON t.id = m.Id_Ticket
|
||||
WHERE tm.period BETWEEN lastCOMP AND vMaxPeriod - 3
|
||||
AND t.Id_Cliente NOT IN(400,200)
|
||||
AND t.warehouse_id NOT IN (0,13)
|
||||
GROUP BY m.Id_Article, Periodo, t.warehouse_id;
|
||||
AND t.clientFk NOT IN(400,200)
|
||||
AND t.warehouseFk NOT IN (0,13)
|
||||
GROUP BY m.Id_Article, Periodo, t.warehouseFk;
|
||||
|
||||
END IF;
|
||||
END$$
|
||||
|
|
|
@ -25,16 +25,16 @@ BEGIN
|
|||
WHERE Periodo BETWEEN periodStart AND periodEnd;
|
||||
|
||||
INSERT INTO vn2008.Comparativa(Periodo, Id_Article, warehouse_id, Cantidad,price)
|
||||
SELECT tm.period as Periodo, m.Id_Article, t.warehouse_id, sum(m.Cantidad), sum(v.importe)
|
||||
SELECT tm.period as Periodo, m.Id_Article, t.warehouseFk, sum(m.Cantidad), sum(v.importe)
|
||||
FROM bs.ventas v
|
||||
JOIN vn2008.time tm ON tm.date = v.fecha
|
||||
JOIN vn2008.Movimientos m ON m.Id_Movimiento = v.Id_Movimiento
|
||||
JOIN vn2008.Tipos tp ON tp.tipo_id = v.tipo_id
|
||||
JOIN vn2008.reinos r ON r.id = tp.reino_id
|
||||
JOIN vn2008.Tickets t ON t.Id_Ticket = m.Id_Ticket
|
||||
JOIN vn.ticket t ON t.id = m.Id_Ticket
|
||||
WHERE tm.period BETWEEN periodStart AND periodEnd
|
||||
AND t.Id_Cliente NOT IN(400,200)
|
||||
AND t.warehouse_id NOT IN (0,13)
|
||||
GROUP BY m.Id_Article, Periodo, t.warehouse_id;
|
||||
AND t.clientFk NOT IN(400,200)
|
||||
AND t.warehouseFk NOT IN (0,13)
|
||||
GROUP BY m.Id_Article, Periodo, t.warehouseFk;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
|
|
@ -11,13 +11,13 @@ AS SELECT `time`.`year` AS `year`,
|
|||
FROM (
|
||||
(
|
||||
(
|
||||
`vn2008`.`Tickets` `t`
|
||||
JOIN `bi`.`f_tvc` ON(`t`.`Id_Ticket` = `bi`.`f_tvc`.`Id_Ticket`)
|
||||
`vn`.`ticket` `t`
|
||||
JOIN `bi`.`f_tvc` ON(`t`.`id` = `bi`.`f_tvc`.`Id_Ticket`)
|
||||
)
|
||||
JOIN `vn2008`.`Movimientos` `m` ON(`t`.`Id_Ticket` = `m`.`Id_Ticket`)
|
||||
JOIN `vn2008`.`Movimientos` `m` ON(`t`.`id` = `m`.`Id_Ticket`)
|
||||
)
|
||||
JOIN `vn2008`.`time` ON(`time`.`date` = cast(`t`.`Fecha` AS date))
|
||||
JOIN `vn2008`.`time` ON(`time`.`date` = cast(`t`.`shipped` AS date))
|
||||
)
|
||||
WHERE `t`.`Fecha` >= '2014-01-01'
|
||||
WHERE `t`.`shipped` >= '2014-01-01'
|
||||
GROUP BY `time`.`year`,
|
||||
`time`.`month`
|
||||
|
|
|
@ -70,23 +70,23 @@ BEGIN
|
|||
AND (v.fecha BETWEEN TIMESTAMPADD(DAY, - DAY(vDate) + 1, vDate) AND TIMESTAMPADD(DAY, - 1, vDate))
|
||||
GROUP BY Id_Cliente) mes_actual ON mes_actual.Id_Cliente = c.Id_Cliente
|
||||
LEFT JOIN
|
||||
(SELECT t.Id_Cliente, SUM(m.preu * m.Cantidad * (1 - m.Descuento / 100)) futur
|
||||
FROM vn2008.Tickets t
|
||||
JOIN vn2008.Clientes c ON c.Id_Cliente = t.Id_Cliente
|
||||
JOIN vn2008.Movimientos m ON m.Id_Ticket = t.Id_Ticket
|
||||
(SELECT t.clientFk Id_Cliente, SUM(m.preu * m.Cantidad * (1 - m.Descuento / 100)) futur
|
||||
FROM vn.ticket t
|
||||
JOIN vn2008.Clientes c ON c.Id_Cliente = t.clientFk
|
||||
JOIN vn2008.Movimientos m ON m.Id_Ticket = t.id
|
||||
LEFT JOIN vn2008.Trabajadores tr ON c.Id_Trabajador = tr.Id_Trabajador
|
||||
WHERE
|
||||
(c.Id_Trabajador = vWorker OR tr.boss = vWorker)
|
||||
AND t.Fecha BETWEEN vDate AND util.dayEnd(LAST_DAY(vDate))
|
||||
AND t.shipped BETWEEN vDate AND util.dayEnd(LAST_DAY(vDate))
|
||||
GROUP BY Id_Cliente) f ON c.Id_Cliente = f.Id_Cliente
|
||||
LEFT JOIN
|
||||
(SELECT MAX(t.Fecha) LastTicket, c.Id_Cliente
|
||||
FROM vn2008.Tickets t
|
||||
JOIN vn2008.Clientes c ON c.Id_cliente = t.Id_Cliente
|
||||
(SELECT MAX(t.shipped) LastTicket, c.Id_Cliente
|
||||
FROM vn.ticket t
|
||||
JOIN vn2008.Clientes c ON c.Id_cliente = t.clientFk
|
||||
LEFT JOIN vn2008.Trabajadores tr ON c.Id_Trabajador = tr.Id_Trabajador
|
||||
WHERE
|
||||
(c.Id_Trabajador = vWorker OR tr.boss = vWorker)
|
||||
GROUP BY t.Id_Cliente) LastTicket ON LastTicket.Id_Cliente = c.Id_Cliente
|
||||
GROUP BY t.clientFk) LastTicket ON LastTicket.Id_Cliente = c.Id_Cliente
|
||||
LEFT JOIN
|
||||
(
|
||||
SELECT SUM(importe) peso, c.Id_Cliente
|
||||
|
|
|
@ -68,13 +68,13 @@ BEGIN
|
|||
FROM
|
||||
(
|
||||
SELECT cs.Id_Cliente, Cantidad * Valor as mana
|
||||
FROM vn2008.Tickets t
|
||||
FROM vn.ticket t
|
||||
JOIN vn2008.Consignatarios cs using(Id_Consigna)
|
||||
JOIN vn2008.Movimientos m on m.Id_Ticket = t.Id_Ticket
|
||||
JOIN vn2008.Movimientos m on m.Id_Ticket = t.id
|
||||
JOIN vn2008.Movimientos_componentes mc on mc.Id_Movimiento = m.Id_Movimiento
|
||||
WHERE Id_Componente IN (vManaAutoId, vManaId, vClaimManaId)
|
||||
AND t.Fecha > vFromDated
|
||||
AND date(t.Fecha) <= vToDated
|
||||
AND t.shipped > vFromDated
|
||||
AND date(t.shipped) <= vToDated
|
||||
UNION ALL
|
||||
SELECT r.Id_Cliente, - Entregado
|
||||
FROM vn2008.Recibos r
|
||||
|
|
|
@ -19,11 +19,11 @@ BEGIN
|
|||
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.ticket_list;
|
||||
CREATE TEMPORARY TABLE tmp.ticket_list
|
||||
(PRIMARY KEY (Id_Ticket))
|
||||
(PRIMARY KEY (id))
|
||||
ENGINE = MEMORY
|
||||
SELECT Id_Ticket
|
||||
FROM vn2008.Tickets t
|
||||
JOIN vn.invoiceOut io ON io.`ref` = t.Factura
|
||||
SELECT t.id
|
||||
FROM vn.ticket t
|
||||
JOIN vn.invoiceOut io ON io.`ref` = t.refFk
|
||||
WHERE year(io.issued) = vYear
|
||||
AND month(io.issued) = vMonth;
|
||||
|
||||
|
@ -46,7 +46,7 @@ BEGIN
|
|||
) as grupo
|
||||
, tp.reino_id
|
||||
, a.tipo_id
|
||||
, t.empresa_id
|
||||
, t.companyFk
|
||||
, a.expenseFk
|
||||
+ IF(e.empresa_grupo = e2.empresa_grupo
|
||||
,1
|
||||
|
@ -54,19 +54,19 @@ BEGIN
|
|||
) * 100000
|
||||
+ tp.reino_id * 1000 as Gasto
|
||||
FROM vn2008.Movimientos m
|
||||
JOIN vn2008.Tickets t on t.Id_Ticket = m.Id_Ticket
|
||||
JOIN vn2008.Consignatarios cs on cs.Id_Consigna = t.Id_Consigna
|
||||
JOIN vn.ticket t ON t.id = m.Id_Ticket
|
||||
JOIN vn2008.Consignatarios cs on cs.Id_Consigna = t.addressFk
|
||||
JOIN vn2008.Clientes c on c.Id_Cliente = cs.Id_Cliente
|
||||
JOIN tmp.ticket_list tt on tt.Id_Ticket = t.Id_Ticket
|
||||
JOIN tmp.ticket_list tt on tt.id = t.id
|
||||
JOIN vn2008.Articles a on m.Id_Article = a.Id_Article
|
||||
JOIN vn2008.empresa e on e.id = t.empresa_id
|
||||
JOIN vn2008.empresa e on e.id = t.companyFk
|
||||
LEFT JOIN vn2008.empresa e2 on e2.Id_Cliente = c.Id_Cliente
|
||||
JOIN vn2008.Tipos tp on tp.tipo_id = a.tipo_id
|
||||
WHERE Cantidad <> 0
|
||||
AND Preu <> 0
|
||||
AND m.Descuento <> 100
|
||||
AND a.tipo_id != TIPO_PATRIMONIAL
|
||||
GROUP BY grupo, reino_id, tipo_id, empresa_id, Gasto;
|
||||
GROUP BY grupo, reino_id, tipo_id, companyFk, Gasto;
|
||||
|
||||
INSERT INTO bs.ventas_contables(year
|
||||
, month
|
||||
|
@ -92,7 +92,7 @@ BEGIN
|
|||
JOIN vn.ticket t ON ts.ticketFk = t.id
|
||||
JOIN vn.address a on a.id = t.addressFk
|
||||
JOIN vn.client cl on cl.id = a.clientFk
|
||||
JOIN tmp.ticket_list tt on tt.Id_Ticket = t.id
|
||||
JOIN tmp.ticket_list tt on tt.id = t.id
|
||||
JOIN vn.company c on c.id = t.companyFk
|
||||
LEFT JOIN vn.company c2 on c2.clientFk = cl.id
|
||||
GROUP BY grupo, t.companyFk ;
|
||||
|
|
|
@ -10,36 +10,36 @@ BEGIN
|
|||
DROP TEMPORARY TABLE IF EXISTS tmp.ticket_list;
|
||||
|
||||
CREATE TEMPORARY TABLE tmp.ticket_list
|
||||
(PRIMARY KEY (Id_Ticket))
|
||||
SELECT Id_Ticket
|
||||
FROM vn2008.Tickets t
|
||||
JOIN vn.invoiceOut io ON io.id = t.Factura
|
||||
(PRIMARY KEY (id))
|
||||
SELECT t.id
|
||||
FROM vn.ticket t
|
||||
JOIN vn.invoiceOut io ON io.id = t.refFk
|
||||
WHERE year(io.issued) = vYear
|
||||
AND month(io.issued) = vMonth;
|
||||
|
||||
SELECT vYear Año,
|
||||
vMonth Mes,
|
||||
t.Id_Cliente,
|
||||
t.clientFk Id_Cliente,
|
||||
round(sum(Cantidad * Preu * (100 - m.Descuento)/100)) Venta,
|
||||
IF(e.empresa_grupo = e2.empresa_grupo,
|
||||
1,
|
||||
IF(e2.empresa_grupo,2,0))
|
||||
AS grupo,
|
||||
t.empresa_id empresa
|
||||
t.companyFk empresa
|
||||
FROM vn2008.Movimientos m
|
||||
JOIN vn2008.Tickets t ON t.Id_Ticket = m.Id_Ticket
|
||||
JOIN vn2008.Consignatarios cs ON cs.Id_Consigna = t.Id_Consigna
|
||||
JOIN vn.ticket t ON t.id = m.Id_Ticket
|
||||
JOIN vn2008.Consignatarios cs ON cs.Id_Consigna = t.addressFk
|
||||
JOIN vn2008.Clientes c ON c.Id_Cliente = cs.Id_Cliente
|
||||
JOIN tmp.ticket_list tt ON tt.Id_Ticket = t.Id_Ticket
|
||||
JOIN tmp.ticket_list tt ON tt.id = t.id
|
||||
JOIN vn2008.Articles a ON m.Id_Article = a.Id_Article
|
||||
JOIN vn2008.empresa e ON e.id = t.empresa_id
|
||||
JOIN vn2008.empresa e ON e.id = t.companyFk
|
||||
LEFT JOIN vn2008.empresa e2 ON e2.Id_Cliente = c.Id_Cliente
|
||||
JOIN vn2008.Tipos tp ON tp.tipo_id = a.tipo_id
|
||||
WHERE Cantidad <> 0
|
||||
AND Preu <> 0
|
||||
AND m.Descuento <> 100
|
||||
AND a.tipo_id != 188
|
||||
GROUP BY t.Id_Cliente, grupo,t.empresa_id;
|
||||
GROUP BY t.clientFk, grupo,t.companyFk;
|
||||
|
||||
DROP TEMPORARY TABLE tmp.ticket_list;
|
||||
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` EVENT `hedera`.`order_doRecalc`
|
||||
ON SCHEDULE EVERY 10 SECOND
|
||||
STARTS '2019-08-29 14:18:04.000'
|
||||
ON COMPLETION PRESERVE
|
||||
DISABLE
|
||||
DO CALL order_doRecalc$$
|
||||
DELIMITER ;
|
|
@ -1,53 +0,0 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `hedera`.`order_doRecalc`()
|
||||
proc: BEGIN
|
||||
/**
|
||||
* Recalculates modified orders.
|
||||
*/
|
||||
DECLARE vDone BOOL;
|
||||
DECLARE vOrderFk INT;
|
||||
|
||||
DECLARE cCur CURSOR FOR
|
||||
SELECT DISTINCT orderFk FROM tOrder;
|
||||
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND
|
||||
SET vDone = TRUE;
|
||||
|
||||
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
|
||||
BEGIN
|
||||
DO RELEASE_LOCK('hedera.order_doRecalc');
|
||||
ROLLBACK;
|
||||
RESIGNAL;
|
||||
END;
|
||||
|
||||
IF !GET_LOCK('hedera.order_doRecalc', 0) THEN
|
||||
LEAVE proc;
|
||||
END IF;
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS tOrder;
|
||||
CREATE TEMPORARY TABLE tOrder
|
||||
ENGINE = MEMORY
|
||||
SELECT id, orderFk FROM orderRecalc;
|
||||
|
||||
OPEN cCur;
|
||||
|
||||
myLoop: LOOP
|
||||
SET vDone = FALSE;
|
||||
FETCH cCur INTO vOrderFk;
|
||||
|
||||
IF vDone THEN
|
||||
LEAVE myLoop;
|
||||
END IF;
|
||||
|
||||
CALL order_recalc(vOrderFk);
|
||||
END LOOP;
|
||||
|
||||
CLOSE cCur;
|
||||
|
||||
DELETE o FROM orderRecalc o JOIN tOrder t ON t.id = o.id;
|
||||
|
||||
DROP TEMPORARY TABLE tOrder;
|
||||
|
||||
DO RELEASE_LOCK('hedera.order_doRecalc');
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -1,16 +0,0 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `hedera`.`order_requestRecalc`(vSelf INT)
|
||||
proc: BEGIN
|
||||
/**
|
||||
* Adds a request to recalculate the order total.
|
||||
*
|
||||
* @param vSelf The order identifier
|
||||
*/
|
||||
IF vSelf IS NULL THEN
|
||||
LEAVE proc;
|
||||
END IF;
|
||||
|
||||
-- #4409 Disable order recalc
|
||||
-- INSERT INTO orderRecalc SET orderFk = vSelf;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -1,9 +0,0 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `hedera`.`orderRow_afterDelete`
|
||||
AFTER DELETE ON `orderRow`
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
CALL stock.log_add('orderRow', NULL, OLD.id);
|
||||
CALL order_requestRecalc(OLD.orderFk);
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -1,9 +0,0 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `hedera`.`orderRow_afterInsert`
|
||||
AFTER INSERT ON `orderRow`
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
CALL stock.log_add('orderRow', NEW.id, NULL);
|
||||
CALL order_requestRecalc(NEW.orderFk);
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -1,10 +0,0 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `hedera`.`orderRow_afterUpdate`
|
||||
AFTER UPDATE ON `orderRow`
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
CALL stock.log_add('orderRow', NEW.id, OLD.id);
|
||||
CALL order_requestRecalc(OLD.orderFk);
|
||||
CALL order_requestRecalc(NEW.orderFk);
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -3,14 +3,6 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `hedera`.`order_afterUpdate
|
|||
AFTER UPDATE ON `order`
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
CALL stock.log_add('order', NEW.id, OLD.id);
|
||||
|
||||
IF !(OLD.address_id <=> NEW.address_id)
|
||||
OR !(OLD.company_id <=> NEW.company_id)
|
||||
OR !(OLD.customer_id <=> NEW.customer_id) THEN
|
||||
CALL order_requestRecalc(NEW.id);
|
||||
END IF;
|
||||
|
||||
IF !(OLD.address_id <=> NEW.address_id) AND NEW.address_id = 2850 THEN
|
||||
-- Fallo que se actualiza no se sabe como tickets en este cliente
|
||||
CALL vn.mail_insert(
|
||||
|
|
|
@ -43,7 +43,7 @@ BEGIN
|
|||
WHERE sub.amountTaxableBase<>sub2.amountTaxableBase
|
||||
AND sub.amountTaxableBase/2 <> sub2.amountTaxableBase
|
||||
UNION ALL
|
||||
SELECT CONCAT('- Factura Duplicada: ', mc.Asiento)
|
||||
SELECT CONCAT('- Factura Duplicada: ', accountingEntryFk)
|
||||
FROM accountingEntryError
|
||||
)sub;
|
||||
|
||||
|
|
|
@ -1,21 +0,0 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `stock`.`log_add`(IN `vTableName` VARCHAR(255), IN `vNewId` VARCHAR(255), IN `vOldId` VARCHAR(255))
|
||||
proc: BEGIN
|
||||
-- XXX: Disabled while testing
|
||||
LEAVE proc;
|
||||
|
||||
IF vOldId IS NOT NULL AND !(vOldId <=> vNewId) THEN
|
||||
INSERT IGNORE INTO `log` SET
|
||||
tableName = vTableName,
|
||||
tableId = vOldId,
|
||||
operation = 'delete';
|
||||
END IF;
|
||||
|
||||
IF vNewId IS NOT NULL THEN
|
||||
INSERT IGNORE INTO `log` SET
|
||||
tableName = vTableName,
|
||||
tableId = vNewId,
|
||||
operation = 'insert';
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -1,6 +1,7 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `util`.`binlogQueue_getDelay`(vCode VARCHAR(255))
|
||||
RETURNS BIGINT
|
||||
READS SQL DATA
|
||||
NOT DETERMINISTIC
|
||||
BEGIN
|
||||
/**
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` EVENT `vn`.`ticket_doRecalc`
|
||||
ON SCHEDULE EVERY 10 SECOND
|
||||
STARTS '2022-01-28 09:29:18.000'
|
||||
ON COMPLETION PRESERVE
|
||||
ENABLE
|
||||
DO CALL ticket_doRecalc$$
|
||||
DELIMITER ;
|
|
@ -1,8 +0,0 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` EVENT `vn`.`travel_doRecalc`
|
||||
ON SCHEDULE EVERY 15 SECOND
|
||||
STARTS '2019-05-17 10:52:29.000'
|
||||
ON COMPLETION PRESERVE
|
||||
ENABLE
|
||||
DO CALL travel_doRecalc$$
|
||||
DELIMITER ;
|
|
@ -11,9 +11,9 @@ BEGIN
|
|||
SELECT
|
||||
a.Vista
|
||||
INTO vDeliveryType
|
||||
FROM vn2008.Tickets t
|
||||
JOIN vn2008.Agencias a ON a.Id_Agencia = t.Id_Agencia
|
||||
WHERE Id_Ticket = vTicket;
|
||||
FROM ticket t
|
||||
JOIN vn2008.Agencias a ON a.Id_Agencia = t.agencyModeFk
|
||||
WHERE t.id = vTicket;
|
||||
|
||||
CASE vDeliveryType
|
||||
WHEN 1 THEN -- AGENCIAS
|
||||
|
@ -23,11 +23,11 @@ BEGIN
|
|||
SET vCode = 'ON_DELIVERY';
|
||||
|
||||
ELSE -- MERCADO, OTROS
|
||||
SELECT t.warehouse_id <> w.warehouse_id INTO isWaitingForPickUp
|
||||
FROM vn2008.Tickets t
|
||||
SELECT t.warehouseFk <> w.warehouse_id INTO isWaitingForPickUp
|
||||
FROM ticket t
|
||||
LEFT JOIN vn2008.warehouse_pickup w
|
||||
ON w.agency_id = t.Id_Agencia AND w.warehouse_id = t.warehouse_id
|
||||
WHERE t.Id_Ticket = vTicket;
|
||||
ON w.agency_id = t.agencyModeFk AND w.warehouse_id = t.warehouseFk
|
||||
WHERE t.id = vTicket;
|
||||
|
||||
IF isWaitingForPickUp THEN
|
||||
SET vCode = 'WAITING_FOR_PICKUP';
|
||||
|
|
|
@ -28,10 +28,10 @@ SELECT t.routeFk, t.warehouseFk, IFNULL(ts.productionOrder,0)
|
|||
|
||||
SELECT (ag.`name` = 'VN_VALENCIA')
|
||||
INTO vIsValenciaPath
|
||||
FROM vn2008.Rutas r
|
||||
JOIN vn2008.Agencias a on a.Id_Agencia = r.Id_Agencia
|
||||
FROM `route` r
|
||||
JOIN vn2008.Agencias a on a.Id_Agencia = r.agencyModeFk
|
||||
JOIN vn2008.agency ag on ag.agency_id = a.agency_id
|
||||
WHERE r.Id_Ruta = vMyPath;
|
||||
WHERE r.id = vMyPath;
|
||||
|
||||
IF vIsValenciaPath THEN -- Rutas Valencia
|
||||
|
||||
|
|
|
@ -19,10 +19,10 @@ BEGIN
|
|||
AND a.hasWeightVolumetric
|
||||
LIMIT 1;
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.buysToCheck;
|
||||
DROP TEMPORARY TABLE tmp.buysToCheck;
|
||||
|
||||
IF hasVolumetricAgency THEN
|
||||
CALL util.throw('Some purchase line has an item without size or weight per stem in the volumetric agency.');
|
||||
CALL util.throw('Item lacks size/weight in purchase line at agency');
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -0,0 +1,42 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`creditInsurance_getRisk`()
|
||||
BEGIN
|
||||
/**
|
||||
* Devuelve el riesgo de los clientes que estan asegurados
|
||||
*/
|
||||
CREATE OR REPLACE TEMPORARY TABLE tmp.clientGetDebt
|
||||
(PRIMARY KEY (clientFk))
|
||||
ENGINE = MEMORY
|
||||
SELECT * FROM (
|
||||
SELECT cc.client clientFk, ci.grade
|
||||
FROM creditClassification cc
|
||||
JOIN creditInsurance ci ON cc.id = ci.creditClassification
|
||||
WHERE dateEnd IS NULL
|
||||
ORDER BY ci.creationDate DESC
|
||||
LIMIT 10000000000000000000) t1
|
||||
GROUP BY clientFk;
|
||||
|
||||
CALL client_getDebt(util.VN_CURDATE());
|
||||
|
||||
SELECT c.id,
|
||||
c.name,
|
||||
c.credit clientCredit,
|
||||
c.creditInsurance solunion,
|
||||
CAST(r.risk AS DECIMAL(10,0)) risk,
|
||||
CAST(c.creditInsurance - r.risk AS DECIMAL(10,0)) riskAlive,
|
||||
cac.invoiced billedAnnually,
|
||||
c.dueDay,
|
||||
cgd.grade,
|
||||
c2.country
|
||||
FROM tmp.clientGetDebt cgd
|
||||
LEFT JOIN tmp.risk r ON r.clientFk = cgd.clientFk
|
||||
JOIN client c ON c.id = cgd.clientFk
|
||||
JOIN bs.clientAnnualConsumption cac ON c.id = cac.clientFk
|
||||
JOIN country c2 ON c2.id = c.countryFk
|
||||
GROUP BY c.id;
|
||||
|
||||
DROP TEMPORARY TABLE
|
||||
tmp.risk,
|
||||
tmp.clientGetDebt;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -15,7 +15,7 @@ BEGIN
|
|||
FROM `entry`
|
||||
WHERE id = vSelf;
|
||||
|
||||
IF vIsBooked AND NOT @isModeInventory THEN
|
||||
IF vIsBooked AND NOT IFNULL(@isModeInventory, FALSE) THEN
|
||||
CALL util.throw('Entry is already booked');
|
||||
END IF;
|
||||
END$$
|
||||
|
|
|
@ -9,6 +9,14 @@ BEGIN
|
|||
DECLARE vCurrencyName VARCHAR(25);
|
||||
DECLARE vComission INT;
|
||||
|
||||
DECLARE EXIT HANDLER FOR SQLEXCEPTION
|
||||
BEGIN
|
||||
ROLLBACK;
|
||||
RESIGNAL;
|
||||
END;
|
||||
|
||||
START TRANSACTION;
|
||||
|
||||
CREATE OR REPLACE TEMPORARY TABLE tmp.recalcEntryCommision
|
||||
SELECT e.id
|
||||
FROM vn.entry e
|
||||
|
@ -28,6 +36,9 @@ BEGIN
|
|||
WHERE id = vCurrency;
|
||||
|
||||
CALL entry_recalc();
|
||||
|
||||
COMMIT;
|
||||
|
||||
SELECT util.notification_send(
|
||||
'entry-update-comission',
|
||||
JSON_OBJECT('currencyName', vCurrencyName, 'referenceCurrent', vComission),
|
||||
|
|
|
@ -8,12 +8,15 @@ BEGIN
|
|||
|
||||
DROP TEMPORARY TABLE IF EXISTS `tmp`.`ticketToInvoice`;
|
||||
|
||||
CREATE TEMPORARY TABLE `tmp.``ticketToInvoice`
|
||||
CREATE TEMPORARY TABLE `tmp`.`ticketToInvoice`
|
||||
(PRIMARY KEY (`id`))
|
||||
ENGINE = MEMORY
|
||||
SELECT Id_Ticket id FROM vn2008.Tickets WHERE (Fecha BETWEEN vMinDateTicket
|
||||
AND vMaxTicketDate) AND Id_Consigna = vAddress
|
||||
AND Factura IS NULL AND empresa_id = vCompany;
|
||||
SELECT id
|
||||
FROM ticket
|
||||
WHERE (shipped BETWEEN vMinDateTicket AND vMaxTicketDate)
|
||||
AND addressFk = vAddress
|
||||
AND refFk IS NULL
|
||||
AND companyFk = vCompany;
|
||||
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
|
|
@ -39,7 +39,7 @@ BEGIN
|
|||
UPDATE vn.itemShelving
|
||||
SET isChecked = vIsChecked
|
||||
WHERE shelvingFk COLLATE utf8_unicode_ci = vShelvingFk
|
||||
AND itemFk = vItemFk;
|
||||
AND itemFk = vItemFk AND isChecked IS NULL;
|
||||
|
||||
SET vCounter = vCounter + 1;
|
||||
END WHILE;
|
||||
|
|
|
@ -65,7 +65,8 @@ BEGIN
|
|||
WHEN b.groupingMode = 'packing' THEN b.packing
|
||||
ELSE 1
|
||||
END AS minQuantity,
|
||||
iss.visible located
|
||||
iss.visible located,
|
||||
b.price2
|
||||
FROM vn.item i
|
||||
JOIN cache.available a ON a.item_id = i.id
|
||||
AND a.calc_id = vCalcFk
|
||||
|
|
|
@ -1,74 +0,0 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`recipe_Cook`(vItemFk INT, vBunchesQuantity INT, vDate DATE)
|
||||
BEGIN
|
||||
|
||||
DECLARE vCalc INT;
|
||||
DECLARE vWarehouseFk INT DEFAULT 1; -- Silla FV
|
||||
|
||||
SET @element := '';
|
||||
SET @counter := 0;
|
||||
|
||||
CALL cache.available_refresh(vCalc, FALSE, vWarehouseFk, vDate);
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp.recipeCook;
|
||||
|
||||
CREATE TEMPORARY TABLE tmp.recipeCook
|
||||
SELECT *,
|
||||
@counter := IF(@element = element COLLATE utf8_general_ci , @counter + 1, 1) as counter,
|
||||
@element := element COLLATE utf8_general_ci
|
||||
FROM
|
||||
(
|
||||
SELECT i.id itemFk,
|
||||
CONCAT(i.longName, ' (ref: ',i.id,')') longName,
|
||||
i.size,
|
||||
i.inkFk,
|
||||
a.available,
|
||||
r.element,
|
||||
vBunchesQuantity * r.quantity as quantity,
|
||||
r.itemFk as bunchItemFk,
|
||||
IFNULL((i.inkFk = r.inkFk ) ,0)
|
||||
+ IFNULL((i.size = r.size) ,0)
|
||||
+ IFNULL((i.name LIKE CONCAT('%',r.name,'%')) ,0)
|
||||
+ IFNULL((i.longName LIKE CONCAT('%',r.longName,'%')),0)
|
||||
+ IFNULL((i.typeFk = r.typeFk),0) as matches,
|
||||
i.typeFk,
|
||||
rl.previousSelected
|
||||
FROM vn.recipe r
|
||||
JOIN vn.item i ON (IFNULL(i.name LIKE CONCAT('%',r.name,'%'), 0)
|
||||
OR IFNULL(i.longName LIKE CONCAT('%',r.longName,'%'),0))
|
||||
OR i.typeFk <=> r.typeFk
|
||||
JOIN cache.available a ON a.item_id = i.id AND a.calc_id = vCalc
|
||||
LEFT JOIN (SELECT recipe_ItemFk, element as log_element, selected_ItemFk, count(*) as previousSelected
|
||||
FROM vn.recipe_log
|
||||
GROUP BY recipe_ItemFk, element, selected_ItemFk) rl ON rl.recipe_ItemFk = r.itemFk
|
||||
AND rl.log_element = r.element
|
||||
AND rl.selected_ItemFk = i.id
|
||||
WHERE r.itemFk = vItemFk
|
||||
AND a.available > vBunchesQuantity * r.quantity
|
||||
UNION ALL
|
||||
SELECT 100 itemFk,
|
||||
CONCAT('? ',r.element,' ',IFNULL(r.size,''),' ',IFNULL(r.inkFk,'')) as longName,
|
||||
NULL,
|
||||
NULL,
|
||||
0,
|
||||
r.element,
|
||||
vBunchesQuantity * r.quantity as quantity,
|
||||
r.itemFk as bunchItemFk,
|
||||
-1 as matches,
|
||||
r.typeFk,
|
||||
NULL
|
||||
FROM vn.recipe r
|
||||
WHERE r.itemFk = vItemFk
|
||||
GROUP BY r.element
|
||||
) sub
|
||||
|
||||
ORDER BY element, matches DESC, previousSelected DESC;
|
||||
|
||||
SELECT *
|
||||
FROM tmp.recipeCook
|
||||
WHERE counter < 6
|
||||
OR itemFk = 100
|
||||
;
|
||||
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -1,53 +0,0 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_doRecalc`()
|
||||
proc: BEGIN
|
||||
/**
|
||||
* Recalculates modified ticket.
|
||||
*/
|
||||
DECLARE vDone BOOL;
|
||||
DECLARE vTicketFk INT;
|
||||
|
||||
DECLARE cCur CURSOR FOR
|
||||
SELECT DISTINCT ticketFk FROM tTicket;
|
||||
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND
|
||||
SET vDone = TRUE;
|
||||
|
||||
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
|
||||
BEGIN
|
||||
DO RELEASE_LOCK('vn.ticket_doRecalc');
|
||||
ROLLBACK;
|
||||
RESIGNAL;
|
||||
END;
|
||||
|
||||
IF !GET_LOCK('vn.ticket_doRecalc', 0) THEN
|
||||
LEAVE proc;
|
||||
END IF;
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS tTicket;
|
||||
CREATE TEMPORARY TABLE tTicket
|
||||
ENGINE = MEMORY
|
||||
SELECT id, ticketFk FROM ticketRecalc;
|
||||
|
||||
OPEN cCur;
|
||||
|
||||
myLoop: LOOP
|
||||
SET vDone = FALSE;
|
||||
FETCH cCur INTO vTicketFk;
|
||||
|
||||
IF vDone THEN
|
||||
LEAVE myLoop;
|
||||
END IF;
|
||||
|
||||
CALL ticket_recalc(vTicketFk, NULL);
|
||||
END LOOP;
|
||||
|
||||
CLOSE cCur;
|
||||
|
||||
DELETE tr FROM ticketRecalc tr JOIN tTicket t ON tr.id = t.id;
|
||||
|
||||
DROP TEMPORARY TABLE tTicket;
|
||||
|
||||
DO RELEASE_LOCK('vn.ticket_doRecalc');
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -0,0 +1,40 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_recalcByScope`(
|
||||
vScope VARCHAR(255),
|
||||
vId INT
|
||||
)
|
||||
BEGIN
|
||||
/**
|
||||
* Recalculates tickets in an scope.
|
||||
*
|
||||
* @param vScope The scope name
|
||||
* @param vId The scope id
|
||||
*/
|
||||
DECLARE vDone BOOL;
|
||||
DECLARE vTicketFk INT;
|
||||
|
||||
DECLARE cTickets CURSOR FOR
|
||||
SELECT id FROM ticket
|
||||
WHERE refFk IS NULL
|
||||
AND ((vScope = 'client' AND clientFk = vId)
|
||||
OR (vScope = 'address' AND addressFk = vId));
|
||||
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND
|
||||
SET vDone = TRUE;
|
||||
|
||||
OPEN cTickets;
|
||||
|
||||
myLoop: LOOP
|
||||
SET vDone = FALSE;
|
||||
FETCH cTickets INTO vTicketFk;
|
||||
|
||||
IF vDone THEN
|
||||
LEAVE myLoop;
|
||||
END IF;
|
||||
|
||||
CALL ticket_recalc(vTicketFk, NULL);
|
||||
END LOOP;
|
||||
|
||||
CLOSE cTickets;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -1,15 +0,0 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_requestRecalc`(vSelf INT)
|
||||
proc: BEGIN
|
||||
/**
|
||||
* Adds a request to recalculate the ticket total.
|
||||
*
|
||||
* @param vSelf The ticket identifier
|
||||
*/
|
||||
IF vSelf IS NULL THEN
|
||||
LEAVE proc;
|
||||
END IF;
|
||||
|
||||
INSERT INTO ticketRecalc SET ticketFk = vSelf;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -1,34 +0,0 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`travel_doRecalc`()
|
||||
proc: BEGIN
|
||||
/**
|
||||
* Recounts the number of entries of changed travels.
|
||||
*/
|
||||
DECLARE vTravelFk INT;
|
||||
|
||||
DECLARE EXIT HANDLER FOR SQLEXCEPTION
|
||||
BEGIN
|
||||
DO RELEASE_LOCK('vn.ticket_doRecalc');
|
||||
END;
|
||||
|
||||
IF !GET_LOCK('vn.travel_doRecalc', 0) THEN
|
||||
LEAVE proc;
|
||||
END IF;
|
||||
|
||||
CREATE OR REPLACE TEMPORARY TABLE tTravel
|
||||
ENGINE = MEMORY
|
||||
SELECT travelFk FROM travelRecalc;
|
||||
|
||||
UPDATE travel t
|
||||
JOIN tTravel tt ON tt.travelFk = t.id
|
||||
SET t.totalEntries = (
|
||||
SELECT COUNT(e.id)
|
||||
FROM entry e
|
||||
WHERE e.travelFk = t.id
|
||||
);
|
||||
|
||||
DELETE tr FROM travelRecalc tr JOIN tTravel t ON tr.travelFk = t.travelFk;
|
||||
DROP TEMPORARY TABLE tTravel;
|
||||
DO RELEASE_LOCK('vn.travel_doRecalc');
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -0,0 +1,17 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`travel_recalc`(vSelf INT)
|
||||
proc: BEGIN
|
||||
/**
|
||||
* Updates the number of entries assigned to the travel.
|
||||
*
|
||||
* @param vSelf The travel id
|
||||
*/
|
||||
UPDATE travel
|
||||
SET totalEntries = (
|
||||
SELECT COUNT(id)
|
||||
FROM entry
|
||||
WHERE travelFk = vSelf
|
||||
)
|
||||
WHERE id = vSelf;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -1,15 +0,0 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`travel_requestRecalc`(vSelf INT)
|
||||
proc: BEGIN
|
||||
/**
|
||||
* Adds a request to recount the number of entries for the travel.
|
||||
*
|
||||
* @param vSelf The travel reference
|
||||
*/
|
||||
IF vSelf IS NULL THEN
|
||||
LEAVE proc;
|
||||
END IF;
|
||||
|
||||
INSERT IGNORE INTO travelRecalc SET travelFk = vSelf;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -19,18 +19,14 @@ BEGIN
|
|||
WHERE id = NEW.clientFk;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
IF NEW.isDefaultAddress AND NEW.isActive = FALSE THEN
|
||||
CALL util.throw ('Cannot desactivate the default address');
|
||||
END IF;
|
||||
|
||||
IF NOT (NEW.isEqualizated <=> OLD.isEqualizated) THEN
|
||||
INSERT IGNORE INTO ticketRecalc (ticketFk)
|
||||
SELECT id FROM ticket t
|
||||
WHERE t.addressFk = NEW.id
|
||||
AND t.refFk IS NULL;
|
||||
END IF;
|
||||
|
||||
IF (NEW.clientFk <> OLD.clientFk OR NEW.isActive <> OLD.isActive OR NOT (NEW.provinceFk <=> OLD.provinceFk))
|
||||
IF (NEW.clientFk <> OLD.clientFk
|
||||
OR NEW.isActive <> OLD.isActive
|
||||
OR NOT (NEW.provinceFk <=> OLD.provinceFk))
|
||||
AND (SELECT client_hasDifferentCountries(NEW.clientFk)) THEN
|
||||
UPDATE client
|
||||
SET hasToInvoiceByAddress = TRUE
|
||||
|
|
|
@ -3,19 +3,14 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`buy_afterDelete`
|
|||
AFTER DELETE ON `buy`
|
||||
FOR EACH ROW
|
||||
trig: BEGIN
|
||||
DECLARE vValues VARCHAR(255);
|
||||
|
||||
IF @isModeInventory OR @isTriggerDisabled THEN
|
||||
LEAVE trig;
|
||||
END IF;
|
||||
|
||||
CALL stock.log_add('buy', NULL, OLD.id);
|
||||
|
||||
INSERT INTO entryLog
|
||||
SET `action` = 'delete',
|
||||
`changedModel` = 'Buy',
|
||||
`changedModelId` = OLD.id,
|
||||
`userFk` = account.myUser_getId();
|
||||
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
|
|
@ -7,8 +7,6 @@ trig: BEGIN
|
|||
LEAVE trig;
|
||||
END IF;
|
||||
|
||||
CALL stock.log_add('buy', NEW.id, NULL);
|
||||
|
||||
CALL buy_afterUpsert(NEW.id);
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
|
|
@ -12,14 +12,6 @@ trig: BEGIN
|
|||
LEAVE trig;
|
||||
END IF;
|
||||
|
||||
IF !(NEW.id <=> OLD.id)
|
||||
OR !(NEW.entryFk <=> OLD.entryFk)
|
||||
OR !(NEW.itemFk <=> OLD.itemFk)
|
||||
OR !(NEW.quantity <=> OLD.quantity)
|
||||
OR !(NEW.created <=> OLD.created) THEN
|
||||
CALL stock.log_add('buy', NEW.id, OLD.id);
|
||||
END IF;
|
||||
|
||||
CALL buy_afterUpsert(NEW.id);
|
||||
|
||||
SELECT w.isBuyerToBeEmailed, t.landed
|
||||
|
|
|
@ -4,20 +4,13 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`client_afterUpdate`
|
|||
FOR EACH ROW
|
||||
BEGIN
|
||||
IF !(NEW.defaultAddressFk <=> OLD.defaultAddressFk) THEN
|
||||
UPDATE `address` SET isDefaultAddress = 0
|
||||
UPDATE `address` SET isDefaultAddress = FALSE
|
||||
WHERE clientFk = NEW.id;
|
||||
|
||||
UPDATE `address` SET isDefaultAddress = 1
|
||||
UPDATE `address` SET isDefaultAddress = TRUE
|
||||
WHERE id = NEW.defaultAddressFk;
|
||||
END IF;
|
||||
|
||||
IF NOT (NEW.provinceFk <=> OLD.provinceFk) OR NOT (NEW.isVies <=> OLD.isVies) THEN
|
||||
INSERT IGNORE INTO ticketRecalc (ticketFk)
|
||||
SELECT id FROM ticket t
|
||||
WHERE t.clientFk = NEW.id
|
||||
AND t.refFk IS NULL;
|
||||
END IF;
|
||||
|
||||
IF NOT NEW.isActive THEN
|
||||
UPDATE account.`user`
|
||||
SET active = FALSE
|
||||
|
|
|
@ -8,7 +8,5 @@ BEGIN
|
|||
`changedModel` = 'Entry',
|
||||
`changedModelId` = OLD.id,
|
||||
`userFk` = account.myUser_getId();
|
||||
|
||||
CALL travel_requestRecalc(OLD.travelFk);
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`entry_afterInsert`
|
||||
AFTER INSERT ON `entry`
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
CALL travel_requestRecalc(NEW.travelFk);
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -3,18 +3,6 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`entry_afterUpdate`
|
|||
AFTER UPDATE ON `entry`
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
IF NOT(NEW.id <=> OLD.id)
|
||||
OR NOT(NEW.travelFk <=> OLD.travelFk)
|
||||
OR NOT(NEW.isRaid <=> OLD.isRaid) THEN
|
||||
CALL stock.log_add('entry', NEW.id, OLD.id);
|
||||
END IF;
|
||||
|
||||
IF NOT (NEW.travelFk <=> OLD.travelFk) THEN
|
||||
CALL travel_requestRecalc(OLD.travelFk);
|
||||
CALL travel_requestRecalc(NEW.travelFk);
|
||||
END IF;
|
||||
|
||||
|
||||
IF NOT (NEW.travelFk <=> OLD.travelFk) THEN
|
||||
CREATE OR REPLACE TEMPORARY TABLE tmp.buysToCheck
|
||||
SELECT b.id
|
||||
|
|
|
@ -12,9 +12,6 @@ BEGIN
|
|||
`changedModelId` = OLD.id,
|
||||
`userFk` = account.myUser_getId();
|
||||
|
||||
CALL stock.log_add('sale', NULL, OLD.id);
|
||||
CALL ticket_requestRecalc(OLD.ticketFk);
|
||||
|
||||
SELECT account.myUser_getName() INTO vUserRole;
|
||||
SELECT account.user_getMysqlRole(vUserRole) INTO vUserRole;
|
||||
|
||||
|
|
|
@ -7,11 +7,7 @@ BEGIN
|
|||
CALL util.throw('Cannot insert a service item into a ticket');
|
||||
END IF;
|
||||
|
||||
CALL stock.log_add('sale', NEW.id, NULL);
|
||||
CALL ticket_requestRecalc(NEW.ticketFk);
|
||||
|
||||
IF NEW.quantity > 0 THEN
|
||||
|
||||
UPDATE vn.collection c
|
||||
JOIN vn.ticketCollection tc ON tc.collectionFk = c.id
|
||||
AND tc.ticketFk = NEW.ticketFk
|
||||
|
|
|
@ -6,24 +6,6 @@ BEGIN
|
|||
DECLARE vIsToSendMail BOOL;
|
||||
DECLARE vUserRole VARCHAR(255);
|
||||
|
||||
IF !(NEW.id <=> OLD.id)
|
||||
OR !(NEW.ticketFk <=> OLD.ticketFk)
|
||||
OR !(NEW.itemFk <=> OLD.itemFk)
|
||||
OR !(NEW.quantity <=> OLD.quantity)
|
||||
OR !(NEW.created <=> OLD.created)
|
||||
OR !(NEW.isPicked <=> OLD.isPicked) THEN
|
||||
CALL stock.log_add('sale', NEW.id, OLD.id);
|
||||
END IF;
|
||||
|
||||
IF !(NEW.price <=> OLD.price)
|
||||
OR !(NEW.ticketFk <=> OLD.ticketFk)
|
||||
OR !(NEW.itemFk <=> OLD.itemFk)
|
||||
OR !(NEW.quantity <=> OLD.quantity)
|
||||
OR !(NEW.discount <=> OLD.discount) THEN
|
||||
CALL ticket_requestRecalc(NEW.ticketFk);
|
||||
CALL ticket_requestRecalc(OLD.ticketFk);
|
||||
END IF;
|
||||
|
||||
IF !(OLD.ticketFk <=> NEW.ticketFk) THEN
|
||||
UPDATE ticketRequest SET ticketFk = NEW.ticketFk
|
||||
WHERE saleFk = NEW.id;
|
||||
|
|
|
@ -8,8 +8,5 @@ BEGIN
|
|||
`changedModel` = 'TicketService',
|
||||
`changedModelId` = OLD.id,
|
||||
`userFk` = account.myUser_getId();
|
||||
|
||||
CALL ticket_requestRecalc(OLD.ticketFk);
|
||||
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
|
|
@ -1,10 +0,0 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticketService_afterInsert`
|
||||
AFTER INSERT ON `ticketService`
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
|
||||
CALL ticket_requestRecalc(NEW.ticketFk);
|
||||
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -1,13 +0,0 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticketService_afterUpdate`
|
||||
AFTER UPDATE ON `ticketService`
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
IF !(NEW.price <=> OLD.price)
|
||||
OR !(NEW.ticketFk <=> OLD.ticketFk)
|
||||
OR !(NEW.quantity <=> OLD.quantity) THEN
|
||||
CALL ticket_requestRecalc(NEW.ticketFk);
|
||||
CALL ticket_requestRecalc(OLD.ticketFk);
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
|
@ -3,24 +3,10 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`ticket_afterUpdate`
|
|||
AFTER UPDATE ON `ticket`
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
|
||||
IF !(NEW.id <=> OLD.id)
|
||||
OR !(NEW.warehouseFk <=> OLD.warehouseFk)
|
||||
OR !(NEW.shipped <=> OLD.shipped) THEN
|
||||
CALL stock.log_add('ticket', NEW.id, OLD.id);
|
||||
END IF;
|
||||
|
||||
IF !(NEW.clientFk <=> OLD.clientFk)
|
||||
OR !(NEW.addressFk <=> OLD.addressFk)
|
||||
OR !(NEW.companyFk <=> OLD.companyFk) THEN
|
||||
CALL ticket_requestRecalc(NEW.id);
|
||||
END IF;
|
||||
|
||||
IF NEW.routeFk <> OLD.routeFk THEN
|
||||
UPDATE expedition
|
||||
SET hasNewRoute = TRUE
|
||||
WHERE ticketFk = NEW.id;
|
||||
END IF;
|
||||
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
|
|
@ -3,8 +3,6 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`travel_afterUpdate`
|
|||
AFTER UPDATE ON `travel`
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
CALL stock.log_add('travel', NEW.id, OLD.id);
|
||||
|
||||
IF NOT(NEW.shipped <=> OLD.shipped) THEN
|
||||
UPDATE entry
|
||||
SET commission = entry_getCommission(travelFk, currencyFk,supplierFk)
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
CREATE OR REPLACE DEFINER=`root`@`localhost`
|
||||
SQL SECURITY DEFINER
|
||||
VIEW `vn`.`ticketMRW`
|
||||
AS SELECT `Tickets`.`Id_Agencia` AS `id_Agencia`,
|
||||
`Tickets`.`empresa_id` AS `empresa_id`,
|
||||
AS SELECT `ticket`.`agencyModeFk` AS `id_Agencia`,
|
||||
`ticket`.`companyFk` AS `empresa_id`,
|
||||
`Consignatarios`.`consignatario` AS `Consignatario`,
|
||||
`Consignatarios`.`domicilio` AS `DOMICILIO`,
|
||||
`Consignatarios`.`poblacion` AS `POBLACION`,
|
||||
|
@ -19,13 +19,13 @@ AS SELECT `Tickets`.`Id_Agencia` AS `id_Agencia`,
|
|||
0
|
||||
) AS `movil`,
|
||||
`Clientes`.`if` AS `IF`,
|
||||
`Tickets`.`Id_Ticket` AS `Id_Ticket`,
|
||||
`Tickets`.`warehouse_id` AS `warehouse_id`,
|
||||
`ticket`.`id` AS `Id_Ticket`,
|
||||
`ticket`.`warehouseFk` AS `warehouse_id`,
|
||||
`Consignatarios`.`id_consigna` AS `Id_Consigna`,
|
||||
`Paises`.`Codigo` AS `CodigoPais`,
|
||||
`Tickets`.`Fecha` AS `Fecha`,
|
||||
`ticket`.`shipped` AS `Fecha`,
|
||||
`province`.`province_id` AS `province_id`,
|
||||
`Tickets`.`landing` AS `landing`
|
||||
`ticket`.`landed` AS `landing`
|
||||
FROM (
|
||||
(
|
||||
(
|
||||
|
@ -35,8 +35,8 @@ FROM (
|
|||
`Clientes`.`id_cliente` = `Consignatarios`.`Id_cliente`
|
||||
)
|
||||
)
|
||||
JOIN `vn2008`.`Tickets` ON(
|
||||
`Consignatarios`.`id_consigna` = `Tickets`.`Id_Consigna`
|
||||
JOIN `vn`.`ticket` ON(
|
||||
`Consignatarios`.`id_consigna` = `ticket`.`addressFk`
|
||||
)
|
||||
)
|
||||
JOIN `vn2008`.`province` ON(
|
||||
|
@ -44,4 +44,4 @@ FROM (
|
|||
)
|
||||
)
|
||||
JOIN `vn2008`.`Paises` ON(`province`.`Paises_Id` = `Paises`.`Id`)
|
||||
)
|
||||
);
|
||||
|
|
|
@ -18,7 +18,7 @@ proc: BEGIN
|
|||
-- Calcula algunos parámetros necesarios
|
||||
SET vDatedFrom = TIMESTAMP(vDated, '00:00:00');
|
||||
SET vDatedTo = TIMESTAMP(TIMESTAMPADD(DAY, 4, vDated), '23:59:59');
|
||||
SELECT FechaInventario INTO vDatedInventory FROM tblContadores;
|
||||
SELECT inventoried INTO vDatedInventory FROM vn.config;
|
||||
SELECT SUBTIME(util.VN_NOW(), reserveTime) INTO vDatedReserve
|
||||
FROM hedera.orderConfig;
|
||||
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
-- Place your SQL code here
|
||||
ALTER TABLE vn.packaging
|
||||
MODIFY COLUMN volume decimal(10,2) CHECK (volume >= COALESCE(width, 1) * COALESCE(depth, 1) * COALESCE(height, 1));
|
|
@ -0,0 +1,4 @@
|
|||
-- Place your SQL code here
|
||||
|
||||
USE vn;
|
||||
INSERT INTO vn.observationType (description,code) VALUES ('Entrega','dropOff');
|
|
@ -2,4 +2,10 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`client_getRisk`()
|
|||
BEGIN
|
||||
END;
|
||||
|
||||
GRANT EXECUTE ON PROCEDURE vn.client_getRisk TO financialBoss;
|
||||
GRANT EXECUTE ON PROCEDURE vn.client_getRisk TO financial;
|
||||
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`creditInsurance_getRisk`()
|
||||
BEGIN
|
||||
END;
|
||||
|
||||
GRANT EXECUTE ON PROCEDURE vn.creditInsurance_getRisk TO financial;
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
DROP TABLE hedera.orderRecalc;
|
|
@ -0,0 +1 @@
|
|||
DROP TABLE vn.ticketRecalc;
|
|
@ -0,0 +1 @@
|
|||
DROP TABLE vn.travelRecalc;
|
|
@ -0,0 +1 @@
|
|||
DROP SCHEMA IF EXISTS rfid;
|
|
@ -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(inventory).toBe('checked');
|
||||
expect(raid).toBe('checked');
|
||||
expect(booked).toBe('checked');
|
||||
expect(booked).toBe('unchecked');
|
||||
});
|
||||
});
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import ngModule from '../module';
|
||||
|
||||
const TOKEN_MULTIMEDIA = 'vnTokenMultimedia';
|
||||
const TOKEN = 'vnToken';
|
||||
/**
|
||||
* Saves and loads the token for the current logged in user.
|
||||
*
|
||||
|
@ -58,8 +59,8 @@ export default class Token {
|
|||
}
|
||||
|
||||
getStorage(storage) {
|
||||
this.token = storage.getItem('vnToken');
|
||||
this.tokenMultimedia = storage.getItem('vnTokenMultimedia');
|
||||
this.token = storage.getItem(TOKEN);
|
||||
this.tokenMultimedia = storage.getItem(TOKEN_MULTIMEDIA);
|
||||
if (!this.token) return;
|
||||
const created = storage.getItem('vnTokenCreated');
|
||||
this.created = created && new Date(created);
|
||||
|
@ -67,15 +68,15 @@ export default class Token {
|
|||
}
|
||||
|
||||
setStorage(storage, token, tokenMultimedia, created, ttl) {
|
||||
storage.setItem('vnTokenMultimedia', tokenMultimedia);
|
||||
storage.setItem('vnToken', token);
|
||||
storage.setItem(TOKEN_MULTIMEDIA, tokenMultimedia);
|
||||
storage.setItem(TOKEN, token);
|
||||
storage.setItem('vnTokenCreated', created.toJSON());
|
||||
storage.setItem('vnTokenTtl', ttl);
|
||||
}
|
||||
|
||||
removeStorage(storage) {
|
||||
storage.removeItem('vnToken');
|
||||
storage.removeItem('vnTokenMultimedia');
|
||||
storage.removeItem(TOKEN);
|
||||
storage.removeItem(TOKEN_MULTIMEDIA);
|
||||
storage.removeItem('vnTokenCreated');
|
||||
storage.removeItem('vnTokenTtl');
|
||||
}
|
||||
|
@ -96,9 +97,9 @@ export default class Token {
|
|||
this.checking = true;
|
||||
const renewPeriod = Math.min(this.ttl, this.renewPeriod) * 1000;
|
||||
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;
|
||||
return;
|
||||
}
|
||||
|
@ -106,7 +107,17 @@ export default class Token {
|
|||
this.$http.post('VnUsers/renewToken')
|
||||
.then(res => {
|
||||
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(() => {
|
||||
this.checking = false;
|
||||
|
@ -119,4 +130,4 @@ export default class Token {
|
|||
}
|
||||
Token.$inject = ['vnInterceptor', '$http', '$rootScope'];
|
||||
|
||||
ngModule.service('vnToken', Token);
|
||||
ngModule.service(TOKEN, Token);
|
||||
|
|
|
@ -35,7 +35,7 @@ module.exports = Self => {
|
|||
path: '/:id/claim-pickup-pdf',
|
||||
verb: 'GET'
|
||||
},
|
||||
accessScopes: ['read:multimedia']
|
||||
accessScopes: ['DEFAULT', 'read:multimedia']
|
||||
});
|
||||
|
||||
Self.claimPickupPdf = (ctx, id) => Self.printReport(ctx, id, 'claim-pickup-order');
|
||||
|
|
|
@ -33,7 +33,7 @@ module.exports = Self => {
|
|||
path: `/:id/downloadFile`,
|
||||
verb: 'GET'
|
||||
},
|
||||
accessScopes: ['read:multimedia']
|
||||
accessScopes: ['DEFAULT', 'read:multimedia']
|
||||
});
|
||||
|
||||
Self.downloadFile = async function(ctx, id) {
|
||||
|
|
|
@ -46,7 +46,7 @@ module.exports = Self => {
|
|||
path: '/:id/campaign-metrics-pdf',
|
||||
verb: 'GET'
|
||||
},
|
||||
accessScopes: ['read:multimedia']
|
||||
accessScopes: ['DEFAULT', 'read:multimedia']
|
||||
});
|
||||
|
||||
Self.campaignMetricsPdf = (ctx, id) => Self.printReport(ctx, id, 'campaign-metrics');
|
||||
|
|
|
@ -34,7 +34,7 @@ module.exports = Self => {
|
|||
path: '/:id/entry-order-pdf',
|
||||
verb: 'GET'
|
||||
},
|
||||
accessScopes: ['read:multimedia']
|
||||
accessScopes: ['DEFAULT', 'read:multimedia']
|
||||
});
|
||||
|
||||
Self.entryOrderPdf = (ctx, id) => Self.printReport(ctx, id, 'entry-order');
|
||||
|
|
|
@ -158,7 +158,7 @@ describe('InvoiceIn filter()', () => {
|
|||
|
||||
const result = await models.InvoiceIn.filter(ctx, {}, options);
|
||||
|
||||
expect(result.length).toEqual(4);
|
||||
expect(result.length).toEqual(5);
|
||||
|
||||
await tx.rollback();
|
||||
} catch (e) {
|
||||
|
@ -180,7 +180,7 @@ describe('InvoiceIn filter()', () => {
|
|||
|
||||
const result = await models.InvoiceIn.filter(ctx, {}, options);
|
||||
|
||||
expect(result.length).toEqual(6);
|
||||
expect(result.length).toEqual(5);
|
||||
expect(result[0].isBooked).toBeTruthy();
|
||||
|
||||
await tx.rollback();
|
||||
|
|
|
@ -32,7 +32,7 @@ module.exports = Self => {
|
|||
path: '/:id/download',
|
||||
verb: 'GET'
|
||||
},
|
||||
accessScopes: ['read:multimedia']
|
||||
accessScopes: ['DEFAULT', 'read:multimedia']
|
||||
});
|
||||
|
||||
Self.download = async function(ctx, id, options) {
|
||||
|
|
|
@ -32,7 +32,7 @@ module.exports = Self => {
|
|||
path: '/downloadZip',
|
||||
verb: 'GET'
|
||||
},
|
||||
accessScopes: ['read:multimedia']
|
||||
accessScopes: ['DEFAULT', 'read:multimedia']
|
||||
});
|
||||
|
||||
Self.downloadZip = async function(ctx, ids, options) {
|
||||
|
|
|
@ -35,7 +35,7 @@ module.exports = Self => {
|
|||
path: '/:reference/exportation-pdf',
|
||||
verb: 'GET'
|
||||
},
|
||||
accessScopes: ['read:multimedia']
|
||||
accessScopes: ['DEFAULT', 'read:multimedia']
|
||||
});
|
||||
|
||||
Self.exportationPdf = (ctx, reference) => Self.printReport(ctx, reference, 'exportation');
|
||||
|
|
|
@ -38,7 +38,7 @@ module.exports = Self => {
|
|||
path: '/:reference/invoice-csv',
|
||||
verb: 'GET'
|
||||
},
|
||||
accessScopes: ['read:multimedia']
|
||||
accessScopes: ['DEFAULT', 'read:multimedia']
|
||||
});
|
||||
|
||||
Self.invoiceCsv = async reference => {
|
||||
|
|
|
@ -40,7 +40,7 @@ module.exports = Self => {
|
|||
path: '/negativeBasesCsv',
|
||||
verb: 'GET'
|
||||
},
|
||||
accessScopes: ['read:multimedia']
|
||||
accessScopes: ['DEFAULT', 'read:multimedia']
|
||||
});
|
||||
|
||||
Self.negativeBasesCsv = async(ctx, options) => {
|
||||
|
|
|
@ -11,7 +11,7 @@ module.exports = Self => {
|
|||
path: `/download`,
|
||||
verb: 'POST',
|
||||
},
|
||||
accessScopes: ['read:multimedia']
|
||||
accessScopes: ['DEFAULT', 'read:multimedia']
|
||||
});
|
||||
|
||||
Self.download = async() => {
|
||||
|
|
|
@ -30,7 +30,7 @@ module.exports = Self => {
|
|||
path: '/:id/cmr',
|
||||
verb: 'GET'
|
||||
},
|
||||
accessScopes: ['read:multimedia']
|
||||
accessScopes: ['DEFAULT', 'read:multimedia']
|
||||
});
|
||||
|
||||
Self.cmr = (ctx, id) => Self.printReport(ctx, id, 'cmr');
|
||||
|
|
|
@ -30,7 +30,7 @@ module.exports = Self => {
|
|||
path: '/downloadCmrsZip',
|
||||
verb: 'GET'
|
||||
},
|
||||
accessScopes: ['read:multimedia']
|
||||
accessScopes: ['DEFAULT', 'read:multimedia']
|
||||
});
|
||||
|
||||
Self.downloadCmrsZip = async function(ctx, ids, options) {
|
||||
|
|
|
@ -30,7 +30,7 @@ module.exports = Self => {
|
|||
path: '/downloadZip',
|
||||
verb: 'GET'
|
||||
},
|
||||
accessScopes: ['read:multimedia']
|
||||
accessScopes: ['DEFAULT', 'read:multimedia']
|
||||
});
|
||||
|
||||
Self.downloadZip = async function(ctx, id, options) {
|
||||
|
|
|
@ -35,7 +35,7 @@ module.exports = Self => {
|
|||
path: '/:id/driver-route-pdf',
|
||||
verb: 'GET'
|
||||
},
|
||||
accessScopes: ['read:multimedia']
|
||||
accessScopes: ['DEFAULT', 'read:multimedia']
|
||||
|
||||
});
|
||||
|
||||
|
|
|
@ -43,14 +43,15 @@ module.exports = Self => {
|
|||
st.code ticketStateCode,
|
||||
st.name ticketStateName,
|
||||
wh.name warehouseName,
|
||||
tob.description ticketObservation,
|
||||
tob.description observationDelivery,
|
||||
tob2.description observationDropOff,
|
||||
tob2.id observationId,
|
||||
a.street,
|
||||
a.postalCode,
|
||||
a.city,
|
||||
am.name agencyModeName,
|
||||
u.nickname userNickname,
|
||||
vn.ticketTotalVolume(t.id) volume,
|
||||
tob.description,
|
||||
GROUP_CONCAT(DISTINCT i.itemPackingTypeFk ORDER BY i.itemPackingTypeFk) ipt,
|
||||
c.phone clientPhone,
|
||||
c.mobile clientMobile,
|
||||
|
@ -72,6 +73,9 @@ module.exports = Self => {
|
|||
LEFT JOIN observationType ot ON ot.code = 'delivery'
|
||||
LEFT JOIN ticketObservation tob ON tob.ticketFk = t.id
|
||||
AND tob.observationTypeFk = ot.id
|
||||
LEFT JOIN observationType ot2 ON ot2.code = 'dropOff'
|
||||
LEFT JOIN ticketObservation tob2 ON tob2.ticketFk = t.id
|
||||
AND tob2.observationTypeFk = ot2.id
|
||||
LEFT JOIN address a ON a.id = t.addressFk
|
||||
LEFT JOIN agencyMode am ON am.id = t.agencyModeFk
|
||||
LEFT JOIN account.user u ON u.id = r.workerFk
|
||||
|
|
|
@ -45,7 +45,7 @@ module.exports = Self => {
|
|||
path: '/:id/campaign-metrics-pdf',
|
||||
verb: 'GET'
|
||||
},
|
||||
accessScopes: ['read:multimedia']
|
||||
accessScopes: ['DEFAULT', 'read:multimedia']
|
||||
});
|
||||
|
||||
Self.campaignMetricsPdf = (ctx, id) => Self.printReport(ctx, id, 'supplier-campaign-metrics');
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
|
||||
module.exports = Self => {
|
||||
Self.remoteMethod('addDropOff', {
|
||||
description: 'Add a dropOff note in a ticket',
|
||||
accessType: 'WRITE',
|
||||
accepts: [{
|
||||
arg: 'ticketFk',
|
||||
type: 'number',
|
||||
required: true,
|
||||
description: 'ticket ID'
|
||||
}, {
|
||||
arg: 'note',
|
||||
type: 'string',
|
||||
required: true,
|
||||
description: 'note text'
|
||||
}],
|
||||
|
||||
http: {
|
||||
path: `/addDropOff`,
|
||||
verb: 'post'
|
||||
}
|
||||
});
|
||||
|
||||
Self.addDropOff = async(ticketFk, note, options) => {
|
||||
const models = Self.app.models;
|
||||
const myOptions = {};
|
||||
|
||||
if (typeof options == 'object')
|
||||
Object.assign(myOptions, options);
|
||||
|
||||
const observationTypeDropOff = await models.ObservationType.findOne({
|
||||
where: {code: 'dropOff'}
|
||||
}, myOptions);
|
||||
|
||||
await models.TicketObservation.create({
|
||||
ticketFk: ticketFk,
|
||||
observationTypeFk: observationTypeDropOff.id,
|
||||
description: note
|
||||
|
||||
}, myOptions);
|
||||
};
|
||||
};
|
|
@ -0,0 +1,31 @@
|
|||
const {models} = require('vn-loopback/server/server');
|
||||
|
||||
describe('ticketObservation addDropOff()', () => {
|
||||
const ticketFk = 5;
|
||||
const note = 'DropOff note';
|
||||
const code = 'dropOff';
|
||||
|
||||
it('should return a dropOff note', async() => {
|
||||
const tx = await models.TicketObservation.beginTransaction({});
|
||||
|
||||
try {
|
||||
const options = {transaction: tx};
|
||||
await models.TicketObservation.addDropOff(
|
||||
ticketFk, note, options);
|
||||
|
||||
const observationTypeDropOff = await models.TicketObservation.find({
|
||||
where: {
|
||||
ticketFk,
|
||||
code
|
||||
}
|
||||
}, options);
|
||||
|
||||
expect(observationTypeDropOff.length).toEqual(1);
|
||||
|
||||
await tx.rollback();
|
||||
} catch (e) {
|
||||
await tx.rollback();
|
||||
throw e;
|
||||
}
|
||||
});
|
||||
});
|
|
@ -38,7 +38,7 @@ module.exports = Self => {
|
|||
path: '/:id/delivery-note-csv',
|
||||
verb: 'GET'
|
||||
},
|
||||
accessScopes: ['read:multimedia']
|
||||
accessScopes: ['DEFAULT', 'read:multimedia']
|
||||
});
|
||||
|
||||
Self.deliveryNoteCsv = async id => {
|
||||
|
|
|
@ -42,7 +42,7 @@ module.exports = Self => {
|
|||
path: '/:id/delivery-note-pdf',
|
||||
verb: 'GET'
|
||||
},
|
||||
accessScopes: ['read:multimedia']
|
||||
accessScopes: ['DEFAULT', 'read:multimedia']
|
||||
});
|
||||
|
||||
Self.deliveryNotePdf = (ctx, id) => Self.printReport(ctx, id, 'delivery-note');
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
const UserError = require('vn-loopback/util/user-error');
|
||||
|
||||
module.exports = Self => {
|
||||
require('../methods/ticket-observation/addDropOff')(Self);
|
||||
Self.rewriteDbError(function(err) {
|
||||
if (err.code === 'ER_DUP_ENTRY')
|
||||
return new UserError(`The observation type can't be repeated`);
|
||||
|
|
|
@ -79,7 +79,7 @@ module.exports = Self => {
|
|||
path: '/extra-community-pdf',
|
||||
verb: 'GET'
|
||||
},
|
||||
accessScopes: ['read:multimedia']
|
||||
accessScopes: ['DEFAULT', 'read:multimedia']
|
||||
});
|
||||
|
||||
Self.extraCommunityPdf = ctx => Self.printReport(ctx, null, 'extra-community');
|
||||
|
|
|
@ -30,7 +30,7 @@ module.exports = Self => {
|
|||
path: `/:id/downloadFile`,
|
||||
verb: 'GET'
|
||||
},
|
||||
accessScopes: ['read:multimedia']
|
||||
accessScopes: ['DEFAULT', 'read:multimedia']
|
||||
});
|
||||
|
||||
Self.downloadFile = async function(ctx, id) {
|
||||
|
|
|
@ -99,7 +99,7 @@
|
|||
{
|
||||
"relation": "user",
|
||||
"scope": {
|
||||
"fields": ["email", "name", "nickname", "roleFk"],
|
||||
"fields": ["email", "name", "nickname", "roleFk", "emailVerified"],
|
||||
"include": [
|
||||
{
|
||||
"relation": "role",
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue