1. PostgreSQL copy of all MySQL created and tested.\n 2. Purchase Orders and Sales Orders and stock level management added to MySQL, PostgreSQL, and server and front end code.
This commit is contained in:
300
static/MySQL/605_p_shop_save_customer.sql
Normal file
300
static/MySQL/605_p_shop_save_customer.sql
Normal file
@@ -0,0 +1,300 @@
|
||||
|
||||
USE PARTSLTD_PROD;
|
||||
|
||||
|
||||
-- Clear previous proc
|
||||
DROP PROCEDURE IF EXISTS p_shop_save_customer;
|
||||
|
||||
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE p_shop_save_customer (
|
||||
IN a_guid VARCHAR(500),
|
||||
IN a_id_user VARCHAR(200),
|
||||
IN a_comment VARCHAR(500),
|
||||
IN a_id_customer INT,
|
||||
IN a_name_company VARCHAR(256),
|
||||
IN a_name_contact VARCHAR(256),
|
||||
IN a_department_contact VARCHAR(256),
|
||||
IN a_id_address INT,
|
||||
IN a_phone_number VARCHAR(20),
|
||||
IN a_email VARCHAR(515),
|
||||
IN a_id_currency INT,
|
||||
IN a_active BIT
|
||||
)
|
||||
BEGIN
|
||||
DECLARE v_id_error_type_bad_data INT;
|
||||
DECLARE v_id_error_type_no_permission INT;
|
||||
DECLARE v_guid_permission VARCHAR(36);
|
||||
DECLARE v_id_permission_customer INT;
|
||||
DECLARE v_id_access_level_EDIT INT;
|
||||
DECLARE v_has_permission BIT;
|
||||
DECLARE v_id_change_set INT;
|
||||
DECLARE v_is_new_customer BIT;
|
||||
|
||||
SET v_id_error_type_bad_data := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'BAD_DATA');
|
||||
SET v_guid_permission = UUID();
|
||||
SET v_id_permission_customer = (SELECT id_permission FROM Shop_Permission WHERE code = 'STORE_CUSTOMER' LIMIT 1);
|
||||
SET v_id_access_level_EDIT = (SELECT id_access_level FROM Shop_Access_Level WHERE code = 'EDIT');
|
||||
|
||||
-- Argument default values
|
||||
IF a_guid IS NULL THEN
|
||||
SET a_guid = UUID();
|
||||
END IF;
|
||||
|
||||
|
||||
-- Temporary tables
|
||||
/*
|
||||
CREATE TABLE tmp_Shop_Customer (
|
||||
id_customer INT NOT NULL,
|
||||
name_company VARCHAR(255) NOT NULL,
|
||||
name_contact VARCHAR(255) NULL,
|
||||
department_contact VARCHAR(255) NULL,
|
||||
id_address INT NOT NULL,
|
||||
CONSTRAINT FK_tmp_Shop_Customer_id_address
|
||||
FOREIGN KEY (id_address)
|
||||
REFERENCES Shop_Address(id_address),
|
||||
phone_number VARCHAR(50) NULL,
|
||||
fax VARCHAR(50) NULL,
|
||||
email VARCHAR(255) NOT NULL,
|
||||
website VARCHAR(255) NULL,
|
||||
id_currency INT NOT NULL,
|
||||
CONSTRAINT FK_tmp_Shop_Customer_id_currency
|
||||
FOREIGN KEY (id_currency)
|
||||
REFERENCES Shop_Currency(id_currency),
|
||||
active BIT NOT NULL,
|
||||
can_view BIT NOT NULL,
|
||||
can_edit BIT NOT NULL,
|
||||
can_admin BIT NOT NULL
|
||||
);
|
||||
*/
|
||||
|
||||
CREATE TABLE IF NOT EXISTS tmp_Msg_Error (
|
||||
display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
|
||||
guid VARCHAR(36) NOT NULL,
|
||||
id_type INT NOT NULL,
|
||||
CONSTRAINT FK_tmp_Msg_Error_id_type
|
||||
FOREIGN KEY (id_type)
|
||||
REFERENCES Shop_Msg_Error_Type (id_type),
|
||||
code VARCHAR(50) NOT NULL,
|
||||
msg VARCHAR(4000) NOT NULL
|
||||
);
|
||||
|
||||
|
||||
-- Argument validation
|
||||
IF a_id_customer IS NULL THEN
|
||||
INSERT INTO tmp_Msg_Error (
|
||||
guid, id_type, msg
|
||||
)
|
||||
VALUES
|
||||
(a_guid, v_id_error_type_bad_data, 'Customer ID must not be null')
|
||||
;
|
||||
END IF;
|
||||
IF a_name_company IS NULL THEN
|
||||
INSERT INTO tmp_Msg_Error (
|
||||
guid, id_type, msg
|
||||
)
|
||||
VALUES
|
||||
(a_guid, v_id_error_type_bad_data, 'Customer company name must not be null')
|
||||
;
|
||||
END IF;
|
||||
IF a_id_address IS NULL THEN
|
||||
INSERT INTO tmp_Msg_Error (
|
||||
guid, id_type, msg
|
||||
)
|
||||
VALUES
|
||||
(a_guid, v_id_error_type_bad_data, 'Customer address ID must not be null')
|
||||
;
|
||||
END IF;
|
||||
IF a_email IS NULL THEN
|
||||
INSERT INTO tmp_Msg_Error (
|
||||
guid, id_type, msg
|
||||
)
|
||||
VALUES
|
||||
(a_guid, v_id_error_type_bad_data, 'Customer email must not be null')
|
||||
;
|
||||
END IF;
|
||||
IF a_active IS NULL THEN
|
||||
INSERT INTO tmp_Msg_Error (
|
||||
guid, id_type, msg
|
||||
)
|
||||
VALUES
|
||||
(a_guid, v_id_error_type_bad_data, 'Customer active status must not be null')
|
||||
;
|
||||
END IF;
|
||||
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN
|
||||
SET v_is_new_customer := CASE WHEN a_id_customer <= 0 THEN 1 ELSE 0 END;
|
||||
|
||||
IF (v_is_new_customer = 0 AND NOT EXISTS (SELECT * FROM Shop_Customer C WHERE C.id_customer = a_id_customer)) THEN
|
||||
INSERT INTO tmp_Msg_Error (
|
||||
guid, id_type, msg
|
||||
)
|
||||
VALUES
|
||||
(a_guid, v_id_error_type_bad_data, CONCAT('Invalid customer ID: ', a_id_customer))
|
||||
;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
/*
|
||||
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN
|
||||
INSERT INTO tmp_Shop_Customer (
|
||||
id_customer, name_company, name_contact, department_contact, id_address, phone_number, fax, email, website, id_currency, active
|
||||
)
|
||||
VALUES
|
||||
(a_id_customer, a_name_company, a_name_contact, a_department_contact, a_id_address, a_phone_number, a_fax, a_email, a_website, a_id_currency, a_active)
|
||||
/*
|
||||
FROM Shop_Customer S
|
||||
WHERE (NOT v_has_filter_category OR C.id_category LIKE '%' || a_ids_category || '%')
|
||||
AND (a_get_inactive_categories OR C.active)
|
||||
*
|
||||
;
|
||||
END IF;
|
||||
*/
|
||||
|
||||
-- Permissions
|
||||
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN
|
||||
CALL p_shop_user_eval(v_guid_permission, a_id_user, 0, v_id_permission_customer, v_id_access_level_edit, '');
|
||||
|
||||
/*
|
||||
UPDATE tmp_Shop_Customer t_S
|
||||
INNER JOIN Shop_User_Eval_Temp TP
|
||||
ON TP.GUID = v_guid_permission
|
||||
SET tP.can_view = TP.can_view,
|
||||
tP.can_edit = TP.can_edit,
|
||||
tP.can_admin = TP.can_admin;
|
||||
*/
|
||||
SET v_has_permission := (SELECT can_edit FROM Shop_User_Eval_Temp WHERE GUID = v_guid_permission);
|
||||
|
||||
IF v_has_permission = 0 THEN
|
||||
SET v_id_error_type_no_permission := (SELECT id_type FROM Shop_Msg_Error_Type WHERE code = 'NO_PERMISSION');
|
||||
INSERT INTO tmp_Msg_Error (
|
||||
guid, id_type, msg
|
||||
)
|
||||
SELECT
|
||||
a_guid,
|
||||
v_id_error_type_no_permission,
|
||||
CONCAT('You do not have ', name, ' permissions.')
|
||||
FROM Shop_Permission
|
||||
WHERE id_permission = v_id_permission_customer
|
||||
;
|
||||
END IF;
|
||||
|
||||
-- CALL p_shop_user_eval_clear_temp(v_guid_permission);
|
||||
|
||||
DELETE FROM Shop_User_Eval_Temp
|
||||
WHERE GUID = a_guid;
|
||||
END IF;
|
||||
|
||||
|
||||
-- Transaction
|
||||
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN
|
||||
INSERT INTO Shop_Sales_And_Purchasing_Change_Set (
|
||||
comment,
|
||||
updated_last_by,
|
||||
updated_last_on
|
||||
)
|
||||
VALUES (
|
||||
CONCAT(
|
||||
'Save ',
|
||||
CASE WHEN v_is_new_customer = 1 THEN 'new ' ELSE '' END,
|
||||
'Customer - ',
|
||||
a_comment
|
||||
),
|
||||
a_id_user,
|
||||
CURRENT_TIME()
|
||||
);
|
||||
|
||||
SET v_id_change_set := (SELECT id_change_set FROM Shop_Sales_And_Purchasing_Change_Set ORDER BY id_change_set DESC LIMIT 1);
|
||||
|
||||
START TRANSACTION;
|
||||
IF (v_is_new_customer = 1) THEN
|
||||
INSERT INTO Shop_Customer (
|
||||
-- id_customer,
|
||||
name_company, name_contact, department_contact, id_address, phone_number, email, id_currency, active, id_change_set
|
||||
)
|
||||
VALUES
|
||||
(
|
||||
-- a_id_customer,
|
||||
a_name_company, a_name_contact, a_department_contact, a_id_address, a_phone_number, a_email, a_id_currency, a_active, v_id_change_set
|
||||
)
|
||||
/*
|
||||
FROM Shop_Customer S
|
||||
WHERE (NOT v_has_filter_category OR C.id_category LIKE '%' || a_ids_category || '%')
|
||||
AND (a_get_inactive_categories OR C.active)
|
||||
*/
|
||||
;
|
||||
ELSE
|
||||
UPDATE Shop_Customer C
|
||||
-- INNER JOIN tmp_Shop_Customer t_S ON S.id_customer = t_S.id_customer
|
||||
SET
|
||||
/*
|
||||
S.name_company = t_S.name_company,
|
||||
S.name_contact = t_S.name_contact,
|
||||
S.department_contact = t_S.department_contact,
|
||||
S.id_address = t_S.id_address,
|
||||
S.phone_number = t_S.phone_number,
|
||||
S.fax = t_S.fax,
|
||||
S.email = t_S.email,
|
||||
S.website = t_S.website,
|
||||
S.id_currency = t_S.id_currency,
|
||||
S.active = t_S.active
|
||||
*/
|
||||
C.name_company = a_name_company,
|
||||
C.name_contact = a_name_contact,
|
||||
C.department_contact = a_department_contact,
|
||||
C.id_address = a_id_address,
|
||||
C.phone_number = a_phone_number,
|
||||
C.email = a_email,
|
||||
C.website = a_website,
|
||||
C.id_currency = a_id_currency,
|
||||
C.active = a_active,
|
||||
C.id_change_set = v_id_change_set
|
||||
;
|
||||
END IF;
|
||||
|
||||
IF EXISTS (SELECT * FROM tmp_Msg_Error) THEN
|
||||
ROLLBACK;
|
||||
ELSE
|
||||
COMMIT;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
-- Returns
|
||||
-- SET v_now = NOW();
|
||||
|
||||
# Errors
|
||||
SELECT *
|
||||
FROM tmp_Msg_Error
|
||||
;
|
||||
|
||||
-- DROP TABLE tmp_Shop_Customer;
|
||||
DROP TABLE tmp_Msg_Error;
|
||||
END //
|
||||
DELIMITER ;
|
||||
|
||||
|
||||
/*
|
||||
|
||||
CALL p_shop_save_customer (
|
||||
'NIPS', # a_guid
|
||||
'auth0|6582b95c895d09a70ba10fef', # a_id_user
|
||||
'Initial Customer', # a_comment
|
||||
'-1', # a_id_customer
|
||||
'good co', # a_name_company
|
||||
'teddy', # a_name_contact
|
||||
'manufacturing', # a_department_contact
|
||||
1, # a_id_address
|
||||
'BRING BRING', # a_phone_number
|
||||
'e@mail.com', # a_email
|
||||
1, # a_id_currency_cost
|
||||
1 # a_active
|
||||
);
|
||||
|
||||
SELECT * FROM Shop_Customer
|
||||
;
|
||||
|
||||
DELETE FROM Shop_Customer
|
||||
;
|
||||
|
||||
*/
|
||||
Reference in New Issue
Block a user