Feat: Product Variations page get, filter, and save. \n Fix: Active column changed to Add / Delete / Undelete column - this change has only been applied to Product Variations page
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -168,13 +168,19 @@ DROP TABLE IF EXISTS Shop_Product_Variation_Link;
|
||||
DROP TABLE IF EXISTS Shop_Product_Permutation_Variation_Link_Audit;
|
||||
DROP TABLE IF EXISTS Shop_Product_Permutation_Variation_Link;
|
||||
|
||||
DROP TABLE IF EXISTS Shop_Variation_Temp;
|
||||
DROP TABLE IF EXISTS Shop_Variation_Audit;
|
||||
DROP TABLE IF EXISTS Shop_Variation;
|
||||
DROP TABLE IF EXISTS Shop_Product_Variation_Type_Link_Audit;
|
||||
DROP TABLE IF EXISTS Shop_Product_Variation_Type_Link;
|
||||
DROP TABLE IF EXISTS Shop_Product_Variation_Temp;
|
||||
DROP TABLE IF EXISTS Shop_Product_Variation;
|
||||
|
||||
DROP TABLE IF EXISTS Shop_Variation_Type_Temp;
|
||||
DROP TABLE IF EXISTS Shop_Variation_Type_Audit;
|
||||
DROP TABLE IF EXISTS Shop_Variation_Type;
|
||||
DROP TABLE IF EXISTS Shop_Product_Variation_Type_Temp;
|
||||
DROP TABLE IF EXISTS Shop_Product_Variation_Type;
|
||||
|
||||
DROP TABLE IF EXISTS Shop_Product_Permutation_Temp;
|
||||
DROP TABLE IF EXISTS Shop_Product_Permutation_Audit;
|
||||
@@ -294,6 +300,8 @@ DROP PROCEDURE IF EXISTS p_shop_get_many_stripe_product_new;
|
||||
DROP PROCEDURE IF EXISTS p_shop_save_permutation;
|
||||
DROP PROCEDURE IF EXISTS p_shop_save_product_permutation;
|
||||
DROP PROCEDURE IF EXISTS p_shop_save_product_permutation_test;
|
||||
DROP PROCEDURE IF EXISTS p_shop_save_product_variation;
|
||||
DROP PROCEDURE IF EXISTS p_shop_save_product_variation_test;
|
||||
DROP PROCEDURE IF EXISTS p_shop_get_many_product_variation;
|
||||
DROP FUNCTION IF EXISTS fn_shop_get_id_product_permutation_from_variation_csv_list;
|
||||
DROP PROCEDURE IF EXISTS p_shop_save_stock_item;
|
||||
|
||||
@@ -16,8 +16,8 @@ CREATE TABLE IF NOT EXISTS Shop_Product_Permutation_Temp (
|
||||
, latency_manufacture INT NOT NULL
|
||||
, id_unit_measurement_quantity INT NOT NULL
|
||||
, count_unit_measurement_per_quantity_step FLOAT NOT NULL
|
||||
, quantity_min FLOAT NOT NULL
|
||||
, quantity_max FLOAT NOT NULL
|
||||
, quantity_min FLOAT NULL
|
||||
, quantity_max FLOAT NULL
|
||||
, quantity_stock FLOAT NULL
|
||||
, is_subscription BIT NOT NULL
|
||||
, id_unit_measurement_interval_recurrence INT
|
||||
|
||||
@@ -6,16 +6,17 @@
|
||||
SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Variation_Type';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS Shop_Variation_Type (
|
||||
id_type INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
code VARCHAR(50),
|
||||
name VARCHAR(255),
|
||||
name_plural VARCHAR(256),
|
||||
active BIT NOT NULL DEFAULT 1,
|
||||
display_order INT NOT NULL,
|
||||
created_on DATETIME,
|
||||
created_by INT,
|
||||
id_change_set INT,
|
||||
CONSTRAINT FK_Shop_Variation_Type_id_change_set
|
||||
id_type INT NOT NULL AUTO_INCREMENT PRIMARY KEY
|
||||
, id_type_temp INT NULL
|
||||
, code VARCHAR(50)
|
||||
, name VARCHAR(255)
|
||||
, name_plural VARCHAR(256)
|
||||
, active BIT NOT NULL DEFAULT 1
|
||||
, display_order INT NOT NULL
|
||||
, created_on DATETIME
|
||||
, created_by INT
|
||||
, id_change_set INT
|
||||
, CONSTRAINT FK_Shop_Variation_Type_id_change_set
|
||||
FOREIGN KEY (id_change_set)
|
||||
REFERENCES Shop_Product_Change_Set(id_change_set)
|
||||
);
|
||||
20
static/MySQL/1211_tbl_Shop_Variation_Type_Temp.sql
Normal file
20
static/MySQL/1211_tbl_Shop_Variation_Type_Temp.sql
Normal file
@@ -0,0 +1,20 @@
|
||||
|
||||
# Variation Types Temp
|
||||
|
||||
-- DROP TABLE partsltd_prod.Shop_Variation_Type_Temp;
|
||||
|
||||
SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Variation_Type_Temp';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS Shop_Variation_Type_Temp (
|
||||
id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT
|
||||
, id_type INT NOT NULL
|
||||
-- , id_type_temp INT NOT NULL
|
||||
, code VARCHAR(50)
|
||||
, name VARCHAR(255)
|
||||
, name_plural VARCHAR(256)
|
||||
, active BIT NULL
|
||||
, display_order INT NOT NULL
|
||||
, created_on DATETIME
|
||||
, created_by INT
|
||||
, guid BINARY(36) NOT NULL
|
||||
);
|
||||
19
static/MySQL/1214_tbl_Shop_Variation_Temp.sql
Normal file
19
static/MySQL/1214_tbl_Shop_Variation_Temp.sql
Normal file
@@ -0,0 +1,19 @@
|
||||
|
||||
# Variations Temp
|
||||
|
||||
-- DROP TABLE partsltd_prod.Shop_Variation_Temp;
|
||||
|
||||
SELECT CONCAT('WARNING: Table ', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Shop_Variation_Temp';
|
||||
|
||||
CREATE TABLE Shop_Variation_Temp (
|
||||
id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT
|
||||
, id_variation INT NOT NULL
|
||||
, id_type INT NOT NULL
|
||||
, code VARCHAR(50)
|
||||
, name VARCHAR(255)
|
||||
, active BIT
|
||||
, display_order INT NOT NULL
|
||||
, created_on DATETIME
|
||||
, created_by INT
|
||||
, guid BINARY(36)
|
||||
);
|
||||
@@ -20,8 +20,8 @@ BEGIN
|
||||
ELSE '' END
|
||||
)
|
||||
FROM Shop_Product_Permutation PP
|
||||
INNER JOIN Shop_Product P ON PP.id_product = P.id_product
|
||||
INNER JOIN Shop_Product_Category PC ON P.id_category = PC.id_category
|
||||
LEFT JOIN Shop_Product P ON PP.id_product = P.id_product
|
||||
LEFT JOIN Shop_Product_Category PC ON P.id_category = PC.id_category
|
||||
LEFT JOIN Shop_Product_Permutation_Variation_Link PPVL ON PP.id_permutation = PPVL.id_permutation
|
||||
LEFT JOIN Shop_Variation V ON PPVL.id_variation = V.id_variation
|
||||
LEFT JOIN Shop_Variation_Type VT ON V.id_type = VT.id_type
|
||||
|
||||
@@ -337,7 +337,8 @@ BEGIN
|
||||
PP.id_product,
|
||||
P.id_category,
|
||||
PP.description,
|
||||
PP.cost_local,
|
||||
PP.cost_local_VAT_excl,
|
||||
PP.cost_local_VAT_incl,
|
||||
PP.id_currency_cost,
|
||||
C.code AS code_currency_cost,
|
||||
C.symbol AS symbol_currency_cost,
|
||||
|
||||
@@ -51,7 +51,7 @@ BEGIN
|
||||
/* Test 1 - Insert */
|
||||
(
|
||||
-1 -- id_permutation
|
||||
, 8 -- id_product
|
||||
, 5 -- id_product
|
||||
, 'Hair clip' -- description
|
||||
, NULL -- cost_local_VAT_excl
|
||||
, NULL -- cost_local_VAT_incl
|
||||
@@ -112,7 +112,6 @@ BEGIN
|
||||
END //
|
||||
DELIMITER ;;
|
||||
|
||||
/*
|
||||
CALL partsltd_prod.p_shop_save_product_permutation_test ();
|
||||
|
||||
DELETE FROM partsltd_prod.Shop_Product_Permutation_Temp;
|
||||
@@ -120,5 +119,7 @@ DELETE FROM partsltd_prod.Shop_Product_Permutation_Temp;
|
||||
DROP TABLE IF EXISTS tmp_Msg_Error;
|
||||
|
||||
|
||||
/*
|
||||
SELECT * FROM partsltd_prod.Shop_Product
|
||||
Cannot add or update a child row: a foreign key constraint fails (`partsltd_prod`.`shop_product_permutation`, CONSTRAINT `FK_Shop_Product_Permutation_id_product` FOREIGN KEY (`id_product`) REFERENCES `shop_product` (`id_product`) ON UPDATE RESTRICT)
|
||||
*/
|
||||
@@ -353,20 +353,20 @@ BEGIN
|
||||
END //
|
||||
DELIMITER ;;
|
||||
|
||||
|
||||
/*
|
||||
|
||||
CALL p_shop_get_many_product_variation (
|
||||
1 # 'auth0|6582b95c895d09a70ba10fef', # a_id_user
|
||||
, 1 # a_get_all_variation_type
|
||||
, 0 # a_get_inactive_variation_type
|
||||
, 1 # a_get_inactive_variation_type
|
||||
, '' # a_ids_variation_type
|
||||
, 1 # a_get_all_variation
|
||||
, 0 # a_get_inactive_variation
|
||||
, 1 # a_get_inactive_variation
|
||||
, '' # a_ids_variation
|
||||
, 1 # a_debug
|
||||
, 0 # a_debug
|
||||
);
|
||||
|
||||
|
||||
select * from TMP_MSG_ERROR;
|
||||
DROP TABLE TMP_MSG_ERROR;
|
||||
|
||||
|
||||
546
static/MySQL/7212_p_shop_save_product_variation.sql
Normal file
546
static/MySQL/7212_p_shop_save_product_variation.sql
Normal file
@@ -0,0 +1,546 @@
|
||||
|
||||
|
||||
-- Clear previous proc
|
||||
DROP PROCEDURE IF EXISTS p_shop_save_product_variation;
|
||||
|
||||
DROP TABLE IF EXISTS tmp_Variation_Type;
|
||||
DROP TABLE IF EXISTS tmp_Variation;
|
||||
DROP TABLE IF EXISTS tmp_Msg_Error;
|
||||
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE p_shop_save_product_variation (
|
||||
IN a_comment VARCHAR(500)
|
||||
, IN a_guid BINARY(36)
|
||||
, IN a_id_user INT
|
||||
, IN a_debug BIT
|
||||
)
|
||||
BEGIN
|
||||
DECLARE v_code_type_error_bad_data VARCHAR(50);
|
||||
DECLARE v_code_type_error_no_permission VARCHAR(50);
|
||||
DECLARE v_code_type_error_warning VARCHAR(50);
|
||||
DECLARE v_id_access_level_edit INT;
|
||||
DECLARE v_id_change_set INT;
|
||||
DECLARE v_ids_permission_product_variation VARCHAR(100);
|
||||
DECLARE v_id_type_error_bad_data INT;
|
||||
DECLARE v_id_type_error_no_permission INT;
|
||||
DECLARE v_id_type_error_warning INT;
|
||||
DECLARE v_ids_product_permission TEXT;
|
||||
DECLARE v_time_start TIMESTAMP(6);
|
||||
|
||||
DECLARE exit handler for SQLEXCEPTION
|
||||
BEGIN
|
||||
GET DIAGNOSTICS CONDITION 1
|
||||
@sqlstate = RETURNED_SQLSTATE
|
||||
, @errno = MYSQL_ERRNO
|
||||
, @text = MESSAGE_TEXT
|
||||
;
|
||||
|
||||
ROLLBACK;
|
||||
|
||||
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error (
|
||||
display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT
|
||||
, id_type INT NULL
|
||||
, code VARCHAR(50) NOT NULL
|
||||
, msg VARCHAR(4000) NOT NULL
|
||||
);
|
||||
INSERT INTO tmp_Msg_Error (
|
||||
id_type
|
||||
, code
|
||||
, msg
|
||||
)
|
||||
SELECT
|
||||
MET.id_type
|
||||
, @errno
|
||||
, @text
|
||||
FROM partsltd_prod.Shop_Msg_Error_Type MET
|
||||
WHERE code = 'MYSQL_ERROR'
|
||||
LIMIT 1
|
||||
;
|
||||
SELECT *
|
||||
FROM tmp_Msg_Error;
|
||||
DROP TABLE IF EXISTS tmp_Msg_Error;
|
||||
END;
|
||||
|
||||
SET v_time_start := CURRENT_TIMESTAMP(6);
|
||||
SET v_code_type_error_bad_data := (SELECT code FROM partsltd_prod.Shop_Msg_Error_Type WHERE code = 'BAD_DATA' LIMIT 1);
|
||||
SET v_id_type_error_bad_data := (SELECT id_type FROM partsltd_prod.Shop_Msg_Error_Type WHERE code = v_code_type_error_bad_data LIMIT 1);
|
||||
SET v_code_type_error_no_permission := (SELECT code FROM partsltd_prod.Shop_Msg_Error_Type WHERE code = 'NO_PERMISSION' LIMIT 1);
|
||||
SET v_id_type_error_no_permission := (SELECT id_type FROM partsltd_prod.Shop_Msg_Error_Type WHERE code = v_code_type_error_no_permission LIMIT 1);
|
||||
SET v_code_type_error_warning := (SELECT code FROM partsltd_prod.Shop_Msg_Error_Type WHERE code = 'WARNING' LIMIT 1);
|
||||
SET v_id_type_error_warning := (SELECT id_type FROM partsltd_prod.Shop_Msg_Error_Type WHERE code = v_code_type_error_warning LIMIT 1);
|
||||
SET v_ids_permission_product_variation := (SELECT GROUP_CONCAT(id_permission SEPARATOR ',') FROM partsltd_prod.Shop_Permission WHERE code IN ('STORE_PRODUCT'));
|
||||
SET v_id_access_level_edit := (SELECT id_access_level FROM partsltd_prod.Shop_Access_Level WHERE code = 'EDIT' LIMIT 1);
|
||||
|
||||
CALL p_validate_guid ( a_guid );
|
||||
SET a_comment := TRIM(IFNULL(a_comment, ''));
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp_Variation_Type;
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp_Variation;
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error;
|
||||
|
||||
-- Temporary tables
|
||||
CREATE TEMPORARY TABLE tmp_Variation_Type (
|
||||
id_type INT NOT NULL PRIMARY KEY
|
||||
, id_type_temp INT NOT NULL
|
||||
, code VARCHAR(50)
|
||||
, name VARCHAR(255)
|
||||
, name_plural VARCHAR(256)
|
||||
, active BIT NULL
|
||||
, display_order INT NOT NULL
|
||||
, created_on DATETIME
|
||||
, created_by INT
|
||||
, is_new BIT NOT NULL
|
||||
, name_error VARCHAR(1000) NOT NULL
|
||||
);
|
||||
-- CREATE TEMPORARY TABLE tmp_Variation_Type_Count
|
||||
|
||||
CREATE TEMPORARY TABLE tmp_Variation (
|
||||
id_variation INT NOT NULL PRIMARY KEY
|
||||
, id_type INT NOT NULL
|
||||
, code VARCHAR(50)
|
||||
, name VARCHAR(255)
|
||||
, active BIT
|
||||
, display_order INT NOT NULL
|
||||
, created_on DATETIME
|
||||
, created_by INT
|
||||
, has_type BIT NULL
|
||||
, is_new BIT NOT NULL
|
||||
, name_error VARCHAR(1000) NOT NULL
|
||||
);
|
||||
|
||||
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error (
|
||||
display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT
|
||||
, id_type INT NOT NULL
|
||||
, code VARCHAR(50) NOT NULL
|
||||
, msg VARCHAR(4000) NOT NULL
|
||||
);
|
||||
|
||||
INSERT INTO tmp_Variation_Type (
|
||||
id_type
|
||||
, id_type_temp
|
||||
, code
|
||||
, name
|
||||
, name_plural
|
||||
, active
|
||||
, display_order
|
||||
, created_on
|
||||
, created_by
|
||||
, is_new
|
||||
, name_error
|
||||
)
|
||||
SELECT
|
||||
VT_T.id_type
|
||||
, VT_T.id_type
|
||||
, VT_T.code
|
||||
, VT_T.name
|
||||
, VT_T.name_plural
|
||||
, VT_T.active
|
||||
, VT_T.display_order
|
||||
, IFNULL(VT_T.created_on, VT.created_on) AS created_on
|
||||
, IFNULL(VT_T.created_by, VT.created_by) AS created_by
|
||||
, IFNULL(VT_T.id_type, 0) < 1 AS is_new
|
||||
, CASE WHEN IFNULL(VT_T.id_type, 0) < 1 THEN
|
||||
CONCAT(
|
||||
'New Variation Type: '
|
||||
, VT_T.display_order
|
||||
, ' - '
|
||||
, IFNULL(VT_T.code, '(No Code)')
|
||||
, ' - '
|
||||
, IFNULL(VT_T.name, '(No Name)')
|
||||
)
|
||||
ELSE
|
||||
CONCAT(
|
||||
VT_T.display_order
|
||||
, ' - '
|
||||
, IFNULL(VT_T.code, '(No Code)')
|
||||
, ' - '
|
||||
, IFNULL(VT_T.name, '(No Name)')
|
||||
)
|
||||
END AS name_error
|
||||
FROM partsltd_prod.Shop_Variation_Type_Temp VT_T
|
||||
LEFT JOIN partsltd_prod.Shop_Variation_Type VT ON VT_T.id_type = VT.id_type
|
||||
WHERE VT_T.GUID = a_guid
|
||||
;
|
||||
|
||||
INSERT INTO tmp_Variation (
|
||||
id_variation
|
||||
, id_type
|
||||
, code
|
||||
, name
|
||||
, active
|
||||
, display_order
|
||||
, created_on
|
||||
, created_by
|
||||
, has_type
|
||||
, is_new
|
||||
, name_error
|
||||
)
|
||||
SELECT
|
||||
V_T.id_variation
|
||||
, IFNULL(V_T.id_type, V.id_type) AS id_type
|
||||
, V_T.code
|
||||
, V_T.name
|
||||
, V_T.active
|
||||
, V_T.display_order
|
||||
, IFNULL(V_T.created_on, V.created_on) AS created_on
|
||||
, IFNULL(V_T.created_by, V.created_by) AS created_by
|
||||
, NOT ISNULL(t_VT.id_type) AS has_type
|
||||
, IFNULL(V_T.id_variation, 0) < 1 AS is_new
|
||||
, CASE WHEN IFNULL(V_T.id_variation, 0) < 1 THEN
|
||||
CONCAT(
|
||||
'New Variation: '
|
||||
, V_T.display_order
|
||||
, ' - '
|
||||
, IFNULL(V_T.code, '(No Code)')
|
||||
, ' - '
|
||||
, IFNULL(V_T.name, '(No Name)')
|
||||
)
|
||||
ELSE
|
||||
CONCAT(
|
||||
V_T.display_order
|
||||
, ' - '
|
||||
, IFNULL(V_T.code, '(No Code)')
|
||||
, ' - '
|
||||
, IFNULL(V_T.name, '(No Name)')
|
||||
)
|
||||
END AS name_error
|
||||
FROM partsltd_prod.Shop_Variation_Temp V_T
|
||||
LEFT JOIN partsltd_prod.Shop_Variation V ON V_T.id_variation = V.id_variation
|
||||
-- LEFT JOIN partsltd_prod.Shop_Variation_Type VT ON V_T.id_type = VT.id_type
|
||||
LEFT JOIN tmp_Variation_Type t_VT ON V_T.id_type = t_VT.id_type
|
||||
WHERE V_T.GUID = a_guid
|
||||
;
|
||||
|
||||
-- Insert missing order records
|
||||
INSERT INTO tmp_Variation_Type (
|
||||
id_type
|
||||
, id_type_temp
|
||||
, code
|
||||
, name
|
||||
, name_plural
|
||||
, active
|
||||
, display_order
|
||||
, created_on
|
||||
, created_by
|
||||
, is_new
|
||||
, name_error
|
||||
)
|
||||
SELECT
|
||||
VT.id_type
|
||||
, VT.id_type
|
||||
, VT.code
|
||||
, VT.name
|
||||
, VT.name_plural
|
||||
, VT.active
|
||||
, VT.display_order
|
||||
, VT.created_on
|
||||
, VT.created_by
|
||||
, 0 AS is_new
|
||||
, CONCAT(
|
||||
VT.display_order
|
||||
, ' - '
|
||||
, IFNULL(VT.code, '(No Code)')
|
||||
, ' - '
|
||||
, IFNULL(VT.name, '(No Name)')
|
||||
) AS name_error
|
||||
FROM partsltd_prod.Shop_Variation_Type VT
|
||||
INNER JOIN tmp_Variation t_V
|
||||
ON VT.id_type = t_V.id_type
|
||||
AND t_V.has_type = 0
|
||||
AND NOT ISNULL(t_V.id_type)
|
||||
;
|
||||
|
||||
UPDATE tmp_Variation t_V
|
||||
INNER JOIN tmp_Variation_Type t_VT ON t_V.id_type = t_V.id_type
|
||||
SET t_V.has_type = 1
|
||||
WHERE t_V.has_type = 0
|
||||
;
|
||||
|
||||
-- Validation
|
||||
-- Variation Type
|
||||
# id_type
|
||||
IF EXISTS (
|
||||
SELECT *
|
||||
FROM tmp_Variation_Type t_VT
|
||||
INNER JOIN partsltd_prod.Shop_Variation_Type VT ON t_VT.id_type = VT.id_type
|
||||
WHERE 1=1
|
||||
AND t_VT.id_type > 0
|
||||
AND ISNULL(VT.id_type)
|
||||
LIMIT 1
|
||||
) THEN
|
||||
INSERT INTO tmp_Msg_Error (
|
||||
id_type
|
||||
, code
|
||||
, msg
|
||||
)
|
||||
SELECT
|
||||
v_id_type_error_bad_data
|
||||
, v_code_type_error_bad_data
|
||||
, CONCAT(
|
||||
'A valid ID is required for the following Product Variation Type(s): '
|
||||
, GROUP_CONCAT(t_VT.name_error SEPARATOR ', ')
|
||||
) AS msg
|
||||
FROM tmp_Variation_Type t_VT
|
||||
INNER JOIN partsltd_prod.Shop_Variation_Type VT ON t_VT.id_type = VT.id_type
|
||||
WHERE 1=1
|
||||
AND t_VT.id_type > 0
|
||||
AND ISNULL(VT.id_type)
|
||||
;
|
||||
END IF;
|
||||
-- Variation
|
||||
# id_variation
|
||||
IF EXISTS (
|
||||
SELECT *
|
||||
FROM tmp_Variation t_V
|
||||
INNER JOIN partsltd_prod.Shop_Variation V ON t_V.id_variation = V.id_variation
|
||||
WHERE 1=1
|
||||
AND t_V.id_variation > 0
|
||||
AND ISNULL(V.id_variation)
|
||||
LIMIT 1
|
||||
) THEN
|
||||
INSERT INTO tmp_Msg_Error (
|
||||
id_type
|
||||
, code
|
||||
, msg
|
||||
)
|
||||
SELECT
|
||||
v_id_type_error_bad_data
|
||||
, v_code_type_error_bad_data
|
||||
, CONCAT(
|
||||
'A valid ID is required for the following Product Variation(s): '
|
||||
, GROUP_CONCAT(t_V.name_error SEPARATOR ', ')
|
||||
) AS msg
|
||||
FROM tmp_Variation t_V
|
||||
INNER JOIN partsltd_prod.Shop_Variation V ON t_V.id_variation = V.id_variation
|
||||
WHERE 1=1
|
||||
AND t_V.id_variation > 0
|
||||
AND ISNULL(V.id_variation)
|
||||
;
|
||||
END IF;
|
||||
# id_type
|
||||
IF EXISTS ( SELECT * FROM tmp_Variation t_V WHERE t_V.has_type = 0 LIMIT 1 ) THEN
|
||||
INSERT INTO tmp_Msg_Error (
|
||||
id_type
|
||||
, code
|
||||
, msg
|
||||
)
|
||||
SELECT
|
||||
v_id_type_error_bad_data
|
||||
, v_code_type_error_bad_data
|
||||
, CONCAT(
|
||||
'A valid ID is required for the following Product Variation(s): '
|
||||
, GROUP_CONCAT(t_V.name_error SEPARATOR ', ')
|
||||
) AS msg
|
||||
FROM tmp_Variation t_V
|
||||
WHERE t_V.has_type = 0
|
||||
;
|
||||
END IF;
|
||||
|
||||
-- Duplicate Variation Type Ids
|
||||
-- Duplicate Variation Ids
|
||||
-- Duplicate Variation Type Codes
|
||||
-- Duplicate Variation Codes
|
||||
|
||||
-- Permissions
|
||||
IF a_debug = 1 THEN
|
||||
SELECT
|
||||
a_guid
|
||||
, a_id_user
|
||||
, FALSE -- get inactive users
|
||||
, v_ids_permission_product_variation
|
||||
, v_id_access_level_edit
|
||||
, NULL -- ids_product
|
||||
, 0 -- a_debug
|
||||
;
|
||||
SELECT *
|
||||
FROM partsltd_prod.Shop_Calc_User_Temp
|
||||
WHERE GUID = a_guid
|
||||
;
|
||||
END IF;
|
||||
|
||||
CALL p_shop_calc_user(
|
||||
a_guid
|
||||
, a_id_user
|
||||
, FALSE -- get inactive users
|
||||
, v_ids_permission_product_variation
|
||||
, v_id_access_level_edit
|
||||
, NULL -- ids_product
|
||||
, 0 -- a_debug
|
||||
);
|
||||
|
||||
IF a_debug = 1 THEN
|
||||
SELECT * from partsltd_prod.Shop_Calc_User_Temp WHERE GUID = a_guid;
|
||||
END IF;
|
||||
|
||||
IF EXISTS (SELECT * FROM partsltd_prod.Shop_Calc_User_Temp UE_T WHERE UE_T.GUID = a_guid AND IFNULL(UE_T.can_view, 0) = 0) THEN
|
||||
DELETE FROM tmp_Msg_Error;
|
||||
|
||||
INSERT INTO tmp_Msg_Error (
|
||||
id_type
|
||||
, code
|
||||
, msg
|
||||
)
|
||||
SELECT
|
||||
v_id_type_error_no_permission
|
||||
, v_code_type_error_no_permission
|
||||
, CONCAT(
|
||||
'You do not have edit permissions for '
|
||||
, GROUP_CONCAT(name SEPARATOR ', ')
|
||||
)
|
||||
FROM partsltd_prod.Shop_Permission PERM
|
||||
INNER JOIN partsltd_prod.Shop_Calc_User_Temp UE_T
|
||||
ON PERM.id_permission = UE_T.id_permission
|
||||
AND UE_T.GUID = a_guid
|
||||
AND IFNULL(UE_T.can_view, 0) = 0
|
||||
;
|
||||
END IF;
|
||||
|
||||
CALL partsltd_prod.p_shop_clear_calc_user(
|
||||
a_guid
|
||||
, 0 -- a_debug
|
||||
);
|
||||
|
||||
IF EXISTS ( SELECT * FROM tmp_Msg_Error WHERE id_type <> v_id_type_error_warning LIMIT 1 ) THEN
|
||||
DELETE FROM tmp_Variation_Type;
|
||||
DELETE FROM tmp_Variation;
|
||||
END IF;
|
||||
|
||||
-- Transaction
|
||||
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN
|
||||
START TRANSACTION;
|
||||
INSERT INTO Shop_Product_Change_Set (
|
||||
comment
|
||||
, updated_last_by
|
||||
, updated_last_on
|
||||
)
|
||||
VALUES (
|
||||
a_comment
|
||||
, a_id_user
|
||||
, v_time_start
|
||||
);
|
||||
|
||||
SET v_id_change_set := LAST_INSERT_ID();
|
||||
|
||||
INSERT INTO partsltd_prod.Shop_Variation_Type (
|
||||
id_type_temp
|
||||
, code
|
||||
, name
|
||||
, name_plural
|
||||
, active
|
||||
, display_order
|
||||
, created_on
|
||||
, created_by
|
||||
)
|
||||
SELECT
|
||||
t_VT.id_type
|
||||
, t_VT.code
|
||||
, t_VT.name
|
||||
, t_VT.name_plural
|
||||
, t_VT.active
|
||||
, t_VT.display_order
|
||||
, t_VT.created_on
|
||||
, t_VT.created_by
|
||||
FROM tmp_Variation_Type t_VT
|
||||
WHERE t_VT.is_new = 1
|
||||
;
|
||||
|
||||
UPDATE tmp_Variation_Type t_VT
|
||||
INNER JOIN partsltd_prod.Shop_Variation_Type VT ON t_VT.id_type_temp = VT.id_type_temp
|
||||
SET
|
||||
t_VT.id_type = VT.id_type
|
||||
WHERE t_VT.is_new = 1
|
||||
;
|
||||
|
||||
UPDATE tmp_Variation t_V
|
||||
INNER JOIN tmp_Variation_Type t_VT
|
||||
ON t_V.id_type = t_VT.id_type_temp
|
||||
AND t_VT.is_new = 1
|
||||
SET
|
||||
t_V.id_type = t_VT.id_type
|
||||
;
|
||||
|
||||
INSERT INTO partsltd_prod.Shop_Variation (
|
||||
id_type
|
||||
, code
|
||||
, name
|
||||
, active
|
||||
, display_order
|
||||
, created_on
|
||||
, created_by
|
||||
)
|
||||
SELECT
|
||||
t_V.id_type
|
||||
, t_V.code
|
||||
, t_V.name
|
||||
, t_V.active
|
||||
, t_V.display_order
|
||||
, t_V.created_on
|
||||
, t_V.created_by
|
||||
FROM tmp_Variation t_V
|
||||
WHERE t_V.is_new = 1
|
||||
;
|
||||
|
||||
UPDATE partsltd_prod.Shop_Variation_Type VT
|
||||
INNER JOIN tmp_Variation_Type t_VT
|
||||
ON VT.id_type = t_VT.id_type
|
||||
AND t_VT.is_new = 0
|
||||
INNER JOIN tmp_Variation t_V ON t_VT.id_type = t_V.id_type
|
||||
SET
|
||||
VT.code = t_VT.code
|
||||
, VT.name = t_VT.name
|
||||
, VT.name_plural = t_VT.name_plural
|
||||
, VT.active = t_VT.active
|
||||
, VT.display_order = t_VT.display_order
|
||||
, VT.created_on = t_VT.created_on
|
||||
, VT.created_by = t_VT.created_by
|
||||
, VT.id_change_set = v_id_change_set
|
||||
;
|
||||
|
||||
UPDATE partsltd_prod.Shop_Variation V
|
||||
INNER JOIN tmp_Variation t_V
|
||||
ON V.id_variation = t_V.id_variation
|
||||
AND t_V.is_new = 0
|
||||
SET
|
||||
V.code = t_V.code
|
||||
, V.name = t_V.name
|
||||
, V.active = t_V.active
|
||||
, V.display_order = t_V.display_order
|
||||
, V.created_on = t_V.created_on
|
||||
, V.created_by = t_V.created_by
|
||||
, V.id_change_set = v_id_change_set
|
||||
;
|
||||
|
||||
DELETE VT_T
|
||||
FROM partsltd_prod.Shop_Variation_Type_Temp VT_T
|
||||
WHERE VT_T.GUID = a_guid
|
||||
;
|
||||
DELETE V_T
|
||||
FROM partsltd_prod.Shop_Variation_Temp V_T
|
||||
WHERE V_T.GUID = a_guid
|
||||
;
|
||||
|
||||
COMMIT;
|
||||
END IF;
|
||||
|
||||
# Errors
|
||||
SELECT *
|
||||
FROM tmp_Msg_Error t_ME
|
||||
INNER JOIN partsltd_prod.Shop_Msg_Error_Type MET ON t_ME.id_type = MET.id_type
|
||||
;
|
||||
|
||||
IF a_debug = 1 THEN
|
||||
SELECT * from tmp_Variation_Type;
|
||||
SELECT * from tmp_Variation;
|
||||
END IF;
|
||||
|
||||
DROP TEMPORARY TABLE tmp_Variation_Type;
|
||||
DROP TEMPORARY TABLE tmp_Variation;
|
||||
DROP TEMPORARY TABLE tmp_Msg_Error;
|
||||
|
||||
IF a_debug = 1 THEN
|
||||
CALL partsltd_prod.p_debug_timing_reporting ( v_time_start );
|
||||
END IF;
|
||||
END //
|
||||
DELIMITER ;;
|
||||
|
||||
|
||||
186
static/MySQL/7212_p_shop_save_product_variation_test.sql
Normal file
186
static/MySQL/7212_p_shop_save_product_variation_test.sql
Normal file
@@ -0,0 +1,186 @@
|
||||
|
||||
|
||||
-- Clear previous proc
|
||||
DROP PROCEDURE IF EXISTS partsltd_prod.p_shop_save_product_variation_test;
|
||||
|
||||
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE p_shop_save_product_variation_test ()
|
||||
BEGIN
|
||||
|
||||
DECLARE v_guid BINARY(36);
|
||||
DECLARE v_time_start TIMESTAMP(6);
|
||||
|
||||
SET v_time_start := CURRENT_TIMESTAMP(6);
|
||||
SET v_guid := 'nips';
|
||||
|
||||
SELECT *
|
||||
FROM partsltd_prod.Shop_Variation_Type
|
||||
;
|
||||
SELECT *
|
||||
FROM partsltd_prod.Shop_Variation_Type_Temp
|
||||
;
|
||||
SELECT *
|
||||
FROM partsltd_prod.Shop_Variation
|
||||
;
|
||||
SELECT *
|
||||
FROM partsltd_prod.Shop_Variation_Temp
|
||||
;
|
||||
|
||||
START TRANSACTION;
|
||||
|
||||
DELETE FROM partsltd_prod.Shop_Variation_Type_Temp;
|
||||
DELETE FROM partsltd_prod.Shop_Variation_Temp;
|
||||
|
||||
INSERT INTO partsltd_prod.Shop_Variation_Type_Temp (
|
||||
id_type
|
||||
-- , id_type_temp
|
||||
, code
|
||||
, name
|
||||
, name_plural
|
||||
, display_order
|
||||
, active
|
||||
, GUID
|
||||
)
|
||||
/* Test 1 - Insert
|
||||
VALUES (
|
||||
-1
|
||||
-- , -1
|
||||
, 'SIZE'
|
||||
, 'Size'
|
||||
, 'Sizes'
|
||||
, 2
|
||||
, 1
|
||||
, v_guid
|
||||
)
|
||||
*/
|
||||
/* Test 2: Alter */
|
||||
SELECT
|
||||
id_type
|
||||
-- , id_type AS id_type_temp
|
||||
, code
|
||||
, name
|
||||
, name_plural
|
||||
, display_order
|
||||
, active
|
||||
, v_guid AS GUID
|
||||
FROM partsltd_prod.Shop_Variation_Type
|
||||
WHERE id_type = 1
|
||||
;
|
||||
|
||||
INSERT INTO partsltd_prod.Shop_Variation_Temp (
|
||||
id_variation
|
||||
, id_type
|
||||
, code
|
||||
, name
|
||||
, display_order
|
||||
, active
|
||||
, GUID
|
||||
)
|
||||
/* Test 1 - Insert
|
||||
VALUES (
|
||||
-1 -- id_variation
|
||||
, -1 -- id_type
|
||||
, '300 mL' -- code
|
||||
, '300 millilitres' -- name
|
||||
, 1 -- display_order
|
||||
, 1 -- active
|
||||
, v_guid --
|
||||
)
|
||||
*/
|
||||
/* Test 3 - Insert
|
||||
VALUES (
|
||||
-1 -- id_variation
|
||||
, 1 -- id_type
|
||||
, 'SILVER' -- code
|
||||
, 'Silver' -- name
|
||||
, 10 -- display_order
|
||||
, 1 -- active
|
||||
, 'NIPS' -- v_guid --
|
||||
);
|
||||
*/
|
||||
/* Test 2: Alter */
|
||||
SELECT
|
||||
id_variation
|
||||
, id_type
|
||||
, code
|
||||
, name
|
||||
, display_order
|
||||
, active
|
||||
, v_guid AS GUID
|
||||
FROM partsltd_prod.Shop_Variation
|
||||
WHERE id_variation = 2
|
||||
UNION
|
||||
SELECT
|
||||
-1 -- id_variation
|
||||
, 1 -- id_type
|
||||
, 'GREEN' -- code
|
||||
, 'Green' -- name
|
||||
, 3 -- display_order
|
||||
, 1 -- active
|
||||
, v_guid --
|
||||
;
|
||||
|
||||
COMMIT;
|
||||
|
||||
SELECT *
|
||||
FROM partsltd_prod.Shop_Variation_Type_Temp
|
||||
WHERE GUID = v_guid
|
||||
;
|
||||
|
||||
SELECT *
|
||||
FROM partsltd_prod.Shop_Variation_Temp
|
||||
WHERE GUID = v_guid
|
||||
;
|
||||
|
||||
CALL partsltd_prod.p_shop_save_product_variation (
|
||||
'Test save Variations - add + edit' -- comment
|
||||
, v_guid -- guid
|
||||
, 1 -- id_user
|
||||
, 1 -- debug
|
||||
);
|
||||
|
||||
SELECT *
|
||||
FROM partsltd_prod.Shop_Variation_Type_Temp
|
||||
;
|
||||
SELECT *
|
||||
FROM partsltd_prod.Shop_Variation_Temp
|
||||
;
|
||||
SELECT *
|
||||
FROM partsltd_prod.Shop_Variation_Type
|
||||
;
|
||||
SELECT *
|
||||
FROM partsltd_prod.Shop_Variation
|
||||
;
|
||||
|
||||
CALL partsltd_prod.p_debug_timing_reporting ( v_time_start );
|
||||
END //
|
||||
DELIMITER ;;
|
||||
|
||||
CALL partsltd_prod.p_shop_save_product_variation_test ();
|
||||
|
||||
DELETE FROM partsltd_prod.Shop_Variation_Type_Temp;
|
||||
DELETE FROM partsltd_prod.Shop_Variation_Temp;
|
||||
|
||||
DROP TABLE IF EXISTS tmp_Msg_Error;
|
||||
|
||||
/*
|
||||
|
||||
delete from shop_variation_audit
|
||||
where id_variation = 3
|
||||
;
|
||||
delete from shop_variation_audit
|
||||
where id_variation = 3
|
||||
;
|
||||
delete from shop_variation_type_audit
|
||||
where id_type = -1
|
||||
;
|
||||
delete
|
||||
-- select *
|
||||
from shop_variation_type
|
||||
where id_type = -1
|
||||
;
|
||||
|
||||
Cannot add or update a child row: a foreign key constraint fails (`partsltd_prod`.`shop_variation_type`, CONSTRAINT `FK_Shop_Variation_Type_id_change_set` FOREIGN KEY (`id_change_set`) REFERENCES `shop_product_change_set` (`id_change_set`))
|
||||
|
||||
*/
|
||||
@@ -699,7 +699,7 @@ BEGIN
|
||||
v_id_type_error_no_permission
|
||||
, v_code_type_error_no_permission
|
||||
, CONCAT(
|
||||
'You do not have view permissions for '
|
||||
'You do not have edit permissions for '
|
||||
, GROUP_CONCAT(name SEPARATOR ', ')
|
||||
)
|
||||
FROM partsltd_prod.Shop_Permission PERM
|
||||
|
||||
@@ -51,8 +51,10 @@
|
||||
1208_tbl_Shop_Product_Permutation_Temp.sql
|
||||
1209_tbl_Shop_Variation_Type.sql
|
||||
1210_tbl_Shop_Variation_Type_Audit.sql
|
||||
1211_tbl_Shop_Variation_Type_Temp.sql
|
||||
1212_tbl_Shop_Variation.sql
|
||||
1213_tbl_Shop_Variation_Audit.sql
|
||||
1214_tbl_Shop_Variation_Temp.sql
|
||||
1215_tbl_Shop_Product_Permutation_Variation_Link.sql
|
||||
1216_tbl_Shop_Product_Permutation_Variation_Link_Audit.sql
|
||||
1218_tbl_Shop_Stock_Item.sql
|
||||
@@ -189,6 +191,8 @@
|
||||
7206_p_shop_save_product_permutation.sql
|
||||
7206_p_shop_save_product_permutation_test.sql
|
||||
7210_p_shop_get_many_product_variation.sql
|
||||
7212_p_shop_save_product_variation.sql
|
||||
7212_p_shop_save_product_variation_test.sql
|
||||
7219_p_shop_get_many_stock_item.sql
|
||||
7220_p_shop_save_stock_item.sql
|
||||
7220_p_shop_save_stock_item_test.sql
|
||||
|
||||
Reference in New Issue
Block a user