From b1a8fcf968ac1c0b2cffa566ff655241144ec8b2 Mon Sep 17 00:00:00 2001
From: alexm
Date: Mon, 26 Feb 2024 11:50:46 +0100
Subject: [PATCH 01/20] refs #6925 fix(invoice): incoterms error
---
db/routines/vn/procedures/ticket_closeByTicket.sql | 5 +++--
loopback/locale/es.json | 3 ++-
loopback/server/boot/date.js | 4 ++--
modules/ticket/back/methods/ticket/closeAll.js | 3 ++-
modules/ticket/back/methods/ticket/closure.js | 11 ++++++-----
.../reports/invoice-incoterms/invoice-incoterms.js | 5 ++++-
6 files changed, 19 insertions(+), 12 deletions(-)
diff --git a/db/routines/vn/procedures/ticket_closeByTicket.sql b/db/routines/vn/procedures/ticket_closeByTicket.sql
index 93772225b..837b809a2 100644
--- a/db/routines/vn/procedures/ticket_closeByTicket.sql
+++ b/db/routines/vn/procedures/ticket_closeByTicket.sql
@@ -15,10 +15,11 @@ BEGIN
JOIN agencyMode am ON am.id = t.agencyModeFk
LEFT JOIN ticketState ts ON ts.ticketFk = t.id
JOIN alertLevel al ON al.id = ts.alertLevel
- WHERE al.code = 'PACKED' OR (am.code = 'refund' AND al.code != 'delivered')
+ WHERE (al.code = 'PACKED' OR (am.code = 'refund' AND al.code != 'delivered'))
AND t.id = vTicketFk
AND t.refFk IS NULL
- GROUP BY t.id);
+ GROUP BY t.id
+ );
CALL ticket_close();
diff --git a/loopback/locale/es.json b/loopback/locale/es.json
index aea0c311c..49283e633 100644
--- a/loopback/locale/es.json
+++ b/loopback/locale/es.json
@@ -344,5 +344,6 @@
"CountryFK cannot be empty": "El país no puede estar vacío",
"Cmr file does not exist": "El archivo del cmr no existe",
"You are not allowed to modify the alias": "No estás autorizado a modificar el alias",
- "No tickets to invoice": "No hay tickets para facturar"
+ "No tickets to invoice": "No hay tickets para facturar",
+ "The address of the customer must have information about Incoterms and Customs Agent": "El consignatario del cliente debe tener informado Incoterms y Agente de aduanas"
}
diff --git a/loopback/server/boot/date.js b/loopback/server/boot/date.js
index d592dc416..18c816186 100644
--- a/loopback/server/boot/date.js
+++ b/loopback/server/boot/date.js
@@ -1,7 +1,7 @@
module.exports = () => {
Date.vnUTC = (env = process.env.NODE_ENV) => {
- if (!env || env === 'development')
- return new Date(Date.UTC(2001, 0, 1, 11));
+ // if (!env || env === 'development')
+ // return new Date(Date.UTC(2001, 0, 1, 11));
return new Date();
};
diff --git a/modules/ticket/back/methods/ticket/closeAll.js b/modules/ticket/back/methods/ticket/closeAll.js
index 46c45aa92..e0c6b0b16 100644
--- a/modules/ticket/back/methods/ticket/closeAll.js
+++ b/modules/ticket/back/methods/ticket/closeAll.js
@@ -30,7 +30,7 @@ module.exports = Self => {
// Prevent closure for current day
if (toDate >= todayMinDate && toDate <= todayMaxDate)
throw new UserError('You cannot close tickets for today');
-
+ console.log(toDate, toDate);
const tickets = await Self.rawSql(`
SELECT t.id,
t.clientFk,
@@ -57,6 +57,7 @@ module.exports = Self => {
AND t.refFk IS NULL
GROUP BY t.id
`, [toDate, toDate]);
+ console.log('tickets: ', tickets);
await closure(ctx, Self, tickets);
diff --git a/modules/ticket/back/methods/ticket/closure.js b/modules/ticket/back/methods/ticket/closure.js
index 1d04679d3..2a0db1067 100644
--- a/modules/ticket/back/methods/ticket/closure.js
+++ b/modules/ticket/back/methods/ticket/closure.js
@@ -15,11 +15,12 @@ module.exports = async function(ctx, Self, tickets, reqArgs = {}) {
const [invoiceOut] = await Self.rawSql(`
SELECT io.id, io.ref, io.serial, cny.code companyCode, io.issued
- FROM ticket t
- JOIN invoiceOut io ON io.ref = t.refFk
- JOIN company cny ON cny.id = io.companyFk
- WHERE t.id = ?
- `, [ticket.id]);
+ FROM ticket t
+ JOIN invoiceOut io ON io.ref = t.refFk
+ JOIN company cny ON cny.id = io.companyFk
+ WHERE t.id = ?
+ `, [ticket.id]);
+ console.log('invoiceOut: ', invoiceOut);
const mailOptions = {
overrideAttachments: true,
diff --git a/print/templates/reports/invoice-incoterms/invoice-incoterms.js b/print/templates/reports/invoice-incoterms/invoice-incoterms.js
index 9cc2600af..eb3a7d6a1 100755
--- a/print/templates/reports/invoice-incoterms/invoice-incoterms.js
+++ b/print/templates/reports/invoice-incoterms/invoice-incoterms.js
@@ -1,4 +1,5 @@
const vnReport = require('../../../core/mixins/vn-report.js');
+const UserError = require('vn-loopback/util/user-error');
module.exports = {
name: 'invoice-incoterms',
@@ -7,7 +8,9 @@ module.exports = {
this.invoice = await this.findOneFromDef('invoice', [this.reference]);
this.checkMainEntity(this.invoice);
this.client = await this.findOneFromDef('client', [this.reference]);
- this.incoterms = await this.findOneFromDef('incoterms', [this.reference, this.reference, this.reference, this.reference]);
+ this.incoterms =
+ await this.findOneFromDef('incoterms', [this.reference, this.reference, this.reference, this.reference]);
+ if (!this.incoterms) throw new UserError(`The client should be informed of the incoterms`);
},
props: {
reference: {
From f5f2179ac68419671d6ccc273c9c1a9ff1031e61 Mon Sep 17 00:00:00 2001
From: guillermo
Date: Wed, 28 Feb 2024 12:32:28 +0100
Subject: [PATCH 02/20] refactor: refs #6495 Migrated procs to vn
---
.../procedures/client_sendMailPurchases.sql | 91 ++++++++++++++++
.../client_sendMailPurchasesLauncher.sql | 27 +++++
.../procedures/supplier_getPackagingStock.sql | 50 +++++++++
.../supplier_getPackagingStockDetail.sql | 65 ++++++++++++
.../emailYesterdayPurchasesByConsigna.sql | 100 ------------------
.../emailYesterdayPurchasesLauncher.sql | 27 -----
.../vn2008/procedures/embalajes_stocks.sql | 51 ---------
.../procedures/embalajes_stocks_detalle.sql | 78 --------------
.../10918-wheatRose/00-firstScript.sql | 4 +
9 files changed, 237 insertions(+), 256 deletions(-)
create mode 100644 db/routines/vn/procedures/client_sendMailPurchases.sql
create mode 100644 db/routines/vn/procedures/client_sendMailPurchasesLauncher.sql
create mode 100644 db/routines/vn/procedures/supplier_getPackagingStock.sql
create mode 100644 db/routines/vn/procedures/supplier_getPackagingStockDetail.sql
delete mode 100644 db/routines/vn2008/procedures/emailYesterdayPurchasesByConsigna.sql
delete mode 100644 db/routines/vn2008/procedures/emailYesterdayPurchasesLauncher.sql
delete mode 100644 db/routines/vn2008/procedures/embalajes_stocks.sql
delete mode 100644 db/routines/vn2008/procedures/embalajes_stocks_detalle.sql
create mode 100644 db/versions/10918-wheatRose/00-firstScript.sql
diff --git a/db/routines/vn/procedures/client_sendMailPurchases.sql b/db/routines/vn/procedures/client_sendMailPurchases.sql
new file mode 100644
index 000000000..2eeddb479
--- /dev/null
+++ b/db/routines/vn/procedures/client_sendMailPurchases.sql
@@ -0,0 +1,91 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`client_sendMailPurchases`(
+ vSelf INT,
+ vDated DATE
+)
+BEGIN
+/**
+ * Envia un correo electrónico con un resumen de los pedidos
+ * preparados para un cliente.
+ *
+ * @param vSelf Id del cliente
+ * @param vDated Fecha de preparación
+ */
+ DECLARE vTicketFk INT;
+ DECLARE vAlias VARCHAR(50);
+ DECLARE vStreet VARCHAR(255);
+ DECLARE vCity VARCHAR(25);
+ DECLARE vAmount DOUBLE;
+ DECLARE vMailTo VARCHAR(250);
+ DECLARE vString TEXT;
+ DECLARE vDone BOOL DEFAULT FALSE;
+ DECLARE vTickets CURSOR FOR
+ SELECT t.id,
+ t.nickname,
+ CAST(sub.amount AS DECIMAL(10,2)) amount,
+ a.street,
+ a.city
+ FROM ticket t
+ JOIN `address` a ON t.addressFk = a.id
+ JOIN (
+ SELECT s.ticketFk,
+ SUM(
+ s.quantity * s.price * (100 - s.discount) / 100
+ ) amount
+ FROM sale s
+ JOIN ticket t ON t.id = s.ticketFk
+ WHERE t.shipped >= util.VN_CURDATE() - INTERVAL 6 MONTH
+ GROUP BY s.ticketFk
+ ) sub ON sub.ticketFk = t.id
+ WHERE t.shipped BETWEEN vDated AND util.dayEnd(vDated)
+ AND t.clientFk = vSelf;
+ DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
+
+ SET vDated = IFNULL(vDated, util.yesterday());
+
+ OPEN vTickets;
+ FETCH vTickets INTO vTicketFk, vAlias, vAmount, vStreet, vCity;
+
+ SET vString = CONCAT('',
+ ' Relación de envíos.
',
+ 'Dia: ', vDated, '
');
+
+ WHILE NOT vDone DO
+ SET vString = CONCAT(vString, '
',
+ '',
+ ' ', vAlias, '
',
+ ' ', vStreet, '(', vCity, ')');
+ FETCH vTickets INTO vTicketFk, vAlias, vAmount, vStreet, vCity;
+ END WHILE;
+
+ SET vString = CONCAT(
+ vString,
+ '',
+ '
Puede acceder al detalle de los albaranes haciendo click sobre el número de Ticket',
+ '
Muchas gracias por su confianza
',
+ '
');
+
+ -- Envío del email
+ SELECT CONCAT(email,', pako@verdnatura.es') INTO vMailTo
+ FROM client
+ WHERE id = vSelf
+ AND email <> '';
+
+ CALL mail_insert(
+ IFNULL(vMailTo, 'pako.natek@gmail.com'),
+ 'pako@verdnatura.es',
+ 'Resumen de pedidos preparados',
+ vString
+ );
+END$$
+DELIMITER ;
diff --git a/db/routines/vn/procedures/client_sendMailPurchasesLauncher.sql b/db/routines/vn/procedures/client_sendMailPurchasesLauncher.sql
new file mode 100644
index 000000000..e93e803da
--- /dev/null
+++ b/db/routines/vn/procedures/client_sendMailPurchasesLauncher.sql
@@ -0,0 +1,27 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`client_sendMailPurchasesLauncher`()
+BEGIN
+/**
+ * Lanza el envío de correos electrónicos con el resumen de pedidos
+ * preparados para todos los clientes con el campo eypbc a TRUE.
+ *
+ * @param vSelf Id del cliente
+ * @param vDated Fecha de preparación
+ */
+ DECLARE vDone BOOL DEFAULT FALSE;
+ DECLARE vClientFk INT;
+ DECLARE vClients CURSOR FOR
+ SELECT id
+ FROM client
+ WHERE eypbc;
+ DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
+
+ OPEN vClients;
+ FETCH vClients INTO vClientFk;
+
+ WHILE NOT vDone DO
+ CALL client_sendMailPurchases(util.yesterday(), vClientFk);
+ FETCH vClients INTO vClientFk;
+ END WHILE;
+END$$
+DELIMITER ;
diff --git a/db/routines/vn/procedures/supplier_getPackagingStock.sql b/db/routines/vn/procedures/supplier_getPackagingStock.sql
new file mode 100644
index 000000000..c5f533d6b
--- /dev/null
+++ b/db/routines/vn/procedures/supplier_getPackagingStock.sql
@@ -0,0 +1,50 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`supplier_getPackagingStock`(
+ vSelf INT
+)
+BEGIN
+/**
+ * Obtiene el stock de los embalajes de un proveedor.
+ *
+ * @param vSelf Id del proveedor
+ */
+ DECLARE vItemCategoryFk INT;
+
+ SELECT id INTO vItemCategoryFk
+ FROM itemCategory
+ WHERE code = 'others';
+
+ SELECT sub.itemFk,
+ i.name,
+ SUM(sub.quantity) quantity
+ FROM (
+ SELECT b.itemFk, b.quantity
+ FROM buy b
+ JOIN item i ON i.id = b.itemFk
+ JOIN itemType it ON it.id = i.typeFk
+ JOIN `entry` e ON e.id = b.entryFk
+ JOIN travel t ON t.id = e.travelFk
+ WHERE e.supplierFk = vSelf
+ AND t.landed >= '2010-01-01'
+ AND it.categoryFk = vItemCategoryFk
+ UNION ALL
+ SELECT s.itemFk, - s.quantity
+ FROM sale s
+ JOIN item i ON i.id = s.itemFk
+ JOIN itemType it ON it.id = i.typeFk
+ JOIN ticket t ON t.id = s.ticketFk
+ JOIN `address` a ON a.id = t.addressFk
+ JOIN (
+ SELECT c.id,
+ s.id supplierFk
+ FROM supplier s
+ JOIN client c ON c.fi = s.nif
+ ) sub ON sub.id = a.clientFk
+ WHERE sub.supplierFk = vSelf
+ AND it.categoryFk = vItemCategoryFk
+ AND t.shipped > '2010-01-01'
+ ) sub
+ JOIN item i ON i.id = sub.itemFk
+ GROUP BY i.id;
+END$$
+DELIMITER ;
diff --git a/db/routines/vn/procedures/supplier_getPackagingStockDetail.sql b/db/routines/vn/procedures/supplier_getPackagingStockDetail.sql
new file mode 100644
index 000000000..f32fc8772
--- /dev/null
+++ b/db/routines/vn/procedures/supplier_getPackagingStockDetail.sql
@@ -0,0 +1,65 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`supplier_getPackagingStockDetail`(
+ vSelf INT,
+ vItemFk INT
+)
+BEGIN
+/**
+ * Obtiene el detalle del embalaje de un proveedor.
+ *
+ * @param vSelf Id del proveedor
+ * @param vItemFk Id del artículo
+ */
+ SELECT sub.itemFk,
+ sub.`table`,
+ sub.registry,
+ sub.dated,
+ i.name item,
+ w.name warehouse,
+ sub.`in`,
+ sub.`out`,
+ s.name supplier,
+ CAST(sub.buyingValue AS DECIMAL(5,2)) price
+ FROM (
+ SELECT b.itemFk,
+ IF(b.quantity > 0, b.quantity, NULL) `in`,
+ IF(b.quantity > 0, NULL, - b.quantity) `out`,
+ 'E' `table`,
+ b.entryFk registry,
+ t.landed dated,
+ t.warehouseInFk,
+ b.buyingValue
+ FROM buy b
+ JOIN `entry` e ON e.id = b.entryFk
+ JOIN travel t ON t.id = e.travelFk
+ WHERE e.supplierFk = vSelf
+ AND b.itemFk = vItemFk
+ AND t.landed >= '2010-01-01'
+ UNION ALL
+ SELECT s.itemFk,
+ IF(s.quantity < 0, - s.quantity, NULL),
+ IF(s.quantity < 0, NULL, s.quantity),
+ 'T',
+ s.ticketFk,
+ t.shipped,
+ t.warehouseFk,
+ s.price
+ FROM sale s
+ JOIN ticket t ON t.id = s.ticketFk
+ JOIN address a ON a.id = t.addressFk
+ JOIN (
+ SELECT c.id,
+ s.id supplierFk
+ FROM supplier s
+ JOIN client c ON c.fi = s.nif
+ ) sub ON sub.id = a.clientFk
+ WHERE sub.supplierFk = vSelf
+ AND s.itemFk = vItemFk
+ AND t.shipped > '2010-01-01'
+ ) sub
+ JOIN item i ON i.id = sub.itemFk
+ JOIN supplier s ON s.id = vSelf
+ JOIN warehouse w on w.id = sub.warehouseInFk;
+
+END$$
+DELIMITER ;
diff --git a/db/routines/vn2008/procedures/emailYesterdayPurchasesByConsigna.sql b/db/routines/vn2008/procedures/emailYesterdayPurchasesByConsigna.sql
deleted file mode 100644
index 439eba5ad..000000000
--- a/db/routines/vn2008/procedures/emailYesterdayPurchasesByConsigna.sql
+++ /dev/null
@@ -1,100 +0,0 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`emailYesterdayPurchasesByConsigna`(IN v_Date DATE, IN v_Client_Id INT)
-BEGIN
-
- DECLARE MyIdTicket BIGINT;
- DECLARE MyAlias VARCHAR(50);
- DECLARE MyDomicilio VARCHAR(255);
- DECLARE MyPoblacion VARCHAR(25);
- DECLARE MyImporte DOUBLE;
- DECLARE MyMailTo VARCHAR(250);
- DECLARE MyMailReplyTo VARCHAR(250);
- DECLARE done INT DEFAULT FALSE;
- DECLARE emptyList INT DEFAULT 0;
- DECLARE txt TEXT;
-
- DECLARE rs CURSOR FOR
- SELECT t.Id_Ticket, Alias, cast(amount as decimal(10,2)) Importe, Domicilio, POBLACION
- FROM Tickets t
- JOIN Consignatarios cs ON t.Id_Consigna = cs.Id_Consigna
- JOIN (
- SELECT `Movimientos`.`Id_Ticket` AS `Id_Ticket`,
- sum(
- `Movimientos`.`Cantidad` * `Movimientos`.`Preu` * (100 - `Movimientos`.`Descuento`) / 100
- ) AS `amount`
- FROM (
- `vn2008`.`Movimientos`
- JOIN `vn2008`.`Tickets` ON(
- `Movimientos`.`Id_Ticket` = `Tickets`.`Id_Ticket`
- )
- )
- WHERE `Tickets`.`Fecha` >= `util`.`VN_CURDATE`() + INTERVAL -6 MONTH
- GROUP BY `Movimientos`.`Id_Ticket`
- ) v ON v.Id_Ticket = t.Id_Ticket
- WHERE t.Fecha BETWEEN v_Date AND util.dayEnd(v_Date)
- AND t.Id_Cliente = v_Client_Id;
-
- DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
-
- SET v_Date = IFNULL(v_Date, util.yesterday());
-
- OPEN rs;
-
- FETCH rs INTO MyIdTicket, MyAlias, MyImporte, MyDomicilio, MyPoblacion;
-
- SET emptyList = done;
-
- SET txt = CONCAT('',
- ' Relación de envíos.
',
- 'Dia: ', v_Date, '
');
-
- WHILE NOT done DO
-
- SET txt = CONCAT(txt, '
',
- ''
- , ' ', MyAlias, '
'
- , ' ', MyDomicilio, '(', MyPoblacion, ')');
-
- FETCH rs INTO MyIdTicket, MyAlias, MyImporte, MyDomicilio, MyPoblacion;
-
- END WHILE;
-
- SET txt = CONCAT(
- txt,
- '',
- '
Puede acceder al detalle de los albaranes haciendo click sobre el número de Ticket',
- '
Muchas gracias por su confianza
',
- '
');
-
- -- Envío del email
- IF emptyList = 0 THEN
-
- SELECT CONCAT(`e-mail`,',pako@verdnatura.es') INTO MyMailTo
- FROM Clientes
- WHERE Id_Cliente = v_Client_Id AND `e-mail`>'';
-
- IF v_Client_Id = 7818 THEN -- LOEWE
- SET MyMailTo = 'isabel@elisabethblumen.com,emunozca@loewe.es,pako@verdnatura.es';
- END IF;
-
- CALL vn.mail_insert(
- IFNULL(MyMailTo,'pako.natek@gmail.com'),
- 'pako@verdnatura.es',
- 'Resumen de pedidos preparados',
- txt
- );
-
- END IF;
-
-END$$
-DELIMITER ;
diff --git a/db/routines/vn2008/procedures/emailYesterdayPurchasesLauncher.sql b/db/routines/vn2008/procedures/emailYesterdayPurchasesLauncher.sql
deleted file mode 100644
index c414cf1c4..000000000
--- a/db/routines/vn2008/procedures/emailYesterdayPurchasesLauncher.sql
+++ /dev/null
@@ -1,27 +0,0 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`emailYesterdayPurchasesLauncher`()
-BEGIN
-
-DECLARE done INT DEFAULT 0;
-DECLARE vMyClientId INT;
-
-DECLARE rs CURSOR FOR
-SELECT Id_Cliente
-FROM Clientes
-WHERE EYPBC != 0;
-
-DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
-
-OPEN rs;
-
-FETCH rs INTO vMyClientId;
-
-WHILE NOT done DO
-
- CALL emailYesterdayPurchasesByConsigna(util.yesterday(), vMyClientId);
-
- FETCH rs INTO vMyClientId;
-
-END WHILE;
-END$$
-DELIMITER ;
diff --git a/db/routines/vn2008/procedures/embalajes_stocks.sql b/db/routines/vn2008/procedures/embalajes_stocks.sql
deleted file mode 100644
index b20e44c79..000000000
--- a/db/routines/vn2008/procedures/embalajes_stocks.sql
+++ /dev/null
@@ -1,51 +0,0 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`embalajes_stocks`(IN idPEOPLE INT, IN bolCLIENT BOOLEAN)
-BEGIN
-
-if bolCLIENT then
-
- select m.Id_Article, Article, - cast(sum(m.Cantidad) as decimal) as Saldo
- from Movimientos m
- join Articles a on m.Id_Article = a.Id_Article
- join Tipos tp on tp.tipo_id = a.tipo_id
- join Tickets t using(Id_Ticket)
- join Consignatarios cs using(Id_Consigna)
- where cs.Id_Cliente = idPEOPLE
- and Tipo = 'Contenedores'
- and t.Fecha > '2010-01-01'
- group by m.Id_Article;
-
-else
-
-select Id_Article, Article, sum(Cantidad) as Saldo
-from
-(select Id_Article, Cantidad
-from Compres c
-join Articles a using(Id_Article)
-join Tipos tp using(tipo_id)
-join Entradas e using(Id_Entrada)
-join travel tr on tr.id = travel_id
-where Id_Proveedor = idPEOPLE
-and landing >= '2010-01-01'
-and reino_id = 6
-
-union all
-
-select Id_Article, - Cantidad
-from Movimientos m
-join Articles a using(Id_Article)
-join Tipos tp using(tipo_id)
-join Tickets t using(Id_Ticket)
-join Consignatarios cs using(Id_Consigna)
-join proveedores_clientes pc on pc.Id_Cliente = cs.Id_Cliente
-where Id_Proveedor = idPEOPLE
-and reino_id = 6
-and t.Fecha > '2010-01-01') mov
-
-join Articles a using(Id_Article)
-group by Id_Article;
-
-end if;
-
-END$$
-DELIMITER ;
diff --git a/db/routines/vn2008/procedures/embalajes_stocks_detalle.sql b/db/routines/vn2008/procedures/embalajes_stocks_detalle.sql
deleted file mode 100644
index c49d1b88a..000000000
--- a/db/routines/vn2008/procedures/embalajes_stocks_detalle.sql
+++ /dev/null
@@ -1,78 +0,0 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`embalajes_stocks_detalle`(IN idPEOPLE INT, IN idARTICLE INT, IN bolCLIENT BOOLEAN)
-BEGIN
-
-
-if bolCLIENT then
-
- select m.Id_Article
- , Article
- , IF(Cantidad < 0, - Cantidad, NULL) as Entrada
- , IF(Cantidad < 0, NULL, Cantidad) as Salida
- , 'T' as Tabla
- , t.Id_Ticket as Registro
- , t.Fecha
- , w.name as Almacen
- , cast(Preu as Decimal(5,2)) Precio
- , c.Cliente as Proveedor
- , abbreviation as Empresa
- from Movimientos m
- join Articles a using(Id_Article)
- join Tickets t using(Id_Ticket)
- join empresa e on e.id = t.empresa_id
- join warehouse w on w.id = t.warehouse_id
- join Consignatarios cs using(Id_Consigna)
- join Clientes c on c.Id_Cliente = cs.Id_Cliente
- where cs.Id_Cliente = idPEOPLE
- and m.Id_Article = idARTICLE
- and t.Fecha > '2010-01-01';
-
-else
-
-select Id_Article, Tabla, Registro, Fecha, Article
-, w.name as Almacen, Entrada, Salida, Proveedor, cast(Precio as Decimal(5,2)) Precio
-
-from
-
-(select Id_Article
- , IF(Cantidad > 0, Cantidad, NULL) as Entrada
- , IF(Cantidad > 0, NULL,- Cantidad) as Salida
- , 'E' as Tabla
- , Id_Entrada as Registro
- , landing as Fecha
- , tr.warehouse_id
- , Costefijo as Precio
-from Compres c
-join Entradas e using(Id_Entrada)
-join travel tr on tr.id = travel_id
-where Id_Proveedor = idPEOPLE
-and Id_Article = idARTICLE
-and landing >= '2010-01-01'
-
-union all
-
-select Id_Article
- , IF(Cantidad < 0, - Cantidad, NULL) as Entrada
- , IF(Cantidad < 0, NULL, Cantidad) as Salida
- , 'T'
- , Id_Ticket
- , Fecha
- , t.warehouse_id
- , Preu
-from Movimientos m
-join Tickets t using(Id_Ticket)
-join Consignatarios cs using(Id_Consigna)
-join proveedores_clientes pc on pc.Id_Cliente = cs.Id_Cliente
-where Id_Proveedor = idPEOPLE
-and Id_Article = idARTICLE
-and t.Fecha > '2010-01-01') mov
-
-join Articles a using(Id_Article)
-join Proveedores p on Id_Proveedor = idPEOPLE
-join warehouse w on w.id = mov.warehouse_id
-;
-
-end if;
-
-END$$
-DELIMITER ;
diff --git a/db/versions/10918-wheatRose/00-firstScript.sql b/db/versions/10918-wheatRose/00-firstScript.sql
new file mode 100644
index 000000000..40cb99ab0
--- /dev/null
+++ b/db/versions/10918-wheatRose/00-firstScript.sql
@@ -0,0 +1,4 @@
+UPDATE IGNORE bs.nightTask
+ SET `procedure` = 'client_sendMailPurchasesLauncher',
+ `schema` = 'vn'
+ WHERE `procedure` = 'emailYesterdayPurchasesLauncher';
From c54c9ce9132b06f27cb628a4e40f0b06426fb51d Mon Sep 17 00:00:00 2001
From: jorgep
Date: Thu, 29 Feb 2024 14:43:37 +0100
Subject: [PATCH 03/20] fix: refs #5186 create parkingLog & add sector relation
---
.../vn/triggers/parking_afterDelete.sql | 12 ++++++
.../vn/triggers/parking_beforeInsert.sql | 2 +-
.../vn/triggers/parking_beforeUpdate.sql | 2 +-
.../10923-pinkOak/00-createParkingLog.sql | 43 +++++++++++++++++++
modules/shelving/back/models/parking.json | 8 ++--
5 files changed, 62 insertions(+), 5 deletions(-)
create mode 100644 db/routines/vn/triggers/parking_afterDelete.sql
create mode 100644 db/versions/10923-pinkOak/00-createParkingLog.sql
diff --git a/db/routines/vn/triggers/parking_afterDelete.sql b/db/routines/vn/triggers/parking_afterDelete.sql
new file mode 100644
index 000000000..1ec96c24d
--- /dev/null
+++ b/db/routines/vn/triggers/parking_afterDelete.sql
@@ -0,0 +1,12 @@
+DELIMITER $$
+CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`parking_afterDelete`
+ AFTER DELETE ON `parking`
+ FOR EACH ROW
+BEGIN
+ INSERT INTO parkingLog
+ SET `action` = 'delete',
+ `changedModel` = 'Parking',
+ `changedModelId` = OLD.id,
+ `userFk` = account.myUser_getId();
+END$$
+DELIMITER ;
\ No newline at end of file
diff --git a/db/routines/vn/triggers/parking_beforeInsert.sql b/db/routines/vn/triggers/parking_beforeInsert.sql
index 9cf0bd42a..cdec4c759 100644
--- a/db/routines/vn/triggers/parking_beforeInsert.sql
+++ b/db/routines/vn/triggers/parking_beforeInsert.sql
@@ -3,7 +3,7 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`parking_beforeInsert`
BEFORE INSERT ON `parking`
FOR EACH ROW
BEGIN
-
+ SET NEW.editorFk = account.myUser_getId();
-- SET new.`code` = CONCAT(new.`column`,' - ',new.`row`) ;
END$$
diff --git a/db/routines/vn/triggers/parking_beforeUpdate.sql b/db/routines/vn/triggers/parking_beforeUpdate.sql
index 38238daa1..3e808f505 100644
--- a/db/routines/vn/triggers/parking_beforeUpdate.sql
+++ b/db/routines/vn/triggers/parking_beforeUpdate.sql
@@ -3,7 +3,7 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`parking_beforeUpdate`
BEFORE UPDATE ON `parking`
FOR EACH ROW
BEGIN
-
+ SET NEW.editorFk = account.myUser_getId();
-- SET new.`code` = CONCAT(new.`column`,' - ',new.`row`) ;
END$$
diff --git a/db/versions/10923-pinkOak/00-createParkingLog.sql b/db/versions/10923-pinkOak/00-createParkingLog.sql
new file mode 100644
index 000000000..8274e2d82
--- /dev/null
+++ b/db/versions/10923-pinkOak/00-createParkingLog.sql
@@ -0,0 +1,43 @@
+CREATE OR REPLACE TABLE `vn`.`parkingLog` (
+
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+
+ `originFk` int(11) DEFAULT NULL,
+
+ `userFk` int(10) unsigned DEFAULT NULL,
+
+ `action` set('insert','update','delete','select') NOT NULL,
+
+ `creationDate` timestamp NULL DEFAULT current_timestamp(),
+
+ `description` text CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
+
+ `changedModel` enum('Parking','SaleGroup','SaleGroupDetail') NOT NULL DEFAULT 'Parking',
+
+ `oldInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`oldInstance`)),
+
+ `newInstance` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`newInstance`)),
+
+ `changedModelId` int(11) NOT NULL,
+
+ `changedModelValue` varchar(45) DEFAULT NULL,
+
+ PRIMARY KEY (`id`),
+
+ KEY `logParkinguserFk` (`userFk`),
+
+ KEY `parkingLog_changedModel` (`changedModel`,`changedModelId`,`creationDate`),
+
+ KEY `parkingLog_originFk` (`originFk`,`creationDate`),
+
+ CONSTRAINT `parkingOriginFk` FOREIGN KEY (`originFk`) REFERENCES `parking` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
+
+ CONSTRAINT `parkingUserFk` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
+
+) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
+
+ALTER TABLE vn.parking DROP COLUMN IF EXISTS editorFk;
+ALTER TABLE IF EXISTS vn.parking ADD COLUMN editorFk INT;
+
+ALTER TABLE vn.saleGroupDetail DROP COLUMN IF EXISTS editorFk;
+ALTER TABLE IF EXISTS vn.saleGroupDetail ADD COLUMN editorFk INT;
\ No newline at end of file
diff --git a/modules/shelving/back/models/parking.json b/modules/shelving/back/models/parking.json
index 53fec6e69..47a3305ae 100644
--- a/modules/shelving/back/models/parking.json
+++ b/modules/shelving/back/models/parking.json
@@ -20,9 +20,6 @@
"type": "string",
"required": true
},
- "sectorFk": {
- "type": "number"
- },
"code": {
"type": "string"
},
@@ -35,6 +32,11 @@
"type": "hasMany",
"model": "saleGroup",
"foreignKey": "parkingFk"
+ },
+ "sector": {
+ "type": "belongsTo",
+ "model": "Sector",
+ "foreignKey": "sectorFk"
}
}
}
From 19278781847e5434a2e73d8a354d50a370a62ff4 Mon Sep 17 00:00:00 2001
From: jorgep
Date: Thu, 29 Feb 2024 16:04:16 +0100
Subject: [PATCH 04/20] fix: refs #5186 drop SaleGroup from ticketLog
---
.../10923-pinkOak/00-createParkingLog.sql | 20 +++++++++++++++++--
1 file changed, 18 insertions(+), 2 deletions(-)
diff --git a/db/versions/10923-pinkOak/00-createParkingLog.sql b/db/versions/10923-pinkOak/00-createParkingLog.sql
index 8274e2d82..d7fba0568 100644
--- a/db/versions/10923-pinkOak/00-createParkingLog.sql
+++ b/db/versions/10923-pinkOak/00-createParkingLog.sql
@@ -1,4 +1,4 @@
-CREATE OR REPLACE TABLE `vn`.`parkingLog` (
+CREATE OR REPLACE TABLE vn.parkingLog (
`id` int(11) NOT NULL AUTO_INCREMENT,
@@ -40,4 +40,20 @@ ALTER TABLE vn.parking DROP COLUMN IF EXISTS editorFk;
ALTER TABLE IF EXISTS vn.parking ADD COLUMN editorFk INT;
ALTER TABLE vn.saleGroupDetail DROP COLUMN IF EXISTS editorFk;
-ALTER TABLE IF EXISTS vn.saleGroupDetail ADD COLUMN editorFk INT;
\ No newline at end of file
+ALTER TABLE IF EXISTS vn.saleGroupDetail ADD COLUMN editorFk INT;
+
+
+ALTER TABLE vn.ticketLog
+ MODIFY COLUMN changedModel enum('Ticket',
+ 'Sale',
+ 'TicketWeekly',
+ 'TicketTracking',
+ 'TicketService',
+ 'TicketRequest',
+ 'TicketRefund',
+ 'TicketPackaging',
+ 'TicketObservation',
+ 'TicketDms',
+ 'Expedition',
+ 'Sms'
+ ) NOT NULL DEFAULT 'Ticket';
From 7b0bed209e64c85cfbb8ed245a54e6e3c6fb33b5 Mon Sep 17 00:00:00 2001
From: jorgep
Date: Thu, 29 Feb 2024 16:27:42 +0100
Subject: [PATCH 05/20] feat: refs #5186 add acl & model
---
.../10923-pinkOak/00-createParkingLog.sql | 25 ++++++++++---------
.../10923-pinkOak/01-aclParkingLog.sql | 2 ++
modules/parking/back/model-config.json | 5 ++++
modules/parking/back/models/parking-log.json | 9 +++++++
4 files changed, 29 insertions(+), 12 deletions(-)
create mode 100644 db/versions/10923-pinkOak/01-aclParkingLog.sql
create mode 100644 modules/parking/back/model-config.json
create mode 100644 modules/parking/back/models/parking-log.json
diff --git a/db/versions/10923-pinkOak/00-createParkingLog.sql b/db/versions/10923-pinkOak/00-createParkingLog.sql
index d7fba0568..f31f58196 100644
--- a/db/versions/10923-pinkOak/00-createParkingLog.sql
+++ b/db/versions/10923-pinkOak/00-createParkingLog.sql
@@ -44,16 +44,17 @@ ALTER TABLE IF EXISTS vn.saleGroupDetail ADD COLUMN editorFk INT;
ALTER TABLE vn.ticketLog
- MODIFY COLUMN changedModel enum('Ticket',
- 'Sale',
- 'TicketWeekly',
- 'TicketTracking',
- 'TicketService',
- 'TicketRequest',
- 'TicketRefund',
- 'TicketPackaging',
- 'TicketObservation',
- 'TicketDms',
- 'Expedition',
- 'Sms'
+ MODIFY COLUMN changedModel ENUM(
+ 'Ticket',
+ 'Sale',
+ 'TicketWeekly',
+ 'TicketTracking',
+ 'TicketService',
+ 'TicketRequest',
+ 'TicketRefund',
+ 'TicketPackaging',
+ 'TicketObservation',
+ 'TicketDms',
+ 'Expedition',
+ 'Sms'
) NOT NULL DEFAULT 'Ticket';
diff --git a/db/versions/10923-pinkOak/01-aclParkingLog.sql b/db/versions/10923-pinkOak/01-aclParkingLog.sql
new file mode 100644
index 000000000..8f7e55d63
--- /dev/null
+++ b/db/versions/10923-pinkOak/01-aclParkingLog.sql
@@ -0,0 +1,2 @@
+INSERT INTO salix.ACL (model, property, accessType, permission, principalType, principalId)
+ VALUES ('ParkingLog', '*', 'READ', 'ALLOW', 'ROLE', 'employee');
\ No newline at end of file
diff --git a/modules/parking/back/model-config.json b/modules/parking/back/model-config.json
new file mode 100644
index 000000000..5c0d3d916
--- /dev/null
+++ b/modules/parking/back/model-config.json
@@ -0,0 +1,5 @@
+{
+ "ParkingLog": {
+ "dataSource": "vn"
+ }
+}
diff --git a/modules/parking/back/models/parking-log.json b/modules/parking/back/models/parking-log.json
new file mode 100644
index 000000000..1bbb031d8
--- /dev/null
+++ b/modules/parking/back/models/parking-log.json
@@ -0,0 +1,9 @@
+{
+ "name": "ParkingLog",
+ "base": "Log",
+ "options": {
+ "mysql": {
+ "table": "parkingLog"
+ }
+ }
+}
From 3dd4d48557fda06afa119de77dd9331fc83f7631 Mon Sep 17 00:00:00 2001
From: guillermo
Date: Fri, 1 Mar 2024 07:47:15 +0100
Subject: [PATCH 06/20] refactor: refs #6495 Deleted residual procs
---
.../procedures/supplier_getPackagingStock.sql | 50 --------------
.../supplier_getPackagingStockDetail.sql | 65 -------------------
2 files changed, 115 deletions(-)
delete mode 100644 db/routines/vn/procedures/supplier_getPackagingStock.sql
delete mode 100644 db/routines/vn/procedures/supplier_getPackagingStockDetail.sql
diff --git a/db/routines/vn/procedures/supplier_getPackagingStock.sql b/db/routines/vn/procedures/supplier_getPackagingStock.sql
deleted file mode 100644
index c5f533d6b..000000000
--- a/db/routines/vn/procedures/supplier_getPackagingStock.sql
+++ /dev/null
@@ -1,50 +0,0 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`supplier_getPackagingStock`(
- vSelf INT
-)
-BEGIN
-/**
- * Obtiene el stock de los embalajes de un proveedor.
- *
- * @param vSelf Id del proveedor
- */
- DECLARE vItemCategoryFk INT;
-
- SELECT id INTO vItemCategoryFk
- FROM itemCategory
- WHERE code = 'others';
-
- SELECT sub.itemFk,
- i.name,
- SUM(sub.quantity) quantity
- FROM (
- SELECT b.itemFk, b.quantity
- FROM buy b
- JOIN item i ON i.id = b.itemFk
- JOIN itemType it ON it.id = i.typeFk
- JOIN `entry` e ON e.id = b.entryFk
- JOIN travel t ON t.id = e.travelFk
- WHERE e.supplierFk = vSelf
- AND t.landed >= '2010-01-01'
- AND it.categoryFk = vItemCategoryFk
- UNION ALL
- SELECT s.itemFk, - s.quantity
- FROM sale s
- JOIN item i ON i.id = s.itemFk
- JOIN itemType it ON it.id = i.typeFk
- JOIN ticket t ON t.id = s.ticketFk
- JOIN `address` a ON a.id = t.addressFk
- JOIN (
- SELECT c.id,
- s.id supplierFk
- FROM supplier s
- JOIN client c ON c.fi = s.nif
- ) sub ON sub.id = a.clientFk
- WHERE sub.supplierFk = vSelf
- AND it.categoryFk = vItemCategoryFk
- AND t.shipped > '2010-01-01'
- ) sub
- JOIN item i ON i.id = sub.itemFk
- GROUP BY i.id;
-END$$
-DELIMITER ;
diff --git a/db/routines/vn/procedures/supplier_getPackagingStockDetail.sql b/db/routines/vn/procedures/supplier_getPackagingStockDetail.sql
deleted file mode 100644
index f32fc8772..000000000
--- a/db/routines/vn/procedures/supplier_getPackagingStockDetail.sql
+++ /dev/null
@@ -1,65 +0,0 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`supplier_getPackagingStockDetail`(
- vSelf INT,
- vItemFk INT
-)
-BEGIN
-/**
- * Obtiene el detalle del embalaje de un proveedor.
- *
- * @param vSelf Id del proveedor
- * @param vItemFk Id del artículo
- */
- SELECT sub.itemFk,
- sub.`table`,
- sub.registry,
- sub.dated,
- i.name item,
- w.name warehouse,
- sub.`in`,
- sub.`out`,
- s.name supplier,
- CAST(sub.buyingValue AS DECIMAL(5,2)) price
- FROM (
- SELECT b.itemFk,
- IF(b.quantity > 0, b.quantity, NULL) `in`,
- IF(b.quantity > 0, NULL, - b.quantity) `out`,
- 'E' `table`,
- b.entryFk registry,
- t.landed dated,
- t.warehouseInFk,
- b.buyingValue
- FROM buy b
- JOIN `entry` e ON e.id = b.entryFk
- JOIN travel t ON t.id = e.travelFk
- WHERE e.supplierFk = vSelf
- AND b.itemFk = vItemFk
- AND t.landed >= '2010-01-01'
- UNION ALL
- SELECT s.itemFk,
- IF(s.quantity < 0, - s.quantity, NULL),
- IF(s.quantity < 0, NULL, s.quantity),
- 'T',
- s.ticketFk,
- t.shipped,
- t.warehouseFk,
- s.price
- FROM sale s
- JOIN ticket t ON t.id = s.ticketFk
- JOIN address a ON a.id = t.addressFk
- JOIN (
- SELECT c.id,
- s.id supplierFk
- FROM supplier s
- JOIN client c ON c.fi = s.nif
- ) sub ON sub.id = a.clientFk
- WHERE sub.supplierFk = vSelf
- AND s.itemFk = vItemFk
- AND t.shipped > '2010-01-01'
- ) sub
- JOIN item i ON i.id = sub.itemFk
- JOIN supplier s ON s.id = vSelf
- JOIN warehouse w on w.id = sub.warehouseInFk;
-
-END$$
-DELIMITER ;
From 3caed386e991ba9e1c5c7cea289ee99640e04afa Mon Sep 17 00:00:00 2001
From: jorgep
Date: Fri, 1 Mar 2024 12:23:06 +0100
Subject: [PATCH 07/20] feat: refs #5186 add fixtures
---
db/dump/fixtures.before.sql | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql
index aef0f13e3..619c5d0f7 100644
--- a/db/dump/fixtures.before.sql
+++ b/db/dump/fixtures.before.sql
@@ -3069,3 +3069,9 @@ INSERT INTO `vn`.`cmr` (id,truckPlate,observations,senderInstruccions,paymentIns
UPDATE vn.department
SET workerFk = null;
+
+INSERT INTO vn.parkingLog(originFk, userFk, `action`, creationDate, description, changedModel,oldInstance, newInstance, changedModelId, changedModelValue)
+ VALUES(1, 18, 'update', '2024-03-01 08:35:07.000', NULL, 'SaleGroup', '{"parkingFk":null}', '{"parkingFk":1}', 1, NULL);
+
+INSERT INTO vn.parkingLog(originFk, userFk, `action`, creationDate, description, changedModel,oldInstance, newInstance, changedModelId, changedModelValue)
+ VALUES(1, 19, 'update', '2024-03-01 08:35:07.000', NULL, 'SaleGroup', '{"parkingFk":1}', '{"parkingFk":3, "ticketFk":2}', 3, NULL);
\ No newline at end of file
From 619ac4e0538f161d4356c8aee8d13a722ba703cd Mon Sep 17 00:00:00 2001
From: guillermo
Date: Tue, 5 Mar 2024 08:55:40 +0100
Subject: [PATCH 08/20] refactor: refs #6495 Requested changes
---
...MailPurchases.sql => client_mailSales.sql} | 56 +++++++++++--------
...ncher.sql => client_mailSalesLauncher.sql} | 15 +++--
.../10918-wheatRose/00-firstScript.sql | 2 +-
3 files changed, 43 insertions(+), 30 deletions(-)
rename db/routines/vn/procedures/{client_sendMailPurchases.sql => client_mailSales.sql} (78%)
rename db/routines/vn/procedures/{client_sendMailPurchasesLauncher.sql => client_mailSalesLauncher.sql} (77%)
diff --git a/db/routines/vn/procedures/client_sendMailPurchases.sql b/db/routines/vn/procedures/client_mailSales.sql
similarity index 78%
rename from db/routines/vn/procedures/client_sendMailPurchases.sql
rename to db/routines/vn/procedures/client_mailSales.sql
index 2eeddb479..7178d981f 100644
--- a/db/routines/vn/procedures/client_sendMailPurchases.sql
+++ b/db/routines/vn/procedures/client_mailSales.sql
@@ -1,9 +1,9 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`client_sendMailPurchases`(
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`client_mailSales`(
vSelf INT,
vDated DATE
)
-BEGIN
+proc: BEGIN
/**
* Envia un correo electrónico con un resumen de los pedidos
* preparados para un cliente.
@@ -43,14 +43,19 @@ BEGIN
SET vDated = IFNULL(vDated, util.yesterday());
- OPEN vTickets;
- FETCH vTickets INTO vTicketFk, vAlias, vAmount, vStreet, vCity;
-
SET vString = CONCAT('',
' Relación de envíos.
',
'Dia: ', vDated, '
');
- WHILE NOT vDone DO
+ OPEN vTickets;
+ l: LOOP
+ SET vDone = FALSE;
+ FETCH vTickets INTO vTicketFk, vAlias, vAmount, vStreet, vCity;
+
+ IF vDone THEN
+ LEAVE l;
+ END IF;
+
SET vString = CONCAT(vString, '
',
'
@@ -63,29 +68,34 @@ BEGIN
',
' ', vAlias, '
',
' ', vStreet, '(', vCity, ')');
- FETCH vTickets INTO vTicketFk, vAlias, vAmount, vStreet, vCity;
- END WHILE;
+ END LOOP;
+
+ IF vTicketFk IS NULL THEN
+ LEAVE proc;
+ END IF;
SET vString = CONCAT(
- vString,
- '',
- '
Puede acceder al detalle de los albaranes haciendo click sobre el número de Ticket',
- '
Muchas gracias por su confianza
',
- '
');
+ vString,
+ '',
+ '
Puede acceder al detalle de los albaranes haciendo click sobre el número de Ticket',
+ '
Muchas gracias por su confianza
',
+ '
');
- -- Envío del email
- SELECT CONCAT(email,', pako@verdnatura.es') INTO vMailTo
+ SELECT email INTO vMailTo
FROM client
WHERE id = vSelf
AND email <> '';
- CALL mail_insert(
- IFNULL(vMailTo, 'pako.natek@gmail.com'),
- 'pako@verdnatura.es',
- 'Resumen de pedidos preparados',
- vString
- );
+ -- Envío del email
+ IF vMailTo IS NOT NULL THEN
+ CALL mail_insert(
+ vMailTo,
+ NULL,
+ 'Resumen de pedidos preparados',
+ vString
+ );
+ END IF;
END$$
DELIMITER ;
diff --git a/db/routines/vn/procedures/client_sendMailPurchasesLauncher.sql b/db/routines/vn/procedures/client_mailSalesLauncher.sql
similarity index 77%
rename from db/routines/vn/procedures/client_sendMailPurchasesLauncher.sql
rename to db/routines/vn/procedures/client_mailSalesLauncher.sql
index e93e803da..89337b5c8 100644
--- a/db/routines/vn/procedures/client_sendMailPurchasesLauncher.sql
+++ b/db/routines/vn/procedures/client_mailSalesLauncher.sql
@@ -1,5 +1,5 @@
DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`client_sendMailPurchasesLauncher`()
+CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`client_mailSalesLauncher`()
BEGIN
/**
* Lanza el envío de correos electrónicos con el resumen de pedidos
@@ -17,11 +17,14 @@ BEGIN
DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
OPEN vClients;
- FETCH vClients INTO vClientFk;
-
- WHILE NOT vDone DO
- CALL client_sendMailPurchases(util.yesterday(), vClientFk);
+ l: LOOP
+ SET vDone = FALSE;
FETCH vClients INTO vClientFk;
- END WHILE;
+
+ IF vDone THEN
+ LEAVE l;
+ END IF;
+ CALL client_mailSales(vClientFk, util.yesterday());
+ END LOOP;
END$$
DELIMITER ;
diff --git a/db/versions/10918-wheatRose/00-firstScript.sql b/db/versions/10918-wheatRose/00-firstScript.sql
index 40cb99ab0..c915e909a 100644
--- a/db/versions/10918-wheatRose/00-firstScript.sql
+++ b/db/versions/10918-wheatRose/00-firstScript.sql
@@ -1,4 +1,4 @@
UPDATE IGNORE bs.nightTask
- SET `procedure` = 'client_sendMailPurchasesLauncher',
+ SET `procedure` = 'client_mailSalesLauncher',
`schema` = 'vn'
WHERE `procedure` = 'emailYesterdayPurchasesLauncher';
From cd40bd47e58486405f2f3a90a18672fb451543ad Mon Sep 17 00:00:00 2001
From: guillermo
Date: Thu, 7 Mar 2024 07:08:40 +0100
Subject: [PATCH 09/20] refactor: refs #6495 Deleted procs
---
.../vn/procedures/client_mailSales.sql | 101 ------------------
.../procedures/client_mailSalesLauncher.sql | 30 ------
.../10918-wheatRose/00-firstScript.sql | 4 +-
3 files changed, 1 insertion(+), 134 deletions(-)
delete mode 100644 db/routines/vn/procedures/client_mailSales.sql
delete mode 100644 db/routines/vn/procedures/client_mailSalesLauncher.sql
diff --git a/db/routines/vn/procedures/client_mailSales.sql b/db/routines/vn/procedures/client_mailSales.sql
deleted file mode 100644
index 7178d981f..000000000
--- a/db/routines/vn/procedures/client_mailSales.sql
+++ /dev/null
@@ -1,101 +0,0 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`client_mailSales`(
- vSelf INT,
- vDated DATE
-)
-proc: BEGIN
-/**
- * Envia un correo electrónico con un resumen de los pedidos
- * preparados para un cliente.
- *
- * @param vSelf Id del cliente
- * @param vDated Fecha de preparación
- */
- DECLARE vTicketFk INT;
- DECLARE vAlias VARCHAR(50);
- DECLARE vStreet VARCHAR(255);
- DECLARE vCity VARCHAR(25);
- DECLARE vAmount DOUBLE;
- DECLARE vMailTo VARCHAR(250);
- DECLARE vString TEXT;
- DECLARE vDone BOOL DEFAULT FALSE;
- DECLARE vTickets CURSOR FOR
- SELECT t.id,
- t.nickname,
- CAST(sub.amount AS DECIMAL(10,2)) amount,
- a.street,
- a.city
- FROM ticket t
- JOIN `address` a ON t.addressFk = a.id
- JOIN (
- SELECT s.ticketFk,
- SUM(
- s.quantity * s.price * (100 - s.discount) / 100
- ) amount
- FROM sale s
- JOIN ticket t ON t.id = s.ticketFk
- WHERE t.shipped >= util.VN_CURDATE() - INTERVAL 6 MONTH
- GROUP BY s.ticketFk
- ) sub ON sub.ticketFk = t.id
- WHERE t.shipped BETWEEN vDated AND util.dayEnd(vDated)
- AND t.clientFk = vSelf;
- DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
-
- SET vDated = IFNULL(vDated, util.yesterday());
-
- SET vString = CONCAT('',
- ' Relación de envíos.
',
- 'Dia: ', vDated, '
');
-
- OPEN vTickets;
- l: LOOP
- SET vDone = FALSE;
- FETCH vTickets INTO vTicketFk, vAlias, vAmount, vStreet, vCity;
-
- IF vDone THEN
- LEAVE l;
- END IF;
-
- SET vString = CONCAT(vString, '
',
- '',
- ' ', vAlias, '
',
- ' ', vStreet, '(', vCity, ')');
- END LOOP;
-
- IF vTicketFk IS NULL THEN
- LEAVE proc;
- END IF;
-
- SET vString = CONCAT(
- vString,
- '',
- '
Puede acceder al detalle de los albaranes haciendo click sobre el número de Ticket',
- '
Muchas gracias por su confianza
',
- '
');
-
- SELECT email INTO vMailTo
- FROM client
- WHERE id = vSelf
- AND email <> '';
-
- -- Envío del email
- IF vMailTo IS NOT NULL THEN
- CALL mail_insert(
- vMailTo,
- NULL,
- 'Resumen de pedidos preparados',
- vString
- );
- END IF;
-END$$
-DELIMITER ;
diff --git a/db/routines/vn/procedures/client_mailSalesLauncher.sql b/db/routines/vn/procedures/client_mailSalesLauncher.sql
deleted file mode 100644
index 89337b5c8..000000000
--- a/db/routines/vn/procedures/client_mailSalesLauncher.sql
+++ /dev/null
@@ -1,30 +0,0 @@
-DELIMITER $$
-CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`client_mailSalesLauncher`()
-BEGIN
-/**
- * Lanza el envío de correos electrónicos con el resumen de pedidos
- * preparados para todos los clientes con el campo eypbc a TRUE.
- *
- * @param vSelf Id del cliente
- * @param vDated Fecha de preparación
- */
- DECLARE vDone BOOL DEFAULT FALSE;
- DECLARE vClientFk INT;
- DECLARE vClients CURSOR FOR
- SELECT id
- FROM client
- WHERE eypbc;
- DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE;
-
- OPEN vClients;
- l: LOOP
- SET vDone = FALSE;
- FETCH vClients INTO vClientFk;
-
- IF vDone THEN
- LEAVE l;
- END IF;
- CALL client_mailSales(vClientFk, util.yesterday());
- END LOOP;
-END$$
-DELIMITER ;
diff --git a/db/versions/10918-wheatRose/00-firstScript.sql b/db/versions/10918-wheatRose/00-firstScript.sql
index c915e909a..5d0fb1c32 100644
--- a/db/versions/10918-wheatRose/00-firstScript.sql
+++ b/db/versions/10918-wheatRose/00-firstScript.sql
@@ -1,4 +1,2 @@
-UPDATE IGNORE bs.nightTask
- SET `procedure` = 'client_mailSalesLauncher',
- `schema` = 'vn'
+DELETE FROM bs.nightTask
WHERE `procedure` = 'emailYesterdayPurchasesLauncher';
From c2ecedca71bec27234c7dbdaf6cbb757b70c873a Mon Sep 17 00:00:00 2001
From: alexm
Date: Fri, 8 Mar 2024 07:48:55 +0100
Subject: [PATCH 10/20] feat: refs #6925 check incoterms in closure and
makeInvoice
---
loopback/locale/es.json | 3 +-
loopback/server/boot/date.js | 4 +-
modules/invoiceOut/back/models/invoice-out.js | 21 +++++
.../ticket/back/methods/ticket/closeAll.js | 3 +-
modules/ticket/back/methods/ticket/closure.js | 92 ++++++++++++-------
.../ticket/back/methods/ticket/makeInvoice.js | 18 +---
.../methods/ticket/specs/makeInvoice.spec.js | 2 +-
7 files changed, 87 insertions(+), 56 deletions(-)
diff --git a/loopback/locale/es.json b/loopback/locale/es.json
index 4079fa1ca..3748b6eaf 100644
--- a/loopback/locale/es.json
+++ b/loopback/locale/es.json
@@ -324,7 +324,6 @@
"The response is not a PDF": "La respuesta no es un PDF",
"Booking completed": "Reserva completada",
"The ticket is in preparation": "El ticket [{{ticketId}}]({{{ticketUrl}}}) del comercial {{salesPersonId}} está en preparación",
- "Incoterms data for consignee is missing": "Faltan los datos de los Incoterms para el consignatario",
"The notification subscription of this worker cant be modified": "La subscripción a la notificación de este trabajador no puede ser modificada",
"User disabled": "Usuario desactivado",
"The amount cannot be less than the minimum": "La cantidad no puede ser menor que la cantidad mínima",
@@ -348,4 +347,4 @@
"Cmr file does not exist": "El archivo del cmr no existe",
"You are not allowed to modify the alias": "No estás autorizado a modificar el alias",
"The address of the customer must have information about Incoterms and Customs Agent": "El consignatario del cliente debe tener informado Incoterms y Agente de aduanas"
-}
+}
\ No newline at end of file
diff --git a/loopback/server/boot/date.js b/loopback/server/boot/date.js
index 18c816186..d592dc416 100644
--- a/loopback/server/boot/date.js
+++ b/loopback/server/boot/date.js
@@ -1,7 +1,7 @@
module.exports = () => {
Date.vnUTC = (env = process.env.NODE_ENV) => {
- // if (!env || env === 'development')
- // return new Date(Date.UTC(2001, 0, 1, 11));
+ if (!env || env === 'development')
+ return new Date(Date.UTC(2001, 0, 1, 11));
return new Date();
};
diff --git a/modules/invoiceOut/back/models/invoice-out.js b/modules/invoiceOut/back/models/invoice-out.js
index 91f4883ad..e4fcc1a69 100644
--- a/modules/invoiceOut/back/models/invoice-out.js
+++ b/modules/invoiceOut/back/models/invoice-out.js
@@ -1,5 +1,6 @@
const print = require('vn-print');
const path = require('path');
+const UserError = require('vn-loopback/util/user-error');
module.exports = Self => {
require('../methods/invoiceOut/filter')(Self);
@@ -66,4 +67,24 @@ module.exports = Self => {
});
}
};
+
+ Self.getSerial = async function(clientId, companyId, addressId, type, myOptions) {
+ const [{serial}] = await Self.rawSql(
+ `SELECT vn.invoiceSerial(?, ?, ?) AS serial`,
+ [
+ clientId,
+ companyId,
+ type
+ ],
+ myOptions);
+
+ const invoiceOutSerial = await Self.app.models.InvoiceOutSerial.findById(serial);
+ if (invoiceOutSerial?.taxAreaFk == 'WORLD') {
+ const address = await Self.app.models.Address.findById(addressId);
+ if (!address || !address.customsAgentFk || !address.incotermsFk)
+ throw new UserError('The address of the customer must have information about Incoterms and Customs Agent');
+ }
+
+ return serial;
+ };
};
diff --git a/modules/ticket/back/methods/ticket/closeAll.js b/modules/ticket/back/methods/ticket/closeAll.js
index e0c6b0b16..801aa562e 100644
--- a/modules/ticket/back/methods/ticket/closeAll.js
+++ b/modules/ticket/back/methods/ticket/closeAll.js
@@ -30,11 +30,12 @@ module.exports = Self => {
// Prevent closure for current day
if (toDate >= todayMinDate && toDate <= todayMaxDate)
throw new UserError('You cannot close tickets for today');
- console.log(toDate, toDate);
+
const tickets = await Self.rawSql(`
SELECT t.id,
t.clientFk,
t.companyFk,
+ c.id clientFk,
c.name clientName,
c.email recipient,
c.salesPersonFk,
diff --git a/modules/ticket/back/methods/ticket/closure.js b/modules/ticket/back/methods/ticket/closure.js
index 2a0db1067..90fe2d794 100644
--- a/modules/ticket/back/methods/ticket/closure.js
+++ b/modules/ticket/back/methods/ticket/closure.js
@@ -1,3 +1,5 @@
+/* eslint max-len: ["error", { "code": 150 }]*/
+
const Report = require('vn-print/core/report');
const Email = require('vn-print/core/email');
const smtp = require('vn-print/core/smtp');
@@ -11,20 +13,27 @@ module.exports = async function(ctx, Self, tickets, reqArgs = {}) {
const failedtickets = [];
for (const ticket of tickets) {
try {
- await Self.rawSql(`CALL vn.ticket_closeByTicket(?)`, [ticket.id], {userId});
+ await Self.app.models.InvoiceOut.getSerial(ticket.clientFk, ticket.companyFk, ticket.addressFk, 'M');
+ await Self.rawSql(
+ `CALL vn.ticket_closeByTicket(?)`,
+ [ticket.id],
+ {userId}
+ );
- const [invoiceOut] = await Self.rawSql(`
+ const [invoiceOut] = await Self.rawSql(
+ `
SELECT io.id, io.ref, io.serial, cny.code companyCode, io.issued
- FROM ticket t
- JOIN invoiceOut io ON io.ref = t.refFk
- JOIN company cny ON cny.id = io.companyFk
- WHERE t.id = ?
- `, [ticket.id]);
- console.log('invoiceOut: ', invoiceOut);
+ FROM ticket t
+ JOIN invoiceOut io ON io.ref = t.refFk
+ JOIN company cny ON cny.id = io.companyFk
+ WHERE t.id = ?
+ `,
+ [ticket.id],
+ );
const mailOptions = {
overrideAttachments: true,
- attachments: []
+ attachments: [],
};
const isToBeMailed = ticket.recipient && ticket.salesPersonFk && ticket.isToBeMailed;
@@ -34,7 +43,7 @@ module.exports = async function(ctx, Self, tickets, reqArgs = {}) {
reference: invoiceOut.ref,
recipientId: ticket.clientFk,
recipient: ticket.recipient,
- replyTo: ticket.salesPersonEmail
+ replyTo: ticket.salesPersonEmail,
};
const invoiceReport = new Report('invoice', args);
@@ -51,15 +60,19 @@ module.exports = async function(ctx, Self, tickets, reqArgs = {}) {
await storage.write(stream, {
type: 'invoice',
path: `${year}/${month}/${day}`,
- fileName: fileName
+ fileName: fileName,
});
- await Self.rawSql('UPDATE invoiceOut SET hasPdf = true WHERE id = ?', [invoiceOut.id], {userId});
+ await Self.rawSql(
+ 'UPDATE invoiceOut SET hasPdf = true WHERE id = ?',
+ [invoiceOut.id],
+ {userId},
+ );
if (isToBeMailed) {
const invoiceAttachment = {
filename: fileName,
- content: stream
+ content: stream,
};
if (invoiceOut.serial == 'E' && invoiceOut.companyCode == 'VNL') {
@@ -69,7 +82,7 @@ module.exports = async function(ctx, Self, tickets, reqArgs = {}) {
mailOptions.attachments.push({
filename: fileName,
- content: stream
+ content: stream,
});
}
@@ -83,7 +96,7 @@ module.exports = async function(ctx, Self, tickets, reqArgs = {}) {
id: ticket.id,
recipientId: ticket.clientFk,
recipient: ticket.recipient,
- replyTo: ticket.salesPersonEmail
+ replyTo: ticket.salesPersonEmail,
};
const email = new Email('delivery-note-link', args);
@@ -91,14 +104,17 @@ module.exports = async function(ctx, Self, tickets, reqArgs = {}) {
}
// Incoterms authorization
- const [{firstOrder}] = await Self.rawSql(`
+ const [{firstOrder}] = await Self.rawSql(
+ `
SELECT COUNT(*) as firstOrder
FROM ticket t
JOIN client c ON c.id = t.clientFk
WHERE t.clientFk = ?
AND NOT t.isDeleted
AND c.isVies
- `, [ticket.clientFk]);
+ `,
+ [ticket.clientFk],
+ );
if (firstOrder == 1) {
const args = {
@@ -107,7 +123,7 @@ module.exports = async function(ctx, Self, tickets, reqArgs = {}) {
recipientId: ticket.clientFk,
recipient: ticket.recipient,
replyTo: ticket.salesPersonEmail,
- addressId: ticket.addressFk
+ addressId: ticket.addressFk,
};
const email = new Email('incoterms-authorization', args);
@@ -117,21 +133,25 @@ module.exports = async function(ctx, Self, tickets, reqArgs = {}) {
`SELECT id
FROM sample
WHERE code = 'incoterms-authorization'
- `);
+ `,
+ );
- await Self.rawSql(`
+ await Self.rawSql(
+ `
INSERT INTO clientSample (clientFk, typeFk, companyFk) VALUES(?, ?, ?)
- `, [ticket.clientFk, sample.id, ticket.companyFk], {userId});
+ `,
+ [ticket.clientFk, sample.id, ticket.companyFk],
+ {userId},
+ );
}
} catch (error) {
// Domain not found
- if (error.responseCode == 450)
- return invalidEmail(ticket);
+ if (error.responseCode == 450) return invalidEmail(ticket);
// Save tickets on a list of failed ids
failedtickets.push({
id: ticket.id,
- stacktrace: error
+ stacktrace: error,
});
}
}
@@ -148,24 +168,26 @@ module.exports = async function(ctx, Self, tickets, reqArgs = {}) {
smtp.send({
to: config.app.reportEmail,
subject: '[API] Nightly ticket closure report',
- html: body
+ html: body,
});
}
async function invalidEmail(ticket) {
- await Self.rawSql(`UPDATE client SET email = NULL WHERE id = ?`, [
- ticket.clientFk
- ], {userId});
+ await Self.rawSql(
+ `UPDATE client SET email = NULL WHERE id = ?`,
+ [ticket.clientFk],
+ {userId},
+ );
const oldInstance = `{"email": "${ticket.recipient}"}`;
const newInstance = `{"email": ""}`;
- await Self.rawSql(`
+ await Self.rawSql(
+ `
INSERT INTO clientLog (originFk, userFk, action, changedModel, oldInstance, newInstance)
- VALUES (?, NULL, 'UPDATE', 'Client', ?, ?)`, [
- ticket.clientFk,
- oldInstance,
- newInstance
- ], {userId});
+ VALUES (?, NULL, 'UPDATE', 'Client', ?, ?)`,
+ [ticket.clientFk, oldInstance, newInstance],
+ {userId},
+ );
const body = `No se ha podido enviar el albarán ${ticket.id}
al cliente ${ticket.clientFk} - ${ticket.clientName}
@@ -177,7 +199,7 @@ module.exports = async function(ctx, Self, tickets, reqArgs = {}) {
smtp.send({
to: ticket.salesPersonEmail,
subject: 'No se ha podido enviar el albarán',
- html: body
+ html: body,
});
}
};
diff --git a/modules/ticket/back/methods/ticket/makeInvoice.js b/modules/ticket/back/methods/ticket/makeInvoice.js
index 706da6f39..aedb960c3 100644
--- a/modules/ticket/back/methods/ticket/makeInvoice.js
+++ b/modules/ticket/back/methods/ticket/makeInvoice.js
@@ -77,22 +77,10 @@ module.exports = function(Self) {
if (!clientCanBeInvoiced)
throw new UserError(`This client can't be invoiced`);
- const [{serial}] = invoiceCorrection ? [{serial: 'R'}] : await Self.rawSql(
- `SELECT vn.invoiceSerial(?, ?, ?) AS serial`,
- [
- clientId,
- companyFk,
- invoiceType
- ],
- myOptions);
+ const serial = !invoiceCorrection
+ ? await models.InvoiceOut.getSerial(clientId, companyFk, firstTicket.addressFk, invoiceType, myOptions)
+ : 'R';
- const invoiceOutSerial = await models.InvoiceOutSerial.findById(serial);
- if (invoiceOutSerial?.taxAreaFk == 'WORLD') {
- const address = await models.Address.findById(firstTicket.addressFk);
-
- if (!address || !address.customsAgentFk || !address.incotermsFk)
- throw new UserError('Incoterms data for consignee is missing');
- }
await Self.rawSql('CALL invoiceOut_new(?, ?, null, @invoiceId)', [serial, invoiceDate], myOptions);
const [resultInvoice] = await Self.rawSql('SELECT @invoiceId id', [], myOptions);
diff --git a/modules/ticket/back/methods/ticket/specs/makeInvoice.spec.js b/modules/ticket/back/methods/ticket/specs/makeInvoice.spec.js
index 456303602..fea8b2096 100644
--- a/modules/ticket/back/methods/ticket/specs/makeInvoice.spec.js
+++ b/modules/ticket/back/methods/ticket/specs/makeInvoice.spec.js
@@ -77,6 +77,6 @@ describe('ticket makeInvoice()', () => {
await tx.rollback();
}
- expect(error.message).toEqual(`Incoterms data for consignee is missing`);
+ expect(error.message).toEqual(`The address of the customer must have information about Incoterms and Customs Agent`);
});
});
From 8cda12a9dace3671379506a4ae10dc42e3394043 Mon Sep 17 00:00:00 2001
From: alexm
Date: Fri, 8 Mar 2024 07:49:00 +0100
Subject: [PATCH 11/20] feat: refs #6925 check incoterms in closure and
makeInvoice
---
modules/ticket/back/methods/ticket/closeAll.js | 1 -
1 file changed, 1 deletion(-)
diff --git a/modules/ticket/back/methods/ticket/closeAll.js b/modules/ticket/back/methods/ticket/closeAll.js
index 801aa562e..06e9e0ed1 100644
--- a/modules/ticket/back/methods/ticket/closeAll.js
+++ b/modules/ticket/back/methods/ticket/closeAll.js
@@ -58,7 +58,6 @@ module.exports = Self => {
AND t.refFk IS NULL
GROUP BY t.id
`, [toDate, toDate]);
- console.log('tickets: ', tickets);
await closure(ctx, Self, tickets);
From ea18d3ef6f6eb4bf359849d3d20c624de4e76851 Mon Sep 17 00:00:00 2001
From: jorgep
Date: Fri, 8 Mar 2024 09:25:07 +0100
Subject: [PATCH 12/20] feat: refs #5186 add locale
---
modules/shelving/back/locale/parking/en.yml | 9 +++++++++
modules/shelving/back/locale/parking/es.yml | 10 ++++++++++
2 files changed, 19 insertions(+)
create mode 100644 modules/shelving/back/locale/parking/en.yml
create mode 100644 modules/shelving/back/locale/parking/es.yml
diff --git a/modules/shelving/back/locale/parking/en.yml b/modules/shelving/back/locale/parking/en.yml
new file mode 100644
index 000000000..5ef6add52
--- /dev/null
+++ b/modules/shelving/back/locale/parking/en.yml
@@ -0,0 +1,9 @@
+name: parking
+columns:
+ id: id
+ column: column
+ row: row
+ sectorFk: sector
+ code: code
+ pickingOrder: picking order
+ editorFk: editor
\ No newline at end of file
diff --git a/modules/shelving/back/locale/parking/es.yml b/modules/shelving/back/locale/parking/es.yml
new file mode 100644
index 000000000..d4dd7bb2c
--- /dev/null
+++ b/modules/shelving/back/locale/parking/es.yml
@@ -0,0 +1,10 @@
+name: parking
+columns:
+ id: id
+ column: columna
+ row: fila
+ sectorFk: sector
+ code: código
+ pickingOrder: orden de recogida
+ editorFk: editor
+
\ No newline at end of file
From 238099311b1248e40966ed3bb430a2a897279bf1 Mon Sep 17 00:00:00 2001
From: Javier Segarra
Date: Fri, 8 Mar 2024 10:39:34 +0100
Subject: [PATCH 13/20] refs #7004 fix: bug
---
modules/supplier/back/methods/supplier/newSupplier.js | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/modules/supplier/back/methods/supplier/newSupplier.js b/modules/supplier/back/methods/supplier/newSupplier.js
index c40e7214f..3cca4195f 100644
--- a/modules/supplier/back/methods/supplier/newSupplier.js
+++ b/modules/supplier/back/methods/supplier/newSupplier.js
@@ -1,3 +1,5 @@
+const UserError = require('vn-loopback/util/user-error');
+
module.exports = Self => {
Self.remoteMethodCtx('newSupplier', {
description: 'Creates a new supplier and returns it',
@@ -19,12 +21,13 @@ module.exports = Self => {
Self.newSupplier = async(ctx, options) => {
const models = Self.app.models;
const args = ctx.args;
- const myOptions = {};
+ const myOptions = {validate: false};
if (typeof options == 'object')
Object.assign(myOptions, options);
delete args.ctx;
+ if (!args.name) throw new UserError('The social name cannot be empty');
const data = {...args, ...{nickname: args.name}};
const supplier = await models.Supplier.create(data, myOptions);
From a8420cd6504020eb0081ada5141708d19dd56958 Mon Sep 17 00:00:00 2001
From: Javier Segarra
Date: Fri, 8 Mar 2024 10:39:54 +0100
Subject: [PATCH 14/20] refs #7004 feat: translate label newSupplier
---
modules/supplier/front/descriptor/locale/es.yml | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/modules/supplier/front/descriptor/locale/es.yml b/modules/supplier/front/descriptor/locale/es.yml
index d889a9eee..cf4a52393 100644
--- a/modules/supplier/front/descriptor/locale/es.yml
+++ b/modules/supplier/front/descriptor/locale/es.yml
@@ -4,4 +4,5 @@ Go to client: Ir al cliente
Verified supplier: Proveedor verificado
Unverified supplier: Proveedor no verificado
Inactive supplier: Proveedor inactivo
-Create invoiceIn: Crear factura recibida
\ No newline at end of file
+Create invoiceIn: Crear factura recibida
+Supplier name: Razón social
From 74c199384c5a197a4af92e09dfec2b5d6af4c8f0 Mon Sep 17 00:00:00 2001
From: guillermo
Date: Fri, 8 Mar 2024 10:42:07 +0100
Subject: [PATCH 15/20] fix: refs #6372 vn2008.clean
---
db/routines/vn2008/procedures/clean.sql | 5 -----
1 file changed, 5 deletions(-)
diff --git a/db/routines/vn2008/procedures/clean.sql b/db/routines/vn2008/procedures/clean.sql
index 946157fa0..5a62b133e 100644
--- a/db/routines/vn2008/procedures/clean.sql
+++ b/db/routines/vn2008/procedures/clean.sql
@@ -25,11 +25,6 @@ proc: BEGIN
DELETE FROM Movimientos_mark WHERE odbc_date < vDate;
DELETE FROM Splits WHERE Fecha < vDate18;
- DELETE tobs
- FROM movement_label tobs
- JOIN Movimientos m ON tobs.Id_Movimiento = m.Id_Movimiento
- JOIN Tickets t ON m.Id_Ticket = t.Id_Ticket WHERE t.Fecha < vDate;
-
DELETE FROM Remesas WHERE `Fecha Remesa` < vDate18;
DELETE tt.*
From cdb9f372cf350712aae9f15e8c4bc5d411e48cb4 Mon Sep 17 00:00:00 2001
From: robert
Date: Fri, 8 Mar 2024 12:19:57 +0100
Subject: [PATCH 16/20] feat: refs #6610 fixDeleteTickets
---
db/routines/vn/procedures/clean.sql | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/db/routines/vn/procedures/clean.sql b/db/routines/vn/procedures/clean.sql
index 06f36afce..e31d73c14 100644
--- a/db/routines/vn/procedures/clean.sql
+++ b/db/routines/vn/procedures/clean.sql
@@ -182,6 +182,27 @@ BEGIN
DELETE FROM travelLog WHERE creationDate < v3Month;
+ CREATE OR REPLACE TEMPORARY TABLE tTicketDelete
+ SELECT DISTINCT tl.originFk ticketFk, sub.ticketFk aa
+ FROM ticketLog tl
+ JOIN (
+ SELECT MAX(tl.id)ids,tw.ticketFk
+ FROM ticket t
+ JOIN ticketLog tl ON tl.originFk = t.id
+ LEFT JOIN ticketWeekly tw ON tw.ticketFk =t.id
+ WHERE t.shipped BETWEEN '2000-01-01' AND '2000-12-31'
+ AND t.isDeleted
+ AND tw.ticketFk IS NULL
+ GROUP BY t.id
+ ) sub ON sub.ids = tl.id
+ WHERE tl.creationDate <= util.VN_CURDATE() - INTERVAL 60 DAY;
+
+ DELETE t
+ FROM ticket t
+ JOIN tTicketDelete tmp ON tmp.ticketFk = t.id;
+
+ DROP TEMPORARY TABLE tTicketDelete;
+
CALL shelving_clean;
DELETE FROM chat WHERE dated < v5Years;
From b1e90fabb2346933518134efd8745a043fa911d1 Mon Sep 17 00:00:00 2001
From: robert
Date: Fri, 8 Mar 2024 12:32:22 +0100
Subject: [PATCH 17/20] refs #6610
---
db/routines/vn/procedures/clean.sql | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/db/routines/vn/procedures/clean.sql b/db/routines/vn/procedures/clean.sql
index e31d73c14..66164d894 100644
--- a/db/routines/vn/procedures/clean.sql
+++ b/db/routines/vn/procedures/clean.sql
@@ -183,19 +183,19 @@ BEGIN
DELETE FROM travelLog WHERE creationDate < v3Month;
CREATE OR REPLACE TEMPORARY TABLE tTicketDelete
- SELECT DISTINCT tl.originFk ticketFk, sub.ticketFk aa
+ SELECT DISTINCT tl.originFk ticketFk
FROM ticketLog tl
JOIN (
- SELECT MAX(tl.id)ids,tw.ticketFk
+ SELECT MAX(tl.id)ids, tw.ticketFk
FROM ticket t
JOIN ticketLog tl ON tl.originFk = t.id
LEFT JOIN ticketWeekly tw ON tw.ticketFk =t.id
- WHERE t.shipped BETWEEN '2000-01-01' AND '2000-12-31'
+ WHERE t.shipped BETWEEN '2000-01-01' AND '2000-12-31'
AND t.isDeleted
AND tw.ticketFk IS NULL
GROUP BY t.id
- ) sub ON sub.ids = tl.id
- WHERE tl.creationDate <= util.VN_CURDATE() - INTERVAL 60 DAY;
+ ) sub ON sub.ids = tl.id
+ WHERE tl.creationDate <= vDateShort;
DELETE t
FROM ticket t
From e5387b0b65db7362becc54610a3dd6a50db5c9a2 Mon Sep 17 00:00:00 2001
From: jorgep
Date: Mon, 11 Mar 2024 09:14:05 +0100
Subject: [PATCH 18/20] fix: refs #5186 use date function
---
db/dump/fixtures.before.sql | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/db/dump/fixtures.before.sql b/db/dump/fixtures.before.sql
index 401973186..4ad007f5c 100644
--- a/db/dump/fixtures.before.sql
+++ b/db/dump/fixtures.before.sql
@@ -3732,4 +3732,4 @@ UPDATE vn.saleTracking SET stateFk = 26 WHERE id = 5;
INSERT INTO vn.report (name) VALUES ('LabelCollection');
INSERT INTO vn.parkingLog(originFk, userFk, `action`, creationDate, description, changedModel,oldInstance, newInstance, changedModelId, changedModelValue)
- VALUES(1, 18, 'update', '2024-03-01 08:35:07.000', NULL, 'SaleGroup', '{"parkingFk":null}', '{"parkingFk":1}', 1, NULL);
\ No newline at end of file
+ VALUES(1, 18, 'update', util.VN_CURDATE(), NULL, 'SaleGroup', '{"parkingFk":null}', '{"parkingFk":1}', 1, NULL);
\ No newline at end of file
From 9910ae5c643b51369d5e7b0036046f4f2c3fca6d Mon Sep 17 00:00:00 2001
From: robert
Date: Mon, 11 Mar 2024 12:12:02 +0100
Subject: [PATCH 19/20] fix: refs #6610 quitar variable
---
db/routines/vn/procedures/clean.sql | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/db/routines/vn/procedures/clean.sql b/db/routines/vn/procedures/clean.sql
index 66164d894..cee64d772 100644
--- a/db/routines/vn/procedures/clean.sql
+++ b/db/routines/vn/procedures/clean.sql
@@ -186,7 +186,7 @@ BEGIN
SELECT DISTINCT tl.originFk ticketFk
FROM ticketLog tl
JOIN (
- SELECT MAX(tl.id)ids, tw.ticketFk
+ SELECT MAX(tl.id)ids
FROM ticket t
JOIN ticketLog tl ON tl.originFk = t.id
LEFT JOIN ticketWeekly tw ON tw.ticketFk =t.id
From adafab5847848177b81e38b55c872dc5771bcd18 Mon Sep 17 00:00:00 2001
From: guillermo
Date: Mon, 11 Mar 2024 13:27:18 +0100
Subject: [PATCH 20/20] refactor: refs #6874 item_getSimilar
---
db/routines/vn/procedures/item_getSimilar.sql | 28 +++++++++----------
1 file changed, 14 insertions(+), 14 deletions(-)
diff --git a/db/routines/vn/procedures/item_getSimilar.sql b/db/routines/vn/procedures/item_getSimilar.sql
index e87e77819..e8b791d29 100644
--- a/db/routines/vn/procedures/item_getSimilar.sql
+++ b/db/routines/vn/procedures/item_getSimilar.sql
@@ -19,17 +19,17 @@ BEGIN
DECLARE vTypeFk INT;
DECLARE vPriority INT DEFAULT 1;
- DECLARE vTag1 VARCHAR(25) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci';
- DECLARE vTag5 VARCHAR(25) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci';
- DECLARE vTag6 VARCHAR(25) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci';
- DECLARE vTag7 VARCHAR(25) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci';
- DECLARE vTag8 VARCHAR(25) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci';
-
- DECLARE vValue1 VARCHAR(50) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci';
- DECLARE vValue5 VARCHAR(50) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci';
- DECLARE vValue6 VARCHAR(50) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci';
- DECLARE vValue7 VARCHAR(50) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci';
- DECLARE vValue8 VARCHAR(50) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci';
+ DECLARE vTag1 VARCHAR(20) COLLATE 'utf8_unicode_ci';
+ DECLARE vTag5 VARCHAR(20) COLLATE 'utf8_unicode_ci';
+ DECLARE vTag6 VARCHAR(20) COLLATE 'utf8_unicode_ci';
+ DECLARE vTag7 VARCHAR(20) COLLATE 'utf8_unicode_ci';
+ DECLARE vTag8 VARCHAR(20) COLLATE 'utf8_unicode_ci';
+
+ DECLARE vValue1 VARCHAR(50) COLLATE 'utf8_unicode_ci';
+ DECLARE vValue5 VARCHAR(50) COLLATE 'utf8_unicode_ci';
+ DECLARE vValue6 VARCHAR(50) COLLATE 'utf8_unicode_ci';
+ DECLARE vValue7 VARCHAR(50) COLLATE 'utf8_unicode_ci';
+ DECLARE vValue8 VARCHAR(50) COLLATE 'utf8_unicode_ci';
SELECT typeFk,
tag5,
@@ -81,7 +81,8 @@ BEGIN
IF(b.groupingMode = 1, b.grouping, b.packing) minQuantity,
iss.visible located
FROM item i
- JOIN cache.available a ON a.item_id = i.id
+ STRAIGHT_JOIN cache.available a ON a.item_id = i.id
+ AND a.calc_id = vCalcFk
LEFT JOIN itemProposal ip ON ip.mateFk = i.id
AND ip.itemFk = vSelf
LEFT JOIN itemTag it ON it.itemFk = i.id
@@ -92,8 +93,7 @@ BEGIN
LEFT JOIN buy b ON b.id = lb.buy_id
LEFT JOIN itemShelvingStock iss ON iss.itemFk = i.id
AND iss.warehouseFk = vWarehouseFk
- WHERE a.calc_id = vCalcFk
- AND a.available > 0
+ WHERE a.available > 0
AND IF(vShowType, i.typeFk = vTypeFk, TRUE)
AND i.id <> vSelf
ORDER BY `counter` DESC,