diff --git a/back/methods/mrw-config/cancelShipment.js b/back/methods/mrw-config/cancelShipment.js
index 218b6a96b..86bbb7410 100644
--- a/back/methods/mrw-config/cancelShipment.js
+++ b/back/methods/mrw-config/cancelShipment.js
@@ -39,8 +39,6 @@ module.exports = Self => {
const xmlString = response.data;
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(xmlString, 'text/xml');
- const [resultElement] = xmlDoc.getElementsByTagName('Mensaje');
-
- return resultElement.textContent;
+ return xmlDoc.getElementsByTagName('Mensaje')[0].textContent;
};
};
diff --git a/back/methods/mrw-config/createShipment.js b/back/methods/mrw-config/createShipment.js
index 12263de03..081a83382 100644
--- a/back/methods/mrw-config/createShipment.js
+++ b/back/methods/mrw-config/createShipment.js
@@ -42,7 +42,8 @@ module.exports = Self => {
throw new UserError(`Some mrwConfig parameters are not set`);
const query =
- `SELECT CASE co.code
+ `SELECT
+ CASE co.code
WHEN 'ES' THEN a.postalCode
WHEN 'PT' THEN LEFT(a.postalCode, 4)
WHEN 'AD' THEN REPLACE(a.postalCode, 'AD', '00')
@@ -89,14 +90,9 @@ module.exports = Self => {
const getLabelResponse = await sendXmlDoc('getLabel', {mrw, shipmentId}, 'text/xml');
const file = getTextByTag(getLabelResponse, 'EtiquetaFile');
- try {
- await models.Expedition.updateAll({id: expeditionFk}, {externalId: shipmentId}, myOptions);
- if (tx) await tx.commit();
- } catch (error) {
- if (tx) await tx.rollback();
- throw error;
- }
- return file;
+ if (tx) await tx.commit();
+
+ return {shipmentId, file};
};
function getTextByTag(xmlDoc, tag) {
diff --git a/back/methods/mrw-config/specs/createShipment.spec.js b/back/methods/mrw-config/specs/createShipment.spec.js
index 0f48bc2d3..f05f9a81d 100644
--- a/back/methods/mrw-config/specs/createShipment.spec.js
+++ b/back/methods/mrw-config/specs/createShipment.spec.js
@@ -81,9 +81,9 @@ describe('MRWConfig createShipment()', () => {
spyOn(axios, 'post').and.callFake(() => Promise.resolve(mockPostResponses.pop()));
- const base64Binary = await models.MrwConfig.createShipment(expedition1.id, options);
+ const {file} = await models.MrwConfig.createShipment(expedition1.id, options);
- expect(base64Binary).toEqual(mockBase64Binary);
+ expect(file).toEqual(mockBase64Binary);
});
it('should fail if mrwConfig has no data', async() => {
diff --git a/db/routines/vn/procedures/buy_clone.sql b/db/routines/vn/procedures/buy_clone.sql
new file mode 100644
index 000000000..d3fbf888d
--- /dev/null
+++ b/db/routines/vn/procedures/buy_clone.sql
@@ -0,0 +1,59 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`buy_clone`(vEntryFk INT)
+BEGIN
+/**
+ * Clone buys to an entry
+ *
+ * @param vEntryFk The entry id
+ * @table tmp.buy(id)
+ */
+ INSERT INTO buy(
+ entryFk,
+ itemFk,
+ quantity,
+ buyingValue,
+ freightValue,
+ isIgnored,
+ stickers,
+ packagingFk,
+ packing,
+ `grouping`,
+ groupingMode,
+ containerFk,
+ comissionValue,
+ packageValue,
+ price1,
+ price2,
+ price3,
+ minPrice,
+ isChecked,
+ location,
+ weight,
+ itemOriginalFk)
+ SELECT vEntryFk,
+ b.itemFk,
+ b.quantity,
+ b.buyingValue,
+ b.freightValue,
+ b.isIgnored,
+ b.stickers,
+ b.packagingFk,
+ b.packing,
+ b.`grouping`,
+ b.groupingMode,
+ b.containerFk,
+ b.comissionValue,
+ b.packageValue,
+ b.price1,
+ b.price2,
+ b.price3,
+ b.minPrice,
+ b.isChecked,
+ b.location,
+ b.weight,
+ b.itemOriginalFk
+ FROM tmp.buy tb
+ JOIN vn.buy b ON b.id = tb.id;
+
+END$$
+DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/vn/procedures/buy_recalcPricesByBuy.sql b/db/routines/vn/procedures/buy_recalcPricesByBuy.sql
index 4fff4d313..b699e42d7 100644
--- a/db/routines/vn/procedures/buy_recalcPricesByBuy.sql
+++ b/db/routines/vn/procedures/buy_recalcPricesByBuy.sql
@@ -10,7 +10,7 @@ BEGIN
*/
DROP TEMPORARY TABLE IF EXISTS tmp.buyRecalc;
- CREATE TEMPORARY TABLE tmp.buyRecalc
+ CREATE TEMPORARY TABLE tmp.buyRecalc
SELECT vBuyFk id;
CALL buy_recalcPrices();
diff --git a/db/routines/vn/procedures/entry_cloneHeader.sql b/db/routines/vn/procedures/entry_cloneHeader.sql
index 6a6df9194..7f9426663 100644
--- a/db/routines/vn/procedures/entry_cloneHeader.sql
+++ b/db/routines/vn/procedures/entry_cloneHeader.sql
@@ -9,8 +9,8 @@ BEGIN
* Clones an entry header.
*
* @param vSelf The entry id
+ * @param OUT vNewEntryFk The new entry id
* @param vTravelFk Travel for the new entry or %NULL to use the source entry travel
- * @param vNewEntryFk The new entry id
*/
INSERT INTO entry(
travelFk,
diff --git a/db/routines/vn/procedures/entry_copyBuys.sql b/db/routines/vn/procedures/entry_copyBuys.sql
index a00fbc846..9bf4a55e4 100644
--- a/db/routines/vn/procedures/entry_copyBuys.sql
+++ b/db/routines/vn/procedures/entry_copyBuys.sql
@@ -1,59 +1,18 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`entry_copyBuys`(vSelf INT, vCopyTo INT)
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`entry_copyBuys`(vSelf INT, vDestinationEntryFk INT)
BEGIN
/**
- * Copies an entry buys to another buy.
+ * Copies all buys from an entry to an entry.
*
* @param vSelf The entry id
- * @param vCopyTo The destination entry id
+ * @param vDestinationEntryFk The destination entry id
*/
- INSERT INTO buy(
- entryFk,
- itemFk,
- quantity,
- buyingValue,
- freightValue,
- isIgnored,
- stickers,
- packing,
- `grouping`,
- groupingMode,
- containerFk,
- comissionValue,
- packageValue,
- packagingFk,
- price1,
- price2,
- price3,
- minPrice,
- isChecked,
- location,
- weight,
- itemOriginalFk
- )
- SELECT vCopyTo,
- itemFk,
- quantity,
- buyingValue,
- freightValue,
- isIgnored,
- stickers,
- packing,
- `grouping`,
- groupingMode,
- containerFk,
- comissionValue,
- packageValue,
- packagingFk,
- price1,
- price2,
- price3,
- minPrice,
- isChecked,
- location,
- weight,
- itemOriginalFk
+ CREATE OR REPLACE TEMPORARY TABLE tmp.buy
+ SELECT id
FROM buy
WHERE entryFk = vSelf;
+
+ CALL buy_clone(vDestinationEntryFk);
+ DROP TEMPORARY TABLE tmp.buy;
END$$
DELIMITER ;
diff --git a/db/routines/vn/procedures/itemShelving_getItemDetails.sql b/db/routines/vn/procedures/itemShelving_getItemDetails.sql
new file mode 100644
index 000000000..c01bc348c
--- /dev/null
+++ b/db/routines/vn/procedures/itemShelving_getItemDetails.sql
@@ -0,0 +1,55 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`itemShelving_getItemDetails`(
+ vBarcodeItem INT,
+ vShelvingFK VARCHAR(10)
+)
+BEGIN
+/**
+ * Obtiene el precio y visible de un item
+ *
+ * @param vBarcodeItem barcode de artículo
+ * @param vShelvingFK Ubicación actual del artículo
+ */
+ DECLARE vIsItem BOOL;
+ DECLARE vBuyFk INT;
+ DECLARE vWarehouseFk INT;
+
+ SELECT COUNT(*) > 0 INTO vIsItem
+ FROM item
+ WHERE id = vBarcodeItem;
+
+ IF vIsItem THEN
+ SELECT warehouseFk INTO vWarehouseFk
+ FROM operator
+ WHERE workerFk = account.myUser_getId();
+
+ CALL buyUltimate(vWarehouseFk, util.VN_CURDATE());
+
+ SELECT buyFk INTO vBuyFk
+ FROM tmp.buyUltimate
+ WHERE itemFk = vBarcodeItem
+ AND warehouseFk = vWarehouseFk;
+
+ DELETE FROM tmp.buyUltimate;
+ ELSE
+ SELECT vBarcodeItem INTO vBuyFk;
+ END IF;
+
+ WITH visible AS(
+ SELECT itemFk,
+ IFNULL(buyingValue, 0) +
+ IFNULL(freightValue, 0) +
+ IFNULL(comissionValue, 0) +
+ IFNULL(packageValue, 0) itemCost
+ FROM vn.buy b
+ WHERE b.id = vBuyFk
+ ) SELECT v.itemFk,
+ vShelvingFK,
+ v.itemCost,
+ SUM(ish.visible) visible
+ FROM vn.itemShelving ish
+ JOIN visible v
+ WHERE ish.shelvingFK = vShelvingFK COLLATE utf8mb3_general_ci
+ AND ish.itemFk = v.itemFk;
+END$$
+DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/vn/procedures/item_devalueA2.sql b/db/routines/vn/procedures/item_devalueA2.sql
new file mode 100644
index 000000000..f331c7230
--- /dev/null
+++ b/db/routines/vn/procedures/item_devalueA2.sql
@@ -0,0 +1,411 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`item_devalueA2`(
+ vSelf INT,
+ vShelvingFK VARCHAR(10),
+ vBuyingValue DECIMAL(10,4),
+ vQuantity INT
+)
+BEGIN
+/**
+ * Devalua un item modificando su calidad de A1 a A2.
+ * Si no existe el item A2 lo crea y genera los movimientos de las entradas
+ * de almacén y shelvings correspondientes
+ *
+ * @param vSelf Id de artículo a devaluar
+ * @param vShelvingFK Ubicación actual del artículo
+ * @param vBuyingValue Nuevo precio de coste
+ * @param vQuantity Cantidad del ítem a pasar a A2
+ */
+ DECLARE vItemA2Fk INT;
+ DECLARE vLastBuyFk BIGINT;
+ DECLARE vA1BuyFk INT;
+ DECLARE vA2BuyFk INT;
+ DECLARE vTargetEntryFk INT;
+ DECLARE vTargetEntryDate DATE;
+ DECLARE vTargetItemShelvingFk BIGINT;
+ DECLARE vWarehouseFk INT;
+ DECLARE vCacheFk INT;
+ DECLARE vLastEntryFk INT;
+ DECLARE vCurrentVisible INT;
+ DECLARE vDevalueTravelFk INT;
+ DECLARE vCurdate DATE;
+ DECLARE vBuyingValueOriginal DECIMAL(10,4);
+
+ DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
+ BEGIN
+ ROLLBACK;
+ RESIGNAL;
+ END;
+
+ IF (SELECT TRUE FROM item WHERE id = vSelf AND (category <> 'A1' OR category IS NULL)) THEN
+ CALL util.throw('Item has not category A1');
+ END IF;
+
+ SELECT warehouseFk INTO vWarehouseFk
+ FROM userConfig
+ WHERE userFk = account.myUser_getId();
+
+ IF NOT vWarehouseFk OR vWarehouseFk IS NULL THEN
+ CALL util.throw ('Operator has not a valid warehouse');
+ END IF;
+
+ IF vQuantity <= 0 OR vQuantity IS NULL THEN
+ CALL util.throw ('The quantity is incorrect');
+ END IF;
+
+ SELECT util.VN_CURDATE() INTO vCurdate;
+
+ SELECT t.id INTO vDevalueTravelFk
+ FROM travel t
+ JOIN travelConfig tc
+ WHERE t.shipped = vCurdate
+ AND t.landed = vCurdate
+ AND t.warehouseInFk = vWarehouseFk
+ AND t.warehouseOutFk = tc.devalueWarehouseOutFk
+ AND t.agencyModeFk = tc.devalueAgencyModeFk
+ LIMIT 1;
+
+ IF NOT vDevalueTravelFk OR vDevalueTravelFk IS NULL THEN
+ INSERT INTO travel (
+ shipped,
+ landed,
+ warehouseInFk,
+ warehouseOutFk,
+ `ref`,
+ isReceived,
+ agencyModeFk)
+ SELECT vCurdate,
+ vCurdate,
+ vWarehouseFk,
+ tc.devalueWarehouseOutFk,
+ tc.devalueRef,
+ TRUE,
+ tc.devalueAgencyModeFk
+ FROM travelConfig tc;
+ SET vDevalueTravelFk = LAST_INSERT_ID();
+ END IF;
+
+ SELECT id, DATE(dated) INTO vTargetEntryFk, vTargetEntryDate
+ FROM `entry` e
+ WHERE DATE(dated) = vCurdate
+ AND typeFk = 'devaluation'
+ AND travelFk = vDevalueTravelFk
+ ORDER BY created DESC
+ LIMIT 1;
+
+ CALL buyUltimate(vWarehouseFk, vCurdate);
+
+ SELECT b.entryFk, bu.buyFk,IFNULL(b.buyingValue, 0) INTO vLastEntryFk, vLastBuyFk, vBuyingValueOriginal
+ FROM tmp.buyUltimate bu
+ JOIN vn.buy b ON b.id = bu.buyFk
+ WHERE bu.itemFk = vSelf
+ AND bu.warehouseFk = vWarehouseFk;
+
+ IF vBuyingValue > vBuyingValueOriginal THEN
+ CALL util.throw ('Price not valid');
+ END IF;
+
+ IF vLastEntryFk IS NULL OR vLastBuyFk IS NULL THEN
+ CALL util.throw ('The item has not a buy');
+ END IF;
+
+ SELECT id,visible INTO vTargetItemShelvingFk, vCurrentVisible
+ FROM itemShelving
+ WHERE shelvingFk = vShelvingFK COLLATE utf8mb3_general_ci
+ AND itemFk = vSelf
+ LIMIT 1;
+
+ IF vCurrentVisible IS NULL THEN
+ CALL util.throw ('The shelving has not a visible for this item');
+ END IF;
+
+ IF vQuantity > vCurrentVisible THEN
+ CALL util.throw('Quantity is greater than visible');
+ END IF;
+
+ START TRANSACTION;
+
+ IF NOT vTargetEntryFk OR vTargetEntryFk IS NULL
+ OR NOT vTargetEntryDate <=> vCurdate THEN
+ INSERT INTO entry(
+ travelFk,
+ supplierFk,
+ dated,
+ commission,
+ currencyFk,
+ companyFk,
+ clonedFrom,
+ typeFk
+ )
+ SELECT vDevalueTravelFk,
+ supplierFk,
+ vCurdate,
+ commission,
+ currencyFk,
+ companyFk,
+ vLastEntryFk,
+ 'devaluation'
+ FROM entry
+ WHERE id = vLastEntryFk;
+
+ SET vTargetEntryFk = LAST_INSERT_ID();
+ END IF;
+
+ SELECT i.id INTO vItemA2Fk
+ FROM item i
+ JOIN (
+ SELECT i.id,
+ i.name,
+ i.subname,
+ i.value5,
+ i.value6,
+ i.value7,
+ i.value8,
+ i.value9,
+ i.value10,
+ i.NumberOfItemsPerCask,
+ i.EmbalageCode,
+ i.quality
+ FROM item i
+ WHERE i.id = vSelf
+ )i2 ON i2.name <=> i.name
+ AND i2.subname <=> i.subname
+ AND i2.value5 <=> i.value5
+ AND i2.value6 <=> i.value6
+ AND i2.value8 <=> i.value8
+ AND i2.value9 <=> i.value9
+ AND i2.value10 <=> i.value10
+ AND i2.NumberOfItemsPerCask <=> i.NumberOfItemsPerCask
+ AND i2.EmbalageCode <=> i.EmbalageCode
+ AND i2.quality <=> i.quality
+ WHERE i.id <> i2.id
+ AND i.category = 'A2'
+ LIMIT 1;
+
+ IF vItemA2Fk IS NULL THEN
+ INSERT INTO item (
+ equivalent,
+ name,
+ `size`,
+ stems,
+ minPrice,
+ isToPrint,
+ family,
+ box,
+ category,
+ originFk,
+ doPhoto,
+ image,
+ inkFk,
+ intrastatFk,
+ hasMinPrice,
+ created,
+ comment,
+ typeFk,
+ generic,
+ producerFk,
+ description,
+ density,
+ relevancy,
+ expenseFk,
+ isActive,
+ longName,
+ subName,
+ minimum,
+ upToDown,
+ supplyResponseFk,
+ hasKgPrice,
+ isFloramondo,
+ isFragile,
+ numberOfItemsPerCask,
+ embalageCode,
+ quality,
+ stemMultiplier,
+ itemPackingTypeFk,
+ packingOut,
+ genericFk,
+ isLaid,
+ lastUsed,
+ weightByPiece,
+ editorFk,
+ recycledPlastic,
+ nonRecycledPlastic)
+ SELECT equivalent,
+ name,
+ `size`,
+ stems,
+ minPrice,
+ isToPrint,
+ family,
+ box,
+ 'A2',
+ originFk,
+ doPhoto,
+ image,
+ inkFk,
+ intrastatFk,
+ hasMinPrice,
+ created,
+ comment,
+ typeFk,
+ generic,
+ producerFk,
+ description,
+ density,
+ relevancy,
+ expenseFk,
+ isActive,
+ longName,
+ subName,
+ minimum,
+ upToDown,
+ supplyResponseFk,
+ hasKgPrice,
+ isFloramondo,
+ isFragile,
+ numberOfItemsPerCask,
+ embalageCode,
+ quality,
+ stemMultiplier,
+ itemPackingTypeFk,
+ packingOut,
+ genericFk,
+ isLaid,
+ lastUsed,
+ weightByPiece,
+ editorFk,
+ recycledPlastic,
+ nonRecycledPlastic
+ FROM item
+ WHERE id = vSelf;
+
+ SET vItemA2Fk = LAST_INSERT_ID();
+
+ INSERT INTO itemTag (itemFk, tagFk, `value`, intValue, priority, editorFk)
+ SELECT vItemA2Fk, tagFk, `value`, intValue, priority, editorFk
+ FROM itemTag
+ WHERE id = vSelf;
+
+ UPDATE itemTaxCountry itc
+ JOIN itemTaxCountry itc2 ON itc2.itemFk = vSelf
+ AND itc2.countryFk = itc.countryFk
+ SET itc2.taxClassFk = itc.taxClassFk
+ WHERE itc.id = vItemA2Fk;
+
+ INSERT INTO itemBotanical (itemFk, genusFk, specieFk)
+ SELECT vItemA2Fk, genusFk, specieFk
+ FROM itemBotanical
+ WHERE itemFk = vSelf;
+ END IF;
+
+ IF vQuantity = vCurrentVisible THEN
+ DELETE FROM itemShelving
+ WHERE id = vTargetItemShelvingFk;
+ ELSE
+ UPDATE itemShelving
+ SET visible = vCurrentVisible - vQuantity
+ WHERE id = vTargetItemShelvingFk;
+ END IF;
+
+ INSERT INTO buy(
+ entryFk,
+ itemFk,
+ quantity,
+ buyingValue,
+ freightValue,
+ isIgnored,
+ stickers,
+ packagingFk,
+ packing,
+ `grouping`,
+ groupingMode,
+ containerFk,
+ comissionValue,
+ packageValue,
+ price1,
+ price2,
+ price3,
+ minPrice,
+ isChecked,
+ location,
+ weight,
+ itemOriginalFk)
+ SELECT vTargetEntryFk,
+ itemFk,
+ - LEAST(vQuantity, vCurrentVisible),
+ buyingValue,
+ freightValue,
+ TRUE,
+ stickers,
+ packagingFk,
+ packing,
+ `grouping`,
+ groupingMode,
+ containerFk,
+ comissionValue,
+ packageValue,
+ price1,
+ price2,
+ price3,
+ minPrice,
+ isChecked,
+ location,
+ weight,
+ itemOriginalFk
+ FROM vn.buy
+ WHERE id = vLastBuyFk
+ UNION
+ SELECT vTargetEntryFk,
+ vItemA2Fk,
+ vQuantity,
+ vBuyingValue,
+ freightValue,
+ TRUE,
+ stickers,
+ packagingFk,
+ packing,
+ `grouping`,
+ groupingMode,
+ containerFk,
+ comissionValue,
+ packageValue,
+ price1,
+ price2,
+ price3,
+ minPrice,
+ isChecked,
+ location,
+ weight,
+ itemOriginalFk
+ FROM vn.buy
+ WHERE id = vLastBuyFk;
+
+ INSERT IGNORE INTO itemShelving (
+ itemFk,
+ shelvingFk,
+ visible,
+ `grouping`,
+ packing,
+ packagingFk,
+ userFk,
+ isChecked)
+ SELECT vItemA2Fk,
+ shelvingFk,
+ vQuantity ,
+ `grouping`,
+ packing,
+ packagingFk,
+ account.myUser_getId(),
+ isChecked
+ FROM itemShelving
+ WHERE itemFK = vSelf
+ AND shelvingFk = vShelvingFK COLLATE utf8mb3_general_ci
+ ON DUPLICATE KEY UPDATE
+ visible = vQuantity + VALUES(visible);
+
+ COMMIT;
+ CALL cache.visible_refresh(vCacheFk, TRUE, vWarehouseFk);
+ CALL cache.available_refresh(vCacheFk, TRUE, vWarehouseFk, vCurdate);
+ CALL buy_recalcPricesByBuy(vA2BuyFk);
+END$$
+DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/vn/procedures/supplierPackaging_ReportSource.sql b/db/routines/vn/procedures/supplierPackaging_ReportSource.sql
index f9d43f925..2cf9b85c5 100644
--- a/db/routines/vn/procedures/supplierPackaging_ReportSource.sql
+++ b/db/routines/vn/procedures/supplierPackaging_ReportSource.sql
@@ -35,7 +35,7 @@ BEGIN
itemFk,
longName,
supplier,
- entryFk,
+ CONCAT('E',entryFk) entryFk,
landed,
`in`,
`out`,
@@ -49,16 +49,98 @@ BEGIN
itemFk,
longName,
supplier,
- 'previous',
+ 'E previous',
vFromDated,
SUM(`in`),
SUM(`out`),
NULL,
- buyingValue
+ AVG(buyingValue)
FROM supplierPackaging
WHERE supplierFk = vSupplierFk
AND landed < vFromDated
GROUP BY itemFk
+ UNION ALL
+ SELECT vSupplierFk,
+ s.itemFk,
+ i.longName,
+ c.name,
+ CONCAT('T',s.ticketFk),
+ DATE(t.shipped),
+ -LEAST(s.quantity,0) `in`,
+ GREATEST(s.quantity,0) `out`,
+ t.warehouseFk,
+ s.price * (100 - s.discount) / 100
+ FROM sale s
+ JOIN item i ON i.id = s.itemFk
+ JOIN packaging p ON p.itemFk = i.id
+ JOIN ticket t ON t.id = s.ticketFk
+ JOIN client c ON c.id = t.clientFk
+ JOIN supplier su ON su.nif = c.fi
+ WHERE su.id = vSupplierFk
+ AND t.shipped >= vFromDated
+ AND p.isPackageReturnable
+ UNION ALL
+ SELECT vSupplierFk,
+ s.itemFk,
+ i.longName,
+ c.name,
+ 'T previous',
+ vFromDated,
+ SUM(-LEAST(s.quantity,0)) `in`,
+ SUM(GREATEST(s.quantity,0)) `out`,
+ NULL,
+ AVG(s.price * (100 - s.discount) / 100)
+ FROM sale s
+ JOIN item i ON i.id = s.itemFk
+ JOIN packaging p ON p.itemFk = i.id
+ JOIN ticket t ON t.id = s.ticketFk
+ JOIN client c ON c.id = t.clientFk
+ JOIN supplier su ON su.nif = c.fi
+ WHERE su.id = vSupplierFk
+ AND t.shipped < vFromDated
+ AND p.isPackageReturnable
+ GROUP BY s.itemFk
+ UNION ALL
+ SELECT vSupplierFk,
+ p.itemFk,
+ i.longName,
+ c.name,
+ CONCAT('TP',tp.ticketFk),
+ DATE(t.shipped),
+ -LEAST(tp.quantity,0) `in`,
+ GREATEST(tp.quantity,0) `out`,
+ t.warehouseFk,
+ 0
+ FROM ticketPackaging tp
+ JOIN packaging p ON p.id = tp.packagingFk
+ JOIN item i ON i.id = p.itemFk
+ JOIN ticket t ON t.id = tp.ticketFk
+ JOIN client c ON c.id = t.clientFk
+ JOIN supplier su ON su.nif = c.fi
+ WHERE su.id = vSupplierFk
+ AND t.shipped >= vFromDated
+ AND p.isPackageReturnable
+ UNION ALL
+ SELECT vSupplierFk,
+ p.itemFk,
+ i.longName,
+ c.name,
+ 'TP previous',
+ vFromDated,
+ SUM(-LEAST(tp.quantity,0)) `in`,
+ SUM(GREATEST(tp.quantity,0)) `out`,
+ NULL,
+ 0
+ FROM ticketPackaging tp
+ JOIN packaging p ON p.id = tp.packagingFk
+ JOIN item i ON i.id = p.itemFk
+ JOIN ticket t ON t.id = tp.ticketFk
+ JOIN client c ON c.id = t.clientFk
+ JOIN supplier su ON su.nif = c.fi
+ WHERE su.id = vSupplierFk
+ AND t.shipped >= vFromDated
+ AND p.isPackageReturnable
+ GROUP BY p.itemFk
ORDER BY itemFk, landed, entryFk
) sub
WHERE `out` OR `in`;
diff --git a/db/versions/10955-orangeRuscus/00-firstScript.sql b/db/versions/10955-orangeRuscus/00-firstScript.sql
new file mode 100644
index 000000000..745c058bf
--- /dev/null
+++ b/db/versions/10955-orangeRuscus/00-firstScript.sql
@@ -0,0 +1,17 @@
+INSERT IGNORE INTO vn.entryType (code, description)
+ VALUES ('devaluation', 'Devaluación');
+
+ALTER TABLE vn.travelConfig ADD IF NOT EXISTS devalueWarehouseOutFk SMALLINT(6) UNSIGNED NULL
+ COMMENT 'Datos del travel para las entradas generadas al devaluar artículos de A1 a A2';
+
+ALTER TABLE vn.travelConfig ADD IF NOT EXISTS devalueAgencyModeFk INT(11) NULL;
+ALTER TABLE vn.travelConfig ADD IF NOT EXISTS devalueRef varchar(20) NULL;
+
+ALTER TABLE vn.travelConfig DROP FOREIGN KEY IF EXISTS travelConfig_agencyMode_FK;
+
+ALTER TABLE vn.travelConfig ADD CONSTRAINT travelConfig_agencyMode_FK
+ FOREIGN KEY (devalueAgencyModeFk) REFERENCES vn.agencyMode(id) ON DELETE SET NULL ON UPDATE CASCADE;
+
+ALTER TABLE vn.travelConfig DROP FOREIGN KEY IF EXISTS travelConfig_warehouse_FK;
+ALTER TABLE vn.travelConfig ADD CONSTRAINT travelConfig_warehouse_FK
+ FOREIGN KEY (devalueWarehouseOutFk) REFERENCES vn.warehouse(id) ON DELETE SET NULL ON UPDATE CASCADE;
diff --git a/db/versions/11057-chocolateMoss/00-part.sql b/db/versions/11057-chocolateMoss/00-part.sql
new file mode 100644
index 000000000..4cabb0e33
--- /dev/null
+++ b/db/versions/11057-chocolateMoss/00-part.sql
@@ -0,0 +1,26 @@
+DROP TABLE IF EXISTS vn2008.scanTree__;
+DROP TABLE IF EXISTS vn2008.payroll_embargos__;
+DROP TABLE IF EXISTS vn2008.unary_source__;
+DROP TABLE IF EXISTS vn2008.unary_scan__;
+DROP TABLE IF EXISTS vn2008.unary_scan_line_buy__;
+DROP TABLE IF EXISTS vn2008.unary_scan_line__;
+DROP TABLE IF EXISTS vn2008.scan_line__;
+DROP TABLE IF EXISTS vn2008.Familias__;
+DROP TABLE IF EXISTS vn2008.language__;
+DROP TABLE IF EXISTS vn2008.Clientes_dits__;
+DROP TABLE IF EXISTS vn2008.unary_scan_line_expedition__;
+DROP TABLE IF EXISTS vn2008.warehouse_group__;
+DROP TABLE IF EXISTS vn2008.Espionajes__;
+DROP TABLE IF EXISTS vn2008.jerarquia__;
+DROP TABLE IF EXISTS vn2008.wks__;
+DROP TABLE IF EXISTS vn2008.Proveedores_comunicados__;
+DROP TABLE IF EXISTS vn2008.integra2_escala__;
+DROP TABLE IF EXISTS vn2008.cp__;
+DROP TABLE IF EXISTS vn2008.unary__;
+DROP TABLE IF EXISTS vn2008.Estados__;
+DROP TABLE IF EXISTS vn2008.agency_hour__;
+DROP TABLE IF EXISTS vn2008.Reservas__;
+DROP TABLE IF EXISTS vn2008.cyc_declaration__;
+DROP TABLE IF EXISTS vn2008.route__;
+DROP TABLE IF EXISTS vn2008.Proveedores_escritos__;
+DROP TABLE IF EXISTS vn2008.config__;
diff --git a/db/versions/11057-chocolateMoss/01-part.sql b/db/versions/11057-chocolateMoss/01-part.sql
new file mode 100644
index 000000000..bba2167aa
--- /dev/null
+++ b/db/versions/11057-chocolateMoss/01-part.sql
@@ -0,0 +1,26 @@
+DROP TABLE IF EXISTS vn2008.expeditions_deleted__;
+DROP TABLE IF EXISTS vn2008.Tipos_f11__;
+DROP TABLE IF EXISTS vn2008.commission__;
+DROP TABLE IF EXISTS vn2008.Movimientos_revisar__;
+DROP TABLE IF EXISTS vn2008.recibida_agricola__;
+DROP TABLE IF EXISTS vn2008.tipsa__;
+DROP TABLE IF EXISTS vn2008.rounding__;
+DROP TABLE IF EXISTS vn2008.Informes__;
+DROP TABLE IF EXISTS vn2008.Forms__;
+DROP TABLE IF EXISTS vn2008.Clientes_event__;
+DROP TABLE IF EXISTS vn2008.wh_selection__;
+DROP TABLE IF EXISTS vn2008.template_bionic_component__;
+DROP TABLE IF EXISTS vn2008.Agencias_province__;
+DROP TABLE IF EXISTS vn2008.travel_pattern__;
+DROP TABLE IF EXISTS vn2008.sort_merge_results_ernesto__;
+DROP TABLE IF EXISTS vn2008.Conteo__;
+DROP TABLE IF EXISTS vn2008.Consignatarios_devices__;
+DROP TABLE IF EXISTS vn2008.link__;
+DROP TABLE IF EXISTS vn2008.agency_warehouse__;
+DROP TABLE IF EXISTS vn2008.warehouse_lc__;
+DROP TABLE IF EXISTS vn2008.emp_day_pay__;
+DROP TABLE IF EXISTS vn2008.Entradas_kop__;
+DROP TABLE IF EXISTS vn2008.dock__;
+DROP TABLE IF EXISTS vn2008.unaryScanFilter__;
+DROP TABLE IF EXISTS vn2008.Grupos__;
+DROP TABLE IF EXISTS vn2008.nichos__;
diff --git a/db/versions/11057-chocolateMoss/02-part.sql b/db/versions/11057-chocolateMoss/02-part.sql
new file mode 100644
index 000000000..dbdd6b3c4
--- /dev/null
+++ b/db/versions/11057-chocolateMoss/02-part.sql
@@ -0,0 +1,26 @@
+DROP TABLE IF EXISTS vn2008.form_query__;
+DROP TABLE IF EXISTS vn2008.filtros__;
+DROP TABLE IF EXISTS vn2008.Objetivos__;
+DROP TABLE IF EXISTS vn2008.zones__;
+DROP TABLE IF EXISTS vn2008.rec_translator__;
+DROP TABLE IF EXISTS vn2008.warehouse_joined__;
+DROP TABLE IF EXISTS vn2008.warehouse_filtro__;
+DROP TABLE IF EXISTS vn2008.viaxpress__;
+DROP TABLE IF EXISTS vn2008.cl_que__;
+DROP TABLE IF EXISTS vn2008.Recibos_recorded__;
+DROP TABLE IF EXISTS vn2008.cooler_path__;
+DROP TABLE IF EXISTS vn2008.payrroll_apEmpresarial__;
+DROP TABLE IF EXISTS vn2008.Compres_ok__;
+DROP TABLE IF EXISTS vn2008.Movimientos_avisar__;
+DROP TABLE IF EXISTS vn2008.Clases__;
+DROP TABLE IF EXISTS vn2008.payroll_tipobasess__;
+DROP TABLE IF EXISTS vn2008.guillen__;
+DROP TABLE IF EXISTS vn2008.guillen_carry__;
+DROP TABLE IF EXISTS vn2008.Series__;
+DROP TABLE IF EXISTS vn2008.Permisos__;
+DROP TABLE IF EXISTS vn2008.container__;
+DROP TABLE IF EXISTS vn2008.travel_reserve__;
+DROP TABLE IF EXISTS vn2008.tmpNEWTARIFAS__;
+DROP TABLE IF EXISTS vn2008.Clientes_potenciales__;
+DROP TABLE IF EXISTS vn2008.duaDismissed__;
+DROP TABLE IF EXISTS vn2008.cl_pet__;
diff --git a/db/versions/11057-chocolateMoss/03-part.sql b/db/versions/11057-chocolateMoss/03-part.sql
new file mode 100644
index 000000000..f5e4e45c0
--- /dev/null
+++ b/db/versions/11057-chocolateMoss/03-part.sql
@@ -0,0 +1,28 @@
+DROP TABLE IF EXISTS vn2008.preparation_exception__;
+DROP TABLE IF EXISTS vn2008.Clientes_empresa__;
+DROP TABLE IF EXISTS vn2008.call_information__;
+DROP TABLE IF EXISTS vn2008.template_bionic_price__;
+DROP TABLE IF EXISTS vn2008.invoice_observation__;
+DROP TABLE IF EXISTS vn2008.edi_testigos__;
+DROP TABLE IF EXISTS vn2008.cl_dep__;
+DROP TABLE IF EXISTS vn2008.agencia_descuadre__;
+DROP TABLE IF EXISTS vn2008.Monitoring__;
+DROP TABLE IF EXISTS vn2008.payroll_datos__;
+DROP TABLE IF EXISTS vn2008.tblIVA__;
+DROP TABLE IF EXISTS vn2008.cyc__;
+DROP TABLE IF EXISTS vn2008.Tickets_stack__;
+DROP TABLE IF EXISTS vn2008.config_host_forms__;
+DROP TABLE IF EXISTS vn2008.template_bionic_lot__;
+DROP TABLE IF EXISTS vn2008.payroll_bonificaciones__;
+DROP TABLE IF EXISTS vn2008.widget__;
+DROP TABLE IF EXISTS vn2008.accion_dits__;
+DROP TABLE IF EXISTS vn2008.credit_card__;
+DROP TABLE IF EXISTS vn2008.Brasa__;
+DROP TABLE IF EXISTS vn2008.Jefes__;
+DROP TABLE IF EXISTS vn2008.call_option__;
+DROP TABLE IF EXISTS vn2008.expeditions_pictures__;
+DROP TABLE IF EXISTS vn2008.scan__;
+DROP TABLE IF EXISTS vn2008.trolley__;
+DROP TABLE IF EXISTS vn2008.transport__;
+DROP TABLE IF EXISTS vn2008.Baldas__;
+DROP TABLE IF EXISTS vn2008.payroll_basess__;
diff --git a/db/versions/11058-aquaCataractarum/00-firstScript.sql b/db/versions/11058-aquaCataractarum/00-firstScript.sql
new file mode 100644
index 000000000..98fc910ad
--- /dev/null
+++ b/db/versions/11058-aquaCataractarum/00-firstScript.sql
@@ -0,0 +1,2 @@
+-- Place your SQL code here
+ALTER TABLE floranet.`order` ADD IF NOT EXISTS observations TEXT NULL;
diff --git a/loopback/locale/es.json b/loopback/locale/es.json
index c67f7ecd6..77e707590 100644
--- a/loopback/locale/es.json
+++ b/loopback/locale/es.json
@@ -357,5 +357,6 @@
"This workCenter is already assigned to this agency": "Este centro de trabajo ya está asignado a esta agencia",
"Select ticket or client": "Elija un ticket o un client",
"It was not able to create the invoice": "No se pudo crear la factura",
- "This PDA is already assigned to another user": "This PDA is already assigned to another user"
+ "This PDA is already assigned to another user": "This PDA is already assigned to another user",
+ "ticketCommercial": "El ticket {{ ticket }} para el vendedor {{ salesMan }} está en preparación. (mensaje generado automáticamente)"
}
\ No newline at end of file
diff --git a/modules/route/back/methods/roadmap/clone.js b/modules/route/back/methods/roadmap/clone.js
index 456ed823d..b74cf803c 100644
--- a/modules/route/back/methods/roadmap/clone.js
+++ b/modules/route/back/methods/roadmap/clone.js
@@ -62,12 +62,12 @@ module.exports = Self => {
const clone = await models.Roadmap.create(roadmap, options);
- const expeditionTrucks = roadmap.expeditionTruck();
- expeditionTrucks.map(expeditionTruck => {
- expeditionTruck.roadmapFk = clone.id;
- return expeditionTruck;
+ const roadmapStops = roadmap.roadmapStop();
+ roadmapStops.map(roadmapStop => {
+ roadmapStop.roadmapFk = clone.id;
+ return roadmapStop;
});
- await models.ExpeditionTruck.create(expeditionTrucks, options);
+ await models.RoadmapStop.create(roadmapStops, options);
}
await tx.commit();
diff --git a/modules/route/back/model-config.json b/modules/route/back/model-config.json
index 6cf8da986..09cda6b2d 100644
--- a/modules/route/back/model-config.json
+++ b/modules/route/back/model-config.json
@@ -8,7 +8,7 @@
"DeliveryPoint": {
"dataSource": "vn"
},
- "ExpeditionTruck": {
+ "RoadmapStop": {
"dataSource": "vn"
},
"Roadmap": {
diff --git a/modules/route/back/models/roadmap.json b/modules/route/back/models/roadmap.json
index 2f6bb8c02..01572d718 100644
--- a/modules/route/back/models/roadmap.json
+++ b/modules/route/back/models/roadmap.json
@@ -54,9 +54,9 @@
"model": "Supplier",
"foreignKey": "supplierFk"
},
- "expeditionTruck": {
+ "roadmapStop": {
"type": "hasMany",
- "model": "ExpeditionTruck",
+ "model": "RoadmapStop",
"foreignKey": "roadmapFk"
}
}
diff --git a/modules/route/back/models/expedition-truck.json b/modules/route/back/models/roadmapStop.json
similarity index 92%
rename from modules/route/back/models/expedition-truck.json
rename to modules/route/back/models/roadmapStop.json
index 8edc7347f..51aa3a6db 100644
--- a/modules/route/back/models/expedition-truck.json
+++ b/modules/route/back/models/roadmapStop.json
@@ -1,9 +1,9 @@
{
- "name": "ExpeditionTruck",
+ "name": "RoadmapStop",
"base": "VnModel",
"options": {
"mysql": {
- "table": "expeditionTruck"
+ "table": "roadmapStop"
}
},
"properties": {
diff --git a/modules/route/front/roadmap/stops/index.html b/modules/route/front/roadmap/stops/index.html
index b69492a21..82f30c326 100644
--- a/modules/route/front/roadmap/stops/index.html
+++ b/modules/route/front/roadmap/stops/index.html
@@ -1,22 +1,22 @@