diff --git a/db/routines/vn/functions/buy_getUltimate.sql b/db/routines/vn/functions/buy_getUltimate.sql
new file mode 100644
index 000000000..173e6e01f
--- /dev/null
+++ b/db/routines/vn/functions/buy_getUltimate.sql
@@ -0,0 +1,31 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`vn`@`localhost` FUNCTION `vn`.`buy_getUltimate`(
+ vItemFk INT,
+ vWarehouseFk SMALLINT,
+ vDated DATE
+)
+ RETURNS int(11)
+ DETERMINISTIC
+BEGIN
+/**
+ * Calcula las últimas compras realizadas hasta una fecha.
+ *
+ * @param vItemFk Id del artículo
+ * @param vWarehouseFk Id del almacén
+ * @param vDated Compras hasta fecha
+ * @return Id de compra
+ */
+ DECLARE vBuyFk INT;
+
+ CALL buy_getUltimate(vItemFk, vWarehouseFk, vDated);
+
+ SELECT buyFk INTO vBuyFk
+ FROM tmp.buyUltimate;
+
+ DROP TEMPORARY TABLE IF EXISTS
+ tmp.buyUltimate,
+ tmp.buyUltimateFromInterval;
+
+ RETURN vBuyFk;
+END$$
+DELIMITER ;
diff --git a/loopback/locale/es.json b/loopback/locale/es.json
index 8e758d1ab..8f0869eb5 100644
--- a/loopback/locale/es.json
+++ b/loopback/locale/es.json
@@ -383,5 +383,6 @@
"No valid travel thermograph found": "No se encontró un termógrafo válido",
"The quantity claimed cannot be greater than the quantity of the line": "La cantidad reclamada no puede ser mayor que la cantidad de la línea",
"type cannot be blank": "Se debe rellenar el tipo",
- "There are tickets for this area, delete them first": "Hay tickets para esta sección, borralos primero"
+ "There are tickets for this area, delete them first": "Hay tickets para esta sección, borralos primero",
+ "There is no company associated with that warehouse": "No hay ninguna empresa asociada a ese almacén"
}
\ No newline at end of file
diff --git a/modules/item/back/methods/item/itemLabelQr.js b/modules/item/back/methods/item/itemLabelQr.js
index 8d92d51e8..88d8ce950 100644
--- a/modules/item/back/methods/item/itemLabelQr.js
+++ b/modules/item/back/methods/item/itemLabelQr.js
@@ -9,8 +9,15 @@ module.exports = Self => {
required: true,
description: 'The item id',
http: {source: 'path'}
- },
- {
+ }, {
+ arg: 'warehouseId',
+ type: 'number',
+ required: true
+ }, {
+ arg: 'packing',
+ type: 'number',
+ required: false
+ }, {
arg: 'copies',
type: 'number',
required: false
diff --git a/print/templates/reports/item-label-qr/item-label-qr.html b/print/templates/reports/item-label-qr/item-label-qr.html
index 3b61e1542..2ece8943e 100644
--- a/print/templates/reports/item-label-qr/item-label-qr.html
+++ b/print/templates/reports/item-label-qr/item-label-qr.html
@@ -52,7 +52,7 @@
- {{item.packing}}
+ {{packing || item.packing}}
|
@@ -89,7 +89,7 @@
|
- {{`${item.labelNum} / ${totalPages}`}}
+ {{`${item.labelNum}/${item.quantity / (packing || item.packing)}`}}
|
diff --git a/print/templates/reports/item-label-qr/item-label-qr.js b/print/templates/reports/item-label-qr/item-label-qr.js
index 99744b0bd..1a0ef767b 100755
--- a/print/templates/reports/item-label-qr/item-label-qr.js
+++ b/print/templates/reports/item-label-qr/item-label-qr.js
@@ -5,25 +5,33 @@ const qrcode = require('qrcode');
module.exports = {
name: 'item-label-qr',
async serverPrefetch() {
- this.items = await this.rawSqlFromDef('item', [this.copies || 1, this.id]);
+ this.company = await this.findOneFromDef('company', [this.warehouseId]);
+ if (!this.company)
+ throw new UserError(`There is no company associated with that warehouse`);
+
+ this.date = Date.vnNew();
+ this.lastBuy = await this.findOneFromDef('lastBuy', [
+ this.id,
+ this.warehouseId,
+ this.date
+ ]);
+ this.items = await this.rawSqlFromDef('item', [this.copies || 1, this.lastBuy.id]);
if (!this.items.length) throw new UserError(`Empty data source`);
this.qr = await this.getQr(this.items[0].buyFk);
- this.vnDate = Date.vnNew();
- this.date = moment(this.vnDate).format('YY/DD');
- this.totalPages = this.items.length;
+ this.date = moment(this.date).format('WW/E');
},
methods: {
getQr(data) {
data = {
- company: 'vnl',
+ company: this.company,
user: this.userId,
- created: this.vnDate,
+ created: this.date,
table: 'buy',
id: data
};
return qrcode.toDataURL(JSON.stringify(data), {
margin: 0,
- errorCorrectionLevel: 'H'
+ errorCorrectionLevel: 'L'
});
}
},
@@ -33,6 +41,12 @@ module.exports = {
required: true,
description: 'The item id'
},
+ warehouseId: {
+ type: Number
+ },
+ packing: {
+ type: Number
+ },
copies: {
type: Number
},
diff --git a/print/templates/reports/item-label-qr/sql/company.sql b/print/templates/reports/item-label-qr/sql/company.sql
new file mode 100644
index 000000000..e130b4033
--- /dev/null
+++ b/print/templates/reports/item-label-qr/sql/company.sql
@@ -0,0 +1,6 @@
+SELECT co.code
+ FROM warehouse w
+ JOIN address a ON a.id = w.addressFk
+ JOIN client c ON c.id = a.clientFk
+ JOIN company co ON co.clientFk = c.id
+ WHERE w.id = ?
\ No newline at end of file
diff --git a/print/templates/reports/item-label-qr/sql/lastBuy.sql b/print/templates/reports/item-label-qr/sql/lastBuy.sql
new file mode 100644
index 000000000..d10339998
--- /dev/null
+++ b/print/templates/reports/item-label-qr/sql/lastBuy.sql
@@ -0,0 +1 @@
+SELECT buy_getUltimate(?, ?, ?) id
\ No newline at end of file