feat: add time parameter to item_getLack procedure and update related queries
gitea/salix/pipeline/pr-master There was a failure building this commit
Details
gitea/salix/pipeline/pr-master There was a failure building this commit
Details
This commit is contained in:
parent
68c028669d
commit
4680128b8f
|
@ -130,7 +130,7 @@ proc: BEGIN
|
|||
AND i.warehouseOutFk = vWarehouse
|
||||
UNION ALL
|
||||
SELECT r.item_id,
|
||||
r.shipment,
|
||||
util.dayEnd(r.shipment),
|
||||
-r.amount
|
||||
FROM hedera.order_row r
|
||||
JOIN hedera.`order` o ON o.id = r.order_id
|
||||
|
|
|
@ -130,7 +130,7 @@ BEGIN
|
|||
)
|
||||
SELECT 'ticket',
|
||||
s.ticketFk,
|
||||
s.shipped,
|
||||
util.dayEnd(s.shipped),
|
||||
NULL `in`,
|
||||
s.quantity,
|
||||
s.alertLevel,
|
||||
|
@ -190,15 +190,14 @@ BEGIN
|
|||
SELECT * FROM sales
|
||||
UNION ALL
|
||||
SELECT * FROM orders
|
||||
ORDER BY DATE(shipped),
|
||||
(inventorySupplierFk = entityId) DESC,
|
||||
alertLevel DESC,
|
||||
ORDER BY (inventorySupplierFk = entityId) DESC,
|
||||
shipped,
|
||||
isTicket,
|
||||
alertLevel DESC,
|
||||
`order` DESC,
|
||||
isPicked DESC,
|
||||
`in` DESC,
|
||||
`out` DESC,
|
||||
shipped;
|
||||
`out` DESC;
|
||||
|
||||
IF vDated IS NULL THEN
|
||||
SET @a := 0;
|
||||
|
|
|
@ -1,17 +1,17 @@
|
|||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`item_getLack`(
|
||||
vSelf INT,
|
||||
vForce BOOLEAN,
|
||||
vDays INT,
|
||||
vTime TIME,
|
||||
vLongname VARCHAR(255),
|
||||
vProducerName VARCHAR(255),
|
||||
vColor VARCHAR(255),
|
||||
vSize INT,
|
||||
vOrigen INT,
|
||||
vLack INT,
|
||||
vWarehouseFk INT
|
||||
)
|
||||
vForce BOOLEAN,
|
||||
vDays INT,
|
||||
vTime TIME,
|
||||
vLongname VARCHAR(255),
|
||||
vProducerName VARCHAR(255),
|
||||
vColor VARCHAR(255),
|
||||
vSize INT,
|
||||
vOrigen INT,
|
||||
vLack INT,
|
||||
vWarehouseFk INT
|
||||
)
|
||||
BEGIN
|
||||
/**
|
||||
* Calcula una tabla con el máximo negativo visible para cada producto y almacen
|
||||
|
@ -19,9 +19,11 @@ BEGIN
|
|||
* @param vForce Fuerza el recalculo del stock
|
||||
* @param vDays Numero de dias a considerar
|
||||
**/
|
||||
DECLARE vAvailabled DATETIME;
|
||||
SET vAvailabled = ADDTIME(util.VN_CURDATE(), vTime);
|
||||
|
||||
CALL `cache`.stock_refresh(vForce);
|
||||
CALL item_getMinacum(NULL, util.VN_CURDATE(), vDays, vTime, NULL);
|
||||
CALL item_getStock(vWarehouseFk, vAvailabled, NULL);
|
||||
CALL item_getMinacum(NULL, vAvailabled, vDays, NULL);
|
||||
CALL item_getMinETD();
|
||||
CALL item_zoneClosure();
|
||||
|
||||
|
@ -32,24 +34,24 @@ BEGIN
|
|||
i.`size`,
|
||||
i.category,
|
||||
w.name warehouse,
|
||||
SUM(IFNULL(sub.amount,0)) lack,
|
||||
SUM(IFNULL(sub.visible,0)) lack,
|
||||
i.inkFk,
|
||||
IFNULL(im.timed, util.midnight()) timed,
|
||||
IFNULL(izc.timed, util.midnight()) minTimed,
|
||||
o.name originFk
|
||||
FROM (SELECT item_id,
|
||||
warehouse_id,
|
||||
amount
|
||||
FROM cache.stock
|
||||
WHERE amount > 0
|
||||
FROM (SELECT itemFk,
|
||||
vWarehouseFk warehouseFk,
|
||||
visible
|
||||
FROM tmp.itemList
|
||||
WHERE visible <> 0
|
||||
UNION ALL
|
||||
SELECT itemFk,
|
||||
warehouseFk,
|
||||
amount
|
||||
FROM tmp.itemMinacum
|
||||
) sub
|
||||
JOIN warehouse w ON w.id = sub.warehouse_id
|
||||
JOIN item i ON i.id = sub.item_id
|
||||
JOIN warehouse w ON w.id = sub.warehouseFk
|
||||
JOIN item i ON i.id = sub.itemFk
|
||||
LEFT JOIN producer p ON p.id = i.producerFk
|
||||
JOIN itemType it ON it.id = i.typeFk
|
||||
JOIN itemCategory ic ON ic.id = it.categoryFk
|
||||
|
@ -65,11 +67,12 @@ BEGIN
|
|||
AND (vColor IS NULL OR vColor = i.inkFk)
|
||||
AND (vSize IS NULL OR vSize = i.`size`)
|
||||
AND (vOrigen IS NULL OR vOrigen = w.id)
|
||||
AND (vLack IS NULL OR vLack = sub.amount)
|
||||
AND (vLack IS NULL OR vLack = sub.visible)
|
||||
AND (vWarehouseFk IS NULL OR vWarehouseFk = w.id)
|
||||
GROUP BY i.id, w.id
|
||||
HAVING lack < 0;
|
||||
|
||||
DROP TEMPORARY TABLE tmp.itemList;
|
||||
DROP TEMPORARY TABLE tmp.itemMinacum;
|
||||
DROP TEMPORARY TABLE tmp.itemMinETD;
|
||||
DROP TEMPORARY TABLE tmp.itemZoneClosure;
|
||||
|
|
|
@ -3,7 +3,6 @@ CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`item_getMinacum`(
|
|||
vWarehouseFk TINYINT,
|
||||
vAvailabled DATETIME,
|
||||
vRange INT,
|
||||
vTime TIME,
|
||||
vItemFk INT
|
||||
)
|
||||
BEGIN
|
||||
|
@ -18,7 +17,7 @@ BEGIN
|
|||
* @return tmp.itemMinacum
|
||||
*/
|
||||
DECLARE vDated DATE DEFAULT DATE(vAvailabled);
|
||||
DECLARE vDatedTo DATETIME DEFAULT ADDTIME(util.dayEnd(vDated + INTERVAL vRange DAY), IFNULL(vTime,'00:00:00'));
|
||||
DECLARE vDatedTo DATETIME DEFAULT util.dayEnd(vDated + INTERVAL vRange DAY);
|
||||
|
||||
CREATE OR REPLACE TEMPORARY TABLE tmp.itemCalc
|
||||
(INDEX (itemFk, warehouseFk))
|
||||
|
|
|
@ -14,7 +14,6 @@ BEGIN
|
|||
vWarehouseFk,
|
||||
vDateToAdvance,
|
||||
DATEDIFF(DATE_SUB(vDateFuture, INTERVAL 1 DAY), vDateToAdvance),
|
||||
NULL,
|
||||
NULL
|
||||
);
|
||||
|
||||
|
|
|
@ -27,7 +27,6 @@ BEGIN
|
|||
vWarehouseFk,
|
||||
vNewShipped,
|
||||
DATEDIFF(DATE_SUB(vOldShipped, INTERVAL 1 DAY), DATE(vNewShipped)),
|
||||
NULL,
|
||||
NULL
|
||||
);
|
||||
|
||||
|
|
|
@ -40,10 +40,14 @@ BEGIN
|
|||
IF (NOT(NEW.awbFk <=> OLD.awbFk)) AND NEW.awbFk IS NOT NULL THEN
|
||||
CALL travel_throwAwb(NEW.id);
|
||||
END IF;
|
||||
|
||||
|
||||
IF NEW.availabled < NEW.landed THEN
|
||||
SET NEW.availabled = NEW.landed;
|
||||
END IF;
|
||||
|
||||
|
||||
IF NEW.isReceived <> OLD.isReceived AND NEW.landed >= CURDATE() THEN
|
||||
SET NEW.landed = CURDATE();
|
||||
SET NEW.availabled = NOW();
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
|
|
@ -47,6 +47,7 @@ module.exports = Self => {
|
|||
{
|
||||
arg: 'warehouseFk',
|
||||
type: 'number',
|
||||
required: true,
|
||||
description: 'The warehouse id',
|
||||
},
|
||||
{
|
||||
|
@ -58,6 +59,11 @@ module.exports = Self => {
|
|||
arg: 'days',
|
||||
type: 'number',
|
||||
description: 'The range days',
|
||||
},
|
||||
{
|
||||
arg: 'time',
|
||||
type: 'string',
|
||||
description: 'The time',
|
||||
}
|
||||
],
|
||||
returns: [
|
||||
|
@ -80,7 +86,7 @@ module.exports = Self => {
|
|||
Object.assign(myOptions, options);
|
||||
|
||||
const filterKeyOrder = [
|
||||
'id', 'force', 'days', 'longname', 'supplier',
|
||||
'id', 'force', 'days', 'time', 'longname', 'supplier',
|
||||
'colour', 'size', 'originFk',
|
||||
'lack', 'warehouseFk'
|
||||
];
|
||||
|
@ -99,6 +105,8 @@ module.exports = Self => {
|
|||
if (!procedureParams[forceIndex])procedureParams[forceIndex] = true;
|
||||
const daysIndex = filterKeyOrder.indexOf('days');
|
||||
if (!procedureParams[daysIndex])procedureParams[daysIndex] = 2;
|
||||
const timeIndex = filterKeyOrder.indexOf('time');
|
||||
if (!procedureParams[timeIndex])procedureParams[timeIndex] = '23:59';
|
||||
const procedureArgs = Array(procedureParams.length).fill('?').join(', ');
|
||||
|
||||
let query = `CALL vn.item_getLack(${procedureArgs})`;
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
const {models} = require('vn-loopback/server/server');
|
||||
|
||||
describe('Item Lack', () => {
|
||||
fdescribe('Item Lack', () => {
|
||||
let options;
|
||||
let tx;
|
||||
const warehouseId = {warehouseFk: 1, time: '23:59'};
|
||||
const ctx = beforeAll.getCtx();
|
||||
beforeAll.mockLoopBackContext();
|
||||
|
||||
|
@ -17,7 +18,7 @@ describe('Item Lack', () => {
|
|||
});
|
||||
|
||||
it('should return data with NO filters', async() => {
|
||||
const filter = {};
|
||||
const filter = {...warehouseId};
|
||||
const result = await models.Ticket.itemLack(ctx, filter, options);
|
||||
|
||||
expect(result.length).toEqual(2);
|
||||
|
@ -25,6 +26,7 @@ describe('Item Lack', () => {
|
|||
|
||||
it('should return data with filter.id', async() => {
|
||||
const filter = {
|
||||
...warehouseId,
|
||||
id: 5
|
||||
};
|
||||
const result = await models.Ticket.itemLack(ctx, filter, options);
|
||||
|
@ -34,6 +36,7 @@ describe('Item Lack', () => {
|
|||
|
||||
it('should return data with filter.longname', async() => {
|
||||
const filter = {
|
||||
...warehouseId,
|
||||
longname: 'Ranged weapon pistol 9mm'
|
||||
};
|
||||
const result = await models.Ticket.itemLack(ctx, filter, options);
|
||||
|
@ -43,6 +46,7 @@ describe('Item Lack', () => {
|
|||
|
||||
it('should return data with filter.color', async() => {
|
||||
const filter = {
|
||||
...warehouseId,
|
||||
colour: 'WHT'
|
||||
};
|
||||
const result = await models.Ticket.itemLack(ctx, filter, options);
|
||||
|
@ -52,6 +56,7 @@ describe('Item Lack', () => {
|
|||
|
||||
it('should return data with filter.origen', async() => {
|
||||
const filter = {
|
||||
...warehouseId,
|
||||
originFk: 1
|
||||
};
|
||||
const result = await models.Ticket.itemLack(ctx, filter, options);
|
||||
|
@ -61,6 +66,7 @@ describe('Item Lack', () => {
|
|||
|
||||
it('should return data with filter.size', async() => {
|
||||
const filter = {
|
||||
...warehouseId,
|
||||
size: '15'
|
||||
};
|
||||
const result = await models.Ticket.itemLack(ctx, filter, options);
|
||||
|
@ -70,6 +76,7 @@ describe('Item Lack', () => {
|
|||
|
||||
it('should return data with filter.lack', async() => {
|
||||
const filter = {
|
||||
...warehouseId,
|
||||
lack: '-15'
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue