5983_inventory_parking #1677
|
@ -0,0 +1,64 @@
|
|||
|
||||
DELIMITER $$
|
||||
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelving_inventory`(vParkingFromFk VARCHAR(8), vParkingToFk VARCHAR(8))
|
||||
BEGIN
|
||||
/**
|
||||
* Devuelve un listado de ubicaciones a revisar
|
||||
*
|
||||
* @param vParkingFromFk Parking de partida, identificador de parking
|
||||
* @param vParkingToFk Parking de llegada, identificador de parking
|
||||
*/
|
||||
|
||||
DECLARE vSectorFk INT;
|
||||
DECLARE vPickingOrderFrom INT;
|
||||
DECLARE vPickingOrderTo INT;
|
||||
|
||||
SELECT p.sectorFk, p.pickingOrder INTO vSectorFk, vPickingOrderFrom
|
||||
FROM parking p
|
||||
|
||||
WHERE p.code = vParkingFromFk COLLATE 'utf8mb3_general_ci';
|
||||
|
||||
SELECT p.pickingOrder INTO vPickingOrderTo
|
||||
FROM parking p
|
||||
WHERE p.code = vParkingToFk COLLATE 'utf8mb3_general_ci';
|
||||
|
||||
CALL visible_getMisfit(vSectorFk);
|
||||
|
||||
SELECT ish.id,
|
||||
p.pickingOrder,
|
||||
p.code parking,
|
||||
ish.shelvingFk,
|
||||
ish.itemFk,
|
||||
i.longName,
|
||||
ish.visible,
|
||||
p.sectorFk,
|
||||
it.workerFk buyer,
|
||||
CONCAT('http:',ic.url, '/catalog/1600x900/',i.image) urlImage,
|
||||
ish.isChecked,
|
||||
CASE
|
||||
WHEN s.notPrepared > sm.parked THEN 0
|
||||
WHEN sm.visible > sm.parked THEN 1
|
||||
ELSE 2
|
||||
END priority
|
||||
FROM itemShelving ish
|
||||
JOIN item i ON i.id = ish.itemFk
|
||||
JOIN itemType it ON it.id = i.typeFk
|
||||
JOIN tmp.stockMisfit sm ON sm.itemFk = ish.itemFk
|
||||
JOIN shelving sh ON sh.code = ish.shelvingFk
|
||||
JOIN parking p ON p.id = sh.parkingFk
|
||||
JOIN (SELECT s.itemFk, sum(s.quantity) notPrepared
|
||||
FROM sale s
|
||||
JOIN ticket t ON t.id = s.ticketFk
|
||||
JOIN warehouse w ON w.id = t.warehouseFk
|
||||
JOIN config c ON c.mainWarehouseFk = w.id
|
||||
WHERE t.shipped BETWEEN util.VN_CURDATE()
|
||||
AND util.dayEnd(util.VN_CURDATE())
|
||||
jgallego
commented
et convé gastar util.dayEnd torna 23:59:59 et convé gastar util.dayEnd torna 23:59:59
sergiodt
commented
Canviat Canviat
|
||||
AND s.isPicked = FALSE
|
||||
GROUP BY s.itemFk) s ON s.itemFk = i.id
|
||||
JOIN hedera.imageConfig ic
|
||||
WHERE p.pickingOrder BETWEEN vPickingOrderFrom AND vPickingOrderTo
|
||||
AND p.sectorFk = vSectorFk
|
||||
ORDER BY p.pickingOrder;
|
||||
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
|
@ -37,7 +37,7 @@ ALTER TABLE `vn`.`ticket` AUTO_INCREMENT = 1;
|
|||
|
||||
INSERT INTO `salix`.`AccessToken` (`id`, `ttl`, `created`, `userId`)
|
||||
VALUES
|
||||
('DEFAULT_TOKEN', '1209600', util.VN_CURDATE(), 66);
|
||||
('DEFAULT_TOKEN', '1209600', CURDATE(), 66);
|
||||
|
||||
INSERT INTO `salix`.`printConfig` (`id`, `itRecipient`, `incidencesEmail`)
|
||||
VALUES
|
||||
|
@ -2953,3 +2953,8 @@ INSERT INTO `vn`.`invoiceInSerial` (`code`, `description`, `cplusTerIdNifFk`, `t
|
|||
('E', 'Midgard', 1, 'CEE'),
|
||||
('R', 'Jotunheim', 1, 'NATIONAL'),
|
||||
('W', 'Vanaheim', 1, 'WORLD');
|
||||
|
||||
|
||||
INSERT INTO `hedera`.`imageConfig` (`id`, `maxSize`, `useXsendfile`, `url`)
|
||||
VALUES
|
||||
(1, 0, 0, 'marvel.com');
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
module.exports = Self => {
|
||||
Self.remoteMethod('getInventory', {
|
||||
description: 'Get list of itemShelving to review between two parking code',
|
||||
accessType: 'WRITE',
|
||||
accepts: [{
|
||||
arg: 'parkingFrom',
|
||||
type: 'string',
|
||||
required: true,
|
||||
description: 'Parking code from'
|
||||
},
|
||||
{
|
||||
arg: 'parkingTo',
|
||||
type: 'string',
|
||||
required: true,
|
||||
description: 'Parking code to'
|
||||
}],
|
||||
returns: {
|
||||
type: ['object'],
|
||||
root: true
|
||||
},
|
||||
http: {
|
||||
path: `/getInventory`,
|
||||
verb: 'POST'
|
||||
}
|
||||
});
|
||||
|
||||
Self.getInventory = async(parkingFrom, parkingTo, options) => {
|
||||
const myOptions = {};
|
||||
|
||||
if (typeof options == 'object')
|
||||
Object.assign(myOptions, options);
|
||||
|
||||
const [result] = await Self.rawSql(`CALL vn.itemShelving_inventory(?, ?)`, [parkingFrom, parkingTo], myOptions);
|
||||
|
||||
return result;
|
||||
};
|
||||
};
|
|
@ -0,0 +1,24 @@
|
|||
const models = require('vn-loopback/server/server').models;
|
||||
|
||||
describe('itemShelving getInventory()', () => {
|
||||
it('should return a list of itemShelvings', async() => {
|
||||
const tx = await models.ItemShelving.beginTransaction({});
|
||||
|
||||
let response;
|
||||
try {
|
||||
const options = {transaction: tx};
|
||||
await models.ItemShelving.rawSql(`
|
||||
jgallego
commented
gastar funcions natives de loopback gastar funcions natives de loopback
alexm
commented
Si, ho vaig pensar, pero no tenim el model config en salix. Per no ficarlo per un camp(id i mainWarehouseFk) Si, ho vaig pensar, pero no tenim el model config en salix. Per no ficarlo per un camp(id i mainWarehouseFk)
|
||||
UPDATE vn.config
|
||||
SET mainWarehouseFk=1
|
||||
WHERE id=1
|
||||
`, null, options);
|
||||
response = await models.ItemShelving.getInventory('100-01', 'LR-02-3', options);
|
||||
await tx.rollback();
|
||||
} catch (e) {
|
||||
await tx.rollback();
|
||||
throw e;
|
||||
}
|
||||
|
||||
expect(response.length).toEqual(2);
|
||||
});
|
||||
});
|
|
@ -1,3 +1,4 @@
|
|||
module.exports = Self => {
|
||||
require('../methods/item-shelving/deleteItemShelvings')(Self);
|
||||
require('../methods/item-shelving/getInventory')(Self);
|
||||
};
|
||||
|
|
|
@ -23,6 +23,9 @@
|
|||
},
|
||||
"isChecked": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"visible": {
|
||||
"type": "number"
|
||||
}
|
||||
},
|
||||
"relations": {
|
||||
|
|
Loading…
Reference in New Issue
sin vn
Fet