Merge branch 'master' into test
gitea/salix/pipeline/head This commit looks good
Details
gitea/salix/pipeline/head This commit looks good
Details
This commit is contained in:
commit
c987bb6e66
|
@ -0,0 +1,13 @@
|
||||||
|
DELIMITER $$
|
||||||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `util`.`connection_kill`(
|
||||||
|
vConnectionId BIGINT
|
||||||
|
)
|
||||||
|
BEGIN
|
||||||
|
/**
|
||||||
|
* Kill a connection
|
||||||
|
*
|
||||||
|
* @param vConnectionId
|
||||||
|
*/
|
||||||
|
KILL vConnectionId;
|
||||||
|
END$$
|
||||||
|
DELIMITER ;
|
|
@ -30,12 +30,9 @@ BEGIN
|
||||||
-- Si hay colecciones sin terminar, sale del proceso
|
-- Si hay colecciones sin terminar, sale del proceso
|
||||||
CALL collection_get(vUserFk);
|
CALL collection_get(vUserFk);
|
||||||
|
|
||||||
SELECT (pc.maxNotReadyCollections - COUNT(*)) <= 0,
|
SELECT (pc.maxNotReadyCollections - COUNT(*)) <= 0 INTO vHasTooMuchCollections
|
||||||
pc.collection_assign_lockname
|
FROM productionConfig pc
|
||||||
INTO vHasTooMuchCollections,
|
LEFT JOIN tCollection ON TRUE;
|
||||||
vLockName
|
|
||||||
FROM tCollection
|
|
||||||
JOIN productionConfig pc;
|
|
||||||
|
|
||||||
DROP TEMPORARY TABLE tCollection;
|
DROP TEMPORARY TABLE tCollection;
|
||||||
|
|
||||||
|
|
|
@ -79,6 +79,10 @@ BEGIN
|
||||||
ORDER BY (vQuantity % `grouping`) ASC
|
ORDER BY (vQuantity % `grouping`) ASC
|
||||||
LIMIT 1;
|
LIMIT 1;
|
||||||
|
|
||||||
|
IF vNewPrice IS NULL THEN
|
||||||
|
CALL util.throw('price retrieval failed');
|
||||||
|
END IF;
|
||||||
|
|
||||||
IF vNewPrice > vOldPrice THEN
|
IF vNewPrice > vOldPrice THEN
|
||||||
SET vFinalPrice = vOldPrice;
|
SET vFinalPrice = vOldPrice;
|
||||||
SET vOption = 'substitution';
|
SET vOption = 'substitution';
|
||||||
|
@ -90,7 +94,8 @@ BEGIN
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
|
|
||||||
UPDATE sale
|
UPDATE sale
|
||||||
SET quantity = quantity - vQuantity
|
SET originalQuantity = quantity - vQuantity,
|
||||||
|
quantity = quantity - vQuantity
|
||||||
WHERE id = vSaleFk;
|
WHERE id = vSaleFk;
|
||||||
|
|
||||||
INSERT INTO vn.sale(ticketFk,
|
INSERT INTO vn.sale(ticketFk,
|
||||||
|
@ -100,7 +105,8 @@ BEGIN
|
||||||
price)
|
price)
|
||||||
SELECT vTicketFk,
|
SELECT vTicketFk,
|
||||||
vNewItemFk,
|
vNewItemFk,
|
||||||
CEIL(vQuantity / vRoundQuantity) * vRoundQuantity, CONCAT('+ ', i.name),
|
CEIL(vQuantity / vRoundQuantity) * vRoundQuantity,
|
||||||
|
CONCAT('+ ', i.name),
|
||||||
vFinalPrice
|
vFinalPrice
|
||||||
FROM vn.item i
|
FROM vn.item i
|
||||||
WHERE id = vNewItemFk;
|
WHERE id = vNewItemFk;
|
||||||
|
|
|
@ -8,38 +8,14 @@ BEGIN
|
||||||
* @param vDateToAdvance Fecha a cuando se quiere adelantar.
|
* @param vDateToAdvance Fecha a cuando se quiere adelantar.
|
||||||
* @param vWarehouseFk Almacén
|
* @param vWarehouseFk Almacén
|
||||||
*/
|
*/
|
||||||
DECLARE vDateInventory DATE;
|
|
||||||
|
|
||||||
SELECT inventoried INTO vDateInventory FROM config;
|
CALL item_getStock(vWarehouseFk, vDateToAdvance, NULL);
|
||||||
|
CALL item_getMinacum(
|
||||||
CREATE OR REPLACE TEMPORARY TABLE tmp.stock
|
vWarehouseFk,
|
||||||
(itemFk INT PRIMARY KEY,
|
vDateToAdvance,
|
||||||
amount INT)
|
DATEDIFF(DATE_SUB(vDateFuture, INTERVAL 1 DAY), vDateToAdvance),
|
||||||
ENGINE = MEMORY;
|
NULL
|
||||||
|
);
|
||||||
INSERT INTO tmp.stock(itemFk, amount)
|
|
||||||
SELECT itemFk, SUM(quantity) amount FROM
|
|
||||||
(
|
|
||||||
SELECT itemFk, quantity
|
|
||||||
FROM itemTicketOut
|
|
||||||
WHERE shipped >= vDateInventory
|
|
||||||
AND shipped < vDateFuture
|
|
||||||
AND warehouseFk = vWarehouseFk
|
|
||||||
UNION ALL
|
|
||||||
SELECT itemFk, quantity
|
|
||||||
FROM itemEntryIn
|
|
||||||
WHERE landed >= vDateInventory
|
|
||||||
AND landed <= vDateToAdvance
|
|
||||||
AND isVirtualStock = FALSE
|
|
||||||
AND warehouseInFk = vWarehouseFk
|
|
||||||
UNION ALL
|
|
||||||
SELECT itemFk, quantity
|
|
||||||
FROM itemEntryOut
|
|
||||||
WHERE shipped >= vDateInventory
|
|
||||||
AND shipped < vDateFuture
|
|
||||||
AND warehouseOutFk = vWarehouseFk
|
|
||||||
) t
|
|
||||||
GROUP BY itemFk HAVING amount != 0;
|
|
||||||
|
|
||||||
CREATE OR REPLACE TEMPORARY TABLE tmp.filter
|
CREATE OR REPLACE TEMPORARY TABLE tmp.filter
|
||||||
(INDEX (id))
|
(INDEX (id))
|
||||||
|
@ -87,7 +63,7 @@ BEGIN
|
||||||
count(s.id) futureLines,
|
count(s.id) futureLines,
|
||||||
GROUP_CONCAT(DISTINCT ipt.code ORDER BY ipt.code) futureIpt,
|
GROUP_CONCAT(DISTINCT ipt.code ORDER BY ipt.code) futureIpt,
|
||||||
CAST(SUM(litros) AS DECIMAL(10,0)) futureLiters,
|
CAST(SUM(litros) AS DECIMAL(10,0)) futureLiters,
|
||||||
SUM((s.quantity <= IFNULL(st.amount,0))) hasStock,
|
SUM(s.quantity <= (IFNULL(il.stock,0) + IFNULL(im.amount, 0))) hasStock,
|
||||||
z.id futureZoneFk,
|
z.id futureZoneFk,
|
||||||
z.name futureZoneName,
|
z.name futureZoneName,
|
||||||
st.classColor,
|
st.classColor,
|
||||||
|
@ -107,7 +83,9 @@ BEGIN
|
||||||
JOIN agencyMode am ON t.agencyModeFk = am.id
|
JOIN agencyMode am ON t.agencyModeFk = am.id
|
||||||
JOIN zone z ON t.zoneFk = z.id
|
JOIN zone z ON t.zoneFk = z.id
|
||||||
LEFT JOIN itemPackingType ipt ON ipt.code = i.itemPackingTypeFk
|
LEFT JOIN itemPackingType ipt ON ipt.code = i.itemPackingTypeFk
|
||||||
LEFT JOIN tmp.stock st ON st.itemFk = i.id
|
LEFT JOIN tmp.itemMinacum im ON im.itemFk = i.id
|
||||||
|
AND im.warehouseFk = vWarehouseFk
|
||||||
|
LEFT JOIN tmp.itemList il ON il.itemFk = i.id
|
||||||
WHERE t.shipped BETWEEN vDateFuture AND util.dayend(vDateFuture)
|
WHERE t.shipped BETWEEN vDateFuture AND util.dayend(vDateFuture)
|
||||||
AND t.warehouseFk = vWarehouseFk
|
AND t.warehouseFk = vWarehouseFk
|
||||||
GROUP BY t.id
|
GROUP BY t.id
|
||||||
|
@ -146,6 +124,8 @@ BEGIN
|
||||||
) dest ON dest.addressFk = origin.addressFk
|
) dest ON dest.addressFk = origin.addressFk
|
||||||
WHERE origin.hasStock;
|
WHERE origin.hasStock;
|
||||||
|
|
||||||
DROP TEMPORARY TABLE tmp.stock;
|
DROP TEMPORARY TABLE IF EXISTS
|
||||||
|
tmp.itemList,
|
||||||
|
tmp.itemMinacum;
|
||||||
END$$
|
END$$
|
||||||
DELIMITER ;
|
DELIMITER ;
|
||||||
|
|
|
@ -63,7 +63,7 @@ BEGIN
|
||||||
INSERT INTO ticketPackaging (ticketFk, packagingFk, quantity)
|
INSERT INTO ticketPackaging (ticketFk, packagingFk, quantity)
|
||||||
(SELECT vCurTicketFk, p.id, COUNT(*)
|
(SELECT vCurTicketFk, p.id, COUNT(*)
|
||||||
FROM expedition e
|
FROM expedition e
|
||||||
JOIN packaging p ON p.itemFk = e.freightItemFk
|
JOIN packaging p ON p.id = e.packagingFk
|
||||||
WHERE e.ticketFk = vCurTicketFk AND p.isPackageReturnable
|
WHERE e.ticketFk = vCurTicketFk AND p.isPackageReturnable
|
||||||
AND vWithPackage
|
AND vWithPackage
|
||||||
GROUP BY p.itemFk);
|
GROUP BY p.itemFk);
|
||||||
|
|
|
@ -21,7 +21,7 @@ BEGIN
|
||||||
WHERE t.id = vTicketFk;
|
WHERE t.id = vTicketFk;
|
||||||
|
|
||||||
-- Añadimos un dia más para calcular el stock hasta vNewShipped inclusive
|
-- Añadimos un dia más para calcular el stock hasta vNewShipped inclusive
|
||||||
CALL item_getStock(vWarehouseFk, DATE_ADD(vNewShipped, INTERVAL 1 DAY), NULL);
|
CALL item_getStock(vWarehouseFk, vNewShipped, NULL);
|
||||||
CALL item_getMinacum(
|
CALL item_getMinacum(
|
||||||
vWarehouseFk,
|
vWarehouseFk,
|
||||||
vNewShipped,
|
vNewShipped,
|
||||||
|
@ -38,7 +38,7 @@ BEGIN
|
||||||
s.discount,
|
s.discount,
|
||||||
i.image,
|
i.image,
|
||||||
i.subName,
|
i.subName,
|
||||||
il.stock + IFNULL(im.amount, 0) AS movable
|
IFNULL(il.stock,0) + IFNULL(im.amount, 0) AS movable
|
||||||
FROM ticket t
|
FROM ticket t
|
||||||
JOIN sale s ON s.ticketFk = t.id
|
JOIN sale s ON s.ticketFk = t.id
|
||||||
JOIN item i ON i.id = s.itemFk
|
JOIN item i ON i.id = s.itemFk
|
||||||
|
@ -48,8 +48,8 @@ BEGIN
|
||||||
WHERE t.id = vTicketFk;
|
WHERE t.id = vTicketFk;
|
||||||
|
|
||||||
DROP TEMPORARY TABLE IF EXISTS
|
DROP TEMPORARY TABLE IF EXISTS
|
||||||
tmp.itemList,
|
tmp.itemList,
|
||||||
tmp.itemMinacum;
|
tmp.itemMinacum;
|
||||||
|
|
||||||
END$$
|
END$$
|
||||||
DELIMITER ;
|
DELIMITER ;
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
-- Place your SQL code here
|
||||||
|
ALTER TABLE vn.productionConfig ADD collectionNewLockname varchar(100)
|
||||||
|
DEFAULT 'collection_new' NOT NULL COMMENT 'Lockname value for proc vn.collection_new';
|
||||||
|
ALTER TABLE vn.productionConfig ADD collectionAssignLockname varchar(100)
|
||||||
|
DEFAULT 'collection_assign' NULL COMMENT 'Lockname value for proc vn.collection_new';
|
|
@ -0,0 +1,13 @@
|
||||||
|
|
||||||
|
ALTER TABLE vn.productionConfig
|
||||||
|
DROP COLUMN IF EXISTS collectionNewLockname,
|
||||||
|
DROP COLUMN IF EXISTS collectionAssignLockname;
|
||||||
|
|
||||||
|
DELIMITER $$
|
||||||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `util`.`connection_kill`()
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
END$$
|
||||||
|
DELIMITER ;
|
||||||
|
|
||||||
|
GRANT EXECUTE ON PROCEDURE util.connection_kill TO 'developer';
|
|
@ -49,8 +49,7 @@ module.exports = Self => {
|
||||||
JOIN vn.agencyMode am ON am.id = r.agencyModeFk
|
JOIN vn.agencyMode am ON am.id = r.agencyModeFk
|
||||||
JOIN vn.agency ag ON ag.id = am.agencyFk
|
JOIN vn.agency ag ON ag.id = am.agencyFk
|
||||||
LEFT JOIN vn.userConfig uc ON uc.userFk = account.myUser_getId()
|
LEFT JOIN vn.userConfig uc ON uc.userFk = account.myUser_getId()
|
||||||
WHERE (r.created = util.VN_CURDATE() OR r.created = util.yesterday())
|
WHERE t.routeFk = ?
|
||||||
AND t.routeFk = ?
|
|
||||||
GROUP BY t.addressFk, e.itemPackingTypeFk
|
GROUP BY t.addressFk, e.itemPackingTypeFk
|
||||||
) sub
|
) sub
|
||||||
GROUP BY addressFk
|
GROUP BY addressFk
|
||||||
|
|
|
@ -150,7 +150,7 @@ module.exports = Self => {
|
||||||
const salesNewTicket = salesMovable.filter(sale => (sale.movable ? sale.movable : 0) >= sale.quantity);
|
const salesNewTicket = salesMovable.filter(sale => (sale.movable ? sale.movable : 0) >= sale.quantity);
|
||||||
|
|
||||||
const salesNewTicketLength = salesNewTicket.length;
|
const salesNewTicketLength = salesNewTicket.length;
|
||||||
if (salesNewTicketLength && sales.length != salesNewTicketLength) {
|
if (salesNewTicketLength && (args.newTicket || sales.length != salesNewTicketLength)) {
|
||||||
const newTicket = await models.Ticket.transferSales(
|
const newTicket = await models.Ticket.transferSales(
|
||||||
ctx,
|
ctx,
|
||||||
args.id,
|
args.id,
|
||||||
|
|
|
@ -118,7 +118,7 @@ module.exports = Self => {
|
||||||
const [salesMovable] = await Self.rawSql(query, params, myOptions);
|
const [salesMovable] = await Self.rawSql(query, params, myOptions);
|
||||||
|
|
||||||
const itemMovable = new Map();
|
const itemMovable = new Map();
|
||||||
for (sale of salesMovable) {
|
for (let sale of salesMovable) {
|
||||||
const saleMovable = sale.movable ? sale.movable : 0;
|
const saleMovable = sale.movable ? sale.movable : 0;
|
||||||
itemMovable.set(sale.id, saleMovable);
|
itemMovable.set(sale.id, saleMovable);
|
||||||
}
|
}
|
||||||
|
@ -129,7 +129,7 @@ module.exports = Self => {
|
||||||
const [difComponents] = await Self.rawSql(query, params, myOptions);
|
const [difComponents] = await Self.rawSql(query, params, myOptions);
|
||||||
|
|
||||||
const map = new Map();
|
const map = new Map();
|
||||||
for (difComponent of difComponents)
|
for (let difComponent of difComponents)
|
||||||
map.set(difComponent.saleFk, difComponent);
|
map.set(difComponent.saleFk, difComponent);
|
||||||
|
|
||||||
for (sale of salesObj.items) {
|
for (sale of salesObj.items) {
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
const models = require('vn-loopback/server/server').models;
|
const models = require('vn-loopback/server/server').models;
|
||||||
const UserError = require('vn-loopback/util/user-error');
|
|
||||||
const ForbiddenError = require('vn-loopback/util/forbiddenError');
|
const ForbiddenError = require('vn-loopback/util/forbiddenError');
|
||||||
|
|
||||||
describe('sale priceDifference()', () => {
|
describe('sale priceDifference()', () => {
|
||||||
|
@ -83,12 +82,10 @@ describe('sale priceDifference()', () => {
|
||||||
warehouseId: 1
|
warehouseId: 1
|
||||||
};
|
};
|
||||||
|
|
||||||
const result = await models.Ticket.priceDifference(ctx, options);
|
const {items} = await models.Ticket.priceDifference(ctx, options);
|
||||||
const firstItem = result.items[0];
|
|
||||||
const secondtItem = result.items[1];
|
|
||||||
|
|
||||||
expect(firstItem.movable).toEqual(380);
|
expect(items[0].movable).toEqual(410);
|
||||||
expect(secondtItem.movable).toEqual(1790);
|
expect(items[1].movable).toEqual(1810);
|
||||||
|
|
||||||
await tx.rollback();
|
await tx.rollback();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|
Loading…
Reference in New Issue