This commit is contained in:
parent
09d7c450a2
commit
b7c9d6ea50
|
@ -55,7 +55,7 @@ BEGIN
|
||||||
sum((s.quantity <= IFNULL(st.amount,0))) hasStock,
|
sum((s.quantity <= IFNULL(st.amount,0))) hasStock,
|
||||||
count(DISTINCT s.id) saleCount,
|
count(DISTINCT s.id) saleCount,
|
||||||
st.name tfState,
|
st.name tfState,
|
||||||
GROUP_CONCAT(DISTINCT i.itemPackingTypeFk ORDER BY i.itemPackingTypeFk) tfIpt,
|
GROUP_CONCAT(DISTINCT ipt.description ORDER BY ipt.description) tfIpt,
|
||||||
t2.ticketFk id,
|
t2.ticketFk id,
|
||||||
t2.state,
|
t2.state,
|
||||||
t2.ipt,
|
t2.ipt,
|
||||||
|
@ -65,16 +65,17 @@ BEGIN
|
||||||
t2.shipped,
|
t2.shipped,
|
||||||
t.shipped tfShipped,
|
t.shipped tfShipped,
|
||||||
t2.totalWithVat,
|
t2.totalWithVat,
|
||||||
t.totalWithVat tfTotalWithVat
|
t.totalWithVat tfTotalWithVat,
|
||||||
|
t.landed destETD
|
||||||
FROM vn.ticket t
|
FROM vn.ticket t
|
||||||
JOIN vn.ticketState ts ON ts.ticketFk = t.id
|
JOIN vn.ticketState ts ON ts.ticketFk = t.id
|
||||||
JOIN vn.state st ON st.id = ts.stateFk
|
JOIN vn.state st ON st.id = ts.stateFk
|
||||||
JOIN vn.saleVolume sv ON t.id = sv.ticketFk
|
JOIN vn.saleVolume sv ON t.id = sv.ticketFk
|
||||||
LEFT JOIN (SELECT
|
JOIN (SELECT
|
||||||
t2.id ticketFk,
|
t2.id ticketFk,
|
||||||
t2.addressFk,
|
t2.addressFk,
|
||||||
st.name state,
|
st.name state,
|
||||||
GROUP_CONCAT(DISTINCT i.itemPackingTypeFk ORDER BY i.itemPackingTypeFk) ipt,
|
GROUP_CONCAT(DISTINCT ipt.description ORDER BY ipt.description) ipt,
|
||||||
t2.shipped,
|
t2.shipped,
|
||||||
t2.totalWithVat
|
t2.totalWithVat
|
||||||
FROM vn.ticket t2
|
FROM vn.ticket t2
|
||||||
|
@ -82,11 +83,13 @@ BEGIN
|
||||||
JOIN vn.item i ON i.id = s.itemFk
|
JOIN vn.item i ON i.id = s.itemFk
|
||||||
JOIN vn.ticketState ts ON ts.ticketFk = t2.id
|
JOIN vn.ticketState ts ON ts.ticketFk = t2.id
|
||||||
JOIN vn.state st ON st.id = ts.stateFk
|
JOIN vn.state st ON st.id = ts.stateFk
|
||||||
|
LEFT JOIN vn.itemPackingType ipt ON ipt.code = i.itemPackingTypeFk
|
||||||
WHERE t2.shipped BETWEEN vDateToAdvance AND util.dayend(vDateToAdvance)
|
WHERE t2.shipped BETWEEN vDateToAdvance AND util.dayend(vDateToAdvance)
|
||||||
AND t2.warehouseFk = vWarehouseFk
|
AND t2.warehouseFk = vWarehouseFk
|
||||||
GROUP BY t2.id) t2 ON t2.addressFk = t.addressFk
|
GROUP BY t2.id) t2 ON t2.addressFk = t.addressFk
|
||||||
JOIN vn.sale s ON s.ticketFk = t.id
|
JOIN vn.sale s ON s.ticketFk = t.id
|
||||||
JOIN vn.item i ON i.id = s.itemFk
|
JOIN vn.item i ON i.id = s.itemFk
|
||||||
|
LEFT JOIN vn.itemPackingType ipt ON ipt.code = i.itemPackingTypeFk
|
||||||
LEFT JOIN tmp.stock st ON st.itemFk = s.itemFk
|
LEFT JOIN tmp.stock st ON st.itemFk = s.itemFk
|
||||||
WHERE t.shipped BETWEEN vDated AND util.dayend(vDated)
|
WHERE t.shipped BETWEEN vDated AND util.dayend(vDated)
|
||||||
AND t.warehouseFk = vWarehouseFk
|
AND t.warehouseFk = vWarehouseFk
|
||||||
|
|
|
@ -689,7 +689,8 @@ INSERT INTO `vn`.`ticket`(`id`, `priority`, `agencyModeFk`,`warehouseFk`,`routeF
|
||||||
(27 ,NULL, 8, 1, NULL, util.VN_CURDATE(), util.VN_CURDATE(), 1101, 'Wolverine', 1, NULL, 0, 1, 5, 1, util.VN_CURDATE()),
|
(27 ,NULL, 8, 1, NULL, util.VN_CURDATE(), util.VN_CURDATE(), 1101, 'Wolverine', 1, NULL, 0, 1, 5, 1, util.VN_CURDATE()),
|
||||||
(28, 1, 8, 1, 1, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1103, 'Phone Box', 123, NULL, 0, 1, 5, 1, util.VN_CURDATE()),
|
(28, 1, 8, 1, 1, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1103, 'Phone Box', 123, NULL, 0, 1, 5, 1, util.VN_CURDATE()),
|
||||||
(29, 1, 8, 1, 1, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1103, 'Phone Box', 123, NULL, 0, 1, 5, 1, util.VN_CURDATE()),
|
(29, 1, 8, 1, 1, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1103, 'Phone Box', 123, NULL, 0, 1, 5, 1, util.VN_CURDATE()),
|
||||||
(30, 1, 8, 1, 1, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1103, 'Phone Box', 123, NULL, 0, 1, 5, 1, util.VN_CURDATE());
|
(30, 1, 8, 1, 1, util.VN_CURDATE(), DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), 1103, 'Phone Box', 123, NULL, 0, 1, 5, 1, util.VN_CURDATE()),
|
||||||
|
(31, 1, 8, 1, 1, DATE_ADD(util.VN_CURDATE(), INTERVAL + 1 DAY), DATE_ADD(util.VN_CURDATE(), INTERVAL + 2 DAY), 1103, 'Phone Box', 123, NULL, 0, 1, 5, 1, util.VN_CURDATE());
|
||||||
|
|
||||||
INSERT INTO `vn`.`ticketObservation`(`id`, `ticketFk`, `observationTypeFk`, `description`)
|
INSERT INTO `vn`.`ticketObservation`(`id`, `ticketFk`, `observationTypeFk`, `description`)
|
||||||
VALUES
|
VALUES
|
||||||
|
@ -990,7 +991,8 @@ INSERT INTO `vn`.`sale`(`id`, `itemFk`, `ticketFk`, `concept`, `quantity`, `pric
|
||||||
(33, 5, 14, 'Ranged weapon pistol 9mm', 50, 1.79, 0, 0, 0, util.VN_CURDATE()),
|
(33, 5, 14, 'Ranged weapon pistol 9mm', 50, 1.79, 0, 0, 0, util.VN_CURDATE()),
|
||||||
(34, 4, 28, 'Melee weapon heavy shield 1x0.5m', 20, 1.72, 0, 0, 0, util.VN_CURDATE()),
|
(34, 4, 28, 'Melee weapon heavy shield 1x0.5m', 20, 1.72, 0, 0, 0, util.VN_CURDATE()),
|
||||||
(35, 4, 29, 'Melee weapon heavy shield 1x0.5m', 20, 1.72, 0, 0, 0, util.VN_CURDATE()),
|
(35, 4, 29, 'Melee weapon heavy shield 1x0.5m', 20, 1.72, 0, 0, 0, util.VN_CURDATE()),
|
||||||
(36, 4, 30, 'Melee weapon heavy shield 1x0.5m', 20, 1.72, 0, 0, 0, util.VN_CURDATE());
|
(36, 4, 30, 'Melee weapon heavy shield 1x0.5m', 20, 1.72, 0, 0, 0, util.VN_CURDATE()),
|
||||||
|
(37, 4, 31, 'Melee weapon heavy shield 1x0.5m', 20, 1.72, 0, 0, 0, util.VN_CURDATE());
|
||||||
|
|
||||||
INSERT INTO `vn`.`saleChecked`(`saleFk`, `isChecked`)
|
INSERT INTO `vn`.`saleChecked`(`saleFk`, `isChecked`)
|
||||||
VALUES
|
VALUES
|
||||||
|
|
|
@ -11,7 +11,7 @@ describe('SalesMonitor salesFilter()', () => {
|
||||||
const filter = {order: 'id DESC'};
|
const filter = {order: 'id DESC'};
|
||||||
const result = await models.SalesMonitor.salesFilter(ctx, filter, options);
|
const result = await models.SalesMonitor.salesFilter(ctx, filter, options);
|
||||||
|
|
||||||
expect(result.length).toEqual(30);
|
expect(result.length).toEqual(31);
|
||||||
|
|
||||||
await tx.rollback();
|
await tx.rollback();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
@ -87,7 +87,7 @@ describe('SalesMonitor salesFilter()', () => {
|
||||||
const filter = {};
|
const filter = {};
|
||||||
const result = await models.SalesMonitor.salesFilter(ctx, filter, options);
|
const result = await models.SalesMonitor.salesFilter(ctx, filter, options);
|
||||||
|
|
||||||
expect(result.length).toEqual(30);
|
expect(result.length).toEqual(31);
|
||||||
|
|
||||||
await tx.rollback();
|
await tx.rollback();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
@ -130,7 +130,7 @@ describe('SalesMonitor salesFilter()', () => {
|
||||||
const length = result.length;
|
const length = result.length;
|
||||||
const anyResult = result[Math.floor(Math.random() * Math.floor(length))];
|
const anyResult = result[Math.floor(Math.random() * Math.floor(length))];
|
||||||
|
|
||||||
expect(length).toEqual(13);
|
expect(length).toEqual(14);
|
||||||
expect(anyResult.state).toMatch(/(Libre|Arreglar)/);
|
expect(anyResult.state).toMatch(/(Libre|Arreglar)/);
|
||||||
|
|
||||||
await tx.rollback();
|
await tx.rollback();
|
||||||
|
@ -171,7 +171,7 @@ describe('SalesMonitor salesFilter()', () => {
|
||||||
const filter = {};
|
const filter = {};
|
||||||
const result = await models.SalesMonitor.salesFilter(ctx, filter, options);
|
const result = await models.SalesMonitor.salesFilter(ctx, filter, options);
|
||||||
|
|
||||||
expect(result.length).toEqual(26);
|
expect(result.length).toEqual(27);
|
||||||
|
|
||||||
await tx.rollback();
|
await tx.rollback();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|
|
@ -8,23 +8,17 @@ module.exports = Self => {
|
||||||
description: 'Find all tickets that can be moved to the present',
|
description: 'Find all tickets that can be moved to the present',
|
||||||
accessType: 'READ',
|
accessType: 'READ',
|
||||||
accepts: [
|
accepts: [
|
||||||
{
|
|
||||||
arg: 'vDated',
|
|
||||||
type: 'date',
|
|
||||||
description: 'The date in question',
|
|
||||||
required: false
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
arg: 'warehouseFk',
|
arg: 'warehouseFk',
|
||||||
type: 'number',
|
type: 'number',
|
||||||
description: 'Warehouse identifier',
|
description: 'Warehouse identifier',
|
||||||
required: false
|
required: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
arg: 'shipped',
|
arg: 'shipped',
|
||||||
type: 'date',
|
type: 'date',
|
||||||
description: 'Origin shipped',
|
description: 'Origin shipped',
|
||||||
required: false
|
required: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
arg: 'tfShipped',
|
arg: 'tfShipped',
|
||||||
|
@ -86,7 +80,6 @@ module.exports = Self => {
|
||||||
|
|
||||||
Self.getTicketsAdvance = async (ctx, options) => {
|
Self.getTicketsAdvance = async (ctx, options) => {
|
||||||
const args = ctx.args;
|
const args = ctx.args;
|
||||||
console.log(args);
|
|
||||||
const conn = Self.dataSource.connector;
|
const conn = Self.dataSource.connector;
|
||||||
const myOptions = {};
|
const myOptions = {};
|
||||||
|
|
||||||
|
@ -95,8 +88,8 @@ module.exports = Self => {
|
||||||
|
|
||||||
const where = buildFilter(ctx.args, (param, value) => {
|
const where = buildFilter(ctx.args, (param, value) => {
|
||||||
switch (param) {
|
switch (param) {
|
||||||
case 'shipped':
|
// case 'shipped':
|
||||||
return { 'f.shipped': value };
|
// return { 'f.shipped': value };
|
||||||
case 'tfShipped':
|
case 'tfShipped':
|
||||||
return { 'f.tfShipped': value };
|
return { 'f.tfShipped': value };
|
||||||
case 'ipt':
|
case 'ipt':
|
||||||
|
@ -116,7 +109,7 @@ module.exports = Self => {
|
||||||
|
|
||||||
stmt = new ParameterizedSQL(
|
stmt = new ParameterizedSQL(
|
||||||
`CALL vn.ticket_canAdvance(?,?)`,
|
`CALL vn.ticket_canAdvance(?,?)`,
|
||||||
[new Date(), args.warehouseFk]);
|
[args.shipped, args.warehouseFk]);
|
||||||
|
|
||||||
stmts.push(stmt);
|
stmts.push(stmt);
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,174 @@
|
||||||
|
const models = require('vn-loopback/server/server').models;
|
||||||
|
|
||||||
|
fdescribe('TicketFuture getTicketsAdvance()', () => {
|
||||||
|
const today = new Date();
|
||||||
|
today.setHours(0, 0, 0, 0);
|
||||||
|
let tomorrow = new Date();
|
||||||
|
tomorrow.setDate(today.getDate() + 1);
|
||||||
|
|
||||||
|
it('should return the tickets passing the required data', async () => {
|
||||||
|
const tx = await models.Ticket.beginTransaction({});
|
||||||
|
|
||||||
|
try {
|
||||||
|
const options = { transaction: tx };
|
||||||
|
|
||||||
|
const args = {
|
||||||
|
shipped: tomorrow,
|
||||||
|
warehouseFk: 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
const ctx = { req: { accessToken: { userId: 9 } }, args };
|
||||||
|
const result = await models.Ticket.getTicketsAdvance(ctx, options);
|
||||||
|
|
||||||
|
expect(result.length).toEqual(1);
|
||||||
|
await tx.rollback();
|
||||||
|
} catch (e) {
|
||||||
|
await tx.rollback();
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should return the tickets matching the origin grouped state', async () => {
|
||||||
|
const tx = await models.Ticket.beginTransaction({});
|
||||||
|
|
||||||
|
try {
|
||||||
|
const options = { transaction: tx };
|
||||||
|
|
||||||
|
const args = {
|
||||||
|
shipped: tomorrow,
|
||||||
|
warehouseFk: 1,
|
||||||
|
state: 'OK'
|
||||||
|
};
|
||||||
|
|
||||||
|
const ctx = { req: { accessToken: { userId: 9 } }, args };
|
||||||
|
const result = await models.Ticket.getTicketsAdvance(ctx, options);
|
||||||
|
|
||||||
|
expect(result.length).toEqual(1);
|
||||||
|
|
||||||
|
await tx.rollback();
|
||||||
|
} catch (e) {
|
||||||
|
await tx.rollback();
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should return the tickets matching the destination grouped state', async () => {
|
||||||
|
const tx = await models.Ticket.beginTransaction({});
|
||||||
|
|
||||||
|
try {
|
||||||
|
const options = { transaction: tx };
|
||||||
|
|
||||||
|
const args = {
|
||||||
|
shipped: tomorrow,
|
||||||
|
warehouseFk: 1,
|
||||||
|
tfState: 'Libre'
|
||||||
|
};
|
||||||
|
|
||||||
|
const ctx = { req: { accessToken: { userId: 9 } }, args };
|
||||||
|
const result = await models.Ticket.getTicketsAdvance(ctx, options);
|
||||||
|
|
||||||
|
expect(result.length).toEqual(1);
|
||||||
|
|
||||||
|
await tx.rollback();
|
||||||
|
} catch (e) {
|
||||||
|
await tx.rollback();
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should return the tickets matching the origin IPT', async () => {
|
||||||
|
const tx = await models.Ticket.beginTransaction({});
|
||||||
|
|
||||||
|
try {
|
||||||
|
const options = { transaction: tx };
|
||||||
|
|
||||||
|
const args = {
|
||||||
|
shipped: tomorrow,
|
||||||
|
warehouseFk: 1,
|
||||||
|
ipt: 'Vertical'
|
||||||
|
};
|
||||||
|
|
||||||
|
const ctx = { req: { accessToken: { userId: 9 } }, args };
|
||||||
|
const result = await models.Ticket.getTicketsAdvance(ctx, options);
|
||||||
|
|
||||||
|
expect(result.length).toEqual(0);
|
||||||
|
|
||||||
|
await tx.rollback();
|
||||||
|
} catch (e) {
|
||||||
|
await tx.rollback();
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should return the tickets matching the destination IPT', async () => {
|
||||||
|
const tx = await models.Ticket.beginTransaction({});
|
||||||
|
|
||||||
|
try {
|
||||||
|
const options = { transaction: tx };
|
||||||
|
|
||||||
|
const args = {
|
||||||
|
shipped: tomorrow,
|
||||||
|
warehouseFk: 1,
|
||||||
|
tfIpt: 'Vertical'
|
||||||
|
};
|
||||||
|
|
||||||
|
const ctx = { req: { accessToken: { userId: 9 } }, args };
|
||||||
|
const result = await models.Ticket.getTicketsAdvance(ctx, options);
|
||||||
|
|
||||||
|
expect(result.length).toEqual(0);
|
||||||
|
|
||||||
|
await tx.rollback();
|
||||||
|
} catch (e) {
|
||||||
|
await tx.rollback();
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should return the tickets matching the origin ID', async () => {
|
||||||
|
const tx = await models.Ticket.beginTransaction({});
|
||||||
|
|
||||||
|
try {
|
||||||
|
const options = { transaction: tx };
|
||||||
|
|
||||||
|
const args = {
|
||||||
|
shipped: tomorrow,
|
||||||
|
warehouseFk: 1,
|
||||||
|
id: 31
|
||||||
|
};
|
||||||
|
|
||||||
|
const ctx = { req: { accessToken: { userId: 9 } }, args };
|
||||||
|
const result = await models.Ticket.getTicketsAdvance(ctx, options);
|
||||||
|
|
||||||
|
expect(result.length).toEqual(1);
|
||||||
|
|
||||||
|
await tx.rollback();
|
||||||
|
} catch (e) {
|
||||||
|
await tx.rollback();
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should return the tickets matching the destination ID', async () => {
|
||||||
|
const tx = await models.Ticket.beginTransaction({});
|
||||||
|
|
||||||
|
try {
|
||||||
|
const options = { transaction: tx };
|
||||||
|
|
||||||
|
const args = {
|
||||||
|
shipped: tomorrow,
|
||||||
|
warehouseFk: 1,
|
||||||
|
ticketFuture: 12
|
||||||
|
};
|
||||||
|
|
||||||
|
const ctx = { req: { accessToken: { userId: 9 } }, args };
|
||||||
|
const result = await models.Ticket.getTicketsAdvance(ctx, options);
|
||||||
|
|
||||||
|
expect(result.length).toEqual(1);
|
||||||
|
|
||||||
|
await tx.rollback();
|
||||||
|
} catch (e) {
|
||||||
|
await tx.rollback();
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
|
@ -11,7 +11,7 @@ describe('ticket filter()', () => {
|
||||||
const filter = {order: 'id DESC'};
|
const filter = {order: 'id DESC'};
|
||||||
const result = await models.Ticket.filter(ctx, filter, options);
|
const result = await models.Ticket.filter(ctx, filter, options);
|
||||||
|
|
||||||
expect(result.length).toEqual(30);
|
expect(result.length).toEqual(31);
|
||||||
|
|
||||||
await tx.rollback();
|
await tx.rollback();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
@ -87,7 +87,7 @@ describe('ticket filter()', () => {
|
||||||
const filter = {};
|
const filter = {};
|
||||||
const result = await models.Ticket.filter(ctx, filter, options);
|
const result = await models.Ticket.filter(ctx, filter, options);
|
||||||
|
|
||||||
expect(result.length).toEqual(30);
|
expect(result.length).toEqual(31);
|
||||||
|
|
||||||
await tx.rollback();
|
await tx.rollback();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
@ -130,7 +130,7 @@ describe('ticket filter()', () => {
|
||||||
const length = result.length;
|
const length = result.length;
|
||||||
const anyResult = result[Math.floor(Math.random() * Math.floor(length))];
|
const anyResult = result[Math.floor(Math.random() * Math.floor(length))];
|
||||||
|
|
||||||
expect(length).toEqual(13);
|
expect(length).toEqual(14);
|
||||||
expect(anyResult.state).toMatch(/(Libre|Arreglar)/);
|
expect(anyResult.state).toMatch(/(Libre|Arreglar)/);
|
||||||
|
|
||||||
await tx.rollback();
|
await tx.rollback();
|
||||||
|
@ -175,7 +175,7 @@ describe('ticket filter()', () => {
|
||||||
const filter = {};
|
const filter = {};
|
||||||
const result = await models.Ticket.filter(ctx, filter, options);
|
const result = await models.Ticket.filter(ctx, filter, options);
|
||||||
|
|
||||||
expect(result.length).toEqual(26);
|
expect(result.length).toEqual(27);
|
||||||
|
|
||||||
await tx.rollback();
|
await tx.rollback();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
@ -232,7 +232,7 @@ describe('ticket filter()', () => {
|
||||||
const filter = {};
|
const filter = {};
|
||||||
const result = await models.Ticket.filter(ctx, filter, options);
|
const result = await models.Ticket.filter(ctx, filter, options);
|
||||||
|
|
||||||
expect(result.length).toEqual(25);
|
expect(result.length).toEqual(26);
|
||||||
|
|
||||||
await tx.rollback();
|
await tx.rollback();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
@ -270,7 +270,7 @@ describe('ticket filter()', () => {
|
||||||
const filter = {};
|
const filter = {};
|
||||||
const result = await models.Ticket.filter(ctx, filter, options);
|
const result = await models.Ticket.filter(ctx, filter, options);
|
||||||
|
|
||||||
expect(result.length).toEqual(30);
|
expect(result.length).toEqual(31);
|
||||||
|
|
||||||
await tx.rollback();
|
await tx.rollback();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|
|
@ -87,7 +87,7 @@ describe('sale priceDifference()', () => {
|
||||||
const secondtItem = result.items[1];
|
const secondtItem = result.items[1];
|
||||||
|
|
||||||
expect(firstItem.movable).toEqual(410);
|
expect(firstItem.movable).toEqual(410);
|
||||||
expect(secondtItem.movable).toEqual(1810);
|
expect(secondtItem.movable).toEqual(1790);
|
||||||
|
|
||||||
await tx.rollback();
|
await tx.rollback();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|
|
@ -4,7 +4,8 @@
|
||||||
<vn-date-picker
|
<vn-date-picker
|
||||||
vn-one
|
vn-one
|
||||||
label="Origin date"
|
label="Origin date"
|
||||||
ng-model="filter.shipped">
|
ng-model="filter.shipped"
|
||||||
|
required="true">
|
||||||
</vn-date-picker>
|
</vn-date-picker>
|
||||||
<vn-date-picker
|
<vn-date-picker
|
||||||
vn-one
|
vn-one
|
||||||
|
@ -16,7 +17,7 @@
|
||||||
<vn-autocomplete vn-one
|
<vn-autocomplete vn-one
|
||||||
data="$ctrl.itemPackingTypes"
|
data="$ctrl.itemPackingTypes"
|
||||||
label="Origin IPT"
|
label="Origin IPT"
|
||||||
value-field="code"
|
value-field="name"
|
||||||
show-field="name"
|
show-field="name"
|
||||||
ng-model="filter.ipt"
|
ng-model="filter.ipt"
|
||||||
info="IPT">
|
info="IPT">
|
||||||
|
@ -27,7 +28,7 @@
|
||||||
<vn-autocomplete vn-one
|
<vn-autocomplete vn-one
|
||||||
data="$ctrl.itemPackingTypes"
|
data="$ctrl.itemPackingTypes"
|
||||||
label="Destination IPT"
|
label="Destination IPT"
|
||||||
value-field="code"
|
value-field="name"
|
||||||
show-field="name"
|
show-field="name"
|
||||||
ng-model="filter.tfIpt"
|
ng-model="filter.tfIpt"
|
||||||
info="IPT">
|
info="IPT">
|
||||||
|
|
|
@ -1 +1,5 @@
|
||||||
Advance tickets: Advance tickets
|
Advance tickets: Advance tickets
|
||||||
|
Fruits and vegetables: Fruits and vegetables
|
||||||
|
Vertical: Vertical
|
||||||
|
Horizontal: Horizontal
|
||||||
|
Feed: Feed
|
||||||
|
|
|
@ -1 +1,5 @@
|
||||||
Advance tickets: Adelantar tickets
|
Advance tickets: Adelantar tickets
|
||||||
|
Fruits and vegetables: Frutas y verduras
|
||||||
|
Vertical: Vertical
|
||||||
|
Horizontal: Horizontal
|
||||||
|
Feed: Pienso
|
||||||
|
|
|
@ -37,9 +37,6 @@
|
||||||
check-field="checked">
|
check-field="checked">
|
||||||
</vn-multi-check>
|
</vn-multi-check>
|
||||||
</th>
|
</th>
|
||||||
<th field="totalWithVat">
|
|
||||||
<span translate>Import</span>
|
|
||||||
</th>
|
|
||||||
<th field="ticketFk">
|
<th field="ticketFk">
|
||||||
<span translate>Origin ID</span>
|
<span translate>Origin ID</span>
|
||||||
</th>
|
</th>
|
||||||
|
@ -49,9 +46,15 @@
|
||||||
<th field="ipt">
|
<th field="ipt">
|
||||||
<span>IPT</span>
|
<span>IPT</span>
|
||||||
</th>
|
</th>
|
||||||
|
<th field="totalWithVat">
|
||||||
|
<span translate>Import</span>
|
||||||
|
</th>
|
||||||
<th field="ticketFuture">
|
<th field="ticketFuture">
|
||||||
<span translate>Destination ID</span>
|
<span translate>Destination ID</span>
|
||||||
</th>
|
</th>
|
||||||
|
<th field="destETD">
|
||||||
|
<span translate>Destination ETD</span>
|
||||||
|
</th>
|
||||||
<th field="tfState">
|
<th field="tfState">
|
||||||
<span translate>Destination State</span>
|
<span translate>Destination State</span>
|
||||||
</th>
|
</th>
|
||||||
|
@ -61,12 +64,6 @@
|
||||||
<th field="lines">
|
<th field="lines">
|
||||||
<span translate>Lines</span>
|
<span translate>Lines</span>
|
||||||
</th>
|
</th>
|
||||||
<!-- <th field="destETD">
|
|
||||||
<span translate>Destination ETD</span>
|
|
||||||
</th>
|
|
||||||
<th field="stock">
|
|
||||||
<span translate>Stock</span>
|
|
||||||
</th> -->
|
|
||||||
<th field="hasStock">
|
<th field="hasStock">
|
||||||
<span>Stock</span>
|
<span>Stock</span>
|
||||||
</th>
|
</th>
|
||||||
|
@ -86,11 +83,6 @@
|
||||||
vn-click-stop>
|
vn-click-stop>
|
||||||
</vn-check>
|
</vn-check>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
|
||||||
<span class="chip {{$ctrl.totalPriceColor(ticket.totalWithVat)}}">
|
|
||||||
{{::(ticket.totalWithVat ? ticket.totalWithVat : 0) | currency: 'EUR': 2}}
|
|
||||||
</span>
|
|
||||||
</td>
|
|
||||||
<td>
|
<td>
|
||||||
<span
|
<span
|
||||||
ng-click="ticketDescriptor.show($event, ticket.id)"
|
ng-click="ticketDescriptor.show($event, ticket.id)"
|
||||||
|
@ -98,11 +90,6 @@
|
||||||
{{::ticket.id | dashIfEmpty}}
|
{{::ticket.id | dashIfEmpty}}
|
||||||
</span>
|
</span>
|
||||||
</td>
|
</td>
|
||||||
<!-- <td shrink-date>
|
|
||||||
<span class="chip {{$ctrl.compareDate(ticket.originETD)}}">
|
|
||||||
{{::ticket.originETD | date: 'dd/MM/yyyy'}}
|
|
||||||
</span>
|
|
||||||
</td> -->
|
|
||||||
<td>
|
<td>
|
||||||
<span
|
<span
|
||||||
class="chip {{$ctrl.stateColor(ticket.state)}}">
|
class="chip {{$ctrl.stateColor(ticket.state)}}">
|
||||||
|
@ -110,6 +97,11 @@
|
||||||
</span>
|
</span>
|
||||||
</td>
|
</td>
|
||||||
<td>{{::ticket.ipt | dashIfEmpty}}</td>
|
<td>{{::ticket.ipt | dashIfEmpty}}</td>
|
||||||
|
<td>
|
||||||
|
<span class="chip {{$ctrl.totalPriceColor(ticket.totalWithVat)}}">
|
||||||
|
{{::(ticket.totalWithVat ? ticket.totalWithVat : 0) | currency: 'EUR': 2}}
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<span
|
<span
|
||||||
ng-click="ticketDescriptor.show($event, ticket.ticketFuture)"
|
ng-click="ticketDescriptor.show($event, ticket.ticketFuture)"
|
||||||
|
@ -117,17 +109,17 @@
|
||||||
{{::ticket.ticketFuture | dashIfEmpty}}
|
{{::ticket.ticketFuture | dashIfEmpty}}
|
||||||
</span>
|
</span>
|
||||||
</td>
|
</td>
|
||||||
|
<td shrink-date>
|
||||||
|
<span class="chip {{$ctrl.compareDate(ticket.destETD)}}">
|
||||||
|
{{::ticket.destETD | date: 'dd/MM/yyyy'}}
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<span
|
<span
|
||||||
class="chip {{$ctrl.stateColor(ticket.tfState)}}">
|
class="chip {{$ctrl.stateColor(ticket.tfState)}}">
|
||||||
{{::ticket.tfState | dashIfEmpty}}
|
{{::ticket.tfState | dashIfEmpty}}
|
||||||
</span>
|
</span>
|
||||||
</td>
|
</td>
|
||||||
<!-- <td shrink-date>
|
|
||||||
<span class="chip {{$ctrl.compareDate(ticket.destETD)}}">
|
|
||||||
{{::ticket.destETD | date: 'dd/MM/yyyy'}}
|
|
||||||
</span>
|
|
||||||
</td> -->
|
|
||||||
<td>{{::ticket.liters | dashIfEmpty}}</td>
|
<td>{{::ticket.liters | dashIfEmpty}}</td>
|
||||||
<td>{{::ticket.lines | dashIfEmpty}}</td>
|
<td>{{::ticket.lines | dashIfEmpty}}</td>
|
||||||
<td>{{::ticket.hasStock | dashIfEmpty}}</td>
|
<td>{{::ticket.hasStock | dashIfEmpty}}</td>
|
||||||
|
|
|
@ -19,12 +19,20 @@ export default class Controller extends Section {
|
||||||
field: 'tfState',
|
field: 'tfState',
|
||||||
searchable: false
|
searchable: false
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
field: 'totalWithVat',
|
||||||
|
searchable: false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'tfTotalWithVat',
|
||||||
|
searchable: false
|
||||||
|
},
|
||||||
{
|
{
|
||||||
field: 'ipt',
|
field: 'ipt',
|
||||||
autocomplete: {
|
autocomplete: {
|
||||||
url: 'ItemPackingTypes',
|
url: 'ItemPackingTypes',
|
||||||
showField: 'description',
|
showField: 'description',
|
||||||
valueField: 'code'
|
valueField: 'description'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -32,7 +40,7 @@ export default class Controller extends Section {
|
||||||
autocomplete: {
|
autocomplete: {
|
||||||
url: 'ItemPackingTypes',
|
url: 'ItemPackingTypes',
|
||||||
showField: 'description',
|
showField: 'description',
|
||||||
valueField: 'code'
|
valueField: 'description'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
@ -95,7 +103,8 @@ export default class Controller extends Section {
|
||||||
}
|
}
|
||||||
|
|
||||||
moveTicketsAdvance() {
|
moveTicketsAdvance() {
|
||||||
let params = { tickets: this.checked };
|
const params = { tickets: this.checked };
|
||||||
|
console.log(params);
|
||||||
return this.$http.post('Tickets/merge', params)
|
return this.$http.post('Tickets/merge', params)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
this.$.model.refresh();
|
this.$.model.refresh();
|
||||||
|
|
|
@ -1,2 +1,6 @@
|
||||||
Advance tickets: Advance tickets
|
Advance tickets: Advance tickets
|
||||||
Success: Tickets moved successfully!
|
Success: Tickets moved successfully!
|
||||||
|
Fruits and vegetables: Fruits and vegetables
|
||||||
|
Vertical: Vertical
|
||||||
|
Horizontal: Horizontal
|
||||||
|
Feed: Feed
|
||||||
|
|
|
@ -4,3 +4,7 @@ Advance confirmation: ¿Desea adelantar {{checked}} tickets?
|
||||||
Success: Tickets movidos correctamente
|
Success: Tickets movidos correctamente
|
||||||
Lines: Líneas
|
Lines: Líneas
|
||||||
Liters: Litros
|
Liters: Litros
|
||||||
|
Fruits and vegetables: Frutas y verduras
|
||||||
|
Vertical: Vertical
|
||||||
|
Horizontal: Horizontal
|
||||||
|
Feed: Pienso
|
||||||
|
|
Loading…
Reference in New Issue