From 97cd625f3d02b2c8d7a433e14923b789b6665d96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Olaf=20Lindstr=C3=B6m?= Date: Thu, 22 Feb 2024 11:36:20 +0100 Subject: [PATCH] =?UTF-8?q?Add=20support=20for=20gdpr=5Fremoval=20field=20?= =?UTF-8?q?on=20orders=20and=20set=20a=20timestamp=20for=20=E2=80=A6=20(#3?= =?UTF-8?q?77)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add support for gdpr_removal field on orders and set a timestamp for all orders with a comment containing the abbrevation GDPR * Added gdpr removal field to v_funnel_orders view --- migrations/000.459.sql | 6 +++++ migrations/000.460.sql | 61 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 migrations/000.459.sql create mode 100644 migrations/000.460.sql diff --git a/migrations/000.459.sql b/migrations/000.459.sql new file mode 100644 index 0000000..3b10ce9 --- /dev/null +++ b/migrations/000.459.sql @@ -0,0 +1,6 @@ +ALTER TABLE orders + ADD COLUMN IF NOT EXISTS gdpr_removal TIMESTAMP WITH TIME ZONE; + +UPDATE orders + SET gdpr_removal = NOW()::timestamp + WHERE id IN (SELECT id FROM orders WHERE LOWER(comment::TEXT) LIKE '%gdpr%'); \ No newline at end of file diff --git a/migrations/000.460.sql b/migrations/000.460.sql new file mode 100644 index 0000000..609a1f0 --- /dev/null +++ b/migrations/000.460.sql @@ -0,0 +1,61 @@ +-- View: public.v_funnel_orders + +DROP VIEW public.v_funnel_orders; + +CREATE OR REPLACE VIEW public.v_funnel_orders +AS +SELECT orders.id AS order_id, + orders.inserted AS order_date, + orders.delivered, + orders.newsletter, + orders.credit_invoice, + orders.canceled, + orders.delivered_date, + orders.country_code, + orders.language, + orders.delivery_country_code, + orders.delivery_method, + orders.delivery_price, + orders.delivery_vat AS vat, + orders.customer_type, + orders.payment_type, + orders.currency, + orders.exchange_rate, + orders.exchange_rate_eur, + orders.invoice_id, + orders.contract_customer_id, + orders.vat_number, + orders.cancels_order_id, + orders.cancelled_by_order_id, + orders.order_sum, + orders.order_sum / orders.exchange_rate AS order_sum_sek, + orders.market, + orders.locale, + orders.attention, + orders.gdpr_removal, + encode(digest(billing_address.first_name::text, 'sha256'::text), 'hex'::text) AS billing_address_first_name, + encode(digest(billing_address.last_name::text, 'sha256'::text), 'hex'::text) AS billing_address_last_name, + encode(digest(billing_address.email, 'sha256'::text), 'hex'::text) AS email, + encode(digest(billing_address.phone, 'sha256'::text), 'hex'::text) AS phone, + encode(digest(billing_address.address1::text, 'sha256'::text), 'hex'::text) AS billing_address_address1, + encode(digest(billing_address.address2::text, 'sha256'::text), 'hex'::text) AS billing_address_address2, + billing_address.company_name AS billing_address_company_name, + billing_address.country_code AS billing_address_country_code, + billing_address.city AS billing_address_city, + billing_address.zipcode AS billing_address_zipcode, + billing_address.state AS billing_address_state, + encode(digest(delivery_address.first_name::text, 'sha256'::text), 'hex'::text) AS delivery_address_first_name, + encode(digest(delivery_address.last_name::text, 'sha256'::text), 'hex'::text) AS delivery_address_last_name, + encode(digest(delivery_address.address1::text, 'sha256'::text), 'hex'::text) AS delivery_address_address1, + encode(digest(delivery_address.address2::text, 'sha256'::text), 'hex'::text) AS delivery_address_address2, + delivery_address.company_name AS delivery_address_company_name, + delivery_address.country_code AS delivery_address_country_code, + delivery_address.city AS delivery_address_city, + delivery_address.zipcode AS delivery_address_zipcode, + delivery_address.state AS delivery_address_state +FROM orders + JOIN addresses billing_address ON billing_address.id = orders.billing_address_id + LEFT JOIN addresses delivery_address ON delivery_address.id = orders.delivery_address_id +WHERE orders.paid = 1; + +GRANT SELECT ON v_funnel_orders TO funnel;