192 lines
6.7 KiB
SQL
192 lines
6.7 KiB
SQL
-- Renewal views for fenedgec_members
|
|
-- Applies current requirements from requirements/renewal_views.md
|
|
-- Safe to run repeatedly: drops and recreates all renewal views.
|
|
|
|
-- Drop in dependency order.
|
|
DROP VIEW IF EXISTS `fenedgec_members`.`renewal_accounts_with_contacts`;
|
|
DROP VIEW IF EXISTS `fenedgec_members`.`renewal_public_contact`;
|
|
DROP VIEW IF EXISTS `fenedgec_members`.`renewal_fen_contact`;
|
|
DROP VIEW IF EXISTS `fenedgec_members`.`renewal_contact_2`;
|
|
DROP VIEW IF EXISTS `fenedgec_members`.`renewal_contact_1`;
|
|
DROP VIEW IF EXISTS `fenedgec_members`.`renewal_pending`;
|
|
DROP VIEW IF EXISTS `fenedgec_members`.`renewal_members`;
|
|
|
|
CREATE VIEW `fenedgec_members`.`renewal_members` AS
|
|
SELECT
|
|
a.`id` AS `account_id`,
|
|
a.`name` AS `account_name`,
|
|
a.`account_audience` AS `account_audience`,
|
|
a.`account_no_of_members` AS `account_no_of_members`,
|
|
a.`account_type_id` AS `account_type_id`,
|
|
pat.`value` AS `account_type`,
|
|
a.`sector_id` AS `sector_id`,
|
|
ps.`value` AS `account_sector`,
|
|
a.`public_location_id` AS `public_location_id`,
|
|
ppl.`value` AS `public_location`
|
|
FROM `fenedgec_members`.`accounts` a
|
|
LEFT JOIN `fenedgec_members`.`picklist_account_type` pat
|
|
ON pat.`id` = a.`account_type_id`
|
|
LEFT JOIN `fenedgec_members`.`picklist_sector` ps
|
|
ON ps.`id` = a.`sector_id`
|
|
LEFT JOIN `fenedgec_members`.`picklist_public_location` ppl
|
|
ON ppl.`id` = a.`public_location_id`
|
|
WHERE a.`is_deleted` = 0
|
|
AND LOWER(TRIM(COALESCE(pat.`slug`, ''))) = 'member';
|
|
|
|
CREATE VIEW `fenedgec_members`.`renewal_pending` AS
|
|
SELECT
|
|
r.`id` AS `renewal_id`,
|
|
r.`account_id` AS `renewal_account_id`,
|
|
r.`renewal_year` AS `renewal_year`,
|
|
r.`status` AS `renewal_status`,
|
|
r.`selected` AS `renewal_selected`,
|
|
r.`payment_method` AS `renewal_payment_method`,
|
|
r.`payment_amount` AS `renewal_payment_amount`,
|
|
r.`payment_date` AS `renewal_payment_date`,
|
|
r.`created_at` AS `renewal_created_at`,
|
|
r.`updated_at` AS `renewal_updated_at`
|
|
FROM `fenedgec_members`.`renewals` r
|
|
WHERE LOWER(TRIM(COALESCE(r.`status`, ''))) = 'pending';
|
|
|
|
CREATE VIEW `fenedgec_members`.`renewal_contact_1` AS
|
|
SELECT
|
|
c.`id` AS `contact_1_contact_id`,
|
|
c.`account_id` AS `contact_1_account_id`,
|
|
TRIM(CONCAT_WS(' ', c.`first_name`, c.`middle_name`, c.`last_name`)) AS `contact_1_name`,
|
|
c.`title` AS `contact_1_position`,
|
|
c.`contact_address_1` AS `contact_1_address_1`,
|
|
c.`contact_address_2` AS `contact_1_address_2`,
|
|
c.`contact_town` AS `contact_1_town`,
|
|
c.`contact_county` AS `contact_1_county`,
|
|
c.`contact_postcode` AS `contact_1_postcode`,
|
|
c.`contact_email_1` AS `contact_1_email`,
|
|
c.`home_phone` AS `contact_1_phone`,
|
|
c.`mobile` AS `contact_1_mobile`
|
|
FROM `fenedgec_members`.`contacts` c
|
|
INNER JOIN (
|
|
SELECT `account_id`, MIN(`id`) AS `min_id`
|
|
FROM `fenedgec_members`.`contacts`
|
|
WHERE `is_deleted` = 0
|
|
AND `is_contact_1` = 1
|
|
GROUP BY `account_id`
|
|
) x
|
|
ON x.`account_id` = c.`account_id`
|
|
AND x.`min_id` = c.`id`
|
|
WHERE c.`is_deleted` = 0
|
|
AND c.`is_contact_1` = 1;
|
|
|
|
CREATE VIEW `fenedgec_members`.`renewal_contact_2` AS
|
|
SELECT
|
|
c.`id` AS `contact_2_contact_id`,
|
|
c.`account_id` AS `contact_2_account_id`,
|
|
TRIM(CONCAT_WS(' ', c.`first_name`, c.`middle_name`, c.`last_name`)) AS `contact_2_name`,
|
|
c.`title` AS `contact_2_position`,
|
|
c.`contact_address_1` AS `contact_2_address_1`,
|
|
c.`contact_address_2` AS `contact_2_address_2`,
|
|
c.`contact_town` AS `contact_2_town`,
|
|
c.`contact_county` AS `contact_2_county`,
|
|
c.`contact_postcode` AS `contact_2_postcode`,
|
|
c.`contact_email_1` AS `contact_2_email`,
|
|
c.`home_phone` AS `contact_2_phone`,
|
|
c.`mobile` AS `contact_2_mobile`
|
|
FROM `fenedgec_members`.`contacts` c
|
|
INNER JOIN (
|
|
SELECT `account_id`, MIN(`id`) AS `min_id`
|
|
FROM `fenedgec_members`.`contacts`
|
|
WHERE `is_deleted` = 0
|
|
AND `is_contact_2` = 1
|
|
GROUP BY `account_id`
|
|
) x
|
|
ON x.`account_id` = c.`account_id`
|
|
AND x.`min_id` = c.`id`
|
|
WHERE c.`is_deleted` = 0
|
|
AND c.`is_contact_2` = 1;
|
|
|
|
CREATE VIEW `fenedgec_members`.`renewal_fen_contact` AS
|
|
SELECT
|
|
c.`id` AS `fen_contact_contact_id`,
|
|
c.`account_id` AS `fen_contact_account_id`,
|
|
TRIM(CONCAT_WS(' ', c.`first_name`, c.`middle_name`, c.`last_name`)) AS `fen_contact_name`,
|
|
c.`contact_email_1` AS `fen_contact_email`
|
|
FROM `fenedgec_members`.`contacts` c
|
|
INNER JOIN (
|
|
SELECT `account_id`, MIN(`id`) AS `min_id`
|
|
FROM `fenedgec_members`.`contacts`
|
|
WHERE `is_deleted` = 0
|
|
AND `is_fen_1` = 1
|
|
GROUP BY `account_id`
|
|
) x
|
|
ON x.`account_id` = c.`account_id`
|
|
AND x.`min_id` = c.`id`
|
|
WHERE c.`is_deleted` = 0
|
|
AND c.`is_fen_1` = 1;
|
|
|
|
CREATE VIEW `fenedgec_members`.`renewal_public_contact` AS
|
|
SELECT
|
|
c.`id` AS `public_contact_contact_id`,
|
|
c.`account_id` AS `public_contact_account_id`,
|
|
TRIM(CONCAT_WS(' ', c.`first_name`, c.`middle_name`, c.`last_name`)) AS `public_contact_name`,
|
|
c.`public_phone` AS `public_contact_public_phone`,
|
|
c.`public_email` AS `public_contact_public_email`
|
|
FROM `fenedgec_members`.`contacts` c
|
|
INNER JOIN (
|
|
SELECT `account_id`, MIN(`id`) AS `min_id`
|
|
FROM `fenedgec_members`.`contacts`
|
|
WHERE `is_deleted` = 0
|
|
AND `is_public_contact` = 1
|
|
GROUP BY `account_id`
|
|
) x
|
|
ON x.`account_id` = c.`account_id`
|
|
AND x.`min_id` = c.`id`
|
|
WHERE c.`is_deleted` = 0
|
|
AND c.`is_public_contact` = 1;
|
|
|
|
CREATE VIEW `fenedgec_members`.`renewal_accounts_with_contacts` AS
|
|
SELECT
|
|
rm.*,
|
|
rp.*,
|
|
rc1.`contact_1_contact_id`,
|
|
rc1.`contact_1_account_id`,
|
|
rc1.`contact_1_name`,
|
|
rc1.`contact_1_position`,
|
|
rc1.`contact_1_address_1`,
|
|
rc1.`contact_1_address_2`,
|
|
rc1.`contact_1_town`,
|
|
rc1.`contact_1_county`,
|
|
rc1.`contact_1_postcode`,
|
|
rc1.`contact_1_email`,
|
|
rc1.`contact_1_phone`,
|
|
rc1.`contact_1_mobile`,
|
|
rc2.`contact_2_contact_id`,
|
|
rc2.`contact_2_account_id`,
|
|
rc2.`contact_2_name`,
|
|
rc2.`contact_2_position`,
|
|
rc2.`contact_2_address_1`,
|
|
rc2.`contact_2_address_2`,
|
|
rc2.`contact_2_town`,
|
|
rc2.`contact_2_county`,
|
|
rc2.`contact_2_postcode`,
|
|
rc2.`contact_2_email`,
|
|
rc2.`contact_2_phone`,
|
|
rc2.`contact_2_mobile`,
|
|
rcf.`fen_contact_contact_id`,
|
|
rcf.`fen_contact_account_id`,
|
|
rcf.`fen_contact_name`,
|
|
rcf.`fen_contact_email`,
|
|
rpc.`public_contact_contact_id`,
|
|
rpc.`public_contact_account_id`,
|
|
rpc.`public_contact_name`,
|
|
rpc.`public_contact_public_phone`,
|
|
rpc.`public_contact_public_email`
|
|
FROM `fenedgec_members`.`renewal_pending` rp
|
|
INNER JOIN `fenedgec_members`.`renewal_members` rm
|
|
ON rm.`account_id` = rp.`renewal_account_id`
|
|
LEFT JOIN `fenedgec_members`.`renewal_contact_1` rc1
|
|
ON rc1.`contact_1_account_id` = rm.`account_id`
|
|
LEFT JOIN `fenedgec_members`.`renewal_contact_2` rc2
|
|
ON rc2.`contact_2_account_id` = rm.`account_id`
|
|
LEFT JOIN `fenedgec_members`.`renewal_fen_contact` rcf
|
|
ON rcf.`fen_contact_account_id` = rm.`account_id`
|
|
LEFT JOIN `fenedgec_members`.`renewal_public_contact` rpc
|
|
ON rpc.`public_contact_account_id` = rm.`account_id`;
|