From e0cee8f5591ba75ab3ba287eb42d7499c2d3c10d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Andr=C3=A9s?= Date: Fri, 23 Feb 2024 15:41:30 +0100 Subject: [PATCH] feat: validar caracteres invocieIn.supplierref #6931 --- db/.pullinfo.json | 2 +- .../string_checkPrintableAndSpanishChars.sql | 15 +++++++++++++++ .../vn/triggers/invoiceIn_beforeInsert.sql | 4 ++++ .../vn/triggers/invoiceIn_beforeUpdate.sql | 5 ++++- .../10907-redAspidistra/00-firstScript.sql | 1 + 5 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 db/routines/util/functions/string_checkPrintableAndSpanishChars.sql create mode 100644 db/versions/10907-redAspidistra/00-firstScript.sql diff --git a/db/.pullinfo.json b/db/.pullinfo.json index f4afbc5fbb..a6f5ae2368 100644 --- a/db/.pullinfo.json +++ b/db/.pullinfo.json @@ -9,7 +9,7 @@ }, "vn": { "view": { - "expeditionPallet_Print": "288cbd6e8289df083ed5eb1a2c808f7a82ba4c90c8ad9781104808a7a54471fb" + "expeditionPallet_Print": "a8ea2872086aa4e3401350470b28f68d9efdbaff9fdff8c3d6b478756f7fad2a" } } } diff --git a/db/routines/util/functions/string_checkPrintableAndSpanishChars.sql b/db/routines/util/functions/string_checkPrintableAndSpanishChars.sql new file mode 100644 index 0000000000..167795e908 --- /dev/null +++ b/db/routines/util/functions/string_checkPrintableAndSpanishChars.sql @@ -0,0 +1,15 @@ +DELIMITER $$ +CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `util`.`string_checkPrintableAndSpanishChars`( + vString VARCHAR(255) +) RETURNS tinyint(1) + DETERMINISTIC +BEGIN +/** + * Validates whether the input string contains only printable characters + * and Spanish special characters (such as ¡, ÿ, etc.). + * + * @vString string to check + */ + RETURN vString REGEXP '^[ -~¡-ÿ]*$'; +END$$ +DELIMITER ; \ No newline at end of file diff --git a/db/routines/vn/triggers/invoiceIn_beforeInsert.sql b/db/routines/vn/triggers/invoiceIn_beforeInsert.sql index c09e71ba17..504355df5c 100644 --- a/db/routines/vn/triggers/invoiceIn_beforeInsert.sql +++ b/db/routines/vn/triggers/invoiceIn_beforeInsert.sql @@ -9,6 +9,10 @@ BEGIN DECLARE vActive TINYINT; DECLARE vWithholdingSageFk INT; + IF NOT util.string_checkPrintableAndSpanishChars(NEW.supplierRef) THEN + CALL util.throw('The invoiceIn cannot contain special characters'); + END IF; + SET NEW.editorFk = account.myUser_getId(); SELECT withholdingSageFk INTO vWithholdingSageFk diff --git a/db/routines/vn/triggers/invoiceIn_beforeUpdate.sql b/db/routines/vn/triggers/invoiceIn_beforeUpdate.sql index ae69ad3792..57134b0336 100644 --- a/db/routines/vn/triggers/invoiceIn_beforeUpdate.sql +++ b/db/routines/vn/triggers/invoiceIn_beforeUpdate.sql @@ -3,9 +3,12 @@ CREATE OR REPLACE DEFINER=`root`@`localhost` TRIGGER `vn`.`invoiceIn_beforeUpdat BEFORE UPDATE ON `invoiceIn` FOR EACH ROW BEGIN - DECLARE vWithholdingSageFk INT; + IF NOT (NEW.supplierRef <=> OLD.supplierRef) AND NOT util.string_checkPrintableAndSpanishChars(NEW.supplierRef) THEN + CALL util.throw('The invoiceIn cannot contain special characters'); + END IF; + SET NEW.editorFk = account.myUser_getId(); IF (SELECT COUNT(*) FROM vn.invoiceIn diff --git a/db/versions/10907-redAspidistra/00-firstScript.sql b/db/versions/10907-redAspidistra/00-firstScript.sql new file mode 100644 index 0000000000..371c2c358d --- /dev/null +++ b/db/versions/10907-redAspidistra/00-firstScript.sql @@ -0,0 +1 @@ +-- Place your SQL code here