7167-testToMaster_2414 #2244

Merged
alexm merged 643 commits from 7167-testToMaster_2414 into master 2024-04-04 05:32:41 +00:00
7 changed files with 620 additions and 0 deletions
Showing only changes of commit 0eaeb2e805 - Show all commits

View File

@ -292,7 +292,411 @@ INSERT INTO `hedera`.`tpvConfig` (currency, terminal, transactionType, maxAmount
*/
INSERT INTO hedera.tpvMerchantEnable (merchantFk, companyFk)
VALUES (1, 442);
-- XXX: floranet
INSERT INTO vn.intrastat(id, description, taxClassFk, taxCodeFk)
VALUES(6031970, 'Flores y capullos frescos (Otras: ramos, coronas)', 1, 63);
-- Generación de items
SELECT id
INTO @FNR
FROM vn.itemType
WHERE code = 'FNR';
SELECT id
INTO @FNP
FROM vn.itemType
WHERE code = 'FNP';
DELETE
FROM vn.item
WHERE typeFk IN (@FNR,@FNP);
SELECT MAX(id) + 1
INTO @item
FROM vn.item;
INSERT INTO vn.item
(
id,
name,
longName,
`size`,
originFk,
intrastatFk,
typeFk,
inkFk,
image,
description
)
VALUES
(
@item := @item + 1,
@r := 'Ramo Terranova',
@r,
20 + CEIL(RAND() * 55),
(SELECT id FROM vn.origin ORDER BY RAND() LIMIT 1),
6031970,
@FNR,
(SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1),
'https://drive.google.com/file/d/1CwtEK5_GReAzconaJsPTCXxV7zajbTos/view?usp=drive_link',
CONCAT('Hemos elegido una selección de flores muy especiales para realizar ',
'esta composición: brásicas, flor de cera, astrantia, espigas, lisiantum, ',
'paniculata eucaliptus.')
),
(
@item := @item + 1,
@r := 'Ramo Tasmania',
@r,
20 + CEIL(RAND() * 55),
(SELECT id FROM vn.origin WHERE code = 'SPA'),
6031970,
@FNR,
(SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1),
'https://drive.google.com/file/d/1_149uYZ-sehw3vWH68Quttk8QJe5T_bG/view?usp=drive_link',
CONCAT('La elegancia de este ramo es por la elección de todas las flores que lo componen: ',
'eringium, verdes variados, rosas proteas, margaritas, astrantia, esta selección de ',
'flores será un acierto seguro para hacer un regalo muy especial.')
),
(
@item := @item + 1,
@r := 'Ramo Pasion',
@r,
20 + CEIL(RAND() * 55),
(SELECT id FROM vn.origin WHERE code = 'SPA'),
6031970,
@FNR,
(SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1),
'https://drive.google.com/file/d/1-dH1UilV-nOH9XNK23uooZoezlwMT-Jq/view?usp=drive_link',
CONCAT('La unión de las rosas rojas con el lilium rosa hace de este ramo uno de ',
'los más especiales , el juego de las dos tonalidades con los diferentes verdes ',
'que cuidadosamente selecionamos para darle el toque final a la composicion hace ',
'que este ramo sea al mismo tiempo elegante y atrevido, para amantes de lo inesperado ',
'que quieren decorar alguna estancia de su hogar o hacer un ragalo muy especial')
),
(
@item := @item + 1,
@r := 'Ramo Florencia',
@r,
20 + CEIL(RAND() * 55),
(SELECT id FROM vn.origin WHERE code = 'SPA'),
6031970,
@FNR,
(SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1),
'https://drive.google.com/file/d/1PWKo5N8kg8H3xQtELdeQTQIc1HMZCc1P/view?usp=drive_link',
CONCAT('Este ramo evoca los colores del atardecer en Florencia, las rosas ramificadas ',
'de pitimini con diferentes tonalidades y la paniculata nos transpotan al ambiente ',
'sofisticado del norte de Italia y la frescura de los verdes variados nos recuerda ',
'a la campiña italiana .Este ramo es ideal para regalar pensando en alguien muy especial.')
),
(
@item := @item + 1,
@r := 'Ramo Atardecer',
@r,
20 + CEIL(RAND() * 55),
(SELECT id FROM vn.origin WHERE code = 'SPA'),
6031970,
@FNR,
(SELECT id FROM vn.ink WHERE name = 'Yellow'),
'https://drive.google.com/file/d/1eM4gtftQuXN5xUjAHIRUYNPZNmuHVRA_/view?usp=drive_link',
CONCAT('Las rosas amarillas simbolizan la alegría de vivir, la calidez ,el ',
'optimismo y la energía, por eso son el regalo perfecto para una ocasión muy ',
'especial o para celebrar la alegría de una amistad o de un encuentro, a estas ',
'preciosas rosas les añadimos un toque desenfadado a través de los verdes ',
'variados que unidos a la belleza de la rosa que seguro serán una apuesta segura.')
),
(
@item := @item + 1,
@r := 'Ramo Arcoíris',
@r,
20 + CEIL(RAND() * 55),
(SELECT id FROM vn.origin WHERE code = 'SPA'),
6031970,
@FNR,
(SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1),
'https://drive.google.com/file/d/1Hxk5yqo7891gfK1VKIYfWxO5a_0K2Qej/view?usp=drive_link',
CONCAT('Llega la primavera a tu casa con el ramo Arco Iris , conseguirás iluminar ',
'cualquier estancia gracias a la combinacón de las gerberas holandesas de gran ',
'tamaño con colores muy vivos que a su vez contrastan a la perfección con las ',
'margaritas coconut y el estatice variado, todo ello acompañado de verdes entre ',
'los que destaca el ruscus danae , para dulcificar la explosión de color , ',
'añadimos paniculata , una flor sencilla pero que aporta gran armonía al ramo')
),
(
@item := @item + 1,
@r := 'Ramo Provenza',
@r,
20 + CEIL(RAND() * 55),
(SELECT id FROM vn.origin WHERE code = 'SPA'),
6031970,
@FNR,
(SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1),
'https://drive.google.com/file/d/1TA9SBwjqnrEqG1bzwDL37sxtX9CNyLJk/view?usp=drive_link',
CONCAT('La delicada composición de este ramo escogida de forma minuciosa hecho ',
'con liliums rosa, lisiantum blanco y rosas de color rosa todo ello unificado ',
'con una selección de maravillosos verdes variados, hacen que esta combinación ',
'sea muy especial para decorar cualquier estancia de tu casa a la que aportará una luz especial.')
),
(
@item := @item + 1,
@r := 'Ramo Alegria',
@r,
20 + CEIL(RAND() * 55),
(SELECT id FROM vn.origin WHERE code = 'SPA'),
6031970,
@FNR,
(SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1),
'https://drive.google.com/file/d/1sOf2isj84P9OxR3E3x6n2PjPnWVamLCE/view?usp=drive_link',
CONCAT('Hemos elegido el nombre de Alegría para este ramo ya que sus intensos ',
'y variados colores nos producen esa sensación, la combinación de rosas blancas ',
', alstroemeria rosa unida a la paniculata tambien de color rosa y a la sutileza ',
'de la combinación de verdes variados, hace de este ramo una opción perfecta de ',
'regalo que a todo el mundo le gusta por su armoniosa combinacion de colores.')
),
(
@item := @item + 1,
@r := 'Planta Orquídeas ',
@r,
20 + CEIL(RAND() * 55),
(SELECT id FROM vn.origin WHERE code = 'SPA'),
6031970,
@FNP,
(SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1),
'https://drive.google.com/file/d/14BIkDDonFaIiTyJer1CWju1YzZNzt3XQ/view?usp=drive_link',
CONCAT('Elegimos personalmente en nuestra tienda dos plantas de orquídeas ',
'con las mejores características combinadas con diferentes elementos de ',
'decoración consiguiendo una composición ideal para cualquier ambiente.El ',
'recipiente de cerámica se puede utilizar para múltiples funciones y sacar ',
'de el las dos plantas de orquídeas para colocarlas en dos puntos diferentes ',
'de nuestro hogar, ya que se respeta siempre las macetas originales de cada orquídea')
),
(
@item := @item + 1,
@r := 'Planta Kentia',
@r,
20 + CEIL(RAND() * 55),
(SELECT id FROM vn.origin WHERE code = 'SPA'),
6031970,
@FNP,
(SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1),
'https://drive.google.com/file/d/1rKe2RicfWha-VIm1LbbXckbA41glA99K/view?usp=drive_link',
CONCAT('La Kentia es una de las plantas más decorativas debido al porte que ',
'le otorgan sus largas finas hojas arqueadas, ideal para un regalo que dejará ',
'sin palabras a quien lo reciba o para decorar una estancia de tu hogar, ',
'desde un espacio super moderno hasta el ambiente más clásico. Nuestras Kentias ',
'proceden de uno de los mejores productores de kentias del mundo, con el añadido ',
'de ser un producto nacional producido en Canarias de una calidad extrema.')
),
(
@item := @item + 1,
@r := 'Planta Calathea',
@r,
20 + CEIL(RAND() * 55),
(SELECT id FROM vn.origin WHERE code = 'SPA'),
6031970,
@FNP,
(SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1),
'https://drive.google.com/file/d/11CKm5rqVFVPOELciuyXUrkc2oeTHJzBE/view?usp=drive_link',
CONCAT('Esta planta originaria de América tropical, principalmente de Brasil y Perú ',
', son plantas ideales para embellecer el interior de una estancia . Debido a su ',
'llamativo y original colorido, tambien es un regalo perfecto para ',
'cualquier compromiso que tengamos .')
),
(
@item := @item + 1,
@r := 'Planta Anthurium ',
@r,
20 + CEIL(RAND() * 55),
(SELECT id FROM vn.origin WHERE code = 'SPA'),
6031970,
@FNP,
(SELECT id FROM vn.ink WHERE name = 'Red'),
'https://drive.google.com/file/d/1j4il_N9VJGaP4f6CPZM0u6GjxwIeYcBt/view?usp=drive_link',
CONCAT('Nos encanta el color rojo de sus flores .Esta planta original de ',
'Costa Rica ,proviene de las zonas tropicales de America Central y del Sur, ',
'su llamativo color alegrará cualquier celebración')
),
(
@item := @item + 1,
@r := 'Ramo Mindanao',
@r,
20 + CEIL(RAND() * 55),
(SELECT id FROM vn.origin WHERE code = 'SPA'),
6031970,
@FNR,
(SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1),
'https://drive.google.com/file/d/1lsGDuC6xmv3SyGukfLTVYsQvbGf1Bzxy/view?usp=drive_link',
CONCAT('La combinación de rosas ramificadas amarillas, las hortensias blancas, ',
'el estatice, el limonium Tanacetum y los verdes variados hace de este ramo uno ',
'de los que más gustan tanto si es para regalar como para decorar un rincón de tu casa.')
),
(
@item := @item + 1,
@r := 'Ramo Guinea',
@r,
20 + CEIL(RAND() * 55),
(SELECT id FROM vn.origin WHERE code = 'SPA'),
6031970,
@FNR,
(SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1),
'https://drive.google.com/file/d/1MtF0oghv-ahogaAaVpJNzDiIfyeCCmAi/view?usp=drive_link',
CONCAT('Hemos elegido una selección de flores muy especiales para realizar esta composición:',
' brásicas, flor de cera, astrantia, espigas, lisiantum, paniculata eucaliptus.')
),
(
@item := @item + 1,
@r := 'Ramo Eterno',
@r,
20 + CEIL(RAND() * 55),
(SELECT id FROM vn.origin WHERE code = 'SPA'),
6031970,
@FNR,
(SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1),
'https://drive.google.com/file/d/1AOMqlZAKqImnnWSmeq1DW1Krj78mACCG/view?usp=drive_link',
CONCAT('La perfecta combinación de los diferentes tonos de estatice y el eucaliptus ',
'cinerea hacen de este ramo un recuerdo inolvidable ya que ambos materiales son de ',
'larga duración por lo que podrás conservar tu ramo junto con las bonitas vivencias ',
'de ese día durante mucho tiempo, además le añadimos un toque especial que le dan ',
'las raices las cuales combinan con los tonos del ramo, unas bonitas cintas del colores ',
'rematan el acabado del ramo. Este ramo se puede secar y mantenerse en perfecto estado.')
),
(
@item := @item + 1,
@r := 'Ramo Cielo',
@r,
20 + CEIL(RAND() * 55),
(SELECT id FROM vn.origin WHERE code = 'SPA'),
6031970,
@FNR,
(SELECT id FROM vn.ink ORDER BY RAND() LIMIT 1),
'https://drive.google.com/file/d/168DikIOwVT5OO4BHARBoWwLB1wjpAS7s/view?usp=drive_link',
CONCAT('Las hortensias son unas de las flores más elegantes que existen y ',
'la combinación que proponemos para este ramo te resultará de lo más armoniosa ',
', ya que intercalamos flores de mayor tamaño como las hortensias azules y ',
'blancas junto con flores más pequeñas y delicadas como el estatice , todo ello',
' combinado con el eucaliptus cinerea que te aportará un sueve aroma en toda ',
'la estancia, el atado del ramo es de rafia natural, siguiendo la tonalidad ',
'clara de todo el conjunto. ')
);
-- Ramo Terranova: 1er elemento
INSERT INTO vn.item(
name,
longName,
`size`,
stems,
inkFk,
intrastatFk,
typeFk,
originFk)
SELECT
@r:= 'Rosa roja',
@r,
60,
1,
'RED',
6031970,
id,
1
FROM vn.itemType
WHERE code LIKE 'FNE';
SELECT LAST_INSERT_ID() INTO @itemFk;
INSERT INTO floranet.`element`
SET itemFk = @itemFk;
INSERT INTO floranet.builder(
itemFk,
elementFk,
quantity)
SELECT
id,
@itemFk,
12
FROM vn.item
WHERE name = 'Ramo Terranova';
-- Ramo Terranova: 2º elemento
INSERT INTO vn.item(
name,
longName,
`size`,
stems,
inkFk,
intrastatFk,
typeFk,
originFk)
SELECT
@r:= 'Hoja de helecho',
@r,
60,
1,
'BAS',
6031970,
id,
1
FROM vn.itemType
WHERE code LIKE 'FNE';
SELECT LAST_INSERT_ID() INTO @itemFk;
INSERT INTO floranet.`element`
SET itemFk = @itemFk;
INSERT INTO floranet.builder(
itemFk,
elementFk,
quantity)
SELECT
id,
@itemFk,
4
FROM vn.item
WHERE name = 'Ramo Terranova';
-- Ramo Terranova: 3er elemento
INSERT INTO vn.item(
name,
longName,
`size`,
stems,
inkFk,
intrastatFk,
typeFk,
originFk)
SELECT
@r:= 'Paniculata',
@r,
60,
1,
'SLV',
6031970,
id,
1
FROM vn.itemType
WHERE code LIKE 'FNE';
SELECT LAST_INSERT_ID() INTO @itemFk;
INSERT INTO floranet.`element`
SET itemFk = @itemFk;
INSERT INTO floranet.builder(
itemFk,
elementFk,
quantity)
SELECT
id,
@itemFk,
5
FROM vn.item
WHERE name = 'Ramo Terranova';
-- XXX
SET foreign_key_checks = 1;

View File

@ -0,0 +1,22 @@
DELIMITER $$
CREATE OR REPLACE
DEFINER=`root`@`localhost`
EVENT `floranet`.`clean`
ON SCHEDULE EVERY 1 DAY
STARTS '2024-01-01 23:00:00.000'
ON COMPLETION PRESERVE
ENABLE
DO
BEGIN
DELETE
FROM `order`
WHERE created < CURDATE()
AND isPaid = FALSE;
DELETE c.*
FROM catalogue c
LEFT JOIN `order` o ON o.catalogueFk = c.id
WHERE c.created < CURDATE()
AND o.id IS NULL;
END$$
DELIMITER ;

View File

@ -0,0 +1,52 @@
DROP PROCEDURE IF EXISTS floranet.catalogue_get;
DELIMITER $$
$$
CREATE DEFINER=`root`@`localhost` PROCEDURE floranet.catalogue_get(vLanded DATE, vPostalCode VARCHAR(15))
READS SQL DATA
BEGIN
/**
* Returns list, price and all the stuff regarding the floranet items
*
* @param vLanded Delivery date
* @param vPostalCode Delivery address postal code
*/
DECLARE vLastCatalogueFk INT;
START TRANSACTION;
SELECT * FROM catalogue FOR UPDATE;
SELECT MAX(id) INTO vLastCatalogueFk
FROM catalogue;
INSERT INTO catalogue(
name,
price,
itemFk,
dated,
postalCode,
`type`,
image,
description
)
SELECT i.name,
i.`size`,
i.id,
vLanded,
vPostalCode,
it.name,
i.image,
i.description
FROM vn.item i
JOIN vn.itemType it ON it.id = i.typeFk
WHERE it.code IN ('FNR','FNP');
SELECT *
FROM catalogue
WHERE id > IFNULL(vLastCatalogueFk,0);
COMMIT;
END$$
DELIMITER ;

View File

@ -0,0 +1,25 @@
DROP PROCEDURE IF EXISTS floranet.order_confirm;
DELIMITER $$
$$
CREATE DEFINER=`root`@`localhost`PROCEDURE floranet.order_confirm(vCatalogueFk INT)
READS SQL DATA
BEGIN
/** Update order.isPaid field
*
* @param vCatalogueFk floranet.catalogue.id
*
* @returns floranet.order.isPaid
*/
UPDATE `order`
SET isPaid = TRUE,
payed = NOW()
WHERE catalogueFk = vCatalogueFk;
SELECT isPaid
FROM `order`
WHERE catalogueFk = vCatalogueFk;
END$$
DELIMITER ;

View File

@ -0,0 +1,42 @@
DROP PROCEDURE IF EXISTS floranet.order_put;
DELIMITER $$
$$
CREATE DEFINER=`root`@`localhost` PROCEDURE floranet.order_put(vOrder JSON)
READS SQL DATA
BEGIN
/**
* Get and process an order
*
* @param vOrder Data of the order
*
* Customer data: <customerName>, <email>, <customerPhone>
*
* Item data: <catalogueFk>, <message>
*
* Delivery data: <deliveryName>, <address>, <deliveryPhone>
*
*/
INSERT IGNORE INTO `order`(
catalogueFk,
customerName,
email,
customerPhone,
message,
deliveryName,
address,
deliveryPhone
)
VALUES (JSON_UNQUOTE(JSON_EXTRACT(vOrder,'$.catalogueFk')),
JSON_UNQUOTE(JSON_EXTRACT(vOrder,'$.customerName')),
JSON_UNQUOTE(JSON_EXTRACT(vOrder,'$.email')),
JSON_UNQUOTE(JSON_EXTRACT(vOrder,'$.customerPhone')),
JSON_UNQUOTE(JSON_EXTRACT(vOrder,'$.message')),
JSON_UNQUOTE(JSON_EXTRACT(vOrder,'$.deliveryName')),
JSON_UNQUOTE(JSON_EXTRACT(vOrder,'$.address')),
JSON_UNQUOTE(JSON_EXTRACT(vOrder,'$.deliveryPhone'))
);
SELECT LAST_INSERT_ID() orderFk;
END$$
DELIMITER ;

View File

@ -0,0 +1,14 @@
CREATE SCHEMA IF NOT EXISTS `floranet`;
CREATE ROLE IF NOT EXISTS 'floranet' ;
GRANT Create temporary tables ON floranet.* TO 'floranet';
GRANT Execute ON floranet.* TO 'floranet';
GRANT Lock tables ON floranet.* TO 'floranet';
CREATE USER IF NOT EXISTS 'floranet'@'%';
GRANT floranet TO floranet@'%';

View File

@ -0,0 +1,61 @@
CREATE OR REPLACE TABLE floranet.`builder` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`itemFk` int(11) NOT NULL,
`elementFk` int(11) NOT NULL,
`quantity` int(10) unsigned NOT NULL DEFAULT 1,
PRIMARY KEY (`id`),
KEY `builder_FK` (`itemFk`),
KEY `builder_FK_1` (`elementFk`),
CONSTRAINT `builder_FK` FOREIGN KEY (`itemFk`) REFERENCES `vn`.`item` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Links handmade products with their elements';
CREATE OR REPLACE TABLE floranet.`element` (
`itemFk` int(11) NOT NULL,
`typeFk` smallint(5) unsigned DEFAULT NULL,
`size` int(11) DEFAULT NULL,
`inkFk` char(3) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
`originFk` tinyint(2) unsigned DEFAULT NULL,
`name` varchar(30) DEFAULT NULL,
`quantity` int(11) NOT NULL DEFAULT 1,
PRIMARY KEY (`itemFk`),
KEY `element_FK` (`itemFk`),
KEY `element_FK_1` (`typeFk`),
KEY `element_FK_2` (`inkFk`),
KEY `element_FK_3` (`originFk`),
CONSTRAINT `element_FK` FOREIGN KEY (`itemFk`) REFERENCES `vn`.`item` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `element_FK_1` FOREIGN KEY (`typeFk`) REFERENCES `vn`.`itemType` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `element_FK_2` FOREIGN KEY (`inkFk`) REFERENCES `vn`.`ink` (`id`) ON UPDATE CASCADE,
CONSTRAINT `element_FK_3` FOREIGN KEY (`originFk`) REFERENCES `vn`.`origin` (`id`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Filtro para localizar posibles items que coincidan con la descripción';
ALTER TABLE floranet.builder ADD CONSTRAINT `builder_FK_1` FOREIGN KEY (`elementFk`) REFERENCES `element` (`itemFk`) ON UPDATE CASCADE;
CREATE OR REPLACE TABLE floranet.catalogue
(id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
price DECIMAL(10,2) NOT NULL,
itemFk INT NOT NULL,
dated DATE,
postalCode VARCHAR(12),
`type` VARCHAR(50),
image VARCHAR(255),
description TEXT,
created TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
payed DATETIME,
FOREIGN KEY (itemFk) REFERENCES vn.item(id) ON DELETE RESTRICT ON UPDATE CASCADE);
CREATE OR REPLACE TABLE floranet.`order`
(id INT AUTO_INCREMENT PRIMARY KEY,
catalogueFk INT UNIQUE,
customerName VARCHAR(100),
email VARCHAR(100),
customerPhone VARCHAR(15),
message VARCHAR(255),
deliveryName VARCHAR(100),
address VARCHAR(200),
deliveryPhone VARCHAR(100),
isPaid BOOL NOT NULL DEFAULT FALSE,
payed DATETIME,
created TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (catalogueFk) REFERENCES catalogue(id) ON DELETE RESTRICT ON UPDATE CASCADE);