Merge branch 'dev' into 7874-createObservationType
gitea/salix/pipeline/pr-dev This commit looks good
Details
gitea/salix/pipeline/pr-dev This commit looks good
Details
This commit is contained in:
commit
2b17e6da4c
|
@ -175,6 +175,9 @@
|
||||||
"PrintConfig": {
|
"PrintConfig": {
|
||||||
"dataSource": "vn"
|
"dataSource": "vn"
|
||||||
},
|
},
|
||||||
|
"QueueMember": {
|
||||||
|
"dataSource": "vn"
|
||||||
|
},
|
||||||
"ViaexpressConfig": {
|
"ViaexpressConfig": {
|
||||||
"dataSource": "vn"
|
"dataSource": "vn"
|
||||||
},
|
},
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
{
|
||||||
|
"name": "QueueMember",
|
||||||
|
"base": "VnModel",
|
||||||
|
"options": {
|
||||||
|
"mysql": {
|
||||||
|
"table": "pbx.queueMember"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"properties": {
|
||||||
|
"id": {
|
||||||
|
"type": "number",
|
||||||
|
"id": true
|
||||||
|
},
|
||||||
|
"queue": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"extension": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"relations": {
|
||||||
|
"queueRelation": {
|
||||||
|
"type": "belongsTo",
|
||||||
|
"model": "Queue",
|
||||||
|
"foreignKey": "queue",
|
||||||
|
"primaryKey": "name"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"acls": [
|
||||||
|
{
|
||||||
|
"property": "*",
|
||||||
|
"accessType": "READ",
|
||||||
|
"principalType": "ROLE",
|
||||||
|
"principalId": "employee",
|
||||||
|
"permission": "ALLOW"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -3988,3 +3988,25 @@ VALUES
|
||||||
INSERT IGNORE INTO ormConfig
|
INSERT IGNORE INTO ormConfig
|
||||||
SET id =1,
|
SET id =1,
|
||||||
selectLimit = 1000;
|
selectLimit = 1000;
|
||||||
|
|
||||||
|
INSERT INTO pbx.queueMultiConfig
|
||||||
|
SET id = 'ring',
|
||||||
|
strategy = 20,
|
||||||
|
timeout = 2,
|
||||||
|
retry = 0,
|
||||||
|
weight = 0,
|
||||||
|
maxLen = 0,
|
||||||
|
ringInUse = 0;
|
||||||
|
|
||||||
|
INSERT INTO pbx.queue (description, name, config)
|
||||||
|
VALUES ('X-men', '1000', 1),
|
||||||
|
('Avengers', '2000', 1);
|
||||||
|
|
||||||
|
INSERT IGNORE INTO pbx.queueMember
|
||||||
|
SET queue = '1000',
|
||||||
|
extension = '1010';
|
||||||
|
|
||||||
|
UPDATE vn.department SET pbxQueue = '1000' WHERE name = "CAMARA";
|
||||||
|
UPDATE vn.department SET pbxQueue = '2000' WHERE name = "VENTAS";
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -98,22 +98,8 @@ BEGIN
|
||||||
SELECT employeeFk INTO vUserFk FROM orderConfig;
|
SELECT employeeFk INTO vUserFk FROM orderConfig;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
START TRANSACTION;
|
|
||||||
|
|
||||||
CALL order_checkEditable(vSelf);
|
|
||||||
|
|
||||||
CALL orderRow_updateOverstocking(vSelf);
|
CALL orderRow_updateOverstocking(vSelf);
|
||||||
|
|
||||||
-- Check order is not empty
|
|
||||||
SELECT COUNT(*) > 0 INTO vHasRows
|
|
||||||
FROM orderRow
|
|
||||||
WHERE orderFk = vSelf
|
|
||||||
AND amount > 0;
|
|
||||||
|
|
||||||
IF NOT vHasRows THEN
|
|
||||||
CALL util.throw('ORDER_EMPTY');
|
|
||||||
END IF;
|
|
||||||
|
|
||||||
-- Check if any product has a quantity of 0
|
-- Check if any product has a quantity of 0
|
||||||
SELECT EXISTS (
|
SELECT EXISTS (
|
||||||
SELECT id
|
SELECT id
|
||||||
|
@ -126,6 +112,20 @@ BEGIN
|
||||||
CALL util.throw('Remove lines with quantity = 0 before confirming');
|
CALL util.throw('Remove lines with quantity = 0 before confirming');
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
|
START TRANSACTION;
|
||||||
|
|
||||||
|
CALL order_checkEditable(vSelf);
|
||||||
|
|
||||||
|
-- Check order is not empty
|
||||||
|
SELECT COUNT(*) > 0 INTO vHasRows
|
||||||
|
FROM orderRow
|
||||||
|
WHERE orderFk = vSelf
|
||||||
|
AND amount > 0;
|
||||||
|
|
||||||
|
IF NOT vHasRows THEN
|
||||||
|
CALL util.throw('ORDER_EMPTY');
|
||||||
|
END IF;
|
||||||
|
|
||||||
-- Crea los tickets del pedido
|
-- Crea los tickets del pedido
|
||||||
OPEN vDates;
|
OPEN vDates;
|
||||||
lDates: LOOP
|
lDates: LOOP
|
||||||
|
|
|
@ -23,6 +23,13 @@ BEGIN
|
||||||
DELETE FROM messageInbox WHERE sendDate < v2Months;
|
DELETE FROM messageInbox WHERE sendDate < v2Months;
|
||||||
DELETE FROM messageInbox WHERE sendDate < v2Months;
|
DELETE FROM messageInbox WHERE sendDate < v2Months;
|
||||||
DELETE FROM workerTimeControl WHERE timed < v4Years;
|
DELETE FROM workerTimeControl WHERE timed < v4Years;
|
||||||
|
DELETE FROM itemShelvingSale
|
||||||
|
WHERE itemShelvingFk IN (
|
||||||
|
SELECT id
|
||||||
|
FROM itemShelving
|
||||||
|
WHERE created < util.VN_CURDATE()
|
||||||
|
AND visible = 0
|
||||||
|
);
|
||||||
DELETE FROM itemShelving WHERE created < util.VN_CURDATE() AND visible = 0;
|
DELETE FROM itemShelving WHERE created < util.VN_CURDATE() AND visible = 0;
|
||||||
DELETE FROM ticketDown WHERE created < util.yesterday();
|
DELETE FROM ticketDown WHERE created < util.yesterday();
|
||||||
DELETE IGNORE FROM expedition WHERE created < v26Months;
|
DELETE IGNORE FROM expedition WHERE created < v26Months;
|
||||||
|
|
|
@ -45,6 +45,12 @@ BEGIN
|
||||||
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
|
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
|
||||||
-- Si hay colecciones sin terminar, sale del proceso
|
-- Si hay colecciones sin terminar, sale del proceso
|
||||||
|
|
||||||
|
DECLARE EXIT HANDLER FOR SQLEXCEPTION
|
||||||
|
BEGIN
|
||||||
|
ROLLBACK;
|
||||||
|
RESIGNAL;
|
||||||
|
END;
|
||||||
|
|
||||||
CALL collection_get(vUserFk);
|
CALL collection_get(vUserFk);
|
||||||
|
|
||||||
SELECT (pc.maxNotReadyCollections - COUNT(*)) <= 0, pc.maxNotAssignedCollectionLifeTime
|
SELECT (pc.maxNotReadyCollections - COUNT(*)) <= 0, pc.maxNotAssignedCollectionLifeTime
|
||||||
|
@ -118,9 +124,19 @@ BEGIN
|
||||||
IF vCollectionFk IS NULL THEN
|
IF vCollectionFk IS NULL THEN
|
||||||
CALL collection_new(vUserFk, vCollectionFk);
|
CALL collection_new(vUserFk, vCollectionFk);
|
||||||
|
|
||||||
UPDATE `collection`
|
START TRANSACTION;
|
||||||
SET workerFk = vUserFk
|
|
||||||
WHERE id = vCollectionFk;
|
SELECT workerFk INTO vCollectionWorker
|
||||||
|
FROM `collection`
|
||||||
|
WHERE id = vCollectionFk FOR UPDATE;
|
||||||
|
|
||||||
|
IF vCollectionWorker IS NULL THEN
|
||||||
|
UPDATE `collection`
|
||||||
|
SET workerFk = vUserFk
|
||||||
|
WHERE id = vCollectionFk;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
COMMIT;
|
||||||
END IF;
|
END IF;
|
||||||
END$$
|
END$$
|
||||||
DELIMITER ;
|
DELIMITER ;
|
|
@ -45,7 +45,7 @@ BEGIN
|
||||||
LEFT JOIN observation ob ON ob.ticketFk = t.id
|
LEFT JOIN observation ob ON ob.ticketFk = t.id
|
||||||
WHERE t.id = vParamFk
|
WHERE t.id = vParamFk
|
||||||
AND t.shipped >= vYesterday
|
AND t.shipped >= vYesterday
|
||||||
UNION ALL
|
UNION
|
||||||
SELECT t.id ticketFk,
|
SELECT t.id ticketFk,
|
||||||
IF(NOT(vItemPackingTypeFk <=> 'V'), cc.code, CONCAT(SUBSTRING('ABCDEFGH', tc.wagon, 1), '-', tc.`level`)) `level`,
|
IF(NOT(vItemPackingTypeFk <=> 'V'), cc.code, CONCAT(SUBSTRING('ABCDEFGH', tc.wagon, 1), '-', tc.`level`)) `level`,
|
||||||
am.name agencyName,
|
am.name agencyName,
|
||||||
|
@ -66,7 +66,7 @@ BEGIN
|
||||||
LEFT JOIN vn.worker w ON w.id = c.salesPersonFk
|
LEFT JOIN vn.worker w ON w.id = c.salesPersonFk
|
||||||
LEFT JOIN observation ob ON ob.ticketFk = t.id
|
LEFT JOIN observation ob ON ob.ticketFk = t.id
|
||||||
WHERE tc.collectionFk = vParamFk
|
WHERE tc.collectionFk = vParamFk
|
||||||
UNION ALL
|
UNION
|
||||||
SELECT sg.ticketFk,
|
SELECT sg.ticketFk,
|
||||||
NULL `level`,
|
NULL `level`,
|
||||||
am.name agencyName,
|
am.name agencyName,
|
||||||
|
@ -83,6 +83,7 @@ BEGIN
|
||||||
LEFT JOIN observation ob ON ob.ticketFk = t.id
|
LEFT JOIN observation ob ON ob.ticketFk = t.id
|
||||||
LEFT JOIN vn.client c ON c.id = t.clientFk
|
LEFT JOIN vn.client c ON c.id = t.clientFk
|
||||||
WHERE sc.id = vParamFk
|
WHERE sc.id = vParamFk
|
||||||
AND t.shipped >= vYesterday;
|
AND t.shipped >= vYesterday
|
||||||
|
GROUP BY ticketFk;
|
||||||
END$$
|
END$$
|
||||||
DELIMITER ;
|
DELIMITER ;
|
||||||
|
|
|
@ -0,0 +1,49 @@
|
||||||
|
DELIMITER $$
|
||||||
|
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`itemShelvingSale_deleteAdded`(
|
||||||
|
vSelf INT(11)
|
||||||
|
)
|
||||||
|
proc: BEGIN
|
||||||
|
/**
|
||||||
|
* Borra una reservea devolviendo la cantidad al itemShelving
|
||||||
|
*
|
||||||
|
* @param vSelf Identificador del itemShelvingSale
|
||||||
|
*/
|
||||||
|
DECLARE vSaleFk INT;
|
||||||
|
DECLARE vHasSalesPicked BOOL;
|
||||||
|
|
||||||
|
DECLARE EXIT HANDLER FOR SQLEXCEPTION
|
||||||
|
BEGIN
|
||||||
|
ROLLBACK;
|
||||||
|
RESIGNAL;
|
||||||
|
END;
|
||||||
|
|
||||||
|
START TRANSACTION;
|
||||||
|
|
||||||
|
SELECT iss.saleFk INTO vSaleFk
|
||||||
|
FROM itemShelvingSale iss
|
||||||
|
JOIN sale s ON s.id = iss.saleFk
|
||||||
|
WHERE iss.id = vSelf AND s.isAdded
|
||||||
|
FOR UPDATE;
|
||||||
|
|
||||||
|
IF vSaleFk IS NULL THEN
|
||||||
|
CALL util.throw('The sale can not be deleted');
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
SELECT COUNT(*) INTO vHasSalesPicked
|
||||||
|
FROM itemShelvingSale
|
||||||
|
WHERE saleFk = vSaleFk AND isPicked;
|
||||||
|
|
||||||
|
IF vHasSalesPicked THEN
|
||||||
|
CALL util.throw('A sale with picked sales cannot be deleted');
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
UPDATE itemShelvingSale iss
|
||||||
|
JOIN itemShelving ish ON ish.id = iss.itemShelvingFk
|
||||||
|
SET ish.available = ish.available + iss.quantity
|
||||||
|
WHERE iss.saleFk = vSaleFk;
|
||||||
|
|
||||||
|
DELETE FROM sale WHERE id = vSaleFk;
|
||||||
|
|
||||||
|
COMMIT;
|
||||||
|
END$$
|
||||||
|
DELIMITER ;
|
|
@ -0,0 +1,29 @@
|
||||||
|
DELIMITER $$
|
||||||
|
|
||||||
|
CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`queueMember_updateQueue`(
|
||||||
|
vBusinessFk INT
|
||||||
|
)
|
||||||
|
BEGIN
|
||||||
|
/**
|
||||||
|
* Elimina la entrada de la cola anterior y luego inserta la nueva para un trabajador.
|
||||||
|
*
|
||||||
|
* @param vBusinessFk ID del negocio
|
||||||
|
*/
|
||||||
|
DECLARE vNewQueue VARCHAR(10);
|
||||||
|
DECLARE vExtension VARCHAR(10);
|
||||||
|
DECLARE exit handler FOR SQLEXCEPTION
|
||||||
|
|
||||||
|
SELECT d.pbxQueue, s.extension
|
||||||
|
INTO vNewQueue, vExtension
|
||||||
|
FROM business b
|
||||||
|
JOIN department d ON d.id = b.departmentFk
|
||||||
|
JOIN pbx.sip s ON s.user_id = b.workerFk
|
||||||
|
WHERE b.id = vBusinessFk;
|
||||||
|
|
||||||
|
DELETE FROM pbx.queueMember
|
||||||
|
WHERE extension = vExtension COLLATE utf8_general_ci;
|
||||||
|
|
||||||
|
INSERT IGNORE INTO pbx.queueMember (queue, extension)
|
||||||
|
VALUES (vNewQueue, vExtension);
|
||||||
|
END$$
|
||||||
|
DELIMITER ;
|
|
@ -40,7 +40,7 @@ BEGIN
|
||||||
isTooLittle BOOL DEFAULT FALSE,
|
isTooLittle BOOL DEFAULT FALSE,
|
||||||
isVip BOOL DEFAULT FALSE,
|
isVip BOOL DEFAULT FALSE,
|
||||||
PRIMARY KEY (ticketFk, saleFk)
|
PRIMARY KEY (ticketFk, saleFk)
|
||||||
) ENGINE = MEMORY;
|
); -- No memory
|
||||||
|
|
||||||
INSERT INTO tmp.sale_problems(ticketFk,
|
INSERT INTO tmp.sale_problems(ticketFk,
|
||||||
saleFk,
|
saleFk,
|
||||||
|
|
|
@ -21,6 +21,8 @@ BEGIN
|
||||||
SET businessFk = vNewBusinessFk
|
SET businessFk = vNewBusinessFk
|
||||||
WHERE id = vSelf;
|
WHERE id = vSelf;
|
||||||
|
|
||||||
|
CALL queueMember_updateQueue(vNewBusinessFk);
|
||||||
|
|
||||||
IF vOldBusinessFk IS NULL THEN
|
IF vOldBusinessFk IS NULL THEN
|
||||||
CALL account.account_enable(vSelf);
|
CALL account.account_enable(vSelf);
|
||||||
|
|
||||||
|
|
|
@ -3,10 +3,20 @@ CREATE OR REPLACE DEFINER=`vn`@`localhost` TRIGGER `vn`.`business_afterUpdate`
|
||||||
AFTER UPDATE ON `business`
|
AFTER UPDATE ON `business`
|
||||||
FOR EACH ROW
|
FOR EACH ROW
|
||||||
BEGIN
|
BEGIN
|
||||||
|
DECLARE vIsActive BOOL;
|
||||||
|
DECLARE vExtension VARCHAR(10);
|
||||||
|
|
||||||
CALL worker_updateBusiness(NEW.workerFk);
|
CALL worker_updateBusiness(NEW.workerFk);
|
||||||
|
|
||||||
IF NOT (OLD.workerFk <=> NEW.workerFk) THEN
|
IF NOT (OLD.workerFk <=> NEW.workerFk) THEN
|
||||||
CALL worker_updateBusiness(OLD.workerFk);
|
CALL worker_updateBusiness(OLD.workerFk);
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
|
IF NOT (OLD.departmentFk <=> NEW.departmentFk) THEN
|
||||||
|
SELECT COUNT(*) INTO vIsActive FROM worker WHERE businessFk = NEW.id;
|
||||||
|
IF vIsActive THEN
|
||||||
|
CALL queueMember_updateQueue(NEW.id);
|
||||||
|
END IF;
|
||||||
|
END IF;
|
||||||
END$$
|
END$$
|
||||||
DELIMITER ;
|
DELIMITER ;
|
||||||
|
|
|
@ -9,5 +9,8 @@ BEGIN
|
||||||
SET NEW.userFk = account.myUser_getId();
|
SET NEW.userFk = account.myUser_getId();
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
|
IF NEW.shelvingFk <> OLD.shelvingFk THEN
|
||||||
|
SET NEW.movingState = NULL;
|
||||||
|
END IF;
|
||||||
END$$
|
END$$
|
||||||
DELIMITER ;
|
DELIMITER ;
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
DELETE FROM salix.ACL
|
||||||
|
WHERE model = 'WorkerLog'
|
||||||
|
AND property = '*';
|
|
@ -0,0 +1,5 @@
|
||||||
|
/*
|
||||||
|
UPDATE vn.sale
|
||||||
|
SET originalQuantity = quantity
|
||||||
|
WHERE originalQuantity IS NULL
|
||||||
|
*/
|
|
@ -0,0 +1 @@
|
||||||
|
-- ALTER TABLE vn.sale MODIFY COLUMN originalQuantity decimal(10,2) DEFAULT 0.00 NOT NULL COMMENT 'Se utiliza para notificar a través de rocket los cambios de quantity';
|
|
@ -0,0 +1,3 @@
|
||||||
|
ALTER TABLE vn.itemShelving DROP FOREIGN KEY itemShelving_fk2;
|
||||||
|
ALTER TABLE vn.itemShelving ADD CONSTRAINT itemShelving_fk2
|
||||||
|
FOREIGN KEY (shelvingFk) REFERENCES vn.shelving(code) ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
@ -0,0 +1,2 @@
|
||||||
|
-- Place your SQL code here
|
||||||
|
ALTER TABLE vn.itemShelving ADD IF NOT EXISTS isMoving BOOL DEFAULT FALSE NOT NULL COMMENT 'Indica que se ha marcado este registro para transferirlo a otro sector';
|
|
@ -0,0 +1,3 @@
|
||||||
|
-- Place your SQL code here
|
||||||
|
ALTER TABLE vn.itemShelving DROP COLUMN IF EXISTS isMoving;
|
||||||
|
ALTER TABLE vn.itemShelving ADD IF NOT EXISTS movingState ENUM('selected','printed') NULL;
|
|
@ -0,0 +1,3 @@
|
||||||
|
-- Place your SQL code here
|
||||||
|
ALTER TABLE hedera.`order` ADD IF NOT EXISTS rowUpdated DATETIME NULL
|
||||||
|
COMMENT 'Timestamp for last updated record in orderRow table';
|
|
@ -66,15 +66,15 @@ export default class App {
|
||||||
]}
|
]}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const hasId = !isNaN(parseInt(route.split('/')[1]));
|
||||||
|
|
||||||
if (this.logger.$params.q) {
|
if (this.logger.$params.q) {
|
||||||
let tableValue = this.logger.$params.q;
|
let tableValue = this.logger.$params.q;
|
||||||
const q = JSON.parse(tableValue);
|
const q = JSON.parse(tableValue);
|
||||||
if (typeof q === 'number')
|
if (typeof q === 'number')
|
||||||
tableValue = JSON.stringify({id: tableValue});
|
tableValue = JSON.stringify({id: tableValue});
|
||||||
newRoute = newRoute.concat(`?table=${tableValue}`);
|
newRoute = newRoute.concat(`?table=${tableValue}`);
|
||||||
}
|
} else if (!hasId && this.logger.$params.id && newRoute.indexOf(this.logger.$params.id) < 0)
|
||||||
|
|
||||||
if (this.logger.$params.id && newRoute.indexOf(this.logger.$params.id) < 0)
|
|
||||||
newRoute = newRoute.concat(`${this.logger.$params.id}`);
|
newRoute = newRoute.concat(`${this.logger.$params.id}`);
|
||||||
|
|
||||||
return this.logger.$http.get('Urls/findOne', {filter})
|
return this.logger.$http.get('Urls/findOne', {filter})
|
||||||
|
|
|
@ -25,7 +25,12 @@
|
||||||
"type": "belongsTo",
|
"type": "belongsTo",
|
||||||
"model": "VnUser",
|
"model": "VnUser",
|
||||||
"foreignKey": "user_id"
|
"foreignKey": "user_id"
|
||||||
|
},
|
||||||
|
"queueMember": {
|
||||||
|
"type": "belongsTo",
|
||||||
|
"model": "QueueMember",
|
||||||
|
"foreignKey": "extension",
|
||||||
|
"primaryKey": "extension"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,6 +34,11 @@ module.exports = Self => {
|
||||||
try {
|
try {
|
||||||
const promises = [];
|
const promises = [];
|
||||||
for (let itemShelvingId of itemShelvingIds) {
|
for (let itemShelvingId of itemShelvingIds) {
|
||||||
|
const itemShelvingSaleToDelete = models.ItemShelvingSale.destroyAll({
|
||||||
|
itemShelvingFk: itemShelvingId
|
||||||
|
}, myOptions);
|
||||||
|
promises.push(itemShelvingSaleToDelete);
|
||||||
|
|
||||||
const itemShelvingToDelete = models.ItemShelving.destroyById(itemShelvingId, myOptions);
|
const itemShelvingToDelete = models.ItemShelving.destroyById(itemShelvingId, myOptions);
|
||||||
promises.push(itemShelvingToDelete);
|
promises.push(itemShelvingToDelete);
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@ describe('ItemShelving deleteItemShelvings()', () => {
|
||||||
const itemShelvingIds = [1, 2];
|
const itemShelvingIds = [1, 2];
|
||||||
const result = await models.ItemShelving.deleteItemShelvings(itemShelvingIds, options);
|
const result = await models.ItemShelving.deleteItemShelvings(itemShelvingIds, options);
|
||||||
|
|
||||||
expect(result.length).toEqual(2);
|
expect(result.length).toEqual(4);
|
||||||
|
|
||||||
await tx.rollback();
|
await tx.rollback();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
module.exports = Self => {
|
||||||
|
Self.remoteMethod('getWithPackaging', {
|
||||||
|
description: 'Returns the list of suppliers with an entry of type packaging',
|
||||||
|
accessType: 'READ',
|
||||||
|
returns: {
|
||||||
|
type: 'object',
|
||||||
|
root: true
|
||||||
|
},
|
||||||
|
http: {
|
||||||
|
path: `/getWithPackaging`,
|
||||||
|
verb: 'GET'
|
||||||
|
},
|
||||||
|
nolimit: true
|
||||||
|
});
|
||||||
|
Self.getWithPackaging = async options => {
|
||||||
|
const models = Self.app.models;
|
||||||
|
const myOptions = {};
|
||||||
|
const oneYearAgo = new Date();
|
||||||
|
oneYearAgo.setFullYear(oneYearAgo.getFullYear() - 1);
|
||||||
|
|
||||||
|
if (typeof options == 'object')
|
||||||
|
Object.assign(myOptions, options);
|
||||||
|
|
||||||
|
const entries = await models.Entry.find({
|
||||||
|
where: {
|
||||||
|
typeFk: 'packaging',
|
||||||
|
created: {gte: oneYearAgo}
|
||||||
|
},
|
||||||
|
include: {
|
||||||
|
relation: 'supplier',
|
||||||
|
scope: {
|
||||||
|
fields: ['id', 'name']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
fields: {supplierFk: true}
|
||||||
|
}, myOptions);
|
||||||
|
|
||||||
|
const result = entries.map(item => ({
|
||||||
|
id: item.supplier().id,
|
||||||
|
name: item.supplier().name
|
||||||
|
}));
|
||||||
|
return Array.from(new Map(result.map(entry => [entry.id, entry])).values());
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
const {models} = require('vn-loopback/server/server');
|
||||||
|
|
||||||
|
describe('Supplier getWithPackaging()', () => {
|
||||||
|
it('should return a list of suppliers with an entry of type packaging', async() => {
|
||||||
|
const typeFk = 'packaging';
|
||||||
|
|
||||||
|
const tx = await models.Supplier.beginTransaction({});
|
||||||
|
const myOptions = {transaction: tx};
|
||||||
|
|
||||||
|
try {
|
||||||
|
const entry = await models.Entry.findOne(
|
||||||
|
{
|
||||||
|
where: {
|
||||||
|
id: 1
|
||||||
|
},
|
||||||
|
myOptions
|
||||||
|
});
|
||||||
|
|
||||||
|
await entry.updateAttributes({
|
||||||
|
typeFk: typeFk,
|
||||||
|
created: new Date()
|
||||||
|
});
|
||||||
|
|
||||||
|
const result = await models.Supplier.getWithPackaging(myOptions);
|
||||||
|
|
||||||
|
expect(result.length).toEqual(1);
|
||||||
|
await tx.rollback();
|
||||||
|
} catch (e) {
|
||||||
|
await tx.rollback();
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
|
@ -12,6 +12,7 @@ module.exports = Self => {
|
||||||
require('../methods/supplier/campaignMetricsEmail')(Self);
|
require('../methods/supplier/campaignMetricsEmail')(Self);
|
||||||
require('../methods/supplier/newSupplier')(Self);
|
require('../methods/supplier/newSupplier')(Self);
|
||||||
require('../methods/supplier/getItemsPackaging')(Self);
|
require('../methods/supplier/getItemsPackaging')(Self);
|
||||||
|
require('../methods/supplier/getWithPackaging')(Self);
|
||||||
|
|
||||||
Self.validatesPresenceOf('name', {
|
Self.validatesPresenceOf('name', {
|
||||||
message: 'The social name cannot be empty'
|
message: 'The social name cannot be empty'
|
||||||
|
|
|
@ -67,6 +67,12 @@ module.exports = Self => {
|
||||||
type: 'String',
|
type: 'String',
|
||||||
description: 'The worker user name',
|
description: 'The worker user name',
|
||||||
http: {source: 'query'}
|
http: {source: 'query'}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
arg: 'email',
|
||||||
|
type: 'String',
|
||||||
|
description: 'The user email',
|
||||||
|
http: {source: 'query'}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
returns: {
|
returns: {
|
||||||
|
@ -99,6 +105,8 @@ module.exports = Self => {
|
||||||
return {'w.firstName': {like: `%${value}%`}};
|
return {'w.firstName': {like: `%${value}%`}};
|
||||||
case 'lastName':
|
case 'lastName':
|
||||||
return {'w.lastName': {like: `%${value}%`}};
|
return {'w.lastName': {like: `%${value}%`}};
|
||||||
|
case 'nickname':
|
||||||
|
return {'u.nickname': {like: `%${value}%`}};
|
||||||
case 'extension':
|
case 'extension':
|
||||||
return {'p.extension': value};
|
return {'p.extension': value};
|
||||||
case 'fi':
|
case 'fi':
|
||||||
|
@ -107,6 +115,8 @@ module.exports = Self => {
|
||||||
return {'d.id': value};
|
return {'d.id': value};
|
||||||
case 'userName':
|
case 'userName':
|
||||||
return {'u.name': {like: `%${value}%`}};
|
return {'u.name': {like: `%${value}%`}};
|
||||||
|
case 'email':
|
||||||
|
return {'eu.email': {like: `%${value}%`}};
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -116,15 +126,23 @@ module.exports = Self => {
|
||||||
let stmt;
|
let stmt;
|
||||||
|
|
||||||
stmt = new ParameterizedSQL(
|
stmt = new ParameterizedSQL(
|
||||||
`SELECT w.id, u.email, p.extension, u.name as userName,
|
`SELECT w.id,
|
||||||
d.name AS department, w.lastName, u.nickname, mu.email
|
w.lastName,
|
||||||
|
w.firstName,
|
||||||
|
u.email,
|
||||||
|
u.nickname,
|
||||||
|
p.extension,
|
||||||
|
u.name as userName,
|
||||||
|
d.name AS department,
|
||||||
|
eu.email,
|
||||||
|
c.fi
|
||||||
FROM worker w
|
FROM worker w
|
||||||
LEFT JOIN workerDepartment wd ON wd.workerFk = w.id
|
LEFT JOIN workerDepartment wd ON wd.workerFk = w.id
|
||||||
LEFT JOIN department d ON d.id = wd.departmentFk
|
LEFT JOIN department d ON d.id = wd.departmentFk
|
||||||
LEFT JOIN client c ON c.id = w.id
|
LEFT JOIN client c ON c.id = w.id
|
||||||
LEFT JOIN account.user u ON u.id = w.id
|
LEFT JOIN account.user u ON u.id = w.id
|
||||||
LEFT JOIN pbx.sip p ON p.user_id = u.id
|
LEFT JOIN pbx.sip p ON p.user_id = u.id
|
||||||
LEFT JOIN account.emailUser mu ON mu.userFk = u.id`
|
LEFT JOIN account.emailUser eu ON eu.userFk = u.id`
|
||||||
);
|
);
|
||||||
|
|
||||||
stmt.merge(conn.makeSuffix(filter));
|
stmt.merge(conn.makeSuffix(filter));
|
||||||
|
|
|
@ -253,7 +253,18 @@
|
||||||
"relation": "client"
|
"relation": "client"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"relation": "sip"
|
"relation": "sip",
|
||||||
|
"scope": {
|
||||||
|
"include": {
|
||||||
|
"relation": "queueMember",
|
||||||
|
"scope": {
|
||||||
|
"fields": [
|
||||||
|
"queue",
|
||||||
|
"extension"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue