From ed0f942a5780ee083036642290d2e2bb0b1bed67 Mon Sep 17 00:00:00 2001 From: ivanm Date: Tue, 30 Jan 2024 09:45:37 +0100 Subject: [PATCH 1/5] refs #6444 create vn.intrastat_estimateNet.sql --- .../vn/functions/intrastat_estimateNet.sql | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 db/routines/vn/functions/intrastat_estimateNet.sql diff --git a/db/routines/vn/functions/intrastat_estimateNet.sql b/db/routines/vn/functions/intrastat_estimateNet.sql new file mode 100644 index 000000000..4d66e30de --- /dev/null +++ b/db/routines/vn/functions/intrastat_estimateNet.sql @@ -0,0 +1,19 @@ +DELIMITER $$ +CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`intrastat_estimateNet`(intINSTRASTAT INTEGER,intUNIDADES INTEGER) + RETURNS double + DETERMINISTIC +BEGIN + + DECLARE n DOUBLE; + + SELECT ROUND(intUNIDADES / (SUM(MEDIA) / COUNT(media)), 2) INTO n FROM + (SELECT *, unidades / neto MEDIA + FROM vn2008.intrastat_data + WHERE intrastat_id = intINSTRASTAT AND neto + AND unidades > 0 + ORDER BY odbc_date DESC + LIMIT 20) t; + RETURN n/2; + +END$$ +DELIMITER ; \ No newline at end of file From da2a2b5f09cb85d4f01da06265db356fe96780dd Mon Sep 17 00:00:00 2001 From: ivanm Date: Tue, 30 Jan 2024 13:33:54 +0100 Subject: [PATCH 2/5] refs #6444 Remove vn2008.intrastat_neto function --- .../vn2008/functions/intrastat_neto.sql | 20 ------------------- 1 file changed, 20 deletions(-) delete mode 100644 db/routines/vn2008/functions/intrastat_neto.sql diff --git a/db/routines/vn2008/functions/intrastat_neto.sql b/db/routines/vn2008/functions/intrastat_neto.sql deleted file mode 100644 index 34e01de8c..000000000 --- a/db/routines/vn2008/functions/intrastat_neto.sql +++ /dev/null @@ -1,20 +0,0 @@ -DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn2008`.`intrastat_neto`(intINSTRASTAT INTEGER,intUNIDADES INTEGER) - RETURNS double - DETERMINISTIC -BEGIN - - DECLARE n DOUBLE; - - SELECT ROUND(intUNIDADES / (SUM(MEDIA) / COUNT(media)), 2) INTO n FROM - (SELECT *, unidades / neto MEDIA - FROM intrastat_data - WHERE intrastat_id = intINSTRASTAT AND neto - AND unidades > 0 - ORDER BY odbc_date DESC - LIMIT 20) t; - -- JGF 01/06 per a evitar Kg en negatiu - RETURN n/2; - -END$$ -DELIMITER ; From 7b1a0e1957fa91ae004525fd00caaaa8a0ca0a49 Mon Sep 17 00:00:00 2001 From: ivanm Date: Thu, 1 Feb 2024 13:02:03 +0100 Subject: [PATCH 3/5] refs #6444 change code according to sql conventions --- .../vn/functions/intrastat_estimateNet.sql | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/db/routines/vn/functions/intrastat_estimateNet.sql b/db/routines/vn/functions/intrastat_estimateNet.sql index 4d66e30de..99a52ded8 100644 --- a/db/routines/vn/functions/intrastat_estimateNet.sql +++ b/db/routines/vn/functions/intrastat_estimateNet.sql @@ -1,19 +1,21 @@ DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`intrastat_estimateNet`(intINSTRASTAT INTEGER,intUNIDADES INTEGER) +CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`intrastat_estimateNet`(vIntrastat INT, vUnidades INT) RETURNS double DETERMINISTIC BEGIN - DECLARE n DOUBLE; + DECLARE vNet DOUBLE; - SELECT ROUND(intUNIDADES / (SUM(MEDIA) / COUNT(media)), 2) INTO n FROM - (SELECT *, unidades / neto MEDIA - FROM vn2008.intrastat_data - WHERE intrastat_id = intINSTRASTAT AND neto - AND unidades > 0 - ORDER BY odbc_date DESC - LIMIT 20) t; - RETURN n/2; + SELECT ROUND(vUnidades / (SUM(media) / COUNT(media)), 2) INTO vNet + FROM (SELECT *, unidades / neto media + FROM vn2008.intrastat_data + WHERE intrastat_id = vIntrastat + AND neto + AND unidades > 0 + ORDER BY odbc_date DESC + LIMIT 20) t; + + RETURN vNet/2; END$$ DELIMITER ; \ No newline at end of file From 1a869766b9ed7cf8a46ba35cd331111e56e645fc Mon Sep 17 00:00:00 2001 From: ivanm Date: Mon, 5 Feb 2024 08:32:45 +0100 Subject: [PATCH 4/5] refs #6444 change code accord to conventions --- .../vn/functions/intrastat_estimateNet.sql | 33 ++++++++++++------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/db/routines/vn/functions/intrastat_estimateNet.sql b/db/routines/vn/functions/intrastat_estimateNet.sql index 99a52ded8..3ee1ca80f 100644 --- a/db/routines/vn/functions/intrastat_estimateNet.sql +++ b/db/routines/vn/functions/intrastat_estimateNet.sql @@ -1,21 +1,32 @@ DELIMITER $$ -CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`intrastat_estimateNet`(vIntrastat INT, vUnidades INT) +CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`intrastat_estimateNet`( + vSelf INT, + vUnits INT +) RETURNS double DETERMINISTIC BEGIN - +/** +* Calcula un valor neto estimado en función de +* datos históricos de facturas intrastat. +* +* @param vSelf Id de intrastat +* @param vUnits Número de unidades +* @return vNet +*/ DECLARE vNet DOUBLE; - SELECT ROUND(vUnidades / (SUM(media) / COUNT(media)), 2) INTO vNet - FROM (SELECT *, unidades / neto media - FROM vn2008.intrastat_data - WHERE intrastat_id = vIntrastat - AND neto - AND unidades > 0 - ORDER BY odbc_date DESC - LIMIT 20) t; + SELECT ROUND(vUnits / (SUM(average) / COUNT(average)), 2) INTO vNet + FROM ( + SELECT *, stems / net average + FROM invoiceInIntrastat + WHERE intrastatFk = vSelf + AND net + AND stems > 0 + ORDER BY dated DESC + LIMIT 20 + ) sub; RETURN vNet/2; - END$$ DELIMITER ; \ No newline at end of file From 438af34d73a5b85c3b0ffe8cb2f989275fc0f936 Mon Sep 17 00:00:00 2001 From: ivanm Date: Tue, 6 Feb 2024 08:40:06 +0100 Subject: [PATCH 5/5] refs #6444 cambio vUnits por vStems --- db/routines/vn/functions/intrastat_estimateNet.sql | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/db/routines/vn/functions/intrastat_estimateNet.sql b/db/routines/vn/functions/intrastat_estimateNet.sql index 3ee1ca80f..350cb788a 100644 --- a/db/routines/vn/functions/intrastat_estimateNet.sql +++ b/db/routines/vn/functions/intrastat_estimateNet.sql @@ -1,7 +1,7 @@ DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`intrastat_estimateNet`( vSelf INT, - vUnits INT + vStems INT ) RETURNS double DETERMINISTIC @@ -11,12 +11,12 @@ BEGIN * datos históricos de facturas intrastat. * * @param vSelf Id de intrastat -* @param vUnits Número de unidades +* @param vStems Número de unidades * @return vNet */ DECLARE vNet DOUBLE; - SELECT ROUND(vUnits / (SUM(average) / COUNT(average)), 2) INTO vNet + SELECT ROUND(vStems / (SUM(average) / COUNT(average)), 2) INTO vNet FROM ( SELECT *, stems / net average FROM invoiceInIntrastat