From 8679aefb4881b70f46659813e3e71e52cb40846e Mon Sep 17 00:00:00 2001 From: alexandre Date: Fri, 3 Mar 2023 07:36:04 +0100 Subject: [PATCH 1/6] refs #4713 procs deprecated, originalQuantity deleted --- back/methods/collection/setSaleQuantity.js | 3 +-- db/changes/231001/00-saleTracking.sql | 5 +++++ 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 db/changes/231001/00-saleTracking.sql diff --git a/back/methods/collection/setSaleQuantity.js b/back/methods/collection/setSaleQuantity.js index 4ac3d6d4b..0638539e3 100644 --- a/back/methods/collection/setSaleQuantity.js +++ b/back/methods/collection/setSaleQuantity.js @@ -40,8 +40,7 @@ module.exports = Self => { try { const sale = await models.Sale.findById(saleId, null, myOptions); const saleUpdated = await sale.updateAttributes({ - originalQuantity: sale.quantity, - quantity: quantity + quantity }, myOptions); if (tx) await tx.commit(); diff --git a/db/changes/231001/00-saleTracking.sql b/db/changes/231001/00-saleTracking.sql new file mode 100644 index 000000000..ce9bd8505 --- /dev/null +++ b/db/changes/231001/00-saleTracking.sql @@ -0,0 +1,5 @@ +DROP PROCEDURE `vn`.`sale_setQuantity`; +DROP PROCEDURE `vn`.`collection_updateSale`; +DROP PROCEDURE `vn`.`replaceMovimientosMark`; +DROP PROCEDURE `vn`.`saleTracking_Replace`; +DROP PROCEDURE `vn`.`sale_updateOriginalQuantity`; From 106f96b9a6fb77f5b5b768a8fbe4527eb19cd441 Mon Sep 17 00:00:00 2001 From: alexandre Date: Wed, 8 Mar 2023 12:10:08 +0100 Subject: [PATCH 2/6] refs #4713 fixed front test --- back/methods/collection/spec/setSaleQuantity.spec.js | 2 +- db/changes/231001/.gitkeep | 0 2 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 db/changes/231001/.gitkeep diff --git a/back/methods/collection/spec/setSaleQuantity.spec.js b/back/methods/collection/spec/setSaleQuantity.spec.js index 63dc3bd2d..516382606 100644 --- a/back/methods/collection/spec/setSaleQuantity.spec.js +++ b/back/methods/collection/spec/setSaleQuantity.spec.js @@ -15,7 +15,7 @@ describe('setSaleQuantity()', () => { await models.Collection.setSaleQuantity(saleId, newQuantity, options); const updateSale = await models.Sale.findById(saleId, null, options); - expect(updateSale.originalQuantity).toEqual(originalSale.quantity); + expect(updateSale.quantity).not.toEqual(originalSale.quantity); expect(updateSale.quantity).toEqual(newQuantity); await tx.rollback(); diff --git a/db/changes/231001/.gitkeep b/db/changes/231001/.gitkeep deleted file mode 100644 index e69de29bb..000000000 From 0bfdbcb750edac17497b04bdbb900c628113fc0e Mon Sep 17 00:00:00 2001 From: alexm Date: Mon, 17 Apr 2023 08:44:24 +0200 Subject: [PATCH 3/6] refs #4617 use temporary instead of vn --- db/.archive/225201/00-invoiceOut_new.sql | 20 +++--- db/changes/231001/02-invoiceOut_new.sql | 60 ++++++++-------- db/dump/structure.sql | 72 +++++++++---------- .../ticket/back/methods/ticket/makeInvoice.js | 4 +- package-lock.json | 4 +- 5 files changed, 80 insertions(+), 80 deletions(-) diff --git a/db/.archive/225201/00-invoiceOut_new.sql b/db/.archive/225201/00-invoiceOut_new.sql index 10a42d40d..4c60b50bc 100644 --- a/db/.archive/225201/00-invoiceOut_new.sql +++ b/db/.archive/225201/00-invoiceOut_new.sql @@ -8,7 +8,7 @@ CREATE DEFINER=`root`@`localhost` PROCEDURE `vn`.`invoiceOut_new`( BEGIN /** * Creación de facturas emitidas. - * requiere previamente tabla ticketToInvoice(id). + * requiere previamente tabla tmp.ticketToInvoice(id). * * @param vSerial serie a la cual se hace la factura * @param vInvoiceDate fecha de la factura @@ -36,13 +36,13 @@ BEGIN SELECT t.clientFk, t.companyFk INTO vClient, vCompany - FROM ticketToInvoice tt + FROM tmp.ticketToInvoice tt JOIN ticket t ON t.id = tt.id LIMIT 1; - -- Eliminem de ticketToInvoice els tickets que no han de ser facturats + -- Eliminem de tmp.ticketToInvoice els tickets que no han de ser facturats DELETE ti.* - FROM ticketToInvoice ti + FROM tmp.ticketToInvoice ti JOIN ticket t ON t.id = ti.id JOIN sale s ON s.ticketFk = t.id JOIN item i ON i.id = s.itemFk @@ -57,7 +57,7 @@ BEGIN SELECT SUM(s.quantity * s.price * (100 - s.discount)/100), ts.id INTO vIsAnySaleToInvoice, vIsAnyServiceToInvoice - FROM ticketToInvoice t + FROM tmp.ticketToInvoice t LEFT JOIN sale s ON s.ticketFk = t.id LEFT JOIN ticketService ts ON ts.ticketFk = t.id; @@ -100,13 +100,13 @@ BEGIN WHERE id = vNewInvoiceId; UPDATE ticket t - JOIN ticketToInvoice ti ON ti.id = t.id + JOIN tmp.ticketToInvoice ti ON ti.id = t.id SET t.refFk = vNewRef; DROP TEMPORARY TABLE IF EXISTS tmp.updateInter; CREATE TEMPORARY TABLE tmp.updateInter ENGINE = MEMORY SELECT s.id,ti.id ticket_id,vWorker Id_Trabajador - FROM ticketToInvoice ti + FROM tmp.ticketToInvoice ti LEFT JOIN ticketState ts ON ti.id = ts.ticket JOIN state s WHERE IFNULL(ts.alertLevel,0) < 3 and s.`code` = getAlert3State(ti.id); @@ -116,7 +116,7 @@ BEGIN INSERT INTO ticketLog (action, userFk, originFk, description) SELECT 'UPDATE', account.myUser_getId(), ti.id, CONCAT('Crea factura ', vNewRef) - FROM ticketToInvoice ti; + FROM tmp.ticketToInvoice ti; CALL invoiceExpenceMake(vNewInvoiceId); CALL invoiceTaxMake(vNewInvoiceId,vTaxArea); @@ -159,7 +159,7 @@ BEGIN (KEY (ticketFk)) ENGINE = MEMORY SELECT id ticketFk - FROM ticketToInvoice; + FROM tmp.ticketToInvoice; CALL `ticket_getTax`('NATIONAL'); @@ -220,6 +220,6 @@ BEGIN END IF; - DROP TEMPORARY TABLE `ticketToInvoice`; + DROP TEMPORARY TABLE `tmp`.`ticketToInvoice`; END$$ DELIMITER ; diff --git a/db/changes/231001/02-invoiceOut_new.sql b/db/changes/231001/02-invoiceOut_new.sql index 0fd91ef58..d2b96eff7 100644 --- a/db/changes/231001/02-invoiceOut_new.sql +++ b/db/changes/231001/02-invoiceOut_new.sql @@ -10,14 +10,14 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`invoiceOut_new`( BEGIN /** * Creación de facturas emitidas. - * requiere previamente tabla ticketToInvoice(id). + * requiere previamente tabla tmp.ticketToInvoice(id). * * @param vSerial serie a la cual se hace la factura * @param vInvoiceDate fecha de la factura * @param vTaxArea tipo de iva en relacion a la empresa y al cliente * @param vNewInvoiceId id de la factura que se acaba de generar * @return vNewInvoiceId - */ + */ DECLARE vIsAnySaleToInvoice BOOL; DECLARE vIsAnyServiceToInvoice BOOL; DECLARE vNewRef VARCHAR(255); @@ -37,32 +37,32 @@ BEGIN DECLARE vMaxShipped DATE; SET vInvoiceDate = IFNULL(vInvoiceDate, util.CURDATE()); - - SELECT t.clientFk, - t.companyFk, + + SELECT t.clientFk, + t.companyFk, MAX(DATE(t.shipped)), DATE(vInvoiceDate) >= invoiceOut_getMaxIssued( - vSerial, - t.companyFk, + vSerial, + t.companyFk, YEAR(vInvoiceDate)) - INTO vClientFk, + INTO vClientFk, vCompanyFk, vMaxShipped, vIsCorrectInvoiceDate - FROM ticketToInvoice tt + FROM tmp.ticketToInvoice tt JOIN ticket t ON t.id = tt.id; - IF(vMaxShipped > vInvoiceDate) THEN + IF(vMaxShipped > vInvoiceDate) THEN CALL util.throw("Invoice date can't be less than max date"); END IF; - + IF NOT vIsCorrectInvoiceDate THEN CALL util.throw('Exists an invoice with a previous date'); END IF; - - -- Eliminem de ticketToInvoice els tickets que no han de ser facturats + + -- Eliminem de tmp.ticketToInvoice els tickets que no han de ser facturats DELETE ti.* - FROM ticketToInvoice ti + FROM tmp.ticketToInvoice ti JOIN ticket t ON t.id = ti.id JOIN sale s ON s.ticketFk = t.id JOIN item i ON i.id = s.itemFk @@ -77,11 +77,11 @@ BEGIN SELECT SUM(s.quantity * s.price * (100 - s.discount)/100) <> 0 INTO vIsAnySaleToInvoice - FROM ticketToInvoice t + FROM tmp.ticketToInvoice t JOIN sale s ON s.ticketFk = t.id; SELECT COUNT(*) > 0 INTO vIsAnyServiceToInvoice - FROM ticketToInvoice t + FROM tmp.ticketToInvoice t JOIN ticketService ts ON ts.ticketFk = t.id; IF (vIsAnySaleToInvoice OR vIsAnyServiceToInvoice) @@ -121,13 +121,13 @@ BEGIN WHERE id = vNewInvoiceId; UPDATE ticket t - JOIN ticketToInvoice ti ON ti.id = t.id + JOIN tmp.ticketToInvoice ti ON ti.id = t.id SET t.refFk = vNewRef; DROP TEMPORARY TABLE IF EXISTS tmp.updateInter; CREATE TEMPORARY TABLE tmp.updateInter ENGINE = MEMORY SELECT s.id,ti.id ticket_id,vWorker Id_Trabajador - FROM ticketToInvoice ti + FROM tmp.ticketToInvoice ti LEFT JOIN ticketState ts ON ti.id = ts.ticket JOIN state s WHERE IFNULL(ts.alertLevel,0) < 3 and s.`code` = getAlert3State(ti.id); @@ -137,7 +137,7 @@ BEGIN INSERT INTO ticketLog (action, userFk, originFk, description) SELECT 'UPDATE', account.myUser_getId(), ti.id, CONCAT('Crea factura ', vNewRef) - FROM ticketToInvoice ti; + FROM tmp.ticketToInvoice ti; CALL invoiceExpenceMake(vNewInvoiceId); CALL invoiceTaxMake(vNewInvoiceId,vTaxArea); @@ -157,12 +157,12 @@ BEGIN WHERE io.id = vNewInvoiceId; DROP TEMPORARY TABLE tmp.updateInter; - - SELECT COUNT(*), id + + SELECT COUNT(*), id INTO vIsInterCompany, vInterCompanyFk - FROM company + FROM company WHERE clientFk = vClientFk; - + IF (vIsInterCompany) THEN INSERT INTO invoiceIn(supplierFk, supplierRef, issued, companyFk) @@ -175,7 +175,7 @@ BEGIN (KEY (ticketFk)) ENGINE = MEMORY SELECT id ticketFk - FROM ticketToInvoice; + FROM tmp.ticketToInvoice; CALL `ticket_getTax`('NATIONAL'); @@ -201,7 +201,7 @@ BEGIN ) sub; INSERT INTO invoiceInTax(invoiceInFk, taxableBase, expenceFk, taxTypeSageFk, transactionTypeSageFk) - SELECT vNewInvoiceInFk, + SELECT vNewInvoiceInFk, SUM(tt.taxableBase) - IF(tt.code = @vTaxCodeGeneral, @vTaxableBaseServices, 0) taxableBase, i.expenceFk, @@ -215,13 +215,13 @@ BEGIN ORDER BY tt.priority; CALL invoiceInDueDay_calculate(vNewInvoiceInFk); - - SELECT COUNT(*) INTO vIsCEESerial + + SELECT COUNT(*) INTO vIsCEESerial FROM invoiceOutSerial WHERE code = vSerial; IF vIsCEESerial THEN - + INSERT INTO invoiceInIntrastat ( invoiceInFk, intrastatFk, @@ -253,6 +253,6 @@ BEGIN DROP TEMPORARY TABLE tmp.ticketServiceTax; END IF; END IF; - DROP TEMPORARY TABLE `ticketToInvoice`; + DROP TEMPORARY TABLE tmp.`ticketToInvoice`; END$$ -DELIMITER ; \ No newline at end of file +DELIMITER ; diff --git a/db/dump/structure.sql b/db/dump/structure.sql index 90e4c4bc9..3256ecdca 100644 --- a/db/dump/structure.sql +++ b/db/dump/structure.sql @@ -42776,7 +42776,7 @@ CREATE DEFINER=`root`@`localhost` FUNCTION `hasAnyNegativeBase`() RETURNS tinyin BEGIN /* Calcula si existe alguna base imponible negativa -* Requiere la tabla temporal vn.ticketToInvoice(id) +* Requiere la tabla temporal tmp.ticketToInvoice(id) * * returns BOOLEAN */ @@ -42787,7 +42787,7 @@ BEGIN (KEY (ticketFk)) ENGINE = MEMORY SELECT id ticketFk - FROM ticketToInvoice; + FROM tmp.ticketToInvoice; CALL ticket_getTax(NULL); @@ -55223,7 +55223,7 @@ DELIMITER ;; CREATE DEFINER=`root`@`localhost` PROCEDURE `invoiceExpenceMake`(IN vInvoice INT) BEGIN /* Inserta las partidas de gasto correspondientes a la factura - * REQUIERE tabla ticketToInvoice + * REQUIERE tabla tmp.ticketToInvoice * @param vInvoice Numero de factura */ DELETE FROM invoiceOutExpence @@ -55233,7 +55233,7 @@ BEGIN SELECT vInvoice, expenceFk, SUM(ROUND(quantity * price * (100 - discount)/100,2)) amount - FROM ticketToInvoice t + FROM tmp.ticketToInvoice t JOIN sale s ON s.ticketFk = t.id JOIN item i ON i.id = s.itemFk GROUP BY i.expenceFk @@ -55243,7 +55243,7 @@ BEGIN SELECT vInvoice, tst.expenceFk, SUM(ROUND(ts.quantity * ts.price ,2)) amount - FROM ticketToInvoice t + FROM tmp.ticketToInvoice t JOIN ticketService ts ON ts.ticketFk = t.id JOIN ticketServiceType tst ON tst.id = ts.ticketServiceTypeFk HAVING amount != 0; @@ -55270,9 +55270,9 @@ BEGIN SET vMaxTicketDate = vn2008.DAYEND(vMaxTicketDate); - DROP TEMPORARY TABLE IF EXISTS `ticketToInvoice`; + DROP TEMPORARY TABLE IF EXISTS `tmp`.`ticketToInvoice`; - CREATE TEMPORARY TABLE `ticketToInvoice` + CREATE TEMPORARY TABLE `tmp`.`ticketToInvoice` (PRIMARY KEY (`id`)) ENGINE = MEMORY SELECT Id_Ticket id FROM vn2008.Tickets WHERE (Fecha BETWEEN vMinDateTicket @@ -55305,8 +55305,8 @@ BEGIN SET vMinTicketDate = util.firstDayOfYear(vMaxTicketDate - INTERVAL 1 YEAR); SET vMaxTicketDate = util.dayend(vMaxTicketDate); - DROP TEMPORARY TABLE IF EXISTS `ticketToInvoice`; - CREATE TEMPORARY TABLE `ticketToInvoice` + DROP TEMPORARY TABLE IF EXISTS `tmp`.`ticketToInvoice`; + CREATE TEMPORARY TABLE `tmp`.`ticketToInvoice` (PRIMARY KEY (`id`)) ENGINE = MEMORY SELECT id FROM ticket t @@ -55333,9 +55333,9 @@ DELIMITER ;; CREATE DEFINER=`root`@`localhost` PROCEDURE `invoiceFromTicket`(IN vTicket INT) BEGIN - DROP TEMPORARY TABLE IF EXISTS `ticketToInvoice`; + DROP TEMPORARY TABLE IF EXISTS `tmp`.`ticketToInvoice`; - CREATE TEMPORARY TABLE `ticketToInvoice` + CREATE TEMPORARY TABLE `tmp`.`ticketToInvoice` (PRIMARY KEY (`id`)) ENGINE = MEMORY SELECT id FROM vn.ticket @@ -55931,9 +55931,9 @@ BEGIN JOIN invoiceOut io ON io.companyFk = s.id WHERE io.id = vInvoiceFk; - DROP TEMPORARY TABLE IF EXISTS ticketToInvoice; + DROP TEMPORARY TABLE IF EXISTS tmp.ticketToInvoice; - CREATE TEMPORARY TABLE ticketToInvoice + CREATE TEMPORARY TABLE tmp.ticketToInvoice SELECT id FROM ticket WHERE refFk = vInvoiceRef; @@ -56408,9 +56408,9 @@ BEGIN JOIN client c ON c.id = io.clientFk WHERE io.id = vInvoice; - DROP TEMPORARY TABLE IF EXISTS ticketToInvoice; + DROP TEMPORARY TABLE IF EXISTS tmp.ticketToInvoice; - CREATE TEMPORARY TABLE ticketToInvoice + CREATE TEMPORARY TABLE tmp.ticketToInvoice SELECT id FROM ticket WHERE refFk = vInvoiceRef; @@ -56456,7 +56456,7 @@ CREATE DEFINER=`root`@`localhost` PROCEDURE `invoiceOut_exportationFromClient`( vCompanyFk INT) BEGIN /** - * Genera tabla temporal ticketToInvoice necesaría para el proceso de facturación + * Genera tabla temporal tmp.ticketToInvoice necesaría para el proceso de facturación * Los abonos quedan excluidos en las exportaciones * * @param vMaxTicketDate Fecha hasta la cual cogerá tickets para facturar @@ -56467,8 +56467,8 @@ BEGIN SET vMinTicketDate = util.firstDayOfYear(vMaxTicketDate - INTERVAL 1 YEAR); SET vMaxTicketDate = util.dayend(vMaxTicketDate); - DROP TEMPORARY TABLE IF EXISTS `ticketToInvoice`; - CREATE TEMPORARY TABLE `ticketToInvoice` + DROP TEMPORARY TABLE IF EXISTS `tmp`.`ticketToInvoice`; + CREATE TEMPORARY TABLE `tmp`.`ticketToInvoice` (PRIMARY KEY (`id`)) ENGINE = MEMORY SELECT t.id @@ -56503,7 +56503,7 @@ CREATE DEFINER=`root`@`localhost` PROCEDURE `invoiceOut_new`( BEGIN /** * Creación de facturas emitidas. - * requiere previamente tabla ticketToInvoice(id). + * requiere previamente tabla tmp.ticketToInvoice(id). * * @param vSerial serie a la cual se hace la factura * @param vInvoiceDate fecha de la factura @@ -56531,13 +56531,13 @@ BEGIN SELECT t.clientFk, t.companyFk INTO vClientFk, vCompanyFk - FROM ticketToInvoice tt + FROM tmp.ticketToInvoice tt JOIN ticket t ON t.id = tt.id LIMIT 1; - -- Eliminem de ticketToInvoice els tickets que no han de ser facturats + -- Eliminem de tmp.ticketToInvoice els tickets que no han de ser facturats DELETE ti.* - FROM ticketToInvoice ti + FROM tmp.ticketToInvoice ti JOIN ticket t ON t.id = ti.id JOIN sale s ON s.ticketFk = t.id JOIN item i ON i.id = s.itemFk @@ -56552,7 +56552,7 @@ BEGIN SELECT SUM(s.quantity * s.price * (100 - s.discount)/100), ts.id INTO vIsAnySaleToInvoice, vIsAnyServiceToInvoice - FROM ticketToInvoice t + FROM tmp.ticketToInvoice t LEFT JOIN sale s ON s.ticketFk = t.id LEFT JOIN ticketService ts ON ts.ticketFk = t.id; @@ -56593,13 +56593,13 @@ BEGIN WHERE id = vNewInvoiceId; UPDATE ticket t - JOIN ticketToInvoice ti ON ti.id = t.id + JOIN tmp.ticketToInvoice ti ON ti.id = t.id SET t.refFk = vNewRef; DROP TEMPORARY TABLE IF EXISTS tmp.updateInter; CREATE TEMPORARY TABLE tmp.updateInter ENGINE = MEMORY SELECT s.id,ti.id ticket_id,vWorker Id_Trabajador - FROM ticketToInvoice ti + FROM tmp.ticketToInvoice ti LEFT JOIN ticketState ts ON ti.id = ts.ticket JOIN state s WHERE IFNULL(ts.alertLevel,0) < 3 and s.`code` = getAlert3State(ti.id); @@ -56609,7 +56609,7 @@ BEGIN INSERT INTO ticketLog (action, userFk, originFk, description) SELECT 'UPDATE', account.myUser_getId(), ti.id, CONCAT('Crea factura ', vNewRef) - FROM ticketToInvoice ti; + FROM tmp.ticketToInvoice ti; CALL invoiceExpenceMake(vNewInvoiceId); CALL invoiceTaxMake(vNewInvoiceId,vTaxArea); @@ -56647,7 +56647,7 @@ BEGIN (KEY (ticketFk)) ENGINE = MEMORY SELECT id ticketFk - FROM ticketToInvoice; + FROM tmp.ticketToInvoice; CALL `ticket_getTax`('NATIONAL'); @@ -56725,7 +56725,7 @@ BEGIN DROP TEMPORARY TABLE tmp.ticketServiceTax; END IF; END IF; - DROP TEMPORARY TABLE `ticketToInvoice`; + DROP TEMPORARY TABLE `tmp`.`ticketToInvoice`; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -56876,7 +56876,7 @@ BEGIN (KEY (ticketFk)) ENGINE = MEMORY SELECT id ticketFk - FROM ticketToInvoice; + FROM tmp.ticketToInvoice; CALL ticket_getTax(vTaxArea); @@ -68689,7 +68689,7 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticketToInvoiceByAddress` */; +/*!50003 DROP PROCEDURE IF EXISTS `tmp`.`ticketToInvoiceByAddress` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; @@ -68709,9 +68709,9 @@ BEGIN SET vEnded = util.dayEnd(vEnded); - DROP TEMPORARY TABLE IF EXISTS vn.ticketToInvoice; + DROP TEMPORARY TABLE IF EXISTS tmp.ticketToInvoice; - CREATE TEMPORARY TABLE vn.ticketToInvoice + CREATE TEMPORARY TABLE tmp.ticketToInvoice SELECT id FROM vn.ticket WHERE addressFk = vAddress @@ -68745,9 +68745,9 @@ BEGIN SET vEnded = util.dayEnd(vEnded); - DROP TEMPORARY TABLE IF EXISTS vn.ticketToInvoice; + DROP TEMPORARY TABLE IF EXISTS tmp.ticketToInvoice; - CREATE TEMPORARY TABLE vn.ticketToInvoice + CREATE TEMPORARY TABLE tmp.ticketToInvoice SELECT id FROM vn.ticket WHERE clientFk = vClient @@ -68808,9 +68808,9 @@ BEGIN JOIN vn.client c ON c.id = io.clientFk WHERE io.id = vInvoice; - DROP TEMPORARY TABLE IF EXISTS vn.ticketToInvoice; + DROP TEMPORARY TABLE IF EXISTS tmp.ticketToInvoice; - CREATE TEMPORARY TABLE vn.ticketToInvoice + CREATE TEMPORARY TABLE tmp.ticketToInvoice SELECT id FROM vn.ticket WHERE refFk = vInvoiceRef; diff --git a/modules/ticket/back/methods/ticket/makeInvoice.js b/modules/ticket/back/methods/ticket/makeInvoice.js index 9739f5985..bd899ef7b 100644 --- a/modules/ticket/back/methods/ticket/makeInvoice.js +++ b/modules/ticket/back/methods/ticket/makeInvoice.js @@ -75,8 +75,8 @@ module.exports = function(Self) { serial = result.serial; await Self.rawSql(` - DROP TEMPORARY TABLE IF EXISTS ticketToInvoice; - CREATE TEMPORARY TABLE ticketToInvoice + DROP TEMPORARY TABLE IF EXISTS tmp.ticketToInvoice; + CREATE TEMPORARY TABLE tmp.ticketToInvoice (PRIMARY KEY (id)) ENGINE = MEMORY SELECT id FROM vn.ticket diff --git a/package-lock.json b/package-lock.json index 7e86dbba9..6a87b4b25 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "salix-back", - "version": "23.08.01", + "version": "23.16.01", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "salix-back", - "version": "23.08.01", + "version": "23.16.01", "license": "GPL-3.0", "dependencies": { "axios": "^1.2.2", From 5844da44749291378f599209731f699b4c3b7fc4 Mon Sep 17 00:00:00 2001 From: alexandre Date: Wed, 26 Apr 2023 14:34:29 +0200 Subject: [PATCH 4/6] refs #4713 updated sql --- db/changes/231001/00-saleTracking.sql | 5 ----- db/changes/231601/00-saleTracking.sql | 5 +++++ 2 files changed, 5 insertions(+), 5 deletions(-) delete mode 100644 db/changes/231001/00-saleTracking.sql create mode 100644 db/changes/231601/00-saleTracking.sql diff --git a/db/changes/231001/00-saleTracking.sql b/db/changes/231001/00-saleTracking.sql deleted file mode 100644 index ce9bd8505..000000000 --- a/db/changes/231001/00-saleTracking.sql +++ /dev/null @@ -1,5 +0,0 @@ -DROP PROCEDURE `vn`.`sale_setQuantity`; -DROP PROCEDURE `vn`.`collection_updateSale`; -DROP PROCEDURE `vn`.`replaceMovimientosMark`; -DROP PROCEDURE `vn`.`saleTracking_Replace`; -DROP PROCEDURE `vn`.`sale_updateOriginalQuantity`; diff --git a/db/changes/231601/00-saleTracking.sql b/db/changes/231601/00-saleTracking.sql new file mode 100644 index 000000000..d651a2447 --- /dev/null +++ b/db/changes/231601/00-saleTracking.sql @@ -0,0 +1,5 @@ +DROP PROCEDURE IF EXISTS `vn`.`sale_setQuantity`; +DROP PROCEDURE IF EXISTS `vn`.`collection_updateSale`; +DROP PROCEDURE IF EXISTS `vn`.`replaceMovimientosMark`; +DROP PROCEDURE IF EXISTS `vn`.`saleTracking_Replace`; +DROP PROCEDURE IF EXISTS `vn`.`sale_updateOriginalQuantity`; From bbd2137e57abfd2c04609958a366a3f2acb287e6 Mon Sep 17 00:00:00 2001 From: Juan Ferrer Toribio Date: Wed, 3 May 2023 11:57:13 +0200 Subject: [PATCH 5/6] refs #5517 Avatar componetized --- front/core/components/autocomplete/index.js | 14 +---- front/core/components/avatar/index.html | 5 ++ front/core/components/avatar/index.js | 63 +++++++++++++++++++ front/core/components/avatar/style.scss | 32 ++++++++++ front/core/components/index.js | 1 + .../core/components/json-value/index.spec.js | 4 +- front/salix/components/log/index.html | 39 +++++++----- front/salix/components/log/index.js | 37 ----------- front/salix/components/log/style.scss | 29 +-------- 9 files changed, 131 insertions(+), 93 deletions(-) create mode 100644 front/core/components/avatar/index.html create mode 100644 front/core/components/avatar/index.js create mode 100644 front/core/components/avatar/style.scss diff --git a/front/core/components/autocomplete/index.js b/front/core/components/autocomplete/index.js index 52491f7e0..2539c4ef4 100755 --- a/front/core/components/autocomplete/index.js +++ b/front/core/components/autocomplete/index.js @@ -174,7 +174,6 @@ export default class Autocomplete extends Field { refreshDisplayed() { let display = ''; - let hasTemplate = this.$transclude && this.$transclude.isSlotFilled('tplItem'); if (this._selection && this.showField) { if (this.multiple && Array.isArray(this._selection)) { @@ -182,19 +181,8 @@ export default class Autocomplete extends Field { if (display.length > 0) display += ', '; display += item[this.showField]; } - } else { + } else display = this._selection[this.showField]; - if (hasTemplate) { - let template = this.$transclude(() => {}, null, 'tplItem'); - const element = template[0]; - const description = element.querySelector('.text-secondary'); - if (description) description.remove(); - - const displayElement = angular.element(element); - const displayText = displayElement.text(); - display = this.$interpolate(displayText)(this._selection); - } - } } this.input.value = display; diff --git a/front/core/components/avatar/index.html b/front/core/components/avatar/index.html new file mode 100644 index 000000000..2819e1d50 --- /dev/null +++ b/front/core/components/avatar/index.html @@ -0,0 +1,5 @@ +
+ {{::$ctrl.val && $ctrl.val.charAt(0).toUpperCase()}} +
+
+
diff --git a/front/core/components/avatar/index.js b/front/core/components/avatar/index.js new file mode 100644 index 000000000..e1aede6be --- /dev/null +++ b/front/core/components/avatar/index.js @@ -0,0 +1,63 @@ +import ngModule from '../../module'; +import Component from 'core/lib/component'; +import './style.scss'; + +/** + * Displays colored avatar based on value. + * + * @property {*} val The value + */ +export default class Avatar extends Component { + get val() { + return this._val; + } + + set val(value) { + this._val = value; + + const val = value || ''; + let hash = 0; + for (let i = 0; i < val.length; i++) + hash += val.charCodeAt(i); + const color = '#' + colors[hash % colors.length]; + + const el = this.element; + el.style.backgroundColor = color; + el.title = val; + } +} + +ngModule.vnComponent('vnAvatar', { + template: require('./index.html'), + controller: Avatar, + bindings: { + val: '@?' + }, + transclude: true +}); + +const colors = [ + 'e2553d', // Coral + 'FFA07A', // Salmon + 'FFDAB9', // Peach + 'a17077', // Pink + 'bf0e99', // Pink light + '52a500', // Green chartreuse + '00aeae', // Cian + 'b754cf', // Purple middle + '8a69cd', // Blue lavender + '1fa8a1', // Green ocean + 'DC143C', // Red crimson + '5681cf', // Blue steel + 'FF1493', // Ping intense + '02ba02', // Green lime + '1E90FF', // Blue sky + '8B008B', // Purple dark + 'cc7000', // Orange bright + '00b5b8', // Turquoise + '8B0000', // Red dark + '008080', // Green bluish + '2F4F4F', // Gray board + '7e7e7e', // Gray + '5d5d5d', // Gray dark +]; diff --git a/front/core/components/avatar/style.scss b/front/core/components/avatar/style.scss new file mode 100644 index 000000000..272930821 --- /dev/null +++ b/front/core/components/avatar/style.scss @@ -0,0 +1,32 @@ +@import "variables"; + +vn-avatar { + display: block; + border-radius: 50%; + overflow: hidden; + height: 36px; + width: 36px; + font-size: 22px; + background-color: $color-main; + position: relative; + + & > * { + width: 100%; + height: 100%; + } + & > .letter { + display: flex; + align-items: center; + justify-content: center; + } + & > .image { + position: absolute; + top: 0; + left: 0; + + & > img { + width: 100%; + height: 100%; + } + } +} diff --git a/front/core/components/index.js b/front/core/components/index.js index 44b8beb45..45d182121 100644 --- a/front/core/components/index.js +++ b/front/core/components/index.js @@ -17,6 +17,7 @@ import './pagination/pagination'; import './searchbar/searchbar'; import './scroll-up/scroll-up'; import './autocomplete'; +import './avatar'; import './button'; import './button-menu'; import './calendar'; diff --git a/front/core/components/json-value/index.spec.js b/front/core/components/json-value/index.spec.js index 078080d27..b79d15a5d 100644 --- a/front/core/components/json-value/index.spec.js +++ b/front/core/components/json-value/index.spec.js @@ -1,6 +1,6 @@ import './index'; -describe('Salix Component vnLog', () => { +describe('Component vnJsonValue', () => { let controller; let $scope; let $element; @@ -10,7 +10,7 @@ describe('Salix Component vnLog', () => { beforeEach(inject(($componentController, $rootScope) => { $scope = $rootScope.$new(); - $element = angular.element(''); + $element = angular.element(''); controller = $componentController('vnJsonValue', {$element, $scope}); el = controller.element; })); diff --git a/front/salix/components/log/index.html b/front/salix/components/log/index.html index 00ab23cc9..b7697a1fd 100644 --- a/front/salix/components/log/index.html +++ b/front/salix/components/log/index.html @@ -17,20 +17,15 @@
-
-
- {{::log.user ? log.user.name.charAt(0).toUpperCase() : 'S'}} -
+ val="{{::log.user ? log.user.nickname : 'System'}}" + ng-click="$ctrl.showWorkerDescriptor($event, log)"> + ng-src="/api/Images/user/160x160/{{::log.userFk}}/download?access_token={{::$ctrl.vnToken.token}}"> -
+
@@ -41,7 +36,7 @@ title="{{::log.creationDate | date:'dd/MM/yyyy HH:mm'}}"> {{::$ctrl.relativeDate(log.creationDate)}}
- + {{::$ctrl.actionsText[log.action]}} @@ -62,7 +57,9 @@ {{::log.changedModelValue}} -
+
@@ -141,13 +138,25 @@ ng-model="filter.userFk" value-field="id" show-field="nickname" - fields="['id', 'name', 'nickname']" + fields="['id', 'name', 'nickname', 'image']" search-function="$ctrl.searchUser($search)" url="{{$ctrl.url}}/{{$ctrl.originId}}/editors" order="nickname"> -
{{nickname}}
-
{{name}}
+
+ + + + +
+
{{::nickname}}
+
{{::name}}
+
+
.user { - position: relative; - border-radius: 50%; - height: 36px; - width: 36px; - display: flex; - align-items: center; - justify-content: center; - overflow: hidden; + & > vn-avatar { + cursor: pointer; - & > * { - width: 100%; - height: 100%; - } &.system { - background-color: $color-main; - } - .user-letter { - font-size: 22px; - display: flex; - align-items: center; - justify-content: center; - } - img { - cursor: pointer; - position: absolute; - top: 0; - left: 0; + background-color: $color-main !important; } } & > .arrow { From b2027fddf3f9e148a6406595da2497952757f862 Mon Sep 17 00:00:00 2001 From: alexm Date: Wed, 3 May 2023 14:56:14 +0200 Subject: [PATCH 6/6] fix(client): use account setPassword --- modules/client/back/methods/client/setPassword.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/client/back/methods/client/setPassword.js b/modules/client/back/methods/client/setPassword.js index 68c11406d..e5b8949e7 100644 --- a/modules/client/back/methods/client/setPassword.js +++ b/modules/client/back/methods/client/setPassword.js @@ -28,7 +28,7 @@ module.exports = Self => { const isAccount = await models.Account.findById(id); if (isClient && !isAccount) - await models.VnUser.setPassword(id, newPassword); + await models.Account.setPassword(id, newPassword); else throw new UserError(`Modifiable password only via recovery or by an administrator`); };