Merge branch 'dev' into 7021-Delete_rfid_schema
gitea/salix/pipeline/pr-dev This commit looks good Details

This commit is contained in:
Ivan Mas 2024-04-22 10:37:15 +00:00
commit 1ef98ecd8c
53 changed files with 481 additions and 385 deletions

View File

@ -30,7 +30,7 @@ module.exports = Self => {
path: `/:id/downloadFile`, path: `/:id/downloadFile`,
verb: 'GET' verb: 'GET'
}, },
accessScopes: ['read:multimedia'] accessScopes: ['DEFAULT', 'read:multimedia']
}); });
Self.downloadFile = async function(ctx, id) { Self.downloadFile = async function(ctx, id) {

View File

@ -43,7 +43,7 @@ module.exports = Self => {
path: `/:id/download`, path: `/:id/download`,
verb: 'GET' verb: 'GET'
}, },
accessScopes: ['read:multimedia'] accessScopes: ['DEFAULT', 'read:multimedia']
}); });
Self.download = async function(id, fileCabinet, filter) { Self.download = async function(id, fileCabinet, filter) {

View File

@ -48,7 +48,7 @@ module.exports = Self => {
path: `/:collection/:size/:id/download`, path: `/:collection/:size/:id/download`,
verb: 'GET' verb: 'GET'
}, },
accessScopes: ['read:multimedia'] accessScopes: ['DEFAULT', 'read:multimedia']
}); });
Self.download = async function(ctx, collection, size, id) { Self.download = async function(ctx, collection, size, id) {

View File

@ -28,6 +28,9 @@ describe('Renew Token', () => {
}); });
it('should renew token', async() => { it('should renew token', async() => {
const {courtesyTime} = await models.AccessTokenConfig.findOne({
fields: ['courtesyTime']
});
const mockDate = new Date(startingTime + 26600000); const mockDate = new Date(startingTime + 26600000);
jasmine.clock().mockDate(mockDate); jasmine.clock().mockDate(mockDate);
const {id} = await models.VnUser.renewToken(ctx); const {id} = await models.VnUser.renewToken(ctx);
@ -35,7 +38,7 @@ describe('Renew Token', () => {
expect(id).not.toEqual(ctx.req.accessToken.id); expect(id).not.toEqual(ctx.req.accessToken.id);
await models.VnUser.logout(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; let tokenNotExists;
try { try {
tokenNotExists = await models.AccessToken.findById(ctx.req.accessToken.id); tokenNotExists = await models.AccessToken.findById(ctx.req.accessToken.id);

View File

@ -527,7 +527,8 @@ INSERT INTO `vn`.`observationType`(`id`,`description`, `code`)
(4, 'SalesPerson', 'salesPerson'), (4, 'SalesPerson', 'salesPerson'),
(5, 'Administrative', 'administrative'), (5, 'Administrative', 'administrative'),
(6, 'Weight', 'weight'), (6, 'Weight', 'weight'),
(7, 'InvoiceOut', 'invoiceOut'); (7, 'InvoiceOut', 'invoiceOut'),
(8, 'DropOff', 'dropOff');
INSERT INTO `vn`.`addressObservation`(`id`,`addressFk`,`observationTypeFk`,`description`) INSERT INTO `vn`.`addressObservation`(`id`,`addressFk`,`observationTypeFk`,`description`)
VALUES VALUES

View File

@ -92,12 +92,12 @@ BEGIN
UPDATE bi.Greuge_Evolution ge UPDATE bi.Greuge_Evolution ge
JOIN ( JOIN (
SELECT cs.Id_Cliente, sum(Valor * Cantidad) as Importe SELECT cs.Id_Cliente, sum(Valor * Cantidad) as Importe
FROM vn2008.Tickets t FROM vn.ticket t
JOIN vn2008.Consignatarios cs on cs.Id_Consigna = t.Id_Consigna JOIN vn2008.Consignatarios cs on cs.Id_Consigna = t.addressFk
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 JOIN vn2008.Movimientos_componentes mc on mc.Id_Movimiento = m.Id_Movimiento
WHERE t.Fecha >= datFEC WHERE t.shipped >= datFEC
AND t.Fecha < datFEC_TOMORROW AND t.shipped < datFEC_TOMORROW
AND mc.Id_Componente = 17 -- Recobro AND mc.Id_Componente = 17 -- Recobro
GROUP BY cs.Id_Cliente GROUP BY cs.Id_Cliente
) sub using(Id_Cliente) ) sub using(Id_Cliente)

View File

@ -42,12 +42,12 @@ BEGIN
LEFT JOIN vn2008.Trabajadores tr2 ON tr2.Id_Trabajador = tp.Id_Trabajador LEFT JOIN vn2008.Trabajadores tr2 ON tr2.Id_Trabajador = tp.Id_Trabajador
JOIN vn2008.time tm ON tm.date = bt.fecha JOIN vn2008.time tm ON tm.date = bt.fecha
JOIN vn2008.Movimientos m ON m.Id_Movimiento = bt.Id_Movimiento JOIN vn2008.Movimientos m ON m.Id_Movimiento = bt.Id_Movimiento
LEFT JOIN vn2008.Tickets t ON t.Id_Ticket = m.Id_Ticket LEFT JOIN vn.ticket t ON t.id = m.Id_Ticket
JOIN vn2008.Agencias a ON a.Id_Agencia = t.Id_Agencia JOIN vn2008.Agencias a ON a.Id_Agencia = t.agencyModeFk
LEFT JOIN vn.deliveryMethod dm ON dm.id = a.Vista 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 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; WHERE bt.fecha >= vLastMonth AND r.mercancia;
END$$ END$$
DELIMITER ; DELIMITER ;

View File

@ -59,18 +59,18 @@ BEGIN
DROP TEMPORARY TABLE IF EXISTS tmp.ticket_list; DROP TEMPORARY TABLE IF EXISTS tmp.ticket_list;
CREATE TEMPORARY TABLE tmp.ticket_list CREATE TEMPORARY TABLE tmp.ticket_list
(PRIMARY KEY (Id_Ticket)) (PRIMARY KEY (Id_Ticket))
SELECT DISTINCT t.Id_Ticket SELECT DISTINCT t.id Id_Ticket
FROM vn2008.Movimientos_componentes mc FROM vn2008.Movimientos_componentes mc
JOIN vn2008.Movimientos m ON mc.Id_Movimiento = m.Id_Movimiento JOIN vn2008.Movimientos m ON mc.Id_Movimiento = m.Id_Movimiento
JOIN vn2008.Tickets t ON t.Id_Ticket = m.Id_Ticket JOIN vn.ticket t ON t.id = m.Id_Ticket
JOIN vn2008.Tickets_state ts ON ts.Id_Ticket = t.Id_Ticket JOIN vn.ticketLastState ts ON ts.ticketFk = t.id
JOIN vn.ticketTracking tt ON tt.id = ts.inter_id JOIN vn.ticketTracking tt ON tt.id = ts.ticketTrackingFk
JOIN vn2008.state s ON s.id = tt.stateFk JOIN vn.state s ON s.id = tt.stateFk
WHERE mc.Id_Componente = 17 WHERE mc.Id_Componente = 17
AND mc.greuge = 0 AND mc.greuge = 0
AND t.Fecha >= '2016-10-01' AND t.shipped >= '2016-10-01'
AND t.Fecha < util.VN_CURDATE() AND t.shipped < util.VN_CURDATE()
AND s.alert_level >= 3; AND s.alertLevel >= 3;
DELETE g.* DELETE g.*
FROM vn.greuge g FROM vn.greuge g
@ -79,18 +79,18 @@ BEGIN
INSERT INTO vn.greuge(clientFk, description, amount,shipped, INSERT INTO vn.greuge(clientFk, description, amount,shipped,
greugeTypeFk, ticketFk) greugeTypeFk, ticketFk)
SELECT Id_Cliente SELECT t.clientFk
,concat('recobro ', m.Id_Ticket), - round(SUM(mc.Valor*Cantidad),2) ,concat('recobro ', m.Id_Ticket), - round(SUM(mc.Valor*Cantidad),2)
AS dif AS dif
,date(t.Fecha) ,date(t.shipped)
, 2 , 2
,tt.Id_Ticket ,tt.Id_Ticket
FROM vn2008.Movimientos m FROM vn2008.Movimientos m
JOIN vn2008.Tickets t ON t.Id_Ticket = m.Id_Ticket JOIN vn.ticket t ON t.id = m.Id_Ticket
JOIN tmp.ticket_list tt ON tt.Id_Ticket = t.Id_Ticket JOIN tmp.ticket_list tt ON tt.Id_Ticket = t.id
JOIN vn2008.Movimientos_componentes mc JOIN vn2008.Movimientos_componentes mc
ON mc.Id_Movimiento = m.Id_Movimiento AND mc.Id_Componente = 17 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; HAVING ABS(dif) > 1;
UPDATE vn2008.Movimientos_componentes mc UPDATE vn2008.Movimientos_componentes mc

View File

@ -15,17 +15,17 @@ BEGIN
IF lastCOMP < vMaxPeriod - 3 AND vMaxWeek > 3 THEN IF lastCOMP < vMaxPeriod - 3 AND vMaxWeek > 3 THEN
REPLACE vn2008.Comparativa(Periodo, Id_Article, warehouse_id, Cantidad,price) 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 FROM bs.ventas v
JOIN vn2008.time tm ON tm.date = v.fecha JOIN vn2008.time tm ON tm.date = v.fecha
JOIN vn2008.Movimientos m ON m.Id_Movimiento = v.Id_Movimiento JOIN vn2008.Movimientos m ON m.Id_Movimiento = v.Id_Movimiento
JOIN vn2008.Tipos tp ON tp.tipo_id = v.tipo_id JOIN vn2008.Tipos tp ON tp.tipo_id = v.tipo_id
JOIN vn2008.reinos r ON r.id = tp.reino_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 WHERE tm.period BETWEEN lastCOMP AND vMaxPeriod - 3
AND t.Id_Cliente NOT IN(400,200) AND t.clientFk NOT IN(400,200)
AND t.warehouse_id NOT IN (0,13) AND t.warehouseFk NOT IN (0,13)
GROUP BY m.Id_Article, Periodo, t.warehouse_id; GROUP BY m.Id_Article, Periodo, t.warehouseFk;
END IF; END IF;
END$$ END$$

View File

@ -25,16 +25,16 @@ BEGIN
WHERE Periodo BETWEEN periodStart AND periodEnd; WHERE Periodo BETWEEN periodStart AND periodEnd;
INSERT INTO vn2008.Comparativa(Periodo, Id_Article, warehouse_id, Cantidad,price) 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 FROM bs.ventas v
JOIN vn2008.time tm ON tm.date = v.fecha JOIN vn2008.time tm ON tm.date = v.fecha
JOIN vn2008.Movimientos m ON m.Id_Movimiento = v.Id_Movimiento JOIN vn2008.Movimientos m ON m.Id_Movimiento = v.Id_Movimiento
JOIN vn2008.Tipos tp ON tp.tipo_id = v.tipo_id JOIN vn2008.Tipos tp ON tp.tipo_id = v.tipo_id
JOIN vn2008.reinos r ON r.id = tp.reino_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 WHERE tm.period BETWEEN periodStart AND periodEnd
AND t.Id_Cliente NOT IN(400,200) AND t.clientFk NOT IN(400,200)
AND t.warehouse_id NOT IN (0,13) AND t.warehouseFk NOT IN (0,13)
GROUP BY m.Id_Article, Periodo, t.warehouse_id; GROUP BY m.Id_Article, Periodo, t.warehouseFk;
END$$ END$$
DELIMITER ; DELIMITER ;

View File

@ -11,13 +11,13 @@ AS SELECT `time`.`year` AS `year`,
FROM ( FROM (
( (
( (
`vn2008`.`Tickets` `t` `vn`.`ticket` `t`
JOIN `bi`.`f_tvc` ON(`t`.`Id_Ticket` = `bi`.`f_tvc`.`Id_Ticket`) 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`, GROUP BY `time`.`year`,
`time`.`month` `time`.`month`

View File

@ -70,23 +70,23 @@ BEGIN
AND (v.fecha BETWEEN TIMESTAMPADD(DAY, - DAY(vDate) + 1, vDate) AND TIMESTAMPADD(DAY, - 1, vDate)) 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 GROUP BY Id_Cliente) mes_actual ON mes_actual.Id_Cliente = c.Id_Cliente
LEFT JOIN LEFT JOIN
(SELECT t.Id_Cliente, SUM(m.preu * m.Cantidad * (1 - m.Descuento / 100)) futur (SELECT t.clientFk Id_Cliente, SUM(m.preu * m.Cantidad * (1 - m.Descuento / 100)) futur
FROM vn2008.Tickets t FROM vn.ticket t
JOIN vn2008.Clientes c ON c.Id_Cliente = t.Id_Cliente JOIN vn2008.Clientes c ON c.Id_Cliente = t.clientFk
JOIN vn2008.Movimientos m ON m.Id_Ticket = t.Id_Ticket JOIN vn2008.Movimientos m ON m.Id_Ticket = t.id
LEFT JOIN vn2008.Trabajadores tr ON c.Id_Trabajador = tr.Id_Trabajador LEFT JOIN vn2008.Trabajadores tr ON c.Id_Trabajador = tr.Id_Trabajador
WHERE WHERE
(c.Id_Trabajador = vWorker OR tr.boss = vWorker) (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 GROUP BY Id_Cliente) f ON c.Id_Cliente = f.Id_Cliente
LEFT JOIN LEFT JOIN
(SELECT MAX(t.Fecha) LastTicket, c.Id_Cliente (SELECT MAX(t.shipped) LastTicket, c.Id_Cliente
FROM vn2008.Tickets t FROM vn.ticket t
JOIN vn2008.Clientes c ON c.Id_cliente = t.Id_Cliente JOIN vn2008.Clientes c ON c.Id_cliente = t.clientFk
LEFT JOIN vn2008.Trabajadores tr ON c.Id_Trabajador = tr.Id_Trabajador LEFT JOIN vn2008.Trabajadores tr ON c.Id_Trabajador = tr.Id_Trabajador
WHERE WHERE
(c.Id_Trabajador = vWorker OR tr.boss = vWorker) (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 LEFT JOIN
( (
SELECT SUM(importe) peso, c.Id_Cliente SELECT SUM(importe) peso, c.Id_Cliente

View File

@ -68,13 +68,13 @@ BEGIN
FROM FROM
( (
SELECT cs.Id_Cliente, Cantidad * Valor as mana 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.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 JOIN vn2008.Movimientos_componentes mc on mc.Id_Movimiento = m.Id_Movimiento
WHERE Id_Componente IN (vManaAutoId, vManaId, vClaimManaId) WHERE Id_Componente IN (vManaAutoId, vManaId, vClaimManaId)
AND t.Fecha > vFromDated AND t.shipped > vFromDated
AND date(t.Fecha) <= vToDated AND date(t.shipped) <= vToDated
UNION ALL UNION ALL
SELECT r.Id_Cliente, - Entregado SELECT r.Id_Cliente, - Entregado
FROM vn2008.Recibos r FROM vn2008.Recibos r

View File

@ -19,11 +19,11 @@ BEGIN
DROP TEMPORARY TABLE IF EXISTS tmp.ticket_list; DROP TEMPORARY TABLE IF EXISTS tmp.ticket_list;
CREATE TEMPORARY TABLE tmp.ticket_list CREATE TEMPORARY TABLE tmp.ticket_list
(PRIMARY KEY (Id_Ticket)) (PRIMARY KEY (id))
ENGINE = MEMORY ENGINE = MEMORY
SELECT Id_Ticket SELECT t.id
FROM vn2008.Tickets t FROM vn.ticket t
JOIN vn.invoiceOut io ON io.`ref` = t.Factura JOIN vn.invoiceOut io ON io.`ref` = t.refFk
WHERE year(io.issued) = vYear WHERE year(io.issued) = vYear
AND month(io.issued) = vMonth; AND month(io.issued) = vMonth;
@ -46,7 +46,7 @@ BEGIN
) as grupo ) as grupo
, tp.reino_id , tp.reino_id
, a.tipo_id , a.tipo_id
, t.empresa_id , t.companyFk
, a.expenseFk , a.expenseFk
+ IF(e.empresa_grupo = e2.empresa_grupo + IF(e.empresa_grupo = e2.empresa_grupo
,1 ,1
@ -54,19 +54,19 @@ BEGIN
) * 100000 ) * 100000
+ tp.reino_id * 1000 as Gasto + tp.reino_id * 1000 as Gasto
FROM vn2008.Movimientos m FROM vn2008.Movimientos m
JOIN vn2008.Tickets t on t.Id_Ticket = m.Id_Ticket JOIN vn.ticket t ON t.id = m.Id_Ticket
JOIN vn2008.Consignatarios cs on cs.Id_Consigna = t.Id_Consigna JOIN vn2008.Consignatarios cs on cs.Id_Consigna = t.addressFk
JOIN vn2008.Clientes c on c.Id_Cliente = cs.Id_Cliente 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.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 LEFT JOIN vn2008.empresa e2 on e2.Id_Cliente = c.Id_Cliente
JOIN vn2008.Tipos tp on tp.tipo_id = a.tipo_id JOIN vn2008.Tipos tp on tp.tipo_id = a.tipo_id
WHERE Cantidad <> 0 WHERE Cantidad <> 0
AND Preu <> 0 AND Preu <> 0
AND m.Descuento <> 100 AND m.Descuento <> 100
AND a.tipo_id != TIPO_PATRIMONIAL 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 INSERT INTO bs.ventas_contables(year
, month , month
@ -92,7 +92,7 @@ BEGIN
JOIN vn.ticket t ON ts.ticketFk = t.id JOIN vn.ticket t ON ts.ticketFk = t.id
JOIN vn.address a on a.id = t.addressFk JOIN vn.address a on a.id = t.addressFk
JOIN vn.client cl on cl.id = a.clientFk 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 JOIN vn.company c on c.id = t.companyFk
LEFT JOIN vn.company c2 on c2.clientFk = cl.id LEFT JOIN vn.company c2 on c2.clientFk = cl.id
GROUP BY grupo, t.companyFk ; GROUP BY grupo, t.companyFk ;

View File

@ -10,36 +10,36 @@ BEGIN
DROP TEMPORARY TABLE IF EXISTS tmp.ticket_list; DROP TEMPORARY TABLE IF EXISTS tmp.ticket_list;
CREATE TEMPORARY TABLE tmp.ticket_list CREATE TEMPORARY TABLE tmp.ticket_list
(PRIMARY KEY (Id_Ticket)) (PRIMARY KEY (id))
SELECT Id_Ticket SELECT t.id
FROM vn2008.Tickets t FROM vn.ticket t
JOIN vn.invoiceOut io ON io.id = t.Factura JOIN vn.invoiceOut io ON io.id = t.refFk
WHERE year(io.issued) = vYear WHERE year(io.issued) = vYear
AND month(io.issued) = vMonth; AND month(io.issued) = vMonth;
SELECT vYear Año, SELECT vYear Año,
vMonth Mes, vMonth Mes,
t.Id_Cliente, t.clientFk Id_Cliente,
round(sum(Cantidad * Preu * (100 - m.Descuento)/100)) Venta, round(sum(Cantidad * Preu * (100 - m.Descuento)/100)) Venta,
IF(e.empresa_grupo = e2.empresa_grupo, IF(e.empresa_grupo = e2.empresa_grupo,
1, 1,
IF(e2.empresa_grupo,2,0)) IF(e2.empresa_grupo,2,0))
AS grupo, AS grupo,
t.empresa_id empresa t.companyFk empresa
FROM vn2008.Movimientos m FROM vn2008.Movimientos m
JOIN vn2008.Tickets t ON t.Id_Ticket = m.Id_Ticket JOIN vn.ticket t ON t.id = m.Id_Ticket
JOIN vn2008.Consignatarios cs ON cs.Id_Consigna = t.Id_Consigna JOIN vn2008.Consignatarios cs ON cs.Id_Consigna = t.addressFk
JOIN vn2008.Clientes c ON c.Id_Cliente = cs.Id_Cliente 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.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 LEFT JOIN vn2008.empresa e2 ON e2.Id_Cliente = c.Id_Cliente
JOIN vn2008.Tipos tp ON tp.tipo_id = a.tipo_id JOIN vn2008.Tipos tp ON tp.tipo_id = a.tipo_id
WHERE Cantidad <> 0 WHERE Cantidad <> 0
AND Preu <> 0 AND Preu <> 0
AND m.Descuento <> 100 AND m.Descuento <> 100
AND a.tipo_id != 188 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; DROP TEMPORARY TABLE tmp.ticket_list;

View File

@ -11,9 +11,9 @@ BEGIN
SELECT SELECT
a.Vista a.Vista
INTO vDeliveryType INTO vDeliveryType
FROM vn2008.Tickets t FROM ticket t
JOIN vn2008.Agencias a ON a.Id_Agencia = t.Id_Agencia JOIN vn2008.Agencias a ON a.Id_Agencia = t.agencyModeFk
WHERE Id_Ticket = vTicket; WHERE t.id = vTicket;
CASE vDeliveryType CASE vDeliveryType
WHEN 1 THEN -- AGENCIAS WHEN 1 THEN -- AGENCIAS
@ -23,11 +23,11 @@ BEGIN
SET vCode = 'ON_DELIVERY'; SET vCode = 'ON_DELIVERY';
ELSE -- MERCADO, OTROS ELSE -- MERCADO, OTROS
SELECT t.warehouse_id <> w.warehouse_id INTO isWaitingForPickUp SELECT t.warehouseFk <> w.warehouse_id INTO isWaitingForPickUp
FROM vn2008.Tickets t FROM ticket t
LEFT JOIN vn2008.warehouse_pickup w LEFT JOIN vn2008.warehouse_pickup w
ON w.agency_id = t.Id_Agencia AND w.warehouse_id = t.warehouse_id ON w.agency_id = t.agencyModeFk AND w.warehouse_id = t.warehouseFk
WHERE t.Id_Ticket = vTicket; WHERE t.id = vTicket;
IF isWaitingForPickUp THEN IF isWaitingForPickUp THEN
SET vCode = 'WAITING_FOR_PICKUP'; SET vCode = 'WAITING_FOR_PICKUP';

View File

@ -28,10 +28,10 @@ SELECT t.routeFk, t.warehouseFk, IFNULL(ts.productionOrder,0)
SELECT (ag.`name` = 'VN_VALENCIA') SELECT (ag.`name` = 'VN_VALENCIA')
INTO vIsValenciaPath INTO vIsValenciaPath
FROM vn2008.Rutas r FROM `route` r
JOIN vn2008.Agencias a on a.Id_Agencia = r.Id_Agencia JOIN vn2008.Agencias a on a.Id_Agencia = r.agencyModeFk
JOIN vn2008.agency ag on ag.agency_id = a.agency_id 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 IF vIsValenciaPath THEN -- Rutas Valencia

View File

@ -3,7 +3,7 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`collection_assign`(
vUserFk INT, vUserFk INT,
OUT vCollectionFk INT OUT vCollectionFk INT
) )
proc:BEGIN BEGIN
/** /**
* Comprueba si existen colecciones libres que se ajustan * Comprueba si existen colecciones libres que se ajustan
* al perfil del usuario y le asigna la más antigua. * al perfil del usuario y le asigna la más antigua.
@ -16,7 +16,7 @@ proc:BEGIN
DECLARE vItemPackingTypeFk VARCHAR(1); DECLARE vItemPackingTypeFk VARCHAR(1);
DECLARE vWarehouseFk INT; DECLARE vWarehouseFk INT;
DECLARE vLockName VARCHAR(215); DECLARE vLockName VARCHAR(215);
DECLARE vLockTime INT DEFAULT 15; DECLARE vLockTime INT DEFAULT 30;
DECLARE EXIT HANDLER FOR SQLEXCEPTION DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN BEGIN
@ -39,7 +39,6 @@ proc:BEGIN
IF vHasTooMuchCollections THEN IF vHasTooMuchCollections THEN
CALL util.throw('Hay colecciones pendientes'); CALL util.throw('Hay colecciones pendientes');
LEAVE proc;
END IF; END IF;
SELECT warehouseFk, itemPackingTypeFk SELECT warehouseFk, itemPackingTypeFk
@ -54,7 +53,7 @@ proc:BEGIN
); );
IF NOT GET_LOCK(vLockName, vLockTime) THEN IF NOT GET_LOCK(vLockName, vLockTime) THEN
LEAVE proc; CALL util.throw(CONCAT('Cannot get lock: ', vLockName));
END IF; END IF;
-- Se eliminan las colecciones sin asignar que estan obsoletas -- Se eliminan las colecciones sin asignar que estan obsoletas

View File

@ -1,6 +1,6 @@
DELIMITER $$ DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`collection_new`(vUserFk INT, OUT vCollectionFk INT) CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`collection_new`(vUserFk INT, OUT vCollectionFk INT)
proc:BEGIN BEGIN
/** /**
* Genera colecciones de tickets sin asignar trabajador. * Genera colecciones de tickets sin asignar trabajador.
* *
@ -26,7 +26,7 @@ proc:BEGIN
DECLARE vHasUniqueCollectionTime BOOL; DECLARE vHasUniqueCollectionTime BOOL;
DECLARE vDone INT DEFAULT FALSE; DECLARE vDone INT DEFAULT FALSE;
DECLARE vLockName VARCHAR(215); DECLARE vLockName VARCHAR(215);
DECLARE vLockTime INT DEFAULT 15; DECLARE vLockTime INT DEFAULT 30;
DECLARE vFreeWagonFk INT; DECLARE vFreeWagonFk INT;
DECLARE c1 CURSOR FOR DECLARE c1 CURSOR FOR
@ -86,7 +86,7 @@ proc:BEGIN
); );
IF NOT GET_LOCK(vLockName, vLockTime) THEN IF NOT GET_LOCK(vLockName, vLockTime) THEN
LEAVE proc; CALL util.throw(CONCAT('Cannot get lock: ', vLockName));
END IF; END IF;
-- Se prepara el tren, con tantos vagones como sea necesario. -- Se prepara el tren, con tantos vagones como sea necesario.

View File

@ -188,7 +188,7 @@ BEGIN
FROM tPendingDuedates vp FROM tPendingDuedates vp
LEFT JOIN supplier s ON s.id = vp.supplierFk LEFT JOIN supplier s ON s.id = vp.supplierFk
LEFT JOIN client c ON c.fi = s.nif LEFT JOIN client c ON c.fi = s.nif
JOIN clientRisk cr ON cr.clientFk = c.id LEFT JOIN clientRisk cr ON cr.clientFk = c.id
AND cr.companyFk = vp.companyFk AND cr.companyFk = vp.companyFk
LEFT JOIN supplierAccount sa ON sa.supplierFk = s.id LEFT JOIN supplierAccount sa ON sa.supplierFk = s.id
LEFT JOIN bankEntity be ON be.id = sa.bankEntityFk LEFT JOIN bankEntity be ON be.id = sa.bankEntityFk

View File

@ -8,12 +8,15 @@ BEGIN
DROP TEMPORARY TABLE IF EXISTS `tmp`.`ticketToInvoice`; DROP TEMPORARY TABLE IF EXISTS `tmp`.`ticketToInvoice`;
CREATE TEMPORARY TABLE `tmp.``ticketToInvoice` CREATE TEMPORARY TABLE `tmp`.`ticketToInvoice`
(PRIMARY KEY (`id`)) (PRIMARY KEY (`id`))
ENGINE = MEMORY ENGINE = MEMORY
SELECT Id_Ticket id FROM vn2008.Tickets WHERE (Fecha BETWEEN vMinDateTicket SELECT id
AND vMaxTicketDate) AND Id_Consigna = vAddress FROM ticket
AND Factura IS NULL AND empresa_id = vCompany; WHERE (shipped BETWEEN vMinDateTicket AND vMaxTicketDate)
AND addressFk = vAddress
AND refFk IS NULL
AND companyFk = vCompany;
END$$ END$$
DELIMITER ; DELIMITER ;

View File

@ -39,7 +39,7 @@ BEGIN
UPDATE vn.itemShelving UPDATE vn.itemShelving
SET isChecked = vIsChecked SET isChecked = vIsChecked
WHERE shelvingFk COLLATE utf8_unicode_ci = vShelvingFk WHERE shelvingFk COLLATE utf8_unicode_ci = vShelvingFk
AND itemFk = vItemFk; AND itemFk = vItemFk AND isChecked IS NULL;
SET vCounter = vCounter + 1; SET vCounter = vCounter + 1;
END WHILE; END WHILE;

View File

@ -65,7 +65,8 @@ BEGIN
WHEN b.groupingMode = 'packing' THEN b.packing WHEN b.groupingMode = 'packing' THEN b.packing
ELSE 1 ELSE 1
END AS minQuantity, END AS minQuantity,
iss.visible located iss.visible located,
b.price2
FROM vn.item i FROM vn.item i
JOIN cache.available a ON a.item_id = i.id JOIN cache.available a ON a.item_id = i.id
AND a.calc_id = vCalcFk AND a.calc_id = vCalcFk

View File

@ -1,8 +1,8 @@
CREATE OR REPLACE DEFINER=`root`@`localhost` CREATE OR REPLACE DEFINER=`root`@`localhost`
SQL SECURITY DEFINER SQL SECURITY DEFINER
VIEW `vn`.`ticketMRW` VIEW `vn`.`ticketMRW`
AS SELECT `Tickets`.`Id_Agencia` AS `id_Agencia`, AS SELECT `ticket`.`agencyModeFk` AS `id_Agencia`,
`Tickets`.`empresa_id` AS `empresa_id`, `ticket`.`companyFk` AS `empresa_id`,
`Consignatarios`.`consignatario` AS `Consignatario`, `Consignatarios`.`consignatario` AS `Consignatario`,
`Consignatarios`.`domicilio` AS `DOMICILIO`, `Consignatarios`.`domicilio` AS `DOMICILIO`,
`Consignatarios`.`poblacion` AS `POBLACION`, `Consignatarios`.`poblacion` AS `POBLACION`,
@ -19,13 +19,13 @@ AS SELECT `Tickets`.`Id_Agencia` AS `id_Agencia`,
0 0
) AS `movil`, ) AS `movil`,
`Clientes`.`if` AS `IF`, `Clientes`.`if` AS `IF`,
`Tickets`.`Id_Ticket` AS `Id_Ticket`, `ticket`.`id` AS `Id_Ticket`,
`Tickets`.`warehouse_id` AS `warehouse_id`, `ticket`.`warehouseFk` AS `warehouse_id`,
`Consignatarios`.`id_consigna` AS `Id_Consigna`, `Consignatarios`.`id_consigna` AS `Id_Consigna`,
`Paises`.`Codigo` AS `CodigoPais`, `Paises`.`Codigo` AS `CodigoPais`,
`Tickets`.`Fecha` AS `Fecha`, `ticket`.`shipped` AS `Fecha`,
`province`.`province_id` AS `province_id`, `province`.`province_id` AS `province_id`,
`Tickets`.`landing` AS `landing` `ticket`.`landed` AS `landing`
FROM ( FROM (
( (
( (
@ -35,8 +35,8 @@ FROM (
`Clientes`.`id_cliente` = `Consignatarios`.`Id_cliente` `Clientes`.`id_cliente` = `Consignatarios`.`Id_cliente`
) )
) )
JOIN `vn2008`.`Tickets` ON( JOIN `vn`.`ticket` ON(
`Consignatarios`.`id_consigna` = `Tickets`.`Id_Consigna` `Consignatarios`.`id_consigna` = `ticket`.`addressFk`
) )
) )
JOIN `vn2008`.`province` ON( JOIN `vn2008`.`province` ON(
@ -44,4 +44,4 @@ FROM (
) )
) )
JOIN `vn2008`.`Paises` ON(`province`.`Paises_Id` = `Paises`.`Id`) JOIN `vn2008`.`Paises` ON(`province`.`Paises_Id` = `Paises`.`Id`)
) );

View File

@ -18,7 +18,7 @@ proc: BEGIN
-- Calcula algunos parámetros necesarios -- Calcula algunos parámetros necesarios
SET vDatedFrom = TIMESTAMP(vDated, '00:00:00'); SET vDatedFrom = TIMESTAMP(vDated, '00:00:00');
SET vDatedTo = TIMESTAMP(TIMESTAMPADD(DAY, 4, vDated), '23:59:59'); 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 SELECT SUBTIME(util.VN_NOW(), reserveTime) INTO vDatedReserve
FROM hedera.orderConfig; FROM hedera.orderConfig;

View File

@ -1,6 +1,9 @@
CREATE OR REPLACE DEFINER=`root`@`localhost` CREATE OR REPLACE DEFINER=`root`@`localhost`
SQL SECURITY DEFINER SQL SECURITY DEFINER
VIEW `vn2008`.`payroll_employee` VIEW `vn2008`.`payroll_employee` AS
AS SELECT `pw`.`workerFkA3` AS `CodTrabajador`, SELECT
`pw`.`companyFkA3` AS `codempresa` `pw`.`workerFkA3` AS `CodTrabajador`,
FROM `vn`.`payrollWorker` `pw` `pw`.`companyFkA3` AS `codempresa`,
`pw`.`workerFk` AS `workerFk`
FROM
`vn`.`payrollWorker` `pw`;

View File

@ -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));

View File

@ -0,0 +1,4 @@
-- Place your SQL code here
USE vn;
INSERT INTO vn.observationType (description,code) VALUES ('Entrega','dropOff');

View File

@ -224,5 +224,6 @@
"There are not picking tickets": "There are not picking tickets", "There are not picking tickets": "There are not picking tickets",
"ticketCommercial": "The ticket {{ ticket }} for the salesperson {{ salesMan }} is in preparation. (automatically generated message)", "ticketCommercial": "The ticket {{ ticket }} for the salesperson {{ salesMan }} is in preparation. (automatically generated message)",
"This password can only be changed by the user themselves": "This password can only be changed by the user themselves", "This password can only be changed by the user themselves": "This password can only be changed by the user themselves",
"They're not your subordinate": "They're not your subordinate" "They're not your subordinate": "They're not your subordinate",
"InvoiceIn is already booked": "InvoiceIn is already booked"
} }

View File

@ -35,7 +35,7 @@ module.exports = Self => {
path: '/:id/claim-pickup-pdf', path: '/:id/claim-pickup-pdf',
verb: 'GET' verb: 'GET'
}, },
accessScopes: ['read:multimedia'] accessScopes: ['DEFAULT', 'read:multimedia']
}); });
Self.claimPickupPdf = (ctx, id) => Self.printReport(ctx, id, 'claim-pickup-order'); Self.claimPickupPdf = (ctx, id) => Self.printReport(ctx, id, 'claim-pickup-order');

View File

@ -33,7 +33,7 @@ module.exports = Self => {
path: `/:id/downloadFile`, path: `/:id/downloadFile`,
verb: 'GET' verb: 'GET'
}, },
accessScopes: ['read:multimedia'] accessScopes: ['DEFAULT', 'read:multimedia']
}); });
Self.downloadFile = async function(ctx, id) { Self.downloadFile = async function(ctx, id) {

View File

@ -46,7 +46,7 @@ module.exports = Self => {
path: '/:id/campaign-metrics-pdf', path: '/:id/campaign-metrics-pdf',
verb: 'GET' verb: 'GET'
}, },
accessScopes: ['read:multimedia'] accessScopes: ['DEFAULT', 'read:multimedia']
}); });
Self.campaignMetricsPdf = (ctx, id) => Self.printReport(ctx, id, 'campaign-metrics'); Self.campaignMetricsPdf = (ctx, id) => Self.printReport(ctx, id, 'campaign-metrics');

View File

@ -34,7 +34,7 @@ module.exports = Self => {
path: '/:id/entry-order-pdf', path: '/:id/entry-order-pdf',
verb: 'GET' verb: 'GET'
}, },
accessScopes: ['read:multimedia'] accessScopes: ['DEFAULT', 'read:multimedia']
}); });
Self.entryOrderPdf = (ctx, id) => Self.printReport(ctx, id, 'entry-order'); Self.entryOrderPdf = (ctx, id) => Self.printReport(ctx, id, 'entry-order');

View File

@ -32,7 +32,7 @@ module.exports = Self => {
path: '/:id/download', path: '/:id/download',
verb: 'GET' verb: 'GET'
}, },
accessScopes: ['read:multimedia'] accessScopes: ['DEFAULT', 'read:multimedia']
}); });
Self.download = async function(ctx, id, options) { Self.download = async function(ctx, id, options) {

View File

@ -32,7 +32,7 @@ module.exports = Self => {
path: '/downloadZip', path: '/downloadZip',
verb: 'GET' verb: 'GET'
}, },
accessScopes: ['read:multimedia'] accessScopes: ['DEFAULT', 'read:multimedia']
}); });
Self.downloadZip = async function(ctx, ids, options) { Self.downloadZip = async function(ctx, ids, options) {

View File

@ -35,7 +35,7 @@ module.exports = Self => {
path: '/:reference/exportation-pdf', path: '/:reference/exportation-pdf',
verb: 'GET' verb: 'GET'
}, },
accessScopes: ['read:multimedia'] accessScopes: ['DEFAULT', 'read:multimedia']
}); });
Self.exportationPdf = (ctx, reference) => Self.printReport(ctx, reference, 'exportation'); Self.exportationPdf = (ctx, reference) => Self.printReport(ctx, reference, 'exportation');

View File

@ -38,7 +38,7 @@ module.exports = Self => {
path: '/:reference/invoice-csv', path: '/:reference/invoice-csv',
verb: 'GET' verb: 'GET'
}, },
accessScopes: ['read:multimedia'] accessScopes: ['DEFAULT', 'read:multimedia']
}); });
Self.invoiceCsv = async reference => { Self.invoiceCsv = async reference => {

View File

@ -40,7 +40,7 @@ module.exports = Self => {
path: '/negativeBasesCsv', path: '/negativeBasesCsv',
verb: 'GET' verb: 'GET'
}, },
accessScopes: ['read:multimedia'] accessScopes: ['DEFAULT', 'read:multimedia']
}); });
Self.negativeBasesCsv = async(ctx, options) => { Self.negativeBasesCsv = async(ctx, options) => {

View File

@ -11,7 +11,7 @@ module.exports = Self => {
path: `/download`, path: `/download`,
verb: 'POST', verb: 'POST',
}, },
accessScopes: ['read:multimedia'] accessScopes: ['DEFAULT', 'read:multimedia']
}); });
Self.download = async() => { Self.download = async() => {

View File

@ -30,7 +30,7 @@ module.exports = Self => {
path: '/:id/cmr', path: '/:id/cmr',
verb: 'GET' verb: 'GET'
}, },
accessScopes: ['read:multimedia'] accessScopes: ['DEFAULT', 'read:multimedia']
}); });
Self.cmr = (ctx, id) => Self.printReport(ctx, id, 'cmr'); Self.cmr = (ctx, id) => Self.printReport(ctx, id, 'cmr');

View File

@ -30,7 +30,7 @@ module.exports = Self => {
path: '/downloadCmrsZip', path: '/downloadCmrsZip',
verb: 'GET' verb: 'GET'
}, },
accessScopes: ['read:multimedia'] accessScopes: ['DEFAULT', 'read:multimedia']
}); });
Self.downloadCmrsZip = async function(ctx, ids, options) { Self.downloadCmrsZip = async function(ctx, ids, options) {

View File

@ -30,7 +30,7 @@ module.exports = Self => {
path: '/downloadZip', path: '/downloadZip',
verb: 'GET' verb: 'GET'
}, },
accessScopes: ['read:multimedia'] accessScopes: ['DEFAULT', 'read:multimedia']
}); });
Self.downloadZip = async function(ctx, id, options) { Self.downloadZip = async function(ctx, id, options) {

View File

@ -35,7 +35,7 @@ module.exports = Self => {
path: '/:id/driver-route-pdf', path: '/:id/driver-route-pdf',
verb: 'GET' verb: 'GET'
}, },
accessScopes: ['read:multimedia'] accessScopes: ['DEFAULT', 'read:multimedia']
}); });

View File

@ -43,14 +43,15 @@ module.exports = Self => {
st.code ticketStateCode, st.code ticketStateCode,
st.name ticketStateName, st.name ticketStateName,
wh.name warehouseName, wh.name warehouseName,
tob.description ticketObservation, tob.description observationDelivery,
tob2.description observationDropOff,
tob2.id,
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,
tob.description,
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,
@ -72,6 +73,9 @@ module.exports = Self => {
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 ticketObservation tob2 ON tob2.ticketFk = t.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

View File

@ -45,7 +45,7 @@ module.exports = Self => {
path: '/:id/campaign-metrics-pdf', path: '/:id/campaign-metrics-pdf',
verb: 'GET' verb: 'GET'
}, },
accessScopes: ['read:multimedia'] accessScopes: ['DEFAULT', 'read:multimedia']
}); });
Self.campaignMetricsPdf = (ctx, id) => Self.printReport(ctx, id, 'supplier-campaign-metrics'); Self.campaignMetricsPdf = (ctx, id) => Self.printReport(ctx, id, 'supplier-campaign-metrics');

View File

@ -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);
};
};

View File

@ -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;
}
});
});

View File

@ -38,7 +38,7 @@ module.exports = Self => {
path: '/:id/delivery-note-csv', path: '/:id/delivery-note-csv',
verb: 'GET' verb: 'GET'
}, },
accessScopes: ['read:multimedia'] accessScopes: ['DEFAULT', 'read:multimedia']
}); });
Self.deliveryNoteCsv = async id => { Self.deliveryNoteCsv = async id => {

View File

@ -42,7 +42,7 @@ module.exports = Self => {
path: '/:id/delivery-note-pdf', path: '/:id/delivery-note-pdf',
verb: 'GET' verb: 'GET'
}, },
accessScopes: ['read:multimedia'] accessScopes: ['DEFAULT', 'read:multimedia']
}); });
Self.deliveryNotePdf = (ctx, id) => Self.printReport(ctx, id, 'delivery-note'); Self.deliveryNotePdf = (ctx, id) => Self.printReport(ctx, id, 'delivery-note');

View File

@ -1,6 +1,7 @@
const UserError = require('vn-loopback/util/user-error'); const UserError = require('vn-loopback/util/user-error');
module.exports = Self => { module.exports = Self => {
require('../methods/ticket-observation/addDropOff')(Self);
Self.rewriteDbError(function(err) { Self.rewriteDbError(function(err) {
if (err.code === 'ER_DUP_ENTRY') if (err.code === 'ER_DUP_ENTRY')
return new UserError(`The observation type can't be repeated`); return new UserError(`The observation type can't be repeated`);

View File

@ -79,7 +79,7 @@ module.exports = Self => {
path: '/extra-community-pdf', path: '/extra-community-pdf',
verb: 'GET' verb: 'GET'
}, },
accessScopes: ['read:multimedia'] accessScopes: ['DEFAULT', 'read:multimedia']
}); });
Self.extraCommunityPdf = ctx => Self.printReport(ctx, null, 'extra-community'); Self.extraCommunityPdf = ctx => Self.printReport(ctx, null, 'extra-community');

View File

@ -30,7 +30,7 @@ module.exports = Self => {
path: `/:id/downloadFile`, path: `/:id/downloadFile`,
verb: 'GET' verb: 'GET'
}, },
accessScopes: ['read:multimedia'] accessScopes: ['DEFAULT', 'read:multimedia']
}); });
Self.downloadFile = async function(ctx, id) { Self.downloadFile = async function(ctx, id) {

View File

@ -99,7 +99,7 @@
{ {
"relation": "user", "relation": "user",
"scope": { "scope": {
"fields": ["email", "name", "nickname", "roleFk"], "fields": ["email", "name", "nickname", "roleFk", "emailVerified"],
"include": [ "include": [
{ {
"relation": "role", "relation": "role",